{"version":3,"file":"rm2.js","mappings":"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","sources":["webpack://rmap2/webpack/universalModuleDefinition","webpack://rmap2/./node_modules/@mapbox/mapbox-gl-sync-move/index.js","webpack://rmap2/./node_modules/events/events.js","webpack://rmap2/./node_modules/guid-typescript/dist/guid.js","webpack://rmap2/./node_modules/jquery-i18next/dist/commonjs/index.js","webpack://rmap2/./node_modules/jquery-i18next/index.js","webpack://rmap2/./node_modules/mapbox-gl-compare/index.js","webpack://rmap2/./node_modules/proj4/lib/constants/values.js","webpack://rmap2/./node_modules/proj4/lib/constants/PrimeMeridian.js","webpack://rmap2/./node_modules/proj4/lib/constants/units.js","webpack://rmap2/./node_modules/proj4/lib/match.js","webpack://rmap2/./node_modules/proj4/lib/projString.js","webpack://rmap2/./node_modules/wkt-parser/parser.js","webpack://rmap2/./node_modules/wkt-parser/process.js","webpack://rmap2/./node_modules/wkt-parser/index.js","webpack://rmap2/./node_modules/proj4/lib/defs.js","webpack://rmap2/./node_modules/proj4/lib/global.js","webpack://rmap2/./node_modules/proj4/lib/parseCode.js","webpack://rmap2/./node_modules/proj4/lib/extend.js","webpack://rmap2/./node_modules/proj4/lib/common/msfnz.js","webpack://rmap2/./node_modules/proj4/lib/common/sign.js","webpack://rmap2/./node_modules/proj4/lib/common/adjust_lon.js","webpack://rmap2/./node_modules/proj4/lib/common/tsfnz.js","webpack://rmap2/./node_modules/proj4/lib/common/phi2z.js","webpack://rmap2/./node_modules/proj4/lib/projections/longlat.js","webpack://rmap2/./node_modules/proj4/lib/projections.js","webpack://rmap2/./node_modules/proj4/lib/projections/merc.js","webpack://rmap2/./node_modules/proj4/lib/constants/Ellipsoid.js","webpack://rmap2/./node_modules/proj4/lib/constants/Datum.js","webpack://rmap2/./node_modules/proj4/lib/datum.js","webpack://rmap2/./node_modules/proj4/lib/nadgrid.js","webpack://rmap2/./node_modules/proj4/lib/Proj.js","webpack://rmap2/./node_modules/proj4/lib/deriveConstants.js","webpack://rmap2/./node_modules/proj4/lib/datumUtils.js","webpack://rmap2/./node_modules/proj4/lib/datum_transform.js","webpack://rmap2/./node_modules/proj4/lib/adjust_axis.js","webpack://rmap2/./node_modules/proj4/lib/common/toPoint.js","webpack://rmap2/./node_modules/proj4/lib/checkSanity.js","webpack://rmap2/./node_modules/proj4/lib/transform.js","webpack://rmap2/./node_modules/proj4/lib/core.js","webpack://rmap2/./node_modules/mgrs/mgrs.js","webpack://rmap2/./node_modules/proj4/lib/Point.js","webpack://rmap2/./node_modules/proj4/lib/common/pj_enfn.js","webpack://rmap2/./node_modules/proj4/lib/common/pj_mlfn.js","webpack://rmap2/./node_modules/proj4/lib/common/pj_inv_mlfn.js","webpack://rmap2/./node_modules/proj4/lib/projections/tmerc.js","webpack://rmap2/./node_modules/proj4/lib/common/sinh.js","webpack://rmap2/./node_modules/proj4/lib/common/hypot.js","webpack://rmap2/./node_modules/proj4/lib/common/asinhy.js","webpack://rmap2/./node_modules/proj4/lib/common/log1py.js","webpack://rmap2/./node_modules/proj4/lib/common/gatg.js","webpack://rmap2/./node_modules/proj4/lib/common/clens_cmplx.js","webpack://rmap2/./node_modules/proj4/lib/common/cosh.js","webpack://rmap2/./node_modules/proj4/lib/projections/etmerc.js","webpack://rmap2/./node_modules/proj4/lib/common/clens.js","webpack://rmap2/./node_modules/proj4/lib/projections/utm.js","webpack://rmap2/./node_modules/proj4/lib/common/adjust_zone.js","webpack://rmap2/./node_modules/proj4/lib/common/srat.js","webpack://rmap2/./node_modules/proj4/lib/projections/gauss.js","webpack://rmap2/./node_modules/proj4/lib/projections/sterea.js","webpack://rmap2/./node_modules/proj4/lib/projections/stere.js","webpack://rmap2/./node_modules/proj4/lib/projections/somerc.js","webpack://rmap2/./node_modules/proj4/lib/projections/omerc.js","webpack://rmap2/./node_modules/proj4/lib/projections/lcc.js","webpack://rmap2/./node_modules/proj4/lib/projections/krovak.js","webpack://rmap2/./node_modules/proj4/lib/common/mlfn.js","webpack://rmap2/./node_modules/proj4/lib/common/e0fn.js","webpack://rmap2/./node_modules/proj4/lib/common/e1fn.js","webpack://rmap2/./node_modules/proj4/lib/common/e2fn.js","webpack://rmap2/./node_modules/proj4/lib/common/e3fn.js","webpack://rmap2/./node_modules/proj4/lib/common/gN.js","webpack://rmap2/./node_modules/proj4/lib/common/adjust_lat.js","webpack://rmap2/./node_modules/proj4/lib/common/imlfn.js","webpack://rmap2/./node_modules/proj4/lib/projections/cass.js","webpack://rmap2/./node_modules/proj4/lib/common/qsfnz.js","webpack://rmap2/./node_modules/proj4/lib/projections/laea.js","webpack://rmap2/./node_modules/proj4/lib/common/asinz.js","webpack://rmap2/./node_modules/proj4/lib/projections/aea.js","webpack://rmap2/./node_modules/proj4/lib/projections/gnom.js","webpack://rmap2/./node_modules/proj4/lib/projections/cea.js","webpack://rmap2/./node_modules/proj4/lib/common/iqsfnz.js","webpack://rmap2/./node_modules/proj4/lib/projections/eqc.js","webpack://rmap2/./node_modules/proj4/lib/projections/poly.js","webpack://rmap2/./node_modules/proj4/lib/projections/nzmg.js","webpack://rmap2/./node_modules/proj4/lib/projections/mill.js","webpack://rmap2/./node_modules/proj4/lib/projections/sinu.js","webpack://rmap2/./node_modules/proj4/lib/projections/moll.js","webpack://rmap2/./node_modules/proj4/lib/projections/eqdc.js","webpack://rmap2/./node_modules/proj4/lib/projections/vandg.js","webpack://rmap2/./node_modules/proj4/lib/projections/aeqd.js","webpack://rmap2/./node_modules/proj4/lib/projections/ortho.js","webpack://rmap2/./node_modules/proj4/lib/projections/qsc.js","webpack://rmap2/./node_modules/proj4/lib/projections/robin.js","webpack://rmap2/./node_modules/proj4/lib/projections/geocent.js","webpack://rmap2/./node_modules/proj4/lib/projections/tpers.js","webpack://rmap2/./node_modules/proj4/lib/projections/geos.js","webpack://rmap2/./node_modules/proj4/lib/index.js","webpack://rmap2/./node_modules/proj4/projs.js","webpack://rmap2/./node_modules/rbush/rbush.min.js","webpack://rmap2/./node_modules/reproject/index.js","webpack://rmap2/./node_modules/wkt/index.js","webpack://rmap2/./node_modules/maplibre-gl/dist/maplibre-gl.js","webpack://rmap2/webpack/bootstrap","webpack://rmap2/webpack/runtime/compat get default export","webpack://rmap2/webpack/runtime/define property getters","webpack://rmap2/webpack/runtime/hasOwnProperty shorthand","webpack://rmap2/webpack/runtime/make namespace object","webpack://rmap2/./node_modules/mustache/mustache.mjs","webpack://rmap2/./src/rm2/model/RM2Event.ts","webpack://rmap2/./src/rm2/model/RM2Projection.ts","webpack://rmap2/./node_modules/@turf/helpers/dist/es/index.js","webpack://rmap2/./node_modules/@turf/clone/dist/es/index.js","webpack://rmap2/./node_modules/@turf/meta/dist/es/index.js","webpack://rmap2/./node_modules/@turf/bbox/dist/es/index.js","webpack://rmap2/./node_modules/@turf/envelope/dist/es/index.js","webpack://rmap2/./node_modules/@turf/bbox-polygon/dist/es/index.js","webpack://rmap2/./node_modules/@turf/centroid/dist/es/index.js","webpack://rmap2/./node_modules/@turf/flatten/dist/es/index.js","webpack://rmap2/./node_modules/@turf/invariant/dist/es/index.js","webpack://rmap2/./node_modules/@turf/distance/dist/es/index.js","webpack://rmap2/./src/rm2/model/RM2Geometry.ts","webpack://rmap2/./src/rm2/model/RM2CameraChangeOptions.ts","webpack://rmap2/./src/rm2/services/RM2Service.ts","webpack://rmap2/./src/rm2/popup/RM2Popup.ts","webpack://rmap2/./src/rm2/popup/RM2PopupOptions.ts","webpack://rmap2/./src/rm2/map-controls/RM2MapControls.ts","webpack://rmap2/./src/rm2/highlights/RM2HighlightOptions.ts","webpack://rmap2/./src/rm2/model/RM2Feature.ts","webpack://rmap2/./src/rm2/services/RM2NominatimService.ts","webpack://rmap2/./node_modules/@turf/bearing/dist/es/index.js","webpack://rmap2/./node_modules/@turf/destination/dist/es/index.js","webpack://rmap2/./node_modules/@turf/line-slice-along/dist/es/index.js","webpack://rmap2/./node_modules/@turf/line-chunk/dist/es/index.js","webpack://rmap2/./node_modules/@turf/length/dist/es/index.js","webpack://rmap2/./src/rm2/model/RouteStatus.ts","webpack://rmap2/./src/rm2/services/RM2RoutingService.ts","webpack://rmap2/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://rmap2/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://rmap2/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://rmap2/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://rmap2/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://rmap2/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://rmap2/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://rmap2/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://rmap2/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://rmap2/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://rmap2/./node_modules/@babel/runtime/helpers/esm/toArray.js","webpack://rmap2/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://rmap2/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://rmap2/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://rmap2/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://rmap2/./node_modules/i18next/dist/esm/i18next.js","webpack://rmap2/./node_modules/i18next-xhr-backend/dist/esm/i18nextXHRBackend.js","webpack://rmap2/./src/rm2/services/RM2LocalizationService.ts","webpack://rmap2/./node_modules/tslib/tslib.es6.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/util/isFunction.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/Subscription.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/config.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/util/noop.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/NotificationFactories.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/util/errorContext.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/Subscriber.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/symbol/observable.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/util/identity.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/util/pipe.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/Observable.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/Subject.js","webpack://rmap2/./src/rm2/highlights/RM2Highlights.ts","webpack://rmap2/./src/rm2/map-controls/map-picker-control/RM2MapPickerControlOptions.ts","webpack://rmap2/./src/rm2/map-controls/map-picker-control/RM2MapPickerControl.ts","webpack://rmap2/./src/rm2/geolocation/RM2GeolocationOptions.ts","webpack://rmap2/./src/rm2/geolocation/RM2Geolocation.ts","webpack://rmap2/./src/rm2/model/style-metadata/RM2LayerGroup.ts","webpack://rmap2/./src/rm2/map-controls/legend-control/RM2LegendControl.ts","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/Scheduler.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/scheduler/async.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/util/lift.js","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","webpack://rmap2/./src/rm2/map-controls/routing-control/RM2RoutingControlOptions.ts","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js","webpack://rmap2/./src/rm2/services/RM2StaticService.ts","webpack://rmap2/./src/rm2/map-controls/routing-control/RM2RoutingControl.ts","webpack://rmap2/./src/rm2/map-controls/promet-si-control/RM2PrometSiControlOptions.ts","webpack://rmap2/./src/rm2/model/RM2Theme.ts","webpack://rmap2/./src/rm2/map-controls/promet-si-control/promet-si-expand-map-control/RM2PrometSiExpandMapControl.ts","webpack://rmap2/./src/rm2/map-controls/promet-si-control/RM2PrometSiControl.ts","webpack://rmap2/./src/rm2/map-controls/promet-si-control/templates/rmb-click-template.ts","webpack://rmap2/./src/rm2/map-controls/promet-si-control/templates/container-template.ts","webpack://rmap2/./src/rm2/map-controls/promet-si-control/templates/legend-template.ts","webpack://rmap2/./src/rm2/map-controls/promet-si-control/templates/search-results-template.ts","webpack://rmap2/./src/rm2/map-controls/promet-si-control/templates/routing-header-template.ts","webpack://rmap2/./src/rm2/map-controls/promet-si-control/templates/route-tab-template.ts","webpack://rmap2/./src/rm2/map-controls/promet-si-control/templates/error-template.ts","webpack://rmap2/./src/rm2/model/style-metadata/RM2StyleMetadata.ts","webpack://rmap2/./src/rm2/model/style-metadata/RM2LayerMetadata.ts","webpack://rmap2/./src/rm2/model/RM2Layer.ts","webpack://rmap2/./src/rm2/map-controls/nap-control/RM2NAPControlOptions.ts","webpack://rmap2/./src/rm2/map-controls/nap-control/RM2NAPControl.ts","webpack://rmap2/./src/rm2/map-controls/nap-control/templates/filter-template.ts","webpack://rmap2/./src/rm2/map-controls/nap-control/templates/details-template.ts","webpack://rmap2/./src/rm2/map/RM2Map.ts","webpack://rmap2/./src/rm2/templates/popup-templates.ts","webpack://rmap2/./node_modules/rxjs/dist/esm5/internal/ReplaySubject.js","webpack://rmap2/./src/map-container.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"rmap2\"] = factory();\n\telse\n\t\troot[\"rmap2\"] = factory();\n})(self, () => {\nreturn ","function moveToMapPosition (master, clones) {\n var center = master.getCenter();\n var zoom = master.getZoom();\n var bearing = master.getBearing();\n var pitch = master.getPitch();\n\n clones.forEach(function (clone) {\n clone.jumpTo({\n center: center,\n zoom: zoom,\n bearing: bearing,\n pitch: pitch\n });\n });\n}\n\n// Sync movements of two maps.\n//\n// All interactions that result in movement end up firing\n// a \"move\" event. The trick here, though, is to\n// ensure that movements don't cycle from one map\n// to the other and back again, because such a cycle\n// - could cause an infinite loop\n// - prematurely halts prolonged movements like\n// double-click zooming, box-zooming, and flying\nfunction syncMaps () {\n var maps;\n var argLen = arguments.length;\n if (argLen === 1) {\n maps = arguments[0];\n } else {\n maps = [];\n for (var i = 0; i < argLen; i++) {\n maps.push(arguments[i]);\n }\n }\n\n // Create all the movement functions, because if they're created every time\n // they wouldn't be the same and couldn't be removed.\n var fns = [];\n maps.forEach(function (map, index) {\n fns[index] = sync.bind(null, map, maps.filter(function (o, i) { return i !== index; }));\n });\n\n function on () {\n maps.forEach(function (map, index) {\n map.on('move', fns[index]);\n });\n }\n\n function off () {\n maps.forEach(function (map, index) {\n map.off('move', fns[index]);\n });\n }\n\n // When one map moves, we turn off the movement listeners\n // on all the maps, move it, then turn the listeners on again\n function sync (master, clones) {\n off();\n moveToMapPosition(master, clones);\n on();\n }\n\n on();\n return function(){ off(); fns = []; };\n}\n\nmodule.exports = syncMaps;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar Guid = /** @class */ (function () {\r\n function Guid(guid) {\r\n if (!guid) {\r\n throw new TypeError(\"Invalid argument; `value` has no value.\");\r\n }\r\n this.value = Guid.EMPTY;\r\n if (guid && Guid.isGuid(guid)) {\r\n this.value = guid;\r\n }\r\n }\r\n Guid.isGuid = function (guid) {\r\n var value = guid.toString();\r\n return guid && (guid instanceof Guid || Guid.validator.test(value));\r\n };\r\n Guid.create = function () {\r\n return new Guid([Guid.gen(2), Guid.gen(1), Guid.gen(1), Guid.gen(1), Guid.gen(3)].join(\"-\"));\r\n };\r\n Guid.createEmpty = function () {\r\n return new Guid(\"emptyguid\");\r\n };\r\n Guid.parse = function (guid) {\r\n return new Guid(guid);\r\n };\r\n Guid.raw = function () {\r\n return [Guid.gen(2), Guid.gen(1), Guid.gen(1), Guid.gen(1), Guid.gen(3)].join(\"-\");\r\n };\r\n Guid.gen = function (count) {\r\n var out = \"\";\r\n for (var i = 0; i < count; i++) {\r\n // tslint:disable-next-line:no-bitwise\r\n out += (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\r\n }\r\n return out;\r\n };\r\n Guid.prototype.equals = function (other) {\r\n // Comparing string `value` against provided `guid` will auto-call\r\n // toString on `guid` for comparison\r\n return Guid.isGuid(other) && this.value === other.toString();\r\n };\r\n Guid.prototype.isEmpty = function () {\r\n return this.value === Guid.EMPTY;\r\n };\r\n Guid.prototype.toString = function () {\r\n return this.value;\r\n };\r\n Guid.prototype.toJSON = function () {\r\n return {\r\n value: this.value\r\n };\r\n };\r\n Guid.validator = new RegExp(\"^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$\", \"i\");\r\n Guid.EMPTY = \"00000000-0000-0000-0000-000000000000\";\r\n return Guid;\r\n}());\r\nexports.Guid = Guid;\r\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar defaults = {\n tName: 't',\n i18nName: 'i18n',\n handleName: 'localize',\n selectorAttr: 'data-i18n',\n targetAttr: 'i18n-target',\n optionsAttr: 'i18n-options',\n useOptionsAttr: false,\n parseDefaultValueFromContent: true\n};\n\nfunction init(i18next, $) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\n options = _extends({}, defaults, options);\n\n function parse(ele, key, opts) {\n if (key.length === 0) return;\n\n var attr = 'text';\n\n if (key.indexOf('[') === 0) {\n var parts = key.split(']');\n key = parts[1];\n attr = parts[0].substr(1, parts[0].length - 1);\n }\n\n if (key.indexOf(';') === key.length - 1) {\n key = key.substr(0, key.length - 2);\n }\n\n function extendDefault(o, val) {\n if (!options.parseDefaultValueFromContent) return o;\n return _extends({}, o, { defaultValue: val });\n }\n\n if (attr === 'html') {\n ele.html(i18next.t(key, extendDefault(opts, ele.html())));\n } else if (attr === 'text') {\n ele.text(i18next.t(key, extendDefault(opts, ele.text())));\n } else if (attr === 'prepend') {\n ele.prepend(i18next.t(key, extendDefault(opts, ele.html())));\n } else if (attr === 'append') {\n ele.append(i18next.t(key, extendDefault(opts, ele.html())));\n } else if (attr.indexOf('data-') === 0) {\n var dataAttr = attr.substr('data-'.length);\n var translated = i18next.t(key, extendDefault(opts, ele.data(dataAttr)));\n\n // we change into the data cache\n ele.data(dataAttr, translated);\n // we change into the dom\n ele.attr(attr, translated);\n } else {\n ele.attr(attr, i18next.t(key, extendDefault(opts, ele.attr(attr))));\n }\n }\n\n function localize(ele, opts) {\n var key = ele.attr(options.selectorAttr);\n if (!key && typeof key !== 'undefined' && key !== false) key = ele.text() || ele.val();\n if (!key) return;\n\n var target = ele,\n targetSelector = ele.data(options.targetAttr);\n\n if (targetSelector) target = ele.find(targetSelector) || ele;\n\n if (!opts && options.useOptionsAttr === true) opts = ele.data(options.optionsAttr);\n\n opts = opts || {};\n\n if (key.indexOf(';') >= 0) {\n var keys = key.split(';');\n\n $.each(keys, function (m, k) {\n // .trim(): Trim the comma-separated parameters on the data-i18n attribute.\n if (k !== '') parse(target, k.trim(), opts);\n });\n } else {\n parse(target, key, opts);\n }\n\n if (options.useOptionsAttr === true) {\n var clone = {};\n clone = _extends({ clone: clone }, opts);\n\n delete clone.lng;\n ele.data(options.optionsAttr, clone);\n }\n }\n\n function handle(opts) {\n return this.each(function () {\n // localize element itself\n localize($(this), opts);\n\n // localize children\n var elements = $(this).find('[' + options.selectorAttr + ']');\n elements.each(function () {\n localize($(this), opts);\n });\n });\n };\n\n // $.t $.i18n shortcut\n $[options.tName] = i18next.t.bind(i18next);\n $[options.i18nName] = i18next;\n\n // selector function $(mySelector).localize(opts);\n $.fn[options.handleName] = handle;\n}\n\nexports.default = {\n init: init\n};","module.exports = require('./dist/commonjs/index.js').default;\n","'use strict';\n/* global mapboxgl */\n\nvar syncMove = require('@mapbox/mapbox-gl-sync-move');\nvar EventEmitter = require('events').EventEmitter;\n\n/**\n * @param {Object} a The first Mapbox GL Map\n * @param {Object} b The second Mapbox GL Map\n * @param {string|HTMLElement} container An HTML Element, or an element selector string for the compare container. It should be a wrapper around the two map Elements.\n * @param {Object} options\n * @param {string} [options.orientation=vertical] The orientation of the compare slider. `vertical` creates a vertical slider bar to compare one map on the left (map A) with another map on the right (map B). `horizontal` creates a horizontal slider bar to compare on mop on the top (map A) and another map on the bottom (map B).\n * @param {boolean} [options.mousemove=false] If `true` the compare slider will move with the cursor, otherwise the slider will need to be dragged to move.\n * @example\n * var compare = new mapboxgl.Compare(beforeMap, afterMap, '#wrapper', {\n * orientation: 'vertical',\n * mousemove: true\n * });\n * @see [Swipe between maps](https://www.mapbox.com/mapbox-gl-js/example/mapbox-gl-compare/)\n */\nfunction Compare(a, b, container, options) {\n this.options = options ? options : {};\n this._mapA = a;\n this._mapB = b;\n this._horizontal = this.options.orientation === 'horizontal';\n this._onDown = this._onDown.bind(this);\n this._onMove = this._onMove.bind(this);\n this._onMouseUp = this._onMouseUp.bind(this);\n this._onTouchEnd = this._onTouchEnd.bind(this);\n this._ev = new EventEmitter();\n this._swiper = document.createElement('div');\n this._swiper.className = this._horizontal ? 'compare-swiper-horizontal' : 'compare-swiper-vertical';\n\n this._controlContainer = document.createElement('div');\n this._controlContainer.className = this._horizontal ? 'mapboxgl-compare mapboxgl-compare-horizontal' : 'mapboxgl-compare';\n this._controlContainer.className = this._controlContainer.className;\n this._controlContainer.appendChild(this._swiper);\n\n if (typeof container === 'string' && document.body.querySelectorAll) {\n // get container with a selector\n var appendTarget = document.body.querySelectorAll(container)[0];\n if (!appendTarget) {\n throw new Error('Cannot find element with specified container selector.')\n }\n appendTarget.appendChild(this._controlContainer)\n } else if (container instanceof Element && container.appendChild) {\n // get container directly\n container.appendChild(this._controlContainer)\n } else {\n throw new Error('Invalid container specified. Must be CSS selector or HTML element.')\n }\n\n this._bounds = b.getContainer().getBoundingClientRect();\n var swiperPosition = (this._horizontal ? this._bounds.height : this._bounds.width) / 2;\n this._setPosition(swiperPosition);\n\n this._clearSync = syncMove(a, b);\n this._onResize = function() {\n this._bounds = b.getContainer().getBoundingClientRect();\n if (this.currentPosition) this._setPosition(this.currentPosition);\n }.bind(this);\n\n b.on('resize', this._onResize);\n\n if (this.options && this.options.mousemove) {\n a.getContainer().addEventListener('mousemove', this._onMove);\n b.getContainer().addEventListener('mousemove', this._onMove);\n }\n\n this._swiper.addEventListener('mousedown', this._onDown);\n this._swiper.addEventListener('touchstart', this._onDown);\n}\n\nCompare.prototype = {\n _setPointerEvents: function(v) {\n this._controlContainer.style.pointerEvents = v;\n this._swiper.style.pointerEvents = v;\n },\n\n _onDown: function(e) {\n if (e.touches) {\n document.addEventListener('touchmove', this._onMove);\n document.addEventListener('touchend', this._onTouchEnd);\n } else {\n document.addEventListener('mousemove', this._onMove);\n document.addEventListener('mouseup', this._onMouseUp);\n }\n },\n\n _setPosition: function(x) {\n x = Math.min(x, this._horizontal\n ? this._bounds.height\n : this._bounds.width);\n var pos = this._horizontal\n ? 'translate(0, ' + x + 'px)'\n : 'translate(' + x + 'px, 0)';\n this._controlContainer.style.transform = pos;\n this._controlContainer.style.WebkitTransform = pos;\n var clipA = this._horizontal\n ? 'rect(0, 999em, ' + x + 'px, 0)'\n : 'rect(0, ' + x + 'px, ' + this._bounds.height + 'px, 0)';\n var clipB = this._horizontal\n ? 'rect(' + x + 'px, 999em, ' + this._bounds.height + 'px,0)'\n : 'rect(0, 999em, ' + this._bounds.height + 'px,' + x + 'px)';\n \n this._mapA.getContainer().style.clip = clipA;\n this._mapB.getContainer().style.clip = clipB;\n this.currentPosition = x;\n },\n\n _onMove: function(e) {\n if (this.options && this.options.mousemove) {\n this._setPointerEvents(e.touches ? 'auto' : 'none');\n }\n\n this._horizontal\n ? this._setPosition(this._getY(e))\n : this._setPosition(this._getX(e));\n },\n\n _onMouseUp: function() {\n document.removeEventListener('mousemove', this._onMove);\n document.removeEventListener('mouseup', this._onMouseUp);\n this.fire('slideend', { currentPosition: this.currentPosition });\n },\n\n _onTouchEnd: function() {\n document.removeEventListener('touchmove', this._onMove);\n document.removeEventListener('touchend', this._onTouchEnd);\n },\n\n _getX: function(e) {\n e = e.touches ? e.touches[0] : e;\n var x = e.clientX - this._bounds.left;\n if (x < 0) x = 0;\n if (x > this._bounds.width) x = this._bounds.width;\n return x;\n },\n\n _getY: function(e) {\n e = e.touches ? e.touches[0] : e;\n var y = e.clientY - this._bounds.top;\n if (y < 0) y = 0;\n if (y > this._bounds.height) y = this._bounds.height;\n return y;\n },\n\n /**\n * Set the position of the slider.\n *\n * @param {number} x Slider position in pixels from left/top.\n */\n setSlider: function(x) {\n this._setPosition(x);\n },\n\n /**\n * Adds a listener for events of a specified type.\n *\n * @param {string} type The event type to listen for; one of `slideend`.\n * @param {Function} listener The function to be called when the event is fired.\n * @returns {Compare} `this`\n */\n on: function(type, fn) {\n this._ev.on(type, fn);\n return this;\n },\n\n /**\n * Fire an event of a specified type.\n *\n * @param {string} type The event type to fire; one of `slideend`.\n * @param {Object} data Data passed to the event listener.\n * @returns {Compare} `this`\n */\n fire: function(type, data) {\n this._ev.emit(type, data);\n return this;\n },\n\n /**\n * Removes an event listener previously added with `Compare#on`.\n *\n * @param {string} type The event type previously used to install the listener.\n * @param {Function} listener The function previously installed as a listener.\n * @returns {Compare} `this`\n */\n off: function(type, fn) {\n this._ev.removeListener(type, fn);\n return this;\n },\n\n remove: function() {\n this._clearSync();\n this._mapB.off('resize', this._onResize);\n var aContainer = this._mapA.getContainer();\n\n if (!!aContainer) {\n aContainer.style.clip = null;\n aContainer.removeEventListener('mousemove', this._onMove);\n }\n\n var bContainer = this._mapB.getContainer();\n\n if (!!bContainer) {\n bContainer.style.clip = null;\n bContainer.removeEventListener('mousemove', this._onMove);\n }\n\n this._swiper.removeEventListener('mousedown', this._onDown);\n this._swiper.removeEventListener('touchstart', this._onDown);\n this._controlContainer.remove();\n }\n};\n\nif (window.mapboxgl) {\n mapboxgl.Compare = Compare;\n} else if (typeof module !== 'undefined') {\n module.exports = Compare;\n}\n","export var PJD_3PARAM = 1;\nexport var PJD_7PARAM = 2;\nexport var PJD_GRIDSHIFT = 3;\nexport var PJD_WGS84 = 4; // WGS84 or equivalent\nexport var PJD_NODATUM = 5; // WGS84 or equivalent\nexport var SRS_WGS84_SEMIMAJOR = 6378137.0; // only used in grid shift transforms\nexport var SRS_WGS84_SEMIMINOR = 6356752.314; // only used in grid shift transforms\nexport var SRS_WGS84_ESQUARED = 0.0066943799901413165; // only used in grid shift transforms\nexport var SEC_TO_RAD = 4.84813681109535993589914102357e-6;\nexport var HALF_PI = Math.PI/2;\n// ellipoid pj_set_ell.c\nexport var SIXTH = 0.1666666666666666667;\n/* 1/6 */\nexport var RA4 = 0.04722222222222222222;\n/* 17/360 */\nexport var RA6 = 0.02215608465608465608;\nexport var EPSLN = 1.0e-10;\n// you'd think you could use Number.EPSILON above but that makes\n// Mollweide get into an infinate loop.\n\nexport var D2R = 0.01745329251994329577;\nexport var R2D = 57.29577951308232088;\nexport var FORTPI = Math.PI/4;\nexport var TWO_PI = Math.PI * 2;\n// SPI is slightly greater than Math.PI, so values that exceed the -180..180\n// degree range by a tiny amount don't get wrapped. This prevents points that\n// have drifted from their original location along the 180th meridian (due to\n// floating point error) from changing their sign.\nexport var SPI = 3.14159265359;\n","var exports = {};\nexport {exports as default};\n\nexports.greenwich = 0.0; //\"0dE\",\nexports.lisbon = -9.131906111111; //\"9d07'54.862\\\"W\",\nexports.paris = 2.337229166667; //\"2d20'14.025\\\"E\",\nexports.bogota = -74.080916666667; //\"74d04'51.3\\\"W\",\nexports.madrid = -3.687938888889; //\"3d41'16.58\\\"W\",\nexports.rome = 12.452333333333; //\"12d27'8.4\\\"E\",\nexports.bern = 7.439583333333; //\"7d26'22.5\\\"E\",\nexports.jakarta = 106.807719444444; //\"106d48'27.79\\\"E\",\nexports.ferro = -17.666666666667; //\"17d40'W\",\nexports.brussels = 4.367975; //\"4d22'4.71\\\"E\",\nexports.stockholm = 18.058277777778; //\"18d3'29.8\\\"E\",\nexports.athens = 23.7163375; //\"23d42'58.815\\\"E\",\nexports.oslo = 10.722916666667; //\"10d43'22.5\\\"E\"\n","export default {\n ft: {to_meter: 0.3048},\n 'us-ft': {to_meter: 1200 / 3937}\n};\n","var ignoredChar = /[\\s_\\-\\/\\(\\)]/g;\nexport default function match(obj, key) {\n if (obj[key]) {\n return obj[key];\n }\n var keys = Object.keys(obj);\n var lkey = key.toLowerCase().replace(ignoredChar, '');\n var i = -1;\n var testkey, processedKey;\n while (++i < keys.length) {\n testkey = keys[i];\n processedKey = testkey.toLowerCase().replace(ignoredChar, '');\n if (processedKey === lkey) {\n return obj[testkey];\n }\n }\n}\n","import {D2R} from './constants/values';\nimport PrimeMeridian from './constants/PrimeMeridian';\nimport units from './constants/units';\nimport match from './match';\n\nexport default function(defData) {\n var self = {};\n var paramObj = defData.split('+').map(function(v) {\n return v.trim();\n }).filter(function(a) {\n return a;\n }).reduce(function(p, a) {\n var split = a.split('=');\n split.push(true);\n p[split[0].toLowerCase()] = split[1];\n return p;\n }, {});\n var paramName, paramVal, paramOutname;\n var params = {\n proj: 'projName',\n datum: 'datumCode',\n rf: function(v) {\n self.rf = parseFloat(v);\n },\n lat_0: function(v) {\n self.lat0 = v * D2R;\n },\n lat_1: function(v) {\n self.lat1 = v * D2R;\n },\n lat_2: function(v) {\n self.lat2 = v * D2R;\n },\n lat_ts: function(v) {\n self.lat_ts = v * D2R;\n },\n lon_0: function(v) {\n self.long0 = v * D2R;\n },\n lon_1: function(v) {\n self.long1 = v * D2R;\n },\n lon_2: function(v) {\n self.long2 = v * D2R;\n },\n alpha: function(v) {\n self.alpha = parseFloat(v) * D2R;\n },\n gamma: function(v) {\n self.rectified_grid_angle = parseFloat(v);\n },\n lonc: function(v) {\n self.longc = v * D2R;\n },\n x_0: function(v) {\n self.x0 = parseFloat(v);\n },\n y_0: function(v) {\n self.y0 = parseFloat(v);\n },\n k_0: function(v) {\n self.k0 = parseFloat(v);\n },\n k: function(v) {\n self.k0 = parseFloat(v);\n },\n a: function(v) {\n self.a = parseFloat(v);\n },\n b: function(v) {\n self.b = parseFloat(v);\n },\n r_a: function() {\n self.R_A = true;\n },\n zone: function(v) {\n self.zone = parseInt(v, 10);\n },\n south: function() {\n self.utmSouth = true;\n },\n towgs84: function(v) {\n self.datum_params = v.split(\",\").map(function(a) {\n return parseFloat(a);\n });\n },\n to_meter: function(v) {\n self.to_meter = parseFloat(v);\n },\n units: function(v) {\n self.units = v;\n var unit = match(units, v);\n if (unit) {\n self.to_meter = unit.to_meter;\n }\n },\n from_greenwich: function(v) {\n self.from_greenwich = v * D2R;\n },\n pm: function(v) {\n var pm = match(PrimeMeridian, v);\n self.from_greenwich = (pm ? pm : parseFloat(v)) * D2R;\n },\n nadgrids: function(v) {\n if (v === '@null') {\n self.datumCode = 'none';\n }\n else {\n self.nadgrids = v;\n }\n },\n axis: function(v) {\n var legalAxis = \"ewnsud\";\n if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) {\n self.axis = v;\n }\n },\n approx: function() {\n self.approx = true;\n }\n };\n for (paramName in paramObj) {\n paramVal = paramObj[paramName];\n if (paramName in params) {\n paramOutname = params[paramName];\n if (typeof paramOutname === 'function') {\n paramOutname(paramVal);\n }\n else {\n self[paramOutname] = paramVal;\n }\n }\n else {\n self[paramName] = paramVal;\n }\n }\n if(typeof self.datumCode === 'string' && self.datumCode !== \"WGS84\"){\n self.datumCode = self.datumCode.toLowerCase();\n }\n return self;\n}\n","export default parseString;\n\nvar NEUTRAL = 1;\nvar KEYWORD = 2;\nvar NUMBER = 3;\nvar QUOTED = 4;\nvar AFTERQUOTE = 5;\nvar ENDED = -1;\nvar whitespace = /\\s/;\nvar latin = /[A-Za-z]/;\nvar keyword = /[A-Za-z84_]/;\nvar endThings = /[,\\]]/;\nvar digets = /[\\d\\.E\\-\\+]/;\n// const ignoredChar = /[\\s_\\-\\/\\(\\)]/g;\nfunction Parser(text) {\n if (typeof text !== 'string') {\n throw new Error('not a string');\n }\n this.text = text.trim();\n this.level = 0;\n this.place = 0;\n this.root = null;\n this.stack = [];\n this.currentObject = null;\n this.state = NEUTRAL;\n}\nParser.prototype.readCharicter = function() {\n var char = this.text[this.place++];\n if (this.state !== QUOTED) {\n while (whitespace.test(char)) {\n if (this.place >= this.text.length) {\n return;\n }\n char = this.text[this.place++];\n }\n }\n switch (this.state) {\n case NEUTRAL:\n return this.neutral(char);\n case KEYWORD:\n return this.keyword(char)\n case QUOTED:\n return this.quoted(char);\n case AFTERQUOTE:\n return this.afterquote(char);\n case NUMBER:\n return this.number(char);\n case ENDED:\n return;\n }\n};\nParser.prototype.afterquote = function(char) {\n if (char === '\"') {\n this.word += '\"';\n this.state = QUOTED;\n return;\n }\n if (endThings.test(char)) {\n this.word = this.word.trim();\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in afterquote yet, index ' + this.place);\n};\nParser.prototype.afterItem = function(char) {\n if (char === ',') {\n if (this.word !== null) {\n this.currentObject.push(this.word);\n }\n this.word = null;\n this.state = NEUTRAL;\n return;\n }\n if (char === ']') {\n this.level--;\n if (this.word !== null) {\n this.currentObject.push(this.word);\n this.word = null;\n }\n this.state = NEUTRAL;\n this.currentObject = this.stack.pop();\n if (!this.currentObject) {\n this.state = ENDED;\n }\n\n return;\n }\n};\nParser.prototype.number = function(char) {\n if (digets.test(char)) {\n this.word += char;\n return;\n }\n if (endThings.test(char)) {\n this.word = parseFloat(this.word);\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in number yet, index ' + this.place);\n};\nParser.prototype.quoted = function(char) {\n if (char === '\"') {\n this.state = AFTERQUOTE;\n return;\n }\n this.word += char;\n return;\n};\nParser.prototype.keyword = function(char) {\n if (keyword.test(char)) {\n this.word += char;\n return;\n }\n if (char === '[') {\n var newObjects = [];\n newObjects.push(this.word);\n this.level++;\n if (this.root === null) {\n this.root = newObjects;\n } else {\n this.currentObject.push(newObjects);\n }\n this.stack.push(this.currentObject);\n this.currentObject = newObjects;\n this.state = NEUTRAL;\n return;\n }\n if (endThings.test(char)) {\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in keyword yet, index ' + this.place);\n};\nParser.prototype.neutral = function(char) {\n if (latin.test(char)) {\n this.word = char;\n this.state = KEYWORD;\n return;\n }\n if (char === '\"') {\n this.word = '';\n this.state = QUOTED;\n return;\n }\n if (digets.test(char)) {\n this.word = char;\n this.state = NUMBER;\n return;\n }\n if (endThings.test(char)) {\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in neutral yet, index ' + this.place);\n};\nParser.prototype.output = function() {\n while (this.place < this.text.length) {\n this.readCharicter();\n }\n if (this.state === ENDED) {\n return this.root;\n }\n throw new Error('unable to parse string \"' +this.text + '\". State is ' + this.state);\n};\n\nfunction parseString(txt) {\n var parser = new Parser(txt);\n return parser.output();\n}\n","\n\nfunction mapit(obj, key, value) {\n if (Array.isArray(key)) {\n value.unshift(key);\n key = null;\n }\n var thing = key ? {} : obj;\n\n var out = value.reduce(function(newObj, item) {\n sExpr(item, newObj);\n return newObj\n }, thing);\n if (key) {\n obj[key] = out;\n }\n}\n\nexport function sExpr(v, obj) {\n if (!Array.isArray(v)) {\n obj[v] = true;\n return;\n }\n var key = v.shift();\n if (key === 'PARAMETER') {\n key = v.shift();\n }\n if (v.length === 1) {\n if (Array.isArray(v[0])) {\n obj[key] = {};\n sExpr(v[0], obj[key]);\n return;\n }\n obj[key] = v[0];\n return;\n }\n if (!v.length) {\n obj[key] = true;\n return;\n }\n if (key === 'TOWGS84') {\n obj[key] = v;\n return;\n }\n if (key === 'AXIS') {\n if (!(key in obj)) {\n obj[key] = [];\n }\n obj[key].push(v);\n return;\n }\n if (!Array.isArray(key)) {\n obj[key] = {};\n }\n\n var i;\n switch (key) {\n case 'UNIT':\n case 'PRIMEM':\n case 'VERT_DATUM':\n obj[key] = {\n name: v[0].toLowerCase(),\n convert: v[1]\n };\n if (v.length === 3) {\n sExpr(v[2], obj[key]);\n }\n return;\n case 'SPHEROID':\n case 'ELLIPSOID':\n obj[key] = {\n name: v[0],\n a: v[1],\n rf: v[2]\n };\n if (v.length === 4) {\n sExpr(v[3], obj[key]);\n }\n return;\n case 'PROJECTEDCRS':\n case 'PROJCRS':\n case 'GEOGCS':\n case 'GEOCCS':\n case 'PROJCS':\n case 'LOCAL_CS':\n case 'GEODCRS':\n case 'GEODETICCRS':\n case 'GEODETICDATUM':\n case 'EDATUM':\n case 'ENGINEERINGDATUM':\n case 'VERT_CS':\n case 'VERTCRS':\n case 'VERTICALCRS':\n case 'COMPD_CS':\n case 'COMPOUNDCRS':\n case 'ENGINEERINGCRS':\n case 'ENGCRS':\n case 'FITTED_CS':\n case 'LOCAL_DATUM':\n case 'DATUM':\n v[0] = ['name', v[0]];\n mapit(obj, key, v);\n return;\n default:\n i = -1;\n while (++i < v.length) {\n if (!Array.isArray(v[i])) {\n return sExpr(v, obj[key]);\n }\n }\n return mapit(obj, key, v);\n }\n}\n","var D2R = 0.01745329251994329577;\nimport parser from './parser';\nimport {sExpr} from './process';\n\n\n\nfunction rename(obj, params) {\n var outName = params[0];\n var inName = params[1];\n if (!(outName in obj) && (inName in obj)) {\n obj[outName] = obj[inName];\n if (params.length === 3) {\n obj[outName] = params[2](obj[outName]);\n }\n }\n}\n\nfunction d2r(input) {\n return input * D2R;\n}\n\nfunction cleanWKT(wkt) {\n if (wkt.type === 'GEOGCS') {\n wkt.projName = 'longlat';\n } else if (wkt.type === 'LOCAL_CS') {\n wkt.projName = 'identity';\n wkt.local = true;\n } else {\n if (typeof wkt.PROJECTION === 'object') {\n wkt.projName = Object.keys(wkt.PROJECTION)[0];\n } else {\n wkt.projName = wkt.PROJECTION;\n }\n }\n if (wkt.AXIS) {\n var axisOrder = '';\n for (var i = 0, ii = wkt.AXIS.length; i < ii; ++i) {\n var axis = [wkt.AXIS[i][0].toLowerCase(), wkt.AXIS[i][1].toLowerCase()];\n if (axis[0].indexOf('north') !== -1 || ((axis[0] === 'y' || axis[0] === 'lat') && axis[1] === 'north')) {\n axisOrder += 'n';\n } else if (axis[0].indexOf('south') !== -1 || ((axis[0] === 'y' || axis[0] === 'lat') && axis[1] === 'south')) {\n axisOrder += 's';\n } else if (axis[0].indexOf('east') !== -1 || ((axis[0] === 'x' || axis[0] === 'lon') && axis[1] === 'east')) {\n axisOrder += 'e';\n } else if (axis[0].indexOf('west') !== -1 || ((axis[0] === 'x' || axis[0] === 'lon') && axis[1] === 'west')) {\n axisOrder += 'w';\n }\n }\n if (axisOrder.length === 2) {\n axisOrder += 'u';\n }\n if (axisOrder.length === 3) {\n wkt.axis = axisOrder;\n }\n }\n if (wkt.UNIT) {\n wkt.units = wkt.UNIT.name.toLowerCase();\n if (wkt.units === 'metre') {\n wkt.units = 'meter';\n }\n if (wkt.UNIT.convert) {\n if (wkt.type === 'GEOGCS') {\n if (wkt.DATUM && wkt.DATUM.SPHEROID) {\n wkt.to_meter = wkt.UNIT.convert*wkt.DATUM.SPHEROID.a;\n }\n } else {\n wkt.to_meter = wkt.UNIT.convert;\n }\n }\n }\n var geogcs = wkt.GEOGCS;\n if (wkt.type === 'GEOGCS') {\n geogcs = wkt;\n }\n if (geogcs) {\n //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){\n // wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R;\n //}\n if (geogcs.DATUM) {\n wkt.datumCode = geogcs.DATUM.name.toLowerCase();\n } else {\n wkt.datumCode = geogcs.name.toLowerCase();\n }\n if (wkt.datumCode.slice(0, 2) === 'd_') {\n wkt.datumCode = wkt.datumCode.slice(2);\n }\n if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') {\n wkt.datumCode = 'nzgd49';\n }\n if (wkt.datumCode === 'wgs_1984' || wkt.datumCode === 'world_geodetic_system_1984') {\n if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') {\n wkt.sphere = true;\n }\n wkt.datumCode = 'wgs84';\n }\n if (wkt.datumCode.slice(-6) === '_ferro') {\n wkt.datumCode = wkt.datumCode.slice(0, - 6);\n }\n if (wkt.datumCode.slice(-8) === '_jakarta') {\n wkt.datumCode = wkt.datumCode.slice(0, - 8);\n }\n if (~wkt.datumCode.indexOf('belge')) {\n wkt.datumCode = 'rnb72';\n }\n if (geogcs.DATUM && geogcs.DATUM.SPHEROID) {\n wkt.ellps = geogcs.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\\_18/, 'clrk');\n if (wkt.ellps.toLowerCase().slice(0, 13) === 'international') {\n wkt.ellps = 'intl';\n }\n\n wkt.a = geogcs.DATUM.SPHEROID.a;\n wkt.rf = parseFloat(geogcs.DATUM.SPHEROID.rf, 10);\n }\n\n if (geogcs.DATUM && geogcs.DATUM.TOWGS84) {\n wkt.datum_params = geogcs.DATUM.TOWGS84;\n }\n if (~wkt.datumCode.indexOf('osgb_1936')) {\n wkt.datumCode = 'osgb36';\n }\n if (~wkt.datumCode.indexOf('osni_1952')) {\n wkt.datumCode = 'osni52';\n }\n if (~wkt.datumCode.indexOf('tm65')\n || ~wkt.datumCode.indexOf('geodetic_datum_of_1965')) {\n wkt.datumCode = 'ire65';\n }\n if (wkt.datumCode === 'ch1903+') {\n wkt.datumCode = 'ch1903';\n }\n if (~wkt.datumCode.indexOf('israel')) {\n wkt.datumCode = 'isr93';\n }\n }\n if (wkt.b && !isFinite(wkt.b)) {\n wkt.b = wkt.a;\n }\n\n function toMeter(input) {\n var ratio = wkt.to_meter || 1;\n return input * ratio;\n }\n var renamer = function(a) {\n return rename(wkt, a);\n };\n var list = [\n ['standard_parallel_1', 'Standard_Parallel_1'],\n ['standard_parallel_1', 'Latitude of 1st standard parallel'],\n ['standard_parallel_2', 'Standard_Parallel_2'],\n ['standard_parallel_2', 'Latitude of 2nd standard parallel'],\n ['false_easting', 'False_Easting'],\n ['false_easting', 'False easting'],\n ['false-easting', 'Easting at false origin'],\n ['false_northing', 'False_Northing'],\n ['false_northing', 'False northing'],\n ['false_northing', 'Northing at false origin'],\n ['central_meridian', 'Central_Meridian'],\n ['central_meridian', 'Longitude of natural origin'],\n ['central_meridian', 'Longitude of false origin'],\n ['latitude_of_origin', 'Latitude_Of_Origin'],\n ['latitude_of_origin', 'Central_Parallel'],\n ['latitude_of_origin', 'Latitude of natural origin'],\n ['latitude_of_origin', 'Latitude of false origin'],\n ['scale_factor', 'Scale_Factor'],\n ['k0', 'scale_factor'],\n ['latitude_of_center', 'Latitude_Of_Center'],\n ['latitude_of_center', 'Latitude_of_center'],\n ['lat0', 'latitude_of_center', d2r],\n ['longitude_of_center', 'Longitude_Of_Center'],\n ['longitude_of_center', 'Longitude_of_center'],\n ['longc', 'longitude_of_center', d2r],\n ['x0', 'false_easting', toMeter],\n ['y0', 'false_northing', toMeter],\n ['long0', 'central_meridian', d2r],\n ['lat0', 'latitude_of_origin', d2r],\n ['lat0', 'standard_parallel_1', d2r],\n ['lat1', 'standard_parallel_1', d2r],\n ['lat2', 'standard_parallel_2', d2r],\n ['azimuth', 'Azimuth'],\n ['alpha', 'azimuth', d2r],\n ['srsCode', 'name']\n ];\n list.forEach(renamer);\n if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === 'Lambert_Azimuthal_Equal_Area')) {\n wkt.long0 = wkt.longc;\n }\n if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) {\n wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90);\n wkt.lat_ts = wkt.lat1;\n }\n}\nexport default function(wkt) {\n var lisp = parser(wkt);\n var type = lisp.shift();\n var name = lisp.shift();\n lisp.unshift(['name', name]);\n lisp.unshift(['type', type]);\n var obj = {};\n sExpr(lisp, obj);\n cleanWKT(obj);\n return obj;\n}\n","import globals from './global';\nimport parseProj from './projString';\nimport wkt from 'wkt-parser';\n\nfunction defs(name) {\n /*global console*/\n var that = this;\n if (arguments.length === 2) {\n var def = arguments[1];\n if (typeof def === 'string') {\n if (def.charAt(0) === '+') {\n defs[name] = parseProj(arguments[1]);\n }\n else {\n defs[name] = wkt(arguments[1]);\n }\n } else {\n defs[name] = def;\n }\n }\n else if (arguments.length === 1) {\n if (Array.isArray(name)) {\n return name.map(function(v) {\n if (Array.isArray(v)) {\n defs.apply(that, v);\n }\n else {\n defs(v);\n }\n });\n }\n else if (typeof name === 'string') {\n if (name in defs) {\n return defs[name];\n }\n }\n else if ('EPSG' in name) {\n defs['EPSG:' + name.EPSG] = name;\n }\n else if ('ESRI' in name) {\n defs['ESRI:' + name.ESRI] = name;\n }\n else if ('IAU2000' in name) {\n defs['IAU2000:' + name.IAU2000] = name;\n }\n else {\n console.log(name);\n }\n return;\n }\n\n\n}\nglobals(defs);\nexport default defs;\n","export default function(defs) {\n defs('EPSG:4326', \"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\");\n defs('EPSG:4269', \"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\");\n defs('EPSG:3857', \"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\");\n\n defs.WGS84 = defs['EPSG:4326'];\n defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857\n defs.GOOGLE = defs['EPSG:3857'];\n defs['EPSG:900913'] = defs['EPSG:3857'];\n defs['EPSG:102113'] = defs['EPSG:3857'];\n}\n","import defs from './defs';\nimport wkt from 'wkt-parser';\nimport projStr from './projString';\nimport match from './match';\nfunction testObj(code){\n return typeof code === 'string';\n}\nfunction testDef(code){\n return code in defs;\n}\nvar codeWords = ['PROJECTEDCRS', 'PROJCRS', 'GEOGCS','GEOCCS','PROJCS','LOCAL_CS', 'GEODCRS', 'GEODETICCRS', 'GEODETICDATUM', 'ENGCRS', 'ENGINEERINGCRS'];\nfunction testWKT(code){\n return codeWords.some(function (word) {\n return code.indexOf(word) > -1;\n });\n}\nvar codes = ['3857', '900913', '3785', '102113'];\nfunction checkMercator(item) {\n var auth = match(item, 'authority');\n if (!auth) {\n return;\n }\n var code = match(auth, 'epsg');\n return code && codes.indexOf(code) > -1;\n}\nfunction checkProjStr(item) {\n var ext = match(item, 'extension');\n if (!ext) {\n return;\n }\n return match(ext, 'proj4');\n}\nfunction testProj(code){\n return code[0] === '+';\n}\nfunction parse(code){\n if (testObj(code)) {\n //check to see if this is a WKT string\n if (testDef(code)) {\n return defs[code];\n }\n if (testWKT(code)) {\n var out = wkt(code);\n // test of spetial case, due to this being a very common and often malformed\n if (checkMercator(out)) {\n return defs['EPSG:3857'];\n }\n var maybeProjStr = checkProjStr(out);\n if (maybeProjStr) {\n return projStr(maybeProjStr);\n }\n return out;\n }\n if (testProj(code)) {\n return projStr(code);\n }\n }else{\n return code;\n }\n}\n\nexport default parse;\n","export default function(destination, source) {\n destination = destination || {};\n var value, property;\n if (!source) {\n return destination;\n }\n for (property in source) {\n value = source[property];\n if (value !== undefined) {\n destination[property] = value;\n }\n }\n return destination;\n}\n","export default function(eccent, sinphi, cosphi) {\n var con = eccent * sinphi;\n return cosphi / (Math.sqrt(1 - con * con));\n}","export default function(x) {\n return x<0 ? -1 : 1;\n}","\nimport {TWO_PI, SPI} from '../constants/values';\nimport sign from './sign';\n\nexport default function(x) {\n return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI));\n}\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, phi, sinphi) {\n var con = eccent * sinphi;\n var com = 0.5 * eccent;\n con = Math.pow(((1 - con) / (1 + con)), com);\n return (Math.tan(0.5 * (HALF_PI - phi)) / con);\n}\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, ts) {\n var eccnth = 0.5 * eccent;\n var con, dphi;\n var phi = HALF_PI - 2 * Math.atan(ts);\n for (var i = 0; i <= 15; i++) {\n con = eccent * Math.sin(phi);\n dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi;\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n //console.log(\"phi2z has NoConvergence\");\n return -9999;\n}\n","export function init() {\n //no-op for longlat\n}\n\nfunction identity(pt) {\n return pt;\n}\nexport {identity as forward};\nexport {identity as inverse};\nexport var names = [\"longlat\", \"identity\"];\nexport default {\n init: init,\n forward: identity,\n inverse: identity,\n names: names\n};\n","import merc from \"./projections/merc\";\nimport longlat from \"./projections/longlat\";\nvar projs = [merc, longlat];\nvar names = {};\nvar projStore = [];\n\nfunction add(proj, i) {\n var len = projStore.length;\n if (!proj.names) {\n console.log(i);\n return true;\n }\n projStore[len] = proj;\n proj.names.forEach(function(n) {\n names[n.toLowerCase()] = len;\n });\n return this;\n}\n\nexport {add};\n\nexport function get(name) {\n if (!name) {\n return false;\n }\n var n = name.toLowerCase();\n if (typeof names[n] !== 'undefined' && projStore[names[n]]) {\n return projStore[names[n]];\n }\n}\n\nexport function start() {\n projs.forEach(add);\n}\nexport default {\n start: start,\n add: add,\n get: get\n};\n","import msfnz from '../common/msfnz';\n\nimport adjust_lon from '../common/adjust_lon';\nimport tsfnz from '../common/tsfnz';\nimport phi2z from '../common/phi2z';\nimport {FORTPI, R2D, EPSLN, HALF_PI} from '../constants/values';\nexport function init() {\n var con = this.b / this.a;\n this.es = 1 - con * con;\n if(!('x0' in this)){\n this.x0 = 0;\n }\n if(!('y0' in this)){\n this.y0 = 0;\n }\n this.e = Math.sqrt(this.es);\n if (this.lat_ts) {\n if (this.sphere) {\n this.k0 = Math.cos(this.lat_ts);\n }\n else {\n this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n }\n }\n else {\n if (!this.k0) {\n if (this.k) {\n this.k0 = this.k;\n }\n else {\n this.k0 = 1;\n }\n }\n }\n}\n\n/* Mercator forward equations--mapping lat,long to x,y\n --------------------------------------------------*/\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n // convert to radians\n if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) {\n return null;\n }\n\n var x, y;\n if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {\n return null;\n }\n else {\n if (this.sphere) {\n x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat));\n }\n else {\n var sinphi = Math.sin(lat);\n var ts = tsfnz(this.e, lat, sinphi);\n x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n y = this.y0 - this.a * this.k0 * Math.log(ts);\n }\n p.x = x;\n p.y = y;\n return p;\n }\n}\n\n/* Mercator inverse equations--mapping x,y to lat/long\n --------------------------------------------------*/\nexport function inverse(p) {\n\n var x = p.x - this.x0;\n var y = p.y - this.y0;\n var lon, lat;\n\n if (this.sphere) {\n lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0)));\n }\n else {\n var ts = Math.exp(-y / (this.a * this.k0));\n lat = phi2z(this.e, ts);\n if (lat === -9999) {\n return null;\n }\n }\n lon = adjust_lon(this.long0 + x / (this.a * this.k0));\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Mercator\", \"Popular Visualisation Pseudo Mercator\", \"Mercator_1SP\", \"Mercator_Auxiliary_Sphere\", \"merc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","var exports = {};\nexport {exports as default};\nexports.MERIT = {\n a: 6378137.0,\n rf: 298.257,\n ellipseName: \"MERIT 1983\"\n};\n\nexports.SGS85 = {\n a: 6378136.0,\n rf: 298.257,\n ellipseName: \"Soviet Geodetic System 85\"\n};\n\nexports.GRS80 = {\n a: 6378137.0,\n rf: 298.257222101,\n ellipseName: \"GRS 1980(IUGG, 1980)\"\n};\n\nexports.IAU76 = {\n a: 6378140.0,\n rf: 298.257,\n ellipseName: \"IAU 1976\"\n};\n\nexports.airy = {\n a: 6377563.396,\n b: 6356256.910,\n ellipseName: \"Airy 1830\"\n};\n\nexports.APL4 = {\n a: 6378137,\n rf: 298.25,\n ellipseName: \"Appl. Physics. 1965\"\n};\n\nexports.NWL9D = {\n a: 6378145.0,\n rf: 298.25,\n ellipseName: \"Naval Weapons Lab., 1965\"\n};\n\nexports.mod_airy = {\n a: 6377340.189,\n b: 6356034.446,\n ellipseName: \"Modified Airy\"\n};\n\nexports.andrae = {\n a: 6377104.43,\n rf: 300.0,\n ellipseName: \"Andrae 1876 (Den., Iclnd.)\"\n};\n\nexports.aust_SA = {\n a: 6378160.0,\n rf: 298.25,\n ellipseName: \"Australian Natl & S. Amer. 1969\"\n};\n\nexports.GRS67 = {\n a: 6378160.0,\n rf: 298.2471674270,\n ellipseName: \"GRS 67(IUGG 1967)\"\n};\n\nexports.bessel = {\n a: 6377397.155,\n rf: 299.1528128,\n ellipseName: \"Bessel 1841\"\n};\n\nexports.bess_nam = {\n a: 6377483.865,\n rf: 299.1528128,\n ellipseName: \"Bessel 1841 (Namibia)\"\n};\n\nexports.clrk66 = {\n a: 6378206.4,\n b: 6356583.8,\n ellipseName: \"Clarke 1866\"\n};\n\nexports.clrk80 = {\n a: 6378249.145,\n rf: 293.4663,\n ellipseName: \"Clarke 1880 mod.\"\n};\n\nexports.clrk58 = {\n a: 6378293.645208759,\n rf: 294.2606763692654,\n ellipseName: \"Clarke 1858\"\n};\n\nexports.CPM = {\n a: 6375738.7,\n rf: 334.29,\n ellipseName: \"Comm. des Poids et Mesures 1799\"\n};\n\nexports.delmbr = {\n a: 6376428.0,\n rf: 311.5,\n ellipseName: \"Delambre 1810 (Belgium)\"\n};\n\nexports.engelis = {\n a: 6378136.05,\n rf: 298.2566,\n ellipseName: \"Engelis 1985\"\n};\n\nexports.evrst30 = {\n a: 6377276.345,\n rf: 300.8017,\n ellipseName: \"Everest 1830\"\n};\n\nexports.evrst48 = {\n a: 6377304.063,\n rf: 300.8017,\n ellipseName: \"Everest 1948\"\n};\n\nexports.evrst56 = {\n a: 6377301.243,\n rf: 300.8017,\n ellipseName: \"Everest 1956\"\n};\n\nexports.evrst69 = {\n a: 6377295.664,\n rf: 300.8017,\n ellipseName: \"Everest 1969\"\n};\n\nexports.evrstSS = {\n a: 6377298.556,\n rf: 300.8017,\n ellipseName: \"Everest (Sabah & Sarawak)\"\n};\n\nexports.fschr60 = {\n a: 6378166.0,\n rf: 298.3,\n ellipseName: \"Fischer (Mercury Datum) 1960\"\n};\n\nexports.fschr60m = {\n a: 6378155.0,\n rf: 298.3,\n ellipseName: \"Fischer 1960\"\n};\n\nexports.fschr68 = {\n a: 6378150.0,\n rf: 298.3,\n ellipseName: \"Fischer 1968\"\n};\n\nexports.helmert = {\n a: 6378200.0,\n rf: 298.3,\n ellipseName: \"Helmert 1906\"\n};\n\nexports.hough = {\n a: 6378270.0,\n rf: 297.0,\n ellipseName: \"Hough\"\n};\n\nexports.intl = {\n a: 6378388.0,\n rf: 297.0,\n ellipseName: \"International 1909 (Hayford)\"\n};\n\nexports.kaula = {\n a: 6378163.0,\n rf: 298.24,\n ellipseName: \"Kaula 1961\"\n};\n\nexports.lerch = {\n a: 6378139.0,\n rf: 298.257,\n ellipseName: \"Lerch 1979\"\n};\n\nexports.mprts = {\n a: 6397300.0,\n rf: 191.0,\n ellipseName: \"Maupertius 1738\"\n};\n\nexports.new_intl = {\n a: 6378157.5,\n b: 6356772.2,\n ellipseName: \"New International 1967\"\n};\n\nexports.plessis = {\n a: 6376523.0,\n rf: 6355863.0,\n ellipseName: \"Plessis 1817 (France)\"\n};\n\nexports.krass = {\n a: 6378245.0,\n rf: 298.3,\n ellipseName: \"Krassovsky, 1942\"\n};\n\nexports.SEasia = {\n a: 6378155.0,\n b: 6356773.3205,\n ellipseName: \"Southeast Asia\"\n};\n\nexports.walbeck = {\n a: 6376896.0,\n b: 6355834.8467,\n ellipseName: \"Walbeck\"\n};\n\nexports.WGS60 = {\n a: 6378165.0,\n rf: 298.3,\n ellipseName: \"WGS 60\"\n};\n\nexports.WGS66 = {\n a: 6378145.0,\n rf: 298.25,\n ellipseName: \"WGS 66\"\n};\n\nexports.WGS7 = {\n a: 6378135.0,\n rf: 298.26,\n ellipseName: \"WGS 72\"\n};\n\nexport var WGS84 = exports.WGS84 = {\n a: 6378137.0,\n rf: 298.257223563,\n ellipseName: \"WGS 84\"\n};\n\nexports.sphere = {\n a: 6370997.0,\n b: 6370997.0,\n ellipseName: \"Normal Sphere (r=6370997)\"\n};\n","var exports = {};\nexport {exports as default};\nexports.wgs84 = {\n towgs84: \"0,0,0\",\n ellipse: \"WGS84\",\n datumName: \"WGS84\"\n};\n\nexports.ch1903 = {\n towgs84: \"674.374,15.056,405.346\",\n ellipse: \"bessel\",\n datumName: \"swiss\"\n};\n\nexports.ggrs87 = {\n towgs84: \"-199.87,74.79,246.62\",\n ellipse: \"GRS80\",\n datumName: \"Greek_Geodetic_Reference_System_1987\"\n};\n\nexports.nad83 = {\n towgs84: \"0,0,0\",\n ellipse: \"GRS80\",\n datumName: \"North_American_Datum_1983\"\n};\n\nexports.nad27 = {\n nadgrids: \"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat\",\n ellipse: \"clrk66\",\n datumName: \"North_American_Datum_1927\"\n};\n\nexports.potsdam = {\n towgs84: \"598.1,73.7,418.2,0.202,0.045,-2.455,6.7\",\n ellipse: \"bessel\",\n datumName: \"Potsdam Rauenberg 1950 DHDN\"\n};\n\nexports.carthage = {\n towgs84: \"-263.0,6.0,431.0\",\n ellipse: \"clark80\",\n datumName: \"Carthage 1934 Tunisia\"\n};\n\nexports.hermannskogel = {\n towgs84: \"577.326,90.129,463.919,5.137,1.474,5.297,2.4232\",\n ellipse: \"bessel\",\n datumName: \"Hermannskogel\"\n};\n\nexports.osni52 = {\n towgs84: \"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",\n ellipse: \"airy\",\n datumName: \"Irish National\"\n};\n\nexports.ire65 = {\n towgs84: \"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",\n ellipse: \"mod_airy\",\n datumName: \"Ireland 1965\"\n};\n\nexports.rassadiran = {\n towgs84: \"-133.63,-157.5,-158.62\",\n ellipse: \"intl\",\n datumName: \"Rassadiran\"\n};\n\nexports.nzgd49 = {\n towgs84: \"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993\",\n ellipse: \"intl\",\n datumName: \"New Zealand Geodetic Datum 1949\"\n};\n\nexports.osgb36 = {\n towgs84: \"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894\",\n ellipse: \"airy\",\n datumName: \"Airy 1830\"\n};\n\nexports.s_jtsk = {\n towgs84: \"589,76,480\",\n ellipse: 'bessel',\n datumName: 'S-JTSK (Ferro)'\n};\n\nexports.beduaram = {\n towgs84: '-106,-87,188',\n ellipse: 'clrk80',\n datumName: 'Beduaram'\n};\n\nexports.gunung_segara = {\n towgs84: '-403,684,41',\n ellipse: 'bessel',\n datumName: 'Gunung Segara Jakarta'\n};\n\nexports.rnb72 = {\n towgs84: \"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1\",\n ellipse: \"intl\",\n datumName: \"Reseau National Belge 1972\"\n};\n","import {PJD_3PARAM, PJD_7PARAM, PJD_GRIDSHIFT, PJD_WGS84, PJD_NODATUM, SEC_TO_RAD} from './constants/values';\n\nfunction datum(datumCode, datum_params, a, b, es, ep2, nadgrids) {\n var out = {};\n\n if (datumCode === undefined || datumCode === 'none') {\n out.datum_type = PJD_NODATUM;\n } else {\n out.datum_type = PJD_WGS84;\n }\n\n if (datum_params) {\n out.datum_params = datum_params.map(parseFloat);\n if (out.datum_params[0] !== 0 || out.datum_params[1] !== 0 || out.datum_params[2] !== 0) {\n out.datum_type = PJD_3PARAM;\n }\n if (out.datum_params.length > 3) {\n if (out.datum_params[3] !== 0 || out.datum_params[4] !== 0 || out.datum_params[5] !== 0 || out.datum_params[6] !== 0) {\n out.datum_type = PJD_7PARAM;\n out.datum_params[3] *= SEC_TO_RAD;\n out.datum_params[4] *= SEC_TO_RAD;\n out.datum_params[5] *= SEC_TO_RAD;\n out.datum_params[6] = (out.datum_params[6] / 1000000.0) + 1.0;\n }\n }\n }\n\n if (nadgrids) {\n out.datum_type = PJD_GRIDSHIFT;\n out.grids = nadgrids;\n }\n out.a = a; //datum object also uses these values\n out.b = b;\n out.es = es;\n out.ep2 = ep2;\n return out;\n}\n\nexport default datum;\n","/**\n * Resources for details of NTv2 file formats:\n * - https://web.archive.org/web/20140127204822if_/http://www.mgs.gov.on.ca:80/stdprodconsume/groups/content/@mgs/@iandit/documents/resourcelist/stel02_047447.pdf\n * - http://mimaka.com/help/gs/html/004_NTV2%20Data%20Format.htm\n */\n\nvar loadedNadgrids = {};\n\n/**\n * Load a binary NTv2 file (.gsb) to a key that can be used in a proj string like +nadgrids=. Pass the NTv2 file\n * as an ArrayBuffer.\n */\nexport default function nadgrid(key, data) {\n var view = new DataView(data);\n var isLittleEndian = detectLittleEndian(view);\n var header = readHeader(view, isLittleEndian);\n if (header.nSubgrids > 1) {\n console.log('Only single NTv2 subgrids are currently supported, subsequent sub grids are ignored');\n }\n var subgrids = readSubgrids(view, header, isLittleEndian);\n var nadgrid = {header: header, subgrids: subgrids};\n loadedNadgrids[key] = nadgrid;\n return nadgrid;\n}\n\n/**\n * Given a proj4 value for nadgrids, return an array of loaded grids\n */\nexport function getNadgrids(nadgrids) {\n // Format details: http://proj.maptools.org/gen_parms.html\n if (nadgrids === undefined) { return null; }\n var grids = nadgrids.split(',');\n return grids.map(parseNadgridString);\n}\n\nfunction parseNadgridString(value) {\n if (value.length === 0) {\n return null;\n }\n var optional = value[0] === '@';\n if (optional) {\n value = value.slice(1);\n }\n if (value === 'null') {\n return {name: 'null', mandatory: !optional, grid: null, isNull: true};\n }\n return {\n name: value,\n mandatory: !optional,\n grid: loadedNadgrids[value] || null,\n isNull: false\n };\n}\n\nfunction secondsToRadians(seconds) {\n return (seconds / 3600) * Math.PI / 180;\n}\n\nfunction detectLittleEndian(view) {\n var nFields = view.getInt32(8, false);\n if (nFields === 11) {\n return false;\n }\n nFields = view.getInt32(8, true);\n if (nFields !== 11) {\n console.warn('Failed to detect nadgrid endian-ness, defaulting to little-endian');\n }\n return true;\n}\n\nfunction readHeader(view, isLittleEndian) {\n return {\n nFields: view.getInt32(8, isLittleEndian),\n nSubgridFields: view.getInt32(24, isLittleEndian),\n nSubgrids: view.getInt32(40, isLittleEndian),\n shiftType: decodeString(view, 56, 56 + 8).trim(),\n fromSemiMajorAxis: view.getFloat64(120, isLittleEndian),\n fromSemiMinorAxis: view.getFloat64(136, isLittleEndian),\n toSemiMajorAxis: view.getFloat64(152, isLittleEndian),\n toSemiMinorAxis: view.getFloat64(168, isLittleEndian),\n };\n}\n\nfunction decodeString(view, start, end) {\n return String.fromCharCode.apply(null, new Uint8Array(view.buffer.slice(start, end)));\n}\n\nfunction readSubgrids(view, header, isLittleEndian) {\n var gridOffset = 176;\n var grids = [];\n for (var i = 0; i < header.nSubgrids; i++) {\n var subHeader = readGridHeader(view, gridOffset, isLittleEndian);\n var nodes = readGridNodes(view, gridOffset, subHeader, isLittleEndian);\n var lngColumnCount = Math.round(\n 1 + (subHeader.upperLongitude - subHeader.lowerLongitude) / subHeader.longitudeInterval);\n var latColumnCount = Math.round(\n 1 + (subHeader.upperLatitude - subHeader.lowerLatitude) / subHeader.latitudeInterval);\n // Proj4 operates on radians whereas the coordinates are in seconds in the grid\n grids.push({\n ll: [secondsToRadians(subHeader.lowerLongitude), secondsToRadians(subHeader.lowerLatitude)],\n del: [secondsToRadians(subHeader.longitudeInterval), secondsToRadians(subHeader.latitudeInterval)],\n lim: [lngColumnCount, latColumnCount],\n count: subHeader.gridNodeCount,\n cvs: mapNodes(nodes)\n });\n }\n return grids;\n}\n\nfunction mapNodes(nodes) {\n return nodes.map(function (r) {return [secondsToRadians(r.longitudeShift), secondsToRadians(r.latitudeShift)];});\n}\n\nfunction readGridHeader(view, offset, isLittleEndian) {\n return {\n name: decodeString(view, offset + 8, offset + 16).trim(),\n parent: decodeString(view, offset + 24, offset + 24 + 8).trim(),\n lowerLatitude: view.getFloat64(offset + 72, isLittleEndian),\n upperLatitude: view.getFloat64(offset + 88, isLittleEndian),\n lowerLongitude: view.getFloat64(offset + 104, isLittleEndian),\n upperLongitude: view.getFloat64(offset + 120, isLittleEndian),\n latitudeInterval: view.getFloat64(offset + 136, isLittleEndian),\n longitudeInterval: view.getFloat64(offset + 152, isLittleEndian),\n gridNodeCount: view.getInt32(offset + 168, isLittleEndian)\n };\n}\n\nfunction readGridNodes(view, offset, gridHeader, isLittleEndian) {\n var nodesOffset = offset + 176;\n var gridRecordLength = 16;\n var gridShiftRecords = [];\n for (var i = 0; i < gridHeader.gridNodeCount; i++) {\n var record = {\n latitudeShift: view.getFloat32(nodesOffset + i * gridRecordLength, isLittleEndian),\n longitudeShift: view.getFloat32(nodesOffset + i * gridRecordLength + 4, isLittleEndian),\n latitudeAccuracy: view.getFloat32(nodesOffset + i * gridRecordLength + 8, isLittleEndian),\n longitudeAccuracy: view.getFloat32(nodesOffset + i * gridRecordLength + 12, isLittleEndian),\n };\n gridShiftRecords.push(record);\n }\n return gridShiftRecords;\n}\n","import parseCode from './parseCode';\nimport extend from './extend';\nimport projections from './projections';\nimport {sphere as dc_sphere, eccentricity as dc_eccentricity} from './deriveConstants';\nimport Datum from './constants/Datum';\nimport datum from './datum';\nimport match from './match';\nimport {getNadgrids} from \"./nadgrid\";\n\nfunction Projection(srsCode,callback) {\n if (!(this instanceof Projection)) {\n return new Projection(srsCode);\n }\n callback = callback || function(error){\n if(error){\n throw error;\n }\n };\n var json = parseCode(srsCode);\n if(typeof json !== 'object'){\n callback(srsCode);\n return;\n }\n var ourProj = Projection.projections.get(json.projName);\n if(!ourProj){\n callback(srsCode);\n return;\n }\n if (json.datumCode && json.datumCode !== 'none') {\n var datumDef = match(Datum, json.datumCode);\n if (datumDef) {\n json.datum_params = json.datum_params || (datumDef.towgs84 ? datumDef.towgs84.split(',') : null);\n json.ellps = datumDef.ellipse;\n json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode;\n }\n }\n json.k0 = json.k0 || 1.0;\n json.axis = json.axis || 'enu';\n json.ellps = json.ellps || 'wgs84';\n json.lat1 = json.lat1 || json.lat0; // Lambert_Conformal_Conic_1SP, for example, needs this\n\n var sphere_ = dc_sphere(json.a, json.b, json.rf, json.ellps, json.sphere);\n var ecc = dc_eccentricity(sphere_.a, sphere_.b, sphere_.rf, json.R_A);\n var nadgrids = getNadgrids(json.nadgrids);\n var datumObj = json.datum || datum(json.datumCode, json.datum_params, sphere_.a, sphere_.b, ecc.es, ecc.ep2,\n nadgrids);\n\n extend(this, json); // transfer everything over from the projection because we don't know what we'll need\n extend(this, ourProj); // transfer all the methods from the projection\n\n // copy the 4 things over we calculated in deriveConstants.sphere\n this.a = sphere_.a;\n this.b = sphere_.b;\n this.rf = sphere_.rf;\n this.sphere = sphere_.sphere;\n\n // copy the 3 things we calculated in deriveConstants.eccentricity\n this.es = ecc.es;\n this.e = ecc.e;\n this.ep2 = ecc.ep2;\n\n // add in the datum object\n this.datum = datumObj;\n\n // init the projection\n this.init();\n\n // legecy callback from back in the day when it went to spatialreference.org\n callback(null, this);\n\n}\nProjection.projections = projections;\nProjection.projections.start();\nexport default Projection;\n","import {SIXTH, RA4, RA6, EPSLN} from './constants/values';\nimport {default as Ellipsoid, WGS84} from './constants/Ellipsoid';\nimport match from './match';\n\nexport function eccentricity(a, b, rf, R_A) {\n var a2 = a * a; // used in geocentric\n var b2 = b * b; // used in geocentric\n var es = (a2 - b2) / a2; // e ^ 2\n var e = 0;\n if (R_A) {\n a *= 1 - es * (SIXTH + es * (RA4 + es * RA6));\n a2 = a * a;\n es = 0;\n } else {\n e = Math.sqrt(es); // eccentricity\n }\n var ep2 = (a2 - b2) / b2; // used in geocentric\n return {\n es: es,\n e: e,\n ep2: ep2\n };\n}\nexport function sphere(a, b, rf, ellps, sphere) {\n if (!a) { // do we have an ellipsoid?\n var ellipse = match(Ellipsoid, ellps);\n if (!ellipse) {\n ellipse = WGS84;\n }\n a = ellipse.a;\n b = ellipse.b;\n rf = ellipse.rf;\n }\n\n if (rf && !b) {\n b = (1.0 - 1.0 / rf) * a;\n }\n if (rf === 0 || Math.abs(a - b) < EPSLN) {\n sphere = true;\n b = a;\n }\n return {\n a: a,\n b: b,\n rf: rf,\n sphere: sphere\n };\n}\n","'use strict';\nimport {PJD_3PARAM, PJD_7PARAM, HALF_PI} from './constants/values';\nexport function compareDatums(source, dest) {\n if (source.datum_type !== dest.datum_type) {\n return false; // false, datums are not equal\n } else if (source.a !== dest.a || Math.abs(source.es - dest.es) > 0.000000000050) {\n // the tolerance for es is to ensure that GRS80 and WGS84\n // are considered identical\n return false;\n } else if (source.datum_type === PJD_3PARAM) {\n return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2]);\n } else if (source.datum_type === PJD_7PARAM) {\n return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2] && source.datum_params[3] === dest.datum_params[3] && source.datum_params[4] === dest.datum_params[4] && source.datum_params[5] === dest.datum_params[5] && source.datum_params[6] === dest.datum_params[6]);\n } else {\n return true; // datums are equal\n }\n} // cs_compare_datums()\n\n/*\n * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates\n * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),\n * according to the current ellipsoid parameters.\n *\n * Latitude : Geodetic latitude in radians (input)\n * Longitude : Geodetic longitude in radians (input)\n * Height : Geodetic height, in meters (input)\n * X : Calculated Geocentric X coordinate, in meters (output)\n * Y : Calculated Geocentric Y coordinate, in meters (output)\n * Z : Calculated Geocentric Z coordinate, in meters (output)\n *\n */\nexport function geodeticToGeocentric(p, es, a) {\n var Longitude = p.x;\n var Latitude = p.y;\n var Height = p.z ? p.z : 0; //Z value not always supplied\n\n var Rn; /* Earth radius at location */\n var Sin_Lat; /* Math.sin(Latitude) */\n var Sin2_Lat; /* Square of Math.sin(Latitude) */\n var Cos_Lat; /* Math.cos(Latitude) */\n\n /*\n ** Don't blow up if Latitude is just a little out of the value\n ** range as it may just be a rounding issue. Also removed longitude\n ** test, it should be wrapped by Math.cos() and Math.sin(). NFW for PROJ.4, Sep/2001.\n */\n if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) {\n Latitude = -HALF_PI;\n } else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) {\n Latitude = HALF_PI;\n } else if (Latitude < -HALF_PI) {\n /* Latitude out of range */\n //..reportError('geocent:lat out of range:' + Latitude);\n return { x: -Infinity, y: -Infinity, z: p.z };\n } else if (Latitude > HALF_PI) {\n /* Latitude out of range */\n return { x: Infinity, y: Infinity, z: p.z };\n }\n\n if (Longitude > Math.PI) {\n Longitude -= (2 * Math.PI);\n }\n Sin_Lat = Math.sin(Latitude);\n Cos_Lat = Math.cos(Latitude);\n Sin2_Lat = Sin_Lat * Sin_Lat;\n Rn = a / (Math.sqrt(1.0e0 - es * Sin2_Lat));\n return {\n x: (Rn + Height) * Cos_Lat * Math.cos(Longitude),\n y: (Rn + Height) * Cos_Lat * Math.sin(Longitude),\n z: ((Rn * (1 - es)) + Height) * Sin_Lat\n };\n} // cs_geodetic_to_geocentric()\n\nexport function geocentricToGeodetic(p, es, a, b) {\n /* local defintions and variables */\n /* end-criterium of loop, accuracy of sin(Latitude) */\n var genau = 1e-12;\n var genau2 = (genau * genau);\n var maxiter = 30;\n\n var P; /* distance between semi-minor axis and location */\n var RR; /* distance between center and location */\n var CT; /* sin of geocentric latitude */\n var ST; /* cos of geocentric latitude */\n var RX;\n var RK;\n var RN; /* Earth radius at location */\n var CPHI0; /* cos of start or old geodetic latitude in iterations */\n var SPHI0; /* sin of start or old geodetic latitude in iterations */\n var CPHI; /* cos of searched geodetic latitude */\n var SPHI; /* sin of searched geodetic latitude */\n var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */\n var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */\n\n var X = p.x;\n var Y = p.y;\n var Z = p.z ? p.z : 0.0; //Z value not always supplied\n var Longitude;\n var Latitude;\n var Height;\n\n P = Math.sqrt(X * X + Y * Y);\n RR = Math.sqrt(X * X + Y * Y + Z * Z);\n\n /* special cases for latitude and longitude */\n if (P / a < genau) {\n\n /* special case, if P=0. (X=0., Y=0.) */\n Longitude = 0.0;\n\n /* if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis\n * of ellipsoid (=center of mass), Latitude becomes PI/2 */\n if (RR / a < genau) {\n Latitude = HALF_PI;\n Height = -b;\n return {\n x: p.x,\n y: p.y,\n z: p.z\n };\n }\n } else {\n /* ellipsoidal (geodetic) longitude\n * interval: -PI < Longitude <= +PI */\n Longitude = Math.atan2(Y, X);\n }\n\n /* --------------------------------------------------------------\n * Following iterative algorithm was developped by\n * \"Institut for Erdmessung\", University of Hannover, July 1988.\n * Internet: www.ife.uni-hannover.de\n * Iterative computation of CPHI,SPHI and Height.\n * Iteration of CPHI and SPHI to 10**-12 radian resp.\n * 2*10**-7 arcsec.\n * --------------------------------------------------------------\n */\n CT = Z / RR;\n ST = P / RR;\n RX = 1.0 / Math.sqrt(1.0 - es * (2.0 - es) * ST * ST);\n CPHI0 = ST * (1.0 - es) * RX;\n SPHI0 = CT * RX;\n iter = 0;\n\n /* loop to find sin(Latitude) resp. Latitude\n * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */\n do {\n iter++;\n RN = a / Math.sqrt(1.0 - es * SPHI0 * SPHI0);\n\n /* ellipsoidal (geodetic) height */\n Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - es * SPHI0 * SPHI0);\n\n RK = es * RN / (RN + Height);\n RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST);\n CPHI = ST * (1.0 - RK) * RX;\n SPHI = CT * RX;\n SDPHI = SPHI * CPHI0 - CPHI * SPHI0;\n CPHI0 = CPHI;\n SPHI0 = SPHI;\n }\n while (SDPHI * SDPHI > genau2 && iter < maxiter);\n\n /* ellipsoidal (geodetic) latitude */\n Latitude = Math.atan(SPHI / Math.abs(CPHI));\n return {\n x: Longitude,\n y: Latitude,\n z: Height\n };\n} // cs_geocentric_to_geodetic()\n\n/****************************************************************/\n// pj_geocentic_to_wgs84( p )\n// p = point to transform in geocentric coordinates (x,y,z)\n\n\n/** point object, nothing fancy, just allows values to be\n passed back and forth by reference rather than by value.\n Other point classes may be used as long as they have\n x and y properties, which will get modified in the transform method.\n*/\nexport function geocentricToWgs84(p, datum_type, datum_params) {\n\n if (datum_type === PJD_3PARAM) {\n // if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: p.x + datum_params[0],\n y: p.y + datum_params[1],\n z: p.z + datum_params[2],\n };\n } else if (datum_type === PJD_7PARAM) {\n var Dx_BF = datum_params[0];\n var Dy_BF = datum_params[1];\n var Dz_BF = datum_params[2];\n var Rx_BF = datum_params[3];\n var Ry_BF = datum_params[4];\n var Rz_BF = datum_params[5];\n var M_BF = datum_params[6];\n // if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF,\n y: M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF,\n z: M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF\n };\n }\n} // cs_geocentric_to_wgs84\n\n/****************************************************************/\n// pj_geocentic_from_wgs84()\n// coordinate system definition,\n// point to transform in geocentric coordinates (x,y,z)\nexport function geocentricFromWgs84(p, datum_type, datum_params) {\n\n if (datum_type === PJD_3PARAM) {\n //if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: p.x - datum_params[0],\n y: p.y - datum_params[1],\n z: p.z - datum_params[2],\n };\n\n } else if (datum_type === PJD_7PARAM) {\n var Dx_BF = datum_params[0];\n var Dy_BF = datum_params[1];\n var Dz_BF = datum_params[2];\n var Rx_BF = datum_params[3];\n var Ry_BF = datum_params[4];\n var Rz_BF = datum_params[5];\n var M_BF = datum_params[6];\n var x_tmp = (p.x - Dx_BF) / M_BF;\n var y_tmp = (p.y - Dy_BF) / M_BF;\n var z_tmp = (p.z - Dz_BF) / M_BF;\n //if( x[io] === HUGE_VAL )\n // continue;\n\n return {\n x: x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp,\n y: -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp,\n z: Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp\n };\n } //cs_geocentric_from_wgs84()\n}\n","import {\n PJD_3PARAM,\n PJD_7PARAM,\n PJD_GRIDSHIFT,\n PJD_NODATUM,\n R2D,\n SRS_WGS84_ESQUARED,\n SRS_WGS84_SEMIMAJOR, SRS_WGS84_SEMIMINOR\n} from './constants/values';\n\nimport {geodeticToGeocentric, geocentricToGeodetic, geocentricToWgs84, geocentricFromWgs84, compareDatums} from './datumUtils';\nimport adjust_lon from \"./common/adjust_lon\";\nfunction checkParams(type) {\n return (type === PJD_3PARAM || type === PJD_7PARAM);\n}\n\nexport default function(source, dest, point) {\n // Short cut if the datums are identical.\n if (compareDatums(source, dest)) {\n return point; // in this case, zero is sucess,\n // whereas cs_compare_datums returns 1 to indicate TRUE\n // confusing, should fix this\n }\n\n // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest\n if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) {\n return point;\n }\n\n // If this datum requires grid shifts, then apply it to geodetic coordinates.\n var source_a = source.a;\n var source_es = source.es;\n if (source.datum_type === PJD_GRIDSHIFT) {\n var gridShiftCode = applyGridShift(source, false, point);\n if (gridShiftCode !== 0) {\n return undefined;\n }\n source_a = SRS_WGS84_SEMIMAJOR;\n source_es = SRS_WGS84_ESQUARED;\n }\n\n var dest_a = dest.a;\n var dest_b = dest.b;\n var dest_es = dest.es;\n if (dest.datum_type === PJD_GRIDSHIFT) {\n dest_a = SRS_WGS84_SEMIMAJOR;\n dest_b = SRS_WGS84_SEMIMINOR;\n dest_es = SRS_WGS84_ESQUARED;\n }\n\n // Do we need to go through geocentric coordinates?\n if (source_es === dest_es && source_a === dest_a && !checkParams(source.datum_type) && !checkParams(dest.datum_type)) {\n return point;\n }\n\n // Convert to geocentric coordinates.\n point = geodeticToGeocentric(point, source_es, source_a);\n // Convert between datums\n if (checkParams(source.datum_type)) {\n point = geocentricToWgs84(point, source.datum_type, source.datum_params);\n }\n if (checkParams(dest.datum_type)) {\n point = geocentricFromWgs84(point, dest.datum_type, dest.datum_params);\n }\n point = geocentricToGeodetic(point, dest_es, dest_a, dest_b);\n\n if (dest.datum_type === PJD_GRIDSHIFT) {\n var destGridShiftResult = applyGridShift(dest, true, point);\n if (destGridShiftResult !== 0) {\n return undefined;\n }\n }\n\n return point;\n}\n\nexport function applyGridShift(source, inverse, point) {\n if (source.grids === null || source.grids.length === 0) {\n console.log('Grid shift grids not found');\n return -1;\n }\n var input = {x: -point.x, y: point.y};\n var output = {x: Number.NaN, y: Number.NaN};\n var onlyMandatoryGrids = false;\n var attemptedGrids = [];\n for (var i = 0; i < source.grids.length; i++) {\n var grid = source.grids[i];\n attemptedGrids.push(grid.name);\n if (grid.isNull) {\n output = input;\n break;\n }\n onlyMandatoryGrids = grid.mandatory;\n if (grid.grid === null) {\n if (grid.mandatory) {\n console.log(\"Unable to find mandatory grid '\" + grid.name + \"'\");\n return -1;\n }\n continue;\n }\n var subgrid = grid.grid.subgrids[0];\n // skip tables that don't match our point at all\n var epsilon = (Math.abs(subgrid.del[1]) + Math.abs(subgrid.del[0])) / 10000.0;\n var minX = subgrid.ll[0] - epsilon;\n var minY = subgrid.ll[1] - epsilon;\n var maxX = subgrid.ll[0] + (subgrid.lim[0] - 1) * subgrid.del[0] + epsilon;\n var maxY = subgrid.ll[1] + (subgrid.lim[1] - 1) * subgrid.del[1] + epsilon;\n if (minY > input.y || minX > input.x || maxY < input.y || maxX < input.x ) {\n continue;\n }\n output = applySubgridShift(input, inverse, subgrid);\n if (!isNaN(output.x)) {\n break;\n }\n }\n if (isNaN(output.x)) {\n console.log(\"Failed to find a grid shift table for location '\"+\n -input.x * R2D + \" \" + input.y * R2D + \" tried: '\" + attemptedGrids + \"'\");\n return -1;\n }\n point.x = -output.x;\n point.y = output.y;\n return 0;\n}\n\nfunction applySubgridShift(pin, inverse, ct) {\n var val = {x: Number.NaN, y: Number.NaN};\n if (isNaN(pin.x)) { return val; }\n var tb = {x: pin.x, y: pin.y};\n tb.x -= ct.ll[0];\n tb.y -= ct.ll[1];\n tb.x = adjust_lon(tb.x - Math.PI) + Math.PI;\n var t = nadInterpolate(tb, ct);\n if (inverse) {\n if (isNaN(t.x)) {\n return val;\n }\n t.x = tb.x - t.x;\n t.y = tb.y - t.y;\n var i = 9, tol = 1e-12;\n var dif, del;\n do {\n del = nadInterpolate(t, ct);\n if (isNaN(del.x)) {\n console.log(\"Inverse grid shift iteration failed, presumably at grid edge. Using first approximation.\");\n break;\n }\n dif = {x: tb.x - (del.x + t.x), y: tb.y - (del.y + t.y)};\n t.x += dif.x;\n t.y += dif.y;\n } while (i-- && Math.abs(dif.x) > tol && Math.abs(dif.y) > tol);\n if (i < 0) {\n console.log(\"Inverse grid shift iterator failed to converge.\");\n return val;\n }\n val.x = adjust_lon(t.x + ct.ll[0]);\n val.y = t.y + ct.ll[1];\n } else {\n if (!isNaN(t.x)) {\n val.x = pin.x + t.x;\n val.y = pin.y + t.y;\n }\n }\n return val;\n}\n\nfunction nadInterpolate(pin, ct) {\n var t = {x: pin.x / ct.del[0], y: pin.y / ct.del[1]};\n var indx = {x: Math.floor(t.x), y: Math.floor(t.y)};\n var frct = {x: t.x - 1.0 * indx.x, y: t.y - 1.0 * indx.y};\n var val= {x: Number.NaN, y: Number.NaN};\n var inx;\n if (indx.x < 0 || indx.x >= ct.lim[0]) {\n return val;\n }\n if (indx.y < 0 || indx.y >= ct.lim[1]) {\n return val;\n }\n inx = (indx.y * ct.lim[0]) + indx.x;\n var f00 = {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n inx++;\n var f10= {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n inx += ct.lim[0];\n var f11 = {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n inx--;\n var f01 = {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n var m11 = frct.x * frct.y, m10 = frct.x * (1.0 - frct.y),\n m00 = (1.0 - frct.x) * (1.0 - frct.y), m01 = (1.0 - frct.x) * frct.y;\n val.x = (m00 * f00.x + m10 * f10.x + m01 * f01.x + m11 * f11.x);\n val.y = (m00 * f00.y + m10 * f10.y + m01 * f01.y + m11 * f11.y);\n return val;\n}\n","export default function(crs, denorm, point) {\n var xin = point.x,\n yin = point.y,\n zin = point.z || 0.0;\n var v, t, i;\n var out = {};\n for (i = 0; i < 3; i++) {\n if (denorm && i === 2 && point.z === undefined) {\n continue;\n }\n if (i === 0) {\n v = xin;\n if (\"ew\".indexOf(crs.axis[i]) !== -1) {\n t = 'x';\n } else {\n t = 'y';\n }\n\n }\n else if (i === 1) {\n v = yin;\n if (\"ns\".indexOf(crs.axis[i]) !== -1) {\n t = 'y';\n } else {\n t = 'x';\n }\n }\n else {\n v = zin;\n t = 'z';\n }\n switch (crs.axis[i]) {\n case 'e':\n out[t] = v;\n break;\n case 'w':\n out[t] = -v;\n break;\n case 'n':\n out[t] = v;\n break;\n case 's':\n out[t] = -v;\n break;\n case 'u':\n if (point[t] !== undefined) {\n out.z = v;\n }\n break;\n case 'd':\n if (point[t] !== undefined) {\n out.z = -v;\n }\n break;\n default:\n //console.log(\"ERROR: unknow axis (\"+crs.axis[i]+\") - check definition of \"+crs.projName);\n return null;\n }\n }\n return out;\n}\n","export default function (array){\n var out = {\n x: array[0],\n y: array[1]\n };\n if (array.length>2) {\n out.z = array[2];\n }\n if (array.length>3) {\n out.m = array[3];\n }\n return out;\n}","export default function (point) {\n checkCoord(point.x);\n checkCoord(point.y);\n}\nfunction checkCoord(num) {\n if (typeof Number.isFinite === 'function') {\n if (Number.isFinite(num)) {\n return;\n }\n throw new TypeError('coordinates must be finite numbers');\n }\n if (typeof num !== 'number' || num !== num || !isFinite(num)) {\n throw new TypeError('coordinates must be finite numbers');\n }\n}\n","import {D2R, R2D, PJD_3PARAM, PJD_7PARAM} from './constants/values';\nimport datum_transform from './datum_transform';\nimport adjust_axis from './adjust_axis';\nimport proj from './Proj';\nimport toPoint from './common/toPoint';\nimport checkSanity from './checkSanity';\n\nfunction checkNotWGS(source, dest) {\n return ((source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM) && dest.datumCode !== 'WGS84') || ((dest.datum.datum_type === PJD_3PARAM || dest.datum.datum_type === PJD_7PARAM) && source.datumCode !== 'WGS84');\n}\n\nexport default function transform(source, dest, point, enforceAxis) {\n var wgs84;\n if (Array.isArray(point)) {\n point = toPoint(point);\n }\n checkSanity(point);\n // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84\n if (source.datum && dest.datum && checkNotWGS(source, dest)) {\n wgs84 = new proj('WGS84');\n point = transform(source, wgs84, point, enforceAxis);\n source = wgs84;\n }\n // DGR, 2010/11/12\n if (enforceAxis && source.axis !== 'enu') {\n point = adjust_axis(source, false, point);\n }\n // Transform source points to long/lat, if they aren't already.\n if (source.projName === 'longlat') {\n point = {\n x: point.x * D2R,\n y: point.y * D2R,\n z: point.z || 0\n };\n } else {\n if (source.to_meter) {\n point = {\n x: point.x * source.to_meter,\n y: point.y * source.to_meter,\n z: point.z || 0\n };\n }\n point = source.inverse(point); // Convert Cartesian to longlat\n if (!point) {\n return;\n }\n }\n // Adjust for the prime meridian if necessary\n if (source.from_greenwich) {\n point.x += source.from_greenwich;\n }\n\n // Convert datums if needed, and if possible.\n point = datum_transform(source.datum, dest.datum, point);\n if (!point) {\n return;\n }\n\n // Adjust for the prime meridian if necessary\n if (dest.from_greenwich) {\n point = {\n x: point.x - dest.from_greenwich,\n y: point.y,\n z: point.z || 0\n };\n }\n\n if (dest.projName === 'longlat') {\n // convert radians to decimal degrees\n point = {\n x: point.x * R2D,\n y: point.y * R2D,\n z: point.z || 0\n };\n } else { // else project\n point = dest.forward(point);\n if (dest.to_meter) {\n point = {\n x: point.x / dest.to_meter,\n y: point.y / dest.to_meter,\n z: point.z || 0\n };\n }\n }\n\n // DGR, 2010/11/12\n if (enforceAxis && dest.axis !== 'enu') {\n return adjust_axis(dest, true, point);\n }\n\n return point;\n}\n","import proj from './Proj';\nimport transform from './transform';\nvar wgs84 = proj('WGS84');\n\nfunction transformer(from, to, coords, enforceAxis) {\n var transformedArray, out, keys;\n if (Array.isArray(coords)) {\n transformedArray = transform(from, to, coords, enforceAxis) || {x: NaN, y: NaN};\n if (coords.length > 2) {\n if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) {\n if (typeof transformedArray.z === 'number') {\n return [transformedArray.x, transformedArray.y, transformedArray.z].concat(coords.splice(3));\n } else {\n return [transformedArray.x, transformedArray.y, coords[2]].concat(coords.splice(3));\n }\n } else {\n return [transformedArray.x, transformedArray.y].concat(coords.splice(2));\n }\n } else {\n return [transformedArray.x, transformedArray.y];\n }\n } else {\n out = transform(from, to, coords, enforceAxis);\n keys = Object.keys(coords);\n if (keys.length === 2) {\n return out;\n }\n keys.forEach(function (key) {\n if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) {\n if (key === 'x' || key === 'y' || key === 'z') {\n return;\n }\n } else {\n if (key === 'x' || key === 'y') {\n return;\n }\n }\n out[key] = coords[key];\n });\n return out;\n }\n}\n\nfunction checkProj(item) {\n if (item instanceof proj) {\n return item;\n }\n if (item.oProj) {\n return item.oProj;\n }\n return proj(item);\n}\n\nfunction proj4(fromProj, toProj, coord) {\n fromProj = checkProj(fromProj);\n var single = false;\n var obj;\n if (typeof toProj === 'undefined') {\n toProj = fromProj;\n fromProj = wgs84;\n single = true;\n } else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) {\n coord = toProj;\n toProj = fromProj;\n fromProj = wgs84;\n single = true;\n }\n toProj = checkProj(toProj);\n if (coord) {\n return transformer(fromProj, toProj, coord);\n } else {\n obj = {\n forward: function (coords, enforceAxis) {\n return transformer(fromProj, toProj, coords, enforceAxis);\n },\n inverse: function (coords, enforceAxis) {\n return transformer(toProj, fromProj, coords, enforceAxis);\n }\n };\n if (single) {\n obj.oProj = toProj;\n }\n return obj;\n }\n}\nexport default proj4;","\n\n\n/**\n * UTM zones are grouped, and assigned to one of a group of 6\n * sets.\n *\n * {int} @private\n */\nvar NUM_100K_SETS = 6;\n\n/**\n * The column letters (for easting) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS';\n\n/**\n * The row letters (for northing) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_ROW_LETTERS = 'AFAFAF';\n\nvar A = 65; // A\nvar I = 73; // I\nvar O = 79; // O\nvar V = 86; // V\nvar Z = 90; // Z\nexport default {\n forward: forward,\n inverse: inverse,\n toPoint: toPoint\n};\n/**\n * Conversion of lat/lon to MGRS.\n *\n * @param {object} ll Object literal with lat and lon properties on a\n * WGS84 ellipsoid.\n * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for\n * 100 m, 2 for 1000 m or 1 for 10000 m). Optional, default is 5.\n * @return {string} the MGRS string for the given location and accuracy.\n */\nexport function forward(ll, accuracy) {\n accuracy = accuracy || 5; // default accuracy 1m\n return encode(LLtoUTM({\n lat: ll[1],\n lon: ll[0]\n }), accuracy);\n};\n\n/**\n * Conversion of MGRS to lat/lon.\n *\n * @param {string} mgrs MGRS string.\n * @return {array} An array with left (longitude), bottom (latitude), right\n * (longitude) and top (latitude) values in WGS84, representing the\n * bounding box for the provided MGRS reference.\n */\nexport function inverse(mgrs) {\n var bbox = UTMtoLL(decode(mgrs.toUpperCase()));\n if (bbox.lat && bbox.lon) {\n return [bbox.lon, bbox.lat, bbox.lon, bbox.lat];\n }\n return [bbox.left, bbox.bottom, bbox.right, bbox.top];\n};\n\nexport function toPoint(mgrs) {\n var bbox = UTMtoLL(decode(mgrs.toUpperCase()));\n if (bbox.lat && bbox.lon) {\n return [bbox.lon, bbox.lat];\n }\n return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2];\n};\n/**\n * Conversion from degrees to radians.\n *\n * @private\n * @param {number} deg the angle in degrees.\n * @return {number} the angle in radians.\n */\nfunction degToRad(deg) {\n return (deg * (Math.PI / 180.0));\n}\n\n/**\n * Conversion from radians to degrees.\n *\n * @private\n * @param {number} rad the angle in radians.\n * @return {number} the angle in degrees.\n */\nfunction radToDeg(rad) {\n return (180.0 * (rad / Math.PI));\n}\n\n/**\n * Converts a set of Longitude and Latitude co-ordinates to UTM\n * using the WGS84 ellipsoid.\n *\n * @private\n * @param {object} ll Object literal with lat and lon properties\n * representing the WGS84 coordinate to be converted.\n * @return {object} Object literal containing the UTM value with easting,\n * northing, zoneNumber and zoneLetter properties, and an optional\n * accuracy property in digits. Returns null if the conversion failed.\n */\nfunction LLtoUTM(ll) {\n var Lat = ll.lat;\n var Long = ll.lon;\n var a = 6378137.0; //ellip.radius;\n var eccSquared = 0.00669438; //ellip.eccsq;\n var k0 = 0.9996;\n var LongOrigin;\n var eccPrimeSquared;\n var N, T, C, A, M;\n var LatRad = degToRad(Lat);\n var LongRad = degToRad(Long);\n var LongOriginRad;\n var ZoneNumber;\n // (int)\n ZoneNumber = Math.floor((Long + 180) / 6) + 1;\n\n //Make sure the longitude 180.00 is in Zone 60\n if (Long === 180) {\n ZoneNumber = 60;\n }\n\n // Special zone for Norway\n if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {\n ZoneNumber = 32;\n }\n\n // Special zones for Svalbard\n if (Lat >= 72.0 && Lat < 84.0) {\n if (Long >= 0.0 && Long < 9.0) {\n ZoneNumber = 31;\n }\n else if (Long >= 9.0 && Long < 21.0) {\n ZoneNumber = 33;\n }\n else if (Long >= 21.0 && Long < 33.0) {\n ZoneNumber = 35;\n }\n else if (Long >= 33.0 && Long < 42.0) {\n ZoneNumber = 37;\n }\n }\n\n LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin\n // in middle of\n // zone\n LongOriginRad = degToRad(LongOrigin);\n\n eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad));\n T = Math.tan(LatRad) * Math.tan(LatRad);\n C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad);\n A = Math.cos(LatRad) * (LongRad - LongOriginRad);\n\n M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad));\n\n var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0);\n\n var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0)));\n if (Lat < 0.0) {\n UTMNorthing += 10000000.0; //10000000 meter offset for\n // southern hemisphere\n }\n\n return {\n northing: Math.round(UTMNorthing),\n easting: Math.round(UTMEasting),\n zoneNumber: ZoneNumber,\n zoneLetter: getLetterDesignator(Lat)\n };\n}\n\n/**\n * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience\n * class where the Zone can be specified as a single string eg.\"60N\" which\n * is then broken down into the ZoneNumber and ZoneLetter.\n *\n * @private\n * @param {object} utm An object literal with northing, easting, zoneNumber\n * and zoneLetter properties. If an optional accuracy property is\n * provided (in meters), a bounding box will be returned instead of\n * latitude and longitude.\n * @return {object} An object literal containing either lat and lon values\n * (if no accuracy was provided), or top, right, bottom and left values\n * for the bounding box calculated according to the provided accuracy.\n * Returns null if the conversion failed.\n */\nfunction UTMtoLL(utm) {\n\n var UTMNorthing = utm.northing;\n var UTMEasting = utm.easting;\n var zoneLetter = utm.zoneLetter;\n var zoneNumber = utm.zoneNumber;\n // check the ZoneNummber is valid\n if (zoneNumber < 0 || zoneNumber > 60) {\n return null;\n }\n\n var k0 = 0.9996;\n var a = 6378137.0; //ellip.radius;\n var eccSquared = 0.00669438; //ellip.eccsq;\n var eccPrimeSquared;\n var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared));\n var N1, T1, C1, R1, D, M;\n var LongOrigin;\n var mu, phi1Rad;\n\n // remove 500,000 meter offset for longitude\n var x = UTMEasting - 500000.0;\n var y = UTMNorthing;\n\n // We must know somehow if we are in the Northern or Southern\n // hemisphere, this is the only time we use the letter So even\n // if the Zone letter isn't exactly correct it should indicate\n // the hemisphere correctly\n if (zoneLetter < 'N') {\n y -= 10000000.0; // remove 10,000,000 meter offset used\n // for southern hemisphere\n }\n\n // There are 60 zones with zone 1 being at West -180 to -174\n LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin\n // in middle of\n // zone\n\n eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n M = y / k0;\n mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256));\n\n phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu);\n // double phi1 = ProjMath.radToDeg(phi1Rad);\n\n N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad));\n T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad);\n C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad);\n R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5);\n D = x / (N1 * k0);\n\n var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720);\n lat = radToDeg(lat);\n\n var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad);\n lon = LongOrigin + radToDeg(lon);\n\n var result;\n if (utm.accuracy) {\n var topRight = UTMtoLL({\n northing: utm.northing + utm.accuracy,\n easting: utm.easting + utm.accuracy,\n zoneLetter: utm.zoneLetter,\n zoneNumber: utm.zoneNumber\n });\n result = {\n top: topRight.lat,\n right: topRight.lon,\n bottom: lat,\n left: lon\n };\n }\n else {\n result = {\n lat: lat,\n lon: lon\n };\n }\n return result;\n}\n\n/**\n * Calculates the MGRS letter designator for the given latitude.\n *\n * @private\n * @param {number} lat The latitude in WGS84 to get the letter designator\n * for.\n * @return {char} The letter designator.\n */\nfunction getLetterDesignator(lat) {\n //This is here as an error flag to show that the Latitude is\n //outside MGRS limits\n var LetterDesignator = 'Z';\n\n if ((84 >= lat) && (lat >= 72)) {\n LetterDesignator = 'X';\n }\n else if ((72 > lat) && (lat >= 64)) {\n LetterDesignator = 'W';\n }\n else if ((64 > lat) && (lat >= 56)) {\n LetterDesignator = 'V';\n }\n else if ((56 > lat) && (lat >= 48)) {\n LetterDesignator = 'U';\n }\n else if ((48 > lat) && (lat >= 40)) {\n LetterDesignator = 'T';\n }\n else if ((40 > lat) && (lat >= 32)) {\n LetterDesignator = 'S';\n }\n else if ((32 > lat) && (lat >= 24)) {\n LetterDesignator = 'R';\n }\n else if ((24 > lat) && (lat >= 16)) {\n LetterDesignator = 'Q';\n }\n else if ((16 > lat) && (lat >= 8)) {\n LetterDesignator = 'P';\n }\n else if ((8 > lat) && (lat >= 0)) {\n LetterDesignator = 'N';\n }\n else if ((0 > lat) && (lat >= -8)) {\n LetterDesignator = 'M';\n }\n else if ((-8 > lat) && (lat >= -16)) {\n LetterDesignator = 'L';\n }\n else if ((-16 > lat) && (lat >= -24)) {\n LetterDesignator = 'K';\n }\n else if ((-24 > lat) && (lat >= -32)) {\n LetterDesignator = 'J';\n }\n else if ((-32 > lat) && (lat >= -40)) {\n LetterDesignator = 'H';\n }\n else if ((-40 > lat) && (lat >= -48)) {\n LetterDesignator = 'G';\n }\n else if ((-48 > lat) && (lat >= -56)) {\n LetterDesignator = 'F';\n }\n else if ((-56 > lat) && (lat >= -64)) {\n LetterDesignator = 'E';\n }\n else if ((-64 > lat) && (lat >= -72)) {\n LetterDesignator = 'D';\n }\n else if ((-72 > lat) && (lat >= -80)) {\n LetterDesignator = 'C';\n }\n return LetterDesignator;\n}\n\n/**\n * Encodes a UTM location as MGRS string.\n *\n * @private\n * @param {object} utm An object literal with easting, northing,\n * zoneLetter, zoneNumber\n * @param {number} accuracy Accuracy in digits (1-5).\n * @return {string} MGRS string for the given UTM location.\n */\nfunction encode(utm, accuracy) {\n // prepend with leading zeroes\n var seasting = \"00000\" + utm.easting,\n snorthing = \"00000\" + utm.northing;\n\n return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy);\n}\n\n/**\n * Get the two letter 100k designator for a given UTM easting,\n * northing and zone number value.\n *\n * @private\n * @param {number} easting\n * @param {number} northing\n * @param {number} zoneNumber\n * @return the two letter 100k designator for the given UTM location.\n */\nfunction get100kID(easting, northing, zoneNumber) {\n var setParm = get100kSetForZone(zoneNumber);\n var setColumn = Math.floor(easting / 100000);\n var setRow = Math.floor(northing / 100000) % 20;\n return getLetter100kID(setColumn, setRow, setParm);\n}\n\n/**\n * Given a UTM zone number, figure out the MGRS 100K set it is in.\n *\n * @private\n * @param {number} i An UTM zone number.\n * @return {number} the 100k set the UTM zone is in.\n */\nfunction get100kSetForZone(i) {\n var setParm = i % NUM_100K_SETS;\n if (setParm === 0) {\n setParm = NUM_100K_SETS;\n }\n\n return setParm;\n}\n\n/**\n * Get the two-letter MGRS 100k designator given information\n * translated from the UTM northing, easting and zone number.\n *\n * @private\n * @param {number} column the column index as it relates to the MGRS\n * 100k set spreadsheet, created from the UTM easting.\n * Values are 1-8.\n * @param {number} row the row index as it relates to the MGRS 100k set\n * spreadsheet, created from the UTM northing value. Values\n * are from 0-19.\n * @param {number} parm the set block, as it relates to the MGRS 100k set\n * spreadsheet, created from the UTM zone. Values are from\n * 1-60.\n * @return two letter MGRS 100k code.\n */\nfunction getLetter100kID(column, row, parm) {\n // colOrigin and rowOrigin are the letters at the origin of the set\n var index = parm - 1;\n var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index);\n var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index);\n\n // colInt and rowInt are the letters to build to return\n var colInt = colOrigin + column - 1;\n var rowInt = rowOrigin + row;\n var rollover = false;\n\n if (colInt > Z) {\n colInt = colInt - Z + A - 1;\n rollover = true;\n }\n\n if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) {\n colInt++;\n }\n\n if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) {\n colInt++;\n\n if (colInt === I) {\n colInt++;\n }\n }\n\n if (colInt > Z) {\n colInt = colInt - Z + A - 1;\n }\n\n if (rowInt > V) {\n rowInt = rowInt - V + A - 1;\n rollover = true;\n }\n else {\n rollover = false;\n }\n\n if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) {\n rowInt++;\n }\n\n if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) {\n rowInt++;\n\n if (rowInt === I) {\n rowInt++;\n }\n }\n\n if (rowInt > V) {\n rowInt = rowInt - V + A - 1;\n }\n\n var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt);\n return twoLetter;\n}\n\n/**\n * Decode the UTM parameters from a MGRS string.\n *\n * @private\n * @param {string} mgrsString an UPPERCASE coordinate string is expected.\n * @return {object} An object literal with easting, northing, zoneLetter,\n * zoneNumber and accuracy (in meters) properties.\n */\nfunction decode(mgrsString) {\n\n if (mgrsString && mgrsString.length === 0) {\n throw (\"MGRSPoint coverting from nothing\");\n }\n\n var length = mgrsString.length;\n\n var hunK = null;\n var sb = \"\";\n var testChar;\n var i = 0;\n\n // get Zone number\n while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) {\n if (i >= 2) {\n throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n }\n sb += testChar;\n i++;\n }\n\n var zoneNumber = parseInt(sb, 10);\n\n if (i === 0 || i + 3 > length) {\n // A good MGRS string has to be 4-5 digits long,\n // ##AAA/#AAA at least.\n throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n }\n\n var zoneLetter = mgrsString.charAt(i++);\n\n // Should we check the zone letter here? Why not.\n if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') {\n throw (\"MGRSPoint zone letter \" + zoneLetter + \" not handled: \" + mgrsString);\n }\n\n hunK = mgrsString.substring(i, i += 2);\n\n var set = get100kSetForZone(zoneNumber);\n\n var east100k = getEastingFromChar(hunK.charAt(0), set);\n var north100k = getNorthingFromChar(hunK.charAt(1), set);\n\n // We have a bug where the northing may be 2000000 too low.\n // How\n // do we know when to roll over?\n\n while (north100k < getMinNorthing(zoneLetter)) {\n north100k += 2000000;\n }\n\n // calculate the char index for easting/northing separator\n var remainder = length - i;\n\n if (remainder % 2 !== 0) {\n throw (\"MGRSPoint has to have an even number \\nof digits after the zone letter and two 100km letters - front \\nhalf for easting meters, second half for \\nnorthing meters\" + mgrsString);\n }\n\n var sep = remainder / 2;\n\n var sepEasting = 0.0;\n var sepNorthing = 0.0;\n var accuracyBonus, sepEastingString, sepNorthingString, easting, northing;\n if (sep > 0) {\n accuracyBonus = 100000.0 / Math.pow(10, sep);\n sepEastingString = mgrsString.substring(i, i + sep);\n sepEasting = parseFloat(sepEastingString) * accuracyBonus;\n sepNorthingString = mgrsString.substring(i + sep);\n sepNorthing = parseFloat(sepNorthingString) * accuracyBonus;\n }\n\n easting = sepEasting + east100k;\n northing = sepNorthing + north100k;\n\n return {\n easting: easting,\n northing: northing,\n zoneLetter: zoneLetter,\n zoneNumber: zoneNumber,\n accuracy: accuracyBonus\n };\n}\n\n/**\n * Given the first letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the easting value that\n * should be added to the other, secondary easting value.\n *\n * @private\n * @param {char} e The first letter from a two-letter MGRS 100´k zone.\n * @param {number} set The MGRS table set for the zone number.\n * @return {number} The easting value for the given letter and set.\n */\nfunction getEastingFromChar(e, set) {\n // colOrigin is the letter at the origin of the set for the\n // column\n var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1);\n var eastingValue = 100000.0;\n var rewindMarker = false;\n\n while (curCol !== e.charCodeAt(0)) {\n curCol++;\n if (curCol === I) {\n curCol++;\n }\n if (curCol === O) {\n curCol++;\n }\n if (curCol > Z) {\n if (rewindMarker) {\n throw (\"Bad character: \" + e);\n }\n curCol = A;\n rewindMarker = true;\n }\n eastingValue += 100000.0;\n }\n\n return eastingValue;\n}\n\n/**\n * Given the second letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the northing value that\n * should be added to the other, secondary northing value. You have to\n * remember that Northings are determined from the equator, and the vertical\n * cycle of letters mean a 2000000 additional northing meters. This happens\n * approx. every 18 degrees of latitude. This method does *NOT* count any\n * additional northings. You have to figure out how many 2000000 meters need\n * to be added for the zone letter of the MGRS coordinate.\n *\n * @private\n * @param {char} n Second letter of the MGRS 100k zone\n * @param {number} set The MGRS table set number, which is dependent on the\n * UTM zone number.\n * @return {number} The northing value for the given letter and set.\n */\nfunction getNorthingFromChar(n, set) {\n\n if (n > 'V') {\n throw (\"MGRSPoint given invalid Northing \" + n);\n }\n\n // rowOrigin is the letter at the origin of the set for the\n // column\n var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1);\n var northingValue = 0.0;\n var rewindMarker = false;\n\n while (curRow !== n.charCodeAt(0)) {\n curRow++;\n if (curRow === I) {\n curRow++;\n }\n if (curRow === O) {\n curRow++;\n }\n // fixing a bug making whole application hang in this loop\n // when 'n' is a wrong character\n if (curRow > V) {\n if (rewindMarker) { // making sure that this loop ends\n throw (\"Bad character: \" + n);\n }\n curRow = A;\n rewindMarker = true;\n }\n northingValue += 100000.0;\n }\n\n return northingValue;\n}\n\n/**\n * The function getMinNorthing returns the minimum northing value of a MGRS\n * zone.\n *\n * Ported from Geotrans' c Lattitude_Band_Value structure table.\n *\n * @private\n * @param {char} zoneLetter The MGRS zone to get the min northing for.\n * @return {number}\n */\nfunction getMinNorthing(zoneLetter) {\n var northing;\n switch (zoneLetter) {\n case 'C':\n northing = 1100000.0;\n break;\n case 'D':\n northing = 2000000.0;\n break;\n case 'E':\n northing = 2800000.0;\n break;\n case 'F':\n northing = 3700000.0;\n break;\n case 'G':\n northing = 4600000.0;\n break;\n case 'H':\n northing = 5500000.0;\n break;\n case 'J':\n northing = 6400000.0;\n break;\n case 'K':\n northing = 7300000.0;\n break;\n case 'L':\n northing = 8200000.0;\n break;\n case 'M':\n northing = 9100000.0;\n break;\n case 'N':\n northing = 0.0;\n break;\n case 'P':\n northing = 800000.0;\n break;\n case 'Q':\n northing = 1700000.0;\n break;\n case 'R':\n northing = 2600000.0;\n break;\n case 'S':\n northing = 3500000.0;\n break;\n case 'T':\n northing = 4400000.0;\n break;\n case 'U':\n northing = 5300000.0;\n break;\n case 'V':\n northing = 6200000.0;\n break;\n case 'W':\n northing = 7000000.0;\n break;\n case 'X':\n northing = 7900000.0;\n break;\n default:\n northing = -1.0;\n }\n if (northing >= 0.0) {\n return northing;\n }\n else {\n throw (\"Invalid zone letter: \" + zoneLetter);\n }\n\n}\n","import {toPoint, forward} from 'mgrs';\n\nfunction Point(x, y, z) {\n if (!(this instanceof Point)) {\n return new Point(x, y, z);\n }\n if (Array.isArray(x)) {\n this.x = x[0];\n this.y = x[1];\n this.z = x[2] || 0.0;\n } else if(typeof x === 'object') {\n this.x = x.x;\n this.y = x.y;\n this.z = x.z || 0.0;\n } else if (typeof x === 'string' && typeof y === 'undefined') {\n var coords = x.split(',');\n this.x = parseFloat(coords[0], 10);\n this.y = parseFloat(coords[1], 10);\n this.z = parseFloat(coords[2], 10) || 0.0;\n } else {\n this.x = x;\n this.y = y;\n this.z = z || 0.0;\n }\n console.warn('proj4.Point will be removed in version 3, use proj4.toPoint');\n}\n\nPoint.fromMGRS = function(mgrsStr) {\n return new Point(toPoint(mgrsStr));\n};\nPoint.prototype.toMGRS = function(accuracy) {\n return forward([this.x, this.y], accuracy);\n};\nexport default Point;\n","var C00 = 1;\nvar C02 = 0.25;\nvar C04 = 0.046875;\nvar C06 = 0.01953125;\nvar C08 = 0.01068115234375;\nvar C22 = 0.75;\nvar C44 = 0.46875;\nvar C46 = 0.01302083333333333333;\nvar C48 = 0.00712076822916666666;\nvar C66 = 0.36458333333333333333;\nvar C68 = 0.00569661458333333333;\nvar C88 = 0.3076171875;\n\nexport default function(es) {\n var en = [];\n en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08)));\n en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08)));\n var t = es * es;\n en[2] = t * (C44 - es * (C46 + es * C48));\n t *= es;\n en[3] = t * (C66 - es * C68);\n en[4] = t * es * C88;\n return en;\n}","export default function(phi, sphi, cphi, en) {\n cphi *= sphi;\n sphi *= sphi;\n return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4]))));\n}","import pj_mlfn from \"./pj_mlfn\";\nimport {EPSLN} from '../constants/values';\n\nvar MAX_ITER = 20;\n\nexport default function(arg, es, en) {\n var k = 1 / (1 - es);\n var phi = arg;\n for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */\n var s = Math.sin(phi);\n var t = 1 - es * s * s;\n //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg;\n //phi -= t * (t * Math.sqrt(t)) * k;\n t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k;\n phi -= t;\n if (Math.abs(t) < EPSLN) {\n return phi;\n }\n }\n //..reportError(\"cass:pj_inv_mlfn: Convergence error\");\n return phi;\n}\n","// Heavily based on this tmerc projection implementation\n// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/tmerc.js\n\nimport pj_enfn from '../common/pj_enfn';\nimport pj_mlfn from '../common/pj_mlfn';\nimport pj_inv_mlfn from '../common/pj_inv_mlfn';\nimport adjust_lon from '../common/adjust_lon';\n\nimport {EPSLN, HALF_PI} from '../constants/values';\nimport sign from '../common/sign';\n\nexport function init() {\n this.x0 = this.x0 !== undefined ? this.x0 : 0;\n this.y0 = this.y0 !== undefined ? this.y0 : 0;\n this.long0 = this.long0 !== undefined ? this.long0 : 0;\n this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;\n\n if (this.es) {\n this.en = pj_enfn(this.es);\n this.ml0 = pj_mlfn(this.lat0, Math.sin(this.lat0), Math.cos(this.lat0), this.en);\n }\n}\n\n/**\n Transverse Mercator Forward - long/lat to x/y\n long/lat in radians\n */\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n\n var delta_lon = adjust_lon(lon - this.long0);\n var con;\n var x, y;\n var sin_phi = Math.sin(lat);\n var cos_phi = Math.cos(lat);\n\n if (!this.es) {\n var b = cos_phi * Math.sin(delta_lon);\n\n if ((Math.abs(Math.abs(b) - 1)) < EPSLN) {\n return (93);\n }\n else {\n x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b)) + this.x0;\n y = cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - Math.pow(b, 2));\n b = Math.abs(y);\n\n if (b >= 1) {\n if ((b - 1) > EPSLN) {\n return (93);\n }\n else {\n y = 0;\n }\n }\n else {\n y = Math.acos(y);\n }\n\n if (lat < 0) {\n y = -y;\n }\n\n y = this.a * this.k0 * (y - this.lat0) + this.y0;\n }\n }\n else {\n var al = cos_phi * delta_lon;\n var als = Math.pow(al, 2);\n var c = this.ep2 * Math.pow(cos_phi, 2);\n var cs = Math.pow(c, 2);\n var tq = Math.abs(cos_phi) > EPSLN ? Math.tan(lat) : 0;\n var t = Math.pow(tq, 2);\n var ts = Math.pow(t, 2);\n con = 1 - this.es * Math.pow(sin_phi, 2);\n al = al / Math.sqrt(con);\n var ml = pj_mlfn(lat, sin_phi, cos_phi, this.en);\n\n x = this.a * (this.k0 * al * (1 +\n als / 6 * (1 - t + c +\n als / 20 * (5 - 18 * t + ts + 14 * c - 58 * t * c +\n als / 42 * (61 + 179 * ts - ts * t - 479 * t))))) +\n this.x0;\n\n y = this.a * (this.k0 * (ml - this.ml0 +\n sin_phi * delta_lon * al / 2 * (1 +\n als / 12 * (5 - t + 9 * c + 4 * cs +\n als / 30 * (61 + ts - 58 * t + 270 * c - 330 * t * c +\n als / 56 * (1385 + 543 * ts - ts * t - 3111 * t)))))) +\n this.y0;\n }\n\n p.x = x;\n p.y = y;\n\n return p;\n}\n\n/**\n Transverse Mercator Inverse - x/y to long/lat\n */\nexport function inverse(p) {\n var con, phi;\n var lat, lon;\n var x = (p.x - this.x0) * (1 / this.a);\n var y = (p.y - this.y0) * (1 / this.a);\n\n if (!this.es) {\n var f = Math.exp(x / this.k0);\n var g = 0.5 * (f - 1 / f);\n var temp = this.lat0 + y / this.k0;\n var h = Math.cos(temp);\n con = Math.sqrt((1 - Math.pow(h, 2)) / (1 + Math.pow(g, 2)));\n lat = Math.asin(con);\n\n if (y < 0) {\n lat = -lat;\n }\n\n if ((g === 0) && (h === 0)) {\n lon = 0;\n }\n else {\n lon = adjust_lon(Math.atan2(g, h) + this.long0);\n }\n }\n else { // ellipsoidal form\n con = this.ml0 + y / this.k0;\n phi = pj_inv_mlfn(con, this.es, this.en);\n\n if (Math.abs(phi) < HALF_PI) {\n var sin_phi = Math.sin(phi);\n var cos_phi = Math.cos(phi);\n var tan_phi = Math.abs(cos_phi) > EPSLN ? Math.tan(phi) : 0;\n var c = this.ep2 * Math.pow(cos_phi, 2);\n var cs = Math.pow(c, 2);\n var t = Math.pow(tan_phi, 2);\n var ts = Math.pow(t, 2);\n con = 1 - this.es * Math.pow(sin_phi, 2);\n var d = x * Math.sqrt(con) / this.k0;\n var ds = Math.pow(d, 2);\n con = con * tan_phi;\n\n lat = phi - (con * ds / (1 - this.es)) * 0.5 * (1 -\n ds / 12 * (5 + 3 * t - 9 * c * t + c - 4 * cs -\n ds / 30 * (61 + 90 * t - 252 * c * t + 45 * ts + 46 * c -\n ds / 56 * (1385 + 3633 * t + 4095 * ts + 1574 * ts * t))));\n\n lon = adjust_lon(this.long0 + (d * (1 -\n ds / 6 * (1 + 2 * t + c -\n ds / 20 * (5 + 28 * t + 24 * ts + 8 * c * t + 6 * c -\n ds / 42 * (61 + 662 * t + 1320 * ts + 720 * ts * t)))) / cos_phi));\n }\n else {\n lat = HALF_PI * sign(y);\n lon = 0;\n }\n }\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"Fast_Transverse_Mercator\", \"Fast Transverse Mercator\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(x) {\n var r = Math.exp(x);\n r = (r - 1 / r) / 2;\n return r;\n}","export default function(x, y) {\n x = Math.abs(x);\n y = Math.abs(y);\n var a = Math.max(x, y);\n var b = Math.min(x, y) / (a ? a : 1);\n\n return a * Math.sqrt(1 + Math.pow(b, 2));\n}\n","import hypot from './hypot';\nimport log1py from './log1py';\n\nexport default function(x) {\n var y = Math.abs(x);\n y = log1py(y * (1 + y / (hypot(1, y) + 1)));\n\n return x < 0 ? -y : y;\n}\n","export default function(x) {\n var y = 1 + x;\n var z = y - 1;\n\n return z === 0 ? x : x * Math.log(y) / z;\n}\n","export default function(pp, B) {\n var cos_2B = 2 * Math.cos(2 * B);\n var i = pp.length - 1;\n var h1 = pp[i];\n var h2 = 0;\n var h;\n\n while (--i >= 0) {\n h = -h2 + cos_2B * h1 + pp[i];\n h2 = h1;\n h1 = h;\n }\n\n return (B + h * Math.sin(2 * B));\n}\n","import sinh from './sinh';\nimport cosh from './cosh';\n\nexport default function(pp, arg_r, arg_i) {\n var sin_arg_r = Math.sin(arg_r);\n var cos_arg_r = Math.cos(arg_r);\n var sinh_arg_i = sinh(arg_i);\n var cosh_arg_i = cosh(arg_i);\n var r = 2 * cos_arg_r * cosh_arg_i;\n var i = -2 * sin_arg_r * sinh_arg_i;\n var j = pp.length - 1;\n var hr = pp[j];\n var hi1 = 0;\n var hr1 = 0;\n var hi = 0;\n var hr2;\n var hi2;\n\n while (--j >= 0) {\n hr2 = hr1;\n hi2 = hi1;\n hr1 = hr;\n hi1 = hi;\n hr = -hr2 + r * hr1 - i * hi1 + pp[j];\n hi = -hi2 + i * hr1 + r * hi1;\n }\n\n r = sin_arg_r * cosh_arg_i;\n i = cos_arg_r * sinh_arg_i;\n\n return [r * hr - i * hi, r * hi + i * hr];\n}\n","export default function(x) {\n var r = Math.exp(x);\n r = (r + 1 / r) / 2;\n return r;\n}","// Heavily based on this etmerc projection implementation\n// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/etmerc.js\n\nimport tmerc from '../projections/tmerc';\nimport sinh from '../common/sinh';\nimport hypot from '../common/hypot';\nimport asinhy from '../common/asinhy';\nimport gatg from '../common/gatg';\nimport clens from '../common/clens';\nimport clens_cmplx from '../common/clens_cmplx';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n if (!this.approx && (isNaN(this.es) || this.es <= 0)) {\n throw new Error('Incorrect elliptical usage. Try using the +approx option in the proj string, or PROJECTION[\"Fast_Transverse_Mercator\"] in the WKT.');\n }\n if (this.approx) {\n // When '+approx' is set, use tmerc instead\n tmerc.init.apply(this);\n this.forward = tmerc.forward;\n this.inverse = tmerc.inverse;\n }\n\n this.x0 = this.x0 !== undefined ? this.x0 : 0;\n this.y0 = this.y0 !== undefined ? this.y0 : 0;\n this.long0 = this.long0 !== undefined ? this.long0 : 0;\n this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;\n\n this.cgb = [];\n this.cbg = [];\n this.utg = [];\n this.gtu = [];\n\n var f = this.es / (1 + Math.sqrt(1 - this.es));\n var n = f / (2 - f);\n var np = n;\n\n this.cgb[0] = n * (2 + n * (-2 / 3 + n * (-2 + n * (116 / 45 + n * (26 / 45 + n * (-2854 / 675 ))))));\n this.cbg[0] = n * (-2 + n * ( 2 / 3 + n * ( 4 / 3 + n * (-82 / 45 + n * (32 / 45 + n * (4642 / 4725))))));\n\n np = np * n;\n this.cgb[1] = np * (7 / 3 + n * (-8 / 5 + n * (-227 / 45 + n * (2704 / 315 + n * (2323 / 945)))));\n this.cbg[1] = np * (5 / 3 + n * (-16 / 15 + n * ( -13 / 9 + n * (904 / 315 + n * (-1522 / 945)))));\n\n np = np * n;\n this.cgb[2] = np * (56 / 15 + n * (-136 / 35 + n * (-1262 / 105 + n * (73814 / 2835))));\n this.cbg[2] = np * (-26 / 15 + n * (34 / 21 + n * (8 / 5 + n * (-12686 / 2835))));\n\n np = np * n;\n this.cgb[3] = np * (4279 / 630 + n * (-332 / 35 + n * (-399572 / 14175)));\n this.cbg[3] = np * (1237 / 630 + n * (-12 / 5 + n * ( -24832 / 14175)));\n\n np = np * n;\n this.cgb[4] = np * (4174 / 315 + n * (-144838 / 6237));\n this.cbg[4] = np * (-734 / 315 + n * (109598 / 31185));\n\n np = np * n;\n this.cgb[5] = np * (601676 / 22275);\n this.cbg[5] = np * (444337 / 155925);\n\n np = Math.pow(n, 2);\n this.Qn = this.k0 / (1 + n) * (1 + np * (1 / 4 + np * (1 / 64 + np / 256)));\n\n this.utg[0] = n * (-0.5 + n * ( 2 / 3 + n * (-37 / 96 + n * ( 1 / 360 + n * (81 / 512 + n * (-96199 / 604800))))));\n this.gtu[0] = n * (0.5 + n * (-2 / 3 + n * (5 / 16 + n * (41 / 180 + n * (-127 / 288 + n * (7891 / 37800))))));\n\n this.utg[1] = np * (-1 / 48 + n * (-1 / 15 + n * (437 / 1440 + n * (-46 / 105 + n * (1118711 / 3870720)))));\n this.gtu[1] = np * (13 / 48 + n * (-3 / 5 + n * (557 / 1440 + n * (281 / 630 + n * (-1983433 / 1935360)))));\n\n np = np * n;\n this.utg[2] = np * (-17 / 480 + n * (37 / 840 + n * (209 / 4480 + n * (-5569 / 90720 ))));\n this.gtu[2] = np * (61 / 240 + n * (-103 / 140 + n * (15061 / 26880 + n * (167603 / 181440))));\n\n np = np * n;\n this.utg[3] = np * (-4397 / 161280 + n * (11 / 504 + n * (830251 / 7257600)));\n this.gtu[3] = np * (49561 / 161280 + n * (-179 / 168 + n * (6601661 / 7257600)));\n\n np = np * n;\n this.utg[4] = np * (-4583 / 161280 + n * (108847 / 3991680));\n this.gtu[4] = np * (34729 / 80640 + n * (-3418889 / 1995840));\n\n np = np * n;\n this.utg[5] = np * (-20648693 / 638668800);\n this.gtu[5] = np * (212378941 / 319334400);\n\n var Z = gatg(this.cbg, this.lat0);\n this.Zb = -this.Qn * (Z + clens(this.gtu, 2 * Z));\n}\n\nexport function forward(p) {\n var Ce = adjust_lon(p.x - this.long0);\n var Cn = p.y;\n\n Cn = gatg(this.cbg, Cn);\n var sin_Cn = Math.sin(Cn);\n var cos_Cn = Math.cos(Cn);\n var sin_Ce = Math.sin(Ce);\n var cos_Ce = Math.cos(Ce);\n\n Cn = Math.atan2(sin_Cn, cos_Ce * cos_Cn);\n Ce = Math.atan2(sin_Ce * cos_Cn, hypot(sin_Cn, cos_Cn * cos_Ce));\n Ce = asinhy(Math.tan(Ce));\n\n var tmp = clens_cmplx(this.gtu, 2 * Cn, 2 * Ce);\n\n Cn = Cn + tmp[0];\n Ce = Ce + tmp[1];\n\n var x;\n var y;\n\n if (Math.abs(Ce) <= 2.623395162778) {\n x = this.a * (this.Qn * Ce) + this.x0;\n y = this.a * (this.Qn * Cn + this.Zb) + this.y0;\n }\n else {\n x = Infinity;\n y = Infinity;\n }\n\n p.x = x;\n p.y = y;\n\n return p;\n}\n\nexport function inverse(p) {\n var Ce = (p.x - this.x0) * (1 / this.a);\n var Cn = (p.y - this.y0) * (1 / this.a);\n\n Cn = (Cn - this.Zb) / this.Qn;\n Ce = Ce / this.Qn;\n\n var lon;\n var lat;\n\n if (Math.abs(Ce) <= 2.623395162778) {\n var tmp = clens_cmplx(this.utg, 2 * Cn, 2 * Ce);\n\n Cn = Cn + tmp[0];\n Ce = Ce + tmp[1];\n Ce = Math.atan(sinh(Ce));\n\n var sin_Cn = Math.sin(Cn);\n var cos_Cn = Math.cos(Cn);\n var sin_Ce = Math.sin(Ce);\n var cos_Ce = Math.cos(Ce);\n\n Cn = Math.atan2(sin_Cn * cos_Ce, hypot(sin_Ce, cos_Ce * cos_Cn));\n Ce = Math.atan2(sin_Ce, cos_Ce * cos_Cn);\n\n lon = adjust_lon(Ce + this.long0);\n lat = gatg(this.cgb, Cn);\n }\n else {\n lon = Infinity;\n lat = Infinity;\n }\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"Extended_Transverse_Mercator\", \"Extended Transverse Mercator\", \"etmerc\", \"Transverse_Mercator\", \"Transverse Mercator\", \"tmerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(pp, arg_r) {\n var r = 2 * Math.cos(arg_r);\n var i = pp.length - 1;\n var hr1 = pp[i];\n var hr2 = 0;\n var hr;\n\n while (--i >= 0) {\n hr = -hr2 + r * hr1 + pp[i];\n hr2 = hr1;\n hr1 = hr;\n }\n\n return Math.sin(arg_r) * hr;\n}\n","import adjust_zone from '../common/adjust_zone';\nimport etmerc from './etmerc';\nexport var dependsOn = 'etmerc';\nimport {D2R} from '../constants/values';\n\n\nexport function init() {\n var zone = adjust_zone(this.zone, this.long0);\n if (zone === undefined) {\n throw new Error('unknown utm zone');\n }\n this.lat0 = 0;\n this.long0 = ((6 * Math.abs(zone)) - 183) * D2R;\n this.x0 = 500000;\n this.y0 = this.utmSouth ? 10000000 : 0;\n this.k0 = 0.9996;\n\n etmerc.init.apply(this);\n this.forward = etmerc.forward;\n this.inverse = etmerc.inverse;\n}\n\nexport var names = [\"Universal Transverse Mercator System\", \"utm\"];\nexport default {\n init: init,\n names: names,\n dependsOn: dependsOn\n};\n","import adjust_lon from './adjust_lon';\n\nexport default function(zone, lon) {\n if (zone === undefined) {\n zone = Math.floor((adjust_lon(lon) + Math.PI) * 30 / Math.PI) + 1;\n\n if (zone < 0) {\n return 0;\n } else if (zone > 60) {\n return 60;\n }\n }\n return zone;\n}\n","export default function(esinp, exp) {\n return (Math.pow((1 - esinp) / (1 + esinp), exp));\n}","import srat from '../common/srat';\nvar MAX_ITER = 20;\nimport {HALF_PI, FORTPI} from '../constants/values';\n\nexport function init() {\n var sphi = Math.sin(this.lat0);\n var cphi = Math.cos(this.lat0);\n cphi *= cphi;\n this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi);\n this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es));\n this.phic0 = Math.asin(sphi / this.C);\n this.ratexp = 0.5 * this.C * this.e;\n this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp));\n}\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n\n p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI;\n p.x = this.C * lon;\n return p;\n}\n\nexport function inverse(p) {\n var DEL_TOL = 1e-14;\n var lon = p.x / this.C;\n var lat = p.y;\n var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C);\n for (var i = MAX_ITER; i > 0; --i) {\n lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI;\n if (Math.abs(lat - p.y) < DEL_TOL) {\n break;\n }\n p.y = lat;\n }\n /* convergence failed */\n if (!i) {\n return null;\n }\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"gauss\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import gauss from './gauss';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n gauss.init.apply(this);\n if (!this.rc) {\n return;\n }\n this.sinc0 = Math.sin(this.phic0);\n this.cosc0 = Math.cos(this.phic0);\n this.R2 = 2 * this.rc;\n if (!this.title) {\n this.title = \"Oblique Stereographic Alternative\";\n }\n}\n\nexport function forward(p) {\n var sinc, cosc, cosl, k;\n p.x = adjust_lon(p.x - this.long0);\n gauss.forward.apply(this, [p]);\n sinc = Math.sin(p.y);\n cosc = Math.cos(p.y);\n cosl = Math.cos(p.x);\n k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl);\n p.x = k * cosc * Math.sin(p.x);\n p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl);\n p.x = this.a * p.x + this.x0;\n p.y = this.a * p.y + this.y0;\n return p;\n}\n\nexport function inverse(p) {\n var sinc, cosc, lon, lat, rho;\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n p.x /= this.k0;\n p.y /= this.k0;\n if ((rho = Math.sqrt(p.x * p.x + p.y * p.y))) {\n var c = 2 * Math.atan2(rho, this.R2);\n sinc = Math.sin(c);\n cosc = Math.cos(c);\n lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho);\n lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc);\n }\n else {\n lat = this.phic0;\n lon = 0;\n }\n\n p.x = lon;\n p.y = lat;\n gauss.inverse.apply(this, [p]);\n p.x = adjust_lon(p.x + this.long0);\n return p;\n}\n\nexport var names = [\"Stereographic_North_Pole\", \"Oblique_Stereographic\", \"Polar_Stereographic\", \"sterea\",\"Oblique Stereographic Alternative\",\"Double_Stereographic\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {EPSLN, HALF_PI} from '../constants/values';\n\nimport sign from '../common/sign';\nimport msfnz from '../common/msfnz';\nimport tsfnz from '../common/tsfnz';\nimport phi2z from '../common/phi2z';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function ssfn_(phit, sinphi, eccen) {\n sinphi *= eccen;\n return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen));\n}\n\nexport function init() {\n this.coslat0 = Math.cos(this.lat0);\n this.sinlat0 = Math.sin(this.lat0);\n if (this.sphere) {\n if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {\n this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts));\n }\n }\n else {\n if (Math.abs(this.coslat0) <= EPSLN) {\n if (this.lat0 > 0) {\n //North pole\n //trace('stere:north pole');\n this.con = 1;\n }\n else {\n //South pole\n //trace('stere:south pole');\n this.con = -1;\n }\n }\n this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e));\n if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {\n this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts));\n }\n this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0);\n this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI;\n this.cosX0 = Math.cos(this.X0);\n this.sinX0 = Math.sin(this.X0);\n }\n}\n\n// Stereographic forward equations--mapping lat,long to x,y\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var sinlat = Math.sin(lat);\n var coslat = Math.cos(lat);\n var A, X, sinX, cosX, ts, rh;\n var dlon = adjust_lon(lon - this.long0);\n\n if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) {\n //case of the origine point\n //trace('stere:this is the origin point');\n p.x = NaN;\n p.y = NaN;\n return p;\n }\n if (this.sphere) {\n //trace('stere:sphere case');\n A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon));\n p.x = this.a * A * coslat * Math.sin(dlon) + this.x0;\n p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0;\n return p;\n }\n else {\n X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI;\n cosX = Math.cos(X);\n sinX = Math.sin(X);\n if (Math.abs(this.coslat0) <= EPSLN) {\n ts = tsfnz(this.e, lat * this.con, this.con * sinlat);\n rh = 2 * this.a * this.k0 * ts / this.cons;\n p.x = this.x0 + rh * Math.sin(lon - this.long0);\n p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0);\n //trace(p.toString());\n return p;\n }\n else if (Math.abs(this.sinlat0) < EPSLN) {\n //Eq\n //trace('stere:equateur');\n A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon));\n p.y = A * sinX;\n }\n else {\n //other case\n //trace('stere:normal case');\n A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon)));\n p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0;\n }\n p.x = A * cosX * Math.sin(dlon) + this.x0;\n }\n //trace(p.toString());\n return p;\n}\n\n//* Stereographic inverse equations--mapping x,y to lat/long\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var lon, lat, ts, ce, Chi;\n var rh = Math.sqrt(p.x * p.x + p.y * p.y);\n if (this.sphere) {\n var c = 2 * Math.atan(rh / (2 * this.a * this.k0));\n lon = this.long0;\n lat = this.lat0;\n if (rh <= EPSLN) {\n p.x = lon;\n p.y = lat;\n return p;\n }\n lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh);\n if (Math.abs(this.coslat0) < EPSLN) {\n if (this.lat0 > 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n }\n else {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n }\n }\n else {\n lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c)));\n }\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n if (Math.abs(this.coslat0) <= EPSLN) {\n if (rh <= EPSLN) {\n lat = this.lat0;\n lon = this.long0;\n p.x = lon;\n p.y = lat;\n //trace(p.toString());\n return p;\n }\n p.x *= this.con;\n p.y *= this.con;\n ts = rh * this.cons / (2 * this.a * this.k0);\n lat = this.con * phi2z(this.e, ts);\n lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y));\n }\n else {\n ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1));\n lon = this.long0;\n if (rh <= EPSLN) {\n Chi = this.X0;\n }\n else {\n Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh);\n lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce)));\n }\n lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi)));\n }\n }\n p.x = lon;\n p.y = lat;\n\n //trace(p.toString());\n return p;\n\n}\n\nexport var names = [\"stere\", \"Stereographic_South_Pole\", \"Polar Stereographic (variant B)\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n ssfn_: ssfn_\n};\n","/*\n references:\n Formules et constantes pour le Calcul pour la\n projection cylindrique conforme à axe oblique et pour la transformation entre\n des systèmes de référence.\n http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf\n */\n\nexport function init() {\n var phy0 = this.lat0;\n this.lambda0 = this.long0;\n var sinPhy0 = Math.sin(phy0);\n var semiMajorAxis = this.a;\n var invF = this.rf;\n var flattening = 1 / invF;\n var e2 = 2 * flattening - Math.pow(flattening, 2);\n var e = this.e = Math.sqrt(e2);\n this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2));\n this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4));\n this.b0 = Math.asin(sinPhy0 / this.alpha);\n var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2));\n var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2));\n var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0));\n this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3;\n}\n\nexport function forward(p) {\n var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2));\n var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y)));\n var S = -this.alpha * (Sa1 + Sa2) + this.K;\n\n // spheric latitude\n var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4);\n\n // spheric longitude\n var I = this.alpha * (p.x - this.lambda0);\n\n // psoeudo equatorial rotation\n var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.cos(this.b0) * Math.cos(I)));\n\n var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I));\n\n p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0;\n p.x = this.R * rotI + this.x0;\n return p;\n}\n\nexport function inverse(p) {\n var Y = p.x - this.x0;\n var X = p.y - this.y0;\n\n var rotI = Y / this.R;\n var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4);\n\n var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI));\n var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB)));\n\n var lambda = this.lambda0 + I / this.alpha;\n\n var S = 0;\n var phy = b;\n var prevPhy = -1000;\n var iteration = 0;\n while (Math.abs(phy - prevPhy) > 0.0000001) {\n if (++iteration > 20) {\n //...reportError(\"omercFwdInfinity\");\n return;\n }\n //S = Math.log(Math.tan(Math.PI / 4 + phy / 2));\n S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2));\n prevPhy = phy;\n phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2;\n }\n\n p.x = lambda;\n p.y = phy;\n return p;\n}\n\nexport var names = [\"somerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import tsfnz from '../common/tsfnz';\nimport adjust_lon from '../common/adjust_lon';\nimport phi2z from '../common/phi2z';\nimport { D2R, EPSLN, HALF_PI, TWO_PI, FORTPI } from '../constants/values';\n\nvar TOL = 1e-7;\n\nfunction isTypeA(P) {\n var typeAProjections = ['Hotine_Oblique_Mercator','Hotine_Oblique_Mercator_Azimuth_Natural_Origin'];\n var projectionName = typeof P.PROJECTION === \"object\" ? Object.keys(P.PROJECTION)[0] : P.PROJECTION;\n \n return 'no_uoff' in P || 'no_off' in P || typeAProjections.indexOf(projectionName) !== -1;\n}\n\n\n/* Initialize the Oblique Mercator projection\n ------------------------------------------*/\nexport function init() { \n var con, com, cosph0, D, F, H, L, sinph0, p, J, gamma = 0,\n gamma0, lamc = 0, lam1 = 0, lam2 = 0, phi1 = 0, phi2 = 0, alpha_c = 0, AB;\n \n // only Type A uses the no_off or no_uoff property\n // https://github.com/OSGeo/proj.4/issues/104\n this.no_off = isTypeA(this);\n this.no_rot = 'no_rot' in this;\n \n var alp = false;\n if (\"alpha\" in this) {\n alp = true;\n }\n\n var gam = false;\n if (\"rectified_grid_angle\" in this) {\n gam = true;\n }\n\n if (alp) {\n alpha_c = this.alpha;\n }\n \n if (gam) {\n gamma = (this.rectified_grid_angle * D2R);\n }\n \n if (alp || gam) {\n lamc = this.longc;\n } else {\n lam1 = this.long1;\n phi1 = this.lat1;\n lam2 = this.long2;\n phi2 = this.lat2;\n \n if (Math.abs(phi1 - phi2) <= TOL || (con = Math.abs(phi1)) <= TOL ||\n Math.abs(con - HALF_PI) <= TOL || Math.abs(Math.abs(this.lat0) - HALF_PI) <= TOL ||\n Math.abs(Math.abs(phi2) - HALF_PI) <= TOL) {\n throw new Error();\n }\n }\n \n var one_es = 1.0 - this.es;\n com = Math.sqrt(one_es);\n \n if (Math.abs(this.lat0) > EPSLN) {\n sinph0 = Math.sin(this.lat0);\n cosph0 = Math.cos(this.lat0);\n con = 1 - this.es * sinph0 * sinph0;\n this.B = cosph0 * cosph0;\n this.B = Math.sqrt(1 + this.es * this.B * this.B / one_es);\n this.A = this.B * this.k0 * com / con;\n D = this.B * com / (cosph0 * Math.sqrt(con));\n F = D * D -1;\n \n if (F <= 0) {\n F = 0;\n } else {\n F = Math.sqrt(F);\n if (this.lat0 < 0) {\n F = -F;\n }\n }\n \n this.E = F += D;\n this.E *= Math.pow(tsfnz(this.e, this.lat0, sinph0), this.B);\n } else {\n this.B = 1 / com;\n this.A = this.k0;\n this.E = D = F = 1;\n }\n \n if (alp || gam) {\n if (alp) {\n gamma0 = Math.asin(Math.sin(alpha_c) / D);\n if (!gam) {\n gamma = alpha_c;\n }\n } else {\n gamma0 = gamma;\n alpha_c = Math.asin(D * Math.sin(gamma0));\n }\n this.lam0 = lamc - Math.asin(0.5 * (F - 1 / F) * Math.tan(gamma0)) / this.B;\n } else {\n H = Math.pow(tsfnz(this.e, phi1, Math.sin(phi1)), this.B);\n L = Math.pow(tsfnz(this.e, phi2, Math.sin(phi2)), this.B);\n F = this.E / H;\n p = (L - H) / (L + H);\n J = this.E * this.E;\n J = (J - L * H) / (J + L * H);\n con = lam1 - lam2;\n \n if (con < -Math.pi) {\n lam2 -=TWO_PI;\n } else if (con > Math.pi) {\n lam2 += TWO_PI;\n }\n \n this.lam0 = adjust_lon(0.5 * (lam1 + lam2) - Math.atan(J * Math.tan(0.5 * this.B * (lam1 - lam2)) / p) / this.B);\n gamma0 = Math.atan(2 * Math.sin(this.B * adjust_lon(lam1 - this.lam0)) / (F - 1 / F));\n gamma = alpha_c = Math.asin(D * Math.sin(gamma0));\n }\n \n this.singam = Math.sin(gamma0);\n this.cosgam = Math.cos(gamma0);\n this.sinrot = Math.sin(gamma);\n this.cosrot = Math.cos(gamma);\n \n this.rB = 1 / this.B;\n this.ArB = this.A * this.rB;\n this.BrA = 1 / this.ArB;\n AB = this.A * this.B;\n \n if (this.no_off) {\n this.u_0 = 0;\n } else {\n this.u_0 = Math.abs(this.ArB * Math.atan(Math.sqrt(D * D - 1) / Math.cos(alpha_c)));\n \n if (this.lat0 < 0) {\n this.u_0 = - this.u_0;\n } \n }\n \n F = 0.5 * gamma0;\n this.v_pole_n = this.ArB * Math.log(Math.tan(FORTPI - F));\n this.v_pole_s = this.ArB * Math.log(Math.tan(FORTPI + F));\n}\n\n\n/* Oblique Mercator forward equations--mapping lat,long to x,y\n ----------------------------------------------------------*/\nexport function forward(p) {\n var coords = {};\n var S, T, U, V, W, temp, u, v;\n p.x = p.x - this.lam0;\n \n if (Math.abs(Math.abs(p.y) - HALF_PI) > EPSLN) {\n W = this.E / Math.pow(tsfnz(this.e, p.y, Math.sin(p.y)), this.B);\n \n temp = 1 / W;\n S = 0.5 * (W - temp);\n T = 0.5 * (W + temp);\n V = Math.sin(this.B * p.x);\n U = (S * this.singam - V * this.cosgam) / T;\n \n if (Math.abs(Math.abs(U) - 1.0) < EPSLN) {\n throw new Error();\n }\n \n v = 0.5 * this.ArB * Math.log((1 - U)/(1 + U));\n temp = Math.cos(this.B * p.x);\n \n if (Math.abs(temp) < TOL) {\n u = this.A * p.x;\n } else {\n u = this.ArB * Math.atan2((S * this.cosgam + V * this.singam), temp);\n } \n } else {\n v = p.y > 0 ? this.v_pole_n : this.v_pole_s;\n u = this.ArB * p.y;\n }\n \n if (this.no_rot) {\n coords.x = u;\n coords.y = v;\n } else {\n u -= this.u_0;\n coords.x = v * this.cosrot + u * this.sinrot;\n coords.y = u * this.cosrot - v * this.sinrot;\n }\n \n coords.x = (this.a * coords.x + this.x0);\n coords.y = (this.a * coords.y + this.y0);\n \n return coords;\n}\n\nexport function inverse(p) {\n var u, v, Qp, Sp, Tp, Vp, Up;\n var coords = {};\n \n p.x = (p.x - this.x0) * (1.0 / this.a);\n p.y = (p.y - this.y0) * (1.0 / this.a);\n\n if (this.no_rot) {\n v = p.y;\n u = p.x;\n } else {\n v = p.x * this.cosrot - p.y * this.sinrot;\n u = p.y * this.cosrot + p.x * this.sinrot + this.u_0;\n }\n \n Qp = Math.exp(-this.BrA * v);\n Sp = 0.5 * (Qp - 1 / Qp);\n Tp = 0.5 * (Qp + 1 / Qp);\n Vp = Math.sin(this.BrA * u);\n Up = (Vp * this.cosgam + Sp * this.singam) / Tp;\n \n if (Math.abs(Math.abs(Up) - 1) < EPSLN) {\n coords.x = 0;\n coords.y = Up < 0 ? -HALF_PI : HALF_PI;\n } else {\n coords.y = this.E / Math.sqrt((1 + Up) / (1 - Up));\n coords.y = phi2z(this.e, Math.pow(coords.y, 1 / this.B));\n \n if (coords.y === Infinity) {\n throw new Error();\n }\n \n coords.x = -this.rB * Math.atan2((Sp * this.cosgam - Vp * this.singam), Math.cos(this.BrA * u));\n }\n \n coords.x += this.lam0;\n \n return coords;\n}\n\nexport var names = [\"Hotine_Oblique_Mercator\", \"Hotine Oblique Mercator\", \"Hotine_Oblique_Mercator_Azimuth_Natural_Origin\", \"Hotine_Oblique_Mercator_Two_Point_Natural_Origin\", \"Hotine_Oblique_Mercator_Azimuth_Center\", \"Oblique_Mercator\", \"omerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import msfnz from '../common/msfnz';\nimport tsfnz from '../common/tsfnz';\nimport sign from '../common/sign';\nimport adjust_lon from '../common/adjust_lon';\nimport phi2z from '../common/phi2z';\nimport {HALF_PI, EPSLN} from '../constants/values';\nexport function init() {\n \n //double lat0; /* the reference latitude */\n //double long0; /* the reference longitude */\n //double lat1; /* first standard parallel */\n //double lat2; /* second standard parallel */\n //double r_maj; /* major axis */\n //double r_min; /* minor axis */\n //double false_east; /* x offset in meters */\n //double false_north; /* y offset in meters */\n \n //the above value can be set with proj4.defs\n //example: proj4.defs(\"EPSG:2154\",\"+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\");\n\n if (!this.lat2) {\n this.lat2 = this.lat1;\n } //if lat2 is not defined\n if (!this.k0) {\n this.k0 = 1;\n }\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n // Standard Parallels cannot be equal and on opposite sides of the equator\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n\n var temp = this.b / this.a;\n this.e = Math.sqrt(1 - temp * temp);\n\n var sin1 = Math.sin(this.lat1);\n var cos1 = Math.cos(this.lat1);\n var ms1 = msfnz(this.e, sin1, cos1);\n var ts1 = tsfnz(this.e, this.lat1, sin1);\n\n var sin2 = Math.sin(this.lat2);\n var cos2 = Math.cos(this.lat2);\n var ms2 = msfnz(this.e, sin2, cos2);\n var ts2 = tsfnz(this.e, this.lat2, sin2);\n\n var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0));\n\n if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2);\n }\n else {\n this.ns = sin1;\n }\n if (isNaN(this.ns)) {\n this.ns = sin1;\n }\n this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns));\n this.rh = this.a * this.f0 * Math.pow(ts0, this.ns);\n if (!this.title) {\n this.title = \"Lambert Conformal Conic\";\n }\n}\n\n// Lambert Conformal conic forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n // singular cases :\n if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) {\n lat = sign(lat) * (HALF_PI - 2 * EPSLN);\n }\n\n var con = Math.abs(Math.abs(lat) - HALF_PI);\n var ts, rh1;\n if (con > EPSLN) {\n ts = tsfnz(this.e, lat, Math.sin(lat));\n rh1 = this.a * this.f0 * Math.pow(ts, this.ns);\n }\n else {\n con = lat * this.ns;\n if (con <= 0) {\n return null;\n }\n rh1 = 0;\n }\n var theta = this.ns * adjust_lon(lon - this.long0);\n p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0;\n p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0;\n\n return p;\n}\n\n// Lambert Conformal Conic inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n\n var rh1, con, ts;\n var lat, lon;\n var x = (p.x - this.x0) / this.k0;\n var y = (this.rh - (p.y - this.y0) / this.k0);\n if (this.ns > 0) {\n rh1 = Math.sqrt(x * x + y * y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(x * x + y * y);\n con = -1;\n }\n var theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2((con * x), (con * y));\n }\n if ((rh1 !== 0) || (this.ns > 0)) {\n con = 1 / this.ns;\n ts = Math.pow((rh1 / (this.a * this.f0)), con);\n lat = phi2z(this.e, ts);\n if (lat === -9999) {\n return null;\n }\n }\n else {\n lat = -HALF_PI;\n }\n lon = adjust_lon(theta / this.ns + this.long0);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\n \"Lambert Tangential Conformal Conic Projection\",\n \"Lambert_Conformal_Conic\",\n \"Lambert_Conformal_Conic_1SP\",\n \"Lambert_Conformal_Conic_2SP\",\n \"lcc\",\n \"Lambert Conic Conformal (1SP)\",\n \"Lambert Conic Conformal (2SP)\"\n];\n\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n this.a = 6377397.155;\n this.es = 0.006674372230614;\n this.e = Math.sqrt(this.es);\n if (!this.lat0) {\n this.lat0 = 0.863937979737193;\n }\n if (!this.long0) {\n this.long0 = 0.7417649320975901 - 0.308341501185665;\n }\n /* if scale not set default to 0.9999 */\n if (!this.k0) {\n this.k0 = 0.9999;\n }\n this.s45 = 0.785398163397448; /* 45 */\n this.s90 = 2 * this.s45;\n this.fi0 = this.lat0;\n this.e2 = this.es;\n this.e = Math.sqrt(this.e2);\n this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2));\n this.uq = 1.04216856380474;\n this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa);\n this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2);\n this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g;\n this.k1 = this.k0;\n this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2));\n this.s0 = 1.37008346281555;\n this.n = Math.sin(this.s0);\n this.ro0 = this.k1 * this.n0 / Math.tan(this.s0);\n this.ad = this.s90 - this.uq;\n}\n\n/* ellipsoid */\n/* calculate xy from lat/lon */\n/* Constants, identical to inverse transform function */\nexport function forward(p) {\n var gfi, u, deltav, s, d, eps, ro;\n var lon = p.x;\n var lat = p.y;\n var delta_lon = adjust_lon(lon - this.long0);\n /* Transformation */\n gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2));\n u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45);\n deltav = -delta_lon * this.alfa;\n s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav));\n d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s));\n eps = this.n * d;\n ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n);\n p.y = ro * Math.cos(eps) / 1;\n p.x = ro * Math.sin(eps) / 1;\n\n if (!this.czech) {\n p.y *= -1;\n p.x *= -1;\n }\n return (p);\n}\n\n/* calculate lat/lon from xy */\nexport function inverse(p) {\n var u, deltav, s, d, eps, ro, fi1;\n var ok;\n\n /* Transformation */\n /* revert y, x*/\n var tmp = p.x;\n p.x = p.y;\n p.y = tmp;\n if (!this.czech) {\n p.y *= -1;\n p.x *= -1;\n }\n ro = Math.sqrt(p.x * p.x + p.y * p.y);\n eps = Math.atan2(p.y, p.x);\n d = eps / Math.sin(this.s0);\n s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45);\n u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d));\n deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u));\n p.x = this.long0 - deltav / this.alfa;\n fi1 = u;\n ok = 0;\n var iter = 0;\n do {\n p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45);\n if (Math.abs(fi1 - p.y) < 0.0000000001) {\n ok = 1;\n }\n fi1 = p.y;\n iter += 1;\n } while (ok === 0 && iter < 15);\n if (iter >= 15) {\n return null;\n }\n\n return (p);\n}\n\nexport var names = [\"Krovak\", \"krovak\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(e0, e1, e2, e3, phi) {\n return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi));\n}","export default function(x) {\n return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x)));\n}","export default function(x) {\n return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x)));\n}","export default function(x) {\n return (0.05859375 * x * x * (1 + 0.75 * x));\n}","export default function(x) {\n return (x * x * x * (35 / 3072));\n}","export default function(a, e, sinphi) {\n var temp = e * sinphi;\n return a / Math.sqrt(1 - temp * temp);\n}","import {HALF_PI} from '../constants/values';\nimport sign from './sign';\n\nexport default function(x) {\n return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI));\n}\n","export default function(ml, e0, e1, e2, e3) {\n var phi;\n var dphi;\n\n phi = ml / e0;\n for (var i = 0; i < 15; i++) {\n dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi));\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n\n //..reportError(\"IMLFN-CONV:Latitude failed to converge after 15 iterations\");\n return NaN;\n}","import mlfn from '../common/mlfn';\nimport e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport gN from '../common/gN';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport imlfn from '../common/imlfn';\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nexport function init() {\n if (!this.sphere) {\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n }\n}\n\n/* Cassini forward equations--mapping lat,long to x,y\n -----------------------------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var x, y;\n var lam = p.x;\n var phi = p.y;\n lam = adjust_lon(lam - this.long0);\n\n if (this.sphere) {\n x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam));\n y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0);\n }\n else {\n //ellipsoid\n var sinphi = Math.sin(phi);\n var cosphi = Math.cos(phi);\n var nl = gN(this.a, this.e, sinphi);\n var tl = Math.tan(phi) * Math.tan(phi);\n var al = lam * Math.cos(phi);\n var asq = al * al;\n var cl = this.es * cosphi * cosphi / (1 - this.es);\n var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n\n x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120));\n y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24);\n\n\n }\n\n p.x = x + this.x0;\n p.y = y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var x = p.x / this.a;\n var y = p.y / this.a;\n var phi, lam;\n\n if (this.sphere) {\n var dd = y + this.lat0;\n phi = Math.asin(Math.sin(dd) * Math.cos(x));\n lam = Math.atan2(Math.tan(x), Math.cos(dd));\n }\n else {\n /* ellipsoid */\n var ml1 = this.ml0 / this.a + y;\n var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3);\n if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) {\n p.x = this.long0;\n p.y = HALF_PI;\n if (y < 0) {\n p.y *= -1;\n }\n return p;\n }\n var nl1 = gN(this.a, this.e, Math.sin(phi1));\n\n var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es);\n var tl1 = Math.pow(Math.tan(phi1), 2);\n var dl = x * this.a / nl1;\n var dsq = dl * dl;\n phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24);\n lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1);\n\n }\n\n p.x = adjust_lon(lam + this.long0);\n p.y = adjust_lat(phi);\n return p;\n\n}\n\nexport var names = [\"Cassini\", \"Cassini_Soldner\", \"cass\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(eccent, sinphi) {\n var con;\n if (eccent > 1.0e-7) {\n con = eccent * sinphi;\n return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con))));\n }\n else {\n return (2 * sinphi);\n }\n}","\nimport {HALF_PI, EPSLN, FORTPI} from '../constants/values';\n\nimport qsfnz from '../common/qsfnz';\nimport adjust_lon from '../common/adjust_lon';\n\n/*\n reference\n \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n */\n\nexport var S_POLE = 1;\n\nexport var N_POLE = 2;\nexport var EQUIT = 3;\nexport var OBLIQ = 4;\n\n/* Initialize the Lambert Azimuthal Equal Area projection\n ------------------------------------------------------*/\nexport function init() {\n var t = Math.abs(this.lat0);\n if (Math.abs(t - HALF_PI) < EPSLN) {\n this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE;\n }\n else if (Math.abs(t) < EPSLN) {\n this.mode = this.EQUIT;\n }\n else {\n this.mode = this.OBLIQ;\n }\n if (this.es > 0) {\n var sinphi;\n\n this.qp = qsfnz(this.e, 1);\n this.mmf = 0.5 / (1 - this.es);\n this.apa = authset(this.es);\n switch (this.mode) {\n case this.N_POLE:\n this.dd = 1;\n break;\n case this.S_POLE:\n this.dd = 1;\n break;\n case this.EQUIT:\n this.rq = Math.sqrt(0.5 * this.qp);\n this.dd = 1 / this.rq;\n this.xmf = 1;\n this.ymf = 0.5 * this.qp;\n break;\n case this.OBLIQ:\n this.rq = Math.sqrt(0.5 * this.qp);\n sinphi = Math.sin(this.lat0);\n this.sinb1 = qsfnz(this.e, sinphi) / this.qp;\n this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1);\n this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1);\n this.ymf = (this.xmf = this.rq) / this.dd;\n this.xmf *= this.dd;\n break;\n }\n }\n else {\n if (this.mode === this.OBLIQ) {\n this.sinph0 = Math.sin(this.lat0);\n this.cosph0 = Math.cos(this.lat0);\n }\n }\n}\n\n/* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y\n -----------------------------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi;\n var lam = p.x;\n var phi = p.y;\n\n lam = adjust_lon(lam - this.long0);\n if (this.sphere) {\n sinphi = Math.sin(phi);\n cosphi = Math.cos(phi);\n coslam = Math.cos(lam);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;\n if (y <= EPSLN) {\n return null;\n }\n y = Math.sqrt(2 / y);\n x = y * cosphi * Math.sin(lam);\n y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;\n }\n else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n if (this.mode === this.N_POLE) {\n coslam = -coslam;\n }\n if (Math.abs(phi + this.lat0) < EPSLN) {\n return null;\n }\n y = FORTPI - phi * 0.5;\n y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y));\n x = y * Math.sin(lam);\n y *= coslam;\n }\n }\n else {\n sinb = 0;\n cosb = 0;\n b = 0;\n coslam = Math.cos(lam);\n sinlam = Math.sin(lam);\n sinphi = Math.sin(phi);\n q = qsfnz(this.e, sinphi);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n sinb = q / this.qp;\n cosb = Math.sqrt(1 - sinb * sinb);\n }\n switch (this.mode) {\n case this.OBLIQ:\n b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam;\n break;\n case this.EQUIT:\n b = 1 + cosb * coslam;\n break;\n case this.N_POLE:\n b = HALF_PI + phi;\n q = this.qp - q;\n break;\n case this.S_POLE:\n b = phi - HALF_PI;\n q = this.qp + q;\n break;\n }\n if (Math.abs(b) < EPSLN) {\n return null;\n }\n switch (this.mode) {\n case this.OBLIQ:\n case this.EQUIT:\n b = Math.sqrt(2 / b);\n if (this.mode === this.OBLIQ) {\n y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam);\n }\n else {\n y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf;\n }\n x = this.xmf * b * cosb * sinlam;\n break;\n case this.N_POLE:\n case this.S_POLE:\n if (q >= 0) {\n x = (b = Math.sqrt(q)) * sinlam;\n y = coslam * ((this.mode === this.S_POLE) ? b : -b);\n }\n else {\n x = y = 0;\n }\n break;\n }\n }\n\n p.x = this.a * x + this.x0;\n p.y = this.a * y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var x = p.x / this.a;\n var y = p.y / this.a;\n var lam, phi, cCe, sCe, q, rho, ab;\n if (this.sphere) {\n var cosz = 0,\n rh, sinz = 0;\n\n rh = Math.sqrt(x * x + y * y);\n phi = rh * 0.5;\n if (phi > 1) {\n return null;\n }\n phi = 2 * Math.asin(phi);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n sinz = Math.sin(phi);\n cosz = Math.cos(phi);\n }\n switch (this.mode) {\n case this.EQUIT:\n phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh);\n x *= sinz;\n y = cosz * rh;\n break;\n case this.OBLIQ:\n phi = (Math.abs(rh) <= EPSLN) ? this.lat0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh);\n x *= sinz * this.cosph0;\n y = (cosz - Math.sin(phi) * this.sinph0) * rh;\n break;\n case this.N_POLE:\n y = -y;\n phi = HALF_PI - phi;\n break;\n case this.S_POLE:\n phi -= HALF_PI;\n break;\n }\n lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y);\n }\n else {\n ab = 0;\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n x /= this.dd;\n y *= this.dd;\n rho = Math.sqrt(x * x + y * y);\n if (rho < EPSLN) {\n p.x = this.long0;\n p.y = this.lat0;\n return p;\n }\n sCe = 2 * Math.asin(0.5 * rho / this.rq);\n cCe = Math.cos(sCe);\n x *= (sCe = Math.sin(sCe));\n if (this.mode === this.OBLIQ) {\n ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho;\n q = this.qp * ab;\n y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe;\n }\n else {\n ab = y * sCe / rho;\n q = this.qp * ab;\n y = rho * cCe;\n }\n }\n else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n if (this.mode === this.N_POLE) {\n y = -y;\n }\n q = (x * x + y * y);\n if (!q) {\n p.x = this.long0;\n p.y = this.lat0;\n return p;\n }\n ab = 1 - q / this.qp;\n if (this.mode === this.S_POLE) {\n ab = -ab;\n }\n }\n lam = Math.atan2(x, y);\n phi = authlat(Math.asin(ab), this.apa);\n }\n\n p.x = adjust_lon(this.long0 + lam);\n p.y = phi;\n return p;\n}\n\n/* determine latitude from authalic latitude */\nvar P00 = 0.33333333333333333333;\n\nvar P01 = 0.17222222222222222222;\nvar P02 = 0.10257936507936507936;\nvar P10 = 0.06388888888888888888;\nvar P11 = 0.06640211640211640211;\nvar P20 = 0.01641501294219154443;\n\nfunction authset(es) {\n var t;\n var APA = [];\n APA[0] = es * P00;\n t = es * es;\n APA[0] += t * P01;\n APA[1] = t * P10;\n t *= es;\n APA[0] += t * P02;\n APA[1] += t * P11;\n APA[2] = t * P20;\n return APA;\n}\n\nfunction authlat(beta, APA) {\n var t = beta + beta;\n return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t));\n}\n\nexport var names = [\"Lambert Azimuthal Equal Area\", \"Lambert_Azimuthal_Equal_Area\", \"laea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n S_POLE: S_POLE,\n N_POLE: N_POLE,\n EQUIT: EQUIT,\n OBLIQ: OBLIQ\n};\n","export default function(x) {\n if (Math.abs(x) > 1) {\n x = (x > 1) ? 1 : -1;\n }\n return Math.asin(x);\n}","import msfnz from '../common/msfnz';\nimport qsfnz from '../common/qsfnz';\nimport adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN} from '../constants/values';\n\nexport function init() {\n\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2);\n this.e3 = Math.sqrt(this.es);\n\n this.sin_po = Math.sin(this.lat1);\n this.cos_po = Math.cos(this.lat1);\n this.t1 = this.sin_po;\n this.con = this.sin_po;\n this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po);\n this.qs1 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n this.sin_po = Math.sin(this.lat2);\n this.cos_po = Math.cos(this.lat2);\n this.t2 = this.sin_po;\n this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po);\n this.qs2 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n this.sin_po = Math.sin(this.lat0);\n this.cos_po = Math.cos(this.lat0);\n this.t3 = this.sin_po;\n this.qs0 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1);\n }\n else {\n this.ns0 = this.con;\n }\n this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1;\n this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0;\n}\n\n/* Albers Conical Equal Area forward equations--mapping lat,long to x,y\n -------------------------------------------------------------------*/\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n this.sin_phi = Math.sin(lat);\n this.cos_phi = Math.cos(lat);\n\n var qs = qsfnz(this.e3, this.sin_phi, this.cos_phi);\n var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0;\n var theta = this.ns0 * adjust_lon(lon - this.long0);\n var x = rh1 * Math.sin(theta) + this.x0;\n var y = this.rh - rh1 * Math.cos(theta) + this.y0;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh1, qs, con, theta, lon, lat;\n\n p.x -= this.x0;\n p.y = this.rh - p.y + this.y0;\n if (this.ns0 >= 0) {\n rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n con = -1;\n }\n theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2(con * p.x, con * p.y);\n }\n con = rh1 * this.ns0 / this.a;\n if (this.sphere) {\n lat = Math.asin((this.c - con * con) / (2 * this.ns0));\n }\n else {\n qs = (this.c - con * con) / this.ns0;\n lat = this.phi1z(this.e3, qs);\n }\n\n lon = adjust_lon(theta / this.ns0 + this.long0);\n p.x = lon;\n p.y = lat;\n return p;\n}\n\n/* Function to compute phi1, the latitude for the inverse of the\n Albers Conical Equal-Area projection.\n-------------------------------------------*/\nexport function phi1z(eccent, qs) {\n var sinphi, cosphi, con, com, dphi;\n var phi = asinz(0.5 * qs);\n if (eccent < EPSLN) {\n return phi;\n }\n\n var eccnts = eccent * eccent;\n for (var i = 1; i <= 25; i++) {\n sinphi = Math.sin(phi);\n cosphi = Math.cos(phi);\n con = eccent * sinphi;\n com = 1 - con * con;\n dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n phi = phi + dphi;\n if (Math.abs(dphi) <= 1e-7) {\n return phi;\n }\n }\n return null;\n}\n\nexport var names = [\"Albers_Conic_Equal_Area\", \"Albers\", \"aea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n phi1z: phi1z\n};\n","import adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN} from '../constants/values';\n\n/*\n reference:\n Wolfram Mathworld \"Gnomonic Projection\"\n http://mathworld.wolfram.com/GnomonicProjection.html\n Accessed: 12th November 2009\n */\nexport function init() {\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.sin_p14 = Math.sin(this.lat0);\n this.cos_p14 = Math.cos(this.lat0);\n // Approximation for projecting points to the horizon (infinity)\n this.infinity_dist = 1000 * this.a;\n this.rc = 1;\n}\n\n/* Gnomonic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var sinphi, cosphi; /* sin and cos value */\n var dlon; /* delta longitude value */\n var coslon; /* cos of longitude */\n var ksp; /* scale factor */\n var g;\n var x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n dlon = adjust_lon(lon - this.long0);\n\n sinphi = Math.sin(lat);\n cosphi = Math.cos(lat);\n\n coslon = Math.cos(dlon);\n g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;\n ksp = 1;\n if ((g > 0) || (Math.abs(g) <= EPSLN)) {\n x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g;\n y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g;\n }\n else {\n\n // Point is in the opposing hemisphere and is unprojectable\n // We still need to return a reasonable point, so we project\n // to infinity, on a bearing\n // equivalent to the northern hemisphere equivalent\n // This is a reasonable approximation for short shapes and lines that\n // straddle the horizon.\n\n x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon);\n y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);\n\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh; /* Rho */\n var sinc, cosc;\n var c;\n var lon, lat;\n\n /* Inverse equations\n -----------------*/\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n p.x /= this.k0;\n p.y /= this.k0;\n\n if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) {\n c = Math.atan2(rh, this.rc);\n sinc = Math.sin(c);\n cosc = Math.cos(c);\n\n lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh);\n lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc);\n lon = adjust_lon(this.long0 + lon);\n }\n else {\n lat = this.phic0;\n lon = 0;\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"gnom\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport qsfnz from '../common/qsfnz';\nimport msfnz from '../common/msfnz';\nimport iqsfnz from '../common/iqsfnz';\n\n/*\n reference:\n \"Cartographic Projection Procedures for the UNIX Environment-\n A User's Manual\" by Gerald I. Evenden,\n USGS Open File Report 90-284and Release 4 Interim Reports (2003)\n*/\nexport function init() {\n //no-op\n if (!this.sphere) {\n this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n }\n}\n\n/* Cylindrical Equal Area forward equations--mapping lat,long to x,y\n ------------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var x, y;\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n if (this.sphere) {\n x = this.x0 + this.a * dlon * Math.cos(this.lat_ts);\n y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts);\n }\n else {\n var qs = qsfnz(this.e, Math.sin(lat));\n x = this.x0 + this.a * this.k0 * dlon;\n y = this.y0 + this.a * qs * 0.5 / this.k0;\n }\n\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Cylindrical Equal Area inverse equations--mapping x,y to lat/long\n ------------------------------------------------------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var lon, lat;\n\n if (this.sphere) {\n lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts));\n lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts));\n }\n else {\n lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a);\n lon = adjust_lon(this.long0 + p.x / (this.a * this.k0));\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"cea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, q) {\n var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent));\n if (Math.abs(Math.abs(q) - temp) < 1.0E-6) {\n if (q < 0) {\n return (-1 * HALF_PI);\n }\n else {\n return HALF_PI;\n }\n }\n //var phi = 0.5* q/(1-eccent*eccent);\n var phi = Math.asin(0.5 * q);\n var dphi;\n var sin_phi;\n var cos_phi;\n var con;\n for (var i = 0; i < 30; i++) {\n sin_phi = Math.sin(phi);\n cos_phi = Math.cos(phi);\n con = eccent * sin_phi;\n dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n\n //console.log(\"IQSFN-CONV:Latitude failed to converge after 30 iterations\");\n return NaN;\n}\n","import adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\n\nexport function init() {\n\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.lat0 = this.lat0 || 0;\n this.long0 = this.long0 || 0;\n this.lat_ts = this.lat_ts || 0;\n this.title = this.title || \"Equidistant Cylindrical (Plate Carre)\";\n\n this.rc = Math.cos(this.lat_ts);\n}\n\n// forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n var dlon = adjust_lon(lon - this.long0);\n var dlat = adjust_lat(lat - this.lat0);\n p.x = this.x0 + (this.a * dlon * this.rc);\n p.y = this.y0 + (this.a * dlat);\n return p;\n}\n\n// inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n\n var x = p.x;\n var y = p.y;\n\n p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc)));\n p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a)));\n return p;\n}\n\nexport var names = [\"Equirectangular\", \"Equidistant_Cylindrical\", \"eqc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport mlfn from '../common/mlfn';\nimport {EPSLN} from '../constants/values';\n\nimport gN from '../common/gN';\nvar MAX_ITER = 20;\n\nexport function init() {\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles\n this.e = Math.sqrt(this.es);\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas\n}\n\n/* Polyconic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var x, y, el;\n var dlon = adjust_lon(lon - this.long0);\n el = dlon * Math.sin(lat);\n if (this.sphere) {\n if (Math.abs(lat) <= EPSLN) {\n x = this.a * dlon;\n y = -1 * this.a * this.lat0;\n }\n else {\n x = this.a * Math.sin(el) / Math.tan(lat);\n y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat));\n }\n }\n else {\n if (Math.abs(lat) <= EPSLN) {\n x = this.a * dlon;\n y = -1 * this.ml0;\n }\n else {\n var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat);\n x = nl * Math.sin(el);\n y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el));\n }\n\n }\n p.x = x + this.x0;\n p.y = y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n var lon, lat, x, y, i;\n var al, bl;\n var phi, dphi;\n x = p.x - this.x0;\n y = p.y - this.y0;\n\n if (this.sphere) {\n if (Math.abs(y + this.a * this.lat0) <= EPSLN) {\n lon = adjust_lon(x / this.a + this.long0);\n lat = 0;\n }\n else {\n al = this.lat0 + y / this.a;\n bl = x * x / this.a / this.a + al * al;\n phi = al;\n var tanphi;\n for (i = MAX_ITER; i; --i) {\n tanphi = Math.tan(phi);\n dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1);\n phi += dphi;\n if (Math.abs(dphi) <= EPSLN) {\n lat = phi;\n break;\n }\n }\n lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat));\n }\n }\n else {\n if (Math.abs(y + this.ml0) <= EPSLN) {\n lat = 0;\n lon = adjust_lon(this.long0 + x / this.a);\n }\n else {\n\n al = (this.ml0 + y) / this.a;\n bl = x * x / this.a / this.a + al * al;\n phi = al;\n var cl, mln, mlnp, ma;\n var con;\n for (i = MAX_ITER; i; --i) {\n con = this.e * Math.sin(phi);\n cl = Math.sqrt(1 - con * con) * Math.tan(phi);\n mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi);\n ma = mln / this.a;\n dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp);\n phi -= dphi;\n if (Math.abs(dphi) <= EPSLN) {\n lat = phi;\n break;\n }\n }\n\n //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0);\n cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat);\n lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat));\n }\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Polyconic\", \"poly\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {SEC_TO_RAD} from '../constants/values';\n\n/*\n reference\n Department of Land and Survey Technical Circular 1973/32\n http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf\n OSG Technical Report 4.1\n http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf\n */\n\n/**\n * iterations: Number of iterations to refine inverse transform.\n * 0 -> km accuracy\n * 1 -> m accuracy -- suitable for most mapping applications\n * 2 -> mm accuracy\n */\nexport var iterations = 1;\n\nexport function init() {\n this.A = [];\n this.A[1] = 0.6399175073;\n this.A[2] = -0.1358797613;\n this.A[3] = 0.063294409;\n this.A[4] = -0.02526853;\n this.A[5] = 0.0117879;\n this.A[6] = -0.0055161;\n this.A[7] = 0.0026906;\n this.A[8] = -0.001333;\n this.A[9] = 0.00067;\n this.A[10] = -0.00034;\n\n this.B_re = [];\n this.B_im = [];\n this.B_re[1] = 0.7557853228;\n this.B_im[1] = 0;\n this.B_re[2] = 0.249204646;\n this.B_im[2] = 0.003371507;\n this.B_re[3] = -0.001541739;\n this.B_im[3] = 0.041058560;\n this.B_re[4] = -0.10162907;\n this.B_im[4] = 0.01727609;\n this.B_re[5] = -0.26623489;\n this.B_im[5] = -0.36249218;\n this.B_re[6] = -0.6870983;\n this.B_im[6] = -1.1651967;\n\n this.C_re = [];\n this.C_im = [];\n this.C_re[1] = 1.3231270439;\n this.C_im[1] = 0;\n this.C_re[2] = -0.577245789;\n this.C_im[2] = -0.007809598;\n this.C_re[3] = 0.508307513;\n this.C_im[3] = -0.112208952;\n this.C_re[4] = -0.15094762;\n this.C_im[4] = 0.18200602;\n this.C_re[5] = 1.01418179;\n this.C_im[5] = 1.64497696;\n this.C_re[6] = 1.9660549;\n this.C_im[6] = 2.5127645;\n\n this.D = [];\n this.D[1] = 1.5627014243;\n this.D[2] = 0.5185406398;\n this.D[3] = -0.03333098;\n this.D[4] = -0.1052906;\n this.D[5] = -0.0368594;\n this.D[6] = 0.007317;\n this.D[7] = 0.01220;\n this.D[8] = 0.00394;\n this.D[9] = -0.0013;\n}\n\n/**\n New Zealand Map Grid Forward - long/lat to x/y\n long/lat in radians\n */\nexport function forward(p) {\n var n;\n var lon = p.x;\n var lat = p.y;\n\n var delta_lat = lat - this.lat0;\n var delta_lon = lon - this.long0;\n\n // 1. Calculate d_phi and d_psi ... // and d_lambda\n // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians.\n var d_phi = delta_lat / SEC_TO_RAD * 1E-5;\n var d_lambda = delta_lon;\n var d_phi_n = 1; // d_phi^0\n\n var d_psi = 0;\n for (n = 1; n <= 10; n++) {\n d_phi_n = d_phi_n * d_phi;\n d_psi = d_psi + this.A[n] * d_phi_n;\n }\n\n // 2. Calculate theta\n var th_re = d_psi;\n var th_im = d_lambda;\n\n // 3. Calculate z\n var th_n_re = 1;\n var th_n_im = 0; // theta^0\n var th_n_re1;\n var th_n_im1;\n\n var z_re = 0;\n var z_im = 0;\n for (n = 1; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im;\n z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im;\n }\n\n // 4. Calculate easting and northing\n p.x = (z_im * this.a) + this.x0;\n p.y = (z_re * this.a) + this.y0;\n\n return p;\n}\n\n/**\n New Zealand Map Grid Inverse - x/y to long/lat\n */\nexport function inverse(p) {\n var n;\n var x = p.x;\n var y = p.y;\n\n var delta_x = x - this.x0;\n var delta_y = y - this.y0;\n\n // 1. Calculate z\n var z_re = delta_y / this.a;\n var z_im = delta_x / this.a;\n\n // 2a. Calculate theta - first approximation gives km accuracy\n var z_n_re = 1;\n var z_n_im = 0; // z^0\n var z_n_re1;\n var z_n_im1;\n\n var th_re = 0;\n var th_im = 0;\n for (n = 1; n <= 6; n++) {\n z_n_re1 = z_n_re * z_re - z_n_im * z_im;\n z_n_im1 = z_n_im * z_re + z_n_re * z_im;\n z_n_re = z_n_re1;\n z_n_im = z_n_im1;\n th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im;\n th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im;\n }\n\n // 2b. Iterate to refine the accuracy of the calculation\n // 0 iterations gives km accuracy\n // 1 iteration gives m accuracy -- good enough for most mapping applications\n // 2 iterations bives mm accuracy\n for (var i = 0; i < this.iterations; i++) {\n var th_n_re = th_re;\n var th_n_im = th_im;\n var th_n_re1;\n var th_n_im1;\n\n var num_re = z_re;\n var num_im = z_im;\n for (n = 2; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n }\n\n th_n_re = 1;\n th_n_im = 0;\n var den_re = this.B_re[1];\n var den_im = this.B_im[1];\n for (n = 2; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n }\n\n // Complex division\n var den2 = den_re * den_re + den_im * den_im;\n th_re = (num_re * den_re + num_im * den_im) / den2;\n th_im = (num_im * den_re - num_re * den_im) / den2;\n }\n\n // 3. Calculate d_phi ... // and d_lambda\n var d_psi = th_re;\n var d_lambda = th_im;\n var d_psi_n = 1; // d_psi^0\n\n var d_phi = 0;\n for (n = 1; n <= 9; n++) {\n d_psi_n = d_psi_n * d_psi;\n d_phi = d_phi + this.D[n] * d_psi_n;\n }\n\n // 4. Calculate latitude and longitude\n // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians.\n var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5);\n var lon = this.long0 + d_lambda;\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"New_Zealand_Map_Grid\", \"nzmg\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\n/*\n reference\n \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n */\n\n\n/* Initialize the Miller Cylindrical projection\n -------------------------------------------*/\nexport function init() {\n //no-op\n}\n\n/* Miller Cylindrical forward equations--mapping lat,long to x,y\n ------------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n var x = this.x0 + this.a * dlon;\n var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Miller Cylindrical inverse equations--mapping x,y to lat/long\n ------------------------------------------------------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n\n var lon = adjust_lon(this.long0 + p.x / this.a);\n var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Miller_Cylindrical\", \"mill\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport pj_enfn from '../common/pj_enfn';\nvar MAX_ITER = 20;\nimport pj_mlfn from '../common/pj_mlfn';\nimport pj_inv_mlfn from '../common/pj_inv_mlfn';\nimport {EPSLN, HALF_PI} from '../constants/values';\n\nimport asinz from '../common/asinz';\n\n\nexport function init() {\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n\n\n if (!this.sphere) {\n this.en = pj_enfn(this.es);\n }\n else {\n this.n = 1;\n this.m = 0;\n this.es = 0;\n this.C_y = Math.sqrt((this.m + 1) / this.n);\n this.C_x = this.C_y / (this.m + 1);\n }\n\n}\n\n/* Sinusoidal forward equations--mapping lat,long to x,y\n -----------------------------------------------------*/\nexport function forward(p) {\n var x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n lon = adjust_lon(lon - this.long0);\n\n if (this.sphere) {\n if (!this.m) {\n lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat;\n }\n else {\n var k = this.n * Math.sin(lat);\n for (var i = MAX_ITER; i; --i) {\n var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat));\n lat -= V;\n if (Math.abs(V) < EPSLN) {\n break;\n }\n }\n }\n x = this.a * this.C_x * lon * (this.m + Math.cos(lat));\n y = this.a * this.C_y * lat;\n\n }\n else {\n\n var s = Math.sin(lat);\n var c = Math.cos(lat);\n y = this.a * pj_mlfn(lat, s, c, this.en);\n x = this.a * lon * c / Math.sqrt(1 - this.es * s * s);\n }\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var lat, temp, lon, s;\n\n p.x -= this.x0;\n lon = p.x / this.a;\n p.y -= this.y0;\n lat = p.y / this.a;\n\n if (this.sphere) {\n lat /= this.C_y;\n lon = lon / (this.C_x * (this.m + Math.cos(lat)));\n if (this.m) {\n lat = asinz((this.m * lat + Math.sin(lat)) / this.n);\n }\n else if (this.n !== 1) {\n lat = asinz(Math.sin(lat) / this.n);\n }\n lon = adjust_lon(lon + this.long0);\n lat = adjust_lat(lat);\n }\n else {\n lat = pj_inv_mlfn(p.y / this.a, this.es, this.en);\n s = Math.abs(lat);\n if (s < HALF_PI) {\n s = Math.sin(lat);\n temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat));\n //temp = this.long0 + p.x / (this.a * Math.cos(lat));\n lon = adjust_lon(temp);\n }\n else if ((s - EPSLN) < HALF_PI) {\n lon = this.long0;\n }\n }\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Sinusoidal\", \"sinu\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nexport function init() {}\nimport {EPSLN} from '../constants/values';\n/* Mollweide forward equations--mapping lat,long to x,y\n ----------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var lon = p.x;\n var lat = p.y;\n\n var delta_lon = adjust_lon(lon - this.long0);\n var theta = lat;\n var con = Math.PI * Math.sin(lat);\n\n /* Iterate using the Newton-Raphson method to find theta\n -----------------------------------------------------*/\n while (true) {\n var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta));\n theta += delta_theta;\n if (Math.abs(delta_theta) < EPSLN) {\n break;\n }\n }\n theta /= 2;\n\n /* If the latitude is 90 deg, force the x coordinate to be \"0 + false easting\"\n this is done here because of precision problems with \"cos(theta)\"\n --------------------------------------------------------------------------*/\n if (Math.PI / 2 - Math.abs(lat) < EPSLN) {\n delta_lon = 0;\n }\n var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0;\n var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var theta;\n var arg;\n\n /* Inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n arg = p.y / (1.4142135623731 * this.a);\n\n /* Because of division by zero problems, 'arg' can not be 1. Therefore\n a number very close to one is used instead.\n -------------------------------------------------------------------*/\n if (Math.abs(arg) > 0.999999999999) {\n arg = 0.999999999999;\n }\n theta = Math.asin(arg);\n var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta))));\n if (lon < (-Math.PI)) {\n lon = -Math.PI;\n }\n if (lon > Math.PI) {\n lon = Math.PI;\n }\n arg = (2 * theta + Math.sin(2 * theta)) / Math.PI;\n if (Math.abs(arg) > 1) {\n arg = 1;\n }\n var lat = Math.asin(arg);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Mollweide\", \"moll\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport msfnz from '../common/msfnz';\nimport mlfn from '../common/mlfn';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport imlfn from '../common/imlfn';\nimport {EPSLN} from '../constants/values';\n\nexport function init() {\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n // Standard Parallels cannot be equal and on opposite sides of the equator\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n this.lat2 = this.lat2 || this.lat1;\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2);\n this.e = Math.sqrt(this.es);\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n\n this.sinphi = Math.sin(this.lat1);\n this.cosphi = Math.cos(this.lat1);\n\n this.ms1 = msfnz(this.e, this.sinphi, this.cosphi);\n this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1);\n\n if (Math.abs(this.lat1 - this.lat2) < EPSLN) {\n this.ns = this.sinphi;\n }\n else {\n this.sinphi = Math.sin(this.lat2);\n this.cosphi = Math.cos(this.lat2);\n this.ms2 = msfnz(this.e, this.sinphi, this.cosphi);\n this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2);\n this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1);\n }\n this.g = this.ml1 + this.ms1 / this.ns;\n this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n this.rh = this.a * (this.g - this.ml0);\n}\n\n/* Equidistant Conic forward equations--mapping lat,long to x,y\n -----------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var rh1;\n\n /* Forward equations\n -----------------*/\n if (this.sphere) {\n rh1 = this.a * (this.g - lat);\n }\n else {\n var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat);\n rh1 = this.a * (this.g - ml);\n }\n var theta = this.ns * adjust_lon(lon - this.long0);\n var x = this.x0 + rh1 * Math.sin(theta);\n var y = this.y0 + this.rh - rh1 * Math.cos(theta);\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y = this.rh - p.y + this.y0;\n var con, rh1, lat, lon;\n if (this.ns >= 0) {\n rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n con = -1;\n }\n var theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2(con * p.x, con * p.y);\n }\n\n if (this.sphere) {\n lon = adjust_lon(this.long0 + theta / this.ns);\n lat = adjust_lat(this.g - rh1 / this.a);\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n var ml = this.g - rh1 / this.a;\n lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3);\n lon = adjust_lon(this.long0 + theta / this.ns);\n p.x = lon;\n p.y = lat;\n return p;\n }\n\n}\n\nexport var names = [\"Equidistant_Conic\", \"eqdc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nimport asinz from '../common/asinz';\n\n/* Initialize the Van Der Grinten projection\n ----------------------------------------*/\nexport function init() {\n //this.R = 6370997; //Radius of earth\n this.R = this.a;\n}\n\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n var x, y;\n\n if (Math.abs(lat) <= EPSLN) {\n x = this.x0 + this.R * dlon;\n y = this.y0;\n }\n var theta = asinz(2 * Math.abs(lat / Math.PI));\n if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) {\n x = this.x0;\n if (lat >= 0) {\n y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta);\n }\n else {\n y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta);\n }\n // return(OK);\n }\n var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI));\n var asq = al * al;\n var sinth = Math.sin(theta);\n var costh = Math.cos(theta);\n\n var g = costh / (sinth + costh - 1);\n var gsq = g * g;\n var m = g * (2 / sinth - 1);\n var msq = m * m;\n var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq);\n if (dlon < 0) {\n con = -con;\n }\n x = this.x0 + con;\n //con = Math.abs(con / (Math.PI * this.R));\n var q = asq + g;\n con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq);\n if (lat >= 0) {\n //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n y = this.y0 + con;\n }\n else {\n //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n y = this.y0 - con;\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Van Der Grinten inverse equations--mapping x,y to lat/long\n ---------------------------------------------------------*/\nexport function inverse(p) {\n var lon, lat;\n var xx, yy, xys, c1, c2, c3;\n var a1;\n var m1;\n var con;\n var th1;\n var d;\n\n /* inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n con = Math.PI * this.R;\n xx = p.x / con;\n yy = p.y / con;\n xys = xx * xx + yy * yy;\n c1 = -Math.abs(yy) * (1 + xys);\n c2 = c1 - 2 * yy * yy + xx * xx;\n c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys;\n d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27;\n a1 = (c1 - c2 * c2 / 3 / c3) / c3;\n m1 = 2 * Math.sqrt(-a1 / 3);\n con = ((3 * d) / a1) / m1;\n if (Math.abs(con) > 1) {\n if (con >= 0) {\n con = 1;\n }\n else {\n con = -1;\n }\n }\n th1 = Math.acos(con) / 3;\n if (p.y >= 0) {\n lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n }\n else {\n lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n }\n\n if (Math.abs(xx) < EPSLN) {\n lon = this.long0;\n }\n else {\n lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx);\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Van_der_Grinten_I\", \"VanDerGrinten\", \"vandg\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nimport mlfn from '../common/mlfn';\nimport e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport gN from '../common/gN';\nimport asinz from '../common/asinz';\nimport imlfn from '../common/imlfn';\n\n\n\nexport function init() {\n this.sin_p12 = Math.sin(this.lat0);\n this.cos_p12 = Math.cos(this.lat0);\n}\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var sinphi = Math.sin(p.y);\n var cosphi = Math.cos(p.y);\n var dlon = adjust_lon(lon - this.long0);\n var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5;\n if (this.sphere) {\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North Pole case\n p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon);\n p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon);\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South Pole case\n p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon);\n p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon);\n return p;\n }\n else {\n //default case\n cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon);\n c = Math.acos(cos_c);\n kp = c ? c / Math.sin(c) : 1;\n p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon);\n p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon));\n return p;\n }\n }\n else {\n e0 = e0fn(this.es);\n e1 = e1fn(this.es);\n e2 = e2fn(this.es);\n e3 = e3fn(this.es);\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North Pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon);\n p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon);\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South Pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon);\n p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon);\n return p;\n }\n else {\n //Default case\n tanphi = sinphi / cosphi;\n Nl1 = gN(this.a, this.e, this.sin_p12);\n Nl = gN(this.a, this.e, sinphi);\n psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi));\n Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon));\n if (Az === 0) {\n s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n }\n else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) {\n s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n }\n else {\n s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az));\n }\n G = this.e * this.sin_p12 / Math.sqrt(1 - this.es);\n H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es);\n GH = G * H;\n Hs = H * H;\n s2 = s * s;\n s3 = s2 * s;\n s4 = s3 * s;\n s5 = s4 * s;\n c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH);\n p.x = this.x0 + c * Math.sin(Az);\n p.y = this.y0 + c * Math.cos(Az);\n return p;\n }\n }\n\n\n}\n\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F, sinpsi;\n if (this.sphere) {\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n if (rh > (2 * HALF_PI * this.a)) {\n return;\n }\n z = rh / this.a;\n\n sinz = Math.sin(z);\n cosz = Math.cos(z);\n\n lon = this.long0;\n if (Math.abs(rh) <= EPSLN) {\n lat = this.lat0;\n }\n else {\n lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh);\n con = Math.abs(this.lat0) - HALF_PI;\n if (Math.abs(con) <= EPSLN) {\n if (this.lat0 >= 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));\n }\n else {\n lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));\n }\n }\n else {\n /*con = cosz - this.sin_p12 * Math.sin(lat);\n if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) {\n //no-op, just keep the lon value as is\n } else {\n var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh));\n lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh)));\n }*/\n lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz));\n }\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n e0 = e0fn(this.es);\n e1 = e1fn(this.es);\n e2 = e2fn(this.es);\n e3 = e3fn(this.es);\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n M = Mlp - rh;\n lat = imlfn(M / this.a, e0, e1, e2, e3);\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n p.x = lon;\n p.y = lat;\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n M = rh - Mlp;\n\n lat = imlfn(M / this.a, e0, e1, e2, e3);\n lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n //default case\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n Az = Math.atan2(p.x, p.y);\n N1 = gN(this.a, this.e, this.sin_p12);\n cosAz = Math.cos(Az);\n tmp = this.e * this.cos_p12 * cosAz;\n A = -tmp * tmp / (1 - this.es);\n B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es);\n D = rh / N1;\n Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24;\n F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6;\n psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz);\n lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi)));\n sinpsi = Math.sin(psi);\n lat = Math.atan2((sinpsi - this.es * F * this.sin_p12) * Math.tan(psi), sinpsi * (1 - this.es));\n p.x = lon;\n p.y = lat;\n return p;\n }\n }\n\n}\n\nexport var names = [\"Azimuthal_Equidistant\", \"aeqd\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN, HALF_PI} from '../constants/values';\n\nexport function init() {\n //double temp; /* temporary variable */\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.sin_p14 = Math.sin(this.lat0);\n this.cos_p14 = Math.cos(this.lat0);\n}\n\n/* Orthographic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var sinphi, cosphi; /* sin and cos value */\n var dlon; /* delta longitude value */\n var coslon; /* cos of longitude */\n var ksp; /* scale factor */\n var g, x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n dlon = adjust_lon(lon - this.long0);\n\n sinphi = Math.sin(lat);\n cosphi = Math.cos(lat);\n\n coslon = Math.cos(dlon);\n g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;\n ksp = 1;\n if ((g > 0) || (Math.abs(g) <= EPSLN)) {\n x = this.a * ksp * cosphi * Math.sin(dlon);\n y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh; /* height above ellipsoid */\n var z; /* angle */\n var sinz, cosz; /* sin of z and cos of z */\n var con;\n var lon, lat;\n /* Inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n z = asinz(rh / this.a);\n\n sinz = Math.sin(z);\n cosz = Math.cos(z);\n\n lon = this.long0;\n if (Math.abs(rh) <= EPSLN) {\n lat = this.lat0;\n p.x = lon;\n p.y = lat;\n return p;\n }\n lat = asinz(cosz * this.sin_p14 + (p.y * sinz * this.cos_p14) / rh);\n con = Math.abs(this.lat0) - HALF_PI;\n if (Math.abs(con) <= EPSLN) {\n if (this.lat0 >= 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));\n }\n else {\n lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));\n }\n p.x = lon;\n p.y = lat;\n return p;\n }\n lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz), rh * this.cos_p14 * cosz - p.y * this.sin_p14 * sinz));\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"ortho\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","// QSC projection rewritten from the original PROJ4\n// https://github.com/OSGeo/proj.4/blob/master/src/PJ_qsc.c\n\nimport {EPSLN, TWO_PI, SPI, HALF_PI, FORTPI} from '../constants/values';\n\n/* constants */\nvar FACE_ENUM = {\n FRONT: 1,\n RIGHT: 2,\n BACK: 3,\n LEFT: 4,\n TOP: 5,\n BOTTOM: 6\n};\n\nvar AREA_ENUM = {\n AREA_0: 1,\n AREA_1: 2,\n AREA_2: 3,\n AREA_3: 4\n};\n\nexport function init() {\n\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.lat0 = this.lat0 || 0;\n this.long0 = this.long0 || 0;\n this.lat_ts = this.lat_ts || 0;\n this.title = this.title || \"Quadrilateralized Spherical Cube\";\n\n /* Determine the cube face from the center of projection. */\n if (this.lat0 >= HALF_PI - FORTPI / 2.0) {\n this.face = FACE_ENUM.TOP;\n } else if (this.lat0 <= -(HALF_PI - FORTPI / 2.0)) {\n this.face = FACE_ENUM.BOTTOM;\n } else if (Math.abs(this.long0) <= FORTPI) {\n this.face = FACE_ENUM.FRONT;\n } else if (Math.abs(this.long0) <= HALF_PI + FORTPI) {\n this.face = this.long0 > 0.0 ? FACE_ENUM.RIGHT : FACE_ENUM.LEFT;\n } else {\n this.face = FACE_ENUM.BACK;\n }\n\n /* Fill in useful values for the ellipsoid <-> sphere shift\n * described in [LK12]. */\n if (this.es !== 0) {\n this.one_minus_f = 1 - (this.a - this.b) / this.a;\n this.one_minus_f_squared = this.one_minus_f * this.one_minus_f;\n }\n}\n\n// QSC forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n var xy = {x: 0, y: 0};\n var lat, lon;\n var theta, phi;\n var t, mu;\n /* nu; */\n var area = {value: 0};\n\n // move lon according to projection's lon\n p.x -= this.long0;\n\n /* Convert the geodetic latitude to a geocentric latitude.\n * This corresponds to the shift from the ellipsoid to the sphere\n * described in [LK12]. */\n if (this.es !== 0) {//if (P->es != 0) {\n lat = Math.atan(this.one_minus_f_squared * Math.tan(p.y));\n } else {\n lat = p.y;\n }\n\n /* Convert the input lat, lon into theta, phi as used by QSC.\n * This depends on the cube face and the area on it.\n * For the top and bottom face, we can compute theta and phi\n * directly from phi, lam. For the other faces, we must use\n * unit sphere cartesian coordinates as an intermediate step. */\n lon = p.x; //lon = lp.lam;\n if (this.face === FACE_ENUM.TOP) {\n phi = HALF_PI - lat;\n if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n theta = lon - HALF_PI;\n } else if (lon > HALF_PI + FORTPI || lon <= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_1;\n theta = (lon > 0.0 ? lon - SPI : lon + SPI);\n } else if (lon > -(HALF_PI + FORTPI) && lon <= -FORTPI) {\n area.value = AREA_ENUM.AREA_2;\n theta = lon + HALF_PI;\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta = lon;\n }\n } else if (this.face === FACE_ENUM.BOTTOM) {\n phi = HALF_PI + lat;\n if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n theta = -lon + HALF_PI;\n } else if (lon < FORTPI && lon >= -FORTPI) {\n area.value = AREA_ENUM.AREA_1;\n theta = -lon;\n } else if (lon < -FORTPI && lon >= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_2;\n theta = -lon - HALF_PI;\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta = (lon > 0.0 ? -lon + SPI : -lon - SPI);\n }\n } else {\n var q, r, s;\n var sinlat, coslat;\n var sinlon, coslon;\n\n if (this.face === FACE_ENUM.RIGHT) {\n lon = qsc_shift_lon_origin(lon, +HALF_PI);\n } else if (this.face === FACE_ENUM.BACK) {\n lon = qsc_shift_lon_origin(lon, +SPI);\n } else if (this.face === FACE_ENUM.LEFT) {\n lon = qsc_shift_lon_origin(lon, -HALF_PI);\n }\n sinlat = Math.sin(lat);\n coslat = Math.cos(lat);\n sinlon = Math.sin(lon);\n coslon = Math.cos(lon);\n q = coslat * coslon;\n r = coslat * sinlon;\n s = sinlat;\n\n if (this.face === FACE_ENUM.FRONT) {\n phi = Math.acos(q);\n theta = qsc_fwd_equat_face_theta(phi, s, r, area);\n } else if (this.face === FACE_ENUM.RIGHT) {\n phi = Math.acos(r);\n theta = qsc_fwd_equat_face_theta(phi, s, -q, area);\n } else if (this.face === FACE_ENUM.BACK) {\n phi = Math.acos(-q);\n theta = qsc_fwd_equat_face_theta(phi, s, -r, area);\n } else if (this.face === FACE_ENUM.LEFT) {\n phi = Math.acos(-r);\n theta = qsc_fwd_equat_face_theta(phi, s, q, area);\n } else {\n /* Impossible */\n phi = theta = 0;\n area.value = AREA_ENUM.AREA_0;\n }\n }\n\n /* Compute mu and nu for the area of definition.\n * For mu, see Eq. (3-21) in [OL76], but note the typos:\n * compare with Eq. (3-14). For nu, see Eq. (3-38). */\n mu = Math.atan((12 / SPI) * (theta + Math.acos(Math.sin(theta) * Math.cos(FORTPI)) - HALF_PI));\n t = Math.sqrt((1 - Math.cos(phi)) / (Math.cos(mu) * Math.cos(mu)) / (1 - Math.cos(Math.atan(1 / Math.cos(theta)))));\n\n /* Apply the result to the real area. */\n if (area.value === AREA_ENUM.AREA_1) {\n mu += HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_2) {\n mu += SPI;\n } else if (area.value === AREA_ENUM.AREA_3) {\n mu += 1.5 * SPI;\n }\n\n /* Now compute x, y from mu and nu */\n xy.x = t * Math.cos(mu);\n xy.y = t * Math.sin(mu);\n xy.x = xy.x * this.a + this.x0;\n xy.y = xy.y * this.a + this.y0;\n\n p.x = xy.x;\n p.y = xy.y;\n return p;\n}\n\n// QSC inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n var lp = {lam: 0, phi: 0};\n var mu, nu, cosmu, tannu;\n var tantheta, theta, cosphi, phi;\n var t;\n var area = {value: 0};\n\n /* de-offset */\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n /* Convert the input x, y to the mu and nu angles as used by QSC.\n * This depends on the area of the cube face. */\n nu = Math.atan(Math.sqrt(p.x * p.x + p.y * p.y));\n mu = Math.atan2(p.y, p.x);\n if (p.x >= 0.0 && p.x >= Math.abs(p.y)) {\n area.value = AREA_ENUM.AREA_0;\n } else if (p.y >= 0.0 && p.y >= Math.abs(p.x)) {\n area.value = AREA_ENUM.AREA_1;\n mu -= HALF_PI;\n } else if (p.x < 0.0 && -p.x >= Math.abs(p.y)) {\n area.value = AREA_ENUM.AREA_2;\n mu = (mu < 0.0 ? mu + SPI : mu - SPI);\n } else {\n area.value = AREA_ENUM.AREA_3;\n mu += HALF_PI;\n }\n\n /* Compute phi and theta for the area of definition.\n * The inverse projection is not described in the original paper, but some\n * good hints can be found here (as of 2011-12-14):\n * http://fits.gsfc.nasa.gov/fitsbits/saf.93/saf.9302\n * (search for \"Message-Id: <9302181759.AA25477 at fits.cv.nrao.edu>\") */\n t = (SPI / 12) * Math.tan(mu);\n tantheta = Math.sin(t) / (Math.cos(t) - (1 / Math.sqrt(2)));\n theta = Math.atan(tantheta);\n cosmu = Math.cos(mu);\n tannu = Math.tan(nu);\n cosphi = 1 - cosmu * cosmu * tannu * tannu * (1 - Math.cos(Math.atan(1 / Math.cos(theta))));\n if (cosphi < -1) {\n cosphi = -1;\n } else if (cosphi > +1) {\n cosphi = +1;\n }\n\n /* Apply the result to the real area on the cube face.\n * For the top and bottom face, we can compute phi and lam directly.\n * For the other faces, we must use unit sphere cartesian coordinates\n * as an intermediate step. */\n if (this.face === FACE_ENUM.TOP) {\n phi = Math.acos(cosphi);\n lp.phi = HALF_PI - phi;\n if (area.value === AREA_ENUM.AREA_0) {\n lp.lam = theta + HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_1) {\n lp.lam = (theta < 0.0 ? theta + SPI : theta - SPI);\n } else if (area.value === AREA_ENUM.AREA_2) {\n lp.lam = theta - HALF_PI;\n } else /* area.value == AREA_ENUM.AREA_3 */ {\n lp.lam = theta;\n }\n } else if (this.face === FACE_ENUM.BOTTOM) {\n phi = Math.acos(cosphi);\n lp.phi = phi - HALF_PI;\n if (area.value === AREA_ENUM.AREA_0) {\n lp.lam = -theta + HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_1) {\n lp.lam = -theta;\n } else if (area.value === AREA_ENUM.AREA_2) {\n lp.lam = -theta - HALF_PI;\n } else /* area.value == AREA_ENUM.AREA_3 */ {\n lp.lam = (theta < 0.0 ? -theta - SPI : -theta + SPI);\n }\n } else {\n /* Compute phi and lam via cartesian unit sphere coordinates. */\n var q, r, s;\n q = cosphi;\n t = q * q;\n if (t >= 1) {\n s = 0;\n } else {\n s = Math.sqrt(1 - t) * Math.sin(theta);\n }\n t += s * s;\n if (t >= 1) {\n r = 0;\n } else {\n r = Math.sqrt(1 - t);\n }\n /* Rotate q,r,s into the correct area. */\n if (area.value === AREA_ENUM.AREA_1) {\n t = r;\n r = -s;\n s = t;\n } else if (area.value === AREA_ENUM.AREA_2) {\n r = -r;\n s = -s;\n } else if (area.value === AREA_ENUM.AREA_3) {\n t = r;\n r = s;\n s = -t;\n }\n /* Rotate q,r,s into the correct cube face. */\n if (this.face === FACE_ENUM.RIGHT) {\n t = q;\n q = -r;\n r = t;\n } else if (this.face === FACE_ENUM.BACK) {\n q = -q;\n r = -r;\n } else if (this.face === FACE_ENUM.LEFT) {\n t = q;\n q = r;\n r = -t;\n }\n /* Now compute phi and lam from the unit sphere coordinates. */\n lp.phi = Math.acos(-s) - HALF_PI;\n lp.lam = Math.atan2(r, q);\n if (this.face === FACE_ENUM.RIGHT) {\n lp.lam = qsc_shift_lon_origin(lp.lam, -HALF_PI);\n } else if (this.face === FACE_ENUM.BACK) {\n lp.lam = qsc_shift_lon_origin(lp.lam, -SPI);\n } else if (this.face === FACE_ENUM.LEFT) {\n lp.lam = qsc_shift_lon_origin(lp.lam, +HALF_PI);\n }\n }\n\n /* Apply the shift from the sphere to the ellipsoid as described\n * in [LK12]. */\n if (this.es !== 0) {\n var invert_sign;\n var tanphi, xa;\n invert_sign = (lp.phi < 0 ? 1 : 0);\n tanphi = Math.tan(lp.phi);\n xa = this.b / Math.sqrt(tanphi * tanphi + this.one_minus_f_squared);\n lp.phi = Math.atan(Math.sqrt(this.a * this.a - xa * xa) / (this.one_minus_f * xa));\n if (invert_sign) {\n lp.phi = -lp.phi;\n }\n }\n\n lp.lam += this.long0;\n p.x = lp.lam;\n p.y = lp.phi;\n return p;\n}\n\n/* Helper function for forward projection: compute the theta angle\n * and determine the area number. */\nfunction qsc_fwd_equat_face_theta(phi, y, x, area) {\n var theta;\n if (phi < EPSLN) {\n area.value = AREA_ENUM.AREA_0;\n theta = 0.0;\n } else {\n theta = Math.atan2(y, x);\n if (Math.abs(theta) <= FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n } else if (theta > FORTPI && theta <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_1;\n theta -= HALF_PI;\n } else if (theta > HALF_PI + FORTPI || theta <= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_2;\n theta = (theta >= 0.0 ? theta - SPI : theta + SPI);\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta += HALF_PI;\n }\n }\n return theta;\n}\n\n/* Helper function: shift the longitude. */\nfunction qsc_shift_lon_origin(lon, offset) {\n var slon = lon + offset;\n if (slon < -SPI) {\n slon += TWO_PI;\n } else if (slon > +SPI) {\n slon -= TWO_PI;\n }\n return slon;\n}\n\nexport var names = [\"Quadrilateralized Spherical Cube\", \"Quadrilateralized_Spherical_Cube\", \"qsc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n\n","// Robinson projection\n// Based on https://github.com/OSGeo/proj.4/blob/master/src/PJ_robin.c\n// Polynomial coeficients from http://article.gmane.org/gmane.comp.gis.proj-4.devel/6039\n\nimport {HALF_PI, D2R, R2D, EPSLN} from '../constants/values';\nimport adjust_lon from '../common/adjust_lon';\n\nvar COEFS_X = [\n [1.0000, 2.2199e-17, -7.15515e-05, 3.1103e-06],\n [0.9986, -0.000482243, -2.4897e-05, -1.3309e-06],\n [0.9954, -0.00083103, -4.48605e-05, -9.86701e-07],\n [0.9900, -0.00135364, -5.9661e-05, 3.6777e-06],\n [0.9822, -0.00167442, -4.49547e-06, -5.72411e-06],\n [0.9730, -0.00214868, -9.03571e-05, 1.8736e-08],\n [0.9600, -0.00305085, -9.00761e-05, 1.64917e-06],\n [0.9427, -0.00382792, -6.53386e-05, -2.6154e-06],\n [0.9216, -0.00467746, -0.00010457, 4.81243e-06],\n [0.8962, -0.00536223, -3.23831e-05, -5.43432e-06],\n [0.8679, -0.00609363, -0.000113898, 3.32484e-06],\n [0.8350, -0.00698325, -6.40253e-05, 9.34959e-07],\n [0.7986, -0.00755338, -5.00009e-05, 9.35324e-07],\n [0.7597, -0.00798324, -3.5971e-05, -2.27626e-06],\n [0.7186, -0.00851367, -7.01149e-05, -8.6303e-06],\n [0.6732, -0.00986209, -0.000199569, 1.91974e-05],\n [0.6213, -0.010418, 8.83923e-05, 6.24051e-06],\n [0.5722, -0.00906601, 0.000182, 6.24051e-06],\n [0.5322, -0.00677797, 0.000275608, 6.24051e-06]\n];\n\nvar COEFS_Y = [\n [-5.20417e-18, 0.0124, 1.21431e-18, -8.45284e-11],\n [0.0620, 0.0124, -1.26793e-09, 4.22642e-10],\n [0.1240, 0.0124, 5.07171e-09, -1.60604e-09],\n [0.1860, 0.0123999, -1.90189e-08, 6.00152e-09],\n [0.2480, 0.0124002, 7.10039e-08, -2.24e-08],\n [0.3100, 0.0123992, -2.64997e-07, 8.35986e-08],\n [0.3720, 0.0124029, 9.88983e-07, -3.11994e-07],\n [0.4340, 0.0123893, -3.69093e-06, -4.35621e-07],\n [0.4958, 0.0123198, -1.02252e-05, -3.45523e-07],\n [0.5571, 0.0121916, -1.54081e-05, -5.82288e-07],\n [0.6176, 0.0119938, -2.41424e-05, -5.25327e-07],\n [0.6769, 0.011713, -3.20223e-05, -5.16405e-07],\n [0.7346, 0.0113541, -3.97684e-05, -6.09052e-07],\n [0.7903, 0.0109107, -4.89042e-05, -1.04739e-06],\n [0.8435, 0.0103431, -6.4615e-05, -1.40374e-09],\n [0.8936, 0.00969686, -6.4636e-05, -8.547e-06],\n [0.9394, 0.00840947, -0.000192841, -4.2106e-06],\n [0.9761, 0.00616527, -0.000256, -4.2106e-06],\n [1.0000, 0.00328947, -0.000319159, -4.2106e-06]\n];\n\nvar FXC = 0.8487;\nvar FYC = 1.3523;\nvar C1 = R2D/5; // rad to 5-degree interval\nvar RC1 = 1/C1;\nvar NODES = 18;\n\nvar poly3_val = function(coefs, x) {\n return coefs[0] + x * (coefs[1] + x * (coefs[2] + x * coefs[3]));\n};\n\nvar poly3_der = function(coefs, x) {\n return coefs[1] + x * (2 * coefs[2] + x * 3 * coefs[3]);\n};\n\nfunction newton_rapshon(f_df, start, max_err, iters) {\n var x = start;\n for (; iters; --iters) {\n var upd = f_df(x);\n x -= upd;\n if (Math.abs(upd) < max_err) {\n break;\n }\n }\n return x;\n}\n\nexport function init() {\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.long0 = this.long0 || 0;\n this.es = 0;\n this.title = this.title || \"Robinson\";\n}\n\nexport function forward(ll) {\n var lon = adjust_lon(ll.x - this.long0);\n\n var dphi = Math.abs(ll.y);\n var i = Math.floor(dphi * C1);\n if (i < 0) {\n i = 0;\n } else if (i >= NODES) {\n i = NODES - 1;\n }\n dphi = R2D * (dphi - RC1 * i);\n var xy = {\n x: poly3_val(COEFS_X[i], dphi) * lon,\n y: poly3_val(COEFS_Y[i], dphi)\n };\n if (ll.y < 0) {\n xy.y = -xy.y;\n }\n\n xy.x = xy.x * this.a * FXC + this.x0;\n xy.y = xy.y * this.a * FYC + this.y0;\n return xy;\n}\n\nexport function inverse(xy) {\n var ll = {\n x: (xy.x - this.x0) / (this.a * FXC),\n y: Math.abs(xy.y - this.y0) / (this.a * FYC)\n };\n\n if (ll.y >= 1) { // pathologic case\n ll.x /= COEFS_X[NODES][0];\n ll.y = xy.y < 0 ? -HALF_PI : HALF_PI;\n } else {\n // find table interval\n var i = Math.floor(ll.y * NODES);\n if (i < 0) {\n i = 0;\n } else if (i >= NODES) {\n i = NODES - 1;\n }\n for (;;) {\n if (COEFS_Y[i][0] > ll.y) {\n --i;\n } else if (COEFS_Y[i+1][0] <= ll.y) {\n ++i;\n } else {\n break;\n }\n }\n // linear interpolation in 5 degree interval\n var coefs = COEFS_Y[i];\n var t = 5 * (ll.y - coefs[0]) / (COEFS_Y[i+1][0] - coefs[0]);\n // find t so that poly3_val(coefs, t) = ll.y\n t = newton_rapshon(function(x) {\n return (poly3_val(coefs, x) - ll.y) / poly3_der(coefs, x);\n }, t, EPSLN, 100);\n\n ll.x /= poly3_val(COEFS_X[i], t);\n ll.y = (5 * i + t) * D2R;\n if (xy.y < 0) {\n ll.y = -ll.y;\n }\n }\n\n ll.x = adjust_lon(ll.x + this.long0);\n return ll;\n}\n\nexport var names = [\"Robinson\", \"robin\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {\n geodeticToGeocentric,\n geocentricToGeodetic\n} from '../datumUtils';\n\nexport function init() {\n this.name = 'geocent';\n\n}\n\nexport function forward(p) {\n var point = geodeticToGeocentric(p, this.es, this.a);\n return point;\n}\n\nexport function inverse(p) {\n var point = geocentricToGeodetic(p, this.es, this.a, this.b);\n return point;\n}\n\nexport var names = [\"Geocentric\", 'geocentric', \"geocent\", \"Geocent\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};","\nvar mode = {\n N_POLE: 0,\n S_POLE: 1,\n EQUIT: 2,\n OBLIQ: 3\n};\n\nimport { D2R, HALF_PI, EPSLN } from \"../constants/values\";\nimport hypot from \"../common/hypot\";\n\nvar params = {\n h: { def: 100000, num: true }, // default is Karman line, no default in PROJ.7\n azi: { def: 0, num: true, degrees: true }, // default is North\n tilt: { def: 0, num: true, degrees: true }, // default is Nadir\n long0: { def: 0, num: true }, // default is Greenwich, conversion to rad is automatic\n lat0: { def: 0, num: true } // default is Equator, conversion to rad is automatic\n};\n\nexport function init() {\n Object.keys(params).forEach(function (p) {\n if (typeof this[p] === \"undefined\") {\n this[p] = params[p].def;\n } else if (params[p].num && isNaN(this[p])) {\n throw new Error(\"Invalid parameter value, must be numeric \" + p + \" = \" + this[p]);\n } else if (params[p].num) {\n this[p] = parseFloat(this[p]);\n }\n if (params[p].degrees) {\n this[p] = this[p] * D2R;\n }\n }.bind(this));\n\n if (Math.abs((Math.abs(this.lat0) - HALF_PI)) < EPSLN) {\n this.mode = this.lat0 < 0 ? mode.S_POLE : mode.N_POLE;\n } else if (Math.abs(this.lat0) < EPSLN) {\n this.mode = mode.EQUIT;\n } else {\n this.mode = mode.OBLIQ;\n this.sinph0 = Math.sin(this.lat0);\n this.cosph0 = Math.cos(this.lat0);\n }\n\n this.pn1 = this.h / this.a; // Normalize relative to the Earth's radius\n\n if (this.pn1 <= 0 || this.pn1 > 1e10) {\n throw new Error(\"Invalid height\");\n }\n \n this.p = 1 + this.pn1;\n this.rp = 1 / this.p;\n this.h1 = 1 / this.pn1;\n this.pfact = (this.p + 1) * this.h1;\n this.es = 0;\n\n var omega = this.tilt;\n var gamma = this.azi;\n this.cg = Math.cos(gamma);\n this.sg = Math.sin(gamma);\n this.cw = Math.cos(omega);\n this.sw = Math.sin(omega);\n}\n\nexport function forward(p) {\n p.x -= this.long0;\n var sinphi = Math.sin(p.y);\n var cosphi = Math.cos(p.y);\n var coslam = Math.cos(p.x);\n var x, y;\n switch (this.mode) {\n case mode.OBLIQ:\n y = this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;\n break;\n case mode.EQUIT:\n y = cosphi * coslam;\n break;\n case mode.S_POLE:\n y = -sinphi;\n break;\n case mode.N_POLE:\n y = sinphi;\n break;\n }\n y = this.pn1 / (this.p - y);\n x = y * cosphi * Math.sin(p.x);\n\n switch (this.mode) {\n case mode.OBLIQ:\n y *= this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;\n break;\n case mode.EQUIT:\n y *= sinphi;\n break;\n case mode.N_POLE:\n y *= -(cosphi * coslam);\n break;\n case mode.S_POLE:\n y *= cosphi * coslam;\n break;\n }\n\n // Tilt \n var yt, ba;\n yt = y * this.cg + x * this.sg;\n ba = 1 / (yt * this.sw * this.h1 + this.cw);\n x = (x * this.cg - y * this.sg) * this.cw * ba;\n y = yt * ba;\n\n p.x = x * this.a;\n p.y = y * this.a;\n return p;\n}\n\nexport function inverse(p) {\n p.x /= this.a;\n p.y /= this.a;\n var r = { x: p.x, y: p.y };\n\n // Un-Tilt\n var bm, bq, yt;\n yt = 1 / (this.pn1 - p.y * this.sw);\n bm = this.pn1 * p.x * yt;\n bq = this.pn1 * p.y * this.cw * yt;\n p.x = bm * this.cg + bq * this.sg;\n p.y = bq * this.cg - bm * this.sg;\n\n var rh = hypot(p.x, p.y);\n if (Math.abs(rh) < EPSLN) {\n r.x = 0;\n r.y = p.y;\n } else {\n var cosz, sinz;\n sinz = 1 - rh * rh * this.pfact;\n sinz = (this.p - Math.sqrt(sinz)) / (this.pn1 / rh + rh / this.pn1);\n cosz = Math.sqrt(1 - sinz * sinz);\n switch (this.mode) {\n case mode.OBLIQ:\n r.y = Math.asin(cosz * this.sinph0 + p.y * sinz * this.cosph0 / rh);\n p.y = (cosz - this.sinph0 * Math.sin(r.y)) * rh;\n p.x *= sinz * this.cosph0;\n break;\n case mode.EQUIT:\n r.y = Math.asin(p.y * sinz / rh);\n p.y = cosz * rh;\n p.x *= sinz;\n break;\n case mode.N_POLE:\n r.y = Math.asin(cosz);\n p.y = -p.y;\n break;\n case mode.S_POLE:\n r.y = -Math.asin(cosz);\n break;\n }\n r.x = Math.atan2(p.x, p.y);\n }\n\n p.x = r.x + this.long0;\n p.y = r.y;\n return p;\n}\n\nexport var names = [\"Tilted_Perspective\", \"tpers\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import hypot from '../common/hypot';\n\nexport function init() {\n this.flip_axis = (this.sweep === 'x' ? 1 : 0);\n this.h = Number(this.h);\n this.radius_g_1 = this.h / this.a;\n\n if (this.radius_g_1 <= 0 || this.radius_g_1 > 1e10) {\n throw new Error();\n }\n\n this.radius_g = 1.0 + this.radius_g_1;\n this.C = this.radius_g * this.radius_g - 1.0;\n\n if (this.es !== 0.0) {\n var one_es = 1.0 - this.es;\n var rone_es = 1 / one_es;\n\n this.radius_p = Math.sqrt(one_es);\n this.radius_p2 = one_es;\n this.radius_p_inv2 = rone_es;\n\n this.shape = 'ellipse'; // Use as a condition in the forward and inverse functions.\n } else {\n this.radius_p = 1.0;\n this.radius_p2 = 1.0;\n this.radius_p_inv2 = 1.0;\n\n this.shape = 'sphere'; // Use as a condition in the forward and inverse functions.\n }\n\n if (!this.title) {\n this.title = \"Geostationary Satellite View\";\n }\n}\n\nfunction forward(p) {\n var lon = p.x;\n var lat = p.y;\n var tmp, v_x, v_y, v_z;\n lon = lon - this.long0;\n\n if (this.shape === 'ellipse') {\n lat = Math.atan(this.radius_p2 * Math.tan(lat));\n var r = this.radius_p / hypot(this.radius_p * Math.cos(lat), Math.sin(lat));\n\n v_x = r * Math.cos(lon) * Math.cos(lat);\n v_y = r * Math.sin(lon) * Math.cos(lat);\n v_z = r * Math.sin(lat);\n\n if (((this.radius_g - v_x) * v_x - v_y * v_y - v_z * v_z * this.radius_p_inv2) < 0.0) {\n p.x = Number.NaN;\n p.y = Number.NaN;\n return p;\n }\n\n tmp = this.radius_g - v_x;\n if (this.flip_axis) {\n p.x = this.radius_g_1 * Math.atan(v_y / hypot(v_z, tmp));\n p.y = this.radius_g_1 * Math.atan(v_z / tmp);\n } else {\n p.x = this.radius_g_1 * Math.atan(v_y / tmp);\n p.y = this.radius_g_1 * Math.atan(v_z / hypot(v_y, tmp));\n }\n } else if (this.shape === 'sphere') {\n tmp = Math.cos(lat);\n v_x = Math.cos(lon) * tmp;\n v_y = Math.sin(lon) * tmp;\n v_z = Math.sin(lat);\n tmp = this.radius_g - v_x;\n\n if (this.flip_axis) {\n p.x = this.radius_g_1 * Math.atan(v_y / hypot(v_z, tmp));\n p.y = this.radius_g_1 * Math.atan(v_z / tmp);\n } else {\n p.x = this.radius_g_1 * Math.atan(v_y / tmp);\n p.y = this.radius_g_1 * Math.atan(v_z / hypot(v_y, tmp));\n }\n }\n p.x = p.x * this.a;\n p.y = p.y * this.a;\n return p;\n}\n\nfunction inverse(p) {\n var v_x = -1.0;\n var v_y = 0.0;\n var v_z = 0.0;\n var a, b, det, k;\n\n p.x = p.x / this.a;\n p.y = p.y / this.a;\n\n if (this.shape === 'ellipse') {\n if (this.flip_axis) {\n v_z = Math.tan(p.y / this.radius_g_1);\n v_y = Math.tan(p.x / this.radius_g_1) * hypot(1.0, v_z);\n } else {\n v_y = Math.tan(p.x / this.radius_g_1);\n v_z = Math.tan(p.y / this.radius_g_1) * hypot(1.0, v_y);\n }\n\n var v_zp = v_z / this.radius_p;\n a = v_y * v_y + v_zp * v_zp + v_x * v_x;\n b = 2 * this.radius_g * v_x;\n det = (b * b) - 4 * a * this.C;\n\n if (det < 0.0) {\n p.x = Number.NaN;\n p.y = Number.NaN;\n return p;\n }\n\n k = (-b - Math.sqrt(det)) / (2.0 * a);\n v_x = this.radius_g + k * v_x;\n v_y *= k;\n v_z *= k;\n\n p.x = Math.atan2(v_y, v_x);\n p.y = Math.atan(v_z * Math.cos(p.x) / v_x);\n p.y = Math.atan(this.radius_p_inv2 * Math.tan(p.y));\n } else if (this.shape === 'sphere') {\n if (this.flip_axis) {\n v_z = Math.tan(p.y / this.radius_g_1);\n v_y = Math.tan(p.x / this.radius_g_1) * Math.sqrt(1.0 + v_z * v_z);\n } else {\n v_y = Math.tan(p.x / this.radius_g_1);\n v_z = Math.tan(p.y / this.radius_g_1) * Math.sqrt(1.0 + v_y * v_y);\n }\n\n a = v_y * v_y + v_z * v_z + v_x * v_x;\n b = 2 * this.radius_g * v_x;\n det = (b * b) - 4 * a * this.C;\n if (det < 0.0) {\n p.x = Number.NaN;\n p.y = Number.NaN;\n return p;\n }\n\n k = (-b - Math.sqrt(det)) / (2.0 * a);\n v_x = this.radius_g + k * v_x;\n v_y *= k;\n v_z *= k;\n\n p.x = Math.atan2(v_y, v_x);\n p.y = Math.atan(v_z * Math.cos(p.x) / v_x);\n }\n p.x = p.x + this.long0;\n return p;\n}\n\nexport var names = [\"Geostationary Satellite View\", \"Geostationary_Satellite\", \"geos\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n};\n\n","import proj4 from './core';\nimport Proj from \"./Proj\";\nimport Point from \"./Point\";\nimport common from \"./common/toPoint\";\nimport defs from \"./defs\";\nimport nadgrid from \"./nadgrid\";\nimport transform from \"./transform\";\nimport mgrs from \"mgrs\";\nimport includedProjections from \"../projs\";\n\nproj4.defaultDatum = 'WGS84'; //default datum\nproj4.Proj = Proj;\nproj4.WGS84 = new proj4.Proj('WGS84');\nproj4.Point = Point;\nproj4.toPoint = common;\nproj4.defs = defs;\nproj4.nadgrid = nadgrid;\nproj4.transform = transform;\nproj4.mgrs = mgrs;\nproj4.version = '__VERSION__';\nincludedProjections(proj4);\nexport default proj4;\n","import tmerc from './lib/projections/tmerc';\nimport etmerc from './lib/projections/etmerc';\nimport utm from './lib/projections/utm';\nimport sterea from './lib/projections/sterea';\nimport stere from './lib/projections/stere';\nimport somerc from './lib/projections/somerc';\nimport omerc from './lib/projections/omerc';\nimport lcc from './lib/projections/lcc';\nimport krovak from './lib/projections/krovak';\nimport cass from './lib/projections/cass';\nimport laea from './lib/projections/laea';\nimport aea from './lib/projections/aea';\nimport gnom from './lib/projections/gnom';\nimport cea from './lib/projections/cea';\nimport eqc from './lib/projections/eqc';\nimport poly from './lib/projections/poly';\nimport nzmg from './lib/projections/nzmg';\nimport mill from './lib/projections/mill';\nimport sinu from './lib/projections/sinu';\nimport moll from './lib/projections/moll';\nimport eqdc from './lib/projections/eqdc';\nimport vandg from './lib/projections/vandg';\nimport aeqd from './lib/projections/aeqd';\nimport ortho from './lib/projections/ortho';\nimport qsc from './lib/projections/qsc';\nimport robin from './lib/projections/robin';\nimport geocent from './lib/projections/geocent';\nimport tpers from './lib/projections/tpers';\nimport geos from './lib/projections/geos';\nexport default function(proj4){\n proj4.Proj.projections.add(tmerc);\n proj4.Proj.projections.add(etmerc);\n proj4.Proj.projections.add(utm);\n proj4.Proj.projections.add(sterea);\n proj4.Proj.projections.add(stere);\n proj4.Proj.projections.add(somerc);\n proj4.Proj.projections.add(omerc);\n proj4.Proj.projections.add(lcc);\n proj4.Proj.projections.add(krovak);\n proj4.Proj.projections.add(cass);\n proj4.Proj.projections.add(laea);\n proj4.Proj.projections.add(aea);\n proj4.Proj.projections.add(gnom);\n proj4.Proj.projections.add(cea);\n proj4.Proj.projections.add(eqc);\n proj4.Proj.projections.add(poly);\n proj4.Proj.projections.add(nzmg);\n proj4.Proj.projections.add(mill);\n proj4.Proj.projections.add(sinu);\n proj4.Proj.projections.add(moll);\n proj4.Proj.projections.add(eqdc);\n proj4.Proj.projections.add(vandg);\n proj4.Proj.projections.add(aeqd);\n proj4.Proj.projections.add(ortho);\n proj4.Proj.projections.add(qsc);\n proj4.Proj.projections.add(robin);\n proj4.Proj.projections.add(geocent);\n proj4.Proj.projections.add(tpers);\n proj4.Proj.projections.add(geos);\n}","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=t||self).RBush=i()}(this,function(){\"use strict\";function t(t,r,e,a,h){!function t(n,r,e,a,h){for(;a>e;){if(a-e>600){var o=a-e+1,s=r-e+1,l=Math.log(o),f=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*f*(o-f)/o)*(s-o/2<0?-1:1),m=Math.max(e,Math.floor(r-s*f/o+u)),c=Math.min(a,Math.floor(r+(o-s)*f/o+u));t(n,r,m,c,h)}var p=n[r],d=e,x=a;for(i(n,e,r),h(n[a],p)>0&&i(n,e,a);d0;)x--}0===h(n[e],p)?i(n,e,x):i(n,++x,a),x<=r&&(e=x+1),r<=x&&(a=x-1)}}(t,r,e||0,a||t.length-1,h||n)}function i(t,i,n){var r=t[i];t[i]=t[n],t[n]=r}function n(t,i){return ti?1:0}var r=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function e(t,i,n){if(!n)return i.indexOf(t);for(var r=0;r=t.minX&&i.maxY>=t.minY}function p(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function d(i,n,r,e,a){for(var h=[n,r];h.length;)if(!((r=h.pop())-(n=h.pop())<=e)){var o=n+Math.ceil((r-n)/e/2)*e;t(i,o,n,r,a),h.push(n,o,o,r)}}return r.prototype.all=function(){return this._all(this.data,[])},r.prototype.search=function(t){var i=this.data,n=[];if(!c(t,i))return n;for(var r=this.toBBox,e=[];i;){for(var a=0;a=0&&e[i].children.length>this._maxEntries;)this._split(e,i),i--;this._adjustParentBBoxes(r,e,i)},r.prototype._split=function(t,i){var n=t[i],r=n.children.length,e=this._minEntries;this._chooseSplitAxis(n,e,r);var h=this._chooseSplitIndex(n,e,r),o=p(n.children.splice(h,n.children.length-h));o.height=n.height,o.leaf=n.leaf,a(n,this.toBBox),a(o,this.toBBox),i?t[i-1].children.push(o):this._splitRoot(n,o)},r.prototype._splitRoot=function(t,i){this.data=p([t,i]),this.data.height=t.height+1,this.data.leaf=!1,a(this.data,this.toBBox)},r.prototype._chooseSplitIndex=function(t,i,n){for(var r,e,a,o,s,l,u,m=1/0,c=1/0,p=i;p<=n-i;p++){var d=h(t,0,p,this.toBBox),x=h(t,p,n,this.toBBox),v=(e=d,a=x,o=void 0,s=void 0,l=void 0,u=void 0,o=Math.max(e.minX,a.minX),s=Math.max(e.minY,a.minY),l=Math.min(e.maxX,a.maxX),u=Math.min(e.maxY,a.maxY),Math.max(0,l-o)*Math.max(0,u-s)),M=f(d)+f(x);v=i;c--){var p=t.children[c];o(s,t.leaf?e(p):p),l+=u(s)}return l},r.prototype._adjustParentBBoxes=function(t,i,n){for(var r=n;r>=0;r--)o(i[r],t)},r.prototype._condense=function(t){for(var i=t.length-1,n=void 0;i>=0;i--)0===t[i].children.length?i>0?(n=t[i-1].children).splice(n.indexOf(t[i]),1):this.clear():a(t[i],this.toBBox)},r});\n","'use strict';\n\nvar proj4 = require('proj4').hasOwnProperty('default') ? require('proj4').default : require('proj4');\n// Checks if `list` looks like a `[x, y]`.\nfunction isXY(list) {\n return list.length >= 2 &&\n typeof list[0] === 'number' &&\n typeof list[1] === 'number';\n}\n\nfunction traverseCoords(coordinates, callback) {\n if (isXY(coordinates)) return callback(coordinates);\n return coordinates.map(function(coord){return traverseCoords(coord, callback);});\n}\n\n// Simplistic shallow clone that will work for a normal GeoJSON object.\nfunction clone(obj) {\n if (null == obj || 'object' !== typeof obj) return obj;\n var copy = obj.constructor();\n for (var attr in obj) {\n if (obj.hasOwnProperty(attr)) copy[attr] = obj[attr];\n }\n return copy;\n}\n\nfunction traverseGeoJson(geometryCb, nodeCb, geojson) {\n if (geojson == null) return geojson;\n\n var r = clone(geojson);\n var self = traverseGeoJson.bind(this, geometryCb, nodeCb);\n\n switch (geojson.type) {\n case 'Feature':\n r.geometry = self(geojson.geometry);\n break;\n case 'FeatureCollection':\n r.features = r.features.map(self);\n break;\n case 'GeometryCollection':\n r.geometries = r.geometries.map(self);\n break;\n default:\n geometryCb(r);\n break;\n }\n\n if (nodeCb) nodeCb(r);\n\n return r;\n}\n\nfunction detectCrs(geojson, projs) {\n var crsInfo = geojson.crs,\n crs;\n\n if (crsInfo === undefined) {\n throw new Error('Unable to detect CRS, GeoJSON has no \"crs\" property.');\n }\n\n if (crsInfo.type === 'name') {\n crs = projs[crsInfo.properties.name];\n } else if (crsInfo.type === 'EPSG') {\n crs = projs['EPSG:' + crsInfo.properties.code];\n }\n\n if (!crs) {\n throw new Error('CRS defined in crs section could not be identified: ' + JSON.stringify(crsInfo));\n }\n\n return crs;\n}\n\nfunction determineCrs(crs, projs) {\n if (typeof crs === 'string' || crs instanceof String) {\n return projs[crs] || proj4.Proj(crs);\n }\n\n return crs;\n}\n\nfunction calcBbox(geojson) {\n var min = [Number.MAX_VALUE, Number.MAX_VALUE],\n max = [-Number.MAX_VALUE, -Number.MAX_VALUE];\n traverseGeoJson(function(_gj) {\n traverseCoords(_gj.coordinates, function(xy) {\n min[0] = Math.min(min[0], xy[0]);\n min[1] = Math.min(min[1], xy[1]);\n max[0] = Math.max(max[0], xy[0]);\n max[1] = Math.max(max[1], xy[1]);\n });\n }, null, geojson);\n return [min[0], min[1], max[0], max[1]];\n}\n\nfunction reproject(geojson, from, to, projs) {\n projs = projs || {};\n if (!from) {\n from = detectCrs(geojson, projs);\n } else {\n from = determineCrs(from, projs);\n }\n\n to = determineCrs(to, projs);\n \n var transformFunc = proj4(from, to).forward.bind(transformFunc);\n\n function transform(coords) {\n var transformed = transformFunc(coords);\n if (coords.length === 3 && coords[2] !== undefined && transformed[2] === undefined) {\n // If the projection doesn't explicitly handle Z coordinate, retain the old one.\n transformed[2] = coords[2];\n }\n return transformed;\n }\n\n var transformGeometryCoords = function(gj) {\n // No easy way to put correct CRS info into the GeoJSON,\n // and definitely wrong to keep the old, so delete it.\n if (gj.crs) {\n delete gj.crs;\n }\n gj.coordinates = traverseCoords(gj.coordinates, transform);\n }\n\n var transformBbox = function(gj) {\n if (gj.bbox) {\n gj.bbox = calcBbox(gj);\n }\n }\n\n return traverseGeoJson(transformGeometryCoords, transformBbox, geojson);\n}\n\nmodule.exports = {\n detectCrs: detectCrs,\n\n reproject: reproject,\n\n reverse: function(geojson) {\n return traverseGeoJson(function(gj) {\n gj.coordinates = traverseCoords(gj.coordinates, function(xy) {\n return [ xy[1], xy[0] ];\n });\n }, null, geojson);\n },\n\n toWgs84: function(geojson, from, projs) {\n return reproject(geojson, from, proj4.WGS84, projs);\n }\n};\n","let numberRegexp = /[-+]?([0-9]*\\.[0-9]+|[0-9]+)([eE][-+]?[0-9]+)?/;\n// Matches sequences like '100 100' or '100 100 100'.\nlet coordFormat = new RegExp('^' + numberRegexp.source + '(\\\\s' + numberRegexp.source + '){1,}');\n\n/**\n * Parse WKT and return GeoJSON.\n * @param wkt\n * @return {?Object} A GeoJSON geometry object\n */\nconst parse = (wkt)=> {\n let parts = wkt.split(';');\n let _ = parts.pop();\n let srid = (parts.shift() || '').split('=').pop();\n\n let i = 0;\n\n function $ (re) {\n let match = _.substring(i).match(re);\n if (!match) return null;\n else {\n i += match[0].length;\n return match[0];\n }\n }\n\n function crs (obj) {\n if (obj && srid.match(/\\d+/)) {\n obj.crs = {\n type: 'name',\n properties: {\n name: 'urn:ogc:def:crs:EPSG::' + srid\n }\n };\n }\n\n return obj;\n }\n\n function white () { $(/^\\s*/); }\n\n function multicoords () {\n white();\n let depth = 0;\n let rings = [];\n let stack = [rings];\n let pointer = rings;\n let elem;\n\n while (elem =\n $(/^(\\()/) ||\n $(/^(\\))/) ||\n $(/^(,)/) ||\n $(coordFormat)) {\n if (elem === '(') {\n stack.push(pointer);\n pointer = [];\n stack[stack.length - 1].push(pointer);\n depth++;\n } else if (elem === ')') {\n // For the case: Polygon(), ...\n if (pointer.length === 0) return null;\n\n pointer = stack.pop();\n // the stack was empty, input was malformed\n if (!pointer) return null;\n depth--;\n if (depth === 0) break;\n } else if (elem === ',') {\n pointer = [];\n stack[stack.length - 1].push(pointer);\n } else if (!elem.split(/\\s/g).some(isNaN)) {\n Array.prototype.push.apply(pointer, elem.split(/\\s/g).map(parseFloat));\n } else {\n return null;\n }\n white();\n }\n\n if (depth !== 0) return null;\n\n return rings;\n }\n\n function coords () {\n let list = [];\n let item;\n let pt;\n while (pt =\n $(coordFormat) ||\n $(/^(,)/)) {\n if (pt === ',') {\n list.push(item);\n item = [];\n } else if (!pt.split(/\\s/g).some(isNaN)) {\n if (!item) item = [];\n Array.prototype.push.apply(item, pt.split(/\\s/g).map(parseFloat));\n }\n white();\n }\n\n if (item) list.push(item);\n else return null;\n\n return list.length ? list : null;\n }\n\n function point () {\n if (!$(/^(point(\\sz)?)/i)) return null;\n white();\n if (!$(/^(\\()/)) return null;\n let c = coords();\n if (!c) return null;\n white();\n if (!$(/^(\\))/)) return null;\n return {\n type: 'Point',\n coordinates: c[0]\n };\n }\n\n function multipoint () {\n if (!$(/^(multipoint(\\sz)?)/i)) return null;\n white();\n let newCoordsFormat = _\n .substring(_.indexOf('(') + 1, _.length - 1)\n .replace(/\\(/g, '')\n .replace(/\\)/g, '');\n _ = 'MULTIPOINT (' + newCoordsFormat + ')';\n let c = multicoords();\n if (!c) return null;\n white();\n return {\n type: 'MultiPoint',\n coordinates: c\n };\n }\n\n function multilinestring () {\n if (!$(/^(multilinestring(\\sz)?)/i)) return null;\n white();\n let c = multicoords();\n if (!c) return null;\n white();\n return {\n type: 'MultiLineString',\n coordinates: c\n };\n }\n\n function linestring () {\n if (!$(/^(linestring(\\sz)?)/i)) return null;\n white();\n if (!$(/^(\\()/)) return null;\n let c = coords();\n if (!c) return null;\n if (!$(/^(\\))/)) return null;\n return {\n type: 'LineString',\n coordinates: c\n };\n }\n\n function polygon () {\n if (!$(/^(polygon(\\sz)?)/i)) return null;\n white();\n let c = multicoords();\n if (!c) return null;\n return {\n type: 'Polygon',\n coordinates: c\n };\n }\n\n function multipolygon () {\n if (!$(/^(multipolygon(\\sz)?)/i)) return null;\n white();\n let c = multicoords();\n if (!c) return null;\n return {\n type: 'MultiPolygon',\n coordinates: c\n };\n }\n\n function geometrycollection () {\n let geometries = [];\n let geometry;\n\n if (!$(/^(geometrycollection)/i)) return null;\n white();\n\n if (!$(/^(\\()/)) return null;\n while (geometry = root()) {\n geometries.push(geometry);\n white();\n $(/^(,)/);\n white();\n }\n if (!$(/^(\\))/)) return null;\n\n return {\n type: 'GeometryCollection',\n geometries: geometries\n };\n }\n\n function root () {\n return point() ||\n linestring() ||\n polygon() ||\n multipoint() ||\n multilinestring() ||\n multipolygon() ||\n geometrycollection();\n }\n\n return crs(root());\n};\n\n/**\n * Stringifies a GeoJSON object into WKT\n */\nconst stringify = (geoJSON)=> {\n if (geoJSON.type === 'Feature') {\n geoJSON = geoJSON.geometry;\n }\n\n function pairWKT (c) {\n return c.join(' ');\n }\n\n function ringWKT (r) {\n return r.map(pairWKT).join(', ');\n }\n\n function ringsWKT (r) {\n return r.map(ringWKT).map(wrapParens).join(', ');\n }\n\n function multiRingsWKT (r) {\n return r.map(ringsWKT).map(wrapParens).join(', ');\n }\n\n function wrapParens (s) { return '(' + s + ')'; }\n\n let gJ = geoJSON;\n switch (gJ.type) {\n case 'Point':\n if(gJ.coordinates && gJ.coordinates.length === 3)\n return 'POINT Z (' + pairWKT(gJ.coordinates) + ')';\n else return 'POINT (' + pairWKT(gJ.coordinates) + ')';\n\n case 'LineString':\n if(gJ.coordinates && gJ.coordinates[0] && gJ.coordinates[0].length === 3)\n return 'LINESTRING Z (' + ringWKT(gJ.coordinates) + ')';\n else return 'LINESTRING (' + ringWKT(gJ.coordinates) + ')';\n\n case 'Polygon':\n if(gJ.coordinates && gJ.coordinates[0] && gJ.coordinates[0][0] && gJ.coordinates[0][0].length === 3)\n return 'POLYGON Z (' + ringsWKT(gJ.coordinates) + ')';\n else return 'POLYGON (' + ringsWKT(gJ.coordinates) + ')';\n\n case 'MultiPoint':\n if(gJ.coordinates && gJ.coordinates[0] && gJ.coordinates[0].length === 3)\n return 'MULTIPOINT Z (' + ringWKT(gJ.coordinates) + ')';\n else return 'MULTIPOINT (' + ringWKT(gJ.coordinates) + ')';\n\n case 'MultiLineString':\n if(gJ.coordinates && gJ.coordinates[0] && gJ.coordinates[0][0] && gJ.coordinates[0][0].length === 3)\n return 'MULTILINESTRING Z (' + ringsWKT(gJ.coordinates) + ')';\n else return 'MULTILINESTRING (' + ringsWKT(gJ.coordinates) + ')';\n\n case 'MultiPolygon':\n if(gJ.coordinates && gJ.coordinates[0] && gJ.coordinates[0][0] && gJ.coordinates[0][0] && gJ.coordinates[0][0][0].length === 3)\n return 'MULTIPOLYGON Z (' + multiRingsWKT(gJ.coordinates) + ')';\n else return 'MULTIPOLYGON (' + multiRingsWKT(gJ.coordinates) + ')';\n\n\n case 'GeometryCollection':\n return 'GEOMETRYCOLLECTION (' + gJ.geometries.map(stringify).join(', ') + ')';\n\n default:\n throw new Error('stringify requires a valid GeoJSON Feature or geometry object as input');\n }\n};\n\nmodule.exports = {\n parse,\n stringify\n};","/* MapLibre GL JS is licensed under the 3-Clause BSD License. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v2.1.9/LICENSE.txt */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\ntypeof define === 'function' && define.amd ? define(factory) :\n(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.maplibregl = factory());\n})(this, (function () { 'use strict';\n\n/* eslint-disable */\n\nvar shared, worker, maplibregl;\n// define gets called three times: one for each chunk. we rely on the order\n// they're imported to know which is which\nfunction define(_, chunk) {\n if (!shared) {\n shared = chunk;\n } else if (!worker) {\n worker = chunk;\n } else {\n var workerBundleString = 'var sharedChunk = {}; (' + shared + ')(sharedChunk); (' + worker + ')(sharedChunk);'\n\n var sharedChunk = {};\n shared(sharedChunk);\n maplibregl = chunk(sharedChunk);\n if (typeof window !== 'undefined') {\n maplibregl.workerUrl = window.URL.createObjectURL(new Blob([workerBundleString], { type: 'text/javascript' }));\n }\n }\n}\n\n\ndefine([\"exports\"],(function(t){\"use strict\";var e=r;function r(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=e,this.p2x=r,this.p2y=n;}function n(t,r,n,i){const s=new e(t,r,n,i);return function(t){return s.solve(t)}}r.prototype={sampleCurveX:function(t){return ((this.ax*t+this.bx)*t+this.cx)*t},sampleCurveY:function(t){return ((this.ay*t+this.by)*t+this.cy)*t},sampleCurveDerivativeX:function(t){return (3*this.ax*t+2*this.bx)*t+this.cx},solveCurveX:function(t,e){if(void 0===e&&(e=1e-6),t<0)return 0;if(t>1)return 1;for(var r=t,n=0;n<8;n++){var i=this.sampleCurveX(r)-t;if(Math.abs(i)i?a=r:o=r,r=.5*(o-a)+a;return r},solve:function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))}};const i=n(.25,.1,.25,1);function s(t,e,r){return Math.min(r,Math.max(e,t))}function a(t,e,r){const n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function o(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}let l=1;function u(t,e){t.forEach((t=>{e[t]&&(e[t]=e[t].bind(e));}));}function c(t,e,r){const n={};for(const i in t)n[i]=e.call(r||this,t[i],i,t);return n}function h(t,e,r){const n={};for(const i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function p(t){return Array.isArray(t)?t.map(p):\"object\"==typeof t&&t?c(t,p):t}const f={};function d(t){f[t]||(\"undefined\"!=typeof console&&console.warn(t),f[t]=!0);}function y(t,e,r){return (r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function m(t){let e=0;for(let r,n,i=0,s=t.length,a=s-1;i@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,((t,r,n,i)=>{const s=n||i;return e[r]=!s||s.toLowerCase(),\"\"})),e[\"max-age\"]){const t=parseInt(e[\"max-age\"],10);isNaN(t)?delete e[\"max-age\"]:e[\"max-age\"]=t;}return e}let v,b,w=null;function _(t){if(null==w){const e=t.navigator?t.navigator.userAgent:null;w=!!t.safari||!(!e||!(/\\b(iPad|iPhone|iPod)\\b/.test(e)||e.match(\"Safari\")&&!e.match(\"Chrome\")));}return w}function A(t){return \"undefined\"!=typeof ImageBitmap&&t instanceof ImageBitmap}const k={now:\"undefined\"!=typeof performance&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),frame(t){const e=requestAnimationFrame(t);return {cancel:()=>cancelAnimationFrame(e)}},getImageData(t,e=0){const r=window.document.createElement(\"canvas\"),n=r.getContext(\"2d\");if(!n)throw new Error(\"failed to create canvas 2d context\");return r.width=t.width,r.height=t.height,n.drawImage(t,0,0,t.width,t.height),n.getImageData(-e,-e,t.width+2*e,t.height+2*e)},resolveURL:t=>(v||(v=document.createElement(\"a\")),v.href=t,v.href),hardwareConcurrency:\"undefined\"!=typeof navigator&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return !!matchMedia&&(null==b&&(b=matchMedia(\"(prefers-reduced-motion: reduce)\")),b.matches)}};var S=z;function z(t,e){this.x=t,this.y=e;}z.prototype={clone:function(){return new z(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[2]*this.x+t[3]*this.y;return this.x=t[0]*this.x+t[1]*this.y,this.y=e,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),n=r*this.x+e*this.y;return this.x=e*this.x-r*this.y,this.y=n,this},_rotateAround:function(t,e){var r=Math.cos(t),n=Math.sin(t),i=e.y+n*(this.x-e.x)+r*(this.y-e.y);return this.x=e.x+r*(this.x-e.x)-n*(this.y-e.y),this.y=i,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},z.convert=function(t){return t instanceof z?t:Array.isArray(t)?new z(t[0],t[1]):t};const I={MAX_PARALLEL_IMAGE_REQUESTS:16,REGISTERED_PROTOCOLS:{}},M=\"mapbox-tiles\";let B,C,P=500,V=50;function E(){\"undefined\"==typeof caches||B||(B=caches.open(M));}let F=1/0;const T={supported:!1,testSupport:function(t){!$&&D&&(R?U(t):L=t);}};let L,D,$=!1,R=!1;function U(t){const e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,D),t.isContextLost())return;T.supported=!0;}catch(t){}t.deleteTexture(e),$=!0;}\"undefined\"!=typeof document&&(D=document.createElement(\"img\"),D.onload=function(){L&&U(L),L=null,R=!0;},D.onerror=function(){$=!0,L=null;},D.src=\"data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=\");const O={Unknown:\"Unknown\",Style:\"Style\",Source:\"Source\",Tile:\"Tile\",Glyphs:\"Glyphs\",SpriteImage:\"SpriteImage\",SpriteJSON:\"SpriteJSON\",Image:\"Image\"};\"function\"==typeof Object.freeze&&Object.freeze(O);class q extends Error{constructor(t,e,r,n){super(`AJAXError: ${e} (${t}): ${r}`),this.status=t,this.statusText=e,this.url=r,this.body=n;}}const j=g()?()=>self.worker&&self.worker.referrer:()=>(\"blob:\"===window.location.protocol?window.parent:window).location.href;function N(t,e){const r=new AbortController,n=new Request(t.url,{method:t.method||\"GET\",body:t.body,credentials:t.credentials,headers:t.headers,referrer:j(),signal:r.signal});let i=!1,s=!1;\"json\"===t.type&&n.headers.set(\"Accept\",\"application/json\");return ((r,a,o)=>{if(s)return;const l=Date.now();fetch(n).then((r=>r.ok?((r,a,o)=>{(\"arrayBuffer\"===t.type?r.arrayBuffer():\"json\"===t.type?r.json():r.text()).then((t=>{s||(a&&o&&function(t,e,r){if(E(),!B)return;const n={status:e.status,statusText:e.statusText,headers:new Headers};e.headers.forEach(((t,e)=>n.headers.set(e,t)));const i=x(e.headers.get(\"Cache-Control\")||\"\");i[\"no-store\"]||(i[\"max-age\"]&&n.headers.set(\"Expires\",new Date(r+1e3*i[\"max-age\"]).toUTCString()),new Date(n.headers.get(\"Expires\")).getTime()-r<42e4||function(t,e){if(void 0===C)try{new Response(new ReadableStream),C=!0;}catch(t){C=!1;}C?e(t.body):t.blob().then(e);}(e,(e=>{const r=new Response(e,n);E(),B&&B.then((e=>e.put(function(t){const e=t.indexOf(\"?\");return e<0?t:t.slice(0,e)}(t.url),r))).catch((t=>d(t.message)));})));}(n,a,o),i=!0,e(null,t,r.headers.get(\"Cache-Control\"),r.headers.get(\"Expires\")));})).catch((t=>{s||e(new Error(t.message));}));})(r,null,l):r.blob().then((n=>e(new q(r.status,r.statusText,t.url,n)))))).catch((t=>{20!==t.code&&e(new Error(t.message));}));})(),{cancel:()=>{s=!0,i||r.abort();}}}const K=function(t,e){if(/:\\/\\//.test(t.url)&&!/^https?:|^file:/.test(t.url)){if(g()&&self.worker&&self.worker.actor)return self.worker.actor.send(\"getResource\",t,e);if(!g()){const r=t.url.substring(0,t.url.indexOf(\"://\"));return (I.REGISTERED_PROTOCOLS[r]||N)(t,e)}}if(!(/^file:/.test(r=t.url)||/^file:/.test(j())&&!/^\\w+:/.test(r))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,\"signal\"))return N(t,e);if(g()&&self.worker&&self.worker.actor)return self.worker.actor.send(\"getResource\",t,e,void 0,!0)}var r;return function(t,e){const r=new XMLHttpRequest;r.open(t.method||\"GET\",t.url,!0),\"arrayBuffer\"===t.type&&(r.responseType=\"arraybuffer\");for(const e in t.headers)r.setRequestHeader(e,t.headers[e]);return \"json\"===t.type&&(r.responseType=\"text\",r.setRequestHeader(\"Accept\",\"application/json\")),r.withCredentials=\"include\"===t.credentials,r.onerror=()=>{e(new Error(r.statusText));},r.onload=()=>{if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){let n=r.response;if(\"json\"===t.type)try{n=JSON.parse(r.response);}catch(t){return e(t)}e(null,n,r.getResponseHeader(\"Cache-Control\"),r.getResponseHeader(\"Expires\"));}else {const n=new Blob([r.response],{type:r.getResponseHeader(\"Content-Type\")});e(new q(r.status,r.statusText,t.url,n));}},r.send(t.body),{cancel:()=>r.abort()}}(t,e)},Z=function(t,e){return K(o(t,{type:\"arrayBuffer\"}),e)};function G(t){const e=window.document.createElement(\"a\");return e.href=t,e.protocol===window.document.location.protocol&&e.host===window.document.location.host}const J=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=\";let X,Y;X=[],Y=0;const H=function(t,e){if(T.supported&&(t.headers||(t.headers={}),t.headers.accept=\"image/webp,*/*\"),Y>=I.MAX_PARALLEL_IMAGE_REQUESTS){const r={requestParameters:t,callback:e,cancelled:!1,cancel(){this.cancelled=!0;}};return X.push(r),r}Y++;let r=!1;const n=()=>{if(!r)for(r=!0,Y--;X.length&&Y{n(),t?e(t):r&&function(t,e){\"function\"==typeof createImageBitmap?function(t,e){const r=new Blob([new Uint8Array(t)],{type:\"image/png\"});createImageBitmap(r).then((t=>{e(null,t);})).catch((t=>{e(new Error(`Could not load image because of ${t.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`));}));}(t,e):function(t,e){const r=new Image;r.onload=()=>{e(null,r),URL.revokeObjectURL(r.src),r.onload=null,window.requestAnimationFrame((()=>{r.src=J;}));},r.onerror=()=>e(new Error(\"Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.\"));const n=new Blob([new Uint8Array(t)],{type:\"image/png\"});r.src=t.byteLength?URL.createObjectURL(n):J;}(t,e);}(r,((t,r)=>{null!=t?e(t):null!=r&&e(null,r,{cacheControl:i,expires:s});}));}));return {cancel:()=>{i.cancel(),n();}}};function W(t,e,r){r[t]&&-1!==r[t].indexOf(e)||(r[t]=r[t]||[],r[t].push(e));}function Q(t,e,r){if(r&&r[t]){const n=r[t].indexOf(e);-1!==n&&r[t].splice(n,1);}}class tt{constructor(t,e={}){o(this,e),this.type=t;}}class et extends tt{constructor(t,e={}){super(\"error\",o({error:t},e));}}class rt{on(t,e){return this._listeners=this._listeners||{},W(t,e,this._listeners),this}off(t,e){return Q(t,e,this._listeners),Q(t,e,this._oneTimeListeners),this}once(t,e){return this._oneTimeListeners=this._oneTimeListeners||{},W(t,e,this._oneTimeListeners),this}fire(t,e){\"string\"==typeof t&&(t=new tt(t,e||{}));const r=t.type;if(this.listens(r)){t.target=this;const e=this._listeners&&this._listeners[r]?this._listeners[r].slice():[];for(const r of e)r.call(this,t);const n=this._oneTimeListeners&&this._oneTimeListeners[r]?this._oneTimeListeners[r].slice():[];for(const e of n)Q(r,e,this._oneTimeListeners),e.call(this,t);const i=this._eventedParent;i&&(o(t,\"function\"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),i.fire(t));}else t instanceof et&&console.error(t.error);return this}listens(t){return this._listeners&&this._listeners[t]&&this._listeners[t].length>0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)}setEventedParent(t,e){return this._eventedParent=t,this._eventedParentData=e,this}}var nt={$version:8,$root:{version:{required:!0,type:\"enum\",values:[8]},name:{type:\"string\"},metadata:{type:\"*\"},center:{type:\"array\",value:\"number\"},zoom:{type:\"number\"},bearing:{type:\"number\",default:0,period:360,units:\"degrees\"},pitch:{type:\"number\",default:0,units:\"degrees\"},light:{type:\"light\"},sources:{required:!0,type:\"sources\"},sprite:{type:\"string\"},glyphs:{type:\"string\"},transition:{type:\"transition\"},layers:{required:!0,type:\"array\",value:\"layer\"}},sources:{\"*\":{type:\"source\"}},source:[\"source_vector\",\"source_raster\",\"source_raster_dem\",\"source_geojson\",\"source_video\",\"source_image\"],source_vector:{type:{required:!0,type:\"enum\",values:{vector:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},attribution:{type:\"string\"},promoteId:{type:\"promoteId\"},volatile:{type:\"boolean\",default:!1},\"*\":{type:\"*\"}},source_raster:{type:{required:!0,type:\"enum\",values:{raster:{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},scheme:{type:\"enum\",values:{xyz:{},tms:{}},default:\"xyz\"},attribution:{type:\"string\"},volatile:{type:\"boolean\",default:!1},\"*\":{type:\"*\"}},source_raster_dem:{type:{required:!0,type:\"enum\",values:{\"raster-dem\":{}}},url:{type:\"string\"},tiles:{type:\"array\",value:\"string\"},bounds:{type:\"array\",value:\"number\",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:\"number\",default:0},maxzoom:{type:\"number\",default:22},tileSize:{type:\"number\",default:512,units:\"pixels\"},attribution:{type:\"string\"},encoding:{type:\"enum\",values:{terrarium:{},mapbox:{}},default:\"mapbox\"},volatile:{type:\"boolean\",default:!1},\"*\":{type:\"*\"}},source_geojson:{type:{required:!0,type:\"enum\",values:{geojson:{}}},data:{type:\"*\"},maxzoom:{type:\"number\",default:18},attribution:{type:\"string\"},buffer:{type:\"number\",default:128,maximum:512,minimum:0},filter:{type:\"*\"},tolerance:{type:\"number\",default:.375},cluster:{type:\"boolean\",default:!1},clusterRadius:{type:\"number\",default:50,minimum:0},clusterMaxZoom:{type:\"number\"},clusterMinPoints:{type:\"number\"},clusterProperties:{type:\"*\"},lineMetrics:{type:\"boolean\",default:!1},generateId:{type:\"boolean\",default:!1},promoteId:{type:\"promoteId\"}},source_video:{type:{required:!0,type:\"enum\",values:{video:{}}},urls:{required:!0,type:\"array\",value:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},source_image:{type:{required:!0,type:\"enum\",values:{image:{}}},url:{required:!0,type:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},layer:{id:{type:\"string\",required:!0},type:{type:\"enum\",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},\"fill-extrusion\":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:\"*\"},source:{type:\"string\"},\"source-layer\":{type:\"string\"},minzoom:{type:\"number\",minimum:0,maximum:24},maxzoom:{type:\"number\",minimum:0,maximum:24},filter:{type:\"filter\"},layout:{type:\"layout\"},paint:{type:\"paint\"}},layout:[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_heatmap\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_hillshade\",\"layout_background\"],layout_background:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_fill:{\"fill-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_circle:{\"circle-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_heatmap:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},\"layout_fill-extrusion\":{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_line:{\"line-cap\":{type:\"enum\",values:{butt:{},round:{},square:{}},default:\"butt\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-join\":{type:\"enum\",values:{bevel:{},round:{},miter:{}},default:\"miter\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{type:\"number\",default:2,requires:[{\"line-join\":\"miter\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{type:\"number\",default:1.05,requires:[{\"line-join\":\"round\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_symbol:{\"symbol-placement\":{type:\"enum\",values:{point:{},line:{},\"line-center\":{}},default:\"point\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{type:\"number\",default:250,minimum:1,units:\"pixels\",requires:[{\"symbol-placement\":\"line\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{type:\"boolean\",default:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{type:\"enum\",values:{auto:{},\"viewport-y\":{},source:{}},default:\"auto\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"!\":\"icon-overlap\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-overlap\":{type:\"enum\",values:{never:{},always:{},cooperative:{}},requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{type:\"boolean\",default:!1,requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-size\":{type:\"number\",default:1,minimum:0,units:\"factor of the original icon size\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-text-fit\":{type:\"enum\",values:{none:{},width:{},height:{},both:{}},default:\"none\",requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-text-fit-padding\":{type:\"array\",value:\"number\",length:4,default:[0,0,0,0],units:\"pixels\",requires:[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{type:\"resolvedImage\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-keep-upright\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{type:\"array\",value:\"number\",length:2,default:[0,0],requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},\"viewport-glyph\":{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{type:\"formatted\",default:\"\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-font\":{type:\"array\",value:\"string\",default:[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{type:\"number\",default:16,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{type:\"number\",default:10,minimum:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{type:\"number\",default:1.2,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-letter-spacing\":{type:\"number\",default:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{type:\"enum\",values:{auto:{},left:{},center:{},right:{}},default:\"center\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-radial-offset\":{type:\"number\",units:\"ems\",default:0,requires:[\"text-field\"],\"property-type\":\"data-driven\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]}},\"text-variable-anchor\":{type:\"array\",value:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"text-field\",{\"!\":\"text-variable-anchor\"}],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-angle\":{type:\"number\",default:45,units:\"degrees\",requires:[\"text-field\",{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-writing-mode\":{type:\"array\",value:\"enum\",values:{horizontal:{},vertical:{}},requires:[\"text-field\",{\"symbol-placement\":[\"point\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{type:\"boolean\",default:!0,requires:[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{type:\"enum\",values:{none:{},uppercase:{},lowercase:{}},default:\"none\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{type:\"array\",value:\"number\",units:\"ems\",length:2,default:[0,0],requires:[\"text-field\",{\"!\":\"text-radial-offset\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"text-field\",{\"!\":\"text-overlap\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-overlap\":{type:\"enum\",values:{never:{},always:{},cooperative:{}},requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{type:\"boolean\",default:!1,requires:[\"text-field\",\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_raster:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_hillshade:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},filter:{type:\"array\",value:\"*\"},filter_operator:{type:\"enum\",values:{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},in:{},\"!in\":{},all:{},any:{},none:{},has:{},\"!has\":{},within:{}}},geometry_type:{type:\"enum\",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:\"expression\"},stops:{type:\"array\",value:\"function_stop\"},base:{type:\"number\",default:1,minimum:0},property:{type:\"string\",default:\"$zoom\"},type:{type:\"enum\",values:{identity:{},exponential:{},interval:{},categorical:{}},default:\"exponential\"},colorSpace:{type:\"enum\",values:{rgb:{},lab:{},hcl:{}},default:\"rgb\"},default:{type:\"*\",required:!1}},function_stop:{type:\"array\",minimum:0,maximum:24,value:[\"number\",\"color\"],length:2},expression:{type:\"array\",value:\"*\",minimum:1},light:{anchor:{type:\"enum\",default:\"viewport\",values:{map:{},viewport:{}},\"property-type\":\"data-constant\",transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]}},position:{type:\"array\",default:[1.15,210,30],length:3,value:\"number\",\"property-type\":\"data-constant\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]}},color:{type:\"color\",\"property-type\":\"data-constant\",default:\"#ffffff\",expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},intensity:{type:\"number\",\"property-type\":\"data-constant\",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0}},paint:[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\"],paint_fill:{\"fill-antialias\":{type:\"boolean\",default:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{type:\"color\",transition:!0,requires:[{\"!\":\"fill-pattern\"},{\"fill-antialias\":!0}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-extrusion-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-extrusion-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"fill-extrusion-height\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,requires:[\"fill-extrusion-height\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{type:\"boolean\",default:!0,transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_line:{\"line-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"line-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{type:\"number\",default:1,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{type:\"number\",default:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{type:\"array\",value:\"number\",minimum:0,transition:!0,units:\"line widths\",requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"line-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-gradient\":{type:\"color\",transition:!1,requires:[{\"!\":\"line-dasharray\"},{\"!\":\"line-pattern\"},{source:\"geojson\",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:[\"line-progress\"]},\"property-type\":\"color-ramp\"}},paint_circle:{\"circle-radius\":{type:\"number\",default:5,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{type:\"number\",default:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"circle-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},paint_heatmap:{\"heatmap-radius\":{type:\"number\",default:30,minimum:1,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{type:\"number\",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{type:\"number\",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{type:\"color\",default:[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",.1,\"royalblue\",.3,\"cyan\",.5,\"lime\",.7,\"yellow\",1,\"red\"],transition:!1,expression:{interpolated:!0,parameters:[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_symbol:{\"icon-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"icon-image\",\"icon-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{type:\"color\",default:\"#000000\",transition:!0,overridable:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"text-field\",\"text-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_raster:{\"raster-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{type:\"number\",default:0,period:360,transition:!0,units:\"degrees\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{type:\"number\",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{type:\"enum\",values:{linear:{},nearest:{}},default:\"linear\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{type:\"number\",default:300,minimum:0,transition:!1,units:\"milliseconds\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_hillshade:{\"hillshade-illumination-direction\":{type:\"number\",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{type:\"number\",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{type:\"color\",default:\"#FFFFFF\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_background:{\"background-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"background-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{type:\"resolvedImage\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"background-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},transition:{duration:{type:\"number\",default:300,minimum:0,units:\"milliseconds\"},delay:{type:\"number\",default:0,minimum:0,units:\"milliseconds\"}},\"property-type\":{\"data-driven\":{type:\"property-type\"},\"cross-faded\":{type:\"property-type\"},\"cross-faded-data-driven\":{type:\"property-type\"},\"color-ramp\":{type:\"property-type\"},\"data-constant\":{type:\"property-type\"},constant:{type:\"property-type\"}},promoteId:{\"*\":{type:\"string\"}}};class it{constructor(t,e,r,n){this.message=(t?`${t}: `:\"\")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__);}}function st(t){const e=t.value;return e?[new it(t.key,e,\"constants have been deprecated as of v8\")]:[]}function at(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}function ot(t){return t instanceof Number||t instanceof String||t instanceof Boolean?t.valueOf():t}function lt(t){if(Array.isArray(t))return t.map(lt);if(t instanceof Object&&!(t instanceof Number||t instanceof String||t instanceof Boolean)){const e={};for(const r in t)e[r]=lt(t[r]);return e}return ot(t)}class ut extends Error{constructor(t,e){super(e),this.message=e,this.key=t;}}class ct{constructor(t,e=[]){this.parent=t,this.bindings={};for(const[t,r]of e)this.bindings[t]=r;}concat(t){return new ct(this,t)}get(t){if(this.bindings[t])return this.bindings[t];if(this.parent)return this.parent.get(t);throw new Error(`${t} not found in scope.`)}has(t){return !!this.bindings[t]||!!this.parent&&this.parent.has(t)}}const ht={kind:\"null\"},pt={kind:\"number\"},ft={kind:\"string\"},dt={kind:\"boolean\"},yt={kind:\"color\"},mt={kind:\"object\"},gt={kind:\"value\"},xt={kind:\"collator\"},vt={kind:\"formatted\"},bt={kind:\"resolvedImage\"};function wt(t,e){return {kind:\"array\",itemType:t,N:e}}function _t(t){if(\"array\"===t.kind){const e=_t(t.itemType);return \"number\"==typeof t.N?`array<${e}, ${t.N}>`:\"value\"===t.itemType.kind?\"array\":`array<${e}>`}return t.kind}const At=[ht,pt,ft,dt,yt,vt,mt,wt(gt),bt];function kt(t,e){if(\"error\"===e.kind)return null;if(\"array\"===t.kind){if(\"array\"===e.kind&&(0===e.N&&\"value\"===e.itemType.kind||!kt(t.itemType,e.itemType))&&(\"number\"!=typeof t.N||t.N===e.N))return null}else {if(t.kind===e.kind)return null;if(\"value\"===t.kind)for(const t of At)if(!kt(t,e))return null}return `Expected ${_t(t)} but found ${_t(e)} instead.`}function St(t,e){return e.some((e=>e.kind===t.kind))}function zt(t,e){return e.some((e=>\"null\"===e?null===t:\"array\"===e?Array.isArray(t):\"object\"===e?t&&!Array.isArray(t)&&\"object\"==typeof t:e===typeof t))}var It,Mt={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function Bt(t){return (t=Math.round(t))<0?0:t>255?255:t}function Ct(t){return Bt(\"%\"===t[t.length-1]?parseFloat(t)/100*255:parseInt(t))}function Pt(t){return (e=\"%\"===t[t.length-1]?parseFloat(t)/100:parseFloat(t))<0?0:e>1?1:e;var e;}function Vt(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{It={}.parseCSSColor=function(t){var e,r=t.replace(/ /g,\"\").toLowerCase();if(r in Mt)return Mt[r].slice();if(\"#\"===r[0])return 4===r.length?(e=parseInt(r.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===r.length&&(e=parseInt(r.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var n=r.indexOf(\"(\"),i=r.indexOf(\")\");if(-1!==n&&i+1===r.length){var s=r.substr(0,n),a=r.substr(n+1,i-(n+1)).split(\",\"),o=1;switch(s){case\"rgba\":if(4!==a.length)return null;o=Pt(a.pop());case\"rgb\":return 3!==a.length?null:[Ct(a[0]),Ct(a[1]),Ct(a[2]),o];case\"hsla\":if(4!==a.length)return null;o=Pt(a.pop());case\"hsl\":if(3!==a.length)return null;var l=(parseFloat(a[0])%360+360)%360/360,u=Pt(a[1]),c=Pt(a[2]),h=c<=.5?c*(u+1):c+u-c*u,p=2*c-h;return [Bt(255*Vt(p,h,l+1/3)),Bt(255*Vt(p,h,l)),Bt(255*Vt(p,h,l-1/3)),o];default:return null}}return null};}catch(t){}class Et{constructor(t,e,r,n=1){this.r=t,this.g=e,this.b=r,this.a=n;}static parse(t){if(!t)return;if(t instanceof Et)return t;if(\"string\"!=typeof t)return;const e=It(t);return e?new Et(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3]):void 0}toString(){const[t,e,r,n]=this.toArray();return `rgba(${Math.round(t)},${Math.round(e)},${Math.round(r)},${n})`}toArray(){const{r:t,g:e,b:r,a:n}=this;return 0===n?[0,0,0,0]:[255*t/n,255*e/n,255*r/n,n]}}Et.black=new Et(0,0,0,1),Et.white=new Et(1,1,1,1),Et.transparent=new Et(0,0,0,0),Et.red=new Et(1,0,0,1);class Ft{constructor(t,e,r){this.sensitivity=t?e?\"variant\":\"case\":e?\"accent\":\"base\",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:\"search\"});}compare(t,e){return this.collator.compare(t,e)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Tt{constructor(t,e,r,n,i){this.text=t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i;}}class Lt{constructor(t){this.sections=t;}static fromString(t){return new Lt([new Tt(t,null,null,null,null)])}isEmpty(){return 0===this.sections.length||!this.sections.some((t=>0!==t.text.length||t.image&&0!==t.image.name.length))}static factory(t){return t instanceof Lt?t:Lt.fromString(t)}toString(){return 0===this.sections.length?\"\":this.sections.map((t=>t.text)).join(\"\")}serialize(){const t=[\"format\"];for(const e of this.sections){if(e.image){t.push([\"image\",e.image.name]);continue}t.push(e.text);const r={};e.fontStack&&(r[\"text-font\"]=[\"literal\",e.fontStack.split(\",\")]),e.scale&&(r[\"font-scale\"]=e.scale),e.textColor&&(r[\"text-color\"]=[\"rgba\"].concat(e.textColor.toArray())),t.push(r);}return t}}class Dt{constructor(t){this.name=t.name,this.available=t.available;}toString(){return this.name}static fromString(t){return t?new Dt({name:t,available:!1}):null}serialize(){return [\"image\",this.name]}}function $t(t,e,r,n){return \"number\"==typeof t&&t>=0&&t<=255&&\"number\"==typeof e&&e>=0&&e<=255&&\"number\"==typeof r&&r>=0&&r<=255?void 0===n||\"number\"==typeof n&&n>=0&&n<=1?null:`Invalid rgba value [${[t,e,r,n].join(\", \")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(\"number\"==typeof n?[t,e,r,n]:[t,e,r]).join(\", \")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function Rt(t){if(null===t)return !0;if(\"string\"==typeof t)return !0;if(\"boolean\"==typeof t)return !0;if(\"number\"==typeof t)return !0;if(t instanceof Et)return !0;if(t instanceof Ft)return !0;if(t instanceof Lt)return !0;if(t instanceof Dt)return !0;if(Array.isArray(t)){for(const e of t)if(!Rt(e))return !1;return !0}if(\"object\"==typeof t){for(const e in t)if(!Rt(t[e]))return !1;return !0}return !1}function Ut(t){if(null===t)return ht;if(\"string\"==typeof t)return ft;if(\"boolean\"==typeof t)return dt;if(\"number\"==typeof t)return pt;if(t instanceof Et)return yt;if(t instanceof Ft)return xt;if(t instanceof Lt)return vt;if(t instanceof Dt)return bt;if(Array.isArray(t)){const e=t.length;let r;for(const e of t){const t=Ut(e);if(r){if(r===t)continue;r=gt;break}r=t;}return wt(r||gt,e)}return mt}function Ot(t){const e=typeof t;return null===t?\"\":\"string\"===e||\"number\"===e||\"boolean\"===e?String(t):t instanceof Et||t instanceof Lt||t instanceof Dt?t.toString():JSON.stringify(t)}class qt{constructor(t,e){this.type=t,this.value=e;}static parse(t,e){if(2!==t.length)return e.error(`'literal' expression requires exactly one argument, but found ${t.length-1} instead.`);if(!Rt(t[1]))return e.error(\"invalid value\");const r=t[1];let n=Ut(r);const i=e.expectedType;return \"array\"!==n.kind||0!==n.N||!i||\"array\"!==i.kind||\"number\"==typeof i.N&&0!==i.N||(n=i),new qt(n,r)}evaluate(){return this.value}eachChild(){}outputDefined(){return !0}serialize(){return \"array\"===this.type.kind||\"object\"===this.type.kind?[\"literal\",this.value]:this.value instanceof Et?[\"rgba\"].concat(this.value.toArray()):this.value instanceof Lt?this.value.serialize():this.value}}class jt{constructor(t){this.name=\"ExpressionEvaluationError\",this.message=t;}toJSON(){return this.message}}const Nt={string:ft,number:pt,boolean:dt,object:mt};class Kt{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");let r,n=1;const i=t[0];if(\"array\"===i){let i,s;if(t.length>2){const r=t[1];if(\"string\"!=typeof r||!(r in Nt)||\"object\"===r)return e.error('The item type argument of \"array\" must be one of string, number, boolean',1);i=Nt[r],n++;}else i=gt;if(t.length>3){if(null!==t[2]&&(\"number\"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to \"array\" must be a positive integer literal',2);s=t[2],n++;}r=wt(i,s);}else r=Nt[i];const s=[];for(;nt.outputDefined()))}serialize(){const t=this.type,e=[t.kind];if(\"array\"===t.kind){const r=t.itemType;if(\"string\"===r.kind||\"number\"===r.kind||\"boolean\"===r.kind){e.push(r.kind);const n=t.N;(\"number\"==typeof n||this.args.length>1)&&e.push(n);}}return e.concat(this.args.map((t=>t.serialize())))}}class Zt{constructor(t){this.type=vt,this.sections=t;}static parse(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");const r=t[1];if(!Array.isArray(r)&&\"object\"==typeof r)return e.error(\"First argument must be an image or text section.\");const n=[];let i=!1;for(let r=1;r<=t.length-1;++r){const s=t[r];if(i&&\"object\"==typeof s&&!Array.isArray(s)){i=!1;let t=null;if(s[\"font-scale\"]&&(t=e.parse(s[\"font-scale\"],1,pt),!t))return null;let r=null;if(s[\"text-font\"]&&(r=e.parse(s[\"text-font\"],1,wt(ft)),!r))return null;let a=null;if(s[\"text-color\"]&&(a=e.parse(s[\"text-color\"],1,yt),!a))return null;const o=n[n.length-1];o.scale=t,o.font=r,o.textColor=a;}else {const s=e.parse(t[r],1,gt);if(!s)return null;const a=s.type.kind;if(\"string\"!==a&&\"value\"!==a&&\"null\"!==a&&\"resolvedImage\"!==a)return e.error(\"Formatted text type must be 'string', 'value', 'image' or 'null'.\");i=!0,n.push({content:s,scale:null,font:null,textColor:null});}}return new Zt(n)}evaluate(t){return new Lt(this.sections.map((e=>{const r=e.content.evaluate(t);return Ut(r)===bt?new Tt(\"\",r,null,null,null):new Tt(Ot(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(\",\"):null,e.textColor?e.textColor.evaluate(t):null)})))}eachChild(t){for(const e of this.sections)t(e.content),e.scale&&t(e.scale),e.font&&t(e.font),e.textColor&&t(e.textColor);}outputDefined(){return !1}serialize(){const t=[\"format\"];for(const e of this.sections){t.push(e.content.serialize());const r={};e.scale&&(r[\"font-scale\"]=e.scale.serialize()),e.font&&(r[\"text-font\"]=e.font.serialize()),e.textColor&&(r[\"text-color\"]=e.textColor.serialize()),t.push(r);}return t}}class Gt{constructor(t){this.type=bt,this.input=t;}static parse(t,e){if(2!==t.length)return e.error(\"Expected two arguments.\");const r=e.parse(t[1],1,ft);return r?new Gt(r):e.error(\"No image name provided.\")}evaluate(t){const e=this.input.evaluate(t),r=Dt.fromString(e);return r&&t.availableImages&&(r.available=t.availableImages.indexOf(e)>-1),r}eachChild(t){t(this.input);}outputDefined(){return !1}serialize(){return [\"image\",this.input.serialize()]}}const Jt={\"to-boolean\":dt,\"to-color\":yt,\"to-number\":pt,\"to-string\":ft};class Xt{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error(\"Expected at least one argument.\");const r=t[0];if((\"to-boolean\"===r||\"to-string\"===r)&&2!==t.length)return e.error(\"Expected one argument.\");const n=Jt[r],i=[];for(let r=1;r4?`Invalid rbga value ${JSON.stringify(e)}: expected an array containing either three or four numeric values.`:$t(e[0],e[1],e[2],e[3]),!r))return new Et(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new jt(r||`Could not parse color from value '${\"string\"==typeof e?e:String(JSON.stringify(e))}'`)}if(\"number\"===this.type.kind){let e=null;for(const r of this.args){if(e=r.evaluate(t),null===e)return 0;const n=Number(e);if(!isNaN(n))return n}throw new jt(`Could not convert ${JSON.stringify(e)} to number.`)}return \"formatted\"===this.type.kind?Lt.fromString(Ot(this.args[0].evaluate(t))):\"resolvedImage\"===this.type.kind?Dt.fromString(Ot(this.args[0].evaluate(t))):Ot(this.args[0].evaluate(t))}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}serialize(){if(\"formatted\"===this.type.kind)return new Zt([{content:this.args[0],scale:null,font:null,textColor:null}]).serialize();if(\"resolvedImage\"===this.type.kind)return new Gt(this.args[0]).serialize();const t=[`to-${this.type.kind}`];return this.eachChild((e=>{t.push(e.serialize());})),t}}const Yt=[\"Unknown\",\"Point\",\"LineString\",\"Polygon\"];class Ht{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null;}id(){return this.feature&&\"id\"in this.feature?this.feature.id:null}geometryType(){return this.feature?\"number\"==typeof this.feature.type?Yt[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&\"geometry\"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(t){let e=this._parseColorCache[t];return e||(e=this._parseColorCache[t]=Et.parse(t)),e}}class Wt{constructor(t,e,r,n){this.name=t,this.type=e,this._evaluate=r,this.args=n;}evaluate(t){return this._evaluate(t,this.args)}eachChild(t){this.args.forEach(t);}outputDefined(){return !1}serialize(){return [this.name].concat(this.args.map((t=>t.serialize())))}static parse(t,e){const r=t[0],n=Wt.definitions[r];if(!n)return e.error(`Unknown expression \"${r}\". If you wanted a literal array, use [\"literal\", [...]].`,0);const i=Array.isArray(n)?n[0]:n.type,s=Array.isArray(n)?[[n[1],n[2]]]:n.overloads,a=s.filter((([e])=>!Array.isArray(e)||e.length===t.length-1));let o=null;for(const[n,s]of a){o=new we(e.registry,e.path,null,e.scope);const a=[];let l=!1;for(let e=1;e{return e=t,Array.isArray(e)?`(${e.map(_t).join(\", \")})`:`(${_t(e.type)}...)`;var e;})).join(\" | \"),n=[];for(let r=1;r=e[2]||t[1]<=e[1]||t[3]>=e[3])}function ne(t,e){const r=(180+t[0])/360,n=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t[1]*Math.PI/360)))/360,i=Math.pow(2,e.z);return [Math.round(r*i*te),Math.round(n*i*te)]}function ie(t,e,r){const n=t[0]-e[0],i=t[1]-e[1],s=t[0]-r[0],a=t[1]-r[1];return n*a-s*i==0&&n*s<=0&&i*a<=0}function se(t,e){let r=!1;for(let a=0,o=e.length;a(n=t)[1]!=(s=o[e+1])[1]>n[1]&&n[0]<(s[0]-i[0])*(n[1]-i[1])/(s[1]-i[1])+i[0]&&(r=!r);}}var n,i,s;return r}function ae(t,e){for(let r=0;r0&&o<0||a<0&&o>0}function le(t,e,r){for(const u of r)for(let r=0;rr[2]){const e=.5*n;let i=t[0]-r[0]>e?-n:r[0]-t[0]>e?n:0;0===i&&(i=t[0]-r[2]>e?-n:r[2]-t[0]>e?n:0),t[0]+=i;}ee(e,t);}function de(t,e,r,n){const i=Math.pow(2,n.z)*te,s=[n.x*te,n.y*te],a=[];for(const n of t)for(const t of n){const n=[t.x+s[0],t.y+s[1]];fe(n,e,r,i),a.push(n);}return a}function ye(t,e,r,n){const i=Math.pow(2,n.z)*te,s=[n.x*te,n.y*te],a=[];for(const r of t){const t=[];for(const n of r){const r=[n.x+s[0],n.y+s[1]];ee(e,r),t.push(r);}a.push(t);}if(e[2]-e[0]<=i/2){(o=e)[0]=o[1]=1/0,o[2]=o[3]=-1/0;for(const t of a)for(const n of t)fe(n,e,r,i);}var o;return a}class me{constructor(t,e){this.type=dt,this.geojson=t,this.geometries=e;}static parse(t,e){if(2!==t.length)return e.error(`'within' expression requires exactly one argument, but found ${t.length-1} instead.`);if(Rt(t[1])){const e=t[1];if(\"FeatureCollection\"===e.type)for(let t=0;t{e&&!ge(t)&&(e=!1);})),e}function xe(t){if(t instanceof Wt&&\"feature-state\"===t.name)return !1;let e=!0;return t.eachChild((t=>{e&&!xe(t)&&(e=!1);})),e}function ve(t,e){if(t instanceof Wt&&e.indexOf(t.name)>=0)return !1;let r=!0;return t.eachChild((t=>{r&&!ve(t,e)&&(r=!1);})),r}class be{constructor(t,e){this.type=e.type,this.name=t,this.boundExpression=e;}static parse(t,e){if(2!==t.length||\"string\"!=typeof t[1])return e.error(\"'var' expression requires exactly one string literal argument.\");const r=t[1];return e.scope.has(r)?new be(r,e.scope.get(r)):e.error(`Unknown variable \"${r}\". Make sure \"${r}\" has been bound in an enclosing \"let\" expression before using it.`,1)}evaluate(t){return this.boundExpression.evaluate(t)}eachChild(){}outputDefined(){return !1}serialize(){return [\"var\",this.name]}}class we{constructor(t,e=[],r,n=new ct,i=[]){this.registry=t,this.path=e,this.key=e.map((t=>`[${t}]`)).join(\"\"),this.scope=n,this.errors=i,this.expectedType=r;}parse(t,e,r,n,i={}){return e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)}_parse(t,e){function r(t,e,r){return \"assert\"===r?new Kt(e,[t]):\"coerce\"===r?new Xt(e,[t]):t}if(null!==t&&\"string\"!=typeof t&&\"boolean\"!=typeof t&&\"number\"!=typeof t||(t=[\"literal\",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');const n=t[0];if(\"string\"!=typeof n)return this.error(`Expression name must be a string, but found ${typeof n} instead. If you wanted a literal array, use [\"literal\", [...]].`,0),null;const i=this.registry[n];if(i){let n=i.parse(t,this);if(!n)return null;if(this.expectedType){const t=this.expectedType,i=n.type;if(\"string\"!==t.kind&&\"number\"!==t.kind&&\"boolean\"!==t.kind&&\"object\"!==t.kind&&\"array\"!==t.kind||\"value\"!==i.kind)if(\"color\"!==t.kind&&\"formatted\"!==t.kind&&\"resolvedImage\"!==t.kind||\"value\"!==i.kind&&\"string\"!==i.kind){if(this.checkSubtype(t,i))return null}else n=r(n,t,e.typeAnnotation||\"coerce\");else n=r(n,t,e.typeAnnotation||\"assert\");}if(!(n instanceof qt)&&\"resolvedImage\"!==n.type.kind&&_e(n)){const t=new Ht;try{n=new qt(n.type,n.evaluate(t));}catch(t){return this.error(t.message),null}}return n}return this.error(`Unknown expression \"${n}\". If you wanted a literal array, use [\"literal\", [...]].`,0)}return this.error(void 0===t?\"'undefined' value invalid. Use null instead.\":\"object\"==typeof t?'Bare objects invalid. Use [\"literal\", {...}] instead.':`Expected an array, but found ${typeof t} instead.`)}concat(t,e,r){const n=\"number\"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new we(this.registry,n,e||null,i,this.errors)}error(t,...e){const r=`${this.key}${e.map((t=>`[${t}]`)).join(\"\")}`;this.errors.push(new ut(r,t));}checkSubtype(t,e){const r=kt(t,e);return r&&this.error(r),r}}function _e(t){if(t instanceof be)return _e(t.boundExpression);if(t instanceof Wt&&\"error\"===t.name)return !1;if(t instanceof Qt)return !1;if(t instanceof me)return !1;const e=t instanceof Xt||t instanceof Kt;let r=!0;return t.eachChild((t=>{r=e?r&&_e(t):r&&t instanceof qt;})),!!r&&ge(t)&&ve(t,[\"zoom\",\"heatmap-density\",\"line-progress\",\"accumulated\",\"is-supported-script\"])}function Ae(t,e){const r=t.length-1;let n,i,s=0,a=r,o=0;for(;s<=a;)if(o=Math.floor((s+a)/2),n=t[o],i=t[o+1],n<=e){if(o===r||ee))throw new jt(\"Input is not a number.\");a=o-1;}return 0}class ke{constructor(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(const[t,e]of r)this.labels.push(t),this.outputs.push(e);}static parse(t,e){if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");const r=e.parse(t[1],1,pt);if(!r)return null;const n=[];let i=null;e.expectedType&&\"value\"!==e.expectedType.kind&&(i=e.expectedType);for(let r=1;r=s)return e.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',o);const u=e.parse(a,l,i);if(!u)return null;i=i||u.type,n.push([s,u]);}return new ke(i,r,n)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[Ae(e,n)].evaluate(t)}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}serialize(){const t=[\"step\",this.input.serialize()];for(let e=0;e0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t}}function Se(t,e,r){return t*(1-r)+e*r}var ze=Object.freeze({__proto__:null,number:Se,color:function(t,e,r){return new Et(Se(t.r,e.r,r),Se(t.g,e.g,r),Se(t.b,e.b,r),Se(t.a,e.a,r))},array:function(t,e,r){return t.map(((t,n)=>Se(t,e[n],r)))}});const Ie=.95047,Me=1.08883,Be=4/29,Ce=6/29,Pe=3*Ce*Ce,Ve=Math.PI/180,Ee=180/Math.PI;function Fe(t){return t>.008856451679035631?Math.pow(t,1/3):t/Pe+Be}function Te(t){return t>Ce?t*t*t:Pe*(t-Be)}function Le(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function De(t){return (t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function $e(t){const e=De(t.r),r=De(t.g),n=De(t.b),i=Fe((.4124564*e+.3575761*r+.1804375*n)/Ie),s=Fe((.2126729*e+.7151522*r+.072175*n)/1);return {l:116*s-16,a:500*(i-s),b:200*(s-Fe((.0193339*e+.119192*r+.9503041*n)/Me)),alpha:t.a}}function Re(t){let e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?e:e-t.b/200;return e=1*Te(e),r=Ie*Te(r),n=Me*Te(n),new Et(Le(3.2404542*r-1.5371385*e-.4985314*n),Le(-.969266*r+1.8760108*e+.041556*n),Le(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}function Ue(t,e,r){const n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}const Oe={forward:$e,reverse:Re,interpolate:function(t,e,r){return {l:Se(t.l,e.l,r),a:Se(t.a,e.a,r),b:Se(t.b,e.b,r),alpha:Se(t.alpha,e.alpha,r)}}},qe={forward:function(t){const{l:e,a:r,b:n}=$e(t),i=Math.atan2(n,r)*Ee;return {h:i<0?i+360:i,c:Math.sqrt(r*r+n*n),l:e,alpha:t.a}},reverse:function(t){const e=t.h*Ve,r=t.c;return Re({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return {h:Ue(t.h,e.h,r),c:Se(t.c,e.c,r),l:Se(t.l,e.l,r),alpha:Se(t.alpha,e.alpha,r)}}};var je=Object.freeze({__proto__:null,lab:Oe,hcl:qe});class Ne{constructor(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(const[t,e]of i)this.labels.push(t),this.outputs.push(e);}static interpolationFactor(t,r,n,i){let s=0;if(\"exponential\"===t.name)s=Ke(r,t.base,n,i);else if(\"linear\"===t.name)s=Ke(r,1,n,i);else if(\"cubic-bezier\"===t.name){const a=t.controlPoints;s=new e(a[0],a[1],a[2],a[3]).solve(Ke(r,1,n,i));}return s}static parse(t,e){let[r,n,i,...s]=t;if(!Array.isArray(n)||0===n.length)return e.error(\"Expected an interpolation type expression.\",1);if(\"linear\"===n[0])n={name:\"linear\"};else if(\"exponential\"===n[0]){const t=n[1];if(\"number\"!=typeof t)return e.error(\"Exponential interpolation requires a numeric base.\",1,1);n={name:\"exponential\",base:t};}else {if(\"cubic-bezier\"!==n[0])return e.error(`Unknown interpolation type ${String(n[0])}`,1,0);{const t=n.slice(1);if(4!==t.length||t.some((t=>\"number\"!=typeof t||t<0||t>1)))return e.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);n={name:\"cubic-bezier\",controlPoints:t};}}if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");if(i=e.parse(i,2,pt),!i)return null;const a=[];let o=null;\"interpolate-hcl\"===r||\"interpolate-lab\"===r?o=yt:e.expectedType&&\"value\"!==e.expectedType.kind&&(o=e.expectedType);for(let t=0;t=r)return e.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',i);const u=e.parse(n,l,o);if(!u)return null;o=o||u.type,a.push([r,u]);}return \"number\"===o.kind||\"color\"===o.kind||\"array\"===o.kind&&\"number\"===o.itemType.kind&&\"number\"==typeof o.N?new Ne(o,r,n,i,a):e.error(`Type ${_t(o)} is not interpolatable.`)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);const s=Ae(e,n),a=Ne.interpolationFactor(this.interpolation,n,e[s],e[s+1]),o=r[s].evaluate(t),l=r[s+1].evaluate(t);return \"interpolate\"===this.operator?ze[this.type.kind.toLowerCase()](o,l,a):\"interpolate-hcl\"===this.operator?qe.reverse(qe.interpolate(qe.forward(o),qe.forward(l),a)):Oe.reverse(Oe.interpolate(Oe.forward(o),Oe.forward(l),a))}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}serialize(){let t;t=\"linear\"===this.interpolation.name?[\"linear\"]:\"exponential\"===this.interpolation.name?1===this.interpolation.base?[\"linear\"]:[\"exponential\",this.interpolation.base]:[\"cubic-bezier\"].concat(this.interpolation.controlPoints);const e=[this.operator,t,this.input.serialize()];for(let t=0;tkt(n,t.type)));return new Ze(s?gt:r,i)}evaluate(t){let e,r=null,n=0;for(const i of this.args)if(n++,r=i.evaluate(t),r&&r instanceof Dt&&!r.available&&(e||(e=r.name),r=null,n===this.args.length&&(r=e)),null!==r)break;return r}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}serialize(){const t=[\"coalesce\"];return this.eachChild((e=>{t.push(e.serialize());})),t}}class Ge{constructor(t,e){this.type=e.type,this.bindings=[].concat(t),this.result=e;}evaluate(t){return this.result.evaluate(t)}eachChild(t){for(const e of this.bindings)t(e[1]);t(this.result);}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found ${t.length-1} instead.`);const r=[];for(let n=1;n=r.length)throw new jt(`Array index out of bounds: ${e} > ${r.length-1}.`);if(e!==Math.floor(e))throw new jt(`Array index must be an integer, but found ${e} instead.`);return r[e]}eachChild(t){t(this.index),t(this.input);}outputDefined(){return !1}serialize(){return [\"at\",this.index.serialize(),this.input.serialize()]}}class Xe{constructor(t,e){this.type=dt,this.needle=t,this.haystack=e;}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,gt),n=e.parse(t[2],2,gt);return r&&n?St(r.type,[dt,ft,pt,ht,gt])?new Xe(r,n):e.error(`Expected first argument to be of type boolean, string, number or null, but found ${_t(r.type)} instead`):null}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return !1;if(!zt(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new jt(`Expected first argument to be of type boolean, string, number or null, but found ${_t(Ut(e))} instead.`);if(!zt(r,[\"string\",\"array\"]))throw new jt(`Expected second argument to be of type array or string, but found ${_t(Ut(r))} instead.`);return r.indexOf(e)>=0}eachChild(t){t(this.needle),t(this.haystack);}outputDefined(){return !0}serialize(){return [\"in\",this.needle.serialize(),this.haystack.serialize()]}}class Ye{constructor(t,e,r){this.type=pt,this.needle=t,this.haystack=e,this.fromIndex=r;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,gt),n=e.parse(t[2],2,gt);if(!r||!n)return null;if(!St(r.type,[dt,ft,pt,ht,gt]))return e.error(`Expected first argument to be of type boolean, string, number or null, but found ${_t(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,pt);return i?new Ye(r,n,i):null}return new Ye(r,n)}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!zt(e,[\"boolean\",\"string\",\"number\",\"null\"]))throw new jt(`Expected first argument to be of type boolean, string, number or null, but found ${_t(Ut(e))} instead.`);if(!zt(r,[\"string\",\"array\"]))throw new jt(`Expected second argument to be of type array or string, but found ${_t(Ut(r))} instead.`);if(this.fromIndex){const n=this.fromIndex.evaluate(t);return r.indexOf(e,n)}return r.indexOf(e)}eachChild(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex);}outputDefined(){return !1}serialize(){if(null!=this.fromIndex&&void 0!==this.fromIndex){const t=this.fromIndex.serialize();return [\"index-of\",this.needle.serialize(),this.haystack.serialize(),t]}return [\"index-of\",this.needle.serialize(),this.haystack.serialize()]}}class He{constructor(t,e,r,n,i,s){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=s;}static parse(t,e){if(t.length<5)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if(t.length%2!=1)return e.error(\"Expected an even number of arguments.\");let r,n;e.expectedType&&\"value\"!==e.expectedType.kind&&(n=e.expectedType);const i={},s=[];for(let a=2;aNumber.MAX_SAFE_INTEGER)return u.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(\"number\"==typeof t&&Math.floor(t)!==t)return u.error(\"Numeric branch labels must be integer values.\");if(r){if(u.checkSubtype(r,Ut(t)))return null}else r=Ut(t);if(void 0!==i[String(t)])return u.error(\"Branch labels must be unique.\");i[String(t)]=s.length;}const c=e.parse(l,a,n);if(!c)return null;n=n||c.type,s.push(c);}const a=e.parse(t[1],1,gt);if(!a)return null;const o=e.parse(t[t.length-1],t.length-1,n);return o?\"value\"!==a.type.kind&&e.concat(1).checkSubtype(r,a.type)?null:new He(r,n,a,i,s,o):null}evaluate(t){const e=this.input.evaluate(t);return (Ut(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)}eachChild(t){t(this.input),this.outputs.forEach(t),t(this.otherwise);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))&&this.otherwise.outputDefined()}serialize(){const t=[\"match\",this.input.serialize()],e=Object.keys(this.cases).sort(),r=[],n={};for(const t of e){const e=n[this.cases[t]];void 0===e?(n[this.cases[t]]=r.length,r.push([this.cases[t],[t]])):r[e][1].push(t);}const i=t=>\"number\"===this.inputType.kind?Number(t):t;for(const[e,n]of r)t.push(1===n.length?i(n[0]):n.map(i)),t.push(this.outputs[e].serialize());return t.push(this.otherwise.serialize()),t}}class We{constructor(t,e,r){this.type=t,this.branches=e,this.otherwise=r;}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found only ${t.length-1}.`);if(t.length%2!=0)return e.error(\"Expected an odd number of arguments.\");let r;e.expectedType&&\"value\"!==e.expectedType.kind&&(r=e.expectedType);const n=[];for(let i=1;ie.outputDefined()))&&this.otherwise.outputDefined()}serialize(){const t=[\"case\"];return this.eachChild((e=>{t.push(e.serialize());})),t}}class Qe{constructor(t,e,r,n){this.type=t,this.input=e,this.beginIndex=r,this.endIndex=n;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,gt),n=e.parse(t[2],2,pt);if(!r||!n)return null;if(!St(r.type,[wt(gt),ft,gt]))return e.error(`Expected first argument to be of type array or string, but found ${_t(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,pt);return i?new Qe(r.type,r,n,i):null}return new Qe(r.type,r,n)}evaluate(t){const e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!zt(e,[\"string\",\"array\"]))throw new jt(`Expected first argument to be of type array or string, but found ${_t(Ut(e))} instead.`);if(this.endIndex){const n=this.endIndex.evaluate(t);return e.slice(r,n)}return e.slice(r)}eachChild(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex);}outputDefined(){return !1}serialize(){if(null!=this.endIndex&&void 0!==this.endIndex){const t=this.endIndex.serialize();return [\"slice\",this.input.serialize(),this.beginIndex.serialize(),t]}return [\"slice\",this.input.serialize(),this.beginIndex.serialize()]}}function tr(t,e){return \"==\"===t||\"!=\"===t?\"boolean\"===e.kind||\"string\"===e.kind||\"number\"===e.kind||\"null\"===e.kind||\"value\"===e.kind:\"string\"===e.kind||\"number\"===e.kind||\"value\"===e.kind}function er(t,e,r,n){return 0===n.compare(e,r)}function rr(t,e,r){const n=\"==\"!==t&&\"!=\"!==t;return class i{constructor(t,e,r){this.type=dt,this.lhs=t,this.rhs=e,this.collator=r,this.hasUntypedArgument=\"value\"===t.type.kind||\"value\"===e.type.kind;}static parse(t,e){if(3!==t.length&&4!==t.length)return e.error(\"Expected two or three arguments.\");const r=t[0];let s=e.parse(t[1],1,gt);if(!s)return null;if(!tr(r,s.type))return e.concat(1).error(`\"${r}\" comparisons are not supported for type '${_t(s.type)}'.`);let a=e.parse(t[2],2,gt);if(!a)return null;if(!tr(r,a.type))return e.concat(2).error(`\"${r}\" comparisons are not supported for type '${_t(a.type)}'.`);if(s.type.kind!==a.type.kind&&\"value\"!==s.type.kind&&\"value\"!==a.type.kind)return e.error(`Cannot compare types '${_t(s.type)}' and '${_t(a.type)}'.`);n&&(\"value\"===s.type.kind&&\"value\"!==a.type.kind?s=new Kt(a.type,[s]):\"value\"!==s.type.kind&&\"value\"===a.type.kind&&(a=new Kt(s.type,[a])));let o=null;if(4===t.length){if(\"string\"!==s.type.kind&&\"string\"!==a.type.kind&&\"value\"!==s.type.kind&&\"value\"!==a.type.kind)return e.error(\"Cannot use collator to compare non-string types.\");if(o=e.parse(t[3],3,xt),!o)return null}return new i(s,a,o)}evaluate(i){const s=this.lhs.evaluate(i),a=this.rhs.evaluate(i);if(n&&this.hasUntypedArgument){const e=Ut(s),r=Ut(a);if(e.kind!==r.kind||\"string\"!==e.kind&&\"number\"!==e.kind)throw new jt(`Expected arguments for \"${t}\" to be (string, string) or (number, number), but found (${e.kind}, ${r.kind}) instead.`)}if(this.collator&&!n&&this.hasUntypedArgument){const t=Ut(s),r=Ut(a);if(\"string\"!==t.kind||\"string\"!==r.kind)return e(i,s,a)}return this.collator?r(i,s,a,this.collator.evaluate(i)):e(i,s,a)}eachChild(t){t(this.lhs),t(this.rhs),this.collator&&t(this.collator);}outputDefined(){return !0}serialize(){const e=[t];return this.eachChild((t=>{e.push(t.serialize());})),e}}}const nr=rr(\"==\",(function(t,e,r){return e===r}),er),ir=rr(\"!=\",(function(t,e,r){return e!==r}),(function(t,e,r,n){return !er(0,e,r,n)})),sr=rr(\"<\",(function(t,e,r){return e\",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),or=rr(\"<=\",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),lr=rr(\">=\",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0}));class ur{constructor(t,e,r,n,i){this.type=ft,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i;}static parse(t,e){if(3!==t.length)return e.error(\"Expected two arguments.\");const r=e.parse(t[1],1,pt);if(!r)return null;const n=t[2];if(\"object\"!=typeof n||Array.isArray(n))return e.error(\"NumberFormat options argument must be an object.\");let i=null;if(n.locale&&(i=e.parse(n.locale,1,ft),!i))return null;let s=null;if(n.currency&&(s=e.parse(n.currency,1,ft),!s))return null;let a=null;if(n[\"min-fraction-digits\"]&&(a=e.parse(n[\"min-fraction-digits\"],1,pt),!a))return null;let o=null;return n[\"max-fraction-digits\"]&&(o=e.parse(n[\"max-fraction-digits\"],1,pt),!o)?null:new ur(r,i,s,a,o)}evaluate(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?\"currency\":\"decimal\",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))}eachChild(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits);}outputDefined(){return !1}serialize(){const t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t[\"min-fraction-digits\"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t[\"max-fraction-digits\"]=this.maxFractionDigits.serialize()),[\"number-format\",this.number.serialize(),t]}}class cr{constructor(t){this.type=pt,this.input=t;}static parse(t,e){if(2!==t.length)return e.error(`Expected 1 argument, but found ${t.length-1} instead.`);const r=e.parse(t[1],1);return r?\"array\"!==r.type.kind&&\"string\"!==r.type.kind&&\"value\"!==r.type.kind?e.error(`Expected argument of type string or array, but found ${_t(r.type)} instead.`):new cr(r):null}evaluate(t){const e=this.input.evaluate(t);if(\"string\"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new jt(`Expected value to be of type string or array, but found ${_t(Ut(e))} instead.`)}eachChild(t){t(this.input);}outputDefined(){return !1}serialize(){const t=[\"length\"];return this.eachChild((e=>{t.push(e.serialize());})),t}}const hr={\"==\":nr,\"!=\":ir,\">\":ar,\"<\":sr,\">=\":lr,\"<=\":or,array:Kt,at:Je,boolean:Kt,case:We,coalesce:Ze,collator:Qt,format:Zt,image:Gt,in:Xe,\"index-of\":Ye,interpolate:Ne,\"interpolate-hcl\":Ne,\"interpolate-lab\":Ne,length:cr,let:Ge,literal:qt,match:He,number:Kt,\"number-format\":ur,object:Kt,slice:Qe,step:ke,string:Kt,\"to-boolean\":Xt,\"to-color\":Xt,\"to-number\":Xt,\"to-string\":Xt,var:be,within:me};function pr(t,[e,r,n,i]){e=e.evaluate(t),r=r.evaluate(t),n=n.evaluate(t);const s=i?i.evaluate(t):1,a=$t(e,r,n,s);if(a)throw new jt(a);return new Et(e/255*s,r/255*s,n/255*s,s)}function fr(t,e){return t in e}function dr(t,e){const r=e[t];return void 0===r?null:r}function yr(t){return {type:t}}function mr(t){return {result:\"success\",value:t}}function gr(t){return {result:\"error\",value:t}}function xr(t){return \"data-driven\"===t[\"property-type\"]||\"cross-faded-data-driven\"===t[\"property-type\"]}function vr(t){return !!t.expression&&t.expression.parameters.indexOf(\"zoom\")>-1}function br(t){return !!t.expression&&t.expression.interpolated}function wr(t){return t instanceof Number?\"number\":t instanceof String?\"string\":t instanceof Boolean?\"boolean\":Array.isArray(t)?\"array\":null===t?\"null\":typeof t}function _r(t){return \"object\"==typeof t&&null!==t&&!Array.isArray(t)}function Ar(t){return t}function kr(t,e){const r=\"color\"===e.type,n=t.stops&&\"object\"==typeof t.stops[0][0],i=n||!(n||void 0!==t.property),s=t.type||(br(e)?\"exponential\":\"interval\");if(r&&((t=at({},t)).stops&&(t.stops=t.stops.map((t=>[t[0],Et.parse(t[1])]))),t.default=Et.parse(t.default?t.default:e.default)),t.colorSpace&&\"rgb\"!==t.colorSpace&&!je[t.colorSpace])throw new Error(`Unknown color space: ${t.colorSpace}`);let a,o,l;if(\"exponential\"===s)a=Mr;else if(\"interval\"===s)a=Ir;else if(\"categorical\"===s){a=zr,o=Object.create(null);for(const e of t.stops)o[e[0]]=e[1];l=typeof t.stops[0][0];}else {if(\"identity\"!==s)throw new Error(`Unknown function type \"${s}\"`);a=Br;}if(n){const r={},n=[];for(let e=0;et[0])),evaluate:({zoom:r},n)=>Mr({stops:i,base:t.base},e,r).evaluate(r,n)}}if(i){const r=\"exponential\"===s?{name:\"exponential\",base:void 0!==t.base?t.base:1}:null;return {kind:\"camera\",interpolationType:r,interpolationFactor:Ne.interpolationFactor.bind(void 0,r),zoomStops:t.stops.map((t=>t[0])),evaluate:({zoom:r})=>a(t,e,r,o,l)}}return {kind:\"source\",evaluate(r,n){const i=n&&n.properties?n.properties[t.property]:void 0;return void 0===i?Sr(t.default,e.default):a(t,e,i,o,l)}}}function Sr(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function zr(t,e,r,n,i){return Sr(typeof r===i?n[r]:void 0,t.default,e.default)}function Ir(t,e,r){if(\"number\"!==wr(r))return Sr(t.default,e.default);const n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];const i=Ae(t.stops.map((t=>t[0])),r);return t.stops[i][1]}function Mr(t,e,r){const n=void 0!==t.base?t.base:1;if(\"number\"!==wr(r))return Sr(t.default,e.default);const i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];const s=Ae(t.stops.map((t=>t[0])),r),a=function(t,e,r,n){const i=n-r,s=t-r;return 0===i?0:1===e?s/i:(Math.pow(e,s)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[s][0],t.stops[s+1][0]),o=t.stops[s][1],l=t.stops[s+1][1];let u=ze[e.type]||Ar;if(t.colorSpace&&\"rgb\"!==t.colorSpace){const e=je[t.colorSpace];u=(t,r)=>e.reverse(e.interpolate(e.forward(t),e.forward(r),a));}return \"function\"==typeof o.evaluate?{evaluate(...t){const e=o.evaluate.apply(void 0,t),r=l.evaluate.apply(void 0,t);if(void 0!==e&&void 0!==r)return u(e,r,a)}}:u(o,l,a)}function Br(t,e,r){return \"color\"===e.type?r=Et.parse(r):\"formatted\"===e.type?r=Lt.fromString(r.toString()):\"resolvedImage\"===e.type?r=Dt.fromString(r.toString()):wr(r)===e.type||\"enum\"===e.type&&e.values[r]||(r=void 0),Sr(r,t.default,e.default)}Wt.register(hr,{error:[{kind:\"error\"},[ft],(t,[e])=>{throw new jt(e.evaluate(t))}],typeof:[ft,[gt],(t,[e])=>_t(Ut(e.evaluate(t)))],\"to-rgba\":[wt(pt,4),[yt],(t,[e])=>e.evaluate(t).toArray()],rgb:[yt,[pt,pt,pt],pr],rgba:[yt,[pt,pt,pt,pt],pr],has:{type:dt,overloads:[[[ft],(t,[e])=>fr(e.evaluate(t),t.properties())],[[ft,mt],(t,[e,r])=>fr(e.evaluate(t),r.evaluate(t))]]},get:{type:gt,overloads:[[[ft],(t,[e])=>dr(e.evaluate(t),t.properties())],[[ft,mt],(t,[e,r])=>dr(e.evaluate(t),r.evaluate(t))]]},\"feature-state\":[gt,[ft],(t,[e])=>dr(e.evaluate(t),t.featureState||{})],properties:[mt,[],t=>t.properties()],\"geometry-type\":[ft,[],t=>t.geometryType()],id:[gt,[],t=>t.id()],zoom:[pt,[],t=>t.globals.zoom],\"heatmap-density\":[pt,[],t=>t.globals.heatmapDensity||0],\"line-progress\":[pt,[],t=>t.globals.lineProgress||0],accumulated:[gt,[],t=>void 0===t.globals.accumulated?null:t.globals.accumulated],\"+\":[pt,yr(pt),(t,e)=>{let r=0;for(const n of e)r+=n.evaluate(t);return r}],\"*\":[pt,yr(pt),(t,e)=>{let r=1;for(const n of e)r*=n.evaluate(t);return r}],\"-\":{type:pt,overloads:[[[pt,pt],(t,[e,r])=>e.evaluate(t)-r.evaluate(t)],[[pt],(t,[e])=>-e.evaluate(t)]]},\"/\":[pt,[pt,pt],(t,[e,r])=>e.evaluate(t)/r.evaluate(t)],\"%\":[pt,[pt,pt],(t,[e,r])=>e.evaluate(t)%r.evaluate(t)],ln2:[pt,[],()=>Math.LN2],pi:[pt,[],()=>Math.PI],e:[pt,[],()=>Math.E],\"^\":[pt,[pt,pt],(t,[e,r])=>Math.pow(e.evaluate(t),r.evaluate(t))],sqrt:[pt,[pt],(t,[e])=>Math.sqrt(e.evaluate(t))],log10:[pt,[pt],(t,[e])=>Math.log(e.evaluate(t))/Math.LN10],ln:[pt,[pt],(t,[e])=>Math.log(e.evaluate(t))],log2:[pt,[pt],(t,[e])=>Math.log(e.evaluate(t))/Math.LN2],sin:[pt,[pt],(t,[e])=>Math.sin(e.evaluate(t))],cos:[pt,[pt],(t,[e])=>Math.cos(e.evaluate(t))],tan:[pt,[pt],(t,[e])=>Math.tan(e.evaluate(t))],asin:[pt,[pt],(t,[e])=>Math.asin(e.evaluate(t))],acos:[pt,[pt],(t,[e])=>Math.acos(e.evaluate(t))],atan:[pt,[pt],(t,[e])=>Math.atan(e.evaluate(t))],min:[pt,yr(pt),(t,e)=>Math.min(...e.map((e=>e.evaluate(t))))],max:[pt,yr(pt),(t,e)=>Math.max(...e.map((e=>e.evaluate(t))))],abs:[pt,[pt],(t,[e])=>Math.abs(e.evaluate(t))],round:[pt,[pt],(t,[e])=>{const r=e.evaluate(t);return r<0?-Math.round(-r):Math.round(r)}],floor:[pt,[pt],(t,[e])=>Math.floor(e.evaluate(t))],ceil:[pt,[pt],(t,[e])=>Math.ceil(e.evaluate(t))],\"filter-==\":[dt,[ft,gt],(t,[e,r])=>t.properties()[e.value]===r.value],\"filter-id-==\":[dt,[gt],(t,[e])=>t.id()===e.value],\"filter-type-==\":[dt,[ft],(t,[e])=>t.geometryType()===e.value],\"filter-<\":[dt,[ft,gt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n{const r=t.id(),n=e.value;return typeof r==typeof n&&r\":[dt,[ft,gt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>i}],\"filter-id->\":[dt,[gt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>n}],\"filter-<=\":[dt,[ft,gt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n<=i}],\"filter-id-<=\":[dt,[gt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r<=n}],\"filter->=\":[dt,[ft,gt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>=i}],\"filter-id->=\":[dt,[gt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>=n}],\"filter-has\":[dt,[gt],(t,[e])=>e.value in t.properties()],\"filter-has-id\":[dt,[],t=>null!==t.id()&&void 0!==t.id()],\"filter-type-in\":[dt,[wt(ft)],(t,[e])=>e.value.indexOf(t.geometryType())>=0],\"filter-id-in\":[dt,[wt(gt)],(t,[e])=>e.value.indexOf(t.id())>=0],\"filter-in-small\":[dt,[ft,wt(gt)],(t,[e,r])=>r.value.indexOf(t.properties()[e.value])>=0],\"filter-in-large\":[dt,[ft,wt(gt)],(t,[e,r])=>function(t,e,r,n){for(;r<=n;){const i=r+n>>1;if(e[i]===t)return !0;e[i]>t?n=i-1:r=i+1;}return !1}(t.properties()[e.value],r.value,0,r.value.length-1)],all:{type:dt,overloads:[[[dt,dt],(t,[e,r])=>e.evaluate(t)&&r.evaluate(t)],[yr(dt),(t,e)=>{for(const r of e)if(!r.evaluate(t))return !1;return !0}]]},any:{type:dt,overloads:[[[dt,dt],(t,[e,r])=>e.evaluate(t)||r.evaluate(t)],[yr(dt),(t,e)=>{for(const r of e)if(r.evaluate(t))return !0;return !1}]]},\"!\":[dt,[dt],(t,[e])=>!e.evaluate(t)],\"is-supported-script\":[dt,[ft],(t,[e])=>{const r=t.globals&&t.globals.isSupportedScript;return !r||r(e.evaluate(t))}],upcase:[ft,[ft],(t,[e])=>e.evaluate(t).toUpperCase()],downcase:[ft,[ft],(t,[e])=>e.evaluate(t).toLowerCase()],concat:[ft,yr(gt),(t,e)=>e.map((e=>Ot(e.evaluate(t)))).join(\"\")],\"resolved-locale\":[ft,[xt],(t,[e])=>e.evaluate(t).resolvedLocale()]});class Cr{constructor(t,e){this.expression=t,this._warningHistory={},this._evaluator=new Ht,this._defaultValue=e?function(t){return \"color\"===t.type&&_r(t.default)?new Et(0,0,0,0):\"color\"===t.type?Et.parse(t.default)||null:void 0===t.default?null:t.default}(e):null,this._enumValues=e&&\"enum\"===e.type?e.values:null;}evaluateWithoutErrorHandling(t,e,r,n,i,s){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=s,this.expression.evaluate(this._evaluator)}evaluate(t,e,r,n,i,s){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=s||null;try{const t=this.expression.evaluate(this._evaluator);if(null==t||\"number\"==typeof t&&t!=t)return this._defaultValue;if(this._enumValues&&!(t in this._enumValues))throw new jt(`Expected value to be one of ${Object.keys(this._enumValues).map((t=>JSON.stringify(t))).join(\", \")}, but found ${JSON.stringify(t)} instead.`);return t}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,\"undefined\"!=typeof console&&console.warn(t.message)),this._defaultValue}}}function Pr(t){return Array.isArray(t)&&t.length>0&&\"string\"==typeof t[0]&&t[0]in hr}function Vr(t,e){const r=new we(hr,[],e?function(t){const e={color:yt,string:ft,number:pt,enum:ft,boolean:dt,formatted:vt,resolvedImage:bt};return \"array\"===t.type?wt(e[t.value]||gt,t.length):e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&\"string\"===e.type?{typeAnnotation:\"coerce\"}:void 0);return n?mr(new Cr(n,e)):gr(r.errors)}class Er{constructor(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent=\"constant\"!==t&&!xe(e.expression);}evaluateWithoutErrorHandling(t,e,r,n,i,s){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,s)}evaluate(t,e,r,n,i,s){return this._styleExpression.evaluate(t,e,r,n,i,s)}}class Fr{constructor(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent=\"camera\"!==t&&!xe(e.expression),this.interpolationType=n;}evaluateWithoutErrorHandling(t,e,r,n,i,s){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,s)}evaluate(t,e,r,n,i,s){return this._styleExpression.evaluate(t,e,r,n,i,s)}interpolationFactor(t,e,r){return this.interpolationType?Ne.interpolationFactor(this.interpolationType,t,e,r):0}}function Tr(t,e){const r=Vr(t,e);if(\"error\"===r.result)return r;const n=r.value.expression,i=ge(n);if(!i&&!xr(e))return gr([new ut(\"\",\"data expressions not supported\")]);const s=ve(n,[\"zoom\"]);if(!s&&!vr(e))return gr([new ut(\"\",\"zoom expressions not supported\")]);const a=Dr(n);return a||s?a instanceof ut?gr([a]):a instanceof Ne&&!br(e)?gr([new ut(\"\",'\"interpolate\" expressions cannot be used with this property')]):mr(a?new Fr(i?\"camera\":\"composite\",r.value,a.labels,a instanceof Ne?a.interpolation:void 0):new Er(i?\"constant\":\"source\",r.value)):gr([new ut(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')])}class Lr{constructor(t,e){this._parameters=t,this._specification=e,at(this,kr(this._parameters,this._specification));}static deserialize(t){return new Lr(t._parameters,t._specification)}static serialize(t){return {_parameters:t._parameters,_specification:t._specification}}}function Dr(t){let e=null;if(t instanceof Ge)e=Dr(t.result);else if(t instanceof Ze){for(const r of t.args)if(e=Dr(r),e)break}else (t instanceof ke||t instanceof Ne)&&t.input instanceof Wt&&\"zoom\"===t.input.name&&(e=t);return e instanceof ut||t.eachChild((t=>{const r=Dr(t);r instanceof ut?e=r:!e&&r?e=new ut(\"\",'\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.'):e&&r&&e!==r&&(e=new ut(\"\",'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.'));})),e}function $r(t){const e=t.key,r=t.value,n=t.valueSpec||{},i=t.objectElementValidators||{},s=t.style,a=t.styleSpec;let o=[];const l=wr(r);if(\"object\"!==l)return [new it(e,r,`object expected, ${l} found`)];for(const t in r){const l=t.split(\".\")[0],u=n[l]||n[\"*\"];let c;if(i[l])c=i[l];else if(n[l])c=pn;else if(i[\"*\"])c=i[\"*\"];else {if(!n[\"*\"]){o.push(new it(e,r[t],`unknown property \"${t}\"`));continue}c=pn;}o=o.concat(c({key:(e?`${e}.`:e)+t,value:r[t],valueSpec:u,style:s,styleSpec:a,object:r,objectKey:t},r));}for(const t in n)i[t]||n[t].required&&void 0===n[t].default&&void 0===r[t]&&o.push(new it(e,r,`missing required property \"${t}\"`));return o}function Rr(t){const e=t.value,r=t.valueSpec,n=t.style,i=t.styleSpec,s=t.key,a=t.arrayElementValidator||pn;if(\"array\"!==wr(e))return [new it(s,e,`array expected, ${wr(e)} found`)];if(r.length&&e.length!==r.length)return [new it(s,e,`array length ${r.length} expected, length ${e.length} found`)];if(r[\"min-length\"]&&e.lengthn.maximum?[new it(e,r,`${r} is greater than the maximum value ${n.maximum}`)]:[]}function Or(t){const e=t.valueSpec,r=ot(t.value.type);let n,i,s,a={};const o=\"categorical\"!==r&&void 0===t.value.property,l=!o,u=\"array\"===wr(t.value.stops)&&\"array\"===wr(t.value.stops[0])&&\"object\"===wr(t.value.stops[0][0]),c=$r({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if(\"identity\"===r)return [new it(t.key,t.value,'identity function may not have a \"stops\" property')];let e=[];const n=t.value;return e=e.concat(Rr({key:t.key,value:n,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:h})),\"array\"===wr(n)&&0===n.length&&e.push(new it(t.key,n,\"array must have at least one stop\")),e},default:function(t){return pn({key:t.key,value:t.value,valueSpec:e,style:t.style,styleSpec:t.styleSpec})}}});return \"identity\"===r&&o&&c.push(new it(t.key,t.value,'missing required property \"property\"')),\"identity\"===r||t.value.stops||c.push(new it(t.key,t.value,'missing required property \"stops\"')),\"exponential\"===r&&t.valueSpec.expression&&!br(t.valueSpec)&&c.push(new it(t.key,t.value,\"exponential functions not supported\")),t.styleSpec.$version>=8&&(l&&!xr(t.valueSpec)?c.push(new it(t.key,t.value,\"property functions not supported\")):o&&!vr(t.valueSpec)&&c.push(new it(t.key,t.value,\"zoom functions not supported\"))),\"categorical\"!==r&&!u||void 0!==t.value.property||c.push(new it(t.key,t.value,'\"property\" property is required')),c;function h(t){let r=[];const n=t.value,o=t.key;if(\"array\"!==wr(n))return [new it(o,n,`array expected, ${wr(n)} found`)];if(2!==n.length)return [new it(o,n,`array length 2 expected, length ${n.length} found`)];if(u){if(\"object\"!==wr(n[0]))return [new it(o,n,`object expected, ${wr(n[0])} found`)];if(void 0===n[0].zoom)return [new it(o,n,\"object stop key must have zoom\")];if(void 0===n[0].value)return [new it(o,n,\"object stop key must have value\")];if(s&&s>ot(n[0].zoom))return [new it(o,n[0].zoom,\"stop zoom values must appear in ascending order\")];ot(n[0].zoom)!==s&&(s=ot(n[0].zoom),i=void 0,a={}),r=r.concat($r({key:`${o}[0]`,value:n[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:Ur,value:p}}));}else r=r.concat(p({key:`${o}[0]`,value:n[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},n));return Pr(lt(n[1]))?r.concat([new it(`${o}[1]`,n[1],\"expressions are not allowed in function stops.\")]):r.concat(pn({key:`${o}[1]`,value:n[1],valueSpec:e,style:t.style,styleSpec:t.styleSpec}))}function p(t,s){const o=wr(t.value),l=ot(t.value),u=null!==t.value?t.value:s;if(n){if(o!==n)return [new it(t.key,u,`${o} stop domain type must match previous stop domain type ${n}`)]}else n=o;if(\"number\"!==o&&\"string\"!==o&&\"boolean\"!==o)return [new it(t.key,u,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==o&&\"categorical\"!==r){let n=`number expected, ${o} found`;return xr(e)&&void 0===r&&(n+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new it(t.key,u,n)]}return \"categorical\"!==r||\"number\"!==o||isFinite(l)&&Math.floor(l)===l?\"categorical\"!==r&&\"number\"===o&&void 0!==i&&lnew it(`${t.key}${e.key}`,t.value,e.message)));const r=e.value.expression||e.value._styleExpression.expression;if(\"property\"===t.expressionContext&&\"text-font\"===t.propertyKey&&!r.outputDefined())return [new it(t.key,t.value,`Invalid data expression for \"${t.propertyKey}\". Output values must be contained as literals within the expression.`)];if(\"property\"===t.expressionContext&&\"layout\"===t.propertyType&&!xe(r))return [new it(t.key,t.value,'\"feature-state\" data expressions are not supported with layout properties.')];if(\"filter\"===t.expressionContext&&!xe(r))return [new it(t.key,t.value,'\"feature-state\" data expressions are not supported with filters.')];if(t.expressionContext&&0===t.expressionContext.indexOf(\"cluster\")){if(!ve(r,[\"zoom\",\"feature-state\"]))return [new it(t.key,t.value,'\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];if(\"cluster-initial\"===t.expressionContext&&!ge(r))return [new it(t.key,t.value,\"Feature data expressions are not supported with initial expression part of cluster properties.\")]}return []}function jr(t){const e=t.key,r=t.value,n=t.valueSpec,i=[];return Array.isArray(n.values)?-1===n.values.indexOf(ot(r))&&i.push(new it(e,r,`expected one of [${n.values.join(\", \")}], ${JSON.stringify(r)} found`)):-1===Object.keys(n.values).indexOf(ot(r))&&i.push(new it(e,r,`expected one of [${Object.keys(n.values).join(\", \")}], ${JSON.stringify(r)} found`)),i}function Nr(t){if(!0===t||!1===t)return !0;if(!Array.isArray(t)||0===t.length)return !1;switch(t[0]){case\"has\":return t.length>=2&&\"$id\"!==t[1]&&\"$type\"!==t[1];case\"in\":return t.length>=3&&(\"string\"!=typeof t[1]||Array.isArray(t[2]));case\"!in\":case\"!has\":case\"none\":return !1;case\"==\":case\"!=\":case\">\":case\">=\":case\"<\":case\"<=\":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case\"any\":case\"all\":for(const e of t.slice(1))if(!Nr(e)&&\"boolean\"!=typeof e)return !1;return !0;default:return !0}}const Kr={type:\"boolean\",default:!1,transition:!1,\"property-type\":\"data-driven\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]}};function Zr(t){if(null==t)return {filter:()=>!0,needGeometry:!1};Nr(t)||(t=Xr(t));const e=Vr(t,Kr);if(\"error\"===e.result)throw new Error(e.value.map((t=>`${t.key}: ${t.message}`)).join(\", \"));return {filter:(t,r,n)=>e.value.evaluate(t,r,{},n),needGeometry:Jr(t)}}function Gr(t,e){return te?1:0}function Jr(t){if(!Array.isArray(t))return !1;if(\"within\"===t[0])return !0;for(let e=1;e\"===e||\"<=\"===e||\">=\"===e?Yr(t[1],t[2],e):\"any\"===e?(r=t.slice(1),[\"any\"].concat(r.map(Xr))):\"all\"===e?[\"all\"].concat(t.slice(1).map(Xr)):\"none\"===e?[\"all\"].concat(t.slice(1).map(Xr).map(Qr)):\"in\"===e?Hr(t[1],t.slice(2)):\"!in\"===e?Qr(Hr(t[1],t.slice(2))):\"has\"===e?Wr(t[1]):\"!has\"===e?Qr(Wr(t[1])):\"within\"!==e||t;var r;}function Yr(t,e,r){switch(t){case\"$type\":return [`filter-type-${r}`,e];case\"$id\":return [`filter-id-${r}`,e];default:return [`filter-${r}`,t,e]}}function Hr(t,e){if(0===e.length)return !1;switch(t){case\"$type\":return [\"filter-type-in\",[\"literal\",e]];case\"$id\":return [\"filter-id-in\",[\"literal\",e]];default:return e.length>200&&!e.some((t=>typeof t!=typeof e[0]))?[\"filter-in-large\",t,[\"literal\",e.sort(Gr)]]:[\"filter-in-small\",t,[\"literal\",e]]}}function Wr(t){switch(t){case\"$type\":return !0;case\"$id\":return [\"filter-has-id\"];default:return [\"filter-has\",t]}}function Qr(t){return [\"!\",t]}function tn(t){return Nr(lt(t.value))?qr(at({},t,{expressionContext:\"filter\",valueSpec:{value:\"boolean\"}})):en(t)}function en(t){const e=t.value,r=t.key;if(\"array\"!==wr(e))return [new it(r,e,`array expected, ${wr(e)} found`)];const n=t.styleSpec;let i,s=[];if(e.length<1)return [new it(r,e,\"filter array must have at least 1 element\")];switch(s=s.concat(jr({key:`${r}[0]`,value:e[0],valueSpec:n.filter_operator,style:t.style,styleSpec:t.styleSpec})),ot(e[0])){case\"<\":case\"<=\":case\">\":case\">=\":e.length>=2&&\"$type\"===ot(e[1])&&s.push(new it(r,e,`\"$type\" cannot be use with operator \"${e[0]}\"`));case\"==\":case\"!=\":3!==e.length&&s.push(new it(r,e,`filter array for operator \"${e[0]}\" must have 3 elements`));case\"in\":case\"!in\":e.length>=2&&(i=wr(e[1]),\"string\"!==i&&s.push(new it(`${r}[1]`,e[1],`string expected, ${i} found`)));for(let a=2;a{t in r&&e.push(new it(n,r[t],`\"${t}\" is prohibited for ref layers`));})),i.layers.forEach((e=>{ot(e.id)===o&&(t=e);})),t?t.ref?e.push(new it(n,r.ref,\"ref cannot reference another ref layer\")):a=ot(t.type):e.push(new it(n,r.ref,`ref layer \"${o}\" not found`));}else if(\"background\"!==a)if(r.source){const t=i.sources&&i.sources[r.source],s=t&&ot(t.type);t?\"vector\"===s&&\"raster\"===a?e.push(new it(n,r.source,`layer \"${r.id}\" requires a raster source`)):\"raster\"===s&&\"raster\"!==a?e.push(new it(n,r.source,`layer \"${r.id}\" requires a vector source`)):\"vector\"!==s||r[\"source-layer\"]?\"raster-dem\"===s&&\"hillshade\"!==a?e.push(new it(n,r.source,\"raster-dem source can only be used with layer type 'hillshade'.\")):\"line\"!==a||!r.paint||!r.paint[\"line-gradient\"]||\"geojson\"===s&&t.lineMetrics||e.push(new it(n,r,`layer \"${r.id}\" specifies a line-gradient, which requires a GeoJSON source with \\`lineMetrics\\` enabled.`)):e.push(new it(n,r,`layer \"${r.id}\" must specify a \"source-layer\"`)):e.push(new it(n,r.source,`source \"${r.source}\" not found`));}else e.push(new it(n,r,'missing required property \"source\"'));return e=e.concat($r({key:n,value:r,valueSpec:s.layer,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":()=>[],type:()=>pn({key:`${n}.type`,value:r.type,valueSpec:s.layer.type,style:t.style,styleSpec:t.styleSpec,object:r,objectKey:\"type\"}),filter:tn,layout:t=>$r({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":t=>sn(at({layerType:a},t))}}),paint:t=>$r({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{\"*\":t=>nn(at({layerType:a},t))}})}})),e}function on(t){const e=t.value,r=t.key,n=wr(e);return \"string\"!==n?[new it(r,e,`string expected, ${n} found`)]:[]}const ln={promoteId:function({key:t,value:e}){if(\"string\"===wr(e))return on({key:t,value:e});{const r=[];for(const n in e)r.push(...on({key:`${t}.${n}`,value:e[n]}));return r}}};function un(t){const e=t.value,r=t.key,n=t.styleSpec,i=t.style;if(!e.type)return [new it(r,e,'\"type\" is required')];const s=ot(e.type);let a;switch(s){case\"vector\":case\"raster\":case\"raster-dem\":return a=$r({key:r,value:e,valueSpec:n[`source_${s.replace(\"-\",\"_\")}`],style:t.style,styleSpec:n,objectElementValidators:ln}),a;case\"geojson\":if(a=$r({key:r,value:e,valueSpec:n.source_geojson,style:i,styleSpec:n,objectElementValidators:ln}),e.cluster)for(const t in e.clusterProperties){const[n,i]=e.clusterProperties[t],s=\"string\"==typeof n?[n,[\"accumulated\"],[\"get\",t]]:n;a.push(...qr({key:`${r}.${t}.map`,value:i,expressionContext:\"cluster-map\"})),a.push(...qr({key:`${r}.${t}.reduce`,value:s,expressionContext:\"cluster-reduce\"}));}return a;case\"video\":return $r({key:r,value:e,valueSpec:n.source_video,style:i,styleSpec:n});case\"image\":return $r({key:r,value:e,valueSpec:n.source_image,style:i,styleSpec:n});case\"canvas\":return [new it(r,null,\"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.\",\"source.canvas\")];default:return jr({key:`${r}.type`,value:e.type,valueSpec:{values:[\"vector\",\"raster\",\"raster-dem\",\"geojson\",\"video\",\"image\"]},style:i,styleSpec:n})}}function cn(t){const e=t.value,r=t.styleSpec,n=r.light,i=t.style;let s=[];const a=wr(e);if(void 0===e)return s;if(\"object\"!==a)return s=s.concat([new it(\"light\",e,`object expected, ${a} found`)]),s;for(const t in e){const a=t.match(/^(.*)-transition$/);s=s.concat(a&&n[a[1]]&&n[a[1]].transition?pn({key:t,value:e[t],valueSpec:r.transition,style:i,styleSpec:r}):n[t]?pn({key:t,value:e[t],valueSpec:n[t],style:i,styleSpec:r}):[new it(t,e[t],`unknown property \"${t}\"`)]);}return s}const hn={\"*\":()=>[],array:Rr,boolean:function(t){const e=t.value,r=t.key,n=wr(e);return \"boolean\"!==n?[new it(r,e,`boolean expected, ${n} found`)]:[]},number:Ur,color:function(t){const e=t.key,r=t.value,n=wr(r);return \"string\"!==n?[new it(e,r,`color expected, ${n} found`)]:null===It(r)?[new it(e,r,`color expected, \"${r}\" found`)]:[]},constants:st,enum:jr,filter:tn,function:Or,layer:an,object:$r,source:un,light:cn,string:on,formatted:function(t){return 0===on(t).length?[]:qr(t)},resolvedImage:function(t){return 0===on(t).length?[]:qr(t)}};function pn(t){const e=t.value,r=t.valueSpec,n=t.styleSpec;return r.expression&&_r(ot(e))?Or(t):r.expression&&Pr(lt(e))?qr(t):r.type&&hn[r.type]?hn[r.type](t):$r(at({},t,{valueSpec:r.type?n[r.type]:r}))}function fn(t){const e=t.value,r=t.key,n=on(t);return n.length||(-1===e.indexOf(\"{fontstack}\")&&n.push(new it(r,e,'\"glyphs\" url must include a \"{fontstack}\" token')),-1===e.indexOf(\"{range}\")&&n.push(new it(r,e,'\"glyphs\" url must include a \"{range}\" token'))),n}function dn(t,e=nt){let r=[];return r=r.concat(pn({key:\"\",value:t,valueSpec:e.$root,styleSpec:e,style:t,objectElementValidators:{glyphs:fn,\"*\":()=>[]}})),t.constants&&(r=r.concat(st({key:\"constants\",value:t.constants,style:t,styleSpec:e}))),yn(r)}function yn(t){return [].concat(t).sort(((t,e)=>t.line-e.line))}function mn(t){return function(...e){return yn(t.apply(this,e))}}dn.source=mn(un),dn.light=mn(cn),dn.layer=mn(an),dn.filter=mn(tn),dn.paintProperty=mn(nn),dn.layoutProperty=mn(sn);const gn=dn,xn=gn.light,vn=gn.paintProperty,bn=gn.layoutProperty;function wn(t,e){let r=!1;if(e&&e.length)for(const n of e)t.fire(new et(new Error(n.message))),r=!0;return r}class _n{constructor(t,e,r){const n=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;const i=new Int32Array(this.arrayBuffer);t=i[0],this.d=(e=i[1])+2*(r=i[2]);for(let t=0;t=u[l+0]&&n>=u[l+1])?(a[h]=!0,s.push(i[h])):a[h]=!1;}}}}_forEachCell(t,e,r,n,i,s,a,o){const l=this._convertToCellCoord(t),u=this._convertToCellCoord(e),c=this._convertToCellCoord(r),h=this._convertToCellCoord(n);for(let p=l;p<=c;p++)for(let l=u;l<=h;l++){const u=this.d*l+p;if((!o||o(this._convertFromCellCoord(p),this._convertFromCellCoord(l),this._convertFromCellCoord(p+1),this._convertFromCellCoord(l+1)))&&i.call(this,t,e,r,n,u,s,a,o))return}}_convertFromCellCoord(t){return (t-this.padding)/this.scale}_convertToCellCoord(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;const t=this.cells,e=3+this.cells.length+1+1;let r=0;for(let t=0;t=0)continue;const s=t[r];i[r]=An[n].shallow.indexOf(r)>=0?s:zn(s,e);}t instanceof Error&&(i.message=t.message);}if(i.$name)throw new Error(\"$name property is reserved for worker serialization logic.\");return \"Object\"!==n&&(i.$name=n),i}throw new Error(\"can't serialize object of type \"+typeof t)}function In(t){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||t instanceof Blob||Sn(t)||A(t)||ArrayBuffer.isView(t)||t instanceof ImageData)return t;if(Array.isArray(t))return t.map(In);if(\"object\"==typeof t){const e=t.$name||\"Object\";if(!An[e])throw new Error(`can't deserialize unregistered class ${e}`);const{klass:r}=An[e];if(!r)throw new Error(`can't deserialize unregistered class ${e}`);if(r.deserialize)return r.deserialize(t);const n=Object.create(r.prototype);for(const r of Object.keys(t)){if(\"$name\"===r)continue;const i=t[r];n[r]=An[e].shallow.indexOf(r)>=0?i:In(i);}return n}throw new Error(\"can't deserialize object of type \"+typeof t)}class Mn{constructor(){this.first=!0;}update(t,e){const r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoomt>=128&&t<=255,Arabic:t=>t>=1536&&t<=1791,\"Arabic Supplement\":t=>t>=1872&&t<=1919,\"Arabic Extended-A\":t=>t>=2208&&t<=2303,\"Hangul Jamo\":t=>t>=4352&&t<=4607,\"Unified Canadian Aboriginal Syllabics\":t=>t>=5120&&t<=5759,Khmer:t=>t>=6016&&t<=6143,\"Unified Canadian Aboriginal Syllabics Extended\":t=>t>=6320&&t<=6399,\"General Punctuation\":t=>t>=8192&&t<=8303,\"Letterlike Symbols\":t=>t>=8448&&t<=8527,\"Number Forms\":t=>t>=8528&&t<=8591,\"Miscellaneous Technical\":t=>t>=8960&&t<=9215,\"Control Pictures\":t=>t>=9216&&t<=9279,\"Optical Character Recognition\":t=>t>=9280&&t<=9311,\"Enclosed Alphanumerics\":t=>t>=9312&&t<=9471,\"Geometric Shapes\":t=>t>=9632&&t<=9727,\"Miscellaneous Symbols\":t=>t>=9728&&t<=9983,\"Miscellaneous Symbols and Arrows\":t=>t>=11008&&t<=11263,\"CJK Radicals Supplement\":t=>t>=11904&&t<=12031,\"Kangxi Radicals\":t=>t>=12032&&t<=12255,\"Ideographic Description Characters\":t=>t>=12272&&t<=12287,\"CJK Symbols and Punctuation\":t=>t>=12288&&t<=12351,Hiragana:t=>t>=12352&&t<=12447,Katakana:t=>t>=12448&&t<=12543,Bopomofo:t=>t>=12544&&t<=12591,\"Hangul Compatibility Jamo\":t=>t>=12592&&t<=12687,Kanbun:t=>t>=12688&&t<=12703,\"Bopomofo Extended\":t=>t>=12704&&t<=12735,\"CJK Strokes\":t=>t>=12736&&t<=12783,\"Katakana Phonetic Extensions\":t=>t>=12784&&t<=12799,\"Enclosed CJK Letters and Months\":t=>t>=12800&&t<=13055,\"CJK Compatibility\":t=>t>=13056&&t<=13311,\"CJK Unified Ideographs Extension A\":t=>t>=13312&&t<=19903,\"Yijing Hexagram Symbols\":t=>t>=19904&&t<=19967,\"CJK Unified Ideographs\":t=>t>=19968&&t<=40959,\"Yi Syllables\":t=>t>=40960&&t<=42127,\"Yi Radicals\":t=>t>=42128&&t<=42191,\"Hangul Jamo Extended-A\":t=>t>=43360&&t<=43391,\"Hangul Syllables\":t=>t>=44032&&t<=55215,\"Hangul Jamo Extended-B\":t=>t>=55216&&t<=55295,\"Private Use Area\":t=>t>=57344&&t<=63743,\"CJK Compatibility Ideographs\":t=>t>=63744&&t<=64255,\"Arabic Presentation Forms-A\":t=>t>=64336&&t<=65023,\"Vertical Forms\":t=>t>=65040&&t<=65055,\"CJK Compatibility Forms\":t=>t>=65072&&t<=65103,\"Small Form Variants\":t=>t>=65104&&t<=65135,\"Arabic Presentation Forms-B\":t=>t>=65136&&t<=65279,\"Halfwidth and Fullwidth Forms\":t=>t>=65280&&t<=65519};function Cn(t){for(const e of t)if(En(e.charCodeAt(0)))return !0;return !1}function Pn(t){for(const e of t)if(!Vn(e.charCodeAt(0)))return !1;return !0}function Vn(t){return !(Bn.Arabic(t)||Bn[\"Arabic Supplement\"](t)||Bn[\"Arabic Extended-A\"](t)||Bn[\"Arabic Presentation Forms-A\"](t)||Bn[\"Arabic Presentation Forms-B\"](t))}function En(t){return !(746!==t&&747!==t&&(t<4352||!(Bn[\"Bopomofo Extended\"](t)||Bn.Bopomofo(t)||Bn[\"CJK Compatibility Forms\"](t)&&!(t>=65097&&t<=65103)||Bn[\"CJK Compatibility Ideographs\"](t)||Bn[\"CJK Compatibility\"](t)||Bn[\"CJK Radicals Supplement\"](t)||Bn[\"CJK Strokes\"](t)||!(!Bn[\"CJK Symbols and Punctuation\"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||Bn[\"CJK Unified Ideographs Extension A\"](t)||Bn[\"CJK Unified Ideographs\"](t)||Bn[\"Enclosed CJK Letters and Months\"](t)||Bn[\"Hangul Compatibility Jamo\"](t)||Bn[\"Hangul Jamo Extended-A\"](t)||Bn[\"Hangul Jamo Extended-B\"](t)||Bn[\"Hangul Jamo\"](t)||Bn[\"Hangul Syllables\"](t)||Bn.Hiragana(t)||Bn[\"Ideographic Description Characters\"](t)||Bn.Kanbun(t)||Bn[\"Kangxi Radicals\"](t)||Bn[\"Katakana Phonetic Extensions\"](t)||Bn.Katakana(t)&&12540!==t||!(!Bn[\"Halfwidth and Fullwidth Forms\"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||!(!Bn[\"Small Form Variants\"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||Bn[\"Unified Canadian Aboriginal Syllabics\"](t)||Bn[\"Unified Canadian Aboriginal Syllabics Extended\"](t)||Bn[\"Vertical Forms\"](t)||Bn[\"Yijing Hexagram Symbols\"](t)||Bn[\"Yi Syllables\"](t)||Bn[\"Yi Radicals\"](t))))}function Fn(t){return !(En(t)||function(t){return !!(Bn[\"Latin-1 Supplement\"](t)&&(167===t||169===t||174===t||177===t||188===t||189===t||190===t||215===t||247===t)||Bn[\"General Punctuation\"](t)&&(8214===t||8224===t||8225===t||8240===t||8241===t||8251===t||8252===t||8258===t||8263===t||8264===t||8265===t||8273===t)||Bn[\"Letterlike Symbols\"](t)||Bn[\"Number Forms\"](t)||Bn[\"Miscellaneous Technical\"](t)&&(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215)||Bn[\"Control Pictures\"](t)&&9251!==t||Bn[\"Optical Character Recognition\"](t)||Bn[\"Enclosed Alphanumerics\"](t)||Bn[\"Geometric Shapes\"](t)||Bn[\"Miscellaneous Symbols\"](t)&&!(t>=9754&&t<=9759)||Bn[\"Miscellaneous Symbols and Arrows\"](t)&&(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243)||Bn[\"CJK Symbols and Punctuation\"](t)||Bn.Katakana(t)||Bn[\"Private Use Area\"](t)||Bn[\"CJK Compatibility Forms\"](t)||Bn[\"Small Form Variants\"](t)||Bn[\"Halfwidth and Fullwidth Forms\"](t)||8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)}(t))}function Tn(t){return t>=1424&&t<=2303||Bn[\"Arabic Presentation Forms-A\"](t)||Bn[\"Arabic Presentation Forms-B\"](t)}function Ln(t,e){return !(!e&&Tn(t)||t>=2304&&t<=3583||t>=3840&&t<=4255||Bn.Khmer(t))}function Dn(t){for(const e of t)if(Tn(e.charCodeAt(0)))return !0;return !1}const $n=\"deferred\",Rn=\"loading\",Un=\"loaded\";let On=null,qn=\"unavailable\",jn=null;const Nn=function(t){t&&\"string\"==typeof t&&t.indexOf(\"NetworkError\")>-1&&(qn=\"error\"),On&&On(t);};function Kn(){Zn.fire(new tt(\"pluginStateChange\",{pluginStatus:qn,pluginURL:jn}));}const Zn=new rt,Gn=function(){return qn},Jn=function(){if(qn!==$n||!jn)throw new Error(\"rtl-text-plugin cannot be downloaded unless a pluginURL is specified\");qn=Rn,Kn(),jn&&Z({url:jn},(t=>{t?Nn(t):(qn=Un,Kn());}));},Xn={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:()=>qn===Un||null!=Xn.applyArabicShaping,isLoading:()=>qn===Rn,setState(t){qn=t.pluginStatus,jn=t.pluginURL;},isParsed:()=>null!=Xn.applyArabicShaping&&null!=Xn.processBidirectionalText&&null!=Xn.processStyledBidirectionalText,getPluginURL:()=>jn};class Yn{constructor(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Mn,this.transition={});}isSupportedScript(t){return function(t,e){for(const r of t)if(!Ln(r.charCodeAt(0),e))return !1;return !0}(t,Xn.isLoaded())}crossFadingFactor(){return 0===this.fadeDuration?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){const t=this.zoom,e=t-Math.floor(t),r=this.crossFadingFactor();return t>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}}}class Hn{constructor(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(_r(t))return new Lr(t,e);if(Pr(t)){const r=Tr(t,e);if(\"error\"===r.result)throw new Error(r.value.map((t=>`${t.key}: ${t.message}`)).join(\", \"));return r.value}{let r=t;return \"string\"==typeof t&&\"color\"===e.type&&(r=Et.parse(t)),{kind:\"constant\",evaluate:()=>r}}}(void 0===e?t.specification.default:e,t.specification);}isDataDriven(){return \"source\"===this.expression.kind||\"composite\"===this.expression.kind}possiblyEvaluate(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)}}class Wn{constructor(t){this.property=t,this.value=new Hn(t,void 0);}transitioned(t,e){return new ti(this.property,this.value,e,o({},t.transition,this.transition),t.now)}untransitioned(){return new ti(this.property,this.value,null,{},0)}}class Qn{constructor(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues);}getValue(t){return p(this._values[t].value.value)}setValue(t,e){Object.prototype.hasOwnProperty.call(this._values,t)||(this._values[t]=new Wn(this._values[t].property)),this._values[t].value=new Hn(this._values[t].property,null===e?void 0:p(e));}getTransition(t){return p(this._values[t].transition)}setTransition(t,e){Object.prototype.hasOwnProperty.call(this._values,t)||(this._values[t]=new Wn(this._values[t].property)),this._values[t].transition=p(e)||void 0;}serialize(){const t={};for(const e of Object.keys(this._values)){const r=this.getValue(e);void 0!==r&&(t[e]=r);const n=this.getTransition(e);void 0!==n&&(t[`${e}-transition`]=n);}return t}transitioned(t,e){const r=new ei(this._properties);for(const n of Object.keys(this._values))r._values[n]=this._values[n].transitioned(t,e._values[n]);return r}untransitioned(){const t=new ei(this._properties);for(const e of Object.keys(this._values))t._values[e]=this._values[e].untransitioned();return t}}class ti{constructor(t,e,r,n,i){this.property=t,this.value=e,this.begin=i+n.delay||0,this.end=this.begin+n.duration||0,t.specification.transition&&(n.delay||n.duration)&&(this.prior=r);}possiblyEvaluate(t,e,r){const n=t.now||0,i=this.value.possiblyEvaluate(t,e,r),s=this.prior;if(s){if(n>this.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(n=1)return 1;const e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}(a))}}return i}}class ei{constructor(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues);}possiblyEvaluate(t,e,r){const n=new ii(this._properties);for(const i of Object.keys(this._values))n._values[i]=this._values[i].possiblyEvaluate(t,e,r);return n}hasTransition(){for(const t of Object.keys(this._values))if(this._values[t].prior)return !0;return !1}}class ri{constructor(t){this._properties=t,this._values=Object.create(t.defaultPropertyValues);}getValue(t){return p(this._values[t].value)}setValue(t,e){this._values[t]=new Hn(this._values[t].property,null===e?void 0:p(e));}serialize(){const t={};for(const e of Object.keys(this._values)){const r=this.getValue(e);void 0!==r&&(t[e]=r);}return t}possiblyEvaluate(t,e,r){const n=new ii(this._properties);for(const i of Object.keys(this._values))n._values[i]=this._values[i].possiblyEvaluate(t,e,r);return n}}class ni{constructor(t,e,r){this.property=t,this.value=e,this.parameters=r;}isConstant(){return \"constant\"===this.value.kind}constantOr(t){return \"constant\"===this.value.kind?this.value.value:t}evaluate(t,e,r,n){return this.property.evaluate(this.value,this.parameters,t,e,r,n)}}class ii{constructor(t){this._properties=t,this._values=Object.create(t.defaultPossiblyEvaluatedValues);}get(t){return this._values[t]}}class si{constructor(t){this.specification=t;}possiblyEvaluate(t,e){return t.expression.evaluate(e)}interpolate(t,e,r){const n=ze[this.specification.type];return n?n(t,e,r):t}}class ai{constructor(t,e){this.specification=t,this.overrides=e;}possiblyEvaluate(t,e,r,n){return new ni(this,\"constant\"===t.expression.kind||\"camera\"===t.expression.kind?{kind:\"constant\",value:t.expression.evaluate(e,null,{},r,n)}:t.expression,e)}interpolate(t,e,r){if(\"constant\"!==t.value.kind||\"constant\"!==e.value.kind)return t;if(void 0===t.value.value||void 0===e.value.value)return new ni(this,{kind:\"constant\",value:void 0},t.parameters);const n=ze[this.specification.type];return n?new ni(this,{kind:\"constant\",value:n(t.value.value,e.value.value,r)},t.parameters):t}evaluate(t,e,r,n,i,s){return \"constant\"===t.kind?t.value:t.evaluate(e,r,n,i,s)}}class oi extends ai{possiblyEvaluate(t,e,r,n){if(void 0===t.value)return new ni(this,{kind:\"constant\",value:void 0},e);if(\"constant\"===t.expression.kind){const i=t.expression.evaluate(e,null,{},r,n),s=\"resolvedImage\"===t.property.specification.type&&\"string\"!=typeof i?i.name:i,a=this._calculate(s,s,s,e);return new ni(this,{kind:\"constant\",value:a},e)}if(\"camera\"===t.expression.kind){const r=this._calculate(t.expression.evaluate({zoom:e.zoom-1}),t.expression.evaluate({zoom:e.zoom}),t.expression.evaluate({zoom:e.zoom+1}),e);return new ni(this,{kind:\"constant\",value:r},e)}return new ni(this,t.expression,e)}evaluate(t,e,r,n,i,s){if(\"source\"===t.kind){const a=t.evaluate(e,r,n,i,s);return this._calculate(a,a,a,e)}return \"composite\"===t.kind?this._calculate(t.evaluate({zoom:Math.floor(e.zoom)-1},r,n),t.evaluate({zoom:Math.floor(e.zoom)},r,n),t.evaluate({zoom:Math.floor(e.zoom)+1},r,n),e):t.value}_calculate(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}}interpolate(t){return t}}class li{constructor(t){this.specification=t;}possiblyEvaluate(t,e,r,n){if(void 0!==t.value){if(\"constant\"===t.expression.kind){const i=t.expression.evaluate(e,null,{},r,n);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new Yn(Math.floor(e.zoom-1),e)),t.expression.evaluate(new Yn(Math.floor(e.zoom),e)),t.expression.evaluate(new Yn(Math.floor(e.zoom+1),e)),e)}}_calculate(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}}interpolate(t){return t}}class ui{constructor(t){this.specification=t;}possiblyEvaluate(t,e,r,n){return !!t.expression.evaluate(e,null,{},r,n)}interpolate(){return !1}}class ci{constructor(t){this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(const e in t){const r=t[e];r.specification.overridable&&this.overridableProperties.push(e);const n=this.defaultPropertyValues[e]=new Hn(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new Wn(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({});}}}kn(\"DataDrivenProperty\",ai),kn(\"DataConstantProperty\",si),kn(\"CrossFadedDataDrivenProperty\",oi),kn(\"CrossFadedProperty\",li),kn(\"ColorRampProperty\",ui);const hi=\"-transition\";class pi extends rt{constructor(t,e){if(super(),this.id=t.id,this.type=t.type,this._featureFilter={filter:()=>!0,needGeometry:!1},\"custom\"!==t.type&&(this.metadata=(t=t).metadata,this.minzoom=t.minzoom,this.maxzoom=t.maxzoom,\"background\"!==t.type&&(this.source=t.source,this.sourceLayer=t[\"source-layer\"],this.filter=t.filter),e.layout&&(this._unevaluatedLayout=new ri(e.layout)),e.paint)){this._transitionablePaint=new Qn(e.paint);for(const e in t.paint)this.setPaintProperty(e,t.paint[e],{validate:!1});for(const e in t.layout)this.setLayoutProperty(e,t.layout[e],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new ii(e.paint);}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(t){return \"visibility\"===t?this.visibility:this._unevaluatedLayout.getValue(t)}setLayoutProperty(t,e,r={}){null!=e&&this._validate(bn,`layers.${this.id}.layout.${t}`,t,e,r)||(\"visibility\"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e);}getPaintProperty(t){return t.endsWith(hi)?this._transitionablePaint.getTransition(t.slice(0,-hi.length)):this._transitionablePaint.getValue(t)}setPaintProperty(t,e,r={}){if(null!=e&&this._validate(vn,`layers.${this.id}.paint.${t}`,t,e,r))return !1;if(t.endsWith(hi))return this._transitionablePaint.setTransition(t.slice(0,-hi.length),e||void 0),!1;{const r=this._transitionablePaint._values[t],n=\"cross-faded-data-driven\"===r.property.specification[\"property-type\"],i=r.value.isDataDriven(),s=r.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);const a=this._transitionablePaint._values[t].value;return a.isDataDriven()||i||n||this._handleOverridablePaintPropertyUpdate(t,s,a)}}_handleSpecialPaintPropertyUpdate(t){}_handleOverridablePaintPropertyUpdate(t,e,r){return !1}isHidden(t){return !!(this.minzoom&&t=this.maxzoom)||\"none\"===this.visibility}updateTransitions(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint);}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e);}serialize(){const t={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),h(t,((t,e)=>!(void 0===t||\"layout\"===e&&!Object.keys(t).length||\"paint\"===e&&!Object.keys(t).length)))}_validate(t,e,r,n,i={}){return (!i||!1!==i.validate)&&wn(this,t.call(gn,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:nt,style:{glyphs:!0,sprite:!0}}))}is3D(){return !1}isTileClipped(){return !1}hasOffscreenPass(){return !1}resize(){}isStateDependent(){for(const t in this.paint._values){const e=this.paint.get(t);if(e instanceof ni&&xr(e.property.specification)&&(\"source\"===e.value.kind||\"composite\"===e.value.kind)&&e.value.isStateDependent)return !0}return !1}}const fi={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class di{constructor(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8;}}class yi{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0);}static serialize(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}}static deserialize(t){const e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews());}clear(){this.length=0;}resize(t){this.reserve(t),this.length=t;}reserve(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const e=this.uint8;this._refreshViews(),e&&this.uint8.set(e);}}_refreshViews(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")}}function mi(t,e=1){let r=0,n=0;return {members:t.map((t=>{const i=fi[t.type].BYTES_PER_ELEMENT,s=r=gi(r,Math.max(e,i)),a=t.components||1;return n=Math.max(n,i),r+=i*a,{name:t.name,type:t.type,components:a,offset:s}})),size:gi(r,Math.max(n,e)),alignment:e}}function gi(t,e){return Math.ceil(t/e)*e}class xi extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t}}xi.prototype.bytesPerElement=4,kn(\"StructArrayLayout2i4\",xi);class vi extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const s=4*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,t}}vi.prototype.bytesPerElement=8,kn(\"StructArrayLayout4i8\",vi);class bi extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s){const a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i,s)}emplace(t,e,r,n,i,s,a){const o=6*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.int16[o+2]=n,this.int16[o+3]=i,this.int16[o+4]=s,this.int16[o+5]=a,t}}bi.prototype.bytesPerElement=12,kn(\"StructArrayLayout2i4i12\",bi);class wi extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s){const a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i,s)}emplace(t,e,r,n,i,s,a){const o=4*t,l=8*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.uint8[l+4]=n,this.uint8[l+5]=i,this.uint8[l+6]=s,this.uint8[l+7]=a,t}}wi.prototype.bytesPerElement=8,kn(\"StructArrayLayout2i4ub8\",wi);class _i extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t}}_i.prototype.bytesPerElement=8,kn(\"StructArrayLayout2f8\",_i);class Ai extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u){const c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,s,a,o,l,u)}emplace(t,e,r,n,i,s,a,o,l,u,c){const h=10*t;return this.uint16[h+0]=e,this.uint16[h+1]=r,this.uint16[h+2]=n,this.uint16[h+3]=i,this.uint16[h+4]=s,this.uint16[h+5]=a,this.uint16[h+6]=o,this.uint16[h+7]=l,this.uint16[h+8]=u,this.uint16[h+9]=c,t}}Ai.prototype.bytesPerElement=20,kn(\"StructArrayLayout10ui20\",Ai);class ki extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h){const p=this.length;return this.resize(p+1),this.emplace(p,t,e,r,n,i,s,a,o,l,u,c,h)}emplace(t,e,r,n,i,s,a,o,l,u,c,h,p){const f=12*t;return this.int16[f+0]=e,this.int16[f+1]=r,this.int16[f+2]=n,this.int16[f+3]=i,this.uint16[f+4]=s,this.uint16[f+5]=a,this.uint16[f+6]=o,this.uint16[f+7]=l,this.int16[f+8]=u,this.int16[f+9]=c,this.int16[f+10]=h,this.int16[f+11]=p,t}}ki.prototype.bytesPerElement=24,kn(\"StructArrayLayout4i4ui4i24\",ki);class Si extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t}}Si.prototype.bytesPerElement=12,kn(\"StructArrayLayout3f12\",Si);class zi extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint32[1*t+0]=e,t}}zi.prototype.bytesPerElement=4,kn(\"StructArrayLayout1ul4\",zi);class Ii extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l){const u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,s,a,o,l)}emplace(t,e,r,n,i,s,a,o,l,u){const c=10*t,h=5*t;return this.int16[c+0]=e,this.int16[c+1]=r,this.int16[c+2]=n,this.int16[c+3]=i,this.int16[c+4]=s,this.int16[c+5]=a,this.uint32[h+3]=o,this.uint16[c+8]=l,this.uint16[c+9]=u,t}}Ii.prototype.bytesPerElement=20,kn(\"StructArrayLayout6i1ul2ui20\",Ii);class Mi extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s){const a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i,s)}emplace(t,e,r,n,i,s,a){const o=6*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.int16[o+2]=n,this.int16[o+3]=i,this.int16[o+4]=s,this.int16[o+5]=a,t}}Mi.prototype.bytesPerElement=12,kn(\"StructArrayLayout2i2i2i12\",Mi);class Bi extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i){const s=this.length;return this.resize(s+1),this.emplace(s,t,e,r,n,i)}emplace(t,e,r,n,i,s){const a=4*t,o=8*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.int16[o+6]=i,this.int16[o+7]=s,t}}Bi.prototype.bytesPerElement=16,kn(\"StructArrayLayout2f1f2i16\",Bi);class Ci extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const s=12*t,a=3*t;return this.uint8[s+0]=e,this.uint8[s+1]=r,this.float32[a+1]=n,this.float32[a+2]=i,t}}Ci.prototype.bytesPerElement=12,kn(\"StructArrayLayout2ub2f12\",Ci);class Pi extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t}}Pi.prototype.bytesPerElement=6,kn(\"StructArrayLayout3ui6\",Pi);class Vi extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m){const g=this.length;return this.resize(g+1),this.emplace(g,t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m)}emplace(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g){const x=24*t,v=12*t,b=48*t;return this.int16[x+0]=e,this.int16[x+1]=r,this.uint16[x+2]=n,this.uint16[x+3]=i,this.uint32[v+2]=s,this.uint32[v+3]=a,this.uint32[v+4]=o,this.uint16[x+10]=l,this.uint16[x+11]=u,this.uint16[x+12]=c,this.float32[v+7]=h,this.float32[v+8]=p,this.uint8[b+36]=f,this.uint8[b+37]=d,this.uint8[b+38]=y,this.uint32[v+10]=m,this.int16[x+22]=g,t}}Vi.prototype.bytesPerElement=48,kn(\"StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48\",Vi);class Ei extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,A,k,S,z,I){const M=this.length;return this.resize(M+1),this.emplace(M,t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,A,k,S,z,I)}emplace(t,e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,A,k,S,z,I,M){const B=34*t,C=17*t;return this.int16[B+0]=e,this.int16[B+1]=r,this.int16[B+2]=n,this.int16[B+3]=i,this.int16[B+4]=s,this.int16[B+5]=a,this.int16[B+6]=o,this.int16[B+7]=l,this.uint16[B+8]=u,this.uint16[B+9]=c,this.uint16[B+10]=h,this.uint16[B+11]=p,this.uint16[B+12]=f,this.uint16[B+13]=d,this.uint16[B+14]=y,this.uint16[B+15]=m,this.uint16[B+16]=g,this.uint16[B+17]=x,this.uint16[B+18]=v,this.uint16[B+19]=b,this.uint16[B+20]=w,this.uint16[B+21]=_,this.uint16[B+22]=A,this.uint32[C+12]=k,this.float32[C+13]=S,this.float32[C+14]=z,this.float32[C+15]=I,this.float32[C+16]=M,t}}Ei.prototype.bytesPerElement=68,kn(\"StructArrayLayout8i15ui1ul4f68\",Ei);class Fi extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.float32[1*t+0]=e,t}}Fi.prototype.bytesPerElement=4,kn(\"StructArrayLayout1f4\",Fi);class Ti extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t}}Ti.prototype.bytesPerElement=6,kn(\"StructArrayLayout3i6\",Ti);class Li extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=4*t;return this.uint32[2*t+0]=e,this.uint16[i+2]=r,this.uint16[i+3]=n,t}}Li.prototype.bytesPerElement=8,kn(\"StructArrayLayout1ul2ui8\",Li);class Di extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t}}Di.prototype.bytesPerElement=4,kn(\"StructArrayLayout2ui4\",Di);class $i extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint16[1*t+0]=e,t}}$i.prototype.bytesPerElement=2,kn(\"StructArrayLayout1ui2\",$i);class Ri extends yi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const s=4*t;return this.float32[s+0]=e,this.float32[s+1]=r,this.float32[s+2]=n,this.float32[s+3]=i,t}}Ri.prototype.bytesPerElement=16,kn(\"StructArrayLayout4f16\",Ri);class Ui extends di{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new S(this.anchorPointX,this.anchorPointY)}}Ui.prototype.size=20;class Oi extends Ii{get(t){return new Ui(this,t)}}kn(\"CollisionBoxArray\",Oi);class qi extends di{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(t){this._structArray.uint8[this._pos1+37]=t;}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(t){this._structArray.uint8[this._pos1+38]=t;}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(t){this._structArray.uint32[this._pos4+10]=t;}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}qi.prototype.size=48;class ji extends Vi{get(t){return new qi(this,t)}}kn(\"PlacedSymbolArray\",ji);class Ni extends di{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(t){this._structArray.uint32[this._pos4+12]=t;}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get textOffset0(){return this._structArray.float32[this._pos4+14]}get textOffset1(){return this._structArray.float32[this._pos4+15]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+16]}}Ni.prototype.size=68;class Ki extends Ei{get(t){return new Ni(this,t)}}kn(\"SymbolInstanceArray\",Ki);class Zi extends Fi{getoffsetX(t){return this.float32[1*t+0]}}kn(\"GlyphOffsetArray\",Zi);class Gi extends Ti{getx(t){return this.int16[3*t+0]}gety(t){return this.int16[3*t+1]}gettileUnitDistanceFromAnchor(t){return this.int16[3*t+2]}}kn(\"SymbolLineVertexArray\",Gi);class Ji extends di{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}}Ji.prototype.size=8;class Xi extends Li{get(t){return new Ji(this,t)}}kn(\"FeatureIndexArray\",Xi);class Yi extends xi{}class Hi extends xi{}class Wi extends bi{}class Qi extends wi{}class ts extends _i{}class es extends Ai{}class rs extends ki{}class ns extends Si{}class is extends zi{}class ss extends Mi{}class as extends Ci{}class os extends Pi{}class ls extends Di{}const us=mi([{name:\"a_pos\",components:2,type:\"Int16\"}],4),{members:cs}=us;class hs{constructor(t=[]){this.segments=t;}prepareSegment(t,e,r,n){let i=this.segments[this.segments.length-1];return t>hs.MAX_VERTEX_ARRAY_LENGTH&&d(`Max vertices per segment is ${hs.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${t}`),(!i||i.vertexLength+t>hs.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n)&&(i={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==n&&(i.sortKey=n),this.segments.push(i)),i}get(){return this.segments}destroy(){for(const t of this.segments)for(const e in t.vaos)t.vaos[e].destroy();}static simpleSegment(t,e,r,n){return new hs([{vertexOffset:t,primitiveOffset:e,vertexLength:r,primitiveLength:n,vaos:{},sortKey:0}])}}function ps(t,e){return 256*(t=s(Math.floor(t),0,255))+s(Math.floor(e),0,255)}hs.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,kn(\"SegmentVector\",hs);const fs=mi([{name:\"a_pattern_from\",components:4,type:\"Uint16\"},{name:\"a_pattern_to\",components:4,type:\"Uint16\"},{name:\"a_pixel_ratio_from\",components:1,type:\"Uint16\"},{name:\"a_pixel_ratio_to\",components:1,type:\"Uint16\"}]);var ds={exports:{}},ys={exports:{}};ys.exports=function(t,e){var r,n,i,s,a,o,l,u;for(n=t.length-(r=3&t.length),i=e,a=3432918353,o=461845907,u=0;u>>16)*a&65535)<<16)&4294967295)<<15|l>>>17))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(s>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&t.charCodeAt(u+2))<<16;case 2:l^=(255&t.charCodeAt(u+1))<<8;case 1:i^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(u)))*a+(((l>>>16)*a&65535)<<16)&4294967295)<<15|l>>>17))*o+(((l>>>16)*o&65535)<<16)&4294967295;}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0};var ms={exports:{}};ms.exports=function(t,e){for(var r,n=t.length,i=e^n,s=0;n>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(s)|(255&t.charCodeAt(++s))<<8|(255&t.charCodeAt(++s))<<16|(255&t.charCodeAt(++s))<<24))+((1540483477*(r>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++s;switch(n){case 3:i^=(255&t.charCodeAt(s+2))<<16;case 2:i^=(255&t.charCodeAt(s+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(s)))+((1540483477*(i>>>16)&65535)<<16);}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0};var gs=ys.exports,xs=ms.exports;ds.exports=gs,ds.exports.murmur3=gs,ds.exports.murmur2=xs;var vs=ds.exports;class bs{constructor(){this.ids=[],this.positions=[],this.indexed=!1;}add(t,e,r,n){this.ids.push(ws(t)),this.positions.push(e,r,n);}getPositions(t){const e=ws(t);let r=0,n=this.ids.length-1;for(;r>1;this.ids[t]>=e?n=t:r=t+1;}const i=[];for(;this.ids[r]===e;)i.push({index:this.positions[3*r],start:this.positions[3*r+1],end:this.positions[3*r+2]}),r++;return i}static serialize(t,e){const r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return _s(r,n,0,r.length-1),e&&e.push(r.buffer,n.buffer),{ids:r,positions:n}}static deserialize(t){const e=new bs;return e.ids=t.ids,e.positions=t.positions,e.indexed=!0,e}}function ws(t){const e=+t;return !isNaN(e)&&e<=Number.MAX_SAFE_INTEGER?e:vs(String(t))}function _s(t,e,r,n){for(;r>1];let s=r-1,a=n+1;for(;;){do{s++;}while(t[s]i);if(s>=a)break;As(t,s,a),As(e,3*s,3*a),As(e,3*s+1,3*a+1),As(e,3*s+2,3*a+2);}a-r`u_${t}`)),this.type=r;}setUniform(t,e,r){t.set(r.constantOr(this.value));}getBinding(t,e,r){return \"color\"===this.type?new Is(t,e):new Ss(t,e)}}class Ps{constructor(t,e){this.uniformNames=e.map((t=>`u_${t}`)),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1;}setConstantPatternPositions(t,e){this.pixelRatioFrom=e.pixelRatio,this.pixelRatioTo=t.pixelRatio,this.patternFrom=e.tlbr,this.patternTo=t.tlbr;}setUniform(t,e,r,n){const i=\"u_pattern_to\"===n?this.patternTo:\"u_pattern_from\"===n?this.patternFrom:\"u_pixel_ratio_to\"===n?this.pixelRatioTo:\"u_pixel_ratio_from\"===n?this.pixelRatioFrom:null;i&&t.set(i);}getBinding(t,e,r){return \"u_pattern\"===r.substr(0,9)?new zs(t,e):new Ss(t,e)}}class Vs{constructor(t,e,r,n){this.expression=t,this.type=r,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:\"Float32\",components:\"color\"===r?2:1,offset:0}))),this.paintVertexArray=new n;}populatePaintArray(t,e,r,n,i){const s=this.paintVertexArray.length,a=this.expression.evaluate(new Yn(0),e,{},n,[],i);this.paintVertexArray.resize(t),this._setPaintValue(s,t,a);}updatePaintArray(t,e,r,n){const i=this.expression.evaluate({zoom:0},r,n);this._setPaintValue(t,e,i);}_setPaintValue(t,e,r){if(\"color\"===this.type){const n=Bs(r);for(let r=t;r`u_${t}_t`)),this.type=r,this.useIntegerZoom=n,this.zoom=i,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:\"Float32\",components:\"color\"===r?4:2,offset:0}))),this.paintVertexArray=new s;}populatePaintArray(t,e,r,n,i){const s=this.expression.evaluate(new Yn(this.zoom),e,{},n,[],i),a=this.expression.evaluate(new Yn(this.zoom+1),e,{},n,[],i),o=this.paintVertexArray.length;this.paintVertexArray.resize(t),this._setPaintValue(o,t,s,a);}updatePaintArray(t,e,r,n){const i=this.expression.evaluate({zoom:this.zoom},r,n),s=this.expression.evaluate({zoom:this.zoom+1},r,n);this._setPaintValue(t,e,i,s);}_setPaintValue(t,e,r,n){if(\"color\"===this.type){const i=Bs(r),s=Bs(n);for(let r=t;r`#define HAS_UNIFORM_${t}`)));}return t}getBinderAttributes(){const t=[];for(const e in this.binders){const r=this.binders[e];if(r instanceof Vs||r instanceof Es)for(let e=0;e!0)){this.programConfigurations={};for(const n of t)this.programConfigurations[n.id]=new Ts(n,e,r);this.needsUpload=!1,this._featureMap=new bs,this._bufferOffset=0;}populatePaintArrays(t,e,r,n,i,s){for(const r in this.programConfigurations)this.programConfigurations[r].populatePaintArrays(t,e,n,i,s);void 0!==e.id&&this._featureMap.add(e.id,r,this._bufferOffset,t),this._bufferOffset=t,this.needsUpload=!0;}updatePaintArrays(t,e,r,n){for(const i of r)this.needsUpload=this.programConfigurations[i.id].updatePaintArrays(t,this._featureMap,e,i,n)||this.needsUpload;}get(t){return this.programConfigurations[t]}upload(t){if(this.needsUpload){for(const e in this.programConfigurations)this.programConfigurations[e].upload(t);this.needsUpload=!1;}}destroy(){for(const t in this.programConfigurations)this.programConfigurations[t].destroy();}}function Ds(t,e){return {\"text-opacity\":[\"opacity\"],\"icon-opacity\":[\"opacity\"],\"text-color\":[\"fill_color\"],\"icon-color\":[\"fill_color\"],\"text-halo-color\":[\"halo_color\"],\"icon-halo-color\":[\"halo_color\"],\"text-halo-blur\":[\"halo_blur\"],\"icon-halo-blur\":[\"halo_blur\"],\"text-halo-width\":[\"halo_width\"],\"icon-halo-width\":[\"halo_width\"],\"line-gap-width\":[\"gapwidth\"],\"line-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"],\"fill-extrusion-pattern\":[\"pattern_to\",\"pattern_from\",\"pixel_ratio_to\",\"pixel_ratio_from\"]}[t]||[t.replace(`${e}-`,\"\").replace(/-/g,\"_\")]}function $s(t,e,r){const n={color:{source:_i,composite:Ri},number:{source:Fi,composite:_i}},i=function(t){return {\"line-pattern\":{source:es,composite:es},\"fill-pattern\":{source:es,composite:es},\"fill-extrusion-pattern\":{source:es,composite:es}}[t]}(t);return i&&i[r]||n[e][r]}kn(\"ConstantBinder\",Cs),kn(\"CrossFadedConstantBinder\",Ps),kn(\"SourceExpressionBinder\",Vs),kn(\"CrossFadedCompositeBinder\",Fs),kn(\"CompositeExpressionBinder\",Es),kn(\"ProgramConfiguration\",Ts,{omit:[\"_buffers\"]}),kn(\"ProgramConfigurationSet\",Ls);var Rs=8192;const Us=Math.pow(2,14)-1,Os=-Us-1;function qs(t){const e=Rs/t.extent,r=t.loadGeometry();for(let t=0;tr.x+1||ar.y+1)&&d(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\");}}return r}function js(t,e){return {type:t.type,id:t.id,properties:t.properties,geometry:e?qs(t):[]}}function Ns(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2);}class Ks{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new Yi,this.indexArray=new os,this.segments=new hs,this.programConfigurations=new Ls(t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){const n=this.layers[0],i=[];let s=null,a=!1;\"circle\"===n.type&&(s=n.layout.get(\"circle-sort-key\"),a=!s.isConstant());for(const{feature:e,id:n,index:o,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=js(e,t);if(!this.layers[0]._featureFilter.filter(new Yn(this.zoom),u,r))continue;const c=a?s.evaluate(u,{},r):void 0,h={id:n,properties:e.properties,type:e.type,sourceLayerIndex:l,index:o,geometry:t?u.geometry:qs(e),patterns:{},sortKey:c};i.push(h);}a&&i.sort(((t,e)=>t.sortKey-e.sortKey));for(const n of i){const{geometry:i,index:s,sourceLayerIndex:a}=n,o=t[s].feature;this.addFeature(n,i,s,r),e.featureIndex.insert(o,i,s,a,this.index);}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,cs),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}addFeature(t,e,r,n){for(const r of e)for(const e of r){const r=e.x,n=e.y;if(r<0||r>=Rs||n<0||n>=Rs)continue;const i=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),s=i.vertexLength;Ns(this.layoutVertexArray,r,n,-1,-1),Ns(this.layoutVertexArray,r,n,1,-1),Ns(this.layoutVertexArray,r,n,1,1),Ns(this.layoutVertexArray,r,n,-1,1),this.indexArray.emplaceBack(s,s+1,s+2),this.indexArray.emplaceBack(s,s+3,s+2),i.vertexLength+=4,i.primitiveLength+=2;}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{},n);}}function Zs(t,e){for(let r=0;r1){if(Ys(t,e))return !0;for(let n=0;n1?r:r.sub(e)._mult(i)._add(e))}function ta(t,e){let r,n,i,s=!1;for(let a=0;ae.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(s=!s);}return s}function ea(t,e){let r=!1;for(let n=0,i=t.length-1;ne.y!=a.y>e.y&&e.x<(a.x-s.x)*(e.y-s.y)/(a.y-s.y)+s.x&&(r=!r);}return r}function ra(t,e,r){const n=r[0],i=r[2];if(t.xi.x&&e.x>i.x||t.yi.y&&e.y>i.y)return !1;const s=y(t,e,r[0]);return s!==y(t,e,r[1])||s!==y(t,e,r[2])||s!==y(t,e,r[3])}function na(t,e,r){const n=e.paint.get(t).value;return \"constant\"===n.kind?n.value:r.programConfigurations.get(e.id).getMaxValue(t)}function ia(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function sa(t,e,r,n,i){if(!e[0]&&!e[1])return t;const s=S.convert(e)._mult(i);\"viewport\"===r&&s._rotate(-n);const a=[];for(let e=0;et.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError(\"out of range source coordinates for image copy\");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError(\"out of range destination coordinates for image copy\");const a=t.data,o=e.data;for(let l=0;l{e[t.evaluationKey]=s;const a=t.expression.evaluate(e);i.data[r+n+0]=Math.floor(255*a.r/a.a),i.data[r+n+1]=Math.floor(255*a.g/a.a),i.data[r+n+2]=Math.floor(255*a.b/a.a),i.data[r+n+3]=Math.floor(255*a.a);};if(t.clips)for(let e=0,i=0;e80*r){n=s=t[0],i=a=t[1];for(var d=r;ds&&(s=o),l>a&&(a=l);u=0!==(u=Math.max(s-n,a-i))?1/u:0;}return Ca(p,f,r,n,i,u),f}function Ma(t,e,r,n,i){var s,a;if(i===Wa(t,e,r,n)>0)for(s=e;s=e;s-=n)a=Xa(s,t[s],t[s+1],a);return a&&ja(a,a.next)&&(Ya(a),a=a.next),a}function Ba(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!ja(n,n.next)&&0!==qa(n.prev,n,n.next))n=n.next;else {if(Ya(n),(n=e=n.prev)===n.next)break;r=!0;}}while(r||n!==e);return e}function Ca(t,e,r,n,i,s,a){if(t){!a&&s&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=$a(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,s,a,o,l,u=1;do{for(r=t,t=null,s=null,a=0;r;){for(a++,n=r,o=0,e=0;e0||l>0&&n;)0!==o&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,o--):(i=n,n=n.nextZ,l--),s?s.nextZ=i:t=i,i.prevZ=s,s=i;r=n;}s.nextZ=null,u*=2;}while(a>1)}(i);}(t,n,i,s);for(var o,l,u=t;t.prev!==t.next;)if(o=t.prev,l=t.next,s?Va(t,n,i,s):Pa(t))e.push(o.i/r),e.push(t.i/r),e.push(l.i/r),Ya(t),t=l.next,u=l.next;else if((t=l)===u){a?1===a?Ca(t=Ea(Ba(t),e,r),e,r,n,i,s,2):2===a&&Fa(t,e,r,n,i,s):Ca(Ba(t),e,r,n,i,s,1);break}}}function Pa(t){var e=t.prev,r=t,n=t.next;if(qa(e,r,n)>=0)return !1;for(var i=t.next.next;i!==t.prev;){if(Ua(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&qa(i.prev,i,i.next)>=0)return !1;i=i.next;}return !0}function Va(t,e,r,n){var i=t.prev,s=t,a=t.next;if(qa(i,s,a)>=0)return !1;for(var o=i.x>s.x?i.x>a.x?i.x:a.x:s.x>a.x?s.x:a.x,l=i.y>s.y?i.y>a.y?i.y:a.y:s.y>a.y?s.y:a.y,u=$a(i.x=u&&p&&p.z<=c;){if(h!==t.prev&&h!==t.next&&Ua(i.x,i.y,s.x,s.y,a.x,a.y,h.x,h.y)&&qa(h.prev,h,h.next)>=0)return !1;if(h=h.prevZ,p!==t.prev&&p!==t.next&&Ua(i.x,i.y,s.x,s.y,a.x,a.y,p.x,p.y)&&qa(p.prev,p,p.next)>=0)return !1;p=p.nextZ;}for(;h&&h.z>=u;){if(h!==t.prev&&h!==t.next&&Ua(i.x,i.y,s.x,s.y,a.x,a.y,h.x,h.y)&&qa(h.prev,h,h.next)>=0)return !1;h=h.prevZ;}for(;p&&p.z<=c;){if(p!==t.prev&&p!==t.next&&Ua(i.x,i.y,s.x,s.y,a.x,a.y,p.x,p.y)&&qa(p.prev,p,p.next)>=0)return !1;p=p.nextZ;}return !0}function Ea(t,e,r){var n=t;do{var i=n.prev,s=n.next.next;!ja(i,s)&&Na(i,n,n.next,s)&&Ga(i,s)&&Ga(s,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(s.i/r),Ya(n),Ya(n.next),n=t=s),n=n.next;}while(n!==t);return Ba(n)}function Fa(t,e,r,n,i,s){var a=t;do{for(var o=a.next.next;o!==a.prev;){if(a.i!==o.i&&Oa(a,o)){var l=Ja(a,o);return a=Ba(a,a.next),l=Ba(l,l.next),Ca(a,e,r,n,i,s),void Ca(l,e,r,n,i,s)}o=o.next;}a=a.next;}while(a!==t)}function Ta(t,e){return t.x-e.x}function La(t,e){var r=function(t,e){var r,n=e,i=t.x,s=t.y,a=-1/0;do{if(s<=n.y&&s>=n.next.y&&n.next.y!==n.y){var o=n.x+(s-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(o<=i&&o>a){if(a=o,o===i){if(s===n.y)return n;if(s===n.next.y)return n.next}r=n.x=n.x&&n.x>=c&&i!==n.x&&Ua(sr.x||n.x===r.x&&Da(r,n)))&&(r=n,p=l)),n=n.next;}while(n!==u);return r}(t,e);if(!r)return e;var n=Ja(r,t),i=Ba(r,r.next);return Ba(n,n.next),e===r?i:e}function Da(t,e){return qa(t.prev,t,e.prev)<0&&qa(e.next,t,t.next)<0}function $a(t,e,r,n,i){return (t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Ra(t){var e=t,r=t;do{(e.x=0&&(t-a)*(n-o)-(r-a)*(e-o)>=0&&(r-a)*(s-o)-(i-a)*(n-o)>=0}function Oa(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&Na(r,r.next,t,e))return !0;r=r.next;}while(r!==t);return !1}(t,e)&&(Ga(t,e)&&Ga(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,s=(t.y+e.y)/2;do{r.y>s!=r.next.y>s&&r.next.y!==r.y&&i<(r.next.x-r.x)*(s-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next;}while(r!==t);return n}(t,e)&&(qa(t.prev,t,e.prev)||qa(t,e.prev,e))||ja(t,e)&&qa(t.prev,t,t.next)>0&&qa(e.prev,e,e.next)>0)}function qa(t,e,r){return (e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function ja(t,e){return t.x===e.x&&t.y===e.y}function Na(t,e,r,n){var i=Za(qa(t,e,r)),s=Za(qa(t,e,n)),a=Za(qa(r,n,t)),o=Za(qa(r,n,e));return i!==s&&a!==o||!(0!==i||!Ka(t,r,e))||!(0!==s||!Ka(t,n,e))||!(0!==a||!Ka(r,t,n))||!(0!==o||!Ka(r,e,n))}function Ka(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function Za(t){return t>0?1:t<0?-1:0}function Ga(t,e){return qa(t.prev,t,t.next)<0?qa(t,e,t.next)>=0&&qa(t,t.prev,e)>=0:qa(t,e,t.prev)<0||qa(t,t.next,e)<0}function Ja(t,e){var r=new Ha(t.i,t.x,t.y),n=new Ha(e.i,e.x,e.y),i=t.next,s=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,s.next=n,n.prev=s,n}function Xa(t,e,r,n){var i=new Ha(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function Ya(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ);}function Ha(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1;}function Wa(t,e,r,n){for(var i=0,s=e,a=r-n;s0&&r.holes.push(n+=t[i-1].length);}return r};var Qa=za.exports;function to(t,e,r,n,i){eo(t,e,r||0,n||t.length-1,i||no);}function eo(t,e,r,n,i){for(;n>r;){if(n-r>600){var s=n-r+1,a=e-r+1,o=Math.log(s),l=.5*Math.exp(2*o/3),u=.5*Math.sqrt(o*l*(s-l)/s)*(a-s/2<0?-1:1);eo(t,e,Math.max(r,Math.floor(e-a*l/s+u)),Math.min(n,Math.floor(e+(s-a)*l/s+u)),i);}var c=t[e],h=r,p=n;for(ro(t,r,e),i(t[n],c)>0&&ro(t,r,n);h0;)p--;}0===i(t[r],c)?ro(t,r,p):ro(t,++p,n),p<=e&&(r=p+1),e<=p&&(n=p-1);}}function ro(t,e,r){var n=t[e];t[e]=t[r],t[r]=n;}function no(t,e){return te?1:0}function io(t,e){const r=t.length;if(r<=1)return [t];const n=[];let i,s;for(let e=0;e1)for(let t=0;tt.id)),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new Hi,this.indexArray=new os,this.indexArray2=new ls,this.programConfigurations=new Ls(t.layers,t.zoom),this.segments=new hs,this.segments2=new hs,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){this.hasPattern=ao(\"fill\",this.layers,e);const n=this.layers[0].layout.get(\"fill-sort-key\"),i=!n.isConstant(),s=[];for(const{feature:a,id:o,index:l,sourceLayerIndex:u}of t){const t=this.layers[0]._featureFilter.needGeometry,c=js(a,t);if(!this.layers[0]._featureFilter.filter(new Yn(this.zoom),c,r))continue;const h=i?n.evaluate(c,{},r,e.availableImages):void 0,p={id:o,properties:a.properties,type:a.type,sourceLayerIndex:u,index:l,geometry:t?c.geometry:qs(a),patterns:{},sortKey:h};s.push(p);}i&&s.sort(((t,e)=>t.sortKey-e.sortKey));for(const n of s){const{geometry:i,index:s,sourceLayerIndex:a}=n;if(this.hasPattern){const t=oo(\"fill\",this.layers,n,this.zoom,e);this.patternFeatures.push(t);}else this.addFeature(n,i,s,r,{});e.featureIndex.insert(t[s].feature,i,s,a,this.index);}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);}addFeatures(t,e,r){for(const t of this.patternFeatures)this.addFeature(t,t.geometry,t.index,e,r);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Sa),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.indexBuffer2=t.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy());}addFeature(t,e,r,n,i){for(const t of io(e,500)){let e=0;for(const r of t)e+=r.length;const r=this.segments.prepareSegment(e,this.layoutVertexArray,this.indexArray),n=r.vertexLength,i=[],s=[];for(const e of t){if(0===e.length)continue;e!==t[0]&&s.push(i.length/2);const r=this.segments2.prepareSegment(e.length,this.layoutVertexArray,this.indexArray2),n=r.vertexLength;this.layoutVertexArray.emplaceBack(e[0].x,e[0].y),this.indexArray2.emplaceBack(n+e.length-1,n),i.push(e[0].x),i.push(e[0].y);for(let t=1;t>3;}if(i--,1===n||2===n)s+=t.readSVarint(),a+=t.readSVarint(),1===n&&(e&&o.push(e),e=[]),e.push(new yo(s,a));else {if(7!==n)throw new Error(\"unknown command \"+n);e&&e.push(e[0].clone());}}return e&&o.push(e),o},go.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,s=0,a=1/0,o=-1/0,l=1/0,u=-1/0;t.pos>3;}if(n--,1===r||2===r)(i+=t.readSVarint())o&&(o=i),(s+=t.readSVarint())u&&(u=s);else if(7!==r)throw new Error(\"unknown command \"+r)}return [a,l,o,u]},go.prototype.toGeoJSON=function(t,e,r){var n,i,s=this.extent*Math.pow(2,r),a=this.extent*t,o=this.extent*e,l=this.loadGeometry(),u=go.types[this.type];function c(t){for(var e=0;e>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null;}return e}(r));}_o.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new bo(this._pbf,e,this.extent,this._keys,this._values)};var ko=wo;function So(t,e,r){if(3===t){var n=new ko(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n);}}fo.VectorTile=function(t,e){this.layers=t.readFields(So,{},e);},fo.VectorTileFeature=mo,fo.VectorTileLayer=wo;const zo=fo.VectorTileFeature.types,Io=Math.pow(2,13);function Mo(t,e,r,n,i,s,a,o){t.emplaceBack(e,r,2*Math.floor(n*Io)+a,i*Io*2,s*Io*2,Math.round(o));}class Bo{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new Wi,this.indexArray=new os,this.programConfigurations=new Ls(t.layers,t.zoom),this.segments=new hs,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){this.features=[],this.hasPattern=ao(\"fill-extrusion\",this.layers,e);for(const{feature:n,id:i,index:s,sourceLayerIndex:a}of t){const t=this.layers[0]._featureFilter.needGeometry,o=js(n,t);if(!this.layers[0]._featureFilter.filter(new Yn(this.zoom),o,r))continue;const l={id:i,sourceLayerIndex:a,index:s,geometry:t?o.geometry:qs(n),properties:n.properties,type:n.type,patterns:{}};this.hasPattern?this.features.push(oo(\"fill-extrusion\",this.layers,l,this.zoom,e)):this.addFeature(l,l.geometry,s,r,{}),e.featureIndex.insert(n,l.geometry,s,a,this.index,!0);}}addFeatures(t,e,r){for(const t of this.features){const{geometry:n}=t;this.addFeature(t,n,t.index,e,r);}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,po),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}addFeature(t,e,r,n,i){for(const r of io(e,500)){let e=0;for(const t of r)e+=t.length;let n=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(const t of r){if(0===t.length)continue;if(Po(t))continue;let e=0;for(let r=0;r=1){const s=t[r-1];if(!Co(i,s)){n.vertexLength+4>hs.MAX_VERTEX_ARRAY_LENGTH&&(n=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));const t=i.sub(s)._perp()._unit(),r=s.dist(i);e+r>32768&&(e=0),Mo(this.layoutVertexArray,i.x,i.y,t.x,t.y,0,0,e),Mo(this.layoutVertexArray,i.x,i.y,t.x,t.y,0,1,e),e+=r,Mo(this.layoutVertexArray,s.x,s.y,t.x,t.y,0,0,e),Mo(this.layoutVertexArray,s.x,s.y,t.x,t.y,0,1,e);const a=n.vertexLength;this.indexArray.emplaceBack(a,a+2,a+1),this.indexArray.emplaceBack(a+1,a+2,a+3),n.vertexLength+=4,n.primitiveLength+=2;}}}}if(n.vertexLength+e>hs.MAX_VERTEX_ARRAY_LENGTH&&(n=this.segments.prepareSegment(e,this.layoutVertexArray,this.indexArray)),\"Polygon\"!==zo[t.type])continue;const i=[],s=[],a=n.vertexLength;for(const t of r)if(0!==t.length){t!==r[0]&&s.push(i.length/2);for(let e=0;eRs)||t.y===e.y&&(t.y<0||t.y>Rs)}function Po(t){return t.every((t=>t.x<0))||t.every((t=>t.x>Rs))||t.every((t=>t.y<0))||t.every((t=>t.y>Rs))}kn(\"FillExtrusionBucket\",Bo,{omit:[\"layers\",\"features\"]});var Vo={paint:new ci({\"fill-extrusion-opacity\":new si(nt[\"paint_fill-extrusion\"][\"fill-extrusion-opacity\"]),\"fill-extrusion-color\":new ai(nt[\"paint_fill-extrusion\"][\"fill-extrusion-color\"]),\"fill-extrusion-translate\":new si(nt[\"paint_fill-extrusion\"][\"fill-extrusion-translate\"]),\"fill-extrusion-translate-anchor\":new si(nt[\"paint_fill-extrusion\"][\"fill-extrusion-translate-anchor\"]),\"fill-extrusion-pattern\":new oi(nt[\"paint_fill-extrusion\"][\"fill-extrusion-pattern\"]),\"fill-extrusion-height\":new ai(nt[\"paint_fill-extrusion\"][\"fill-extrusion-height\"]),\"fill-extrusion-base\":new ai(nt[\"paint_fill-extrusion\"][\"fill-extrusion-base\"]),\"fill-extrusion-vertical-gradient\":new si(nt[\"paint_fill-extrusion\"][\"fill-extrusion-vertical-gradient\"])})};function Eo(t,e){return t.x*e.x+t.y*e.y}function Fo(t,e){if(1===t.length){let r=0;const n=e[r++];let i;for(;!i||n.equals(i);)if(i=e[r++],!i)return 1/0;for(;rt.id)),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach((t=>{this.gradients[t.id]={};})),this.layoutVertexArray=new Qi,this.layoutVertexArray2=new ts,this.indexArray=new os,this.programConfigurations=new Ls(t.layers,t.zoom),this.segments=new hs,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){this.hasPattern=ao(\"line\",this.layers,e);const n=this.layers[0].layout.get(\"line-sort-key\"),i=!n.isConstant(),s=[];for(const{feature:e,id:a,index:o,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=js(e,t);if(!this.layers[0]._featureFilter.filter(new Yn(this.zoom),u,r))continue;const c=i?n.evaluate(u,{},r):void 0,h={id:a,properties:e.properties,type:e.type,sourceLayerIndex:l,index:o,geometry:t?u.geometry:qs(e),patterns:{},sortKey:c};s.push(h);}i&&s.sort(((t,e)=>t.sortKey-e.sortKey));for(const n of s){const{geometry:i,index:s,sourceLayerIndex:a}=n;if(this.hasPattern){const t=oo(\"line\",this.layers,n,this.zoom,e);this.patternFeatures.push(t);}else this.addFeature(n,i,s,r,{});e.featureIndex.insert(t[s].feature,i,s,a,this.index);}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);}addFeatures(t,e,r){for(const t of this.patternFeatures)this.addFeature(t,t.geometry,t.index,e,r);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(0!==this.layoutVertexArray2.length&&(this.layoutVertexBuffer2=t.createVertexBuffer(this.layoutVertexArray2,$o)),this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Lo),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}lineFeatureClips(t){if(t.properties&&Object.prototype.hasOwnProperty.call(t.properties,\"mapbox_clip_start\")&&Object.prototype.hasOwnProperty.call(t.properties,\"mapbox_clip_end\"))return {start:+t.properties.mapbox_clip_start,end:+t.properties.mapbox_clip_end}}addFeature(t,e,r,n,i){const s=this.layers[0].layout,a=s.get(\"line-join\").evaluate(t,{}),o=s.get(\"line-cap\"),l=s.get(\"line-miter-limit\"),u=s.get(\"line-round-limit\");this.lineClips=this.lineFeatureClips(t);for(const r of e)this.addLine(r,t,a,o,l,u);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,n);}addLine(t,e,r,n,i,s){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let e=0;e=2&&t[o-1].equals(t[o-2]);)o--;let l=0;for(;l0;if(w&&e>l){const t=h.dist(p);if(t>2*u){const e=h.sub(h.sub(p)._mult(u/t)._round());this.updateDistance(p,e),this.addCurrentVertex(e,d,0,0,c),p=e;}}const A=p&&f;let k=A?r:a?\"butt\":n;if(A&&\"round\"===k&&(vi&&(k=\"bevel\"),\"bevel\"===k&&(v>2&&(k=\"flipbevel\"),v100)m=y.mult(-1);else {const t=v*d.add(y).mag()/d.sub(y).mag();m._perp()._mult(t*(_?-1:1));}this.addCurrentVertex(h,m,0,0,c),this.addCurrentVertex(h,m.mult(-1),0,0,c);}else if(\"bevel\"===k||\"fakeround\"===k){const t=-Math.sqrt(v*v-1),e=_?t:0,r=_?0:t;if(p&&this.addCurrentVertex(h,d,e,r,c),\"fakeround\"===k){const t=Math.round(180*b/Math.PI/20);for(let e=1;e2*u){const e=h.add(f.sub(h)._mult(u/t)._round());this.updateDistance(h,e),this.addCurrentVertex(e,y,0,0,c),h=e;}}}}addCurrentVertex(t,e,r,n,i,s=!1){const a=e.y*n-e.x,o=-e.y-e.x*n;this.addHalfVertex(t,e.x+e.y*r,e.y-e.x*r,s,!1,r,i),this.addHalfVertex(t,a,o,s,!0,-n,i),this.distance>Oo/2&&0===this.totalDistance&&(this.distance=0,this.addCurrentVertex(t,e,r,n,i,s));}addHalfVertex({x:t,y:e},r,n,i,s,a,o){const l=.5*(this.lineClips?this.scaledDistance*(Oo-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((t<<1)+(i?1:0),(e<<1)+(s?1:0),Math.round(63*r)+128,Math.round(63*n)+128,1+(0===a?0:a<0?-1:1)|(63&l)<<2,l>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);const u=o.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,u),o.primitiveLength++),s?this.e2=u:this.e1=u;}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance;}updateDistance(t,e){this.distance+=t.dist(e),this.updateScaledDistance();}}kn(\"LineBucket\",qo,{omit:[\"layers\",\"patternFeatures\"]});const jo=new ci({\"line-cap\":new si(nt.layout_line[\"line-cap\"]),\"line-join\":new ai(nt.layout_line[\"line-join\"]),\"line-miter-limit\":new si(nt.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new si(nt.layout_line[\"line-round-limit\"]),\"line-sort-key\":new ai(nt.layout_line[\"line-sort-key\"])});var No={paint:new ci({\"line-opacity\":new ai(nt.paint_line[\"line-opacity\"]),\"line-color\":new ai(nt.paint_line[\"line-color\"]),\"line-translate\":new si(nt.paint_line[\"line-translate\"]),\"line-translate-anchor\":new si(nt.paint_line[\"line-translate-anchor\"]),\"line-width\":new ai(nt.paint_line[\"line-width\"]),\"line-gap-width\":new ai(nt.paint_line[\"line-gap-width\"]),\"line-offset\":new ai(nt.paint_line[\"line-offset\"]),\"line-blur\":new ai(nt.paint_line[\"line-blur\"]),\"line-dasharray\":new li(nt.paint_line[\"line-dasharray\"]),\"line-pattern\":new oi(nt.paint_line[\"line-pattern\"]),\"line-gradient\":new ui(nt.paint_line[\"line-gradient\"])}),layout:jo};const Ko=new class extends ai{possiblyEvaluate(t,e){return e=new Yn(Math.floor(e.zoom),{now:e.now,fadeDuration:e.fadeDuration,zoomHistory:e.zoomHistory,transition:e.transition}),super.possiblyEvaluate(t,e)}evaluate(t,e,r,n){return e=o({},e,{zoom:Math.floor(e.zoom)}),super.evaluate(t,e,r,n)}}(No.paint.properties[\"line-width\"].specification);function Zo(t,e){return e>0?e+2*t:t}Ko.useIntegerZoom=!0;const Go=mi([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"},{name:\"a_pixeloffset\",components:4,type:\"Int16\"}],4),Jo=mi([{name:\"a_projected_pos\",components:3,type:\"Float32\"}],4);mi([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4);const Xo=mi([{name:\"a_placed\",components:2,type:\"Uint8\"},{name:\"a_shift\",components:2,type:\"Float32\"}]);mi([{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"}]);const Yo=mi([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4),Ho=mi([{name:\"a_pos\",components:2,type:\"Float32\"},{name:\"a_radius\",components:1,type:\"Float32\"},{name:\"a_flags\",components:2,type:\"Int16\"}],4);function Wo(t,e,r){return t.sections.forEach((t=>{t.text=function(t,e,r){const n=e.layout.get(\"text-transform\").evaluate(r,{});return \"uppercase\"===n?t=t.toLocaleUpperCase():\"lowercase\"===n&&(t=t.toLocaleLowerCase()),Xn.applyArabicShaping&&(t=Xn.applyArabicShaping(t)),t}(t.text,e,r);})),t}mi([{name:\"triangle\",components:3,type:\"Uint16\"}]),mi([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"placedOrientation\"},{type:\"Uint8\",name:\"hidden\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Int16\",name:\"associatedIconIndex\"}]),mi([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Int16\",name:\"rightJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"centerJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"leftJustifiedTextSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedTextSymbolIndex\"},{type:\"Int16\",name:\"placedIconSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedIconSymbolIndex\"},{type:\"Uint16\",name:\"key\"},{type:\"Uint16\",name:\"textBoxStartIndex\"},{type:\"Uint16\",name:\"textBoxEndIndex\"},{type:\"Uint16\",name:\"verticalTextBoxStartIndex\"},{type:\"Uint16\",name:\"verticalTextBoxEndIndex\"},{type:\"Uint16\",name:\"iconBoxStartIndex\"},{type:\"Uint16\",name:\"iconBoxEndIndex\"},{type:\"Uint16\",name:\"verticalIconBoxStartIndex\"},{type:\"Uint16\",name:\"verticalIconBoxEndIndex\"},{type:\"Uint16\",name:\"featureIndex\"},{type:\"Uint16\",name:\"numHorizontalGlyphVertices\"},{type:\"Uint16\",name:\"numVerticalGlyphVertices\"},{type:\"Uint16\",name:\"numIconVertices\"},{type:\"Uint16\",name:\"numVerticalIconVertices\"},{type:\"Uint16\",name:\"useRuntimeCollisionCircles\"},{type:\"Uint32\",name:\"crossTileID\"},{type:\"Float32\",name:\"textBoxScale\"},{type:\"Float32\",components:2,name:\"textOffset\"},{type:\"Float32\",name:\"collisionCircleDiameter\"}]),mi([{type:\"Float32\",name:\"offsetX\"}]),mi([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]);const Qo={\"!\":\"︕\",\"#\":\"#\",$:\"$\",\"%\":\"%\",\"&\":\"&\",\"(\":\"︵\",\")\":\"︶\",\"*\":\"*\",\"+\":\"+\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\"/\":\"/\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\"=\":\"=\",\">\":\"﹀\",\"?\":\"︖\",\"@\":\"@\",\"[\":\"﹇\",\"\\\\\":\"\\",\"]\":\"﹈\",\"^\":\"^\",_:\"︳\",\"`\":\"`\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"~\":\"~\",\"¢\":\"¢\",\"£\":\"£\",\"¥\":\"¥\",\"¦\":\"¦\",\"¬\":\"¬\",\"¯\":\" ̄\",\"–\":\"︲\",\"—\":\"︱\",\"‘\":\"﹃\",\"’\":\"﹄\",\"“\":\"﹁\",\"”\":\"﹂\",\"…\":\"︙\",\"‧\":\"・\",\"₩\":\"₩\",\"、\":\"︑\",\"。\":\"︒\",\"〈\":\"︿\",\"〉\":\"﹀\",\"《\":\"︽\",\"》\":\"︾\",\"「\":\"﹁\",\"」\":\"﹂\",\"『\":\"﹃\",\"』\":\"﹄\",\"【\":\"︻\",\"】\":\"︼\",\"〔\":\"︹\",\"〕\":\"︺\",\"〖\":\"︗\",\"〗\":\"︘\",\"!\":\"︕\",\"(\":\"︵\",\")\":\"︶\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\">\":\"﹀\",\"?\":\"︖\",\"[\":\"﹇\",\"]\":\"﹈\",\"_\":\"︳\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"⦅\":\"︵\",\"⦆\":\"︶\",\"。\":\"︒\",\"「\":\"﹁\",\"」\":\"﹂\"};var tl=24,el=il,rl=function(t,e,r,n,i){var s,a,o=8*i-n-1,l=(1<>1,c=-7,h=r?i-1:0,p=r?-1:1,f=t[e+h];for(h+=p,s=f&(1<<-c)-1,f>>=-c,c+=o;c>0;s=256*s+t[e+h],h+=p,c-=8);for(a=s&(1<<-c)-1,s>>=-c,c+=n;c>0;a=256*a+t[e+h],h+=p,c-=8);if(0===s)s=1-u;else {if(s===l)return a?NaN:1/0*(f?-1:1);a+=Math.pow(2,n),s-=u;}return (f?-1:1)*a*Math.pow(2,s-n)},nl=function(t,e,r,n,i,s){var a,o,l,u=8*s-i-1,c=(1<>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:s-1,d=n?1:-1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,a=c):(a=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-a))<1&&(a--,l*=2),(e+=a+h>=1?p/l:p*Math.pow(2,1-h))*l>=2&&(a++,l/=2),a+h>=c?(o=0,a=c):a+h>=1?(o=(e*l-1)*Math.pow(2,i),a+=h):(o=e*Math.pow(2,h-1)*Math.pow(2,i),a=0));i>=8;t[r+f]=255&o,f+=d,o/=256,i-=8);for(a=a<0;t[r+f]=255&a,f+=d,a/=256,u-=8);t[r+f-d]|=128*y;};function il(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length;}il.Varint=0,il.Fixed64=1,il.Bytes=2,il.Fixed32=5;var sl,al=4294967296,ol=1/al,ll=\"undefined\"==typeof TextDecoder?null:new TextDecoder(\"utf8\");function ul(t){return t.type===il.Bytes?t.readVarint()+t.pos:t.pos+1}function cl(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function hl(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i];}function pl(t,e){for(var r=0;r>>8,t[r+2]=e>>>16,t[r+3]=e>>>24;}function Al(t,e){return (t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}function kl(t,e,r){1===t&&r.readMessage(Sl,e);}function Sl(t,e,r){if(3===t){const{id:t,bitmap:n,width:i,height:s,left:a,top:o,advance:l}=r.readMessage(zl,{});e.push({id:t,bitmap:new ba({width:i+6,height:s+6},n),metrics:{width:i,height:s,left:a,top:o,advance:l}});}}function zl(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint());}function Il(t){let e=0,r=0;for(const n of t)e+=n.w*n.h,r=Math.max(r,n.w);t.sort(((t,e)=>e.h-t.h));const n=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),r),h:1/0}];let i=0,s=0;for(const e of t)for(let t=n.length-1;t>=0;t--){const r=n[t];if(!(e.w>r.w||e.h>r.h)){if(e.x=r.x,e.y=r.y,s=Math.max(s,e.y+e.h),i=Math.max(i,e.x+e.w),e.w===r.w&&e.h===r.h){const e=n.pop();t>3,s=this.pos;this.type=7&n,t(i,e,this),this.pos===s&&this.skip(n);}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=wl(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=Al(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=wl(this.buf,this.pos)+wl(this.buf,this.pos+4)*al;return this.pos+=8,t},readSFixed64:function(){var t=wl(this.buf,this.pos)+Al(this.buf,this.pos+4)*al;return this.pos+=8,t},readFloat:function(){var t=rl(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=rl(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,s=r.buf;if(n=(112&(i=s[r.pos++]))>>4,i<128)return cl(t,n,e);if(n|=(127&(i=s[r.pos++]))<<3,i<128)return cl(t,n,e);if(n|=(127&(i=s[r.pos++]))<<10,i<128)return cl(t,n,e);if(n|=(127&(i=s[r.pos++]))<<17,i<128)return cl(t,n,e);if(n|=(127&(i=s[r.pos++]))<<24,i<128)return cl(t,n,e);if(n|=(1&(i=s[r.pos++]))<<31,i<128)return cl(t,n,e);throw new Error(\"Expected varint not more than 10 bytes\")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&ll?function(t,e,r){return ll.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){for(var n=\"\",i=e;i239?4:l>223?3:l>191?2:1;if(i+c>r)break;1===c?l<128&&(u=l):2===c?128==(192&(s=t[i+1]))&&(u=(31&l)<<6|63&s)<=127&&(u=null):3===c?(a=t[i+2],128==(192&(s=t[i+1]))&&128==(192&a)&&((u=(15&l)<<12|(63&s)<<6|63&a)<=2047||u>=55296&&u<=57343)&&(u=null)):4===c&&(a=t[i+2],o=t[i+3],128==(192&(s=t[i+1]))&&128==(192&a)&&128==(192&o)&&((u=(15&l)<<18|(63&s)<<12|(63&a)<<6|63&o)<=65535||u>=1114112)&&(u=null)),null===u?(u=65533,c=1):u>65535&&(u-=65536,n+=String.fromCharCode(u>>>10&1023|55296),u=56320|1023&u),n+=String.fromCharCode(u),i+=c;}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==il.Bytes)return t.push(this.readVarint(e));var r=ul(this);for(t=t||[];this.pos127;);else if(e===il.Bytes)this.pos=this.readVarint()+this.pos;else if(e===il.Fixed32)this.pos+=4;else {if(e!==il.Fixed64)throw new Error(\"Unimplemented type: \"+e);this.pos+=8;}},writeTag:function(t,e){this.writeVarint(t<<3|e);},realloc:function(t){for(var e=this.length||16;e268435455||t<0?function(t,e){var r,n;if(t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,r.buf[r.pos]=127&(t>>>=7);}(r,0,e),function(t,e){var r=(7&t)<<4;e.buf[e.pos++]|=r|((t>>>=3)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t)))));}(n,e);}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))));},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t);},writeBoolean:function(t){this.writeVarint(Boolean(t));},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,s=0;s55295&&n<57344){if(!i){n>56319||s+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null;}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128);}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&hl(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r;},writeFloat:function(t){this.realloc(4),nl(this.buf,t,this.pos,!0,23,4),this.pos+=4;},writeDouble:function(t){this.realloc(8),nl(this.buf,t,this.pos,!0,52,8),this.pos+=8;},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r=128&&hl(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n;},writeMessage:function(t,e,r){this.writeTag(t,il.Bytes),this.writeRawMessage(e,r);},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,pl,e);},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,fl,e);},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,ml,e);},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,dl,e);},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,yl,e);},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,gl,e);},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,xl,e);},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,vl,e);},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,bl,e);},writeBytesField:function(t,e){this.writeTag(t,il.Bytes),this.writeBytes(e);},writeFixed32Field:function(t,e){this.writeTag(t,il.Fixed32),this.writeFixed32(e);},writeSFixed32Field:function(t,e){this.writeTag(t,il.Fixed32),this.writeSFixed32(e);},writeFixed64Field:function(t,e){this.writeTag(t,il.Fixed64),this.writeFixed64(e);},writeSFixed64Field:function(t,e){this.writeTag(t,il.Fixed64),this.writeSFixed64(e);},writeVarintField:function(t,e){this.writeTag(t,il.Varint),this.writeVarint(e);},writeSVarintField:function(t,e){this.writeTag(t,il.Varint),this.writeSVarint(e);},writeStringField:function(t,e){this.writeTag(t,il.Bytes),this.writeString(e);},writeFloatField:function(t,e){this.writeTag(t,il.Fixed32),this.writeFloat(e);},writeDoubleField:function(t,e){this.writeTag(t,il.Fixed64),this.writeDouble(e);},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e));}};class Ml{constructor(t,{pixelRatio:e,version:r,stretchX:n,stretchY:i,content:s}){this.paddedRect=t,this.pixelRatio=e,this.stretchX=n,this.stretchY=i,this.content=s,this.version=r;}get tl(){return [this.paddedRect.x+1,this.paddedRect.y+1]}get br(){return [this.paddedRect.x+this.paddedRect.w-1,this.paddedRect.y+this.paddedRect.h-1]}get tlbr(){return this.tl.concat(this.br)}get displaySize(){return [(this.paddedRect.w-2)/this.pixelRatio,(this.paddedRect.h-2)/this.pixelRatio]}}class Bl{constructor(t,e){const r={},n={};this.haveRenderCallbacks=[];const i=[];this.addImages(t,r,i),this.addImages(e,n,i);const{w:s,h:a}=Il(i),o=new wa({width:s||1,height:a||1});for(const e in t){const n=t[e],i=r[e].paddedRect;wa.copy(n.data,o,{x:0,y:0},{x:i.x+1,y:i.y+1},n.data);}for(const t in e){const r=e[t],i=n[t].paddedRect,s=i.x+1,a=i.y+1,l=r.data.width,u=r.data.height;wa.copy(r.data,o,{x:0,y:0},{x:s,y:a},r.data),wa.copy(r.data,o,{x:0,y:u-1},{x:s,y:a-1},{width:l,height:1}),wa.copy(r.data,o,{x:0,y:0},{x:s,y:a+u},{width:l,height:1}),wa.copy(r.data,o,{x:l-1,y:0},{x:s-1,y:a},{width:1,height:u}),wa.copy(r.data,o,{x:0,y:0},{x:s+l,y:a},{width:1,height:u});}this.image=o,this.iconPositions=r,this.patternPositions=n;}addImages(t,e,r){for(const n in t){const i=t[n],s={x:0,y:0,w:i.data.width+2,h:i.data.height+2};r.push(s),e[n]=new Ml(s,i),i.hasRenderCallback&&this.haveRenderCallbacks.push(n);}}patchUpdatedImages(t,e){t.dispatchRenderCallbacks(this.haveRenderCallbacks);for(const r in t.updatedImages)this.patchUpdatedImage(this.iconPositions[r],t.getImage(r),e),this.patchUpdatedImage(this.patternPositions[r],t.getImage(r),e);}patchUpdatedImage(t,e,r){if(!t||!e)return;if(t.version===e.version)return;t.version=e.version;const[n,i]=t.tl;r.update(e.data,void 0,{x:n,y:i});}}kn(\"ImagePosition\",Ml),kn(\"ImageAtlas\",Bl),t.WritingMode=void 0,(sl=t.WritingMode||(t.WritingMode={}))[sl.none=0]=\"none\",sl[sl.horizontal=1]=\"horizontal\",sl[sl.vertical=2]=\"vertical\",sl[sl.horizontalOnly=3]=\"horizontalOnly\";const Cl=-17;class Pl{constructor(){this.scale=1,this.fontStack=\"\",this.imageName=null;}static forText(t,e){const r=new Pl;return r.scale=t||1,r.fontStack=e,r}static forImage(t){const e=new Pl;return e.imageName=t,e}}class Vl{constructor(){this.text=\"\",this.sectionIndex=[],this.sections=[],this.imageSectionID=null;}static fromFeature(t,e){const r=new Vl;for(let n=0;n=0&&r>=t&&Fl[this.text.charCodeAt(r)];r--)e--;this.text=this.text.substring(t,e),this.sectionIndex=this.sectionIndex.slice(t,e);}substring(t,e){const r=new Vl;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce(((t,e)=>Math.max(t,this.sections[e].scale)),0)}addTextSection(t,e){this.text+=t.text,this.sections.push(Pl.forText(t.scale,t.fontStack||e));const r=this.sections.length-1;for(let e=0;e=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function El(e,r,n,i,s,a,o,l,u,c,h,p,f,d,y,m){const g=Vl.fromFeature(e,s);let x;p===t.WritingMode.vertical&&g.verticalizePunctuation();const{processBidirectionalText:v,processStyledBidirectionalText:b}=Xn;if(v&&1===g.sections.length){x=[];const t=v(g.toString(),Ol(g,c,a,r,i,d,y));for(const e of t){const t=new Vl;t.text=e,t.sections=g.sections;for(let r=0;r0&&n>_&&(_=n);}else {const t=n[y.fontStack],e=t&&t[g];if(e&&e.rect)A=e.rect,b=e.metrics;else {const t=r[y.fontStack],e=t&&t[g];if(!e)continue;b=e.metrics;}x=(s-y.scale)*tl;}z?(e.verticalizable=!0,w.push({glyph:g,imageName:k,x:f,y:d+x,vertical:z,scale:y.scale,fontStack:y.fontStack,sectionIndex:m,metrics:b,rect:A}),f+=S*y.scale+c):(w.push({glyph:g,imageName:k,x:f,y:d+x,vertical:z,scale:y.scale,fontStack:y.fontStack,sectionIndex:m,metrics:b,rect:A}),f+=b.advance*y.scale+c);}0!==w.length&&(y=Math.max(f-c,y),jl(w,0,w.length-1,g,_)),f=0;const A=a*s+_;b.lineOffset=Math.max(_,l),d+=A,m=Math.max(A,m),++x;}var v;const b=d-Cl,{horizontalAlign:w,verticalAlign:_}=ql(o);((function(t,e,r,n,i,s,a,o,l){const u=(e-r)*i;let c=0;c=s!==a?-o*n-Cl:(-n*l+.5)*a;for(const e of t)for(const t of e.positionedGlyphs)t.x+=u,t.y+=c;}))(e.positionedLines,g,w,_,y,m,a,b,s.length),e.top+=-_*b,e.bottom=e.top+b,e.left+=-w*y,e.right=e.left+y;}(_,r,n,i,x,o,l,u,p,c,f,m),!function(t){for(const e of t)if(0!==e.positionedGlyphs.length)return !1;return !0}(w)&&_}const Fl={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},Tl={10:!0,32:!0,38:!0,40:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0};function Ll(t,e,r,n,i,s){if(e.imageName){const t=n[e.imageName];return t?t.displaySize[0]*e.scale*tl/s+i:0}{const n=r[e.fontStack],s=n&&n[t];return s?s.metrics.advance*e.scale+i:0}}function Dl(t,e,r,n){const i=Math.pow(t-e,2);return n?t=0;let c=0;for(let r=0;r-r/2;){if(a--,a<0)return !1;o-=t[a].dist(s),s=t[a];}o+=t[a].dist(t[a+1]),a++;const l=[];let u=0;for(;on;)u-=l.shift().angleDelta;if(u>i)return !1;a++,o+=e.dist(r);}return !0}function Yl(t){let e=0;for(let r=0;ru){const c=(u-l)/s,h=Se(n.x,i.x,c),p=Se(n.y,i.y,c),f=new Jl(h,p,i.angleTo(n),r);return f._round(),!a||Xl(t,f,o,a,e)?f:void 0}l+=s;}}function tu(t,e,r,n,i,s,a,o,l){const u=Hl(n,s,a),c=Wl(n,i),h=c*a,p=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-h=0&&g=0&&x=0&&p+u<=c){const r=new Jl(g,x,y,e);r._round(),n&&!Xl(t,r,s,n,i)||f.push(r);}}h+=d;}return o||f.length||a||(f=eu(t,h/2,r,n,i,s,a,!0,l)),f}function ru(t,e,r,n,i){const s=[];for(let a=0;a=n&&u.x>=n||(a.x>=n?a=new S(n,a.y+(n-a.x)/(u.x-a.x)*(u.y-a.y))._round():u.x>=n&&(u=new S(n,a.y+(n-a.x)/(u.x-a.x)*(u.y-a.y))._round()),a.y>=i&&u.y>=i||(a.y>=i?a=new S(a.x+(i-a.y)/(u.y-a.y)*(u.x-a.x),i)._round():u.y>=i&&(u=new S(a.x+(i-a.y)/(u.y-a.y)*(u.x-a.x),i)._round()),l&&a.equals(l[l.length-1])||(l=[a],s.push(l)),l.push(u)))));}}return s}function nu(t,e,r,n){const i=[],s=t.image,a=s.pixelRatio,o=s.paddedRect.w-2,l=s.paddedRect.h-2,u=t.right-t.left,c=t.bottom-t.top,h=s.stretchX||[[0,o]],p=s.stretchY||[[0,l]],f=(t,e)=>t+e[1]-e[0],d=h.reduce(f,0),y=p.reduce(f,0),m=o-d,g=l-y;let x=0,v=d,b=0,w=y,_=0,A=m,k=0,z=g;if(s.content&&n){const t=s.content;x=iu(h,0,t[0]),b=iu(p,0,t[1]),v=iu(h,t[0],t[2]),w=iu(p,t[1],t[3]),_=t[0]-x,k=t[1]-b,A=t[2]-t[0]-v,z=t[3]-t[1]-w;}const I=(n,i,o,l)=>{const h=au(n.stretch-x,v,u,t.left),p=ou(n.fixed-_,A,n.stretch,d),f=au(i.stretch-b,w,c,t.top),m=ou(i.fixed-k,z,i.stretch,y),g=au(o.stretch-x,v,u,t.left),I=ou(o.fixed-_,A,o.stretch,d),M=au(l.stretch-b,w,c,t.top),B=ou(l.fixed-k,z,l.stretch,y),C=new S(h,f),P=new S(g,f),V=new S(g,M),E=new S(h,M),F=new S(p/a,m/a),T=new S(I/a,B/a),L=e*Math.PI/180;if(L){const t=Math.sin(L),e=Math.cos(L),r=[e,-t,t,e];C._matMult(r),P._matMult(r),E._matMult(r),V._matMult(r);}const D=n.stretch+n.fixed,$=i.stretch+i.fixed;return {tl:C,tr:P,bl:E,br:V,tex:{x:s.paddedRect.x+1+D,y:s.paddedRect.y+1+$,w:o.stretch+o.fixed-D,h:l.stretch+l.fixed-$},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:F,pixelOffsetBR:T,minFontScaleX:A/a/u,minFontScaleY:z/a/c,isSDF:r}};if(n&&(s.stretchX||s.stretchY)){const t=su(h,m,d),e=su(p,g,y);for(let r=0;r0&&(n=Math.max(10,n),this.circleDiameter=n);}else {let l=s.top*a-o,c=s.bottom*a+o,h=s.left*a-o,p=s.right*a+o;const f=s.collisionPadding;if(f&&(h-=f[0]*a,l-=f[1]*a,p+=f[2]*a,c+=f[3]*a),u){const t=new S(h,l),e=new S(p,l),r=new S(h,c),n=new S(p,c),i=u*Math.PI/180;t._rotate(i),e._rotate(i),r._rotate(i),n._rotate(i),h=Math.min(t.x,e.x,r.x,n.x),p=Math.max(t.x,e.x,r.x,n.x),l=Math.min(t.y,e.y,r.y,n.y),c=Math.max(t.y,e.y,r.y,n.y);}t.emplaceBack(e.x,e.y,h,l,p,c,r,n,i);}this.boxEndIndex=t.length;}}class uu{constructor(t=[],e=cu){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t);}push(t){this.data.push(t),this.length++,this._up(this.length-1);}pop(){if(0===this.length)return;const t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){const{data:e,compare:r}=this,n=e[t];for(;t>0;){const i=t-1>>1,s=e[i];if(r(n,s)>=0)break;e[t]=s,t=i;}e[t]=n;}_down(t){const{data:e,compare:r}=this,n=this.length>>1,i=e[t];for(;t=0)break;e[t]=s,t=n;}e[t]=i;}}function cu(t,e){return te?1:0}function hu(t,e=1,r=!1){let n=1/0,i=1/0,s=-1/0,a=-1/0;const o=t[0];for(let t=0;ts)&&(s=e.x),(!t||e.y>a)&&(a=e.y);}const l=Math.min(s-n,a-i);let u=l/2;const c=new uu([],pu);if(0===l)return new S(n,i);for(let e=n;eh.d||!h.d)&&(h=n,r&&console.log(\"found best %d after %d probes\",Math.round(1e4*n.d)/1e4,p)),n.max-h.d<=e||(u=n.h/2,c.push(new fu(n.p.x-u,n.p.y-u,u,t)),c.push(new fu(n.p.x+u,n.p.y-u,u,t)),c.push(new fu(n.p.x-u,n.p.y+u,u,t)),c.push(new fu(n.p.x+u,n.p.y+u,u,t)),p+=4);}return r&&(console.log(`num probes: ${p}`),console.log(`best distance: ${h.d}`)),h.p}function pu(t,e){return e.max-t.max}function fu(t,e,r,n){this.p=new S(t,e),this.h=r,this.d=function(t,e){let r=!1,n=1/0;for(let i=0;it.y!=o.y>t.y&&t.x<(o.x-i.x)*(t.y-i.y)/(o.y-i.y)+i.x&&(r=!r),n=Math.min(n,Qs(t,i,o));}}return (r?1:-1)*Math.sqrt(n)}(this.p,n),this.max=this.d+this.h*Math.SQRT2;}const du=Number.POSITIVE_INFINITY;function yu(t,e){return e[1]!==du?function(t,e,r){let n=0,i=0;switch(e=Math.abs(e),r=Math.abs(r),t){case\"top-right\":case\"top-left\":case\"top\":i=r-7;break;case\"bottom-right\":case\"bottom-left\":case\"bottom\":i=7-r;}switch(t){case\"top-right\":case\"bottom-right\":case\"right\":n=-e;break;case\"top-left\":case\"bottom-left\":case\"left\":n=e;}return [n,i]}(t,e[0],e[1]):function(t,e){let r=0,n=0;e<0&&(e=0);const i=e/Math.sqrt(2);switch(t){case\"top-right\":case\"top-left\":n=i-7;break;case\"bottom-right\":case\"bottom-left\":n=7-i;break;case\"bottom\":n=7-e;break;case\"top\":n=e-7;}switch(t){case\"top-right\":case\"bottom-right\":r=-i;break;case\"top-left\":case\"bottom-left\":r=i;break;case\"left\":r=e;break;case\"right\":r=-e;}return [r,n]}(t,e[0])}function mu(t){switch(t){case\"right\":case\"top-right\":case\"bottom-right\":return \"right\";case\"left\":case\"top-left\":case\"bottom-left\":return \"left\"}return \"center\"}function gu(e,r,n,i,s,a,o,l,u,c,h){let p=a.textMaxSize.evaluate(r,{});void 0===p&&(p=o);const f=e.layers[0].layout,y=f.get(\"icon-offset\").evaluate(r,{},h),m=bu(n.horizontal),g=o/24,x=e.tilePixelRatio*g,v=e.tilePixelRatio*p/24,b=e.tilePixelRatio*l,w=e.tilePixelRatio*f.get(\"symbol-spacing\"),_=f.get(\"text-padding\")*e.tilePixelRatio,A=f.get(\"icon-padding\")*e.tilePixelRatio,k=f.get(\"text-max-angle\")/180*Math.PI,S=\"viewport\"!==f.get(\"text-rotation-alignment\")&&\"point\"!==f.get(\"symbol-placement\"),z=\"map\"===f.get(\"icon-rotation-alignment\")&&\"point\"!==f.get(\"symbol-placement\"),I=f.get(\"symbol-placement\"),M=w/2,B=f.get(\"icon-text-fit\");let C;i&&\"none\"!==B&&(e.allowVerticalPlacement&&n.vertical&&(C=Kl(i,n.vertical,B,f.get(\"icon-text-fit-padding\"),y,g)),m&&(i=Kl(i,m,B,f.get(\"icon-text-fit-padding\"),y,g)));const P=(l,p)=>{p.x<0||p.x>=Rs||p.y<0||p.y>=Rs||function(e,r,n,i,s,a,o,l,u,c,h,p,f,y,m,g,x,v,b,w,_,A,k,S,z){const I=e.addToLineVertexArray(r,n);let M,B,C,P,V=0,E=0,F=0,T=0,L=-1,D=-1;const $={};let R=vs(\"\"),U=0,O=0;if(void 0===l._unevaluatedLayout.getValue(\"text-radial-offset\")?[U,O]=l.layout.get(\"text-offset\").evaluate(_,{},S).map((t=>t*tl)):(U=l.layout.get(\"text-radial-offset\").evaluate(_,{},S)*tl,O=du),e.allowVerticalPlacement&&i.vertical){const t=l.layout.get(\"text-rotate\").evaluate(_,{},S)+90;C=new lu(u,r,c,h,p,i.vertical,f,y,m,t),o&&(P=new lu(u,r,c,h,p,o,x,v,m,t));}if(s){const n=l.layout.get(\"icon-rotate\").evaluate(_,{}),i=\"none\"!==l.layout.get(\"icon-text-fit\"),a=nu(s,n,k,i),f=o?nu(o,n,k,i):void 0;B=new lu(u,r,c,h,p,s,x,v,!1,n),V=4*a.length;const y=e.iconSizeData;let m=null;\"source\"===y.kind?(m=[Zl*l.layout.get(\"icon-size\").evaluate(_,{})],m[0]>xu&&d(`${e.layerIds[0]}: Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".`)):\"composite\"===y.kind&&(m=[Zl*A.compositeIconSizes[0].evaluate(_,{},S),Zl*A.compositeIconSizes[1].evaluate(_,{},S)],(m[0]>xu||m[1]>xu)&&d(`${e.layerIds[0]}: Value for \"icon-size\" is >= 255. Reduce your \"icon-size\".`)),e.addSymbols(e.icon,a,m,w,b,_,t.WritingMode.none,r,I.lineStartIndex,I.lineLength,-1,S),L=e.icon.placedSymbolArray.length-1,f&&(E=4*f.length,e.addSymbols(e.icon,f,m,w,b,_,t.WritingMode.vertical,r,I.lineStartIndex,I.lineLength,-1,S),D=e.icon.placedSymbolArray.length-1);}const q=Object.keys(i.horizontal);for(const n of q){const s=i.horizontal[n];if(!M){R=vs(s.text);const t=l.layout.get(\"text-rotate\").evaluate(_,{},S);M=new lu(u,r,c,h,p,s,f,y,m,t);}const o=1===s.positionedLines.length;if(F+=vu(e,r,s,a,l,m,_,g,I,i.vertical?t.WritingMode.horizontal:t.WritingMode.horizontalOnly,o?q:[n],$,L,A,S),o)break}i.vertical&&(T+=vu(e,r,i.vertical,a,l,m,_,g,I,t.WritingMode.vertical,[\"vertical\"],$,D,A,S));const j=M?M.boxStartIndex:e.collisionBoxArray.length,N=M?M.boxEndIndex:e.collisionBoxArray.length,K=C?C.boxStartIndex:e.collisionBoxArray.length,Z=C?C.boxEndIndex:e.collisionBoxArray.length,G=B?B.boxStartIndex:e.collisionBoxArray.length,J=B?B.boxEndIndex:e.collisionBoxArray.length,X=P?P.boxStartIndex:e.collisionBoxArray.length,Y=P?P.boxEndIndex:e.collisionBoxArray.length;let H=-1;const W=(t,e)=>t&&t.circleDiameter?Math.max(t.circleDiameter,e):e;H=W(M,H),H=W(C,H),H=W(B,H),H=W(P,H);const Q=H>-1?1:0;Q&&(H*=z/tl),e.glyphOffsetArray.length>=Bu.MAX_GLYPHS&&d(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\"),void 0!==_.sortKey&&e.addToSortKeyRanges(e.symbolInstances.length,_.sortKey),e.symbolInstances.emplaceBack(r.x,r.y,$.right>=0?$.right:-1,$.center>=0?$.center:-1,$.left>=0?$.left:-1,$.vertical||-1,L,D,R,j,N,K,Z,G,J,X,Y,c,F,T,V,E,Q,0,f,U,O,H);}(e,p,l,n,i,s,C,e.layers[0],e.collisionBoxArray,r.index,r.sourceLayerIndex,e.index,x,_,S,u,b,A,z,y,r,a,c,h,o);};if(\"line\"===I)for(const t of ru(r.geometry,0,0,Rs,Rs)){const r=tu(t,w,k,n.vertical||m,i,24,v,e.overscaling,Rs);for(const n of r){const r=m;r&&wu(e,r.text,M,n)||P(t,n);}}else if(\"line-center\"===I){for(const t of r.geometry)if(t.length>1){const e=Ql(t,k,n.vertical||m,i,24,v);e&&P(t,e);}}else if(\"Polygon\"===r.type)for(const t of io(r.geometry,0)){const e=hu(t,16);P(t[0],new Jl(e.x,e.y,0));}else if(\"LineString\"===r.type)for(const t of r.geometry)P(t,new Jl(t[0].x,t[0].y,0));else if(\"Point\"===r.type)for(const t of r.geometry)for(const e of t)P([e],new Jl(e.x,e.y,0));}const xu=32640;function vu(t,e,r,n,i,s,a,o,l,u,c,h,p,f,y){const m=function(t,e,r,n,i,s,a,o){const l=n.layout.get(\"text-rotate\").evaluate(s,{})*Math.PI/180,u=[];for(const t of e.positionedLines)for(const n of t.positionedGlyphs){if(!n.rect)continue;const s=n.rect||{};let c=4,h=!0,p=1,f=0;const d=(i||o)&&n.vertical,y=n.metrics.advance*n.scale/2;if(o&&e.verticalizable){const e=(n.scale-1)*tl,r=(tl-n.metrics.width*n.scale)/2;f=t.lineOffset/2-(n.imageName?-r:e);}if(n.imageName){const t=a[n.imageName];h=t.sdf,p=t.pixelRatio,c=1/p;}const m=i?[n.x+y,n.y]:[0,0];let g=i?[0,0]:[n.x+y+r[0],n.y+r[1]-f],x=[0,0];d&&(x=g,g=[0,0]);const v=(n.metrics.left-c)*n.scale-y+g[0],b=(-n.metrics.top-c)*n.scale+g[1],w=v+s.w*n.scale/p,_=b+s.h*n.scale/p,A=new S(v,b),k=new S(w,b),z=new S(v,_),I=new S(w,_);if(d){const t=new S(-y,y-Cl),e=-Math.PI/2,r=12-y,i=new S(22-r,-(n.imageName?r:0)),s=new S(...x);A._rotateAround(e,t)._add(i)._add(s),k._rotateAround(e,t)._add(i)._add(s),z._rotateAround(e,t)._add(i)._add(s),I._rotateAround(e,t)._add(i)._add(s);}if(l){const t=Math.sin(l),e=Math.cos(l),r=[e,-t,t,e];A._matMult(r),k._matMult(r),z._matMult(r),I._matMult(r);}const M=new S(0,0),B=new S(0,0);u.push({tl:A,tr:k,bl:z,br:I,tex:s,writingMode:e.writingMode,glyphOffset:m,sectionIndex:n.sectionIndex,isSDF:h,pixelOffsetTL:M,pixelOffsetBR:B,minFontScaleX:0,minFontScaleY:0});}return u}(0,r,o,i,s,a,n,t.allowVerticalPlacement),g=t.textSizeData;let x=null;\"source\"===g.kind?(x=[Zl*i.layout.get(\"text-size\").evaluate(a,{})],x[0]>xu&&d(`${t.layerIds[0]}: Value for \"text-size\" is >= 255. Reduce your \"text-size\".`)):\"composite\"===g.kind&&(x=[Zl*f.compositeTextSizes[0].evaluate(a,{},y),Zl*f.compositeTextSizes[1].evaluate(a,{},y)],(x[0]>xu||x[1]>xu)&&d(`${t.layerIds[0]}: Value for \"text-size\" is >= 255. Reduce your \"text-size\".`)),t.addSymbols(t.text,m,x,o,s,a,u,e,l.lineStartIndex,l.lineLength,p,y);for(const e of c)h[e]=t.text.placedSymbolArray.length-1;return 4*m.length}function bu(t){for(const e in t)return t[e];return null}function wu(t,e,r,n){const i=t.compareText;if(e in i){const t=i[e];for(let e=t.length-1;e>=0;e--)if(n.dist(t[e])t.id)),this.index=e.index,this.pixelRatio=e.pixelRatio,this.sourceLayerIndex=e.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=ua([]),this.placementViewportMatrix=ua([]);const r=this.layers[0]._unevaluatedLayout._values;this.textSizeData=Gl(this.zoom,r[\"text-size\"]),this.iconSizeData=Gl(this.zoom,r[\"icon-size\"]);const n=this.layers[0].layout,i=n.get(\"symbol-sort-key\"),s=n.get(\"symbol-z-order\");this.canOverlap=\"never\"!==Fu(n,\"text-overlap\",\"text-allow-overlap\")||\"never\"!==Fu(n,\"icon-overlap\",\"icon-allow-overlap\")||n.get(\"text-ignore-placement\")||n.get(\"icon-ignore-placement\"),this.sortFeaturesByKey=\"viewport-y\"!==s&&!i.isConstant(),this.sortFeaturesByY=(\"viewport-y\"===s||\"auto\"===s&&!this.sortFeaturesByKey)&&this.canOverlap,\"point\"===n.get(\"symbol-placement\")&&(this.writingModes=n.get(\"text-writing-mode\").map((e=>t.WritingMode[e]))),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id)),this.sourceID=e.sourceID;}createArrays(){this.text=new Iu(new Ls(this.layers,this.zoom,(t=>/^text/.test(t)))),this.icon=new Iu(new Ls(this.layers,this.zoom,(t=>/^icon/.test(t)))),this.glyphOffsetArray=new Zi,this.lineVertexArray=new Gi,this.symbolInstances=new Ki;}calculateGlyphDependencies(t,e,r,n,i){for(let s=0;s0)&&(\"constant\"!==a.value.kind||a.value.value.length>0),c=\"constant\"!==l.value.kind||!!l.value.value||Object.keys(l.parameters).length>0,h=s.get(\"symbol-sort-key\");if(this.features=[],!u&&!c)return;const p=r.iconDependencies,f=r.glyphDependencies,d=r.availableImages,y=new Yn(this.zoom);for(const{feature:r,id:o,index:l,sourceLayerIndex:m}of e){const e=i._featureFilter.needGeometry,g=js(r,e);if(!i._featureFilter.filter(y,g,n))continue;let x,v;if(e||(g.geometry=qs(r)),u){const t=i.getValueAndResolveTokens(\"text-field\",g,n,d),e=Lt.factory(t);zu(e)&&(this.hasRTLText=!0),(!this.hasRTLText||\"unavailable\"===Gn()||this.hasRTLText&&Xn.isParsed())&&(x=Wo(e,i,g));}if(c){const t=i.getValueAndResolveTokens(\"icon-image\",g,n,d);v=t instanceof Dt?t:Dt.fromString(t);}if(!x&&!v)continue;const b=this.sortFeaturesByKey?h.evaluate(g,{},n):void 0;if(this.features.push({id:o,text:x,icon:v,index:l,sourceLayerIndex:m,geometry:g.geometry,properties:r.properties,type:_u[r.type],sortKey:b}),v&&(p[v.name]=!0),x){const e=a.evaluate(g,{},n).join(\",\"),r=\"viewport\"!==s.get(\"text-rotation-alignment\")&&\"point\"!==s.get(\"symbol-placement\");this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(t.WritingMode.vertical)>=0;for(const t of x.sections)if(t.image)p[t.image.name]=!0;else {const n=Cn(x.toString()),i=t.fontStack||e,s=f[i]=f[i]||{};this.calculateGlyphDependencies(t.text,s,r,this.allowVerticalPlacement,n);}}}\"line\"===s.get(\"symbol-placement\")&&(this.features=function(t){const e={},r={},n=[];let i=0;function s(e){n.push(t[e]),i++;}function a(t,e,i){const s=r[t];return delete r[t],r[e]=s,n[s].geometry[0].pop(),n[s].geometry[0]=n[s].geometry[0].concat(i[0]),s}function o(t,r,i){const s=e[r];return delete e[r],e[t]=s,n[s].geometry[0].shift(),n[s].geometry[0]=i[0].concat(n[s].geometry[0]),s}function l(t,e,r){const n=r?e[0][e[0].length-1]:e[0][0];return `${t}:${n.x}:${n.y}`}for(let u=0;ut.geometry))}(this.features)),this.sortFeaturesByKey&&this.features.sort(((t,e)=>t.sortKey-e.sortKey));}update(t,e,r){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(t,e,this.layers,r),this.icon.programConfigurations.updatePaintArrays(t,e,this.layers,r));}isEmpty(){return 0===this.symbolInstances.length&&!this.hasRTLText}uploadPending(){return !this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(t){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(t),this.iconCollisionBox.upload(t)),this.text.upload(t,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(t,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0;}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy();}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData();}addToLineVertexArray(t,e){const r=this.lineVertexArray.length;if(void 0!==t.segment){let r=t.dist(e[t.segment+1]),n=t.dist(e[t.segment]);const i={};for(let n=t.segment+1;n=0;r--)i[r]={x:e[r].x,y:e[r].y,tileUnitDistanceFromAnchor:n},r>0&&(n+=e[r-1].dist(e[r]));for(let t=0;t0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(t,e){const r=t.placedSymbolArray.get(e),n=r.vertexStartIndex+4*r.numGlyphs;for(let e=r.vertexStartIndex;en[t]-n[e]||i[e]-i[t])),s}addToSortKeyRanges(t,e){const r=this.sortKeyRanges[this.sortKeyRanges.length-1];r&&r.sortKey===e?r.symbolInstanceEnd=t+1:this.sortKeyRanges.push({sortKey:e,symbolInstanceStart:t,symbolInstanceEnd:t+1});}sortFeatures(t){if(this.sortFeaturesByY&&this.sortedAngle!==t&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const t of this.symbolInstanceIndexes){const e=this.symbolInstances.get(t);this.featureSortOrder.push(e.featureIndex),[e.rightJustifiedTextSymbolIndex,e.centerJustifiedTextSymbolIndex,e.leftJustifiedTextSymbolIndex].forEach(((t,e,r)=>{t>=0&&r.indexOf(t)===e&&this.addIndicesForPlacedSymbol(this.text,t);})),e.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,e.verticalPlacedTextSymbolIndex),e.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.placedIconSymbolIndex),e.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.verticalPlacedIconSymbolIndex);}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray);}}}kn(\"SymbolBucket\",Bu,{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"]}),Bu.MAX_GLYPHS=65535,Bu.addDynamicAttributes=Su;const Cu=new ci({\"symbol-placement\":new si(nt.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new si(nt.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new si(nt.layout_symbol[\"symbol-avoid-edges\"]),\"symbol-sort-key\":new ai(nt.layout_symbol[\"symbol-sort-key\"]),\"symbol-z-order\":new si(nt.layout_symbol[\"symbol-z-order\"]),\"icon-allow-overlap\":new si(nt.layout_symbol[\"icon-allow-overlap\"]),\"icon-overlap\":new si(nt.layout_symbol[\"icon-overlap\"]),\"icon-ignore-placement\":new si(nt.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new si(nt.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new si(nt.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new ai(nt.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new si(nt.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new si(nt.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new ai(nt.layout_symbol[\"icon-image\"]),\"icon-rotate\":new ai(nt.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new si(nt.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new si(nt.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new ai(nt.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new ai(nt.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new si(nt.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new si(nt.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new si(nt.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new ai(nt.layout_symbol[\"text-field\"]),\"text-font\":new ai(nt.layout_symbol[\"text-font\"]),\"text-size\":new ai(nt.layout_symbol[\"text-size\"]),\"text-max-width\":new ai(nt.layout_symbol[\"text-max-width\"]),\"text-line-height\":new si(nt.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new ai(nt.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new ai(nt.layout_symbol[\"text-justify\"]),\"text-radial-offset\":new ai(nt.layout_symbol[\"text-radial-offset\"]),\"text-variable-anchor\":new si(nt.layout_symbol[\"text-variable-anchor\"]),\"text-anchor\":new ai(nt.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new si(nt.layout_symbol[\"text-max-angle\"]),\"text-writing-mode\":new si(nt.layout_symbol[\"text-writing-mode\"]),\"text-rotate\":new ai(nt.layout_symbol[\"text-rotate\"]),\"text-padding\":new si(nt.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new si(nt.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new ai(nt.layout_symbol[\"text-transform\"]),\"text-offset\":new ai(nt.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new si(nt.layout_symbol[\"text-allow-overlap\"]),\"text-overlap\":new si(nt.layout_symbol[\"text-overlap\"]),\"text-ignore-placement\":new si(nt.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new si(nt.layout_symbol[\"text-optional\"])});var Pu={paint:new ci({\"icon-opacity\":new ai(nt.paint_symbol[\"icon-opacity\"]),\"icon-color\":new ai(nt.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new ai(nt.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new ai(nt.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new ai(nt.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new si(nt.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new si(nt.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new ai(nt.paint_symbol[\"text-opacity\"]),\"text-color\":new ai(nt.paint_symbol[\"text-color\"],{runtimeType:yt,getOverride:t=>t.textColor,hasOverride:t=>!!t.textColor}),\"text-halo-color\":new ai(nt.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new ai(nt.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new ai(nt.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new si(nt.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new si(nt.paint_symbol[\"text-translate-anchor\"])}),layout:Cu};class Vu{constructor(t){this.type=t.property.overrides?t.property.overrides.runtimeType:ht,this.defaultValue=t;}evaluate(t){if(t.formattedSection){const e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default}eachChild(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression);}outputDefined(){return !1}serialize(){return null}}kn(\"FormatSectionOverride\",Vu,{omit:[\"defaultValue\"]});class Eu extends pi{constructor(t){super(t,Pu);}recalculate(t,e){if(super.recalculate(t,e),\"auto\"===this.layout.get(\"icon-rotation-alignment\")&&(this.layout._values[\"icon-rotation-alignment\"]=\"point\"!==this.layout.get(\"symbol-placement\")?\"map\":\"viewport\"),\"auto\"===this.layout.get(\"text-rotation-alignment\")&&(this.layout._values[\"text-rotation-alignment\"]=\"point\"!==this.layout.get(\"symbol-placement\")?\"map\":\"viewport\"),\"auto\"===this.layout.get(\"text-pitch-alignment\")&&(this.layout._values[\"text-pitch-alignment\"]=\"map\"===this.layout.get(\"text-rotation-alignment\")?\"map\":\"viewport\"),\"auto\"===this.layout.get(\"icon-pitch-alignment\")&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\")),\"point\"===this.layout.get(\"symbol-placement\")){const t=this.layout.get(\"text-writing-mode\");if(t){const e=[];for(const r of t)e.indexOf(r)<0&&e.push(r);this.layout._values[\"text-writing-mode\"]=e;}else this.layout._values[\"text-writing-mode\"]=[\"horizontal\"];}this._setPaintOverrides();}getValueAndResolveTokens(t,e,r,n){const i=this.layout.get(t).evaluate(e,{},r,n),s=this._unevaluatedLayout._values[t];return s.isDataDriven()||Pr(s.value)||!i?i:function(t,e){return e.replace(/{([^{}]+)}/g,((e,r)=>r in t?String(t[r]):\"\"))}(e.properties,i)}createBucket(t){return new Bu(t)}queryRadius(){return 0}queryIntersectsFeature(){return !1}_setPaintOverrides(){for(const t of Pu.paint.overridableProperties){if(!Eu.hasPaintOverride(this.layout,t))continue;const e=this.paint.get(t),r=new Vu(e),n=new Cr(r,e.property.specification);let i=null;i=\"constant\"===e.value.kind||\"source\"===e.value.kind?new Er(\"source\",n):new Fr(\"composite\",n,e.value.zoomStops,e.value._interpolationType),this.paint._values[t]=new ni(e.property,i,e.parameters);}}_handleOverridablePaintPropertyUpdate(t,e,r){return !(!this.layout||e.isDataDriven()||r.isDataDriven())&&Eu.hasPaintOverride(this.layout,t)}static hasPaintOverride(t,e){const r=t.get(\"text-field\"),n=Pu.paint.properties[e];let i=!1;const s=t=>{for(const e of t)if(n.overrides&&n.overrides.hasOverride(e))return void(i=!0)};if(\"constant\"===r.value.kind&&r.value.value instanceof Lt)s(r.value.value.sections);else if(\"source\"===r.value.kind){const t=e=>{i||(e instanceof qt&&Ut(e.value)===vt?s(e.value.sections):e instanceof Zt?s(e.sections):e.eachChild(t));},e=r.value;e._styleExpression&&t(e._styleExpression.expression);}return i}}function Fu(t,e,r){let n=\"never\";const i=t.get(e);return i?n=i:t.get(r)&&(n=\"always\"),n}var Tu={paint:new ci({\"background-color\":new si(nt.paint_background[\"background-color\"]),\"background-pattern\":new li(nt.paint_background[\"background-pattern\"]),\"background-opacity\":new si(nt.paint_background[\"background-opacity\"])})},Lu={paint:new ci({\"raster-opacity\":new si(nt.paint_raster[\"raster-opacity\"]),\"raster-hue-rotate\":new si(nt.paint_raster[\"raster-hue-rotate\"]),\"raster-brightness-min\":new si(nt.paint_raster[\"raster-brightness-min\"]),\"raster-brightness-max\":new si(nt.paint_raster[\"raster-brightness-max\"]),\"raster-saturation\":new si(nt.paint_raster[\"raster-saturation\"]),\"raster-contrast\":new si(nt.paint_raster[\"raster-contrast\"]),\"raster-resampling\":new si(nt.paint_raster[\"raster-resampling\"]),\"raster-fade-duration\":new si(nt.paint_raster[\"raster-fade-duration\"])})};class Du extends pi{constructor(t){super(t,{}),this.onAdd=t=>{this.implementation.onAdd&&this.implementation.onAdd(t,t.painter.context.gl);},this.onRemove=t=>{this.implementation.onRemove&&this.implementation.onRemove(t,t.painter.context.gl);},this.implementation=t;}is3D(){return \"3d\"===this.implementation.renderingMode}hasOffscreenPass(){return void 0!==this.implementation.prerender}recalculate(){}updateTransitions(){}hasTransition(){return !1}serialize(){}}const $u={circle:class extends pi{constructor(t){super(t,oa);}createBucket(t){return new Ks(t)}queryRadius(t){const e=t;return na(\"circle-radius\",this,e)+na(\"circle-stroke-width\",this,e)+ia(this.paint.get(\"circle-translate\"))}queryIntersectsFeature(t,e,r,n,i,s,a,o){const l=sa(t,this.paint.get(\"circle-translate\"),this.paint.get(\"circle-translate-anchor\"),s.angle,a),u=this.paint.get(\"circle-radius\").evaluate(e,r)+this.paint.get(\"circle-stroke-width\").evaluate(e,r),c=\"map\"===this.paint.get(\"circle-pitch-alignment\"),h=c?l:function(t,e){return t.map((t=>da(t,e)))}(l,o),p=c?u*a:u;for(const t of n)for(const e of t){const t=c?e:da(e,o);let r=p;const n=fa([],[e.x,e.y,0,1],o);if(\"viewport\"===this.paint.get(\"circle-pitch-scale\")&&\"map\"===this.paint.get(\"circle-pitch-alignment\")?r*=n[3]/s.cameraToCenterDistance:\"map\"===this.paint.get(\"circle-pitch-scale\")&&\"viewport\"===this.paint.get(\"circle-pitch-alignment\")&&(r*=s.cameraToCenterDistance/n[3]),Gs(h,t,r))return !0}return !1}},heatmap:class extends pi{constructor(t){super(t,ma),this._updateColorRamp();}createBucket(t){return new ya(t)}_handleSpecialPaintPropertyUpdate(t){\"heatmap-color\"===t&&this._updateColorRamp();}_updateColorRamp(){this.colorRamp=_a({expression:this._transitionablePaint._values[\"heatmap-color\"].value.expression,evaluationKey:\"heatmapDensity\",image:this.colorRamp}),this.colorRampTexture=null;}resize(){this.heatmapFbo&&(this.heatmapFbo.destroy(),this.heatmapFbo=null);}queryRadius(){return 0}queryIntersectsFeature(){return !1}hasOffscreenPass(){return 0!==this.paint.get(\"heatmap-opacity\")&&\"none\"!==this.visibility}},hillshade:class extends pi{constructor(t){super(t,Aa);}hasOffscreenPass(){return 0!==this.paint.get(\"hillshade-exaggeration\")&&\"none\"!==this.visibility}},fill:class extends pi{constructor(t){super(t,co);}recalculate(t,e){super.recalculate(t,e);const r=this.paint._values[\"fill-outline-color\"];\"constant\"===r.value.kind&&void 0===r.value.value&&(this.paint._values[\"fill-outline-color\"]=this.paint._values[\"fill-color\"]);}createBucket(t){return new lo(t)}queryRadius(){return ia(this.paint.get(\"fill-translate\"))}queryIntersectsFeature(t,e,r,n,i,s,a){return Js(sa(t,this.paint.get(\"fill-translate\"),this.paint.get(\"fill-translate-anchor\"),s.angle,a),n)}isTileClipped(){return !0}},\"fill-extrusion\":class extends pi{constructor(t){super(t,Vo);}createBucket(t){return new Bo(t)}queryRadius(){return ia(this.paint.get(\"fill-extrusion-translate\"))}is3D(){return !0}queryIntersectsFeature(t,e,r,n,i,s,a,o){const l=sa(t,this.paint.get(\"fill-extrusion-translate\"),this.paint.get(\"fill-extrusion-translate-anchor\"),s.angle,a),u=this.paint.get(\"fill-extrusion-height\").evaluate(e,r),c=this.paint.get(\"fill-extrusion-base\").evaluate(e,r),h=function(t,e,r,n){const i=[];for(const r of t){const t=[r.x,r.y,0,1];fa(t,t,e),i.push(new S(t[0]/t[3],t[1]/t[3]));}return i}(l,o),p=function(t,e,r,n){const i=[],s=[],a=n[8]*e,o=n[9]*e,l=n[10]*e,u=n[11]*e,c=n[8]*r,h=n[9]*r,p=n[10]*r,f=n[11]*r;for(const e of t){const t=[],r=[];for(const i of e){const e=i.x,s=i.y,d=n[0]*e+n[4]*s+n[12],y=n[1]*e+n[5]*s+n[13],m=n[2]*e+n[6]*s+n[14],g=n[3]*e+n[7]*s+n[15],x=m+l,v=g+u,b=d+c,w=y+h,_=m+p,A=g+f,k=new S((d+a)/v,(y+o)/v);k.z=x/v,t.push(k);const z=new S(b/A,w/A);z.z=_/A,r.push(z);}i.push(t),s.push(r);}return [i,s]}(n,c,u,o);return function(t,e,r){let n=1/0;Js(r,e)&&(n=Fo(r,e[0]));for(let i=0;i=3)for(let e=0;e{this._triggered=!1,this._callback();});}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout((()=>{this._triggered=!1,this._callback();}),0));}remove(){delete this._channel,this._callback=()=>{};}}const Uu=6371008.8;class Ou{constructor(t,e){if(isNaN(t)||isNaN(e))throw new Error(`Invalid LngLat object: (${t}, ${e})`);if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")}wrap(){return new Ou(a(this.lng,-180,180),this.lat)}toArray(){return [this.lng,this.lat]}toString(){return `LngLat(${this.lng}, ${this.lat})`}distanceTo(t){const e=Math.PI/180,r=this.lat*e,n=t.lat*e,i=Math.sin(r)*Math.sin(n)+Math.cos(r)*Math.cos(n)*Math.cos((t.lng-this.lng)*e);return Uu*Math.acos(Math.min(i,1))}toBounds(t=0){const e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat);return new qu(new Ou(this.lng-r,this.lat-e),new Ou(this.lng+r,this.lat+e))}static convert(t){if(t instanceof Ou)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new Ou(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new Ou(Number(\"lng\"in t?t.lng:t.lon),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]\")}}class qu{constructor(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]));}setNorthEast(t){return this._ne=t instanceof Ou?new Ou(t.lng,t.lat):Ou.convert(t),this}setSouthWest(t){return this._sw=t instanceof Ou?new Ou(t.lng,t.lat):Ou.convert(t),this}extend(t){const e=this._sw,r=this._ne;let n,i;if(t instanceof Ou)n=t,i=t;else {if(!(t instanceof qu))return Array.isArray(t)?4===t.length||t.every(Array.isArray)?this.extend(qu.convert(t)):this.extend(Ou.convert(t)):this;if(n=t._sw,i=t._ne,!n||!i)return this}return e||r?(e.lng=Math.min(n.lng,e.lng),e.lat=Math.min(n.lat,e.lat),r.lng=Math.max(i.lng,r.lng),r.lat=Math.max(i.lat,r.lat)):(this._sw=new Ou(n.lng,n.lat),this._ne=new Ou(i.lng,i.lat)),this}getCenter(){return new Ou((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new Ou(this.getWest(),this.getNorth())}getSouthEast(){return new Ou(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return [this._sw.toArray(),this._ne.toArray()]}toString(){return `LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return !(this._sw&&this._ne)}contains(t){const{lng:e,lat:r}=Ou.convert(t);let n=this._sw.lng<=e&&e<=this._ne.lng;return this._sw.lng>this._ne.lng&&(n=this._sw.lng>=e&&e>=this._ne.lng),this._sw.lat<=r&&r<=this._ne.lat&&n}static convert(t){return t instanceof qu?t:t?new qu(t):t}}const ju=2*Math.PI*Uu;function Nu(t){return ju*Math.cos(t*Math.PI/180)}function Ku(t){return (180+t)/360}function Zu(t){return (180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function Gu(t,e){return t/Nu(e)}function Ju(t){return 360/Math.PI*Math.atan(Math.exp((180-360*t)*Math.PI/180))-90}class Xu{constructor(t,e,r=0){this.x=+t,this.y=+e,this.z=+r;}static fromLngLat(t,e=0){const r=Ou.convert(t);return new Xu(Ku(r.lng),Zu(r.lat),Gu(e,r.lat))}toLngLat(){return new Ou(360*this.x-180,Ju(this.y))}toAltitude(){return this.z*Nu(Ju(this.y))}meterInMercatorCoordinateUnits(){return 1/ju*(t=Ju(this.y),1/Math.cos(t*Math.PI/180));var t;}}function Yu(t,e,r){var n=2*Math.PI*6378137/256/Math.pow(2,r);return [t*n-2*Math.PI*6378137/2,e*n-2*Math.PI*6378137/2]}class Hu{constructor(t,e,r){this.z=t,this.x=e,this.y=r,this.key=tc(0,t,t,e,r);}equals(t){return this.z===t.z&&this.x===t.x&&this.y===t.y}url(t,e,r){const n=(s=this.y,a=this.z,o=Yu(256*(i=this.x),256*(s=Math.pow(2,a)-s-1),a),l=Yu(256*(i+1),256*(s+1),a),o[0]+\",\"+o[1]+\",\"+l[0]+\",\"+l[1]);var i,s,a,o,l;const u=function(t,e,r){let n,i=\"\";for(let s=t;s>0;s--)n=1<1?\"@2x\":\"\").replace(/{quadkey}/g,u).replace(/{bbox-epsg-3857}/g,n)}getTilePoint(t){const e=Math.pow(2,this.z);return new S((t.x*e-this.x)*Rs,(t.y*e-this.y)*Rs)}toString(){return `${this.z}/${this.x}/${this.y}`}}class Wu{constructor(t,e){this.wrap=t,this.canonical=e,this.key=tc(t,e.z,e.z,e.x,e.y);}}class Qu{constructor(t,e,r,n,i){this.overscaledZ=t,this.wrap=e,this.canonical=new Hu(r,+n,+i),this.key=tc(e,t,r,n,i);}equals(t){return this.overscaledZ===t.overscaledZ&&this.wrap===t.wrap&&this.canonical.equals(t.canonical)}scaledTo(t){const e=this.canonical.z-t;return t>this.canonical.z?new Qu(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Qu(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)}calculateScaledKey(t,e){const r=this.canonical.z-t;return t>this.canonical.z?tc(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):tc(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)}isChildOf(t){if(t.wrap!==this.wrap)return !1;const e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ>e&&t.canonical.y===this.canonical.y>>e}children(t){if(this.overscaledZ>=t)return [new Qu(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return [new Qu(e,this.wrap,e,r,n),new Qu(e,this.wrap,e,r+1,n),new Qu(e,this.wrap,e,r,n+1),new Qu(e,this.wrap,e,r+1,n+1)]}isLessThan(t){return this.wrapt.wrap)&&(this.overscaledZt.overscaledZ)&&(this.canonical.xt.canonical.x)&&this.canonical.y=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError(\"out of range source coordinates for DEM data\");return (e+1)*this.stride+(t+1)}_unpackMapbox(t,e,r){return (256*t*256+256*e+r)/10-1e4}_unpackTerrarium(t,e,r){return 256*t+e+r/256-32768}getPixels(){return new wa({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(t,e,r){if(this.dim!==t.dim)throw new Error(\"dem dimension mismatch\");let n=e*this.dim,i=e*this.dim+this.dim,s=r*this.dim,a=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1;}switch(r){case-1:s=a-1;break;case 1:a=s+1;}const o=-e*this.dim,l=-r*this.dim;for(let e=s;e=0&&n[3]>=0&&o.insert(a,n[0],n[1],n[2],n[3]);}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new fo.VectorTile(new el(this.rawTileData)).layers,this.sourceLayerCoder=new rc(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"])),this.vtLayers}query(t,e,r,n){this.loadVTLayers();const i=t.params||{},s=Rs/t.tileSize/t.scale,a=Zr(i.filter),o=t.queryGeometry,l=t.queryPadding*s,u=ac(o),c=this.grid.query(u.minX-l,u.minY-l,u.maxX+l,u.maxY+l),h=ac(t.cameraQueryGeometry),p=this.grid3D.query(h.minX-l,h.minY-l,h.maxX+l,h.maxY+l,((e,r,n,i)=>function(t,e,r,n,i){for(const s of t)if(e<=s.x&&r<=s.y&&n>=s.x&&i>=s.y)return !0;const s=[new S(e,r),new S(e,i),new S(n,i),new S(n,r)];if(t.length>2)for(const e of s)if(ea(t,e))return !0;for(let e=0;e(p||(p=qs(e)),r.queryIntersectsFeature(o,e,n,p,this.z,t.transform,s,t.pixelPosMatrix))));}return f}loadMatchingFeature(t,e,r,n,i,s,a,l,u,c,h){const p=this.bucketLayerIDs[e];if(s&&!function(t,e){for(let r=0;r=0)return !0;return !1}(s,p))return;const f=this.sourceLayerCoder.decode(r),d=this.vtLayers[f].feature(n);if(i.needGeometry){const t=js(d,!0);if(!i.filter(new Yn(this.tileID.overscaledZ),t,this.tileID.canonical))return}else if(!i.filter(new Yn(this.tileID.overscaledZ),d))return;const y=this.getId(d,f);for(let e=0;e{const a=e instanceof ii?e.get(s):null;return a&&a.evaluate?a.evaluate(r,n,i):a}))}function ac(t){let e=1/0,r=1/0,n=-1/0,i=-1/0;for(const s of t)e=Math.min(e,s.x),r=Math.min(r,s.y),n=Math.max(n,s.x),i=Math.max(i,s.y);return {minX:e,minY:r,maxX:n,maxY:i}}function oc(t,e){return e-t}var lc;kn(\"FeatureIndex\",ic,{omit:[\"rawTileData\",\"sourceLayerCoder\"]}),t.PerformanceMarkers=void 0,(lc=t.PerformanceMarkers||(t.PerformanceMarkers={})).create=\"create\",lc.load=\"load\",lc.fullLoad=\"fullLoad\";let uc=null,cc=[];const hc=1e3/30,pc={mark(t){performance.mark(t);},frame(t){const e=t;null!=uc&&cc.push(e-uc),uc=e;},clearMetrics(){uc=null,cc=[],performance.clearMeasures(\"loadTime\"),performance.clearMeasures(\"fullLoadTime\");for(const e in t.PerformanceMarkers)performance.clearMarks(t.PerformanceMarkers[e]);},getPerformanceMetrics(){performance.measure(\"loadTime\",t.PerformanceMarkers.create,t.PerformanceMarkers.load),performance.measure(\"fullLoadTime\",t.PerformanceMarkers.create,t.PerformanceMarkers.fullLoad);const e=performance.getEntriesByName(\"loadTime\")[0].duration,r=performance.getEntriesByName(\"fullLoadTime\")[0].duration,n=cc.length,i=1/(cc.reduce(((t,e)=>t+e),0)/n/1e3),s=cc.filter((t=>t>hc)).reduce(((t,e)=>t+(e-hc)/hc),0);return {loadTime:e,fullLoadTime:r,fps:i,percentDroppedFrames:s/(n+s)*100}}};t.AJAXError=q,t.ARRAY_TYPE=la,t.Actor=class{constructor(t,e,r){this.target=t,this.parent=e,this.mapId=r,this.callbacks={},this.tasks={},this.taskQueue=[],this.cancelCallbacks={},u([\"receive\",\"process\"],this),this.invoker=new Ru(this.process),this.target.addEventListener(\"message\",this.receive,!1),this.globalScope=g()?t:window;}send(t,e,r,n,i=!1){const s=Math.round(1e18*Math.random()).toString(36).substring(0,10);r&&(this.callbacks[s]=r);const a=_(this.globalScope)?void 0:[];return this.target.postMessage({id:s,type:t,hasCallback:!!r,targetMapId:n,mustQueue:i,sourceMapId:this.mapId,data:zn(e,a)},a),{cancel:()=>{r&&delete this.callbacks[s],this.target.postMessage({id:s,type:\"\",targetMapId:n,sourceMapId:this.mapId});}}}receive(t){const e=t.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if(\"\"===e.type){delete this.tasks[r];const t=this.cancelCallbacks[r];delete this.cancelCallbacks[r],t&&t();}else g()||e.mustQueue?(this.tasks[r]=e,this.taskQueue.push(r),this.invoker.trigger()):this.processTask(r,e);}process(){if(!this.taskQueue.length)return;const t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length&&this.invoker.trigger(),e&&this.processTask(t,e);}processTask(t,e){if(\"\"===e.type){const r=this.callbacks[t];delete this.callbacks[t],r&&(e.error?r(In(e.error)):r(null,In(e.data)));}else {let r=!1;const n=_(this.globalScope)?void 0:[],i=e.hasCallback?(e,i)=>{r=!0,delete this.cancelCallbacks[t],this.target.postMessage({id:t,type:\"\",sourceMapId:this.mapId,error:e?zn(e):null,data:zn(i,n)},n);}:t=>{r=!0;};let s=null;const a=In(e.data);if(this.parent[e.type])s=this.parent[e.type](e.sourceMapId,a,i);else if(this.parent.getWorkerSource){const t=e.type.split(\".\");s=this.parent.getWorkerSource(e.sourceMapId,t[0],a.source)[t[1]](a,i);}else i(new Error(`Could not find function ${e.type}`));!r&&s&&s.cancel&&(this.cancelCallbacks[t]=s.cancel);}}remove(){this.invoker.remove(),this.target.removeEventListener(\"message\",this.receive,!1);}},t.AlphaImage=ba,t.CanonicalTileID=Hu,t.CollisionBoxArray=Oi,t.CollisionCircleLayoutArray=class extends Bi{},t.Color=Et,t.DEMData=ec,t.DataConstantProperty=si,t.DictionaryCoder=rc,t.EXTENT=Rs,t.ErrorEvent=et,t.EvaluationParameters=Yn,t.Event=tt,t.Evented=rt,t.FeatureIndex=ic,t.FillBucket=lo,t.FillExtrusionBucket=Bo,t.GeoJSONFeature=nc,t.ImageAtlas=Bl,t.ImagePosition=Ml,t.LineBucket=qo,t.LineStripIndexArray=class extends $i{},t.LngLat=Ou,t.LngLatBounds=qu,t.MercatorCoordinate=Xu,t.ONE_EM=tl,t.OverscaledTileID=Qu,t.PerformanceUtils=pc,t.PosArray=class extends xi{},t.Properties=ci,t.QuadTriangleArray=class extends Pi{},t.RGBAImage=wa,t.RasterBoundsArray=class extends vi{},t.RequestPerformance=class{constructor(t){this._marks={start:[t.url,\"start\"].join(\"#\"),end:[t.url,\"end\"].join(\"#\"),measure:t.url.toString()},performance.mark(this._marks.start);}finish(){performance.mark(this._marks.end);let t=performance.getEntriesByName(this._marks.measure);return 0===t.length&&(performance.measure(this._marks.measure,this._marks.start,this._marks.end),t=performance.getEntriesByName(this._marks.measure),performance.clearMarks(this._marks.start),performance.clearMarks(this._marks.end),performance.clearMeasures(this._marks.measure)),t}},t.ResourceType=O,t.SegmentVector=hs,t.SymbolBucket=Bu,t.Transitionable=Qn,t.TriangleIndexArray=os,t.Uniform1f=Ss,t.Uniform1i=class extends ks{constructor(t,e){super(t,e),this.current=0;}set(t){this.current!==t&&(this.current=t,this.gl.uniform1i(this.location,t));}},t.Uniform2f=class extends ks{constructor(t,e){super(t,e),this.current=[0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]||(this.current=t,this.gl.uniform2f(this.location,t[0],t[1]));}},t.Uniform3f=class extends ks{constructor(t,e){super(t,e),this.current=[0,0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]||(this.current=t,this.gl.uniform3f(this.location,t[0],t[1],t[2]));}},t.Uniform4f=zs,t.UniformColor=Is,t.UniformMatrix4f=class extends ks{constructor(t,e){super(t,e),this.current=Ms;}set(t){if(t[12]!==this.current[12]||t[0]!==this.current[0])return this.current=t,void this.gl.uniformMatrix4fv(this.location,!1,t);for(let e=1;e<16;e++)if(t[e]!==this.current[e]){this.current=t,this.gl.uniformMatrix4fv(this.location,!1,t);break}}},t.UnwrappedTileID=Wu,t.ValidationError=it,t.ZoomHistory=Mn,t.addDynamicAttributes=Su,t.asyncAll=function(t,e,r){if(!t.length)return r(null,[]);let n=t.length;const i=new Array(t.length);let s=null;t.forEach(((t,a)=>{e(t,((t,e)=>{t&&(s=t),i[a]=e,0==--n&&r(s,i);}));}));},t.bezier=n,t.bindAll=u,t.cacheEntryPossiblyAdded=function(t){F++,F>V&&(t.getActor().send(\"enforceCacheSizeLimit\",P),F=0);},t.clamp=s,t.clearTileCache=function(t){const e=caches.delete(M);t&&e.catch(t).then((()=>t()));},t.clipLine=ru,t.clone=function(t){var e=new la(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.clone$1=p,t.collisionCircleLayout=Ho,t.config=I,t.create=function(){var t=new la(16);return la!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t.createExpression=Vr,t.createFilter=Zr,t.createLayout=mi,t.createStyleLayer=function(t){return \"custom\"===t.type?new Du(t):new $u[t.type](t)},t.dot=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]},t.ease=i,t.emitValidationErrors=wn,t.enforceCacheSizeLimit=function(t){E(),B&&B.then((e=>{e.keys().then((r=>{for(let n=0;n{}}},t.identity=ua,t.invert=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],l=e[6],u=e[7],c=e[8],h=e[9],p=e[10],f=e[11],d=e[12],y=e[13],m=e[14],g=e[15],x=r*o-n*a,v=r*l-i*a,b=r*u-s*a,w=n*l-i*o,_=n*u-s*o,A=i*u-s*l,k=c*y-h*d,S=c*m-p*d,z=c*g-f*d,I=h*m-p*y,M=h*g-f*y,B=p*g-f*m,C=x*B-v*M+b*I+w*z-_*S+A*k;return C?(t[0]=(o*B-l*M+u*I)*(C=1/C),t[1]=(i*M-n*B-s*I)*C,t[2]=(y*A-m*_+g*w)*C,t[3]=(p*_-h*A-f*w)*C,t[4]=(l*z-a*B-u*S)*C,t[5]=(r*B-i*z+s*S)*C,t[6]=(m*b-d*A-g*v)*C,t[7]=(c*A-p*b+f*v)*C,t[8]=(a*M-o*z+u*k)*C,t[9]=(n*z-r*M-s*k)*C,t[10]=(d*_-y*b+g*x)*C,t[11]=(h*b-c*_-f*x)*C,t[12]=(o*S-a*I-l*k)*C,t[13]=(r*I-n*S+i*k)*C,t[14]=(y*v-d*w-m*x)*C,t[15]=(c*w-h*v+p*x)*C,t):null},t.isImageBitmap=A,t.isSafari=_,t.keysDifference=function(t,e){const r=[];for(const n in t)n in e||r.push(n);return r},t.lazyLoadRTLTextPlugin=function(){Xn.isLoading()||Xn.isLoaded()||\"deferred\"!==Gn()||Jn();},t.makeRequest=K,t.mapObject=c,t.mercatorXfromLng=Ku,t.mercatorYfromLat=Zu,t.mercatorZfromAltitude=Gu,t.mul=pa,t.multiply=ca,t.nextPowerOfTwo=function(t){return t<=1?1:Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},t.number=Se,t.ortho=function(t,e,r,n,i,s,a){var o=1/(e-r),l=1/(n-i),u=1/(s-a);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*u,t[11]=0,t[12]=(e+r)*o,t[13]=(i+n)*l,t[14]=(a+s)*u,t[15]=1,t},t.parseCacheControl=x,t.parseGlyphPBF=function(t){return new el(t).readFields(kl,[])},t.pbf=el,t.performSymbolLayout=function(e,r,n,i,s,a,o){e.createArrays(),e.tilePixelRatio=Rs/(512*e.overscaling),e.compareText={},e.iconsNeedLinear=!1;const l=e.layers[0].layout,u=e.layers[0]._unevaluatedLayout._values,c={layoutIconSize:u[\"icon-size\"].possiblyEvaluate(new Yn(e.zoom+1),o),layoutTextSize:u[\"text-size\"].possiblyEvaluate(new Yn(e.zoom+1),o),textMaxSize:u[\"text-size\"].possiblyEvaluate(new Yn(18))};if(\"composite\"===e.textSizeData.kind){const{minZoom:t,maxZoom:r}=e.textSizeData;c.compositeTextSizes=[u[\"text-size\"].possiblyEvaluate(new Yn(t),o),u[\"text-size\"].possiblyEvaluate(new Yn(r),o)];}if(\"composite\"===e.iconSizeData.kind){const{minZoom:t,maxZoom:r}=e.iconSizeData;c.compositeIconSizes=[u[\"icon-size\"].possiblyEvaluate(new Yn(t),o),u[\"icon-size\"].possiblyEvaluate(new Yn(r),o)];}const h=l.get(\"text-line-height\")*tl,p=\"viewport\"!==l.get(\"text-rotation-alignment\")&&\"point\"!==l.get(\"symbol-placement\"),f=l.get(\"text-keep-upright\"),y=l.get(\"text-size\");for(const a of e.features){const u=l.get(\"text-font\").evaluate(a,{},o).join(\",\"),m=y.evaluate(a,{},o),g=c.layoutTextSize.evaluate(a,{},o),x=c.layoutIconSize.evaluate(a,{},o),v={horizontal:{},vertical:void 0},b=a.text;let w,_=[0,0];if(b){const i=b.toString(),c=l.get(\"text-letter-spacing\").evaluate(a,{},o)*tl,d=Pn(i)?c:0,y=l.get(\"text-anchor\").evaluate(a,{},o),x=l.get(\"text-variable-anchor\");if(!x){const t=l.get(\"text-radial-offset\").evaluate(a,{},o);_=t?yu(y,[t*tl,du]):l.get(\"text-offset\").evaluate(a,{},o).map((t=>t*tl));}let w=p?\"center\":l.get(\"text-justify\").evaluate(a,{},o);const A=l.get(\"symbol-placement\"),k=\"point\"===A?l.get(\"text-max-width\").evaluate(a,{},o)*tl:0,S=()=>{e.allowVerticalPlacement&&Cn(i)&&(v.vertical=El(b,r,n,s,u,k,h,y,\"left\",d,_,t.WritingMode.vertical,!0,A,g,m));};if(!p&&x){const e=\"auto\"===w?x.map((t=>mu(t))):[w];let i=!1;for(let a=0;athis._layers[e.id])),o=t[0];if(\"none\"===o.visibility)continue;const i=o.source||\"\";let r=this.familiesBySource[i];r||(r=this.familiesBySource[i]={});const n=o.sourceLayer||\"_geojsonTileLayer\";let s=r[n];s||(s=r[n]=[]),s.push(t);}}}class r{constructor(t){const o={},i=[];for(const e in t){const r=t[e],n=o[e]={};for(const e in r){const t=r[+e];if(!t||0===t.bitmap.width||0===t.bitmap.height)continue;const o={x:0,y:0,w:t.bitmap.width+2,h:t.bitmap.height+2};i.push(o),n[e]={rect:o,metrics:t.metrics};}}const{w:r,h:n}=e.potpack(i),s=new e.AlphaImage({width:r||1,height:n||1});for(const i in t){const r=t[i];for(const t in r){const n=r[+t];if(!n||0===n.bitmap.width||0===n.bitmap.height)continue;const a=o[i][t].rect;e.AlphaImage.copy(n.bitmap,s,{x:0,y:0},{x:a.x+1,y:a.y+1},n.bitmap);}}this.image=s,this.positions=o;}}e.register(\"GlyphAtlas\",r);class n{constructor(t){this.tileID=new e.OverscaledTileID(t.tileID.overscaledZ,t.tileID.wrap,t.tileID.canonical.z,t.tileID.canonical.x,t.tileID.canonical.y),this.uid=t.uid,this.zoom=t.zoom,this.pixelRatio=t.pixelRatio,this.tileSize=t.tileSize,this.source=t.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=t.showCollisionBoxes,this.collectResourceTiming=!!t.collectResourceTiming,this.returnDependencies=!!t.returnDependencies,this.promoteId=t.promoteId;}parse(t,o,i,n,a){this.status=\"parsing\",this.data=t,this.collisionBoxArray=new e.CollisionBoxArray;const l=new e.DictionaryCoder(Object.keys(t.layers).sort()),c=new e.FeatureIndex(this.tileID,this.promoteId);c.bucketLayerIDs=[];const u={},h={featureIndex:c,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:i},p=o.familiesBySource[this.source];for(const o in p){const r=t.layers[o];if(!r)continue;1===r.version&&e.warnOnce(`Vector tile source \"${this.source}\" layer \"${o}\" does not use vector tile spec v2 and therefore may have some rendering errors.`);const n=l.encode(o),a=[];for(let e=0;e=t.maxzoom||\"none\"!==t.visibility&&(s(e,this.zoom,i),(u[t.id]=t.createBucket({index:c.bucketLayerIDs.length,layers:e,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:n,sourceID:this.source})).populate(a,h,this.tileID.canonical),c.bucketLayerIDs.push(e.map((e=>e.id))));}}let f,d,g,m;const y=e.mapObject(h.glyphDependencies,(e=>Object.keys(e).map(Number)));Object.keys(y).length?n.send(\"getGlyphs\",{uid:this.uid,stacks:y},((e,t)=>{f||(f=e,d=t,w.call(this));})):d={};const v=Object.keys(h.iconDependencies);v.length?n.send(\"getImages\",{icons:v,source:this.source,tileID:this.tileID,type:\"icons\"},((e,t)=>{f||(f=e,g=t,w.call(this));})):g={};const x=Object.keys(h.patternDependencies);function w(){if(f)return a(f);if(d&&g&&m){const t=new r(d),o=new e.ImageAtlas(g,m);for(const r in u){const n=u[r];n instanceof e.SymbolBucket?(s(n.layers,this.zoom,i),e.performSymbolLayout(n,d,t.positions,g,o.iconPositions,this.showCollisionBoxes,this.tileID.canonical)):n.hasPattern&&(n instanceof e.LineBucket||n instanceof e.FillBucket||n instanceof e.FillExtrusionBucket)&&(s(n.layers,this.zoom,i),n.addFeatures(h,this.tileID.canonical,o.patternPositions));}this.status=\"done\",a(null,{buckets:Object.values(u).filter((e=>!e.isEmpty())),featureIndex:c,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:t.image,imageAtlas:o,glyphMap:this.returnDependencies?d:null,iconMap:this.returnDependencies?g:null,glyphPositions:this.returnDependencies?t.positions:null});}}x.length?n.send(\"getImages\",{icons:x,source:this.source,tileID:this.tileID,type:\"patterns\"},((e,t)=>{f||(f=e,m=t,w.call(this));})):m={},w.call(this);}}function s(t,o,i){const r=new e.EvaluationParameters(o);for(const e of t)e.recalculate(r,i);}function a(t,o){const i=e.getArrayBuffer(t.request,((t,i,r,n)=>{t?o(t):i&&o(null,{vectorTile:new e.vectorTile.VectorTile(new e.pbf(i)),rawData:i,cacheControl:r,expires:n});}));return ()=>{i.cancel(),o();}}class l{constructor(e,t,o,i){this.actor=e,this.layerIndex=t,this.availableImages=o,this.loadVectorData=i||a,this.loading={},this.loaded={};}loadTile(t,o){const i=t.uid;this.loading||(this.loading={});const r=!!(t&&t.request&&t.request.collectResourceTiming)&&new e.RequestPerformance(t.request),s=this.loading[i]=new n(t);s.abort=this.loadVectorData(t,((t,n)=>{if(delete this.loading[i],t||!n)return s.status=\"done\",this.loaded[i]=s,o(t);const a=n.rawData,l={};n.expires&&(l.expires=n.expires),n.cacheControl&&(l.cacheControl=n.cacheControl);const c={};if(r){const e=r.finish();e&&(c.resourceTiming=JSON.parse(JSON.stringify(e)));}s.vectorTile=n.vectorTile,s.parse(n.vectorTile,this.layerIndex,this.availableImages,this.actor,((t,i)=>{if(t||!i)return o(t);o(null,e.extend({rawTileData:a.slice(0)},i,l,c));})),this.loaded=this.loaded||{},this.loaded[i]=s;}));}reloadTile(e,t){const o=this.loaded,i=e.uid,r=this;if(o&&o[i]){const n=o[i];n.showCollisionBoxes=e.showCollisionBoxes;const s=(e,o)=>{const i=n.reloadCallback;i&&(delete n.reloadCallback,n.parse(n.vectorTile,r.layerIndex,this.availableImages,r.actor,i)),t(e,o);};\"parsing\"===n.status?n.reloadCallback=s:\"done\"===n.status&&(n.vectorTile?n.parse(n.vectorTile,this.layerIndex,this.availableImages,this.actor,s):s());}}abortTile(e,t){const o=this.loading,i=e.uid;o&&o[i]&&o[i].abort&&(o[i].abort(),delete o[i]),t();}removeTile(e,t){const o=this.loaded,i=e.uid;o&&o[i]&&delete o[i],t();}}class c{constructor(){this.loaded={};}loadTile(t,o){const{uid:i,encoding:r,rawImageData:n}=t,s=e.isImageBitmap(n)?this.getImageData(n):n,a=new e.DEMData(i,s,r);this.loaded=this.loaded||{},this.loaded[i]=a,o(null,a);}getImageData(t){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(t.width,t.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext(\"2d\")),this.offscreenCanvas.width=t.width,this.offscreenCanvas.height=t.height,this.offscreenCanvasContext.drawImage(t,0,0,t.width,t.height);const o=this.offscreenCanvasContext.getImageData(-1,-1,t.width+2,t.height+2);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),new e.RGBAImage({width:o.width,height:o.height},o.data)}removeTile(e){const t=this.loaded,o=e.uid;t&&t[o]&&delete t[o];}}var u=function e(t,o){var i,r=t&&t.type;if(\"FeatureCollection\"===r)for(i=0;i=Math.abs(a)?o-l+a:a-l+o,o=l;}o+i>=0!=!!t&&e.reverse();}const f=e.vectorTile.VectorTileFeature.prototype.toGeoJSON;class d{constructor(t){this._feature=t,this.extent=e.EXTENT,this.type=t.type,this.properties=t.tags,\"id\"in t&&!isNaN(t.id)&&(this.id=parseInt(t.id,10));}loadGeometry(){if(1===this._feature.type){const t=[];for(const o of this._feature.geometry)t.push([new e.pointGeometry(o[0],o[1])]);return t}{const t=[];for(const o of this._feature.geometry){const i=[];for(const t of o)i.push(new e.pointGeometry(t[0],t[1]));t.push(i);}return t}}toGeoJSON(e,t,o){return f.call(this,e,t,o)}}class g{constructor(t){this.layers={_geojsonTileLayer:this},this.name=\"_geojsonTileLayer\",this.extent=e.EXTENT,this.length=t.length,this._features=t;}feature(e){return new d(this._features[e])}}var m={exports:{}},y=e.pointGeometry,v=e.vectorTile.VectorTileFeature,x=w;function w(e,t){this.options=t||{},this.features=e,this.length=e.length;}function S(e,t){this.id=\"number\"==typeof e.id?e.id:void 0,this.type=e.type,this.rawGeometry=1===e.type?[e.geometry]:e.geometry,this.properties=e.tags,this.extent=t||4096;}w.prototype.feature=function(e){return new S(this.features[e],this.options.extent)},S.prototype.loadGeometry=function(){var e=this.rawGeometry;this.geometry=[];for(var t=0;t>31}function D(e,t){for(var o=e.loadGeometry(),i=e.type,r=0,n=0,s=o.length,a=0;a>1;E(e,t,s,i,r,n%2),O(e,t,o,i,s-1,n+1),O(e,t,o,s+1,r,n+1);}function E(e,t,o,i,r,n){for(;r>i;){if(r-i>600){const s=r-i+1,a=o-i+1,l=Math.log(s),c=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*c*(s-c)/s)*(a-s/2<0?-1:1);E(e,t,o,Math.max(i,Math.floor(o-a*c/s+u)),Math.min(r,Math.floor(o+(s-a)*c/s+u)),n);}const s=t[2*o+n];let a=i,l=r;for(F(e,t,i,o),t[2*r+n]>s&&F(e,t,i,r);as;)l--;}t[2*i+n]===s?F(e,t,i,l):(l++,F(e,t,l,r)),l<=o&&(i=l+1),o<=l&&(r=l-1);}}function F(e,t,o,i){N(e,o,i),N(t,2*o,2*i),N(t,2*o+1,2*i+1);}function N(e,t,o){const i=e[t];e[t]=e[o],e[o]=i;}function A(e,t,o,i){const r=e-o,n=t-i;return r*r+n*n}const G=e=>e[0],J=e=>e[1];class Z{constructor(e,t=G,o=J,i=64,r=Float64Array){this.nodeSize=i,this.points=e;const n=e.length<65536?Uint16Array:Uint32Array,s=this.ids=new n(e.length),a=this.coords=new r(2*e.length);for(let i=0;i=o&&c<=r&&u>=i&&u<=n&&l.push(e[s]);continue}const d=Math.floor((f+p)/2);c=t[2*d],u=t[2*d+1],c>=o&&c<=r&&u>=i&&u<=n&&l.push(e[d]);const g=(h+1)%2;(0===h?o<=c:i<=u)&&(a.push(f),a.push(d-1),a.push(g)),(0===h?r>=c:n>=u)&&(a.push(d+1),a.push(p),a.push(g));}return l}(this.ids,this.coords,e,t,o,i,this.nodeSize)}within(e,t,o){return function(e,t,o,i,r,n){const s=[0,e.length-1,0],a=[],l=r*r;for(;s.length;){const c=s.pop(),u=s.pop(),h=s.pop();if(u-h<=n){for(let r=h;r<=u;r++)A(t[2*r],t[2*r+1],o,i)<=l&&a.push(e[r]);continue}const p=Math.floor((h+u)/2),f=t[2*p],d=t[2*p+1];A(f,d,o,i)<=l&&a.push(e[p]);const g=(c+1)%2;(0===c?o-r<=f:i-r<=d)&&(s.push(h),s.push(p-1),s.push(g)),(0===c?o+r>=f:i+r>=d)&&(s.push(p+1),s.push(u),s.push(g));}return a}(this.ids,this.coords,e,t,o,this.nodeSize)}}const B={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:e=>e},j=Math.fround||(Y=new Float32Array(1),e=>(Y[0]=+e,Y[0]));var Y;class V{constructor(e){this.options=K(Object.create(B),e),this.trees=new Array(this.options.maxZoom+1);}load(e){const{log:t,minZoom:o,maxZoom:i,nodeSize:r}=this.options;t&&console.time(\"total time\");const n=`prepare ${e.length} points`;t&&console.time(n),this.points=e;let s=[];for(let t=0;t=o;e--){const o=+Date.now();s=this._cluster(s,e),this.trees[e]=new Z(s,Q,ee,r,Float32Array),t&&console.log(\"z%d: %d clusters in %dms\",e,s.length,+Date.now()-o);}return t&&console.timeEnd(\"total time\"),this}getClusters(e,t){let o=((e[0]+180)%360+360)%360-180;const i=Math.max(-90,Math.min(90,e[1]));let r=180===e[2]?180:((e[2]+180)%360+360)%360-180;const n=Math.max(-90,Math.min(90,e[3]));if(e[2]-e[0]>=360)o=-180,r=180;else if(o>r){const e=this.getClusters([o,i,180,n],t),s=this.getClusters([-180,i,r,n],t);return e.concat(s)}const s=this.trees[this._limitZoom(t)],a=s.range(q(o),U(n),q(r),U(i)),l=[];for(const e of a){const t=s.points[e];l.push(t.numPoints?R(t):this.points[t.index]);}return l}getChildren(e){const t=this._getOriginId(e),o=this._getOriginZoom(e),i=\"No cluster with the specified id.\",r=this.trees[o];if(!r)throw new Error(i);const n=r.points[t];if(!n)throw new Error(i);const s=this.options.radius/(this.options.extent*Math.pow(2,o-1)),a=r.within(n.x,n.y,s),l=[];for(const t of a){const o=r.points[t];o.parentId===e&&l.push(o.numPoints?R(o):this.points[o.index]);}if(0===l.length)throw new Error(i);return l}getLeaves(e,t,o){const i=[];return this._appendLeaves(i,e,t=t||10,o=o||0,0),i}getTile(e,t,o){const i=this.trees[this._limitZoom(e)],r=Math.pow(2,e),{extent:n,radius:s}=this.options,a=s/n,l=(o-a)/r,c=(o+1+a)/r,u={features:[]};return this._addTileFeatures(i.range((t-a)/r,l,(t+1+a)/r,c),i.points,t,o,r,u),0===t&&this._addTileFeatures(i.range(1-a/r,l,1,c),i.points,r,o,r,u),t===r-1&&this._addTileFeatures(i.range(0,l,a/r,c),i.points,-1,o,r,u),u.features.length?u:null}getClusterExpansionZoom(e){let t=this._getOriginZoom(e)-1;for(;t<=this.options.maxZoom;){const o=this.getChildren(e);if(t++,1!==o.length)break;e=o[0].properties.cluster_id;}return t}_appendLeaves(e,t,o,i,r){const n=this.getChildren(t);for(const t of n){const n=t.properties;if(n&&n.cluster?r+n.point_count<=i?r+=n.point_count:r=this._appendLeaves(e,n.cluster_id,o,i,r):rt&&(h+=o.numPoints||1);}if(h>u&&h>=s){let e=r.x*u,s=r.y*u,a=n&&u>1?this._map(r,!0):null;const p=(i<<5)+(t+1)+this.points.length;for(const o of c){const i=l.points[o];if(i.zoom<=t)continue;i.zoom=t;const c=i.numPoints||1;e+=i.x*c,s+=i.y*c,i.parentId=p,n&&(a||(a=this._map(r,!0)),n(a,this._map(i)));}r.parentId=p,o.push(X(e/h,s/h,p,h,a));}else if(o.push(r),h>1)for(const e of c){const i=l.points[e];i.zoom<=t||(i.zoom=t,o.push(i));}}return o}_getOriginId(e){return e-this.points.length>>5}_getOriginZoom(e){return (e-this.points.length)%32}_map(e,t){if(e.numPoints)return t?K({},e.properties):e.properties;const o=this.points[e.index].properties,i=this.options.map(o);return t&&i===o?K({},i):i}}function X(e,t,o,i,r){return {x:j(e),y:j(t),zoom:1/0,id:o,parentId:-1,numPoints:i,properties:r}}function W(e,t){const[o,i]=e.geometry.coordinates;return {x:j(q(o)),y:j(U(i)),zoom:1/0,index:t,parentId:-1}}function R(e){return {type:\"Feature\",id:e.id,properties:$(e),geometry:{type:\"Point\",coordinates:[(t=e.x,360*(t-.5)),H(e.y)]}};var t;}function $(e){const t=e.numPoints,o=t>=1e4?`${Math.round(t/1e3)}k`:t>=1e3?Math.round(t/100)/10+\"k\":t;return K(K({},e.properties),{cluster:!0,cluster_id:e.id,point_count:t,point_count_abbreviated:o})}function q(e){return e/360+.5}function U(e){const t=Math.sin(e*Math.PI/180),o=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return o<0?0:o>1?1:o}function H(e){const t=(180-360*e)*Math.PI/180;return 360*Math.atan(Math.exp(t))/Math.PI-90}function K(e,t){for(const o in t)e[o]=t[o];return e}function Q(e){return e.x}function ee(e){return e.y}function te(e,t,o,i){for(var r,n=i,s=o-t>>1,a=o-t,l=e[t],c=e[t+1],u=e[o],h=e[o+1],p=t+3;pn)r=p,n=f;else if(f===n){var d=Math.abs(p-s);di&&(r-t>3&&te(e,t,r,i),e[r+2]=n,o-r>3&&te(e,r,o,i));}function oe(e,t,o,i,r,n){var s=r-o,a=n-i;if(0!==s||0!==a){var l=((e-o)*s+(t-i)*a)/(s*s+a*a);l>1?(o=r,i=n):l>0&&(o+=s*l,i+=a*l);}return (s=e-o)*s+(a=t-i)*a}function ie(e,t,o,i){var r={id:void 0===e?null:e,type:t,geometry:o,tags:i,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(e){var t=e.geometry,o=e.type;if(\"Point\"===o||\"MultiPoint\"===o||\"LineString\"===o)re(e,t);else if(\"Polygon\"===o||\"MultiLineString\"===o)for(var i=0;i0&&(s+=i?(r*c-l*n)/2:Math.sqrt(Math.pow(l-r,2)+Math.pow(c-n,2))),r=l,n=c;}var u=t.length-3;t[2]=1,te(t,0,u,o),t[u+2]=1,t.size=Math.abs(s),t.start=0,t.end=t.size;}function le(e,t,o,i){for(var r=0;r1?1:o}function he(e,t,o,i,r,n,s,a){if(i/=t,n>=(o/=t)&&s=i)return null;for(var l=[],c=0;c=o&&d=i)){var g=[];if(\"Point\"===p||\"MultiPoint\"===p)pe(h,g,o,i,r);else if(\"LineString\"===p)fe(h,g,o,i,r,!1,a.lineMetrics);else if(\"MultiLineString\"===p)ge(h,g,o,i,r,!1);else if(\"Polygon\"===p)ge(h,g,o,i,r,!0);else if(\"MultiPolygon\"===p)for(var m=0;m=o&&s<=i&&(t.push(e[n]),t.push(e[n+1]),t.push(e[n+2]));}}function fe(e,t,o,i,r,n,s){for(var a,l,c=de(e),u=0===r?ye:ve,h=e.start,p=0;po&&(l=u(c,f,d,m,y,o),s&&(c.start=h+a*l)):v>i?x=o&&(l=u(c,f,d,m,y,o),w=!0),x>i&&v<=i&&(l=u(c,f,d,m,y,i),w=!0),!n&&w&&(s&&(c.end=h+a*l),t.push(c),c=de(e)),s&&(h+=a);}var S=e.length-3;f=e[S],d=e[S+1],g=e[S+2],(v=0===r?f:d)>=o&&v<=i&&me(c,f,d,g),S=c.length-3,n&&S>=3&&(c[S]!==c[0]||c[S+1]!==c[1])&&me(c,c[0],c[1],c[2]),c.length&&t.push(c);}function de(e){var t=[];return t.size=e.size,t.start=e.start,t.end=e.end,t}function ge(e,t,o,i,r,n){for(var s=0;ss.maxX&&(s.maxX=u),h>s.maxY&&(s.maxY=h);}return s}function be(e,t,o,i){var r=t.geometry,n=t.type,s=[];if(\"Point\"===n||\"MultiPoint\"===n)for(var a=0;a0&&t.size<(r?s:i))o.numPoints+=t.length/3;else {for(var a=[],l=0;ls)&&(o.numSimplified++,a.push(t[l]),a.push(t[l+1])),o.numPoints++;r&&function(e,t){for(var o=0,i=0,r=e.length,n=r-2;i0===t)for(i=0,r=e.length;i24)throw new Error(\"maxZoom should be in the 0-24 range\");if(t.promoteId&&t.generateId)throw new Error(\"promoteId and generateId cannot be used together.\");var i=function(e,t){var o=[];if(\"FeatureCollection\"===e.type)for(var i=0;i1&&console.time(\"creation\"),p=this.tiles[h]=Me(e,t,o,i,l),this.tileCoords.push({z:t,x:o,y:i}),c)){c>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",t,o,i,p.numFeatures,p.numPoints,p.numSimplified),console.timeEnd(\"creation\"));var f=\"z\"+t;this.stats[f]=(this.stats[f]||0)+1,this.total++;}if(p.source=e,r){if(t===l.maxZoom||t===r)continue;var d=1<1&&console.time(\"clipping\");var g,m,y,v,x,w,S=.5*l.buffer/l.extent,I=.5-S,M=.5+S,b=1+S;g=m=y=v=null,x=he(e,u,o-S,o+M,0,p.minX,p.maxX,l),w=he(e,u,o+I,o+b,0,p.minX,p.maxX,l),e=null,x&&(g=he(x,u,i-S,i+M,1,p.minY,p.maxY,l),m=he(x,u,i+I,i+b,1,p.minY,p.maxY,l),x=null),w&&(y=he(w,u,i-S,i+M,1,p.minY,p.maxY,l),v=he(w,u,i+I,i+b,1,p.minY,p.maxY,l),w=null),c>1&&console.timeEnd(\"clipping\"),a.push(g||[],t+1,2*o,2*i),a.push(m||[],t+1,2*o,2*i+1),a.push(y||[],t+1,2*o+1,2*i),a.push(v||[],t+1,2*o+1,2*i+1);}}},_e.prototype.getTile=function(e,t,o){var i=this.options,r=i.extent,n=i.debug;if(e<0||e>24)return null;var s=1<1&&console.log(\"drilling down to z%d-%d-%d\",e,t,o);for(var l,c=e,u=t,h=o;!l&&c>0;)c--,u=Math.floor(u/2),h=Math.floor(h/2),l=this.tiles[Pe(c,u,h)];return l&&l.source?(n>1&&console.log(\"found parent tile z%d-%d-%d\",c,u,h),n>1&&console.time(\"drilling down\"),this.splitTile(l.source,c,u,h,e,t,o),n>1&&console.timeEnd(\"drilling down\"),this.tiles[a]?Se(this.tiles[a],r):null):null};class Ce extends l{constructor(e,t,o,i){super(e,t,o,Te),i&&(this.loadGeoJSON=i);}loadData(e,t){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),this._pendingCallback=t,this._pendingLoadDataParams=e,this._state&&\"Idle\"!==this._state?this._state=\"NeedsLoadData\":(this._state=\"Coalescing\",this._loadData());}_loadData(){if(!this._pendingCallback||!this._pendingLoadDataParams)return;const t=this._pendingCallback,o=this._pendingLoadDataParams;delete this._pendingCallback,delete this._pendingLoadDataParams;const i=!!(o&&o.request&&o.request.collectResourceTiming)&&new e.RequestPerformance(o.request);this.loadGeoJSON(o,((r,n)=>{if(r||!n)return t(r);if(\"object\"!=typeof n)return t(new Error(`Input data given to '${o.source}' is not a valid GeoJSON object.`));{u(n,!0);try{if(o.filter){const t=e.createExpression(o.filter,{type:\"boolean\",\"property-type\":\"data-driven\",overridable:!1,transition:!1});if(\"error\"===t.result)throw new Error(t.value.map((e=>`${e.key}: ${e.message}`)).join(\", \"));const i=n.features.filter((e=>t.value.evaluate({zoom:0},e)));n={type:\"FeatureCollection\",features:i};}this._geoJSONIndex=o.cluster?new V(function({superclusterOptions:t,clusterProperties:o}){if(!o||!t)return t;const i={},r={},n={accumulated:null,zoom:0},s={properties:null},a=Object.keys(o);for(const t of a){const[n,s]=o[t],a=e.createExpression(s),l=e.createExpression(\"string\"==typeof n?[n,[\"accumulated\"],[\"get\",t]]:n);i[t]=a.value,r[t]=l.value;}return t.map=e=>{s.properties=e;const t={};for(const e of a)t[e]=i[e].evaluate(n,s);return t},t.reduce=(e,t)=>{s.properties=t;for(const t of a)n.accumulated=e[t],e[t]=r[t].evaluate(n,s);},t}(o)).load(n.features):function(e,t){return new _e(e,t)}(n,o.geojsonVtOptions);}catch(r){return t(r)}this.loaded={};const s={};if(i){const e=i.finish();e&&(s.resourceTiming={},s.resourceTiming[o.source]=JSON.parse(JSON.stringify(e)));}t(null,s);}}));}coalesce(){\"Coalescing\"===this._state?this._state=\"Idle\":\"NeedsLoadData\"===this._state&&(this._state=\"Coalescing\",this._loadData());}reloadTile(e,t){const o=this.loaded;return o&&o[e.uid]?super.reloadTile(e,t):this.loadTile(e,t)}loadGeoJSON(t,o){if(t.request)e.getJSON(t.request,o);else {if(\"string\"!=typeof t.data)return o(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));try{return o(null,JSON.parse(t.data))}catch(e){return o(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`))}}}removeSource(e,t){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),t();}getClusterExpansionZoom(e,t){try{t(null,this._geoJSONIndex.getClusterExpansionZoom(e.clusterId));}catch(e){t(e);}}getClusterChildren(e,t){try{t(null,this._geoJSONIndex.getChildren(e.clusterId));}catch(e){t(e);}}getClusterLeaves(e,t){try{t(null,this._geoJSONIndex.getLeaves(e.clusterId,e.limit,e.offset));}catch(e){t(e);}}}class De{constructor(t){this.self=t,this.actor=new e.Actor(t,this),this.layerIndexes={},this.availableImages={},this.workerSourceTypes={vector:l,geojson:Ce},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=(e,t)=>{if(this.workerSourceTypes[e])throw new Error(`Worker source with name \"${e}\" already registered.`);this.workerSourceTypes[e]=t;},this.self.registerRTLTextPlugin=t=>{if(e.plugin.isParsed())throw new Error(\"RTL text plugin already registered.\");e.plugin.applyArabicShaping=t.applyArabicShaping,e.plugin.processBidirectionalText=t.processBidirectionalText,e.plugin.processStyledBidirectionalText=t.processStyledBidirectionalText;};}setReferrer(e,t){this.referrer=t;}setImages(e,t,o){this.availableImages[e]=t;for(const o in this.workerSources[e]){const i=this.workerSources[e][o];for(const e in i)i[e].availableImages=t;}o();}setLayers(e,t,o){this.getLayerIndex(e).replace(t),o();}updateLayers(e,t,o){this.getLayerIndex(e).update(t.layers,t.removedIds),o();}loadTile(e,t,o){this.getWorkerSource(e,t.type,t.source).loadTile(t,o);}loadDEMTile(e,t,o){this.getDEMWorkerSource(e,t.source).loadTile(t,o);}reloadTile(e,t,o){this.getWorkerSource(e,t.type,t.source).reloadTile(t,o);}abortTile(e,t,o){this.getWorkerSource(e,t.type,t.source).abortTile(t,o);}removeTile(e,t,o){this.getWorkerSource(e,t.type,t.source).removeTile(t,o);}removeDEMTile(e,t){this.getDEMWorkerSource(e,t.source).removeTile(t);}removeSource(e,t,o){if(!this.workerSources[e]||!this.workerSources[e][t.type]||!this.workerSources[e][t.type][t.source])return;const i=this.workerSources[e][t.type][t.source];delete this.workerSources[e][t.type][t.source],void 0!==i.removeSource?i.removeSource(t,o):o();}loadWorkerSource(e,t,o){try{this.self.importScripts(t.url),o();}catch(e){o(e.toString());}}syncRTLPluginState(t,o,i){try{e.plugin.setState(o);const t=e.plugin.getPluginURL();if(e.plugin.isLoaded()&&!e.plugin.isParsed()&&null!=t){this.self.importScripts(t);const o=e.plugin.isParsed();i(o?void 0:new Error(`RTL Text Plugin failed to import scripts from ${t}`),o);}}catch(e){i(e.toString());}}getAvailableImages(e){let t=this.availableImages[e];return t||(t=[]),t}getLayerIndex(e){let t=this.layerIndexes[e];return t||(t=this.layerIndexes[e]=new i),t}getWorkerSource(e,t,o){if(this.workerSources[e]||(this.workerSources[e]={}),this.workerSources[e][t]||(this.workerSources[e][t]={}),!this.workerSources[e][t][o]){const i={send:(t,o,i)=>{this.actor.send(t,o,i,e);}};this.workerSources[e][t][o]=new this.workerSourceTypes[t](i,this.getLayerIndex(e),this.getAvailableImages(e));}return this.workerSources[e][t][o]}getDEMWorkerSource(e,t){return this.demWorkerSources[e]||(this.demWorkerSources[e]={}),this.demWorkerSources[e][t]||(this.demWorkerSources[e][t]=new c),this.demWorkerSources[e][t]}enforceCacheSizeLimit(t,o){e.enforceCacheSizeLimit(o);}}return \"undefined\"!=typeof WorkerGlobalScope&&\"undefined\"!=typeof self&&self instanceof WorkerGlobalScope&&(self.worker=new De(self)),De}));\n\ndefine([\"./shared\"],(function(t){\"use strict\";var e=i;function i(t){return !function(t){return \"undefined\"==typeof window||\"undefined\"==typeof document?\"not a browser\":Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray?Function.prototype&&Function.prototype.bind?Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions?\"JSON\"in window&&\"parse\"in JSON&&\"stringify\"in JSON?function(){if(!(\"Worker\"in window&&\"Blob\"in window&&\"URL\"in window))return !1;var t,e,i=new Blob([\"\"],{type:\"text/javascript\"}),o=URL.createObjectURL(i);try{e=new Worker(o),t=!0;}catch(e){t=!1;}return e&&e.terminate(),URL.revokeObjectURL(o),t}()?\"Uint8ClampedArray\"in window?ArrayBuffer.isView?function(){var t=document.createElement(\"canvas\");t.width=t.height=1;var e=t.getContext(\"2d\");if(!e)return !1;var i=e.getImageData(0,0,1,1);return i&&i.width===t.width}()?(void 0===o[e=t&&t.failIfMajorPerformanceCaveat]&&(o[e]=function(t){var e,o=function(t){var e=document.createElement(\"canvas\"),o=Object.create(i.webGLContextAttributes);return o.failIfMajorPerformanceCaveat=t,e.getContext(\"webgl\",o)||e.getContext(\"experimental-webgl\",o)}(t);if(!o)return !1;try{e=o.createShader(o.VERTEX_SHADER);}catch(t){return !1}return !(!e||o.isContextLost())&&(o.shaderSource(e,\"void main() {}\"),o.compileShader(e),!0===o.getShaderParameter(e,o.COMPILE_STATUS))}(e)),o[e]?document.documentMode?\"insufficient ECMAScript 6 support\":void 0:\"insufficient WebGL support\"):\"insufficient Canvas/getImageData support\":\"insufficient ArrayBuffer support\":\"insufficient Uint8ClampedArray support\":\"insufficient worker support\":\"insufficient JSON support\":\"insufficient Object support\":\"insufficient Function support\":\"insufficent Array support\";var e;}(t)}var o={};function a(t,e){if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return !1;for(let i=0;i{window.removeEventListener(\"click\",s.suppressClickInternal,!0);}),0);}static mousePos(e,i){const o=e.getBoundingClientRect();return new t.pointGeometry(i.clientX-o.left-e.clientLeft,i.clientY-o.top-e.clientTop)}static touchPos(e,i){const o=e.getBoundingClientRect(),a=[];for(let s=0;s-1);l++,s[l]=n,r[l]=c,r[l+1]=p;}for(let n=0,l=0;n{let o=this.entries[t];o||(o=this.entries[t]={glyphs:{},requests:{},ranges:{}});let a=o.glyphs[e];if(void 0!==a)return void i(null,{stack:t,id:e,glyph:a});if(a=this._tinySDF(o,t,e),a)return o.glyphs[e]=a,void i(null,{stack:t,id:e,glyph:a});const s=Math.floor(e/256);if(256*s>65535)return void i(new Error(\"glyphs > 65535 not supported\"));if(o.ranges[s])return void i(null,{stack:t,id:e,glyph:a});let r=o.requests[s];r||(r=o.requests[s]=[],x.loadGlyphRange(t,s,this.url,this.requestManager,((t,e)=>{if(e){for(const t in e)this._doesCharSupportLocalGlyph(+t)||(o.glyphs[+t]=e[+t]);o.ranges[s]=!0;}for(const i of r)i(t,e);delete o.requests[s];}))),r.push(((o,a)=>{o?i(o):a&&i(null,{stack:t,id:e,glyph:a[e]||null});}));}),((t,e)=>{if(t)i(t);else if(e){const t={};for(const{stack:i,id:o,glyph:a}of e)(t[i]||(t[i]={}))[o]=a&&{id:a.id,bitmap:a.bitmap.clone(),metrics:a.metrics};i(null,t);}}));}_doesCharSupportLocalGlyph(e){return !!this.localIdeographFontFamily&&(t.unicodeBlockLookup[\"CJK Unified Ideographs\"](e)||t.unicodeBlockLookup[\"Hangul Syllables\"](e)||t.unicodeBlockLookup.Hiragana(e)||t.unicodeBlockLookup.Katakana(e))}_tinySDF(e,i,o){const a=this.localIdeographFontFamily;if(!a)return;if(!this._doesCharSupportLocalGlyph(o))return;let s=e.tinySDF;if(!s){let t=\"400\";/bold/i.test(i)?t=\"900\":/medium/i.test(i)?t=\"500\":/light/i.test(i)&&(t=\"200\"),s=e.tinySDF=new x.TinySDF({fontSize:24,buffer:3,radius:8,cutoff:.25,fontFamily:a,fontWeight:t});}const r=s.draw(String.fromCharCode(o));return {id:o,bitmap:new t.AlphaImage({width:r.width||30,height:r.height||30},r.data),metrics:{width:r.glyphWidth||24,height:r.glyphHeight||24,left:r.glyphLeft||0,top:r.glyphTop-27||-8,advance:r.glyphAdvance||24}}}}x.loadGlyphRange=function(e,i,o,a,s){const r=256*i,n=r+255,l=a.transformRequest(o.replace(\"{fontstack}\",e).replace(\"{range}\",`${r}-${n}`),t.ResourceType.Glyphs);t.getArrayBuffer(l,((e,i)=>{if(e)s(e);else if(i){const e={};for(const o of t.parseGlyphPBF(i))e[o.id]=o;s(null,e);}}));},x.TinySDF=class{constructor({fontSize:t=24,buffer:e=3,radius:i=8,cutoff:o=.25,fontFamily:a=\"sans-serif\",fontWeight:s=\"normal\",fontStyle:r=\"normal\"}={}){this.buffer=e,this.cutoff=o,this.radius=i;const n=this.size=t+4*e,l=this._createCanvas(n),c=this.ctx=l.getContext(\"2d\",{willReadFrequently:!0});c.font=`${r} ${s} ${t}px ${a}`,c.textBaseline=\"alphabetic\",c.textAlign=\"left\",c.fillStyle=\"black\",this.gridOuter=new Float64Array(n*n),this.gridInner=new Float64Array(n*n),this.f=new Float64Array(n),this.z=new Float64Array(n+1),this.v=new Uint16Array(n);}_createCanvas(t){const e=document.createElement(\"canvas\");return e.width=e.height=t,e}draw(t){const{width:e,actualBoundingBoxAscent:i,actualBoundingBoxDescent:o,actualBoundingBoxLeft:a,actualBoundingBoxRight:s}=this.ctx.measureText(t),r=Math.ceil(i),n=Math.min(this.size-this.buffer,Math.ceil(s-a)),l=Math.min(this.size-this.buffer,r+Math.ceil(o)),c=n+2*this.buffer,h=l+2*this.buffer,u=Math.max(c*h,0),d=new Uint8ClampedArray(u),m={data:d,width:c,height:h,glyphWidth:n,glyphHeight:l,glyphTop:r,glyphLeft:0,glyphAdvance:e};if(0===n||0===l)return m;const{ctx:_,buffer:g,gridInner:x,gridOuter:v}=this;_.clearRect(g,g,n,l),_.fillText(t,g,g+r);const y=_.getImageData(g,g,n,l);v.fill(p,0,u),x.fill(0,0,u);for(let t=0;t0?t*t:0,x[o]=t<0?t*t:0;}}f(v,0,0,c,h,c,this.f,this.v,this.z),f(x,g,g,n,l,c,this.f,this.v,this.z);for(let t=0;t1&&(r=t[++s]);const l=Math.abs(n-r.left),c=Math.abs(n-r.right),h=Math.min(l,c);let u;const d=e/i*(o+1);if(r.isDash){const t=o-Math.abs(d);u=Math.sqrt(h*h+t*t);}else u=o-Math.sqrt(h*h+d*d);this.data[a+n]=Math.max(0,Math.min(255,u+128));}}}addRegularDash(t){for(let e=t.length-1;e>=0;--e){const i=t[e],o=t[e+1];i.zeroLength?t.splice(e,1):o&&o.isDash===i.isDash&&(o.left=i.left,t.splice(e,1));}const e=t[0],i=t[t.length-1];e.isDash===i.isDash&&(e.left=i.left-this.width,i.right=e.right+this.width);const o=this.width*this.nextRow;let a=0,s=t[a];for(let e=0;e1&&(s=t[++a]);const i=Math.abs(e-s.left),r=Math.abs(e-s.right),n=Math.min(i,r);this.data[o+e]=Math.max(0,Math.min(255,(s.isDash?n:-n)+128));}}addDash(e,i){const o=i?7:0,a=2*o+1;if(this.nextRow+a>this.height)return t.warnOnce(\"LineAtlas out of space\"),null;let s=0;for(let t=0;t{t.send(e,i,o);}),o=o||function(){});}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(){this.actors.forEach((t=>{t.remove();})),this.actors=[],this.workerPool.release(this.id);}}function E(e,i,o){const a=function(i,a){if(i)return o(i);if(a){const i=t.pick(t.extend(a,e),[\"tiles\",\"minzoom\",\"maxzoom\",\"attribution\",\"bounds\",\"scheme\",\"tileSize\",\"encoding\"]);a.vector_layers&&(i.vectorLayers=a.vector_layers,i.vectorLayerIds=i.vectorLayers.map((t=>t.id))),o(null,i);}};return e.url?t.getJSON(i.transformRequest(e.url,t.ResourceType.Source),a):t.exported.frame((()=>a(null,e)))}T.Actor=t.Actor;class I{constructor(e,i,o){this.bounds=t.LngLatBounds.convert(this.validateBounds(e)),this.minzoom=i||0,this.maxzoom=o||24;}validateBounds(t){return Array.isArray(t)&&4===t.length?[Math.max(-180,t[0]),Math.max(-90,t[1]),Math.min(180,t[2]),Math.min(90,t[3])]:[-180,-90,180,90]}contains(e){const i=Math.pow(2,e.z),o=Math.floor(t.mercatorXfromLng(this.bounds.getWest())*i),a=Math.floor(t.mercatorYfromLat(this.bounds.getNorth())*i),s=Math.ceil(t.mercatorXfromLng(this.bounds.getEast())*i),r=Math.ceil(t.mercatorYfromLat(this.bounds.getSouth())*i);return e.x>=o&&e.x=a&&e.y{this._tileJSONRequest=null,this._loaded=!0,this.map.style.sourceCaches[this.id].clearTiles(),e?this.fire(new t.ErrorEvent(e)):i&&(t.extend(this,i),i.bounds&&(this.tileBounds=new I(i.bounds,this.minzoom,this.maxzoom)),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})));}));}loaded(){return this._loaded}hasTile(t){return !this.tileBounds||this.tileBounds.contains(t.canonical)}onAdd(t){this.map=t,this.load();}setSourceProperty(t){this._tileJSONRequest&&this._tileJSONRequest.cancel(),t(),this.load();}setTiles(t){return this.setSourceProperty((()=>{this._options.tiles=t;})),this}setUrl(t){return this.setSourceProperty((()=>{this.url=t,this._options.url=t;})),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null);}serialize(){return t.extend({},this._options)}loadTile(e,i){const o=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),a={request:this.map._requestManager.transformRequest(o,t.ResourceType.Tile),uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,tileSize:this.tileSize*e.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};function s(o,a){return delete e.request,e.aborted?i(null):o&&404!==o.status?i(o):(a&&a.resourceTiming&&(e.resourceTiming=a.resourceTiming),this.map._refreshExpiredTiles&&a&&e.setExpiryData(a),e.loadVectorData(a,this.map.painter),t.cacheEntryPossiblyAdded(this.dispatcher),i(null),void(e.reloadCallback&&(this.loadTile(e,e.reloadCallback),e.reloadCallback=null)))}a.request.collectResourceTiming=this._collectResourceTiming,e.actor&&\"expired\"!==e.state?\"loading\"===e.state?e.reloadCallback=i:e.request=e.actor.send(\"reloadTile\",a,s.bind(this)):(e.actor=this.dispatcher.getActor(),e.request=e.actor.send(\"loadTile\",a,s.bind(this)));}abortTile(t){t.request&&(t.request.cancel(),delete t.request),t.actor&&t.actor.send(\"abortTile\",{uid:t.uid,type:this.type,source:this.id},void 0);}unloadTile(t){t.unloadVectorData(),t.actor&&t.actor.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id},void 0);}hasTransition(){return !1}}class C extends t.Evented{constructor(e,i,o,a){super(),this.id=e,this.dispatcher=o,this.setEventedParent(a),this.type=\"raster\",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme=\"xyz\",this.tileSize=512,this._loaded=!1,this._options=t.extend({type:\"raster\"},i),t.extend(this,t.pick(i,[\"url\",\"scheme\",\"tileSize\"]));}load(){this._loaded=!1,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this._tileJSONRequest=E(this._options,this.map._requestManager,((e,i)=>{this._tileJSONRequest=null,this._loaded=!0,e?this.fire(new t.ErrorEvent(e)):i&&(t.extend(this,i),i.bounds&&(this.tileBounds=new I(i.bounds,this.minzoom,this.maxzoom)),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})));}));}loaded(){return this._loaded}onAdd(t){this.map=t,this.load();}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null);}serialize(){return t.extend({},this._options)}hasTile(t){return !this.tileBounds||this.tileBounds.contains(t.canonical)}loadTile(e,i){const o=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);e.request=t.getImage(this.map._requestManager.transformRequest(o,t.ResourceType.Tile),((o,a,s)=>{if(delete e.request,e.aborted)e.state=\"unloaded\",i(null);else if(o)e.state=\"errored\",i(o);else if(a){this.map._refreshExpiredTiles&&e.setExpiryData(s);const o=this.map.painter.context,r=o.gl;e.texture=this.map.painter.getTileTexture(a.width),e.texture?e.texture.update(a,{useMipmap:!0}):(e.texture=new d(o,a,r.RGBA,{useMipmap:!0}),e.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE,r.LINEAR_MIPMAP_NEAREST),o.extTextureFilterAnisotropic&&r.texParameterf(r.TEXTURE_2D,o.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,o.extTextureFilterAnisotropicMax)),e.state=\"loaded\",t.cacheEntryPossiblyAdded(this.dispatcher),i(null);}}));}abortTile(t,e){t.request&&(t.request.cancel(),delete t.request),e();}unloadTile(t,e){t.texture&&this.map.painter.saveTileTexture(t.texture),e();}hasTransition(){return !1}}let P;class z extends C{constructor(e,i,o,a){super(e,i,o,a),this.type=\"raster-dem\",this.maxzoom=22,this._options=t.extend({type:\"raster-dem\"},i),this.encoding=i.encoding||\"mapbox\";}serialize(){return {type:\"raster-dem\",url:this.url,tileSize:this.tileSize,tiles:this.tiles,bounds:this.bounds,encoding:this.encoding}}loadTile(e,i){const o=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);function a(t,o){t&&(e.state=\"errored\",i(t)),o&&(e.dem=o,e.needsHillshadePrepare=!0,e.state=\"loaded\",i(null));}e.request=t.getImage(this.map._requestManager.transformRequest(o,t.ResourceType.Tile),function(o,s){if(delete e.request,e.aborted)e.state=\"unloaded\",i(null);else if(o)e.state=\"errored\",i(o);else if(s){this.map._refreshExpiredTiles&&e.setExpiryData(s),delete s.cacheControl,delete s.expires;const i=t.isImageBitmap(s)&&(null==P&&(P=\"undefined\"!=typeof OffscreenCanvas&&new OffscreenCanvas(1,1).getContext(\"2d\")&&\"function\"==typeof createImageBitmap),P)?s:t.exported.getImageData(s,1),o={uid:e.uid,coord:e.tileID,source:this.id,rawImageData:i,encoding:this.encoding};e.actor&&\"expired\"!==e.state||(e.actor=this.dispatcher.getActor(),e.actor.send(\"loadDEMTile\",o,a.bind(this)));}}.bind(this)),e.neighboringTiles=this._getNeighboringTiles(e.tileID);}_getNeighboringTiles(e){const i=e.canonical,o=Math.pow(2,i.z),a=(i.x-1+o)%o,s=0===i.x?e.wrap-1:e.wrap,r=(i.x+1+o)%o,n=i.x+1===o?e.wrap+1:e.wrap,l={};return l[new t.OverscaledTileID(e.overscaledZ,s,i.z,a,i.y).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,n,i.z,r,i.y).key]={backfilled:!1},i.y>0&&(l[new t.OverscaledTileID(e.overscaledZ,s,i.z,a,i.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,i.z,i.x,i.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,n,i.z,r,i.y-1).key]={backfilled:!1}),i.y+1{if(this._pendingLoads--,this._removed||a&&a.abandoned)return;let s=null;if(a&&a.resourceTiming&&a.resourceTiming[this.id]&&(s=a.resourceTiming[this.id].slice(0)),this.actor.send(`${this.type}.coalesce`,{source:i.source},null),o)return void this.fire(new t.ErrorEvent(o));const r={dataType:\"source\",sourceDataType:e};this._collectResourceTiming&&s&&s.length>0&&t.extend(r,{resourceTiming:s}),this.fire(new t.Event(\"data\",r));}));}loaded(){return 0===this._pendingLoads}loadTile(t,e){const i=t.actor?\"reloadTile\":\"loadTile\";t.actor=this.actor;const o={type:this.type,uid:t.uid,tileID:t.tileID,zoom:t.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};t.request=this.actor.send(i,o,((o,a)=>(delete t.request,t.unloadVectorData(),t.aborted?e(null):o?e(o):(t.loadVectorData(a,this.map.painter,\"reloadTile\"===i),e(null)))));}abortTile(t){t.request&&(t.request.cancel(),delete t.request),t.aborted=!0;}unloadTile(t){t.unloadVectorData(),this.actor.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id});}onRemove(){this._removed=!0,this.actor.send(\"removeSource\",{type:this.type,source:this.id});}serialize(){return t.extend({},this._options,{type:this.type,data:this._data})}hasTransition(){return !1}}var A=t.createLayout([{name:\"a_pos\",type:\"Int16\",components:2},{name:\"a_texture_pos\",type:\"Int16\",components:2}]);class M extends t.Evented{constructor(t,e,i,o){super(),this.id=t,this.dispatcher=i,this.coordinates=e.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(o),this.options=e;}load(e,i){this._loaded=!1,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,t.getImage(this.map._requestManager.transformRequest(this.url,t.ResourceType.Image),((o,a)=>{this._loaded=!0,o?this.fire(new t.ErrorEvent(o)):a&&(this.image=a,e&&(this.coordinates=e),i&&i(),this._finishLoading());}));}loaded(){return this._loaded}updateImage(t){return this.image&&t.url?(this.options.url=t.url,this.load(t.coordinates,(()=>{this.texture=null;})),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})));}onAdd(t){this.map=t,this.load();}setCoordinates(e){this.coordinates=e;const i=e.map(t.MercatorCoordinate.fromLngLat);this.tileID=function(e){let i=1/0,o=1/0,a=-1/0,s=-1/0;for(const t of e)i=Math.min(i,t.x),o=Math.min(o,t.y),a=Math.max(a,t.x),s=Math.max(s,t.y);const r=Math.max(a-i,s-o),n=Math.max(0,Math.floor(-Math.log(r)/Math.LN2)),l=Math.pow(2,n);return new t.CanonicalTileID(n,Math.floor((i+a)/2*l),Math.floor((o+s)/2*l))}(i),this.minzoom=this.maxzoom=this.tileID.z;const o=i.map((t=>this.tileID.getTilePoint(t)._round()));return this._boundsArray=new t.RasterBoundsArray,this._boundsArray.emplaceBack(o[0].x,o[0].y,0,0),this._boundsArray.emplaceBack(o[1].x,o[1].y,t.EXTENT,0),this._boundsArray.emplaceBack(o[3].x,o[3].y,0,t.EXTENT),this._boundsArray.emplaceBack(o[2].x,o[2].y,t.EXTENT,t.EXTENT),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"content\"})),this}prepare(){if(0===Object.keys(this.tiles).length||!this.image)return;const e=this.map.painter.context,i=e.gl;this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,A.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture||(this.texture=new d(e,this.image,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE));for(const t in this.tiles){const e=this.tiles[t];\"loaded\"!==e.state&&(e.state=\"loaded\",e.texture=this.texture);}}loadTile(t,e){this.tileID&&this.tileID.equals(t.tileID.canonical)?(this.tiles[String(t.tileID.wrap)]=t,t.buckets={},e(null)):(t.state=\"errored\",e(null));}serialize(){return {type:\"image\",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return !1}}class L extends M{constructor(t,e,i,o){super(t,e,i,o),this.roundZoom=!0,this.type=\"video\",this.options=e;}load(){this._loaded=!1;const e=this.options;this.urls=[];for(const i of e.urls)this.urls.push(this.map._requestManager.transformRequest(i,t.ResourceType.Source).url);t.getVideo(this.urls,((e,i)=>{this._loaded=!0,e?this.fire(new t.ErrorEvent(e)):i&&(this.video=i,this.video.loop=!0,this.video.addEventListener(\"playing\",(()=>{this.map.triggerRepaint();})),this.map&&this.video.play(),this._finishLoading());}));}pause(){this.video&&this.video.pause();}play(){this.video&&this.video.play();}seek(e){if(this.video){const i=this.video.seekable;ei.end(0)?this.fire(new t.ErrorEvent(new t.ValidationError(`sources.${this.id}`,null,`Playback for this video can be set only between the ${i.start(0)} and ${i.end(0)}-second mark.`))):this.video.currentTime=e;}}getVideo(){return this.video}onAdd(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)));}prepare(){if(0===Object.keys(this.tiles).length||this.video.readyState<2)return;const e=this.map.painter.context,i=e.gl;this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,A.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,this.video)):(this.texture=new d(e,this.video,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE));for(const t in this.tiles){const e=this.tiles[t];\"loaded\"!==e.state&&(e.state=\"loaded\",e.texture=this.texture);}}serialize(){return {type:\"video\",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}}class R extends M{constructor(e,i,o,a){super(e,i,o,a),i.coordinates?Array.isArray(i.coordinates)&&4===i.coordinates.length&&!i.coordinates.some((t=>!Array.isArray(t)||2!==t.length||t.some((t=>\"number\"!=typeof t))))||this.fire(new t.ErrorEvent(new t.ValidationError(`sources.${e}`,null,'\"coordinates\" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.ErrorEvent(new t.ValidationError(`sources.${e}`,null,'missing required property \"coordinates\"'))),i.animate&&\"boolean\"!=typeof i.animate&&this.fire(new t.ErrorEvent(new t.ValidationError(`sources.${e}`,null,'optional \"animate\" property must be a boolean value'))),i.canvas?\"string\"==typeof i.canvas||i.canvas instanceof HTMLCanvasElement||this.fire(new t.ErrorEvent(new t.ValidationError(`sources.${e}`,null,'\"canvas\" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.ErrorEvent(new t.ValidationError(`sources.${e}`,null,'missing required property \"canvas\"'))),this.options=i,this.animate=void 0===i.animate||i.animate;}load(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.ErrorEvent(new Error(\"Canvas dimensions cannot be less than or equal to zero.\"))):(this.play=function(){this._playing=!0,this.map.triggerRepaint();},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1);},this._finishLoading());}getCanvas(){return this.canvas}onAdd(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play();}onRemove(){this.pause();}prepare(){let e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),this._hasInvalidDimensions())return;if(0===Object.keys(this.tiles).length)return;const i=this.map.painter.context,o=i.gl;this.boundsBuffer||(this.boundsBuffer=i.createVertexBuffer(this._boundsArray,A.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new d(i,this.canvas,o.RGBA,{premultiply:!0});for(const t in this.tiles){const e=this.tiles[t];\"loaded\"!==e.state&&(e.state=\"loaded\",e.texture=this.texture);}}serialize(){return {type:\"canvas\",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(const t of [this.canvas.width,this.canvas.height])if(isNaN(t)||t<=0)return !0;return !1}}const k={vector:S,raster:C,\"raster-dem\":z,geojson:D,video:L,image:M,canvas:R};function B(e,i){const o=t.create();return t.translate(o,o,[1,1,0]),t.scale(o,o,[.5*e.width,.5*e.height,1]),t.multiply(o,o,e.calculatePosMatrix(i.toUnwrapped()))}function F(t,e,i,o,a,s){const r=function(t,e,i){if(t)for(const o of t){const t=e[o];if(t&&t.source===i&&\"fill-extrusion\"===t.type)return !0}else for(const t in e){const o=e[t];if(o.source===i&&\"fill-extrusion\"===o.type)return !0}return !1}(a&&a.layers,e,t.id),n=s.maxPitchScaleFactor(),l=t.tilesIn(o,n,r);l.sort(O);const c=[];for(const o of l)c.push({wrappedTileID:o.tileID.wrapped().key,queryResults:o.tile.queryRenderedFeatures(e,i,t._state,o.queryGeometry,o.cameraQueryGeometry,o.scale,a,s,n,B(t.transform,o.tileID))});const h=function(t){const e={},i={};for(const o of t){const t=o.queryResults,a=o.wrappedTileID,s=i[a]=i[a]||{};for(const i in t){const o=t[i],a=s[i]=s[i]||{},r=e[i]=e[i]||[];for(const t of o)a[t.featureIndex]||(a[t.featureIndex]=!0,r.push(t));}}return e}(c);for(const e in h)h[e].forEach((e=>{const i=e.feature,o=t.getFeatureState(i.layer[\"source-layer\"],i.id);i.source=i.layer.source,i.layer[\"source-layer\"]&&(i.sourceLayer=i.layer[\"source-layer\"]),i.state=o;}));return h}function O(t,e){const i=t.tileID,o=e.tileID;return i.overscaledZ-o.overscaledZ||i.canonical.y-o.canonical.y||i.wrap-o.wrap||i.canonical.x-o.canonical.x}class U{constructor(e,i){this.tileID=e,this.uid=t.uniqueId(),this.uses=0,this.tileSize=i,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.expiredRequestCount=0,this.state=\"loading\";}registerFadeDuration(e){const i=e+this.timeAdded;ie.getLayer(t))).filter(Boolean);if(0!==t.length){o.layers=t,o.stateDependentLayerIds&&(o.stateDependentLayers=o.stateDependentLayerIds.map((e=>t.filter((t=>t.id===e))[0])));for(const e of t)i[e.id]=o;}}return i}(e.buckets,i.style),this.hasSymbolBuckets=!1;for(const e in this.buckets){const i=this.buckets[e];if(i instanceof t.SymbolBucket){if(this.hasSymbolBuckets=!0,!o)break;i.justReloaded=!0;}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const e in this.buckets){const i=this.buckets[e];if(i instanceof t.SymbolBucket&&i.hasRTLText){this.hasRTLText=!0,t.lazyLoadRTLTextPlugin();break}}this.queryPadding=0;for(const t in this.buckets){const e=this.buckets[t];this.queryPadding=Math.max(this.queryPadding,i.style.getLayer(t).queryRadius(e));}e.imageAtlas&&(this.imageAtlas=e.imageAtlas),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage);}else this.collisionBoxArray=new t.CollisionBoxArray;}unloadVectorData(){for(const t in this.buckets)this.buckets[t].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state=\"unloaded\";}getBucket(t){return this.buckets[t.id]}upload(t){for(const e in this.buckets){const i=this.buckets[e];i.uploadPending()&&i.upload(t);}const e=t.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new d(t,this.imageAtlas.image,e.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new d(t,this.glyphAtlasImage,e.ALPHA),this.glyphAtlasImage=null);}prepare(t){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(t,this.imageAtlasTexture);}queryRenderedFeatures(t,e,i,o,a,s,r,n,l,c){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:o,cameraQueryGeometry:a,scale:s,tileSize:this.tileSize,pixelPosMatrix:c,transform:n,params:r,queryPadding:this.queryPadding*l},t,e,i):{}}querySourceFeatures(e,i){const o=this.latestFeatureIndex;if(!o||!o.rawTileData)return;const a=o.loadVTLayers(),s=i?i.sourceLayer:\"\",r=a._geojsonTileLayer||a[s];if(!r)return;const n=t.createFilter(i&&i.filter),{z:l,x:c,y:h}=this.tileID.canonical,u={z:l,x:c,y:h};for(let i=0;it)e=!1;else if(i)if(this.expirationTime{this.remove(t,a);}),i)),this.data[o].push(a),this.order.push(o),this.order.length>this.max){const t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t);}return this}has(t){return t.wrapped().key in this.data}getAndRemove(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null}_getAndRemoveByKey(t){const e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value}getByKey(t){const e=this.data[t];return e?e[0].value:null}get(t){return this.has(t)?this.data[t.wrapped().key][0].value:null}remove(t,e){if(!this.has(t))return this;const i=t.wrapped().key,o=void 0===e?0:this.data[i].indexOf(e),a=this.data[i][o];return this.data[i].splice(o,1),a.timeout&&clearTimeout(a.timeout),0===this.data[i].length&&delete this.data[i],this.onRemove(a.value),this.order.splice(this.order.indexOf(i),1),this}setMaxSize(t){for(this.max=t;this.order.length>this.max;){const t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t);}return this}filter(t){const e=[];for(const i in this.data)for(const o of this.data[i])t(o.value)||e.push(o);for(const t of e)this.remove(t.value.tileID,t);}}class G{constructor(){this.state={},this.stateChanges={},this.deletedStates={};}updateState(e,i,o){const a=String(i);if(this.stateChanges[e]=this.stateChanges[e]||{},this.stateChanges[e][a]=this.stateChanges[e][a]||{},t.extend(this.stateChanges[e][a],o),null===this.deletedStates[e]){this.deletedStates[e]={};for(const t in this.state[e])t!==a&&(this.deletedStates[e][t]=null);}else if(this.deletedStates[e]&&null===this.deletedStates[e][a]){this.deletedStates[e][a]={};for(const t in this.state[e][a])o[t]||(this.deletedStates[e][a][t]=null);}else for(const t in o)this.deletedStates[e]&&this.deletedStates[e][a]&&null===this.deletedStates[e][a][t]&&delete this.deletedStates[e][a][t];}removeFeatureState(t,e,i){if(null===this.deletedStates[t])return;const o=String(e);if(this.deletedStates[t]=this.deletedStates[t]||{},i&&void 0!==e)null!==this.deletedStates[t][o]&&(this.deletedStates[t][o]=this.deletedStates[t][o]||{},this.deletedStates[t][o][i]=null);else if(void 0!==e)if(this.stateChanges[t]&&this.stateChanges[t][o])for(i in this.deletedStates[t][o]={},this.stateChanges[t][o])this.deletedStates[t][o][i]=null;else this.deletedStates[t][o]=null;else this.deletedStates[t]=null;}getState(e,i){const o=String(i),a=t.extend({},(this.state[e]||{})[o],(this.stateChanges[e]||{})[o]);if(null===this.deletedStates[e])return {};if(this.deletedStates[e]){const t=this.deletedStates[e][i];if(null===t)return {};for(const e in t)delete a[e];}return a}initializeTileState(t,e){t.setFeatureState(this.state,e);}coalesceChanges(e,i){const o={};for(const e in this.stateChanges){this.state[e]=this.state[e]||{};const i={};for(const o in this.stateChanges[e])this.state[e][o]||(this.state[e][o]={}),t.extend(this.state[e][o],this.stateChanges[e][o]),i[o]=this.state[e][o];o[e]=i;}for(const e in this.deletedStates){this.state[e]=this.state[e]||{};const i={};if(null===this.deletedStates[e])for(const t in this.state[e])i[t]={},this.state[e][t]={};else for(const t in this.deletedStates[e]){if(null===this.deletedStates[e][t])this.state[e][t]={};else for(const i of Object.keys(this.deletedStates[e][t]))delete this.state[e][t][i];i[t]=this.state[e][t];}o[e]=o[e]||{},t.extend(o[e],i);}if(this.stateChanges={},this.deletedStates={},0!==Object.keys(o).length)for(const t in e)e[t].setFeatureState(o,i);}}class Z extends t.Evented{constructor(e,i,o){super(),this.id=e,this.dispatcher=o,this.on(\"data\",(t=>{\"source\"===t.dataType&&\"metadata\"===t.sourceDataType&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&\"source\"===t.dataType&&\"content\"===t.sourceDataType&&(this.reload(),this.transform&&this.update(this.transform));})),this.on(\"dataloading\",(()=>{this._sourceErrored=!1;})),this.on(\"error\",(()=>{this._sourceErrored=this._source.loaded();})),this._source=function(e,i,o,a){const s=new k[i.type](e,i,o,a);if(s.id!==e)throw new Error(`Expected Source id to be ${e} instead of ${s.id}`);return t.bindAll([\"load\",\"abort\",\"unload\",\"serialize\",\"prepare\"],s),s}(e,i,o,this),this._tiles={},this._cache=new N(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new G;}onAdd(t){this.map=t,this._maxTileCacheSize=t?t._maxTileCacheSize:null,this._source&&this._source.onAdd&&this._source.onAdd(t);}onRemove(t){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(t);}loaded(){if(this._sourceErrored)return !0;if(!this._sourceLoaded)return !1;if(!this._source.loaded())return !1;for(const t in this._tiles){const e=this._tiles[t];if(\"loaded\"!==e.state&&\"errored\"!==e.state)return !1}return !0}getSource(){return this._source}pause(){this._paused=!0;}resume(){if(!this._paused)return;const t=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,t&&this.reload(),this.transform&&this.update(this.transform);}_loadTile(t,e){return this._source.loadTile(t,e)}_unloadTile(t){if(this._source.unloadTile)return this._source.unloadTile(t,(()=>{}))}_abortTile(e){this._source.abortTile&&this._source.abortTile(e,(()=>{})),this._source.fire(new t.Event(\"dataabort\",{tile:e,coord:e.tileID,dataType:\"source\"}));}serialize(){return this._source.serialize()}prepare(t){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(const e in this._tiles){const i=this._tiles[e];i.upload(t),i.prepare(this.map.style.imageManager);}}getIds(){return Object.values(this._tiles).map((t=>t.tileID)).sort(q).map((t=>t.key))}getRenderableIds(e){const i=[];for(const t in this._tiles)this._isIdRenderable(t,e)&&i.push(this._tiles[t]);return e?i.sort(((e,i)=>{const o=e.tileID,a=i.tileID,s=new t.pointGeometry(o.canonical.x,o.canonical.y)._rotate(this.transform.angle),r=new t.pointGeometry(a.canonical.x,a.canonical.y)._rotate(this.transform.angle);return o.overscaledZ-a.overscaledZ||r.y-s.y||r.x-s.x})).map((t=>t.tileID.key)):i.map((t=>t.tileID)).sort(q).map((t=>t.key))}hasRenderableParent(t){const e=this.findLoadedParent(t,0);return !!e&&this._isIdRenderable(e.tileID.key)}_isIdRenderable(t,e){return this._tiles[t]&&this._tiles[t].hasData()&&!this._coveredTiles[t]&&(e||!this._tiles[t].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else {this._cache.reset();for(const t in this._tiles)\"errored\"!==this._tiles[t].state&&this._reloadTile(t,\"reloading\");}}_reloadTile(t,e){const i=this._tiles[t];i&&(\"loading\"!==i.state&&(i.state=e),this._loadTile(i,this._tileLoaded.bind(this,i,t,e)));}_tileLoaded(e,i,o,a){if(a)return e.state=\"errored\",void(404!==a.status?this._source.fire(new t.ErrorEvent(a,{tile:e})):this.update(this.transform));e.timeAdded=t.exported.now(),\"expired\"===o&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(i,e),\"raster-dem\"===this.getSource().type&&e.dem&&this._backfillDEM(e),this._state.initializeTileState(e,this.map?this.map.painter:null),e.aborted||this._source.fire(new t.Event(\"data\",{dataType:\"source\",tile:e,coord:e.tileID}));}_backfillDEM(t){const e=this.getRenderableIds();for(let o=0;o1||(Math.abs(i)>1&&(1===Math.abs(i+a)?i+=a:1===Math.abs(i-a)&&(i-=a)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,i,o),t.neighboringTiles&&t.neighboringTiles[s]&&(t.neighboringTiles[s].backfilled=!0)));}}getTile(t){return this.getTileByID(t.key)}getTileByID(t){return this._tiles[t]}_retainLoadedChildren(t,e,i,o){for(const a in this._tiles){let s=this._tiles[a];if(o[a]||!s.hasData()||s.tileID.overscaledZ<=e||s.tileID.overscaledZ>i)continue;let r=s.tileID;for(;s&&s.tileID.overscaledZ>e+1;){const t=s.tileID.scaledTo(s.tileID.overscaledZ-1);s=this._tiles[t.key],s&&s.hasData()&&(r=t);}let n=r;for(;n.overscaledZ>e;)if(n=n.scaledTo(n.overscaledZ-1),t[n.key]){o[r.key]=r;break}}}findLoadedParent(t,e){if(t.key in this._loadedParentTiles){const i=this._loadedParentTiles[t.key];return i&&i.tileID.overscaledZ>=e?i:null}for(let i=t.overscaledZ-1;i>=e;i--){const e=t.scaledTo(i),o=this._getLoadedTile(e);if(o)return o}}_getLoadedTile(t){const e=this._tiles[t.key];return e&&e.hasData()?e:this._cache.getByKey(t.wrapped().key)}updateCacheSize(t){const e=Math.ceil(t.width/this._source.tileSize)+1,i=Math.ceil(t.height/this._source.tileSize)+1,o=Math.floor(e*i*5),a=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,o):o;this._cache.setMaxSize(a);}handleWrapJump(t){const e=Math.round((t-(void 0===this._prevLng?t:this._prevLng))/360);if(this._prevLng=t,e){const t={};for(const i in this._tiles){const o=this._tiles[i];o.tileID=o.tileID.unwrapTo(o.tileID.wrap+e),t[o.tileID.key]=o;}this._tiles=t;for(const t in this._timers)clearTimeout(this._timers[t]),delete this._timers[t];for(const t in this._tiles)this._setTileReloadTimer(t,this._tiles[t]);}}update(e){if(this.transform=e,!this._sourceLoaded||this._paused)return;let i;this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used?this._source.tileID?i=e.getVisibleUnwrappedCoordinates(this._source.tileID).map((e=>new t.OverscaledTileID(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y))):(i=e.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(i=i.filter((t=>this._source.hasTile(t))))):i=[];const o=e.coveringZoomLevel(this._source),a=Math.max(o-Z.maxOverzooming,this._source.minzoom),s=Math.max(o+Z.maxUnderzooming,this._source.minzoom),r=this._updateRetainedTiles(i,o);if(V(this._source.type)){const e={},i={},n=Object.keys(r);for(const o of n){const s=r[o],n=this._tiles[o];if(!n||n.fadeEndTime&&n.fadeEndTime<=t.exported.now())continue;const l=this.findLoadedParent(s,a);l&&(this._addTile(l.tileID),e[l.tileID.key]=l.tileID),i[o]=s;}this._retainLoadedChildren(i,o,s,r);for(const t in e)r[t]||(this._coveredTiles[t]=!0,r[t]=e[t]);}for(const t in r)this._tiles[t].clearFadeHold();const n=t.keysDifference(this._tiles,r);for(const t of n){const e=this._tiles[t];e.hasSymbolBuckets&&!e.holdingForFade()?e.setHoldDuration(this.map._fadeDuration):e.hasSymbolBuckets&&!e.symbolFadeFinished()||this._removeTile(t);}this._updateLoadedParentTileCache();}releaseSymbolFadeTiles(){for(const t in this._tiles)this._tiles[t].holdingForFade()&&this._removeTile(t);}_updateRetainedTiles(t,e){const i={},o={},a=Math.max(e-Z.maxOverzooming,this._source.minzoom),s=Math.max(e+Z.maxUnderzooming,this._source.minzoom),r={};for(const o of t){const t=this._addTile(o);i[o.key]=o,t.hasData()||ethis._source.maxzoom){const t=s.children(this._source.maxzoom)[0],e=this.getTile(t);if(e&&e.hasData()){i[t.key]=t;continue}}else {const t=s.children(this._source.maxzoom);if(i[t[0].key]&&i[t[1].key]&&i[t[2].key]&&i[t[3].key])continue}let r=t.wasRequested();for(let e=s.overscaledZ-1;e>=a;--e){const a=s.scaledTo(e);if(o[a.key])break;if(o[a.key]=!0,t=this.getTile(a),!t&&r&&(t=this._addTile(a)),t&&(i[a.key]=a,r=t.wasRequested(),t.hasData()))break}}return i}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(const t in this._tiles){const e=[];let i,o=this._tiles[t].tileID;for(;o.overscaledZ>0;){if(o.key in this._loadedParentTiles){i=this._loadedParentTiles[o.key];break}e.push(o.key);const t=o.scaledTo(o.overscaledZ-1);if(i=this._getLoadedTile(t),i)break;o=t;}for(const t of e)this._loadedParentTiles[t]=i;}}_addTile(e){let i=this._tiles[e.key];if(i)return i;i=this._cache.getAndRemove(e),i&&(this._setTileReloadTimer(e.key,i),i.tileID=e,this._state.initializeTileState(i,this.map?this.map.painter:null),this._cacheTimers[e.key]&&(clearTimeout(this._cacheTimers[e.key]),delete this._cacheTimers[e.key],this._setTileReloadTimer(e.key,i)));const o=i;return i||(i=new U(e,this._source.tileSize*e.overscaleFactor()),this._loadTile(i,this._tileLoaded.bind(this,i,e.key,i.state))),i.uses++,this._tiles[e.key]=i,o||this._source.fire(new t.Event(\"dataloading\",{tile:i,coord:i.tileID,dataType:\"source\"})),i}_setTileReloadTimer(t,e){t in this._timers&&(clearTimeout(this._timers[t]),delete this._timers[t]);const i=e.getExpiryTimeout();i&&(this._timers[t]=setTimeout((()=>{this._reloadTile(t,\"expired\"),delete this._timers[t];}),i));}_removeTile(t){const e=this._tiles[t];e&&(e.uses--,delete this._tiles[t],this._timers[t]&&(clearTimeout(this._timers[t]),delete this._timers[t]),e.uses>0||(e.hasData()&&\"reloading\"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))));}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const t in this._tiles)this._removeTile(t);this._cache.reset();}tilesIn(e,i,o){const a=[],s=this.transform;if(!s)return a;const r=o?s.getCameraQueryGeometry(e):e,n=e.map((t=>s.pointCoordinate(t))),l=r.map((t=>s.pointCoordinate(t))),c=this.getIds();let h=1/0,u=1/0,d=-1/0,m=-1/0;for(const t of l)h=Math.min(h,t.x),u=Math.min(u,t.y),d=Math.max(d,t.x),m=Math.max(m,t.y);for(let e=0;e=0&&f[1].y+p>=0){const t=n.map((t=>r.getTilePoint(t))),e=l.map((t=>r.getTilePoint(t)));a.push({tile:o,tileID:r,queryGeometry:t,cameraQueryGeometry:e,scale:_});}}return a}getVisibleCoordinates(t){const e=this.getRenderableIds(t).map((t=>this._tiles[t].tileID));for(const t of e)t.posMatrix=this.transform.calculatePosMatrix(t.toUnwrapped());return e}hasTransition(){if(this._source.hasTransition())return !0;if(V(this._source.type))for(const e in this._tiles){const i=this._tiles[e];if(void 0!==i.fadeEndTime&&i.fadeEndTime>=t.exported.now())return !0}return !1}setFeatureState(t,e,i){this._state.updateState(t=t||\"_geojsonTileLayer\",e,i);}removeFeatureState(t,e,i){this._state.removeFeatureState(t=t||\"_geojsonTileLayer\",e,i);}getFeatureState(t,e){return this._state.getState(t=t||\"_geojsonTileLayer\",e)}setDependencies(t,e,i){const o=this._tiles[t];o&&o.setDependencies(e,i);}reloadTilesForDependencies(t,e){for(const i in this._tiles)this._tiles[i].hasDependency(t,e)&&this._reloadTile(i,\"reloading\");this._cache.filter((i=>!i.hasDependency(t,e)));}}function q(t,e){const i=Math.abs(2*t.wrap)-+(t.wrap<0),o=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||o-i||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function V(t){return \"raster\"===t||\"image\"===t||\"video\"===t}Z.maxOverzooming=10,Z.maxUnderzooming=3;const j=\"mapboxgl_preloaded_worker_pool\";class ${constructor(){this.active={};}acquire(t){if(!this.workers)for(this.workers=[];this.workers.length<$.workerCount;)this.workers.push(new Worker(va.workerUrl));return this.active[t]=!0,this.workers.slice()}release(t){delete this.active[t],0===this.numActive()&&(this.workers.forEach((t=>{t.terminate();})),this.workers=null);}isPreloaded(){return !!this.active[j]}numActive(){return Object.keys(this.active).length}}const W=Math.floor(t.exported.hardwareConcurrency/2);let X;function H(){return X||(X=new $),X}function K(e,i){const o={};for(const t in e)\"ref\"!==t&&(o[t]=e[t]);return t.refProperties.forEach((t=>{t in i&&(o[t]=i[t]);})),o}function Y(t){t=t.slice();const e=Object.create(null);for(let i=0;i0?(a-r)/n:0;return this.points[s].mult(1-l).add(this.points[i].mult(l))}}function nt(t,e){let i=!0;return \"always\"===t||\"never\"!==t&&\"never\"!==e||(i=!1),i}class lt{constructor(t,e,i){const o=this.boxCells=[],a=this.circleCells=[];this.xCellCount=Math.ceil(t/i),this.yCellCount=Math.ceil(e/i);for(let t=0;tthis.width||o<0||e>this.height)return [];const n=[];if(t<=0&&e<=0&&this.width<=i&&this.height<=o){if(a)return [{key:null,x1:t,y1:e,x2:i,y2:o}];for(let t=0;t0}hitTestCircle(t,e,i,o,a){const s=t-i,r=t+i,n=e-i,l=e+i;if(r<0||s>this.width||l<0||n>this.height)return !1;const c=[];return this._forEachCell(s,n,r,l,this._queryCellCircle,c,{hitTest:!0,overlapMode:o,circle:{x:t,y:e,radius:i},seenUids:{box:{},circle:{}}},a),c.length>0}_queryCell(t,e,i,o,a,s,r,n){const{seenUids:l,hitTest:c,overlapMode:h}=r,u=this.boxCells[a];if(null!==u){const a=this.bboxes;for(const r of u)if(!l.box[r]){l.box[r]=!0;const u=4*r,d=this.boxKeys[r];if(t<=a[u+2]&&e<=a[u+3]&&i>=a[u+0]&&o>=a[u+1]&&(!n||n(d))&&(!c||!nt(h,d.overlapMode))&&(s.push({key:d,x1:a[u],y1:a[u+1],x2:a[u+2],y2:a[u+3]}),c))return !0}}const d=this.circleCells[a];if(null!==d){const a=this.circles;for(const r of d)if(!l.circle[r]){l.circle[r]=!0;const u=3*r,d=this.circleKeys[r];if(this._circleAndRectCollide(a[u],a[u+1],a[u+2],t,e,i,o)&&(!n||n(d))&&(!c||!nt(h,d.overlapMode))){const t=a[u],e=a[u+1],i=a[u+2];if(s.push({key:d,x1:t-i,y1:e-i,x2:t+i,y2:e+i}),c)return !0}}}return !1}_queryCellCircle(t,e,i,o,a,s,r,n){const{circle:l,seenUids:c,overlapMode:h}=r,u=this.boxCells[a];if(null!==u){const t=this.bboxes;for(const e of u)if(!c.box[e]){c.box[e]=!0;const i=4*e,o=this.boxKeys[e];if(this._circleAndRectCollide(l.x,l.y,l.radius,t[i+0],t[i+1],t[i+2],t[i+3])&&(!n||n(o))&&!nt(h,o.overlapMode))return s.push(!0),!0}}const d=this.circleCells[a];if(null!==d){const t=this.circles;for(const e of d)if(!c.circle[e]){c.circle[e]=!0;const i=3*e,o=this.circleKeys[e];if(this._circlesCollide(t[i],t[i+1],t[i+2],l.x,l.y,l.radius)&&(!n||n(o))&&!nt(h,o.overlapMode))return s.push(!0),!0}}}_forEachCell(t,e,i,o,a,s,r,n){const l=this._convertToXCellCoord(t),c=this._convertToYCellCoord(e),h=this._convertToXCellCoord(i),u=this._convertToYCellCoord(o);for(let d=l;d<=h;d++)for(let l=c;l<=u;l++)if(a.call(this,t,e,i,o,this.xCellCount*l+d,s,r,n))return}_convertToXCellCoord(t){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(t*this.xScale)))}_convertToYCellCoord(t){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(t*this.yScale)))}_circlesCollide(t,e,i,o,a,s){const r=o-t,n=a-e,l=i+s;return l*l>r*r+n*n}_circleAndRectCollide(t,e,i,o,a,s,r){const n=(s-o)/2,l=Math.abs(t-(o+n));if(l>n+i)return !1;const c=(r-a)/2,h=Math.abs(e-(a+c));if(h>c+i)return !1;if(l<=n||h<=c)return !0;const u=l-n,d=h-c;return u*u+d*d<=i*i}}function ct(e,i,o,a,s){const r=t.create();return i?(t.scale(r,r,[1/s,1/s,1]),o||t.rotateZ(r,r,a.angle)):t.multiply(r,a.labelPlaneMatrix,e),r}function ht(e,i,o,a,s){if(i){const i=t.clone(e);return t.scale(i,i,[s,s,1]),o||t.rotateZ(i,i,-a.angle),i}return a.glCoordMatrix}function ut(e,i){const o=[e.x,e.y,0,1];wt(o,o,i);const a=o[3];return {point:new t.pointGeometry(o[0]/a,o[1]/a),signedDistanceFromCamera:a}}function dt(t,e){return .5+t/e*.5}function mt(t,e){const i=t[0]/t[3],o=t[1]/t[3];return i>=-e[0]&&i<=e[0]&&o>=-e[1]&&o<=e[1]}function _t(e,i,o,a,s,r,n,l,c){const h=a?e.textSizeData:e.iconSizeData,u=t.evaluateSizeForZoom(h,o.transform.zoom),d=[256/o.width*2+1,256/o.height*2+1],m=a?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;m.clear();const _=e.lineVertexArray,p=a?e.text.placedSymbolArray:e.icon.placedSymbolArray,f=o.transform.width/o.transform.height;let g=!1;for(let a=0;aMath.abs(o.x-i.x)*a?{useVertical:!0}:(e===t.WritingMode.vertical?i.yo.x)?{needsFlipping:!0}:null}function gt(e,i,o,a,s,r,n,l,c,h,u,d,m,_,p){const f=i/24,g=e.lineOffsetX*f,x=e.lineOffsetY*f;let v;if(e.numGlyphs>1){const t=e.glyphStartIndex+e.numGlyphs,i=e.lineStartIndex,s=e.lineStartIndex+e.lineLength,h=pt(f,l,g,x,o,u,d,e,c,r,m,p);if(!h)return {notEnoughRoom:!0};const y=ut(h.first.point,n).point,b=ut(h.last.point,n).point;if(a&&!o){const t=ft(e.writingMode,y,b,_);if(t)return t}v=[h.first];for(let a=e.glyphStartIndex+1;a0?r.point:xt(d,a,i,1,s),l=ft(e.writingMode,i,n,_);if(l)return l}const i=vt(f*l.getoffsetX(e.glyphStartIndex),g,x,o,u,d,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,c,r,m,p);if(!i)return {notEnoughRoom:!0};v=[i];}for(const e of v)t.addDynamicAttributes(h,e.point,e.angle);return {}}function xt(t,e,i,o,a){const s=ut(t.add(t.sub(e)._unit()),a).point,r=i.sub(s);return i.add(r._mult(o/r.mag()))}function vt(e,i,o,a,s,r,n,l,c,h,u,d,m){const _=a?e-i:e+i;let p=_>0?1:-1,f=0;a&&(p*=-1,f=Math.PI),p<0&&(f+=Math.PI);let g=p>0?l+n:l+n+1,x=s,v=s,y=0,b=0;const w=Math.abs(_),T=[];for(;y+b<=w;){if(g+=p,g=c)return null;if(v=x,T.push(x),x=d[g],void 0===x){const e=new t.pointGeometry(h.getx(g),h.gety(g)),i=ut(e,u);if(i.signedDistanceFromCamera>0)x=d[g]=i.point;else {const i=g-p;x=xt(0===y?r:new t.pointGeometry(h.getx(i),h.gety(i)),e,v,w-y+1,u);}}y+=b,b=v.dist(x);}const E=(w-y)/b,I=x.sub(v),S=I.mult(E)._add(v);S._add(I._unit()._perp()._mult(o*p));const C=f+Math.atan2(x.y-v.y,x.x-v.x);return T.push(S),{point:S,angle:m?C:0,path:T}}const yt=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function bt(t,e){for(let i=0;i=1;t--)h.push(r.path[t]);for(let t=1;tut(t,l)));h=t.some((t=>t.signedDistanceFromCamera<=0))?[]:t.map((t=>t.point));}let f=[];if(h.length>0){const e=h[0].clone(),i=h[0].clone();for(let t=1;t=o.x&&i.x<=a.x&&e.y>=o.y&&i.y<=a.y?[h]:i.xa.x||i.ya.y?[]:t.clipLine([h],o.x,o.y,a.x,a.y);}for(const t of f){s.reset(t,.25*i);let o=0;o=s.length<=.5*i?1:Math.ceil(s.paddedLength/p)+1;for(let t=0;t=this.screenRightBoundary||othis.screenBottomBoundary}isInsideGrid(t,e,i,o){return i>=0&&t=0&&et.collisionGroupID===e};}return this.collisionGroups[t]}}function Mt(e,i,o,a,s){const{horizontalAlign:r,verticalAlign:n}=t.getAnchorAlignment(e),l=-(r-.5)*i,c=-(n-.5)*o,h=t.evaluateVariableOffset(e,a);return new t.pointGeometry(l+h[0]*s,c+h[1]*s)}function Lt(e,i,o,a,s,r){const{x1:n,x2:l,y1:c,y2:h,anchorPointX:u,anchorPointY:d}=e,m=new t.pointGeometry(i,o);return a&&m._rotate(s?r:-r),{x1:n+m.x,y1:c+m.y,x2:l+m.x,y2:h+m.y,anchorPointX:u,anchorPointY:d}}class Rt{constructor(t,e,i,o){this.transform=t.clone(),this.collisionIndex=new Et(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=e,this.retainedQueryData={},this.collisionGroups=new At(i),this.collisionCircleArrays={},this.prevPlacement=o,o&&(o.prevPlacement=void 0),this.placedOrientations={};}getBucketParts(e,i,o,a){const s=o.getBucket(i),r=o.latestFeatureIndex;if(!s||!r||i.id!==s.layerIds[0])return;const n=o.collisionBoxArray,l=s.layers[0].layout,c=Math.pow(2,this.transform.zoom-o.tileID.overscaledZ),h=o.tileSize/t.EXTENT,u=this.transform.calculatePosMatrix(o.tileID.toUnwrapped()),d=\"map\"===l.get(\"text-pitch-alignment\"),m=\"map\"===l.get(\"text-rotation-alignment\"),_=It(o,1,this.transform.zoom),p=ct(u,d,m,this.transform,_);let f=null;if(d){const e=ht(u,d,m,this.transform,_);f=t.multiply([],this.transform.labelPlaneMatrix,e);}this.retainedQueryData[s.bucketInstanceId]=new Dt(s.bucketInstanceId,r,s.sourceLayerIndex,s.index,o.tileID);const g={bucket:s,layout:l,posMatrix:u,textLabelPlaneMatrix:p,labelToScreenMatrix:f,scale:c,textPixelRatio:h,holdingForFade:o.holdingForFade(),collisionBoxArray:n,partiallyEvaluatedTextSize:t.evaluateSizeForZoom(s.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(s.sourceID)};if(a)for(const t of s.sortKeyRanges){const{sortKey:i,symbolInstanceStart:o,symbolInstanceEnd:a}=t;e.push({sortKey:i,symbolInstanceStart:o,symbolInstanceEnd:a,parameters:g});}else e.push({symbolInstanceStart:0,symbolInstanceEnd:s.symbolInstances.length,parameters:g});}attemptAnchorPlacement(t,e,i,o,a,s,r,n,l,c,h,u,d,m,_){const p=[u.textOffset0,u.textOffset1],f=Mt(t,i,o,p,a),g=this.collisionIndex.placeCollisionBox(Lt(e,f.x,f.y,s,r,this.transform.angle),h,n,l,c.predicate);if((!_||0!==this.collisionIndex.placeCollisionBox(Lt(_,f.x,f.y,s,r,this.transform.angle),h,n,l,c.predicate).box.length)&&g.box.length>0){let e;return this.prevPlacement&&this.prevPlacement.variableOffsets[u.crossTileID]&&this.prevPlacement.placements[u.crossTileID]&&this.prevPlacement.placements[u.crossTileID].text&&(e=this.prevPlacement.variableOffsets[u.crossTileID].anchor),this.variableOffsets[u.crossTileID]={textOffset:p,width:i,height:o,anchor:t,textBoxScale:a,prevAnchor:e},this.markUsedJustification(d,t,u,m),d.allowVerticalPlacement&&(this.markUsedOrientation(d,m,u),this.placedOrientations[u.crossTileID]=m),{shift:f,placedGlyphBoxes:g}}}placeLayerBucketPart(e,i,o){const{bucket:a,layout:s,posMatrix:r,textLabelPlaneMatrix:n,labelToScreenMatrix:l,textPixelRatio:c,holdingForFade:h,collisionBoxArray:u,partiallyEvaluatedTextSize:d,collisionGroup:m}=e.parameters,_=s.get(\"text-optional\"),p=s.get(\"icon-optional\"),f=t.getOverlapMode(s,\"text-overlap\",\"text-allow-overlap\"),g=\"always\"===f,x=t.getOverlapMode(s,\"icon-overlap\",\"icon-allow-overlap\"),v=\"always\"===x,y=\"map\"===s.get(\"text-rotation-alignment\"),b=\"map\"===s.get(\"text-pitch-alignment\"),w=\"none\"!==s.get(\"icon-text-fit\"),T=\"viewport-y\"===s.get(\"symbol-z-order\"),E=g&&(v||!a.hasIconData()||p),I=v&&(g||!a.hasTextData()||_);!a.collisionArrays&&u&&a.deserializeCollisionBoxes(u);const S=(e,u)=>{if(i[e.crossTileID])return;if(h)return void(this.placements[e.crossTileID]=new Pt(!1,!1,!1));let v=!1,T=!1,S=!0,C=null,P={box:null,offscreen:null},z={box:null,offscreen:null},D=null,A=null,M=null,L=0,R=0,k=0;u.textFeatureIndex?L=u.textFeatureIndex:e.useRuntimeCollisionCircles&&(L=e.featureIndex),u.verticalTextFeatureIndex&&(R=u.verticalTextFeatureIndex);const B=u.textBox;if(B){const i=i=>{let o=t.WritingMode.horizontal;if(a.allowVerticalPlacement&&!i&&this.prevPlacement){const t=this.prevPlacement.placedOrientations[e.crossTileID];t&&(this.placedOrientations[e.crossTileID]=t,o=t,this.markUsedOrientation(a,o,e));}return o},o=(i,o)=>{if(a.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&u.verticalTextBox){for(const e of a.writingModes)if(e===t.WritingMode.vertical?(P=o(),z=P):P=i(),P&&P.box&&P.box.length)break}else P=i();};if(s.get(\"text-variable-anchor\")){let n=s.get(\"text-variable-anchor\");if(this.prevPlacement&&this.prevPlacement.variableOffsets[e.crossTileID]){const t=this.prevPlacement.variableOffsets[e.crossTileID];n.indexOf(t.anchor)>0&&(n=n.filter((e=>e!==t.anchor)),n.unshift(t.anchor));}const l=(t,i,o)=>{const s=t.x2-t.x1,l=t.y2-t.y1,h=e.textBoxScale,u=w&&\"never\"===x?i:null;let d={box:[],offscreen:!1};const _=\"never\"!==f?2*n.length:n.length;for(let i=0;i<_;++i){const _=this.attemptAnchorPlacement(n[i%n.length],t,s,l,h,y,b,c,r,m,i>=n.length?f:\"never\",e,a,o,u);if(_&&(d=_.placedGlyphBoxes,d&&d.box&&d.box.length)){v=!0,C=_.shift;break}}return d};o((()=>l(B,u.iconBox,t.WritingMode.horizontal)),(()=>{const i=u.verticalTextBox;return a.allowVerticalPlacement&&!(P&&P.box&&P.box.length)&&e.numVerticalGlyphVertices>0&&i?l(i,u.verticalIconBox,t.WritingMode.vertical):{box:null,offscreen:null}})),P&&(v=P.box,S=P.offscreen);const h=i(P&&P.box);if(!v&&this.prevPlacement){const t=this.prevPlacement.variableOffsets[e.crossTileID];t&&(this.variableOffsets[e.crossTileID]=t,this.markUsedJustification(a,t.anchor,e,h));}}else {const s=(t,i)=>{const o=this.collisionIndex.placeCollisionBox(t,f,c,r,m.predicate);return o&&o.box&&o.box.length&&(this.markUsedOrientation(a,i,e),this.placedOrientations[e.crossTileID]=i),o};o((()=>s(B,t.WritingMode.horizontal)),(()=>{const i=u.verticalTextBox;return a.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&i?s(i,t.WritingMode.vertical):{box:null,offscreen:null}})),i(P&&P.box&&P.box.length);}}if(D=P,v=D&&D.box&&D.box.length>0,S=D&&D.offscreen,e.useRuntimeCollisionCircles){const i=a.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),c=t.evaluateSizeForFeature(a.textSizeData,d,i),h=s.get(\"text-padding\");A=this.collisionIndex.placeCollisionCircles(f,i,a.lineVertexArray,a.glyphOffsetArray,c,r,n,l,o,b,m.predicate,e.collisionCircleDiameter,h),v=g||A.circles.length>0&&!A.collisionDetected,S=S&&A.offscreen;}if(u.iconFeatureIndex&&(k=u.iconFeatureIndex),u.iconBox){const t=t=>{const e=w&&C?Lt(t,C.x,C.y,y,b,this.transform.angle):t;return this.collisionIndex.placeCollisionBox(e,x,c,r,m.predicate)};z&&z.box&&z.box.length&&u.verticalIconBox?(M=t(u.verticalIconBox),T=M.box.length>0):(M=t(u.iconBox),T=M.box.length>0),S=S&&M.offscreen;}const F=_||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,O=p||0===e.numIconVertices;if(F||O?O?F||(T=T&&v):v=T&&v:T=v=T&&v,v&&D&&D.box&&this.collisionIndex.insertCollisionBox(D.box,f,s.get(\"text-ignore-placement\"),a.bucketInstanceId,z&&z.box&&R?R:L,m.ID),T&&M&&this.collisionIndex.insertCollisionBox(M.box,x,s.get(\"icon-ignore-placement\"),a.bucketInstanceId,k,m.ID),A&&(v&&this.collisionIndex.insertCollisionCircles(A.circles,f,s.get(\"text-ignore-placement\"),a.bucketInstanceId,L,m.ID),o)){const t=a.bucketInstanceId;let e=this.collisionCircleArrays[t];void 0===e&&(e=this.collisionCircleArrays[t]=new zt);for(let t=0;t=0;--e){const i=t[e];S(a.symbolInstances.get(i),a.collisionArrays[i]);}}else for(let t=e.symbolInstanceStart;t=0&&(e.text.placedSymbolArray.get(t).crossTileID=s>=0&&t!==s?0:o.crossTileID);}markUsedOrientation(e,i,o){const a=i===t.WritingMode.horizontal||i===t.WritingMode.horizontalOnly?i:0,s=i===t.WritingMode.vertical?i:0,r=[o.leftJustifiedTextSymbolIndex,o.centerJustifiedTextSymbolIndex,o.rightJustifiedTextSymbolIndex];for(const t of r)e.text.placedSymbolArray.get(t).placedOrientation=a;o.verticalPlacedTextSymbolIndex&&(e.text.placedSymbolArray.get(o.verticalPlacedTextSymbolIndex).placedOrientation=s);}commit(t){this.commitTime=t,this.zoomAtLastRecencyCheck=this.transform.zoom;const e=this.prevPlacement;let i=!1;this.prevZoomAdjustment=e?e.zoomAdjustment(this.transform.zoom):0;const o=e?e.symbolFadeChange(t):1,a=e?e.opacities:{},s=e?e.variableOffsets:{},r=e?e.placedOrientations:{};for(const t in this.placements){const e=this.placements[t],s=a[t];s?(this.opacities[t]=new Ct(s,o,e.text,e.icon),i=i||e.text!==s.text.placed||e.icon!==s.icon.placed):(this.opacities[t]=new Ct(null,o,e.text,e.icon,e.skipFade),i=i||e.text||e.icon);}for(const t in a){const e=a[t];if(!this.opacities[t]){const a=new Ct(e,o,!1,!1);a.isHidden()||(this.opacities[t]=a,i=i||e.text.placed||e.icon.placed);}}for(const t in s)this.variableOffsets[t]||!this.opacities[t]||this.opacities[t].isHidden()||(this.variableOffsets[t]=s[t]);for(const t in r)this.placedOrientations[t]||!this.opacities[t]||this.opacities[t].isHidden()||(this.placedOrientations[t]=r[t]);i?this.lastPlacementChangeTime=t:\"number\"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=e?e.lastPlacementChangeTime:t);}updateLayerOpacities(t,e){const i={};for(const o of e){const e=o.getBucket(t);e&&o.latestFeatureIndex&&t.id===e.layerIds[0]&&this.updateBucketOpacities(e,i,o.collisionBoxArray);}}updateBucketOpacities(e,i,o){e.hasTextData()&&e.text.opacityVertexArray.clear(),e.hasIconData()&&e.icon.opacityVertexArray.clear(),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexArray.clear(),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexArray.clear();const a=e.layers[0].layout,s=new Ct(null,0,!1,!1,!0),r=a.get(\"text-allow-overlap\"),n=a.get(\"icon-allow-overlap\"),l=a.get(\"text-variable-anchor\"),c=\"map\"===a.get(\"text-rotation-alignment\"),h=\"map\"===a.get(\"text-pitch-alignment\"),u=\"none\"!==a.get(\"icon-text-fit\"),d=new Ct(null,0,r&&(n||!e.hasIconData()||a.get(\"icon-optional\")),n&&(r||!e.hasTextData()||a.get(\"text-optional\")),!0);!e.collisionArrays&&o&&(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData())&&e.deserializeCollisionBoxes(o);const m=(t,e,i)=>{for(let o=0;o0,g=this.placedOrientations[a.crossTileID],x=g===t.WritingMode.vertical,v=g===t.WritingMode.horizontal||g===t.WritingMode.horizontalOnly;if(r>0||n>0){const t=qt(p.text);m(e.text,r,x?Vt:t),m(e.text,n,v?Vt:t);const i=p.text.isHidden();[a.rightJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.leftJustifiedTextSymbolIndex].forEach((t=>{t>=0&&(e.text.placedSymbolArray.get(t).hidden=i||x?1:0);})),a.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(a.verticalPlacedTextSymbolIndex).hidden=i||v?1:0);const o=this.variableOffsets[a.crossTileID];o&&this.markUsedJustification(e,o.anchor,a,g);const s=this.placedOrientations[a.crossTileID];s&&(this.markUsedJustification(e,\"left\",a,s),this.markUsedOrientation(e,s,a));}if(f){const t=qt(p.icon),i=!(u&&a.verticalPlacedIconSymbolIndex&&x);a.placedIconSymbolIndex>=0&&(m(e.icon,a.numIconVertices,i?t:Vt),e.icon.placedSymbolArray.get(a.placedIconSymbolIndex).hidden=p.icon.isHidden()),a.verticalPlacedIconSymbolIndex>=0&&(m(e.icon,a.numVerticalIconVertices,i?Vt:t),e.icon.placedSymbolArray.get(a.verticalPlacedIconSymbolIndex).hidden=p.icon.isHidden());}if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){const i=e.collisionArrays[o];if(i){let o=new t.pointGeometry(0,0);if(i.textBox||i.verticalTextBox){let t=!0;if(l){const e=this.variableOffsets[_];e?(o=Mt(e.anchor,e.width,e.height,e.textOffset,e.textBoxScale),c&&o._rotate(h?this.transform.angle:-this.transform.angle)):t=!1;}i.textBox&&kt(e.textCollisionBox.collisionVertexArray,p.text.placed,!t||x,o.x,o.y),i.verticalTextBox&&kt(e.textCollisionBox.collisionVertexArray,p.text.placed,!t||v,o.x,o.y);}const a=Boolean(!v&&i.verticalIconBox);i.iconBox&&kt(e.iconCollisionBox.collisionVertexArray,p.icon.placed,a,u?o.x:0,u?o.y:0),i.verticalIconBox&&kt(e.iconCollisionBox.collisionVertexArray,p.icon.placed,!a,u?o.x:0,u?o.y:0);}}}if(e.sortFeatures(this.transform.angle),this.retainedQueryData[e.bucketInstanceId]&&(this.retainedQueryData[e.bucketInstanceId].featureSortOrder=e.featureSortOrder),e.hasTextData()&&e.text.opacityVertexBuffer&&e.text.opacityVertexBuffer.updateData(e.text.opacityVertexArray),e.hasIconData()&&e.icon.opacityVertexBuffer&&e.icon.opacityVertexBuffer.updateData(e.icon.opacityVertexArray),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexBuffer&&e.iconCollisionBox.collisionVertexBuffer.updateData(e.iconCollisionBox.collisionVertexArray),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexBuffer&&e.textCollisionBox.collisionVertexBuffer.updateData(e.textCollisionBox.collisionVertexArray),e.bucketInstanceId in this.collisionCircleArrays){const t=this.collisionCircleArrays[e.bucketInstanceId];e.placementInvProjMatrix=t.invProjMatrix,e.placementViewportMatrix=t.viewportMatrix,e.collisionCircleArray=t.circles,delete this.collisionCircleArrays[e.bucketInstanceId];}}symbolFadeChange(t){return 0===this.fadeDuration?1:(t-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(t){return Math.max(0,(this.transform.zoom-t)/1.5)}hasTransitions(t){return this.stale||t-this.lastPlacementChangeTimet}setStale(){this.stale=!0;}}function kt(t,e,i,o,a){t.emplaceBack(e?1:0,i?1:0,o||0,a||0),t.emplaceBack(e?1:0,i?1:0,o||0,a||0),t.emplaceBack(e?1:0,i?1:0,o||0,a||0),t.emplaceBack(e?1:0,i?1:0,o||0,a||0);}const Bt=Math.pow(2,25),Ft=Math.pow(2,24),Ot=Math.pow(2,17),Ut=Math.pow(2,16),Nt=Math.pow(2,9),Gt=Math.pow(2,8),Zt=Math.pow(2,1);function qt(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;const e=t.placed?1:0,i=Math.floor(127*t.opacity);return i*Bt+e*Ft+i*Ot+e*Ut+i*Nt+e*Gt+i*Zt+e}const Vt=0;class jt{constructor(t){this._sortAcrossTiles=\"viewport-y\"!==t.layout.get(\"symbol-z-order\")&&!t.layout.get(\"symbol-sort-key\").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[];}continuePlacement(t,e,i,o,a){const s=this._bucketParts;for(;this._currentTileIndext.sortKey-e.sortKey)));this._currentPartIndex{const e=t.exported.now()-a;return !this._forceFullPlacement&&e>2};for(;this._currentPlacementIndex>=0;){const t=i[e[this._currentPlacementIndex]],a=this.placement.collisionIndex.transform.zoom;if(\"symbol\"===t.type&&(!t.minzoom||t.minzoom<=a)&&(!t.maxzoom||t.maxzoom>a)){if(this._inProgressLayer||(this._inProgressLayer=new jt(t)),this._inProgressLayer.continuePlacement(o[t.source],this.placement,this._showCollisionBoxes,t,s))return;delete this._inProgressLayer;}this._currentPlacementIndex--;}this._done=!0;}commit(t){return this.placement.commit(t),this.placement}}const Wt=512/t.EXTENT/2;class Xt{constructor(t,e,i){this.tileID=t,this.indexedSymbolInstances={},this.bucketInstanceId=i;for(let i=0;it.overscaledZ)for(const i in a){const s=a[i];s.tileID.isChildOf(t)&&s.findMatches(e.symbolInstances,t,o);}else {const s=a[t.scaledTo(Number(i)).key];s&&s.findMatches(e.symbolInstances,t,o);}}for(let t=0;t{e[t]=!0;}));for(const t in this.layerIndexes)e[t]||delete this.layerIndexes[t];}}const Jt=(e,i)=>t.emitValidationErrors(e,i&&i.filter((t=>\"source.canvas\"!==t.identifier))),Qt=t.pick(J,[\"addLayer\",\"removeLayer\",\"setPaintProperty\",\"setLayoutProperty\",\"setFilter\",\"addSource\",\"removeSource\",\"setLayerZoomRange\",\"setLight\",\"setTransition\",\"setGeoJSONSourceData\"]),te=t.pick(J,[\"setCenter\",\"setZoom\",\"setBearing\",\"setPitch\"]),ee=function(){const e={},i=t.spec.$version;for(const o in t.spec.$root){const a=t.spec.$root[o];if(a.required){let t=null;t=\"version\"===o?i:\"array\"===a.type?[]:{},null!=t&&(e[o]=t);}}return e}();class ie extends t.Evented{constructor(e,i={}){super(),this.map=e,this.dispatcher=new T(H(),this),this.imageManager=new _,this.imageManager.setEventedParent(this),this.glyphManager=new x(e._requestManager,i.localIdeographFontFamily),this.lineAtlas=new w(256,512),this.crossTileSymbolIndex=new Yt,this._layers={},this._serializedLayers={},this._order=[],this.sourceCaches={},this.zoomHistory=new t.ZoomHistory,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast(\"setReferrer\",t.getReferrer());const o=this;this._rtlTextPluginCallback=ie.registerForPluginStateChange((e=>{o.dispatcher.broadcast(\"syncRTLPluginState\",{pluginStatus:e.pluginStatus,pluginURL:e.pluginURL},((e,i)=>{if(t.triggerPluginCompletionEvent(e),i&&i.every((t=>t)))for(const t in o.sourceCaches)o.sourceCaches[t].reload();}));})),this.on(\"data\",(t=>{if(\"source\"!==t.dataType||\"metadata\"!==t.sourceDataType)return;const e=this.sourceCaches[t.sourceId];if(!e)return;const i=e.getSource();if(i&&i.vectorLayerIds)for(const t in this._layers){const e=this._layers[t];e.source===i.id&&this._validateLayer(e);}}));}loadURL(e,i={}){this.fire(new t.Event(\"dataloading\",{dataType:\"style\"}));const o=\"boolean\"!=typeof i.validate||i.validate,a=this.map._requestManager.transformRequest(e,t.ResourceType.Style);this._request=t.getJSON(a,((e,i)=>{this._request=null,e?this.fire(new t.ErrorEvent(e)):i&&this._load(i,o);}));}loadJSON(e,i={}){this.fire(new t.Event(\"dataloading\",{dataType:\"style\"})),this._request=t.exported.frame((()=>{this._request=null,this._load(e,!1!==i.validate);}));}loadEmpty(){this.fire(new t.Event(\"dataloading\",{dataType:\"style\"})),this._load(ee,!1);}_load(e,i){if(i&&Jt(this,t.validateStyle(e)))return;this._loaded=!0,this.stylesheet=e;for(const t in e.sources)this.addSource(t,e.sources[t],{validate:!1});e.sprite?this._loadSprite(e.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(e.glyphs);const o=Y(this.stylesheet.layers);this._order=o.map((t=>t.id)),this._layers={},this._serializedLayers={};for(let e of o)e=t.createStyleLayer(e),e.setEventedParent(this,{layer:{id:e.id}}),this._layers[e.id]=e,this._serializedLayers[e.id]=e.serialize();this.dispatcher.broadcast(\"setLayers\",this._serializeLayers(this._order)),this.light=new b(this.stylesheet.light),this.fire(new t.Event(\"data\",{dataType:\"style\"})),this.fire(new t.Event(\"style.load\"));}_loadSprite(e){this._spriteRequest=function(e,i,o,a){let s,r,n;const l=o>1?\"@2x\":\"\";let c=t.getJSON(i.transformRequest(i.normalizeSpriteURL(e,l,\".json\"),t.ResourceType.SpriteJSON),((t,e)=>{c=null,n||(n=t,s=e,u());})),h=t.getImage(i.transformRequest(i.normalizeSpriteURL(e,l,\".png\"),t.ResourceType.SpriteImage),((t,e)=>{h=null,n||(n=t,r=e,u());}));function u(){if(n)a(n);else if(s&&r){const e=t.exported.getImageData(r),i={};for(const o in s){const{width:a,height:r,x:n,y:l,sdf:c,pixelRatio:h,stretchX:u,stretchY:d,content:m}=s[o],_=new t.RGBAImage({width:a,height:r});t.RGBAImage.copy(e,_,{x:n,y:l},{x:0,y:0},{width:a,height:r}),i[o]={data:_,pixelRatio:h,sdf:c,stretchX:u,stretchY:d,content:m};}a(null,i);}}return {cancel(){c&&(c.cancel(),c=null),h&&(h.cancel(),h=null);}}}(e,this.map._requestManager,this.map.getPixelRatio(),((e,i)=>{if(this._spriteRequest=null,e)this.fire(new t.ErrorEvent(e));else if(i)for(const t in i)this.imageManager.addImage(t,i[t]);this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new t.Event(\"data\",{dataType:\"style\"}));}));}_validateLayer(e){const i=this.sourceCaches[e.source];if(!i)return;const o=e.sourceLayer;if(!o)return;const a=i.getSource();(\"geojson\"===a.type||a.vectorLayerIds&&-1===a.vectorLayerIds.indexOf(o))&&this.fire(new t.ErrorEvent(new Error(`Source layer \"${o}\" does not exist on source \"${a.id}\" as specified by style layer \"${e.id}\".`)));}loaded(){if(!this._loaded)return !1;if(Object.keys(this._updatedSources).length)return !1;for(const t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return !1;return !!this.imageManager.isLoaded()}_serializeLayers(t){const e=[];for(const i of t){const t=this._layers[i];\"custom\"!==t.type&&e.push(t.serialize());}return e}hasTransitions(){if(this.light&&this.light.hasTransition())return !0;for(const t in this.sourceCaches)if(this.sourceCaches[t].hasTransition())return !0;for(const t in this._layers)if(this._layers[t].hasTransition())return !0;return !1}_checkLoaded(){if(!this._loaded)throw new Error(\"Style is not done loading.\")}update(e){if(!this._loaded)return;const i=this._changed;if(this._changed){const t=Object.keys(this._updatedLayers),i=Object.keys(this._removedLayers);(t.length||i.length)&&this._updateWorkerLayers(t,i);for(const t in this._updatedSources){const e=this._updatedSources[t];\"reload\"===e?this._reloadSource(t):\"clear\"===e&&this._clearSource(t);}this._updateTilesForChangedImages();for(const t in this._updatedPaintProps)this._layers[t].updateTransitions(e);this.light.updateTransitions(e),this._resetUpdates();}const o={};for(const t in this.sourceCaches){const e=this.sourceCaches[t];o[t]=e.used,e.used=!1;}for(const t of this._order){const i=this._layers[t];i.recalculate(e,this._availableImages),!i.isHidden(e.zoom)&&i.source&&(this.sourceCaches[i.source].used=!0);}for(const e in o){const i=this.sourceCaches[e];o[e]!==i.used&&i.fire(new t.Event(\"data\",{sourceDataType:\"visibility\",dataType:\"source\",sourceId:e}));}this.light.recalculate(e),this.z=e.zoom,i&&this.fire(new t.Event(\"data\",{dataType:\"style\"}));}_updateTilesForChangedImages(){const t=Object.keys(this._changedImages);if(t.length){for(const e in this.sourceCaches)this.sourceCaches[e].reloadTilesForDependencies([\"icons\",\"patterns\"],t);this._changedImages={};}}_updateWorkerLayers(t,e){this.dispatcher.broadcast(\"updateLayers\",{layers:this._serializeLayers(t),removedIds:e});}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={};}setState(e){if(this._checkLoaded(),Jt(this,t.validateStyle(e)))return !1;(e=t.clone$1(e)).layers=Y(e.layers);const i=function(t,e){if(!t)return [{command:J.setStyle,args:[e]}];let i=[];try{if(!a(t.version,e.version))return [{command:J.setStyle,args:[e]}];a(t.center,e.center)||i.push({command:J.setCenter,args:[e.center]}),a(t.zoom,e.zoom)||i.push({command:J.setZoom,args:[e.zoom]}),a(t.bearing,e.bearing)||i.push({command:J.setBearing,args:[e.bearing]}),a(t.pitch,e.pitch)||i.push({command:J.setPitch,args:[e.pitch]}),a(t.sprite,e.sprite)||i.push({command:J.setSprite,args:[e.sprite]}),a(t.glyphs,e.glyphs)||i.push({command:J.setGlyphs,args:[e.glyphs]}),a(t.transition,e.transition)||i.push({command:J.setTransition,args:[e.transition]}),a(t.light,e.light)||i.push({command:J.setLight,args:[e.light]});const o={},s=[];!function(t,e,i,o){let s;for(s in e=e||{},t=t||{})Object.prototype.hasOwnProperty.call(t,s)&&(Object.prototype.hasOwnProperty.call(e,s)||tt(s,i,o));for(s in e)Object.prototype.hasOwnProperty.call(e,s)&&(Object.prototype.hasOwnProperty.call(t,s)?a(t[s],e[s])||(\"geojson\"===t[s].type&&\"geojson\"===e[s].type&&it(t,e,s)?i.push({command:J.setGeoJSONSourceData,args:[s,e[s].data]}):et(s,e,i,o)):Q(s,e,i));}(t.sources,e.sources,s,o);const r=[];t.layers&&t.layers.forEach((t=>{o[t.source]?i.push({command:J.removeLayer,args:[t.id]}):r.push(t);})),i=i.concat(s),function(t,e,i){e=e||[];const o=(t=t||[]).map(at),s=e.map(at),r=t.reduce(st,{}),n=e.reduce(st,{}),l=o.slice(),c=Object.create(null);let h,u,d,m,_,p,f;for(h=0,u=0;h!(t.command in te)));if(0===i.length)return !1;const o=i.filter((t=>!(t.command in Qt)));if(o.length>0)throw new Error(`Unimplemented: ${o.map((t=>t.command)).join(\", \")}.`);return i.forEach((t=>{\"setTransition\"!==t.command&&this[t.command].apply(this,t.args);})),this.stylesheet=e,!0}addImage(e,i){if(this.getImage(e))return this.fire(new t.ErrorEvent(new Error(`An image named \"${e}\" already exists.`)));this.imageManager.addImage(e,i),this._afterImageUpdated(e);}updateImage(t,e){this.imageManager.updateImage(t,e);}getImage(t){return this.imageManager.getImage(t)}removeImage(e){if(!this.getImage(e))return this.fire(new t.ErrorEvent(new Error(`An image named \"${e}\" does not exist.`)));this.imageManager.removeImage(e),this._afterImageUpdated(e);}_afterImageUpdated(e){this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.dispatcher.broadcast(\"setImages\",this._availableImages),this.fire(new t.Event(\"data\",{dataType:\"style\"}));}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(e,i,o={}){if(this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error(`Source \"${e}\" already exists.`);if(!i.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(i).join(\", \")}.`);if([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(i.type)>=0&&this._validate(t.validateStyle.source,`sources.${e}`,i,null,o))return;this.map&&this.map._collectResourceTiming&&(i.collectResourceTiming=!0);const a=this.sourceCaches[e]=new Z(e,i,this.dispatcher);a.style=this,a.setEventedParent(this,(()=>({isSourceLoaded:this.loaded(),source:a.serialize(),sourceId:e}))),a.onAdd(this.map),this._changed=!0;}removeSource(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error(\"There is no source with this ID\");for(const i in this._layers)if(this._layers[i].source===e)return this.fire(new t.ErrorEvent(new Error(`Source \"${e}\" cannot be removed while layer \"${i}\" is using it.`)));const i=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],i.fire(new t.Event(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:e})),i.setEventedParent(null),i.onRemove(this.map),this._changed=!0;}setGeoJSONSourceData(t,e){this._checkLoaded(),this.sourceCaches[t].getSource().setData(e),this._changed=!0;}getSource(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()}addLayer(e,i,o={}){this._checkLoaded();const a=e.id;if(this.getLayer(a))return void this.fire(new t.ErrorEvent(new Error(`Layer \"${a}\" already exists on this map.`)));let s;if(\"custom\"===e.type){if(Jt(this,t.validateCustomStyleLayer(e)))return;s=t.createStyleLayer(e);}else {if(\"object\"==typeof e.source&&(this.addSource(a,e.source),e=t.clone$1(e),e=t.extend(e,{source:a})),this._validate(t.validateStyle.layer,`layers.${a}`,e,{arrayIndex:-1},o))return;s=t.createStyleLayer(e),this._validateLayer(s),s.setEventedParent(this,{layer:{id:a}}),this._serializedLayers[s.id]=s.serialize();}const r=i?this._order.indexOf(i):this._order.length;if(i&&-1===r)this.fire(new t.ErrorEvent(new Error(`Cannot add layer \"${a}\" before non-existing layer \"${i}\".`)));else {if(this._order.splice(r,0,a),this._layerOrderChanged=!0,this._layers[a]=s,this._removedLayers[a]&&s.source&&\"custom\"!==s.type){const t=this._removedLayers[a];delete this._removedLayers[a],t.type!==s.type?this._updatedSources[s.source]=\"clear\":(this._updatedSources[s.source]=\"reload\",this.sourceCaches[s.source].pause());}this._updateLayer(s),s.onAdd&&s.onAdd(this.map);}}moveLayer(e,i){if(this._checkLoaded(),this._changed=!0,!this._layers[e])return void this.fire(new t.ErrorEvent(new Error(`The layer '${e}' does not exist in the map's style and cannot be moved.`)));if(e===i)return;const o=this._order.indexOf(e);this._order.splice(o,1);const a=i?this._order.indexOf(i):this._order.length;i&&-1===a?this.fire(new t.ErrorEvent(new Error(`Cannot move layer \"${e}\" before non-existing layer \"${i}\".`))):(this._order.splice(a,0,e),this._layerOrderChanged=!0);}removeLayer(e){this._checkLoaded();const i=this._layers[e];if(!i)return void this.fire(new t.ErrorEvent(new Error(`Cannot remove non-existing layer \"${e}\".`)));i.setEventedParent(null);const o=this._order.indexOf(e);this._order.splice(o,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=i,delete this._layers[e],delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],i.onRemove&&i.onRemove(this.map);}getLayer(t){return this._layers[t]}hasLayer(t){return t in this._layers}setLayerZoomRange(e,i,o){this._checkLoaded();const a=this.getLayer(e);a?a.minzoom===i&&a.maxzoom===o||(null!=i&&(a.minzoom=i),null!=o&&(a.maxzoom=o),this._updateLayer(a)):this.fire(new t.ErrorEvent(new Error(`Cannot set the zoom range of non-existing layer \"${e}\".`)));}setFilter(e,i,o={}){this._checkLoaded();const s=this.getLayer(e);if(s){if(!a(s.filter,i))return null==i?(s.filter=void 0,void this._updateLayer(s)):void(this._validate(t.validateStyle.filter,`layers.${s.id}.filter`,i,null,o)||(s.filter=t.clone$1(i),this._updateLayer(s)))}else this.fire(new t.ErrorEvent(new Error(`Cannot filter non-existing layer \"${e}\".`)));}getFilter(e){return t.clone$1(this.getLayer(e).filter)}setLayoutProperty(e,i,o,s={}){this._checkLoaded();const r=this.getLayer(e);r?a(r.getLayoutProperty(i),o)||(r.setLayoutProperty(i,o,s),this._updateLayer(r)):this.fire(new t.ErrorEvent(new Error(`Cannot style non-existing layer \"${e}\".`)));}getLayoutProperty(e,i){const o=this.getLayer(e);if(o)return o.getLayoutProperty(i);this.fire(new t.ErrorEvent(new Error(`Cannot get style of non-existing layer \"${e}\".`)));}setPaintProperty(e,i,o,s={}){this._checkLoaded();const r=this.getLayer(e);r?a(r.getPaintProperty(i),o)||(r.setPaintProperty(i,o,s)&&this._updateLayer(r),this._changed=!0,this._updatedPaintProps[e]=!0):this.fire(new t.ErrorEvent(new Error(`Cannot style non-existing layer \"${e}\".`)));}getPaintProperty(t,e){return this.getLayer(t).getPaintProperty(e)}setFeatureState(e,i){this._checkLoaded();const o=e.source,a=e.sourceLayer,s=this.sourceCaches[o];if(void 0===s)return void this.fire(new t.ErrorEvent(new Error(`The source '${o}' does not exist in the map's style.`)));const r=s.getSource().type;\"geojson\"===r&&a?this.fire(new t.ErrorEvent(new Error(\"GeoJSON sources cannot have a sourceLayer parameter.\"))):\"vector\"!==r||a?(void 0===e.id&&this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided.\"))),s.setFeatureState(a,e.id,i)):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));}removeFeatureState(e,i){this._checkLoaded();const o=e.source,a=this.sourceCaches[o];if(void 0===a)return void this.fire(new t.ErrorEvent(new Error(`The source '${o}' does not exist in the map's style.`)));const s=a.getSource().type,r=\"vector\"===s?e.sourceLayer:void 0;\"vector\"!==s||r?i&&\"string\"!=typeof e.id&&\"number\"!=typeof e.id?this.fire(new t.ErrorEvent(new Error(\"A feature id is required to remove its specific state property.\"))):a.removeFeatureState(r,e.id,i):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));}getFeatureState(e){this._checkLoaded();const i=e.source,o=e.sourceLayer,a=this.sourceCaches[i];if(void 0!==a)return \"vector\"!==a.getSource().type||o?(void 0===e.id&&this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided.\"))),a.getFeatureState(o,e.id)):void this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));this.fire(new t.ErrorEvent(new Error(`The source '${i}' does not exist in the map's style.`)));}getTransition(){return t.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){return t.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:t.mapObject(this.sourceCaches,(t=>t.serialize())),layers:this._serializeLayers(this._order)},(t=>void 0!==t))}_updateLayer(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&\"raster\"!==this.sourceCaches[t.source].getSource().type&&(this._updatedSources[t.source]=\"reload\",this.sourceCaches[t.source].pause()),this._changed=!0;}_flattenAndSortRenderedFeatures(t){const e=t=>\"fill-extrusion\"===this._layers[t].type,i={},o=[];for(let a=this._order.length-1;a>=0;a--){const s=this._order[a];if(e(s)){i[s]=a;for(const e of t){const t=e[s];if(t)for(const e of t)o.push(e);}}}o.sort(((t,e)=>e.intersectionZ-t.intersectionZ));const a=[];for(let s=this._order.length-1;s>=0;s--){const r=this._order[s];if(e(r))for(let t=o.length-1;t>=0;t--){const e=o[t].feature;if(i[e.layer.id]{const o=i.featureSortOrder;if(o){const i=o.indexOf(t.featureIndex);return o.indexOf(e.featureIndex)-i}return e.featureIndex-t.featureIndex}));for(const t of a)e.push(t);}}for(const e in n)n[e].forEach((o=>{const a=o.feature,s=i[t[e].source].getFeatureState(a.layer[\"source-layer\"],a.id);a.source=a.layer.source,a.layer[\"source-layer\"]&&(a.sourceLayer=a.layer[\"source-layer\"]),a.state=s;}));return n}(this._layers,this._serializedLayers,this.sourceCaches,e,i,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(s)}querySourceFeatures(e,i){i&&i.filter&&this._validate(t.validateStyle.filter,\"querySourceFeatures.filter\",i.filter,null,i);const o=this.sourceCaches[e];return o?function(t,e){const i=t.getRenderableIds().map((e=>t.getTileByID(e))),o=[],a={};for(let t=0;tt.getTileByID(e))).sort(((t,e)=>e.tileID.overscaledZ-t.tileID.overscaledZ||(t.tileID.isLessThan(e.tileID)?-1:1)));}const o=this.crossTileSymbolIndex.addLayer(i,l[i.source],e.center.lng);r=r||o;}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((s=s||this._layerOrderChanged||0===o)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(t.exported.now(),e.zoom))&&(this.pauseablePlacement=new $t(e,this._order,s,i,o,a,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,l),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(t.exported.now()),n=!0),r&&this.pauseablePlacement.placement.setStale()),n||r)for(const t of this._order){const e=this._layers[t];\"symbol\"===e.type&&this.placement.updateLayerOpacities(e,l[e.source]);}return !this.pauseablePlacement.isDone()||this.placement.hasTransitions(t.exported.now())}_releaseSymbolFadeTiles(){for(const t in this.sourceCaches)this.sourceCaches[t].releaseSymbolFadeTiles();}getImages(t,e,i){this.imageManager.getImages(e.icons,i),this._updateTilesForChangedImages();const o=this.sourceCaches[e.source];o&&o.setDependencies(e.tileID.key,e.type,e.icons);}getGlyphs(t,e,i){this.glyphManager.getGlyphs(e.stacks,i);}getResource(e,i,o){return t.makeRequest(i,o)}}ie.getSourceType=function(t){return k[t]},ie.setSourceType=function(t,e){k[t]=e;},ie.registerForPluginStateChange=t.registerForPluginStateChange;var oe=t.createLayout([{name:\"a_pos\",type:\"Int16\",components:2}]),ae={prelude:se(\"#ifdef GL_ES\\nprecision mediump float;\\n#else\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n#if !defined(highp)\\n#define highp\\n#endif\\n#endif\",\"#ifdef GL_ES\\nprecision highp float;\\n#else\\n#if !defined(lowp)\\n#define lowp\\n#endif\\n#if !defined(mediump)\\n#define mediump\\n#endif\\n#if !defined(highp)\\n#define highp\\n#endif\\n#endif\\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}\"),background:se(\"uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),backgroundPattern:se(\"uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}\"),circle:se(\"varying vec3 v_data;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize mediump float radius\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize highp vec4 stroke_color\\n#pragma mapbox: initialize mediump float stroke_width\\n#pragma mapbox: initialize lowp float stroke_opacity\\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define mediump float radius\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define highp vec4 stroke_color\\n#pragma mapbox: define mediump float stroke_width\\n#pragma mapbox: define lowp float stroke_opacity\\nvoid main(void) {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize mediump float radius\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize highp vec4 stroke_color\\n#pragma mapbox: initialize mediump float stroke_width\\n#pragma mapbox: initialize lowp float stroke_opacity\\nvec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,0,1);} else {gl_Position=u_matrix*vec4(circle_center,0,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);}\"),clippingMask:se(\"void main() {gl_FragColor=vec4(1.0);}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),heatmap:se(\"uniform highp float u_intensity;varying vec2 v_extrude;\\n#pragma mapbox: define highp float weight\\n#define GAUSS_COEF 0.3989422804014327\\nvoid main() {\\n#pragma mapbox: initialize highp float weight\\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude;\\n#pragma mapbox: define highp float weight\\n#pragma mapbox: define mediump float radius\\nconst highp float ZERO=1.0/255.0/16.0;\\n#define GAUSS_COEF 0.3989422804014327\\nvoid main(void) {\\n#pragma mapbox: initialize highp float weight\\n#pragma mapbox: initialize mediump float radius\\nvec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec4 pos=vec4(floor(a_pos*0.5)+extrude,0,1);gl_Position=u_matrix*pos;}\"),heatmapTexture:se(\"uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(0.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}\"),collisionBox:se(\"varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}\",\"attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}\"),collisionCircle:se(\"varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}\",\"attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}\"),debug:se(\"uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}\",\"attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,0,1);}\"),fill:se(\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_FragColor=color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);}\"),fillOutline:se(\"varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),fillOutlinePattern:se(\"uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),fillPattern:se(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}\"),fillExtrusion:se(\"varying vec4 v_color;void main() {gl_FragColor=v_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec4 v_color;\\n#pragma mapbox: define highp float base\\n#pragma mapbox: define highp float height\\n#pragma mapbox: define highp vec4 color\\nvoid main() {\\n#pragma mapbox: initialize highp float base\\n#pragma mapbox: initialize highp float height\\n#pragma mapbox: initialize highp vec4 color\\nvec3 normal=a_normal_ed.xyz;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}\"),fillExtrusionPattern:se(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\\n? a_pos\\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}\"),hillshadePrepare:se(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\"),hillshade:se(\"uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\\n#define PI 3.141592653589793\\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}\"),line:se(\"uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),lineGradient:se(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\nattribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),linePattern:se(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float pixel_ratio_from\\n#pragma mapbox: define lowp float pixel_ratio_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float pixel_ratio_from\\n#pragma mapbox: initialize lowp float pixel_ratio_to\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}\"),lineSDF:se(\"uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}\"),raster:se(\"uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}\"),symbolIcon:se(\"uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}\"),symbolSDF:se(\"#define SDF_PX 8.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}\"),symbolTextAndIcon:se(\"#define SDF_PX 8.0\\n#define SDF 1.0\\n#define ICON 0.0\\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}\")};function se(t,e){const i=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,o=e.match(/attribute ([\\w]+) ([\\w]+)/g),a=t.match(/uniform ([\\w]+) ([\\w]+)([\\s]*)([\\w]*)/g),s=e.match(/uniform ([\\w]+) ([\\w]+)([\\s]*)([\\w]*)/g),r=s?s.concat(a):a,n={};return {fragmentSource:t=t.replace(i,((t,e,i,o,a)=>(n[a]=!0,\"define\"===e?`\\n#ifndef HAS_UNIFORM_u_${a}\\nvarying ${i} ${o} ${a};\\n#else\\nuniform ${i} ${o} u_${a};\\n#endif\\n`:`\\n#ifdef HAS_UNIFORM_u_${a}\\n ${i} ${o} ${a} = u_${a};\\n#endif\\n`))),vertexSource:e=e.replace(i,((t,e,i,o,a)=>{const s=\"float\"===o?\"vec2\":\"vec4\",r=a.match(/color/)?\"color\":s;return n[a]?\"define\"===e?`\\n#ifndef HAS_UNIFORM_u_${a}\\nuniform lowp float u_${a}_t;\\nattribute ${i} ${s} a_${a};\\nvarying ${i} ${o} ${a};\\n#else\\nuniform ${i} ${o} u_${a};\\n#endif\\n`:\"vec4\"===r?`\\n#ifndef HAS_UNIFORM_u_${a}\\n ${a} = a_${a};\\n#else\\n ${i} ${o} ${a} = u_${a};\\n#endif\\n`:`\\n#ifndef HAS_UNIFORM_u_${a}\\n ${a} = unpack_mix_${r}(a_${a}, u_${a}_t);\\n#else\\n ${i} ${o} ${a} = u_${a};\\n#endif\\n`:\"define\"===e?`\\n#ifndef HAS_UNIFORM_u_${a}\\nuniform lowp float u_${a}_t;\\nattribute ${i} ${s} a_${a};\\n#else\\nuniform ${i} ${o} u_${a};\\n#endif\\n`:\"vec4\"===r?`\\n#ifndef HAS_UNIFORM_u_${a}\\n ${i} ${o} ${a} = a_${a};\\n#else\\n ${i} ${o} ${a} = u_${a};\\n#endif\\n`:`\\n#ifndef HAS_UNIFORM_u_${a}\\n ${i} ${o} ${a} = unpack_mix_${r}(a_${a}, u_${a}_t);\\n#else\\n ${i} ${o} ${a} = u_${a};\\n#endif\\n`})),staticAttributes:o,staticUniforms:r}}class re{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null;}bind(t,e,i,o,a,s,r,n){this.context=t;let l=this.boundPaintVertexBuffers.length!==o.length;for(let t=0;!l&&t>16,n>>16],u_pixel_coord_lower:[65535&r,65535&n]}}const he=(e,i,o,a)=>{const s=i.style.light,r=s.properties.get(\"position\"),n=[r.x,r.y,r.z],l=function(){var e=new t.ARRAY_TYPE(9);return t.ARRAY_TYPE!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}();\"viewport\"===s.properties.get(\"anchor\")&&function(t,e){var i=Math.sin(e),o=Math.cos(e);t[0]=o,t[1]=i,t[2]=0,t[3]=-i,t[4]=o,t[5]=0,t[6]=0,t[7]=0,t[8]=1;}(l,-i.transform.angle),function(t,e,i){var o=e[0],a=e[1],s=e[2];t[0]=o*i[0]+a*i[3]+s*i[6],t[1]=o*i[1]+a*i[4]+s*i[7],t[2]=o*i[2]+a*i[5]+s*i[8];}(n,n,l);const c=s.properties.get(\"color\");return {u_matrix:e,u_lightpos:n,u_lightintensity:s.properties.get(\"intensity\"),u_lightcolor:[c.r,c.g,c.b],u_vertical_gradient:+o,u_opacity:a}},ue=(e,i,o,a,s,r,n)=>t.extend(he(e,i,o,a),ce(r,i,n),{u_height_factor:-Math.pow(2,s.overscaledZ)/n.tileSize/8}),de=t=>({u_matrix:t}),me=(e,i,o,a)=>t.extend(de(e),ce(o,i,a)),_e=(t,e)=>({u_matrix:t,u_world:e}),pe=(e,i,o,a,s)=>t.extend(me(e,i,o,a),{u_world:s}),fe=(t,e,i,o)=>{const a=t.transform;let s,r;if(\"map\"===o.paint.get(\"circle-pitch-alignment\")){const t=It(i,1,a.zoom);s=!0,r=[t,t];}else s=!1,r=a.pixelsToGLUnits;return {u_camera_to_center_distance:a.cameraToCenterDistance,u_scale_with_map:+(\"map\"===o.paint.get(\"circle-pitch-scale\")),u_matrix:t.translatePosMatrix(e.posMatrix,i,o.paint.get(\"circle-translate\"),o.paint.get(\"circle-translate-anchor\")),u_pitch_with_map:+s,u_device_pixel_ratio:t.pixelRatio,u_extrude_scale:r}},ge=(t,e,i)=>{const o=It(i,1,e.zoom),a=Math.pow(2,e.zoom-i.tileID.overscaledZ),s=i.tileID.overscaleFactor();return {u_matrix:t,u_camera_to_center_distance:e.cameraToCenterDistance,u_pixels_to_tile_units:o,u_extrude_scale:[e.pixelsToGLUnits[0]/(o*a),e.pixelsToGLUnits[1]/(o*a)],u_overscale_factor:s}},xe=(t,e,i=1)=>({u_matrix:t,u_color:e,u_overlay:0,u_overlay_scale:i}),ve=t=>({u_matrix:t}),ye=(t,e,i,o)=>({u_matrix:t,u_extrude_scale:It(e,1,i),u_intensity:o});function be(e,i){const o=Math.pow(2,i.canonical.z),a=i.canonical.y;return [new t.MercatorCoordinate(0,a/o).toLngLat().lat,new t.MercatorCoordinate(0,(a+1)/o).toLngLat().lat]}const we=(t,e,i)=>{const o=t.transform;return {u_matrix:Ce(t,e,i),u_ratio:1/It(e,1,o.zoom),u_device_pixel_ratio:t.pixelRatio,u_units_to_pixels:[1/o.pixelsToGLUnits[0],1/o.pixelsToGLUnits[1]]}},Te=(e,i,o,a)=>t.extend(we(e,i,o),{u_image:0,u_image_height:a}),Ee=(t,e,i,o)=>{const a=t.transform,s=Se(e,a);return {u_matrix:Ce(t,e,i),u_texsize:e.imageAtlasTexture.size,u_ratio:1/It(e,1,a.zoom),u_device_pixel_ratio:t.pixelRatio,u_image:0,u_scale:[s,o.fromScale,o.toScale],u_fade:o.t,u_units_to_pixels:[1/a.pixelsToGLUnits[0],1/a.pixelsToGLUnits[1]]}},Ie=(e,i,o,a,s)=>{const r=e.lineAtlas,n=Se(i,e.transform),l=\"round\"===o.layout.get(\"line-cap\"),c=r.getDash(a.from,l),h=r.getDash(a.to,l),u=c.width*s.fromScale,d=h.width*s.toScale;return t.extend(we(e,i,o),{u_patternscale_a:[n/u,-c.height/2],u_patternscale_b:[n/d,-h.height/2],u_sdfgamma:r.width/(256*Math.min(u,d)*e.pixelRatio)/2,u_image:0,u_tex_y_a:c.y,u_tex_y_b:h.y,u_mix:s.t})};function Se(t,e){return 1/It(t,1,e.tileZoom)}function Ce(t,e,i){return t.translatePosMatrix(e.tileID.posMatrix,e,i.paint.get(\"line-translate\"),i.paint.get(\"line-translate-anchor\"))}const Pe=(t,e,i,o,a)=>{return {u_matrix:t,u_tl_parent:e,u_scale_parent:i,u_buffer_scale:1,u_fade_t:o.mix,u_opacity:o.opacity*a.paint.get(\"raster-opacity\"),u_image0:0,u_image1:1,u_brightness_low:a.paint.get(\"raster-brightness-min\"),u_brightness_high:a.paint.get(\"raster-brightness-max\"),u_saturation_factor:(r=a.paint.get(\"raster-saturation\"),r>0?1-1/(1.001-r):-r),u_contrast_factor:(s=a.paint.get(\"raster-contrast\"),s>0?1/(1-s):1+s),u_spin_weights:ze(a.paint.get(\"raster-hue-rotate\"))};var s,r;};function ze(t){t*=Math.PI/180;const e=Math.sin(t),i=Math.cos(t);return [(2*i+1)/3,(-Math.sqrt(3)*e-i+1)/3,(Math.sqrt(3)*e-i+1)/3]}const De=(t,e,i,o,a,s,r,n,l,c)=>{const h=a.transform;return {u_is_size_zoom_constant:+(\"constant\"===t||\"source\"===t),u_is_size_feature_constant:+(\"constant\"===t||\"camera\"===t),u_size_t:e?e.uSizeT:0,u_size:e?e.uSize:0,u_camera_to_center_distance:h.cameraToCenterDistance,u_pitch:h.pitch/360*2*Math.PI,u_rotate_symbol:+i,u_aspect_ratio:h.width/h.height,u_fade_change:a.options.fadeDuration?a.symbolFadeChange:1,u_matrix:s,u_label_plane_matrix:r,u_coord_matrix:n,u_is_text:+l,u_pitch_with_map:+o,u_texsize:c,u_texture:0}},Ae=(e,i,o,a,s,r,n,l,c,h,u)=>{const d=s.transform;return t.extend(De(e,i,o,a,s,r,n,l,c,h),{u_gamma_scale:a?Math.cos(d._pitch)*d.cameraToCenterDistance:1,u_device_pixel_ratio:s.pixelRatio,u_is_halo:+u})},Me=(e,i,o,a,s,r,n,l,c,h)=>t.extend(Ae(e,i,o,a,s,r,n,l,!0,c,!0),{u_texsize_icon:h,u_texture_icon:1}),Le=(t,e,i)=>({u_matrix:t,u_opacity:e,u_color:i}),Re=(e,i,o,a,s,r)=>t.extend(function(t,e,i,o){const a=i.imageManager.getPattern(t.from.toString()),s=i.imageManager.getPattern(t.to.toString()),{width:r,height:n}=i.imageManager.getPixelSize(),l=Math.pow(2,o.tileID.overscaledZ),c=o.tileSize*Math.pow(2,i.transform.tileZoom)/l,h=c*(o.tileID.canonical.x+o.tileID.wrap*l),u=c*o.tileID.canonical.y;return {u_image:0,u_pattern_tl_a:a.tl,u_pattern_br_a:a.br,u_pattern_tl_b:s.tl,u_pattern_br_b:s.br,u_texsize:[r,n],u_mix:e.t,u_pattern_size_a:a.displaySize,u_pattern_size_b:s.displaySize,u_scale_a:e.fromScale,u_scale_b:e.toScale,u_tile_units_to_pixels:1/It(o,1,i.transform.tileZoom),u_pixel_coord_upper:[h>>16,u>>16],u_pixel_coord_lower:[65535&h,65535&u]}}(a,r,o,s),{u_matrix:e,u_opacity:i}),ke={fillExtrusion:(e,i)=>({u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_lightpos:new t.Uniform3f(e,i.u_lightpos),u_lightintensity:new t.Uniform1f(e,i.u_lightintensity),u_lightcolor:new t.Uniform3f(e,i.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,i.u_vertical_gradient),u_opacity:new t.Uniform1f(e,i.u_opacity)}),fillExtrusionPattern:(e,i)=>({u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_lightpos:new t.Uniform3f(e,i.u_lightpos),u_lightintensity:new t.Uniform1f(e,i.u_lightintensity),u_lightcolor:new t.Uniform3f(e,i.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,i.u_vertical_gradient),u_height_factor:new t.Uniform1f(e,i.u_height_factor),u_image:new t.Uniform1i(e,i.u_image),u_texsize:new t.Uniform2f(e,i.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade),u_opacity:new t.Uniform1f(e,i.u_opacity)}),fill:(e,i)=>({u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}),fillPattern:(e,i)=>({u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_image:new t.Uniform1i(e,i.u_image),u_texsize:new t.Uniform2f(e,i.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade)}),fillOutline:(e,i)=>({u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_world:new t.Uniform2f(e,i.u_world)}),fillOutlinePattern:(e,i)=>({u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_world:new t.Uniform2f(e,i.u_world),u_image:new t.Uniform1i(e,i.u_image),u_texsize:new t.Uniform2f(e,i.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade)}),circle:(e,i)=>({u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_scale_with_map:new t.Uniform1i(e,i.u_scale_with_map),u_pitch_with_map:new t.Uniform1i(e,i.u_pitch_with_map),u_extrude_scale:new t.Uniform2f(e,i.u_extrude_scale),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}),collisionBox:(e,i)=>({u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_pixels_to_tile_units:new t.Uniform1f(e,i.u_pixels_to_tile_units),u_extrude_scale:new t.Uniform2f(e,i.u_extrude_scale),u_overscale_factor:new t.Uniform1f(e,i.u_overscale_factor)}),collisionCircle:(e,i)=>({u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_inv_matrix:new t.UniformMatrix4f(e,i.u_inv_matrix),u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_viewport_size:new t.Uniform2f(e,i.u_viewport_size)}),debug:(e,i)=>({u_color:new t.UniformColor(e,i.u_color),u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_overlay:new t.Uniform1i(e,i.u_overlay),u_overlay_scale:new t.Uniform1f(e,i.u_overlay_scale)}),clippingMask:(e,i)=>({u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}),heatmap:(e,i)=>({u_extrude_scale:new t.Uniform1f(e,i.u_extrude_scale),u_intensity:new t.Uniform1f(e,i.u_intensity),u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}),heatmapTexture:(e,i)=>({u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_world:new t.Uniform2f(e,i.u_world),u_image:new t.Uniform1i(e,i.u_image),u_color_ramp:new t.Uniform1i(e,i.u_color_ramp),u_opacity:new t.Uniform1f(e,i.u_opacity)}),hillshade:(e,i)=>({u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_image:new t.Uniform1i(e,i.u_image),u_latrange:new t.Uniform2f(e,i.u_latrange),u_light:new t.Uniform2f(e,i.u_light),u_shadow:new t.UniformColor(e,i.u_shadow),u_highlight:new t.UniformColor(e,i.u_highlight),u_accent:new t.UniformColor(e,i.u_accent)}),hillshadePrepare:(e,i)=>({u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_image:new t.Uniform1i(e,i.u_image),u_dimension:new t.Uniform2f(e,i.u_dimension),u_zoom:new t.Uniform1f(e,i.u_zoom),u_unpack:new t.Uniform4f(e,i.u_unpack)}),line:(e,i)=>({u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_ratio:new t.Uniform1f(e,i.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,i.u_units_to_pixels)}),lineGradient:(e,i)=>({u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_ratio:new t.Uniform1f(e,i.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,i.u_units_to_pixels),u_image:new t.Uniform1i(e,i.u_image),u_image_height:new t.Uniform1f(e,i.u_image_height)}),linePattern:(e,i)=>({u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_texsize:new t.Uniform2f(e,i.u_texsize),u_ratio:new t.Uniform1f(e,i.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_image:new t.Uniform1i(e,i.u_image),u_units_to_pixels:new t.Uniform2f(e,i.u_units_to_pixels),u_scale:new t.Uniform3f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade)}),lineSDF:(e,i)=>({u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_ratio:new t.Uniform1f(e,i.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,i.u_units_to_pixels),u_patternscale_a:new t.Uniform2f(e,i.u_patternscale_a),u_patternscale_b:new t.Uniform2f(e,i.u_patternscale_b),u_sdfgamma:new t.Uniform1f(e,i.u_sdfgamma),u_image:new t.Uniform1i(e,i.u_image),u_tex_y_a:new t.Uniform1f(e,i.u_tex_y_a),u_tex_y_b:new t.Uniform1f(e,i.u_tex_y_b),u_mix:new t.Uniform1f(e,i.u_mix)}),raster:(e,i)=>({u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_tl_parent:new t.Uniform2f(e,i.u_tl_parent),u_scale_parent:new t.Uniform1f(e,i.u_scale_parent),u_buffer_scale:new t.Uniform1f(e,i.u_buffer_scale),u_fade_t:new t.Uniform1f(e,i.u_fade_t),u_opacity:new t.Uniform1f(e,i.u_opacity),u_image0:new t.Uniform1i(e,i.u_image0),u_image1:new t.Uniform1i(e,i.u_image1),u_brightness_low:new t.Uniform1f(e,i.u_brightness_low),u_brightness_high:new t.Uniform1f(e,i.u_brightness_high),u_saturation_factor:new t.Uniform1f(e,i.u_saturation_factor),u_contrast_factor:new t.Uniform1f(e,i.u_contrast_factor),u_spin_weights:new t.Uniform3f(e,i.u_spin_weights)}),symbolIcon:(e,i)=>({u_is_size_zoom_constant:new t.Uniform1i(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,i.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,i.u_size_t),u_size:new t.Uniform1f(e,i.u_size),u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,i.u_pitch),u_rotate_symbol:new t.Uniform1i(e,i.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,i.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,i.u_fade_change),u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,i.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,i.u_coord_matrix),u_is_text:new t.Uniform1i(e,i.u_is_text),u_pitch_with_map:new t.Uniform1i(e,i.u_pitch_with_map),u_texsize:new t.Uniform2f(e,i.u_texsize),u_texture:new t.Uniform1i(e,i.u_texture)}),symbolSDF:(e,i)=>({u_is_size_zoom_constant:new t.Uniform1i(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,i.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,i.u_size_t),u_size:new t.Uniform1f(e,i.u_size),u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,i.u_pitch),u_rotate_symbol:new t.Uniform1i(e,i.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,i.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,i.u_fade_change),u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,i.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,i.u_coord_matrix),u_is_text:new t.Uniform1i(e,i.u_is_text),u_pitch_with_map:new t.Uniform1i(e,i.u_pitch_with_map),u_texsize:new t.Uniform2f(e,i.u_texsize),u_texture:new t.Uniform1i(e,i.u_texture),u_gamma_scale:new t.Uniform1f(e,i.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,i.u_is_halo)}),symbolTextAndIcon:(e,i)=>({u_is_size_zoom_constant:new t.Uniform1i(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,i.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,i.u_size_t),u_size:new t.Uniform1f(e,i.u_size),u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,i.u_pitch),u_rotate_symbol:new t.Uniform1i(e,i.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,i.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,i.u_fade_change),u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,i.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,i.u_coord_matrix),u_is_text:new t.Uniform1i(e,i.u_is_text),u_pitch_with_map:new t.Uniform1i(e,i.u_pitch_with_map),u_texsize:new t.Uniform2f(e,i.u_texsize),u_texsize_icon:new t.Uniform2f(e,i.u_texsize_icon),u_texture:new t.Uniform1i(e,i.u_texture),u_texture_icon:new t.Uniform1i(e,i.u_texture_icon),u_gamma_scale:new t.Uniform1f(e,i.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,i.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,i.u_is_halo)}),background:(e,i)=>({u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_opacity:new t.Uniform1f(e,i.u_opacity),u_color:new t.UniformColor(e,i.u_color)}),backgroundPattern:(e,i)=>({u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_opacity:new t.Uniform1f(e,i.u_opacity),u_image:new t.Uniform1i(e,i.u_image),u_pattern_tl_a:new t.Uniform2f(e,i.u_pattern_tl_a),u_pattern_br_a:new t.Uniform2f(e,i.u_pattern_br_a),u_pattern_tl_b:new t.Uniform2f(e,i.u_pattern_tl_b),u_pattern_br_b:new t.Uniform2f(e,i.u_pattern_br_b),u_texsize:new t.Uniform2f(e,i.u_texsize),u_mix:new t.Uniform1f(e,i.u_mix),u_pattern_size_a:new t.Uniform2f(e,i.u_pattern_size_a),u_pattern_size_b:new t.Uniform2f(e,i.u_pattern_size_b),u_scale_a:new t.Uniform1f(e,i.u_scale_a),u_scale_b:new t.Uniform1f(e,i.u_scale_b),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_tile_units_to_pixels:new t.Uniform1f(e,i.u_tile_units_to_pixels)})};class Be{constructor(t,e,i){this.context=t;const o=t.gl;this.buffer=o.createBuffer(),this.dynamicDraw=Boolean(i),this.context.unbindVAO(),t.bindElementBuffer.set(this.buffer),o.bufferData(o.ELEMENT_ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?o.DYNAMIC_DRAW:o.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer;}bind(){this.context.bindElementBuffer.set(this.buffer);}updateData(t){const e=this.context.gl;this.context.unbindVAO(),this.bind(),e.bufferSubData(e.ELEMENT_ARRAY_BUFFER,0,t.arrayBuffer);}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);}}const Fe={Int8:\"BYTE\",Uint8:\"UNSIGNED_BYTE\",Int16:\"SHORT\",Uint16:\"UNSIGNED_SHORT\",Int32:\"INT\",Uint32:\"UNSIGNED_INT\",Float32:\"FLOAT\"};class Oe{constructor(t,e,i,o){this.length=e.length,this.attributes=i,this.itemSize=e.bytesPerElement,this.dynamicDraw=o,this.context=t;const a=t.gl;this.buffer=a.createBuffer(),t.bindVertexBuffer.set(this.buffer),a.bufferData(a.ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?a.DYNAMIC_DRAW:a.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer;}bind(){this.context.bindVertexBuffer.set(this.buffer);}updateData(t){const e=this.context.gl;this.bind(),e.bufferSubData(e.ARRAY_BUFFER,0,t.arrayBuffer);}enableAttributes(t,e){for(let i=0;i0){const i=t.create(),o=x;t.mul(i,g.placementInvProjMatrix,e.transform.glCoordMatrix),t.mul(i,i,g.placementViewportMatrix),u.push({circleArray:y,circleOffset:m,transform:o,invTransform:i}),d+=y.length/4,m=d;}v&&h.draw(l,c.LINES,Ti.disabled,Ii.disabled,e.colorModeForRenderPass(),Si.disabled,ge(x,e.transform,f),o.id,v.layoutVertexBuffer,v.indexBuffer,v.segments,null,e.transform.zoom,null,null,v.collisionVertexBuffer);}if(!n||!u.length)return;const _=e.useProgram(\"collisionCircle\"),p=new t.CollisionCircleLayoutArray;p.resize(4*d),p._trim();let f=0;for(const t of u)for(let e=0;e=0&&(_[p.associatedIconIndex]={shiftedAnchor:E,angle:I});}else bt(p.numGlyphs,d);}if(h){m.clear();const i=e.icon.placedSymbolArray;for(let e=0;et.sortKey-e.sortKey));for(const t of E){const i=t.state;if(m.activeTexture.set(_.TEXTURE0),i.atlasTexture.bind(i.atlasInterpolation,_.CLAMP_TO_EDGE),i.atlasTextureIcon&&(m.activeTexture.set(_.TEXTURE1),i.atlasTextureIcon&&i.atlasTextureIcon.bind(i.atlasInterpolationIcon,_.CLAMP_TO_EDGE)),i.isSDF){const a=i.uniformValues;i.hasHalo&&(a.u_is_halo=1,Ri(i.buffers,t.segments,o,e,i.program,w,u,d,a)),a.u_is_halo=0;}Ri(i.buffers,t.segments,o,e,i.program,w,u,d,i.uniformValues);}}function Ri(t,e,i,o,a,s,r,n,l){const c=o.context;a.draw(c,c.gl.TRIANGLES,s,r,n,Si.disabled,l,i.id,t.layoutVertexBuffer,t.indexBuffer,e,i.paint,o.transform.zoom,t.programConfigurations.get(i.id),t.dynamicLayoutVertexBuffer,t.opacityVertexBuffer);}function ki(t,e,i,o,a,s,r){const n=t.context.gl,l=i.paint.get(\"fill-pattern\"),c=l&&l.constantOr(1),h=i.getCrossfadeParameters();let u,d,m,_,p;r?(d=c&&!i.getPaintProperty(\"fill-outline-color\")?\"fillOutlinePattern\":\"fillOutline\",u=n.LINES):(d=c?\"fillPattern\":\"fill\",u=n.TRIANGLES);for(const f of o){const o=e.getTile(f);if(c&&!o.patternsLoaded())continue;const g=o.getBucket(i);if(!g)continue;const x=g.programConfigurations.get(i.id),v=t.useProgram(d,x);c&&(t.context.activeTexture.set(n.TEXTURE0),o.imageAtlasTexture.bind(n.LINEAR,n.CLAMP_TO_EDGE),x.updatePaintBuffers(h));const y=l.constantOr(null);if(y&&o.imageAtlas){const t=o.imageAtlas,e=t.patternPositions[y.to.toString()],i=t.patternPositions[y.from.toString()];e&&i&&x.setConstantPatternPositions(e,i);}const b=t.translatePosMatrix(f.posMatrix,o,i.paint.get(\"fill-translate\"),i.paint.get(\"fill-translate-anchor\"));if(r){_=g.indexBuffer2,p=g.segments2;const e=[n.drawingBufferWidth,n.drawingBufferHeight];m=\"fillOutlinePattern\"===d&&c?pe(b,t,h,o,e):_e(b,e);}else _=g.indexBuffer,p=g.segments,m=c?me(b,t,h,o):de(b);v.draw(t.context,u,a,t.stencilModeForClipping(f),s,Si.disabled,m,i.id,g.layoutVertexBuffer,_,p,i.paint,t.transform.zoom,x);}}function Bi(t,e,i,o,a,s,r){const n=t.context,l=n.gl,c=i.paint.get(\"fill-extrusion-pattern\"),h=c.constantOr(1),u=i.getCrossfadeParameters(),d=i.paint.get(\"fill-extrusion-opacity\");for(const m of o){const o=e.getTile(m),_=o.getBucket(i);if(!_)continue;const p=_.programConfigurations.get(i.id),f=t.useProgram(h?\"fillExtrusionPattern\":\"fillExtrusion\",p);h&&(t.context.activeTexture.set(l.TEXTURE0),o.imageAtlasTexture.bind(l.LINEAR,l.CLAMP_TO_EDGE),p.updatePaintBuffers(u));const g=c.constantOr(null);if(g&&o.imageAtlas){const t=o.imageAtlas,e=t.patternPositions[g.to.toString()],i=t.patternPositions[g.from.toString()];e&&i&&p.setConstantPatternPositions(e,i);}const x=t.translatePosMatrix(m.posMatrix,o,i.paint.get(\"fill-extrusion-translate\"),i.paint.get(\"fill-extrusion-translate-anchor\")),v=i.paint.get(\"fill-extrusion-vertical-gradient\"),y=h?ue(x,t,v,d,m,u,o):he(x,t,v,d);f.draw(n,n.gl.TRIANGLES,a,s,r,Si.backCCW,y,i.id,_.layoutVertexBuffer,_.indexBuffer,_.segments,i.paint,t.transform.zoom,p);}}function Fi(t,e,i,o,a,s){const r=t.context,n=r.gl,l=e.fbo;if(!l)return;const c=t.useProgram(\"hillshade\");r.activeTexture.set(n.TEXTURE0),n.bindTexture(n.TEXTURE_2D,l.colorAttachment.get());const h=((t,e,i)=>{const o=i.paint.get(\"hillshade-shadow-color\"),a=i.paint.get(\"hillshade-highlight-color\"),s=i.paint.get(\"hillshade-accent-color\");let r=i.paint.get(\"hillshade-illumination-direction\")*(Math.PI/180);\"viewport\"===i.paint.get(\"hillshade-illumination-anchor\")&&(r-=t.transform.angle);const n=!t.options.moving;return {u_matrix:t.transform.calculatePosMatrix(e.tileID.toUnwrapped(),n),u_image:0,u_latrange:be(0,e.tileID),u_light:[i.paint.get(\"hillshade-exaggeration\"),r],u_shadow:o,u_highlight:a,u_accent:s}})(t,e,i);c.draw(r,n.TRIANGLES,o,a,s,Si.disabled,h,i.id,t.rasterBoundsBuffer,t.quadTriangleIndexBuffer,t.rasterBoundsSegments);}function Oi(e,i,o,a,s,r){const n=e.context,l=n.gl,c=i.dem;if(c&&c.data){const h=c.dim,u=c.stride,m=c.getPixels();if(n.activeTexture.set(l.TEXTURE1),n.pixelStoreUnpackPremultiplyAlpha.set(!1),i.demTexture=i.demTexture||e.getTileTexture(u),i.demTexture){const t=i.demTexture;t.update(m,{premultiply:!1}),t.bind(l.NEAREST,l.CLAMP_TO_EDGE);}else i.demTexture=new d(n,m,l.RGBA,{premultiply:!1}),i.demTexture.bind(l.NEAREST,l.CLAMP_TO_EDGE);n.activeTexture.set(l.TEXTURE0);let _=i.fbo;if(!_){const t=new d(n,{width:h,height:h,data:null},l.RGBA);t.bind(l.LINEAR,l.CLAMP_TO_EDGE),_=i.fbo=n.createFramebuffer(h,h,!0),_.colorAttachment.set(t.texture);}n.bindFramebuffer.set(_.framebuffer),n.viewport.set([0,0,h,h]),e.useProgram(\"hillshadePrepare\").draw(n,l.TRIANGLES,a,s,r,Si.disabled,((e,i)=>{const o=i.stride,a=t.create();return t.ortho(a,0,t.EXTENT,-t.EXTENT,0,0,1),t.translate(a,a,[0,-t.EXTENT,0]),{u_matrix:a,u_image:1,u_dimension:[o,o],u_zoom:e.overscaledZ,u_unpack:i.getUnpackVector()}})(i.tileID,c),o.id,e.rasterBoundsBuffer,e.quadTriangleIndexBuffer,e.rasterBoundsSegments),i.needsHillshadePrepare=!1;}}function Ui(e,i,o,a,s){const r=a.paint.get(\"raster-fade-duration\");if(r>0){const a=t.exported.now(),n=(a-e.timeAdded)/r,l=i?(a-i.timeAdded)/r:-1,c=o.getSource(),h=s.coveringZoomLevel({tileSize:c.tileSize,roundZoom:c.roundZoom}),u=!i||Math.abs(i.tileID.overscaledZ-h)>Math.abs(e.tileID.overscaledZ-h),d=u&&e.refreshedUponExpiration?1:t.clamp(u?n:1-l,0,1);return e.refreshedUponExpiration&&n>=1&&(e.refreshedUponExpiration=!1),i?{opacity:1,mix:1-d}:{opacity:d,mix:0}}return {opacity:1,mix:0}}const Ni=new t.Color(1,0,0,1),Gi=new t.Color(0,1,0,1),Zi=new t.Color(0,0,1,1),qi=new t.Color(1,0,1,1),Vi=new t.Color(0,1,1,1);function ji(t,e,i,o){Wi(t,0,e+i/2,t.transform.width,i,o);}function $i(t,e,i,o){Wi(t,e-i/2,0,i,t.transform.height,o);}function Wi(t,e,i,o,a,s){const r=t.context,n=r.gl;n.enable(n.SCISSOR_TEST),n.scissor(e*t.pixelRatio,i*t.pixelRatio,o*t.pixelRatio,a*t.pixelRatio),r.clear({color:s}),n.disable(n.SCISSOR_TEST);}function Xi(e,i,o){const a=e.context,s=a.gl,r=o.posMatrix,n=e.useProgram(\"debug\"),l=Ti.disabled,c=Ii.disabled,h=e.colorModeForRenderPass(),u=\"$debug\";a.activeTexture.set(s.TEXTURE0),e.emptyTexture.bind(s.LINEAR,s.CLAMP_TO_EDGE),n.draw(a,s.LINE_STRIP,l,c,h,Si.disabled,xe(r,t.Color.red),u,e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);const d=i.getTileByID(o.key).latestRawTileData,m=Math.floor((d&&d.byteLength||0)/1024),_=i.getTile(o).tileSize,p=512/Math.min(_,512)*(o.overscaledZ/e.transform.zoom)*.5;let f=o.canonical.toString();o.overscaledZ!==o.canonical.z&&(f+=` => ${o.overscaledZ}`),function(t,e){t.initDebugOverlayCanvas();const i=t.debugOverlayCanvas,o=t.context.gl,a=t.debugOverlayCanvas.getContext(\"2d\");a.clearRect(0,0,i.width,i.height),a.shadowColor=\"white\",a.shadowBlur=2,a.lineWidth=1.5,a.strokeStyle=\"white\",a.textBaseline=\"top\",a.font=\"bold 36px Open Sans, sans-serif\",a.fillText(e,5,5),a.strokeText(e,5,5),t.debugOverlayTexture.update(i),t.debugOverlayTexture.bind(o.LINEAR,o.CLAMP_TO_EDGE);}(e,`${f} ${m}kb`),n.draw(a,s.TRIANGLES,l,c,bi.alphaBlended,Si.disabled,xe(r,t.Color.transparent,p),u,e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments);}const Hi={symbol:function(e,i,o,a,s){if(\"translucent\"!==e.renderPass)return;const r=Ii.disabled,n=e.colorModeForRenderPass();o.layout.get(\"text-variable-anchor\")&&function(e,i,o,a,s,r,n){const l=i.transform,c=\"map\"===s,h=\"map\"===r;for(const s of e){const e=a.getTile(s),r=e.getBucket(o);if(!r||!r.text||!r.text.segments.get().length)continue;const u=t.evaluateSizeForZoom(r.textSizeData,l.zoom),d=It(e,1,i.transform.zoom),m=ct(s.posMatrix,h,c,i.transform,d),_=\"none\"!==o.layout.get(\"icon-text-fit\")&&r.hasIconData();if(u){const t=Math.pow(2,l.zoom-e.tileID.overscaledZ);Ai(r,c,h,n,l,m,s.posMatrix,t,u,_);}}}(a,e,o,i,o.layout.get(\"text-rotation-alignment\"),o.layout.get(\"text-pitch-alignment\"),s),0!==o.paint.get(\"icon-opacity\").constantOr(1)&&Li(e,i,o,a,!1,o.paint.get(\"icon-translate\"),o.paint.get(\"icon-translate-anchor\"),o.layout.get(\"icon-rotation-alignment\"),o.layout.get(\"icon-pitch-alignment\"),o.layout.get(\"icon-keep-upright\"),r,n),0!==o.paint.get(\"text-opacity\").constantOr(1)&&Li(e,i,o,a,!0,o.paint.get(\"text-translate\"),o.paint.get(\"text-translate-anchor\"),o.layout.get(\"text-rotation-alignment\"),o.layout.get(\"text-pitch-alignment\"),o.layout.get(\"text-keep-upright\"),r,n),i.map.showCollisionBoxes&&(Pi(e,i,o,a,o.paint.get(\"text-translate\"),o.paint.get(\"text-translate-anchor\"),!0),Pi(e,i,o,a,o.paint.get(\"icon-translate\"),o.paint.get(\"icon-translate-anchor\"),!1));},circle:function(e,i,o,a){if(\"translucent\"!==e.renderPass)return;const s=o.paint.get(\"circle-opacity\"),r=o.paint.get(\"circle-stroke-width\"),n=o.paint.get(\"circle-stroke-opacity\"),l=!o.layout.get(\"circle-sort-key\").isConstant();if(0===s.constantOr(1)&&(0===r.constantOr(1)||0===n.constantOr(1)))return;const c=e.context,h=c.gl,u=e.depthModeForSublayer(0,Ti.ReadOnly),d=Ii.disabled,m=e.colorModeForRenderPass(),_=[];for(let s=0;st.sortKey-e.sortKey));for(const t of _){const{programConfiguration:i,program:a,layoutVertexBuffer:s,indexBuffer:r,uniformValues:n}=t.state;a.draw(c,h.TRIANGLES,u,d,m,Si.disabled,n,o.id,s,r,t.segments,o.paint,e.transform.zoom,i);}},heatmap:function(e,i,o,a){if(0!==o.paint.get(\"heatmap-opacity\"))if(\"offscreen\"===e.renderPass){const s=e.context,r=s.gl,n=Ii.disabled,l=new bi([r.ONE,r.ONE],t.Color.transparent,[!0,!0,!0,!0]);!function(t,e,i){const o=t.gl;t.activeTexture.set(o.TEXTURE1),t.viewport.set([0,0,e.width/4,e.height/4]);let a=i.heatmapFbo;if(a)o.bindTexture(o.TEXTURE_2D,a.colorAttachment.get()),t.bindFramebuffer.set(a.framebuffer);else {const s=o.createTexture();o.bindTexture(o.TEXTURE_2D,s),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),a=i.heatmapFbo=t.createFramebuffer(e.width/4,e.height/4,!1),function(t,e,i,o){const a=t.gl;a.texImage2D(a.TEXTURE_2D,0,a.RGBA,e.width/4,e.height/4,0,a.RGBA,t.extRenderToTextureHalfFloat?t.extTextureHalfFloat.HALF_FLOAT_OES:a.UNSIGNED_BYTE,null),o.colorAttachment.set(i);}(t,e,s,a);}}(s,e,o),s.clear({color:t.Color.transparent});for(let t=0;t{const s=t.create();t.ortho(s,0,e.width,e.height,0,0,1);const r=e.context.gl;return {u_matrix:s,u_world:[r.drawingBufferWidth,r.drawingBufferHeight],u_image:0,u_color_ramp:1,u_opacity:i.paint.get(\"heatmap-opacity\")}})(e,i),i.id,e.viewportBuffer,e.quadTriangleIndexBuffer,e.viewportSegments,i.paint,e.transform.zoom);}(e,o));},line:function(e,i,o,a){if(\"translucent\"!==e.renderPass)return;const s=o.paint.get(\"line-opacity\"),r=o.paint.get(\"line-width\");if(0===s.constantOr(1)||0===r.constantOr(1))return;const n=e.depthModeForSublayer(0,Ti.ReadOnly),l=e.colorModeForRenderPass(),c=o.paint.get(\"line-dasharray\"),h=o.paint.get(\"line-pattern\"),u=h.constantOr(1),m=o.paint.get(\"line-gradient\"),_=o.getCrossfadeParameters(),p=u?\"linePattern\":c?\"lineSDF\":m?\"lineGradient\":\"line\",f=e.context,g=f.gl;let x=!0;for(const s of a){const a=i.getTile(s);if(u&&!a.patternsLoaded())continue;const r=a.getBucket(o);if(!r)continue;const v=r.programConfigurations.get(o.id),y=e.context.program.get(),b=e.useProgram(p,v),w=x||b.program!==y,T=h.constantOr(null);if(T&&a.imageAtlas){const t=a.imageAtlas,e=t.patternPositions[T.to.toString()],i=t.patternPositions[T.from.toString()];e&&i&&v.setConstantPatternPositions(e,i);}const E=u?Ee(e,a,o,_):c?Ie(e,a,o,c,_):m?Te(e,a,o,r.lineClipsArray.length):we(e,a,o);if(u)f.activeTexture.set(g.TEXTURE0),a.imageAtlasTexture.bind(g.LINEAR,g.CLAMP_TO_EDGE),v.updatePaintBuffers(_);else if(c&&(w||e.lineAtlas.dirty))f.activeTexture.set(g.TEXTURE0),e.lineAtlas.bind(f);else if(m){const a=r.gradients[o.id];let n=a.texture;if(o.gradientVersion!==a.version){let l=256;if(o.stepInterpolant){const o=i.getSource().maxzoom,a=s.canonical.z===o?Math.ceil(1<256&&this.clearStencil(),i.setColorMode(bi.disabled),i.setDepthMode(Ti.disabled);const a=this.useProgram(\"clippingMask\");this._tileClippingMaskIDs={};for(const t of e){const e=this._tileClippingMaskIDs[t.key]=this.nextStencilID++;a.draw(i,o.TRIANGLES,Ti.disabled,new Ii({func:o.ALWAYS,mask:0},e,255,o.KEEP,o.KEEP,o.REPLACE),bi.disabled,Si.disabled,ve(t.posMatrix),\"$clipping\",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments);}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const t=this.nextStencilID++,e=this.context.gl;return new Ii({func:e.NOTEQUAL,mask:255},t,255,e.KEEP,e.KEEP,e.REPLACE)}stencilModeForClipping(t){const e=this.context.gl;return new Ii({func:e.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,e.KEEP,e.KEEP,e.REPLACE)}stencilConfigForOverlap(t){const e=this.context.gl,i=t.sort(((t,e)=>e.overscaledZ-t.overscaledZ)),o=i[i.length-1].overscaledZ,a=i[0].overscaledZ-o+1;if(a>1){this.currentStencilSource=void 0,this.nextStencilID+a>256&&this.clearStencil();const t={};for(let i=0;i=0;this.currentLayer--){const t=this.style._layers[o[this.currentLayer]],e=a[t.source],i=s[t.source];this._renderTileClippingMasks(t,i),this.renderLayer(this,e,t,i);}for(this.renderPass=\"translucent\",this.currentLayer=0;this.currentLayer{i.source&&!i.isHidden(this.transform.zoom)&&(i.source!==(e&&e.id)&&(e=this.style.sourceCaches[i.source]),(!t||t.getSource().maxzoom0?e.pop():null}isPatternMissing(t){if(!t)return !1;if(!t.from||!t.to)return !0;const e=this.imageManager.getPattern(t.from.toString()),i=this.imageManager.getPattern(t.to.toString());return !e||!i}useProgram(t,e){this.cache=this.cache||{};const i=`${t}${e?e.cacheKey:\"\"}${this._showOverdrawInspector?\"/overdraw\":\"\"}`;return this.cache[i]||(this.cache[i]=new le(this.context,t,ae[t],e,ke[t],this._showOverdrawInspector)),this.cache[i]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault();}setBaseState(){const t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD);}initDebugOverlayCanvas(){null==this.debugOverlayCanvas&&(this.debugOverlayCanvas=document.createElement(\"canvas\"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new d(this.context,this.debugOverlayCanvas,this.context.gl.RGBA));}destroy(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy();}}class Yi{constructor(t,e){this.points=t,this.planes=e;}static fromInvProjectionMatrix(e,i,o){const a=Math.pow(2,o),s=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((i=>t.transformMat4([],i,e))).map((e=>t.scale$1([],e,1/e[3]/i*a))),r=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map((t=>{const e=function(t,e){var i=e[0],o=e[1],a=e[2],s=i*i+o*o+a*a;return s>0&&(s=1/Math.sqrt(s)),t[0]=e[0]*s,t[1]=e[1]*s,t[2]=e[2]*s,t}([],function(t,e,i){var o=e[0],a=e[1],s=e[2],r=i[0],n=i[1],l=i[2];return t[0]=a*l-s*n,t[1]=s*r-o*l,t[2]=o*n-a*r,t}([],h([],s[t[0]],s[t[1]]),h([],s[t[2]],s[t[1]]))),i=-((o=e)[0]*(a=s[t[1]])[0]+o[1]*a[1]+o[2]*a[2]);var o,a;return e.concat(i)}));return new Yi(s,r)}}class Ji{constructor(t,e){this.min=t,this.max=e,this.center=function(t,e,i){return t[0]=.5*e[0],t[1]=.5*e[1],t[2]=.5*e[2],t}([],function(t,e,i){return t[0]=e[0]+i[0],t[1]=e[1]+i[1],t[2]=e[2]+i[2],t}([],this.min,this.max));}quadrant(t){const e=[t%2==0,t<2],i=l(this.min),o=l(this.max);for(let t=0;t=0&&r++;if(0===r)return 0;r!==i.length&&(o=!1);}if(o)return 2;for(let t=0;t<3;t++){let i=Number.MAX_VALUE,o=-Number.MAX_VALUE;for(let a=0;athis.max[t]-this.min[t])return 0}return 1}}class Qi{constructor(t=0,e=0,i=0,o=0){if(isNaN(t)||t<0||isNaN(e)||e<0||isNaN(i)||i<0||isNaN(o)||o<0)throw new Error(\"Invalid value for edge-insets, top, bottom, left and right must all be numbers\");this.top=t,this.bottom=e,this.left=i,this.right=o;}interpolate(e,i,o){return null!=i.top&&null!=e.top&&(this.top=t.number(e.top,i.top,o)),null!=i.bottom&&null!=e.bottom&&(this.bottom=t.number(e.bottom,i.bottom,o)),null!=i.left&&null!=e.left&&(this.left=t.number(e.left,i.left,o)),null!=i.right&&null!=e.right&&(this.right=t.number(e.right,i.right,o)),this}getCenter(e,i){const o=t.clamp((this.left+e-this.right)/2,0,e),a=t.clamp((this.top+i-this.bottom)/2,0,i);return new t.pointGeometry(o,a)}equals(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right}clone(){return new Qi(this.top,this.bottom,this.left,this.right)}toJSON(){return {top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}class to{constructor(e,i,o,a,s){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=void 0===s||!!s,this._minZoom=e||0,this._maxZoom=i||22,this._minPitch=null==o?0:o,this._maxPitch=null==a?60:a,this.setMaxBounds(),this.width=0,this.height=0,this._center=new t.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new Qi,this._posMatrixCache={},this._alignedPosMatrixCache={};}clone(){const t=new to(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.tileSize=this.tileSize,t.latRange=this.latRange,t.width=this.width,t.height=this.height,t._center=this._center,t.zoom=this.zoom,t.angle=this.angle,t._fov=this._fov,t._pitch=this._pitch,t._unmodified=this._unmodified,t._edgeInsets=this._edgeInsets.clone(),t._calcMatrices(),t}get minZoom(){return this._minZoom}set minZoom(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t));}get maxZoom(){return this._maxZoom}set maxZoom(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t));}get minPitch(){return this._minPitch}set minPitch(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t));}get maxPitch(){return this._maxPitch}set maxPitch(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t));}get renderWorldCopies(){return this._renderWorldCopies}set renderWorldCopies(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t;}get worldSize(){return this.tileSize*this.scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new t.pointGeometry(this.width,this.height)}get bearing(){return -this.angle/Math.PI*180}set bearing(e){const i=-t.wrap(e,-180,180)*Math.PI/180;this.angle!==i&&(this._unmodified=!1,this.angle=i,this._calcMatrices(),this.rotationMatrix=function(){var e=new t.ARRAY_TYPE(4);return t.ARRAY_TYPE!=Float32Array&&(e[1]=0,e[2]=0),e[0]=1,e[3]=1,e}(),function(t,e,i){var o=e[0],a=e[1],s=e[2],r=e[3],n=Math.sin(i),l=Math.cos(i);t[0]=o*l+s*n,t[1]=a*l+r*n,t[2]=o*-n+s*l,t[3]=a*-n+r*l;}(this.rotationMatrix,this.rotationMatrix,this.angle));}get pitch(){return this._pitch/Math.PI*180}set pitch(e){const i=t.clamp(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==i&&(this._unmodified=!1,this._pitch=i,this._calcMatrices());}get fov(){return this._fov/Math.PI*180}set fov(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices());}get zoom(){return this._zoom}set zoom(t){const e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom,this._constrain(),this._calcMatrices());}get center(){return this._center}set center(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices());}get padding(){return this._edgeInsets.toJSON()}set padding(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices());}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}isPaddingEqual(t){return this._edgeInsets.equals(t)}interpolatePadding(t,e,i){this._unmodified=!1,this._edgeInsets.interpolate(t,e,i),this._constrain(),this._calcMatrices();}coveringZoomLevel(t){const e=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,e)}getVisibleUnwrappedCoordinates(e){const i=[new t.UnwrappedTileID(0,e)];if(this._renderWorldCopies){const o=this.pointCoordinate(new t.pointGeometry(0,0)),a=this.pointCoordinate(new t.pointGeometry(this.width,0)),s=this.pointCoordinate(new t.pointGeometry(this.width,this.height)),r=this.pointCoordinate(new t.pointGeometry(0,this.height)),n=Math.floor(Math.min(o.x,a.x,s.x,r.x)),l=Math.floor(Math.max(o.x,a.x,s.x,r.x)),c=1;for(let o=n-c;o<=l+c;o++)0!==o&&i.push(new t.UnwrappedTileID(o,e));}return i}coveringTiles(e){let i=this.coveringZoomLevel(e);const o=i;if(void 0!==e.minzoom&&ie.maxzoom&&(i=e.maxzoom);const a=t.MercatorCoordinate.fromLngLat(this.center),s=Math.pow(2,i),r=[s*a.x,s*a.y,0],n=Yi.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,i);let l=e.minzoom||0;this.pitch<=60&&this._edgeInsets.top<.1&&(l=i);const c=t=>({aabb:new Ji([t*s,0,0],[(t+1)*s,s,0]),zoom:0,x:0,y:0,wrap:t,fullyVisible:!1}),h=[],d=[],m=i,_=e.reparseOverscaled?o:i;if(this._renderWorldCopies)for(let t=1;t<=3;t++)h.push(c(-t)),h.push(c(t));for(h.push(c(0));h.length>0;){const e=h.pop(),i=e.x,o=e.y;let a=e.fullyVisible;if(!a){const t=e.aabb.intersects(n);if(0===t)continue;a=2===t;}const s=e.aabb.distanceX(r),c=e.aabb.distanceY(r),p=Math.max(Math.abs(s),Math.abs(c)),f=3+(1<f&&e.zoom>=l)d.push({tileID:new t.OverscaledTileID(e.zoom===m?_:e.zoom,e.wrap,e.zoom,i,o),distanceSq:u([r[0]-.5-i,r[1]-.5-o])});else for(let t=0;t<4;t++){const s=(i<<1)+t%2,r=(o<<1)+(t>>1);h.push({aabb:e.aabb.quadrant(t),zoom:e.zoom+1,x:s,y:r,wrap:e.wrap,fullyVisible:a});}}return d.sort(((t,e)=>t.distanceSq-e.distanceSq)).map((t=>t.tileID))}resize(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._constrain(),this._calcMatrices();}get unmodified(){return this._unmodified}zoomScale(t){return Math.pow(2,t)}scaleZoom(t){return Math.log(t)/Math.LN2}project(e){const i=t.clamp(e.lat,-this.maxValidLatitude,this.maxValidLatitude);return new t.pointGeometry(t.mercatorXfromLng(e.lng)*this.worldSize,t.mercatorYfromLat(i)*this.worldSize)}unproject(e){return new t.MercatorCoordinate(e.x/this.worldSize,e.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}setLocationAtPoint(e,i){const o=this.pointCoordinate(i),a=this.pointCoordinate(this.centerPoint),s=this.locationCoordinate(e),r=new t.MercatorCoordinate(s.x-(o.x-a.x),s.y-(o.y-a.y));this.center=this.coordinateLocation(r),this._renderWorldCopies&&(this.center=this.center.wrap());}locationPoint(t){return this.coordinatePoint(this.locationCoordinate(t))}pointLocation(t){return this.coordinateLocation(this.pointCoordinate(t))}locationCoordinate(e){return t.MercatorCoordinate.fromLngLat(e)}coordinateLocation(t){return t.toLngLat()}pointCoordinate(e){const i=[e.x,e.y,0,1],o=[e.x,e.y,1,1];t.transformMat4(i,i,this.pixelMatrixInverse),t.transformMat4(o,o,this.pixelMatrixInverse);const a=i[3],s=o[3],r=i[1]/a,n=o[1]/s,l=i[2]/a,c=o[2]/s,h=l===c?0:(0-l)/(c-l);return new t.MercatorCoordinate(t.number(i[0]/a,o[0]/s,h)/this.worldSize,t.number(r,n,h)/this.worldSize)}coordinatePoint(e){const i=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(i,i,this.pixelMatrix),new t.pointGeometry(i[0]/i[3],i[1]/i[3])}getBounds(){return (new t.LngLatBounds).extend(this.pointLocation(new t.pointGeometry(0,0))).extend(this.pointLocation(new t.pointGeometry(this.width,0))).extend(this.pointLocation(new t.pointGeometry(this.width,this.height))).extend(this.pointLocation(new t.pointGeometry(0,this.height)))}getMaxBounds(){return this.latRange&&2===this.latRange.length&&this.lngRange&&2===this.lngRange.length?new t.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null}setMaxBounds(t){t?(this.lngRange=[t.getWest(),t.getEast()],this.latRange=[t.getSouth(),t.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude]);}calculatePosMatrix(e,i=!1){const o=e.key,a=i?this._alignedPosMatrixCache:this._posMatrixCache;if(a[o])return a[o];const s=e.canonical,r=this.worldSize/this.zoomScale(s.z),n=s.x+Math.pow(2,s.z)*e.wrap,l=t.identity(new Float64Array(16));return t.translate(l,l,[n*r,s.y*r,0]),t.scale(l,l,[r/t.EXTENT,r/t.EXTENT,1]),t.multiply(l,i?this.alignedProjMatrix:this.projMatrix,l),a[o]=new Float32Array(l),a[o]}customLayerMatrix(){return this.mercatorMatrix.slice()}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;let e,i,o,a,s=-90,r=90,n=-180,l=180;const c=this.size,h=this._unmodified;if(this.latRange){const i=this.latRange;s=t.mercatorYfromLat(i[1])*this.worldSize,r=t.mercatorYfromLat(i[0])*this.worldSize,e=r-sr&&(a=r-e);}if(this.lngRange){const t=u.x,e=c.x/2;t-el&&(o=l-e);}void 0===o&&void 0===a||(this.center=this.unproject(new t.pointGeometry(void 0!==o?o:u.x,void 0!==a?a:u.y))),this._unmodified=h,this._constraining=!1;}_calcMatrices(){if(!this.height)return;const e=this.centerOffset;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height;const i=Math.PI/2+this._pitch,o=this._fov*(.5+e.y/this.height),a=Math.sin(o)*this.cameraToCenterDistance/Math.sin(t.clamp(Math.PI-i-o,.01,Math.PI-.01)),s=this.point,r=s.x,n=s.y,l=1.01*(Math.cos(Math.PI/2-this._pitch)*a+this.cameraToCenterDistance),c=this.height/50;let h=new Float64Array(16);t.perspective(h,this._fov,this.width/this.height,c,l),h[8]=2*-e.x/this.width,h[9]=2*e.y/this.height,t.scale(h,h,[1,-1,1]),t.translate(h,h,[0,0,-this.cameraToCenterDistance]),t.rotateX(h,h,this._pitch),t.rotateZ(h,h,this.angle),t.translate(h,h,[-r,-n,0]),this.mercatorMatrix=t.scale([],h,[this.worldSize,this.worldSize,this.worldSize]),t.scale(h,h,[1,1,t.mercatorZfromAltitude(1,this.center.lat)*this.worldSize]),this.projMatrix=h,this.invProjMatrix=t.invert([],this.projMatrix);const u=this.width%2/2,d=this.height%2/2,m=Math.cos(this.angle),_=Math.sin(this.angle),p=r-Math.round(r)+m*u+_*d,f=n-Math.round(n)+m*d+_*u,g=new Float64Array(h);if(t.translate(g,g,[p>.5?p-1:p,f>.5?f-1:f,0]),this.alignedProjMatrix=g,h=t.create(),t.scale(h,h,[this.width/2,-this.height/2,1]),t.translate(h,h,[1,-1,0]),this.labelPlaneMatrix=h,h=t.create(),t.scale(h,h,[1,-1,1]),t.translate(h,h,[-1,-1,0]),t.scale(h,h,[2/this.width,2/this.height,1]),this.glCoordMatrix=h,this.pixelMatrix=t.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),h=t.invert(new Float64Array(16),this.pixelMatrix),!h)throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=h,this._posMatrixCache={},this._alignedPosMatrixCache={};}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;const e=this.pointCoordinate(new t.pointGeometry(0,0)),i=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(i,i,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){const e=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.pointGeometry(0,e))}getCameraQueryGeometry(e){const i=this.getCameraPoint();if(1===e.length)return [e[0],i];{let o=i.x,a=i.y,s=i.x,r=i.y;for(const t of e)o=Math.min(o,t.x),a=Math.min(a,t.y),s=Math.max(s,t.x),r=Math.max(r,t.y);return [new t.pointGeometry(o,a),new t.pointGeometry(s,a),new t.pointGeometry(s,r),new t.pointGeometry(o,r),new t.pointGeometry(o,a)]}}}class eo{constructor(e){this._hashName=e&&encodeURIComponent(e),t.bindAll([\"_getCurrentHash\",\"_onHashChange\",\"_updateHash\"],this),this._updateHash=function(t,e){let i=!1,o=null;const a=()=>{o=null,i&&(t(),o=setTimeout(a,300),i=!1);};return ()=>(i=!0,o||a(),o)}(this._updateHashUnthrottled.bind(this));}addTo(t){return this._map=t,addEventListener(\"hashchange\",this._onHashChange,!1),this._map.on(\"moveend\",this._updateHash),this}remove(){return removeEventListener(\"hashchange\",this._onHashChange,!1),this._map.off(\"moveend\",this._updateHash),clearTimeout(this._updateHash()),delete this._map,this}getHashString(t){const e=this._map.getCenter(),i=Math.round(100*this._map.getZoom())/100,o=Math.ceil((i*Math.LN2+Math.log(512/360/.5))/Math.LN10),a=Math.pow(10,o),s=Math.round(e.lng*a)/a,r=Math.round(e.lat*a)/a,n=this._map.getBearing(),l=this._map.getPitch();let c=\"\";if(c+=t?`/${s}/${r}/${i}`:`${i}/${r}/${s}`,(n||l)&&(c+=\"/\"+Math.round(10*n)/10),l&&(c+=`/${Math.round(l)}`),this._hashName){const t=this._hashName;let e=!1;const i=window.location.hash.slice(1).split(\"&\").map((i=>{const o=i.split(\"=\")[0];return o===t?(e=!0,`${o}=${c}`):i})).filter((t=>t));return e||i.push(`${t}=${c}`),`#${i.join(\"&\")}`}return `#${c}`}_getCurrentHash(){const t=window.location.hash.replace(\"#\",\"\");if(this._hashName){let e;return t.split(\"&\").map((t=>t.split(\"=\"))).forEach((t=>{t[0]===this._hashName&&(e=t);})),(e&&e[1]||\"\").split(\"/\")}return t.split(\"/\")}_onHashChange(){const t=this._getCurrentHash();if(t.length>=3&&!t.some((t=>isNaN(t)))){const e=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(t[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:e,pitch:+(t[4]||0)}),!0}return !1}_updateHashUnthrottled(){const t=window.location.href.replace(/(#.+)?$/,this.getHashString());try{window.history.replaceState(window.history.state,null,t);}catch(t){}}}const io={linearity:.3,easing:t.bezier(0,0,.3,1)},oo=t.extend({deceleration:2500,maxSpeed:1400},io),ao=t.extend({deceleration:20,maxSpeed:1400},io),so=t.extend({deceleration:1e3,maxSpeed:360},io),ro=t.extend({deceleration:1e3,maxSpeed:90},io);class no{constructor(t){this._map=t,this.clear();}clear(){this._inertiaBuffer=[];}record(e){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:t.exported.now(),settings:e});}_drainInertiaBuffer(){const e=this._inertiaBuffer,i=t.exported.now();for(;e.length>0&&i-e[0].time>160;)e.shift();}_onMoveEnd(e){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;const i={zoom:0,bearing:0,pitch:0,pan:new t.pointGeometry(0,0),pinchAround:void 0,around:void 0};for(const{settings:t}of this._inertiaBuffer)i.zoom+=t.zoomDelta||0,i.bearing+=t.bearingDelta||0,i.pitch+=t.pitchDelta||0,t.panDelta&&i.pan._add(t.panDelta),t.around&&(i.around=t.around),t.pinchAround&&(i.pinchAround=t.pinchAround);const o=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,a={};if(i.pan.mag()){const s=co(i.pan.mag(),o,t.extend({},oo,e||{}));a.offset=i.pan.mult(s.amount/i.pan.mag()),a.center=this._map.transform.center,lo(a,s);}if(i.zoom){const t=co(i.zoom,o,ao);a.zoom=this._map.transform.zoom+t.amount,lo(a,t);}if(i.bearing){const e=co(i.bearing,o,so);a.bearing=this._map.transform.bearing+t.clamp(e.amount,-179,179),lo(a,e);}if(i.pitch){const t=co(i.pitch,o,ro);a.pitch=this._map.transform.pitch+t.amount,lo(a,t);}if(a.zoom||a.bearing){const t=void 0===i.pinchAround?i.around:i.pinchAround;a.around=t?this._map.unproject(t):this._map.getCenter();}return this.clear(),t.extend(a,{noMoveStart:!0})}}function lo(t,e){(!t.duration||t.durationi.unproject(t))),l=r.reduce(((t,e,i,o)=>t.add(e.div(o.length))),new t.pointGeometry(0,0));super(e,{points:r,point:l,lngLats:n,lngLat:i.unproject(l),originalEvent:o}),this._defaultPrevented=!1;}preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}}class mo extends t.Event{constructor(t,e,i){super(t,{originalEvent:i}),this._defaultPrevented=!1;}preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}}class _o{constructor(t,e){this._map=t,this._clickTolerance=e.clickTolerance;}reset(){delete this._mousedownPos;}wheel(t){return this._firePreventable(new mo(t.type,this._map,t))}mousedown(t,e){return this._mousedownPos=e,this._firePreventable(new ho(t.type,this._map,t))}mouseup(t){this._map.fire(new ho(t.type,this._map,t));}click(t,e){this._mousedownPos&&this._mousedownPos.dist(e)>=this._clickTolerance||this._map.fire(new ho(t.type,this._map,t));}dblclick(t){return this._firePreventable(new ho(t.type,this._map,t))}mouseover(t){this._map.fire(new ho(t.type,this._map,t));}mouseout(t){this._map.fire(new ho(t.type,this._map,t));}touchstart(t){return this._firePreventable(new uo(t.type,this._map,t))}touchmove(t){this._map.fire(new uo(t.type,this._map,t));}touchend(t){this._map.fire(new uo(t.type,this._map,t));}touchcancel(t){this._map.fire(new uo(t.type,this._map,t));}_firePreventable(t){if(this._map.fire(t),t.defaultPrevented)return {}}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class po{constructor(t){this._map=t;}reset(){this._delayContextMenu=!1,delete this._contextMenuEvent;}mousemove(t){this._map.fire(new ho(t.type,this._map,t));}mousedown(){this._delayContextMenu=!0;}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new ho(\"contextmenu\",this._map,this._contextMenuEvent)),delete this._contextMenuEvent);}contextmenu(t){this._delayContextMenu?this._contextMenuEvent=t:this._map.fire(new ho(t.type,this._map,t)),this._map.listens(\"contextmenu\")&&t.preventDefault();}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class fo{constructor(t,e){this._map=t,this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=e.clickTolerance||1;}isEnabled(){return !!this._enabled}isActive(){return !!this._active}enable(){this.isEnabled()||(this._enabled=!0);}disable(){this.isEnabled()&&(this._enabled=!1);}mousedown(t,e){this.isEnabled()&&t.shiftKey&&0===t.button&&(s.disableDrag(),this._startPos=this._lastPos=e,this._active=!0);}mousemoveWindow(t,e){if(!this._active)return;const i=e;if(this._lastPos.equals(i)||!this._box&&i.dist(this._startPos)t.fitScreenCoordinates(o,a,this._map.getBearing(),{linear:!0})};this._fireEvent(\"boxzoomcancel\",e);}keydown(t){this._active&&27===t.keyCode&&(this.reset(),this._fireEvent(\"boxzoomcancel\",t));}reset(){this._active=!1,this._container.classList.remove(\"maplibregl-crosshair\",\"mapboxgl-crosshair\"),this._box&&(s.remove(this._box),this._box=null),s.enableDrag(),delete this._startPos,delete this._lastPos;}_fireEvent(e,i){return this._map.fire(new t.Event(e,{originalEvent:i}))}}function go(t,e){const i={};for(let o=0;othis.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=e.timeStamp),o.length===this.numTouches&&(this.centroid=function(e){const i=new t.pointGeometry(0,0);for(const t of e)i._add(t);return i.div(e.length)}(i),this.touches=go(o,i)));}touchmove(t,e,i){if(this.aborted||!this.centroid)return;const o=go(i,e);for(const t in this.touches){const e=this.touches[t],i=o[t];(!i||i.dist(e)>30)&&(this.aborted=!0);}}touchend(t,e,i){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),0===i.length){const t=!this.aborted&&this.centroid;if(this.reset(),t)return t}}}class vo{constructor(t){this.singleTap=new xo(t),this.numTaps=t.numTaps,this.reset();}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset();}touchstart(t,e,i){this.singleTap.touchstart(t,e,i);}touchmove(t,e,i){this.singleTap.touchmove(t,e,i);}touchend(t,e,i){const o=this.singleTap.touchend(t,e,i);if(o){const e=t.timeStamp-this.lastTime<500,i=!this.lastTap||this.lastTap.dist(o)<30;if(e&&i||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=o,this.count===this.numTaps)return this.reset(),o}}}class yo{constructor(){this._zoomIn=new vo({numTouches:1,numTaps:2}),this._zoomOut=new vo({numTouches:2,numTaps:1}),this.reset();}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset();}touchstart(t,e,i){this._zoomIn.touchstart(t,e,i),this._zoomOut.touchstart(t,e,i);}touchmove(t,e,i){this._zoomIn.touchmove(t,e,i),this._zoomOut.touchmove(t,e,i);}touchend(t,e,i){const o=this._zoomIn.touchend(t,e,i),a=this._zoomOut.touchend(t,e,i);return o?(this._active=!0,t.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:e=>e.easeTo({duration:300,zoom:e.getZoom()+1,around:e.unproject(o)},{originalEvent:t})}):a?(this._active=!0,t.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:e=>e.easeTo({duration:300,zoom:e.getZoom()-1,around:e.unproject(a)},{originalEvent:t})}):void 0}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}const bo={0:1,2:2};class wo{constructor(t){this.reset(),this._clickTolerance=t.clickTolerance||1;}reset(){this._active=!1,this._moved=!1,delete this._lastPoint,delete this._eventButton;}_correctButton(t,e){return !1}_move(t,e){return {}}mousedown(t,e){if(this._lastPoint)return;const i=s.mouseButton(t);this._correctButton(t,i)&&(this._lastPoint=e,this._eventButton=i);}mousemoveWindow(t,e){const i=this._lastPoint;if(i)if(t.preventDefault(),function(t,e){const i=bo[e];return void 0===t.buttons||(t.buttons&i)!==i}(t,this._eventButton))this.reset();else if(this._moved||!(e.dist(i)0&&(this._active=!0);const a=go(o,i),s=new t.pointGeometry(0,0),r=new t.pointGeometry(0,0);let n=0;for(const t in a){const e=a[t],i=this._touches[t];i&&(s._add(e),r._add(e.sub(i)),n++,a[t]=e);}if(this._touches=a,nMath.abs(t.x)}class Ro extends Co{reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints;}_start(t){this._lastPoints=t,Lo(t[0].sub(t[1]))&&(this._valid=!1);}_move(t,e,i){const o=t[0].sub(this._lastPoints[0]),a=t[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(o,a,i.timeStamp),this._valid)return this._lastPoints=t,this._active=!0,{pitchDelta:(o.y+a.y)/2*-.5}}gestureBeginsVertically(t,e,i){if(void 0!==this._valid)return this._valid;const o=t.mag()>=2,a=e.mag()>=2;if(!o&&!a)return;if(!o||!a)return void 0===this._firstMove&&(this._firstMove=i),i-this._firstMove<100&&void 0;const s=t.y>0==e.y>0;return Lo(t)&&Lo(e)&&s}}const ko={panStep:100,bearingStep:15,pitchStep:10};class Bo{constructor(){const t=ko;this._panStep=t.panStep,this._bearingStep=t.bearingStep,this._pitchStep=t.pitchStep,this._rotationDisabled=!1;}reset(){this._active=!1;}keydown(t){if(t.altKey||t.ctrlKey||t.metaKey)return;let e=0,i=0,o=0,a=0,s=0;switch(t.keyCode){case 61:case 107:case 171:case 187:e=1;break;case 189:case 109:case 173:e=-1;break;case 37:t.shiftKey?i=-1:(t.preventDefault(),a=-1);break;case 39:t.shiftKey?i=1:(t.preventDefault(),a=1);break;case 38:t.shiftKey?o=1:(t.preventDefault(),s=-1);break;case 40:t.shiftKey?o=-1:(t.preventDefault(),s=1);break;default:return}return this._rotationDisabled&&(i=0,o=0),{cameraAnimation:r=>{const n=r.getZoom();r.easeTo({duration:300,easeId:\"keyboardHandler\",easing:Fo,zoom:e?Math.round(n)+e*(t.shiftKey?2:1):n,bearing:r.getBearing()+i*this._bearingStep,pitch:r.getPitch()+o*this._pitchStep,offset:[-a*this._panStep,-s*this._panStep],center:r.getCenter()},{originalEvent:t});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0;}enableRotation(){this._rotationDisabled=!1;}}function Fo(t){return t*(2-t)}const Oo=4.000244140625;class Uo{constructor(e,i){this._map=e,this._el=e.getCanvasContainer(),this._handler=i,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222,t.bindAll([\"_onTimeout\"],this);}setZoomRate(t){this._defaultZoomRate=t;}setWheelZoomRate(t){this._wheelZoomRate=t;}isEnabled(){return !!this._enabled}isActive(){return !!this._active||void 0!==this._finishTimeout}isZooming(){return !!this._zooming}enable(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=t&&\"center\"===t.around);}disable(){this.isEnabled()&&(this._enabled=!1);}wheel(e){if(!this.isEnabled())return;let i=e.deltaMode===WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY;const o=t.exported.now(),a=o-(this._lastWheelEventTime||0);this._lastWheelEventTime=o,0!==i&&i%Oo==0?this._type=\"wheel\":0!==i&&Math.abs(i)<4?this._type=\"trackpad\":a>400?(this._type=null,this._lastValue=i,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(a*i)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,i+=this._lastValue)),e.shiftKey&&i&&(i/=4),this._type&&(this._lastWheelEvent=e,this._delta-=i,this._active||this._start(e)),e.preventDefault();}_onTimeout(t){this._type=\"wheel\",this._delta-=this._lastValue,this._active||this._start(t);}_start(e){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);const i=s.mousePos(this._el,e);this._around=t.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(i)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame());}renderFrame(){if(!this._frameId)return;if(this._frameId=null,!this.isActive())return;const e=this._map.transform;if(0!==this._delta){const t=\"wheel\"===this._type&&Math.abs(this._delta)>Oo?this._wheelZoomRate:this._defaultZoomRate;let i=2/(1+Math.exp(-Math.abs(this._delta*t)));this._delta<0&&0!==i&&(i=1/i);const o=\"number\"==typeof this._targetZoom?e.zoomScale(this._targetZoom):e.scale;this._targetZoom=Math.min(e.maxZoom,Math.max(e.minZoom,e.scaleZoom(o*i))),\"wheel\"===this._type&&(this._startZoom=e.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0;}const i=\"number\"==typeof this._targetZoom?this._targetZoom:e.zoom,o=this._startZoom,a=this._easing;let s,r=!1;if(\"wheel\"===this._type&&o&&a){const e=Math.min((t.exported.now()-this._lastWheelEventTime)/200,1),n=a(e);s=t.number(o,i,n),e<1?this._frameId||(this._frameId=!0):r=!0;}else s=i,r=!0;return this._active=!0,r&&(this._active=!1,this._finishTimeout=setTimeout((()=>{this._zooming=!1,this._handler._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout;}),200)),{noInertia:!0,needsRenderFrame:!r,zoomDelta:s-e.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(e){let i=t.ease;if(this._prevEase){const e=this._prevEase,o=(t.exported.now()-e.start)/e.duration,a=e.easing(o+.01)-e.easing(o),s=.27/Math.sqrt(a*a+1e-4)*.01,r=Math.sqrt(.0729-s*s);i=t.bezier(s,r,.25,1);}return this._prevEase={start:t.exported.now(),duration:e,easing:i},i}reset(){this._active=!1;}}class No{constructor(t,e){this._clickZoom=t,this._tapZoom=e;}enable(){this._clickZoom.enable(),this._tapZoom.enable();}disable(){this._clickZoom.disable(),this._tapZoom.disable();}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class Go{constructor(){this.reset();}reset(){this._active=!1;}dblclick(t,e){return t.preventDefault(),{cameraAnimation:i=>{i.easeTo({duration:300,zoom:i.getZoom()+(t.shiftKey?-1:1),around:i.unproject(e)},{originalEvent:t});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Zo{constructor(){this._tap=new vo({numTouches:1,numTaps:1}),this.reset();}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset();}touchstart(t,e,i){this._swipePoint||(this._tapTime&&t.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?i.length>0&&(this._swipePoint=e[0],this._swipeTouch=i[0].identifier):this._tap.touchstart(t,e,i));}touchmove(t,e,i){if(this._tapTime){if(this._swipePoint){if(i[0].identifier!==this._swipeTouch)return;const o=e[0],a=o.y-this._swipePoint.y;return this._swipePoint=o,t.preventDefault(),this._active=!0,{zoomDelta:a/128}}}else this._tap.touchmove(t,e,i);}touchend(t,e,i){this._tapTime?this._swipePoint&&0===i.length&&this.reset():this._tap.touchend(t,e,i)&&(this._tapTime=t.timeStamp);}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class qo{constructor(t,e,i){this._el=t,this._mousePan=e,this._touchPan=i;}enable(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add(\"maplibregl-touch-drag-pan\",\"mapboxgl-touch-drag-pan\");}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove(\"maplibregl-touch-drag-pan\",\"mapboxgl-touch-drag-pan\");}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class Vo{constructor(t,e,i){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=e,this._mousePitch=i;}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable();}disable(){this._mouseRotate.disable(),this._mousePitch.disable();}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class jo{constructor(t,e,i,o){this._el=t,this._touchZoom=e,this._touchRotate=i,this._tapDragZoom=o,this._rotationDisabled=!1,this._enabled=!0;}enable(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add(\"maplibregl-touch-zoom-rotate\",\"mapboxgl-touch-zoom-rotate\");}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove(\"maplibregl-touch-zoom-rotate\",\"mapboxgl-touch-zoom-rotate\");}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable();}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable();}}const $o=t=>t.zoom||t.drag||t.pitch||t.rotate;class Wo extends t.Event{}function Xo(t){return t.panDelta&&t.panDelta.mag()||t.zoomDelta||t.bearingDelta||t.pitchDelta}class Ho{constructor(e,i){this._map=e,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new no(e),this._bearingSnap=i.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(i),t.bindAll([\"handleEvent\",\"handleWindowEvent\"],this);const o=this._el;this._listeners=[[o,\"touchstart\",{passive:!0}],[o,\"touchmove\",{passive:!1}],[o,\"touchend\",void 0],[o,\"touchcancel\",void 0],[o,\"mousedown\",void 0],[o,\"mousemove\",void 0],[o,\"mouseup\",void 0],[document,\"mousemove\",{capture:!0}],[document,\"mouseup\",void 0],[o,\"mouseover\",void 0],[o,\"mouseout\",void 0],[o,\"dblclick\",void 0],[o,\"click\",void 0],[o,\"keydown\",{capture:!1}],[o,\"keyup\",void 0],[o,\"wheel\",{passive:!1}],[o,\"contextmenu\",void 0],[window,\"blur\",void 0]];for(const[t,e,i]of this._listeners)s.addEventListener(t,e,t===document?this.handleWindowEvent:this.handleEvent,i);}destroy(){for(const[t,e,i]of this._listeners)s.removeEventListener(t,e,t===document?this.handleWindowEvent:this.handleEvent,i);}_addDefaultHandlers(t){const e=this._map,i=e.getCanvasContainer();this._add(\"mapEvent\",new _o(e,t));const o=e.boxZoom=new fo(e,t);this._add(\"boxZoom\",o);const a=new yo,s=new Go;e.doubleClickZoom=new No(s,a),this._add(\"tapZoom\",a),this._add(\"clickZoom\",s);const r=new Zo;this._add(\"tapDragZoom\",r);const n=e.touchPitch=new Ro;this._add(\"touchPitch\",n);const l=new Eo(t),c=new Io(t);e.dragRotate=new Vo(t,l,c),this._add(\"mouseRotate\",l,[\"mousePitch\"]),this._add(\"mousePitch\",c,[\"mouseRotate\"]);const h=new To(t),u=new So(t);e.dragPan=new qo(i,h,u),this._add(\"mousePan\",h),this._add(\"touchPan\",u,[\"touchZoom\",\"touchRotate\"]);const d=new Mo,m=new Do;e.touchZoomRotate=new jo(i,m,d,r),this._add(\"touchRotate\",d,[\"touchPan\",\"touchZoom\"]),this._add(\"touchZoom\",m,[\"touchPan\",\"touchRotate\"]);const _=e.scrollZoom=new Uo(e,this);this._add(\"scrollZoom\",_,[\"mousePan\"]);const p=e.keyboard=new Bo;this._add(\"keyboard\",p),this._add(\"blockableMapEvent\",new po(e));for(const i of [\"boxZoom\",\"doubleClickZoom\",\"tapDragZoom\",\"touchPitch\",\"dragRotate\",\"dragPan\",\"touchZoomRotate\",\"scrollZoom\",\"keyboard\"])t.interactive&&t[i]&&e[i].enable(t[i]);}_add(t,e,i){this._handlers.push({handlerName:t,handler:e,allowed:i}),this._handlersById[t]=e;}stop(t){if(!this._updatingCamera){for(const{handler:t}of this._handlers)t.reset();this._inertia.clear(),this._fireEvents({},{},t),this._changes=[];}}isActive(){for(const{handler:t}of this._handlers)if(t.isActive())return !0;return !1}isZooming(){return !!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return !!this._eventsInProgress.rotate}isMoving(){return Boolean($o(this._eventsInProgress))||this.isZooming()}_blockedByActive(t,e,i){for(const o in t)if(o!==i&&(!e||e.indexOf(o)<0))return !0;return !1}handleWindowEvent(t){this.handleEvent(t,`${t.type}Window`);}_getMapTouches(t){const e=[];for(const i of t)this._el.contains(i.target)&&e.push(i);return e}handleEvent(t,e){if(\"blur\"===t.type)return void this.stop(!0);this._updatingCamera=!0;const i=\"renderFrame\"===t.type?void 0:t,o={needsRenderFrame:!1},a={},r={},n=t.touches,l=n?this._getMapTouches(n):void 0,c=l?s.touchPos(this._el,l):s.mousePos(this._el,t);for(const{handlerName:s,handler:n,allowed:h}of this._handlers){if(!n.isEnabled())continue;let u;this._blockedByActive(r,h,s)?n.reset():n[e||t.type]&&(u=n[e||t.type](t,c,l),this.mergeHandlerResult(o,a,u,s,i),u&&u.needsRenderFrame&&this._triggerRenderFrame()),(u||n.isActive())&&(r[s]=n);}const h={};for(const t in this._previousActiveHandlers)r[t]||(h[t]=i);this._previousActiveHandlers=r,(Object.keys(h).length||Xo(o))&&(this._changes.push([o,a,h]),this._triggerRenderFrame()),(Object.keys(r).length||Xo(o))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:u}=o;u&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],u(this._map));}mergeHandlerResult(e,i,o,a,s){if(!o)return;t.extend(e,o);const r={handlerName:a,originalEvent:o.originalEvent||s};void 0!==o.zoomDelta&&(i.zoom=r),void 0!==o.panDelta&&(i.drag=r),void 0!==o.pitchDelta&&(i.pitch=r),void 0!==o.bearingDelta&&(i.rotate=r);}_applyChanges(){const e={},i={},o={};for(const[a,s,r]of this._changes)a.panDelta&&(e.panDelta=(e.panDelta||new t.pointGeometry(0,0))._add(a.panDelta)),a.zoomDelta&&(e.zoomDelta=(e.zoomDelta||0)+a.zoomDelta),a.bearingDelta&&(e.bearingDelta=(e.bearingDelta||0)+a.bearingDelta),a.pitchDelta&&(e.pitchDelta=(e.pitchDelta||0)+a.pitchDelta),void 0!==a.around&&(e.around=a.around),void 0!==a.pinchAround&&(e.pinchAround=a.pinchAround),a.noInertia&&(e.noInertia=a.noInertia),t.extend(i,s),t.extend(o,r);this._updateMapTransform(e,i,o),this._changes=[];}_updateMapTransform(t,e,i){const o=this._map,a=o.transform;if(!Xo(t))return this._fireEvents(e,i,!0);let{panDelta:s,zoomDelta:r,bearingDelta:n,pitchDelta:l,around:c,pinchAround:h}=t;void 0!==h&&(c=h),o._stop(!0),c=c||o.transform.centerPoint;const u=a.pointLocation(s?c.sub(s):c);n&&(a.bearing+=n),l&&(a.pitch+=l),r&&(a.zoom+=r),a.setLocationAtPoint(u,c),this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(e,i,!0);}_fireEvents(e,i,o){const a=$o(this._eventsInProgress),s=$o(e),r={};for(const t in e){const{originalEvent:i}=e[t];this._eventsInProgress[t]||(r[`${t}start`]=i),this._eventsInProgress[t]=e[t];}!a&&s&&this._fireEvent(\"movestart\",s.originalEvent);for(const t in r)this._fireEvent(t,r[t]);s&&this._fireEvent(\"move\",s.originalEvent);for(const t in e){const{originalEvent:i}=e[t];this._fireEvent(t,i);}const n={};let l;for(const t in this._eventsInProgress){const{handlerName:e,originalEvent:o}=this._eventsInProgress[t];this._handlersById[e].isActive()||(delete this._eventsInProgress[t],l=i[e]||o,n[`${t}end`]=l);}for(const t in n)this._fireEvent(t,n[t]);const c=$o(this._eventsInProgress);if(o&&(a||s)&&!c){this._updatingCamera=!0;const e=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),i=t=>0!==t&&-this._bearingSnap{delete this._frameId,this.handleEvent(new Wo(\"renderFrame\",{timeStamp:t})),this._applyChanges();}))}_triggerRenderFrame(){void 0===this._frameId&&(this._frameId=this._requestFrame());}}const Ko={extend:(e,...i)=>t.extend(e,...i),run(t){t();},logToElement(t,e=!1,i=\"log\"){const o=window.document.getElementById(i);o&&(e&&(o.innerHTML=\"\"),o.innerHTML+=`
${t}`);}};class Yo extends t.Evented{constructor(e,i){super(),this._moving=!1,this._zooming=!1,this.transform=e,this._bearingSnap=i.bearingSnap,t.bindAll([\"_renderFrameCallback\"],this);}getCenter(){return new t.LngLat(this.transform.center.lng,this.transform.center.lat)}setCenter(t,e){return this.jumpTo({center:t},e)}panBy(e,i,o){return e=t.pointGeometry.convert(e).mult(-1),this.panTo(this.transform.center,t.extend({offset:e},i),o)}panTo(e,i,o){return this.easeTo(t.extend({center:e},i),o)}getZoom(){return this.transform.zoom}setZoom(t,e){return this.jumpTo({zoom:t},e),this}zoomTo(e,i,o){return this.easeTo(t.extend({zoom:e},i),o)}zoomIn(t,e){return this.zoomTo(this.getZoom()+1,t,e),this}zoomOut(t,e){return this.zoomTo(this.getZoom()-1,t,e),this}getBearing(){return this.transform.bearing}setBearing(t,e){return this.jumpTo({bearing:t},e),this}getPadding(){return this.transform.padding}setPadding(t,e){return this.jumpTo({padding:t},e),this}rotateTo(e,i,o){return this.easeTo(t.extend({bearing:e},i),o)}resetNorth(e,i){return this.rotateTo(0,t.extend({duration:1e3},e),i),this}resetNorthPitch(e,i){return this.easeTo(t.extend({bearing:0,pitch:0,duration:1e3},e),i),this}snapToNorth(t,e){return Math.abs(this.getBearing()){if(this._zooming&&(o.zoom=t.number(a,l,e)),this._rotating&&(o.bearing=t.number(s,c,e)),this._pitching&&(o.pitch=t.number(r,h,e)),this._padding&&(o.interpolatePadding(n,u,e),m=o.centerPoint.add(d)),v)o.setLocationAtPoint(v,y);else {const t=o.zoomScale(o.zoom-a),i=l>a?Math.min(2,x):Math.max(.5,x),s=Math.pow(i,1-e),r=o.unproject(f.add(g.mult(e*s)).mult(t));o.setLocationAtPoint(o.renderWorldCopies?r.wrap():r,m);}this._fireMoveEvents(i);}),(t=>{this._afterEase(i,t);}),e),this}_prepareEase(e,i,o={}){this._moving=!0,i||o.moving||this.fire(new t.Event(\"movestart\",e)),this._zooming&&!o.zooming&&this.fire(new t.Event(\"zoomstart\",e)),this._rotating&&!o.rotating&&this.fire(new t.Event(\"rotatestart\",e)),this._pitching&&!o.pitching&&this.fire(new t.Event(\"pitchstart\",e));}_fireMoveEvents(e){this.fire(new t.Event(\"move\",e)),this._zooming&&this.fire(new t.Event(\"zoom\",e)),this._rotating&&this.fire(new t.Event(\"rotate\",e)),this._pitching&&this.fire(new t.Event(\"pitch\",e));}_afterEase(e,i){if(this._easeId&&i&&this._easeId===i)return;delete this._easeId;const o=this._zooming,a=this._rotating,s=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,o&&this.fire(new t.Event(\"zoomend\",e)),a&&this.fire(new t.Event(\"rotateend\",e)),s&&this.fire(new t.Event(\"pitchend\",e)),this.fire(new t.Event(\"moveend\",e));}flyTo(e,i){if(!e.essential&&t.exported.prefersReducedMotion){const o=t.pick(e,[\"center\",\"zoom\",\"bearing\",\"pitch\",\"around\"]);return this.jumpTo(o,i)}this.stop(),e=t.extend({offset:[0,0],speed:1.2,curve:1.42,easing:t.ease},e);const o=this.transform,a=this.getZoom(),s=this.getBearing(),r=this.getPitch(),n=this.getPadding(),l=\"zoom\"in e?t.clamp(+e.zoom,o.minZoom,o.maxZoom):a,c=\"bearing\"in e?this._normalizeBearing(e.bearing,s):s,h=\"pitch\"in e?+e.pitch:r,u=\"padding\"in e?e.padding:o.padding,d=o.zoomScale(l-a),m=t.pointGeometry.convert(e.offset);let _=o.centerPoint.add(m);const p=o.pointLocation(_),f=t.LngLat.convert(e.center||p);this._normalizeCenter(f);const g=o.project(p),x=o.project(f).sub(g);let v=e.curve;const y=Math.max(o.width,o.height),b=y/d,w=x.mag();if(\"minZoom\"in e){const i=t.clamp(Math.min(e.minZoom,a,l),o.minZoom,o.maxZoom),s=y/o.zoomScale(i-a);v=Math.sqrt(s/w*2);}const T=v*v;function E(t){const e=(b*b-y*y+(t?-1:1)*T*T*w*w)/(2*(t?b:y)*T*w);return Math.log(Math.sqrt(e*e+1)-e)}function I(t){return (Math.exp(t)-Math.exp(-t))/2}function S(t){return (Math.exp(t)+Math.exp(-t))/2}const C=E(0);let P=function(t){return S(C)/S(C+v*t)},z=function(t){return y*((S(C)*(I(e=C+v*t)/S(e))-I(C))/T)/w;var e;},D=(E(1)-C)/v;if(Math.abs(w)<1e-6||!isFinite(D)){if(Math.abs(y-b)<1e-6)return this.easeTo(e,i);const t=be.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=s!==c,this._pitching=h!==r,this._padding=!o.isPaddingEqual(u),this._prepareEase(i,!1),this._ease((e=>{const d=e*D,p=1/P(d);o.zoom=1===e?l:a+o.scaleZoom(p),this._rotating&&(o.bearing=t.number(s,c,e)),this._pitching&&(o.pitch=t.number(r,h,e)),this._padding&&(o.interpolatePadding(n,u,e),_=o.centerPoint.add(m));const v=1===e?f:o.unproject(g.add(x.mult(z(d))).mult(p));o.setLocationAtPoint(o.renderWorldCopies?v.wrap():v,_),this._fireMoveEvents(i);}),(()=>this._afterEase(i)),e),this}isEasing(){return !!this._easeFrameId}stop(){return this._stop()}_stop(t,e){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){const t=this._onEaseEnd;delete this._onEaseEnd,t.call(this,e);}if(!t){const t=this.handlers;t&&t.stop(!1);}return this}_ease(e,i,o){!1===o.animate||0===o.duration?(e(1),i()):(this._easeStart=t.exported.now(),this._easeOptions=o,this._onEaseFrame=e,this._onEaseEnd=i,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback));}_renderFrameCallback(){const e=Math.min((t.exported.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop();}_normalizeBearing(e,i){e=t.wrap(e,-180,180);const o=Math.abs(e-i);return Math.abs(e-360-i)180?-360:i<-180?360:0;}}class Jo{constructor(e={}){this.options=e,t.bindAll([\"_toggleAttribution\",\"_updateData\",\"_updateCompact\",\"_updateCompactMinimize\"],this);}getDefaultPosition(){return \"bottom-right\"}onAdd(t){return this._map=t,this._compact=this.options&&this.options.compact,this._container=s.create(\"details\",\"maplibregl-ctrl maplibregl-ctrl-attrib mapboxgl-ctrl mapboxgl-ctrl-attrib\"),this._compactButton=s.create(\"summary\",\"maplibregl-ctrl-attrib-button mapboxgl-ctrl-attrib-button\",this._container),this._compactButton.addEventListener(\"click\",this._toggleAttribution),this._setElementTitle(this._compactButton,\"ToggleAttribution\"),this._innerContainer=s.create(\"div\",\"maplibregl-ctrl-attrib-inner mapboxgl-ctrl-attrib-inner\",this._container),this._updateAttributions(),this._updateCompact(),this._map.on(\"styledata\",this._updateData),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"resize\",this._updateCompact),this._map.on(\"drag\",this._updateCompactMinimize),this._container}onRemove(){s.remove(this._container),this._map.off(\"styledata\",this._updateData),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"resize\",this._updateCompact),this._map.off(\"drag\",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0;}_setElementTitle(t,e){const i=this._map._getUIString(`AttributionControl.${e}`);t.title=i,t.setAttribute(\"aria-label\",i);}_toggleAttribution(){this._container.classList.contains(\"maplibregl-compact\")&&(this._container.classList.contains(\"maplibregl-compact-show\")?(this._container.setAttribute(\"open\",\"\"),this._container.classList.remove(\"maplibregl-compact-show\",\"mapboxgl-compact-show\")):(this._container.classList.add(\"maplibregl-compact-show\",\"mapboxgl-compact-show\"),this._container.removeAttribute(\"open\")));}_updateData(t){!t||\"metadata\"!==t.sourceDataType&&\"visibility\"!==t.sourceDataType&&\"style\"!==t.dataType||this._updateAttributions();}_updateAttributions(){if(!this._map.style)return;let t=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?t=t.concat(this.options.customAttribution.map((t=>\"string\"!=typeof t?\"\":t))):\"string\"==typeof this.options.customAttribution&&t.push(this.options.customAttribution)),this._map.style.stylesheet){const t=this._map.style.stylesheet;this.styleOwner=t.owner,this.styleId=t.id;}const e=this._map.style.sourceCaches;for(const i in e){const o=e[i];if(o.used){const e=o.getSource();e.attribution&&t.indexOf(e.attribution)<0&&t.push(e.attribution);}}t=t.filter((t=>String(t).trim())),t.sort(((t,e)=>t.length-e.length)),t=t.filter(((e,i)=>{for(let o=i+1;o=0)return !1;return !0}));const i=t.join(\" | \");i!==this._attribHTML&&(this._attribHTML=i,t.length?(this._innerContainer.innerHTML=i,this._container.classList.remove(\"maplibregl-attrib-empty\",\"mapboxgl-attrib-empty\")):this._container.classList.add(\"maplibregl-attrib-empty\",\"mapboxgl-attrib-empty\"),this._updateCompact(),this._editLink=null);}_updateCompact(){this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1===this._compact?this._container.setAttribute(\"open\",\"\"):this._container.classList.contains(\"maplibregl-compact\")||this._container.classList.contains(\"maplibregl-attrib-empty\")||(this._container.setAttribute(\"open\",\"\"),this._container.classList.add(\"maplibregl-compact\",\"mapboxgl-compact\",\"maplibregl-compact-show\",\"mapboxgl-compact-show\")):(this._container.setAttribute(\"open\",\"\"),this._container.classList.contains(\"maplibregl-compact\")&&this._container.classList.remove(\"maplibregl-compact\",\"maplibregl-compact-show\",\"mapboxgl-compact\",\"mapboxgl-compact-show\"));}_updateCompactMinimize(){this._container.classList.contains(\"maplibregl-compact\")&&this._container.classList.contains(\"maplibregl-compact-show\")&&this._container.classList.remove(\"maplibregl-compact-show\",\"mapboxgl-compact-show\");}}class Qo{constructor(e={}){this.options=e,t.bindAll([\"_updateCompact\"],this);}getDefaultPosition(){return \"bottom-left\"}onAdd(t){this._map=t,this._compact=this.options&&this.options.compact,this._container=s.create(\"div\",\"maplibregl-ctrl mapboxgl-ctrl\");const e=s.create(\"a\",\"maplibregl-ctrl-logo mapboxgl-ctrl-logo\");return e.target=\"_blank\",e.rel=\"noopener nofollow\",e.href=\"https://maplibre.org/\",e.setAttribute(\"aria-label\",this._map._getUIString(\"LogoControl.Title\")),e.setAttribute(\"rel\",\"noopener nofollow\"),this._container.appendChild(e),this._container.style.display=\"block\",this._map.on(\"resize\",this._updateCompact),this._updateCompact(),this._container}onRemove(){s.remove(this._container),this._map.off(\"resize\",this._updateCompact),this._map=void 0,this._compact=void 0;}_updateCompact(){const t=this._container.children;if(t.length){const e=t[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1!==this._compact&&e.classList.add(\"maplibregl-compact\",\"mapboxgl-compact\"):e.classList.remove(\"maplibregl-compact\",\"mapboxgl-compact\");}}}class ta{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1;}add(t){const e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e}remove(t){const e=this._currentlyRunning,i=e?this._queue.concat(e):this._queue;for(const e of i)if(e.id===t)return void(e.cancelled=!0)}run(t=0){const e=this._currentlyRunning=this._queue;this._queue=[];for(const i of e)if(!i.cancelled&&(i.callback(t),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1;}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[];}}const ea={\"AttributionControl.ToggleAttribution\":\"Toggle attribution\",\"AttributionControl.MapFeedback\":\"Map feedback\",\"FullscreenControl.Enter\":\"Enter fullscreen\",\"FullscreenControl.Exit\":\"Exit fullscreen\",\"GeolocateControl.FindMyLocation\":\"Find my location\",\"GeolocateControl.LocationNotAvailable\":\"Location not available\",\"LogoControl.Title\":\"Mapbox logo\",\"NavigationControl.ResetBearing\":\"Reset bearing to north\",\"NavigationControl.ZoomIn\":\"Zoom in\",\"NavigationControl.ZoomOut\":\"Zoom out\",\"ScaleControl.Feet\":\"ft\",\"ScaleControl.Meters\":\"m\",\"ScaleControl.Kilometers\":\"km\",\"ScaleControl.Miles\":\"mi\",\"ScaleControl.NauticalMiles\":\"nm\"},ia={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:60,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,bearingSnap:7,clickTolerance:3,pitchWithRotate:!0,hash:!1,attributionControl:!0,maplibreLogo:!1,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,maxTileCacheSize:null,localIdeographFontFamily:\"sans-serif\",transformRequest:null,fadeDuration:300,crossSourceCollisions:!0},oa={showCompass:!0,showZoom:!0,visualizePitch:!1};class aa{constructor(e,i,o=!1){this._clickTolerance=10,this.element=i,this.mouseRotate=new Eo({clickTolerance:e.dragRotate._mouseRotate._clickTolerance}),this.map=e,o&&(this.mousePitch=new Io({clickTolerance:e.dragRotate._mousePitch._clickTolerance})),t.bindAll([\"mousedown\",\"mousemove\",\"mouseup\",\"touchstart\",\"touchmove\",\"touchend\",\"reset\"],this),s.addEventListener(i,\"mousedown\",this.mousedown),s.addEventListener(i,\"touchstart\",this.touchstart,{passive:!1}),s.addEventListener(i,\"touchmove\",this.touchmove),s.addEventListener(i,\"touchend\",this.touchend),s.addEventListener(i,\"touchcancel\",this.reset);}down(t,e){this.mouseRotate.mousedown(t,e),this.mousePitch&&this.mousePitch.mousedown(t,e),s.disableDrag();}move(t,e){const i=this.map,o=this.mouseRotate.mousemoveWindow(t,e);if(o&&o.bearingDelta&&i.setBearing(i.getBearing()+o.bearingDelta),this.mousePitch){const o=this.mousePitch.mousemoveWindow(t,e);o&&o.pitchDelta&&i.setPitch(i.getPitch()+o.pitchDelta);}}off(){const t=this.element;s.removeEventListener(t,\"mousedown\",this.mousedown),s.removeEventListener(t,\"touchstart\",this.touchstart,{passive:!1}),s.removeEventListener(t,\"touchmove\",this.touchmove),s.removeEventListener(t,\"touchend\",this.touchend),s.removeEventListener(t,\"touchcancel\",this.reset),this.offTemp();}offTemp(){s.enableDrag(),s.removeEventListener(window,\"mousemove\",this.mousemove),s.removeEventListener(window,\"mouseup\",this.mouseup);}mousedown(e){this.down(t.extend({},e,{ctrlKey:!0,preventDefault:()=>e.preventDefault()}),s.mousePos(this.element,e)),s.addEventListener(window,\"mousemove\",this.mousemove),s.addEventListener(window,\"mouseup\",this.mouseup);}mousemove(t){this.move(t,s.mousePos(this.element,t));}mouseup(t){this.mouseRotate.mouseupWindow(t),this.mousePitch&&this.mousePitch.mouseupWindow(t),this.offTemp();}touchstart(t){1!==t.targetTouches.length?this.reset():(this._startPos=this._lastPos=s.touchPos(this.element,t.targetTouches)[0],this.down({type:\"mousedown\",button:0,ctrlKey:!0,preventDefault:()=>t.preventDefault()},this._startPos));}touchmove(t){1!==t.targetTouches.length?this.reset():(this._lastPos=s.touchPos(this.element,t.targetTouches)[0],this.move({preventDefault:()=>t.preventDefault()},this._lastPos));}touchend(t){0===t.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)180;){const t=o.locationPoint(e);if(t.x>=0&&t.y>=0&&t.x<=o.width&&t.y<=o.height)break;e.lng>o.center.lng?e.lng-=360:e.lng+=360;}return e}const ra={center:\"translate(-50%,-50%)\",top:\"translate(-50%,0)\",\"top-left\":\"translate(0,0)\",\"top-right\":\"translate(-100%,0)\",bottom:\"translate(-50%,-100%)\",\"bottom-left\":\"translate(0,-100%)\",\"bottom-right\":\"translate(-100%,-100%)\",left:\"translate(0,-50%)\",right:\"translate(-100%,-50%)\"};function na(t,e,i){const o=t.classList;for(const t in ra)o.remove(`maplibregl-${i}-anchor-${t}`,`mapboxgl-${i}-anchor-${t}`);o.add(`maplibregl-${i}-anchor-${e}`,`mapboxgl-${i}-anchor-${e}`);}class la extends t.Evented{constructor(e,i){if(super(),(e instanceof HTMLElement||i)&&(e=t.extend({element:e},i)),t.bindAll([\"_update\",\"_onMove\",\"_onUp\",\"_addDragHandler\",\"_onMapClick\",\"_onKeyPress\"],this),this._anchor=e&&e.anchor||\"center\",this._color=e&&e.color||\"#3FB1CE\",this._scale=e&&e.scale||1,this._draggable=e&&e.draggable||!1,this._clickTolerance=e&&e.clickTolerance||0,this._isDragging=!1,this._state=\"inactive\",this._rotation=e&&e.rotation||0,this._rotationAlignment=e&&e.rotationAlignment||\"auto\",this._pitchAlignment=e&&e.pitchAlignment&&\"auto\"!==e.pitchAlignment?e.pitchAlignment:this._rotationAlignment,e&&e.element)this._element=e.element,this._offset=t.pointGeometry.convert(e&&e.offset||[0,0]);else {this._defaultMarker=!0,this._element=s.create(\"div\"),this._element.setAttribute(\"aria-label\",\"Map marker\");const i=s.createNS(\"http://www.w3.org/2000/svg\",\"svg\"),o=41,a=27;i.setAttributeNS(null,\"display\",\"block\"),i.setAttributeNS(null,\"height\",`${o}px`),i.setAttributeNS(null,\"width\",`${a}px`),i.setAttributeNS(null,\"viewBox\",`0 0 ${a} ${o}`);const r=s.createNS(\"http://www.w3.org/2000/svg\",\"g\");r.setAttributeNS(null,\"stroke\",\"none\"),r.setAttributeNS(null,\"stroke-width\",\"1\"),r.setAttributeNS(null,\"fill\",\"none\"),r.setAttributeNS(null,\"fill-rule\",\"evenodd\");const n=s.createNS(\"http://www.w3.org/2000/svg\",\"g\");n.setAttributeNS(null,\"fill-rule\",\"nonzero\");const l=s.createNS(\"http://www.w3.org/2000/svg\",\"g\");l.setAttributeNS(null,\"transform\",\"translate(3.0, 29.0)\"),l.setAttributeNS(null,\"fill\",\"#000000\");const c=[{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"9.5\",ry:\"4.77275007\"},{rx:\"8.5\",ry:\"4.29549936\"},{rx:\"7.5\",ry:\"3.81822308\"},{rx:\"6.5\",ry:\"3.34094679\"},{rx:\"5.5\",ry:\"2.86367051\"},{rx:\"4.5\",ry:\"2.38636864\"}];for(const t of c){const e=s.createNS(\"http://www.w3.org/2000/svg\",\"ellipse\");e.setAttributeNS(null,\"opacity\",\"0.04\"),e.setAttributeNS(null,\"cx\",\"10.5\"),e.setAttributeNS(null,\"cy\",\"5.80029008\"),e.setAttributeNS(null,\"rx\",t.rx),e.setAttributeNS(null,\"ry\",t.ry),l.appendChild(e);}const h=s.createNS(\"http://www.w3.org/2000/svg\",\"g\");h.setAttributeNS(null,\"fill\",this._color);const u=s.createNS(\"http://www.w3.org/2000/svg\",\"path\");u.setAttributeNS(null,\"d\",\"M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z\"),h.appendChild(u);const d=s.createNS(\"http://www.w3.org/2000/svg\",\"g\");d.setAttributeNS(null,\"opacity\",\"0.25\"),d.setAttributeNS(null,\"fill\",\"#000000\");const m=s.createNS(\"http://www.w3.org/2000/svg\",\"path\");m.setAttributeNS(null,\"d\",\"M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z\"),d.appendChild(m);const _=s.createNS(\"http://www.w3.org/2000/svg\",\"g\");_.setAttributeNS(null,\"transform\",\"translate(6.0, 7.0)\"),_.setAttributeNS(null,\"fill\",\"#FFFFFF\");const p=s.createNS(\"http://www.w3.org/2000/svg\",\"g\");p.setAttributeNS(null,\"transform\",\"translate(8.0, 8.0)\");const f=s.createNS(\"http://www.w3.org/2000/svg\",\"circle\");f.setAttributeNS(null,\"fill\",\"#000000\"),f.setAttributeNS(null,\"opacity\",\"0.25\"),f.setAttributeNS(null,\"cx\",\"5.5\"),f.setAttributeNS(null,\"cy\",\"5.5\"),f.setAttributeNS(null,\"r\",\"5.4999962\");const g=s.createNS(\"http://www.w3.org/2000/svg\",\"circle\");g.setAttributeNS(null,\"fill\",\"#FFFFFF\"),g.setAttributeNS(null,\"cx\",\"5.5\"),g.setAttributeNS(null,\"cy\",\"5.5\"),g.setAttributeNS(null,\"r\",\"5.4999962\"),p.appendChild(f),p.appendChild(g),n.appendChild(l),n.appendChild(h),n.appendChild(d),n.appendChild(_),n.appendChild(p),i.appendChild(n),i.setAttributeNS(null,\"height\",o*this._scale+\"px\"),i.setAttributeNS(null,\"width\",a*this._scale+\"px\"),this._element.appendChild(i),this._offset=t.pointGeometry.convert(e&&e.offset||[0,-14]);}this._element.classList.add(\"maplibregl-marker\",\"mapboxgl-marker\"),this._element.addEventListener(\"dragstart\",(t=>{t.preventDefault();})),this._element.addEventListener(\"mousedown\",(t=>{t.preventDefault();})),na(this._element,this._anchor,\"marker\"),this._popup=null;}addTo(t){return this.remove(),this._map=t,t.getCanvasContainer().appendChild(this._element),t.on(\"move\",this._update),t.on(\"moveend\",this._update),this.setDraggable(this._draggable),this._update(),this._map.on(\"click\",this._onMapClick),this}remove(){return this._map&&(this._map.off(\"click\",this._onMapClick),this._map.off(\"move\",this._update),this._map.off(\"moveend\",this._update),this._map.off(\"mousedown\",this._addDragHandler),this._map.off(\"touchstart\",this._addDragHandler),this._map.off(\"mouseup\",this._onUp),this._map.off(\"touchend\",this._onUp),this._map.off(\"mousemove\",this._onMove),this._map.off(\"touchmove\",this._onMove),delete this._map),s.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(e){return this._lngLat=t.LngLat.convert(e),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(t){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener(\"keypress\",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute(\"tabindex\")),t){if(!(\"offset\"in t.options)){const e=38.1,i=13.5,o=Math.sqrt(Math.pow(i,2)/2);t.options.offset=this._defaultMarker?{top:[0,0],\"top-left\":[0,0],\"top-right\":[0,0],bottom:[0,-e],\"bottom-left\":[o,-1*(e-i+o)],\"bottom-right\":[-o,-1*(e-i+o)],left:[i,-1*(e-i)],right:[-i,-1*(e-i)]}:this._offset;}this._popup=t,this._lngLat&&this._popup.setLngLat(this._lngLat),this._originalTabIndex=this._element.getAttribute(\"tabindex\"),this._originalTabIndex||this._element.setAttribute(\"tabindex\",\"0\"),this._element.addEventListener(\"keypress\",this._onKeyPress);}return this}_onKeyPress(t){const e=t.code,i=t.charCode||t.keyCode;\"Space\"!==e&&\"Enter\"!==e&&32!==i&&13!==i||this.togglePopup();}_onMapClick(t){const e=t.originalEvent.target,i=this._element;this._popup&&(e===i||i.contains(e))&&this.togglePopup();}getPopup(){return this._popup}togglePopup(){const t=this._popup;return t?(t.isOpen()?t.remove():t.addTo(this._map),this):this}_update(t){if(!this._map)return;this._map.transform.renderWorldCopies&&(this._lngLat=sa(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._offset);let e=\"\";\"viewport\"===this._rotationAlignment||\"auto\"===this._rotationAlignment?e=`rotateZ(${this._rotation}deg)`:\"map\"===this._rotationAlignment&&(e=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let i=\"\";\"viewport\"===this._pitchAlignment||\"auto\"===this._pitchAlignment?i=\"rotateX(0deg)\":\"map\"===this._pitchAlignment&&(i=`rotateX(${this._map.getPitch()}deg)`),t&&\"moveend\"!==t.type||(this._pos=this._pos.round()),s.setTransform(this._element,`${ra[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${i} ${e}`);}getOffset(){return this._offset}setOffset(e){return this._offset=t.pointGeometry.convert(e),this._update(),this}_onMove(e){if(!this._isDragging){const t=this._clickTolerance||this._map._clickTolerance;this._isDragging=e.point.dist(this._pointerdownPos)>=t;}this._isDragging&&(this._pos=e.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents=\"none\",\"pending\"===this._state&&(this._state=\"active\",this.fire(new t.Event(\"dragstart\"))),this.fire(new t.Event(\"drag\")));}_onUp(){this._element.style.pointerEvents=\"auto\",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off(\"mousemove\",this._onMove),this._map.off(\"touchmove\",this._onMove),\"active\"===this._state&&this.fire(new t.Event(\"dragend\")),this._state=\"inactive\";}_addDragHandler(t){this._element.contains(t.originalEvent.target)&&(t.preventDefault(),this._positionDelta=t.point.sub(this._pos).add(this._offset),this._pointerdownPos=t.point,this._state=\"pending\",this._map.on(\"mousemove\",this._onMove),this._map.on(\"touchmove\",this._onMove),this._map.once(\"mouseup\",this._onUp),this._map.once(\"touchend\",this._onUp));}setDraggable(t){return this._draggable=!!t,this._map&&(t?(this._map.on(\"mousedown\",this._addDragHandler),this._map.on(\"touchstart\",this._addDragHandler)):(this._map.off(\"mousedown\",this._addDragHandler),this._map.off(\"touchstart\",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(t){return this._rotation=t||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(t){return this._rotationAlignment=t||\"auto\",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(t){return this._pitchAlignment=t&&\"auto\"!==t?t:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}}const ca={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0};let ha,ua=0,da=!1;const ma={maxWidth:100,unit:\"metric\"};function _a(t,e,i){const o=i&&i.maxWidth||100,a=t._container.clientHeight/2,s=t.unproject([0,a]),r=t.unproject([o,a]),n=s.distanceTo(r);if(i&&\"imperial\"===i.unit){const i=3.2808*n;i>5280?pa(e,o,i/5280,t._getUIString(\"ScaleControl.Miles\")):pa(e,o,i,t._getUIString(\"ScaleControl.Feet\"));}else i&&\"nautical\"===i.unit?pa(e,o,n/1852,t._getUIString(\"ScaleControl.NauticalMiles\")):n>=1e3?pa(e,o,n/1e3,t._getUIString(\"ScaleControl.Kilometers\")):pa(e,o,n,t._getUIString(\"ScaleControl.Meters\"));}function pa(t,e,i,o){const a=function(t){const e=Math.pow(10,`${Math.floor(t)}`.length-1);let i=t/e;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:i>=1?1:function(t){const e=Math.pow(10,Math.ceil(-Math.log(t)/Math.LN10));return Math.round(t*e)/e}(i),e*i}(i);t.style.width=e*(a/i)+\"px\",t.innerHTML=`${a} ${o}`;}const fa={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:\"\",maxWidth:\"240px\"},ga=[\"a[href]\",\"[tabindex]:not([tabindex='-1'])\",\"[contenteditable]:not([contenteditable='false'])\",\"button:not([disabled])\",\"input:not([disabled])\",\"select:not([disabled])\",\"textarea:not([disabled])\"].join(\", \");function xa(e){if(e){if(\"number\"==typeof e){const i=Math.round(Math.sqrt(.5*Math.pow(e,2)));return {center:new t.pointGeometry(0,0),top:new t.pointGeometry(0,e),\"top-left\":new t.pointGeometry(i,i),\"top-right\":new t.pointGeometry(-i,i),bottom:new t.pointGeometry(0,-e),\"bottom-left\":new t.pointGeometry(i,-i),\"bottom-right\":new t.pointGeometry(-i,-i),left:new t.pointGeometry(e,0),right:new t.pointGeometry(-e,0)}}if(e instanceof t.pointGeometry||Array.isArray(e)){const i=t.pointGeometry.convert(e);return {center:i,top:i,\"top-left\":i,\"top-right\":i,bottom:i,\"bottom-left\":i,\"bottom-right\":i,left:i,right:i}}return {center:t.pointGeometry.convert(e.center||[0,0]),top:t.pointGeometry.convert(e.top||[0,0]),\"top-left\":t.pointGeometry.convert(e[\"top-left\"]||[0,0]),\"top-right\":t.pointGeometry.convert(e[\"top-right\"]||[0,0]),bottom:t.pointGeometry.convert(e.bottom||[0,0]),\"bottom-left\":t.pointGeometry.convert(e[\"bottom-left\"]||[0,0]),\"bottom-right\":t.pointGeometry.convert(e[\"bottom-right\"]||[0,0]),left:t.pointGeometry.convert(e.left||[0,0]),right:t.pointGeometry.convert(e.right||[0,0])}}return xa(new t.pointGeometry(0,0))}const va={supported:e,setRTLTextPlugin:t.setRTLTextPlugin,getRTLTextPluginStatus:t.getRTLTextPluginStatus,Map:class extends Yo{constructor(e){var i;if(t.PerformanceUtils.mark(t.PerformanceMarkers.create),null!=(e=t.extend({},ia,e)).minZoom&&null!=e.maxZoom&&e.minZoom>e.maxZoom)throw new Error(\"maxZoom must be greater than or equal to minZoom\");if(null!=e.minPitch&&null!=e.maxPitch&&e.minPitch>e.maxPitch)throw new Error(\"maxPitch must be greater than or equal to minPitch\");if(null!=e.minPitch&&e.minPitch<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(null!=e.maxPitch&&e.maxPitch>85)throw new Error(\"maxPitch must be less than or equal to 85\");if(super(new to(e.minZoom,e.maxZoom,e.minPitch,e.maxPitch,e.renderWorldCopies),{bearingSnap:e.bearingSnap}),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._antialias=e.antialias,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles,this._fadeDuration=e.fadeDuration,this._crossSourceCollisions=e.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=e.collectResourceTiming,this._renderTaskQueue=new ta,this._controls=[],this._mapId=t.uniqueId(),this._locale=t.extend({},ea,e.locale),this._clickTolerance=e.clickTolerance,this._pixelRatio=null!==(i=e.pixelRatio)&&void 0!==i?i:devicePixelRatio,this._requestManager=new r(e.transformRequest),\"string\"==typeof e.container){if(this._container=document.getElementById(e.container),!this._container)throw new Error(`Container '${e.container}' not found.`)}else {if(!(e.container instanceof HTMLElement))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=e.container;}if(e.maxBounds&&this.setMaxBounds(e.maxBounds),t.bindAll([\"_onWindowOnline\",\"_onWindowResize\",\"_onMapScroll\",\"_contextLost\",\"_contextRestored\"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error(\"Failed to initialize WebGL.\");this.on(\"move\",(()=>this._update(!1))),this.on(\"moveend\",(()=>this._update(!1))),this.on(\"zoom\",(()=>this._update(!0))),\"undefined\"!=typeof window&&(addEventListener(\"online\",this._onWindowOnline,!1),addEventListener(\"resize\",this._onWindowResize,!1),addEventListener(\"orientationchange\",this._onWindowResize,!1)),this.handlers=new Ho(this,e),this._hash=e.hash&&new eo(\"string\"==typeof e.hash&&e.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),e.bounds&&(this.resize(),this.fitBounds(e.bounds,t.extend({},e.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=e.localIdeographFontFamily,e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new Jo({customAttribution:e.customAttribution})),e.maplibreLogo&&this.addControl(new Qo,e.logoPosition),this.on(\"style.load\",(()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet);})),this.on(\"data\",(e=>{this._update(\"style\"===e.dataType),this.fire(new t.Event(`${e.dataType}data`,e));})),this.on(\"dataloading\",(e=>{this.fire(new t.Event(`${e.dataType}dataloading`,e));})),this.on(\"dataabort\",(e=>{this.fire(new t.Event(\"sourcedataabort\",e));}));}_getMapId(){return this._mapId}addControl(e,i){if(void 0===i&&(i=e.getDefaultPosition?e.getDefaultPosition():\"top-right\"),!e||!e.onAdd)return this.fire(new t.ErrorEvent(new Error(\"Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.\")));const o=e.onAdd(this);this._controls.push(e);const a=this._controlPositions[i];return -1!==i.indexOf(\"bottom\")?a.insertBefore(o,a.firstChild):a.appendChild(o),this}removeControl(e){if(!e||!e.onRemove)return this.fire(new t.ErrorEvent(new Error(\"Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.\")));const i=this._controls.indexOf(e);return i>-1&&this._controls.splice(i,1),e.onRemove(this),this}hasControl(t){return this._controls.indexOf(t)>-1}resize(e){const i=this._containerDimensions(),o=i[0],a=i[1];this._resizeCanvas(o,a,this.getPixelRatio()),this.transform.resize(o,a),this.painter.resize(o,a,this.getPixelRatio());const s=!this._moving;return s&&(this.stop(),this.fire(new t.Event(\"movestart\",e)).fire(new t.Event(\"move\",e))),this.fire(new t.Event(\"resize\",e)),s&&this.fire(new t.Event(\"moveend\",e)),this}getPixelRatio(){return this._pixelRatio}setPixelRatio(t){const[e,i]=this._containerDimensions();this._pixelRatio=t,this._resizeCanvas(e,i,t),this.painter.resize(e,i,t);}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(e){return this.transform.setMaxBounds(t.LngLatBounds.convert(e)),this._update()}setMinZoom(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error(\"maxZoom must be greater than the current minZoom\")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(t){if((t=null==t?0:t)<0)throw new Error(\"minPitch must be greater than or equal to 0\");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()85)throw new Error(\"maxPitch must be less than or equal to 85\");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t&&this.setPitch(t),this;throw new Error(\"maxPitch must be greater than the current minPitch\")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(t){return this.transform.renderWorldCopies=t,this._update()}project(e){return this.transform.locationPoint(t.LngLat.convert(e))}unproject(e){return this.transform.pointLocation(t.pointGeometry.convert(e))}isMoving(){return this._moving||this.handlers.isMoving()}isZooming(){return this._zooming||this.handlers.isZooming()}isRotating(){return this._rotating||this.handlers.isRotating()}_createDelegatedListener(t,e,i){if(\"mouseenter\"===t||\"mouseover\"===t){let o=!1;const a=a=>{const s=this.getLayer(e)?this.queryRenderedFeatures(a.point,{layers:[e]}):[];s.length?o||(o=!0,i.call(this,new ho(t,this,a.originalEvent,{features:s}))):o=!1;};return {layer:e,listener:i,delegates:{mousemove:a,mouseout:()=>{o=!1;}}}}if(\"mouseleave\"===t||\"mouseout\"===t){let o=!1;const a=a=>{(this.getLayer(e)?this.queryRenderedFeatures(a.point,{layers:[e]}):[]).length?o=!0:o&&(o=!1,i.call(this,new ho(t,this,a.originalEvent)));},s=e=>{o&&(o=!1,i.call(this,new ho(t,this,e.originalEvent)));};return {layer:e,listener:i,delegates:{mousemove:a,mouseout:s}}}{const o=t=>{const o=this.getLayer(e)?this.queryRenderedFeatures(t.point,{layers:[e]}):[];o.length&&(t.features=o,i.call(this,t),delete t.features);};return {layer:e,listener:i,delegates:{[t]:o}}}}on(t,e,i){if(void 0===i)return super.on(t,e);const o=this._createDelegatedListener(t,e,i);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(o);for(const t in o.delegates)this.on(t,o.delegates[t]);return this}once(t,e,i){if(void 0===i)return super.once(t,e);const o=this._createDelegatedListener(t,e,i);for(const t in o.delegates)this.once(t,o.delegates[t]);return this}off(t,e,i){return void 0===i?super.off(t,e):(this._delegatedListeners&&this._delegatedListeners[t]&&(o=>{const a=this._delegatedListeners[t];for(let t=0;t{e?this.fire(new t.ErrorEvent(e)):o&&this._updateDiff(o,i);}));}else \"object\"==typeof e&&this._updateDiff(e,i);}_updateDiff(e,i){try{this.style.setState(e)&&this._update(!0);}catch(o){t.warnOnce(`Unable to perform style diff: ${o.message||o.error||o}. Rebuilding the style from scratch.`),this._updateStyle(e,i);}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():t.warnOnce(\"There is no style added to the map.\")}addSource(t,e){return this._lazyInitEmptyStyle(),this.style.addSource(t,e),this._update(!0)}isSourceLoaded(e){const i=this.style&&this.style.sourceCaches[e];if(void 0!==i)return i.loaded();this.fire(new t.ErrorEvent(new Error(`There is no source with ID '${e}'`)));}areTilesLoaded(){const t=this.style&&this.style.sourceCaches;for(const e in t){const i=t[e]._tiles;for(const t in i){const e=i[t];if(\"loaded\"!==e.state&&\"errored\"!==e.state)return !1}}return !0}addSourceType(t,e,i){return this._lazyInitEmptyStyle(),this.style.addSourceType(t,e,i)}removeSource(t){return this.style.removeSource(t),this._update(!0)}getSource(t){return this.style.getSource(t)}addImage(e,i,{pixelRatio:o=1,sdf:a=!1,stretchX:s,stretchY:r,content:n}={}){if(this._lazyInitEmptyStyle(),i instanceof HTMLImageElement||t.isImageBitmap(i)){const{width:l,height:c,data:h}=t.exported.getImageData(i);this.style.addImage(e,{data:new t.RGBAImage({width:l,height:c},h),pixelRatio:o,stretchX:s,stretchY:r,content:n,sdf:a,version:0});}else {if(void 0===i.width||void 0===i.height)return this.fire(new t.ErrorEvent(new Error(\"Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));{const{width:l,height:c,data:h}=i,u=i;this.style.addImage(e,{data:new t.RGBAImage({width:l,height:c},new Uint8Array(h)),pixelRatio:o,stretchX:s,stretchY:r,content:n,sdf:a,version:0,userImage:u}),u.onAdd&&u.onAdd(this,e);}}}updateImage(e,i){const o=this.style.getImage(e);if(!o)return this.fire(new t.ErrorEvent(new Error(\"The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.\")));const a=i instanceof HTMLImageElement||t.isImageBitmap(i)?t.exported.getImageData(i):i,{width:s,height:r,data:n}=a;if(void 0===s||void 0===r)return this.fire(new t.ErrorEvent(new Error(\"Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`\")));if(s!==o.data.width||r!==o.data.height)return this.fire(new t.ErrorEvent(new Error(\"The width and height of the updated image must be that same as the previous version of the image\")));const l=!(i instanceof HTMLImageElement||t.isImageBitmap(i));o.data.replace(n,l),this.style.updateImage(e,o);}hasImage(e){return e?!!this.style.getImage(e):(this.fire(new t.ErrorEvent(new Error(\"Missing required image id\"))),!1)}removeImage(t){this.style.removeImage(t);}loadImage(e,i){t.getImage(this._requestManager.transformRequest(e,t.ResourceType.Image),i);}listImages(){return this.style.listImages()}addLayer(t,e){return this._lazyInitEmptyStyle(),this.style.addLayer(t,e),this._update(!0)}moveLayer(t,e){return this.style.moveLayer(t,e),this._update(!0)}removeLayer(t){return this.style.removeLayer(t),this._update(!0)}getLayer(t){return this.style.getLayer(t)}setLayerZoomRange(t,e,i){return this.style.setLayerZoomRange(t,e,i),this._update(!0)}setFilter(t,e,i={}){return this.style.setFilter(t,e,i),this._update(!0)}getFilter(t){return this.style.getFilter(t)}setPaintProperty(t,e,i,o={}){return this.style.setPaintProperty(t,e,i,o),this._update(!0)}getPaintProperty(t,e){return this.style.getPaintProperty(t,e)}setLayoutProperty(t,e,i,o={}){return this.style.setLayoutProperty(t,e,i,o),this._update(!0)}getLayoutProperty(t,e){return this.style.getLayoutProperty(t,e)}setLight(t,e={}){return this._lazyInitEmptyStyle(),this.style.setLight(t,e),this._update(!0)}getLight(){return this.style.getLight()}setFeatureState(t,e){return this.style.setFeatureState(t,e),this._update()}removeFeatureState(t,e){return this.style.removeFeatureState(t,e),this._update()}getFeatureState(t){return this.style.getFeatureState(t)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let t=0,e=0;return this._container&&(t=this._container.clientWidth||400,e=this._container.clientHeight||300),[t,e]}_setupContainer(){const t=this._container;t.classList.add(\"maplibregl-map\",\"mapboxgl-map\");const e=this._canvasContainer=s.create(\"div\",\"maplibregl-canvas-container mapboxgl-canvas-container\",t);this._interactive&&e.classList.add(\"maplibregl-interactive\",\"mapboxgl-interactive\"),this._canvas=s.create(\"canvas\",\"maplibregl-canvas mapboxgl-canvas\",e),this._canvas.addEventListener(\"webglcontextlost\",this._contextLost,!1),this._canvas.addEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.setAttribute(\"tabindex\",\"0\"),this._canvas.setAttribute(\"aria-label\",\"Map\"),this._canvas.setAttribute(\"role\",\"region\");const i=this._containerDimensions();this._resizeCanvas(i[0],i[1],this.getPixelRatio());const o=this._controlContainer=s.create(\"div\",\"maplibregl-control-container mapboxgl-control-container\",t),a=this._controlPositions={};[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"].forEach((t=>{a[t]=s.create(\"div\",`maplibregl-ctrl-${t} mapboxgl-ctrl-${t}`,o);})),this._container.addEventListener(\"scroll\",this._onMapScroll,!1);}_resizeCanvas(t,e,i){this._canvas.width=i*t,this._canvas.height=i*e,this._canvas.style.width=`${t}px`,this._canvas.style.height=`${e}px`;}_setupPainter(){const i=t.extend({},e.webGLContextAttributes,{failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1}),o=this._canvas.getContext(\"webgl\",i)||this._canvas.getContext(\"experimental-webgl\",i);o?(this.painter=new Ki(o,this.transform),t.exported$1.testSupport(o)):this.fire(new t.ErrorEvent(new Error(\"Failed to initialize WebGL\")));}_contextLost(e){e.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new t.Event(\"webglcontextlost\",{originalEvent:e}));}_contextRestored(e){this._setupPainter(),this.resize(),this._update(),this.fire(new t.Event(\"webglcontextrestored\",{originalEvent:e}));}_onMapScroll(t){if(t.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1}loaded(){return !this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(t){return this.style?(this._styleDirty=this._styleDirty||t,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(t){return this._update(),this._renderTaskQueue.add(t)}_cancelRenderFrame(t){this._renderTaskQueue.remove(t);}_render(e){let i,o=0;const a=this.painter.context.extTimerQuery;if(this.listens(\"gpu-timing-frame\")&&(i=a.createQueryEXT(),a.beginQueryEXT(a.TIME_ELAPSED_EXT,i),o=t.exported.now()),this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(e),this._removed)return;let s=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;const e=this.transform.zoom,i=t.exported.now();this.style.zoomHistory.update(e,i);const o=new t.EvaluationParameters(e,{now:i,fadeDuration:this._fadeDuration,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),a=o.crossFadingFactor();1===a&&a===this._crossFadingFactor||(s=!0,this._crossFadingFactor=a),this.style.update(o);}if(this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,this._fadeDuration,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:this._fadeDuration,showPadding:this.showPadding,gpuTiming:!!this.listens(\"gpu-timing-layer\")}),this.fire(new t.Event(\"render\")),this.loaded()&&!this._loaded&&(this._loaded=!0,t.PerformanceUtils.mark(t.PerformanceMarkers.load),this.fire(new t.Event(\"load\"))),this.style&&(this.style.hasTransitions()||s)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles(),this.listens(\"gpu-timing-frame\")){const e=t.exported.now()-o;a.endQueryEXT(a.TIME_ELAPSED_EXT,i),setTimeout((()=>{const o=a.getQueryObjectEXT(i,a.QUERY_RESULT_EXT)/1e6;a.deleteQueryEXT(i),this.fire(new t.Event(\"gpu-timing-frame\",{cpuTime:e,gpuTime:o}));}),50);}if(this.listens(\"gpu-timing-layer\")){const e=this.painter.collectGpuTimers();setTimeout((()=>{const i=this.painter.queryGpuTimers(e);this.fire(new t.Event(\"gpu-timing-layer\",{layerTimes:i}));}),50);}const r=this._sourcesDirty||this._styleDirty||this._placementDirty;return r||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new t.Event(\"idle\")),!this._loaded||this._fullyLoaded||r||(this._fullyLoaded=!0,t.PerformanceUtils.mark(t.PerformanceMarkers.fullLoad)),this}redraw(){return this.style&&(this._frame&&(this._frame.cancel(),this._frame=null),this._render(0)),this}remove(){this._hash&&this._hash.remove();for(const t of this._controls)t.onRemove(this);this._controls=[],this._frame&&(this._frame.cancel(),this._frame=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),\"undefined\"!=typeof window&&(removeEventListener(\"resize\",this._onWindowResize,!1),removeEventListener(\"orientationchange\",this._onWindowResize,!1),removeEventListener(\"online\",this._onWindowOnline,!1));const e=this.painter.context.gl.getExtension(\"WEBGL_lose_context\");e&&e.loseContext(),this._canvas.removeEventListener(\"webglcontextrestored\",this._contextRestored,!1),this._canvas.removeEventListener(\"webglcontextlost\",this._contextLost,!1),s.remove(this._canvasContainer),s.remove(this._controlContainer),this._container.classList.remove(\"maplibregl-map\",\"mapboxgl-map\"),t.PerformanceUtils.clearMetrics(),this._removed=!0,this.fire(new t.Event(\"remove\"));}triggerRepaint(){this.style&&!this._frame&&(this._frame=t.exported.frame((e=>{t.PerformanceUtils.frame(e),this._frame=null,this._render(e);})));}_onWindowOnline(){this._update();}_onWindowResize(t){this._trackResize&&this.resize({originalEvent:t})._update();}get showTileBoundaries(){return !!this._showTileBoundaries}set showTileBoundaries(t){this._showTileBoundaries!==t&&(this._showTileBoundaries=t,this._update());}get showPadding(){return !!this._showPadding}set showPadding(t){this._showPadding!==t&&(this._showPadding=t,this._update());}get showCollisionBoxes(){return !!this._showCollisionBoxes}set showCollisionBoxes(t){this._showCollisionBoxes!==t&&(this._showCollisionBoxes=t,t?this.style._generateCollisionBoxes():this._update());}get showOverdrawInspector(){return !!this._showOverdrawInspector}set showOverdrawInspector(t){this._showOverdrawInspector!==t&&(this._showOverdrawInspector=t,this._update());}get repaint(){return !!this._repaint}set repaint(t){this._repaint!==t&&(this._repaint=t,this.triggerRepaint());}get vertices(){return !!this._vertices}set vertices(t){this._vertices=t,this._update();}_setCacheLimits(e,i){t.setCacheLimits(e,i);}},NavigationControl:class{constructor(e){this.options=t.extend({},oa,e),this._container=s.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group mapboxgl-ctrl mapboxgl-ctrl-group\"),this._container.addEventListener(\"contextmenu\",(t=>t.preventDefault())),this.options.showZoom&&(t.bindAll([\"_setButtonTitle\",\"_updateZoomButtons\"],this),this._zoomInButton=this._createButton(\"maplibregl-ctrl-zoom-in mapboxgl-ctrl-zoom-in\",(t=>this._map.zoomIn({},{originalEvent:t}))),s.create(\"span\",\"maplibregl-ctrl-icon mapboxgl-ctrl-icon\",this._zoomInButton).setAttribute(\"aria-hidden\",\"true\"),this._zoomOutButton=this._createButton(\"maplibregl-ctrl-zoom-out mapboxgl-ctrl-zoom-out\",(t=>this._map.zoomOut({},{originalEvent:t}))),s.create(\"span\",\"maplibregl-ctrl-icon mapboxgl-ctrl-icon\",this._zoomOutButton).setAttribute(\"aria-hidden\",\"true\")),this.options.showCompass&&(t.bindAll([\"_rotateCompassArrow\"],this),this._compass=this._createButton(\"maplibregl-ctrl-compass mapboxgl-ctrl-compass\",(t=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:t}):this._map.resetNorth({},{originalEvent:t});})),this._compassIcon=s.create(\"span\",\"maplibregl-ctrl-icon mapboxgl-ctrl-icon\",this._compass),this._compassIcon.setAttribute(\"aria-hidden\",\"true\"));}_updateZoomButtons(){const t=this._map.getZoom(),e=t===this._map.getMaxZoom(),i=t===this._map.getMinZoom();this._zoomInButton.disabled=e,this._zoomOutButton.disabled=i,this._zoomInButton.setAttribute(\"aria-disabled\",e.toString()),this._zoomOutButton.setAttribute(\"aria-disabled\",i.toString());}_rotateCompassArrow(){const t=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._compassIcon.style.transform=t;}onAdd(t){return this._map=t,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,\"ZoomIn\"),this._setButtonTitle(this._zoomOutButton,\"ZoomOut\"),this._map.on(\"zoom\",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,\"ResetBearing\"),this.options.visualizePitch&&this._map.on(\"pitch\",this._rotateCompassArrow),this._map.on(\"rotate\",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new aa(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){s.remove(this._container),this.options.showZoom&&this._map.off(\"zoom\",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off(\"pitch\",this._rotateCompassArrow),this._map.off(\"rotate\",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map;}_createButton(t,e){const i=s.create(\"button\",t,this._container);return i.type=\"button\",i.addEventListener(\"click\",e),i}_setButtonTitle(t,e){const i=this._map._getUIString(`NavigationControl.${e}`);t.title=i,t.setAttribute(\"aria-label\",i);}},GeolocateControl:class extends t.Evented{constructor(e){super(),this.options=t.extend({},ca,e),t.bindAll([\"_onSuccess\",\"_onError\",\"_onZoom\",\"_finish\",\"_setupUI\",\"_updateCamera\",\"_updateMarker\"],this);}onAdd(t){var e;return this._map=t,this._container=s.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group mapboxgl-ctrl mapboxgl-ctrl-group\"),e=this._setupUI,void 0!==ha?e(ha):void 0!==window.navigator.permissions?window.navigator.permissions.query({name:\"geolocation\"}).then((t=>{ha=\"denied\"!==t.state,e(ha);})):(ha=!!window.navigator.geolocation,e(ha)),this._container}onRemove(){void 0!==this._geolocationWatchID&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),s.remove(this._container),this._map.off(\"zoom\",this._onZoom),this._map=void 0,ua=0,da=!1;}_isOutOfMapMaxBounds(t){const e=this._map.getMaxBounds(),i=t.coords;return e&&(i.longitudee.getEast()||i.latitudee.getNorth())}_setErrorState(){switch(this._watchState){case\"WAITING_ACTIVE\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\",\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active-error\",\"mapboxgl-ctrl-geolocate-active-error\");break;case\"ACTIVE_LOCK\":this._watchState=\"ACTIVE_ERROR\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\",\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active-error\",\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\",\"mapboxgl-ctrl-geolocate-waiting\");break;case\"BACKGROUND\":this._watchState=\"BACKGROUND_ERROR\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\",\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-background-error\",\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\",\"mapboxgl-ctrl-geolocate-waiting\");}}_onSuccess(e){if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.Event(\"outofmaxbounds\",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\",\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active-error\",\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active\",\"mapboxgl-ctrl-geolocate-active\");break;case\"BACKGROUND\":case\"BACKGROUND_ERROR\":this._watchState=\"BACKGROUND\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\",\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background-error\",\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-background\",\"mapboxgl-ctrl-geolocate-background\");}this.options.showUserLocation&&\"OFF\"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&\"ACTIVE_LOCK\"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove(\"maplibregl-user-location-dot-stale\",\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"geolocate\",e)),this._finish();}}_updateCamera(e){const i=new t.LngLat(e.coords.longitude,e.coords.latitude),o=e.coords.accuracy,a=this._map.getBearing(),s=t.extend({bearing:a},this.options.fitBoundsOptions);this._map.fitBounds(i.toBounds(o),s,{geolocateSource:!0});}_updateMarker(e){if(e){const i=new t.LngLat(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(i).addTo(this._map),this._userLocationDotMarker.setLngLat(i).addTo(this._map),this._accuracy=e.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius();}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove();}_updateCircleRadius(){const t=this._map._container.clientHeight/2,e=this._map.unproject([0,t]),i=this._map.unproject([1,t]),o=e.distanceTo(i),a=Math.ceil(2*this._accuracy/o);this._circleElement.style.width=`${a}px`,this._circleElement.style.height=`${a}px`;}_onZoom(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius();}_onError(e){if(this._map){if(this.options.trackUserLocation)if(1===e.code){this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\",\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\",\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active-error\",\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\",\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background-error\",\"mapboxgl-ctrl-geolocate-background-error\"),this._geolocateButton.disabled=!0;const t=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.title=t,this._geolocateButton.setAttribute(\"aria-label\",t),void 0!==this._geolocationWatchID&&this._clearWatch();}else {if(3===e.code&&da)return;this._setErrorState();}\"OFF\"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add(\"maplibregl-user-location-dot-stale\",\"mapboxgl-user-location-dot-stale\"),this.fire(new t.Event(\"error\",e)),this._finish();}}_finish(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0;}_setupUI(e){if(this._container.addEventListener(\"contextmenu\",(t=>t.preventDefault())),this._geolocateButton=s.create(\"button\",\"maplibregl-ctrl-geolocate mapboxgl-ctrl-geolocate\",this._container),s.create(\"span\",\"maplibregl-ctrl-icon mapboxgl-ctrl-icon\",this._geolocateButton).setAttribute(\"aria-hidden\",\"true\"),this._geolocateButton.type=\"button\",!1===e){t.warnOnce(\"Geolocation support is not available so the GeolocateControl will be disabled.\");const e=this._map._getUIString(\"GeolocateControl.LocationNotAvailable\");this._geolocateButton.disabled=!0,this._geolocateButton.title=e,this._geolocateButton.setAttribute(\"aria-label\",e);}else {const t=this._map._getUIString(\"GeolocateControl.FindMyLocation\");this._geolocateButton.title=t,this._geolocateButton.setAttribute(\"aria-label\",t);}this.options.trackUserLocation&&(this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this._watchState=\"OFF\"),this.options.showUserLocation&&(this._dotElement=s.create(\"div\",\"maplibregl-user-location-dot mapboxgl-user-location-dot\"),this._userLocationDotMarker=new la(this._dotElement),this._circleElement=s.create(\"div\",\"maplibregl-user-location-accuracy-circle mapboxgl-user-location-accuracy-circle\"),this._accuracyCircleMarker=new la({element:this._circleElement,pitchAlignment:\"map\"}),this.options.trackUserLocation&&(this._watchState=\"OFF\"),this._map.on(\"zoom\",this._onZoom)),this._geolocateButton.addEventListener(\"click\",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on(\"movestart\",(e=>{e.geolocateSource||\"ACTIVE_LOCK\"!==this._watchState||e.originalEvent&&\"resize\"===e.originalEvent.type||(this._watchState=\"BACKGROUND\",this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-background\",\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\",\"mapboxgl-ctrl-geolocate-active\"),this.fire(new t.Event(\"trackuserlocationend\")));}));}trigger(){if(!this._setup)return t.warnOnce(\"Geolocate control triggered before added to a map\"),!1;if(this.options.trackUserLocation){switch(this._watchState){case\"OFF\":this._watchState=\"WAITING_ACTIVE\",this.fire(new t.Event(\"trackuserlocationstart\"));break;case\"WAITING_ACTIVE\":case\"ACTIVE_LOCK\":case\"ACTIVE_ERROR\":case\"BACKGROUND_ERROR\":ua--,da=!1,this._watchState=\"OFF\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\",\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active\",\"mapboxgl-ctrl-geolocate-active\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-active-error\",\"mapboxgl-ctrl-geolocate-active-error\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\",\"mapboxgl-ctrl-geolocate-background\"),this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background-error\",\"mapboxgl-ctrl-geolocate-background-error\"),this.fire(new t.Event(\"trackuserlocationend\"));break;case\"BACKGROUND\":this._watchState=\"ACTIVE_LOCK\",this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-background\",\"mapboxgl-ctrl-geolocate-background\"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.Event(\"trackuserlocationstart\"));}switch(this._watchState){case\"WAITING_ACTIVE\":this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\",\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active\",\"mapboxgl-ctrl-geolocate-active\");break;case\"ACTIVE_LOCK\":this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-active\",\"mapboxgl-ctrl-geolocate-active\");}if(\"OFF\"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){let t;this._geolocateButton.classList.add(\"maplibregl-ctrl-geolocate-waiting\",\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"true\"),ua++,ua>1?(t={maximumAge:6e5,timeout:0},da=!0):(t=this.options.positionOptions,da=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,t);}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return !0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(\"maplibregl-ctrl-geolocate-waiting\",\"mapboxgl-ctrl-geolocate-waiting\"),this._geolocateButton.setAttribute(\"aria-pressed\",\"false\"),this.options.showUserLocation&&this._updateMarker(null);}},AttributionControl:Jo,LogoControl:Qo,ScaleControl:class{constructor(e){this.options=t.extend({},ma,e),t.bindAll([\"_onMove\",\"setUnit\"],this);}getDefaultPosition(){return \"bottom-left\"}_onMove(){_a(this._map,this._container,this.options);}onAdd(t){return this._map=t,this._container=s.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-scale mapboxgl-ctrl mapboxgl-ctrl-scale\",t.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container}onRemove(){s.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0;}setUnit(t){this.options.unit=t,_a(this._map,this._container,this.options);}},FullscreenControl:class{constructor(e){this._fullscreen=!1,e&&e.container&&(e.container instanceof HTMLElement?this._container=e.container:t.warnOnce(\"Full screen control 'container' must be a DOM element.\")),t.bindAll([\"_onClickFullscreen\",\"_changeIcon\"],this),\"onfullscreenchange\"in document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in document&&(this._fullscreenchange=\"MSFullscreenChange\");}onAdd(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=s.create(\"div\",\"maplibregl-ctrl maplibregl-ctrl-group mapboxgl-ctrl mapboxgl-ctrl-group\"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display=\"none\",t.warnOnce(\"This device does not support fullscreen mode.\")),this._controlContainer}onRemove(){s.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._changeIcon);}_checkFullscreenSupport(){return !!(document.fullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled||document.webkitFullscreenEnabled)}_setupUI(){const t=this._fullscreenButton=s.create(\"button\",\"maplibregl-ctrl-fullscreen mapboxgl-ctrl-fullscreen\",this._controlContainer);s.create(\"span\",\"maplibregl-ctrl-icon mapboxgl-ctrl-icon\",t).setAttribute(\"aria-hidden\",\"true\"),t.type=\"button\",this._updateTitle(),this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._changeIcon);}_updateTitle(){const t=this._getTitle();this._fullscreenButton.setAttribute(\"aria-label\",t),this._fullscreenButton.title=t;}_getTitle(){return this._map._getUIString(this._isFullscreen()?\"FullscreenControl.Exit\":\"FullscreenControl.Enter\")}_isFullscreen(){return this._fullscreen}_changeIcon(){(window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(\"maplibregl-ctrl-shrink\"),this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-shrink\"),this._fullscreenButton.classList.toggle(\"maplibregl-ctrl-fullscreen\"),this._fullscreenButton.classList.toggle(\"mapboxgl-ctrl-fullscreen\"),this._updateTitle());}_onClickFullscreen(){this._isFullscreen()?window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen&&window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen();}},Popup:class extends t.Evented{constructor(e){super(),this.options=t.extend(Object.create(fa),e),t.bindAll([\"_update\",\"_onClose\",\"remove\",\"_onMouseMove\",\"_onMouseUp\",\"_onDrag\"],this);}addTo(e){return this._map&&this.remove(),this._map=e,this.options.closeOnClick&&this._map.on(\"click\",this._onClose),this.options.closeOnMove&&this._map.on(\"move\",this._onClose),this._map.on(\"remove\",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"mouseup\",this._onMouseUp),this._container&&this._container.classList.add(\"maplibregl-popup-track-pointer\",\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"maplibregl-track-pointer\",\"mapboxgl-track-pointer\")):this._map.on(\"move\",this._update),this.fire(new t.Event(\"open\")),this}isOpen(){return !!this._map}remove(){return this._content&&s.remove(this._content),this._container&&(s.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"move\",this._onClose),this._map.off(\"click\",this._onClose),this._map.off(\"remove\",this.remove),this._map.off(\"mousemove\",this._onMouseMove),this._map.off(\"mouseup\",this._onMouseUp),this._map.off(\"drag\",this._onDrag),delete this._map),this.fire(new t.Event(\"close\")),this}getLngLat(){return this._lngLat}setLngLat(e){return this._lngLat=t.LngLat.convert(e),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on(\"move\",this._update),this._map.off(\"mousemove\",this._onMouseMove),this._container&&this._container.classList.remove(\"maplibregl-popup-track-pointer\",\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.remove(\"maplibregl-track-pointer\",\"mapboxgl-track-pointer\")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off(\"move\",this._update),this._map.on(\"mousemove\",this._onMouseMove),this._map.on(\"drag\",this._onDrag),this._container&&this._container.classList.add(\"maplibregl-popup-track-pointer\",\"mapboxgl-popup-track-pointer\"),this._map._canvasContainer.classList.add(\"maplibregl-track-pointer\",\"mapboxgl-track-pointer\")),this}getElement(){return this._container}setText(t){return this.setDOMContent(document.createTextNode(t))}setHTML(t){const e=document.createDocumentFragment(),i=document.createElement(\"body\");let o;for(i.innerHTML=t;o=i.firstChild,o;)e.appendChild(o);return this.setDOMContent(e)}getMaxWidth(){return this._container&&this._container.style.maxWidth}setMaxWidth(t){return this.options.maxWidth=t,this._update(),this}setDOMContent(t){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=s.create(\"div\",\"maplibregl-popup-content mapboxgl-popup-content\",this._container);return this._content.appendChild(t),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(t){this._container&&this._container.classList.add(t);}removeClassName(t){this._container&&this._container.classList.remove(t);}setOffset(t){return this.options.offset=t,this._update(),this}toggleClassName(t){if(this._container)return this._container.classList.toggle(t)}_createCloseButton(){this.options.closeButton&&(this._closeButton=s.create(\"button\",\"maplibregl-popup-close-button mapboxgl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.innerHTML=\"×\",this._closeButton.addEventListener(\"click\",this._onClose));}_onMouseUp(t){this._update(t.point);}_onMouseMove(t){this._update(t.point);}_onDrag(t){this._update(t.point);}_update(t){if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(this._container||(this._container=s.create(\"div\",\"maplibregl-popup mapboxgl-popup\",this._map.getContainer()),this._tip=s.create(\"div\",\"maplibregl-popup-tip mapboxgl-popup-tip\",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(\" \").forEach((t=>this._container.classList.add(t))),this._trackPointer&&this._container.classList.add(\"maplibregl-popup-track-pointer\",\"mapboxgl-popup-track-pointer\")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=sa(this._lngLat,this._pos,this._map.transform)),this._trackPointer&&!t)return;const e=this._pos=this._trackPointer&&t?t:this._map.project(this._lngLat);let i=this.options.anchor;const o=xa(this.options.offset);if(!i){const t=this._container.offsetWidth,a=this._container.offsetHeight;let s;s=e.y+o.bottom.ythis._map.transform.height-a?[\"bottom\"]:[],e.xthis._map.transform.width-t/2&&s.push(\"right\"),i=0===s.length?\"bottom\":s.join(\"-\");}const a=e.add(o[i]).round();s.setTransform(this._container,`${ra[i]} translate(${a.x}px,${a.y}px)`),na(this._container,i,\"popup\");}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const t=this._container.querySelector(ga);t&&t.focus();}_onClose(){this.remove();}},Marker:la,Style:ie,LngLat:t.LngLat,LngLatBounds:t.LngLatBounds,Point:t.pointGeometry,MercatorCoordinate:t.MercatorCoordinate,Evented:t.Evented,AJAXError:t.AJAXError,config:t.config,CanvasSource:R,GeoJSONSource:D,ImageSource:M,RasterDEMTileSource:z,RasterTileSource:C,VectorTileSource:S,VideoSource:L,prewarm:function(){H().acquire(j);},clearPrewarmedResources:function(){const t=X;t&&(t.isPreloaded()&&1===t.numActive()?(t.release(j),X=null):console.warn(\"Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()\"));},get workerCount(){return $.workerCount},set workerCount(t){$.workerCount=t;},get maxParallelImageRequests(){return t.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(e){t.config.MAX_PARALLEL_IMAGE_REQUESTS=e;},clearStorage(e){t.clearTileCache(e);},workerUrl:\"\",addProtocol(e,i){t.config.REGISTERED_PROTOCOLS[e]=i;},removeProtocol(e){delete t.config.REGISTERED_PROTOCOLS[e];}};return Ko.extend(va,{isSafari:t.isSafari,getPerformanceMetrics:t.PerformanceUtils.getPerformanceMetrics}),va}));\n\n//\n\nvar maplibregl$1 = maplibregl;\n\nreturn maplibregl$1;\n\n}));\n//# sourceMappingURL=maplibre-gl.js.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\nvar objectToString = Object.prototype.toString;\nvar isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n};\n\nfunction isFunction (object) {\n return typeof object === 'function';\n}\n\n/**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\nfunction typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n}\n\nfunction escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n}\n\n/**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\nfunction hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n}\n\n/**\n * Safe way of detecting whether or not the given thing is a primitive and\n * whether it has the given property\n */\nfunction primitiveHasOwnProperty (primitive, propName) {\n return (\n primitive != null\n && typeof primitive !== 'object'\n && primitive.hasOwnProperty\n && primitive.hasOwnProperty(propName)\n );\n}\n\n// Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n// See https://github.com/janl/mustache.js/issues/189\nvar regExpTest = RegExp.prototype.test;\nfunction testRegExp (re, string) {\n return regExpTest.call(re, string);\n}\n\nvar nonSpaceRe = /\\S/;\nfunction isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n}\n\nvar entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n};\n\nfunction escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n}\n\nvar whiteRe = /\\s*/;\nvar spaceRe = /\\s+/;\nvar equalsRe = /\\s*=/;\nvar curlyRe = /\\s*\\}/;\nvar tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n/**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n *\n * Tokens for partials also contain two more elements: 1) a string value of\n * indendation prior to that tag and 2) the index of that tag on that line -\n * eg a value of 2 indicates the partial is the third tag on this line.\n */\nfunction parseTemplate (template, tags) {\n if (!template)\n return [];\n var lineHasNonSpace = false;\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n var indentation = ''; // Tracks indentation for tags that use it\n var tagIndex = 0; // Stores a count of number of tags encountered on a line\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n indentation += chr;\n } else {\n nonSpace = true;\n lineHasNonSpace = true;\n indentation += ' ';\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n') {\n stripSpace();\n indentation = '';\n tagIndex = 0;\n lineHasNonSpace = false;\n }\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n if (type == '>') {\n token = [ type, value, start, scanner.pos, indentation, tagIndex, lineHasNonSpace ];\n } else {\n token = [ type, value, start, scanner.pos ];\n }\n tagIndex++;\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n stripSpace();\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n}\n\n/**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\nfunction squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n}\n\n/**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\nfunction nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n}\n\n/**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\nfunction Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n}\n\n/**\n * Returns `true` if the tail is empty (end of string).\n */\nScanner.prototype.eos = function eos () {\n return this.tail === '';\n};\n\n/**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\nScanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n};\n\n/**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\nScanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n};\n\n/**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\nfunction Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n}\n\n/**\n * Creates a new context using the given view with this context\n * as the parent.\n */\nContext.prototype.push = function push (view) {\n return new Context(view, this);\n};\n\n/**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\nContext.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, intermediateValue, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n intermediateValue = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n *\n * In the case where dot notation is used, we consider the lookup\n * to be successful even if the last \"object\" in the path is\n * not actually an object but a primitive (e.g., a string, or an\n * integer), because it is sometimes useful to access a property\n * of an autoboxed primitive, such as the length of a string.\n **/\n while (intermediateValue != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = (\n hasProperty(intermediateValue, names[index])\n || primitiveHasOwnProperty(intermediateValue, names[index])\n );\n\n intermediateValue = intermediateValue[names[index++]];\n }\n } else {\n intermediateValue = context.view[name];\n\n /**\n * Only checking against `hasProperty`, which always returns `false` if\n * `context.view` is not an object. Deliberately omitting the check\n * against `primitiveHasOwnProperty` if dot notation is not used.\n *\n * Consider this example:\n * ```\n * Mustache.render(\"The length of a football field is {{#length}}{{length}}{{/length}}.\", {length: \"100 yards\"})\n * ```\n *\n * If we were to check also against `primitiveHasOwnProperty`, as we do\n * in the dot notation case, then render call would return:\n *\n * \"The length of a football field is 9.\"\n *\n * rather than the expected:\n *\n * \"The length of a football field is 100 yards.\"\n **/\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit) {\n value = intermediateValue;\n break;\n }\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n};\n\n/**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\nfunction Writer () {\n this.templateCache = {\n _cache: {},\n set: function set (key, value) {\n this._cache[key] = value;\n },\n get: function get (key) {\n return this._cache[key];\n },\n clear: function clear () {\n this._cache = {};\n }\n };\n}\n\n/**\n * Clears all cached templates in this writer.\n */\nWriter.prototype.clearCache = function clearCache () {\n if (typeof this.templateCache !== 'undefined') {\n this.templateCache.clear();\n }\n};\n\n/**\n * Parses and caches the given `template` according to the given `tags` or\n * `mustache.tags` if `tags` is omitted, and returns the array of tokens\n * that is generated from the parse.\n */\nWriter.prototype.parse = function parse (template, tags) {\n var cache = this.templateCache;\n var cacheKey = template + ':' + (tags || mustache.tags).join(':');\n var isCacheEnabled = typeof cache !== 'undefined';\n var tokens = isCacheEnabled ? cache.get(cacheKey) : undefined;\n\n if (tokens == undefined) {\n tokens = parseTemplate(template, tags);\n isCacheEnabled && cache.set(cacheKey, tokens);\n }\n return tokens;\n};\n\n/**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n *\n * If the optional `config` argument is given here, then it should be an\n * object with a `tags` attribute or an `escape` attribute or both.\n * If an array is passed, then it will be interpreted the same way as\n * a `tags` attribute on a `config` object.\n *\n * The `tags` attribute of a `config` object must be an array with two\n * string values: the opening and closing tags used in the template (e.g.\n * [ \"<%\", \"%>\" ]). The default is to mustache.tags.\n *\n * The `escape` attribute of a `config` object must be a function which\n * accepts a string as input and outputs a safely escaped string.\n * If an `escape` function is not provided, then an HTML-safe string\n * escaping function is used as the default.\n */\nWriter.prototype.render = function render (template, view, partials, config) {\n var tags = this.getConfigTags(config);\n var tokens = this.parse(template, tags);\n var context = (view instanceof Context) ? view : new Context(view, undefined);\n return this.renderTokens(tokens, context, partials, template, config);\n};\n\n/**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\nWriter.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate, config) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate, config);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate, config);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, config);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context, config);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n};\n\nWriter.prototype.renderSection = function renderSection (token, context, partials, originalTemplate, config) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials, config);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate, config);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate, config);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate, config);\n }\n return buffer;\n};\n\nWriter.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate, config) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate, config);\n};\n\nWriter.prototype.indentPartial = function indentPartial (partial, indentation, lineHasNonSpace) {\n var filteredIndentation = indentation.replace(/[^ \\t]/g, '');\n var partialByNl = partial.split('\\n');\n for (var i = 0; i < partialByNl.length; i++) {\n if (partialByNl[i].length && (i > 0 || !lineHasNonSpace)) {\n partialByNl[i] = filteredIndentation + partialByNl[i];\n }\n }\n return partialByNl.join('\\n');\n};\n\nWriter.prototype.renderPartial = function renderPartial (token, context, partials, config) {\n if (!partials) return;\n var tags = this.getConfigTags(config);\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null) {\n var lineHasNonSpace = token[6];\n var tagIndex = token[5];\n var indentation = token[4];\n var indentedValue = value;\n if (tagIndex == 0 && indentation) {\n indentedValue = this.indentPartial(value, indentation, lineHasNonSpace);\n }\n var tokens = this.parse(indentedValue, tags);\n return this.renderTokens(tokens, context, partials, indentedValue, config);\n }\n};\n\nWriter.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n};\n\nWriter.prototype.escapedValue = function escapedValue (token, context, config) {\n var escape = this.getConfigEscape(config) || mustache.escape;\n var value = context.lookup(token[1]);\n if (value != null)\n return (typeof value === 'number' && escape === mustache.escape) ? String(value) : escape(value);\n};\n\nWriter.prototype.rawValue = function rawValue (token) {\n return token[1];\n};\n\nWriter.prototype.getConfigTags = function getConfigTags (config) {\n if (isArray(config)) {\n return config;\n }\n else if (config && typeof config === 'object') {\n return config.tags;\n }\n else {\n return undefined;\n }\n};\n\nWriter.prototype.getConfigEscape = function getConfigEscape (config) {\n if (config && typeof config === 'object' && !isArray(config)) {\n return config.escape;\n }\n else {\n return undefined;\n }\n};\n\nvar mustache = {\n name: 'mustache.js',\n version: '4.2.0',\n tags: [ '{{', '}}' ],\n clearCache: undefined,\n escape: undefined,\n parse: undefined,\n render: undefined,\n Scanner: undefined,\n Context: undefined,\n Writer: undefined,\n /**\n * Allows a user to override the default caching strategy, by providing an\n * object with set, get and clear methods. This can also be used to disable\n * the cache by setting it to the literal `undefined`.\n */\n set templateCache (cache) {\n defaultWriter.templateCache = cache;\n },\n /**\n * Gets the default or overridden caching object from the default writer.\n */\n get templateCache () {\n return defaultWriter.templateCache;\n }\n};\n\n// All high-level mustache.* functions use this writer.\nvar defaultWriter = new Writer();\n\n/**\n * Clears all cached templates in the default writer.\n */\nmustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n};\n\n/**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\nmustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n};\n\n/**\n * Renders the `template` with the given `view`, `partials`, and `config`\n * using the default writer.\n */\nmustache.render = function render (template, view, partials, config) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials, config);\n};\n\n// Export the escaping function so that the user may override it.\n// See https://github.com/janl/mustache.js/issues/244\nmustache.escape = escapeHtml;\n\n// Export these mainly for testing, but also for advanced usage.\nmustache.Scanner = Scanner;\nmustache.Context = Context;\nmustache.Writer = Writer;\n\nexport default mustache;\n","/*\nnotes\n- Event infrastructure for RM2\n\ntodo\n- testiranje\n- JSDdoc API dokumentacija\n- definiranje EventArgs za vse OL3 evente\n*/\n\nimport { CoordinateLike } from '../model/RM2Geometry';\nimport { Map } from '../map/RM2Map';\nimport { Layer } from './RM2Layer';\nimport { Feature } from './RM2Feature';\n\n/**\n * Event interface.\n * \n * @interface IEvent\n * @template T\n */\nexport interface IRM2Event {\n /**\n * Subscribes event handler.\n *\n * @param {{ (data?: T): void }} handler\n *\n * @memberOf IEvent\n */\n subscribe(handler: (data?: T) => void): void;\n\n /**\n * Unsubscribes event handler.\n *\n * @param {{ (data?: T): void }} handler\n *\n * @memberOf IEvent\n */\n unsubscribe(handler: (data?: T) => void): void;\n}\n\n/**\n * Event object.\n *\n * @class Event\n * @implements {IRM2Event}\n * @template T\n */\nexport class RM2Event implements IRM2Event {\n private _handlers: ((data?: T) => void)[] = [];\n\n /**\n * Subscribes event handler.\n *\n * @param {{ (data?: T): void }} handler\n *\n * @memberOf Event\n */\n public subscribe(handler: (data?: T) => void): void {\n this._handlers.push(handler);\n }\n\n /**\n * Unsubscribes event handler.\n *\n * @param {{ (data?: T): void }} handler\n *\n * @memberOf Event\n */\n public unsubscribe(handler: (data?: T) => void): void {\n this._handlers = this._handlers.filter(h => h !== handler);\n }\n\n /**\n * Trigger event handlers.\n *\n * @param {T} [data]\n *\n * @memberOf Event\n */\n public trigger(data?: T) {\n this._handlers.slice(0).forEach(h => h(data));\n }\n\n /**\n * Exposes this event.\n *\n * @returns {IEvent}\n *\n * @memberOf Event\n */\n public expose(): IRM2Event {\n return this;\n }\n}\n\n\n/**\n * MapEventArgs interface.\n */\nexport interface MapEventArgs {\n map: Map;\n coordinate?: CoordinateLike;\n projection?: string;\n nativeEvent?: Event;\n // layer?: Layer;\n features?: Array;\n featureLayers?: Array;\n}\n","import proj4 from 'proj4';\r\n\r\n/**\r\n * Projection object.\r\n */\r\nexport class Projection {\r\n private static _projections: { [code: string]: Projection; } = {};\r\n\r\n // private _olProjection: ol.proj.Projection;\r\n private _definition: string;\r\n\r\n private _crsCode: string;\r\n\r\n /**\r\n * Creates an instance of Projection.\r\n */\r\n public static create(definition: string): Projection {\r\n try {\r\n const cp = definition.split(';');\r\n const definedProjection = Projection._projections[cp[0]];\r\n if (definedProjection) {\r\n if (cp.length > 1 && definedProjection._definition !== definition)\r\n throw new Error('Projection with same crsCode was already defined: ' + definition);\r\n return definedProjection;\r\n }\r\n\r\n if (cp.length > 1)\r\n proj4.defs(cp[0], cp[1]);\r\n\r\n // // TODO: remove olProjection\r\n // (ol.proj as any).setProj4(proj4);\r\n // const olProjection = ol.proj.get(cp[0]);\r\n // if (cp.length === 3)\r\n // olProjection.setExtent(JSON.parse(cp[2]));\r\n \r\n const projection = new Projection(definition);\r\n Projection._projections[cp[0]] = projection;\r\n return projection;\r\n }\r\n catch (ex) {\r\n throw new Error('Error creating projection: [' + ex.message + ']');\r\n }\r\n }\r\n\r\n /**\r\n * Transforms given coordinate from source projection to target projection.\r\n */\r\n public static transform(coordinate: number[], sourceProjection: Projection, targetProjection: Projection): number[] {\r\n // return (ol.proj as any).transform(coordinate, sourceProjection._olProjection, targetProjection._olProjection);\r\n return proj4(sourceProjection.crsCode, targetProjection.crsCode, coordinate);\r\n }\r\n\r\n private constructor(definition: string) {\r\n // this._olProjection = ol;\r\n this._definition = definition;\r\n this._crsCode = definition.split(';')[0];\r\n }\r\n\r\n /**\r\n * Returns associated definition.\r\n */\r\n public get definition(): string {\r\n return this._definition;\r\n }\r\n\r\n /**\r\n * Returns CRS code of associated projection.\r\n */\r\n public get crsCode(): string {\r\n return this._crsCode;\r\n }\r\n\r\n // /**\r\n // * Returns extent of associated projection. Extent is returned as array of numeric ordinates [minX, minY, maxX, maxY];\r\n // */\r\n // public get extent(): number[] {\r\n // return this._olProjection.getExtent();\r\n // }\r\n\r\n // /**\r\n // * Returns meters per unit numeric value for associated projection.\r\n // */\r\n // public get metersPerUnit(): number {\r\n // return this._olProjection.getMetersPerUnit();\r\n // }\r\n\r\n // /**\r\n // * Returns name of units for associated projection.\r\n // */\r\n // public get units(): string {\r\n // return this._olProjection.getUnits() as string;\r\n // }\r\n\r\n // /**\r\n // * Returns associated projection.\r\n // */\r\n // public get olProjection(): ol.proj.Projection {\r\n // return this._olProjection;\r\n // }\r\n}\r\n","/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexport var earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var factors = {\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n degrees: earthRadius / 111325,\n feet: earthRadius * 3.28084,\n inches: earthRadius * 39.37,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n meters: earthRadius,\n metres: earthRadius,\n miles: earthRadius / 1609.344,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n nauticalmiles: earthRadius / 1852,\n radians: 1,\n yards: earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var unitsFactors = {\n centimeters: 100,\n centimetres: 100,\n degrees: 1 / 111325,\n feet: 3.28084,\n inches: 39.37,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n meters: 1,\n metres: 1,\n miles: 1 / 1609.344,\n millimeters: 1000,\n millimetres: 1000,\n nauticalmiles: 1 / 1852,\n radians: 1 / earthRadius,\n yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexport var areaFactors = {\n acres: 0.000247105,\n centimeters: 10000,\n centimetres: 10000,\n feet: 10.763910417,\n hectares: 0.0001,\n inches: 1550.003100006,\n kilometers: 0.000001,\n kilometres: 0.000001,\n meters: 1,\n metres: 1,\n miles: 3.86e-7,\n millimeters: 1000000,\n millimetres: 1000000,\n yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nexport function feature(geom, properties, options) {\n if (options === void 0) { options = {}; }\n var feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nexport function geometry(type, coordinates, _options) {\n if (_options === void 0) { _options = {}; }\n switch (type) {\n case \"Point\":\n return point(coordinates).geometry;\n case \"LineString\":\n return lineString(coordinates).geometry;\n case \"Polygon\":\n return polygon(coordinates).geometry;\n case \"MultiPoint\":\n return multiPoint(coordinates).geometry;\n case \"MultiLineString\":\n return multiLineString(coordinates).geometry;\n case \"MultiPolygon\":\n return multiPolygon(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nexport function point(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n if (!coordinates) {\n throw new Error(\"coordinates is required\");\n }\n if (!Array.isArray(coordinates)) {\n throw new Error(\"coordinates must be an Array\");\n }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be at least 2 numbers long\");\n }\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n throw new Error(\"coordinates must contain numbers\");\n }\n var geom = {\n type: \"Point\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nexport function points(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nexport function polygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n var ring = coordinates_1[_i];\n if (ring.length < 4) {\n throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n var geom = {\n type: \"Polygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nexport function polygons(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nexport function lineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n var geom = {\n type: \"LineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nexport function lineStrings(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nexport function featureCollection(features, options) {\n if (options === void 0) { options = {}; }\n var fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nexport function multiLineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiLineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nexport function multiPoint(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPoint\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nexport function multiPolygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPolygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nexport function geometryCollection(geometries, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"GeometryCollection\",\n geometries: geometries,\n };\n return feature(geom, properties, options);\n}\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nexport function round(num, precision) {\n if (precision === void 0) { precision = 0; }\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nexport function radiansToLength(radians, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nexport function lengthToRadians(distance, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nexport function lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nexport function bearingToAzimuth(bearing) {\n var angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nexport function radiansToDegrees(radians) {\n var degrees = radians % (2 * Math.PI);\n return (degrees * 180) / Math.PI;\n}\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nexport function degreesToRadians(degrees) {\n var radians = degrees % 360;\n return (radians * Math.PI) / 180;\n}\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nexport function convertLength(length, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nexport function convertArea(area, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"meters\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n var startFactor = areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n var finalFactor = areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return (area / startFactor) * finalFactor;\n}\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nexport function isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nexport function isObject(input) {\n return !!input && input.constructor === Object;\n}\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nexport function validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach(function (num) {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nexport function validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\n","/**\n * Returns a cloned copy of the passed GeoJSON Object, including possible 'Foreign Members'.\n * ~3-5x faster than the common JSON.parse + JSON.stringify combo method.\n *\n * @name clone\n * @param {GeoJSON} geojson GeoJSON Object\n * @returns {GeoJSON} cloned GeoJSON Object\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]], {color: 'red'});\n *\n * var lineCloned = turf.clone(line);\n */\nfunction clone(geojson) {\n if (!geojson) {\n throw new Error(\"geojson is required\");\n }\n switch (geojson.type) {\n case \"Feature\":\n return cloneFeature(geojson);\n case \"FeatureCollection\":\n return cloneFeatureCollection(geojson);\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n case \"MultiPoint\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n case \"GeometryCollection\":\n return cloneGeometry(geojson);\n default:\n throw new Error(\"unknown GeoJSON type\");\n }\n}\n/**\n * Clone Feature\n *\n * @private\n * @param {Feature} geojson GeoJSON Feature\n * @returns {Feature} cloned Feature\n */\nfunction cloneFeature(geojson) {\n var cloned = { type: \"Feature\" };\n // Preserve Foreign Members\n Object.keys(geojson).forEach(function (key) {\n switch (key) {\n case \"type\":\n case \"properties\":\n case \"geometry\":\n return;\n default:\n cloned[key] = geojson[key];\n }\n });\n // Add properties & geometry last\n cloned.properties = cloneProperties(geojson.properties);\n cloned.geometry = cloneGeometry(geojson.geometry);\n return cloned;\n}\n/**\n * Clone Properties\n *\n * @private\n * @param {Object} properties GeoJSON Properties\n * @returns {Object} cloned Properties\n */\nfunction cloneProperties(properties) {\n var cloned = {};\n if (!properties) {\n return cloned;\n }\n Object.keys(properties).forEach(function (key) {\n var value = properties[key];\n if (typeof value === \"object\") {\n if (value === null) {\n // handle null\n cloned[key] = null;\n }\n else if (Array.isArray(value)) {\n // handle Array\n cloned[key] = value.map(function (item) {\n return item;\n });\n }\n else {\n // handle generic Object\n cloned[key] = cloneProperties(value);\n }\n }\n else {\n cloned[key] = value;\n }\n });\n return cloned;\n}\n/**\n * Clone Feature Collection\n *\n * @private\n * @param {FeatureCollection} geojson GeoJSON Feature Collection\n * @returns {FeatureCollection} cloned Feature Collection\n */\nfunction cloneFeatureCollection(geojson) {\n var cloned = { type: \"FeatureCollection\" };\n // Preserve Foreign Members\n Object.keys(geojson).forEach(function (key) {\n switch (key) {\n case \"type\":\n case \"features\":\n return;\n default:\n cloned[key] = geojson[key];\n }\n });\n // Add features\n cloned.features = geojson.features.map(function (feature) {\n return cloneFeature(feature);\n });\n return cloned;\n}\n/**\n * Clone Geometry\n *\n * @private\n * @param {Geometry} geometry GeoJSON Geometry\n * @returns {Geometry} cloned Geometry\n */\nfunction cloneGeometry(geometry) {\n var geom = { type: geometry.type };\n if (geometry.bbox) {\n geom.bbox = geometry.bbox;\n }\n if (geometry.type === \"GeometryCollection\") {\n geom.geometries = geometry.geometries.map(function (g) {\n return cloneGeometry(g);\n });\n return geom;\n }\n geom.coordinates = deepSlice(geometry.coordinates);\n return geom;\n}\n/**\n * Deep Slice coordinates\n *\n * @private\n * @param {Coordinates} coords Coordinates\n * @returns {Coordinates} all coordinates sliced\n */\nfunction deepSlice(coords) {\n var cloned = coords;\n if (typeof cloned[0] !== \"object\") {\n return cloned.slice();\n }\n return cloned.map(function (coord) {\n return deepSlice(coord);\n });\n}\nexport default clone;\n","import { feature, lineString, isObject, point } from '@turf/helpers';\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j,\n k,\n l,\n geometry,\n stopG,\n coords,\n geometryMaybeCollection,\n wrapShrink = 0,\n coordIndex = 0,\n isGeometryCollection,\n type = geojson.type,\n isFeatureCollection = type === \"FeatureCollection\",\n isFeature = type === \"Feature\",\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = isFeatureCollection\n ? geojson.features[featureIndex].geometry\n : isFeature\n ? geojson.geometry\n : geojson;\n isGeometryCollection = geometryMaybeCollection\n ? geometryMaybeCollection.type === \"GeometryCollection\"\n : false;\n stopG = isGeometryCollection\n ? geometryMaybeCollection.geometries.length\n : 1;\n\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection\n ? geometryMaybeCollection.geometries[geomIndex]\n : geometryMaybeCollection;\n\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n\n wrapShrink =\n excludeWrapCoord &&\n (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n ? 1\n : 0;\n\n switch (geomType) {\n case null:\n break;\n case \"Point\":\n if (\n callback(\n coords,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for (j = 0; j < coords.length; j++) {\n if (\n callback(\n coords[j],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n if (geomType === \"MultiPoint\") multiFeatureIndex++;\n }\n if (geomType === \"LineString\") multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (\n callback(\n coords[j][k],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\") multiFeatureIndex++;\n if (geomType === \"Polygon\") geometryIndex++;\n }\n if (geomType === \"Polygon\") multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (\n callback(\n coords[j][k][l],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for (j = 0; j < geometry.geometries.length; j++)\n if (\n coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n false\n )\n return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(\n geojson,\n function (\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) {\n if (coordIndex === 0 && initialValue === undefined)\n previousValue = currentCoord;\n else\n previousValue = callback(\n previousValue,\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n },\n excludeWrapCoord\n );\n return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case \"FeatureCollection\":\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function (currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined)\n previousValue = currentProperties;\n else\n previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n if (geojson.type === \"Feature\") {\n callback(geojson, 0);\n } else if (geojson.type === \"FeatureCollection\") {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function (currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined)\n previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function (coord) {\n coords.push(coord);\n });\n return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n var i,\n j,\n g,\n geometry,\n stopG,\n geometryMaybeCollection,\n isGeometryCollection,\n featureProperties,\n featureBBox,\n featureId,\n featureIndex = 0,\n isFeatureCollection = geojson.type === \"FeatureCollection\",\n isFeature = geojson.type === \"Feature\",\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (i = 0; i < stop; i++) {\n geometryMaybeCollection = isFeatureCollection\n ? geojson.features[i].geometry\n : isFeature\n ? geojson.geometry\n : geojson;\n featureProperties = isFeatureCollection\n ? geojson.features[i].properties\n : isFeature\n ? geojson.properties\n : {};\n featureBBox = isFeatureCollection\n ? geojson.features[i].bbox\n : isFeature\n ? geojson.bbox\n : undefined;\n featureId = isFeatureCollection\n ? geojson.features[i].id\n : isFeature\n ? geojson.id\n : undefined;\n isGeometryCollection = geometryMaybeCollection\n ? geometryMaybeCollection.type === \"GeometryCollection\"\n : false;\n stopG = isGeometryCollection\n ? geometryMaybeCollection.geometries.length\n : 1;\n\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection\n ? geometryMaybeCollection.geometries[g]\n : geometryMaybeCollection;\n\n // Handle null Geometry\n if (geometry === null) {\n if (\n callback(\n null,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false\n )\n return false;\n continue;\n }\n switch (geometry.type) {\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\": {\n if (\n callback(\n geometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false\n )\n return false;\n break;\n }\n case \"GeometryCollection\": {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (\n callback(\n geometry.geometries[j],\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false\n )\n return false;\n }\n break;\n }\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(\n geojson,\n function (\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) {\n if (featureIndex === 0 && initialValue === undefined)\n previousValue = currentGeometry;\n else\n previousValue = callback(\n previousValue,\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n );\n }\n );\n return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = geometry === null ? null : geometry.type;\n switch (type) {\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (\n callback(\n feature(geometry, properties, { bbox: bbox, id: id }),\n featureIndex,\n 0\n ) === false\n )\n return false;\n return;\n }\n\n var geomType;\n\n // Callback for multi-geometry\n switch (type) {\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n\n for (\n var multiFeatureIndex = 0;\n multiFeatureIndex < geometry.coordinates.length;\n multiFeatureIndex++\n ) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate,\n };\n if (\n callback(feature(geom, properties), featureIndex, multiFeatureIndex) ===\n false\n )\n return false;\n }\n });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(\n geojson,\n function (currentFeature, featureIndex, multiFeatureIndex) {\n if (\n featureIndex === 0 &&\n multiFeatureIndex === 0 &&\n initialValue === undefined\n )\n previousValue = currentFeature;\n else\n previousValue = callback(\n previousValue,\n currentFeature,\n featureIndex,\n multiFeatureIndex\n );\n }\n );\n return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n\n // Exclude null Geometries\n if (!feature.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\") return;\n\n // Generate 2-vertex line segments\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if (\n coordEach(\n feature,\n function (\n currentCoord,\n coordIndex,\n featureIndexCoord,\n multiPartIndexCoord,\n geometryIndex\n ) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (\n previousCoords === undefined ||\n featureIndex > previousFeatureIndex ||\n multiPartIndexCoord > previousMultiIndex ||\n geometryIndex > prevGeomIndex\n ) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = lineString(\n [previousCoords, currentCoord],\n feature.properties\n );\n if (\n callback(\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) === false\n )\n return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }\n ) === false\n )\n return false;\n });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentIndex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(\n geojson,\n function (\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) {\n if (started === false && initialValue === undefined)\n previousValue = currentSegment;\n else\n previousValue = callback(\n previousValue,\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n );\n started = true;\n }\n );\n return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n // validation\n if (!geojson) throw new Error(\"geojson is required\");\n\n flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n if (feature.geometry === null) return;\n var type = feature.geometry.type;\n var coords = feature.geometry.coordinates;\n switch (type) {\n case \"LineString\":\n if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n return false;\n break;\n case \"Polygon\":\n for (\n var geometryIndex = 0;\n geometryIndex < coords.length;\n geometryIndex++\n ) {\n if (\n callback(\n lineString(coords[geometryIndex], feature.properties),\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n }\n break;\n }\n });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(\n geojson,\n function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined)\n previousValue = currentLine;\n else\n previousValue = callback(\n previousValue,\n currentLine,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n }\n );\n return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature>\n */\nfunction findSegment(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return lineString(\n [coords[segmentIndex], coords[segmentIndex + 1]],\n properties,\n options\n );\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1],\n ],\n properties,\n options\n );\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1],\n ],\n properties,\n options\n );\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex =\n coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n ],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature>\n */\nfunction findPoint(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n return point(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0)\n coordIndex =\n coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(\n coords[multiFeatureIndex][geometryIndex][coordIndex],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\n\nexport { coordAll, coordEach, coordReduce, featureEach, featureReduce, findPoint, findSegment, flattenEach, flattenReduce, geomEach, geomReduce, lineEach, lineReduce, propEach, propReduce, segmentEach, segmentReduce };\n","import { coordEach } from \"@turf/meta\";\n/**\n * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.\n *\n * @name bbox\n * @param {GeoJSON} geojson any GeoJSON object\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);\n * var bbox = turf.bbox(line);\n * var bboxPolygon = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [line, bboxPolygon]\n */\nfunction bbox(geojson) {\n var result = [Infinity, Infinity, -Infinity, -Infinity];\n coordEach(geojson, function (coord) {\n if (result[0] > coord[0]) {\n result[0] = coord[0];\n }\n if (result[1] > coord[1]) {\n result[1] = coord[1];\n }\n if (result[2] < coord[0]) {\n result[2] = coord[0];\n }\n if (result[3] < coord[1]) {\n result[3] = coord[1];\n }\n });\n return result;\n}\nbbox[\"default\"] = bbox;\nexport default bbox;\n","import bbox from '@turf/bbox';\nimport bboxPolygon from '@turf/bbox-polygon';\n\n/**\n * Takes any number of features and returns a rectangular {@link Polygon} that encompasses all vertices.\n *\n * @name envelope\n * @param {GeoJSON} geojson input features\n * @returns {Feature} a rectangular Polygon feature that encompasses all vertices\n * @example\n * var features = turf.featureCollection([\n * turf.point([-75.343, 39.984], {\"name\": \"Location A\"}),\n * turf.point([-75.833, 39.284], {\"name\": \"Location B\"}),\n * turf.point([-75.534, 39.123], {\"name\": \"Location C\"})\n * ]);\n *\n * var enveloped = turf.envelope(features);\n *\n * //addToMap\n * var addToMap = [features, enveloped];\n */\nfunction envelope(geojson) {\n return bboxPolygon(bbox(geojson));\n}\n\nexport default envelope;\n","import { polygon } from \"@turf/helpers\";\n/**\n * Takes a bbox and returns an equivalent {@link Polygon|polygon}.\n *\n * @name bboxPolygon\n * @param {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @param {Object} [options={}] Optional parameters\n * @param {Properties} [options.properties={}] Translate properties to Polygon\n * @param {string|number} [options.id={}] Translate Id to Polygon\n * @returns {Feature} a Polygon representation of the bounding box\n * @example\n * var bbox = [0, 0, 10, 10];\n *\n * var poly = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [poly]\n */\nexport default function bboxPolygon(bbox, options) {\n if (options === void 0) { options = {}; }\n // Convert BBox positions to Numbers\n // No performance loss for including Number()\n // https://github.com/Turfjs/turf/issues/1119\n var west = Number(bbox[0]);\n var south = Number(bbox[1]);\n var east = Number(bbox[2]);\n var north = Number(bbox[3]);\n if (bbox.length === 6) {\n throw new Error(\"@turf/bbox-polygon does not support BBox with 6 positions\");\n }\n var lowLeft = [west, south];\n var topLeft = [west, north];\n var topRight = [east, north];\n var lowRight = [east, south];\n return polygon([[lowLeft, lowRight, topRight, topLeft, lowLeft]], options.properties, { bbox: bbox, id: options.id });\n}\n","import { coordEach } from \"@turf/meta\";\nimport { point } from \"@turf/helpers\";\n/**\n * Takes one or more features and calculates the centroid using the mean of all vertices.\n * This lessens the effect of small islands and artifacts when calculating the centroid of a set of polygons.\n *\n * @name centroid\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [options={}] Optional Parameters\n * @param {Object} [options.properties={}] an Object that is used as the {@link Feature}'s properties\n * @returns {Feature} the centroid of the input features\n * @example\n * var polygon = turf.polygon([[[-81, 41], [-88, 36], [-84, 31], [-80, 33], [-77, 39], [-81, 41]]]);\n *\n * var centroid = turf.centroid(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, centroid]\n */\nfunction centroid(geojson, options) {\n if (options === void 0) { options = {}; }\n var xSum = 0;\n var ySum = 0;\n var len = 0;\n coordEach(geojson, function (coord) {\n xSum += coord[0];\n ySum += coord[1];\n len++;\n }, true);\n return point([xSum / len, ySum / len], options.properties);\n}\nexport default centroid;\n","import { flattenEach } from '@turf/meta';\nimport { featureCollection } from '@turf/helpers';\n\n/**\n * Flattens any {@link GeoJSON} to a {@link FeatureCollection} inspired by [geojson-flatten](https://github.com/tmcw/geojson-flatten).\n *\n * @name flatten\n * @param {GeoJSON} geojson any valid GeoJSON Object\n * @returns {FeatureCollection} all Multi-Geometries are flattened into single Features\n * @example\n * var multiGeometry = turf.multiPolygon([\n * [[[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]]],\n * [[[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],\n * [[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]]\n * ]);\n *\n * var flatten = turf.flatten(multiGeometry);\n *\n * //addToMap\n * var addToMap = [flatten]\n */\nfunction flatten(geojson) {\n if (!geojson) throw new Error(\"geojson is required\");\n\n var results = [];\n flattenEach(geojson, function (feature) {\n results.push(feature);\n });\n return featureCollection(results);\n}\n\nexport default flatten;\n","import { isNumber, } from \"@turf/helpers\";\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nexport function getCoord(coord) {\n if (!coord) {\n throw new Error(\"coord is required\");\n }\n if (!Array.isArray(coord)) {\n if (coord.type === \"Feature\" &&\n coord.geometry !== null &&\n coord.geometry.type === \"Point\") {\n return coord.geometry.coordinates;\n }\n if (coord.type === \"Point\") {\n return coord.coordinates;\n }\n }\n if (Array.isArray(coord) &&\n coord.length >= 2 &&\n !Array.isArray(coord[0]) &&\n !Array.isArray(coord[1])) {\n return coord;\n }\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nexport function getCoords(coords) {\n if (Array.isArray(coords)) {\n return coords;\n }\n // Feature\n if (coords.type === \"Feature\") {\n if (coords.geometry !== null) {\n return coords.geometry.coordinates;\n }\n }\n else {\n // Geometry\n if (coords.coordinates) {\n return coords.coordinates;\n }\n }\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nexport function containsNumber(coordinates) {\n if (coordinates.length > 1 &&\n isNumber(coordinates[0]) &&\n isNumber(coordinates[1])) {\n return true;\n }\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error(\"coordinates must only contain numbers\");\n}\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nexport function geojsonType(value, type, name) {\n if (!type || !name) {\n throw new Error(\"type and name required\");\n }\n if (!value || value.type !== type) {\n throw new Error(\"Invalid input to \" +\n name +\n \": must be a \" +\n type +\n \", given \" +\n value.type);\n }\n}\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nexport function featureOf(feature, type, name) {\n if (!feature) {\n throw new Error(\"No feature passed\");\n }\n if (!name) {\n throw new Error(\".featureOf() requires a name\");\n }\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\"Invalid input to \" +\n name +\n \": must be a \" +\n type +\n \", given \" +\n feature.geometry.type);\n }\n}\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nexport function collectionOf(featureCollection, type, name) {\n if (!featureCollection) {\n throw new Error(\"No featureCollection passed\");\n }\n if (!name) {\n throw new Error(\".collectionOf() requires a name\");\n }\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n }\n for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n var feature = _a[_i];\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\"Invalid input to \" +\n name +\n \": must be a \" +\n type +\n \", given \" +\n feature.geometry.type);\n }\n }\n}\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nexport function getGeom(geojson) {\n if (geojson.type === \"Feature\") {\n return geojson.geometry;\n }\n return geojson;\n}\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nexport function getType(geojson, _name) {\n if (geojson.type === \"FeatureCollection\") {\n return \"FeatureCollection\";\n }\n if (geojson.type === \"GeometryCollection\") {\n return \"GeometryCollection\";\n }\n if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n return geojson.geometry.type;\n }\n return geojson.type;\n}\n","import { getCoord } from \"@turf/invariant\";\nimport { radiansToLength, degreesToRadians, } from \"@turf/helpers\";\n//http://en.wikipedia.org/wiki/Haversine_formula\n//http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Calculates the distance between two {@link Point|points} in degrees, radians, miles, or kilometers.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name distance\n * @param {Coord | Point} from origin point or coordinate\n * @param {Coord | Point} to destination point or coordinate\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.distance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */\nfunction distance(from, to, options) {\n if (options === void 0) { options = {}; }\n var coordinates1 = getCoord(from);\n var coordinates2 = getCoord(to);\n var dLat = degreesToRadians(coordinates2[1] - coordinates1[1]);\n var dLon = degreesToRadians(coordinates2[0] - coordinates1[0]);\n var lat1 = degreesToRadians(coordinates1[1]);\n var lat2 = degreesToRadians(coordinates2[1]);\n var a = Math.pow(Math.sin(dLat / 2), 2) +\n Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);\n return radiansToLength(2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)), options.units);\n}\nexport default distance;\n","import * as turf_helpers from '@turf/helpers';\r\nimport * as turf_clone from '@turf/clone';\r\nimport * as turf_envelope from '@turf/envelope';\r\nimport * as turf_centroid from '@turf/centroid';\r\nimport * as turf_flatten from '@turf/flatten';\r\nimport * as turf_distance from '@turf/distance';\r\n\r\nimport proj4 from 'proj4';\r\nimport { reproject } from 'reproject';\r\nimport { parse, stringify } from 'wkt';\r\nimport { Projection } from './RM2Projection';\r\n\r\n// wrappers around JSTS classes\r\n\r\nexport type CoordinateLike = [number, number];\r\n\r\n/**\r\n * Coordinate class. Extends jsts.geom.Coordinate class.\r\n */\r\nexport class Coordinate {\r\n\r\n x: number;\r\n y: number;\r\n\r\n constructor(x: number, y: number) {\r\n this.x = x;\r\n this.y = y;\r\n }\r\n\r\n /**\r\n * Returns coordinate from the first two ordinates in the given numeric array.\r\n */\r\n public static fromOrdinates(ordinates: CoordinateLike): Coordinate {\r\n return new Coordinate(ordinates[0], ordinates[1]);\r\n }\r\n /**\r\n * Returns an array or two ordinates (x and y) from the given Coordinate object.\r\n */\r\n public static toOrdinates(coordinate: Coordinate): CoordinateLike {\r\n return [coordinate.x, coordinate.y];\r\n }\r\n /**\r\n * Returns an array of Coordinate objects from the given numeric array (takes two ordintes for each Coordinate).\r\n */\r\n public static sequenceFromOrdinates(ordinates: number[]): Coordinate[] {\r\n const coordinates = new Array();\r\n for (let i = 0; i < ordinates.length; i += 2)\r\n coordinates.push(new Coordinate(ordinates[i], ordinates[i + 1]));\r\n \r\n return coordinates;\r\n }\r\n /**\r\n * Returns a coordinate, transformed from source projection to target projection.\r\n */\r\n public static transform(coordinate: Coordinate, sourceProjection: Projection, targetProjection: Projection): Coordinate {\r\n if (sourceProjection === targetProjection)\r\n return new Coordinate(coordinate.x, coordinate.y);\r\n \r\n return this.fromOrdinates(proj4(sourceProjection.crsCode, targetProjection.crsCode, this.toOrdinates(coordinate)));\r\n }\r\n}\r\n\r\n/**\r\n * Envelope class. Represents rectangular geographic area defined with minX, minY, maxX, mayY borders.\r\n */\r\nexport class Envelope {\r\n\r\n minx: number;\r\n miny: number;\r\n maxx: number;\r\n maxy: number;\r\n\r\n constructor(minx: number, miny: number, maxx: number, maxy: number) {\r\n this.minx = minx;\r\n this.miny = miny;\r\n this.maxx = maxx;\r\n this.maxy = maxy;\r\n }\r\n\r\n /**\r\n * Returns new Envelope object from given array of 4 numeric values.\r\n */\r\n public static fromNumArray(extent: number[]): Envelope {\r\n return new Envelope(extent[0], extent[1], extent[2], extent[3]);\r\n }\r\n /**\r\n * Returns numeric array of 4 ordinates (minX, minY, maxX, maxY).\r\n */\r\n public static toNumArray(envelope: Envelope) {\r\n return [envelope.minx, envelope.miny, envelope.maxx, envelope.maxy];\r\n }\r\n /**\r\n * Returns new envelope, transformed from source projection to target projection.\r\n */\r\n public static transform(envelope: Envelope, sourceProjection: Projection, targetProjection: Projection): Envelope {\r\n if (sourceProjection === targetProjection)\r\n return new Envelope(envelope.minx, envelope.miny, envelope.maxx, envelope.maxy);\r\n \r\n const min = proj4(sourceProjection.crsCode, targetProjection.crsCode, [envelope.minx, envelope.miny]);\r\n const max = proj4(sourceProjection.crsCode, targetProjection.crsCode, [envelope.maxx, envelope.maxy]);\r\n return this.fromNumArray(min.concat(max));\r\n }\r\n /**\r\n * Returns new envelope of given point coordinate.\r\n */\r\n public static fromCoordinate(coordinate: Coordinate) {\r\n return new Envelope(coordinate.x, coordinate.y, coordinate.x, coordinate.y);\r\n }\r\n}\r\n\r\n/**\r\n * String value that represents type of geometry.\r\n */\r\nexport type GeometryType = 'point' | 'lineString' | 'polygon' | 'multiPoint' | 'multiLineString' | 'multiPolygon' | 'geometryCollection';\r\n\r\n/**\r\n * Represents geometry object.\r\n */\r\nexport abstract class Geometry implements turf_helpers.Geometry {\r\n type: string;\r\n bbox?: [number, number, number, number] | [number, number, number, number, number, number];\r\n coordinates: turf_helpers.Position | turf_helpers.Position[] | turf_helpers.Position[][] | turf_helpers.Position[][][];\r\n\r\n public getCoordinate(): Coordinate {\r\n const flatten = this.flattenCoords();\r\n if (flatten.length >= 2)\r\n return new Coordinate(flatten[0], flatten[1]);\r\n return null;\r\n }\r\n\r\n public getCoordinates(): Coordinate[] {\r\n const flatten = this.flattenCoords();\r\n if (flatten.length % 2 !== 0)\r\n return null;\r\n\r\n const coords: Coordinate[] = [];\r\n for (let i = 0; i < flatten.length; i += 2)\r\n coords.push(new Coordinate(flatten[i], flatten[i + 1]));\r\n \r\n return coords;\r\n }\r\n\r\n public getEnvelopeInternal(): Envelope {\r\n const envelope = turf_envelope.default(this);\r\n const flatten = turf_flatten.default(envelope);\r\n return Envelope.fromNumArray(flatten.features[0].bbox);\r\n }\r\n\r\n public distance(geometry: Geometry): number {\r\n const c1 = this.getCentroid();\r\n const c2 = geometry.getCentroid();\r\n\r\n const p1 = turf_helpers.point(c1.coordinates);\r\n const p2 = turf_helpers.point(c2.coordinates);\r\n return turf_distance.default(p1, p2);\r\n }\r\n\r\n public getCentroid(): Point {\r\n const centroid = turf_centroid.default(this);\r\n const coords = centroid.geometry.coordinates;\r\n return Point.fromCoordinate([coords[0], coords[1]]);\r\n }\r\n\r\n private flattenCoords(): number[] {\r\n return this.coordinates.flat(3);\r\n }\r\n\r\n /**\r\n * Returns new Geometry object from given WKT string.\r\n */\r\n public static fromWkt(wktString: string): Geometry {\r\n const json = parse(wktString);\r\n return this.fromGeoJson(json);\r\n // return this._wktReader.read(wkt) as Geometry;\r\n }\r\n\r\n /**\r\n * Returns WKT string from given Geometry object.\r\n */\r\n public static toWkt(geometry: Geometry): string {\r\n const wktString = stringify(geometry);\r\n console.log(wktString);\r\n return wktString;\r\n // return this._wktWriter.write(geometry);\r\n }\r\n\r\n /**\r\n * Clones the Geometry object\r\n */\r\n public clone(): Geometry {\r\n return Geometry.fromGeoJson(turf_clone.default(this));\r\n }\r\n\r\n /**\r\n * Returns new Geometry object from given geoJSON string.\r\n */\r\n public static fromGeoJson(geoJson: string | Object): Geometry {\r\n let json: Geometry;\r\n if (typeof geoJson == 'string')\r\n json = JSON.parse(geoJson) as Geometry;\r\n else\r\n json = geoJson as Geometry;\r\n\r\n const type = json.type.toLowerCase();\r\n if (type === 'point')\r\n return new Point(json.coordinates as CoordinateLike);\r\n // else if (type === \"LineSegment\")\r\n // return new LineSegment();\r\n else if (type === 'linestring')\r\n return new LineString(json.coordinates as CoordinateLike[]);\r\n else if (type === 'multilinestring')\r\n return new MultiLineString(json.coordinates as CoordinateLike[][]);\r\n else if (type === 'polygon')\r\n return new Polygon(json.coordinates as CoordinateLike[][]);\r\n \r\n throw new Error('NotImplemented');\r\n }\r\n\r\n /**\r\n * Returns geoJSON string from given Geometry object.\r\n */\r\n public static toGeoJson(geometry: Geometry): Object {\r\n return geometry;\r\n }\r\n\r\n // todo Optimization! Implement transform on jsts geometry\r\n /**\r\n * Returns new Geometry object, transformed from source projection to target projection.\r\n */\r\n public static transform(geometry: Geometry, sourceProjection: Projection, targetProjection: Projection): Geometry {\r\n if (sourceProjection === targetProjection)\r\n return turf_clone.default(geometry);\r\n \r\n // HACK: nekaj narobe s knjiznico v primeru polygona\r\n if (geometry.type.toLowerCase() == 'polygon')\r\n (geometry as any).shell.points.coordinates = [];\r\n\r\n return Geometry.fromGeoJson(reproject(Geometry.toGeoJson(geometry), proj4.defs(sourceProjection.crsCode), proj4.defs(targetProjection.crsCode)));\r\n }\r\n}\r\n/**\r\n * Represents point geometry object.\r\n */\r\nexport class Point extends Geometry implements turf_helpers.Point {\r\n type: \"Point\";\r\n coordinates: turf_helpers.Position;\r\n \r\n constructor(coordinates: Coordinate | CoordinateLike) {\r\n super();\r\n\r\n this.type = \"Point\";\r\n if (coordinates instanceof Coordinate)\r\n this.coordinates = [coordinates.x, coordinates.y];\r\n else\r\n this.coordinates = coordinates;\r\n }\r\n\r\n public static fromCoordinate(coordinate: Coordinate | CoordinateLike): Point {\r\n if (Array.isArray(coordinate))\r\n coordinate = Coordinate.fromOrdinates(coordinate);\r\n \r\n return new Point(coordinate);\r\n }\r\n}\r\n/**\r\n * Represents linestring geometry object.\r\n */\r\nexport class LineSegment extends Geometry {\r\n public static fromCoordinates(coordinates: [Coordinate, Coordinate] | [CoordinateLike, CoordinateLike]): LineString {\r\n if (Array.isArray(coordinates) && Array.isArray(coordinates[0]))\r\n coordinates = (coordinates as [CoordinateLike, CoordinateLike]).map(coord => Coordinate.fromOrdinates(coord)) as [Coordinate, Coordinate];\r\n \r\n return new (jsts.geom as any).LineSegment(coordinates[0], coordinates[1]);\r\n }\r\n}\r\n/**\r\n * Represents linestring geometry object.\r\n */\r\nexport class LineString extends Geometry implements turf_helpers.LineString {\r\n type: \"LineString\";\r\n coordinates: turf_helpers.Position[];\r\n\r\n constructor(coordinates: Coordinate[] | CoordinateLike[]) {\r\n super();\r\n\r\n this.type = \"LineString\";\r\n const positions: turf_helpers.Position[] = [];\r\n for (let i = 0; i < coordinates.length; i++) {\r\n const coord = coordinates[i];\r\n if (coord instanceof Coordinate)\r\n positions.push([coord.x, coord.y]);\r\n else\r\n positions.push(coord);\r\n }\r\n\r\n this.coordinates = positions;\r\n }\r\n}\r\n/**\r\n * Represents multilinestring geometry object.\r\n */\r\nexport class MultiLineString extends Geometry implements turf_helpers.MultiLineString {\r\n type: \"MultiLineString\";\r\n coordinates: turf_helpers.Position[][];\r\n\r\n constructor(coordinates: Coordinate[][] | CoordinateLike[][]) {\r\n super();\r\n\r\n this.type = \"MultiLineString\";\r\n const positions: turf_helpers.Position[][] = [];\r\n for (let i = 0; i < coordinates.length; i++) {\r\n const ls = coordinates[i];\r\n const lsCoords: turf_helpers.Position[] = [];\r\n for (let j = 0; j < ls.length; j++) {\r\n const coord = ls[j];\r\n if (coord instanceof Coordinate)\r\n lsCoords.push([coord.x, coord.y]);\r\n else\r\n lsCoords.push(coord);\r\n }\r\n\r\n positions.push(lsCoords);\r\n }\r\n\r\n this.coordinates = positions;\r\n }\r\n}\r\n/**\r\n * Represents polygon geometry object.\r\n */\r\nexport class Polygon extends Geometry implements turf_helpers.Polygon {\r\n type: \"Polygon\";\r\n coordinates: turf_helpers.Position[][];\r\n\r\n constructor(coordinates: Coordinate[][] | CoordinateLike[][]) {\r\n super();\r\n\r\n this.type = \"Polygon\";\r\n const positions: turf_helpers.Position[][] = [];\r\n for (let i = 0; i < coordinates.length; i++) {\r\n const ls = coordinates[i];\r\n const lsCoords: turf_helpers.Position[] = [];\r\n for (let j = 0; j < ls.length; j++) {\r\n const coord = ls[j];\r\n if (coord instanceof Coordinate)\r\n lsCoords.push([coord.x, coord.y]);\r\n else\r\n lsCoords.push(coord);\r\n }\r\n\r\n positions.push(lsCoords);\r\n }\r\n\r\n this.coordinates = positions;\r\n }\r\n}","import { Projection } from '../model/RM2Projection';\r\n\r\nexport class Zoom {\r\n public static fromMbZoom(mbZoom: number): number { return mbZoom; }\r\n public static fromOlZoom(olZoom: number): number { return olZoom + 5.5; }\r\n public static toMbZoom(mbZoom: number): number { return mbZoom; }\r\n public static toOlZoom(rmZoom: number): number { return rmZoom - 5.5; }\r\n}\r\n\r\nexport class CameraChangeOptions implements ICameraChangeOptions {\r\n projection?: Projection;\r\n animate?: boolean;\r\n duration?: number;\r\n padding?: number | PaddingOptions;\r\n\r\n constructor(opts?: ICameraChangeOptions) {\r\n this.projection = opts && opts.projection != undefined ? opts.projection : undefined;\r\n this.animate = opts && opts.animate != undefined ? opts.animate : true;\r\n this.duration = opts && opts.duration != undefined ? opts.duration : 500;\r\n this.padding = opts && opts.padding != undefined ? opts.padding : 50;\r\n }\r\n}\r\n\r\nexport interface ICameraChangeOptions {\r\n projection?: Projection;\r\n animate?: boolean;\r\n duration?: number;\r\n padding?: number | PaddingOptions;\r\n};\r\n\r\nexport class PanOptions extends CameraChangeOptions {\r\n zoom?: number;\r\n bearing?: number;\r\n pitch?: number;\r\n relCenterX?: number;\r\n relCenterY?: number;\r\n minResolution?: number;\r\n\r\n constructor(opts?: IPanOptions) {\r\n super(opts);\r\n this.zoom = opts && opts.zoom != undefined ? opts.zoom : undefined;\r\n this.bearing = opts && opts.bearing != undefined ? opts.bearing : undefined;\r\n this.pitch = opts && opts.pitch != undefined ? opts.pitch : undefined;\r\n this.relCenterX = opts && opts.relCenterX != undefined ? opts.relCenterX : 0.5;\r\n this.relCenterY = opts && opts.relCenterY != undefined ? opts.relCenterY : 0.5;\r\n this.minResolution = opts && opts.minResolution != undefined ? opts.minResolution : 1;\r\n }\r\n}\r\n\r\nexport interface IPanOptions extends ICameraChangeOptions {\r\n zoom?: number;\r\n bearing?: number;\r\n pitch?: number;\r\n relCenterX?: number;\r\n relCenterY?: number;\r\n minResolution?: number;\r\n}\r\n\r\nexport class FitOptions extends CameraChangeOptions {\r\n maxZoom?: number;\r\n bearing?: number;\r\n pitch?: number;\r\n\r\n constructor(opts?: IFitOptions) {\r\n super(opts);\r\n this.maxZoom = opts && opts.maxZoom != undefined ? opts.maxZoom : 16;\r\n this.bearing = opts && opts.bearing != undefined ? opts.bearing : 0;\r\n this.pitch = opts && opts.pitch != undefined ? opts.pitch : 0;\r\n }\r\n}\r\n\r\nexport interface IFitOptions extends ICameraChangeOptions {\r\n maxZoom?: number;\r\n padding?: number | PaddingOptions;\r\n bearing?: number;\r\n pitch?: number;\r\n}\r\n\r\nexport interface PaddingOptions {\r\n top: number;\r\n bottom: number;\r\n left: number;\r\n right: number;\r\n}\r\n","export interface IService {\r\n readonly type: ServiceType;\r\n readonly name: string;\r\n readonly options: any;\r\n readonly enabled: boolean;\r\n}\r\n\r\nexport enum ServiceType {\r\n Routing = 'routing',\r\n Nominatim = 'nominatim',\r\n Localization = 'localization'\r\n}\r\n","import * as maplibregl from 'maplibre-gl';\r\n\r\nimport { IPanOptions, PanOptions } from '../model/RM2CameraChangeOptions';\r\nimport { IRM2Event, RM2Event } from '../model/RM2Event';\r\nimport { IPopupOptions } from './RM2PopupOptions';\r\nimport { FeatureCollection, Feature } from '../model/RM2Feature';\r\nimport { CoordinateLike } from '../model/RM2Geometry';\r\nimport { Map } from '../map/RM2Map';\r\nimport { PopupCarouselElementId } from '../templates/popup-templates';\r\nimport { ServiceType } from '../services/RM2Service';\r\nimport { LocalizationService } from '../services/RM2LocalizationService';\r\nimport { Layer } from '../model/RM2Layer';\r\n\r\ndeclare const $: any;\r\n\r\nexport class Popup {\r\n private _map: Map;\r\n\r\n public mbPopup: maplibregl.Popup;\r\n\r\n /**\r\n * Returns position of the popup. Returned value is a numeric array of two ordinates in map's UI projection.\r\n */\r\n public get position(): CoordinateLike { return this.mbPopup.getLngLat().toArray() as CoordinateLike; }\r\n\r\n /**\r\n * Sets position of the popup.\r\n */\r\n public set position(coordinate: CoordinateLike) {\r\n this.mbPopup.setLngLat(coordinate);\r\n if (this._options.panOnPositionChange === true) {\r\n const opts = this._options && this._options.cameraOptions ? this._options.cameraOptions : { animate: true };\r\n this.panTo(opts);\r\n }\r\n }\r\n\r\n protected _content: HTMLElement;\r\n public get content(): HTMLElement { return this._content; }\r\n\r\n protected _options: IPopupOptions;\r\n protected _featureCollection: FeatureCollection;\r\n protected _selectedFeatureId: number;\r\n\r\n public get closesOnClick(): boolean { return this._options.closesOnClick; }\r\n\r\n /** Called on popup open */\r\n public get onOpen(): IRM2Event { return this._onOpen.expose(); }\r\n protected readonly _onOpen = new RM2Event();\r\n\r\n /** Called on popup close */\r\n public get onClose(): IRM2Event { return this._onClose.expose(); }\r\n protected readonly _onClose = new RM2Event();\r\n\r\n /** Called on carousel slide if this popup has a FeatureCollection */\r\n public get onSlide() { return this._onSlide.expose(); }\r\n protected readonly _onSlide = new RM2Event();\r\n\r\n public get featureCollection(): FeatureCollection { return this._featureCollection; }\r\n public get selectedFeature(): Feature { return this._selectedFeatureId != undefined && this._featureCollection != undefined ? this._featureCollection.features[this._selectedFeatureId] : undefined; }\r\n\r\n /** Popup metadata */\r\n public get metadata(): any { return this._metadata; }\r\n private readonly _metadata: any;\r\n\r\n constructor(map: Map, content: HTMLElement, options: IPopupOptions, fc?: FeatureCollection, metadata?: any) {\r\n this._map = map;\r\n this._content = content;\r\n this._options = options;\r\n this._featureCollection = fc;\r\n this._metadata = metadata;\r\n\r\n const ls = this._map.getService(ServiceType.Localization) as LocalizationService;\r\n ls.refresh(content);\r\n\r\n if (fc && fc.length > 0)\r\n this._selectedFeatureId = 0;\r\n\r\n this._map = map;\r\n\r\n const maxWidth = this.getMaxWidthForPage(this._selectedFeatureId);\r\n const isCarousel = fc != undefined && fc.length > 1;\r\n this.mbPopup = new maplibregl.Popup({\r\n closeOnClick: this._options.closesOnClick,\r\n closeButton: this._options.hasCloseButton,\r\n anchor: this._options.anchor,\r\n offset: this._options.offset,\r\n maxWidth: 'calc(' + maxWidth + ' + 10px)'\r\n }).setDOMContent(content);\r\n\r\n if (this._options.addContainer == false) {\r\n if (content.parentElement) {\r\n content.parentElement.style.padding = '0';\r\n content.parentElement.style.background = 'none';\r\n }\r\n else\r\n console.warn('Failed to remove Mapbox popup container.');\r\n }\r\n\r\n // kje unsubscribe?\r\n this.mbPopup.on('close', () => {\r\n this._onClose.trigger();\r\n if (isCarousel) {\r\n const carouselEl = $(`[id^='${PopupCarouselElementId}-']`);\r\n if (carouselEl)\r\n carouselEl.off('slide.bs.carousel', this._handleSlide);\r\n }\r\n });\r\n\r\n this.mbPopup.on('open', () => {\r\n this._onOpen.trigger();\r\n if (isCarousel) {\r\n const carouselEl = $(`[id^='${PopupCarouselElementId}-']`);\r\n if (carouselEl)\r\n carouselEl.on('slide.bs.carousel', this._handleSlide);\r\n }\r\n });\r\n }\r\n\r\n close() {\r\n if (this.mbPopup)\r\n this.mbPopup.remove();\r\n }\r\n\r\n protected setMaxWidth(width: string): void {\r\n this.mbPopup.setMaxWidth(width);\r\n }\r\n\r\n panTo(options?: IPanOptions) {\r\n const metadata = this._map.metadata;\r\n if (metadata.panPopup) {\r\n const opts = new PanOptions(options);\r\n // if (metadata.zoomPopup)\r\n // opts.zoom = this._map.getView().zoom < 12 ? 12 : null;\r\n \r\n // this._map.pan(this.position, opts);\r\n\r\n if (opts.zoom)\r\n this._map.pan(this.position, opts);\r\n else {\r\n // to je ok samo, če je mapa obrnjena proti severu\r\n const el = this.mbPopup.getElement();\r\n if (el) {\r\n const h = el.offsetHeight;\r\n const w = el.offsetWidth;\r\n const point = this._map.project(this.position);\r\n \r\n const topLeftX = point[0] - w / 2;\r\n const topLeftY = point[1] - h;\r\n const topRightX = point[0] + w / 2;\r\n const topRightY = point[1] - h;\r\n const bottomLeftX = point[0] - w / 2;\r\n const bottomLeftY = point[1] + 32; // 32 padding\r\n const bottomRightX = point[0] + w / 2;\r\n const bottomRightY = point[1] + 32; // 32 padding\r\n \r\n const bounds = this._map.getBounds();\r\n const mapSW = bounds.getSouthWest();\r\n const mapSWPixel = this._map.project([mapSW.lng, mapSW.lat]);\r\n const mapNE = bounds.getNorthEast();\r\n const mapNEPixel = this._map.project([mapNE.lng, mapNE.lat]);\r\n \r\n //// preko koordinate\r\n // const topLeftCoord = this._map.unproject([topLeftX, topLeftY]);\r\n // const topRightCoord = this._map.unproject([topRightX, topRightY]);\r\n // const bottomLeftCoord = this._map.unproject([bottomLeftX, bottomLeftY]);\r\n // const bottomRightCoord = this._map.unproject([bottomRightX, bottomRightY]);\r\n \r\n // // deltaX\r\n // let deltaX = topLeftCoord.x - mapSW.lng;\r\n // if (deltaX > 0)\r\n // deltaX = bottomLeftCoord.x - mapSW.lng;\r\n \r\n // if (deltaX > 0) {\r\n // deltaX = topRightCoord.x - mapNE.lng;\r\n // if (deltaX < 0) {\r\n // deltaX = bottomRightCoord.x - mapNE.lng;\r\n // if (deltaX < 0)\r\n // deltaX = 0;\r\n // }\r\n // }\r\n \r\n // // delta Y\r\n // let deltaY = topLeftCoord.y - mapSW.lat;\r\n // if (deltaY > 0)\r\n // deltaY = bottomLeftCoord.y - mapSW.lat;\r\n \r\n // if (deltaY > 0) {\r\n // deltaY = topRightCoord.y - mapNE.lat;\r\n // if (deltaY < 0) {\r\n // deltaY = bottomRightCoord.y - mapNE.lat;\r\n // if (deltaY < 0)\r\n // deltaY = 0;\r\n // }\r\n // }\r\n \r\n //// preko pikslov\r\n // deltaX\r\n let deltaX = topLeftX - mapSWPixel[0];\r\n if (deltaX > 0)\r\n deltaX = bottomLeftX - mapSWPixel[0];\r\n \r\n if (deltaX > 0) {\r\n deltaX = topRightX - mapNEPixel[0];\r\n if (deltaX < 0) {\r\n deltaX = bottomRightX - mapNEPixel[0];\r\n if (deltaX < 0)\r\n deltaX = 0;\r\n }\r\n }\r\n \r\n // delta Y\r\n let deltaY = topLeftY - mapSWPixel[1];\r\n if (deltaY < 0)\r\n deltaY = bottomLeftY - mapSWPixel[1];\r\n \r\n if (deltaY < 0) {\r\n deltaY = topRightY - mapNEPixel[1];\r\n if (deltaY > 0) {\r\n deltaY = bottomRightY - mapNEPixel[1];\r\n if (deltaY > 0)\r\n deltaY = 0;\r\n }\r\n }\r\n \r\n if (deltaX !== 0 || deltaY !== 0) {\r\n if (deltaY < 0)\r\n deltaY -= 50; // padding\r\n \r\n const newSW = this._map.unproject([mapSWPixel[0] + deltaX, mapSWPixel[1] + deltaY]);\r\n const newNE = this._map.unproject([mapNEPixel[0] + deltaX, mapNEPixel[1] + deltaY]);\r\n \r\n // const newBounds: CoordinateLike[] = [[mapSW.lng + deltaX, mapSW.lat + deltaY], [mapNE.lng + deltaX, mapNE.lat + deltaY]];\r\n // this._map.fit(newBounds, { animate: true });\r\n \r\n // this._map.fit([newSW, newNE], { animate: true });\r\n\r\n const newCenter: CoordinateLike = [(newNE.x + newSW.x) / 2, (newNE.y + newSW.y) / 2];\r\n this._map.pan(newCenter, { animate: true });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n slideTo(page: number) {\r\n if (this._featureCollection && page >= 0 && page <= this._featureCollection.length - 1) {\r\n $('.carousel').carousel(page);\r\n this._handleSlide({ to: page });\r\n }\r\n }\r\n\r\n protected getMaxWidthForPage(page: number): string {\r\n const width = page != undefined && this._options.maxWidth.length - 1 >= page ? this._options.maxWidth[page] : this._options.maxWidth[0];\r\n if (width != '-1')\r\n return width;\r\n return null;\r\n }\r\n\r\n protected _handleSlide = (e: any) => {\r\n this._selectedFeatureId = e.to;\r\n const pos = this.selectedFeature.geometry.getCoordinate();\r\n this.position = [pos.x, pos.y];\r\n\r\n this.setMaxWidth(this.getMaxWidthForPage(e.to));\r\n this._onSlide.trigger(e.to);\r\n };\r\n}\r\n","import { IPanOptions, PanOptions } from '../model/RM2CameraChangeOptions';\r\nimport { Projection } from '..';\r\n\r\nexport type PopupAnchor = 'left' | 'top' | 'right' | 'bottom';\r\n\r\nexport class PopupOptions implements IPopupOptions {\r\n projection?: Projection;\r\n panOnOpen?: boolean;\r\n panOnPositionChange?: boolean;\r\n closesOnClick?: boolean;\r\n hasCloseButton?: boolean;\r\n addContainer?: boolean;\r\n anchor?: PopupAnchor;\r\n offset?: [number, number];\r\n maxWidth?: string[];\r\n showMarkerOnMobile?: boolean;\r\n cameraOptions?: IPanOptions;\r\n\r\n constructor(opts?: IPopupOptions) {\r\n this.panOnOpen = true;\r\n this.panOnPositionChange = true;\r\n this.closesOnClick = true;\r\n this.hasCloseButton = true;\r\n this.addContainer = true;\r\n this.anchor = 'bottom';\r\n this.offset = [0, -14];\r\n this.maxWidth = ['320px'];\r\n this.showMarkerOnMobile = document.documentElement.clientWidth <= 575;\r\n this.cameraOptions = new PanOptions(opts ? opts.cameraOptions : null);\r\n\r\n if (opts) {\r\n if (opts.projection != undefined)\r\n this.projection = opts.projection;\r\n \r\n if (opts.panOnOpen != undefined)\r\n this.panOnOpen = opts.panOnOpen;\r\n \r\n if (opts.panOnPositionChange != undefined)\r\n this.panOnPositionChange = opts.panOnPositionChange;\r\n \r\n if (opts.closesOnClick != undefined)\r\n this.closesOnClick = opts.closesOnClick;\r\n \r\n if (opts.hasCloseButton != undefined)\r\n this.hasCloseButton = opts.hasCloseButton;\r\n \r\n if (opts.addContainer != undefined)\r\n this.addContainer = opts.addContainer;\r\n \r\n if (opts.anchor != undefined)\r\n this.anchor = opts.anchor;\r\n \r\n if (opts.offset != undefined)\r\n this.offset = opts.offset;\r\n \r\n if (opts.maxWidth != undefined)\r\n this.maxWidth = opts.maxWidth.slice();\r\n \r\n if (opts.cameraOptions != undefined)\r\n this.cameraOptions = opts.cameraOptions;\r\n }\r\n }\r\n}\r\n\r\nexport interface IPopupOptions {\r\n projection?: Projection;\r\n panOnOpen?: boolean;\r\n panOnPositionChange?: boolean;\r\n closesOnClick?: boolean;\r\n hasCloseButton?: boolean;\r\n addContainer?: boolean;\r\n anchor?: PopupAnchor;\r\n offset?: [number, number];\r\n maxWidth?: string[];\r\n showMarkerOnMobile?: boolean;\r\n cameraOptions?: IPanOptions;\r\n}\r\n\r\nexport class CarouselPopupOptions extends PopupOptions implements ICarouselPopupOptions {\r\n selectedItem?: number;\r\n\r\n constructor(opts?: ICarouselPopupOptions) {\r\n super(opts);\r\n this.selectedItem = 0;\r\n\r\n if (opts) {\r\n if (opts.selectedItem != undefined)\r\n this.selectedItem = opts.selectedItem;\r\n }\r\n }\r\n}\r\n\r\nexport interface ICarouselPopupOptions extends IPopupOptions {\r\n selectedItem?: number;\r\n}\r\n","export enum MapControlType {\r\n Legend = 'legend',\r\n FullScreen = 'fullscreen',\r\n Zoom = 'zoom',\r\n Basemaps = 'basemaps',\r\n Attribution = 'attribution',\r\n Geolocation = 'geolocation',\r\n Routing = 'routing',\r\n MapPicker = 'map-picker',\r\n PrometSi = 'promet-si',\r\n NAP = 'nap'\r\n}\r\n\r\nexport interface ControlData {\r\n type: MapControlType;\r\n options: any;\r\n enabled?: boolean;\r\n position?: 'top-right' | 'bottom-right' | 'bottom-left' | 'top-left';\r\n}\r\n","import { Projection, Geometry } from '../';\r\nimport { ICameraChangeOptions, CameraChangeOptions, IPanOptions, IFitOptions, PanOptions, FitOptions } from '../model/RM2CameraChangeOptions';\r\nimport { Feature } from '../model/RM2Feature';\r\nimport { Guid } from 'guid-typescript';\r\nimport { Utils } from '../services/RM2StaticService';\r\n\r\nexport abstract class HighlightOptions implements IHighlightOptions {\r\n projection?: Projection;\r\n pan?: boolean;\r\n // feature?: Feature;\r\n cameraOptions?: ICameraChangeOptions;\r\n\r\n public static get HighlightTypePropertyName(): string { return 'rmHighlightType'; }\r\n\r\n // Applies the option properties to the feature and returns the feature properties\r\n public abstract applyOptionsToFeatureProperties(ft?: Feature): any;\r\n\r\n public constructor(opts?: IHighlightOptions) {\r\n this.projection = opts && opts.projection != undefined ? opts.projection : undefined;\r\n this.pan = opts && opts.pan != undefined ? opts.pan : true;\r\n this.cameraOptions = new CameraChangeOptions(opts ? opts.cameraOptions : null);\r\n }\r\n\r\n public applyFeatureHighlightOptions(opts: IFeatureHighlightOptions) {\r\n if (opts) {\r\n for (let fOpt in opts) {\r\n // if (fOpt in this)\r\n this[fOpt] = opts[fOpt];\r\n }\r\n }\r\n }\r\n\r\n public static fromGeoJson(geoJson: any): HighlightOptions {\r\n // TODO: to ni ok\r\n if ('icon' in geoJson)\r\n return new MarkerOptions(geoJson);\r\n else if ('fillColor' in geoJson)\r\n return new PolygonOptions(geoJson);\r\n else if ('lineColor' in geoJson)\r\n return new LineOptions(geoJson);\r\n else if ('color' in geoJson)\r\n return new CircleOptions(geoJson);\r\n }\r\n\r\n public static highlightTypeToString(type: HighlightType): string {\r\n return HighlightType[type].toString().toLowerCase();\r\n }\r\n}\r\n \r\nexport interface IHighlightOptions {\r\n projection?: Projection;\r\n pan?: boolean;\r\n // feature?: Feature;\r\n cameraOptions?: ICameraChangeOptions;\r\n}\r\n\r\nexport enum HighlightType {\r\n Marker = 0,\r\n Polygon = 1,\r\n Line = 3,\r\n Circle = 4\r\n}\r\n\r\nexport class FeatureHighlightOptions implements IFeatureHighlightOptions {\r\n projection?: Projection;\r\n pan?: boolean;\r\n cameraOptions?: ICameraChangeOptions;\r\n\r\n constructor(opts?: IFeatureHighlightOptions) {\r\n if (opts) {\r\n for (let prop in opts)\r\n this[prop] = opts[prop];\r\n }\r\n\r\n this.projection = opts && opts.projection != undefined ? opts.projection : undefined;\r\n this.pan = opts && opts.pan != undefined ? opts.pan : true;\r\n this.cameraOptions = new CameraChangeOptions(opts ? opts.cameraOptions : null);\r\n }\r\n}\r\n\r\nexport interface IFeatureHighlightOptions {\r\n projection?: Projection;\r\n pan?: boolean;\r\n cameraOptions?: ICameraChangeOptions;\r\n}\r\n\r\nexport class MarkerOptions extends HighlightOptions implements IMarkerOptions {\r\n icon?: string;\r\n anchor?: string;\r\n size?: number;\r\n offset?: number[];\r\n zindex?: number;\r\n cameraOptions?: IPanOptions;\r\n\r\n public static get IconPropertyName(): string { return 'icon'; }\r\n public static get AnchorPropertyName(): string { return 'anchor'; }\r\n public static get SizePropertyName(): string { return 'size'; }\r\n public static get OffsetPropertyName(): string { return 'offset'; }\r\n public static get ZIndexKeyPropertyName(): string { return 'zindex'; }\r\n\r\n constructor(opts?: IMarkerOptions) {\r\n super(opts);\r\n // this.icon = opts && opts.icon != undefined ? opts.icon : 'marker_E2001A-128';\r\n this.icon = opts && opts.icon != undefined ? opts.icon : 'marker_B-48';\r\n this.anchor = opts && opts.anchor != undefined ? opts.anchor : 'center';\r\n this.size = opts && opts.size != undefined ? opts.size : 1;\r\n this.offset = opts && opts.offset != undefined ? opts.offset : [0, -35];\r\n this.zindex = opts && opts.zindex != undefined ? opts.zindex : 0;\r\n this.cameraOptions = new PanOptions(opts ? opts.cameraOptions : null);\r\n }\r\n\r\n public applyOptionsToFeatureProperties(ft?: Feature): any {\r\n const type = HighlightOptions.highlightTypeToString(HighlightType.Marker);\r\n if (ft) {\r\n if (ft.properties.id == null)\r\n ft.properties.id = Guid.create().toString();\r\n \r\n if (ft.properties[MarkerOptions.IconPropertyName] == null)\r\n ft.properties[MarkerOptions.IconPropertyName] = this.icon;\r\n \r\n if (ft.properties[MarkerOptions.AnchorPropertyName] == null)\r\n ft.properties[MarkerOptions.AnchorPropertyName] = this.anchor;\r\n \r\n if (ft.properties[MarkerOptions.SizePropertyName] == null)\r\n ft.properties[MarkerOptions.SizePropertyName] = this.size;\r\n \r\n if (ft.properties[MarkerOptions.OffsetPropertyName] == null)\r\n ft.properties[MarkerOptions.OffsetPropertyName] = this.offset;\r\n \r\n if (ft.properties[MarkerOptions.ZIndexKeyPropertyName] == null)\r\n ft.properties[MarkerOptions.ZIndexKeyPropertyName] = this.zindex;\r\n \r\n ft.properties[HighlightOptions.HighlightTypePropertyName] = type;\r\n return ft.properties;\r\n }\r\n else {\r\n const props = { id: Guid.create().toString() };\r\n props[MarkerOptions.IconPropertyName] = this.icon;\r\n props[MarkerOptions.AnchorPropertyName] = this.anchor;\r\n props[MarkerOptions.SizePropertyName] = this.size;\r\n props[MarkerOptions.OffsetPropertyName] = this.offset;\r\n props[MarkerOptions.ZIndexKeyPropertyName] = this.zindex;\r\n props[HighlightOptions.HighlightTypePropertyName] = type;\r\n return props;\r\n }\r\n }\r\n}\r\n\r\nexport interface IMarkerOptions extends IHighlightOptions {\r\n icon?: string;\r\n anchor?: string;\r\n size?: number;\r\n offset?: number[];\r\n zindex?: number;\r\n cameraOptions?: IPanOptions;\r\n}\r\n\r\nexport class PolygonOptions extends HighlightOptions implements IPolygonOptions {\r\n fillColor?: string;\r\n fillOpacity?: number;\r\n outlineColor?: string;\r\n outlineWidth?: number;\r\n centroid?: Geometry;\r\n cameraOptions?: IFitOptions;\r\n\r\n public static get FillColorPropertyName(): string { return 'fillColor'; }\r\n public static get FillOpacityPropertyName(): string { return 'fillOpacity'; }\r\n public static get OutlineColorPropertyName(): string { return 'outlineColor'; }\r\n public static get OutlineWidthPropertyName(): string { return 'outlineWidth'; }\r\n\r\n constructor(opts?: IPolygonOptions) {\r\n super(opts);\r\n this.fillColor = opts && opts.fillColor != undefined ? opts.fillColor : '#639FFF';\r\n this.fillOpacity = opts && opts.fillOpacity != undefined ? opts.fillOpacity : 0.4;\r\n this.outlineColor = opts && opts.outlineColor != undefined ? opts.outlineColor : '#FFFFFF';\r\n this.outlineWidth = opts && opts.outlineWidth != undefined ? opts.outlineWidth : 5;\r\n this.cameraOptions = new FitOptions(opts ? opts.cameraOptions : null);\r\n }\r\n\r\n public applyOptionsToFeatureProperties(ft: Feature): any {\r\n const type = HighlightOptions.highlightTypeToString(HighlightType.Polygon);\r\n if (ft) {\r\n if (ft.properties.id == null)\r\n ft.properties.id = Guid.create().toString();\r\n \r\n if (ft.properties[PolygonOptions.FillColorPropertyName] == null)\r\n ft.properties[PolygonOptions.FillColorPropertyName] = this.fillColor;\r\n \r\n if (ft.properties[PolygonOptions.FillOpacityPropertyName] == null)\r\n ft.properties[PolygonOptions.FillOpacityPropertyName] = this.fillOpacity;\r\n \r\n if (ft.properties[PolygonOptions.OutlineColorPropertyName] == null)\r\n ft.properties[PolygonOptions.OutlineColorPropertyName] = this.outlineColor;\r\n \r\n if (ft.properties[PolygonOptions.OutlineWidthPropertyName] == null)\r\n ft.properties[PolygonOptions.OutlineWidthPropertyName] = this.outlineWidth;\r\n \r\n ft.properties[HighlightOptions.HighlightTypePropertyName] = type;\r\n return ft.properties;\r\n }\r\n else {\r\n const props = { id: Guid.create().toString() };\r\n props[PolygonOptions.FillColorPropertyName] = this.fillColor;\r\n props[PolygonOptions.FillOpacityPropertyName] = this.fillOpacity;\r\n props[PolygonOptions.OutlineColorPropertyName] = this.outlineColor;\r\n props[HighlightOptions.HighlightTypePropertyName] = type;\r\n return props;\r\n }\r\n }\r\n}\r\n\r\nexport interface IPolygonOptions extends IHighlightOptions {\r\n fillColor?: string;\r\n fillOpacity?: number;\r\n outlineColor?: string;\r\n outlineWidth?: number;\r\n centroid?: Geometry;\r\n cameraOptions?: IFitOptions;\r\n}\r\n\r\nexport class LineOptions extends HighlightOptions implements ILineOptions {\r\n lineColor?: string;\r\n lineOpacity?: number;\r\n lineWidth?: number;\r\n lineType?: LineType;\r\n lineJoin?: string;\r\n lineCap?: string;\r\n cameraOptions?: IFitOptions;\r\n\r\n public static get LineColorPropertyName(): string { return 'lineColor'; }\r\n public static get LineOpacityPropertyName(): string { return 'lineOpacity'; }\r\n public static get LineWidthPropertyName(): string { return 'lineWidth'; }\r\n public static get LineTypePropertyName(): string { return 'lineType'; }\r\n\r\n constructor(opts?: ILineOptions) {\r\n super(opts);\r\n this.lineColor = opts && opts.lineColor != undefined ? opts.lineColor : '#639FFF';\r\n this.lineOpacity = opts && opts.lineOpacity != undefined ? opts.lineOpacity : 1;\r\n this.lineWidth = opts && opts.lineWidth != undefined ? opts.lineWidth : 8;\r\n this.lineType = opts && opts.lineType != undefined ? opts.lineType : LineType.Solid;\r\n this.lineJoin = opts && opts.lineJoin != undefined ? opts.lineJoin : 'round';\r\n this.lineCap = opts && opts.lineCap != undefined ? opts.lineCap : 'round';\r\n this.cameraOptions = new FitOptions(opts ? opts.cameraOptions : null);\r\n }\r\n\r\n public applyOptionsToFeatureProperties(ft: Feature): any {\r\n const type = HighlightOptions.highlightTypeToString(HighlightType.Line);\r\n if (ft) {\r\n if (ft.properties.id == null)\r\n ft.properties.id = Guid.create().toString();\r\n \r\n if (ft.properties[LineOptions.LineColorPropertyName] == null)\r\n ft.properties[LineOptions.LineColorPropertyName] = this.lineColor;\r\n \r\n if (ft.properties[LineOptions.LineOpacityPropertyName] == null)\r\n ft.properties[LineOptions.LineOpacityPropertyName] = this.lineOpacity;\r\n \r\n if (ft.properties[LineOptions.LineWidthPropertyName] == null)\r\n ft.properties[LineOptions.LineWidthPropertyName] = this.lineWidth;\r\n \r\n if (ft.properties[LineOptions.LineTypePropertyName] == null)\r\n ft.properties[LineOptions.LineTypePropertyName] = LineOptions.lineTypeToString(this.lineType);\r\n else if (typeof ft.properties[LineOptions.LineTypePropertyName] === 'number')\r\n ft.properties[LineOptions.LineTypePropertyName] = LineOptions.lineTypeToString(ft.properties[LineOptions.LineTypePropertyName]);\r\n \r\n ft.properties[HighlightOptions.HighlightTypePropertyName] = type;\r\n return ft.properties;\r\n }\r\n else {\r\n const props = { id: Guid.create().toString() };\r\n props[LineOptions.LineColorPropertyName] = this.lineColor;\r\n props[LineOptions.LineOpacityPropertyName] = this.lineOpacity;\r\n props[LineOptions.LineWidthPropertyName] = this.lineWidth;\r\n props[LineOptions.LineTypePropertyName] = LineOptions.lineTypeToString(this.lineType);\r\n props[HighlightOptions.HighlightTypePropertyName] = type;\r\n return props;\r\n }\r\n }\r\n\r\n public static lineTypeToString(type: LineType): string {\r\n return LineType[type].toString().toLowerCase();\r\n }\r\n}\r\n\r\nexport interface ILineOptions extends IHighlightOptions {\r\n lineColor?: string;\r\n lineOpacity?: number;\r\n lineWidth?: number;\r\n lineType?: LineType;\r\n lineJoin?: string;\r\n lineCap?: string;\r\n cameraOptions?: IFitOptions;\r\n}\r\n\r\nexport enum LineType {\r\n None = 0,\r\n Solid = 1,\r\n Dotted = 2,\r\n Dashed = 3,\r\n LongDashed = 4,\r\n DashDotted = 5,\r\n LongDashDotted = 6,\r\n Custom = 7\r\n}\r\n\r\nexport class CircleOptions extends HighlightOptions implements ICircleOptions {\r\n color?: string;\r\n opacity?: number;\r\n radius?: number;\r\n radiusUnitType?: CircleRadiusUnitType;\r\n outlineColor?: string;\r\n outlineWidth?: number;\r\n cameraOptions?: IPanOptions;\r\n\r\n public static get CircleColorPropertyName(): string { return 'color'; }\r\n public static get CircleOpacityPropertyName(): string { return 'opacity'; }\r\n public static get CircleRadiusPropertyName(): string { return 'radius'; }\r\n public static get CircleRadiusUnitTypePropertyName(): string { return 'radiusUnitType'; }\r\n public static get OutlineColorPropertyName(): string { return 'outlineColor'; }\r\n public static get OutlineWidthPropertyName(): string { return 'outlineWidth'; }\r\n\r\n constructor(opts?: ICircleOptions) {\r\n super(opts);\r\n this.color = opts && opts.color != undefined ? opts.color : '#639FFF';\r\n this.opacity = opts && opts.opacity != undefined ? opts.opacity : 1;\r\n this.radius = opts && opts.radius != undefined ? opts.radius : 7;\r\n this.radiusUnitType = opts && opts.radiusUnitType != undefined ? opts.radiusUnitType : CircleRadiusUnitType.Pixels;\r\n this.outlineColor = opts && opts.outlineColor != undefined ? opts.outlineColor : '#FFFFFF';\r\n this.outlineWidth = opts && opts.outlineWidth != undefined ? opts.outlineWidth : 2;\r\n this.cameraOptions = new PanOptions(opts ? opts.cameraOptions : null)\r\n }\r\n\r\n public applyOptionsToFeatureProperties(ft: Feature): any {\r\n const type = HighlightOptions.highlightTypeToString(HighlightType.Circle);\r\n if (ft) {\r\n if (ft.properties.id == null)\r\n ft.properties.id = Guid.create().toString();\r\n \r\n if (ft.properties[CircleOptions.CircleColorPropertyName] == null)\r\n ft.properties[CircleOptions.CircleColorPropertyName] = this.color;\r\n \r\n if (ft.properties[CircleOptions.CircleOpacityPropertyName] == null)\r\n ft.properties[CircleOptions.CircleOpacityPropertyName] = this.opacity;\r\n \r\n if (ft.properties[CircleOptions.CircleRadiusPropertyName] == null)\r\n ft.properties[CircleOptions.CircleRadiusPropertyName] = this.radius;\r\n \r\n if (ft.properties[CircleOptions.CircleRadiusUnitTypePropertyName] == null)\r\n ft.properties[CircleOptions.CircleRadiusUnitTypePropertyName] = CircleOptions.circleRadiusTypeToString(this.radiusUnitType);\r\n else if (typeof ft.properties[CircleOptions.CircleRadiusUnitTypePropertyName] === 'number')\r\n ft.properties[CircleOptions.CircleRadiusUnitTypePropertyName] = CircleOptions.circleRadiusTypeToString(ft.properties[CircleOptions.CircleRadiusUnitTypePropertyName]);\r\n \r\n if (ft.properties[CircleOptions.OutlineColorPropertyName] == null)\r\n ft.properties[CircleOptions.OutlineColorPropertyName] = this.outlineColor;\r\n \r\n if (ft.properties[CircleOptions.OutlineWidthPropertyName] == null)\r\n ft.properties[CircleOptions.OutlineWidthPropertyName] = this.outlineWidth;\r\n \r\n ft.properties[HighlightOptions.HighlightTypePropertyName] = type;\r\n return ft.properties;\r\n }\r\n else {\r\n const props = { id: Guid.create().toString() };\r\n props[CircleOptions.CircleColorPropertyName] = this.color;\r\n props[CircleOptions.CircleOpacityPropertyName] = this.opacity;\r\n props[CircleOptions.CircleRadiusPropertyName] = this.radius;\r\n props[CircleOptions.CircleRadiusUnitTypePropertyName] = CircleOptions.circleRadiusTypeToString(this.radiusUnitType);\r\n props[CircleOptions.OutlineColorPropertyName] = this.outlineColor;\r\n props[CircleOptions.OutlineWidthPropertyName] = this.outlineWidth;\r\n props[HighlightOptions.HighlightTypePropertyName] = type;\r\n return props;\r\n }\r\n }\r\n\r\n public static circleRadiusTypeToString(type: CircleRadiusUnitType): string {\r\n return CircleRadiusUnitType[type].toString().toLowerCase();\r\n }\r\n}\r\n\r\nexport interface ICircleOptions extends IHighlightOptions {\r\n color?: string;\r\n opacity?: number;\r\n radius?: number;\r\n radiusUnitType?: CircleRadiusUnitType;\r\n outlineColor?: string;\r\n outlineWidth?: number;\r\n cameraOptions?: IPanOptions;\r\n}\r\n\r\nexport enum CircleRadiusUnitType {\r\n Pixels = 0//,\r\n // Meters = 1\r\n}\r\n","/*\r\nnotes\r\n- Feature je klasičen GIS feature z geometry in fields. Implementacija ovije OL3 feature pri čemer je OL3 interna geometrija shranjena\r\n v fieldu __geom, referenca na this feature pa v fieldu __feature. Ta dva fielda se smatrata kot interna.\r\n- FeatureCollection je storage za features pri čemer se features interno hranijo v arrayu (_features), dodtno pa je vzpostavljen index po\r\n id-ju (_idIndex) ter prostorski index (_spatialIndex)\r\n\r\ntodo\r\n- testiranje\r\n- JSDdoc API dokumentacija\r\n- Feature - razmisliti in implementirati kako globoko iti v featureSchema. Ustrezno dopolnit FieldInfo (maxLength, ...)\r\n- Feature - sinhronizacija med feature in olFeature geometrijo\r\n- FeatureCollection - metode za dodajanje, odstranjevanje (add, remove, clean, ...)\r\n- FeatureCollection - trenutno se za spatialIndex uporablja RBush. Opcija bi bila tudi JSTS-jev Quadtree a so prvi testi pokazali, da je slabši.\r\n*/\r\n\r\nimport RBush from 'rbush';\r\n\r\nimport { Guid } from \"guid-typescript\";\r\n\r\nimport { Geometry, Envelope, Coordinate } from './RM2Geometry';\r\n\r\n/**\r\n * FieldInfo interface.\r\n */\r\nexport interface FieldInfo {\r\n name: string;\r\n type: string;\r\n}\r\n\r\n/**\r\n * Feature object.\r\n */\r\nexport class Feature {\r\n private _id: string;\r\n\r\n // public get id(): string { return this._id; }\r\n\r\n type: 'Feature' = 'Feature';\r\n geometry: Geometry;\r\n properties: T;\r\n\r\n // TODO: properties.id v id\r\n constructor(properties?: T, geometry?: Geometry) {\r\n this._id = Guid.create().toString();\r\n \r\n this.setProperties(properties ? properties : Object.create({}));\r\n if (geometry)\r\n this.geometry = geometry;\r\n }\r\n\r\n getKeys() {\r\n const keys = [];\r\n for (let key in this.properties)\r\n keys.push(key);\r\n \r\n return keys;\r\n }\r\n\r\n // TODO: podpri jsonpath\r\n getField(key: string): any {\r\n if (key in this.properties)\r\n return this.properties[key];\r\n else\r\n return undefined;\r\n }\r\n\r\n setField(key: string, value: any) {\r\n if (this.properties == null)\r\n this.properties = Object.create({});\r\n \r\n this.properties[key] = value;\r\n }\r\n\r\n hasProperty(key: string): boolean {\r\n return this.properties[key] != undefined;\r\n }\r\n\r\n getProperties(): T {\r\n return this.properties;\r\n }\r\n\r\n setProperties(properties: T) {\r\n this.properties = properties;\r\n }\r\n\r\n getInternalId() {\r\n return this._id;\r\n }\r\n\r\n setInternalId(id: string) {\r\n this._id = id;\r\n }\r\n\r\n public clone(): Feature {\r\n const ft = new Feature();\r\n ft.properties = Object.assign({}, this.properties); // TODO: clone funkcija za properties\r\n ft.geometry = this.geometry.clone();\r\n return ft;\r\n }\r\n\r\n /**\r\n * Static helper function for parsing GeoJSON\r\n */\r\n public static fromGeoJson(json: object | string): Feature {\r\n const geoJson: any = typeof json == 'string' ? JSON.parse(json as string) : json;\r\n const ft = new Feature();\r\n if (geoJson.properties)\r\n ft.properties = geoJson.properties;\r\n \r\n if (geoJson.geometry)\r\n ft.geometry = Geometry.fromGeoJson(geoJson.geometry);\r\n\r\n return ft;\r\n }\r\n\r\n public static toGeoJson(instance: Feature): any {\r\n const ft = {\r\n type: instance.type,\r\n properties: Object.assign({}, instance.properties),\r\n geometry: instance.geometry ? Geometry.toGeoJson(instance.geometry) : {}\r\n };\r\n\r\n return ft;\r\n }\r\n\r\n /**\r\n * Helper function for converting to GeoJSON\r\n */\r\n public toGeoJson(): any {\r\n const ft = {\r\n type: this.type,\r\n properties: this.getProperties(),\r\n geometry: this.geometry ? Geometry.toGeoJson(this.geometry) : {}\r\n };\r\n\r\n delete ft.properties['geometry'];\r\n return ft;\r\n\r\n // const gj: any = {\r\n // type: this._type,\r\n // properties: this._properties\r\n // };\r\n\r\n // if (this.geometry)\r\n // gj.geometry = Geometry.toGeoJson(this._geometry);\r\n \r\n // return gj;\r\n\r\n\r\n\r\n\r\n // if (this._olFeature) {\r\n // const gjf = Feature._formatGeoJSON.writeFeatureObject(this._olFeature) as any;\r\n // if (this.geometry && !gjf.geometry) {\r\n // gjf.geometry = Geometry.toGeoJson(this.geometry);\r\n // // ce layer ni na karti od ol ne dobi geometrija!\r\n // }\r\n // return gjf;\r\n // }\r\n // return undefined;\r\n }\r\n\r\n /**\r\n * Helper function for stringifying GeoJSON\r\n */\r\n public toGeoJsonString(): string {\r\n return JSON.stringify(this.toGeoJson());\r\n }\r\n\r\n public static fromMb(mbFt: GeoJSON.Feature): Feature {\r\n const ft = new Feature(mbFt.id ? mbFt.id.toString() : null);\r\n ft.setProperties(mbFt.properties as any);\r\n ft.geometry = Geometry.fromGeoJson(mbFt.geometry);\r\n\r\n return ft;\r\n }\r\n}\r\n\r\n/**\r\n * FeatureCollection object.\r\n */\r\nexport class FeatureCollection {\r\n type: 'FeatureCollection' = 'FeatureCollection';\r\n crs?: Crs;\r\n features: Array>;\r\n properties?: M;\r\n bbox?: [number, number, number, number];\r\n\r\n private _idIndex: { [code: string]: Feature; } = {};\r\n private _spatialIndex: any;\r\n\r\n /**\r\n * Creates an instance of FeatureCollection.\r\n */\r\n public constructor(features?: Feature[], properties?: any) {\r\n if (features)\r\n this.features = features.slice();\r\n else\r\n this.features = [];\r\n \r\n if (properties)\r\n this.properties = Object.assign({}, properties);\r\n else\r\n this.properties = {} as M;\r\n\r\n this.features.forEach(x => this._idIndex[x.getInternalId()] = x);\r\n this._spatialIndex = new RBush();\r\n \r\n const items = new Array(this.features.length);\r\n this.features.forEach((x, i) => {\r\n if (x.geometry) {\r\n const envelope = x.geometry.getEnvelopeInternal();\r\n items[i] = {\r\n minX: envelope.minx,\r\n minY: envelope.miny,\r\n maxX: envelope.maxx,\r\n maxY: envelope.maxy,\r\n value: x\r\n };\r\n }\r\n else {\r\n items[i] = {\r\n minX: +Infinity,\r\n minY: +Infinity,\r\n maxX: -Infinity,\r\n maxY: -Infinity,\r\n value: x\r\n }\r\n }\r\n });\r\n this._spatialIndex.load(items); \r\n }\r\n\r\n public forEach(callbackfn: (value: Feature, index: number, array: Feature[]) => void, thisArg?: any): void {\r\n if (this.features)\r\n this.features.forEach(callbackfn, thisArg);\r\n }\r\n\r\n /**\r\n * Returns number of features in the collection.\r\n */\r\n public get length(): number {\r\n return this.features.length;\r\n }\r\n\r\n /**\r\n * Returns all features in the collection.\r\n */\r\n public getAll(): Feature[] {\r\n return this.features.slice();\r\n }\r\n\r\n /**\r\n * Gets feature by its id.\r\n */\r\n public getById(id: string): Feature {\r\n return this._idIndex[id];\r\n }\r\n\r\n /**\r\n * Gets feature by its value.\r\n */\r\n public getByProperty(property: string, value: any): Feature {\r\n return this.features.find(ft => ft.getField(property) == value);\r\n }\r\n\r\n /**\r\n * Gets the first feature in the collection.\r\n */\r\n public get first(): Feature {\r\n if (this.features && this.features.length > 0)\r\n return this.features[0];\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Gets the last feature in the collection.\r\n */\r\n public get last(): Feature {\r\n if (this.features && this.features.length > 0)\r\n return this.features[this.features.length - 1];\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Sets the CRS code of this collection\r\n */\r\n public setCrsCode(code: string) {\r\n if (this.getCrsCode() == undefined)\r\n this.crs = new Crs(code);\r\n else\r\n this.crs.properties.name = code;\r\n }\r\n\r\n /**\r\n * Gets the CRS code of this collection\r\n */\r\n public getCrsCode(): string {\r\n if (this.crs && this.crs.properties && this.crs.properties.name)\r\n return this.crs.properties.name;\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Gets features by geograpic area defined by given envelope.\r\n */\r\n public getByEnvelope(envelope: Envelope): Feature[] {\r\n const items = this._spatialIndex.search({\r\n minX: envelope.minx,\r\n minY: envelope.miny,\r\n maxX: envelope.maxx,\r\n maxY: envelope.maxy\r\n });\r\n return items.map(x => x.value);\r\n }\r\n\r\n /**\r\n * Gets features by geograpic location defined by given cooridnate.\r\n */\r\n public getByCoordinate(coordinate: Coordinate): Feature[] {\r\n return this.getByEnvelope(Envelope.fromCoordinate(coordinate));\r\n }\r\n\r\n public static fromMb(mbFc: GeoJSON.FeatureCollection): FeatureCollection {\r\n return new FeatureCollection(mbFc.features.map(ft => Feature.fromMb(ft)));\r\n }\r\n\r\n /**\r\n * Static helper function for parsing GeoJSON\r\n */\r\n public static fromGeoJson(json: object | string): FeatureCollection {\r\n return FeatureCollection.fromGeoJsonTyped(json);\r\n }\r\n\r\n public static fromGeoJsonTyped(json: object | string): FeatureCollection {\r\n const geoJson: any = typeof json == 'string' ? JSON.parse(json as string) : json;\r\n const ftColl = new FeatureCollection();\r\n\r\n if (geoJson.crs)\r\n ftColl.crs = geoJson.crs;\r\n\r\n if (geoJson.properties)\r\n ftColl.properties = geoJson.properties;\r\n \r\n if (geoJson.bbox)\r\n ftColl.bbox = geoJson.bbox;\r\n\r\n if (geoJson.features && Array.isArray(geoJson.features))\r\n geoJson.features.forEach(f => ftColl.features.push(Feature.fromGeoJson(f)));\r\n\r\n return ftColl;\r\n }\r\n\r\n /**\r\n * Helper function for converting to GeoJSON\r\n */\r\n public toGeoJson(): any {\r\n let copy: any = {};\r\n Object.assign(copy, this);\r\n delete copy._spatialIndex;\r\n delete copy._idIndex;\r\n copy.features = [];\r\n this.features.forEach(ft => copy.features.push(ft.toGeoJson()));\r\n\r\n return copy;\r\n }\r\n\r\n /**\r\n * Helper function for stringifying GeoJSON\r\n */\r\n public toGeoJsonString(): string {\r\n return JSON.stringify(this.toGeoJson());\r\n }\r\n\r\n /**\r\n * Sets the specified key's property\r\n */\r\n public setProperty(key: string, value: any) {\r\n if (this.properties == undefined)\r\n this.properties = {} as any;\r\n this.properties[key] = value;\r\n }\r\n}\r\n\r\nexport class Crs {\r\n type: string;\r\n properties: CrsProperties;\r\n\r\n constructor(crsCode: string) {\r\n this.type = 'name';\r\n this.properties = new CrsProperties(crsCode);\r\n }\r\n}\r\n\r\nexport class CrsProperties {\r\n name: string;\r\n\r\n constructor(name: string) {\r\n this.name = name;\r\n }\r\n}\r\n","import { IService, ServiceType } from './RM2Service';\r\nimport { CoordinateLike, Geometry, Envelope, Coordinate } from '../model/RM2Geometry';\r\nimport { FeatureCollection } from '../model/RM2Feature';\r\nimport { QueryResult, QueryResultItem, Projection } from '..';\r\n\r\nexport class NominatimServiceOptions implements INominatimServiceOptions {\r\n queryUrl?: string;\r\n query_v2Url?: string;\r\n query_v3Url?: string; // nov geocoding za Promet+\r\n reverseGeocodingUrl?: string;\r\n GeocodeLocQueryUrl?: string;\r\n GeocodeLocReverseUrl?: string;\r\n projection?: string;\r\n requestsTimeoutMs?: number;\r\n\r\n constructor(opts?: INominatimServiceOptions) {\r\n this.projection = 'EPSG:4326';\r\n this.requestsTimeoutMs = 5000;\r\n\r\n if (opts) {\r\n if (opts.queryUrl != undefined)\r\n this.queryUrl = opts.queryUrl;\r\n \r\n if (opts.query_v2Url != undefined)\r\n this.query_v2Url = opts.query_v2Url;\r\n \r\n if (opts.query_v3Url != undefined)\r\n this.query_v3Url = opts.query_v3Url;\r\n\r\n if (opts.reverseGeocodingUrl != undefined)\r\n this.reverseGeocodingUrl = opts.reverseGeocodingUrl;\r\n\r\n if (opts.GeocodeLocQueryUrl != undefined)\r\n this.GeocodeLocQueryUrl = opts.GeocodeLocQueryUrl;\r\n\r\n if (opts.GeocodeLocReverseUrl != undefined)\r\n this.GeocodeLocReverseUrl = opts.GeocodeLocReverseUrl;\r\n \r\n if (opts.projection != undefined)\r\n this.projection = opts.projection;\r\n \r\n if (opts.requestsTimeoutMs != undefined)\r\n this.requestsTimeoutMs = opts.requestsTimeoutMs;\r\n }\r\n }\r\n}\r\n\r\nexport interface INominatimServiceOptions {\r\n queryUrl?: string;\r\n query_v2Url?: string;\r\n query_v3Url?: string; // nov geocoding za Promet+\r\n reverseGeocodingUrl?: string;\r\n GeocodeLocQueryUrl?: string;\r\n GeocodeLocReverseUrl?: string;\r\n projection?: string;\r\n requestsTimeoutMs?: number;\r\n}\r\n\r\nexport class QueryOptions implements IQueryOptions {\r\n pageSize?: number;\r\n page?: number;\r\n lang?: string;\r\n\r\n constructor(opts?: IQueryOptions) {\r\n this.pageSize = 5;\r\n this.page = 0;\r\n\r\n if (opts) {\r\n if (opts.pageSize != undefined)\r\n this.pageSize = opts.pageSize;\r\n \r\n if (opts.page != undefined)\r\n this.page = opts.page;\r\n \r\n if (opts.lang != undefined)\r\n this.lang = opts.lang;\r\n }\r\n }\r\n}\r\n\r\nexport interface IQueryOptions {\r\n pageSize?: number;\r\n page?: number;\r\n lang?: string;\r\n}\r\n\r\nexport class ReverseGeocodingOptions implements IReverseGeocodingOptions {\r\n pageSize?: number;\r\n\r\n constructor(opts?: IQueryOptions) {\r\n this.pageSize = 5;\r\n\r\n if (opts) {\r\n if (opts.pageSize != undefined)\r\n this.pageSize = opts.pageSize;\r\n }\r\n }\r\n}\r\n\r\nexport interface IReverseGeocodingOptions {\r\n pageSize?: number;\r\n}\r\n\r\nexport class NominatimService implements IService {\r\n\r\n public readonly type = ServiceType.Nominatim;\r\n public readonly name: string;\r\n public readonly options: INominatimServiceOptions;\r\n public readonly enabled: boolean = true;\r\n\r\n public constructor(name: string, options: INominatimServiceOptions) {\r\n this.name = name;\r\n this.options = new NominatimServiceOptions(options);\r\n }\r\n\r\n public reverse(coordinate: CoordinateLike, options?: IReverseGeocodingOptions): Promise> {\r\n return new Promise((res, rej) => {\r\n if (this.options.reverseGeocodingUrl) {\r\n options = new ReverseGeocodingOptions(options);\r\n const url = `${this.options.reverseGeocodingUrl}?x=${coordinate[0]}&y=${coordinate[1]}&pagesize=${options.pageSize}`;\r\n \r\n const xhr = new XMLHttpRequest();\r\n xhr.timeout = this.options.requestsTimeoutMs;\r\n xhr.onload = () => {\r\n if (xhr.responseText)\r\n res(FeatureCollection.fromGeoJson(xhr.responseText));\r\n else\r\n res(null);\r\n };\r\n \r\n xhr.ontimeout = () => rej('Timeout');\r\n xhr.onerror = () => rej('Error getting location');\r\n xhr.onabort = () => rej('HTTP request aborted.');\r\n // xhr.onloadend = () => {\r\n // this.currentHttpRequest = null;\r\n // this.setLoadingStatus(false);\r\n // };\r\n \r\n // this.currentHttpRequest = xhr;\r\n xhr.open('GET', url, true);\r\n xhr.send(null);\r\n }\r\n else\r\n rej('No reverse geocoding URL provided in map picker options(\\'reverseGeocodingUrl\\').');\r\n });\r\n }\r\n\r\n public query(query: string, options?: IQueryOptions): Promise {\r\n return new Promise((res, rej) => {\r\n options = new QueryOptions(options);\r\n const xhr = new XMLHttpRequest();\r\n xhr.timeout = this.options.requestsTimeoutMs;\r\n xhr.onload = () => {\r\n if (!xhr.status || xhr.status >= 200 && xhr.status < 300) {\r\n const r = JSON.parse(xhr.responseText);\r\n let items: QueryResultItem[] = [];\r\n r.forEach((ft: any) => {\r\n items.push({\r\n title: ft.display_Name || ft.display_name,\r\n type: (ft.class || ft.category) + \"-\" + ft.type,\r\n dateTime: new Date(),\r\n projection: Projection.create(this.options.projection),\r\n location: [ft.lon, ft.lat],\r\n envelope: Envelope.fromNumArray(ft.boundingBox || ft.boundingbox),\r\n geometry: Geometry.fromWkt(ft.geoText || ft.geotext),\r\n relevance: ft.importance\r\n });\r\n });\r\n \r\n // TODO: nek default transformer\r\n res({\r\n service: this.name,\r\n status: 'OK',\r\n items: items\r\n });\r\n }\r\n };\r\n \r\n xhr.ontimeout = () => rej('Timeout');\r\n xhr.onerror = () => rej('Error loading location data for \\'' + query + '\\'.');\r\n xhr.open('GET', `${this.options.queryUrl}/search?&polygon_text=1&limit=${options.pageSize}&q=${query}`, true);\r\n xhr.send(null);\r\n });\r\n }\r\n\r\n public query_v2(query: string, options?: IQueryOptions): Promise> {\r\n return new Promise((res, rej) => {\r\n options = new QueryOptions(options);\r\n const xhr = new XMLHttpRequest();\r\n xhr.timeout = this.options.requestsTimeoutMs;\r\n xhr.onload = () => {\r\n if (!xhr.status || xhr.status >= 200 && xhr.status < 300) {\r\n const fc = FeatureCollection.fromGeoJson(xhr.responseText);\r\n res(fc);\r\n }\r\n };\r\n \r\n xhr.ontimeout = () => rej('Timeout');\r\n xhr.onerror = () => rej('Error loading location data for \\'' + query + '\\'.');\r\n xhr.open('GET', `${this.options.queryUrl}?condition=${query}&pagesize=${options.pageSize}&page=${options.page}`, true);\r\n xhr.send(null);\r\n });\r\n }\r\n\r\n public query_v3(query: string): Promise> {\r\n return new Promise((res, rej) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.timeout = this.options.requestsTimeoutMs;\r\n xhr.onload = () => {\r\n if (!xhr.status || xhr.status >= 200 && xhr.status < 300) {\r\n const fc = FeatureCollection.fromGeoJson(xhr.responseText);\r\n res(fc);\r\n }\r\n };\r\n\r\n const body = new Query_v3Request({\r\n query: query\r\n } as IQuery_v3Request);\r\n \r\n xhr.ontimeout = () => rej('Timeout');\r\n xhr.onerror = () => rej('Error loading location data for \\'' + query + '\\'.');\r\n xhr.open('POST', `${this.options.query_v3Url}`, true);\r\n xhr.send(JSON.stringify(body));\r\n });\r\n }\r\n\r\n public reverse_v3(coord: CoordinateLike): Promise> {\r\n return new Promise((res, rej) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.timeout = this.options.requestsTimeoutMs;\r\n xhr.onload = () => {\r\n if (!xhr.status || xhr.status >= 200 && xhr.status < 300) {\r\n const fc = FeatureCollection.fromGeoJson(xhr.responseText);\r\n res(fc);\r\n }\r\n };\r\n\r\n const body = new Query_v3Request({\r\n pageSize: 1,\r\n x: coord[0],\r\n y: coord[1],\r\n } as IQuery_v3Request);\r\n\r\n xhr.ontimeout = () => rej('Timeout');\r\n xhr.onerror = () => rej('Error fetching reverse geocoding for \\'' + JSON.stringify(coord) + '\\'.');\r\n xhr.open('POST', `${this.options.query_v3Url}`, true);\r\n xhr.send(JSON.stringify(body));\r\n });\r\n }\r\n\r\n public GeocodeLoc(query: string, options?: IQueryOptions): Promise> {\r\n return new Promise>((res, rej) => {\r\n if (!this.options.GeocodeLocQueryUrl)\r\n rej('No GeocodeLocQueryUrl provided');\r\n \r\n options = new QueryOptions(options);\r\n const xhr = new XMLHttpRequest();\r\n xhr.timeout = this.options.requestsTimeoutMs;\r\n xhr.onload = () => {\r\n if (!xhr.status || xhr.status >= 200 && xhr.status < 300) {\r\n const r = JSON.parse(xhr.responseText);\r\n\r\n const fc = FeatureCollection.fromGeoJson(r);\r\n res(fc);\r\n }\r\n };\r\n \r\n xhr.ontimeout = () => rej('Timeout');\r\n xhr.onerror = () => rej(`Error loading location data for '${query}'.`);\r\n xhr.open('GET', `${this.options.GeocodeLocQueryUrl}?query=${encodeURIComponent(query)}&take=${options.pageSize}&skip=${options.pageSize * options.page}`, true);\r\n xhr.send(null);\r\n });\r\n }\r\n\r\n public GeocodeLocReverse(coordinate: Coordinate | CoordinateLike, options?: IReverseGeocodingOptions): Promise> {\r\n return new Promise>((res, rej) => {\r\n if (!this.options.GeocodeLocReverseUrl)\r\n rej('No GeocodeLocReverseUrl provided');\r\n \r\n if (coordinate instanceof Coordinate)\r\n coordinate = [coordinate.x, coordinate.y];\r\n \r\n options = new ReverseGeocodingOptions(options);\r\n const xhr = new XMLHttpRequest();\r\n xhr.timeout = this.options.requestsTimeoutMs;\r\n xhr.onload = () => {\r\n if (!xhr.status || xhr.status >= 200 && xhr.status < 300) {\r\n const r = JSON.parse(xhr.responseText);\r\n\r\n const fc = FeatureCollection.fromGeoJson(r);\r\n res(fc);\r\n }\r\n };\r\n \r\n const x = coordinate[0];\r\n const y = coordinate[1];\r\n xhr.ontimeout = () => rej('Timeout');\r\n xhr.onerror = () => rej(`Error loading location data for '${x}, ${y}'.`);\r\n xhr.open('GET', `${this.options.GeocodeLocReverseUrl}?x=${x}&y=${y}`, true);\r\n xhr.send(null);\r\n });\r\n }\r\n}\r\n\r\nexport interface Query_v2ResponseFeatureProperties {\r\n Id: number;\r\n Title: string;\r\n Type: Query_v2LocationType;\r\n Distance: number;\r\n}\r\n\r\nexport interface Query_v2ResponseFeatureCollectionProperties {\r\n Name: number;\r\n Page: number;\r\n NextPage: boolean;\r\n}\r\n\r\nexport type Query_v2LocationType = 'Naselje' | 'Ulica' | 'Poi' | 'Postaja';\r\n\r\nexport interface IQuery_v3Request {\r\n query: string;\r\n pageSize: number;\r\n page: number;\r\n dataSource: string;\r\n ModelVersion: number;\r\n dist?: number;\r\n x?: number;\r\n y?: number;\r\n InCrs: string;\r\n OutCrs: string;\r\n}\r\n\r\nexport class Query_v3Request implements IQuery_v3Request {\r\n query: string;\r\n pageSize: number;\r\n page: number;\r\n dataSource: string;\r\n ModelVersion: number;\r\n dist?: number;\r\n x?: number;\r\n y?: number;\r\n InCrs: string;\r\n OutCrs: string;\r\n\r\n constructor(req?: IQuery_v3Request) {\r\n this.query = req && req.query ? req.query : undefined;\r\n this.pageSize = req && req.pageSize ? req.pageSize : 10;\r\n this.page = req && req.page != undefined ? req.page : 0;\r\n this.dataSource = req && req.dataSource ? req.dataSource : undefined;\r\n this.ModelVersion = req && req.ModelVersion != undefined ? req.ModelVersion :1;\r\n\r\n this.dist = req && req.dist != undefined ? req.dist : undefined;\r\n this.x = req && req.x != undefined ? req.x : undefined;\r\n this.y = req && req.y != undefined ? req.y : undefined;\r\n\r\n this.InCrs = req && req.InCrs ? req.InCrs : \"EPSG:4326\";\r\n this.OutCrs = req && req.OutCrs ? req.OutCrs : \"EPSG:4326\";\r\n }\r\n}\r\n\r\nexport interface Query_v3ResponseFeatureProperties {\r\n Title: string;\r\n Description: string;\r\n Icon: string;\r\n Id: string;\r\n ContentName: string;\r\n IconAnchor: number[];\r\n IsFromXY?: boolean;\r\n Odsek: string;\r\n Stacionaza?: number;\r\n Cesta: Query_v3ResponseFeaturePropertiesCesta;\r\n Ad: Query_v3ResponseFeaturePropertiesAd;\r\n}\r\n\r\nexport interface Query_v3ResponseFeaturePropertiesCesta\r\n{\r\n ftype: string;\r\n descr: string;\r\n bvx?: number;\r\n bvy?: number;\r\n bvr?: number;\r\n dist?: number;\r\n ds_field: string;\r\n ds_at?: number;\r\n odsek: string;\r\n cesta: string;\r\n kategorija: string;\r\n}\r\n\r\nexport interface Query_v3ResponseFeaturePropertiesAd\r\n{\r\n ftype: string;\r\n descr: string;\r\n bvx?: number;\r\n bvy?: number;\r\n bvr?: number;\r\n dist?: number;\r\n}\r\n\r\nexport interface ReverseGeocodingFeatureProperties {\r\n Id?: number;\r\n Title?: string;\r\n Type?: string;\r\n}\r\n\r\nexport interface ReverseGeocodingProperties {\r\n Name: number;\r\n Page: number;\r\n NextPage: boolean;\r\n}\r\n\r\nexport interface GeocodeLocFeatureProperties {\r\n Sid: number;\r\n Title: string;\r\n Description: string;\r\n Type: GeocodeLocLocationType;\r\n TypedId: string;\r\n gc_cesta: Query_v3ResponseFeaturePropertiesCesta;\r\n}\r\n\r\nexport type GeocodeLocLocationType = 'kucni_brojevi' | 'jls' | 'dars_mp' | 'dars_parking' | 'dars_predori' | 'dars_prk' | 'poi' | 'rpe_na' | 'rpe_ul' | 'stavbe_naslovi';\r\n\r\nexport interface GeocodeLocFeatureCollectionProperties {\r\n Take: number;\r\n Skip: number;\r\n HasNext: boolean;\r\n OutCrs: string;\r\n Types: any;\r\n}\r\n","import { degreesToRadians, radiansToDegrees } from \"@turf/helpers\";\nimport { getCoord } from \"@turf/invariant\";\n// http://en.wikipedia.org/wiki/Haversine_formula\n// http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Takes two {@link Point|points} and finds the geographic bearing between them,\n * i.e. the angle measured in degrees from the north line (0 degrees)\n *\n * @name bearing\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.final=false] calculates the final bearing if true\n * @returns {number} bearing in decimal degrees, between -180 and 180 degrees (positive clockwise)\n * @example\n * var point1 = turf.point([-75.343, 39.984]);\n * var point2 = turf.point([-75.534, 39.123]);\n *\n * var bearing = turf.bearing(point1, point2);\n *\n * //addToMap\n * var addToMap = [point1, point2]\n * point1.properties['marker-color'] = '#f00'\n * point2.properties['marker-color'] = '#0f0'\n * point1.properties.bearing = bearing\n */\nexport default function bearing(start, end, options) {\n if (options === void 0) { options = {}; }\n // Reverse calculation\n if (options.final === true) {\n return calculateFinalBearing(start, end);\n }\n var coordinates1 = getCoord(start);\n var coordinates2 = getCoord(end);\n var lon1 = degreesToRadians(coordinates1[0]);\n var lon2 = degreesToRadians(coordinates2[0]);\n var lat1 = degreesToRadians(coordinates1[1]);\n var lat2 = degreesToRadians(coordinates2[1]);\n var a = Math.sin(lon2 - lon1) * Math.cos(lat2);\n var b = Math.cos(lat1) * Math.sin(lat2) -\n Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);\n return radiansToDegrees(Math.atan2(a, b));\n}\n/**\n * Calculates Final Bearing\n *\n * @private\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @returns {number} bearing\n */\nfunction calculateFinalBearing(start, end) {\n // Swap start & end\n var bear = bearing(end, start);\n bear = (bear + 180) % 360;\n return bear;\n}\n","// http://en.wikipedia.org/wiki/Haversine_formula\n// http://www.movable-type.co.uk/scripts/latlong.html\nimport { degreesToRadians, lengthToRadians, point, radiansToDegrees, } from \"@turf/helpers\";\nimport { getCoord } from \"@turf/invariant\";\n/**\n * Takes a {@link Point} and calculates the location of a destination point given a distance in\n * degrees, radians, miles, or kilometers; and bearing in degrees.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name destination\n * @param {Coord} origin starting point\n * @param {number} distance distance from the origin point\n * @param {number} bearing ranging from -180 to 180\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] miles, kilometers, degrees, or radians\n * @param {Object} [options.properties={}] Translate properties to Point\n * @returns {Feature} destination point\n * @example\n * var point = turf.point([-75.343, 39.984]);\n * var distance = 50;\n * var bearing = 90;\n * var options = {units: 'miles'};\n *\n * var destination = turf.destination(point, distance, bearing, options);\n *\n * //addToMap\n * var addToMap = [point, destination]\n * destination.properties['marker-color'] = '#f00';\n * point.properties['marker-color'] = '#0f0';\n */\nexport default function destination(origin, distance, bearing, options) {\n if (options === void 0) { options = {}; }\n // Handle input\n var coordinates1 = getCoord(origin);\n var longitude1 = degreesToRadians(coordinates1[0]);\n var latitude1 = degreesToRadians(coordinates1[1]);\n var bearingRad = degreesToRadians(bearing);\n var radians = lengthToRadians(distance, options.units);\n // Main\n var latitude2 = Math.asin(Math.sin(latitude1) * Math.cos(radians) +\n Math.cos(latitude1) * Math.sin(radians) * Math.cos(bearingRad));\n var longitude2 = longitude1 +\n Math.atan2(Math.sin(bearingRad) * Math.sin(radians) * Math.cos(latitude1), Math.cos(radians) - Math.sin(latitude1) * Math.sin(latitude2));\n var lng = radiansToDegrees(longitude2);\n var lat = radiansToDegrees(latitude2);\n return point([lng, lat], options.properties);\n}\n","import bearing from '@turf/bearing';\nimport distance from '@turf/distance';\nimport destination from '@turf/destination';\nimport { isObject, lineString } from '@turf/helpers';\n\n/**\n * Takes a {@link LineString|line}, a specified distance along the line to a start {@link Point},\n * and a specified distance along the line to a stop point\n * and returns a subsection of the line in-between those points.\n *\n * This can be useful for extracting only the part of a route between two distances.\n *\n * @name lineSliceAlong\n * @param {Feature|LineString} line input line\n * @param {number} startDist distance along the line to starting point\n * @param {number} stopDist distance along the line to ending point\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {Feature} sliced line\n * @example\n * var line = turf.lineString([[7, 45], [9, 45], [14, 40], [14, 41]]);\n * var start = 12.5;\n * var stop = 25;\n * var sliced = turf.lineSliceAlong(line, start, stop, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [line, start, stop, sliced]\n */\nfunction lineSliceAlong(line, startDist, stopDist, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n\n var coords;\n var slice = [];\n\n // Validation\n if (line.type === \"Feature\") coords = line.geometry.coordinates;\n else if (line.type === \"LineString\") coords = line.coordinates;\n else throw new Error(\"input must be a LineString Feature or Geometry\");\n var origCoordsLength = coords.length;\n var travelled = 0;\n var overshot, direction, interpolated;\n for (var i = 0; i < coords.length; i++) {\n if (startDist >= travelled && i === coords.length - 1) break;\n else if (travelled > startDist && slice.length === 0) {\n overshot = startDist - travelled;\n if (!overshot) {\n slice.push(coords[i]);\n return lineString(slice);\n }\n direction = bearing(coords[i], coords[i - 1]) - 180;\n interpolated = destination(coords[i], overshot, direction, options);\n slice.push(interpolated.geometry.coordinates);\n }\n\n if (travelled >= stopDist) {\n overshot = stopDist - travelled;\n if (!overshot) {\n slice.push(coords[i]);\n return lineString(slice);\n }\n direction = bearing(coords[i], coords[i - 1]) - 180;\n interpolated = destination(coords[i], overshot, direction, options);\n slice.push(interpolated.geometry.coordinates);\n return lineString(slice);\n }\n\n if (travelled >= startDist) {\n slice.push(coords[i]);\n }\n\n if (i === coords.length - 1) {\n return lineString(slice);\n }\n\n travelled += distance(coords[i], coords[i + 1], options);\n }\n\n if (travelled < startDist && coords.length === origCoordsLength)\n throw new Error(\"Start position is beyond line\");\n\n var last = coords[coords.length - 1];\n return lineString([last, last]);\n}\n\nexport default lineSliceAlong;\n","import length from '@turf/length';\nimport lineSliceAlong from '@turf/line-slice-along';\nimport { flattenEach } from '@turf/meta';\nimport { isObject, featureCollection } from '@turf/helpers';\n\n/**\n * Divides a {@link LineString} into chunks of a specified length.\n * If the line is shorter than the segment length then the original line is returned.\n *\n * @name lineChunk\n * @param {FeatureCollection|Geometry|Feature} geojson the lines to split\n * @param {number} segmentLength how long to make each segment\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] units can be degrees, radians, miles, or kilometers\n * @param {boolean} [options.reverse=false] reverses coordinates to start the first chunked segment at the end\n * @returns {FeatureCollection} collection of line segments\n * @example\n * var line = turf.lineString([[-95, 40], [-93, 45], [-85, 50]]);\n *\n * var chunk = turf.lineChunk(line, 15, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [chunk];\n */\nfunction lineChunk(geojson, segmentLength, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var units = options.units;\n var reverse = options.reverse;\n\n // Validation\n if (!geojson) throw new Error(\"geojson is required\");\n if (segmentLength <= 0)\n throw new Error(\"segmentLength must be greater than 0\");\n\n // Container\n var results = [];\n\n // Flatten each feature to simple LineString\n flattenEach(geojson, function (feature) {\n // reverses coordinates to start the first chunked segment at the end\n if (reverse)\n feature.geometry.coordinates = feature.geometry.coordinates.reverse();\n\n sliceLineSegments(feature, segmentLength, units, function (segment) {\n results.push(segment);\n });\n });\n return featureCollection(results);\n}\n\n/**\n * Slice Line Segments\n *\n * @private\n * @param {Feature} line GeoJSON LineString\n * @param {number} segmentLength how long to make each segment\n * @param {string}[units='kilometers'] units can be degrees, radians, miles, or kilometers\n * @param {Function} callback iterate over sliced line segments\n * @returns {void}\n */\nfunction sliceLineSegments(line, segmentLength, units, callback) {\n var lineLength = length(line, { units: units });\n\n // If the line is shorter than the segment length then the orginal line is returned.\n if (lineLength <= segmentLength) return callback(line);\n\n var numberOfSegments = lineLength / segmentLength;\n\n // If numberOfSegments is integer, no need to plus 1\n if (!Number.isInteger(numberOfSegments)) {\n numberOfSegments = Math.floor(numberOfSegments) + 1;\n }\n\n for (var i = 0; i < numberOfSegments; i++) {\n var outline = lineSliceAlong(\n line,\n segmentLength * i,\n segmentLength * (i + 1),\n { units: units }\n );\n callback(outline, i);\n }\n}\n\nexport default lineChunk;\n","import distance from \"@turf/distance\";\nimport { segmentReduce } from \"@turf/meta\";\n/**\n * Takes a {@link GeoJSON} and measures its length in the specified units, {@link (Multi)Point}'s distance are ignored.\n *\n * @name length\n * @param {Feature} geojson GeoJSON to measure\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units=kilometers] can be degrees, radians, miles, or kilometers\n * @returns {number} length of GeoJSON\n * @example\n * var line = turf.lineString([[115, -32], [131, -22], [143, -25], [150, -34]]);\n * var length = turf.length(line, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [line];\n * line.properties.distance = length;\n */\nexport default function length(geojson, options) {\n if (options === void 0) { options = {}; }\n // Calculate distance from 2-vertex line segments\n return segmentReduce(geojson, function (previousValue, segment) {\n var coords = segment.geometry.coordinates;\n return previousValue + distance(coords[0], coords[1], options);\n }, 0);\n}\n","import * as turf_helpers from '@turf/helpers';\r\nimport * as turf_line_chunk from '@turf/line-chunk';\r\n\r\nimport { Guid } from 'guid-typescript';\r\nimport { Feature, FeatureCollection, Geometry } from '..';\r\nimport { Route, RouteFeatureCollection } from '../services/RM2RoutingService';\r\nimport { Utils } from '../services/RM2StaticService';\r\n\r\nexport interface RouteStatusRequestDTO {\r\n Cache: boolean;\r\n CurrentSegmentIndex: number;\r\n Route: RouteFeatureCollection;\r\n}\r\n\r\nexport class RouteStatusResponseDTO {\r\n RouteId: string;\r\n OptimalTTMs: number;\r\n RealTTMs: number;\r\n OptimalToEndTTMs: number;\r\n RealToEndTTMs: number;\r\n TravelTimeStatus: 'normal' | 'warning' | 'critical';\r\n SegmentTravelTimes: number[];\r\n\r\n _routeColsData: any[];\r\n\r\n public static fromJSON(json: string): RouteStatusResponseDTO {\r\n const obj = JSON.parse(json);\r\n const dto = new RouteStatusResponseDTO();\r\n for (let key in obj)\r\n dto[key] = obj[key];\r\n return dto;\r\n }\r\n\r\n public static fromRoute(route: Route): RouteStatusResponseDTO {\r\n const r = route.route;\r\n const dto = new RouteStatusResponseDTO();\r\n dto.RouteId = Guid.create().toString();\r\n dto.OptimalTTMs = r.properties.OptimalTTMs;\r\n dto.RealTTMs = r.properties.RealTTMs;\r\n dto.OptimalToEndTTMs = dto.OptimalTTMs;\r\n dto.RealToEndTTMs = dto.RealTTMs;\r\n dto.TravelTimeStatus = 'normal';\r\n dto.SegmentTravelTimes = [];\r\n\r\n for (let i = 0; i < r.features.length; i++) {\r\n const ft = r.features[i];\r\n dto.SegmentTravelTimes.push(...ft.properties.SegmentIds.map(s => ft.properties.RealTTMs / ft.properties.SegmentIds.length));\r\n }\r\n\r\n return dto;\r\n }\r\n\r\n public apply(route: RouteFeatureCollection, isSelected: boolean, routeColsVals: any[]): FeatureCollection\r\n {\r\n const fc = new FeatureCollection();\r\n fc.properties = route.properties;\r\n\r\n // edit route colours (FCD)\r\n var consecutiveSegment = 0;\r\n var segmentCount = 0;\r\n\r\n for (let i = 0; i < route.features.length; i++)\r\n {\r\n const props = route.features[i].properties;\r\n const segmentNrs = props.SegmentIds.length;\r\n const ls = turf_line_chunk.default(turf_helpers.lineString(route.features[i].geometry.getCoordinates().map(x => [x.x, x.y])), props.SegmentLengthMM, { units: 'millimeters' });\r\n const segmentLs = ls.features.slice(0, segmentNrs);\r\n const segmentOptimalTT = props.OptimalTTMs / segmentNrs;\r\n for (let j = 0; j < segmentLs.length; j++) {\r\n const colValue = this.getRouteEdgeColorValue(this.SegmentTravelTimes[consecutiveSegment], segmentOptimalTT);\r\n const segFt = new Feature({\r\n Color: this.getRouteColor(colValue, isSelected, routeColsVals)\r\n }, Geometry.fromGeoJson(segmentLs[j].geometry));\r\n fc.features.push(segFt);\r\n\r\n consecutiveSegment++;\r\n }\r\n\r\n // segmentCount += props.SegmentIds.length;\r\n\r\n // var sdiTravelTime = this.SegmentTravelTimes.slice(consecutiveSegment, consecutiveSegment + props.SegmentIds.length).reduce((total, num) => total + num);\r\n // var colValue = this.getRouteEdgeColorValue(sdiTravelTime, props.OptimalTTMs);\r\n // route.features[i].properties['Color'] = ;\r\n\r\n // consecutiveSegment += props.SegmentIds.length;\r\n }\r\n\r\n return fc;\r\n }\r\n\r\n public getRouteTravelTimeBackgroundClass(): string\r\n {\r\n if (this.TravelTimeStatus === 'normal')\r\n return 'badge-green';\r\n else if (this.TravelTimeStatus === 'warning')\r\n return 'badge-orange';\r\n else if (this.TravelTimeStatus === 'critical')\r\n return 'badge-red';\r\n return 'badge-primary';\r\n }\r\n\r\n public getRouteEdgeColorValue(tt: number, optimalTT: number): number\r\n {\r\n var diff = (tt / optimalTT) - 1;\r\n return diff > 0 ? (diff * 100) : 0;\r\n }\r\n\r\n public getRouteColor(colorValue: number, isSelected: boolean, routeColsVals: any[]): string\r\n {\r\n // get data\r\n const d = this.getColorVals(colorValue, routeColsVals);\r\n\r\n // interpolate color\r\n var fraction = d.upper == d.lower ? 0 : (colorValue - d.lower) / (d.upper - d.lower);\r\n var lowerColor = this.hexToRgb(isSelected ? d.lowerData[\"light\"] : d.lowerData[\"unselected\"]);\r\n var upperColor = this.hexToRgb(isSelected ? d.upperData[\"light\"] : d.upperData[\"unselected\"]);\r\n\r\n return this.rgbToHex(lowerColor.r + (upperColor.r - lowerColor.r) * fraction, lowerColor.g + (upperColor.g - lowerColor.g) * fraction, lowerColor.b + (upperColor.b - lowerColor.b) * fraction);\r\n }\r\n\r\n private getColorVals(colorValue: number, routeColsVals: any[]): { lower: number, lowerData: any, upper: number, upperData: any }\r\n {\r\n // lower limit for interpolation\r\n var lowerIndex = 0;\r\n for (var i = routeColsVals.length - 2; i >= 0; i -= 2)\r\n {\r\n var stop: number = routeColsVals[i];\r\n if (colorValue > stop)\r\n {\r\n lowerIndex = i;\r\n break;\r\n }\r\n }\r\n\r\n // upper limit for interpolation\r\n var aboveIndex = lowerIndex + 2 < routeColsVals.length - 1 ? lowerIndex + 2 : lowerIndex;\r\n\r\n // get data\r\n var lower: number = routeColsVals[lowerIndex];\r\n var lowerData = routeColsVals[lowerIndex + 1];\r\n var upper: number = routeColsVals[aboveIndex];\r\n var upperData = routeColsVals[aboveIndex + 1];\r\n\r\n return { lower: lower, lowerData: lowerData, upper: upper, upperData: upperData };\r\n }\r\n\r\n private hexToRgb(hex: string): { r: number, g: number, b: number } {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16)\r\n } : null;\r\n }\r\n\r\n private rgbToHex(r: number, g: number, b: number): string {\r\n let rStr = r.toString(16);\r\n let gStr = g.toString(16);\r\n let bStr = b.toString(16);\r\n \r\n const rDecimal = rStr.indexOf('.');\r\n if (rDecimal !== -1)\r\n rStr = rStr.substr(0, rDecimal);\r\n\r\n const gDecimal = gStr.indexOf('.');\r\n if (gDecimal !== -1)\r\n gStr = gStr.substr(0, gDecimal);\r\n\r\n const bDecimal = bStr.indexOf('.');\r\n if (bDecimal !== -1)\r\n bStr = bStr.substr(0, bDecimal);\r\n \r\n if (rStr.length == 1)\r\n rStr = \"0\" + rStr;\r\n if (gStr.length == 1)\r\n gStr = \"0\" + gStr;\r\n if (bStr.length == 1)\r\n bStr = \"0\" + bStr;\r\n \r\n return \"#\" + rStr + gStr + bStr;\r\n }\r\n\r\n // public static string ConvertHex(Color color) => string.Format('#{0}', color.ToHex().Substring(3));\r\n}\r\n","import { Projection } from '../model/RM2Projection';\r\nimport { Coordinate, CoordinateLike, Geometry } from '../model/RM2Geometry';\r\nimport { IService } from './RM2Service';\r\nimport { ServiceType } from './RM2Service';\r\nimport { Feature, FeatureCollection } from '../model/RM2Feature';\r\nimport { LineOptions, CircleOptions, HighlightOptions } from '../highlights/RM2HighlightOptions';\r\nimport { RouteStatusRequestDTO, RouteStatusResponseDTO } from '../model/RouteStatus';\r\nimport { IFitOptions } from '../model/RM2CameraChangeOptions';\r\nimport { Guid } from 'guid-typescript';\r\nimport { Query_v3ResponseFeatureProperties } from './RM2NominatimService';\r\nimport { Position } from '@turf/helpers';\r\nimport proj4 from 'proj4';\r\n\r\nexport type RouteFormat = '' | 'v1';\r\n\r\nexport class RouteOptions implements IRouteOptions {\r\n projection?: Projection;\r\n format?: RouteFormat;\r\n mode?: PathMode;\r\n\r\n constructor(opts?: IRouteOptions) {\r\n this.projection = opts && opts.projection != undefined ? opts.projection : Projection.create('EPSG:4326');\r\n this.format = opts && opts.format != undefined ? opts.format : '';\r\n this.mode = opts && opts.mode != undefined ? opts.mode : PathMode.Fastest;\r\n }\r\n}\r\n\r\nexport interface IRouteOptions {\r\n projection?: Projection;\r\n format?: RouteFormat;\r\n mode?: PathMode;\r\n}\r\n\r\nexport class RouteHighlightOptions implements IRouteHighlightOptions {\r\n routeStyle?: HighlightOptions[];\r\n startPointStyle?: HighlightOptions[];\r\n viaPointStyle?: HighlightOptions[];\r\n endPointStyle?: HighlightOptions[];\r\n stationStyle?: HighlightOptions[];\r\n\r\n pan?: boolean;\r\n cameraOptions?: IFitOptions;\r\n\r\n constructor(opts?: IRouteHighlightOptions) {\r\n this.routeStyle = opts && opts.routeStyle != undefined ? opts.routeStyle : [new LineOptions({\r\n lineColor: '#59A0DD',\r\n lineOpacity: 0.8\r\n })];\r\n\r\n this.startPointStyle = opts && opts.startPointStyle != undefined ? opts.startPointStyle : [new CircleOptions({\r\n color: '#FFFFFF',\r\n radius: 5,\r\n outlineColor: '#000000',\r\n outlineWidth: 2\r\n })];\r\n\r\n this.viaPointStyle = opts && opts.viaPointStyle != undefined ? opts.viaPointStyle : this.startPointStyle;\r\n\r\n this.endPointStyle = opts && opts.endPointStyle != undefined ? opts.endPointStyle : [\r\n new CircleOptions({\r\n color: '#FFFFFF',\r\n radius: 5,\r\n outlineColor: '#000000',\r\n outlineWidth: 2\r\n }),\r\n new CircleOptions({\r\n color: '#000000',\r\n outlineWidth: 0,\r\n radius: 3\r\n })\r\n ];\r\n\r\n this.stationStyle = opts && opts.stationStyle != undefined ? opts.stationStyle : [new CircleOptions({\r\n color: '#59A0DD',\r\n radius: 5,\r\n outlineWidth: 2,\r\n outlineColor: '#FFFFFF'\r\n })];\r\n\r\n this.pan = opts && opts.pan != undefined ? opts.pan : false;\r\n this.cameraOptions = opts && opts.cameraOptions != undefined ? opts.cameraOptions : undefined;\r\n }\r\n\r\n public static fromGeoJson(geoJson: any): RouteHighlightOptions {\r\n const routeStyles: HighlightOptions[] = [];\r\n if (geoJson.routeStyle)\r\n geoJson.routeStyle.forEach(r => routeStyles.push(HighlightOptions.fromGeoJson(r)));\r\n\r\n const startPointStyles: HighlightOptions[] = [];\r\n if (geoJson.startPointStyle)\r\n geoJson.startPointStyle.forEach(r => startPointStyles.push(HighlightOptions.fromGeoJson(r)));\r\n\r\n const viaPointStyles: HighlightOptions[] = [];\r\n if (geoJson.viaPointStyle)\r\n geoJson.viaPointStyle.forEach(r => viaPointStyles.push(HighlightOptions.fromGeoJson(r)));\r\n\r\n const endPointStyles: HighlightOptions[] = [];\r\n if (geoJson.endPointStyle)\r\n geoJson.endPointStyle.forEach(r => endPointStyles.push(HighlightOptions.fromGeoJson(r)));\r\n\r\n const stationStyles: HighlightOptions[] = [];\r\n if (geoJson.stationStyle)\r\n geoJson.stationStyle.forEach(r => stationStyles.push(HighlightOptions.fromGeoJson(r)));\r\n\r\n return new RouteHighlightOptions({\r\n routeStyle: routeStyles.length > 0 ? routeStyles : null,\r\n startPointStyle: startPointStyles.length > 0 ? startPointStyles : null,\r\n viaPointStyle: viaPointStyles.length > 0 ? viaPointStyles : null,\r\n endPointStyle: endPointStyles.length > 0 ? endPointStyles : null,\r\n stationStyle: stationStyles.length > 0 ? stationStyles : null,\r\n cameraOptions: geoJson.cameraOptions\r\n });\r\n }\r\n}\r\n\r\nexport interface IRouteHighlightOptions {\r\n routeStyle?: HighlightOptions[];\r\n startPointStyle?: HighlightOptions[];\r\n viaPointStyle?: HighlightOptions[];\r\n endPointStyle?: HighlightOptions[];\r\n stationStyle?: HighlightOptions[];\r\n\r\n pan?: boolean;\r\n cameraOptions?: IFitOptions;\r\n}\r\n\r\nexport class RoutingServiceOptions implements IRoutingServiceOptions {\r\n url: string;\r\n urlv1: string;\r\n urlMultiple: string;\r\n urlRouteStatus: string;\r\n projection?: string;\r\n requestsTimeoutMs?: number;\r\n\r\n constructor(opts?: IRoutingServiceOptions) {\r\n this.url = opts && opts.url != undefined ? opts.url : undefined;\r\n this.urlv1 = opts && opts.urlv1 != undefined ? opts.urlv1 : undefined;\r\n this.urlMultiple = opts && opts.urlMultiple != undefined ? opts.urlMultiple : undefined;\r\n this.urlRouteStatus = opts && opts.urlRouteStatus != undefined ? opts.urlRouteStatus : undefined;\r\n this.projection = opts && opts.projection != undefined ? opts.projection : 'EPSG:3912;+title=y/x:D48/GK +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=bessel +towgs84=426.9,142.6,460.1,4.91,4.49,-12.42,17.1 +units=m +no_defs';\r\n this.requestsTimeoutMs = opts && opts.requestsTimeoutMs != undefined ? opts.requestsTimeoutMs : 15000;\r\n }\r\n}\r\n\r\nexport interface IRoutingServiceOptions {\r\n url: string;\r\n urlv1: string;\r\n urlMultiple: string;\r\n urlRouteStatus: string;\r\n projection?: string;\r\n requestsTimeoutMs?: number;\r\n}\r\n\r\nexport interface Route {\r\n points: CoordinateLike[]; // EPSG:4326\r\n pointsFt?: Feature[]; // EPSG:3912\r\n route: T; // originalna pot s servisa\r\n routeSegments?: FeatureCollection; // spremenjena pot na klientu na nivo segmentov za risanje na zemljevidu\r\n}\r\n\r\nexport class RouteFeatureCollection extends FeatureCollection { }\r\n\r\n// Routing v1\r\nexport interface RouteFeatureProperties {\r\n Odsek: string;\r\n StacFrom: number;\r\n StacTo: number;\r\n RoadName: string;\r\n FunctionRoadClass: RFunctionalRoadClass;\r\n FormOfWay: RFormOfWay;\r\n EdgeId: number;\r\n EdgeFractionFrom: number;\r\n EdgeFractionTo: number;\r\n SourceDataItemFractionFrom: number;\r\n SourceDataItemFractionTo: number;\r\n SegmentIds: number[];\r\n FirstSegmentFractionFrom: number;\r\n LastSegmentFractionTo: number;\r\n RouteFractionFrom: number;\r\n RouteFractionTo: number;\r\n OptimalTTMs: number;\r\n SpeedLimitTTMs: number;\r\n JamThresholdTTMs: number;\r\n RealTTMs: number;\r\n SegmentLengthMM: number;\r\n}\r\n\r\nexport class RouteInstructionsFeatureCollection extends FeatureCollection { }\r\n\r\nexport interface RouteMetaProperties {\r\n Id: string;\r\n MapId: number;\r\n Version: string;\r\n Mode: PathMode;\r\n Length: number;\r\n OptimalTTMs: number;\r\n SpeedLimitTTMs: number;\r\n RealTTMs: number;\r\n IsDetour: boolean;\r\n Instructions: RouteInstructionsFeatureCollection;\r\n}\r\n\r\nexport interface RouteInstructionsFeatureProperties {\r\n Type: string;\r\n Odsek: string;\r\n Stacionaza: number;\r\n RouteFraction: number;\r\n Title: string;\r\n TitleTranslations: any;\r\n Length: number;\r\n Duration: number;\r\n CumulativeLength: number;\r\n CumulativeDuration: number;\r\n}\r\n\r\nexport interface RouteInstructionsMetaProperties { }\r\n\r\nexport enum PathMode {\r\n Dynamic = -1,\r\n Shortest = 0,\r\n Fastest = 1\r\n}\r\n\r\nexport enum RFunctionalRoadClass {\r\n /// \r\n /// Main road\r\n /// \r\n Frc0 = 0,\r\n /// \r\n /// First class road\r\n /// \r\n Frc1 = 1,\r\n /// \r\n /// Second class road\r\n /// \r\n Frc2 = 2,\r\n /// \r\n /// Third class road\r\n /// \r\n Frc3 = 3,\r\n /// \r\n /// Fourth class road\r\n /// \r\n Frc4 = 4,\r\n /// \r\n /// Fifth class road\r\n /// \r\n Frc5 = 5,\r\n /// \r\n /// Sixth class road\r\n /// \r\n Frc6 = 6,\r\n /// \r\n /// Other class road\r\n /// \r\n Frc7 = 7\r\n}\r\n\r\nexport enum RFormOfWay {\r\n /// \r\n /// The physical road type is unknown.\r\n /// \r\n Undefined = 0,\r\n /// \r\n /// A Motorway is defined as a road permitted for motorized vehicles only in combination with a prescribed minimum speed. It has two or more physically separated carriageways and no single level-crossings.\r\n /// \r\n Motorway = 1,\r\n /// \r\n /// A multiple carriageway is defined as a road with physically separated carriageways regardless of the number of lanes. If a road is also a motorway, it should be coded as such and not as a multiple carriageway.\r\n /// \r\n MultipleCarriageWay = 2,\r\n /// \r\n /// All roads without separate carriageways are considered as roads with a single carriageway.\r\n /// \r\n SingleCarriageWay = 3,\r\n /// \r\n /// A Roundabout is a road which forms a ring on which traffic traveling in only one direction is allowed.\r\n /// \r\n Roundabout = 4,\r\n /// \r\n /// A Traffic Square is an open area (partly) enclosed by roads which is used for non-traffic purposes and which is not a Roundabout.\r\n /// \r\n TrafficSquare = 5,\r\n /// \r\n /// A Slip Road is a road especially designed to enter or leave a line.\r\n /// \r\n SlipRoad = 6,\r\n /// \r\n /// Other.\r\n /// \r\n Other = 7\r\n}\r\n\r\n/// Routing v0\r\nexport interface RouteSimple {\r\n version: string;\r\n mode: string;\r\n translations: string;\r\n length: number;\r\n duration: number;\r\n crsCode: string;\r\n geometry: string;\r\n segments: RouteSimpleSegment;\r\n stations: RouteSimpleStation[];\r\n properties: RouteSimpleProperties;\r\n}\r\n\r\nexport class RouteSimpleStation {\r\n type: string;\r\n title: string;\r\n location: CoordinateLike;\r\n fraction: number;\r\n length: number;\r\n duration: number;\r\n cumulativeLength: number;\r\n cumulativeDuration: number;\r\n properties: any;\r\n}\r\n\r\nexport class RouteSimpleSegment {\r\n sourceId: number;\r\n roadName: string;\r\n functionalRoadClass: number;\r\n formOfWay: number;\r\n key: string;\r\n fromStation: number;\r\n toStation: number;\r\n fromFraction: number;\r\n toFraction: number;\r\n fromLength: number;\r\n toLength: number;\r\n fromDuration: number;\r\n toDuration: number;\r\n startAzimuth: number;\r\n endAzimuth: number;\r\n geometry: string; // WKT\r\n roadDescription: string;\r\n roadCategory: string;\r\n road: string;\r\n}\r\n\r\nexport class RouteSegmentProperties {\r\n SegmentId: number;\r\n OptimalTTMs: number;\r\n SpeedLimitTTMs: number;\r\n JamTresholdTTMs: number;\r\n FractionFrom: number;\r\n FractionTo: number;\r\n LengthMM: number;\r\n}\r\n\r\nexport interface RouteSimpleProperties {\r\n sloToll: number[];\r\n}\r\n\r\nexport interface RouteLegacy {\r\n ContentName: string;\r\n Data: FeatureCollection;\r\n HumanContentName: string;\r\n Icon: string;\r\n Id: string;\r\n LastModified: string;\r\n Notifications: any[];\r\n Routing: RouteLegacyRouting;\r\n Title: string;\r\n}\r\n\r\nexport interface RouteLegacyRouting {\r\n ContentName: string;\r\n Items: any[];\r\n Language: string;\r\n LineStrings: string[];\r\n PathDescription: any[];\r\n PathGeometryDescription: any[];\r\n RoadCategories: any[];\r\n RouteLength: number;\r\n RouteLengths: number[];\r\n RoutingVersion: number;\r\n Timestamp: string;\r\n TotalCost: number[];\r\n TravelTime: number;\r\n TravelTimeStr: string;\r\n TravelTimes: number[];\r\n}\r\n\r\nexport class RouteMultipleResponse {\r\n Routes: Route[];\r\n\r\n public static fromResponse(json: string, locations: CoordinateLike[]): RouteMultipleResponse {\r\n const geoJson = JSON.parse(json);\r\n const routes: Route[] = [];\r\n\r\n if (Array.isArray(geoJson.Routes)) {\r\n for (let i = 0; i < geoJson.Routes.length; i++) {\r\n const route: RouteFeatureCollection = RouteFeatureCollection.fromGeoJson(geoJson.Routes[i]);\r\n route.properties.Instructions = RouteInstructionsFeatureCollection.fromGeoJson(route.properties.Instructions);\r\n route.properties.Id = Guid.create().toString();\r\n routes.push({\r\n points: locations.slice(),\r\n route: route\r\n });\r\n }\r\n }\r\n\r\n const res = new RouteMultipleResponse();\r\n res.Routes = routes;\r\n return res;\r\n }\r\n}\r\n\r\nexport class RoutingService implements IService {\r\n\r\n public readonly type = ServiceType.Routing;\r\n public readonly name: string;\r\n\r\n public get options(): RoutingServiceOptions { return this._options; }\r\n private _options: RoutingServiceOptions;\r\n\r\n public readonly enabled: boolean = true;\r\n\r\n public constructor(name: string, options: IRoutingServiceOptions) {\r\n this.name = name;\r\n this._options = new RoutingServiceOptions(options);\r\n }\r\n\r\n public setOptions(options: IRoutingServiceOptions) {\r\n if (options)\r\n this._options = new RoutingServiceOptions(options);\r\n }\r\n\r\n public async route(locations: CoordinateLike[], options?: IRouteOptions): Promise> {\r\n if (!this._options.url)\r\n throw new Error('No \\'url\\' parameter specified in routing options.');\r\n\r\n const locs = locations.map(loc => `${loc[1]},${loc[0]}`);\r\n // const url = `${this.options.url}&format=${options.format}&loc=${locs.join(encodeURIComponent(';'))}`;\r\n const url = `${this._options.url}&format=simple&loc=${locs.join(encodeURIComponent(';'))}`;\r\n\r\n return this.routingRequest(url, (res) => {\r\n // TODO: transformiraj geometrijo iz route\r\n let response: RouteSimple = JSON.parse(res);\r\n\r\n const serviceProjection = Projection.create(this._options.projection);\r\n const points = locations.slice();\r\n // const points = locations.map(loc => {\r\n // const coord = Geometry.transform(Point.fromCoordinate(loc), options.projection, serviceProjection).getCoordinate();\r\n // return [coord.x, coord.y] as CoordinateLike;\r\n // });\r\n\r\n return {\r\n points: points,\r\n route: response\r\n };\r\n }, options);\r\n }\r\n\r\n // transforms route to legacy promet route (za PrometSiControl)\r\n public async transformRoute(route: Route, title?: string): Promise> {\r\n if (!this._options.url)\r\n throw new Error('No \\'url\\' parameter specified in routing options.');\r\n\r\n let profile = PathMode[route.route.properties.Mode].toString().toLowerCase();\r\n if (profile !== 'shortest' && profile != 'fastest')\r\n profile = 'fastest';\r\n\r\n // const url = `${this._options.url}&format=simple&loc=${locs.join(encodeURIComponent(';'))}&profile=${profile}`;\r\n const url = 'https://www.promet.si/dc/routing'; // TODO: v config\r\n return new Promise>(async (res, rej) => {\r\n try {\r\n // const points = route.pointsFt.map(x => {\r\n // const ft = x.clone();\r\n // const coords = ft.geometry.coordinates as Position;\r\n // const coordsTransformed = proj4('EPSG:4326', 'EPSG:3912', coords);\r\n // ft.geometry.coordinates = coordsTransformed;\r\n // return ft;\r\n // });\r\n \r\n const body = {\r\n typeOfRoute: profile,\r\n Points: route.route.properties.Instructions.features.filter(ft => {\r\n const type = ft.properties.Type;\r\n return type === 'instruction-start' || type === 'instruction-via' || type === 'instruction-end';\r\n }).map(ft => {\r\n return {\r\n Odsek: ft.properties.Odsek,\r\n Stacionaza: ft.properties.Stacionaza\r\n }\r\n }) // tukaj dodati Id property?\r\n };\r\n const routeStr = await this.postRequest(url, body);\r\n\r\n if (routeStr) {\r\n const r: RouteLegacy = JSON.parse(routeStr);\r\n r.Id = route.route.properties.Id || Guid.create().toString();\r\n\r\n const first = route.pointsFt[0];\r\n const last = route.pointsFt[route.pointsFt.length - 1];\r\n r.Title = title || `${first.properties.Title} - ${last.properties.Title}`;\r\n\r\n res({\r\n points: route.points.map(x => x.map(y => y)),\r\n pointsFt: route.pointsFt.map(x => x.clone()),\r\n route: r\r\n } as Route);\r\n }\r\n else\r\n rej('404');\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n })\r\n }\r\n\r\n public async routev1(locations: CoordinateLike[], options?: IRouteOptions): Promise> {\r\n if (!this._options.urlv1)\r\n throw new Error('No \\'urlv1\\' parameter specified in routing options.');\r\n\r\n options = new RouteOptions(options);\r\n const locs = locations.map(loc => `${loc[1]},${loc[0]}`);\r\n const char = this._options.urlv1.includes('?');\r\n const url = `${this._options.urlv1}${char ? '&' : '?'}loc=${locs.join(encodeURIComponent(';'))}&profile=${PathMode[options.mode].toLowerCase()}`;\r\n\r\n return this.routingRequest(url, (res) => {\r\n // TODO: transformiraj geometrijo iz route\r\n let response: RouteFeatureCollection = RouteFeatureCollection.fromGeoJson(res);\r\n response.properties.Instructions = RouteInstructionsFeatureCollection.fromGeoJson(response.properties.Instructions);\r\n response.properties.Mode = options.mode;\r\n response.properties.Id = Guid.create().toString();\r\n\r\n const serviceProjection = Projection.create(this._options.projection);\r\n const points = locations.slice();\r\n // const points = locations.map(loc => {\r\n // const coord = Geometry.transform(Point.fromCoordinate(loc), options.projection, serviceProjection).getCoordinate();\r\n // return [coord.x, coord.y] as CoordinateLike;\r\n // });\r\n\r\n return {\r\n points: points,\r\n route: response\r\n };\r\n }, options);\r\n }\r\n\r\n public async routeStatus(route: RouteFeatureCollection): Promise {\r\n return new Promise((res, rej) => {\r\n const req: RouteStatusRequestDTO = {\r\n Cache: false,\r\n CurrentSegmentIndex: 0,\r\n Route: route\r\n };\r\n\r\n const url = `${this._options.urlRouteStatus}`;\r\n this.postRequest(url, req)\r\n .then(r => {\r\n if (r) {\r\n const status = RouteStatusResponseDTO.fromJSON(r);\r\n res(status);\r\n }\r\n else\r\n res(null);\r\n })\r\n .catch(e => res(null));\r\n });\r\n }\r\n\r\n public async routeMultiple(locations: CoordinateLike[]): Promise {\r\n return new Promise((res, rej) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.timeout = this._options.requestsTimeoutMs;\r\n xhr.onload = () => {\r\n if (xhr.responseText)\r\n res(RouteMultipleResponse.fromResponse(xhr.responseText, locations));\r\n else\r\n res(null);\r\n };\r\n\r\n const url = `${this._options.urlMultiple}?loc=${locations.map(x => [x[1], x[0]]).join(encodeURIComponent(';'))}`;\r\n xhr.ontimeout = () => res(null);\r\n xhr.onerror = () => res(null);\r\n xhr.onabort = () => res(null);\r\n xhr.open('GET', url, true);\r\n xhr.send();\r\n });\r\n }\r\n\r\n private routingRequest(url: string, response: (responseText: string) => Route, options: IRouteOptions): Promise> {\r\n return new Promise>((res, rej) => {\r\n if (!url)\r\n throw new Error('No URL parameter specified in routing options.');\r\n\r\n options = new RouteOptions(options);\r\n const xhr = new XMLHttpRequest();\r\n xhr.timeout = this._options.requestsTimeoutMs;\r\n xhr.onload = () => {\r\n if (xhr.responseText)\r\n res(response(xhr.responseText));\r\n else\r\n res(null);\r\n };\r\n\r\n xhr.ontimeout = () => res(null);\r\n xhr.onerror = () => res(null);\r\n xhr.onabort = () => res(null);\r\n xhr.open('GET', url, true);\r\n xhr.send(null);\r\n });\r\n }\r\n\r\n private postRequest(url: string, body: any): Promise {\r\n return new Promise((res, rej) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.timeout = this._options.requestsTimeoutMs;\r\n xhr.onload = () => {\r\n if (xhr.responseText)\r\n res(xhr.responseText);\r\n else\r\n res(null);\r\n };\r\n\r\n const json = JSON.stringify(body);\r\n xhr.ontimeout = () => res(null);\r\n xhr.onerror = () => res(null);\r\n xhr.onabort = () => res(null);\r\n xhr.open('POST', url, true);\r\n xhr.setRequestHeader('Content-Type', 'application/json');\r\n xhr.send(json);\r\n });\r\n }\r\n}\r\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _toArray from '@babel/runtime/helpers/esm/toArray';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\n\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Logger);\n\n this.init(concreteLogger, options);\n }\n\n _createClass(Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread(_objectSpread({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }), this.options));\n }\n }]);\n\n return Logger;\n}();\n\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n\n this.observers = {};\n }\n\n _createClass(EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n\n if (!listener) {\n delete this.observers[event];\n return;\n }\n\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n\n return EventEmitter;\n}();\n\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\n\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n\n if (value !== undefined) {\n return value;\n }\n\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && typeof window.navigator.userAgentData === 'undefined' && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\nvar chars = [' ', ',', '?', '!', ';'];\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n var possibleChars = chars.filter(function (c) {\n return nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0;\n });\n if (possibleChars.length === 0) return true;\n var r = new RegExp(\"(\".concat(possibleChars.map(function (c) {\n return c === '?' ? '\\\\?' : c;\n }).join('|'), \")\"));\n var matched = !r.test(key);\n\n if (!matched) {\n var ki = key.indexOf(keySeparator);\n\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n\n return matched;\n}\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction deepFind(obj, path) {\n var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n var paths = path.split(keySeparator);\n var current = obj;\n\n for (var i = 0; i < paths.length; ++i) {\n if (!current) return undefined;\n\n if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n return undefined;\n }\n\n if (current[paths[i]] === undefined) {\n var j = 2;\n var p = paths.slice(i, i + j).join(keySeparator);\n var mix = current[p];\n\n while (mix === undefined && paths.length > i + j) {\n j++;\n p = paths.slice(i, i + j).join(keySeparator);\n mix = current[p];\n }\n\n if (mix === undefined) return undefined;\n\n if (path.endsWith(p)) {\n if (typeof mix === 'string') return mix;\n if (p && typeof mix[p] === 'string') return mix[p];\n }\n\n var joinedPath = paths.slice(i + j).join(keySeparator);\n if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n return undefined;\n }\n\n current = current[paths[i]];\n }\n\n return current;\n}\n\nvar ResourceStore = function (_EventEmitter) {\n _inherits(ResourceStore, _EventEmitter);\n\n var _super = _createSuper(ResourceStore);\n\n function ResourceStore(data) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n\n _classCallCheck(this, ResourceStore);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.data = data || {};\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n if (_this.options.ignoreJSONStructure === undefined) {\n _this.options.ignoreJSONStructure = true;\n }\n\n return _this;\n }\n\n _createClass(ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n\n var result = getPath(this.data, path);\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = this.options.keySeparator;\n if (keySeparator === undefined) keySeparator = '.';\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread$1(_objectSpread$1({}, pack), resources);\n }\n\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread$1(_objectSpread$1({}, {}), this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"hasLanguageSomeTranslations\",\n value: function hasLanguageSomeTranslations(lng) {\n var data = this.getDataByLanguage(lng);\n var n = data && Object.keys(data) || [];\n return !!n.find(function (v) {\n return data[v] && Object.keys(data[v]).length > 0;\n });\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n\n return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$1() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar checkedLoadedFor = {};\n\nvar Translator = function (_EventEmitter) {\n _inherits(Translator, _EventEmitter);\n\n var _super = _createSuper$1(Translator);\n\n function Translator(services) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Translator);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n\n _createClass(Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n\n if (key === undefined || key === null) {\n return false;\n }\n\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS || [];\n var wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n var seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n var m = key.match(this.interpolator.nestingRegexp);\n\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n\n if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n\n if (returnDetails) {\n resolved.res = \"\".concat(namespace).concat(nsSeparator).concat(key);\n return resolved;\n }\n\n return \"\".concat(namespace).concat(nsSeparator).concat(key);\n }\n\n if (returnDetails) {\n resolved.res = key;\n return resolved;\n }\n\n return key;\n }\n\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n\n var r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread$2(_objectSpread$2({}, options), {}, {\n ns: namespaces\n })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n\n if (returnDetails) {\n resolved.res = r;\n return resolved;\n }\n\n return r;\n }\n\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy[m] = this.translate(deepKey, _objectSpread$2(_objectSpread$2({}, options), {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var hasDefaultValue = Translator.hasDefaultValue(options);\n var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n\n var missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n var resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread$2(_objectSpread$2({}, options), {}, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n\n var send = function send(l, k, specificDefaultValue) {\n var defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n\n _this2.emit('missingKey', l, namespace, k, res);\n };\n\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (language) {\n _this2.pluralResolver.getSuffixes(language, options).forEach(function (suffix) {\n send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n\n if (returnDetails) {\n resolved.res = res;\n return resolved;\n }\n\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, _objectSpread$2(_objectSpread$2({}, this.options.interpolation.defaultVariables), options), resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread$2(_objectSpread$2({}, options), {\n interpolation: _objectSpread$2(_objectSpread$2({}, this.options.interpolation), options.interpolation)\n }));\n var skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n var nestBef;\n\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread$2(_objectSpread$2({}, this.options.interpolation.defaultVariables), data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n\n return null;\n }\n\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread$2({\n i18nResolved: resolved\n }, options) : options, this);\n }\n\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n\n var extracted = _this4.extractFromKey(k, options);\n\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n\n var needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && _this4.pluralResolver.shouldUseIntlApi();\n\n var needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKeys = [key];\n\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count, options);\n var zeroSuffix = '_zero';\n\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n\n if (needsContextHandling) {\n var contextKey = \"\".concat(key).concat(_this4.options.contextSeparator).concat(options.context);\n finalKeys.push(contextKey);\n\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n\n var possibleKey;\n\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }], [{\n key: \"hasDefaultValue\",\n value: function hasDefaultValue(options) {\n var prefix = 'defaultValue';\n\n for (var option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n\n return false;\n }\n }]);\n\n return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck(this, LanguageUtil);\n\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n\n _createClass(LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n\n return p.join('-');\n }\n\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n\n var cleanedLng = _this.formatLanguageCode(code);\n\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n\n var lngOnly = _this.getLanguagePartFromCode(code);\n\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n\n var addCode = function addCode(c) {\n if (!c) return;\n\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n\n return LanguageUtil;\n}();\n\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nvar deprecatedJsonVersions = ['v1', 'v2', 'v3'];\nvar suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\n\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\n\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, PluralResolver);\n\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n\n if ((!this.options.compatibilityJSON || this.options.compatibilityJSON === 'v4') && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n\n this.rules = createRules();\n }\n\n _createClass(PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(code, {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (_unused) {\n return;\n }\n }\n\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(function (suffix) {\n return \"\".concat(key).concat(suffix);\n });\n }\n }, {\n key: \"getSuffixes\",\n value: function getSuffixes(code) {\n var _this = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n\n if (!rule) {\n return [];\n }\n\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort(function (pluralCategory1, pluralCategory2) {\n return suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2];\n }).map(function (pluralCategory) {\n return \"\".concat(_this.options.prepend).concat(pluralCategory);\n });\n }\n\n return rule.numbers.map(function (number) {\n return _this.getSuffix(code, number, options);\n });\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var rule = this.getRule(code, options);\n\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return \"\".concat(this.options.prepend).concat(rule.select(count));\n }\n\n return this.getSuffixRetroCompatible(rule, count);\n }\n\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }, {\n key: \"getSuffixRetroCompatible\",\n value: function getSuffixRetroCompatible(rule, count) {\n var _this2 = this;\n\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n }, {\n key: \"shouldUseIntlApi\",\n value: function shouldUseIntlApi() {\n return !deprecatedJsonVersions.includes(this.options.compatibilityJSON);\n }\n }]);\n\n return PluralResolver;\n}();\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$3(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Interpolator);\n\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n\n this.init(options);\n }\n\n _createClass(Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = getPathWithDefaults(data, defaultData, key);\n return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: key\n })) : path;\n }\n\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: k\n }));\n };\n\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n\n while (match = todo.regex.exec(str)) {\n var matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && options.hasOwnProperty(matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(matchedVar, \" for interpolating \").concat(str));\n\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n\n var safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n\n replaces++;\n\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n\n var clonedOptions = _objectSpread$3({}, options);\n\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n optionsString = optionsString.replace(/'/g, '\"');\n\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread$3(_objectSpread$3({}, inheritedOptions), clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n\n delete clonedOptions.defaultValue;\n return key;\n }\n\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n var doReduce = false;\n\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, _objectSpread$3(_objectSpread$3({}, options), {}, {\n interpolationkey: match[1].trim()\n }));\n }, value.trim());\n }\n\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n\n return str;\n }\n }]);\n\n return Interpolator;\n}();\n\nfunction ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$4(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction parseFormatStr(formatStr) {\n var formatName = formatStr.toLowerCase().trim();\n var formatOptions = {};\n\n if (formatStr.indexOf('(') > -1) {\n var p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n var optStr = p[1].substring(0, p[1].length - 1);\n\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n var opts = optStr.split(';');\n opts.forEach(function (opt) {\n if (!opt) return;\n\n var _opt$split = opt.split(':'),\n _opt$split2 = _toArray(_opt$split),\n key = _opt$split2[0],\n rest = _opt$split2.slice(1);\n\n var val = rest.join(':');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val.trim();\n if (val.trim() === 'false') formatOptions[key.trim()] = false;\n if (val.trim() === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val.trim())) formatOptions[key.trim()] = parseInt(val.trim(), 10);\n });\n }\n }\n\n return {\n formatName: formatName,\n formatOptions: formatOptions\n };\n}\n\nvar Formatter = function () {\n function Formatter() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Formatter);\n\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: function number(val, lng, options) {\n return new Intl.NumberFormat(lng, options).format(val);\n },\n currency: function currency(val, lng, options) {\n return new Intl.NumberFormat(lng, _objectSpread$4(_objectSpread$4({}, options), {}, {\n style: 'currency'\n })).format(val);\n },\n datetime: function datetime(val, lng, options) {\n return new Intl.DateTimeFormat(lng, _objectSpread$4({}, options)).format(val);\n },\n relativetime: function relativetime(val, lng, options) {\n return new Intl.RelativeTimeFormat(lng, _objectSpread$4({}, options)).format(val, options.range || 'day');\n },\n list: function list(val, lng, options) {\n return new Intl.ListFormat(lng, _objectSpread$4({}, options)).format(val);\n }\n };\n this.init(options);\n }\n\n _createClass(Formatter, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n }, {\n key: \"add\",\n value: function add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n }, {\n key: \"format\",\n value: function format(value, _format, lng, options) {\n var _this = this;\n\n var formats = _format.split(this.formatSeparator);\n\n var result = formats.reduce(function (mem, f) {\n var _parseFormatStr = parseFormatStr(f),\n formatName = _parseFormatStr.formatName,\n formatOptions = _parseFormatStr.formatOptions;\n\n if (_this.formats[formatName]) {\n var formatted = mem;\n\n try {\n var valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n var l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = _this.formats[formatName](mem, l, _objectSpread$4(_objectSpread$4(_objectSpread$4({}, formatOptions), options), valOptions));\n } catch (error) {\n _this.logger.warn(error);\n }\n\n return formatted;\n } else {\n _this.logger.warn(\"there was no format function for \".concat(formatName));\n }\n\n return mem;\n }, value);\n return result;\n }\n }]);\n\n return Formatter;\n}();\n\nfunction ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$5(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$2() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction removePending(q, name) {\n delete q.pending[name];\n q.pendingCount--;\n}\n\nvar Connector = function (_EventEmitter) {\n _inherits(Connector, _EventEmitter);\n\n var _super = _createSuper$2(Connector);\n\n function Connector(backend, store, services) {\n var _this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n _classCallCheck(this, Connector);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.waitingReads = [];\n _this.maxParallelReads = options.maxParallelReads || 10;\n _this.readingCalls = 0;\n _this.state = {};\n _this.queue = [];\n\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n\n return _this;\n }\n\n _createClass(Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n\n var toLoad = {};\n var pending = {};\n var toLoadLanguages = {};\n var toLoadNamespaces = {};\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending: pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = {};\n var loadedKeys = Object.keys(loaded[l]);\n\n if (loadedKeys.length) {\n loadedKeys.forEach(function (ns) {\n if (loadedKeys[ns] !== undefined) loaded[l][ns] = true;\n });\n }\n });\n q.done = true;\n\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 350;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng: lng,\n ns: ns,\n fcName: fcName,\n tried: tried,\n wait: wait,\n callback: callback\n });\n return;\n }\n\n this.readingCalls++;\n return this.backend[fcName](lng, ns, function (err, data) {\n if (err && data && tried < 5) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n\n _this3.readingCalls--;\n\n if (_this3.waitingReads.length > 0) {\n var next = _this3.waitingReads.shift();\n\n _this3.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n\n callback(err, data);\n });\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n\n if (key === undefined || key === null || key === '') return;\n\n if (this.backend && this.backend.create) {\n this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread$5(_objectSpread$5({}, options), {}, {\n isUpdate: isUpdate\n }));\n }\n\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n\n return Connector;\n}(EventEmitter);\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof(args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n\n if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n\n return options;\n}\n\nfunction ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$6(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct$3() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction noop() {}\n\nfunction bindMemberFunctions(inst) {\n var mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(function (mem) {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\n\nvar I18n = function (_EventEmitter) {\n _inherits(I18n, _EventEmitter);\n\n var _super = _createSuper$3(I18n);\n\n function I18n() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n _classCallCheck(this, I18n);\n\n _this = _super.call(this);\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n bindMemberFunctions(_assertThisInitialized(_this));\n\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n\n return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n }\n\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n\n return _this;\n }\n\n _createClass(I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n if (!options.defaultNS && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n\n var defOpts = get();\n this.options = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, defOpts), this.options), transformOptions(options));\n\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = _objectSpread$6(_objectSpread$6({}, defOpts.interpolation), this.options.interpolation);\n }\n\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n\n var formatter;\n\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n s.languageDetector.init(s, this.options.detection, this.options);\n }\n\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n\n return _this2;\n };\n });\n var deferred = defer();\n\n var load = function load() {\n var finish = function finish(err, t) {\n if (_this2.isInitialized && !_this2.initializedStoreOnce) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n _this2.isInitialized = true;\n if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n\n _this2.emit('initialized', _this2.options);\n\n deferred.resolve(t);\n callback(err, t);\n };\n\n if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n\n _this2.changeLanguage(_this2.options.lng, finish);\n };\n\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n\n var append = function append(lng) {\n if (!lng) return;\n\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n\n this.services.backendConnector.load(toLoad, this.options.ns, function (e) {\n if (!e && !_this3.resolvedLanguage && _this3.language) _this3.setResolvedLanguage(_this3.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n\n return this;\n }\n }, {\n key: \"setResolvedLanguage\",\n value: function setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n\n for (var li = 0; li < this.languages.length; li++) {\n var lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n\n var setLngProps = function setLngProps(l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n _this4.resolvedLanguage = undefined;\n\n _this4.setResolvedLanguage(l);\n };\n\n var done = function done(err, l) {\n if (l) {\n setLngProps(l);\n\n _this4.translator.changeLanguage(l);\n\n _this4.isLanguageChangingTo = undefined;\n\n _this4.emit('languageChanged', l);\n\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n\n var setLng = function setLng(lngs) {\n if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n\n if (l) {\n if (!_this4.language) {\n setLngProps(l);\n }\n\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n this.services.languageDetector.detect(setLng);\n } else {\n setLng(lng);\n }\n\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns, keyPrefix) {\n var _this5 = this;\n\n var fixedT = function fixedT(key, opts) {\n var options;\n\n if (_typeof(opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread$6({}, opts);\n }\n\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n var keySeparator = _this5.options.keySeparator || '.';\n var resultKey = keyPrefix ? \"\".concat(keyPrefix).concat(keySeparator).concat(key) : key;\n return _this5.t(resultKey, options);\n };\n\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n\n var lng = this.resolvedLanguage || this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n\n return loadState === -1 || loadState === 2;\n };\n\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n\n var deferred = defer();\n\n if (!this.options.ns) {\n callback && callback();\n return Promise.resolve();\n }\n\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n var mergedOptions = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, this.options), options), {\n isClone: true\n });\n\n var clone = new I18n(mergedOptions);\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread$6({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n }]);\n\n return I18n;\n}(EventEmitter);\n\n_defineProperty(I18n, \"createInstance\", function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n});\n\nvar instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nvar createInstance = instance.createInstance;\nvar init = instance.init;\nvar loadResources = instance.loadResources;\nvar reloadResources = instance.reloadResources;\nvar use = instance.use;\nvar changeLanguage = instance.changeLanguage;\nvar getFixedT = instance.getFixedT;\nvar t = instance.t;\nvar exists = instance.exists;\nvar setDefaultNamespace = instance.setDefaultNamespace;\nvar hasLoadedNamespace = instance.hasLoadedNamespace;\nvar loadNamespaces = instance.loadNamespaces;\nvar loadLanguages = instance.loadLanguages;\n\nexport default instance;\nexport { changeLanguage, createInstance, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\n\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nfunction defaults(obj) {\n each.call(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\n\nfunction addQueryString(url, params) {\n if (params && _typeof(params) === 'object') {\n var queryString = '',\n e = encodeURIComponent; // Must encode data\n\n for (var paramName in params) {\n queryString += '&' + e(paramName) + '=' + e(params[paramName]);\n }\n\n if (!queryString) {\n return url;\n }\n\n url = url + (url.indexOf('?') !== -1 ? '&' : '?') + queryString.slice(1);\n }\n\n return url;\n} // https://gist.github.com/Xeoncross/7663273\n\n\nfunction ajax(url, options, callback, data, cache) {\n if (data && _typeof(data) === 'object') {\n if (!cache) {\n data['_t'] = new Date();\n } // URL encoded form data must be in querystring format\n\n\n data = addQueryString('', data).slice(1);\n }\n\n if (options.queryStringParams) {\n url = addQueryString(url, options.queryStringParams);\n }\n\n try {\n var x;\n\n if (XMLHttpRequest) {\n x = new XMLHttpRequest();\n } else {\n x = new ActiveXObject('MSXML2.XMLHTTP.3.0');\n }\n\n x.open(data ? 'POST' : 'GET', url, 1);\n\n if (!options.crossDomain) {\n x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n\n x.withCredentials = !!options.withCredentials;\n\n if (data) {\n x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n }\n\n if (x.overrideMimeType) {\n x.overrideMimeType(\"application/json\");\n }\n\n var h = options.customHeaders;\n h = typeof h === 'function' ? h() : h;\n\n if (h) {\n for (var i in h) {\n x.setRequestHeader(i, h[i]);\n }\n }\n\n x.onreadystatechange = function () {\n x.readyState > 3 && callback && callback(x.responseText, x);\n };\n\n x.send(data);\n } catch (e) {\n console && console.log(e);\n }\n}\n\nfunction getDefaults() {\n return {\n loadPath: '/locales/{{lng}}/{{ns}}.json',\n addPath: '/locales/add/{{lng}}/{{ns}}',\n allowMultiLoading: false,\n parse: JSON.parse,\n parsePayload: function parsePayload(namespace, key, fallbackValue) {\n return _defineProperty({}, key, fallbackValue || '');\n },\n crossDomain: false,\n ajax: ajax\n };\n}\n\nvar Backend =\n/*#__PURE__*/\nfunction () {\n function Backend(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Backend);\n\n this.init(services, options);\n this.type = 'backend';\n }\n\n _createClass(Backend, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults());\n }\n }, {\n key: \"readMulti\",\n value: function readMulti(languages, namespaces, callback) {\n var loadPath = this.options.loadPath;\n\n if (typeof this.options.loadPath === 'function') {\n loadPath = this.options.loadPath(languages, namespaces);\n }\n\n var url = this.services.interpolator.interpolate(loadPath, {\n lng: languages.join('+'),\n ns: namespaces.join('+')\n });\n this.loadUrl(url, callback);\n }\n }, {\n key: \"read\",\n value: function read(language, namespace, callback) {\n var loadPath = this.options.loadPath;\n\n if (typeof this.options.loadPath === 'function') {\n loadPath = this.options.loadPath([language], [namespace]);\n }\n\n var url = this.services.interpolator.interpolate(loadPath, {\n lng: language,\n ns: namespace\n });\n this.loadUrl(url, callback);\n }\n }, {\n key: \"loadUrl\",\n value: function loadUrl(url, callback) {\n var _this = this;\n\n this.options.ajax(url, this.options, function (data, xhr) {\n if (xhr.status >= 500 && xhr.status < 600) return callback('failed loading ' + url, true\n /* retry */\n );\n if (xhr.status >= 400 && xhr.status < 500) return callback('failed loading ' + url, false\n /* no retry */\n );\n var ret, err;\n\n try {\n ret = _this.options.parse(data, url);\n } catch (e) {\n err = 'failed parsing ' + url + ' to json';\n }\n\n if (err) return callback(err, false);\n callback(null, ret);\n });\n }\n }, {\n key: \"create\",\n value: function create(languages, namespace, key, fallbackValue) {\n var _this2 = this;\n\n if (typeof languages === 'string') languages = [languages];\n var payload = this.options.parsePayload(namespace, key, fallbackValue);\n languages.forEach(function (lng) {\n var url = _this2.services.interpolator.interpolate(_this2.options.addPath, {\n lng: lng,\n ns: namespace\n });\n\n _this2.options.ajax(url, _this2.options, function (data, xhr) {//const statusCode = xhr.status.toString();\n // TODO: if statusCode === 4xx do log\n }, payload);\n });\n }\n }]);\n\n return Backend;\n}();\n\nBackend.type = 'backend';\n\nexport default Backend;\n","import i18next from 'i18next';\r\nimport jqueryI18next from 'jquery-i18next';\r\nimport XHR from 'i18next-xhr-backend';\r\n\r\nimport { IService, ServiceType } from './RM2Service';\r\nimport { Map } from '..';\r\n\r\ndeclare const $: any;\r\n\r\nexport class LocalizationServiceOptions implements ILocalizationServiceOptions {\r\n defaultLanguage: string;\r\n languageFilesPath: string;\r\n\r\n constructor(opts?: ILocalizationServiceOptions) {\r\n this.defaultLanguage = 'sl';\r\n this.languageFilesPath = 'assets/i18n';\r\n\r\n if (opts) {\r\n if (opts.defaultLanguage != undefined)\r\n this.defaultLanguage = opts.defaultLanguage;\r\n \r\n if (opts.languageFilesPath != undefined)\r\n this.languageFilesPath = opts.languageFilesPath;\r\n }\r\n }\r\n}\r\n\r\nexport interface ILocalizationServiceOptions {\r\n defaultLanguage?: string;\r\n languageFilesPath?: string;\r\n}\r\n\r\nexport class LocalizationService implements IService {\r\n private _map: Map;\r\n\r\n public readonly type = ServiceType.Localization;\r\n public readonly name: string;\r\n public readonly options: LocalizationServiceOptions;\r\n public readonly enabled: boolean = true;\r\n\r\n private readonly htmlOptionsAttribute = 'i18n-options';\r\n\r\n private loaded: boolean = false;\r\n\r\n public constructor(map: Map, options: ILocalizationServiceOptions) {\r\n this._map = map;\r\n this.options = new LocalizationServiceOptions(options);\r\n\r\n this.init();\r\n }\r\n\r\n public getLanguage(): string {\r\n return i18next.language;\r\n }\r\n\r\n public setLanguage(lang: string) {\r\n i18next.changeLanguage(lang, () => this.refresh());\r\n }\r\n\r\n private init() {\r\n const lang = localStorage.getItem('r-lang');\r\n i18next.use(XHR).init({\r\n fallbackLng: 'en',\r\n lng: lang || this.options.defaultLanguage,\r\n backend: {\r\n loadPath: `${this.options.languageFilesPath}/{{lng}}.json`\r\n }\r\n }, (err, t) => {\r\n jqueryI18next.init(i18next, $, {\r\n optionsAttr: this.htmlOptionsAttribute,\r\n useOptionsAttr: true\r\n });\r\n\r\n this.loaded = true;\r\n this.refresh();\r\n });\r\n }\r\n\r\n public refresh(element?: HTMLElement | string) {\r\n if (this.loaded) {\r\n if (element == undefined)\r\n $(this._map.getTarget()).localize();\r\n \r\n $(element).localize();\r\n }\r\n }\r\n\r\n public mark(element: HTMLElement, key: string, options?: Object) {\r\n element.setAttribute('data-i18n', key);\r\n if (options)\r\n element.setAttribute(this.htmlOptionsAttribute, options.toString());\r\n }\r\n\r\n public localizeElement(element: HTMLElement, key: string, options?: Object) {\r\n this.mark(element, key, options);\r\n this.refresh(element);\r\n }\r\n\r\n public localize(key: string): string {\r\n return i18next.t(key);\r\n }\r\n}\r\n","/******************************************************************************\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(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, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, 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\n/** @deprecated */\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\n/** @deprecated */\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 __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\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\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\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 (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, 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, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","export var COMPLETE_NOTIFICATION = (function () { return createNotification('C', undefined, undefined); })();\nexport function errorNotification(error) {\n return createNotification('E', undefined, error);\n}\nexport function nextNotification(value) {\n return createNotification('N', value, undefined);\n}\nexport function createNotification(kind, value, error) {\n return {\n kind: kind,\n value: value,\n error: error,\n };\n}\n//# sourceMappingURL=NotificationFactories.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined,\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","import * as maplibregl from 'maplibre-gl';\r\nimport proj4 from 'proj4';\r\n\r\nimport { Projection } from '../model/RM2Projection';\r\nimport { Geometry, LineString, Point } from '../model/RM2Geometry';\r\nimport { IMarkerOptions, MarkerOptions, IPolygonOptions, PolygonOptions, ILineOptions, LineOptions, IFeatureHighlightOptions, ICircleOptions, CircleOptions, IHighlightOptions, HighlightOptions, FeatureHighlightOptions, HighlightType, LineType } from './RM2HighlightOptions';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { Feature, FeatureCollection } from '../model/RM2Feature';\r\nimport { Route, RouteFeatureCollection, IRouteHighlightOptions, RouteHighlightOptions, RouteLegacy } from '../services/RM2RoutingService';\r\nimport { Map } from '../map/RM2Map';\r\nimport { Layer } from '../model/RM2Layer';\r\n\r\nexport class Highlights {\r\n private _map: Map;\r\n\r\n private readonly _highlightsSourceName = 'mb-r-highlights-source';\r\n private readonly _markerLayerName = 'mb-r-marker-layer';\r\n private readonly _polygonLayerName = 'mb-r-polygon-layer';\r\n private readonly _lineSolidLayerName = 'mb-r-line-solid-layer';\r\n private readonly _lineDottedLayerName = 'mb-r-line-dotted-layer';\r\n private readonly _lineDashedLayerName = 'mb-r-line-dashed-layer';\r\n private readonly _circleLayerName = 'mb-r-circle-layer';\r\n\r\n protected readonly rmFeatureLabel = 'rm_isFeature';\r\n\r\n public get featuresAdded(): Observable { return this._featuresAdded as Observable; }\r\n protected _featuresAdded = new Subject();\r\n\r\n public get featuresRemoved(): Observable { return this._featuresRemoved as Observable; }\r\n protected _featuresRemoved = new Subject();\r\n\r\n private routeFc: FeatureCollection;\r\n public get route(): FeatureCollection { return this.routeFc; }\r\n\r\n constructor(map: Map) {\r\n this._map = map;\r\n\r\n const src: maplibregl.GeoJSONSourceSpecification = { type: 'geojson', data: new FeatureCollection().toGeoJson() };\r\n this._map.addSource(this._highlightsSourceName, src);\r\n this.initLayers();\r\n }\r\n\r\n showMarker(geometry: Geometry, options?: IMarkerOptions) {\r\n const type = geometry.type.toLowerCase();\r\n if (type === 'point' || type == 'multipoint') {\r\n options = new MarkerOptions(options);\r\n const ft = new Feature(this.getFeaturePropertiesFromHighlightOptions(options as MarkerOptions), geometry);\r\n\r\n this.processData(ft, options);\r\n }\r\n }\r\n\r\n clearMarkers() {\r\n this.clear(item => item && item.properties && item.properties[HighlightOptions.HighlightTypePropertyName].toLowerCase() == HighlightOptions.highlightTypeToString(HighlightType.Marker) && this.isRmFeature(item) === false);\r\n }\r\n\r\n showPolygon(geometry: Geometry, options?: IPolygonOptions) {\r\n const type = geometry.type.toLowerCase();\r\n if (type === 'polygon' || type == 'multipolygon') {\r\n options = new PolygonOptions(options);\r\n const ft = new Feature(this.getFeaturePropertiesFromHighlightOptions(options as PolygonOptions), geometry);\r\n\r\n this.processData(ft, options);\r\n }\r\n }\r\n\r\n clearPolygons() {\r\n this.clear(item => item && item.properties && item.properties[HighlightOptions.HighlightTypePropertyName].toLowerCase() == HighlightOptions.highlightTypeToString(HighlightType.Polygon) && this.isRmFeature(item) === false);\r\n }\r\n\r\n showLine(geometry: Geometry, options?: ILineOptions) {\r\n const type = geometry.type.toLowerCase();\r\n if (type === 'linestring' || type === 'multilinestring') {\r\n options = new LineOptions(options);\r\n const ft = new Feature(this.getFeaturePropertiesFromHighlightOptions(options as LineOptions), geometry);\r\n\r\n this.processData(ft, options);\r\n }\r\n }\r\n\r\n clearLines() {\r\n this.clear(item => item && item.properties && item.properties[HighlightOptions.HighlightTypePropertyName].toLowerCase() == HighlightOptions.highlightTypeToString(HighlightType.Line) && this.isRmFeature(item) === false);\r\n }\r\n\r\n showCircle(geometry: Geometry, options?: ICircleOptions) {\r\n const type = geometry.type.toLowerCase();\r\n if (type === 'point' || type == 'multipoint') {\r\n options = new CircleOptions(options);\r\n const ft = new Feature(this.getFeaturePropertiesFromHighlightOptions(options as CircleOptions), geometry);\r\n\r\n this.processData(ft, options);\r\n }\r\n }\r\n\r\n clearCircles() {\r\n this.clear(item => item && item.properties && item.properties[HighlightOptions.HighlightTypePropertyName].toLowerCase() == HighlightOptions.highlightTypeToString(HighlightType.Circle) && this.isRmFeature(item) === false);\r\n }\r\n\r\n clearFeature(id: string) {\r\n const source = this.getSource();\r\n const data = source.data;\r\n let found: any;\r\n let filtered = data.features.filter((item) => {\r\n if (item.properties.id == id)\r\n found = item;\r\n\r\n return item.properties.id != id\r\n });\r\n\r\n data.features = filtered;\r\n const fc = FeatureCollection.fromMb(data);\r\n this._map.setSourceData(this._highlightsSourceName, fc);\r\n\r\n if (found)\r\n this._featuresRemoved.next(found);\r\n }\r\n\r\n setFeatureValue(ids: string | string[], key: string, value: any) {\r\n if (Array.isArray(ids)) {\r\n const source = this.getSource();\r\n const data = source.data;\r\n const indices = [];\r\n data.features.forEach((ft, i) => {\r\n if (ids.includes(ft.properties.id))\r\n indices.push(i);\r\n });\r\n\r\n indices.forEach(index => {\r\n data.features[index].properties[key] = value;\r\n // TODO: fire onFeatureChanged event\r\n });\r\n\r\n const fc = FeatureCollection.fromMb(data);\r\n this._map.setSourceData(this._highlightsSourceName, fc);\r\n }\r\n else {\r\n const id = ids as string;\r\n const source = this.getSource();\r\n const data = source.data;\r\n const i = data.features.findIndex((item) => item.properties.id == id);\r\n if (i != -1) {\r\n data.features[i].properties[key] = value;\r\n const fc = FeatureCollection.fromMb(data);\r\n this._map.setSourceData(this._highlightsSourceName, fc);\r\n // TODO: fire onFeatureChanged event\r\n }\r\n }\r\n }\r\n\r\n clearFeatures(ids?: string[]) {\r\n if (ids)\r\n this.clear(item => this.isRmFeature(item) && ids.includes(item.properties.id));\r\n else\r\n this.clear(item => this.isRmFeature(item));\r\n }\r\n\r\n getAllFeatures(): FeatureCollection {\r\n const source = this.getSource();\r\n const fts = source.data.features.filter(item => this.isRmFeature(Feature.fromMb(item))).map(item => Feature.fromGeoJson(item));\r\n return new FeatureCollection(fts);\r\n }\r\n\r\n transform(fc: FeatureCollection, source: Projection, target: Projection): FeatureCollection {\r\n // mogoče problem pri veliko Featureih?\r\n for (let i = 0; i < fc.features.length; i++) {\r\n const feat = fc.features[i];\r\n feat.geometry = Geometry.transform(feat.geometry, source, target);\r\n }\r\n\r\n fc.setCrsCode(target.crsCode);\r\n return fc;\r\n }\r\n\r\n addFeaturesToSource(ftColl: FeatureCollection) {\r\n const source = this.getSource();\r\n const data = source.data;\r\n data.features = data.features.concat(ftColl.toGeoJson().features as any);\r\n\r\n const fc = FeatureCollection.fromMb(data);\r\n this._map.setSourceData(this._highlightsSourceName, fc);\r\n }\r\n\r\n showRoutes(routes: Route[], options?: IRouteHighlightOptions) {\r\n options = new RouteHighlightOptions(options);\r\n this.clearRoute();\r\n\r\n // const data = route.route;\r\n // let fts: Feature[] = [];\r\n // const ftStyleFunc = (source: Feature[]) => {\r\n // source.forEach((ft, i) => {\r\n // let arr: HighlightOptions[];\r\n // if (i === 0)\r\n // arr = options.startPointStyle.slice();\r\n // else if (i === source.length - 1)\r\n // arr = options.endPointStyle.slice();\r\n // else\r\n // arr = options.viaPointStyle.slice();\r\n\r\n // arr.forEach(s => fts.push(new Feature(s, ft.geometry)));\r\n // });\r\n // };\r\n\r\n // if (data) {\r\n // fts = data.features.slice();\r\n // // fts.forEach(ft => ft.setProperties(options.routeStyle[0]));\r\n\r\n // // to prikaže prvo in zadnjo točno na route-i\r\n // const instructions = data.properties.Instructions;\r\n // const points = instructions.features.filter(ft => ft.properties.Type === 'instruction-start' || ft.properties.Type === 'instruction-via' || ft.properties.Type === 'instruction-end').map(x => new Feature(x.properties, x.geometry));\r\n // ftStyleFunc(points);\r\n // }\r\n\r\n // // če ni točk na poti (če je postavljena samo 1 točka) to prikaže točno tiste točke, prek katerih se je route-a query-ala\r\n // if (fts.length === 0) {\r\n // if (route.points)\r\n // ftStyleFunc(route.points.map(x => new Feature(null, Point.fromCoordinate(x))));\r\n // }\r\n\r\n\r\n\r\n\r\n\r\n var lines: Feature[] = [];\r\n var wayPoints: Feature[] = [];\r\n // var labels = new FeatureCollection();\r\n // var events = new FeatureCollection();\r\n for (var i = 0; i < routes.length; i++)\r\n {\r\n var route = routes[i];\r\n // var label = route.Label;\r\n // if (i == selected)\r\n // {\r\n // wayPoints = routes[selected].WayPoints;\r\n // events.features = routes.SelectMany(r => r.Events.features).ToList();\r\n // }\r\n\r\n // if (label.properties != null && label.geometry != null)\r\n // {\r\n // label.properties.SortKey = i;\r\n // labels.features.Add(label);\r\n // }\r\n\r\n const instructions = route.route.properties.Instructions.features.filter(ft => ft.properties.Type === 'instruction-start' || ft.properties.Type === 'instruction-via' || ft.properties.Type === 'instruction-end');\r\n instructions.forEach((x, i) => {\r\n let arr: HighlightOptions[];\r\n if (i === 0)\r\n arr = options.startPointStyle.slice();\r\n else if (i === instructions.length - 1)\r\n arr = options.endPointStyle.slice();\r\n else\r\n arr = options.viaPointStyle.slice();\r\n \r\n arr.forEach(s => wayPoints.push(new Feature(s, x.geometry)));\r\n });\r\n\r\n lines.push(...(route.routeSegments || route.route).features.slice());\r\n }\r\n\r\n // SetSourceData(RouteLineStringSource, lines);\r\n // SetSourceData(RoutePointSource, wayPoints);\r\n // SetSourceData(RouteLabelsSource, JsonConvert.SerializeObject(labels)); // TODO: brez serializacije\r\n\r\n // if (events != null && events.features.Count > 0)\r\n // {\r\n // IoC.Get().SetGroupsOpacity(MapStyle.Metadata.Groups.Select(x => x.Id), 0.5f);\r\n // SetSourceData(RouteEventSource, events);\r\n // }\r\n\r\n const src = new FeatureCollection(lines.concat(wayPoints));\r\n this._map.setSourceData(Map.routeSourceName, src);\r\n\r\n if (options.pan)\r\n this.processPan(src, new FeatureHighlightOptions({ cameraOptions: options.cameraOptions }));\r\n\r\n\r\n\r\n\r\n\r\n // const fc = new FeatureCollection(fts);\r\n // this._map.setSourceData(this.routeSourceName, fc);\r\n // this.processPan(fc, new FeatureHighlightOptions({ cameraOptions: options.cameraOptions }));\r\n }\r\n\r\n showRoute(route: Route, options?: IRouteHighlightOptions) {\r\n options = new RouteHighlightOptions(options);\r\n this.clearRoute();\r\n\r\n const data = route.route;\r\n let fts: Feature[] = [];\r\n const ftStyleFunc = (source: Feature[]) => {\r\n source.forEach((ft, i) => {\r\n let arr: HighlightOptions[];\r\n if (i === 0)\r\n arr = options.startPointStyle.slice();\r\n else if (i === source.length - 1)\r\n arr = options.endPointStyle.slice();\r\n else\r\n arr = options.viaPointStyle.slice();\r\n\r\n arr.forEach(s => fts.push(new Feature(s, ft.geometry)));\r\n });\r\n };\r\n\r\n if (data) {\r\n fts = data.features.slice();\r\n // fts.forEach(ft => ft.setProperties(options.routeStyle[0]));\r\n\r\n // to prikaže prvo in zadnjo točno na route-i\r\n const instructions = data.properties.Instructions;\r\n const points = instructions.features.filter(ft => ft.properties.Type === 'instruction-start' || ft.properties.Type === 'instruction-via' || ft.properties.Type === 'instruction-end').map(x => new Feature(x.properties, x.geometry));\r\n ftStyleFunc(points);\r\n }\r\n\r\n // če ni točk na poti (če je postavljena samo 1 točka) to prikaže točno tiste točke, prek katerih se je route-a query-ala\r\n if (fts.length === 0) {\r\n if (route.points)\r\n ftStyleFunc(route.points.map(x => new Feature(null, Point.fromCoordinate(x))));\r\n }\r\n\r\n const fc = new FeatureCollection(fts);\r\n this._map.setSourceData(Map.routeSourceName, fc);\r\n\r\n if (options.pan)\r\n this.processPan(fc, new FeatureHighlightOptions({ cameraOptions: options.cameraOptions }));\r\n // fts.forEach(ft => ft.setField('includeInIdentify', false));\r\n // this.routeFc = this.showFeatures(new FeatureCollection(fts), { cameraOptions: options.cameraOptions });\r\n }\r\n\r\n showRouteLegacy(route: RouteLegacy, options?: IRouteHighlightOptions) {\r\n options = new RouteHighlightOptions(options);\r\n this.clearRoute();\r\n\r\n let fts: Feature[] = [];\r\n \r\n // waypoints\r\n const points = route.Data.features.map(x => new Feature(x.properties, Geometry.fromGeoJson(x.geometry)));\r\n points.forEach((ft, i) => {\r\n let arr: HighlightOptions[];\r\n if (i === 0)\r\n arr = options.startPointStyle.slice();\r\n else if (i === route.Data.length - 1)\r\n arr = options.endPointStyle.slice();\r\n else\r\n arr = options.viaPointStyle.slice();\r\n\r\n arr.forEach(s => {\r\n const item = new Feature(s, ft.geometry);\r\n item.setField('includeInIdentify', false);\r\n const coords = item.geometry.getCoordinate();\r\n const coordsTransformed = proj4('EPSG:3912', this._map.projection.crsCode, coords);\r\n item.geometry.coordinates = [coordsTransformed.x, coordsTransformed.y];\r\n fts.push(item);\r\n });\r\n });\r\n\r\n // linestrings\r\n const geom = LineString.fromWkt('LINESTRING(' + route.Routing.LineStrings.join(',') + ')') as LineString;\r\n const coords = geom.coordinates.map(x => proj4('EPSG:3912', this._map.projection.crsCode, x));\r\n geom.coordinates = coords;\r\n fts.push(new Feature({\r\n Color: '#0F3C8F',\r\n includeInIdentify: false\r\n }, geom));\r\n\r\n const fc = new FeatureCollection();\r\n fc.features = fts;\r\n this._map.setSourceData(Map.routeSourceName, fc);\r\n\r\n if (options.pan)\r\n this.processPan(fc, new FeatureHighlightOptions({ cameraOptions: options.cameraOptions }));\r\n }\r\n\r\n clearRoute() {\r\n const s = this._map.getSource(Map.routeSourceName);\r\n if (s) {\r\n this._map.setSourceData(Map.routeSourceName, new FeatureCollection());\r\n }\r\n }\r\n\r\n showFeature(ft: Feature, opts?: IFeatureHighlightOptions): Feature {\r\n const options = this.processFeature(ft, opts);\r\n if (options) {\r\n this.processData(ft, options);\r\n this._featuresAdded.next([ft]);\r\n return ft;\r\n }\r\n return null;\r\n }\r\n\r\n showFeatures(fts: Feature[] | FeatureCollection, opts?: IFeatureHighlightOptions): FeatureCollection {\r\n if (Array.isArray(fts))\r\n fts = new FeatureCollection(fts);\r\n\r\n opts = new FeatureHighlightOptions(opts);\r\n for (let i = 0; i < fts.features.length; i++)\r\n this.processFeature(fts.features[i], opts);\r\n\r\n this.processData(fts, opts);\r\n this._featuresAdded.next(fts.features.slice());\r\n return fts;\r\n }\r\n\r\n clearAll() {\r\n this.clearMarkers();\r\n this.clearPolygons();\r\n this.clearLines();\r\n this.clearCircles();\r\n this.clearFeatures();\r\n }\r\n\r\n protected getFeaturePropertiesFromHighlightOptions(options: HighlightOptions, ft?: Feature): any {\r\n if (options instanceof MarkerOptions)\r\n return new MarkerOptions(options as IMarkerOptions).applyOptionsToFeatureProperties(ft);\r\n else if (options instanceof PolygonOptions)\r\n return new PolygonOptions(options as IPolygonOptions).applyOptionsToFeatureProperties(ft);\r\n else if (options instanceof LineOptions)\r\n return new LineOptions(options as ILineOptions).applyOptionsToFeatureProperties(ft);\r\n else if (options instanceof CircleOptions)\r\n return new CircleOptions(options as ICircleOptions).applyOptionsToFeatureProperties(ft);\r\n }\r\n\r\n protected processData(ft: Feature | FeatureCollection, options: IHighlightOptions) {\r\n if (ft instanceof Feature)\r\n ft = new FeatureCollection([ft]);\r\n\r\n if (options.projection) {\r\n if (options.projection.crsCode !== this._map.projection.crsCode)\r\n this.transform(ft, options.projection, this._map.projection);\r\n }\r\n else {\r\n const fcCrs = ft.getCrsCode();\r\n if (fcCrs && fcCrs !== this._map.projection.crsCode)\r\n this.transform(ft, Projection.create(fcCrs), this._map.projection);\r\n }\r\n\r\n this.processPan(ft, options);\r\n this.addFeaturesToSource(ft);\r\n }\r\n\r\n protected setAsRmFeature(ft: Feature) {\r\n ft.setField(this.rmFeatureLabel, true);\r\n }\r\n\r\n protected isRmFeature(ft: Feature): boolean {\r\n if (ft && ft.properties)\r\n return ft.getField(this.rmFeatureLabel) === true;\r\n return true;\r\n }\r\n\r\n private processFeature(ft: Feature, opts?: IFeatureHighlightOptions): IHighlightOptions {\r\n const type = ft.geometry.type.toLowerCase();\r\n this.setAsRmFeature(ft);\r\n if (type == 'point' || type == 'multipoint') {\r\n if (ft.getField(CircleOptions.CircleRadiusPropertyName) != undefined) { // TODO: na lepši način\r\n const circleOptions = new CircleOptions();\r\n circleOptions.applyFeatureHighlightOptions(opts);\r\n\r\n ft.properties = this.getFeaturePropertiesFromHighlightOptions(circleOptions, ft);\r\n return circleOptions;\r\n }\r\n else {\r\n const markerOptions = new MarkerOptions();\r\n markerOptions.applyFeatureHighlightOptions(opts);\r\n\r\n ft.properties = this.getFeaturePropertiesFromHighlightOptions(markerOptions, ft);\r\n return markerOptions;\r\n }\r\n }\r\n else if (type == 'polygon' || type == 'multipolygon') {\r\n const polygonOptions = new PolygonOptions();\r\n polygonOptions.applyFeatureHighlightOptions(opts);\r\n\r\n ft.properties = this.getFeaturePropertiesFromHighlightOptions(polygonOptions, ft);\r\n return polygonOptions;\r\n }\r\n else if (type == 'linestring' || type == 'multilinestring') {\r\n const lineOptions = new LineOptions();\r\n lineOptions.applyFeatureHighlightOptions(opts);\r\n\r\n ft.properties = this.getFeaturePropertiesFromHighlightOptions(lineOptions, ft);\r\n return lineOptions;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private clear(predicate: (item: any) => boolean = null) {\r\n const source = this.getSource();\r\n if (predicate == null)\r\n predicate = (item) => this.isRmFeature(item) === false;\r\n\r\n const filtered = source.data.features.filter((item) => predicate(Feature.fromMb(item)) === false);\r\n source.data.features = filtered;\r\n const fc = FeatureCollection.fromMb(source.data);\r\n this._map.setSourceData(this._highlightsSourceName, fc);\r\n }\r\n\r\n private getSource(): { src: maplibregl.GeoJSONSource, data: GeoJSON.FeatureCollection } {\r\n const src = this._map.getSource(this._highlightsSourceName);\r\n return { src: src as maplibregl.GeoJSONSource, data: src['_data'] };\r\n }\r\n\r\n private initLayers() {\r\n const zIndex = 0;\r\n // const style = this._map.getStyle();\r\n const metadata = this._map.metadata;\r\n let topLayer: Layer;\r\n // find the first layer that has a higher z-index\r\n if (metadata && metadata.groups) {\r\n topLayer = this._map.getLayer(l => {\r\n if (l.metadata) {\r\n const groupName = l.metadata.gid;\r\n if (groupName && groupName in metadata.groups && (metadata.groups[groupName].zIndex === -1 || metadata.groups[groupName].zIndex < zIndex))\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n\r\n const defaultPolygon = new PolygonOptions();\r\n const polygonMbLayer: maplibregl.LayerSpecification = {\r\n 'id': this._polygonLayerName,\r\n 'type': 'fill',\r\n 'source': this._highlightsSourceName,\r\n 'metadata': { includeInIdentify: true },\r\n 'layout': {\r\n // 'text-field': ['get', 'text'],\r\n // 'text-field': 'test',\r\n // 'text-font': ['Noto Sans Italic']\r\n // 'fill-sort-key': ['get', 'zindex']\r\n },\r\n 'paint': {\r\n 'fill-color': this.getProperty(PolygonOptions.FillColorPropertyName, defaultPolygon.fillColor),\r\n 'fill-opacity': this.getProperty(PolygonOptions.FillOpacityPropertyName, defaultPolygon.fillOpacity),\r\n 'fill-outline-color': this.getProperty(PolygonOptions.OutlineColorPropertyName, defaultPolygon.outlineColor)\r\n },\r\n 'filter': ['==', HighlightOptions.HighlightTypePropertyName, HighlightOptions.highlightTypeToString(HighlightType.Polygon)]\r\n };\r\n\r\n this._map.addLayer(polygonMbLayer, topLayer ? topLayer.id : null);\r\n\r\n const defaultSolidLine = new LineOptions();\r\n const solidLineMbLayer: maplibregl.LayerSpecification = {\r\n 'id': this._lineSolidLayerName,\r\n 'type': 'line',\r\n 'source': this._highlightsSourceName,\r\n 'metadata': { includeInIdentify: true },\r\n 'layout': {\r\n // 'line-join': ['get', 'lineJoin'],\r\n // 'line-cap': ['get', 'lineCap']\r\n // 'text-field': ['get', 'text'],\r\n // 'text-field': 'test',\r\n // 'text-font': ['Noto Sans Italic'],\r\n // 'line-sort-key': ['get', 'zindex'],\r\n 'line-join': 'round',\r\n 'line-cap': 'round'\r\n },\r\n 'paint': {\r\n 'line-color': this.getProperty(LineOptions.LineColorPropertyName, defaultSolidLine.lineColor),\r\n 'line-opacity': this.getProperty(LineOptions.LineOpacityPropertyName, defaultSolidLine.lineOpacity),\r\n 'line-width': this.getProperty(LineOptions.LineWidthPropertyName, defaultSolidLine.lineWidth)\r\n },\r\n 'filter': [\r\n 'all',\r\n ['==', HighlightOptions.HighlightTypePropertyName, HighlightOptions.highlightTypeToString(HighlightType.Line)],\r\n ['==', LineOptions.LineTypePropertyName, LineOptions.lineTypeToString(LineType.Solid)]\r\n ]\r\n };\r\n\r\n this._map.addLayer(solidLineMbLayer, topLayer ? topLayer.id : null);\r\n\r\n const defaultDottedLine = new LineOptions();\r\n const dottedLineMbLayer: maplibregl.LayerSpecification = {\r\n 'id': this._lineDottedLayerName,\r\n 'type': 'line',\r\n 'source': this._highlightsSourceName,\r\n 'metadata': { includeInIdentify: true },\r\n 'layout': {\r\n // 'line-join': ['get', 'lineJoin'],\r\n // 'line-cap': ['get', 'lineCap']\r\n // 'text-field': ['get', 'text'],\r\n // 'text-field': 'test',\r\n // 'text-font': ['Noto Sans Italic'],\r\n 'line-join': 'round',\r\n 'line-cap': 'round',\r\n 'line-round-limit': 0\r\n },\r\n 'paint': {\r\n 'line-color': this.getProperty(LineOptions.LineColorPropertyName, defaultDottedLine.lineColor),\r\n 'line-opacity': this.getProperty(LineOptions.LineOpacityPropertyName, defaultDottedLine.lineOpacity),\r\n 'line-width': 8,\r\n // 'line-dasharray': [0.01, 2]\r\n 'line-dasharray': [0, 2]\r\n },\r\n 'filter': [\r\n 'all',\r\n ['==', HighlightOptions.HighlightTypePropertyName, HighlightOptions.highlightTypeToString(HighlightType.Line)],\r\n ['==', LineOptions.LineTypePropertyName, LineOptions.lineTypeToString(LineType.Dotted)]\r\n ]\r\n };\r\n\r\n this._map.addLayer(dottedLineMbLayer, topLayer ? topLayer.id : null);\r\n\r\n const defaultDashedLine = new LineOptions();\r\n const dashedLineMbLayer: maplibregl.LayerSpecification = {\r\n 'id': this._lineDashedLayerName,\r\n 'type': 'line',\r\n 'source': this._highlightsSourceName,\r\n 'metadata': { includeInIdentify: true },\r\n 'layout': {\r\n // 'line-join': ['get', 'lineJoin'],\r\n // 'line-cap': ['get', 'lineCap']\r\n // 'text-field': ['get', 'text'],\r\n // 'text-field': 'test',\r\n // 'text-font': ['Noto Sans Italic'],\r\n 'line-join': 'round',\r\n 'line-cap': 'round'\r\n },\r\n 'paint': {\r\n 'line-color': this.getProperty(LineOptions.LineColorPropertyName, defaultDashedLine.lineColor),\r\n 'line-opacity': this.getProperty(LineOptions.LineOpacityPropertyName, defaultDashedLine.lineOpacity),\r\n 'line-width': this.getProperty(LineOptions.LineWidthPropertyName, defaultDashedLine.lineWidth),\r\n 'line-dasharray': [2, 2]\r\n },\r\n 'filter': [\r\n 'all',\r\n ['==', HighlightOptions.HighlightTypePropertyName, HighlightOptions.highlightTypeToString(HighlightType.Line)],\r\n ['==', LineOptions.LineTypePropertyName, LineOptions.lineTypeToString(LineType.Dashed)]\r\n ]\r\n };\r\n\r\n this._map.addLayer(dashedLineMbLayer, topLayer ? topLayer.id : null);\r\n\r\n const defaultCircle = new CircleOptions();\r\n const circleMbLayer: maplibregl.LayerSpecification = {\r\n 'id': this._circleLayerName,\r\n 'type': 'circle',\r\n 'source': this._highlightsSourceName,\r\n 'metadata': { includeInIdentify: true },\r\n 'paint': {\r\n 'circle-color': this.getProperty(CircleOptions.CircleColorPropertyName, defaultCircle.color),\r\n 'circle-opacity': this.getProperty(CircleOptions.CircleOpacityPropertyName, defaultCircle.opacity),\r\n 'circle-radius': this.getProperty(CircleOptions.CircleRadiusPropertyName, defaultCircle.radius),\r\n 'circle-stroke-color': this.getProperty(CircleOptions.OutlineColorPropertyName, defaultCircle.outlineColor),\r\n 'circle-stroke-width': this.getProperty(CircleOptions.OutlineWidthPropertyName, defaultCircle.outlineWidth)\r\n },\r\n 'filter': ['==', HighlightOptions.HighlightTypePropertyName, HighlightOptions.highlightTypeToString(HighlightType.Circle)]\r\n }\r\n\r\n this._map.addLayer(circleMbLayer, topLayer ? topLayer.id : null);\r\n\r\n const defaultMarker = new MarkerOptions();\r\n const markerMbLayer: maplibregl.LayerSpecification = {\r\n 'id': this._markerLayerName,\r\n 'type': 'symbol',\r\n 'source': this._highlightsSourceName,\r\n 'metadata': { includeInIdentify: true },\r\n 'layout': {\r\n 'icon-image': this.getProperty(MarkerOptions.IconPropertyName, defaultMarker.icon),\r\n 'icon-anchor': this.getProperty(MarkerOptions.AnchorPropertyName, defaultMarker.anchor),\r\n // 'icon-offset': this.getProperty(MarkerOptions.OffsetPropertyName, defaultMarker.offset), // nekaj narobe z offset expressioni\r\n 'icon-offset': this.getProperty(MarkerOptions.OffsetPropertyName, defaultMarker.offset, true),\r\n 'icon-size': this.getProperty(MarkerOptions.SizePropertyName, defaultMarker.size),\r\n 'icon-allow-overlap': true,\r\n 'symbol-sort-key': this.getProperty(MarkerOptions.ZIndexKeyPropertyName, defaultMarker.zindex)\r\n },\r\n 'filter': ['==', HighlightOptions.HighlightTypePropertyName, HighlightOptions.highlightTypeToString(HighlightType.Marker)]\r\n };\r\n\r\n this._map.addLayer(markerMbLayer, topLayer ? topLayer.id : null);\r\n }\r\n\r\n private processPan(ft: FeatureCollection, options: IHighlightOptions) {\r\n if (options) {\r\n if (options.pan === true) {\r\n options.cameraOptions.projection = null;\r\n this._map.fitCameraToFeatures(ft, options.cameraOptions);\r\n }\r\n\r\n if ('centroid' in options)\r\n this.showMarker(options['centroid'], new MarkerOptions({ pan: false }));\r\n }\r\n }\r\n\r\n private getProperty(property: string, def: any, addLiteral?: boolean): maplibregl.ExpressionSpecificationArray {\r\n const defExpr = addLiteral ? ['literal', def] : def;\r\n return [\r\n 'case',\r\n ['all', ['has', property], ['!=', ['get', property], null]], ['get', property],\r\n defExpr\r\n ];\r\n }\r\n}\r\n","import { CoordinateLike } from '../../model/RM2Geometry';\nimport { RouteHighlightOptions, IRouteHighlightOptions } from '../../services/RM2RoutingService';\n\nexport class MapPickerControlOptions extends RouteHighlightOptions implements IRouteHighlightOptions {\n constructor(opts?: IMapPickerControlOptions) {\n super(opts);\n }\n}\n\nexport interface IMapPickerControlOptions extends IRouteHighlightOptions {\n}\n\nexport interface ILocationSelectData {\n coord: CoordinateLike;\n mouseButton: number;\n index?: number;\n}\n","import * as maplibregl from 'maplibre-gl';\r\n\r\nimport { Map } from '../../map/RM2Map';\r\nimport { MapEventArgs, RM2Event } from '../../model/RM2Event';\r\nimport { Popup } from '../../popup/RM2Popup';\r\nimport { IMapPickerControlOptions, MapPickerControlOptions, ILocationSelectData } from './RM2MapPickerControlOptions';\r\nimport { CoordinateLike, Point } from '../../model/RM2Geometry';\r\nimport { Route, RoutingService, RouteFeatureCollection } from '../../services/RM2RoutingService';\r\nimport { ServiceType } from '../../services/RM2Service';\r\nimport { LocalizationService } from '../../services/RM2LocalizationService';\r\n\r\nexport class MapPickerControl implements maplibregl.IControl {\r\n protected _map: Map;\r\n\r\n private _options: IMapPickerControlOptions;\r\n private _routingService: RoutingService;\r\n private _localizationService: LocalizationService;\r\n\r\n public enabled: boolean = true;\r\n public constructRoutes: boolean = true;\r\n public drawRoutes: boolean = true;\r\n\r\n public get onProcessingStatusChange() { return this._onProcessingStatusChange.expose(); }\r\n protected readonly _onProcessingStatusChange = new RM2Event();\r\n\r\n public get onLocationSelected() { return this._onLocationSelected.expose(); }\r\n protected readonly _onLocationSelected = new RM2Event();\r\n\r\n public get onRouteConstructed() { return this._onRouteConstructed.expose(); }\r\n protected readonly _onRouteConstructed = new RM2Event();\r\n\r\n private popupClick: Popup;\r\n private popupRemovePoint: Popup;\r\n private route: Route = { points: [], route: null };\r\n\r\n constructor(map: Map, opts?: IMapPickerControlOptions) {\r\n this._map = map;\r\n this._options = new MapPickerControlOptions(opts);\r\n\r\n this._routingService = this._map.getService(ServiceType.Routing) as RoutingService;\r\n this._localizationService = this._map.getService(ServiceType.Localization) as LocalizationService;\r\n\r\n map.onClick.subscribe(this.onMapClick);\r\n }\r\n\r\n onAdd(map: maplibregl.Map): HTMLElement {\r\n // const wrapper = document.createElement('div');\r\n // wrapper.className = 'maplibregl-ctrl maplibregl-ctrl-group';\r\n // wrapper.appendChild(this._button);\r\n\r\n return document.createElement('div');\r\n }\r\n\r\n onRemove() {\r\n // TODO: hide popup?\r\n this._map = undefined;\r\n }\r\n\r\n getDefaultPosition(): maplibregl.ControlPosition {\r\n return 'top-left';\r\n }\r\n\r\n hide() {\r\n if (this.popupClick)\r\n this.popupClick.close();\r\n \r\n if (this.popupRemovePoint)\r\n this.popupRemovePoint.close();\r\n }\r\n\r\n inject(route: Route) {\r\n this.route = route;\r\n }\r\n\r\n clear() {\r\n if (this.route) {\r\n this.route.points = [];\r\n this.route.route = null;\r\n }\r\n }\r\n\r\n private onMapClick = async (e: MapEventArgs) => {\r\n if (e.nativeEvent instanceof MouseEvent) {\r\n if (this.enabled === true) {\r\n if (e.nativeEvent.button === 0) { // LMB\r\n const found = e.features.find(ft => ft.geometry.type.toLowerCase() === 'point');\r\n if (found) {\r\n let index: number;\r\n const point = this.route.points.find((point, i) => {\r\n if (i > 0 && i < this.route.points.length - 1 && Point.fromCoordinate(point).distance(found.geometry) < 0.001) {\r\n index = i;\r\n return true;\r\n }\r\n return false;\r\n });\r\n\r\n if (point) {\r\n this.hide();\r\n\r\n const content = document.createElement('button');\r\n content.type = 'button';\r\n content.className = 'btn btn-danger';\r\n this._localizationService.localizeElement(content, 'general.remove');\r\n content.onclick = () => this.removeLocation(index);\r\n\r\n this.popupRemovePoint = this._map.openPopup(found.geometry.getCoordinate(), content, { addContainer: false, hasCloseButton: false, anchor: 'top' });\r\n }\r\n }\r\n else\r\n this._onLocationSelected.trigger({ coord: e.coordinate, mouseButton: 1 });\r\n }\r\n else if (e.nativeEvent.button === 2) { // RMB\r\n const group = document.createElement('div');\r\n group.className = 'list-group shadow';\r\n \r\n const aStart = document.createElement('a');\r\n aStart.type = 'button';\r\n aStart.className = 'list-group-item list-group-item-action';\r\n this._localizationService.localizeElement(aStart, 'rmap.rm.map-picker.set-as-start');\r\n aStart.onclick = () => this.addLocation(e.coordinate, 0, 2);\r\n group.appendChild(aStart);\r\n \r\n const aEnd = document.createElement('a');\r\n aEnd.type = 'button';\r\n aEnd.className = 'list-group-item list-group-item-action';\r\n this._localizationService.localizeElement(aEnd, this.route.points.length > 1 ? 'rmap.rm.map-picker.set-as-new-destination' : 'rmap.rm.map-picker.set-as-destination');\r\n aEnd.onclick = () => this.addLocation(e.coordinate, this.route.points.length === 0 ? 1 : this.route.points.length, 2);\r\n group.appendChild(aEnd);\r\n \r\n this.hide();\r\n this.popupClick = this._map.openPopup(e.coordinate, group, {\r\n addContainer: false,\r\n hasCloseButton: false,\r\n panOnOpen: false\r\n // cameraOptions: { relCenterX: this.getRelCenterX() }\r\n });\r\n }\r\n }\r\n }\r\n };\r\n\r\n private addLocation(coord: CoordinateLike, index: number, mouseButton: number) {\r\n this.hide();\r\n this._onLocationSelected.trigger({ coord: coord, mouseButton: mouseButton, index: index });\r\n if (this.constructRoutes) {\r\n if (index > this.route.points.length - 1)\r\n this.route.points.push(coord);\r\n else {\r\n if (this.route.points.length > 1)\r\n this.route.points.splice(index, 1, coord);\r\n else\r\n this.route.points.splice(index, 0, coord);\r\n }\r\n\r\n this.setRoute();\r\n }\r\n }\r\n\r\n private removeLocation(index: number) {\r\n this.hide();\r\n if (this.constructRoutes) {\r\n if (index > 0 && index < this.route.points.length)\r\n this.route.points.splice(index, 1);\r\n \r\n this.setRoute();\r\n }\r\n }\r\n\r\n private async setRoute() {\r\n if (this.route.points.length > 1) {\r\n this.setLoadingStatus(true);\r\n const route = await this._routingService.routev1(this.route.points.slice());\r\n this.setLoadingStatus(false);\r\n this._onRouteConstructed.trigger(route);\r\n if (route)\r\n this.route = route;\r\n else\r\n this.clear();\r\n }\r\n \r\n this.refreshRoute();\r\n }\r\n\r\n private refreshRoute() {\r\n if (this.drawRoutes === true) {\r\n if (this.route && this.route.points.length > 0)\r\n this._map.drawRoute(this.route, this._options);\r\n else\r\n this._map.clearRoute();\r\n }\r\n }\r\n\r\n private setLoadingStatus(loading: boolean) {\r\n this._onProcessingStatusChange.trigger(loading);\r\n }\r\n}\r\n","import { Projection } from '../model/RM2Projection';\n\nexport class GeolocationOptions implements IGeolocationOptions {\n projection?: Projection;\n pan?: boolean;\n rotate?: boolean;\n panIfNotInView?: boolean;\n animate?: boolean;\n isAccurate?: boolean\n showAccuracy?: boolean\n showHeading?: boolean\n minResolution?: number;\n autoZoom?: boolean;\n\n markerScale?: number;\n\n relCenterX?: number;\n relCenterY?: number;\n\n constructor(opts?: IGeolocationOptions) {\n this.pan = false;\n this.rotate = false;\n this.panIfNotInView = false;\n this.animate = false;\n this.isAccurate = true;\n this.showAccuracy = true;\n this.showHeading = true;\n this.minResolution = 1;\n this.autoZoom = true;\n this.markerScale = 1;\n\n if (opts) {\n if (opts.projection != undefined)\n this.projection = opts.projection;\n \n if (opts.pan != undefined)\n this.pan = opts.pan;\n\n if (opts.rotate != undefined)\n this.rotate = opts.rotate;\n\n if (opts.panIfNotInView != undefined)\n this.panIfNotInView = opts.panIfNotInView;\n\n if (opts.animate != undefined)\n this.animate = opts.animate;\n\n if (opts.isAccurate != undefined)\n this.isAccurate = opts.isAccurate;\n\n if (opts.showAccuracy != undefined)\n this.showAccuracy = opts.showAccuracy;\n\n if (opts.showHeading != undefined)\n this.showHeading = opts.showHeading;\n\n if (opts.minResolution != undefined)\n this.minResolution = opts.minResolution;\n\n if (opts.autoZoom != undefined)\n this.autoZoom = opts.autoZoom;\n\n if (opts.relCenterX != undefined && !isNaN(opts.relCenterX) && opts.relCenterX >= 0.00 && opts.relCenterX <= 1.00)\n this.relCenterX = opts.relCenterX;\n\n if (opts.relCenterY != undefined && !isNaN(opts.relCenterY) && opts.relCenterY >= 0.00 && opts.relCenterY <= 1.00)\n this.relCenterY = opts.relCenterY;\n\n if (opts.markerScale != undefined)\n this.markerScale = opts.markerScale;\n }\n }\n\n getPrimaryColor(): string { return this.isAccurate == true ? '#0F3C8F' : '#F0143C'; }\n getSecondaryColor(): string { return '#FFFFFF'; }\n getHeadingIconName(): string { return this.isAccurate == true ? 'geolocation-heading-accurate_B-48' : 'geolocation-heading-inaccurate_B-48'; }\n}\n\nexport interface IGeolocationOptions {\n projection?: Projection;\n pan?: boolean;\n rotate?: boolean;\n panIfNotInView?: boolean;\n animate?: boolean;\n isAccurate?: boolean;\n showAccuracy?: boolean;\n showHeading?: boolean;\n minResolution?: number;\n autoZoom?: boolean;\n\n markerScale?: number;\n\n relCenterX?: number;\n relCenterY?: number;\n}\n","import * as maplibregl from 'maplibre-gl';\r\n\r\nimport { IGeolocationOptions, GeolocationOptions } from './RM2GeolocationOptions';\r\nimport { IPanOptions } from '../model/RM2CameraChangeOptions';\r\nimport { Coordinate, Point } from '../model/RM2Geometry';\r\nimport { Map } from '../map/RM2Map';\r\nimport { FeatureCollection, Feature } from '..';\r\nimport { appendFileSync } from 'fs';\r\n\r\nexport class Geolocation {\r\n private _map: Map;\r\n\r\n private get PrimaryColorPropertyName(): string { return 'primaryColor'; }\r\n private get SecondaryColorPropertyName(): string { return 'secondaryColor'; }\r\n\r\n private get LocationMarkerScalePropertyName(): string { return 'locationMarkerScale'; }\r\n private get LocationMarkerOutlineWidthPropertyName(): string { return 'locationMarkerOutlineWidth'; }\r\n\r\n private get HeadingIconImagePropertyName(): string { return 'headingIconImage'; }\r\n private get HeadingIconScalePropertyName(): string { return 'headingIconScale'; }\r\n private get HeadingIconRotatePropertyName(): string { return 'headingIconRotate'; }\r\n\r\n private get AccuracyOutlineWidthPropertyName(): string { return 'accuracyOutlineWidth'; }\r\n private get AccuracyOutlineColorProperyName(): string { return 'accuracyOutlineColor'; }\r\n private get AccuracyOpacityPropertyName(): string { return 'accuracyOpacity'; }\r\n\r\n constructor(map: Map) {\r\n this._map = map;\r\n\r\n this.initSources();\r\n this.initLayers();\r\n }\r\n\r\n public showGeolocation(pos: RM2GeolocationPosition, opts: IGeolocationOptions) {\r\n if (pos == undefined || pos == null)\r\n return;\r\n\r\n const apos = pos as any;\r\n if (apos && apos.coords ) {\r\n if (apos.longitude === undefined) apos.longitude = apos.coords.longitude;\r\n if (apos.latitude === undefined) apos.latitude = apos.coords.latitude;\r\n if (apos.accuracy === undefined) apos.accuracy = apos.coords.accuracy;\r\n if (apos.heading === undefined) apos.heading = apos.coords.heading;\r\n }\r\n\r\n opts = new GeolocationOptions(opts);\r\n const src = this._map.getSource(this._geolocationSourceName) as maplibregl.GeoJSONSource;\r\n if (src) {\r\n this._map.setLayoutProperty(this._headingLayerName, 'visibility', opts.showHeading == true ? 'visible' : 'none');\r\n this._map.setLayoutProperty(this._accuracyLayerName, 'visibility', opts.showAccuracy == true ? 'visible' : 'none');\r\n\r\n src.setData(new FeatureCollection([this.createGeolocationFeature(pos, opts as GeolocationOptions)]).toGeoJson());\r\n this.updateAccuracyLayerRadius(pos);\r\n this.handleCamera(pos, opts);\r\n }\r\n else\r\n throw new Error('Could not find geolocation source when updating.');\r\n }\r\n\r\n public clearGeolocation() {\r\n const src = this._map.getSource(this._geolocationSourceName) as maplibregl.GeoJSONSource;\r\n if (src)\r\n src.setData(new FeatureCollection().toGeoJson());\r\n }\r\n\r\n protected isPositionInsideMap(pos: RM2GeolocationPosition) {\r\n const bounds: maplibregl.LngLatBounds = this._map.getBounds();\r\n const lng = pos.longitude;\r\n const lat = pos.latitude;\r\n\r\n return lng < bounds.getEast() && lat < bounds.getNorth() && lng > bounds.getWest() && lat > bounds.getSouth();\r\n }\r\n\r\n private createGeolocationFeature(pos: RM2GeolocationPosition, opts?: GeolocationOptions): Feature {\r\n const ft = new Feature();\r\n ft.properties = { };\r\n if (pos == null || pos == undefined)\r\n return ft;\r\n \r\n ft.geometry = Point.fromCoordinate(Coordinate.fromOrdinates([pos.longitude, pos.latitude]));\r\n if (opts == null || opts == undefined)\r\n opts = new GeolocationOptions();\r\n\r\n ft.properties[this.PrimaryColorPropertyName] = opts.getPrimaryColor();\r\n ft.properties[this.SecondaryColorPropertyName] = opts.getSecondaryColor();\r\n\r\n ft.properties[this.LocationMarkerScalePropertyName] = opts.markerScale;\r\n ft.properties[this.LocationMarkerOutlineWidthPropertyName] = 1;\r\n\r\n ft.properties[this.HeadingIconImagePropertyName] = opts.getHeadingIconName();\r\n ft.properties[this.HeadingIconScalePropertyName] = opts.markerScale;\r\n ft.properties[this.HeadingIconRotatePropertyName] = pos.heading;\r\n\r\n ft.properties[this.AccuracyOutlineWidthPropertyName] = 1;\r\n ft.properties[this.AccuracyOutlineColorProperyName] = opts.getSecondaryColor();\r\n ft.properties[this.AccuracyOpacityPropertyName] = 0.15;\r\n\r\n return ft;\r\n }\r\n\r\n private updateAccuracyLayerRadius(pos: RM2GeolocationPosition) {\r\n const accuracyLayer = this._map.getLayer(this._accuracyLayerName) as maplibregl.LayerSpecification;\r\n if (accuracyLayer) {\r\n this._map.setPaintProperty(this._accuracyLayerName, 'circle-radius', {\r\n stops: [\r\n [0, 0],\r\n [20, this.metersToPixelsAtMaxZoom(pos.accuracy, pos.latitude)]\r\n ],\r\n base: 2\r\n });\r\n }\r\n }\r\n\r\n private metersToPixelsAtMaxZoom = (meters: number, latitude: number): number => meters / 0.075 / Math.cos(latitude * Math.PI / 180);\r\n\r\n protected handleCamera(pos: RM2GeolocationPosition, opts: IGeolocationOptions) {\r\n let rotateTo = this._map.getView().bearing;\r\n if (opts.rotate && pos.heading !== undefined && pos.heading != null) rotateTo = pos.heading;\r\n\r\n const panOptions: IPanOptions = {\r\n zoom: null,\r\n projection: opts.projection,\r\n animate: opts.animate,\r\n relCenterX: opts.relCenterX,\r\n relCenterY: opts.relCenterY,\r\n bearing: rotateTo\r\n };\r\n\r\n const panCoord = Coordinate.fromOrdinates([pos.longitude, pos.latitude]);\r\n if (opts.pan)\r\n this._map.pan(panCoord, panOptions);\r\n else {\r\n if (opts.panIfNotInView && !this.isPositionInsideMap(pos))\r\n this._map.pan(panCoord, panOptions);\r\n else\r\n this._map.rotate(rotateTo);\r\n }\r\n }\r\n\r\n private readonly _geolocationSourceName: string = 'mb-r-geolocation-source';\r\n private readonly _accuracyLayerName: string = 'mb-r-geolocation-accuracy';\r\n private readonly _markerInnerCircleLayerName: string = 'mb-r-geolocation-marker-inner';\r\n private readonly _markerOuterCircleLayerName: string = 'mb-r-geolocation-marker-outer';\r\n private readonly _headingLayerName: string = 'mb-r-geolocation-heading';\r\n private initSources() {\r\n if (this._map.getSource(this._geolocationSourceName) == undefined)\r\n this._map.addSource(this._geolocationSourceName, { type: 'geojson', data: new FeatureCollection().toGeoJson() });\r\n }\r\n\r\n private initLayers() {\r\n if (this._map.getLayer(this._accuracyLayerName) == undefined) {\r\n const mbLayer: maplibregl.LayerSpecification = {\r\n 'id': this._accuracyLayerName,\r\n 'type': 'circle',\r\n 'source': this._geolocationSourceName,\r\n 'paint': {\r\n 'circle-color': ['get', this.PrimaryColorPropertyName],\r\n 'circle-opacity': ['get', this.AccuracyOpacityPropertyName],\r\n 'circle-stroke-width': ['get', this.AccuracyOutlineWidthPropertyName],\r\n 'circle-stroke-color': ['get', this.AccuracyOutlineColorProperyName],\r\n 'circle-pitch-scale': 'map',\r\n 'circle-pitch-alignment': 'map'\r\n }\r\n };\r\n\r\n this._map.addLayer(mbLayer);\r\n }\r\n\r\n if (this._map.getLayer(this._markerOuterCircleLayerName) == undefined) {\r\n const mbLayer: maplibregl.LayerSpecification = {\r\n 'id': this._markerOuterCircleLayerName,\r\n 'type': 'circle',\r\n 'source': this._geolocationSourceName,\r\n 'paint': {\r\n 'circle-color': ['get', this.SecondaryColorPropertyName],\r\n 'circle-radius': ['*', ['literal', 10], ['get', this.LocationMarkerScalePropertyName]],\r\n 'circle-stroke-width': 1,\r\n 'circle-stroke-color': ['get', this.PrimaryColorPropertyName],\r\n 'circle-pitch-scale': 'map',\r\n 'circle-pitch-alignment': 'map'\r\n }\r\n };\r\n\r\n this._map.addLayer(mbLayer);\r\n }\r\n\r\n if (this._map.getLayer(this._markerInnerCircleLayerName) == undefined) {\r\n const mbLayer: maplibregl.LayerSpecification = {\r\n 'id': this._markerInnerCircleLayerName,\r\n 'type': 'circle',\r\n 'source': this._geolocationSourceName,\r\n 'paint': {\r\n 'circle-color': ['get', this.PrimaryColorPropertyName],\r\n 'circle-radius': ['*', ['literal', 7], ['get', this.LocationMarkerScalePropertyName]],\r\n 'circle-pitch-scale': 'map',\r\n 'circle-pitch-alignment': 'map'\r\n }\r\n };\r\n\r\n this._map.addLayer(mbLayer);\r\n }\r\n\r\n if (this._map.getLayer(this._headingLayerName) == undefined) {\r\n const mbLayer: maplibregl.LayerSpecification = {\r\n 'id': this._headingLayerName,\r\n 'type': 'symbol',\r\n 'source': this._geolocationSourceName,\r\n 'layout': {\r\n 'icon-image': ['get', this.HeadingIconImagePropertyName],\r\n 'icon-size': ['*', ['literal', 0.5], ['get', this.HeadingIconScalePropertyName]],\r\n 'icon-rotate': ['get', this.HeadingIconRotatePropertyName],\r\n 'icon-anchor': 'center',\r\n 'icon-allow-overlap': true,\r\n 'icon-pitch-alignment': 'map',\r\n 'icon-rotation-alignment': 'map'\r\n }\r\n };\r\n\r\n this._map.addLayer(mbLayer);\r\n }\r\n }\r\n}\r\n\r\nexport class RM2GeolocationPosition {\r\n longitude: number;\r\n latitude: number;\r\n accuracy: number;\r\n heading: number;\r\n}\r\n","export class LayerGroup implements ILayerGroup {\r\n id: string;\r\n title: string;\r\n icon: string;\r\n iconClass: string;\r\n children: LayerGroup[];\r\n visible: boolean;\r\n uiVisible: boolean;\r\n sequenceMode: 'choice' | 'checkbox';\r\n uiGroupExpandable: boolean;\r\n uiGroupHeaderVisible: boolean;\r\n uiGroupAlwaysOpen: boolean;\r\n\r\n private readonly _parent: LayerGroup;\r\n\r\n constructor(group?: ILayerGroup, parent?: LayerGroup) {\r\n if (parent != undefined)\r\n this._parent = parent;\r\n\r\n this.visible = true;\r\n this.uiVisible = true;\r\n if (group) {\r\n if (group.id != undefined)\r\n this.id = group.id;\r\n\r\n if (group.title != undefined)\r\n this.title = group.title;\r\n\r\n if (group.icon != undefined)\r\n this.icon = group.icon;\r\n\r\n\r\n if (group.iconClass != undefined)\r\n this.iconClass = group.iconClass;\r\n\r\n if (group.children != undefined) {\r\n this.children = [];\r\n group.children.forEach(c => this.children.push(new LayerGroup(c, this)));\r\n }\r\n\r\n if (group.visible != undefined)\r\n this.visible = group.visible;\r\n\r\n if (group.sequenceMode != undefined)\r\n this.sequenceMode = group.sequenceMode;\r\n\r\n if (group.uiGroupExpandable != undefined)\r\n this.uiGroupExpandable = group.uiGroupExpandable;\r\n\r\n if (group.uiGroupHeaderVisible != undefined)\r\n this.uiGroupHeaderVisible = group.uiGroupHeaderVisible;\r\n\r\n if (group.uiGroupAlwaysOpen != undefined)\r\n this.uiGroupAlwaysOpen = group.uiGroupAlwaysOpen;\r\n }\r\n }\r\n\r\n getParent(): LayerGroup { return this._parent; }\r\n}\r\n\r\nexport interface ILayerGroup {\r\n id: string;\r\n title: string;\r\n icon: string;\r\n iconClass: string;\r\n children: LayerGroup[];\r\n visible: boolean;\r\n sequenceMode: 'choice' | 'checkbox';\r\n uiGroupExpandable: boolean;\r\n uiGroupHeaderVisible: boolean;\r\n uiGroupAlwaysOpen: boolean;\r\n}\r\n","import * as maplibregl from 'maplibre-gl';\r\n\r\nimport { ServiceType } from '../../services/RM2Service';\r\nimport { LocalizationService } from '../../services/RM2LocalizationService';\r\nimport { Map, PersistedVisibility } from '../../map/RM2Map';\r\nimport { LayerGroup, ILayerGroup } from '../../model/style-metadata/RM2LayerGroup';\r\nimport { Layer } from '../..';\r\n\r\nexport class LegendOptions {\r\n groups: LegendGroupOptions[];\r\n\r\n public getGroupData(id: string): LegendGroupOptions {\r\n return this.groups.find(e => e.sid == id.substring(id.length - e.sid.length));\r\n }\r\n}\r\n\r\nexport class LegendGroupOptions {\r\n sid: string;\r\n layers: LegendLayerOptions[];\r\n}\r\n\r\nexport class LegendLayerOptions {\r\n title: string;\r\n color: string;\r\n}\r\n\r\nexport class LegendControl implements maplibregl.IControl {\r\n private _map: Map;\r\n\r\n private _button: HTMLButtonElement;\r\n private _panel: HTMLDivElement;\r\n\r\n private _localizationService: LocalizationService;\r\n\r\n private hoveringCheckbox: boolean = false;\r\n private layerCheckboxes: HTMLInputElement[] = [];\r\n private getLayerCheckboxId(layerId: string): string { return `rm2-legend-layer-checkbox-${layerId}`; }\r\n private getGroupCheckboxId(layerId: string): string { return `rm2-legend-group-checkbox-${layerId}`; }\r\n\r\n constructor(map: Map, opts: LegendOptions) {\r\n this._map = map;\r\n\r\n this._localizationService = this._map.getService(ServiceType.Localization) as LocalizationService;\r\n\r\n this._button = this.createButton();\r\n this._panel = this.createPanel();\r\n\r\n this._map.onLayerVisibilityChanged.subscribe((l: Layer) => this.onLayerVisibilityChanged(l));\r\n this._map.onGroupVisibilityChanged.subscribe((l: LayerGroup) => this.onGroupVisibilityChanged(l));\r\n }\r\n\r\n onAdd(map: maplibregl.Map): HTMLElement {\r\n const wrapper = document.createElement('div');\r\n wrapper.className = 'mapboxgl-ctrl mapboxgl-ctrl-group';\r\n wrapper.appendChild(this._button);\r\n \r\n return wrapper;\r\n }\r\n\r\n onRemove() {\r\n this._button.parentNode.removeChild(this._button);\r\n if (this._panel.parentNode)\r\n this._panel.parentNode.removeChild(this._panel);\r\n \r\n this._map = undefined;\r\n }\r\n\r\n getDefaultPosition():maplibregl.ControlPosition {\r\n return 'top-right';\r\n }\r\n\r\n public open() {\r\n this.layerCheckboxes = [];\r\n const content = this.createLegend();\r\n this._panel.appendChild(content);\r\n\r\n this._button.parentNode.parentNode.appendChild(this._panel);\r\n\r\n this.resizePanel();\r\n window.addEventListener('resize', this.resizePanel)\r\n }\r\n\r\n public close() {\r\n if (this._panel) {\r\n while (this._panel.firstChild)\r\n this._panel.removeChild(this._panel.firstChild);\r\n \r\n if (this._panel.parentNode)\r\n this._panel.parentNode.removeChild(this._panel);\r\n }\r\n \r\n window.removeEventListener('resize', this.resizePanel);\r\n }\r\n\r\n private createButton(): HTMLButtonElement {\r\n const button = document.createElement('button');\r\n button.type = 'button'; // da se page ne refresha\r\n button.appendChild(document.createTextNode('≡'));\r\n button.onclick = () => this.open();\r\n\r\n return button;\r\n }\r\n\r\n private createPanel(): HTMLDivElement {\r\n const panel = document.createElement('div');\r\n panel.className = 'rm2-legend-panel rm2-map-controls-panel rounded p-2';\r\n\r\n // const closer = document.createElement('div');\r\n // closer.className = 'p-2 rm2-legend-panel-closer';\r\n // const i = document.createElement('i');\r\n // i.className = 'fa fa-times';\r\n // closer.appendChild(i);\r\n // closer.onclick = () => this.close();\r\n // panel.appendChild(closer);\r\n\r\n return panel;\r\n }\r\n\r\n // TODO: check, če se je višina sploh spremenila? base class za vse kontrole, ki se morajo spremeniti ob resizu windowa?\r\n private resizePanel = () => {\r\n const height = this._map.getSize()[1];\r\n this._panel.style.maxHeight = `CALC(${height}px - 1em)`;\r\n };\r\n\r\n private createLegend(groups?: LayerGroup[]): HTMLDivElement {\r\n if (groups == undefined) {\r\n var metadata = this._map.metadata;\r\n if (metadata && metadata.groups)\r\n groups = metadata.groups.filter(g => g.id && g.uiVisible !== false);\r\n }\r\n\r\n const content = document.createElement('div');\r\n groups.forEach(g => {\r\n const gid = g.id;\r\n const elementalLayersInGroup = this._map.getLayers(l => l.metadata && l.metadata.gid === gid && l.metadata.uiVisible !== false);\r\n\r\n switch (g.sequenceMode) {\r\n case 'choice': // radio\r\n // if (layersInGroup.length > 0) {\r\n // const listGroup = document.createElement('div');\r\n // listGroup.className = 'list-group';\r\n // layersInGroup.forEach(c => {\r\n // const listItem = document.createElement('a');\r\n // listItem.type = 'button';\r\n // listItem.className = 'list-group-item list-group-item-action d-flex w-100 p-2 align-items-center';\r\n // const listItemTitle = document.createElement('span');\r\n // // if (c.metadata.title)\r\n // // this._localizationService.localizeElement(listItemTitle, c.metadata.title);\r\n // listItemTitle.innerText = c.id;\r\n // listItem.appendChild(listItemTitle);\r\n // const listItemImg = document.createElement('img');\r\n // listItemImg.className = 'rm2-legend-layer-icon-big ml-auto';\r\n // if (c.metadata.icon)\r\n // listItemImg.src = c.metadata.icon;\r\n // listItem.appendChild(listItemImg);\r\n \r\n // // listItem.onclick = () => this._rMap.raiseInGroupLayer(l.sid);\r\n\r\n // listGroup.appendChild(listItem);\r\n // });\r\n\r\n // content.appendChild(listGroup);\r\n // }\r\n\r\n // if (g.children && g.children.length > 0) {\r\n // if (g.uiGroupExpandable !== false || g.uiGroupAlwaysOpen === true)\r\n // content.appendChild(this.createLegend(g.children));\r\n // }\r\n\r\n const listGroup = document.createElement('div');\r\n listGroup.className = 'list-group';\r\n if (g.children && g.children.length > 0) {\r\n g.children.forEach(c => {\r\n const listItem = document.createElement('a');\r\n listItem.type = 'button';\r\n listItem.className = 'list-group-item list-group-item-action d-flex w-100 p-2 align-items-center';\r\n const listItemTitle = document.createElement('span');\r\n if (c.title)\r\n this._localizationService.localizeElement(listItemTitle, c.title);\r\n listItem.appendChild(listItemTitle);\r\n const listItemImg = document.createElement('img');\r\n listItemImg.className = 'rm2-legend-layer-icon-big ml-auto';\r\n if (c.icon)\r\n listItemImg.src = c.icon;\r\n listItem.appendChild(listItemImg);\r\n \r\n listItem.onclick = () => {\r\n const filtered = g.children.filter(child => child.id !== c.id);\r\n filtered.forEach(other => this._map.setGroupVisibility(other.id, false));\r\n this._map.setGroupVisibility(c.id, true);\r\n\r\n const persist: PersistedVisibility[] = filtered.map(x => {\r\n return {\r\n type: 'group',\r\n id: x.id,\r\n visible: false\r\n };\r\n });\r\n\r\n persist.push({\r\n type: 'group',\r\n id: c.id,\r\n visible: true\r\n });\r\n\r\n this._map.persistVisibility(persist);\r\n };\r\n\r\n listGroup.appendChild(listItem);\r\n });\r\n \r\n content.appendChild(listGroup);\r\n }\r\n\r\n break;\r\n case 'checkbox':\r\n default:\r\n const container = document.createElement('div');\r\n // if (g.parent)\r\n // container.classList.add('mt-1', 'card');\r\n\r\n if (g.uiGroupExpandable !== false) {\r\n if (elementalLayersInGroup.length <= 1) {\r\n const formGroup = this.getCheckboxHeader(g);\r\n container.classList.add('rm2-legend-transparent-border-bg', 'ml-2');\r\n formGroup.classList.add('rm2-legend-transparent-border-bg', 'card-header', 'py-2');\r\n container.appendChild(formGroup);\r\n }\r\n else {\r\n const controls = 'rm2-legend-collapse-' + g.id;\r\n const groupContent = document.createElement('div');\r\n\r\n groupContent.className = 'collapse card-body p-0';\r\n groupContent.id = controls;\r\n\r\n if (g.uiGroupHeaderVisible !== false) {\r\n groupContent.classList.add('p-2');\r\n const groupCollapse = document.createElement('a');\r\n groupCollapse.className = 'card-header rm2-legend-pointer p-1 text-black w-100 d-inline-flex justify-content-start align-items-center';\r\n\r\n const formGroup = this.getCheckboxHeader(g, false);\r\n groupCollapse.appendChild(formGroup);\r\n\r\n if (g.uiGroupAlwaysOpen !== true) {\r\n const collapse = document.createElement('div');\r\n collapse.className = 'flex-grow-1';\r\n const collapseIcon = document.createElement('i');\r\n collapseIcon.className = 'fa fa-angle-down float-right pr-2';\r\n collapse.appendChild(collapseIcon);\r\n groupCollapse.appendChild(collapse);\r\n\r\n groupCollapse.onclick = () => {\r\n if (this.hoveringCheckbox === false) {\r\n groupContent.classList.toggle('show');\r\n collapseIcon.classList.toggle('fa-angle-down');\r\n collapseIcon.classList.toggle('fa-angle-up');\r\n }\r\n };\r\n }\r\n else\r\n groupContent.classList.add('show');\r\n\r\n container.appendChild(groupCollapse);\r\n }\r\n else\r\n groupContent.classList.add('show');\r\n\r\n elementalLayersInGroup.forEach(l => {\r\n const childHeader = this.getCheckboxHeader(l);\r\n groupContent.appendChild(childHeader);\r\n });\r\n container.appendChild(groupContent);\r\n }\r\n\r\n content.appendChild(container);\r\n }\r\n else {\r\n // container.className = 'w-100 d-inline-flex justify-content-start align-items-center';\r\n container.classList.add('rm2-legend-transparent-border-bg', 'ml-2');\r\n const formGroup = this.getCheckboxHeader(g);\r\n formGroup.classList.add('rm2-legend-transparent-border-bg', 'card-header', 'py-2');\r\n container.appendChild(formGroup);\r\n\r\n content.appendChild(container);\r\n }\r\n break;\r\n }\r\n });\r\n\r\n return content;\r\n }\r\n\r\n private getCheckboxHeader(el: LayerGroup | Layer, flexGrowLabel: boolean = true): HTMLDivElement {\r\n const formGroup = document.createElement('div');\r\n formGroup.className = 'rm2-legend-pointer custom-control custom-checkbox';\r\n const checkbox = document.createElement('input');\r\n const formId = el instanceof LayerGroup ? this.getGroupCheckboxId(el.id) : this.getLayerCheckboxId(el.id);\r\n checkbox.type = 'checkbox';\r\n checkbox.className = 'rm2-legend-pointer custom-control-input';\r\n checkbox.id = formId;\r\n if (el instanceof LayerGroup)\r\n checkbox.checked = el.visible !== false;\r\n else\r\n checkbox.checked = el.metadata == null || el.metadata.visible !== false;\r\n checkbox.onmouseenter = () => this.hoveringCheckbox = true;\r\n checkbox.onmouseleave = () => this.hoveringCheckbox = false;\r\n checkbox.onchange = (e) => {\r\n const vis = (e.target as HTMLInputElement).checked;\r\n const persist: PersistedVisibility = {\r\n type: 'group',\r\n id: el.id,\r\n visible: vis\r\n };\r\n\r\n if (el instanceof LayerGroup)\r\n this._map.setGroupVisibility(el.id, vis);\r\n else {\r\n persist.type = 'layer';\r\n this._map.setLayerVisibility(el.id, vis);\r\n }\r\n\r\n this._map.persistVisibility([persist]);\r\n }\r\n this.layerCheckboxes.push(checkbox);\r\n\r\n formGroup.appendChild(checkbox);\r\n const label = document.createElement('label');\r\n label.className = 'rm2-legend-pointer custom-control-label';\r\n label.htmlFor = formId;\r\n\r\n if (flexGrowLabel === true)\r\n label.classList.add('flex-grow-1');\r\n\r\n let iconSrc: string;\r\n if (el instanceof LayerGroup)\r\n iconSrc = el.icon;\r\n else {\r\n if (el.metadata.icon)\r\n iconSrc = el.metadata.icon;\r\n }\r\n \r\n if (iconSrc) {\r\n const icon = document.createElement('img');\r\n icon.className = 'rm2-legend-layer-icon mr-2';\r\n icon.src = iconSrc;\r\n label.appendChild(icon);\r\n }\r\n\r\n const title = document.createElement('span');\r\n this._localizationService.localizeElement(title, el instanceof LayerGroup ? el.title : el.metadata.title);\r\n label.appendChild(title);\r\n formGroup.appendChild(label);\r\n\r\n return formGroup;\r\n }\r\n\r\n private onGroupVisibilityChanged(group: LayerGroup) {\r\n const id = this.getGroupCheckboxId(group.id);\r\n const found = this.layerCheckboxes.find(checkbox => checkbox.id === id);\r\n if (found)\r\n found.checked = group.visible !== false;\r\n }\r\n\r\n private onLayerVisibilityChanged(layer: Layer) {\r\n const id = this.getLayerCheckboxId(layer.id);\r\n const found = this.layerCheckboxes.find(checkbox => checkbox.id === id);\r\n if (found)\r\n found.checked = layer.metadata.visible;\r\n }\r\n}\r\n","import { __extends } from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = (function (_super) {\n __extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var intervalProvider = {\n setInterval: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = intervalProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearInterval: function (handle) {\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=intervalProvider.js.map","import { __extends } from \"tslib\";\nimport { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n if (delay === void 0) { delay = 0; }\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n intervalProvider.clearInterval(id);\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, _delay) {\n var errored = false;\n var errorValue;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype.unsubscribe = function () {\n if (!this.closed) {\n var _a = this, id = _a.id, scheduler = _a.scheduler;\n var actions = scheduler.actions;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n _super.prototype.unsubscribe.call(this);\n }\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map","export var dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar Scheduler = (function () {\n function Scheduler(schedulerActionCtor, now) {\n if (now === void 0) { now = Scheduler.now; }\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n };\n Scheduler.now = dateTimestampProvider.now;\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map","import { __extends } from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler.now; }\n var _this = _super.call(this, SchedulerAction, now) || this;\n _this.actions = [];\n _this._active = false;\n _this._scheduled = undefined;\n return _this;\n }\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this._active) {\n actions.push(action);\n return;\n }\n var error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { Feature } from '../../model/RM2Feature';\r\nimport { RouteFeatureCollection, IRouteHighlightOptions, RouteHighlightOptions, Route } from '../../services/RM2RoutingService';\r\n\r\nexport class RoutingControlOptions extends RouteHighlightOptions implements IRouteHighlightOptions {\r\n constructor(opts?: IRoutingControlOptions) {\r\n super(opts);\r\n }\r\n}\r\n\r\nexport interface IRoutingControlOptions extends IRouteHighlightOptions {\r\n}\r\n\r\nexport class RoutingInput {\r\n id: string;\r\n placeholderText: string;\r\n placeholderTextAlt: string;\r\n\r\n public set disabled(value: boolean) {\r\n this.getTarget().disabled = value;\r\n this._actionButtons.forEach(btn => btn.target.disabled = value);\r\n }\r\n\r\n private _element: HTMLInputElement;\r\n private _location: Feature;\r\n private _actionButtons: RoutingInputActionButton[] = [];\r\n\r\n constructor(id: string, placeholderText: string, placeholderTextAlt: string) {\r\n this.id = id;\r\n this.placeholderText = placeholderText;\r\n this.placeholderTextAlt = placeholderTextAlt;\r\n }\r\n\r\n public getTarget(): HTMLInputElement { return this._element; }\r\n public setTarget(target: HTMLInputElement) { this._element = target; }\r\n\r\n public getLocation(): Feature { return this._location; }\r\n public saveLocation(location: Feature) { this._location = location; }\r\n\r\n public addActionButton(button: RoutingInputActionButton) {\r\n const found = this.getActionButton(button.type);\r\n if (found)\r\n throw new Error('An action button of type \\'' + RoutingInputActionButtonType[button.type] + '\\' already exists in the routing input.');\r\n else\r\n this._actionButtons.push(button);\r\n }\r\n\r\n public getActionButton(type: RoutingInputActionButtonType) { return this._actionButtons.find(btn => btn.type === type); }\r\n}\r\n\r\nexport class RoutingInputActionButton {\r\n private _type: RoutingInputActionButtonType;\r\n public get type(): RoutingInputActionButtonType { return this._type; }\r\n\r\n private _target: HTMLButtonElement;\r\n public get target(): HTMLButtonElement { return this._target; }\r\n\r\n public get visible(): boolean { return this.target && this.target.style.display !== 'none'; };\r\n public set visible(visible: boolean) {\r\n if (this._target)\r\n this._target.style.display = visible !== false ? 'inline-block' : 'none';\r\n }\r\n\r\n constructor(type: RoutingInputActionButtonType, target: HTMLButtonElement, visible?: boolean) {\r\n this._type = type;\r\n this._target = target;\r\n\r\n if (visible != undefined)\r\n this.visible = visible;\r\n }\r\n}\r\n\r\nexport enum RoutingInputActionButtonType {\r\n MyLocation = 0,\r\n PanToLocation = 1,\r\n Clear = 2\r\n}\r\n\r\nexport class ToolbarItem {\r\n id: string;\r\n icon: string;\r\n showDisclaimer?: boolean = true;\r\n enabled?: boolean;\r\n element?: HTMLDivElement;\r\n data?: Route;\r\n}\r\n","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n return operate(function (source, subscriber) {\n var activeTask = null;\n var lastValue = null;\n var lastTime = null;\n var emit = function () {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n var targetTime = lastTime + dueTime;\n var now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = activeTask = null;\n }));\n });\n}\n//# sourceMappingURL=debounceTime.js.map","export class Utils {\r\n\r\n public static routeColor(selected: boolean) { return selected ? '#0F3C8F' : '#BBBDBF'; }\r\n public static routeOrangeColor(selected: boolean) { return selected ? '#F49E00' : '#BB9F8D'; }\r\n public static routeRedColor(selected: boolean) { return selected ? '#E2001A' : '#A57F7E'; }\r\n\r\n public static formatDistance(distance: number): string {\r\n if (distance < 1000)\r\n return `${Math.round(distance)} m`;\r\n else if (distance < 100000)\r\n return `${Math.round((distance / 1000) * 100) / 100} km`;\r\n else\r\n return `${Math.round(distance / 1000)} km`;\r\n }\r\n\r\n public static formatDuration(seconds: number): string {\r\n if (seconds < 60)\r\n return `${Math.round(seconds)}s`;\r\n else if (seconds < 3600)\r\n return `${Math.round(seconds / 60)}min`;\r\n else {\r\n const h = Math.floor(seconds / 3600);\r\n const min = Math.round((seconds - (h * 3600)) / 60);\r\n return `${h}h ${min}min`;\r\n }\r\n }\r\n}","import * as maplibregl from 'maplibre-gl';\r\n\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\nimport { FeatureCollection, Point } from '../..';\r\nimport { PaddingOptions, PanOptions } from '../../model/RM2CameraChangeOptions';\r\nimport { Coordinate, CoordinateLike } from '../../model/RM2Geometry';\r\nimport { IRoutingControlOptions, RoutingControlOptions, RoutingInput, ToolbarItem, RoutingInputActionButton, RoutingInputActionButtonType } from './RM2RoutingControlOptions';\r\nimport { MapControlType } from '../RM2MapControls';\r\nimport { MapPickerControl } from '../map-picker-control/RM2MapPickerControl';\r\nimport { ServiceType } from '../../services/RM2Service';\r\nimport { Utils } from '../../services/RM2StaticService';\r\nimport { GeocodeLocFeatureCollectionProperties, GeocodeLocFeatureProperties, GeocodeLocLocationType, IQueryOptions, NominatimService, Query_v2LocationType, Query_v2ResponseFeatureCollectionProperties, Query_v2ResponseFeatureProperties, ReverseGeocodingFeatureProperties, ReverseGeocodingProperties } from '../../services/RM2NominatimService';\r\nimport { RoutingService, RouteFeatureCollection, RouteInstructionsFeatureCollection } from '../../services/RM2RoutingService';\r\nimport { LocalizationService } from '../../services/RM2LocalizationService';\r\nimport { Map } from '../../map/RM2Map';\r\nimport { Feature } from '../../model/RM2Feature';\r\n\r\ndeclare var $: any;\r\n\r\nexport class RoutingControl implements maplibregl.IControl {\r\n protected _map: Map;\r\n \r\n private _options: RoutingControlOptions;\r\n private _routingService: RoutingService;\r\n private _nominatimService: NominatimService;\r\n private _localizationService: LocalizationService;\r\n private _mapPicker: MapPickerControl;\r\n\r\n protected _button: HTMLButtonElement;\r\n protected _panel: HTMLDivElement;\r\n protected _panelTop: HTMLDivElement;\r\n protected _panelBottom: HTMLDivElement;\r\n protected _spinner: HTMLElement;\r\n protected _message: HTMLDivElement;\r\n protected _reverseLocations: HTMLElement;\r\n protected _disclaimer: HTMLElement;\r\n protected _searchResults: HTMLUListElement;\r\n protected _toolbarContent: HTMLDivElement;\r\n protected _searchInputs: RoutingInput[] = [\r\n new RoutingInput('input-1', '[placeholder]rmap.rm.routing.enter-start', '[placeholder]rmap.rm.routing.enter-start-alt'),\r\n new RoutingInput('input-2', '[placeholder]rmap.rm.routing.enter-finish', '[placeholder]rmap.rm.routing.enter-finish-alt')\r\n ];\r\n\r\n private get searchInputIdWaitingForLocation(): number {\r\n if (this.getPanelStatus() === false)\r\n return undefined;\r\n \r\n for (let i = 0; i < this._searchInputs.length; i++) {\r\n const input = this._searchInputs[i];\r\n if (input.getLocation() == undefined)\r\n return i;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private lastFocusedInput: string;\r\n private focusedTransportationMode: ToolbarItem;\r\n private locationHighlight: Feature;\r\n private routeStationHighlight: Feature;\r\n\r\n private inputChangeDebouncing: Subject = new Subject();\r\n\r\n private searchResultsHideTimeout;\r\n private focusedSearchResult: number;\r\n // private hoveringSearchResults: boolean = false;\r\n private searchInputPlaceholder = '[placeholder]rmap.rm.routing.search-placeholder';\r\n private searchToolbarItem: ToolbarItem = {\r\n id: 'SEARCH',\r\n icon: 'fa fa-2x fa-search',\r\n showDisclaimer: false\r\n };\r\n\r\n private transportationModes: ToolbarItem[] = [\r\n // { id: 'PUBLIC', icon: 'fa fa-2x fa-bus', enabled: false },\r\n // { id: 'BICYCLE_RENT', icon: 'fa fa-2x fa-bicycle', enabled: false },\r\n // { id: 'WALK', icon: 'fa fa-2x fa-walking', enabled: false },\r\n { id: 'CAR', icon: 'fa fa-2x fa-car' }\r\n ];\r\n\r\n constructor(map: Map, opts?: IRoutingControlOptions) {\r\n this._map = map;\r\n this._options = new RoutingControlOptions(opts);\r\n\r\n this._routingService = this._map.getService(ServiceType.Routing) as RoutingService;\r\n this._nominatimService = this._map.getService(ServiceType.Nominatim) as NominatimService;\r\n this._localizationService = this._map.getService(ServiceType.Localization) as LocalizationService;\r\n\r\n this._mapPicker = this._map.getControl(MapControlType.MapPicker);\r\n if (this._mapPicker == undefined)\r\n throw new Error('Routing control requires the map picker control to be added to the map (\\'' + MapControlType.MapPicker + '\\').');\r\n\r\n this._mapPicker.drawRoutes = false;\r\n this._mapPicker.constructRoutes = false;\r\n this._mapPicker.onLocationSelected.subscribe(async (loc) => {\r\n if (this.getLoadingStatus() === false) {\r\n const geocode = async (): Promise> => {\r\n let l = null;\r\n try {\r\n l = await this.reverse(loc.coord, { pageSize: 1 });\r\n }\r\n catch {\r\n console.warn('Reverse geocoding failed - forwarding clicked coordinate.');\r\n }\r\n\r\n if (l == null || l.length === 0)\r\n l = new FeatureCollection([new Feature({ Title: `${loc.coord[0]}, ${loc.coord[1]}` })]);\r\n \r\n l.features[0].geometry = clickCoord;\r\n return l;\r\n };\r\n\r\n const clickCoord = Point.fromCoordinate(loc.coord);\r\n if (loc.mouseButton === 1 && this.getPanelStatus() === true && this.searchInputIdWaitingForLocation != undefined) { // LMB\r\n this.setLoadingStatus(true);\r\n \r\n const l = (await geocode()).first;\r\n this.setLoadingStatus(false);\r\n const found = this._searchInputs[this.searchInputIdWaitingForLocation];\r\n this.setSearchInputValue(found, l, true, false);\r\n\r\n if (this.searchInputIdWaitingForLocation == undefined)\r\n this.selectTransportationModeTab(0);\r\n }\r\n else if (loc.mouseButton === 2) { // RMB\r\n this.setLoadingStatus(true);\r\n if (this.getPanelStatus() === false)\r\n this.setPanelStatus(true);\r\n \r\n this.selectTransportationModeTab(0);\r\n const l = (await geocode()).first;\r\n this.setLoadingStatus(false);\r\n\r\n if (loc.index > this._searchInputs.length - 1) // TODO: ko bo več inputov, tukaj fix\r\n loc.index = this._searchInputs.length - 1;\r\n \r\n const found = this._searchInputs[loc.index];\r\n this.setSearchInputValue(found, l, true, false);\r\n }\r\n }\r\n });\r\n\r\n this._button = this.createButton();\r\n this._panel = this.createPanel();\r\n\r\n this.inputChangeDebouncing.pipe(debounceTime(200)).subscribe(async (e) => this.processInputChange(e));\r\n this.onSearchTabSelected();\r\n }\r\n\r\n onAdd(map: maplibregl.Map): HTMLElement {\r\n const wrapper = document.createElement('div');\r\n wrapper.className = 'mapboxgl-ctrl mapboxgl-ctrl-group';\r\n wrapper.appendChild(this._button);\r\n\r\n return wrapper;\r\n }\r\n\r\n onRemove() {\r\n this._button.parentNode.removeChild(this._button);\r\n this._panel.parentNode.removeChild(this._panel);\r\n this._map = undefined;\r\n }\r\n\r\n getDefaultPosition(): maplibregl.ControlPosition {\r\n return 'top-left';\r\n }\r\n\r\n private createButton(): HTMLButtonElement {\r\n const button = document.createElement('button');\r\n button.type = 'button';\r\n button.className = 'rm2-routing-control-main-btn';\r\n const i = document.createElement('i');\r\n i.className = 'fa fa-route';\r\n button.appendChild(i);\r\n button.onclick = () => {\r\n this.setPanelStatus(true);\r\n if (this.focusedTransportationMode && this.focusedTransportationMode.data)\r\n this.showModeRoute(this.focusedTransportationMode);\r\n else {\r\n if (this.locationHighlight)\r\n this.highlightLocation(this.locationHighlight.geometry.getCoordinate(), true)\r\n }\r\n };\r\n\r\n return button;\r\n }\r\n\r\n // TODO: check, če se je višina sploh spremenila? base class za vse kontrole, ki se morajo spremeniti ob resizu windowa?\r\n private resizePanel = () => {\r\n const height = this._map.getSize()[1];\r\n if (this.isMobile())\r\n this._panel.style.maxHeight = `${height}px`;\r\n else\r\n this._panel.style.maxHeight = `CALC(${height}px - 1em)`;\r\n };\r\n\r\n private createPanel(): HTMLDivElement {\r\n const panel = document.createElement('div');\r\n panel.className = 'rm2-routing-control-panel rm2-map-controls-panel flex-column';\r\n // const height = this._rMap.getSize()[1];\r\n // panel.style.maxHeight = `${height}px`;\r\n\r\n this._panelTop = this.createPanelTop();\r\n panel.appendChild(this._panelTop);\r\n\r\n panel.appendChild(this.createSearchResults());\r\n\r\n this._panelBottom = this.createPanelBottom();\r\n panel.appendChild(this._panelBottom);\r\n\r\n return panel;\r\n }\r\n\r\n private createPanelTop(): HTMLDivElement {\r\n const panelTop = document.createElement('div');\r\n panelTop.className = 'panel-top border';\r\n\r\n /* Transportation modes TABS */\r\n panelTop.appendChild(this.createToolbar());\r\n\r\n const container = document.createElement('div');\r\n container.className = 'panel-top-container';\r\n /* Location search inputs */\r\n const inputsContainer = document.createElement('div');\r\n inputsContainer.className = 'panel-top-inputs';\r\n this._searchInputs.forEach((routingInput, i) => {\r\n const container = document.createElement('div');\r\n container.className = 'rm2-routing-search-input-container input-group mb-2';\r\n const input = this.createInput(routingInput);\r\n const inputAppend = document.createElement('div');\r\n inputAppend.className = 'input-group-append';\r\n const myLocBtn = document.createElement('button');\r\n myLocBtn.className = 'btn rm2-routing-search-input-btn';\r\n myLocBtn.type = 'button';\r\n const myLocBtnIcon = document.createElement('i');\r\n myLocBtnIcon.className = 'fa fa-crosshairs';\r\n myLocBtn.appendChild(myLocBtnIcon);\r\n myLocBtn.onclick = () => {\r\n this.setLoadingStatus(true);\r\n navigator.geolocation.getCurrentPosition(async (e) => {\r\n const locs = await this.reverse([e.coords.longitude, e.coords.latitude], { pageSize: 1 });\r\n if (locs && locs.length > 0) {\r\n this.setSearchInputValue(routingInput, locs.first);\r\n\r\n // TODO: check accuracy - notify if bad?\r\n const ts = e.timestamp;\r\n if ((new Date().getTime() - ts) > 10 * 60 * 1000)\r\n this.setMessage({ title: 'rmap.rm.routing.warnings.old-location.title', content: 'rmap.rm.routing.warnings.old-location.content', i18nOptions: { mins: 10 } }, 'warning');\r\n else\r\n this.hideMessage();\r\n }\r\n else\r\n this.setMessage({ title: 'general.errors.generic.title', content: 'rmap.general.errors.cannot-get-user-location' }, 'danger');\r\n \r\n this.setLoadingStatus(false);\r\n },\r\n () => {\r\n this.setMessage({ title: 'general.errors.generic.title', content: 'rmap.general.errors.cannot-get-user-location' }, 'danger');\r\n this.setLoadingStatus(false);\r\n });\r\n };\r\n routingInput.addActionButton(new RoutingInputActionButton(RoutingInputActionButtonType.MyLocation, myLocBtn));\r\n inputAppend.appendChild(myLocBtn);\r\n\r\n const panToLocBtn = document.createElement('button');\r\n panToLocBtn.className = 'btn rm2-routing-search-input-btn';\r\n panToLocBtn.type = 'button';\r\n const locBtnIcon = document.createElement('i');\r\n locBtnIcon.className = 'fa fa-map-marker-alt';\r\n panToLocBtn.appendChild(locBtnIcon);\r\n panToLocBtn.onclick = () => {\r\n const loc = routingInput.getLocation();\r\n if (loc)\r\n this.highlightLocation(loc.geometry.getCoordinate(), true);\r\n };\r\n routingInput.addActionButton(new RoutingInputActionButton(RoutingInputActionButtonType.PanToLocation, panToLocBtn, false));\r\n inputAppend.appendChild(panToLocBtn);\r\n\r\n const clearBtn = document.createElement('button');\r\n clearBtn.className = 'btn rm2-routing-search-input-btn';\r\n clearBtn.type = 'button';\r\n const clearBtnIcon = document.createElement('i');\r\n clearBtnIcon.className = 'fa fa-times';\r\n clearBtn.appendChild(clearBtnIcon);\r\n clearBtn.onclick = () => {\r\n input.value = '';\r\n this.processInputChange(input);\r\n };\r\n routingInput.addActionButton(new RoutingInputActionButton(RoutingInputActionButtonType.Clear, clearBtn));\r\n inputAppend.appendChild(clearBtn);\r\n\r\n container.appendChild(input);\r\n container.appendChild(inputAppend);\r\n\r\n inputsContainer.appendChild(container);\r\n });\r\n container.appendChild(inputsContainer);\r\n\r\n /* Reverse locations button */\r\n const reverseLocations = document.createElement('div');\r\n reverseLocations.className = 'panel-top-reverse-locations';\r\n const reverseLocationsBtn = document.createElement('button');\r\n reverseLocationsBtn.type = 'button'; // da se page ne refresha\r\n reverseLocationsBtn.className = 'rm2-routing-control-btn';\r\n const i = document.createElement('i');\r\n i.className = 'fa fa-2x fa-exchange-alt fa-rotate-90';\r\n reverseLocations.appendChild(reverseLocationsBtn);\r\n reverseLocationsBtn.appendChild(i);\r\n\r\n // TODO: debouncing?\r\n reverseLocationsBtn.onclick = () => {\r\n if (this._searchInputs.length === 2) {\r\n const first = this._searchInputs.shift();\r\n const firstLoc = first.getLocation();\r\n const second = this._searchInputs.shift();\r\n const secondLoc = second.getLocation();\r\n\r\n first.saveLocation(null);\r\n second.saveLocation(null);\r\n this._searchInputs.push(first);\r\n this._searchInputs.push(second);\r\n\r\n this.setSearchInputValue(second, firstLoc, false, false);\r\n this.setSearchInputValue(first, secondLoc, false, false);\r\n\r\n this.locationHighlight = null;\r\n }\r\n };\r\n \r\n this._reverseLocations = reverseLocations;\r\n container.appendChild(reverseLocations);\r\n panelTop.appendChild(container);\r\n\r\n // disclaimer\r\n if (this._map.metadata.enableRoutingDisclaimer) {\r\n this._disclaimer = document.createElement('span');\r\n this._localizationService.localizeElement(this._disclaimer, 'rmap.rm.routing.disclaimer');\r\n panelTop.appendChild(this._disclaimer);\r\n\r\n this.refreshDisclaimerVisibility();\r\n }\r\n\r\n return panelTop;\r\n }\r\n\r\n private createSearchResults(): HTMLDivElement {\r\n const searchResults = document.createElement('ul');\r\n searchResults.className = 'list-group rm2-routing-control-search-results border rounded-bottom shadow';\r\n\r\n const size = this._map.getSize();\r\n searchResults.style.maxHeight = `${size[1] / 2}px`;\r\n // searchResults.onmouseenter = () => this.hoveringSearchResults = true;\r\n // searchResults.onmouseleave = () => this.hoveringSearchResults = false;\r\n searchResults.addEventListener('focus', () => this.stopSearchResultsHideTimeout(), true);\r\n searchResults.addEventListener('blur', () => this.startSearchResultsHideTimeout(), true);\r\n\r\n this._searchResults = searchResults;\r\n\r\n const container = document.createElement('div');\r\n container.className = 'rm2-routing-control-search-results-container';\r\n container.appendChild(searchResults);\r\n \r\n return container;\r\n }\r\n\r\n private createPanelBottom(): HTMLDivElement {\r\n const panelBottom = document.createElement('div');\r\n panelBottom.className = 'panel-bottom border';\r\n\r\n /* Spinner */\r\n this._spinner = document.createElement('div');\r\n this._spinner.className = 'text-center p-2 d-none';\r\n const spinnerContent = document.createElement('div');\r\n spinnerContent.className = 'spinner-border';\r\n spinnerContent.setAttribute('role', 'status');\r\n const spinnerSpan = document.createElement('span');\r\n spinnerSpan.className = 'sr-only';\r\n spinnerSpan.innerText = 'Loading ...';\r\n spinnerContent.appendChild(spinnerSpan);\r\n this._spinner.append(spinnerContent);\r\n panelBottom.appendChild(this._spinner);\r\n\r\n this._toolbarContent = this.createToolbarContent();\r\n panelBottom.appendChild(this._toolbarContent);\r\n\r\n return panelBottom;\r\n }\r\n\r\n private createInput(routingInput: RoutingInput): HTMLInputElement {\r\n const input = document.createElement('input');\r\n input.type = 'text';\r\n input.id = routingInput.id;\r\n this._localizationService.localizeElement(input, routingInput.placeholderText);\r\n input.className = 'rm2-routing-search-input form-control';\r\n\r\n input.onkeyup = this.onSearchKeyUp;\r\n input.addEventListener('focus', () => {\r\n this.lastFocusedInput = input.id;\r\n if (input.value.length > 0)\r\n this.processInputChange(input);\r\n \r\n // if (this._searchResults.children.length > 0)\r\n // this._searchResults.classList.add('active');\r\n this.stopSearchResultsHideTimeout();\r\n }, true);\r\n\r\n input.addEventListener('blur', this.startSearchResultsHideTimeout, true);\r\n\r\n routingInput.setTarget(input);\r\n return input;\r\n }\r\n\r\n private createToolbar(): HTMLDivElement {\r\n const div = document.createElement('div');\r\n div.className = 'rm2-routing-toolbar mb-3';\r\n const ul = document.createElement('ul');\r\n ul.className = 'nav nav-pills rm2-routing-transportation-modes-tabs';\r\n ul.id = 'pills-tab';\r\n ul.setAttribute('role', 'tablist');\r\n\r\n const search = this.createToolbarItem(this.searchToolbarItem.id, this.searchToolbarItem.icon, true, true);\r\n search.onclick = () => {\r\n if (this.focusedTransportationMode == undefined) {\r\n const loc = this._searchInputs[0].getLocation();\r\n if (loc)\r\n this.highlightLocation(loc.geometry.getCoordinate(), true);\r\n }\r\n };\r\n\r\n ul.appendChild(search);\r\n\r\n for (let i = 0; i < this.transportationModes.length; i++) {\r\n const mode = this.transportationModes[i].id;\r\n const modeIcon = this.transportationModes[i].icon;\r\n const enabled = this.transportationModes[i].enabled !== false;\r\n\r\n const li = this.createToolbarItem(mode, modeIcon, enabled, false);\r\n li.onclick = () => {\r\n if (this.focusedTransportationMode && this.focusedTransportationMode.id === mode)\r\n this.showModeRoute(this.transportationModes[i]);\r\n };\r\n\r\n ul.appendChild(li);\r\n }\r\n \r\n div.appendChild(ul);\r\n\r\n /* Hide button */\r\n const hideI = document.createElement('i');\r\n hideI.className = 'fa fa-arrow-left rm2-routing-control-hide p-3';\r\n hideI.onclick = () => {\r\n this.setPanelStatus(false);\r\n this.clearRoute();\r\n this.clearHighlight();\r\n };\r\n div.appendChild(hideI);\r\n\r\n /* Clear button */\r\n const clear = document.createElement('i');\r\n clear.className = 'fa fa-times rm2-routing-control-clear p-3';\r\n clear.onclick = () => this.clearSearch();\r\n div.appendChild(clear);\r\n\r\n return div;\r\n }\r\n\r\n private createToolbarItem(label: string, icon: string, enabled: boolean, active: boolean): HTMLLIElement {\r\n const li = document.createElement('li');\r\n li.className = 'nav-item rm2-routing-transportation-modes-tab-item';\r\n const a = document.createElement('a');\r\n const id = 'pills-' + label + '-tab';\r\n a.className = 'nav-link' + (active === true ? ' active' : '') + (enabled === false ? ' disabled': '');\r\n a.id = id;\r\n a.setAttribute('data-toggle', 'pill');\r\n a.setAttribute('mode', label);\r\n a.href = '#pills-' + label;\r\n a.setAttribute('role', 'tab');\r\n a.setAttribute('aria-controls', 'pills-' + label);\r\n a.setAttribute('aria-selected', 'true');\r\n const i = document.createElement('i');\r\n i.className = icon;\r\n a.appendChild(i);\r\n li.appendChild(a);\r\n\r\n return li;\r\n }\r\n\r\n private createToolbarContent(): HTMLDivElement {\r\n const content = document.createElement('div');\r\n content.className = 'tab-content rm2-routing-toolbar-content';\r\n content.id = 'pills-tabContent';\r\n\r\n const search = this.createToolbarContentItem(this.searchToolbarItem.id, true);\r\n content.appendChild(search);\r\n\r\n for (let i = 0; i < this.transportationModes.length; i++) {\r\n const mode = this.transportationModes[i].id;\r\n const div = this.createToolbarContentItem(mode, false);\r\n content.appendChild(div);\r\n this.transportationModes[i].element = div;\r\n }\r\n \r\n return content;\r\n }\r\n\r\n private createToolbarContentItem(label: string, active: boolean) {\r\n const div = document.createElement('div');\r\n div.className = 'tab-pane fade' + (active === true ? ' show active' : '');\r\n div.id = 'pills-' + label;\r\n div.setAttribute('role', 'tabpanel');\r\n div.setAttribute('aria-labelledby', 'pills-' + label + '-tab');\r\n // div.innerHTML = mode;\r\n return div;\r\n }\r\n\r\n private createRouteOverviewContent(route: RouteFeatureCollection): HTMLDivElement {\r\n const detail = document.createElement('div');\r\n detail.className = 'pt-3 pr-3 pl-3';\r\n\r\n // const row1 = document.createElement('div');\r\n // row1.className = 'row';\r\n // /* Start time */\r\n // const start = document.createElement('div');\r\n // start.className = 'col-sm-6';\r\n // const startIcon = document.createElement('i');\r\n // startIcon.className = 'fa fa-map-marker-alt rm2-routing-control-route-overview-table-icon';\r\n // const startText = document.createElement('span');\r\n // startText.innerText = this.formatDate(new Date(route.plan.itineraries[0].startTime));\r\n // start.appendChild(startIcon);\r\n // start.appendChild(startText);\r\n\r\n // /* Arrival time */\r\n // const arrival = document.createElement('div');\r\n // arrival.className = 'col-sm-6';\r\n // const arrivalIcon = document.createElement('i');\r\n // arrivalIcon.className = 'fa fa-flag-checkered rm2-routing-control-route-overview-table-icon';\r\n // const arrivalText = document.createElement('span');\r\n // arrivalText.innerText = this.formatDate(new Date(route.plan.itineraries[0].endTime));\r\n // arrival.appendChild(arrivalIcon);\r\n // arrival.appendChild(arrivalText);\r\n\r\n // row1.appendChild(start);\r\n // row1.appendChild(arrival);\r\n\r\n const row2 = document.createElement('div');\r\n row2.style.marginLeft = '0';\r\n row2.style.marginRight = '0';\r\n row2.className = 'row';\r\n /* Distance */\r\n const distance = document.createElement('div');\r\n distance.className = 'col-sm-6';\r\n const distanceIcon = document.createElement('i');\r\n distanceIcon.className = 'fa fa-ruler-horizontal rm2-routing-control-route-overview-table-icon';\r\n const distanceText = document.createElement('span');\r\n distanceText.innerText = Utils.formatDistance(route.properties.Length);\r\n distance.append(distanceIcon);\r\n distance.append(distanceText);\r\n\r\n /* Time */\r\n const time = document.createElement('div');\r\n time.className = 'col-sm-6';\r\n const timeIcon = document.createElement('i');\r\n timeIcon.className = 'fa fa-stopwatch rm2-routing-control-route-overview-table-icon';\r\n const timeText = document.createElement('span');\r\n timeText.innerText = Utils.formatDuration(route.properties.RealTTMs / 1000);\r\n time.appendChild(timeIcon);\r\n time.appendChild(timeText);\r\n\r\n row2.appendChild(distance);\r\n row2.appendChild(time);\r\n\r\n // div.appendChild(row1);\r\n detail.appendChild(row2);\r\n\r\n if (route.properties.Instructions.features.find(station => station.properties.Type === 'station-toll')) {\r\n const tollWarningDiv = document.createElement('div');\r\n tollWarningDiv.className = 'text-warning';\r\n const tollIcon = document.createElement('i');\r\n tollIcon.className = 'fa fa-exclamation-triangle rm2-routing-control-route-overview-table-icon mt-2'\r\n tollWarningDiv.appendChild(tollIcon);\r\n const tollText = document.createElement('span');\r\n this._localizationService.localizeElement(tollText, 'rmap.rm.routing.includes-tolls');\r\n tollWarningDiv.appendChild(tollText);\r\n detail.appendChild(tollWarningDiv);\r\n }\r\n\r\n detail.appendChild(document.createElement('hr'));\r\n\r\n const div = document.createElement('div');\r\n div.appendChild(detail);\r\n div.appendChild(this.createRouteOverviewStations(route.properties.Instructions));\r\n return div;\r\n }\r\n\r\n private createRouteOverviewStations(stations: RouteInstructionsFeatureCollection): HTMLUListElement {\r\n const ul = document.createElement('ul');\r\n ul.className = 'list-group';\r\n\r\n const getIcon = (stationInstructionType: string) => {\r\n if (stationInstructionType === 'instruction-start')\r\n return 'fa fa-crosshairs';\r\n else if (stationInstructionType === 'instruction-turn-left')\r\n return 'fa fa-long-arrow-alt-left';\r\n else if (stationInstructionType === 'instruction-turn-right')\r\n return 'fa fa-long-arrow-alt-right';\r\n else if (stationInstructionType === 'instruction-turn-straight')\r\n return 'fa fa-long-arrow-alt-up';\r\n // else if (stationInstructionType === 'station-toll')\r\n // return 'fa fa-exclamation-triangle text-warning';\r\n else if (stationInstructionType === 'instruction-turn-sharpleft')\r\n return 'fa fa-long-arrow-alt-left';\r\n else if (stationInstructionType === 'instruction-turn-sharpright')\r\n return 'fa fa-long-arrow-alt-right';\r\n else if (stationInstructionType === 'instruction-turn-uturn')\r\n return 'fa fa-redo fa-rotate-90';\r\n else if (stationInstructionType === 'instruction-turn-end' || stationInstructionType === 'instruction-end')\r\n return 'fa fa-flag-checkered';\r\n return 'fa fa-car';\r\n };\r\n\r\n stations.features.forEach(station => {\r\n if (station.properties.Type !== 'station-toll') {\r\n const li = document.createElement('li');\r\n li.className = 'list-group-item border-0 rm2-routing-control-route-overview-item py-2';\r\n \r\n const stationContainer = document.createElement('div');\r\n stationContainer.className = 'row';\r\n // Icon (desktop resolution)\r\n const iconDiv = document.createElement('div');\r\n iconDiv.className = 'col-sm-2 text-center d-none d-sm-block';\r\n const icon = document.createElement('i');\r\n icon.className = getIcon(station.properties.Type); // get icon from station instruction\r\n iconDiv.appendChild(icon);\r\n \r\n const descriptionDiv = document.createElement('div');\r\n descriptionDiv.className = 'col-sm-10';\r\n const textDivContainer = document.createElement('div');\r\n textDivContainer.className = 'row d-inline-flex w-100 justify-content-center justify-content-sm-start align-items-center';\r\n\r\n // Icon (mobile resolution)\r\n const iconMobile = document.createElement('i');\r\n iconMobile.className = getIcon(station.properties.Type);\r\n iconMobile.classList.add('d-sm-none', 'px-2');\r\n textDivContainer.appendChild(iconMobile);\r\n\r\n const textDiv = document.createElement('div');\r\n // textDiv.className = 'row';\r\n // textDiv.className = '';\r\n // const prop = 'title:' + this._localizationService.getLanguage();\r\n const title = station.properties.TitleTranslations.find(t => t.Item1 === this._localizationService.getLanguage());\r\n if (title)\r\n textDiv.innerText = title.Item2;\r\n textDivContainer.appendChild(textDiv);\r\n descriptionDiv.appendChild(textDivContainer);\r\n \r\n if (station.properties.Length > 0) {\r\n const getLine = (): HTMLDivElement => {\r\n const line = document.createElement('div');\r\n line.className = 'rm2-routing-control-route-overview-line flex-grow-1';\r\n return line;\r\n };\r\n\r\n const locationDiv = document.createElement('div');\r\n locationDiv.className = 'row d-flex';\r\n const line1 = getLine();\r\n line1.classList.add('d-sm-none');\r\n locationDiv.appendChild(line1);\r\n const distance = document.createElement('span');\r\n distance.className = 'text-muted';\r\n distance.innerText = Utils.formatDistance(station.properties.Length);\r\n locationDiv.appendChild(distance);\r\n const line2 = getLine();\r\n locationDiv.appendChild(line2);\r\n descriptionDiv.appendChild(locationDiv);\r\n }\r\n else if (station.properties.Type === 'station-toll') {\r\n const tollWarningDiv = document.createElement('div');\r\n tollWarningDiv.className = 'row text-warning';\r\n tollWarningDiv.innerText = 'Cestnina'\r\n descriptionDiv.appendChild(tollWarningDiv);\r\n }\r\n \r\n stationContainer.appendChild(iconDiv);\r\n stationContainer.appendChild(descriptionDiv);\r\n \r\n li.appendChild(stationContainer);\r\n li.onclick = () => {\r\n const view = this._map.getView();\r\n // HACK za zdaj dokler se ne zamenja routing servicea\r\n // const proj = Projection.create(this._options.projection);\r\n // const proj = Projection.create('EPSG:3912;+title=y/x:D48/GK +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=bessel +towgs84=426.9,142.6,460.1,4.91,4.49,-12.42,17.1 +units=m +no_defs')\r\n\r\n if (this.routeStationHighlight)\r\n this._map.removeFeature(this.routeStationHighlight.properties.id);\r\n \r\n this.routeStationHighlight = this._map.addFeature(new Feature({\r\n color: '#59A0DD',\r\n radius: 5,\r\n outlineWidth: 2,\r\n outlineColor: '#FFFFFF'\r\n }, station.geometry), {\r\n // projection: proj,\r\n pan: true,\r\n cameraOptions: new PanOptions({\r\n zoom: view.zoom > 14 ? view.zoom : 14,\r\n relCenterX: this.getRelCenterX()\r\n })\r\n });\r\n\r\n // this._rMap.pan(station.location, {\r\n // // projection: proj,\r\n // // HACK za zdaj dokler se ne zamenja routing servicea\r\n // projection: Projection.create('EPSG:3912;+title=y/x:D48/GK +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=bessel +towgs84=426.9,142.6,460.1,4.91,4.49,-12.42,17.1 +units=m +no_defs'),\r\n // zoom: view.zoom > 14 ? view.zoom : 14,\r\n // relCenterX: this.getRelCenterX()\r\n // });\r\n };\r\n \r\n ul.appendChild(li);\r\n }\r\n });\r\n\r\n return ul;\r\n }\r\n\r\n private createSearchResultItem(title: string, highlight?: string): HTMLSpanElement {\r\n const container = document.createElement('span');\r\n if (title && highlight) {\r\n while (title.toLowerCase().includes(highlight.toLowerCase())) {\r\n const titleL = title.toLowerCase();\r\n const highlightL = highlight.toLowerCase();\r\n const i = titleL.indexOf(highlightL);\r\n const span1 = document.createElement('span');\r\n span1.innerText = title.substr(0, i);\r\n container.appendChild(span1);\r\n const span2 = document.createElement('span');\r\n span2.className = 'font-weight-bold';\r\n span2.innerText = title.substr(i, highlight.length);\r\n container.appendChild(span2);\r\n\r\n title = title.substr(i + highlight.length);\r\n }\r\n\r\n const endSpan = document.createElement('span');\r\n endSpan.innerText = title;\r\n container.appendChild(endSpan);\r\n }\r\n else\r\n container.innerText = title;\r\n return container;\r\n }\r\n\r\n private clearSearch() {\r\n let isCleared: boolean = true;\r\n for (let i = 0; i < this._searchInputs.length; i++) {\r\n if (this._searchInputs[i].getLocation()) {\r\n isCleared = false;\r\n break;\r\n }\r\n }\r\n\r\n if (isCleared)\r\n this.setPanelStatus(false);\r\n else {\r\n this._searchInputs.forEach((input, i) => {\r\n const target = input.getTarget();\r\n if (target) {\r\n if (i > 0 && i < this._searchInputs.length - 1) {\r\n target.parentNode.removeChild(target);\r\n input.saveLocation(null);\r\n }\r\n else\r\n this.setSearchInputValue(input, null, false, false, false);\r\n }\r\n })\r\n \r\n if (this._searchInputs.length > 2)\r\n this._searchInputs.splice(1, this._searchInputs.length - 2);\r\n \r\n while (this._searchResults.firstChild)\r\n this._searchResults.removeChild(this._searchResults.firstChild);\r\n \r\n this.clearTransportationModesContent();\r\n this.clearHighlight();\r\n this.locationHighlight = null;\r\n this.clearRoute();\r\n }\r\n }\r\n\r\n private onSearchTabSelected = (e?: Event) => {\r\n this.focusedTransportationMode = null;\r\n this.clearRoute();\r\n this.clearHighlight();\r\n\r\n const loc = this._searchInputs[0].getLocation();\r\n if (loc)\r\n this.highlightLocation(loc.geometry.getCoordinate(), false);\r\n \r\n this._reverseLocations.style.display = 'none';\r\n for (let i = 1; i < this._searchInputs.length; i++)\r\n this._searchInputs[i].getTarget().parentElement.style.display = 'none';\r\n \r\n const searchTarget = this._searchInputs[0].getTarget();\r\n this._localizationService.localizeElement(searchTarget, this.searchInputPlaceholder);\r\n this.refreshDisclaimerVisibility();\r\n };\r\n\r\n private selectTransportationModeTab(index: number) {\r\n const mode = this.transportationModes[index];\r\n $('#pills-' + mode.id + '-tab').tab('show');\r\n }\r\n\r\n private onTransportationModeTabSelected = (e: Event) => {\r\n const modeId = (e.target as HTMLElement).getAttribute('mode');\r\n const mode = this.transportationModes.find(m => m.id === modeId);\r\n this._reverseLocations.style.display = 'flex';\r\n for (let i = 0; i < this._searchInputs.length; i++) {\r\n const input = this._searchInputs[i];\r\n const target = input.getTarget();\r\n target.parentElement.style.display = 'flex';\r\n // target.placeholder = input.placeholderText;\r\n this._localizationService.localizeElement(target, input.placeholderText);\r\n }\r\n\r\n this.focusedTransportationMode = mode;\r\n this.showModeRoute(mode);\r\n\r\n const waitingId = this.searchInputIdWaitingForLocation;\r\n if (waitingId != undefined) {\r\n const waitingInput = this._searchInputs[waitingId];\r\n // waitingInput.getTarget().placeholder = waitingInput.placeholderTextAlt;\r\n this._localizationService.localizeElement(waitingInput.getTarget(), waitingInput.placeholderTextAlt);\r\n }\r\n this.refreshDisclaimerVisibility();\r\n };\r\n\r\n private setSearchResults(items: FeatureCollection, query?: string) {\r\n while (this._searchResults.firstChild) {\r\n this._searchResults.firstChild.removeEventListener('keyup', this.onSearchKeyUp);\r\n this._searchResults.removeChild(this._searchResults.firstChild);\r\n }\r\n \r\n if (items.length > 0) {\r\n const appendToSearchResults = (item: Feature) => {\r\n const a = document.createElement('a');\r\n a.className = 'list-group-item list-group-item-action rm2-routing-control-search-results-item';\r\n a.href = '#';\r\n const i = document.createElement('i');\r\n i.className = `fa ${item.properties.FaIcon} rm2-routing-control-search-results-item-icon`;\r\n const span = this.createSearchResultItem(item.properties.Title, query);\r\n // const span = document.createElement('span');\r\n // span.innerText = item.name;\r\n a.appendChild(i);\r\n a.appendChild(span);\r\n \r\n // TODO: unsubscribe on destroy\r\n a.onclick = () => {\r\n if (this.lastFocusedInput) {\r\n const found = this._searchInputs.find(input => input.getTarget().id === this.lastFocusedInput);\r\n this.setSearchResultsStatus(false);\r\n if (found)\r\n this.setSearchInputValue(found, item);\r\n }\r\n };\r\n\r\n a.addEventListener('keyup', this.onSearchKeyUp);\r\n if (this._searchResults.children.length > 0 && this._searchResults.children[this._searchResults.children.length - 1].id === 'rm2-search-results-more-btn')\r\n this._searchResults.insertBefore(a, this._searchResults.children[this._searchResults.children.length - 1]);\r\n else\r\n this._searchResults.appendChild(a);\r\n };\r\n\r\n items.features.forEach(item => appendToSearchResults(item));\r\n if (items.properties.HasNextPage === true) {\r\n let page = items.properties.Page;\r\n const more = document.createElement('button');\r\n more.className = 'btn btn-light btn-block';\r\n more.type = 'button';\r\n more.id = 'rm2-search-results-more-btn';\r\n this._localizationService.localizeElement(more, 'rmap.rm.routing.more-results');\r\n more.onclick = async () => {\r\n this.stopSearchResultsHideTimeout();\r\n (this._searchResults.lastChild as HTMLElement).focus();\r\n const moreLocs = await this.query(query, { page: ++page });\r\n this.lastProcessedInputText = query;\r\n moreLocs.forEach(item => appendToSearchResults(item));\r\n if (moreLocs.properties.HasNextPage === false) {\r\n more.parentElement.removeChild(more);\r\n (this._searchResults.lastChild as HTMLAnchorElement).focus();\r\n }\r\n };\r\n\r\n this._searchResults.appendChild(more);\r\n }\r\n\r\n if (this.getSearchResultsStatus() === false)\r\n this.setSearchResultsStatus(true);\r\n }\r\n }\r\n\r\n private setSearchInputValue(input: RoutingInput, value: Feature, highlight: boolean = true, pan: boolean = true, recalculateInputsRoute: boolean = true) {\r\n const target = input.getTarget();\r\n input.saveLocation(value);\r\n\r\n if (recalculateInputsRoute === true)\r\n this.onLocationSelected(highlight, pan);\r\n \r\n const waitingId = this.searchInputIdWaitingForLocation;\r\n for (let i = 0; i < this._searchInputs.length; i++) {\r\n const input = this._searchInputs[i];\r\n const target = input.getTarget();\r\n if (this.focusedTransportationMode != undefined)\r\n // target.placeholder = i === waitingId ? input.placeholderTextAlt : input.placeholderText;\r\n this._localizationService.localizeElement(target, i === waitingId ? input.placeholderTextAlt : input.placeholderText);\r\n else\r\n // target.placeholder = this.searchInputPlaceholder;\r\n this._localizationService.localizeElement(target, this.searchInputPlaceholder);\r\n }\r\n\r\n if (value && this.focusedTransportationMode) {\r\n const i = this._searchInputs.indexOf(input);\r\n if (i < this._searchInputs.length - 1)\r\n this._searchInputs[i + 1].getTarget().focus();\r\n }\r\n\r\n const panBtn = input.getActionButton(RoutingInputActionButtonType.PanToLocation);\r\n const myLocBtn = input.getActionButton(RoutingInputActionButtonType.MyLocation);\r\n target.value = value ? value.properties.Title : '';\r\n panBtn.visible = value != undefined;\r\n myLocBtn.visible = !panBtn.visible;\r\n }\r\n\r\n private onLocationSelected(highlight: boolean = true, pan: boolean = true) {\r\n if (this.focusedTransportationMode)\r\n this.processSearchInputs(highlight, pan);\r\n else {\r\n if (highlight === true) {\r\n const searchInput = this._searchInputs[0];\r\n const loc = searchInput.getLocation();\r\n if (loc)\r\n this.highlightLocation(loc.geometry.getCoordinate(), pan);\r\n else\r\n this.clearHighlight();\r\n }\r\n }\r\n }\r\n\r\n async processSearchInputs(highlight: boolean = true, pan: boolean = true) {\r\n this.clearRoute();\r\n this.clearHighlight();\r\n this.clearTransportationModesContent();\r\n this.hideMessage();\r\n this.locationHighlight = null;\r\n\r\n const locations = new FeatureCollection();\r\n for (let i = 0; i < this._searchInputs.length; i++) {\r\n const value = this._searchInputs[i].getLocation();\r\n if (value)\r\n locations.features.push(value);\r\n }\r\n\r\n if (locations.length > 1) {\r\n this.setLoadingStatus(true);\r\n try {\r\n const route = await this._routingService.routev1(this._searchInputs.map(input => {\r\n const coord = input.getLocation().geometry.getCoordinate();\r\n return [coord.x, coord.y] as CoordinateLike;\r\n }));\r\n \r\n if (route && route.route) {\r\n this.transportationModes.forEach(mode => {\r\n // if (mode.ena bled !== false) {\r\n // TODO: ko pride več-modalni routing, tukaj check\r\n // const found = route.extraTrips.find(trip => trip.tripMode === mode.id);\r\n let div: HTMLDivElement;\r\n // TODO: check, če je pot sploh veljavna?\r\n // if (found && found.plan && found.plan.itineraries) {\r\n // mode.data = found;\r\n // div = this.createRouteOverviewContent(found);\r\n // // this.showModeRoute(mode);\r\n // }\r\n // else {\r\n // mode.data = null;\r\n // div = document.createElement('div');\r\n // div.innerText = 'Za ta način transporta žal ni bilo najdene ustrezne poti.';\r\n // }\r\n \r\n mode.data = { points: locations.features.map(ft => {\r\n const c = ft.geometry.getCoordinate();\r\n return [c.x, c.y] as CoordinateLike;\r\n }), route: route.route };\r\n div = this.createRouteOverviewContent(route.route);\r\n mode.element.appendChild(div);\r\n // }\r\n });\r\n \r\n this.showModeRoute(this.focusedTransportationMode);\r\n }\r\n else {\r\n this.setMessage({ title: 'general.errors.generic.title', content: 'rmap.rm.routing.errors.cannot-get-route' }, 'danger');\r\n this.clearRoute();\r\n }\r\n }\r\n catch (e) {\r\n console.error('Error when fetching route\\n', e);\r\n this.setMessage({ title: 'general.errors.generic.title', content: 'rmap.rm.routing.errors.cannot-get-route' }, 'danger');\r\n this.clearRoute();\r\n }\r\n finally {\r\n this.setLoadingStatus(false);\r\n }\r\n }\r\n else if (locations.length === 1 && highlight)\r\n this.highlightLocation(locations.features[0].geometry.getCoordinate(), pan);\r\n }\r\n\r\n private clearTransportationModesContent() {\r\n this.transportationModes.forEach(mode => {\r\n mode.data = null;\r\n while (mode.element.firstChild)\r\n mode.element.removeChild(mode.element.firstChild);\r\n });\r\n\r\n this._toolbarContent.style.display = 'none';\r\n this._toolbarContent.style.display = 'block';\r\n }\r\n\r\n private highlightLocation(coord: Coordinate | CoordinateLike, pan: boolean) {\r\n if (this.locationHighlight)\r\n this._map.removeFeature(this.locationHighlight.properties.id);\r\n \r\n this.locationHighlight = this._map.addFeature(new Feature({\r\n icon: 'marker_red-128'\r\n }, Point.fromCoordinate(coord)), { pan: false });\r\n\r\n if (pan) {\r\n const zoom = this._map.getView().zoom;\r\n const defaultZoom = 14;\r\n this._map.pan(coord, {\r\n zoom: zoom > defaultZoom ? zoom : defaultZoom,\r\n relCenterX: this.getRelCenterX()\r\n });\r\n }\r\n }\r\n\r\n private clearHighlight() {\r\n if (this.locationHighlight)\r\n this._map.removeFeature(this.locationHighlight.properties.id);\r\n }\r\n\r\n private clearRoute() {\r\n // if (this.displayedRouteFtColl) {\r\n // const ids = this.displayedRouteFtColl.features.map(ft => ft.properties.id);\r\n // this._rMap.removeFeatures(ids);\r\n // this.displayedRouteFtColl = null;\r\n // }\r\n\r\n this._map.clearRoute(false);\r\n if (this.routeStationHighlight)\r\n this._map.removeFeature(this.routeStationHighlight.properties.id);\r\n }\r\n \r\n private attachToolbarEventListeners() {\r\n const attach = (item: ToolbarItem, handler: (e: Event) => void) => {\r\n const format = '#pills-[id]-tab';\r\n $(format.replace('[id]', item.id)).on('shown.bs.tab', handler);\r\n };\r\n\r\n attach(this.searchToolbarItem, this.onSearchTabSelected);\r\n this.transportationModes.forEach(mode => attach(mode, this.onTransportationModeTabSelected));\r\n }\r\n \r\n private removeToolbarEventListeners() {\r\n const remove = (item: ToolbarItem, handler: (e: Event) => void) => {\r\n const format = '#pills-[id]-tab';\r\n $(format.replace('[id]', item.id)).off('shown.bs.tab', handler);\r\n };\r\n\r\n remove(this.searchToolbarItem, this.onSearchTabSelected);\r\n this.transportationModes.forEach(mode => remove(mode, this.onTransportationModeTabSelected));\r\n }\r\n \r\n private getPanelStatus(): boolean {\r\n return this._panel.parentNode != null;\r\n }\r\n\r\n private setPanelStatus(status: boolean) {\r\n if (status === true) {\r\n if (this.getPanelStatus() === false) {\r\n if (this._button && this._button.parentNode && this._button.parentNode.parentNode)\r\n this._button.parentNode.parentNode.appendChild(this._panel);\r\n \r\n this._localizationService.refresh();\r\n this.resizePanel();\r\n window.addEventListener('resize', this.resizePanel);\r\n this.attachToolbarEventListeners();\r\n }\r\n else\r\n throw new Error('Routing panel already shown.');\r\n }\r\n else if (status === false) {\r\n window.removeEventListener('resize', this.resizePanel);\r\n this.removeToolbarEventListeners();\r\n\r\n if (this._panel && this._panel.parentNode)\r\n this._panel.parentNode.removeChild(this._panel);\r\n }\r\n }\r\n\r\n private getRelCenterX(): number {\r\n if (this.isMobile())\r\n return 0.5;\r\n else {\r\n const size = this._map.getSize();\r\n const panelBottomOpen = this._panelBottom && this._panelBottom.clientHeight > 0;\r\n return panelBottomOpen ? (0.5 + ((this._panel.clientWidth / size[0]) / 2)) : 0.5;\r\n }\r\n }\r\n\r\n private getRouteFitPadding(): PaddingOptions {\r\n if (this.isMobile()) {\r\n return {\r\n top: this._panelTop.clientHeight + 50,\r\n // bottom: this._panelBottom.clientHeight + 50, // TODO: to pofiksati, pri reverse route ne dela vedno OK\r\n bottom: 200 + 50, // TODO: to pofiksati, pri reverse route ne dela vedno OK\r\n left: 50,\r\n right: 50\r\n };\r\n }\r\n else {\r\n return {\r\n top: 50,\r\n bottom: 50,\r\n left: this._panel.clientWidth + 50,\r\n right: 50\r\n }\r\n }\r\n }\r\n\r\n private getSearchResultsStatus(): boolean {\r\n return this._searchResults.classList.contains('active');\r\n }\r\n\r\n private setSearchResultsStatus(visible: boolean) {\r\n this.focusedSearchResult = undefined;\r\n if (visible)\r\n this._searchResults.classList.add('active');\r\n else\r\n this._searchResults.classList.remove('active');\r\n }\r\n\r\n private getLoadingStatus(): boolean {\r\n return this._spinner.classList.contains('d-none') === false;\r\n }\r\n\r\n private setLoadingStatus(loading: boolean) {\r\n if (loading === true) {\r\n this._spinner.classList.remove('d-none');\r\n this._searchInputs.forEach(input => input.disabled = true);\r\n for (let i = 0; i < this._reverseLocations.children.length; i++) {\r\n const child = this._reverseLocations.children.item(i);\r\n if (child instanceof HTMLButtonElement)\r\n child.disabled = true;\r\n }\r\n\r\n // TODO:\r\n // this.mapPickerControl.hide();\r\n }\r\n else {\r\n this._spinner.classList.add('d-none');\r\n this._searchInputs.forEach(input => input.disabled = false);\r\n for (let i = 0; i < this._reverseLocations.children.length; i++) {\r\n const child = this._reverseLocations.children.item(i);\r\n if (child instanceof HTMLButtonElement)\r\n child.disabled = false;\r\n }\r\n }\r\n }\r\n\r\n private setMessage(options: { title: string, content: string, i18nOptions?: Object }, type: string) {\r\n this.hideMessage();\r\n\r\n this._message = document.createElement('div');\r\n this._panelTop.appendChild(this._message);\r\n\r\n // this._message.className = `alert alert-${type} alert-dismissible fade show m-0`;\r\n this._message.className = `alert alert-${type} alert-dismissible show m-0`;\r\n const titleDiv = document.createElement('strong');\r\n // titleDiv.innerText = options.title;\r\n this._localizationService.mark(titleDiv, options.title);\r\n this._message.appendChild(titleDiv);\r\n\r\n this._message.appendChild(document.createElement('br'));\r\n\r\n const contentDiv = document.createElement('span');\r\n // contentDiv.innerText = content;\r\n this._localizationService.mark(contentDiv, options.content, options.i18nOptions);\r\n this._message.appendChild(contentDiv);\r\n\r\n const closeBtn = document.createElement('button');\r\n closeBtn.type = 'button';\r\n closeBtn.className = 'close p-2';\r\n closeBtn.setAttribute('data-dismiss', 'alert');\r\n closeBtn.setAttribute('aria-label', 'close');\r\n const closeBtnSpan = document.createElement('span');\r\n closeBtnSpan.className = 'fa fa-xs fa-times';\r\n closeBtnSpan.setAttribute('aria-hidden', 'true');\r\n closeBtn.appendChild(closeBtnSpan);\r\n\r\n this._localizationService.refresh(this._message);\r\n this._message.appendChild(closeBtn);\r\n this._message.style.display = 'block';\r\n }\r\n\r\n private hideMessage() {\r\n if (this._message && this._message.parentElement)\r\n this._message.parentElement.removeChild(this._message);\r\n }\r\n\r\n // private fetchingRoute: XMLHttpRequest;\r\n // private getRoute(locations: FeatureCollection): Promise {\r\n // return new Promise((res, rej) => {\r\n // if (this.fetchingRoute)\r\n // this.fetchingRoute.abort();\r\n \r\n // const xhr = new XMLHttpRequest();\r\n // xhr.timeout = this.requestsTimeoutMs;\r\n // xhr.onload = () => {\r\n // if (xhr.responseText)\r\n // res(JSON.parse(xhr.responseText));\r\n // else\r\n // res(null);\r\n // };\r\n\r\n // xhr.ontimeout = () => {\r\n // this.setMessage('Napaka!', this.requestsTimeoutMessage, 'danger');\r\n // rej('Timeout');\r\n // };\r\n\r\n // xhr.onerror = () => rej('Error getting route');\r\n // xhr.onabort = () => rej('HTTP request aborted.');\r\n // xhr.onloadend = () => this.fetchingRoute = null;\r\n \r\n // // TODO: dodaj vmesne točke\r\n // const loc1 = locations.features[0].geometry.getCoordinate();\r\n // const loc2 = locations.features[1].geometry.getCoordinate();\r\n // const url = `${this._options.routingUrl}&loc=${loc1.y},${loc1.x}%3B${loc2.y},${loc2.x}`;\r\n // this.fetchingRoute = xhr;\r\n\r\n // xhr.open('GET', url, true);\r\n // xhr.send(null);\r\n // });\r\n // }\r\n\r\n // private getLocations(query: string | CoordinateLike, pageSize: number = 5, page: number = 0): Promise> {\r\n // return new Promise((res, rej) => {\r\n // if (this.fetchingLocations)\r\n // this.fetchingLocations.abort();\r\n \r\n // const xhr = new XMLHttpRequest();\r\n // xhr.timeout = this.requestsTimeoutMs;\r\n // xhr.onload = () => {\r\n // if (!xhr.status || xhr.status >= 200 && xhr.status < 300) {\r\n // const data = FeatureCollection.fromGeoJson(JSON.parse(xhr.responseText));\r\n // res(data);\r\n // }\r\n // };\r\n \r\n // xhr.ontimeout = () => {\r\n // this.setMessage('Napaka!', this.requestsTimeoutMessage, 'danger');\r\n // rej('Timeout');\r\n // };\r\n\r\n // xhr.onerror = () => rej('Error loading location data for \\'' + query + '\\'.');\r\n // // xhr.onabort = () => console.error('Locations HTTP request aborted.');\r\n // xhr.onloadend = () => this.fetchingLocations = null;\r\n \r\n // let url: string;\r\n // if (typeof query === 'string') {\r\n // url = `${this._options.locationsUrl}?condition=${query}&pagesize=${pageSize}&page=${page}`;\r\n // this.lastProcessedInputText = query;\r\n // }\r\n // else {\r\n // if (query.length === 2)\r\n // url = `${this._options.reverseGeocodingUrl}?x=${query[0]}&y=${query[1]}&pagesize=1`;\r\n // else\r\n // throw new Error('Invalid number of coordinates for reverse geocoding - expected 2, got ' + query.length + '.');\r\n // }\r\n\r\n // if (url) {\r\n // this.fetchingLocations = xhr;\r\n // xhr.open('GET', url, true);\r\n // xhr.send(null);\r\n // }\r\n // else\r\n // throw new Error('Could not determine locations URL with passed query - ' + query);\r\n // });\r\n // }\r\n\r\n // TODO: če klikneš na isti mode, se route zbriše in ponovno nariše -> mogoče samo fit namesto addFeatures\r\n private showModeRoute(mode: ToolbarItem) {\r\n const data = mode.data;\r\n this.clearRoute();\r\n if (data) {\r\n const opts = Object.assign({}, this._options);\r\n opts.pan = true;\r\n opts.cameraOptions = { padding: this.getRouteFitPadding() };\r\n this._map.drawRoute(data, opts);\r\n }\r\n else\r\n this.processSearchInputs();\r\n }\r\n\r\n private lastProcessedInputText: string;\r\n private async processInputChange(target: HTMLInputElement) {\r\n const id = target.id;\r\n const found = this._searchInputs.find(input => input.id === id);\r\n if (target.value && target.value.length > 0) {\r\n if (this.lastProcessedInputText !== target.value) {\r\n const locs = await this.query(target.value);\r\n this.lastProcessedInputText = target.value;\r\n this.setSearchResults(locs, target.value);\r\n }\r\n else\r\n this.setSearchResultsStatus(true);\r\n }\r\n else {\r\n if (this.focusedTransportationMode == undefined)\r\n this.clearTransportationModesContent();\r\n\r\n this.setSearchInputValue(found, null, true, false);\r\n this.setSearchResultsStatus(false);\r\n }\r\n }\r\n\r\n private onSearchKeyUp = (e: KeyboardEvent) => {\r\n if (e.code == undefined || e.code == '')\r\n return;\r\n \r\n const c = Number.parseInt(e.code);\r\n if (c === 38) // arrow up\r\n this.navigateSearchResults(true);\r\n else if (c === 40) // arrow down\r\n this.navigateSearchResults(false);\r\n else if (c === 27) // escape\r\n this.setSearchResultsStatus(false);\r\n else if (c === 13) { // enter\r\n // const found = this._searchInputs.find(input => input.element.id === this.focusedInput);\r\n // this.setSearchResultsStatus(false);\r\n // if (found)\r\n // this.setSearchInputValue(found, found.location);\r\n }\r\n else\r\n this.inputChangeDebouncing.next(e.target as HTMLInputElement);\r\n }\r\n\r\n private navigateSearchResults(ascend?: boolean) {\r\n const searchResults: HTMLAnchorElement[] = [];\r\n for (let i = 0; i < this._searchResults.children.length; i++) {\r\n const child = this._searchResults.children[i];\r\n if (child.tagName.toLowerCase() === 'a')\r\n searchResults.push(child as HTMLAnchorElement);\r\n }\r\n\r\n if (searchResults.length > 0) {\r\n if (ascend === true) {\r\n if (this.focusedSearchResult >= 1)\r\n this.focusedSearchResult--;\r\n else\r\n this.focusedSearchResult = searchResults.length - 1;\r\n }\r\n else if (ascend === false) {\r\n if (this.focusedSearchResult < searchResults.length - 1)\r\n this.focusedSearchResult++;\r\n else\r\n this.focusedSearchResult = 0;\r\n }\r\n\r\n if (this.focusedSearchResult == undefined)\r\n this.focusedSearchResult = 0;\r\n \r\n const a = searchResults[this.focusedSearchResult];\r\n a.focus();\r\n }\r\n }\r\n\r\n private query(query: string, options?: IQueryOptions): Promise> {\r\n return new Promise>(async (res, rej) => {\r\n try {\r\n const opts = this._nominatimService.options;\r\n const fc = new FeatureCollection();\r\n if (opts.GeocodeLocQueryUrl) {\r\n const locs = await this._nominatimService.GeocodeLoc(query);\r\n fc.features = locs.features.map(x => {\r\n const ft = new Feature();\r\n ft.properties = RoutingGeocodingFeatureProps.fromGeocodeLocResponse(x.properties);\r\n ft.geometry = x.geometry;\r\n return ft;\r\n });\r\n fc.properties = RoutingGeocodingProps.fromGeocodeLocResponse(locs.properties);\r\n }\r\n else {\r\n const locs = await this._nominatimService.query_v2(query, options);\r\n fc.features = locs.features.map(x => {\r\n const ft = new Feature();\r\n ft.properties = RoutingGeocodingFeatureProps.fromQueryv2Response(x.properties);\r\n ft.geometry = x.geometry;\r\n return ft;\r\n });\r\n fc.properties = RoutingGeocodingProps.fromQueryv2Response(locs.properties);\r\n }\r\n res(fc);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n }\r\n\r\n private reverse(coords: CoordinateLike, options?: IQueryOptions): Promise> {\r\n return new Promise>(async (res, rej) => {\r\n try {\r\n const opts = this._nominatimService.options;\r\n const fc = new FeatureCollection();\r\n if (opts.GeocodeLocReverseUrl) {\r\n // const locs = await this._nominatimService.GeocodeLocReverse([e.coords.longitude, e.coords.latitude], { pageSize: 1 });\r\n const locs = await this._nominatimService.GeocodeLocReverse(coords, options);\r\n fc.features = locs.features.map(x => {\r\n const ft = new Feature();\r\n ft.properties = RoutingGeocodingFeatureProps.fromGeocodeLocResponse(x.properties);\r\n ft.geometry = x.geometry;\r\n return ft;\r\n });\r\n fc.properties = RoutingGeocodingProps.fromGeocodeLocResponse(locs.properties);\r\n }\r\n else {\r\n const locs = await this._nominatimService.reverse(coords, options);\r\n fc.features = locs.features.map(x => {\r\n const ft = new Feature();\r\n ft.properties = RoutingGeocodingFeatureProps.fromReverseGeocodingResponse(x.properties);\r\n ft.geometry = x.geometry;\r\n return ft;\r\n });\r\n fc.properties = RoutingGeocodingProps.fromReverseGeocodingResponse(locs.properties);\r\n }\r\n res(fc);\r\n }\r\n catch (e) {\r\n rej(e);\r\n }\r\n });\r\n }\r\n\r\n private stopSearchResultsHideTimeout = () => {\r\n if (this.searchResultsHideTimeout)\r\n clearTimeout(this.searchResultsHideTimeout);\r\n };\r\n\r\n private startSearchResultsHideTimeout = () => {\r\n this.stopSearchResultsHideTimeout();\r\n this.searchResultsHideTimeout = setTimeout(() => this.setSearchResultsStatus(false), 100);\r\n };\r\n\r\n private formatDate(date: Date): string {\r\n let day = date.getDay().toString();\r\n // if (day.length === 1)\r\n // day = '0' + day;\r\n \r\n let month = date.getMonth().toString();\r\n // if (month.length === 1)\r\n // month = '0' + month;\r\n \r\n let year = date.getFullYear().toString();\r\n\r\n let h = date.getHours().toString();\r\n if (h.length === 1)\r\n h = '0' + h;\r\n \r\n let min = date.getMinutes().toString();\r\n if (min.length === 1)\r\n min = '0' + min;\r\n \r\n let sec = date.getSeconds().toString();\r\n if (sec.length === 1)\r\n sec = '0' + sec;\r\n\r\n return `${day}.${month}.${year} ${h}:${min}`;\r\n }\r\n\r\n private refreshDisclaimerVisibility() {\r\n if (this._disclaimer && this._disclaimer.style) {\r\n this._disclaimer.style.display = this._map.metadata.enableRoutingDisclaimer && this.focusedTransportationMode != null && this.focusedTransportationMode.showDisclaimer !== false ? 'block' : 'none';\r\n }\r\n }\r\n\r\n private isMobile(): boolean {\r\n return window.innerWidth < 768;\r\n // return (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent));\r\n }\r\n}\r\n\r\nexport class RoutingGeocodingFeatureProps {\r\n\r\n Title: string;\r\n FaIcon: string;\r\n \r\n public static fromQueryv2Response(res: Query_v2ResponseFeatureProperties): RoutingGeocodingFeatureProps {\r\n const prop = new RoutingGeocodingFeatureProps();\r\n prop.Title = res.Title;\r\n prop.FaIcon = this.getQueryv2Icon(res.Type);\r\n return prop;\r\n }\r\n\r\n public static fromReverseGeocodingResponse(res: ReverseGeocodingFeatureProperties): RoutingGeocodingFeatureProps {\r\n const prop = new RoutingGeocodingFeatureProps();\r\n prop.Title = res.Title;\r\n prop.FaIcon = this.getQueryv2Icon(res.Type);\r\n return prop;\r\n }\r\n\r\n public static fromGeocodeLocResponse(res: GeocodeLocFeatureProperties): RoutingGeocodingFeatureProps {\r\n const prop = new RoutingGeocodingFeatureProps();\r\n prop.Title = res.Title;\r\n prop.FaIcon = this.getGeocodeLocIcon(res.Type);\r\n return prop;\r\n }\r\n\r\n private static getQueryv2Icon(type: string): string {\r\n if (type === 'Naselje')\r\n return 'fa fa-city';\r\n else if (type === 'Ulica')\r\n return 'fa fa-road';\r\n else if (type === 'Postaja')\r\n return 'fa fa-bus';\r\n return 'fa-map-marker-alt';\r\n }\r\n\r\n private static getGeocodeLocIcon(type: GeocodeLocLocationType): string {\r\n if (type === 'rpe_ul') // ulice\r\n return 'fa fa-road';\r\n else if (type === 'kucni_brojevi' || type === 'stavbe_naslovi') // točen naslov - hišna številka\r\n return 'fa fa-building';\r\n else if (type === 'jls' || type === 'rpe_na') // naselje\r\n return 'fa fa-city';\r\n else if (type === 'dars_mp') // mejni prehodi\r\n return 'fa fa-passport';\r\n else if (type === 'dars_parking') // parkirišče\r\n return 'fa fa-parking';\r\n // else if (type === 'dars_predori') // predor\r\n // return '';\r\n else if (type === 'dars_prk') // priključek\r\n return 'fa fa-road';\r\n else if (type === 'poi') // poi\r\n return 'fa fa-star';\r\n else\r\n return 'fa-map-marker-alt';\r\n }\r\n}\r\n\r\nexport class RoutingGeocodingProps {\r\n HasNextPage: boolean;\r\n Page: number;\r\n \r\n public static fromQueryv2Response(res: Query_v2ResponseFeatureCollectionProperties): RoutingGeocodingProps {\r\n const prop = new RoutingGeocodingProps();\r\n prop.HasNextPage = res.NextPage;\r\n prop.Page = res.Page;\r\n return prop;\r\n }\r\n\r\n public static fromReverseGeocodingResponse(res: ReverseGeocodingProperties): RoutingGeocodingProps {\r\n const prop = new RoutingGeocodingProps();\r\n prop.HasNextPage = res.NextPage;\r\n prop.Page = res.Page;\r\n return prop;\r\n }\r\n\r\n public static fromGeocodeLocResponse(res: GeocodeLocFeatureCollectionProperties): RoutingGeocodingProps {\r\n const prop = new RoutingGeocodingProps();\r\n prop.HasNextPage = res.HasNext;\r\n prop.Page = Math.floor(res.Skip / res.Take); // tukaj ok, če je floor? načeloma mora biti Skip deljiv s Take\r\n return prop;\r\n }\r\n}\r\n","import { CoordinateLike, Feature } from \"../..\";\r\nimport { Query_v3ResponseFeatureProperties } from \"../../services/RM2NominatimService\";\r\n\r\nexport class PrometSiControlOptions implements IPrometSiControlOptions {\r\n hasDetailButton?: boolean;\r\n hasLegend?: boolean;\r\n openLegend?: boolean;\r\n\r\n weatherDataUrl: string;\r\n weatherImgUrl: string;\r\n weatherFrameInterval?: number;\r\n weatherLastFrameUpdateInterval?: number;\r\n\r\n constructor(opts?: IPrometSiControlOptions) {\r\n this.hasDetailButton = opts && opts.hasDetailButton === true;\r\n this.hasLegend = opts == undefined || opts.hasLegend !== false;\r\n this.openLegend = opts && opts.openLegend === true;\r\n\r\n this.weatherDataUrl = opts && opts.weatherDataUrl ? opts.weatherDataUrl : 'https://promet-dars.geoprostor.net/dc/arso.radar.list';\r\n this.weatherImgUrl = opts && opts.weatherImgUrl ? opts.weatherImgUrl : 'https://promet-dars.geoprostor.net/dc/arso.radar.img';\r\n this.weatherFrameInterval = opts && opts.weatherFrameInterval ? opts.weatherFrameInterval : 500;\r\n this.weatherLastFrameUpdateInterval = opts && opts.weatherLastFrameUpdateInterval ? opts.weatherLastFrameUpdateInterval : 5 * 60 * 1000;\r\n }\r\n}\r\n\r\nexport interface IPrometSiControlOptions {\r\n hasDetailButton?: boolean;\r\n hasLegend?: boolean;\r\n openLegend?: boolean;\r\n\r\n weatherDataUrl: string;\r\n weatherImgUrl: string;\r\n weatherFrameInterval?: number;\r\n weatherLastFrameUpdateInterval?: number;\r\n}\r\n\r\nexport class PrometSiRoutingLocation {\r\n id: string;\r\n coords: CoordinateLike; // coordse shranjujemo posebej, ker so coordsi v data snappirani na naslov/cesto\r\n data: Feature;\r\n icon: string;\r\n element: HTMLInputElement;\r\n\r\n canSwapWithNext: boolean;\r\n\r\n constructor(id: string, canSwapWithNext: boolean = true) {\r\n this.id = id;\r\n this.canSwapWithNext = canSwapWithNext;\r\n }\r\n}\r\n\r\nexport enum PrometSiSearchResultsType {\r\n Normal = 0,\r\n Routing = 1\r\n}\r\n","export enum MapTheme {\r\n Light = 'light',\r\n Dark = 'dark'\r\n}\r\n","import * as maplibregl from 'maplibre-gl';\r\nimport { Map } from '../../..';\r\nimport { LocalizationService } from '../../../services/RM2LocalizationService';\r\nimport { ServiceType } from '../../../services/RM2Service';\r\n\r\nexport class PrometSiExpandMapControl implements maplibregl.IControl {\r\n\r\n private _localizationService: LocalizationService;\r\n private _a: HTMLAnchorElement;\r\n\r\n constructor(map: Map) {\r\n this._localizationService = map.getService(ServiceType.Localization) as LocalizationService;\r\n }\r\n \r\n onAdd(map: maplibregl.Map): HTMLElement {\r\n const wrapper = document.createElement('div');\r\n wrapper.className = 'mapboxgl-ctrl mapboxgl-ctrl-group';\r\n\r\n this._a = document.createElement('a');\r\n this._a.href = `/${this._localizationService.getLanguage()}/map`;\r\n \r\n const btn = document.createElement('button');\r\n btn.type = 'button';\r\n const icon = document.createElement('span');\r\n icon.className = 'promet-si-expand-map-icon mapboxgl-ctrl-icon';\r\n\r\n this._a.appendChild(btn);\r\n btn.appendChild(icon);\r\n wrapper.appendChild(this._a);\r\n\r\n return wrapper;\r\n }\r\n\r\n onRemove(map: maplibregl.Map): void {\r\n this._a.parentNode.removeChild(this._a);\r\n }\r\n\r\n getDefaultPosition() : maplibregl.ControlPosition {\r\n return 'bottom-right';\r\n }\r\n};\r\n","import * as maplibregl from 'maplibre-gl';\r\nimport Mustache from 'mustache';\r\n\r\nimport { CoordinateLike, Geometry, LayerGroup, Map, MapEventArgs, Point, Popup, RM2Event } from '../..';\r\nimport { ContainerTemplate } from './templates/container-template';\r\nimport { RMBClickTemplate, RMBClickTemplateAd, RMBClickTemplateCesta, RMBClickTemplateInfo } from './templates/rmb-click-template';\r\nimport { SearchResultsTemplate } from './templates/search-results-template';\r\nimport { LegendTemplate } from './templates/legend-template';\r\nimport { RoutingHeaderTemplate } from './templates/routing-header-template';\r\nimport { RouteTabTemplate } from './templates/route-tab-template';\r\nimport { ErrorTemplate } from './templates/error-template';\r\n\r\nimport { IPrometSiControlOptions, PrometSiControlOptions, PrometSiRoutingLocation, PrometSiSearchResultsType } from './RM2PrometSiControlOptions';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { NominatimService, Query_v2ResponseFeatureProperties, Query_v3ResponseFeatureProperties } from '../../services/RM2NominatimService';\r\nimport { ServiceType } from '../../services/RM2Service';\r\nimport { Feature } from '../../model/RM2Feature';\r\nimport { Route, RouteFeatureCollection, RouteLegacy, RoutingService } from '../../services/RM2RoutingService';\r\nimport { IPanOptions } from '../../model/RM2CameraChangeOptions';\r\nimport { Utils } from '../../services/RM2StaticService';\r\nimport { LocalizationService } from '../../services/RM2LocalizationService';\r\nimport { Guid } from 'guid-typescript';\r\nimport { RouteStatusResponseDTO } from '../../model/RouteStatus';\r\nimport { PersistedVisibility } from '../../map/RM2Map';\r\nimport { IMarkerOptions } from '../../highlights/RM2HighlightOptions';\r\nimport { FeatureCollection, Position } from '@turf/helpers';\r\nimport { Projection } from '../../model/RM2Projection';\r\nimport { PrometSiExpandMapControl } from './promet-si-expand-map-control/RM2PrometSiExpandMapControl';\r\nimport { MeteoWeatherData } from '../../model/MeteoWeatherData';\r\nimport proj4 from 'proj4';\r\n\r\n// REQUIRE\r\n// require('../../../demo/assets/environment-promet-si/css/main.css');\r\n// require('../../../demo/assets/res/css/RM2MapControl.css');\r\n// require('../../../demo/assets/res/css/RM2PrometSiControl.css');\r\n\r\ndeclare var $: any;\r\n\r\nexport class PrometSiControl implements maplibregl.IControl {\r\n protected _map: Map;\r\n\r\n private _options: IPrometSiControlOptions;\r\n\r\n private _nominatimService: NominatimService;\r\n private _routingService: RoutingService;\r\n private _localizationService: LocalizationService;\r\n\r\n private _container: HTMLDivElement;\r\n private _searchBarContainer: HTMLDivElement;\r\n private _searchResults: HTMLDivElement;\r\n // private _legendBg: HTMLDivElement;\r\n private _legend: HTMLDivElement;\r\n private _routing: HTMLDivElement;\r\n private _routingBottomSearchResultsContainer: HTMLDivElement;\r\n private _routingHeader: HTMLDivElement;\r\n private _routingTabsContainer: HTMLDivElement;\r\n private _routingBottom: HTMLDivElement;\r\n private _routingSave: HTMLDivElement;\r\n private _routingSpinner: HTMLDivElement;\r\n private _routingError: HTMLDivElement;\r\n private _routingSearchResults: HTMLDivElement;\r\n private _searchInput: { element: HTMLInputElement, data?: Feature };\r\n\r\n private readonly weatherLayerName = 'mb-r-meteo-weather-layer';\r\n private readonly weatherSourceName = 'mb-r-meteo-weather-source';\r\n private _weatherGroup: string;\r\n private _weatherData: MeteoWeatherData[] = [];\r\n private _weatherContainer: HTMLDivElement;\r\n private _weatherTimestampSpan: HTMLSpanElement;\r\n\r\n private popupRmb: Popup;\r\n private _searchResultsFeatures: Feature[] = [];\r\n\r\n public get onRouteSaved() { return this._onRouteSaved.expose(); }\r\n protected readonly _onRouteSaved = new RM2Event();\r\n\r\n private _focusedSearchInput: PrometSiRoutingLocation;\r\n private get focusedSearchInput(): PrometSiRoutingLocation { return this._focusedSearchInput; }\r\n private set focusedSearchInput(value: PrometSiRoutingLocation) {\r\n this._focusedSearchInput = value;\r\n if (value == null)\r\n this.setSearchResultsStatus(false, PrometSiSearchResultsType.Routing);\r\n }\r\n\r\n private refreshRouteDebouncing: Subject = new Subject();\r\n private searchTextDebouncing: Subject<{ text: string, type: PrometSiSearchResultsType }> = new Subject<{ text: string, type: PrometSiSearchResultsType }>();\r\n private _routingLocationsIncrementCount: number;\r\n private _routingLocations: PrometSiRoutingLocation[] = this.getNewRoutingLocationsArray();\r\n\r\n private getNewRoutingLocationsArray(destination?: Feature): PrometSiRoutingLocation[] {\r\n this._routingLocationsIncrementCount = 3;\r\n const dest = new PrometSiRoutingLocation('input-2', false);\r\n if (destination) {\r\n dest.data = destination;\r\n const coord = destination.geometry.getCoordinate();\r\n dest.coords = [coord.x, coord.y];\r\n }\r\n\r\n return [\r\n new PrometSiRoutingLocation('input-1'),\r\n dest\r\n ];\r\n }\r\n\r\n private getRoutingLocationsArray(items: Feature[]): PrometSiRoutingLocation[] {\r\n this._routingLocationsIncrementCount = 3;\r\n const arr: PrometSiRoutingLocation[] = [];\r\n for (let i = 0; i < items.length; i++) {\r\n const item = new PrometSiRoutingLocation(`input-${i}`, i !== items.length - 1);\r\n item.data = items[i];\r\n const coord = items[i].geometry.getCoordinate();\r\n item.coords = [coord.x, coord.y];\r\n arr.push(item);\r\n }\r\n return arr;\r\n }\r\n\r\n private get responsiveBreakpoint(): number { return 503; }\r\n private get searchEntryWidth(): string { return '300px'; }\r\n // private get legendWidth(): string { return '430px'; }\r\n private get legendWidth(): string { return '300px'; }\r\n private get routingWidth(): string { return '430px'; }\r\n private get searchResultsMaxHeight(): string { return '300px'; }\r\n\r\n private get routeStatusKey(): string { return 'Status'; }\r\n private get routeIdKey(): string { return 'RouteId'; }\r\n private get routeTTBadgeClassKey(): string { return 'TTClass'; }\r\n\r\n private openLegendKey: string = 'RM2Map.PrometSi.OpenedLegend';\r\n\r\n constructor(map: Map, opts?: IPrometSiControlOptions) {\r\n this._map = map;\r\n this._options = new PrometSiControlOptions(opts);\r\n\r\n this._nominatimService = this._map.getService(ServiceType.Nominatim) as NominatimService;\r\n this._routingService = this._map.getService(ServiceType.Routing) as RoutingService;\r\n this._localizationService = this._map.getService(ServiceType.Localization) as LocalizationService;\r\n\r\n this._container = this.create();\r\n\r\n this.searchTextDebouncing.pipe(debounceTime(500)).subscribe(async (e) => this.search(e.text, e.type));\r\n this.refreshRouteDebouncing.pipe(debounceTime(500)).subscribe(() => this.refreshRoutes());\r\n\r\n this._map.onLongClick.subscribe(e => this.openMapClickOptionsMenu(e));\r\n\r\n this._map.onClick.subscribe(e => {\r\n if (e.nativeEvent instanceof MouseEvent) {\r\n if (e.nativeEvent.button === 2) // RMB\r\n this.openMapClickOptionsMenu(e);\r\n else if (e.nativeEvent.button === 0) { // LMB\r\n if (this.popupRmb)\r\n this.popupRmb.close();\r\n if (this.getRoutingStatus() === true && (this.routes == null || this.routes.length === 0)) {\r\n // set coordinate as next route point\r\n }\r\n else {\r\n const filtered = e.featureLayers.filter(l => l.source === Map.routeSourceName);\r\n if (filtered.length > 0 && filtered.length == e.featureLayers.length) {\r\n const ft = e.features[0];\r\n const routeId = ft.properties[this.routeIdKey];\r\n const selected = this.routes.findIndex(r => r[this.routeIdKey] === routeId);\r\n if (selected !== this.selectedRoute)\r\n this.setRoutesStatus(this.routes, selected, false);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n private openMapClickOptionsMenu(e: MapEventArgs) {\r\n e.nativeEvent.preventDefault();\r\n const template = document.createElement('div');\r\n template.innerHTML = Mustache.render(RMBClickTemplate, {});\r\n this._localizationService.refresh(template);\r\n\r\n const offset: [number, number] = [0, 0];\r\n // TODO: promises & cancellations\r\n const info: HTMLAnchorElement = template.querySelector('#promet-si-rmb-info');\r\n info.onclick = async () => {\r\n this._map.closeAllPopups();\r\n const res = await this._nominatimService.reverse_v3(e.coordinate);\r\n const content = document.createElement('div');\r\n content.className = 'p-2';\r\n if (res && res.features && res.features.length > 0) {\r\n const ft = res.first;\r\n // round distances\r\n if (ft.properties.Ad && ft.properties.Ad.dist)\r\n ft.properties.Ad.dist = Math.round(ft.properties.Ad.dist);\r\n if (ft.properties.Cesta && ft.properties.Cesta.dist)\r\n ft.properties.Cesta.dist = Math.round(ft.properties.Cesta.dist);\r\n if (ft.properties.Cesta && ft.properties.Cesta.ds_at)\r\n ft.properties.Cesta.ds_at = Math.round(ft.properties.Cesta.ds_at);\r\n\r\n ft.properties.x = Math.round(ft.geometry.coordinates[0] as number * 100000) / 100000;\r\n ft.properties.y = Math.round(ft.geometry.coordinates[1] as number * 100000) / 100000;\r\n\r\n content.innerHTML = Mustache.render(RMBClickTemplateInfo, ft);\r\n this._localizationService.refresh(content);\r\n\r\n const adEl: HTMLAnchorElement = content.querySelector('#promet-si-geocoding-ad');\r\n if (adEl) {\r\n adEl.onclick = () => {\r\n this._map.closeAllPopups();\r\n const adContent = document.createElement('div');\r\n adContent.innerHTML = Mustache.render(RMBClickTemplateAd, ft.properties.Ad);\r\n this.popupRmb = this._map.openPopup([ft.properties.Ad.bvx, ft.properties.Ad.bvy], adContent, {\r\n offset: offset\r\n });\r\n };\r\n }\r\n\r\n const cestaEl: HTMLAnchorElement = content.querySelector('#promet-si-geocoding-cesta');\r\n if (cestaEl) {\r\n cestaEl.onclick = () => {\r\n this._map.closeAllPopups();\r\n const cestaContent = document.createElement('div');\r\n cestaContent.innerHTML = Mustache.render(RMBClickTemplateCesta, ft.properties.Cesta);\r\n this.popupRmb = this._map.openPopup([ft.properties.Cesta.bvx, ft.properties.Cesta.bvy], cestaContent, {\r\n offset: offset\r\n });\r\n };\r\n }\r\n }\r\n else {\r\n // TODO\r\n }\r\n\r\n this.popupRmb = this._map.openPopup(e.coordinate, content, {\r\n offset: offset\r\n });\r\n };\r\n\r\n const start: HTMLAnchorElement = template.querySelector('#promet-si-rmb-start');\r\n start.onclick = async () => {\r\n this._map.closeAllPopups();\r\n this.setRoutingStatus(true);\r\n const res = await this._nominatimService.reverse_v3(e.coordinate);\r\n if (res && res.features && res.features.length > 0) {\r\n this.focusedSearchInput = this._routingLocations[0];\r\n this.onSearchResultSelected(res.first, PrometSiSearchResultsType.Routing);\r\n }\r\n };\r\n\r\n const via: HTMLAnchorElement = template.querySelector('#promet-si-rmb-via');\r\n via.onclick = async () => {\r\n this._map.closeAllPopups();\r\n this.setRoutingStatus(true);\r\n const res = await this._nominatimService.reverse_v3(e.coordinate);\r\n if (res && res.features && res.features.length > 0) {\r\n this._routingLocations.splice(this._routingLocations.length - 1, 0, new PrometSiRoutingLocation(`input-${this._routingLocationsIncrementCount++}`));\r\n this.refreshRoutingLocations();\r\n this.refreshRoutingSize();\r\n\r\n this.focusedSearchInput = this._routingLocations[this._routingLocations.length - 2];\r\n this.onSearchResultSelected(res.first, PrometSiSearchResultsType.Routing);\r\n }\r\n };\r\n\r\n const destination: HTMLAnchorElement = template.querySelector('#promet-si-rmb-destination');\r\n destination.onclick = async () => {\r\n this._map.closeAllPopups();\r\n this.setRoutingStatus(true);\r\n const res = await this._nominatimService.reverse_v3(e.coordinate);\r\n if (res && res.features && res.features.length > 0) {\r\n this.focusedSearchInput = this._routingLocations[this._routingLocations.length - 1];\r\n this.onSearchResultSelected(res.first, PrometSiSearchResultsType.Routing);\r\n }\r\n };\r\n\r\n this._map.closeAllPopups();\r\n this.popupRmb = this._map.openPopup(e.coordinate, template, {\r\n addContainer: false,\r\n hasCloseButton: false,\r\n closesOnClick: false,\r\n panOnOpen: false,\r\n offset: offset\r\n // cameraOptions: { relCenterX: this.getRelCenterX() }\r\n });\r\n\r\n this.popupRmb.onClose.subscribe(() => this.popupRmb = null);\r\n }\r\n\r\n injectedRouteId: string = null;\r\n injectedRouteTitle: string = null;\r\n public injectRouteForEditing(route: RouteLegacy) {\r\n if (route) {\r\n this.setRoutingStatus(true);\r\n const points = route.Data.features.map(x => {\r\n const ft = Object.assign({}, x);\r\n ft.geometry = Geometry.transform(x.geometry, Projection.create('EPSG:3912'), Projection.create('EPSG:4326'));\r\n return Feature.fromGeoJson(ft);\r\n });\r\n\r\n // // MOCK PODATKI ZA TEST\r\n // const mockPoints = [[14.501556, 46.056458], [14.491636, 46.067675], [14.478019, 46.083590], [14.470677, 46.107190]];\r\n // const points = route.Data.features.map((x, i) => {\r\n // const ft = Object.assign({}, x);\r\n // ft.geometry.coordinates = mockPoints[i];\r\n // return Feature.fromGeoJson(ft);\r\n // });\r\n\r\n this.injectedRouteId = route.Id;\r\n this.injectedRouteTitle = route.Title;\r\n this._routingLocations = this.getRoutingLocationsArray(points);\r\n this._searchInput.element.value = '';\r\n this._searchInput.data = null;\r\n this.setRoutesStatus([]);\r\n this.refreshRoutingLocations();\r\n // this.refreshRoute();\r\n this.refreshRouteDebouncing.next();\r\n }\r\n }\r\n\r\n public clear() {\r\n this.currFetchId = null;\r\n this.injectedRouteId = null;\r\n this.injectedRouteTitle = null;\r\n this._routingLocations = this.getNewRoutingLocationsArray();\r\n this._searchInput.element.value = '';\r\n this._searchInput.data = null;\r\n this.setRoutesStatus([]);\r\n this.refreshRoutingLocations();\r\n // this.refreshRoute();\r\n this.refreshRouteDebouncing.next();\r\n }\r\n\r\n private create(): HTMLDivElement {\r\n const menuContainer = document.createElement('div');\r\n menuContainer.className = 'promet-si-search-container animate-left rounded bg-white position-absolute';\r\n const containerParsed = Mustache.render(ContainerTemplate, {});\r\n this._localizationService.refresh(containerParsed);\r\n menuContainer.innerHTML = containerParsed;\r\n this._searchBarContainer = menuContainer;\r\n this.refreshSearchBarContainerSize();\r\n\r\n // search results\r\n this._searchResults = document.createElement('div');\r\n this._searchResults.className = 'animate-max-height animate-left shadow-sm';\r\n this._searchResults.style.margin = '7px -7px 0 -7px';\r\n this.setSearchResultsStatus(false, PrometSiSearchResultsType.Normal); // hide by default\r\n\r\n // // legend dim background\r\n // const legendBg = document.createElement('div');\r\n // legendBg.className = 'promet-si-legend-dim';\r\n // legendBg.onclick = () => this.setLegendStatus(false);\r\n // this._legendBg = legendBg;\r\n\r\n // legend\r\n const legend = document.createElement('div');\r\n legend.className = \"bg position-absolute animate-left promet-si-legend\";\r\n\r\n const legendGroups = this.getLegendGroups();\r\n legend.innerHTML = Mustache.render(LegendTemplate, {\r\n groups: legendGroups\r\n });\r\n this._localizationService.refresh(legend);\r\n\r\n const hideLegendButton: HTMLButtonElement = legend.querySelector('#hide-legend-button');\r\n hideLegendButton.onclick = () => this.setLegendStatus(false);\r\n this._legend = legend;\r\n this.refreshLegendSize();\r\n\r\n if (this._options.openLegend === true && !localStorage.getItem(this.openLegendKey))\r\n this.setLegendStatus(true);\r\n else\r\n this.setLegendStatus(false);\r\n\r\n // legend item status UI\r\n const updateLegendItemUI = (item: HTMLInputElement, checked: boolean) => {\r\n item.checked = checked; // check\r\n\r\n // background\r\n if (checked)\r\n item.parentElement.parentElement.classList.add('bg-selected');\r\n else\r\n item.parentElement.parentElement.classList.remove('bg-selected');\r\n };\r\n\r\n // legend checkboxes\r\n const checkboxes = this._legend.querySelectorAll(\"[id^='checkbox-']\");\r\n checkboxes.forEach((c: HTMLInputElement) => {\r\n updateLegendItemUI(c, (legendGroups.filter(l => l.isCheckbox === true).map(l => l.layers) as any).flat().find((g: LayerGroup) => g.id === c.name).visible !== false); // set initial UI\r\n c.addEventListener('input', e => {\r\n this._map.setGroupVisibility(c.name, c.checked);\r\n this._map.persistVisibility([{ type: 'group', id: c.name, visible: c.checked }]);\r\n }); // set visibility\r\n });\r\n\r\n // legend radios\r\n const radios = this._legend.querySelectorAll(\"[id^='radio-']\");\r\n radios.forEach((c: HTMLInputElement) => {\r\n const parent: LayerGroup = (legendGroups.filter(l => l.isCheckbox === false).map(l => l.layers) as any).flat().find((g: LayerGroup) => g.id === c.name);\r\n updateLegendItemUI(c, parent.children.find(l => l.id === c.value).visible !== false); // set initial UI\r\n c.addEventListener('input', e => {\r\n const filtered = parent.children.filter(child => child.id !== c.value);\r\n filtered.forEach(other => this._map.setGroupVisibility(other.id, false));\r\n this._map.setGroupVisibility(c.value, true); // set visibility\r\n\r\n const persist: PersistedVisibility[] = filtered.map(x => {\r\n return {\r\n type: 'group',\r\n id: x.id,\r\n visible: false\r\n };\r\n });\r\n\r\n persist.push({\r\n type: 'group',\r\n id: c.id,\r\n visible: true\r\n });\r\n\r\n this._map.persistVisibility(persist);\r\n });\r\n });\r\n\r\n const weatherLayer = this._map.getLayer(this.weatherLayerName);\r\n if (weatherLayer && weatherLayer.metadata)\r\n this._weatherGroup = weatherLayer.metadata.gid;\r\n\r\n if (this._weatherGroup && this._map.getGroupVisibility(this._weatherGroup))\r\n this.tryStartWeatherLayerUpdating(true);\r\n\r\n // group visibility update\r\n this._map.onGroupVisibilityChanged.subscribe(g => {\r\n const parent = g.getParent();\r\n if (parent && parent.sequenceMode === 'choice') {\r\n // update radios\r\n const radios = this._legend.querySelectorAll(`[name=\"${parent.id}\"]`);\r\n radios.forEach((radio: HTMLInputElement) => updateLegendItemUI(radio, radio.value === g.id));\r\n }\r\n else {\r\n // update checkbox\r\n const checkbox: HTMLInputElement = this._legend.querySelector(`[id^='checkbox-${g.id}']`);\r\n updateLegendItemUI(checkbox, g.visible !== false);\r\n }\r\n\r\n // listen to weather layer visibility changes\r\n if (this._weatherGroup && g.id === this._weatherGroup) {\r\n if (this._map.getGroupVisibility(g.id))\r\n this.tryStartWeatherLayerUpdating();\r\n else\r\n this.stopWeatherLayerUpdating();\r\n }\r\n });\r\n\r\n // menu button\r\n const menuButton: HTMLElement = menuContainer.querySelector('#menu-button');\r\n menuButton.onclick = () => {\r\n if (this.getSearchResultsStatus())\r\n this.setSearchResultsStatus(false, PrometSiSearchResultsType.Normal);\r\n else\r\n this.setLegendStatus(!this.getLegendStatus());\r\n };\r\n\r\n if (this._options.hasLegend === false)\r\n menuButton.parentElement.removeChild(menuButton);\r\n\r\n // routing button\r\n const routingButton: HTMLElement = menuContainer.querySelector('#routing-button');\r\n routingButton.onclick = () => this.setRoutingStatus(true);\r\n\r\n // routing\r\n this._routing = document.createElement('div');\r\n this._routing.className = \"position-absolute animate-opacity promet-si-routing d-flex flex-column\";\r\n this._routingHeader = document.createElement('div');\r\n this.refreshRoutingLocations();\r\n this._routing.appendChild(this._routingHeader);\r\n this._routing.style.visibility = 'hidden';\r\n\r\n // routing bottom\r\n this._routingBottom = document.createElement('div');\r\n // this._routingBottom.className = 'position-relative bg flex-grow-1 d-flex flex-column';\r\n this._routingBottom.className = 'position-relative bg h-100';\r\n this._routingBottom.style.overflowY = 'auto';\r\n\r\n // routing bottom search results\r\n this._routingSearchResults = document.createElement('div');\r\n this._routingSearchResults.className = 'animate-max-height border border-top-0 rounded-bottom shadow-sm';\r\n this._routingSearchResults.style.zIndex = '10';\r\n // this._routingSearchResults.style.left = '-31px';\r\n this._routingSearchResults.style.left = '0px';\r\n this._routingSearchResults.style.right = '0px';\r\n this._routingSearchResults.style.top = '0px';\r\n // this._routingSearchResults.style.position = 'fixed';\r\n this._routingSearchResults.style.position = 'absolute';\r\n this.setSearchResultsStatus(false, PrometSiSearchResultsType.Routing); // hide by default\r\n\r\n // this._routingBottom.appendChild(this._routingSearchResults);\r\n this._routingBottomSearchResultsContainer = document.createElement('div');\r\n this._routingBottomSearchResultsContainer.className = 'position-relative h-100 flex-grow-1';\r\n this._routingBottomSearchResultsContainer.appendChild(this._routingBottom);\r\n this._routingBottomSearchResultsContainer.appendChild(this._routingSearchResults);\r\n\r\n this._routing.appendChild(this._routingBottomSearchResultsContainer);\r\n\r\n // search input\r\n this._searchInput = { element: menuContainer.querySelector('#search-input') };\r\n this._searchInput.element.addEventListener('input', e => this.searchTextDebouncing.next({ text: this._searchInput.element.value, type: PrometSiSearchResultsType.Normal }));\r\n this._searchInput.element.addEventListener('keyup', e => this.onSearchInputEnterKey(e, PrometSiSearchResultsType.Normal));\r\n\r\n menuContainer.appendChild(this._searchResults);\r\n\r\n // weather\r\n const weatherContainer = document.createElement('div');\r\n weatherContainer.className = 'position-absolute';\r\n weatherContainer.style.boxShadow = 'none';\r\n const weatherBg = document.createElement('div');\r\n weatherBg.className = 'rm2-meteo-weather-bg';\r\n const text = document.createElement('span');\r\n weatherBg.appendChild(text);\r\n weatherContainer.appendChild(weatherBg);\r\n this._weatherContainer = weatherContainer;\r\n this._weatherTimestampSpan = text;\r\n this.stopWeatherLayerUpdating();\r\n\r\n window.addEventListener('resize', this.resizeElements);\r\n this.resizeElements();\r\n\r\n const container = document.createElement('div');\r\n container.appendChild(menuContainer);\r\n container.appendChild(weatherContainer);\r\n container.appendChild(this._routing);\r\n // container.appendChild(legendBg);\r\n container.appendChild(this._legend);\r\n return container;\r\n }\r\n\r\n private setSearchResults(results: Feature[], type: PrometSiSearchResultsType) {\r\n results.forEach((ft: any, i) => {\r\n ft.index = i; // indeksiranje za Mustache\r\n if (!ft.properties.Description)\r\n ft.properties.Description = ft.properties.Title;\r\n });\r\n this._searchResultsFeatures = results;\r\n const searchResultsParsed = Mustache.render(SearchResultsTemplate, {\r\n results: results\r\n });\r\n\r\n const container = this.getContainerFromSearchResultsType(type);\r\n container.innerHTML = searchResultsParsed;\r\n\r\n // search result select listener\r\n const items = container.querySelectorAll('a');\r\n items.forEach(item => item.onclick = () => {\r\n const i = Number.parseInt(item.id.substring(7));\r\n const result = results[i];\r\n this.onSearchResultSelected(result, type);\r\n this.setSearchResultsStatus(false, type);\r\n });\r\n\r\n this.setSearchResultsStatus(results.length > 0, type);\r\n }\r\n\r\n private onSearchInputEnterKey(e: KeyboardEvent, type: PrometSiSearchResultsType) {\r\n e.preventDefault();\r\n if (e.code === 'Enter' && this._searchResultsFeatures.length === 1) {\r\n this.onSearchResultSelected(this._searchResultsFeatures[0], type);\r\n this.setSearchResultsStatus(false, type);\r\n }\r\n }\r\n\r\n private setSearchResultsStatus(visible: boolean, type: PrometSiSearchResultsType) {\r\n this.getContainerFromSearchResultsType(type).style.maxHeight = visible ? this.searchResultsMaxHeight : '0px';\r\n if (visible === false)\r\n this._searchResultsFeatures = [];\r\n }\r\n\r\n private getSearchResultsStatus(): boolean {\r\n return this._searchResults.style.maxHeight !== '0px';\r\n }\r\n\r\n private onSearchResultSelected(result: Feature, type: PrometSiSearchResultsType) {\r\n if (type === PrometSiSearchResultsType.Normal) {\r\n this._searchInput.element.value = result.properties.Title;\r\n this._searchInput.data = result;\r\n const coord = result.geometry.getCoordinate();\r\n this.highlightLocation([coord.x, coord.y]);\r\n }\r\n else if (type === PrometSiSearchResultsType.Routing) {\r\n const coord = result.geometry.getCoordinate();\r\n this.focusedSearchInput.element.value = result.properties.Title;\r\n this.focusedSearchInput.coords = [coord.x, coord.y];\r\n this.focusedSearchInput.data = result;\r\n // this.refreshRoute();\r\n this.refreshRouteDebouncing.next();\r\n }\r\n }\r\n\r\n private async search(query: string, type: PrometSiSearchResultsType) {\r\n if (query.length > 0) {\r\n const locs = await this._nominatimService.query_v3(query);\r\n const fts = locs.features.slice();\r\n this.setSearchResults(fts, type);\r\n }\r\n else\r\n this.setSearchResultsStatus(false, type);\r\n }\r\n\r\n private getLegendStatus(): boolean {\r\n return this._legend.getAttribute('visible') === 'true';\r\n }\r\n\r\n private setLegendStatus(visible: boolean) {\r\n const width = this.getLegendWidth();\r\n const l = visible ? '-10px' : `calc(-${width} - 10px)`;\r\n const lPositive = visible ? `${width}` : '10px';\r\n this._legend.style.left = l;\r\n this._legend.setAttribute('visible', visible.toString());\r\n this._searchBarContainer.style.left = lPositive;\r\n\r\n // // this._searchResults.style.left = lPositive;\r\n // if (visible)\r\n // this._legendBg.classList.add('show');\r\n // else\r\n // this._legendBg.classList.remove('show');\r\n\r\n if (this._options.openLegend && visible === false)\r\n localStorage.setItem(this.openLegendKey, 'true');\r\n }\r\n\r\n private getLegendGroups(): { layers: LayerGroup[], isCheckbox: boolean }[] {\r\n const metadata = this._map.metadata;\r\n let groupsArray: any[] = [];\r\n if (metadata && metadata.groups) {\r\n const groups = metadata.groups.filter(g => g.id && g.uiVisible !== false);\r\n const radio = groups.filter(g => g.sequenceMode === 'choice');\r\n const checkbox = groups.filter(g => g.sequenceMode !== 'choice');\r\n\r\n groupsArray = [\r\n {\r\n layers: checkbox,\r\n isCheckbox: true\r\n },\r\n {\r\n layers: radio,\r\n isCheckbox: false\r\n }\r\n ]\r\n }\r\n\r\n return groupsArray;\r\n }\r\n\r\n private setRoutingStatus(visible: boolean) {\r\n this.focusedSearchInput = null;\r\n this._map.clearRoute();\r\n if (visible) {\r\n this._routing.classList.add('show');\r\n if (this._searchInput.data == undefined) {\r\n if (this.routes.length > 0) {\r\n this.setRoutesStatus(this.routes, this.selectedRoute); // show previous route\r\n this.startRouteStatusRefresh(this.currStatusRefreshId, this.routes, false);\r\n }\r\n else if (this._routingLocations.length > 0) {\r\n // show selected marker\r\n const waypoints = this._routingLocations.filter(l => l.coords != null).map(l => l.coords);\r\n if (waypoints.length > 0)\r\n this.highlightLocation(waypoints[0]);\r\n }\r\n }\r\n this.setLegendStatus(false);\r\n this.setSearchResultsStatus(false, PrometSiSearchResultsType.Normal);\r\n this.setLegendStatus(false);\r\n }\r\n else {\r\n this._routing.classList.remove('show');\r\n this.clearHighlight();\r\n this.clearInstructionHighlight();\r\n this.stopRouteStatusRefresh();\r\n this.stopGeolocationSearch();\r\n }\r\n\r\n if (this._searchInput.data) {\r\n this._routingLocations = this.getNewRoutingLocationsArray(this._searchInput.data);\r\n this._searchInput.element.value = '';\r\n this._searchInput.data = null;\r\n this.setRoutesStatus([]);\r\n this.refreshRoutingLocations();\r\n // this.refreshRoute();\r\n this.refreshRouteDebouncing.next();\r\n\r\n // focus on first input\r\n const firstInput: HTMLInputElement = this._routingHeader.querySelector(\"input\");\r\n firstInput.focus();\r\n }\r\n\r\n if (visible)\r\n this.refreshRoutingSize();\r\n }\r\n\r\n private getRoutingStatus(): boolean {\r\n return this._routing.classList.contains('show');\r\n }\r\n\r\n private myLocExecuting: number = null;\r\n private refreshRoutingLocations() {\r\n for (let i = 0; i < this._routingLocations.length; i++) {\r\n const loc = this._routingLocations[i];\r\n const isLast = i === this._routingLocations.length - 1;\r\n if (i === 0)\r\n loc.icon = 'assets/icons/routing_marker_start.svg';\r\n else if (isLast)\r\n loc.icon = 'assets/icons/routing_marker_end.svg';\r\n else\r\n loc.icon = 'assets/icons/routing_marker_via.svg';\r\n\r\n loc.canSwapWithNext = isLast === false;\r\n }\r\n\r\n this._routingHeader.innerHTML = Mustache.render(RoutingHeaderTemplate, {\r\n locations: this._routingLocations\r\n });\r\n this._localizationService.refresh(this._routingHeader);\r\n\r\n // clear input button\r\n const myLocButtons = this._routingHeader.querySelectorAll(\"[id^='my-loc-']\");\r\n myLocButtons.forEach((btn: HTMLDivElement) => {\r\n btn.onclick = async () => {\r\n this.setRoutingSpinnerStatus(true);\r\n this.myLocExecuting = navigator.geolocation.watchPosition(async (e) => {\r\n const locs = await this._nominatimService.reverse_v3([e.coords.longitude, e.coords.latitude]);\r\n if (locs && locs.length > 0) {\r\n const result = locs.features[0];\r\n const coord = result.geometry.getCoordinate();\r\n this.focusedSearchInput = this._routingLocations.find(l => l.id === btn.id.substr(7));\r\n this.focusedSearchInput.element.value = result.properties.Title;\r\n this.focusedSearchInput.coords = [coord.x, coord.y];\r\n this.focusedSearchInput.data = result;\r\n }\r\n else\r\n this.setRoutingErrorStatus(this._localizationService.localize('rmap.general.errors.cannot-get-user-location'));\r\n\r\n this.setRoutingSpinnerStatus(false);\r\n this.refreshRoutingLocations();\r\n\r\n // this.refreshRoute();\r\n this.refreshRouteDebouncing.next();\r\n this.stopGeolocationSearch();\r\n },\r\n () => {\r\n this.setRoutingErrorStatus(this._localizationService.localize('rmap.general.errors.cannot-get-user-location'));\r\n this.setRoutingSpinnerStatus(false);\r\n this.stopGeolocationSearch();\r\n });\r\n\r\n\r\n // const found = this._routingLocations.findIndex(l => l.id === btn.id.substr(7));\r\n // const loc = this._routingLocations[found];\r\n // // remove input\r\n // const before = this._routingLocations.length;\r\n // if (this._routingLocations.length > 2)\r\n // this._routingLocations.splice(found, 1);\r\n // else {\r\n // if (loc.data || loc.element.value) {\r\n // // clear input\r\n // loc.data = null;\r\n // loc.coords = null;\r\n // loc.element.value = '';\r\n // }\r\n // }\r\n\r\n // this.refreshRoutingLocations();\r\n // if (before != this._routingLocations.length)\r\n // this.refreshRoutingSize();\r\n\r\n // // this.refreshRoute();\r\n // this.refreshRouteDebouncing.next();\r\n };\r\n });\r\n\r\n // clear input button\r\n const clearInputButtons = this._routingHeader.querySelectorAll(\"[id^='remove-']\");\r\n clearInputButtons.forEach((btn: HTMLDivElement) => {\r\n btn.onclick = () => {\r\n const found = this._routingLocations.findIndex(l => l.id === btn.id.substr(7));\r\n const loc = this._routingLocations[found];\r\n // remove input\r\n const before = this._routingLocations.length;\r\n if (this._routingLocations.length > 2)\r\n this._routingLocations.splice(found, 1);\r\n else {\r\n if (loc.data || loc.element.value) {\r\n // clear input\r\n loc.data = null;\r\n loc.coords = null;\r\n loc.element.value = '';\r\n }\r\n }\r\n\r\n this.refreshRoutingLocations();\r\n if (before != this._routingLocations.length)\r\n this.refreshRoutingSize();\r\n\r\n // this.refreshRoute();\r\n this.refreshRouteDebouncing.next();\r\n };\r\n });\r\n\r\n // swap locations button\r\n const swapButtons = this._routingHeader.querySelectorAll(\"[id^='swap-']\");\r\n swapButtons.forEach((btn: HTMLButtonElement) => {\r\n btn.onclick = () => {\r\n const found = this._routingLocations.findIndex(l => l.id === btn.name);\r\n [this._routingLocations[found], this._routingLocations[found + 1]] = [this._routingLocations[found + 1], this._routingLocations[found]]\r\n this.refreshRoutingLocations();\r\n // this.refreshRoute();\r\n this.refreshRouteDebouncing.next();\r\n };\r\n });\r\n\r\n // inputs\r\n const inputs = this._routingHeader.querySelectorAll(\"[id^='input-']\");\r\n inputs.forEach((input: HTMLInputElement) => {\r\n const loc = this._routingLocations.find(l => l.id === input.name);\r\n loc.element = input;\r\n if (loc.data)\r\n input.value = loc.data.properties.Title; // initial value\r\n\r\n input.addEventListener('input', e => this.searchTextDebouncing.next({ text: input.value, type: PrometSiSearchResultsType.Routing }));\r\n input.addEventListener('focus', e => this.focusedSearchInput = loc);\r\n input.addEventListener('keydown', e => {\r\n if (e.code === 'Enter')\r\n e.preventDefault();\r\n });\r\n input.addEventListener('keyup', e => this.onSearchInputEnterKey(e, PrometSiSearchResultsType.Routing));\r\n });\r\n\r\n // routing hide button\r\n const routingHideButton: HTMLDivElement = this._routingHeader.querySelector('#hide-button');\r\n routingHideButton.onclick = () => this.setRoutingStatus(false);\r\n\r\n // add location button\r\n const addLocationButton: HTMLButtonElement = this._routingHeader.querySelector('#add-location-button');\r\n addLocationButton.onclick = () => {\r\n this._routingLocations.splice(this._routingLocations.length - 1, 0, new PrometSiRoutingLocation(`input-${this._routingLocationsIncrementCount++}`));\r\n this.refreshRoutingLocations();\r\n this.refreshRoutingSize();\r\n };\r\n }\r\n\r\n private drawRoutes(routes: Route[], pan: boolean = true) {\r\n const p = 30;\r\n for (let i = 0; i < routes.length; i++) {\r\n const r = routes[i];\r\n const s: RouteStatusResponseDTO = r[this.routeStatusKey];\r\n const selected = i === this.selectedRoute;\r\n const routeId = Guid.create().toString();\r\n r[this.routeIdKey] = routeId;\r\n if (s) {\r\n r.routeSegments = s.apply(r.route, selected, this._map.metadata.routeFcdColors);\r\n const loop = (fc: FeatureCollection) => {\r\n for (let j = 0; j < fc.features.length; j++) {\r\n const props = fc.features[j].properties\r\n props[this.routeIdKey] = routeId;\r\n props['includeInPopup'] = false;\r\n }\r\n };\r\n\r\n loop(r.route);\r\n loop(r.routeSegments);\r\n }\r\n else {\r\n for (let j = 0; j < r.route.features.length; j++) {\r\n const props = r.route.features[j].properties;\r\n props['Color'] = Utils.routeColor(selected);\r\n props[this.routeIdKey] = routeId;\r\n props['includeInPopup'] = false;\r\n }\r\n }\r\n }\r\n\r\n if (this.getRoutingStatus()) {\r\n const reorder = routes.slice();\r\n if (reorder.length > 1) {\r\n // reorder - selected route on top\r\n const sel = reorder.splice(this.selectedRoute, 1);\r\n reorder.push(...sel);\r\n }\r\n\r\n const padding = {\r\n left: p,\r\n top: p,\r\n right: p,\r\n bottom: p\r\n };\r\n\r\n const width = this._map.getSize()[0];\r\n if (width > this.responsiveBreakpoint)\r\n padding.left = Number.parseInt(this.routingWidth.substr(0, this.routingWidth.length - 2)) + p;\r\n else {\r\n // TODO: RESPONSIVE\r\n padding.top = p;\r\n padding.bottom = p;\r\n }\r\n\r\n this._map.drawRoutes(reorder, {\r\n pan: pan,\r\n cameraOptions: {\r\n padding: padding\r\n }\r\n });\r\n }\r\n }\r\n\r\n private routes: Route[] = [];\r\n private selectedRoute: number = -1;\r\n private setRoutesStatus(routes: Route[], selectedIndex: number = 0, pan: boolean = true) {\r\n this.clearRoutingTabContainer();\r\n this.clearInstructionHighlight();\r\n\r\n this.routes = routes;\r\n this.selectedRoute = -1;\r\n if (routes.length > 0) {\r\n this.selectedRoute = selectedIndex;\r\n this._routingTabsContainer = document.createElement('div');\r\n routes.forEach((r, i) => {\r\n const id = i;\r\n // create tab for each route\r\n const tab = document.createElement('div');\r\n const waypoints = this._routingLocations.filter(r => r.data);\r\n const instructions = r.route.properties.Instructions.features.slice().filter(x => x.properties.Type !== 'station-toll');\r\n let viaPoints = 1;\r\n instructions.forEach(ins => {\r\n const type = ins.properties.Type;\r\n const getIcon = (stationInstructionType: string) => {\r\n if (stationInstructionType === 'instruction-start')\r\n return 'nav_start';\r\n if (stationInstructionType === 'instruction-turn-left')\r\n return 'nav_left';\r\n else if (stationInstructionType === 'instruction-turn-right')\r\n return 'nav_right';\r\n else if (stationInstructionType === 'instruction-turn-straight')\r\n return 'nav_straight';\r\n // // else if (stationInstructionType === 'station-toll')\r\n // // return 'fa fa-exclamation-triangle text-warning';\r\n else if (stationInstructionType === 'instruction-turn-sharpleft')\r\n return 'nav_sharp_left';\r\n else if (stationInstructionType === 'instruction-turn-sharpright')\r\n return 'nav_sharp_right';\r\n else if (stationInstructionType === 'instruction-turn-uturn')\r\n return 'nav_u_turn';\r\n else if (stationInstructionType === 'instruction-turn-end' || stationInstructionType === 'instruction-end')\r\n return 'nav_finish';\r\n return 'avto_black';\r\n };\r\n\r\n ins.setField('CumulativeDurationString', Utils.formatDuration(ins.properties.CumulativeDuration));\r\n ins.setField('CumulativeLengthString', Utils.formatDistance(ins.properties.CumulativeLength));\r\n ins.setField('Icon', getIcon(type));\r\n ins.setField('TitleString', ins.properties.TitleTranslations.find(t => t.Item1 == \"sl\").Item2); // TODO: lokalizacija\r\n\r\n const coord = ins.geometry.getCoordinate();\r\n ins.setField('Coordinate', `${coord.x};${coord.y}`);\r\n\r\n if (type === 'instruction-via') {\r\n ins.setField('TitleString', waypoints[viaPoints].data.properties.Title);\r\n ins.setField('IsVia', true);\r\n viaPoints++;\r\n }\r\n });\r\n\r\n const first = waypoints[0].data;\r\n const last = waypoints[waypoints.length - 1].data;\r\n let detourText = '';\r\n if (r.route.properties.IsDetour)\r\n detourText += ` (${this._localizationService.localize('rmap.rm.routing.detour').toLowerCase()})`;\r\n\r\n tab.innerHTML = Mustache.render(RouteTabTemplate, {\r\n route: r,\r\n Selected: id == selectedIndex,\r\n Id: id,\r\n Start: first,\r\n Instructions: instructions,\r\n Destination: last,\r\n Length: Utils.formatDistance(r.route.properties.Length),\r\n Profile: r.route.properties.Mode,\r\n DetourText: detourText,\r\n Duration: Utils.formatDuration(r.route.properties.RealTTMs / 1000),\r\n TTClass: r[this.routeTTBadgeClassKey] || 'badge-primary d-none',\r\n TTSpinnerClass: r[this.routeTTBadgeClassKey] ? 'd-none' : ''\r\n });\r\n\r\n const instrAttrName = 'data-promet-routing-instruction-coord';\r\n const tabClicks = tab.querySelectorAll(`[${instrAttrName}]`);\r\n tabClicks.forEach((click: HTMLElement) => {\r\n click.onclick = () => {\r\n const isntrCoord = click.getAttribute(instrAttrName);\r\n const coords = isntrCoord.split(';').map(x => Number.parseFloat(x));\r\n this.highlightInstruction([coords[0], coords[1]]);\r\n };\r\n });\r\n\r\n this._routingTabsContainer.appendChild(tab);\r\n\r\n // select\r\n tab.onclick = () => {\r\n if (selectedIndex !== id)\r\n this.setRoutesStatus(routes, id);\r\n };\r\n });\r\n\r\n this._localizationService.refresh(this._routingTabsContainer);\r\n this.drawRoutes(routes, pan);\r\n this._routingBottom.appendChild(this._routingTabsContainer);\r\n\r\n // save route button\r\n const text = this._localizationService.localize('rmap.rm.routing.save');\r\n this._routingSave = document.createElement('div');\r\n this._routingSave.className = 'd-flex flex-column align-items-end p-4';\r\n const saveBtn = document.createElement('a');\r\n saveBtn.className = 'btn btn-primary';\r\n saveBtn.innerText = text;\r\n saveBtn.onclick = async () => {\r\n const isLoading = JSON.parse(saveBtn.getAttribute('data-loading'));\r\n if (isLoading != true) {\r\n saveBtn.setAttribute('data-loading', 'true');\r\n saveBtn.innerText = 'Loading ...';\r\n\r\n try {\r\n const r = routes[selectedIndex];\r\n const route = await this._routingService.transformRoute(r, this.injectedRouteTitle);\r\n // route.pointsFt = route.pointsFt.map(x => {\r\n // const ft = x.clone();\r\n // ft.geometry = Geometry.transform(ft.geometry, Projection.create('EPSG:4326'), Projection.create('EPSG:3912'));\r\n // return x.toGeoJson();\r\n // });\r\n\r\n this._onRouteSaved.trigger(route);\r\n // saveBtn.innerText = text;\r\n }\r\n catch (e) {\r\n console.error(e);\r\n this._onRouteSaved.trigger(null);\r\n }\r\n finally {\r\n saveBtn.setAttribute('data-loading', 'false');\r\n saveBtn.innerText = text;\r\n }\r\n }\r\n };\r\n this._routingSave.appendChild(saveBtn);\r\n this._routingBottom.appendChild(this._routingSave);\r\n\r\n // details\r\n routes.forEach((r, i) => {\r\n // TODO: unsubscribe? ali se vsi eventi sami unsubscribe-ajo?\r\n const id = i;\r\n const getOtherTabs = (): HTMLElement[] => {\r\n const other = [];\r\n this._routingBottom.querySelectorAll(\"[id^='route-tab-container-']\").forEach(item => {\r\n if (item.id !== `route-tab-container-${id}`)\r\n other.push(item);\r\n });\r\n\r\n return other;\r\n };\r\n\r\n const detailsSelector = `#details-${id}`;\r\n $(detailsSelector).on('show.bs.collapse', () => {\r\n getOtherTabs().forEach(o => o.classList.add('d-none'));\r\n });\r\n\r\n $(detailsSelector).on('hide.bs.collapse', () => {\r\n getOtherTabs().forEach(o => o.classList.remove('d-none'));\r\n });\r\n });\r\n }\r\n }\r\n\r\n private clearRoutingTabContainer() {\r\n // clear tab\r\n if (this._routingTabsContainer) {\r\n this._routingBottom.removeChild(this._routingTabsContainer);\r\n this._routingTabsContainer = null;\r\n }\r\n\r\n if (this._routingSave) {\r\n this._routingBottom.removeChild(this._routingSave);\r\n this._routingSave = null;\r\n }\r\n }\r\n\r\n private setRoutingErrorStatus(status: string) {\r\n if (this._routingError) {\r\n this._routingError.parentElement.removeChild(this._routingError);\r\n this._routingError = null;\r\n }\r\n\r\n if (status) {\r\n this._routingError = document.createElement('div');\r\n this._routingError.className = 'p-3';\r\n this._routingError.innerHTML = Mustache.render(ErrorTemplate, {\r\n text: status\r\n });\r\n\r\n this._routingBottom.appendChild(this._routingError);\r\n }\r\n }\r\n\r\n private currFetchId: string;\r\n private currStatusRefreshId: string;\r\n private async refreshRoutes() {\r\n const locs = this._routingLocations.filter(l => l.coords != null);\r\n const waypoints = locs.map(l => l.coords);\r\n if (this.routes.length > 0) {\r\n const points = this.routes[0].points;\r\n if (points.length === waypoints.length) {\r\n let changed = false;\r\n for (let i = 0; i < points.length; i++) {\r\n const p1 = points[i];\r\n const p2 = waypoints[i];\r\n const threshold = 0.00001;\r\n if (Math.abs(p1[0] - p2[0]) > threshold && Math.abs(p1[1] - p2[1]) > threshold) {\r\n changed = true;\r\n break; // route changed\r\n }\r\n }\r\n\r\n if (changed === false)\r\n return; // route not changed\r\n }\r\n }\r\n\r\n // TODO: cancel previous request\r\n this.stopRouteStatusRefresh();\r\n this.currStatusRefreshId = Guid.create().toString();\r\n this.setRoutingErrorStatus(null);\r\n this.clearHighlight();\r\n this.clearInstructionHighlight();;\r\n this.clearRoutingTabContainer();\r\n if (waypoints.length === 1) {\r\n // display location\r\n this._map.clearRoute();\r\n this.highlightLocation(waypoints[0]);\r\n this.routes = [];\r\n }\r\n else if (waypoints.length > 1) {\r\n // display route\r\n this.setRoutingSpinnerStatus(true);\r\n\r\n const waypointsFts = locs.map(x => {\r\n const data = x.data.clone();\r\n const point = data.geometry.getCoordinate();\r\n data.geometry.coordinates = proj4('EPSG:4326', 'EPSG:3912', [point.x, point.y]);\r\n return data;\r\n });\r\n let results: Route[] = [];\r\n\r\n try {\r\n const fetchId = Guid.create().toString();\r\n this.currFetchId = fetchId;\r\n const res = await this._routingService.routeMultiple(waypoints);\r\n\r\n // cancel, če je vmes šel po drugo routeo (TODO: nekako cancel promise)\r\n if (this.currFetchId !== fetchId)\r\n return;\r\n\r\n for (let i = 0; i < res.Routes.length; i++)\r\n res.Routes[i].pointsFt = waypointsFts.slice();\r\n\r\n if (this.injectedRouteId)\r\n res.Routes.forEach(r => r.route.properties.Id = this.injectedRouteId);\r\n\r\n results = res.Routes;\r\n }\r\n catch (e) {\r\n console.error('Failed to refresh routes.', e);\r\n }\r\n\r\n this.setRoutingSpinnerStatus(false);\r\n this.setRoutesStatus(results);\r\n\r\n if (results.length === 0)\r\n this.setRoutingErrorStatus(this._localizationService.localize('rmap.rm.routing.errors.cannot-get-route'));\r\n else\r\n this.startRouteStatusRefresh(this.currStatusRefreshId, results);\r\n }\r\n }\r\n\r\n private setRoutingSpinnerStatus(visible: boolean) {\r\n if (visible === false && this._routingSpinner) {\r\n this._routingSpinner.parentElement.removeChild(this._routingSpinner)\r\n this._routingSpinner = null;\r\n }\r\n else if (visible === true && this._routingSpinner == null) {\r\n const container = document.createElement('div');\r\n container.className = 'd-flex';\r\n\r\n const spinner = document.createElement('div');\r\n spinner.className = 'spinner-border text-primary mx-auto mt-4';\r\n const span = document.createElement('span');\r\n span.className = 'sr-only';\r\n span.innerText = 'Loading...';\r\n spinner.appendChild(span);\r\n container.appendChild(spinner);\r\n\r\n this._routingSpinner = container;\r\n this._routingBottom.appendChild(this._routingSpinner);\r\n }\r\n }\r\n\r\n private instructionHighlight: Feature;\r\n private highlightInstruction(coord: CoordinateLike) {\r\n this.clearInstructionHighlight();\r\n\r\n const zoom = this._map.getView().zoom;\r\n const defaultZoom = 14;\r\n this.instructionHighlight = this._map.addFeature(new Feature({\r\n radius: 7,\r\n color: Utils.routeColor(true)\r\n }, Point.fromCoordinate(coord)), {\r\n pan: true,\r\n cameraOptions: {\r\n zoom: zoom > defaultZoom ? zoom : defaultZoom,\r\n relCenterX: this.getRelCenterX()\r\n } as IPanOptions\r\n });\r\n\r\n // if (pan) {\r\n // const zoom = this._map.getView().zoom;\r\n // const defaultZoom = 14;\r\n // this._map.pan(coord, {\r\n // zoom: zoom > defaultZoom ? zoom : defaultZoom,\r\n // relCenterX: this.getRelCenterX()\r\n // });\r\n // }\r\n }\r\n\r\n private clearInstructionHighlight() {\r\n if (this.instructionHighlight)\r\n this._map.removeFeature(this.instructionHighlight.properties.id);\r\n }\r\n\r\n private highlightLocation(location: CoordinateLike) {\r\n const zoom = this._map.getView().zoom < 12 ? 12 : null;\r\n this.clearHighlight();\r\n\r\n this._map.drawMarker(Point.fromCoordinate(location), {\r\n icon: 'marker_E2001A-32',\r\n cameraOptions: {\r\n zoom: zoom,\r\n relCenterX: this.getRelCenterX()\r\n } as IPanOptions\r\n } as IMarkerOptions);\r\n }\r\n\r\n private clearHighlight() {\r\n this._map.clearMarkers();\r\n }\r\n\r\n private stopGeolocationSearch() {\r\n if (this.myLocExecuting) {\r\n navigator.geolocation.clearWatch(this.myLocExecuting);\r\n this.setRoutingSpinnerStatus(false);\r\n }\r\n this.myLocExecuting = null;\r\n }\r\n\r\n private getRelCenterX(): number {\r\n let relCenterX = 0.5;\r\n if (this.getRoutingStatus()) {\r\n // left padding\r\n const mapWidth = this._map.getSize()[0];\r\n if (mapWidth > this.responsiveBreakpoint)\r\n relCenterX += (Number.parseInt(this.routingWidth.substr(0, this.routingWidth.length - 2)) / mapWidth) / 2;\r\n else {\r\n // TODO: RESPONSIVE\r\n }\r\n }\r\n\r\n return relCenterX;\r\n }\r\n\r\n private routeStatusRefreshInterval;\r\n private startRouteStatusRefresh(refreshId: string, routes: Route[], refreshOnStart: boolean = true) {\r\n this.stopRouteStatusRefresh();\r\n\r\n if (refreshOnStart)\r\n this.routeStatusRefresh(refreshId, routes);\r\n\r\n this.routeStatusRefreshInterval = setInterval(() => this.routeStatusRefresh(refreshId, routes), 60000);\r\n }\r\n\r\n private stopRouteStatusRefresh() {\r\n if (this.routeStatusRefreshInterval)\r\n clearInterval(this.routeStatusRefreshInterval);\r\n }\r\n\r\n private async routeStatusRefresh(refreshId: string, routes: Route[]) {\r\n try {\r\n const statusPromises = routes.map(r => this._routingService.routeStatus(r.route));\r\n const status = await Promise.all(statusPromises);\r\n\r\n // check if not cancelled\r\n if (refreshId === this.currStatusRefreshId) {\r\n for (let i = 0; i < status.length; i++) {\r\n let s = status[i];\r\n const r = routes[i];\r\n const ttBadge: HTMLDivElement = this._routingTabsContainer.querySelector(`#route-tab-tt-badge-${i}`);\r\n\r\n if (s == undefined) {\r\n // set default status\r\n s = RouteStatusResponseDTO.fromRoute(r);\r\n }\r\n\r\n r[this.routeStatusKey] = s;\r\n\r\n // set travel time badge classes\r\n const cl = s.getRouteTravelTimeBackgroundClass();\r\n r[this.routeTTBadgeClassKey] = cl;\r\n ttBadge.classList.add(cl);\r\n ttBadge.classList.remove('badge-primary', 'd-none');\r\n\r\n // hide travel time spinner\r\n const ttSpinner: HTMLDivElement = this._routingTabsContainer.querySelector(`#route-tab-tt-spinner-${i}`);\r\n ttSpinner.classList.add('d-none');\r\n }\r\n\r\n // redraw routes\r\n if (this.getRoutingStatus())\r\n this.drawRoutes(routes, false);\r\n }\r\n }\r\n catch (e) {\r\n console.error('Failed to update routes status.', e);\r\n\r\n // TODO: neko opozorilo, da ni OK\r\n }\r\n }\r\n\r\n private resizeElements = () => {\r\n const size = this._map.getSize();\r\n const width = size[0];\r\n const height = size[1];\r\n this._legend.style.height = `${height}px`;\r\n this._routing.style.height = width > this.responsiveBreakpoint ? `${height}px` : 'auto';\r\n this._weatherContainer.style.height = `${height}px`;\r\n\r\n this.refreshLegendSize();\r\n this.refreshRoutingSize();\r\n this.refreshSearchBarContainerSize();\r\n };\r\n\r\n private refreshLegendSize() {\r\n const size = this._map.getSize();\r\n const h = size[1];\r\n const w = size[0];\r\n const legendBody: HTMLElement = this._legend.querySelector('#legend-body');\r\n if (legendBody)\r\n legendBody.style.maxHeight = `${h - 60}px`;\r\n\r\n this._legend.style.width = this.getLegendWidth();\r\n // this._legendBg.style.width = `${w}px`;\r\n // this._legendBg.style.height = `${h}px`;\r\n\r\n if (this.getLegendStatus() === false) // if legend closed\r\n this._legend.style.left = `calc(-${this.getLegendWidth()} - 10px)`;\r\n }\r\n\r\n private refreshRoutingSize() {\r\n const size = this._map.getSize();\r\n const height = size[1];\r\n\r\n const h = `${height - this._routingHeader.clientHeight}px`;\r\n // this._routingBottom.style.maxHeight = `${height - this._routingHeader.clientHeight}px`;\r\n this._routingBottomSearchResultsContainer.style.maxHeight = h;\r\n this._routingBottom.style.maxHeight = h;\r\n this._routing.style.width = this.getRoutingWidth();\r\n }\r\n\r\n private refreshSearchBarContainerSize() {\r\n const width = this._map.getSize()[0];\r\n if (this._searchBarContainer)\r\n this._searchBarContainer.style.width = width > this.responsiveBreakpoint ? this.searchEntryWidth : `${width - 2 * 30}px`; // <503 -> tablet\r\n }\r\n\r\n private getRoutingWidth(): string {\r\n const width = this._map.getSize()[0];\r\n return width > this.responsiveBreakpoint ? this.routingWidth : `${width}px`;\r\n }\r\n\r\n private getLegendWidth(): string {\r\n const width = this._map.getSize()[0];\r\n return width > this.responsiveBreakpoint ? this.legendWidth : `${width - 85}px`;\r\n }\r\n\r\n /** WEATHER */\r\n private fetchWeatherData(): Promise {\r\n return new Promise((res, rej) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.timeout = 5000;\r\n xhr.onload = () => {\r\n if (xhr.responseText)\r\n this._weatherData = JSON.parse(xhr.responseText);\r\n res(this._weatherData);\r\n };\r\n\r\n xhr.open('GET', this._options.weatherDataUrl, true);\r\n xhr.send(null);\r\n });\r\n }\r\n\r\n private tryStartWeatherLayerUpdating(onlyShowFinalFrame: boolean = false) {\r\n if (onlyShowFinalFrame)\r\n this.updateLastWeatherFrame();\r\n else {\r\n if (this._weatherData && this._weatherData.length > 0)\r\n this.startWeatherLayerUpdating(this._weatherData);\r\n else {\r\n this.fetchWeatherData()\r\n .then(res => {\r\n if (res && res.length > 0/* && this._map.getGroupVisibility(g.id)*/)\r\n this.startWeatherLayerUpdating(this._weatherData);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private updateLastWeatherFrame() {\r\n this.fetchWeatherData()\r\n .then(res => {\r\n if (this._weatherAnimationTimeout)\r\n clearTimeout(this._weatherAnimationTimeout);\r\n\r\n if (res && res.length > 0)\r\n this.setWeatherSource(res[res.length - 1]);\r\n this._map.setLayerVisibility(this.weatherLayerName, true);\r\n this._weatherAnimationTimeout = setTimeout(() => this.updateLastWeatherFrame(), this._options.weatherLastFrameUpdateInterval);\r\n });\r\n }\r\n\r\n private setWeatherSource(el: MeteoWeatherData) {\r\n const path = el.path.substring(el.path.lastIndexOf('/') + 1);\r\n const bbox = el.bbox.split(',').map(x => Number.parseFloat(x)); // lat S, lng W, lat N, lng E\r\n const ws: [number, number] = [bbox[1], bbox[0]]; // lng, lat\r\n const en: [number, number] = [bbox[3], bbox[2]]; // lng, lat\r\n const srcUrl = `${this._options.weatherImgUrl}/${path}`;\r\n const srcBbox: [[number, number], [number, number], [number, number], [number, number]] = [\r\n [ws[0], en[1]], // WN (lng, lat)\r\n en, // EN (lng, lat)\r\n [en[0], ws[1]], // ES (lng, lat)\r\n ws // WS (lng, lat)\r\n ];\r\n\r\n const src = this._map.getSource(this.weatherSourceName) as maplibregl.ImageSource;\r\n if (src == undefined)\r\n throw new Error(`Cannot find weather source \"${this.weatherSourceName}\".`);\r\n else {\r\n // nastavi image url in koordinate\r\n src.updateImage({\r\n url: srcUrl,\r\n coordinates: srcBbox\r\n });\r\n }\r\n }\r\n\r\n private _weatherAnimationTimeout;\r\n private startWeatherLayerUpdating(weather: MeteoWeatherData[], from?: Date, to?: Date) {\r\n if (this._weatherAnimationTimeout)\r\n clearTimeout(this._weatherAnimationTimeout);\r\n\r\n // filtriraj po času\r\n const data = weather.filter(w => {\r\n const date = new Date(w.valid);\r\n if (from && date < from)\r\n return false;\r\n if (to && date > to)\r\n return false;\r\n return true;\r\n });\r\n\r\n const show = (i: number) => {\r\n const el = data[i];\r\n this.setWeatherSource(el);\r\n\r\n // začni nov timeout, da se prikaže naslednja slika\r\n if (this._weatherAnimationTimeout)\r\n clearTimeout(this._weatherAnimationTimeout);\r\n\r\n if (i < data.length - 1) {\r\n const date = new Date(el.valid);\r\n let h = date.getHours().toString();\r\n if (h.length === 1)\r\n h = '0' + h;\r\n let min = date.getMinutes().toString();\r\n if (min.length === 1)\r\n min = '0' + min;\r\n\r\n this._weatherTimestampSpan.innerText = `${date.getDate()}.${date.getMonth() + 1}.${date.getFullYear()} ${h}:${min}`;\r\n\r\n this._weatherContainer.style.display = 'block';\r\n this._map.setLayerVisibility(this.weatherLayerName, true);\r\n\r\n this._weatherAnimationTimeout = setTimeout(() => show(i + 1), this._options.weatherFrameInterval);\r\n }\r\n else {\r\n this._weatherContainer.style.display = 'none';\r\n this._weatherAnimationTimeout = setTimeout(() => this.updateLastWeatherFrame(), this._options.weatherLastFrameUpdateInterval);\r\n }\r\n };\r\n\r\n show(0);\r\n }\r\n\r\n stopWeatherLayerUpdating() {\r\n if (this._weatherAnimationTimeout)\r\n clearTimeout(this._weatherAnimationTimeout);\r\n this._weatherContainer.style.display = 'none';\r\n this._map.setLayerVisibility(this.weatherLayerName, false);\r\n }\r\n\r\n onAdd(map: maplibregl.Map): HTMLElement {\r\n if (this._options.hasDetailButton === true)\r\n map.addControl(new PrometSiExpandMapControl(this._map), 'bottom-right');\r\n\r\n const wrapper = document.createElement('div');\r\n wrapper.className = 'mapboxgl-ctrl mapboxgl-ctrl-group';\r\n wrapper.appendChild(this._container);\r\n\r\n return wrapper;\r\n }\r\n\r\n onRemove() {\r\n this._container.parentNode.removeChild(this._container);\r\n // this._panel.parentNode.removeChild(this._panel);\r\n // this._map = undefined;\r\n }\r\n\r\n getDefaultPosition(): maplibregl.ControlPosition {\r\n return 'top-left';\r\n }\r\n\r\n private getContainerFromSearchResultsType(type: PrometSiSearchResultsType): HTMLElement {\r\n return type === PrometSiSearchResultsType.Routing ? this._routingSearchResults : this._searchResults;\r\n }\r\n}\r\n","export const RMBClickTemplate = `\r\n
    \r\n
  • \r\n
  • \r\n
  • \r\n
  • \r\n
\r\n`;\r\n\r\nexport const RMBClickTemplateInfo = `\r\n
\r\n
{{properties.Title}}
\r\n
{{properties.Description}}
\r\n
\r\n \r\n {{properties.x}}, {{properties.y}}\r\n
\r\n {{#properties.Ad}}\r\n
\r\n {{#properties.Ad.dist}} ({{properties.Ad.dist}} m){{/properties.Ad.dist}}: \r\n {{properties.Ad.title}}, {{properties.Ad.descr}}\r\n
\r\n {{/properties.Ad}}\r\n {{^properties.Ad}}\r\n
\r\n {{/properties.Ad}}\r\n\r\n {{#properties.Cesta}}\r\n
\r\n {{#properties.Cesta.dist}} ({{properties.Cesta.dist}} m){{/properties.Cesta.dist}}: \r\n {{properties.Cesta.descr}}\r\n
\r\n
\r\n \r\n {{#properties.Cesta.odsek}}\r\n {{properties.Cesta.odsek}}, \r\n {{/properties.Cesta.odsek}}\r\n {{#properties.Cesta.ds_at}}\r\n {{properties.Cesta.ds_at}}m\r\n {{/properties.Cesta.ds_at}}\r\n
\r\n {{/properties.Cesta}}\r\n {{^properties.Cesta}}\r\n
\r\n {{/properties.Cesta}}\r\n
\r\n`;\r\n\r\nexport const RMBClickTemplateAd = `\r\n
\r\n
{{title}}
\r\n
{{descr}}
\r\n
\r\n`;\r\n\r\nexport const RMBClickTemplateCesta = `\r\n
\r\n
\r\n {{descr}}, \r\n {{odsek}}\r\n
\r\n
\r\n`;\r\n","export const ContainerTemplate = `\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n`;\r\n","export const LegendTemplate = `\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n {{#groups}}\r\n
\r\n {{#layers}}\r\n {{#isCheckbox}}\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {{/isCheckbox}}\r\n {{^isCheckbox}}\r\n \r\n {{#children}}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {{/children}}\r\n {{/isCheckbox}}\r\n {{/layers}}\r\n
\r\n {{/groups}}\r\n
\r\n
\r\n`;\r\n","export const SearchResultsTemplate = `\r\n \r\n`;\r\n","export const RoutingHeaderTemplate = `\r\n
\r\n
\r\n
\r\n\r\n \"close\" \r\n
\r\n
\r\n
\r\n {{#locations}}\r\n
\r\n \r\n
\r\n
\r\n
\r\n \"lokacija\"\r\n
\r\n\r\n \r\n {{#canSwapWithNext}}\r\n
\r\n \"between\"\r\n
\r\n {{/canSwapWithNext}}\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n \"myloc\"\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \"clear\"\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n {{#canSwapWithNext}}\r\n
\r\n \r\n
\r\n {{/canSwapWithNext}}\r\n
\r\n {{/locations}}\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \"add\"\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n`;\r\n","export const RouteTabTemplate = `\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \"pot\"\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n {{Length}}\r\n {{DetourText}}\r\n
\r\n\r\n {{#Selected}}\r\n \r\n
\r\n \r\n
\r\n {{/Selected}}\r\n
\r\n\r\n \r\n
\r\n
\r\n \"duration\"\r\n {{Duration}}\r\n
\r\n\r\n
\r\n
\r\n \r\n Loading ...\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \"start\"\r\n \r\n\r\n
\r\n
\r\n {{Start.properties.Title}}\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n {{#Instructions}}\r\n {{#properties.IsVia}}\r\n \r\n
\r\n \r\n \"via\"\r\n \r\n\r\n
\r\n
\r\n {{properties.TitleString}}\r\n
\r\n \r\n
\r\n
\r\n {{/properties.IsVia}}\r\n {{^properties.IsVia}}\r\n \r\n
\r\n \r\n \"point\"\r\n \r\n\r\n
\r\n
\r\n
{{properties.CumulativeLengthString}}, {{properties.CumulativeDurationString}}
\r\n
\r\n
{{properties.TitleString}}
\r\n
\r\n
\r\n {{/properties.IsVia}}\r\n {{/Instructions}}\r\n\r\n \r\n
\r\n \r\n \"end\"\r\n \r\n\r\n
\r\n
\r\n {{Destination.properties.Title}}\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n {{#Selected}}\r\n
\r\n {{/Selected}}\r\n
\r\n`;\r\n","export const ErrorTemplate = `\r\n
\r\n {{text}}\r\n
\r\n`;\r\n","import { LayerGroup } from './RM2LayerGroup';\r\nimport { IService } from '../..';\r\n\r\nexport class StyleMetadata {\r\n center: [number, number];\r\n extent: [[number, number], [number, number]];\r\n startExtent: [[number, number], [number, number]];\r\n minZoom: number;\r\n maxZoom: number;\r\n zoom: number;\r\n tilt: number;\r\n heading: number;\r\n persistView: boolean;\r\n persistLayerSettings: boolean;\r\n enableRotate: boolean;\r\n enablePopup: boolean;\r\n enableRoutingDisclaimer: boolean;\r\n enableSideScroller: boolean;\r\n zoomPopup: boolean;\r\n panPopup: boolean;\r\n notice: string;\r\n noticeStyle: string;\r\n clusterIcons: IClusterIconsData;\r\n hitTolerance: number;\r\n hitBuffer: number;\r\n routeFcdColors: any[];\r\n groups: LayerGroup[];\r\n services: IService[];\r\n controls: any[];\r\n removeHiddenVectorHybridLayers?: boolean;\r\n\r\n constructor(metadata: unknown) {\r\n this.routeFcdColors = [\r\n 0,\r\n {\r\n \"light\": \"#0F3C8F\",\r\n \"dark\": \"#A0B6DF\",\r\n \"unselected\": \"#BBBDBF\"\r\n },\r\n 59,\r\n {\r\n \"light\": \"#0F3C8F\",\r\n \"dark\": \"#A0B6DF\",\r\n \"unselected\": \"#BBBDBF\"\r\n },\r\n 60,\r\n {\r\n \"light\": \"#F49E00\",\r\n \"dark\": \"#FFAE4B\",\r\n \"unselected\": \"#BB9F8D\"\r\n },\r\n 250,\r\n {\r\n \"light\": \"#E2001A\",\r\n \"dark\": \"#F57F7F\",\r\n \"unselected\": \"#A57F7E\"\r\n },\r\n 500,\r\n {\r\n \"light\": \"#9E0F00\",\r\n \"dark\": \"#9E3126\",\r\n \"unselected\": \"#874B49\"\r\n }\r\n ];\r\n \r\n this.groups = [];\r\n this.enablePopup = true;\r\n\r\n this.hitTolerance = 10;\r\n this.hitBuffer = 5;\r\n Object.keys(metadata).forEach(k => {\r\n const val = metadata[k];\r\n if (val != undefined) {\r\n if (k == 'groups')\r\n val.forEach(g => this.groups.push(new LayerGroup(g)));\r\n else\r\n this[k] = val;\r\n }\r\n });\r\n\r\n const md = metadata as IStyleMetadata;\r\n this.clusterIcons = new ClusterIconsData(md.clusterIcons);\r\n }\r\n\r\n findGroup(id: string): LayerGroup {\r\n return this.filterGroups(this.groups, x => x.id === id);\r\n }\r\n\r\n private filterGroups(groups: LayerGroup[], condition: (g: LayerGroup) => boolean): LayerGroup {\r\n let found = groups.find(condition);\r\n if (found)\r\n return found;\r\n else {\r\n const withChildren = groups.filter(g => g.children && g.children.length > 0)\r\n for (let i = 0; i < withChildren.length; i++) {\r\n found = this.filterGroups(withChildren[i].children, condition);\r\n if (found)\r\n return found;\r\n }\r\n }\r\n \r\n return null;\r\n }\r\n}\r\n\r\nexport interface IStyleMetadata {\r\n center: [number, number];\r\n extent: [[number, number], [number, number]];\r\n minZoom: number;\r\n maxZoom: number;\r\n zoom: number;\r\n tilt: number;\r\n heading: number;\r\n persistView: boolean;\r\n persistLayerSettings: boolean;\r\n enableRotate: boolean;\r\n enablePopup: boolean;\r\n enableSideScroller: boolean;\r\n notice: string;\r\n noticeStyle: string;\r\n clusterIcons: IClusterIconsData;\r\n hitTolerance: number;\r\n groups: LayerGroup[];\r\n services: IService[];\r\n controls: any[]; // TODO: DTO\r\n}\r\n\r\nexport class ClusterIconsData implements IClusterIconsData {\r\n iconSize: number;\r\n textSize?: number;\r\n textOffset?: number[];\r\n textColor?: string;\r\n\r\n constructor(data?: IClusterIconsData) {\r\n this.iconSize = data && data.iconSize ? data.iconSize : 0.8;\r\n this.textSize = data && data.textSize ? data.textSize : 14;\r\n this.textOffset = data && data.textOffset ? data.textOffset : [0.575, -0.625];\r\n this.textColor = data && data.textColor ? data.textColor : '#FFFFFF';\r\n }\r\n}\r\n\r\nexport interface IClusterIconsData {\r\n iconSize?: number;\r\n textSize?: number;\r\n textOffset?: number[];\r\n textColor?: string;\r\n}\r\n","export class LayerMetadata implements ILayerMetadata {\r\n gid: string;\r\n title: string;\r\n icon: string;\r\n visible: boolean;\r\n uiVisible: boolean;\r\n lockMode: string[];\r\n includeInIdentify: boolean;\r\n\r\n visibleRefreshButton: boolean;\r\n\r\n infoWindowEnableOpenButton: boolean;\r\n infoWindowTitleTemplate: string;\r\n infoWindowDescriptionTemplate: string;\r\n\r\n listViewDefaultExpand: boolean;\r\n listViewEnableOpenButton: boolean;\r\n listViewTitleTemplate: string;\r\n listViewDescriptionTemplate: string;\r\n infoWindowDescriptionRefreshInterval?: number;\r\n\r\n infoWindowMaxWidth: string;\r\n\r\n // Clustering properties\r\n clusterSymbol: string;\r\n clusterSymbolIconSize: number;\r\n clusterSymbolTextSize: number;\r\n clusterSymbolTextOffset: number[];\r\n clusterSymbolTextColor: string;\r\n // clusterType: 'circle' | 'symbol';\r\n // clusterStyle: CircleClusterStyle | SymbolClusterStyle;\r\n\r\n constructor(metadata: ILayerMetadata) {\r\n this.gid = metadata.gid;\r\n this.title = metadata.title;\r\n this.icon = metadata.icon;\r\n this.visible = metadata.visible !== false;\r\n this.uiVisible = metadata.uiVisible;\r\n this.lockMode = metadata.lockMode || [];\r\n this.includeInIdentify = metadata.includeInIdentify === true;\r\n\r\n this.visibleRefreshButton = metadata.visibleRefreshButton !== false;\r\n this.listViewDefaultExpand = metadata.listViewDefaultExpand === true;\r\n\r\n this.listViewEnableOpenButton = metadata.listViewEnableOpenButton === true ? true : false;\r\n this.listViewTitleTemplate = metadata.listViewTitleTemplate || `\r\n {{#Title}}\r\n {{#translateKey}}$.Title{{/translateKey}}\r\n {{/Title}}\r\n\r\n {{^Title}}\r\n {{#title}}\r\n {{#translateKey}}$.title{{/translateKey}}\r\n {{/title}}\r\n {{/Title}}\r\n `;\r\n\r\n this.listViewDescriptionTemplate = metadata.listViewDescriptionTemplate || `\r\n {{#Description}}\r\n {{#translateKey}}$.Description{{/translateKey}}\r\n {{/Description}}\r\n\r\n {{^Description}}\r\n {{#description}}\r\n {{#translateKey}}$.description{{/translateKey}}\r\n {{/description}}\r\n {{/Description}}\r\n `;\r\n\r\n this.infoWindowEnableOpenButton = metadata.infoWindowEnableOpenButton === true ? true : this.listViewEnableOpenButton;\r\n this.infoWindowTitleTemplate = metadata.infoWindowTitleTemplate || `\r\n
\r\n \r\n {{Title}}\r\n
\r\n
\r\n `;\r\n\r\n this.infoWindowDescriptionTemplate = metadata.infoWindowDescriptionTemplate || `\r\n

\r\n {{Description}}\r\n

\r\n `;\r\n\r\n this.infoWindowMaxWidth = metadata.infoWindowMaxWidth || '320px';\r\n this.infoWindowDescriptionRefreshInterval = metadata.infoWindowDescriptionRefreshInterval;\r\n\r\n this.clusterSymbol = metadata.clusterSymbol || 'dogodek_cluster-32';\r\n this.clusterSymbolIconSize = metadata.clusterSymbolIconSize;\r\n this.clusterSymbolTextSize = metadata.clusterSymbolTextSize;\r\n this.clusterSymbolTextOffset = metadata.clusterSymbolTextOffset;\r\n this.clusterSymbolTextColor = metadata.clusterSymbolTextColor;\r\n // this.clusterType = metadata.clusterType || 'circle';\r\n // if (this.clusterType === 'circle')\r\n // this.clusterStyle = new CircleClusterStyle(metadata.clusterStyle as CircleClusterStyle);\r\n // else if (this.clusterType === 'symbol')\r\n // this.clusterStyle = new SymbolClusterStyle(metadata.clusterStyle as SymbolClusterStyle);\r\n }\r\n}\r\n\r\nexport interface ILayerMetadata {\r\n gid?: string;\r\n title?: string;\r\n icon?: string;\r\n visible?: boolean;\r\n uiVisible?: boolean;\r\n lockMode?: string[];\r\n includeInIdentify?: boolean;\r\n\r\n visibleRefreshButton?: boolean;\r\n\r\n infoWindowEnableOpenButton?: boolean;\r\n infoWindowTitleTemplate?: string;\r\n infoWindowDescriptionTemplate?: string;\r\n\r\n listViewDefaultExpand?: boolean;\r\n listViewEnableOpenButton?: boolean;\r\n listViewTitleTemplate?: string;\r\n listViewDescriptionTemplate?: string;\r\n infoWindowDescriptionRefreshInterval?: number;\r\n\r\n infoWindowMaxWidth?: string;\r\n\r\n // Clustering properties\r\n clusterSymbol?: string;\r\n clusterSymbolIconSize?: number;\r\n clusterSymbolTextSize?: number;\r\n clusterSymbolTextOffset?: number[];\r\n clusterSymbolTextColor?: string;\r\n // clusterType: 'circle' | 'symbol';\r\n // clusterStyle: CircleClusterStyle | SymbolClusterStyle;\r\n}\r\n\r\nexport abstract class ClusterStyle {\r\n showText: boolean;\r\n textColor: string;\r\n\r\n constructor(style?: ClusterStyle) {\r\n this.textColor = '#222222';\r\n this.showText = true;\r\n\r\n if (style) {\r\n Object.keys(this).forEach(k => {\r\n if (style[k] != undefined)\r\n this[k] = style[k];\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport class CircleClusterStyle extends ClusterStyle {\r\n circleColor: string;\r\n circleOutlineColor: string;\r\n circleOutlineWidth: number;\r\n circleOpacity: number;\r\n circleRadius: number;\r\n\r\n constructor(style?: CircleClusterStyle) {\r\n super(style);\r\n\r\n this.circleColor = '#FFFFFF';\r\n this.circleOutlineColor = '#000000';\r\n this.circleOutlineWidth = 2;\r\n this.circleOpacity = 1;\r\n this.circleRadius = 12;\r\n\r\n if (style) {\r\n Object.keys(this).forEach(k => {\r\n if (style[k] != undefined)\r\n this[k] = style[k];\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport class SymbolClusterStyle extends ClusterStyle {\r\n iconImage: string;\r\n iconAnchor: 'left' | 'top' | 'right' | 'bottom' | 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'center';\r\n iconSize: number;\r\n\r\n constructor(style?: SymbolClusterStyle) {\r\n super(style);\r\n\r\n this.iconImage = 'zaprta-140';\r\n this.iconAnchor = 'center';\r\n this.iconSize = 0.2;\r\n\r\n if (style) {\r\n Object.keys(this).forEach(k => {\r\n if (style[k] != undefined)\r\n this[k] = style[k];\r\n });\r\n }\r\n }\r\n}\r\n","// import * as maplibregl from 'maplibre-gl';\r\nimport { LayerSpecification, SourceSpecification } from 'maplibre-gl';\r\n\r\nimport { LayerMetadata, ILayerMetadata } from './style-metadata/RM2LayerMetadata';\r\n\r\nexport class Layer {\r\n id: string;\r\n type: 'fill' | 'line' | 'symbol' | 'circle' | 'fill-extrusion' | 'raster' | 'background' | 'heatmap' | 'hillshade';\r\n\r\n metadata?: ILayerMetadata;\r\n ref?: string;\r\n\r\n source?: string;\r\n 'source-layer'?: string;\r\n\r\n minzoom?: number;\r\n maxzoom?: number;\r\n\r\n interactive?: boolean;\r\n\r\n filter?: any[];\r\n layout?: maplibregl.LayerSpecification['layout'];\r\n paint?: maplibregl.LayerSpecification['paint'];\r\n\r\n constructor(layer: maplibregl.LayerSpecification) {\r\n // TODO\r\n Object.keys(layer).forEach(k => this[k] = layer[k]);\r\n this.metadata = new LayerMetadata(layer.metadata || {});\r\n }\r\n}\r\n\r\n// interface BackgroundLayer extends Layer {\r\n// type: 'background';\r\n// layout?: maplibregl.BackgroundLayout;\r\n// paint?: maplibregl.BackgroundPaint;\r\n// }\r\n\r\n// interface CircleLayer extends Layer {\r\n// type: 'circle';\r\n// layout?: maplibregl.CircleLayout;\r\n// paint?: maplibregl.CirclePaint;\r\n// }\r\n\r\n// interface FillExtrusionLayer extends Layer {\r\n// type: 'fill-extrusion';\r\n// layout?: maplibregl.FillExtrusionLayout;\r\n// paint?: maplibregl.FillExtrusionPaint;\r\n// }\r\n\r\n// interface FillLayer extends Layer {\r\n// type: 'fill';\r\n// layout?: maplibregl.FillLayout;\r\n// paint?: maplibregl.FillPaint;\r\n// }\r\n\r\n// interface HeatmapLayer extends Layer {\r\n// type: 'heatmap';\r\n// layout?: maplibregl.HeatmapLayout;\r\n// paint?: maplibregl.HeatmapPaint;\r\n// }\r\n\r\n// interface HillshadeLayer extends Layer {\r\n// type: 'hillshade';\r\n// layout?: maplibregl.HillshadeLayout;\r\n// paint?: maplibregl.HillshadePaint;\r\n// }\r\n\r\n// interface LineLayer extends Layer {\r\n// type: 'line';\r\n// layout?: maplibregl.LineLayout;\r\n// paint?: maplibregl.LinePaint;\r\n// }\r\n\r\n// interface RasterLayer extends Layer {\r\n// type: 'raster';\r\n// layout?: maplibregl.RasterLayout;\r\n// paint?: maplibregl.RasterPaint;\r\n// }\r\n\r\n// interface SymbolLayer extends Layer {\r\n// type: 'symbol';\r\n// layout?: maplibregl.SymbolLayout;\r\n// paint?: maplibregl.SymbolPaint;\r\n// }\r\n\r\n// export type AnyLayer =\r\n// | BackgroundLayer\r\n// | CircleLayer\r\n// | FillExtrusionLayer\r\n// | FillLayer\r\n// | HeatmapLayer\r\n// | HillshadeLayer\r\n// | LineLayer\r\n// | RasterLayer\r\n// | SymbolLayer;\r\n\r\n// import { Projection } from './RM2Projection';\r\n// import { FeatureCollection } from './RM2Feature';\r\n// import { Source, TileSource, VectorSource } from '../source/RM2Source';\r\n// import { Coordinate } from '..';\r\n// import { IRM2Event, RM2Event, MapEventArgs } from '../model/RM2Event';\r\n// // import { EventEmitterFactory } from '../../../../core/event-emitter';\r\n// import { Subject, Subscription } from 'rxjs';\r\n\r\n// /**\r\n// * Layer object.\r\n// */\r\n// export abstract class Layer {\r\n// protected _baseLayers: any;\r\n// protected _title: string; // TOCHECK ali ni title v ol.Layer\r\n// protected _icon: string;\r\n// public get sid(): string { return this._sid; }\r\n// protected _sid: string;\r\n// public get restyleInterval() { return this._restyleInterval; }\r\n// protected _restyleInterval: number;\r\n// public get lockMode() { return this._lockMode; }\r\n// protected _lockMode: string[];\r\n// protected _parent: GroupLayer;\r\n// protected _visible: boolean;\r\n// protected _uiVisible: boolean;\r\n// protected _uiMode: string;\r\n// protected _type: string;\r\n// protected _includeInIdentify: boolean;\r\n// protected _forBasemaps: string[];\r\n// protected _visibleRefreshButton: boolean;\r\n// protected _listViewDefaultExpand: boolean;\r\n\r\n// public get onRestyle(): IRM2Event { return this._onRestyle.expose(); }\r\n// protected readonly _onRestyle = new RM2Event();\r\n\r\n// /**\r\n// * Creates an instance of Layer.\r\n// */\r\n// public constructor(title: string, icon: string, sid: string, lockMode: string, visible: boolean, restyleInterval?: number, baseLayer?: any, type?: string, includeInIdentify?: boolean, uiVisible?: boolean, uiMode?: string, forBasemaps?: string[]) {\r\n// this._title = title;\r\n// this._icon = icon;\r\n// this._sid = sid;\r\n// this._lockMode = lockMode !== undefined ? lockMode.split('|') : [];\r\n// this._restyleInterval = restyleInterval;\r\n// this._baseLayers = baseLayer;\r\n// this.visible = visible;\r\n// this._uiVisible = uiVisible !== false;\r\n// this._uiMode = uiMode;\r\n// this._type = type;\r\n// this._includeInIdentify = includeInIdentify !== false;\r\n// this._forBasemaps = forBasemaps;\r\n// }\r\n\r\n// public get baseLayers(): any[] { return this._baseLayers; }\r\n// public set baseLayers(layers: any[]) { this._baseLayers = layers; }\r\n\r\n// /**\r\n// * Returns title of this layer.\r\n// */\r\n// public get title(): string { return this._title; }\r\n\r\n// /**\r\n// * Returns icon of this layer.\r\n// */\r\n// public get icon(): string { return this._icon; }\r\n\r\n// /**\r\n// * Returns parent GroupLayer of this layer.\r\n// */\r\n// public get parent(): GroupLayer { return this._parent; }\r\n\r\n// /**\r\n// * Sets parent GroupLayer to this layer.\r\n// */\r\n// public set parent(parent: GroupLayer) { this._parent = parent; }\r\n\r\n// /**\r\n// * Sets the type of layer (e.g. basemaps)\r\n// */\r\n// public set type(type: string) { this._type = type; }\r\n\r\n// /**\r\n// * Returns the type of layer (e.g. basemaps)\r\n// */\r\n// public get type(): string { return this._type; }\r\n\r\n// /**\r\n// * Sets whether the layer gets detected on map click\r\n// */\r\n// public set includeInIdentify(include: boolean) { this._includeInIdentify = include; }\r\n\r\n// /**\r\n// * Returns whether the layer gets detected on map click\r\n// */\r\n// public get includeInIdentify(): boolean { return this._includeInIdentify; }\r\n\r\n// /**\r\n// * Sets whether the layer can only appear on certain basemaps\r\n// */\r\n// public set forBasemaps(basemapIds: string[]) { this._forBasemaps = basemapIds; }\r\n\r\n// /**\r\n// * Sets whether the layer can only appear on certain basemaps\r\n// */\r\n// public get forBasemaps(): string[] { return this._forBasemaps; }\r\n\r\n// public get visibleRefreshButton(): boolean { return this._visibleRefreshButton; }\r\n// public set visibleRefreshButton(value: boolean) { this._visibleRefreshButton = value; }\r\n\r\n// public get listViewDefaultExpand(): boolean { return this._listViewDefaultExpand; }\r\n// public set listViewDefaultExpand(value: boolean) { this._listViewDefaultExpand = value; }\r\n\r\n// private _visibleChanged = new Subject();\r\n// public get visibleChanged(): Subject { return this._visibleChanged; }\r\n\r\n// /**\r\n// * Returns bool whether the layer is visible.\r\n// */\r\n// public get visible(): boolean { return this._visible; }\r\n\r\n// /**\r\n// * Sets layer visibility.\r\n// */\r\n// public set visible(visible: boolean) {\r\n// if (this._visible !== visible) {\r\n// this._visible = visible;\r\n// const observers = this._visibleChanged.observers;\r\n// if (observers && observers.length > 0)\r\n// this._visibleChanged.next(visible);\r\n// // EventEmitterFactory.getCurrent().emit('layer:visibilityChanged', this);\r\n// }\r\n// }\r\n\r\n// /**\r\n// * Whether the group is visible in the legend UI\r\n// */\r\n// public get uiVisible(): boolean { return this._uiVisible; }\r\n\r\n// /**\r\n// * How to display the contents in the legend UI\r\n// */\r\n// public get uiMode(): string { return this._uiMode; }\r\n\r\n// /**\r\n// * Returns bool whether the layer can be visible.\r\n// */\r\n// public get canVisible(): boolean { return this._lockMode.indexOf('visible') === -1; }\r\n\r\n// restyle() {\r\n// if (this.baseLayers) {\r\n// let changed = false;\r\n// for (let i = 0; i < this.baseLayers.length; i++)\r\n// changed = this.baseLayers[i].changed();\r\n\r\n// if (changed === true)\r\n// this._onRestyle.trigger({ layer: this, map: undefined, coordinate: undefined, nativeEvent: undefined });\r\n// }\r\n// }\r\n\r\n// setVisible(visible: boolean) {\r\n// this.visible = visible;\r\n// }\r\n// }\r\n\r\n// /**\r\n// * GroupLayer object.\r\n// */\r\n// export class GroupLayer extends Layer {\r\n// private _sequenceMode: string;\r\n// private _layers: Layer[];\r\n// private _defaultFocused?: string;\r\n// private _uiGroupExpandable: boolean;\r\n// private _uiGroupAlwaysOpen: boolean;\r\n// private _uiGroupHeaderVisible: boolean;\r\n// private _zIndex?: number;\r\n\r\n// /**\r\n// * Creates an instance of GroupLayer.\r\n// */\r\n// public constructor(options: GroupLayerOptions) {\r\n// super(options.title, options.icon, options.sid, options.lockMode, options.visible, options.restyleInterval, options.baseLayers, options.type, options.includeInIdentify, options.uiVisible, options.uiMode, options.forBasemaps);\r\n\r\n// this._sequenceMode = options.sequenceMode || 'group';\r\n// this._layers = options.layers || [];\r\n// this._defaultFocused = options.defaultFocused;\r\n// this._uiGroupExpandable = options.uiGroupExpandable;\r\n// this._uiGroupAlwaysOpen = options.uiGroupAlwaysOpen;\r\n// this._uiGroupHeaderVisible = options.uiGroupHeaderVisible;\r\n// this._zIndex = options.zIndex;\r\n\r\n// let hasVisible = false;\r\n// for (let i = 0; i < this._layers.length; i++) {\r\n// if (this._sequenceMode === 'choice' && hasVisible)\r\n// this._layers[i].setVisible(false);\r\n\r\n// hasVisible = hasVisible || this._layers[i].visible;\r\n// this._layers[i].parent = this;\r\n// }\r\n// }\r\n\r\n// /**\r\n// * Returns sequenceMode of the layergroup.\r\n// */\r\n// public get sequenceMode(): string {\r\n// return this._sequenceMode;\r\n// }\r\n\r\n// /**\r\n// * Returns layer array of the layergroup.\r\n// */\r\n// public get layers(): Layer[] {\r\n// return this._layers ? this._layers : [];\r\n// }\r\n\r\n// /**\r\n// * Returns the default layer that will be focused in this group layer\r\n// */\r\n// public get defaultFocused(): string {\r\n// return this._defaultFocused;\r\n// }\r\n\r\n// /**\r\n// * Whether the legend UI of the group is expandable\r\n// */\r\n// public get uiGroupExpandable(): boolean {\r\n// return this._uiGroupExpandable;\r\n// }\r\n\r\n// /**\r\n// * Whether the legend UI of the group is always in the open position\r\n// */\r\n// public get uiGroupAlwaysOpen(): boolean {\r\n// return this._uiGroupAlwaysOpen;\r\n// }\r\n\r\n// /**\r\n// * Whether the header of the group should be visible\r\n// */\r\n// public get uiGroupHeaderVisible(): boolean {\r\n// return this._uiGroupHeaderVisible;\r\n// }\r\n\r\n// /**\r\n// * The z-index of the group\r\n// */\r\n// public get zIndex(): number {\r\n// return this._zIndex;\r\n// }\r\n\r\n// resetZIndex() {\r\n// this._zIndex = undefined;\r\n// }\r\n\r\n// public filterLayers(predicate: (layer: Layer) => boolean) : Layer[] {\r\n// var filtered = [];\r\n// if (predicate(this) == true)\r\n// filtered.push(this);\r\n \r\n// if (this.layers) {\r\n// for (var i = 0; i < this.layers.length; i++) {\r\n// var l = this.layers[i];\r\n// if (predicate(l) == true)\r\n// filtered.push(l);\r\n \r\n// if (l instanceof GroupLayer)\r\n// filtered = filtered.concat(l.filterLayers(predicate));\r\n// }\r\n// }\r\n\r\n// return filtered;\r\n// }\r\n// }\r\n\r\n// /**\r\n// * SourceLayer object.\r\n// */\r\n// export abstract class SourceLayer extends Layer {\r\n// // protected _styler: Styler;\r\n\r\n// /**\r\n// * Creates an instance of SourceLayer.\r\n// */\r\n// public constructor(options: SourceLayerOptions) {\r\n// super(options.title, options.icon, options.sid, options.lockMode, options.visible, options.restyleInterval, options.baseLayers, options.type, options.includeInIdentify, options.uiVisible, options.uiMode, options.forBasemaps);\r\n// // this._styler = options.styler;\r\n// }\r\n// /**\r\n// * Returns a styler associated with this layer.\r\n// */\r\n// // public get styler(): Styler {\r\n// // return this._styler;\r\n// // }\r\n// /**\r\n// * Returns a source associated with this layer.\r\n// */\r\n// public abstract get source(): Source;\r\n// }\r\n\r\n// /**\r\n// * VectorLayer object.\r\n// */\r\n// export class VectorLayer extends SourceLayer {\r\n\r\n// listViewTitleTemplate: string;\r\n// listViewDescriptionTemplate: string;\r\n// listViewEnableOpenButton: boolean;\r\n// infoWindowTitleTemplate?: string;\r\n// infoWindowDescriptionTemplate?: string;\r\n// infoWindowDescriptionRefreshInterval?: number;\r\n// infoWindowMaxWidth?: string;\r\n// infoWindowEnableOpenButton?: boolean;\r\n\r\n// protected _source: VectorSource;\r\n\r\n// /**\r\n// * Creates an instance of VectorLayer.\r\n// */\r\n// public constructor(options: SourceLayerOptions) {\r\n// super(options);\r\n// // this._styler = this._styler || Styler.default;\r\n// // this._styler = this._styler; // TODO: nek default style kot zgoraj\r\n\r\n// this.listViewTitleTemplate = options.listViewTitleTemplate || `\r\n// {{#Title}}\r\n// {{#translateKey}}$.Title{{/translateKey}}\r\n// {{/Title}}\r\n\r\n// {{^Title}}\r\n// {{#title}}\r\n// {{#translateKey}}$.title{{/translateKey}}\r\n// {{/title}}\r\n// {{/Title}}\r\n// `;\r\n\r\n// this.listViewDescriptionTemplate = options.listViewDescriptionTemplate || `\r\n// {{#Description}}\r\n// {{#translateKey}}$.Description{{/translateKey}}\r\n// {{/Description}}\r\n\r\n// {{^Description}}\r\n// {{#description}}\r\n// {{#translateKey}}$.description{{/translateKey}}\r\n// {{/description}}\r\n// {{/Description}}\r\n// `;\r\n\r\n// this.listViewEnableOpenButton = options.listViewEnableOpenButton === true ? true : false\r\n\r\n// this.infoWindowTitleTemplate = options.infoWindowTitleTemplate || `\r\n//
\r\n// \r\n// {{title}}\r\n//
\r\n//
\r\n// `;\r\n\r\n// this.infoWindowDescriptionTemplate = options.infoWindowDescriptionTemplate || `\r\n//

\r\n// {{description}}\r\n//

\r\n// `;\r\n\r\n// this.infoWindowDescriptionRefreshInterval = options.infoWindowDescriptionRefreshInterval;\r\n// this.infoWindowMaxWidth = options.infoWindowMaxWidth || '240px';\r\n// this.infoWindowEnableOpenButton = options.infoWindowEnableOpenButton === true ? true : this.listViewEnableOpenButton;\r\n// }\r\n\r\n// /**\r\n// * Returns a source associated with this layer.\r\n// */\r\n// public get source(): VectorSource {\r\n// return this._source;\r\n// }\r\n\r\n// /**\r\n// * Returns collection of features - members of this layer.\r\n// */\r\n// public get features(): FeatureCollection {\r\n// if (this._source == null)\r\n// return new FeatureCollection();\r\n// return this._source.getFeatures();\r\n// }\r\n\r\n// /**\r\n// * Returns geographic projection of this layer.\r\n// */\r\n// public get projection(): Projection {\r\n// return this._source.projection;\r\n// }\r\n\r\n// // /**\r\n// // * Executes query over features of this layer for given querystring and sends QueryServiceResult object to given response function.\r\n// // *\r\n// // * Response is QueryServiceResult object: { service: this, status: x.status, items: x.items }.\r\n// // *\r\n// // * Feaure is selected if any of its string attributes matches to the given querystring.\r\n// // */\r\n// // public query(queryString: string, response: (results: QueryServiceResult) => void, options?: QueryServiceOptions) {\r\n// // if (this._source) {\r\n// // this._source.query(queryString, x => {\r\n// // response({ service: this, status: x.status, items: x.items });\r\n// // }, options);\r\n// // }\r\n// // }\r\n\r\n// // /**\r\n// // * Executes location query over features of this layer for given coordinate and sends LocationServiceResult object to given response function.\r\n// // *\r\n// // * Response is LocationServiceResult object: { service: this, status: x.status, items: x.items }.\r\n// // */\r\n// // public locate(coordinate: Coordinate, response: (results: LocationServiceResult) => void, options?: LocationServiceOptions) {\r\n// // this._source.locate(coordinate, x => {\r\n// // response({ service: this, status: x.status, items: x.items });\r\n// // }, options);\r\n// // }\r\n// }\r\n\r\n// /**\r\n// * RasterLayer object.\r\n// */\r\n// export class RasterLayer extends SourceLayer {\r\n// protected _source: TileSource;\r\n\r\n// /**\r\n// * Creates an instance of RasterLayer.\r\n// */\r\n// public constructor(options: SourceLayerOptions) {\r\n// super(options);\r\n// }\r\n\r\n// /**\r\n// * Returns a source associated with this layer.\r\n// */\r\n// public get source(): TileSource {\r\n// return this._source;\r\n// }\r\n// }\r\n\r\n// /**\r\n// * LayerOptions interface.\r\n// */\r\n// export interface LayerOptions {\r\n// title: string;\r\n// icon: string;\r\n// sid: string;\r\n// baseLayers?: any[];\r\n// visible?: boolean;\r\n// opacity?: number;\r\n// lockMode?: string;\r\n// minZoom?: number; // TOCHECK units\r\n// maxZoom?: number; // TOCHECK units\r\n// extent?: number[]; // [minx, miny, maxx, maxy] TOCHECK units\r\n// restyleInterval?: number;\r\n// type?: string;\r\n// includeInIdentify?: boolean;\r\n// uiVisible?: boolean;\r\n// uiMode?: string;\r\n// forBasemaps?: string[];\r\n// }\r\n\r\n// /**\r\n// * GroupLayerOptions interface.\r\n// *\r\n// * sequenceMode supports values \"group\" and \"choice\"\r\n// */\r\n// export interface GroupLayerOptions extends LayerOptions {\r\n// sequenceMode?: string;\r\n// layers?: Layer[];\r\n// defaultFocused?: string;\r\n// uiGroupExpandable?: boolean;\r\n// uiGroupAlwaysOpen?: boolean;\r\n// uiGroupHeaderVisible?: boolean;\r\n// zIndex?: number;\r\n// }\r\n\r\n// /**\r\n// * SourceLayerOptions interface.\r\n// */\r\n// export interface SourceLayerOptions extends LayerOptions {\r\n// source: Source;\r\n// listViewTitleTemplate?: string;\r\n// listViewDescriptionTemplate?: string;\r\n// listViewEnableOpenButton?: boolean;\r\n// infoWindowTitleTemplate?: string;\r\n// infoWindowDescriptionTemplate?: string;\r\n// infoWindowDescriptionRefreshInterval?: number;\r\n// infoWindowMaxWidth?: string;\r\n// infoWindowEnableOpenButton?: boolean;\r\n// }\r\n","export class NAPControlOptions implements INAPControlOptions {\r\n resourcesPath?: string;\r\n napDcUrl?: string;\r\n\r\n constructor(opts?: INAPControlOptions) {\r\n this.resourcesPath = opts ? opts.resourcesPath : null;\r\n this.napDcUrl = opts ? opts.napDcUrl : 'https://www.ncup.si/dc';\r\n }\r\n}\r\n\r\nexport interface INAPControlOptions {\r\n resourcesPath?: string;\r\n napDcUrl?: string;\r\n}\r\n","import * as maplibregl from 'maplibre-gl';\r\n\r\nimport Mustache from 'mustache';\r\nimport { FilterTemplate } from './templates/filter-template';\r\nimport { Map, PersistedVisibility } from '../../map/RM2Map';\r\nimport { NAPControlOptions, INAPControlOptions } from './RM2NAPControlOptions';\r\nimport { DetailsTemplate } from './templates/details-template';\r\nimport { LayerGroup } from '../../model/style-metadata/RM2LayerGroup';\r\nimport { LocalizationService } from '../../services/RM2LocalizationService';\r\nimport { ServiceType } from '../../services/RM2Service';\r\nimport { Feature } from '../../model/RM2Feature';\r\nimport { Layer } from '../../model/RM2Layer';\r\nimport { Point } from '../../model/RM2Geometry';\r\n\r\ndeclare let $: any;\r\n\r\nexport class NAPControl implements maplibregl.IControl {\r\n protected _map: Map;\r\n\r\n private _options: INAPControlOptions;\r\n\r\n private _localizationService: LocalizationService;\r\n\r\n private _button: HTMLButtonElement;\r\n private _filter: HTMLDivElement;\r\n private _details: HTMLDivElement;\r\n\r\n private get responsiveBreakpoint(): number { return 503; }\r\n\r\n private get filterWidth(): string { return '280px'; }\r\n private get detailsWidth(): string { return '300px'; }\r\n\r\n private get chargingLayerId(): string { return 'ncup.charging'; }\r\n\r\n constructor(map: Map, opts?: INAPControlOptions) {\r\n this._map = map;\r\n this._options = new NAPControlOptions(opts);\r\n\r\n this._map.onFeaturePopupClicked.subscribe(p => {\r\n if (p.properties.contentName === 'ncup.charging') {\r\n this.getPolnilnice([p])\r\n .then(polnilnice => {\r\n this.setFilterStatus(false);\r\n this.setDetailsStatus(polnilnice[0]);\r\n this._map.closeAllPopups();\r\n })\r\n .catch(ex => console.error(ex));\r\n }\r\n });\r\n\r\n this._connectorsDict['chademo'] = { icon: 'prikljucek_CHAdeMO_green', title: 'ncup.filter.connectors.CHAdeMO' };\r\n this._connectorsDict['cee3'] = { icon: 'prikljucek_3_polni_green', title: 'ncup.filter.connectors.3-polni' };\r\n this._connectorsDict['cee5'] = { icon: 'prikljucek_5_polni_green', title: 'ncup.filter.connectors.5-polni' };\r\n this._connectorsDict['domestic'] = { icon: 'prikljucek_schuko_green', title: 'ncup.filter.connectors.schuko' };\r\n this._connectorsDict['iec62196T1'] = { icon: 'prikljucek_type1_green', title: 'ncup.filter.connectors.type-1' };\r\n this._connectorsDict['iec62196T1COMBO'] = { icon: 'ccs_1_sae_green', title: 'ncup.filter.connectors.ccs-1-sae' };\r\n this._connectorsDict['iec62196T2'] = { icon: 'prikljucek_type2_green', title: 'ncup.filter.connectors.type-2' };\r\n this._connectorsDict['iec62196T2COMBO'] = { icon: 'ccs_2_sae_green', title: 'ncup.filter.connectors.ccs-2-sae' };\r\n this._connectorsDict['teslaR'] = { icon: 'prikljucek_roadster_green', title: 'ncup.filter.connectors.roadster' };\r\n this._connectorsDict['teslaS'] = { icon: 'prikljucek_supercharge_green', title: 'ncup.filter.connectors.supercharge' };\r\n\r\n // this._vehiclesDict['electricalDevices'] = { icon: , title: 'ncup.filter.vehicle.devices' };\r\n // this._vehiclesDict['electricBikeOrMotorcycle'] = { icon: , title: 'ncup.filter.vehicle.kolo-motor-skiro' };\r\n // this._vehiclesDict['electricVehicle'] = { icon: , title: 'ncup.filter.vehicle.car' };\r\n // this._vehiclesDict['lorryPowerConsumption'] = { icon: , title: 'ncup.filter.vehicle.tovorno' };\r\n // this._vehiclesDict['motorhomeOrCaravanSupply'] = { icon: , title: 'ncup.filter.vehicle.avtodom' };\r\n // this._vehiclesDict['other'] = { icon: , title: 'ncup.filter.vehicle.other' };\r\n\r\n this._localizationService = this._map.getService(ServiceType.Localization) as LocalizationService;\r\n\r\n this._button = this.create();\r\n\r\n window.addEventListener('resize', this.resizeElements);\r\n this.resizeElements();\r\n }\r\n\r\n private create(): HTMLButtonElement {\r\n // open filter btn\r\n const button = document.createElement('button');\r\n button.setAttribute('type', 'button');\r\n const icon = document.createElement('div');\r\n icon.className = 'rm2-nap-filter-icon';\r\n button.appendChild(icon);\r\n button.onclick = () => this.setFilterStatus(true);\r\n // button.onclick = () => this.setDetailsStatus(true);\r\n\r\n // filter panel\r\n this.createFilter();\r\n\r\n // details panel\r\n this.createDetails();\r\n\r\n return button;\r\n }\r\n\r\n private createFilter() {\r\n const filter = document.createElement('div');\r\n filter.className = 'rm2-nap-filter position-absolute animate-left';\r\n\r\n const prometGroups = this.getPrometGroups();\r\n filter.innerHTML = Mustache.render(FilterTemplate, {\r\n resourcesPath: this._options.resourcesPath,\r\n prometGroups: prometGroups\r\n });\r\n\r\n // moč polnjenja slider\r\n $(filter).find(\"#nap-filter-moc-polnjenja\").slider({\r\n range: true,\r\n min: 0,\r\n max: 120,\r\n values: [0, 120],\r\n change: (e, ui) => {\r\n const vals = ui.values;\r\n this.onFilterChange();\r\n filter.querySelector('#nap-filter-moc-bottom').innerHTML = `${vals[0]} kW`;\r\n filter.querySelector('#nap-filter-moc-top').innerHTML = `${vals[1]} kW`;\r\n }\r\n });\r\n\r\n // attach filter change listeners\r\n filter.querySelectorAll('input[type=\"checkbox\"]').forEach((l: HTMLInputElement) => l.onchange = () => this.onFilterChange());\r\n\r\n this._localizationService.refresh(filter);\r\n this._filter = filter;\r\n this.attachSlojiToggleEventsListeners(prometGroups);\r\n\r\n const close: HTMLElement = filter.querySelector('#rm2-nap-filter-close');\r\n close.onclick = () => this.setFilterStatus(false);\r\n\r\n this.refreshFilterSize();\r\n this.setFilterStatus(false);\r\n // this._button.parentNode.parentNode.appendChild(filter);\r\n }\r\n\r\n private createDetails() {\r\n const details = document.createElement('div');\r\n details.className = 'rm2-nap-details position-absolute animate-left';\r\n this._details = details;\r\n\r\n this.setDetailsStatus(null);\r\n }\r\n\r\n private setFilterStatus(visible: boolean) {\r\n if (this._filter == undefined)\r\n return;\r\n\r\n const l = visible ? '0px' : `-${this.getFilterWidth()}`;\r\n this._filter.style.left = l;\r\n }\r\n\r\n private setDetailsStatus(data: Feature) {\r\n if (data) {\r\n const now = new Date();\r\n let dayNow = now.getDay();\r\n if (dayNow === 0)\r\n dayNow = 7;\r\n\r\n let todayOpenTimes: string[] = [];\r\n let isOpenToday: boolean;\r\n const days = this.getDaysArray().map((x, i) => {\r\n let today = new Date().getDay();\r\n if (today === 0)\r\n today = 7;\r\n\r\n const title = this._localizationService.localize(`ncup.days.day-${i + 1}`);\r\n const isToday = i + 1 === today;\r\n const cssClasses = isToday ? 'font-weight-bold' : '';\r\n const xWorkingHours = data.properties.WorkingHours.find(y => y.DayInWeek === x);\r\n\r\n if (xWorkingHours) {\r\n const openTimes = xWorkingHours.OpenPeriods.map(h => h.stringify());\r\n if (isToday) {\r\n const currOpen = xWorkingHours.isCurrentlyOpen();\r\n if (currOpen)\r\n isOpenToday = true;\r\n\r\n todayOpenTimes = openTimes.slice();\r\n }\r\n\r\n return {\r\n Title: title,\r\n OpenTimes: openTimes,\r\n CSSClasses: cssClasses\r\n };\r\n }\r\n else {\r\n return {\r\n Title: title,\r\n OpenTimes: ['--'],\r\n CSSClasses: cssClasses\r\n };\r\n }\r\n });\r\n\r\n this._details.innerHTML = Mustache.render(DetailsTemplate, Object.assign(data.properties, {\r\n resourcesPath: this._options.resourcesPath,\r\n RefuelPoints: data.properties.RefuelPoints.map(p => {\r\n return Object.assign(p, {\r\n Connectors: p.Connectors.map(c => {\r\n const data = this.getConnectorData(c.ChargingInterface);\r\n return {\r\n Title: data.title,\r\n Icon: data.icon,\r\n MaxPowerAtSocket: c.MaxPowerAtSocket\r\n }\r\n })\r\n });\r\n }),\r\n Days: days,\r\n TodayOpenTimes: todayOpenTimes,\r\n TodayOpenStatus: isOpenToday ? 'ncup.chargingStations.open.open' : 'ncup.chargingStations.open.closed',\r\n PaymentTypesText: data.properties.PaymentTypes && data.properties.PaymentTypes.length > 0 ? `${this._localizationService.localize('ncup.chargingStations.price.payment-types.title')}: ${data.properties.PaymentTypes.map(x => this._localizationService.localize(`ncup.chargingStations.price.payment-types.${x}`)).join(', ')}` : null\r\n // ChargingTypes: 'AC, DC, CCS'\r\n }));\r\n this._localizationService.refresh(this._details);\r\n\r\n const close: HTMLElement = this._details.querySelector('#rm2-nap-details-close');\r\n close.onclick = () => this.setDetailsStatus(null);\r\n this.refreshDetailsSize();\r\n }\r\n\r\n const l = data ? '0px' : `-${this.getDetailsWidth()}`;\r\n this._details.style.left = l;\r\n }\r\n\r\n private resizeElements = () => {\r\n this.refreshFilterSize();\r\n this.refreshDetailsSize();\r\n };\r\n\r\n private refreshFilterSize() {\r\n if (this._filter == undefined)\r\n return;\r\n\r\n const size = this._map.getSize();\r\n const h = size[1];\r\n\r\n this._filter.style.width = this.getFilterWidth();\r\n this._filter.style.height = `${h}px`;\r\n const currLeft = this._filter.style.left;\r\n if (currLeft.startsWith('-'))\r\n this._filter.style.left = `-${this.getFilterWidth()}`;\r\n\r\n // refresh tab content height\r\n const tabs: HTMLElement = this._filter.querySelector('.tab-content');\r\n tabs.style.height = `${h - 120}px`;\r\n }\r\n\r\n private refreshDetailsSize() {\r\n if (this._details == undefined)\r\n return;\r\n\r\n const size = this._map.getSize();\r\n const h = size[1];\r\n\r\n this._details.style.width = this.getDetailsWidth();\r\n this._details.style.height = `${h}px`;\r\n const currLeft = this._details.style.left;\r\n if (currLeft.startsWith('-'))\r\n this._details.style.left = `-${this.getDetailsWidth()}`;\r\n\r\n // refresh tab content height\r\n const tabs: HTMLElement = this._details.querySelector('.tab-content');\r\n if (tabs)\r\n tabs.style.height = `${h - 220}px`;\r\n }\r\n\r\n // TODO: to poenotiti s PrometSiControl (podvojeno)\r\n private attachSlojiToggleEventsListeners(prometGroups: { layers: LayerGroup[], isCheckbox: boolean }[]) {\r\n // legend checkboxes\r\n const checkboxes = this._filter.querySelectorAll(\".nap-filter-sloji input[type='checkbox']\");\r\n checkboxes.forEach((c: HTMLInputElement) => {\r\n c.checked = (prometGroups.filter(l => l.isCheckbox === true).map(l => l.layers) as any).flat().find((g: LayerGroup) => g.id === c.name).visible !== false; // set initial UI\r\n c.addEventListener('change', e => {\r\n this._map.setGroupVisibility(c.name, c.checked);\r\n this._map.persistVisibility([{ type: 'group', id: c.name, visible: c.checked }]);\r\n }); // set visibility\r\n });\r\n\r\n // legend radios\r\n const radios = this._filter.querySelectorAll(\".nap-filter-prikaz input[type='radio']\");\r\n radios.forEach((c: HTMLInputElement) => {\r\n const parent: LayerGroup = (prometGroups.filter(l => l.isCheckbox === false).map(l => l.layers) as any).flat().find((g: LayerGroup) => g.id === c.name);\r\n c.checked = parent.children.find(l => l.id === c.value).visible !== false; // set initial UI\r\n c.addEventListener('change', e => {\r\n const filtered = parent.children.filter(child => child.id !== c.value);\r\n filtered.forEach(other => this._map.setGroupVisibility(other.id, false));\r\n this._map.setGroupVisibility(c.value, true); // set visibility\r\n\r\n const persist: PersistedVisibility[] = filtered.map(x => {\r\n return {\r\n type: 'group',\r\n id: x.id,\r\n visible: false\r\n };\r\n });\r\n\r\n persist.push({\r\n type: 'group',\r\n id: c.id,\r\n visible: true\r\n });\r\n\r\n this._map.persistVisibility(persist);\r\n });\r\n })\r\n\r\n // group visibility update\r\n this._map.onGroupVisibilityChanged.subscribe(g => {\r\n const parent = g.getParent();\r\n if (parent && parent.sequenceMode === 'choice') {\r\n // update radios\r\n const radios = this._filter.querySelectorAll(`[name=\"${parent.id}\"]`);\r\n // radios.forEach((radio: HTMLInputElement) => updateLegendItemUI(radio, radio.value === g.id));\r\n }\r\n else {\r\n // update checkbox\r\n const checkbox: HTMLInputElement = this._filter.querySelector(`[id^='nap-filter-prikaz-${g.id}']`);\r\n // checkbox.checked = g.visible !== false;\r\n // updateLegendItemUI(checkbox, g.visible !== false);\r\n }\r\n });\r\n }\r\n\r\n private getPrometGroups(): { layers: LayerGroup[], isCheckbox: boolean }[] {\r\n const metadata = this._map.metadata;\r\n if (metadata && metadata.groups) {\r\n const groups = metadata.groups.filter(g => g.id && g.uiVisible !== false);\r\n const radio = groups.filter(g => g.sequenceMode === 'choice');\r\n const checkbox = groups.filter(g => g.sequenceMode !== 'choice');\r\n\r\n return [\r\n {\r\n layers: checkbox,\r\n isCheckbox: true\r\n },\r\n {\r\n layers: radio,\r\n isCheckbox: false\r\n }\r\n ]\r\n }\r\n\r\n return [];\r\n }\r\n\r\n private filterReq: XMLHttpRequest;\r\n private filterDebounce: any;\r\n private onFilterChange() {\r\n if (this.filterDebounce) {\r\n clearTimeout(this.filterDebounce);\r\n this.filterDebounce = null;\r\n }\r\n\r\n if (this.filterReq) {\r\n this.filterReq.abort();\r\n this.filterReq = null;\r\n }\r\n\r\n this.filterDebounce = setTimeout(() => {\r\n const zasedenost_prosto: HTMLInputElement = this._filter.querySelector('#nap-filter-zasedenost-prosto');\r\n\r\n const mocPolnjenja = $(this._filter).find(\"#nap-filter-moc-polnjenja\").slider('values');\r\n\r\n const prikljucek_3polni: HTMLInputElement = this._filter.querySelector('#nap-filter-prikljucki-3-polni');\r\n const prikljucek_5polni: HTMLInputElement = this._filter.querySelector('#nap-filter-prikljucki-5-polni');\r\n const prikljucek_schuko: HTMLInputElement = this._filter.querySelector('#nap-filter-prikljucki-schuko');\r\n const prikljucek_type1: HTMLInputElement = this._filter.querySelector('#nap-filter-prikljucki-type-1');\r\n const prikljucek_type2: HTMLInputElement = this._filter.querySelector('#nap-filter-prikljucki-type-2');\r\n const prikljucek_chademo: HTMLInputElement = this._filter.querySelector('#nap-filter-prikljucki-CHAdeMO');\r\n const prikljucek_ccs1sae: HTMLInputElement = this._filter.querySelector('#nap-filter-prikljucki-ccs-1-sae');\r\n const prikljucek_ccs2sae: HTMLInputElement = this._filter.querySelector('#nap-filter-prikljucki-ccs-2-sae');\r\n const prikljucek_roadster: HTMLInputElement = this._filter.querySelector('#nap-filter-prikljucki-roadster');\r\n const prikljucek_supercharge: HTMLInputElement = this._filter.querySelector('#nap-filter-prikljucki-supercharge');\r\n\r\n const aktivacija_kartica: HTMLInputElement = this._filter.querySelector('#nap-filter-nacin-aktivacije-kartica');\r\n const aktivacija_app: HTMLInputElement = this._filter.querySelector('#nap-filter-nacin-aktivacije-app');\r\n const aktivacija_sms: HTMLInputElement = this._filter.querySelector('#nap-filter-nacin-aktivacije-sms');\r\n const aktivacija_pnc: HTMLInputElement = this._filter.querySelector('#nap-filter-nacin-aktivacije-pnc');\r\n\r\n const cena_brezplacno: HTMLInputElement = this._filter.querySelector('#nap-filter-cena-brezplacno');\r\n\r\n const obrCas_24ur: HTMLInputElement = this._filter.querySelector('#nap-filter-obr-cas-24ur');\r\n const obrCas_trenutnoOdprto: HTMLInputElement = this._filter.querySelector('#nap-filter-obr-cas-trenutno');\r\n\r\n const vrsta_avto: HTMLInputElement = this._filter.querySelector('#nap-filter-vrsta-avto');\r\n const vrsta_koloMotorSkiro: HTMLInputElement = this._filter.querySelector('#nap-filter-vrsta-kolo-motor-skiro');\r\n const vrsta_avtodom: HTMLInputElement = this._filter.querySelector('#nap-filter-vrsta-avtodom');\r\n const vrsta_tovorno: HTMLInputElement = this._filter.querySelector('#nap-filter-vrsta-tovorno-vozilo');\r\n\r\n const dto: IPolnilniceFilterRequest = {\r\n MocPolnjenjaMin: mocPolnjenja[0],\r\n MocPolnjenjaMax: mocPolnjenja[1]\r\n };\r\n\r\n if (zasedenost_prosto.checked) dto.ZasedenostProsto = true;\r\n\r\n if (prikljucek_3polni.checked) dto.Prikljucki3Polni = true;\r\n if (prikljucek_5polni.checked) dto.Prikljucki5Polni = true;\r\n if (prikljucek_schuko.checked) dto.PrikljuckiSchuko = true;\r\n if (prikljucek_type1.checked) dto.PrikljuckiType1 = true;\r\n if (prikljucek_type2.checked) dto.PrikljuckiType2 = true;\r\n if (prikljucek_chademo.checked) dto.PrikljuckiCHAdeMO = true;\r\n if (prikljucek_ccs1sae.checked) dto.PrikljuckiCCS1SAE = true;\r\n if (prikljucek_ccs2sae.checked) dto.PrikljuckiCCS2SAE = true;\r\n if (prikljucek_roadster.checked) dto.PrikljuckiRoadster = true;\r\n if (prikljucek_supercharge.checked) dto.PrikljuckiSupercharge = true;\r\n\r\n if (aktivacija_kartica.checked) dto.NacinAktivacijeKartica = true;\r\n if (aktivacija_app.checked) dto.NacinAktivacijeAplikacija = true;\r\n if (aktivacija_sms.checked) dto.NacinAktivacijeSMS = true;\r\n if (aktivacija_pnc.checked) dto.NacinAktivacijePlugAndCharge = true;\r\n\r\n if (cena_brezplacno.checked) dto.CenaBrezplacno = true;\r\n\r\n if (obrCas_24ur.checked) dto.ObratovalniCas24Ur = true;\r\n if (obrCas_trenutnoOdprto.checked) dto.ObratovalniCasTrenutnoOdprto = true;\r\n\r\n if (vrsta_avto.checked) dto.VrstaVozilaAvto = true;\r\n if (vrsta_koloMotorSkiro.checked) dto.VrstaVozilaKoloMotorSkiro = true;\r\n if (vrsta_avtodom.checked) dto.VrstaVozilaAvtodom = true;\r\n if (vrsta_tovorno.checked) dto.VrstaVozilaTovornoVozilo = true;\r\n\r\n this.filterReq = new XMLHttpRequest();\r\n this.filterReq.timeout = 10000;\r\n this.filterReq.onload = () => {\r\n if (this.filterReq.responseText) {\r\n const ids: number[] = JSON.parse(this.filterReq.responseText);\r\n const filter: any[] = [\r\n \"all\",\r\n [\"in\", [\"to-number\", [\"get\", \"id\"]], [\"literal\", ids]]\r\n ];\r\n\r\n if (dto.ZasedenostProsto === true) {\r\n filter.push([\r\n \"all\",\r\n [\r\n \"==\",\r\n [\"get\", \"isOperational\"],\r\n \"True\"\r\n ],\r\n [\r\n \"==\",\r\n [\"get\", \"isFree\"],\r\n \"True\"\r\n ]\r\n ]);\r\n }\r\n\r\n this._map.setFilter(this.chargingLayerId, filter);\r\n }\r\n };\r\n\r\n const url = `${this._options.napDcUrl}/naps.prometej.filter`;\r\n this.filterReq.ontimeout = () => { };\r\n this.filterReq.onerror = () => { };\r\n this.filterReq.onabort = () => { };\r\n this.filterReq.open('POST', url, true);\r\n this.filterReq.setRequestHeader('Content-Type', 'application/json');\r\n this.filterReq.send(JSON.stringify(dto));\r\n }, 300);\r\n }\r\n\r\n private polnilnicaReq: XMLHttpRequest;\r\n private getPolnilnice(fts: Feature[]): Promise[]> {\r\n return new Promise[]>((res, rej) => {\r\n if (this.polnilnicaReq) {\r\n this.polnilnicaReq.abort();\r\n this.polnilnicaReq = null;\r\n }\r\n\r\n this.polnilnicaReq = new XMLHttpRequest();\r\n this.polnilnicaReq.timeout = 10000;\r\n this.polnilnicaReq.onload = () => {\r\n if (this.polnilnicaReq.responseText) {\r\n let response: any[] = JSON.parse(this.polnilnicaReq.responseText);\r\n response = response.map(x => EnergySiteWebDTO.fromGeoJson(x));\r\n\r\n const newFts: Feature[] = fts.map((x, i) => {\r\n const newFt = new Feature(response[i]);\r\n newFt.properties.ContentName = 'ncup.charging';\r\n newFt.geometry = Point.fromCoordinate([newFt.properties.Long, newFt.properties.Lat]);\r\n (newFt.properties as any).isOperational = x.properties.isOperational === 'True';\r\n (newFt.properties as any).isFree = x.properties.isFree === 'True';\r\n return newFt;\r\n });\r\n\r\n res(newFts);\r\n }\r\n };\r\n\r\n const url = `${this._options.napDcUrl}/naps.prometej.polnilnica.detail`;\r\n this.polnilnicaReq.ontimeout = () => rej('timeout');\r\n this.polnilnicaReq.onerror = (e) => rej(e);\r\n this.polnilnicaReq.onabort = () => rej('abort');\r\n this.polnilnicaReq.open('POST', url, true);\r\n this.polnilnicaReq.setRequestHeader('Content-Type', 'application/json');\r\n\r\n const ids = fts.map(x => Number.parseInt(x.properties.id));\r\n this.polnilnicaReq.send(JSON.stringify(ids));\r\n });\r\n }\r\n\r\n private getFilterWidth(): string {\r\n const width = this._map.getSize()[0];\r\n return width > this.responsiveBreakpoint ? this.filterWidth : `${width - 75}px`;\r\n }\r\n\r\n private getDetailsWidth(): string {\r\n const width = this._map.getSize()[0];\r\n return width > this.responsiveBreakpoint ? this.detailsWidth : `${width - 75}px`;\r\n }\r\n\r\n private getDaysArray(): string[] {\r\n return [\r\n \"Monday\",\r\n \"Tuesday\",\r\n \"Wednesday\",\r\n \"Thursday\",\r\n \"Friday\",\r\n \"Saturday\",\r\n \"Sunday\"\r\n ];\r\n }\r\n\r\n private getTodayWorkingHours(hours: OpeningTimesWebDTO[]): OpeningTimesWebDTO {\r\n let today = new Date().getDay();\r\n if (today === 0)\r\n today = 7;\r\n\r\n const weekdays = this.getDaysArray();\r\n const todayOpen = hours.find(x => x.DayInWeek === weekdays[today - 1]);\r\n return todayOpen;\r\n }\r\n\r\n private _connectorsDict: { [id: string]: { icon: string, title: string } } = {};\r\n private _vehiclesDict: { [id: string]: { icon: string, title: string } } = {};\r\n private getConnectorData(type: ChargingInterfaceTypeWebAppEnum): { icon: string, title: string } {\r\n const data = this._connectorsDict[type];\r\n if (data)\r\n return data;\r\n return { icon: 'prikljucek_unknown_green', title: 'ncup.filter.connectors.other' };\r\n }\r\n\r\n onAdd(map: maplibregl.Map): HTMLElement {\r\n const container = document.createElement('div');\r\n\r\n const btnWrapper = document.createElement('div');\r\n btnWrapper.className = 'mapboxgl-ctrl mapboxgl-ctrl-group';\r\n btnWrapper.appendChild(this._button);\r\n\r\n container.appendChild(btnWrapper);\r\n container.appendChild(this._details);\r\n container.appendChild(this._filter);\r\n\r\n return container;\r\n }\r\n\r\n onRemove() {\r\n this._button.parentNode.removeChild(this._button);\r\n this._filter.parentNode.removeChild(this._filter);\r\n this._details.parentNode.removeChild(this._details);\r\n }\r\n\r\n getDefaultPosition?: () => maplibregl.ControlPosition = () => 'top-left';\r\n}\r\n\r\nexport interface IPolnilniceFilterRequest {\r\n ZasedenostProsto?: boolean; // če je polnilnica prosta\r\n\r\n MocPolnjenjaMin: number; // minimalna moč polnjenja polnilnice (dobiš skupaj z MocPolnjenjaMax)\r\n MocPolnjenjaMax: number; // maksimalna moč polnjenja polnilnice (dobiš skupaj z MocPolnjenjaMin)\r\n\r\n Prikljucki3Polni?: boolean; // polnilnica ima 3-polni prikljucek\r\n Prikljucki5Polni?: boolean; // polnilnica ima 5-polni prikljucek\r\n PrikljuckiSchuko?: boolean; // polnilnica ima Schuko prikljucek\r\n PrikljuckiType1?: boolean; // polnilnica ima Type-1 prikljucek\r\n PrikljuckiType2?: boolean; // polnilnica ima Type-2 prikljucek\r\n PrikljuckiCHAdeMO?: boolean; // polnilnica ima CHAdeMO prikljucek\r\n PrikljuckiCCS1SAE?: boolean; // polnilnica ima CCS1SAE prikljucek\r\n PrikljuckiCCS2SAE?: boolean; // polnilnica ima CCS1SAE prikljucek\r\n PrikljuckiRoadster?: boolean; // polnilnica ima roadster prikljucek\r\n PrikljuckiSupercharge?: boolean; // polnilnica ima supercharge prikljucek\r\n\r\n NacinAktivacijeKartica?: boolean; // polnilnica ima način aktivacije s kartico\r\n NacinAktivacijeAplikacija?: boolean; // polnilnica ima način aktivacije z aplikacijo\r\n NacinAktivacijeSMS?: boolean; // polnilnica ima način aktivacije z SMS\r\n NacinAktivacijePlugAndCharge?: boolean; // polnilnica ima način aktivacije s plug & charge oz. unlimited\r\n\r\n CenaBrezplacno?: boolean; // polnilnica je brezplačna\r\n\r\n ObratovalniCas24Ur?: boolean; // polnilnica obratuje 24ur\r\n ObratovalniCasTrenutnoOdprto?: boolean; // polnilnica trenutno obratuje\r\n\r\n VrstaVozilaAvto?: boolean; // na polnilnice lahko polniš avto\r\n VrstaVozilaKoloMotorSkiro?: boolean; // na polnilnice lahko polniš kolo, motor, skiro\r\n VrstaVozilaAvtodom?: boolean; // na polnilnice lahko polniš avtodom\r\n VrstaVozilaTovornoVozilo?: boolean; // na polnilnice lahko polniš tovorno vozilo\r\n};\r\n\r\nexport class EnergySiteWebDTO {\r\n // internal\r\n ContentName: string;\r\n\r\n\r\n Name: string;\r\n Street: string;\r\n Street1: string;\r\n HouseNumber: string;\r\n Zip: string;\r\n City: string;\r\n // LocationType: LocationEnum;\r\n RefuelPoints: EnergyRefuelPointWebDTO[];\r\n WorkingHours: OpeningTimesWebDTO[];\r\n Authentications: AuthenticationAndIdentificationEnum[];\r\n PaymentTypes: string[];\r\n Lat?: number;\r\n Long?: number;\r\n ElectricAdHocPrice: number;\r\n UpravljalecName: string;\r\n UpravljalecTel: string;\r\n UpravljalecMail: string;\r\n UpravljalecWeb: string;\r\n\r\n public static fromGeoJson(geojson: any): EnergySiteWebDTO {\r\n const obj = new EnergySiteWebDTO();\r\n const keys = Object.keys(geojson);\r\n for (let i = 0; i < keys.length; i++)\r\n obj[keys[i]] = geojson[keys[i]];\r\n obj.WorkingHours = obj.WorkingHours.map(x => OpeningTimesWebDTO.fromGeojson(x));\r\n return obj;\r\n }\r\n}\r\n\r\nexport interface EnergyRefuelPointWebDTO {\r\n StationName: string;\r\n StationIndex: number;\r\n RefuelPointName: string;\r\n RefuelPointIndex: number;\r\n InUse: boolean;\r\n Operational: boolean;\r\n ParkingFree: boolean;\r\n Voltage: number;\r\n ChargingPower: number;\r\n MaximumCurrent: number;\r\n Connectors: ConnectorWebDTO[];\r\n UsageTypes: ChargingPointUsageTypeEnum[];\r\n}\r\n\r\nexport interface ConnectorWebDTO {\r\n ChargingInterface: ChargingInterfaceTypeWebAppEnum;\r\n MaxPowerAtSocket: number;\r\n}\r\n\r\nexport enum ChargingPointUsageTypeEnum\r\n{\r\n electricalDevices,\r\n electricBikeOrMotorcycle,\r\n electricVehicle,\r\n lorryPowerConsumption,\r\n motorhomeOrCaravanSupply,\r\n other\r\n}\r\n\r\nexport enum ChargingInterfaceTypeWebAppEnum {\r\n chademo,\r\n cee3,\r\n cee5,\r\n domestic,\r\n iec62196T1,\r\n iec62196T1COMBO,\r\n iec62196T2,\r\n iec62196T2COMBO,\r\n teslaR,\r\n teslaS,\r\n other\r\n}\r\n\r\nexport enum AuthenticationAndIdentificationEnum {\r\n activeRFIDChip,\r\n apps,\r\n calypso,\r\n cashPayment,\r\n creditCard,\r\n debitCard,\r\n mifareClassic,\r\n mifareDesfire,\r\n nfc,\r\n overTheAir,\r\n phoneDialog,\r\n phoneSMS,\r\n pinpad,\r\n plc,\r\n prepaidCard,\r\n rfid,\r\n website,\r\n unlimitedAccess,\r\n noAccess\r\n}\r\n\r\nexport class OpenPeriodWebDTO {\r\n OpenFrom: number;\r\n OpenTill: number;\r\n\r\n constructor(openFrom: number, openTill: number) {\r\n this.OpenFrom = openFrom;\r\n this.OpenTill = openTill;\r\n }\r\n\r\n public stringify(): string {\r\n const openFromH = Math.floor(this.OpenFrom / 60);\r\n let openFromMin = (this.OpenFrom % 60).toString();\r\n if (openFromMin.length === 1)\r\n openFromMin = '0' + openFromMin;\r\n\r\n let openTill = this.OpenTill === 0 ? 1439 : this.OpenTill;\r\n const openTillH = Math.floor(openTill / 60);\r\n let openTillMin = (openTill % 60).toString();\r\n if (openTillMin.length === 1)\r\n openTillMin = '0' + openTillMin;\r\n\r\n return `${openFromH}:${openFromMin} - ${openTillH}:${openTillMin}`;\r\n }\r\n}\r\n\r\nexport class OpeningTimesWebDTO {\r\n // DayInWeek: DayInWeekEnum;\r\n DayInWeek: string;\r\n OpenPeriods: OpenPeriodWebDTO[];\r\n\r\n public isCurrentlyOpen(): boolean {\r\n const now = new Date();\r\n const mins = now.getHours() * 60 + now.getMinutes();\r\n for (let i = 0; i < this.OpenPeriods.length; i++) {\r\n const p = this.OpenPeriods[i];\r\n if ((p.OpenFrom <= mins && p.OpenTill >= mins) || (p.OpenFrom === 0 && p.OpenTill === 0))\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n public static fromGeojson(geojson: any): OpeningTimesWebDTO {\r\n const obj = new OpeningTimesWebDTO();\r\n obj.DayInWeek = geojson.DayInWeek;\r\n obj.OpenPeriods = geojson.OpenPeriods.map((p: any) => new OpenPeriodWebDTO(p.OpenFrom, p.OpenTill));\r\n return obj;\r\n }\r\n}\r\n","// BOOTSTRAP 4\r\nexport const FilterTemplate = `\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
filter
\r\n
\r\n\r\n \r\n
    \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n {{#prometGroups}}\r\n {{#layers}}\r\n {{#isCheckbox}}\r\n \r\n
\r\n \r\n \r\n
\r\n {{/isCheckbox}}\r\n {{/layers}}\r\n {{/prometGroups}}\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n {{#prometGroups}}\r\n {{#layers}}\r\n {{^isCheckbox}}\r\n \r\n {{#children}}\r\n
\r\n \r\n \r\n
\r\n {{/children}}\r\n {{/isCheckbox}}\r\n {{/layers}}\r\n {{/prometGroups}}\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
0 kW
\r\n
120 kW
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n`;\r\n","// BOOTSTRAP 4\r\nexport const DetailsTemplate = `\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n

{{Name}}

\r\n
{{Zip}} {{City}}
\r\n
\r\n
\r\n\r\n \r\n
    \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
\r\n
\r\n \r\n
\r\n {{#RefuelPoints}}\r\n
\r\n
\r\n
\r\n \"{{StationName}}\"\r\n
\r\n
\r\n
{{StationName}}
\r\n
{{Voltage}} V | {{MaximumCurrent}} A | {{ChargingPower}} kW
\r\n
\r\n
\r\n
\r\n
\r\n
·
\r\n {{#UsageTypes}}\r\n
\r\n \"{{.}}\"\r\n
\r\n {{/UsageTypes}}\r\n
\r\n {{#Connectors}}\r\n
\r\n
\r\n \"{{Title}}\"\r\n
\r\n
\r\n
\r\n \r\n
{{MaxPowerAtSocket}} kW
\r\n
\r\n
\r\n {{/Connectors}}\r\n
\r\n {{/RefuelPoints}}\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \"\"\r\n
\r\n
\r\n
\r\n  \r\n\r\n \r\n \r\n\r\n
\r\n
\r\n {{#TodayOpenTimes}}\r\n
\r\n - {{.}}\r\n
\r\n {{/TodayOpenTimes}}\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n {{#Days}}\r\n
\r\n
{{Title}}
\r\n
\r\n {{#OpenTimes}}\r\n
\r\n {{.}}\r\n
\r\n {{/OpenTimes}}\r\n
\r\n
\r\n {{/Days}}\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \"\"\r\n
\r\n
\r\n {{#ElectricAdHocPrice}}\r\n
\r\n  \r\n
\r\n
\r\n : {{.}} € / kWh\r\n
\r\n
{{PaymentTypesText}}
\r\n {{/ElectricAdHocPrice}}\r\n {{^ElectricAdHocPrice}}\r\n
\r\n  \r\n
\r\n {{/ElectricAdHocPrice}}\r\n\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \"\"\r\n
\r\n
\r\n {{#Authentications}}\r\n
\r\n {{/Authentications}}\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \"\"\r\n
\r\n
{{UpravljalecName}}
\r\n
\r\n\r\n \r\n
\r\n
\r\n \"\"\r\n
\r\n
{{UpravljalecTel}}
\r\n
\r\n\r\n \r\n
\r\n
\r\n \"\"\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n`;\r\n","import * as maplibregl from 'maplibre-gl';\r\nimport * as maplibreglCompare from 'mapbox-gl-compare';\r\nimport Mustache from 'mustache';\r\n\r\nimport { MapEventArgs, RM2Event } from '../model/RM2Event';\r\nimport { Projection } from '../model/RM2Projection';\r\nimport { Coordinate, Geometry, Popup } from '../';\r\nimport { IPolygonOptions, ILineOptions, IFeatureHighlightOptions, ICircleOptions, IHighlightOptions } from '../highlights/RM2HighlightOptions';\r\nimport { IFitOptions, ICameraChangeOptions, IPanOptions, PanOptions, FitOptions, CameraChangeOptions } from '../model/RM2CameraChangeOptions';\r\nimport { IGeolocationOptions } from '../geolocation/RM2GeolocationOptions';\r\nimport { IPopupOptions, ICarouselPopupOptions, CarouselPopupOptions, PopupOptions } from '../popup/RM2PopupOptions';\r\nimport { Feature, FeatureCollection } from '../model/RM2Feature';\r\nimport { CoordinateLike, Envelope, Point } from '../model/RM2Geometry';\r\nimport { MapControlType, ControlData } from '../map-controls/RM2MapControls';\r\nimport { IService, ServiceType } from '../services/RM2Service';\r\nimport { NominatimService, QueryOptions, ReverseGeocodingOptions, INominatimServiceOptions } from '../services/RM2NominatimService';\r\nimport { RoutingService, Route, IRouteOptions, IRoutingServiceOptions, RouteSimple, IRouteHighlightOptions, RouteHighlightOptions, RouteLegacy } from '../services/RM2RoutingService';\r\nimport { LocalizationService, ILocalizationServiceOptions } from '../services/RM2LocalizationService';\r\nimport { Highlights } from '../highlights/RM2Highlights';\r\nimport { MapPickerControl } from '../map-controls/map-picker-control/RM2MapPickerControl';\r\nimport { Geolocation, RM2GeolocationPosition } from '../geolocation/RM2Geolocation';\r\nimport { LegendOptions, LegendControl } from '../map-controls/legend-control/RM2LegendControl';\r\nimport { RoutingControl, RoutingGeocodingFeatureProps } from '../map-controls/routing-control/RM2RoutingControl';\r\nimport { PrometSiControl } from '../map-controls/promet-si-control/RM2PrometSiControl';\r\nimport { MapPickerControlOptions } from '../map-controls/map-picker-control/RM2MapPickerControlOptions';\r\nimport { RM2ViewData } from '../model/RM2ViewData';\r\nimport { LayerGroup } from '../model/style-metadata/RM2LayerGroup';\r\nimport { StyleMetadata } from '../model/style-metadata/RM2StyleMetadata';\r\nimport { Layer } from '../model/RM2Layer';\r\nimport { MapTheme } from '../model/RM2Theme';\r\nimport { MapboxClusterProperties } from '../model/MapboxClusterProperties';\r\nimport { PopupCarouselTemplate } from '../templates/popup-templates';\r\nimport { Guid } from 'guid-typescript';\r\nimport { NAPControl } from '../map-controls/nap-control/RM2NAPControl';\r\n\r\nexport type RMap2TransformRequestFunction = (url: string, resourceType: string) => { url: string };\r\n\r\nexport interface RM2MapOptions {\r\n transformRequest?: RMap2TransformRequestFunction;\r\n view?: RM2ViewData;\r\n label?: string;\r\n theme?: MapTheme;\r\n id?: string;\r\n}\r\n\r\nexport interface RM2MapCompareState {\r\n sliderPosition?: number;\r\n}\r\n\r\nexport interface PersistedVisibility {\r\n type: 'group' | 'layer';\r\n id: string;\r\n visible: boolean;\r\n}\r\n\r\nexport class Map {\r\n\r\n public static readonly routeSourceName = 'mb-r-route-source';\r\n\r\n private _mbMap: maplibregl.Map;\r\n private _mbMapCompare: maplibreglCompare;\r\n private _mbMapCompareMap: Map;\r\n\r\n private _style: maplibregl.StyleSpecification;\r\n public get style(): maplibregl.StyleSpecification { return this._style; }\r\n\r\n public get metadata(): StyleMetadata { return this._style && this.style.metadata ? new StyleMetadata(this._style.metadata) : null; }\r\n\r\n // private _legendControl: LegendControlMb;\r\n private _geolocatorControl: maplibregl.GeolocateControl;\r\n private _geolocation: Geolocation;\r\n private _highlights: Highlights;\r\n\r\n /**\r\n * Events\r\n */\r\n /** Exposes map's onClick RM2Event object, that can be subscribed for custom eventhandling */\r\n public get onClick() { return this._onClick.expose(); }\r\n private readonly _onClick = new RM2Event();\r\n\r\n /** Exposes map's onClick RM2Event object, that can be subscribed for custom eventhandling */\r\n public get onLongClick() { return this._onLongClick.expose(); }\r\n private readonly _onLongClick = new RM2Event();\r\n\r\n /** Exposes map's onDblClick RM2Event object, that can be subscribed for custom eventhandling */\r\n public get onDblClick() { return this._onDblClick.expose(); }\r\n private readonly _onDblClick = new RM2Event();\r\n\r\n /** Exposes map's onMouseMove RM2Event object, that can be subscribed for custom eventhandling */\r\n public get onMouseMove() { return this._onMouseMove.expose(); }\r\n private readonly _onMouseMove = new RM2Event();\r\n\r\n /** Exposes map's onLoad RM2Event object, that can be subscribed for custom eventhandling */\r\n public get onLoad() { return this._onLoad.expose(); }\r\n private readonly _onLoad = new RM2Event();\r\n\r\n /** Exposes map's onStyleLoad RM2Event object, that can be subscribed for custom eventhandling */\r\n public get onStyleLoad() { return this._onStyleLoad.expose(); }\r\n private readonly _onStyleLoad = new RM2Event();\r\n\r\n /** Exposes map's onRestyleLayer RM2Event object, that can be subscribed for custom eventhandling */\r\n public get onRestyleLayer() { return this._onRestyleLayer.expose(); }\r\n private readonly _onRestyleLayer = new RM2Event();\r\n\r\n /** Exposes map's onUserAction RM2Event object. Event fires when user performs interaction with map (touchastart, mousedown, wheel) */\r\n public get onUserAction() { return this._onUserAction.expose(); }\r\n private readonly _onUserAction = new RM2Event();\r\n private readonly _userActionEvents = ['touchstart', 'mousedown', 'wheel'];\r\n\r\n public get onSourceChange() { return this._onSourceChange.expose(); }\r\n private readonly _onSourceChange = new RM2Event();\r\n\r\n /** Exposes map's onViewChange RM2Event object. Event fires when the map's view changes */\r\n public get onViewChange() { return this._onViewChange.expose(); }\r\n private readonly _onViewChange = new RM2Event();\r\n\r\n /** Exposes map's onZoom RM2Event object. Event fires when the map's zoom changes */\r\n public get onZoom() { return this._onZoom.expose(); }\r\n private readonly _onZoom = new RM2Event();\r\n\r\n /** Exposes map's onLayerVisibilityChanged RM2Event object. Event fires when a layer's visibility changes */\r\n public get onGroupVisibilityChanged() { return this._onGroupVisibilityChanged.expose(); }\r\n private readonly _onGroupVisibilityChanged = new RM2Event();\r\n\r\n /** Exposes map's onLayerVisibilityChanged RM2Event object. Event fires when a layer's visibility changes */\r\n public get onLayerVisibilityChanged() { return this._onLayerVisibilityChanged.expose(); }\r\n private readonly _onLayerVisibilityChanged = new RM2Event();\r\n\r\n /** Exposes map's onRouteConstructed R_M2Event object. Event fires when a route has been constructed */\r\n public get onRouteConstructed() { return this._onRouteConstructed.expose(); }\r\n private readonly _onRouteConstructed = new RM2Event();\r\n\r\n /** Exposes map's onPopupOpened R_M2Event object. Event fires when a popup has been opened */\r\n public get onPopupOpened() { return this._onPopupOpened.expose(); }\r\n private readonly _onPopupOpened = new RM2Event();\r\n\r\n /** Exposes map's onPopupClicked R_M2Event object. Event fires when a popup has been clicked */\r\n public get onFeaturePopupClicked() { return this._onFeaturePopupClicked.expose(); }\r\n private readonly _onFeaturePopupClicked = new RM2Event();\r\n\r\n /** Exposes map's onProcessingStatusChanged R_M2Event object. */\r\n public get onProcessingStatusChanged() { return this._onProcessingStatusChanged.expose(); }\r\n private readonly _onProcessingStatusChanged = new RM2Event();\r\n\r\n /** Exposes map's onFeatureAdded RM2Event object. Event fires when a feature is added to the map */\r\n public get onFeaturesAdded() { return this._onFeaturesAdded.expose(); }\r\n private readonly _onFeaturesAdded = new RM2Event();\r\n\r\n /** Exposes map's onFeatureRemoved RM2Event object. Event fires when a feature is removed from the map */\r\n public get onFeaturesRemoved() { return this._onFeaturesRemoved.expose(); }\r\n private readonly _onFeaturesRemoved = new RM2Event();\r\n\r\n /**\r\n * Settings\r\n */\r\n\r\n // public get selectedLayer(): Layer { return this._selectedLayer; }\r\n // public set selectedLayer(layer: Layer) { this._selectedLayer = layer; } // TODO ali pripada layer tej mapi?\r\n // private _selectedLayer: Layer;\r\n\r\n public get id(): string { return this._id; }\r\n private _id: string;\r\n\r\n public get label(): string { return this._label; }\r\n private _label: string;\r\n\r\n public get theme(): MapTheme { return this._theme; }\r\n private _theme: MapTheme = MapTheme.Light;\r\n\r\n public get loaded(): boolean { return this._loaded; }\r\n private _loaded: boolean = false;\r\n\r\n public get popups(): Popup[] { return this._popups.slice(); }\r\n private _popups: Popup[] = [];\r\n private _mobilePopups: HTMLElement[] = []\r\n private _popupMobileMarker: Feature;\r\n\r\n public get projection(): Projection { return this._projection; }\r\n private _projection: Projection = Projection.create('EPSG:4326');\r\n\r\n /**\r\n * Other properties\r\n */\r\n private _controls: { [type: string]: any } = [];\r\n private _services: IService[] = [];\r\n\r\n private _clusterLayers: maplibregl.LayerSpecification[] = [];\r\n private _sources: { [id: string]: FeatureCollection } = {};\r\n private _sourceRequests: { [id: string]: { time: Date, req: XMLHttpRequest } } = {};\r\n\r\n private persistViewKey: string = \"RM2Map.View\";\r\n private persistVisibilityKey: string = \"RM2Map.PersistVisibility\";\r\n\r\n constructor(styleUrl: string, container: string | HTMLElement, options?: RM2MapOptions) {\r\n // HACK: tukaj se registrira EPSG:3912 s polno definicijo, drugače vrže error pri transformacijah\r\n Projection.create('EPSG:3912;+title=y/x:D48/GK +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=bessel +towgs84=426.9,142.6,460.1,4.91,4.49,-12.42,17.1 +units=m +no_defs');\r\n Projection.create('EPSG:2170;+title=y/x:D48/GK +proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_0=-5000000 +ellps=bessel +towgs84=426.9,142.6,460.1,4.91,4.49,-12.42,17.1 +units=m +no_defs');\r\n\r\n this._id = options && options.id ? options.id : Guid.create().toString();\r\n\r\n const mbOptions: maplibregl.MapOptions = {\r\n container: container,\r\n style: styleUrl,\r\n renderWorldCopies: false,\r\n // attributionControl: attributionControlData && attributionControlData.enabled !== false\r\n transformRequest: options && options.transformRequest ? options.transformRequest : null\r\n };\r\n\r\n this._mbMap = new maplibregl.Map(mbOptions);\r\n\r\n if (options) {\r\n this._label = options.label;\r\n if (options.theme != undefined)\r\n this._theme = options.theme;\r\n }\r\n\r\n // Error\r\n this._mbMap.on('error', (e: any) => console.error('Mapbox error.', e));\r\n\r\n // Style load\r\n this._mbMap.once('styledata', (e) => {\r\n this._style = this._mbMap.getStyle();\r\n const metadata = this.metadata;\r\n if (metadata) {\r\n // Min/max zoom\r\n this._mbMap.setMinZoom(metadata.minZoom || 5);\r\n this._mbMap.setMaxZoom(metadata.maxZoom || 18);\r\n\r\n // Extent\r\n if (metadata.extent)\r\n this._mbMap.setMaxBounds(new maplibregl.LngLatBounds(metadata.extent[0], metadata.extent[1]));\r\n\r\n // Initial view\r\n let view: RM2ViewData;\r\n if (options && options.view)\r\n view = options.view;\r\n else {\r\n if (metadata.persistView)\r\n view = this.getPersistedView();\r\n }\r\n\r\n if (view == undefined) {\r\n if (metadata.startExtent) {\r\n // get start bounding box\r\n this._mbMap.fitBounds(metadata.startExtent, { animate: false });\r\n }\r\n else {\r\n // set view\r\n view = {\r\n center: metadata.center || [14.8176, 46.12239],\r\n zoom: metadata.zoom || 8,\r\n pitch: metadata.tilt || 0,\r\n bearing: metadata.heading || 0\r\n };\r\n\r\n this._mbMap.jumpTo(view);\r\n }\r\n }\r\n\r\n // Map theme\r\n this.setMapTheme(this._theme);\r\n\r\n // Clustering\r\n for (let srcId in this._style.sources) {\r\n const src = this._style.sources[srcId] as maplibregl.GeoJSONSourceOptions;\r\n if (src && src.cluster === true)\r\n this.getLayers(l => l.source === srcId).forEach(l => this.generateClusterLayers(l));\r\n }\r\n\r\n // 2022-06-02 IA HACK Remove hidden vector/hybrid layers TODO to naj bo pod nekim setting\r\n if (this.metadata.removeHiddenVectorHybridLayers !== false && this._style && this._style.layers) {\r\n for (let i = 0; i < this._style.layers.length; i ++) {\r\n const mglLayer = this._style.layers[i];\r\n if (mglLayer && mglLayer.metadata && (mglLayer.metadata[\"gid\"] === \"vector\" || mglLayer.metadata[\"gid\"] === \"hybrid\" || mglLayer.metadata[\"gid\"] === \"vector.mb-style\" || mglLayer.metadata[\"gid\"] === \"hybrid.mb-style\") && mglLayer.layout && mglLayer.layout.visibility === \"none\") {\r\n if (mglLayer.id) {\r\n this._mbMap.removeLayer(mglLayer.id);\r\n this._style.layers.splice(i, 1);\r\n i--;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Initial layer visibility\r\n const persisted = this.getPersistedVisibility();\r\n this._style.layers.forEach((mglLayer: maplibregl.LayerSpecification) => {\r\n if (mglLayer.metadata == undefined) {\r\n mglLayer.metadata = {};\r\n }\r\n \r\n const l = new Layer(mglLayer);\r\n const found = persisted.find(x => x.type === 'layer' && x.id === l.id);\r\n if (found) {\r\n const vis = found.visible;\r\n l.metadata.visible = vis;\r\n this._mbMap.setLayoutProperty(l.id, 'visibility', l.metadata.visible ? 'visible' : 'none');\r\n }\r\n else {\r\n if (l.metadata.visible == undefined) {\r\n const vis = l.layout == undefined || l.layout.visibility !== 'none';\r\n l.metadata.visible = vis;\r\n }\r\n else\r\n this._mbMap.setLayoutProperty(l.id, 'visibility', l.metadata.visible ? 'visible' : 'none');\r\n }\r\n });\r\n\r\n for (let i = 0; i < metadata.groups.length; i++) {\r\n const g = metadata.groups[i];\r\n const found = persisted.find(x => x.type === 'group' && x.id === g.id);\r\n if (found) {\r\n metadata.groups[i].visible = found.visible;\r\n (this.style.metadata as any).groups[i].visible = found.visible;\r\n }\r\n\r\n this.refreshSingleGroupVisibility(g);\r\n }\r\n\r\n // setTimeout(() => console.log(this._mbMap.getStyle().layers), 1000);\r\n\r\n // if (metadata.groups) {\r\n // metadata.groups.filter((g: LayerGroup) => g.visible == false).forEach((g: LayerGroup) => {\r\n // this._style.layers.filter(l => l.metadata && l.metadata.gid === g.id).forEach(l => {\r\n // if (l.layout && l.layout.visibility !== 'none') {\r\n // this.layerVisibility[l.id] = true;\r\n // this._mbMap.setLayoutProperty(l.id, 'visibility', 'none');\r\n // }\r\n // });\r\n // });\r\n // }\r\n\r\n // Notice\r\n if (metadata.notice) {\r\n let notice = document.createElement(\"div\");\r\n if (metadata.noticeStyle)\r\n notice.setAttribute('style', metadata.noticeStyle);\r\n else\r\n notice.setAttribute('style', \"position: absolute; bottom:0; right:0; background-color: rgba(255, 255, 255, 0.4); font-size: 0.6em; padding: 1px;\");\r\n\r\n const now = new Date();\r\n const yearPlaceholder = '{{year}}';\r\n let text = metadata.notice;\r\n while (text.includes(yearPlaceholder))\r\n text = text.replace(yearPlaceholder, now.getFullYear().toString());\r\n\r\n notice.innerHTML = text;\r\n this._mbMap.getContainer().appendChild(notice);\r\n\r\n // const attributionControlData = this.getControlData(MapControlType.Attribution);\r\n // attributionControl: attributionControlData && attributionControlData.enabled !== false,\r\n }\r\n\r\n // side scroller\r\n if (metadata.enableSideScroller === true) {\r\n const getSideScroller = (position: 'left' | 'right') => {\r\n const scrollerLeft = document.createElement('div');\r\n\r\n scrollerLeft.className = 'd-flex align-items-center justify-content-center d-md-none';\r\n scrollerLeft.style.position = 'absolute';\r\n if (position === 'left')\r\n scrollerLeft.style.left = '0';\r\n else\r\n scrollerLeft.style.right = '0';\r\n\r\n scrollerLeft.style.width = '30px';\r\n scrollerLeft.style.height = '100%';\r\n scrollerLeft.style.backgroundColor = '#FFFFFF88';\r\n\r\n const scrollerLeftIcon = document.createElement('div');\r\n scrollerLeftIcon.className = 'rm2-scroller-icon';\r\n\r\n scrollerLeft.appendChild(scrollerLeftIcon);\r\n return scrollerLeft;\r\n };\r\n\r\n const ctrlsContainer = this._mbMap.getContainer().querySelector('.mapboxgl-control-container');\r\n const container = ctrlsContainer.parentNode;\r\n container.insertBefore(getSideScroller('left'), ctrlsContainer);\r\n container.insertBefore(getSideScroller('right'), ctrlsContainer);\r\n }\r\n\r\n // Gestures\r\n if (metadata.enableRotate === false) {\r\n this._mbMap.dragRotate.disable();\r\n this._mbMap.touchZoomRotate.disableRotation();\r\n this._mbMap.touchPitch.disable();\r\n }\r\n\r\n // Services\r\n let routingServiceOpts: IRoutingServiceOptions;\r\n let routingServiceName: string;\r\n let nominatimServiceOpts: INominatimServiceOptions;\r\n let nominatimServiceName: string;\r\n let localizationServiceOpts: ILocalizationServiceOptions;\r\n let addLocalizationService: boolean = true;\r\n if (metadata.services) {\r\n metadata.services.forEach((service: IService) => {\r\n if (service.type === ServiceType.Routing) {\r\n routingServiceName = service.name;\r\n routingServiceOpts = service.options;\r\n }\r\n else if (service.type === ServiceType.Nominatim) {\r\n nominatimServiceName = service.name;\r\n nominatimServiceOpts = service.options;\r\n }\r\n else if (service.type === ServiceType.Localization) {\r\n localizationServiceOpts = service.options;\r\n addLocalizationService = service.enabled !== false;\r\n }\r\n });\r\n }\r\n\r\n this._services.push(new RoutingService(routingServiceName, routingServiceOpts));\r\n this._services.push(new NominatimService(nominatimServiceName, nominatimServiceOpts));\r\n if (addLocalizationService)\r\n this._services.push(new LocalizationService(this as any, localizationServiceOpts));\r\n }\r\n\r\n this._onStyleLoad.trigger();\r\n });\r\n\r\n // Map load\r\n this._mbMap.on('load', () => {\r\n this._loaded = true;\r\n this.getTarget().addEventListener('contextmenu', e => e.preventDefault());\r\n\r\n this._highlights = new Highlights(this);\r\n this._highlights.featuresAdded.subscribe((fts: Feature[]) => this._onFeaturesAdded.trigger(fts));\r\n this._highlights.featuresRemoved.subscribe((fts: Feature[]) => this._onFeaturesRemoved.trigger(fts));\r\n this._geolocation = new Geolocation(this);\r\n this.addControls();\r\n\r\n this.startRefreshingGeoJSONUrlSources();\r\n\r\n this._onLoad.trigger();\r\n });\r\n\r\n // trenutno ne moreš fetchat podatkov direktno iz source-a (querySourceFeatures vrne samo s trenutnega viewporta), se na novo naredi HTTP request (browser naj bi jih cachiral)\r\n // TODO: fix, da potegne features direktno iz source-a, pri transformacijah bi bilo optimalen nek middleware medtem ko še nalaga podatke za source\r\n this._mbMap.on('sourcedata', async (e: maplibregl.MapSourceDataEvent) => {\r\n if (e.dataType === 'source' && e.source && e.source.type === 'geojson') {\r\n const data = e.source['data'];\r\n if (typeof data === 'string') {\r\n const req = this._sourceRequests[data];\r\n if (req == null || ((new Date().getTime() - req.time.getTime()) > 60 * 1000)) {\r\n if (req && req.req)\r\n req.req.abort();\r\n\r\n try {\r\n const xhr = new XMLHttpRequest();\r\n this._sourceRequests[data] = { time: new Date(), req: xhr };\r\n xhr.timeout = 5000;\r\n xhr.onload = () => {\r\n if (xhr.responseText) {\r\n const fc = FeatureCollection.fromGeoJson(xhr.responseText);\r\n const fcCrs = fc.getCrsCode();\r\n if (fcCrs != undefined && fcCrs.toLowerCase() !== this.projection.crsCode.toLowerCase()) { // transformacije\r\n for (let i = 0; i < fc.features.length; i++)\r\n fc.features[i].geometry = Geometry.transform(fc.features[i].geometry, Projection.create(fcCrs), this.projection);\r\n\r\n this.setSourceData(e.sourceId, fc);\r\n }\r\n\r\n this._sources[e.sourceId] = fc;\r\n // TODO: to se bo prožilo vsakič, ko se naložijo novi tile-i (ko pridejo feature-si v viewport) in je minila od prejšnjega proženja minuta\r\n // fix, da se proži le, ko se source spremeni\r\n this._onSourceChange.trigger(e.sourceId);\r\n }\r\n };\r\n\r\n // xhr.ontimeout = () => rej('Timeout');\r\n // xhr.onerror = () => rej('Error getting location');\r\n // xhr.onabort = () => rej('HTTP request aborted.');\r\n xhr.onloadend = () => this._sourceRequests[data].req = null;\r\n xhr.open('GET', data, true);\r\n xhr.send(null);\r\n }\r\n catch (err) {\r\n delete this._sourceRequests[data];\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.initEvents();\r\n }\r\n\r\n /**\r\n * Methods\r\n */\r\n\r\n /** Sources */\r\n\r\n public getSource(id: string): maplibregl.Source {\r\n return this._mbMap.getSource(id);\r\n }\r\n\r\n public addSource(id: string, source: maplibregl.SourceSpecification) {\r\n this._mbMap.addSource(id, source);\r\n }\r\n\r\n public setSourceData(id: string, data: FeatureCollection) {\r\n const src = this._mbMap.getSource(id) as maplibregl.GeoJSONSource;\r\n if (src) {\r\n const newData = data.toGeoJson();\r\n src.setData(newData);\r\n this._sources[id] = data;\r\n this._onSourceChange.trigger(id);\r\n }\r\n else\r\n throw new Error(`Could not find GeoJSON source '${id}'.`);\r\n }\r\n\r\n /** Layers */\r\n\r\n public addLayer(layer: maplibregl.LayerSpecification | maplibregl.CustomLayerInterface, before?: string) {\r\n this._mbMap.addLayer(layer, before);\r\n }\r\n\r\n /**\r\n * Returns array of layers that meet the criteria in given condition expression.\r\n */\r\n public getLayers(condition: (x: Layer) => boolean = () => true): Layer[] {\r\n return this.getStyle().layers.filter(l => condition(new Layer(l))).map(l => new Layer(l));\r\n }\r\n\r\n /**\r\n * Returns first layer that meets the criteria in given condition expression. If none, returns undefined.\r\n */\r\n public getLayer(condition: string | ((x: Layer) => boolean)): Layer {\r\n let found: maplibregl.LayerSpecification;\r\n if (typeof condition == 'string')\r\n found = this._mbMap.getLayer(condition) as maplibregl.LayerSpecification;\r\n else\r\n found = this.getStyle().layers.find(l => condition(new Layer(l)));\r\n\r\n return found ? new Layer(found) : null;\r\n }\r\n\r\n public getGroups(): LayerGroup[] {\r\n return this.metadata.groups.slice();\r\n }\r\n\r\n public getGroup(id: string): LayerGroup {\r\n const metadata = this.metadata;\r\n if (metadata && metadata.groups) {\r\n const g = metadata.groups.find(x => x.id === id);\r\n if (g) {\r\n return new LayerGroup(g);\r\n }\r\n }\r\n \r\n return null;\r\n }\r\n\r\n public getLayerFeatures(id: string): Feature[] {\r\n const l = this.getLayer(l => l.id === id);\r\n if (typeof l.source === 'string' && l.metadata.includeInIdentify) {\r\n const src = this._sources[l.source];\r\n if (src) {\r\n return src.features;\r\n }\r\n }\r\n\r\n return [];\r\n }\r\n\r\n /**\r\n * Gets the layer's visibility value\r\n */\r\n public getLayerVisibility(id: string): boolean {\r\n const vis = this._mbMap.getLayoutProperty(id, 'visibility');\r\n return vis !== 'none';\r\n }\r\n\r\n // private layerVisibility: { [id: string]: boolean } = {};\r\n /**\r\n * Sets the layer's visibility value\r\n */\r\n public setLayerVisibility(id: string, visible: boolean) {\r\n let layers: maplibregl.LayerSpecification[] = [];\r\n const found = this._mbMap.getLayer(id) as maplibregl.LayerSpecification;\r\n if (found)\r\n layers.push(found);\r\n else {\r\n const ls = this._mbMap.getStyle().layers.filter(l => l.id.endsWith(id));\r\n // if (ls.length == 1)\r\n layers = ls;\r\n // // else error multiple matches\r\n }\r\n\r\n layers.forEach(layer => {\r\n const l = new Layer(layer);\r\n if (l.metadata == undefined)\r\n l.metadata = {};\r\n\r\n l.metadata.visible = visible;\r\n if (visible && l.metadata.gid) {\r\n // refresh group visibility\r\n const g = l.metadata.gid;\r\n this.setGroupVisibility(g, true);\r\n }\r\n else {\r\n this.setMbLayerVisibility(l.id, visible);\r\n this._onLayerVisibilityChanged.trigger(l);\r\n }\r\n });\r\n }\r\n\r\n public setLayoutProperty(layer: string, name: string, value: any) {\r\n this._mbMap.setLayoutProperty(layer, name, value);\r\n }\r\n\r\n public setPaintProperty(layer: string, name: string, value: any, options?: maplibregl.StyleSetterOptions) {\r\n this._mbMap.setPaintProperty(layer, name, value, options);\r\n }\r\n\r\n public getPaintProperty(layer: string, name: string) {\r\n return this._mbMap.getPaintProperty(layer, name);\r\n }\r\n\r\n public setFilter(layer: string, filter?: any[]) {\r\n this._mbMap.setFilter(layer, filter);\r\n }\r\n\r\n public getFilter(layer: string): void | maplibregl.FilterSpecification {\r\n return this._mbMap.getFilter(layer);\r\n }\r\n\r\n public getGroupVisibility(id: string): boolean {\r\n const g = this.getGroup(id);\r\n if (g.visible === false)\r\n return false;\r\n\r\n const parent = g.getParent();\r\n if (parent == undefined)\r\n return g.visible === true;\r\n return this.getGroupVisibility(parent.id);\r\n }\r\n\r\n public setGroupVisibility(id: string, visible: boolean) {\r\n const metadata = this.metadata;\r\n const g = metadata.findGroup(id);\r\n if (g != null) {\r\n if (g.visible !== visible) {\r\n g.visible = visible;\r\n if (g.visible === true) { // show parents if not visible\r\n let root: LayerGroup = null;\r\n const updateUpwards = (group: LayerGroup) => {\r\n group.visible = true;\r\n root = group;\r\n const parent = group.getParent();\r\n if (parent)\r\n updateUpwards(parent);\r\n };\r\n\r\n updateUpwards(g);\r\n this._style.metadata = metadata;\r\n this.refreshSingleGroupVisibility(root);\r\n }\r\n else if (g.visible === false) // hide children\r\n {\r\n this._style.metadata = metadata;\r\n this.refreshSingleGroupVisibility(g);\r\n }\r\n\r\n this._onGroupVisibilityChanged.trigger(new LayerGroup(g, g.getParent()));\r\n }\r\n else\r\n this.refreshSingleGroupVisibility(g);\r\n }\r\n else\r\n throw new Error(`Cannot find group with ID '${id}'.`);\r\n }\r\n\r\n /** Transformations */\r\n\r\n /**\r\n * Returns ordinate array transformed from given projection to map's projection.\r\n */\r\n public transformToProjection(coordinate: CoordinateLike, fromProjection: Projection): CoordinateLike {\r\n return Projection.transform(coordinate, fromProjection, this._projection) as CoordinateLike;\r\n }\r\n\r\n /**\r\n * Returns ordinates array transformed from given projection to map's projection.\r\n */\r\n public transformToProjectionMulti(coordinate: CoordinateLike[], fromProjection: Projection): CoordinateLike[] {\r\n const newCoordinates: CoordinateLike[] = [];\r\n coordinate.forEach(coord => newCoordinates.push(this.transformToProjection(coord, fromProjection)));\r\n return newCoordinates;\r\n }\r\n\r\n /**\r\n * Transforms a GeoJSON to projection\r\n */\r\n public transformGeometryToProjection(geometry: Geometry, fromProjection: Projection) {\r\n if (this._projection.crsCode !== fromProjection.crsCode)\r\n return Geometry.transform(geometry, fromProjection, this._projection);\r\n\r\n return geometry;\r\n }\r\n\r\n /** Camera */\r\n\r\n public pan(coordinate: Coordinate | CoordinateLike, options?: IPanOptions): void {\r\n const defaultPanOptions = new PanOptions();\r\n let location: CoordinateLike = Array.isArray(coordinate) ? coordinate : [coordinate.x, coordinate.y];\r\n if (options && options.projection && options.projection.crsCode !== this._projection.crsCode)\r\n location = this.transformToProjection(Array.isArray(coordinate) ? coordinate : Coordinate.toOrdinates(coordinate), options.projection);\r\n\r\n const camOptions: maplibregl.FlyToOptions = {\r\n center: new maplibregl.LngLat(location[0], location[1]),\r\n zoom: options && options.zoom ? options.zoom : this._mbMap.getZoom(),\r\n animate: options && options.animate ? options.animate : defaultPanOptions.animate !== false,\r\n duration: options && options.animate !== false ? (options.duration || defaultPanOptions.duration) : 0,\r\n bearing: options && options.bearing ? options.bearing : this._mbMap.getBearing(),\r\n pitch: options && options.pitch ? options.pitch : this._mbMap.getPitch()\r\n };\r\n\r\n if (options && (options.relCenterX || options.relCenterY)) {\r\n const size = this.getSize();\r\n const xOffset = ((options.relCenterX ? options.relCenterX : 0.5) - 0.5) * size[0];\r\n const yOffset = ((options.relCenterY ? options.relCenterY : 0.5) - 0.5) * size[0];\r\n camOptions.offset = [xOffset, yOffset];\r\n }\r\n\r\n this._mbMap.easeTo(camOptions);\r\n }\r\n\r\n public tilt(degrees: number, options?: ICameraChangeOptions): void {\r\n this._mbMap.setPitch(degrees);\r\n }\r\n\r\n public setCenter(center: Coordinate | CoordinateLike, projection?: Projection) {\r\n this._mbMap.setCenter(Array.isArray(center) ? center : new maplibregl.LngLat(center.x, center.y));\r\n }\r\n\r\n public fit(bounds: Coordinate[] | CoordinateLike[], options?: IFitOptions) {\r\n try {\r\n let boundsArray: CoordinateLike[] = [];\r\n if (Array.isArray(bounds) && Array.isArray(bounds[0]))\r\n boundsArray = (bounds as CoordinateLike[]).slice();\r\n else\r\n boundsArray = (bounds as Coordinate[]).map(coord => Coordinate.toOrdinates(coord as Coordinate));\r\n\r\n if (options && options.projection)\r\n boundsArray = this.transformToProjectionMulti(boundsArray, options.projection);\r\n\r\n const coordinates = boundsArray.map(coord => new maplibregl.LngLat(coord[0], coord[1]));\r\n if (coordinates.length > 1) {\r\n const b = coordinates.reduce(function (bounds, coord) {\r\n return bounds.extend(coord);\r\n }, new maplibregl.LngLatBounds(coordinates[0], coordinates[0]));\r\n\r\n const opts: maplibregl.FitBoundsOptions = new FitOptions({\r\n padding: options && options.padding ? options.padding : null,\r\n animate: options && options.animate !== false,\r\n duration: options && options.animate !== false ? (options && options.duration ? options.duration : null) : 0,\r\n pitch: options && options.pitch ? options.pitch : null,\r\n bearing: options && options.bearing ? options.bearing : null\r\n });\r\n\r\n this._mbMap.fitBounds(b, opts);\r\n } else {\r\n console.warn('Cannot fit to the specified bounding box:');\r\n console.warn(coordinates);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n public rotate(heading: number, options?: ICameraChangeOptions) {\r\n const defaultCameraChangeOptions = new CameraChangeOptions();\r\n this._mbMap.rotateTo(heading, {\r\n animate: options && options.animate ? options.animate : defaultCameraChangeOptions.animate,\r\n duration: options && options.duration ? options.duration : defaultCameraChangeOptions.duration\r\n });\r\n }\r\n\r\n public zoom(zoom: number, options?: ICameraChangeOptions) {\r\n options = new CameraChangeOptions(options);\r\n this._mbMap.zoomTo(zoom, {\r\n animate: options.animate,\r\n duration: options.duration\r\n })\r\n }\r\n\r\n public setView(view: RM2ViewData) {\r\n this._mbMap.jumpTo(view);\r\n }\r\n\r\n public getView(): RM2ViewData {\r\n // const ext = this._mbMap.getBounds().toArray();\r\n // const canvas = this._mbMap.getCanvas();\r\n\r\n return {\r\n center: this._mbMap.getCenter().toArray() as CoordinateLike,\r\n zoom: this._mbMap.getZoom(),\r\n bearing: this._mbMap.getBearing(),\r\n pitch: this._mbMap.getPitch(),\r\n // extent: [ext[0][0], ext[0][1], ext[1][0], ext[1][1]],\r\n // size: [canvas.clientWidth, canvas.clientHeight],\r\n // resolution: window.devicePixelRatio * 96\r\n };\r\n }\r\n\r\n public fitCameraToFeatures(ftColl: FeatureCollection, options?: ICameraChangeOptions): void {\r\n if (ftColl.features.length > 0) {\r\n const geometries = ftColl.features.map((x: Feature) => x.geometry);\r\n // TODO: brez transformacij med projekcijami, če ni v options\r\n let projection = options && options.projection ? options.projection : this._projection;\r\n const crsCode = ftColl.getCrsCode();\r\n if (crsCode)\r\n projection = Projection.create(crsCode);\r\n\r\n if (geometries.length === 1 && geometries[0].type.toLowerCase() === 'point') {\r\n const pan = options as IPanOptions;\r\n const opts: IPanOptions = {};\r\n for (let panProp in pan)\r\n opts[panProp] = pan[panProp];\r\n\r\n opts.projection = projection;\r\n this.pan(geometries[0].getCoordinate(), new PanOptions(opts));\r\n }\r\n else {\r\n const opts = new FitOptions(options);\r\n opts.projection = projection;\r\n let coords: Coordinate[] = [];\r\n geometries.forEach(g => coords = coords.concat(g.getCoordinates())); // todo: neka getExtent funkcija iz knjižnice\r\n this.fit(coords, opts);\r\n }\r\n }\r\n }\r\n\r\n public fitCameraToCurrentRoute(options?: IFitOptions) {\r\n if (this._highlights && this._highlights.route)\r\n this.fitCameraToFeatures(this._highlights.route);\r\n }\r\n\r\n /** Highlights */\r\n\r\n public drawMarker(geometry: Geometry, options?: IHighlightOptions) {\r\n if (this._highlights)\r\n this._highlights.showMarker(geometry, options);\r\n }\r\n\r\n public clearMarkers() {\r\n if (this._highlights)\r\n this._highlights.clearMarkers();\r\n }\r\n\r\n public drawPolygon(coords: Geometry, options?: IPolygonOptions) {\r\n if (this._highlights)\r\n this._highlights.showPolygon(coords, options);\r\n }\r\n\r\n public clearPolygons() {\r\n if (this._highlights)\r\n this._highlights.clearPolygons();\r\n }\r\n\r\n public drawLine(coords: Geometry, options?: ILineOptions) {\r\n if (this._highlights)\r\n this._highlights.showLine(coords, options);\r\n }\r\n\r\n public clearLines() {\r\n if (this._highlights)\r\n this._highlights.clearLines();\r\n }\r\n\r\n public drawCircle(coords: Geometry, options?: ICircleOptions) {\r\n if (this._highlights)\r\n this._highlights.showCircle(coords, options);\r\n }\r\n\r\n public clearCircles() {\r\n if (this._highlights)\r\n this._highlights.clearCircles();\r\n }\r\n\r\n public drawRoutes(routes: Route[], options?: IRouteHighlightOptions) {\r\n if (this._highlights) {\r\n const src = this.getSource(Map.routeSourceName);\r\n if (src == null)\r\n throw new Error(`No source '${Map.routeSourceName}' found for displaying route.`);\r\n\r\n this._highlights.showRoutes(routes, options);\r\n }\r\n }\r\n\r\n public drawRoute(route: Route, options?: IRouteHighlightOptions) {\r\n if (options == undefined) {\r\n const ctrl = this.getControl(MapControlType.MapPicker);\r\n if (ctrl)\r\n options = ctrl._options;\r\n }\r\n\r\n if (this._highlights) {\r\n const src = this.getSource(Map.routeSourceName);\r\n if (src == null)\r\n throw new Error(`No source '${Map.routeSourceName}' found for displaying route.`);\r\n\r\n this._highlights.showRoute(route, options);\r\n }\r\n\r\n const mapPicker = this.getControl(MapControlType.MapPicker) as MapPickerControl;\r\n if (mapPicker)\r\n mapPicker.inject(route);\r\n }\r\n\r\n public clearRoute(clearMapPicker: boolean = false) {\r\n if (this._highlights)\r\n this._highlights.clearRoute();\r\n\r\n if (clearMapPicker !== false) {\r\n const mapPicker = this.getControl(MapControlType.MapPicker) as MapPickerControl;\r\n if (mapPicker)\r\n mapPicker.clear();\r\n }\r\n }\r\n\r\n public drawRouteLegacy(route: RouteLegacy, options?: IRouteHighlightOptions) {\r\n if (options == undefined) {\r\n const ctrl = this.getControl(MapControlType.MapPicker);\r\n if (ctrl)\r\n options = ctrl._options;\r\n }\r\n\r\n if (this._highlights) {\r\n const src = this.getSource(Map.routeSourceName);\r\n if (src == null)\r\n throw new Error(`No source '${Map.routeSourceName}' found for displaying route.`);\r\n\r\n this._highlights.showRouteLegacy(route, options);\r\n }\r\n }\r\n\r\n public addFeature(ft: Feature, options?: IFeatureHighlightOptions): Feature {\r\n if (this._highlights)\r\n return this._highlights.showFeature(ft, options);\r\n return null;\r\n }\r\n\r\n public addFeatures(fts: Feature[] | FeatureCollection, options?: IFeatureHighlightOptions): FeatureCollection {\r\n if (this._highlights)\r\n return this._highlights.showFeatures(fts, options);\r\n return null;\r\n }\r\n\r\n public removeFeature(id: string) {\r\n if (this._highlights)\r\n this._highlights.clearFeature(id);\r\n }\r\n\r\n public removeFeatures(ids: string[]) {\r\n this.clearFeatures(ids);\r\n }\r\n\r\n public setFeatureValue(ids: string | string[], key: string, value: any) {\r\n if (this._highlights)\r\n this._highlights.setFeatureValue(ids, key, value);\r\n }\r\n\r\n public clearFeatures(ids?: string[]) {\r\n if (this._highlights)\r\n this._highlights.clearFeatures(ids);\r\n }\r\n\r\n public getAllFeatures(): FeatureCollection {\r\n if (this._highlights)\r\n return this._highlights.getAllFeatures();\r\n return new FeatureCollection();\r\n }\r\n\r\n public clearAllHighlights() {\r\n if (this._highlights)\r\n this._highlights.clearAll();\r\n }\r\n\r\n /** Geolocation */\r\n\r\n public showGeolocation(position: RM2GeolocationPosition, options: IGeolocationOptions) {\r\n if (this._geolocation)\r\n this._geolocation.showGeolocation(position, options);\r\n }\r\n\r\n public clearGeolocation() {\r\n if (this._geolocation)\r\n this._geolocation.clearGeolocation();\r\n }\r\n\r\n /** Popups */\r\n\r\n private sortPopupClickListeners(content: HTMLElement, contentMobile: HTMLElement) {\r\n const clicks: HTMLElement[] = [];\r\n const loop = (el: HTMLElement) => {\r\n if (el.onclick)\r\n clicks.push(el);\r\n for (let i = 0; i < el.children.length; i++)\r\n loop(el.children.item(i) as HTMLElement);\r\n };\r\n loop(content);\r\n\r\n for (let i = 0; i < clicks.length; i++) {\r\n // const mobileEl: HTMLElement = contentMobile.querySelector(`#${clicks[i].getAttribute('id')}`);\r\n const mobileEl: HTMLElement = contentMobile.querySelector(`#${clicks[i].getAttribute('data-id')}`);\r\n if (mobileEl)\r\n mobileEl.onclick = clicks[i].onclick;\r\n }\r\n\r\n const popupClose = contentMobile.querySelectorAll('.rm2-popup-close');\r\n for (let i = 0; i < popupClose.length; i++) {\r\n const item = popupClose.item(i) as HTMLDivElement;\r\n item.onclick = () => this.closeAllPopups();\r\n }\r\n }\r\n\r\n public openPopup(coordinate: Coordinate | CoordinateLike, content: HTMLElement, options?: IPopupOptions, metadata?: any): Popup {\r\n const contentMobile = document.createElement('div');\r\n contentMobile.innerHTML = content.innerHTML;\r\n this.sortPopupClickListeners(content, contentMobile);\r\n\r\n return this.getPopup(coordinate, content, contentMobile, [], options, metadata);\r\n }\r\n\r\n public openPopupForFeature(feature: Feature, layer: Layer, content: HTMLElement, options?: ICarouselPopupOptions, metadata?: any): Popup {\r\n const contentMobile = document.createElement('div');\r\n contentMobile.innerHTML = content.innerHTML;\r\n this.sortPopupClickListeners(content, contentMobile);\r\n\r\n const fc = new FeatureCollection();\r\n fc.features.push(feature);\r\n return this.getPopup(feature.geometry.getCoordinate(), content, contentMobile, [{ el: content, ft: feature }, { el: contentMobile, ft: feature }], options, fc, { layer: layer });\r\n }\r\n\r\n public openPopupForFeatures(coordinate: Coordinate | CoordinateLike, features: Feature[] | FeatureCollection, template: (ft: Feature, i: number) => HTMLElement, options?: ICarouselPopupOptions, metadata?: any): Popup {\r\n if (Array.isArray(features))\r\n features = new FeatureCollection(features);\r\n\r\n let clickDetectors: { el: HTMLElement, ft: Feature }[] = [];\r\n options = new CarouselPopupOptions(options);\r\n const content = document.createElement('div');\r\n const contentMobile = document.createElement('div');\r\n if (features.features.length > 1) {\r\n const transformedFts = features.features.map((ft, i) => {\r\n return {\r\n index: i,\r\n ft: ft\r\n };\r\n });\r\n\r\n const copyFtsToDiv = (id: number, c: HTMLDivElement) => {\r\n c.innerHTML = Mustache.render(PopupCarouselTemplate(id), { features: transformedFts });\r\n const inner = c.getElementsByClassName('carousel-inner')[0];\r\n for (let i = 0; i < inner.children.length; i++) {\r\n const ft = transformedFts[i];\r\n const rendered = template(ft.ft, ft.index);\r\n clickDetectors.push({ el: rendered, ft: ft.ft });\r\n inner.children[i].appendChild(rendered);\r\n }\r\n };\r\n\r\n copyFtsToDiv(0, content);\r\n copyFtsToDiv(1, contentMobile);\r\n }\r\n else {\r\n const ft = features.first;\r\n const render1 = template(ft, 0);\r\n content.appendChild(render1);\r\n const render2 = template(ft, 0);\r\n contentMobile.appendChild(render2);\r\n\r\n clickDetectors = [{ el: render1, ft: ft }, { el: render2, ft: ft }];\r\n }\r\n\r\n return this.getPopup(coordinate, content, contentMobile, clickDetectors, options, features, metadata);\r\n }\r\n\r\n public closeAllPopups() {\r\n this._popups.forEach(popup => popup.close());\r\n }\r\n\r\n /** Utility */\r\n\r\n public refreshSourceWithUrl(url: string) {\r\n const getSrcsWithUrl = (url: string): string[] => {\r\n const sources = this._mbMap.getStyle().sources;\r\n const filtered: string[] = [];\r\n for (let s in sources) {\r\n const src = sources[s];\r\n if (src.type === 'geojson') {\r\n const u = src.data;\r\n if (typeof u === 'string' && u.startsWith(url))\r\n filtered.push(s);\r\n }\r\n }\r\n\r\n return filtered;\r\n };\r\n\r\n const srcs = getSrcsWithUrl(url);\r\n const style = this._mbMap.getStyle();\r\n srcs.forEach(src => this.refreshSource(src));\r\n }\r\n\r\n public refreshSource(id: string) {\r\n // HACK\r\n const source = this._mbMap.getSource(id);\r\n if (source.type === 'geojson') {\r\n const s = source as maplibregl.GeoJSONSource;\r\n const previous = s['_data'];\r\n if (typeof previous === 'string') {\r\n s.setData(null);\r\n delete this._sourceRequests[previous];\r\n s.setData(previous);\r\n }\r\n }\r\n else if (source.type === 'vector') {\r\n // maplibregl.clearStorage((err) => console.log(err));\r\n if (this._loaded === true) {\r\n const src = this._mbMap.getSource(id) as maplibregl.VectorTileSource;\r\n if (src) {\r\n const mbLayers = this.getLayers();\r\n let layers: { before: string, layer: maplibregl.LayerSpecification }[] = [];\r\n for (let i = 0; i < mbLayers.length; i++) {\r\n const l = mbLayers[i];\r\n if (l.source === id) {\r\n layers.push({\r\n before: i < (mbLayers.length - 1) ? mbLayers[i + 1].id : undefined,\r\n layer: l as maplibregl.LayerSpecification\r\n })\r\n this._mbMap.removeLayer(l.id);\r\n }\r\n }\r\n\r\n this._mbMap.removeSource(id);\r\n let newSrc: any = { type: src.type };\r\n if (src.type === 'vector') {\r\n newSrc.tiles = src.tiles;\r\n newSrc.maxzoom = src.maxzoom;\r\n newSrc.minzoom = src.minzoom;\r\n }\r\n this._mbMap.addSource(id, newSrc);\r\n\r\n layers = layers.reverse();\r\n for (let i = 0; i < layers.length; i++) {\r\n const l = layers[i];\r\n this.addLayer(l.layer, l.before);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Should be called to redraw map after map's target DOM element resizes.\r\n */\r\n public updateSize() {\r\n this._mbMap.resize();\r\n }\r\n\r\n public getSize(): number[] {\r\n const canvas = this._mbMap.getCanvas();\r\n return [canvas.clientWidth, canvas.clientHeight];\r\n }\r\n\r\n /** Gets the instance of a map control */\r\n public getControl(type: MapControlType): any {\r\n return this._controls[type];\r\n }\r\n\r\n /** Gets the instance of a map service */\r\n public getService(type: ServiceType): IService {\r\n return this._services.find(service => service.type === type);\r\n }\r\n\r\n public getTarget(): HTMLElement {\r\n return this._mbMap.getCanvasContainer().parentElement;\r\n }\r\n\r\n public setTarget(target: HTMLElement) {\r\n if (this._mbMap.getContainer() != target)\r\n throw new Error('Setting new target is not supported with Mapbox!');\r\n }\r\n\r\n public isStyleLoaded(): boolean {\r\n return this._mbMap.isStyleLoaded() === true;\r\n }\r\n\r\n public getStyle(): maplibregl.StyleSpecification {\r\n return this._mbMap.getStyle();\r\n }\r\n\r\n public checkIfCssLoaded(printWarning?: boolean): boolean {\r\n const loadedCss = document.styleSheets;\r\n const searchFor = '/mapbox-gl.css';\r\n let loaded: boolean = false;\r\n for (let i = 0; i < loadedCss.length; i++) {\r\n const css = loadedCss.item(i);\r\n if (css && css.href && css.href.endsWith(searchFor)) {\r\n loaded = true;\r\n break;\r\n }\r\n }\r\n\r\n if (loaded == false && printWarning == true)\r\n console.warn(`Mapbox styleshets not found. Searching for '${searchFor}'.`);\r\n\r\n return loaded;\r\n }\r\n\r\n public query(query: string, options?: QueryOptions): Promise {\r\n return new Promise(async (res, rej) => {\r\n const service = this.getService(ServiceType.Nominatim) as NominatimService;\r\n const nominatimRes = await service.query(query, options);\r\n\r\n // HACK za TIC\r\n const response = [nominatimRes];\r\n this.style.layers.forEach(layer => {\r\n const l = new Layer(layer);\r\n if (l.metadata.uiVisible && l.source != null) {\r\n const fc = this.getLayerFeatures(l.id);\r\n const fts = fc.filter(ft => {\r\n const title = ft.getField('title') || ft.getField('Title');\r\n const description = ft.getField('description') || ft.getField('Description');\r\n\r\n if ((title && typeof title === \"string\" && title.toLowerCase().includes(query.toLowerCase())) ||\r\n (description && typeof description === \"string\" && description.toLowerCase().includes(query.toLowerCase())))\r\n return true;\r\n return false;\r\n });\r\n\r\n response.push({\r\n service: l.metadata.gid || l.metadata.title || l.id,\r\n status: 'OK',\r\n items: fts.map(ft => {\r\n const geom = ft.geometry;\r\n let loc = undefined;\r\n if (geom)\r\n loc = geom.getCentroid().getCoordinate();\r\n\r\n return {\r\n title: ft.getField('title') || ft.getField('Title') || ft.getField('description') || ft.getField('Description'),\r\n type: 'location', // ??\r\n dateTime: new Date(),\r\n projection: this._projection,\r\n location: loc ? [loc.x, loc.y] : undefined,\r\n envelope: geom ? geom.getEnvelopeInternal() : undefined,\r\n geometry: geom\r\n };\r\n })\r\n });\r\n }\r\n });\r\n\r\n res(response);\r\n });\r\n }\r\n\r\n public route(locations: CoordinateLike[], options?: IRouteOptions): Promise> {\r\n const service = this.getService(ServiceType.Routing) as RoutingService;\r\n return service.route(locations, options);\r\n }\r\n\r\n public locate(coordinate: Coordinate, options?: ReverseGeocodingOptions): Promise {\r\n const service = this.getService(ServiceType.Nominatim) as NominatimService;\r\n return service.reverse([coordinate.x, coordinate.y], options);\r\n }\r\n\r\n public setMapTheme(theme: MapTheme) {\r\n this._theme = theme;\r\n this._style.layers.filter(l => l.id.toLowerCase().endsWith(this._theme)).forEach(newThemeLayer => {\r\n this._mbMap.setLayoutProperty(newThemeLayer.id, 'visibility', 'visible');\r\n\r\n var layerId = newThemeLayer.id.substring(0, newThemeLayer.id.length - this._theme.length - 1);\r\n this._style.layers.filter(l => l.id.startsWith(layerId) && l.id == newThemeLayer.id == false).forEach(otherLayer => this._mbMap.setLayoutProperty(otherLayer.id, 'visibility', 'none'));\r\n });\r\n }\r\n\r\n public setLanguage(lang: string) {\r\n const service = this.getService(ServiceType.Localization) as LocalizationService;\r\n service.setLanguage(lang);\r\n }\r\n\r\n public getBounds() {\r\n return this._mbMap.getBounds();\r\n }\r\n\r\n public compareWith(map: Map, options?: RM2MapCompareState) {\r\n const compareContainer = this._mbMap.getContainer().parentElement;\r\n this._mbMapCompare = new maplibreglCompare(this._mbMap, map._mbMap, compareContainer);\r\n this._mbMapCompareMap = map;\r\n if (options) {\r\n if (options.sliderPosition != null)\r\n this._mbMapCompare.setSlider(options.sliderPosition);\r\n }\r\n }\r\n\r\n public getCurrentCompareMap(): Map {\r\n return this._mbMapCompareMap;\r\n }\r\n\r\n public getCurrentCompareState(): RM2MapCompareState {\r\n if (this._mbMapCompare) {\r\n return {\r\n sliderPosition: this._mbMapCompare.currentPosition\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n public stopCompare() {\r\n if (this._mbMapCompare)\r\n this._mbMapCompare.remove();\r\n }\r\n\r\n public dispose() {\r\n this._mbMap.remove();\r\n this._mbMap = undefined;\r\n }\r\n\r\n public project(coord: Coordinate | CoordinateLike): [number, number] {\r\n const arr = coord instanceof Coordinate ? [coord.x, coord.y] : coord;\r\n const p = this._mbMap.project({ lng: arr[0], lat: arr[1] });\r\n return [p.x, p.y];\r\n }\r\n\r\n public unproject(point: [number, number]): Coordinate {\r\n const unp = this._mbMap.unproject(point);\r\n return new Coordinate(unp.lng, unp.lat);\r\n }\r\n\r\n public persistVisibility(visibilities: PersistedVisibility[]) {\r\n const persisted = this.getPersistedVisibility();\r\n for (let i = 0; i < visibilities.length; i++) {\r\n const vis = visibilities[i];\r\n const found = persisted.findIndex(x => x.type === vis.type && x.id === vis.id);\r\n if (found !== -1)\r\n persisted[found].visible = vis.visible;\r\n else {\r\n persisted.push({\r\n type: vis.type,\r\n id: vis.id,\r\n visible: vis.visible\r\n });\r\n }\r\n }\r\n\r\n localStorage.setItem(this.persistVisibilityKey, JSON.stringify(persisted));\r\n }\r\n\r\n public getPersistedVisibility(): PersistedVisibility[] {\r\n const str = localStorage.getItem(this.persistVisibilityKey);\r\n if (str) {\r\n const array: PersistedVisibility[] = JSON.parse(str);\r\n return array;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n /*\r\n END OF INTERFACE IMPLEMENTATION\r\n */\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n public addControl(data: ControlData, instance: maplibregl.IControl | maplibregl.IControl) {\r\n this._controls[data.type] = instance;\r\n this._mbMap.addControl(instance, data.position);\r\n }\r\n\r\n private mobileMarkerId = '47b1d48c-91b4-446f-8bd3-be1ad5b28d30';\r\n private showMobileMarker(coordinate: Coordinate | CoordinateLike) {\r\n this.removeMobileMarker();\r\n this._popupMobileMarker = this.addFeature(new Feature({\r\n id: this.mobileMarkerId,\r\n icon: 'marker_E2001A-32',\r\n offset: [0, -16],\r\n includeInIdentify: false\r\n }, Point.fromCoordinate(coordinate)), { pan: false });\r\n }\r\n\r\n private removeMobileMarker() {\r\n if (this._popupMobileMarker)\r\n this.removeFeature(this.mobileMarkerId);\r\n }\r\n\r\n private getPopup(coordinate: Coordinate | CoordinateLike, content: HTMLElement, contentMobile: HTMLElement, clickDetectors: { el: HTMLElement, ft: Feature }[], options?: IPopupOptions, features?: FeatureCollection, metadata?: any): Popup {\r\n options = new PopupOptions(options);\r\n\r\n const popup = new Popup(this, content, options, features, metadata);\r\n popup.mbPopup.setLngLat(Array.isArray(coordinate) ? coordinate : Coordinate.toOrdinates(coordinate));\r\n setTimeout(() => {\r\n // zamik, da se ne zapre takoj zaradi klika\r\n popup.mbPopup.addTo(this._mbMap);\r\n\r\n popup.mbPopup['_content'].parentElement.classList.add('d-none', 'd-sm-flex');\r\n clickDetectors.forEach(d => d.el.onclick = () => this._onFeaturePopupClicked.trigger(d.ft));\r\n\r\n // scroll page if map not in viewport\r\n const canvas = this._mbMap.getCanvas();\r\n const rect = canvas.getBoundingClientRect();\r\n const isInViewport =\r\n rect.top >= 0 &&\r\n rect.left >= 0 &&\r\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\r\n rect.right <= (window.innerWidth || document.documentElement.clientWidth);\r\n if (isInViewport === false)\r\n canvas.scrollIntoView({ block: 'center', inline: 'center' });\r\n\r\n // zamik, da se najprej naloži HTML popupa\r\n if (options && options.panOnOpen)\r\n popup.panTo(options.cameraOptions);\r\n\r\n if (options.showMarkerOnMobile === true)\r\n this.showMobileMarker(coordinate);\r\n\r\n if (options.showMarkerOnMobile) {\r\n popup.onSlide.subscribe(e => {\r\n if (popup.selectedFeature && popup.selectedFeature.geometry)\r\n this.showMobileMarker(popup.selectedFeature.geometry.getCoordinate());\r\n });\r\n }\r\n\r\n this._onPopupOpened.trigger(popup);\r\n }, 10);\r\n\r\n // add mobile popup\r\n const mobilePopup = document.createElement('div');\r\n mobilePopup.className = 'rm2-popup-mobile mx-2 mb-2 bg-white d-sm-none';\r\n mobilePopup.appendChild(contentMobile);\r\n this.getTarget().appendChild(mobilePopup);\r\n\r\n this._popups.push(popup);\r\n this._mobilePopups.push(mobilePopup);\r\n\r\n popup.onClose.subscribe(() => {\r\n this.removeMobileMarker();\r\n const i = this._popups.indexOf(popup);\r\n if (i != -1) {\r\n this._popups.splice(i, 1);\r\n\r\n const m = this._mobilePopups.splice(i, 1)[0];\r\n this.getTarget().removeChild(m);\r\n }\r\n // popup.onClose.unsubscribe(); // kje unsubscribe?\r\n });\r\n\r\n return popup;\r\n }\r\n\r\n // private getLayerImages(iconImage: any[]): string[] {\r\n // if (typeof iconImage == 'string')\r\n // return [iconImage];\r\n // else {\r\n // let imagesToLoad = [iconImage[iconImage.length - 1]];\r\n // for (let i = 2; i < iconImage.length; i += 2)\r\n // if (imagesToLoad.indexOf(iconImage[i]) == -1)\r\n // imagesToLoad.push(iconImage[i]);\r\n\r\n // return imagesToLoad;\r\n // }\r\n // }\r\n\r\n private ftsAtPoint(point: { x: number, y: number }): GeoJSON.Feature[] {\r\n if (this.metadata) {\r\n const buffer = this.metadata.hitBuffer;\r\n const opts = { layers: this.getLayers(l => l.metadata && l.metadata.includeInIdentify).map(l => l.id).concat(this._clusterLayers.map(l => l.id)) };\r\n const bbox = [[point.x - buffer, point.y - buffer], [point.x + buffer, point.y + buffer]] as [CoordinateLike, CoordinateLike];\r\n const fts = this._mbMap.queryRenderedFeatures(bbox, opts);\r\n return fts.filter(ft => ft.properties.includeInIdentify !== false);\r\n }\r\n return [];\r\n }\r\n\r\n private clearLongClickTimeout() {\r\n if (this.longClickTimeout)\r\n clearTimeout(this.longClickTimeout);\r\n }\r\n\r\n private longClickCallback = (event) => {\r\n this.movedSinceLastMouseButtonDown = true;\r\n this._onLongClick.trigger(this._handleMapLongClick(event));\r\n };\r\n\r\n private longClickTimeout;\r\n private movedSinceLastMouseButtonDown: boolean;\r\n private initEvents() {\r\n this._mbMap.on('mousedown', (event: any) => {\r\n this.movedSinceLastMouseButtonDown = false;\r\n this._handleUserAction(event);\r\n\r\n this.clearLongClickTimeout();\r\n this.longClickTimeout = setTimeout(() => this.longClickCallback(event), 500);\r\n });\r\n\r\n this._mbMap.on('mouseup', (event: any) => {\r\n this.clearLongClickTimeout();\r\n\r\n if (this.movedSinceLastMouseButtonDown == false && this.loaded) {\r\n const e = this._handleMapClick(event);\r\n if (e)\r\n this._onClick.trigger(e);\r\n }\r\n });\r\n\r\n this._mbMap.on('mousemove', (event: any) => {\r\n this.clearLongClickTimeout();\r\n this._handleMousemove(event);\r\n\r\n if (this.loaded) {\r\n const fts = this.ftsAtPoint(event.point);\r\n if (fts.length > 0)\r\n this._mbMap.getCanvas().style.cursor = 'pointer';\r\n else\r\n this._mbMap.getCanvas().style.cursor = '';\r\n }\r\n });\r\n\r\n this._mbMap.on('touchstart', (event: any) => {\r\n this._handleUserAction(event);\r\n\r\n this.clearLongClickTimeout();\r\n this.longClickTimeout = setTimeout(() => this.longClickCallback(event), 500);\r\n });\r\n\r\n this._mbMap.on('touchend', (event: any) => this.clearLongClickTimeout());\r\n this._mbMap.on('touchcancel', (event: any) => this.clearLongClickTimeout());\r\n this._mbMap.on('touchmove', (event: any) => this.clearLongClickTimeout());\r\n this._mbMap.on('wheel', (event: any) => this._handleUserAction(event));\r\n this._mbMap.on('moveend', (event: any) => this._onViewChange.trigger(this._handleViewChange(event)));\r\n this._mbMap.on('drag', (event: any) => { this.clearLongClickTimeout(); this.movedSinceLastMouseButtonDown = true });\r\n this._mbMap.on('zoom', (event: any) => this._onZoom.trigger(this._mbMap.getZoom()));\r\n this._mbMap.on('rotate', (event: any) => { this.clearLongClickTimeout(); this.movedSinceLastMouseButtonDown = true });\r\n this._mbMap.on('pitch', (event: any) => { this.clearLongClickTimeout(); this.movedSinceLastMouseButtonDown = true });\r\n }\r\n\r\n private _handleMapLongClick = (event: any): MapEventArgs => {\r\n const coords: CoordinateLike = [event['lngLat']['lng'], event['lngLat']['lat']];\r\n return {\r\n map: this,\r\n coordinate: coords,\r\n nativeEvent: event.originalEvent,\r\n features: [],\r\n featureLayers: []\r\n };\r\n };\r\n\r\n private _handleMapClick = (event: any): MapEventArgs => {\r\n const featuresData: { feature: Feature, featureLayer: Layer }[] = [];\r\n const fts = this.ftsAtPoint(event.point);\r\n fts.forEach(f => {\r\n const parsed = this.decodeQueriedProperties(f.properties);\r\n const ftr = new Feature();\r\n const ftrprops = {};\r\n\r\n Object.assign(ftrprops, parsed);\r\n ftr.setProperties(ftrprops);\r\n\r\n const geometry = Geometry.fromGeoJson(f.geometry);\r\n ftr.geometry = geometry;\r\n\r\n if (ftr && (ftr.properties.id == undefined || featuresData.find(d => d.feature.properties.id === ftr.properties.id) == null)) {\r\n featuresData.push({\r\n feature: ftr,\r\n featureLayer: new Layer((f as any).layer)\r\n });\r\n }\r\n });\r\n\r\n const legendControl = this.getControl(MapControlType.Legend) as LegendControl;\r\n if (legendControl)\r\n legendControl.close();\r\n\r\n const coords: CoordinateLike = [event['lngLat']['lng'], event['lngLat']['lat']];\r\n const clickPoint = Point.fromCoordinate(Coordinate.fromOrdinates(coords));\r\n const notClusters = featuresData.filter(x => this._clusterLayers.find(c => c.id === x.featureLayer.id) == undefined);\r\n if (notClusters.length > 0) {\r\n // features inside list\r\n\r\n // sort by distance from click\r\n const coords: CoordinateLike = [event['lngLat']['lng'], event['lngLat']['lat']];\r\n const clickPoint = Point.fromCoordinate(Coordinate.fromOrdinates(coords));\r\n let featuresDataSorted = featuresData.filter(x => notClusters.indexOf(x) != -1).sort((a, b) => a.feature.geometry.distance(clickPoint) - b.feature.geometry.distance(clickPoint));\r\n\r\n // hit tolerance\r\n const metadata = this.metadata;\r\n if (metadata.hitTolerance)\r\n featuresDataSorted = featuresDataSorted.slice(0, metadata.hitTolerance);\r\n\r\n // grupiranje po layerjih\r\n // featuresDataSorted = featuresDataSorted.sort((a, b) => {\r\n // const i1 = this.style.layers.findIndex(l => l.id === a.featureLayer.id);\r\n // const i2 = this.style.layers.findIndex(l => l.id === b.featureLayer.id);\r\n // return i1 - i2;\r\n // });\r\n\r\n return {\r\n map: this,\r\n coordinate: coords,\r\n nativeEvent: event.originalEvent,\r\n features: featuresDataSorted.map(x => x.feature),\r\n featureLayers: featuresDataSorted.map(x => x.featureLayer)\r\n };\r\n }\r\n else {\r\n if (featuresData.length > 0) {\r\n // only clusters\r\n const cluster = featuresData[0];\r\n const props: MapboxClusterProperties = cluster.feature.properties;\r\n const src = (typeof cluster.featureLayer.source == 'string' ? this._mbMap.getSource(cluster.featureLayer.source) : cluster.featureLayer.source) as maplibregl.GeoJSONSource;\r\n if (src) {\r\n src.getClusterExpansionZoom(props.cluster_id, (err, zoom) => {\r\n if (err)\r\n return;\r\n\r\n const coord = cluster.feature.geometry.getCoordinate();\r\n this._mbMap.easeTo({\r\n center: [coord.x, coord.y],\r\n zoom: zoom\r\n });\r\n });\r\n }\r\n\r\n return null;\r\n }\r\n else {\r\n return {\r\n map: this,\r\n coordinate: coords,\r\n nativeEvent: event.originalEvent,\r\n features: [],\r\n featureLayers: []\r\n };\r\n }\r\n }\r\n };\r\n\r\n private _handleViewChange = (event: any): RM2ViewData => {\r\n const metadata = this.metadata;\r\n if (metadata && metadata.persistView !== false)\r\n this.persistView();\r\n\r\n return this.getView();\r\n };\r\n\r\n private _handleUserAction = (event: Event) => {\r\n this._onUserAction.trigger({\r\n map: this,\r\n coordinate: undefined,\r\n nativeEvent: event\r\n });\r\n };\r\n\r\n\r\n private _handleMousemove = (event: any) => {\r\n try {\r\n const featuresData: { feature: Feature, featureLayer: Layer }[] = [];\r\n\r\n const fts = this.ftsAtPoint(event.point);\r\n fts.forEach(f => {\r\n const parsed = this.decodeQueriedProperties(f.properties);\r\n const ftr = new Feature();\r\n const ftrprops = {};\r\n\r\n Object.assign(ftrprops, parsed);\r\n ftr.setProperties(ftrprops);\r\n\r\n const geometry = Geometry.fromGeoJson(f.geometry);\r\n ftr.geometry = geometry;\r\n\r\n if (ftr && (ftr.properties.id == undefined || featuresData.find(d => d.feature.properties.id === ftr.properties.id) == null)) {\r\n featuresData.push({\r\n feature: ftr,\r\n featureLayer: new Layer((f as any).layer)\r\n });\r\n }\r\n\r\n });\r\n\r\n const notClusters = featuresData.filter(x => this._clusterLayers.find(c => c.id === x.featureLayer.id) == undefined);\r\n\r\n // features inside list\r\n\r\n // sort by distance from click\r\n const coords: CoordinateLike = [event['lngLat']['lng'], event['lngLat']['lat']];\r\n const clickPoint = Point.fromCoordinate(Coordinate.fromOrdinates(coords));\r\n let featuresDataSorted = featuresData.filter(x => notClusters.indexOf(x) != -1).sort((a, b) => a.feature.geometry.distance(clickPoint) - b.feature.geometry.distance(clickPoint));\r\n\r\n // hit tolerance\r\n const metadata = this.metadata;\r\n if (metadata && metadata.hitTolerance)\r\n featuresDataSorted = featuresDataSorted.slice(0, metadata.hitTolerance);\r\n\r\n // grupiranje po layerjih\r\n // featuresDataSorted = featuresDataSorted.sort((a, b) => {\r\n // const i1 = this.style.layers.findIndex(l => l.id === a.featureLayer.id);\r\n // const i2 = this.style.layers.findIndex(l => l.id === b.featureLayer.id);\r\n // return i1 - i2;\r\n // });\r\n this._onMouseMove.trigger({\r\n map: this,\r\n coordinate: coords,\r\n nativeEvent: event.originalEvent,\r\n features: featuresDataSorted.map(x => x.feature),\r\n featureLayers: featuresDataSorted.map(x => x.featureLayer)\r\n });\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n private decodeQueriedProperties(properties: any): any {\r\n if (typeof properties == 'number' || typeof properties == 'string')\r\n return properties;\r\n\r\n for (let key in properties) {\r\n const value = properties[key];\r\n if (typeof value == 'string') {\r\n if (value.length > 1 && (value[0] == '{' || value[0] == '[') &&\r\n /^[\\],:{}\\s]*$/.test(value.replace(/\\\\[\"\\\\\\/bfnrtu]/g, '@').\r\n replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, ']').\r\n replace(/(?:^|:|,)(?:\\s*\\[)+/g, ''))) {\r\n properties[key] = this.decodeQueriedProperties(JSON.parse(value));\r\n }\r\n else\r\n properties[key] = value;\r\n }\r\n else\r\n properties[key] = this.decodeQueriedProperties(value);\r\n }\r\n\r\n return properties;\r\n }\r\n\r\n private addControls() {\r\n // // add & hide geolocator control\r\n // this._geolocatorControl = new maplibregl.GeolocateControl({\r\n // positionOptions: { enableHighAccuracy: true },\r\n // trackUserLocation: true\r\n // });\r\n // this._mbMap.addControl(this._geolocatorControl);\r\n\r\n // const geolocators = document.getElementsByClassName('maplibregl-ctrl-icon maplibregl-ctrl-geolocate');\r\n // for (let i = 0; i < geolocators.length; i++) {\r\n // if (geolocators[i] instanceof HTMLElement)\r\n // (geolocators[i] as HTMLElement).style.display = 'none';\r\n // }\r\n\r\n // const topRight = document.getElementsByClassName('maplibregl-ctrl-top-right');\r\n // if (topRight.length == 1) {\r\n // for (let i = 0; i < topRight.length; i++) {\r\n // if (topRight[i] instanceof HTMLElement)\r\n // (topRight[i] as HTMLElement).style.display = 'none';\r\n // }\r\n // }\r\n\r\n const metadata = this.metadata;\r\n if (metadata && metadata.controls) {\r\n const controls = metadata.controls;\r\n for (let i = 0; i < controls.length; i++) {\r\n const ctrl: ControlData = controls[i];\r\n if (ctrl && ctrl.enabled !== false) {\r\n if (ctrl.type == MapControlType.Legend) {\r\n const addLegendControl = (options?: LegendOptions) => {\r\n this.addControl(ctrl, new LegendControl(this, options));\r\n };\r\n\r\n // if (this._options.legendOptionsPath) {\r\n // const legendSettingsFile = new XMLHttpRequest();\r\n // legendSettingsFile.open('GET', this._options.legendOptionsPath, false);\r\n // legendSettingsFile.onreadystatechange = () => {\r\n // if (legendSettingsFile.readyState === 4) {\r\n // if (legendSettingsFile.status === 200 || legendSettingsFile.status == 0) {\r\n // const legendSettings = JSON.parse(legendSettingsFile.responseText);\r\n // addLegendControl(legendSettings);\r\n // }\r\n // }\r\n // };\r\n\r\n // legendSettingsFile.send(null);\r\n // }\r\n // else\r\n addLegendControl();\r\n }\r\n else if (ctrl.type == MapControlType.FullScreen)\r\n this.addControl(ctrl, new maplibregl.FullscreenControl(null));\r\n else if (ctrl.type == MapControlType.Zoom) {\r\n this.addControl(ctrl,\r\n new maplibregl.NavigationControl({\r\n showCompass: metadata.enableRotate === true,\r\n showZoom: true\r\n })\r\n );\r\n }\r\n // else if (ctrl.type == MapControlType.Basemaps)\r\n // this._mbMap.addControl(new BasemapsControlMb(this), ctrl.position);\r\n else if (ctrl.type == MapControlType.Geolocation) {\r\n }\r\n else if (ctrl.type == MapControlType.Routing)\r\n this.addControl(ctrl, new RoutingControl(this, ctrl.options));\r\n else if (ctrl.type == MapControlType.MapPicker) {\r\n const opts = ctrl.options ? MapPickerControlOptions.fromGeoJson(ctrl.options) : new RouteHighlightOptions();\r\n const mp = new MapPickerControl(this, opts);\r\n mp.onRouteConstructed.subscribe((data) => this._onRouteConstructed.trigger(data));\r\n mp.onProcessingStatusChange.subscribe((data) => this._onProcessingStatusChanged.trigger(data));\r\n this.addControl(ctrl, mp);\r\n }\r\n else if (ctrl.type == MapControlType.PrometSi) {\r\n const ps = new PrometSiControl(this, ctrl.options);\r\n ps.onRouteSaved.subscribe(r => this._onRouteConstructed.trigger(r));\r\n this.addControl(ctrl, ps);\r\n }\r\n else if (ctrl.type == MapControlType.NAP) {\r\n const nap = new NAPControl(this, ctrl.options);\r\n this.addControl(ctrl, nap);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private triggerGeolocator() {\r\n this._geolocatorControl.trigger();\r\n }\r\n\r\n private startRefreshingGeoJSONUrlSources() {\r\n setInterval(() => {\r\n // ŽL: to je nek hack, ker Mapbox ne refresha geojson vsebin avtomatično\r\n const srcs = this._mbMap.getStyle().sources;\r\n for (let key in srcs) {\r\n const src = srcs[key];\r\n if (src.type === 'geojson' && typeof src.data === 'string') {\r\n const gjSrc = this._mbMap.getSource(key) as maplibregl.GeoJSONSource;\r\n const oldUrl = src.data;\r\n gjSrc.setData(null);\r\n gjSrc.setData(oldUrl);\r\n }\r\n }\r\n }, 60000);\r\n }\r\n\r\n private persistView() {\r\n const view = this.getView();\r\n if (view)\r\n localStorage.setItem(this.persistViewKey, JSON.stringify(view));\r\n }\r\n\r\n private getPersistedView(): RM2ViewData {\r\n if (localStorage) {\r\n const viewString = localStorage.getItem(this.persistViewKey);\r\n if (!viewString || viewString.length === 0 || !viewString.trim())\r\n return null;\r\n else\r\n return JSON.parse(viewString) as RM2ViewData;\r\n }\r\n else {\r\n console.error('Error trying to load view from local storage.');\r\n return null;\r\n }\r\n }\r\n\r\n // private selectLayers(rootLayer: Layer, condition: (x: Layer) => boolean): Layer[] {\r\n // let layers = new Array();\r\n // if (rootLayer instanceof GroupLayer) {\r\n // if (condition(rootLayer))\r\n // layers.push(rootLayer);\r\n\r\n // const lg = rootLayer as GroupLayer;\r\n // for (let i = 0; i < lg.layers.length; i++)\r\n // layers = layers.concat(this.selectLayers(lg.layers[i], condition));\r\n // }\r\n // else {\r\n // if (condition(rootLayer))\r\n // layers.push(rootLayer);\r\n // }\r\n // return layers;\r\n // }\r\n\r\n // // todo method options to controll which IQueryService shuld be used. Default is all this._queryServices and all VectorLayer\r\n // /**\r\n // * Executes query over supported services (map's queriable services) for given querystring and sends QueryServiceResult object to given response function.\r\n // *\r\n // * Response is QueryServiceResult objects array.\r\n // */\r\n // public query(queryString: string, response: (results: QueryServiceResult[]) => void, options?: QueryServiceOptions) {\r\n // options = options || { maxItems: 3 };\r\n // const queryServices = this._services.filter(x => (x as any).__is_IQueryService).map(x => (x as any) as IQueryService)\r\n // .concat(this.selectLayers(this._layers, x => (x as any).__is_IQueryService).map(x => (x as any) as IQueryService));\r\n // const results = new Array(queryServices.length);\r\n // queryServices.forEach((x, i) => {\r\n // x.query(queryString, (r) => { results[i] = r; response(results); }, options);\r\n // });\r\n // }\r\n\r\n private setMbLayerVisibility(id: string, visible: boolean) {\r\n const mbVis = visible ? 'visible' : 'none';\r\n this._mbMap.setLayoutProperty(id, 'visibility', mbVis);\r\n this._clusterLayers.filter(cl => cl.id.startsWith(id)).forEach(cl => this._mbMap.setLayoutProperty(cl.id, 'visibility', mbVis));\r\n }\r\n\r\n private refreshSingleGroupVisibility(group: LayerGroup) {\r\n // const group = this.metadata.findGroup(id);\r\n // if (group) {\r\n const elementalLayers = this.getLayers((l: Layer) => l.metadata && l.metadata.gid === group.id);\r\n const canDisplay = this.canDisplayGroup(group);\r\n elementalLayers.forEach(child => {\r\n if (group.visible === false)\r\n this.setMbLayerVisibility(child.id, false);\r\n else if (group.visible === true && canDisplay === true) {\r\n const vis = child.metadata.visible;\r\n this.setMbLayerVisibility(child.id, vis);\r\n if ((this._mbMap.getLayoutProperty(child.id, 'visibility') !== 'none') !== vis)\r\n this._onLayerVisibilityChanged.trigger(new Layer(this._mbMap.getLayer(child.id) as maplibregl.LayerSpecification));\r\n }\r\n });\r\n\r\n if (group.children)\r\n group.children.forEach(c => this.refreshSingleGroupVisibility(c));\r\n // }\r\n // else\r\n // throw new Error(`Cannot find group with ID '${id}'.`);\r\n }\r\n\r\n private canDisplayGroup(group: LayerGroup): boolean {\r\n if (group.visible === false)\r\n return false;\r\n\r\n const parent = group.getParent();\r\n if (parent != null)\r\n return this.canDisplayGroup(parent)\r\n return true;\r\n }\r\n\r\n private generateClusterLayers(layer: Layer): void {\r\n // const layer = new Layer(l);\r\n const clusterFilter = ['has', 'point_count'];\r\n const pointCount = ['get', 'point_count'];\r\n const notClusterFilter = ['!', clusterFilter];\r\n const filter = this._mbMap.getFilter(layer.id);\r\n this._mbMap.setFilter(layer.id, filter ? ['all', filter, notClusterFilter] : notClusterFilter);\r\n const metadata = this.metadata;\r\n\r\n const iconSize = layer.metadata.clusterSymbolIconSize ? layer.metadata.clusterSymbolIconSize : metadata.clusterIcons.iconSize;\r\n const textSize = layer.metadata.clusterSymbolTextSize ? layer.metadata.clusterSymbolTextSize : metadata.clusterIcons.textSize;\r\n const textOffset = layer.metadata.clusterSymbolTextOffset ? layer.metadata.clusterSymbolTextOffset : metadata.clusterIcons.textOffset;\r\n const textColor = layer.metadata.clusterSymbolTextColor ? layer.metadata.clusterSymbolTextColor : metadata.clusterIcons.textColor;\r\n\r\n const symbolLayer: maplibregl.SymbolLayerSpecification = {\r\n id: `${layer.id}_cluster-symbol`,\r\n type: 'symbol',\r\n source: layer.source,\r\n filter: clusterFilter,\r\n metadata: { gid: layer.metadata.gid },\r\n layout: {\r\n 'icon-image': layer.metadata.clusterSymbol,\r\n 'icon-allow-overlap': true,\r\n 'icon-size': iconSize,\r\n 'text-field': [\r\n 'case',\r\n ['<', pointCount, ['literal', 10]], pointCount,\r\n ['literal', '+']\r\n ],\r\n 'text-font': ['Noto Sans Regular'],\r\n 'text-size': textSize,\r\n 'text-allow-overlap': true,\r\n 'text-offset': textOffset\r\n },\r\n paint: {\r\n 'text-color': textColor\r\n }\r\n };\r\n\r\n if (typeof layer.source === 'string') {\r\n const src = this._mbMap.getSource(layer.source);\r\n if (src.type === \"vector\")\r\n symbolLayer['source-layer'] = layer['source-layer'];\r\n }\r\n\r\n this._mbMap.addLayer(symbolLayer, layer.id);\r\n this._clusterLayers.push(symbolLayer);\r\n\r\n // if (layer.metadata.clusterType === 'circle') {\r\n // const style = layer.metadata.clusterStyle as CircleClusterStyle;\r\n // const circleLayer: maplibregl.Layer = {\r\n // id: `${layer.id}_cluster-circle`,\r\n // type: 'circle',\r\n // source: layer.source,\r\n // filter: clusterFilter,\r\n // paint: {\r\n // 'circle-color': style.circleColor,\r\n // 'circle-stroke-color': style.circleOutlineColor,\r\n // 'circle-stroke-width': style.circleOutlineWidth,\r\n // 'circle-opacity': style.circleOpacity,\r\n // 'circle-radius': style.circleRadius\r\n // }\r\n // };\r\n // this._mbMap.addLayer(circleLayer, layer.id);\r\n // this._clusterLayers.push(circleLayer);\r\n // }\r\n // else if (layer.metadata.clusterType === 'symbol') {\r\n // const style = layer.metadata.clusterStyle as SymbolClusterStyle;\r\n // const symbolLayer: maplibregl.Layer = {\r\n // id: `${layer.id}_cluster-symbol`,\r\n // type: 'symbol',\r\n // source: layer.source,\r\n // filter: clusterFilter,\r\n // layout: {\r\n // 'icon-allow-overlap': true,\r\n // 'icon-image': style.iconImage,\r\n // 'icon-anchor': style.iconAnchor,\r\n // 'icon-size': style.iconSize\r\n // }\r\n // };\r\n\r\n // this._mbMap.addLayer(symbolLayer, layer.id);\r\n // this._clusterLayers.push(symbolLayer);\r\n // }\r\n\r\n // if (layer.metadata.clusterStyle.showText !== false) {\r\n // const labelLayer: maplibregl.Layer = {\r\n // id: `${layer.id}_cluster-label`,\r\n // type: 'symbol',\r\n // source: layer.source,\r\n // filter: clusterFilter,\r\n // layout: {\r\n // 'text-field': '{point_count_abbreviated}',\r\n // 'text-font': [\"Noto Sans Regular\"],\r\n // 'text-size': 12,\r\n // 'text-allow-overlap': true\r\n // },\r\n // paint: {\r\n // 'text-color': layer.metadata.clusterStyle.textColor\r\n // }\r\n // };\r\n\r\n // this._mbMap.addLayer(labelLayer, layer.id);\r\n // this._clusterLayers.push(labelLayer);\r\n // }\r\n }\r\n\r\n // private refreshGroupVisibility(id: string) {\r\n // const group = this.metadata.findGroup(id);\r\n // // TODO: check for children & parents\r\n // if (group) {\r\n // const elementalLayers = this._mbMap.getStyle().layers.filter(l => l.metadata && l.metadata.gid === id);\r\n // elementalLayers.forEach(child => {\r\n // const prevVis = this._mbMap.getLayoutProperty(child.id, 'visibility') !== 'none';\r\n // if (group.visible === false) {\r\n // this.layerVisibility[child.id] = prevVis;\r\n // this._mbMap.setLayoutProperty(child.id, 'visibility', 'none');\r\n // }\r\n // else {\r\n // const vis = this.layerVisibility[child.id];\r\n // if (vis != undefined) {\r\n // this._mbMap.setLayoutProperty(child.id, 'visibility', vis ? 'visible' : 'none');\r\n // if (prevVis !== vis)\r\n // this._onLayerVisibilityChanged.trigger(this._mbMap.getLayer(child.id));\r\n // }\r\n // }\r\n // });\r\n // }\r\n // else\r\n // throw new Error(`Cannot find group with ID '${id}'.`);\r\n // }\r\n\r\n // /**\r\n // * Executes location query over supported services (map's location-queriable services) for given coordinate and sends LocationServiceOptions object to given response function.\r\n // *\r\n // * Response is LocationServiceOptions objects array.\r\n // */\r\n // public locate(coordinate: Coordinate, response: (results: LocationServiceResult[]) => void, options?: LocationServiceOptions) {\r\n // options = options || { projection: this._uiProjection };\r\n // options.projection = options.projection || this._uiProjection;\r\n // const locationServices = this._services.filter(x => (x as any).__is_ILocationService).map(x => (x as any) as ILocationService)\r\n // .concat(this.selectLayers(this._layers, x => (x as any).__is_ILocationService).map(x => (x as any) as ILocationService));\r\n // const results = new Array();\r\n // locationServices.forEach((x, i) => {\r\n // x.locate(coordinate, (r) => { results[i] = r; response(results); }, options);\r\n // });\r\n // }\r\n\r\n // /**\r\n // * Executes routing query over routing service for given coordinates and sends RoutingServiceResult object to given response function.\r\n // *\r\n // * Response is RoutingServiceOptions object.\r\n // */\r\n // public route(coordinates: Coordinate[], response: (result: RoutingServiceResult) => void, options?: RoutingServiceOptions) {\r\n // options = options || { projection: this._uiProjection };\r\n // options.projection = options.projection || this._uiProjection;\r\n // this._routingService.route(coordinates, response, options);\r\n // }\r\n\r\n // TODO: brez OL funkcij in objektov\r\n // public getFitCenterAndResolution(geometryOrExtent: ol.Extent | ol.geom.Geometry, options: olx.view.FitGeometryOptions) {\r\n // const view = this.olMap.getView();\r\n // const viewa = view as any;\r\n\r\n // let size = options.size;\r\n // if (!size)\r\n // size = viewa.getSizeFromViewport_();\r\n\r\n // const rotation = view.getRotation();\r\n // let geometry;\r\n // if (!(geometryOrExtent instanceof ol.geom.SimpleGeometry))\r\n // geometry = ol.geom.Polygon.fromExtent(geometryOrExtent as ol.Extent);\r\n // else if (geometryOrExtent.getType() === 'Circle') {\r\n // geometryOrExtent = geometryOrExtent.getExtent();\r\n // geometry = ol.geom.Polygon.fromExtent(geometryOrExtent);\r\n // geometry.rotate(rotation, ol.extent.getCenter(geometryOrExtent));\r\n // }\r\n // else\r\n // geometry = geometryOrExtent;\r\n\r\n // const padding = options.padding !== undefined ? options.padding : [0, 0, 0, 0];\r\n // const constrainResolution = options.constrainResolution !== undefined ? options.constrainResolution : true;\r\n // const nearest = options.nearest !== undefined ? options.nearest : false;\r\n // let minResolution;\r\n // if (options.minResolution !== undefined)\r\n // minResolution = options.minResolution;\r\n // else if (options.maxZoom !== undefined) {\r\n // minResolution = this.olMap.getView().constrainResolution(\r\n // viewa.maxResolution_, options.maxZoom - viewa.minZoom_, 0);\r\n // }\r\n // else \r\n // minResolution = 0;\r\n\r\n // const coords = geometry.getFlatCoordinates();\r\n // // calculate rotated extent\r\n // const cosAngle = Math.cos(-rotation);\r\n // let sinAngle = Math.sin(-rotation);\r\n // let minRotX = +Infinity;\r\n // let minRotY = +Infinity;\r\n // let maxRotX = -Infinity;\r\n // let maxRotY = -Infinity;\r\n // const stride = geometry.getStride();\r\n // for (let i = 0, ii = coords.length; i < ii; i += stride) {\r\n // const rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle;\r\n // const rotY = coords[i] * sinAngle + coords[i + 1] * cosAngle;\r\n // minRotX = Math.min(minRotX, rotX);\r\n // minRotY = Math.min(minRotY, rotY);\r\n // maxRotX = Math.max(maxRotX, rotX);\r\n // maxRotY = Math.max(maxRotY, rotY);\r\n // }\r\n\r\n // // calculate resolution\r\n // let resolution = viewa.getResolutionForExtent([minRotX, minRotY, maxRotX, maxRotY], [size[0] - padding[1] - padding[3], size[1] - padding[0] - padding[2]]);\r\n // resolution = isNaN(resolution) ? minResolution : Math.max(resolution, minResolution);\r\n // if (constrainResolution) {\r\n // let constrainedResolution = view.constrainResolution(resolution, 0, 0);\r\n // if (!nearest && constrainedResolution < resolution)\r\n // constrainedResolution = view.constrainResolution(constrainedResolution, -1, 0);\r\n // resolution = constrainedResolution;\r\n // }\r\n\r\n // // calculate center\r\n // sinAngle = -sinAngle; // go back to original rotation\r\n // let centerRotX = (minRotX + maxRotX) / 2;\r\n // let centerRotY = (minRotY + maxRotY) / 2;\r\n // centerRotX += (padding[1] - padding[3]) / 2 * resolution;\r\n // centerRotY += (padding[0] - padding[2]) / 2 * resolution;\r\n // const centerX = centerRotX * cosAngle - centerRotY * sinAngle;\r\n // const centerY = centerRotY * cosAngle + centerRotX * sinAngle;\r\n // const center = [centerX, centerY];\r\n\r\n // return { center: center, resolution: resolution };\r\n // }\r\n\r\n // private extentGetCenter(extent: ol.Extent) {\r\n // return [(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2];\r\n // }\r\n}\r\n\r\nexport class QueryResult {\r\n service: string;\r\n status: string;\r\n items: QueryResultItem[];\r\n}\r\n\r\nexport interface QueryResultItem {\r\n title: string;\r\n type: string;\r\n dateTime: Date;\r\n projection: Projection;\r\n location: number[];\r\n envelope: Envelope;\r\n geometry: Geometry;\r\n relevance?: number;\r\n distance?: number;\r\n}\r\n","export const PopupCarouselElementId = 'popupCarousel';\r\nexport const PopupCarouselTemplate = (id: number) => `\r\n
\r\n
\r\n {{#features}}\r\n
\r\n
\r\n {{/features}}\r\n
\r\n \r\n
\r\n
  • \r\n \r\n
  • \r\n\r\n
      \r\n {{#features}}\r\n
    1. \r\n {{/features}}\r\n
    \r\n\r\n
  • \r\n \r\n
  • \r\n
    \r\n
    \r\n`;\r\n","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar ReplaySubject = (function (_super) {\n __extends(ReplaySubject, _super);\n function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {\n if (_bufferSize === void 0) { _bufferSize = Infinity; }\n if (_windowTime === void 0) { _windowTime = Infinity; }\n if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }\n var _this = _super.call(this) || this;\n _this._bufferSize = _bufferSize;\n _this._windowTime = _windowTime;\n _this._timestampProvider = _timestampProvider;\n _this._buffer = [];\n _this._infiniteTimeWindow = true;\n _this._infiniteTimeWindow = _windowTime === Infinity;\n _this._bufferSize = Math.max(1, _bufferSize);\n _this._windowTime = Math.max(1, _windowTime);\n return _this;\n }\n ReplaySubject.prototype.next = function (value) {\n var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n var subscription = this._innerSubscribe(subscriber);\n var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;\n var copy = _buffer.slice();\n for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n };\n ReplaySubject.prototype._trimBuffer = function () {\n var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;\n var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n var now = _timestampProvider.now();\n var last = 0;\n for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\n//# sourceMappingURL=ReplaySubject.js.map","import Mustache from 'mustache';\r\n\r\nexport * from './rm2/css';\r\n\r\nimport { Map, Feature, IPolygonOptions, Geometry, Projection, IGeolocationOptions, MapEventArgs, Popup, FeatureCollection, Layer, Route } from './rm2';\r\nimport { Subject, ReplaySubject, Observable, BehaviorSubject } from 'rxjs';\r\nimport { Coordinate } from './rm2';\r\nimport { ILineOptions } from './rm2/';\r\nimport { Polygon, CoordinateLike, Point } from './rm2/model/RM2Geometry';\r\nimport { IFeatureHighlightOptions, IMarkerOptions, ICircleOptions } from './rm2/highlights/RM2HighlightOptions';\r\nimport { FitOptions, ICameraChangeOptions } from './rm2/model/RM2CameraChangeOptions';\r\nimport { RM2ViewData } from './rm2/model/RM2ViewData';\r\nimport { MapTheme } from './rm2/model/RM2Theme';\r\nimport { Position } from 'geojson';\r\nimport { RM2GeolocationPosition } from './rm2/geolocation/RM2Geolocation';\r\nimport { Guid } from 'guid-typescript';\r\nimport { IRouteHighlightOptions, RouteHighlightOptions, RouteLegacy, RouteFeatureCollection, RouteInstructionsFeatureCollection } from './rm2/services/RM2RoutingService';\r\nimport { MapControlType } from './rm2/map-controls/RM2MapControls';\r\nimport { IPopupOptions } from './rm2/popup/RM2PopupOptions';\r\nimport { ServiceType } from './rm2/services/RM2Service';\r\nimport { LocalizationService } from './rm2/services/RM2LocalizationService';\r\n\r\nexport class MapContainer {\r\n public static readonly ATTRIBUTE_STYLE_URL = \"style-url\";\r\n private _lastPopup: Popup;\r\n\r\n constructor(elementId: string, mapId?: string, initMap?: boolean) {\r\n this.ElementId = elementId;\r\n this.Element = document.getElementById(elementId);\r\n if (!this.Element)\r\n throw new Error(`Invalid elementId ${elementId}`);\r\n\r\n this._extendElement();\r\n this.reconfigure(initMap, mapId);\r\n }\r\n\r\n public ElementId: string;\r\n public Element: HTMLElement;\r\n private get ElementAny() { return this.Element as any; }\r\n private get styleUrl(): string { return this.Element.getAttribute(MapContainer.ATTRIBUTE_STYLE_URL); }\r\n\r\n public get map(): Map { return this._map; }\r\n private _map: Map;\r\n private _onLayerReloadedSubs: Array = [];\r\n\r\n public get evt_mapInitialized(): Observable { return this._evt_mapInitialized; }\r\n private _evt_mapInitialized = new ReplaySubject(1);\r\n\r\n public get evt_mapClick(): Observable { return this._evt_mapClick; }\r\n private _evt_mapClick = new Subject();\r\n\r\n public get evt_mapLongClick(): Observable { return this._evt_mapLongClick; }\r\n private _evt_mapLongClick = new Subject();\r\n\r\n public get evt_mapDblClick(): Observable { return this._evt_mapDblClick; }\r\n private _evt_mapDblClick = new Subject();\r\n\r\n public get evt_mapMouseMove(): Observable { return this._evt_mapMouseMove; }\r\n private _evt_mapMouseMove = new Subject();\r\n\r\n public get evt_layerRestyle(): Observable { return this._evt_layerRestyle; }\r\n private _evt_layerRestyle = new Subject();\r\n\r\n public get evt_mapUserAction(): Observable { return this._evt_mapUserAction; }\r\n private _evt_mapUserAction = new Subject();\r\n\r\n public get evt_mapLoad(): Observable { return this._evt_mapLoad; }\r\n private _evt_mapLoad = new ReplaySubject(1);\r\n\r\n public get evt_layerReloaded(): Observable { return this._evt_layerReloaded; }\r\n private _evt_layerReloaded = new Subject();\r\n\r\n public get evt_viewChange(): Observable { return this._evt_viewChange; }\r\n private _evt_viewChange = new Subject();\r\n\r\n public get evt_routeConstructed(): Observable { return this._evt_routeConstructed; }\r\n private _evt_routeConstructed = new Subject();\r\n\r\n public get evt_popupOpened(): Observable { return this._evt_popupOpened; }\r\n private _evt_popupOpened = new Subject();\r\n\r\n public static get(mapId: string): MapContainer {\r\n const rmaps = (window as any).rmaps;\r\n if (Array.isArray(rmaps)) {\r\n const found = rmaps.find(x => x.id === mapId);\r\n if (found)\r\n return found.map;\r\n }\r\n return null;\r\n }\r\n\r\n public static initDARSPlugiMap(mapContainerId: string, lang: string): MapContainer {\r\n const el = document.querySelector(`#${mapContainerId}`);\r\n if (el) {\r\n //el.setAttribute(this.ATTRIBUTE_STYLE_URL, `https://promet-dars.geoprostor.net/ext/plugi/map-styles/vector-hybrid.${lang}.mb-style.json`);\r\n el.setAttribute(this.ATTRIBUTE_STYLE_URL, `https://www.promet.si/ext/plugi/map-styles/vector-hybrid.${lang}.mb-style.json`);\r\n\r\n return new MapContainer(mapContainerId);\r\n }\r\n\r\n throw new Error(`Invalid map target for DARS plugi: ${mapContainerId}`)\r\n }\r\n\r\n private _extendElement() {\r\n // Tega ne delamo - vrnemo samo MapContainer objekt. Po potrebi se lahko doda\r\n\r\n // if (this.ElementAny.Rm2Bootstraper) {\r\n // throw new Error(\"Element is already in use by Rm2. Dispose existing first!\");\r\n // }\r\n // this.ElementAny.Rm2Bootstraper = this;\r\n }\r\n\r\n public reconfigure = (initMap?: boolean, mapId?: string) => {\r\n this.dispose();\r\n this._reconfigure(initMap, mapId);\r\n }\r\n\r\n private _reconfigure = async (initMap?: boolean, mapId?: string) => {\r\n if (initMap !== false)\r\n this.initMap(mapId);\r\n }\r\n\r\n public initMap = (mapId?: string) => {\r\n if (!mapId)\r\n mapId = Guid.create().toString();\r\n\r\n this._map = new Map(this.styleUrl, this.Element, { id: mapId });\r\n\r\n const metadata = this._map.metadata;\r\n this.map.onClick.subscribe(this._mapOnClick);\r\n this.map.onLongClick.subscribe(this._mapOnLongClick);\r\n this.map.onDblClick.subscribe(this._mapOnDblClick);\r\n this.map.onMouseMove.subscribe(this._mapOnMouseMove);\r\n this.map.onRestyleLayer.subscribe(this._mapOnRestyleLayer);\r\n this.map.onUserAction.subscribe(this._mapOnUserAction);\r\n this.map.onViewChange.subscribe(this._mapOnViewChange);\r\n this.map.onLoad.subscribe(this._mapOnLoad)\r\n this.map.onRouteConstructed.subscribe(this._mapRouteConstructed);\r\n this.map.onPopupOpened.subscribe(this._popupOpened);\r\n\r\n const maps = (window as any).rmaps;\r\n const obj = { id: mapId, map: this };\r\n if (Array.isArray(maps))\r\n maps.push(obj);\r\n else\r\n (window as any).rmaps = [obj];\r\n\r\n // const layers = this._map.getLayers(x => x instanceof VectorLayer);\r\n // for (const key in layers) {\r\n // if (layers.hasOwnProperty(key)) {\r\n // const layer = layers[key] as VectorLayer;\r\n\r\n // const handlerFactory = (l: VectorLayer) => () => {\r\n // this._layerOnReloaded({ map: this.map, layer: l });\r\n // };\r\n\r\n // if (layer.source) {\r\n // const handler = handlerFactory(layer);\r\n // layer.source.onReloadLayer.subscribe(handler);\r\n // this._onLayerReloadedSubs.push({ source: layer.source, handler: handler });\r\n // }\r\n // }\r\n // }\r\n\r\n this.map.setTarget(this.Element);\r\n this._onMapInitialized();\r\n }\r\n\r\n public dispose = () => {\r\n if (this.map) {\r\n this.map.setTarget(undefined);\r\n\r\n this.map.onClick.unsubscribe(this._mapOnClick);\r\n this.map.onLongClick.unsubscribe(this._mapOnLongClick);\r\n this.map.onDblClick.unsubscribe(this._mapOnDblClick);\r\n this.map.onMouseMove.unsubscribe(this._mapOnMouseMove);\r\n this.map.onRestyleLayer.unsubscribe(this._mapOnRestyleLayer);\r\n this.map.onUserAction.unsubscribe(this._mapOnUserAction);\r\n this.map.onViewChange.unsubscribe(this._mapOnViewChange);\r\n this.map.onRouteConstructed.unsubscribe(this._mapRouteConstructed);\r\n this.map.onPopupOpened.unsubscribe(this._popupOpened);\r\n\r\n for (const key in this._onLayerReloadedSubs) {\r\n if (this._onLayerReloadedSubs.hasOwnProperty(key)) {\r\n const sh = this._onLayerReloadedSubs[key];\r\n if (sh && sh.source && sh.handler) {\r\n sh.source.onReloadLayer.unsubscribe(sh.handler);\r\n }\r\n }\r\n }\r\n this._onLayerReloadedSubs = [];\r\n }\r\n }\r\n\r\n public zoom = (zoom?: number, animate?: boolean) => {\r\n const view = this.map.getView();\r\n const newZoom = view.zoom + zoom;\r\n this.map.pan(view.center, {\r\n zoom: newZoom,\r\n animate: animate\r\n });\r\n }\r\n\r\n public getLayers = (condition: (x: Layer) => boolean = () => true): Layer[] => {\r\n if (this.map) {\r\n const layers = this.map.getLayers(x => x instanceof Layer && condition(x) === true);\r\n return layers;\r\n }\r\n return null;\r\n }\r\n\r\n public setVisibility = (sids?: string[], visible?: boolean) => {\r\n if (sids) {\r\n sids.forEach(sid => {\r\n if (visible == null)\r\n this.map.setLayerVisibility(sid, !this.map.getLayerVisibility(sid));\r\n else\r\n this.map.setLayerVisibility(sid, visible);\r\n });\r\n }\r\n }\r\n\r\n public drawRouteFromGeoJson = (route: any, points: CoordinateLike[], options?: IRouteHighlightOptions) => {\r\n const fc = RouteFeatureCollection.fromGeoJson(route);\r\n fc.properties.Instructions = RouteInstructionsFeatureCollection.fromGeoJson(fc.properties.Instructions);\r\n for (let i = 0; i < fc.features.length; i++)\r\n fc.features[i].properties.includeInPopup = false;\r\n \r\n this.drawRoute({\r\n points: points,\r\n route: fc\r\n }, options)\r\n };\r\n\r\n public drawRoute = (route: Route, options?: IRouteHighlightOptions) => {\r\n this.map.drawRoute(route, options);\r\n };\r\n\r\n public drawRouteLegacy = (route: RouteLegacy, options?: IRouteHighlightOptions) => {\r\n this.map.drawRouteLegacy(route, options);\r\n };\r\n\r\n public clearRoute = () => {\r\n this.map.clearRoute();\r\n };\r\n\r\n // public drawMarker = (gjGeometry?: string, options?: IMarkerOptions) => {\r\n // const geometry = Geometry.fromGeoJson(gjGeometry);\r\n // const projection = Projection.create(options.projection as any);\r\n // options.projection = projection;\r\n\r\n // if (geometry && projection)\r\n // this.map.drawMarker(geometry, options);\r\n // }\r\n\r\n public drawMarker = (coords: Coordinate | CoordinateLike, options?: IMarkerOptions) => {\r\n let geometry: Point = undefined;\r\n if (Array.isArray(coords as any)) {\r\n geometry = Point.fromCoordinate(coords);\r\n }\r\n if (coords instanceof String || typeof coords === 'string') {\r\n geometry = Point.fromGeoJson(coords as any as string) as Point;\r\n }\r\n else {\r\n geometry = coords as any as Point;\r\n }\r\n\r\n const projection = Projection.create(options.projection as any || 'EPSG:4326');\r\n options.projection = projection;\r\n\r\n if (geometry && projection)\r\n this.map.drawMarker(geometry, options);\r\n }\r\n\r\n public clearMarker = () => {\r\n this.map.clearMarkers();\r\n }\r\n\r\n public drawCircle = (gjGeometry?: string, options?: ICircleOptions) => {\r\n const geometry = Geometry.fromGeoJson(gjGeometry);\r\n const projection = Projection.create(options.projection as any);\r\n options.projection = projection;\r\n\r\n if (geometry && projection)\r\n this.map.drawCircle(geometry, options);\r\n }\r\n\r\n public clearCircle = () => {\r\n this.map.clearCircles();\r\n }\r\n\r\n public drawLine = (gjGeometry: string, options?: ILineOptions) => {\r\n const geometry = Geometry.fromGeoJson(gjGeometry);\r\n const projection = Projection.create(options.projection as any);\r\n options.projection = projection;\r\n\r\n if (geometry && projection)\r\n this.map.drawLine(geometry, options);\r\n };\r\n\r\n public clearLine = () => {\r\n this.map.clearLines();\r\n }\r\n\r\n public drawPolygon = (coords: number[][][], options?: IPolygonOptions) => {\r\n const polygonCoords = [coords[0].map(coord => Coordinate.fromOrdinates(coord as CoordinateLike))];\r\n const geometry = new Polygon(polygonCoords);\r\n this.map.drawPolygon(geometry, options);\r\n }\r\n\r\n public clearPolygon = () => {\r\n this.map.clearPolygons();\r\n }\r\n\r\n public addFeature = (ft: any, opts?: IFeatureHighlightOptions): any => {\r\n // opts.projection = Projection.create('EPSG:4326');\r\n return this.map.addFeature(Feature.fromGeoJson(ft), opts);\r\n };\r\n\r\n public addFeatures = (ft: any, opts?: IFeatureHighlightOptions): any => {\r\n // opts.projection = Projection.create('EPSG:4326');\r\n return this.map.addFeatures(FeatureCollection.fromGeoJson(ft), opts);\r\n };\r\n\r\n public removeFeature = (id: string) => {\r\n if (id)\r\n this.map.removeFeature(id);\r\n };\r\n\r\n public clearFeatures = () => {\r\n this.map.clearFeatures();\r\n };\r\n\r\n public getAllFeatures = (): any => {\r\n return this.map.getAllFeatures().toGeoJson();\r\n }\r\n\r\n public fitToFeatures = (padding: number) => {\r\n this.map.fitCameraToFeatures(this.map.getAllFeatures(), new FitOptions({ padding: padding }));\r\n }\r\n\r\n public pan = (coordinate: number[], zoom?: number, projection?: string, animate?: boolean, relCenterX?: number, relCenterY?: number, bearing?: number, pitch?: number) => {\r\n const _projection = Projection.create(projection || 'EPSG:4326');\r\n this.map.pan(Coordinate.fromOrdinates(coordinate as CoordinateLike), {\r\n zoom: zoom,\r\n projection: _projection,\r\n animate: animate,\r\n relCenterX: relCenterX,\r\n relCenterY: relCenterY,\r\n bearing: bearing,\r\n pitch: pitch\r\n });\r\n }\r\n\r\n public tilt = (degrees: number) => {\r\n this.map.tilt(degrees);\r\n }\r\n\r\n public setLoadingStatus = (status: boolean) => {\r\n const loadingId = 'rmap2-loading';\r\n const container = this.map.getTarget();\r\n const found = container.querySelector('#' + loadingId);\r\n if (status) {\r\n if (found)\r\n return;\r\n \r\n const loadingContainer = document.createElement('div');\r\n loadingContainer.className = 'w-100 h-100 d-flex align-items-center justify-content-center';\r\n loadingContainer.id = loadingId;\r\n loadingContainer.style.backgroundColor = '#00000099';\r\n loadingContainer.style.zIndex = '2';\r\n loadingContainer.style.position = 'absolute';\r\n\r\n const spinner = document.createElement('div');\r\n spinner.className = 'spinner-border text-light';\r\n spinner.setAttribute('role', 'status');\r\n const spinnerContent = document.createElement('span');\r\n spinnerContent.className = 'sr-only';\r\n spinnerContent.innerText = 'Loading...';\r\n spinner.appendChild(spinnerContent);\r\n\r\n loadingContainer.appendChild(spinner);\r\n container.appendChild(loadingContainer);\r\n }\r\n else {\r\n if (found)\r\n found.parentElement.removeChild(found);\r\n }\r\n };\r\n\r\n public showGeolocation = (position: RM2GeolocationPosition, options: IGeolocationOptions) => {\r\n this.map.showGeolocation(position, options);\r\n }\r\n\r\n public clearGeolocation = () => {\r\n this.map.clearGeolocation();\r\n }\r\n\r\n public getControl = (control: MapControlType) => {\r\n return this.map.getControl(control);\r\n };\r\n\r\n public setMapTheme = (theme: string) => {\r\n this.map.setMapTheme(theme as MapTheme);\r\n };\r\n\r\n public setSourceData = (id: string, data: any) => {\r\n const fc = FeatureCollection.fromGeoJson(data);\r\n this.map.setSourceData(id, fc);\r\n };\r\n\r\n public openPopupForFeature(ft: any, layer: string, options?: IPopupOptions): Popup {\r\n const ftJson = Feature.fromGeoJson(ft);\r\n const l = this._map.getLayer(layer);\r\n if (l) {\r\n let zoom = null;\r\n // const src = (typeof l.source == 'string' ? this._map.getSource(l.source) : l.source) as maplibregl.GeoJSONSource;\r\n\r\n const content = this.getPopupContent(ftJson, l);\r\n this._map.closeAllPopups();\r\n const p = this._map.openPopupForFeature(ftJson, l, content.content, options);\r\n this._lastPopup = p;\r\n this._lastPopup.onClose.subscribe(() => clearInterval(content.interval));\r\n return p;\r\n }\r\n return null;\r\n }\r\n\r\n // public refresh(sids?: string[]) {\r\n // let layers = this.map.getLayers(x => true);\r\n // if (sids != null && sids !== undefined) {\r\n // const fsids = sids.filter(sid => sid != null && sid !== undefined && sid !== \"\");\r\n // layers = this.map.getLayers(x => fsids.indexOf(x.sid) >= 0);\r\n // }\r\n // layers.forEach(layer => {\r\n // if (layer instanceof SourceLayer) {\r\n // if (layer.source) {\r\n // if (layer.source instanceof VectorSource) {\r\n // layer.source.reload(undefined, error => {\r\n // if (console) {\r\n // console.error(`Failed reloading layer, error: ${error}`);\r\n // }\r\n // });\r\n // }\r\n // else {\r\n // layer.source.reload();\r\n // }\r\n // }\r\n // }\r\n // });\r\n // }\r\n\r\n public transformEpsg3912ToEpsg4326(x: number, y: number): CoordinateLike {\r\n const coord = Coordinate.fromOrdinates([x, y]);\r\n const transformed = Coordinate.transform(coord, Projection.create('EPSG:3912'), Projection.create('EPSG:4326'));\r\n return [transformed.x, transformed.y];\r\n }\r\n\r\n public setLanguage(lang: string) {\r\n this._map.setLanguage(lang);\r\n }\r\n\r\n private _onMapInitialized() {\r\n this._evt_mapInitialized.next(undefined);\r\n }\r\n\r\n private _mapOnClick = (eventArgs: MapEventArgs) => {\r\n // ista koda se ponovi v rmap2.service.ts\r\n const metadata = this._map.metadata;\r\n const showPopup = metadata == null || metadata.enablePopup !== false;\r\n if (showPopup && eventArgs.nativeEvent instanceof MouseEvent && eventArgs.nativeEvent.button == 0) { // LMB\r\n const fts: Feature[] = [];\r\n const ftsLayers = [];\r\n\r\n // filtriraj\r\n for (let i = 0; i < eventArgs.features.length; i++) {\r\n const ft = eventArgs.features[i];\r\n const ftLayer = eventArgs.featureLayers[i];\r\n if (ft.properties.includeInIdentify !== false && ft.properties.includeInPopup !== false) {\r\n fts.push(ft);\r\n ftsLayers.push(ftLayer);\r\n }\r\n }\r\n\r\n if (fts.length > 0) {\r\n const clusterPointCountKey = 'point_count';\r\n // če so v kliku samo clusterji\r\n if (fts.find(ft => ft.hasProperty(clusterPointCountKey) === false) == undefined) {\r\n const cluster = fts[0];\r\n const clusterCoord = cluster.geometry.getCoordinate();\r\n const currView = this._map.getView();\r\n\r\n setTimeout(() => {\r\n this.map.pan(clusterCoord, {\r\n zoom: currView.zoom + 1,\r\n animate: true\r\n });\r\n });\r\n }\r\n else {\r\n // filtriraj ven clusterje\r\n for (let i = 0; i < fts.length; i++) {\r\n const ft = fts[i];\r\n if (ft.hasProperty(clusterPointCountKey)) {\r\n fts.splice(i, 1);\r\n ftsLayers.splice(i, 1);\r\n }\r\n }\r\n\r\n const first = fts[0].geometry.getCoordinate();\r\n const intervals = [];\r\n this._lastPopup = eventArgs.map.openPopupForFeatures([first.x, first.y], fts, (ft: Feature, i: number): HTMLElement => {\r\n const l = ftsLayers[i];\r\n const container = this.getPopupContent(ft, l);\r\n intervals.push(container.interval);\r\n return container.content;\r\n }, { maxWidth: ftsLayers.map(l => l.metadata.infoWindowMaxWidth) });\r\n \r\n this._lastPopup.onClose.subscribe(() => intervals.forEach(interval => clearInterval(interval)));\r\n }\r\n }\r\n else\r\n this._evt_mapClick.next(eventArgs);\r\n }\r\n else\r\n this._evt_mapClick.next(eventArgs);\r\n };\r\n\r\n private _mapOnLongClick = (eventArgs: MapEventArgs) => {\r\n this._evt_mapLongClick.next(eventArgs);\r\n };\r\n\r\n private _mapOnDblClick = (eventArgs: MapEventArgs) => {\r\n this._evt_mapDblClick.next(eventArgs);\r\n };\r\n\r\n private _mapOnMouseMove = (eventArgs: MapEventArgs) => {\r\n this._evt_mapMouseMove.next(eventArgs);\r\n };\r\n\r\n private _mapOnRestyleLayer = (eventArgs: MapEventArgs) => {\r\n this._evt_layerRestyle.next(eventArgs)\r\n };\r\n\r\n private _mapOnUserAction = (eventArgs: MapEventArgs) => {\r\n this._evt_mapUserAction.next(eventArgs);\r\n };\r\n\r\n private _mapOnViewChange = (eventArgs: RM2ViewData) => {\r\n this._evt_viewChange.next(eventArgs);\r\n };\r\n\r\n private _mapRouteConstructed = (eventArgs: Route) => {\r\n this._evt_routeConstructed.next(eventArgs);\r\n };\r\n\r\n private _popupOpened = (eventArgs: Popup) => {\r\n this._evt_popupOpened.next(eventArgs);\r\n };\r\n\r\n private _mapOnLoad = (eventArgs: MapEventArgs) => {\r\n this._evt_mapLoad.next(eventArgs);\r\n };\r\n\r\n private _layerOnReloaded = (eventArgs: MapEventArgs) => {\r\n this._evt_layerReloaded.next(eventArgs);\r\n };\r\n\r\n public get view(): RM2ViewData {\r\n return this.map.getView();\r\n }\r\n\r\n public set view(value: RM2ViewData) {\r\n this.map.setView(value);\r\n }\r\n\r\n private getPopupContent(ft: Feature, l: Layer): { interval: any, content: HTMLElement } {\r\n const container = document.createElement('div');\r\n let interval: any;\r\n if (l.metadata.infoWindowTitleTemplate) {\r\n const title = document.createElement('div');\r\n title.innerHTML = Mustache.render(l.metadata.infoWindowTitleTemplate, ft.properties);\r\n\r\n // close btn\r\n const closeBtn = document.createElement('div');\r\n closeBtn.className = 'ml-auto bg-red text-white rm2-popup-close d-sm-none';\r\n closeBtn.setAttribute('id', 'promet-si-popup-close-btn');\r\n const closeIcon = document.createElement('img');\r\n // closeIcon.src = 'assets/res/icons/placeholder.svg';\r\n closeIcon.style.pointerEvents = 'none';\r\n closeBtn.appendChild(closeIcon);\r\n closeBtn.onclick = () => this._map.closeAllPopups();\r\n title.children[0].appendChild(closeBtn);\r\n\r\n container.appendChild(title);\r\n }\r\n\r\n if (l.metadata.infoWindowDescriptionTemplate) {\r\n const createDescription = (template: string, view: any): HTMLDivElement => {\r\n const dscr = document.createElement('div');\r\n let tmplt = template;\r\n if (template.includes('{{dt}}')) {\r\n const dt = new Date().getTime();\r\n tmplt = template.replace(/{{dt}}/g, dt.toString());\r\n }\r\n \r\n dscr.innerHTML = Mustache.render(tmplt, view);\r\n return dscr;\r\n };\r\n\r\n let description = createDescription(l.metadata.infoWindowDescriptionTemplate, ft.properties);\r\n container.appendChild(description);\r\n\r\n const service = this._map.getService(ServiceType.Localization) as LocalizationService;\r\n if (service)\r\n service.refresh(container);\r\n else\r\n throw new Error('Please include the localization service to localize popups.');\r\n\r\n if (l.metadata.infoWindowDescriptionRefreshInterval > 0) {\r\n interval = setInterval(() => {\r\n var newDescription = createDescription(l.metadata.infoWindowDescriptionTemplate, ft.properties);\r\n container.replaceChild(newDescription, description);\r\n description = newDescription;\r\n }, l.metadata.infoWindowDescriptionRefreshInterval);\r\n }\r\n }\r\n\r\n return {\r\n interval: interval,\r\n content: container\r\n };\r\n }\r\n}\r\n\r\nexport interface ILayerSettings {\r\n layers?: ISingleLayerSettings[];\r\n}\r\n\r\nexport interface ISingleLayerSettings {\r\n sid: string;\r\n visible?: boolean;\r\n}\r\n\r\nexport interface IPopupInfo {\r\n html: HTMLElement;\r\n coord: CoordinateLike;\r\n interval?: any;\r\n}\r\n"],"names":["root","factory","exports","module","define","amd","self","moveToMapPosition","master","clones","center","getCenter","zoom","getZoom","bearing","getBearing","pitch","getPitch","forEach","clone","jumpTo","maps","argLen","arguments","length","i","push","fns","on","map","index","off","sync","bind","filter","o","ReflectOwnKeys","R","Reflect","ReflectApply","apply","target","receiver","args","Function","prototype","call","ownKeys","Object","getOwnPropertySymbols","getOwnPropertyNames","concat","NumberIsNaN","Number","isNaN","value","EventEmitter","init","this","once","emitter","name","Promise","resolve","reject","errorListener","err","removeListener","resolver","slice","eventTargetAgnosticAddListener","handler","flags","addErrorHandlerIfEventEmitter","_events","undefined","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","TypeError","_getMaxListeners","that","_addListener","type","prepend","m","events","existing","warning","create","newListener","emit","unshift","warned","w","Error","String","count","console","warn","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","_listeners","unwrap","evlistener","arr","ret","Array","unwrapListeners","arrayClone","listenerCount","n","copy","addEventListener","wrapListener","arg","removeEventListener","defineProperty","enumerable","get","set","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","error","er","message","context","len","listeners","addListener","prependListener","prependOnceListener","list","position","originalListener","shift","pop","spliceOne","removeAllListeners","key","keys","rawListeners","eventNames","Guid","guid","EMPTY","isGuid","toString","validator","test","gen","join","createEmpty","parse","raw","out","Math","random","substring","equals","other","isEmpty","toJSON","RegExp","_extends","assign","source","hasOwnProperty","defaults","tName","i18nName","handleName","selectorAttr","targetAttr","optionsAttr","useOptionsAttr","parseDefaultValueFromContent","i18next","$","options","ele","opts","attr","indexOf","parts","split","substr","html","t","extendDefault","text","append","dataAttr","translated","data","val","defaultValue","localize","targetSelector","find","each","k","trim","lng","handle","fn","syncMove","Compare","a","b","container","_mapA","_mapB","_horizontal","orientation","_onDown","_onMove","_onMouseUp","_onTouchEnd","_ev","_swiper","document","createElement","className","_controlContainer","appendChild","body","querySelectorAll","appendTarget","Element","_bounds","getContainer","getBoundingClientRect","swiperPosition","height","width","_setPosition","_clearSync","_onResize","currentPosition","mousemove","_setPointerEvents","v","style","pointerEvents","e","touches","x","min","pos","transform","WebkitTransform","clipA","clipB","clip","_getY","_getX","fire","clientX","left","y","clientY","top","setSlider","remove","aContainer","bContainer","window","mapboxgl","SRS_WGS84_SEMIMAJOR","SRS_WGS84_ESQUARED","SEC_TO_RAD","HALF_PI","PI","EPSLN","D2R","R2D","FORTPI","TWO_PI","SPI","ft","to_meter","ignoredChar","match","obj","testkey","lkey","toLowerCase","replace","defData","paramName","paramVal","paramOutname","paramObj","reduce","p","params","proj","datum","rf","parseFloat","lat_0","lat0","lat_1","lat1","lat_2","lat2","lat_ts","lon_0","long0","lon_1","long1","lon_2","long2","alpha","gamma","rectified_grid_angle","lonc","longc","x_0","x0","y_0","y0","k_0","k0","r_a","R_A","zone","parseInt","south","utmSouth","towgs84","datum_params","units","unit","from_greenwich","pm","nadgrids","datumCode","axis","legalAxis","approx","txt","Parser","output","whitespace","latin","keyword","endThings","digets","level","place","stack","currentObject","mapit","isArray","thing","newObj","item","sExpr","convert","readCharicter","char","neutral","quoted","afterquote","number","word","afterItem","newObjects","d2r","input","wkt","lisp","parser","projName","local","PROJECTION","AXIS","axisOrder","ii","UNIT","DATUM","SPHEROID","geogcs","GEOGCS","toMeter","sphere","ellps","TOWGS84","isFinite","outName","inName","rename","cleanWKT","defs","def","charAt","EPSG","ESRI","IAU2000","log","WGS84","GOOGLE","global","codeWords","codes","code","testObj","testDef","some","testWKT","auth","checkMercator","maybeProjStr","ext","checkProjStr","testProj","destination","property","eccent","sinphi","cosphi","con","sqrt","abs","sign","phi","com","pow","tan","ts","dphi","eccnth","atan","sin","identity","pt","projs","es","cos","msfnz","forward","lon","lat","adjust_lon","tsfnz","inverse","exp","phi2z","names","projStore","add","start","ellipseName","wgs84","ellipse","datumName","ch1903","ggrs87","nad83","nad27","potsdam","carthage","hermannskogel","osni52","ire65","rassadiran","nzgd49","osgb36","s_jtsk","beduaram","gunung_segara","rnb72","ep2","datum_type","grids","loadedNadgrids","parseNadgridString","optional","mandatory","grid","isNull","secondsToRadians","seconds","decodeString","view","end","fromCharCode","Uint8Array","buffer","mapNodes","nodes","r","longitudeShift","latitudeShift","readGridHeader","offset","isLittleEndian","parent","lowerLatitude","getFloat64","upperLatitude","lowerLongitude","upperLongitude","latitudeInterval","longitudeInterval","gridNodeCount","getInt32","readGridNodes","gridHeader","nodesOffset","gridShiftRecords","record","getFloat32","latitudeAccuracy","longitudeAccuracy","Projection","srsCode","callback","json","parseCode","ourProj","projections","datumDef","a2","b2","sphere_","ecc","getNadgrids","datumObj","extend","geodeticToGeocentric","Rn","Sin_Lat","Sin2_Lat","Cos_Lat","Longitude","Latitude","Height","z","Infinity","geocentricToGeodetic","P","RR","CT","ST","RX","RK","RN","CPHI0","SPHI0","CPHI","SPHI","SDPHI","iter","genau","X","Y","Z","atan2","checkParams","dest","point","compareDatums","source_a","source_es","applyGridShift","dest_a","dest_b","dest_es","Dx_BF","Dy_BF","Dz_BF","Rx_BF","Ry_BF","Rz_BF","M_BF","geocentricToWgs84","x_tmp","y_tmp","z_tmp","geocentricFromWgs84","NaN","attemptedGrids","subgrid","subgrids","epsilon","del","minX","ll","minY","maxX","lim","maxY","applySubgridShift","pin","ct","tb","nadInterpolate","dif","inx","indx","floor","frct","f00","cvs","f10","f11","f01","m11","m10","m00","m01","crs","denorm","xin","yin","zin","array","checkCoord","num","enforceAxis","toPoint","checkSanity","checkNotWGS","adjust_axis","datum_transform","transformer","from","to","coords","transformedArray","splice","checkProj","oProj","fromProj","toProj","coord","single","SET_ORIGIN_COLUMN_LETTERS","SET_ORIGIN_ROW_LETTERS","A","I","O","V","mgrs","bbox","UTMtoLL","decode","toUpperCase","bottom","right","accuracy","utm","seasting","easting","snorthing","northing","zoneNumber","zoneLetter","setParm","get100kSetForZone","setColumn","setRow","column","row","parm","colOrigin","charCodeAt","rowOrigin","colInt","rowInt","rollover","encode","eccPrimeSquared","N","T","C","M","LongOriginRad","ZoneNumber","Lat","Long","eccSquared","LatRad","degToRad","LongRad","UTMEasting","UTMNorthing","round","getLetterDesignator","LLtoUTM","deg","radToDeg","rad","N1","T1","C1","R1","D","LongOrigin","mu","phi1Rad","e1","result","topRight","LetterDesignator","mgrsString","testChar","hunK","sb","east100k","curCol","eastingValue","rewindMarker","getEastingFromChar","north100k","curRow","northingValue","getNorthingFromChar","getMinNorthing","remainder","accuracyBonus","sepEastingString","sepNorthingString","sep","sepEasting","sepNorthing","Point","fromMGRS","mgrsStr","toMGRS","C04","C06","C08","en","sphi","cphi","s","pj_mlfn","pj_enfn","ml0","delta_lon","sin_phi","cos_phi","al","als","c","cs","tq","ml","acos","pj_inv_mlfn","tan_phi","d","ds","f","g","temp","h","asin","max","log1py","hypot","pp","B","cos_2B","h1","h2","arg_r","arg_i","hr2","hi2","sin_arg_r","cos_arg_r","sinh_arg_i","sinh","cosh_arg_i","cosh","j","hr","hi1","hr1","hi","tmerc","cgb","cbg","utg","gtu","np","Qn","gatg","Zb","clens","Ce","Cn","sin_Cn","cos_Cn","sin_Ce","cos_Ce","asinhy","tmp","clens_cmplx","adjust_zone","etmerc","dependsOn","esinp","rc","phic0","ratexp","K","srat","gauss","sinc0","cosc0","R2","title","sinc","cosc","cosl","rho","coslat0","sinlat0","cons","ms1","X0","ssfn_","cosX0","sinX0","sinX","cosX","rh","sinlat","coslat","dlon","ce","Chi","phit","eccen","phy0","lambda0","sinPhy0","semiMajorAxis","flattening","e2","b0","k1","k2","k3","Sa1","Sa2","S","rotI","rotB","lambda","phy","prevPhy","iteration","TOL","cosph0","F","H","L","sinph0","J","gamma0","projectionName","lamc","lam1","lam2","phi1","phi2","alpha_c","no_off","no_rot","alp","gam","one_es","E","lam0","pi","singam","cosgam","sinrot","cosrot","rB","ArB","BrA","u_0","v_pole_n","v_pole_s","U","W","u","Qp","Sp","Tp","Vp","Up","sin1","cos1","ts1","sin2","cos2","ms2","ts2","ts0","ns","f0","rh1","theta","s45","s90","fi0","alfa","uq","u0","n0","s0","ro0","ad","gfi","deltav","eps","ro","czech","fi1","ok","e0","e3","e0fn","e1fn","e2fn","e3fn","mlfn","lam","nl","gN","tl","asq","cl","dd","imlfn","nl1","rl1","tl1","dl","dsq","adjust_lat","P00","P01","P02","P10","P11","P20","mode","S_POLE","N_POLE","EQUIT","OBLIQ","qp","qsfnz","mmf","apa","APA","authset","rq","xmf","ymf","sinb1","cosb1","coslam","sinlam","q","sinb","cosb","cCe","sCe","ab","beta","cosz","sinz","sin_po","cos_po","t1","qs1","t2","qs2","t3","qs0","ns0","qs","phi1z","asinz","eccnts","sin_p14","cos_p14","infinity_dist","coslon","iqsfnz","dlat","el","bl","tanphi","mln","mlnp","ma","B_re","B_im","C_re","C_im","delta_lat","d_phi","d_lambda","d_phi_n","d_psi","th_n_im1","th_re","th_im","th_n_re","th_n_im","z_re","z_im","z_n_im1","delta_x","z_n_re","z_n_im","iterations","num_re","num_im","den_re","den_im","den2","d_psi_n","C_y","C_x","delta_theta","ml1","ml2","sinth","costh","gsq","msq","xx","yy","xys","c1","c2","c3","a1","m1","th1","sin_p12","cos_p12","Mlp","Ml","Nl1","Nl","psi","Az","G","GH","Hs","kp","cos_c","s2","s3","s4","cosAz","Ee","sinpsi","FACE_ENUM","AREA_ENUM","qsc_fwd_equat_face_theta","area","qsc_shift_lon_origin","slon","face","one_minus_f","one_minus_f_squared","xy","sinlon","nu","cosmu","tannu","tantheta","invert_sign","xa","lp","COEFS_X","COEFS_Y","FXC","FYC","NODES","poly3_val","coefs","f_df","max_err","iters","upd","newton_rapshon","poly3_der","azi","degrees","tilt","pn1","rp","pfact","omega","cg","sg","cw","sw","yt","ba","bm","bq","flip_axis","sweep","radius_g_1","radius_g","rone_es","radius_p","radius_p2","radius_p_inv2","shape","v_x","v_y","v_z","det","v_zp","Proj","DataView","nFields","detectLittleEndian","header","nSubgridFields","nSubgrids","shiftType","fromSemiMajorAxis","fromSemiMinorAxis","toSemiMajorAxis","toSemiMinorAxis","readHeader","gridOffset","subHeader","lngColumnCount","latColumnCount","readSubgrids","nadgrid","proj4","sterea","stere","somerc","omerc","lcc","krovak","cass","laea","aea","gnom","cea","eqc","poly","nzmg","mill","sinu","moll","eqdc","vandg","aeqd","ortho","qsc","robin","geocent","tpers","geos","l","_maxEntries","_minEntries","ceil","clear","children","leaf","all","_all","search","toBBox","collides","load","insert","_build","_splitRoot","_insert","_condense","compareMinX","compareMinY","fromJSON","_chooseSubtree","_split","_adjustParentBBoxes","_chooseSplitAxis","_chooseSplitIndex","_allDistMargin","sort","traverseCoords","coordinates","traverseGeoJson","geometryCb","nodeCb","geojson","constructor","geometry","features","geometries","detectCrs","crsInfo","properties","JSON","stringify","determineCrs","reproject","transformFunc","transformed","gj","MAX_VALUE","_gj","calcBbox","reverse","toWgs84","numberRegexp","coordFormat","geoJSON","pairWKT","ringWKT","ringsWKT","wrapParens","multiRingsWKT","gJ","_","srid","re","white","multicoords","elem","depth","rings","pointer","linestring","polygon","newCoordsFormat","multipoint","multilinestring","multipolygon","geometrycollection","shared","worker","maplibregl","chunk","workerBundleString","sharedChunk","workerUrl","URL","createObjectURL","Blob","cx","bx","ax","cy","by","ay","p1x","p1y","p2x","p2y","solve","sampleCurveX","sampleCurveY","sampleCurveDerivativeX","solveCurveX","WorkerGlobalScope","navigator","userAgent","safari","ImageBitmap","now","performance","Date","frame","requestAnimationFrame","cancel","cancelAnimationFrame","getImageData","getContext","drawImage","resolveURL","href","hardwareConcurrency","prefersReducedMotion","matchMedia","matches","_add","sub","_sub","multByPoint","_multByPoint","divByPoint","_divByPoint","mult","_mult","div","_div","rotate","_rotate","rotateAround","_rotateAround","matMult","_matMult","_unit","perp","_perp","_round","mag","dist","distSqr","angle","angleTo","angleWith","angleWithSep","MAX_PARALLEL_IMAGE_REQUESTS","REGISTERED_PROTOCOLS","caches","open","supported","testSupport","createTexture","bindTexture","TEXTURE_2D","texImage2D","RGBA","UNSIGNED_BYTE","isContextLost","deleteTexture","onload","onerror","src","Unknown","Style","Source","Tile","Glyphs","SpriteImage","SpriteJSON","Image","freeze","super","status","statusText","url","referrer","location","protocol","AbortController","Request","method","credentials","headers","signal","fetch","then","arrayBuffer","Headers","toUTCString","getTime","Response","ReadableStream","blob","put","catch","abort","actor","send","XMLHttpRequest","responseType","setRequestHeader","withCredentials","response","getResponseHeader","host","accept","requestParameters","cancelled","createImageBitmap","revokeObjectURL","byteLength","cacheControl","expires","Q","tt","et","rt","_oneTimeListeners","listens","_eventedParent","_eventedParentData","setEventedParent","nt","$version","$root","version","required","values","metadata","default","period","light","sources","sprite","glyphs","transition","layers","source_vector","vector","tiles","bounds","scheme","xyz","tms","minzoom","maxzoom","attribution","promoteId","volatile","source_raster","raster","tileSize","source_raster_dem","encoding","terrarium","mapbox","source_geojson","maximum","minimum","tolerance","cluster","clusterRadius","clusterMaxZoom","clusterMinPoints","clusterProperties","lineMetrics","generateId","source_video","video","urls","source_image","image","layer","id","fill","line","symbol","circle","heatmap","hillshade","background","layout","paint","layout_background","visibility","visible","none","layout_fill","expression","interpolated","parameters","layout_circle","layout_heatmap","layout_line","butt","square","bevel","miter","requires","layout_symbol","auto","never","always","cooperative","viewport","both","tokens","horizontal","vertical","uppercase","lowercase","layout_raster","layout_hillshade","filter_operator","in","any","has","within","geometry_type","LineString","Polygon","function","stops","base","exponential","interval","categorical","colorSpace","rgb","lab","hcl","function_stop","anchor","color","intensity","paint_fill","paint_line","paint_circle","paint_heatmap","paint_symbol","overridable","paint_raster","linear","nearest","paint_hillshade","paint_background","duration","delay","constant","it","identifier","__line__","st","at","ot","Boolean","valueOf","lt","ut","bindings","ht","kind","dt","mt","gt","xt","vt","bt","wt","itemType","_t","At","kt","St","zt","It","Mt","transparent","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellow","yellowgreen","Bt","Ct","Pt","Vt","parseCSSColor","Et","static","toArray","Ft","sensitivity","locale","collator","Intl","Collator","usage","compare","resolvedLocale","resolvedOptions","Tt","scale","fontStack","textColor","Lt","sections","fromString","serialize","Dt","available","$t","Rt","Ut","Ot","qt","expectedType","evaluate","eachChild","outputDefined","jt","Nt","string","boolean","object","Kt","every","Zt","font","content","Gt","availableImages","Jt","Xt","parseColor","Yt","Ht","globals","feature","featureState","formattedSection","_parseColorCache","canonical","geometryType","canonicalID","Wt","_evaluate","definitions","overloads","we","registry","path","scope","checkSubtype","errors","Qt","caseSensitive","diacriticSensitive","te","ee","ne","ie","se","ae","oe","le","ue","he","pe","fe","de","ye","me","ge","xe","ve","be","boundExpression","_parse","typeAnnotation","_e","Ae","ke","labels","outputs","Se","ze","__proto__","Ie","Me","Be","Pe","Ve","Fe","Te","Le","De","$e","Re","Ue","Oe","interpolate","qe","je","Ne","operator","interpolation","Ke","controlPoints","interpolationFactor","Ze","Ge","Je","Xe","needle","haystack","Ye","fromIndex","He","inputType","cases","otherwise","MAX_SAFE_INTEGER","We","branches","Qe","beginIndex","endIndex","tr","rr","lhs","rhs","hasUntypedArgument","nr","ir","sr","ar","or","lr","ur","currency","minFractionDigits","maxFractionDigits","NumberFormat","minimumFractionDigits","maximumFractionDigits","format","cr","case","coalesce","let","literal","step","var","pr","fr","dr","yr","mr","gr","xr","vr","br","wr","_r","Ar","kr","Mr","Ir","zr","Br","interpolationType","zoomStops","Sr","register","typeof","rgba","heatmapDensity","lineProgress","accumulated","ln2","LN2","log10","LN10","ln","log2","isSupportedScript","upcase","downcase","Cr","_warningHistory","_evaluator","_defaultValue","_enumValues","evaluateWithoutErrorHandling","Pr","Vr","enum","formatted","resolvedImage","Er","_styleExpression","isStateDependent","Fr","Tr","Dr","Lr","_parameters","_specification","$r","valueSpec","objectElementValidators","styleSpec","pn","objectKey","Rr","arrayElementValidator","arrayIndex","Ur","Or","qr","expressionContext","propertyKey","propertyType","jr","Nr","Kr","Zr","needGeometry","Xr","Jr","Gr","Yr","Qr","Hr","Wr","tn","rn","layerType","exec","nn","sn","an","ref","un","cn","hn","constants","dn","yn","mn","paintProperty","layoutProperty","gn","xn","vn","bn","wn","_n","cells","ArrayBuffer","Int32Array","subarray","bboxes","_insertReadonly","extent","padding","uid","_forEachCell","_insertCell","query","_queryCell","_convertToCellCoord","_convertFromCellCoord","toArrayBuffer","An","kn","writeable","klass","omit","shallow","_classRegistryKey","Sn","zn","isView","ImageData","$name","In","deserialize","Mn","first","update","lastIntegerZoom","lastIntegerZoomTime","lastZoom","lastFloorZoom","Bn","Arabic","Khmer","Hiragana","Katakana","Bopomofo","Kanbun","En","Pn","Vn","Fn","Tn","Ln","Dn","$n","Un","On","qn","jn","Nn","Kn","Zn","pluginStatus","pluginURL","Gn","Jn","Xn","applyArabicShaping","processBidirectionalText","processStyledBidirectionalText","isLoaded","isLoading","setState","isParsed","getPluginURL","Yn","fadeDuration","zoomHistory","crossFadingFactor","getCrossfadeParameters","fromScale","toScale","Hn","specification","isDataDriven","possiblyEvaluate","Wn","transitioned","ti","untransitioned","_properties","_values","defaultTransitionablePropertyValues","getValue","setValue","getTransition","setTransition","ei","begin","prior","defaultTransitioningPropertyValues","hasTransition","ri","defaultPropertyValues","ni","isConstant","constantOr","defaultPossiblyEvaluatedValues","si","ai","overrides","oi","_calculate","li","ui","ci","overridableProperties","_featureFilter","sourceLayer","_unevaluatedLayout","_transitionablePaint","setPaintProperty","validate","setLayoutProperty","_transitioningPaint","_crossfadeParameters","getLayoutProperty","_validate","getPaintProperty","endsWith","_handleSpecialPaintPropertyUpdate","_handleOverridablePaintPropertyUpdate","isHidden","updateTransitions","recalculate","is3D","isTileClipped","hasOffscreenPass","resize","fi","Int8","Int8Array","Uint8","Int16","Int16Array","Uint16","Uint16Array","Int32","Uint32","Uint32Array","Float32","Float32Array","di","_structArray","_pos1","size","_pos2","_pos4","_pos8","yi","isTransferred","capacity","_trim","bytesPerElement","_refreshViews","reserve","uint8","mi","members","BYTES_PER_ELEMENT","gi","components","alignment","xi","int16","emplaceBack","emplace","vi","bi","wi","_i","float32","Ai","uint16","ki","Si","zi","uint32","Ii","Mi","Bi","Ci","Pi","Vi","Ei","Fi","Ti","Li","Di","$i","Ri","Ui","anchorPointX","anchorPointY","x1","y1","x2","y2","featureIndex","sourceLayerIndex","bucketIndex","anchorPoint","Oi","qi","anchorX","anchorY","glyphStartIndex","numGlyphs","vertexStartIndex","lineStartIndex","lineLength","segment","lowerSize","upperSize","lineOffsetX","lineOffsetY","writingMode","placedOrientation","hidden","crossTileID","associatedIconIndex","ji","Ni","rightJustifiedTextSymbolIndex","centerJustifiedTextSymbolIndex","leftJustifiedTextSymbolIndex","verticalPlacedTextSymbolIndex","placedIconSymbolIndex","verticalPlacedIconSymbolIndex","textBoxStartIndex","textBoxEndIndex","verticalTextBoxStartIndex","verticalTextBoxEndIndex","iconBoxStartIndex","iconBoxEndIndex","verticalIconBoxStartIndex","verticalIconBoxEndIndex","numHorizontalGlyphVertices","numVerticalGlyphVertices","numIconVertices","numVerticalIconVertices","useRuntimeCollisionCircles","textBoxScale","textOffset0","textOffset1","collisionCircleDiameter","Ki","Zi","getoffsetX","Gi","getx","gety","gettileUnitDistanceFromAnchor","Ji","Xi","Yi","Hi","Wi","Qi","rs","is","ss","as","os","ls","us","hs","segments","prepareSegment","MAX_VERTEX_ARRAY_LENGTH","vertexLength","sortKey","vertexOffset","primitiveOffset","primitiveLength","destroy","vaos","ps","fs","ys","ms","gs","xs","murmur3","murmur2","vs","bs","ids","positions","indexed","ws","getPositions","Float64Array","_s","As","ks","gl","Ss","current","uniform1f","zs","uniform4f","Is","Ms","Bs","Cs","uniformNames","setUniform","getBinding","Ps","patternFrom","patternTo","pixelRatioFrom","pixelRatioTo","setConstantPatternPositions","pixelRatio","tlbr","Vs","maxValue","paintVertexAttributes","paintVertexArray","populatePaintArray","_setPaintValue","updatePaintArray","upload","paintVertexBuffer","updateData","createVertexBuffer","Es","useIntegerZoom","Fs","layerId","zoomInPaintVertexArray","zoomOutPaintVertexArray","_setPaintValues","patterns","mid","zoomInPaintVertexBuffer","zoomOutPaintVertexBuffer","Ts","binders","_buffers","Ds","$s","cacheKey","getMaxValue","populatePaintArrays","updatePaintArrays","defines","getBinderAttributes","getBinderUniforms","getPaintVertexBuffers","getUniforms","binding","setUniforms","updatePaintBuffers","Ls","programConfigurations","needsUpload","_featureMap","_bufferOffset","composite","Rs","Us","Os","loadGeometry","js","Ns","Ks","overscaling","layerIds","hasPattern","layoutVertexArray","indexArray","stateDependentLayerIds","populate","addFeature","stateDependentLayers","uploadPending","uploaded","layoutVertexBuffer","indexBuffer","createIndexBuffer","Zs","ea","Ys","Gs","Ws","Js","ta","Xs","Qs","ra","na","ia","sa","aa","oa","la","ua","ca","ha","pa","fa","da","ya","ga","Uint8ClampedArray","va","wa","_a","resolution","clips","evaluationKey","Aa","ka","Sa","za","Ia","Ma","next","prev","steiner","Ra","Ta","Ba","La","Ca","Wa","Xa","ja","Ya","qa","$a","prevZ","nextZ","Va","Pa","Ea","Fa","Ua","Na","Ga","Oa","Ja","Da","Za","Ka","Ha","deviation","flatten","vertices","holes","dimensions","Qa","eo","no","io","so","ao","patternDependencies","oo","lo","patternFeatures","indexArray2","segments2","addFeatures","indexBuffer2","uo","co","ho","po","fo","yo","mo","go","_pbf","_geometry","_keys","readFields","xo","readVarint","vo","types","readSVarint","toGeoJSON","bo","wo","_o","_features","Ao","readString","readFloat","readDouble","readVarint64","readBoolean","ko","So","VectorTile","VectorTileFeature","VectorTileLayer","zo","Io","Mo","Bo","Po","Co","Vo","Eo","Fo","To","Lo","Do","$o","Ro","Uo","Oo","qo","lineClipsArray","gradients","layoutVertexArray2","maxLineLength","layoutVertexBuffer2","lineFeatureClips","mapbox_clip_start","mapbox_clip_end","lineClips","addLine","distance","scaledDistance","totalDistance","updateScaledDistance","updateDistance","addCurrentVertex","addHalfVertex","jo","No","Ko","Zo","Go","Jo","Xo","Yo","Ho","Wo","toLocaleUpperCase","toLocaleLowerCase","Qo","il","rl","buf","Varint","Fixed64","Bytes","Fixed32","sl","ol","TextDecoder","ul","hl","realloc","pl","writeVarint","fl","writeSVarint","writeFloat","yl","writeDouble","writeBoolean","writeFixed32","xl","writeSFixed32","vl","writeFixed64","writeSFixed64","wl","_l","Al","kl","readMessage","Sl","bitmap","advance","zl","metrics","readBytes","Il","skip","readFixed32","readSFixed32","readFixed64","readSFixed64","readPackedVarint","readPackedSVarint","readPackedBoolean","readPackedFloat","readPackedDouble","readPackedFixed32","readPackedSFixed32","readPackedFixed64","readPackedSFixed64","writeTag","finish","writeString","writeBytes","writeRawMessage","writeMessage","writePackedVarint","writePackedSVarint","writePackedBoolean","writePackedFloat","writePackedDouble","writePackedFixed32","writePackedSFixed32","writePackedFixed64","writePackedSFixed64","writeBytesField","writeFixed32Field","writeSFixed32Field","writeFixed64Field","writeSFixed64Field","writeVarintField","writeSVarintField","writeStringField","writeFloatField","writeDoubleField","writeBooleanField","stretchX","stretchY","paddedRect","displaySize","Bl","haveRenderCallbacks","addImages","iconPositions","patternPositions","hasRenderCallback","patchUpdatedImages","dispatchRenderCallbacks","updatedImages","patchUpdatedImage","getImage","WritingMode","horizontalOnly","Cl","Pl","imageName","Vl","sectionIndex","imageSectionID","addImageSection","addTextSection","getSection","getSectionIndex","getCharCode","verticalizePunctuation","Fl","getMaxScale","forText","getNextImageSectionCharCode","forImage","El","fromFeature","Ol","positionedLines","iconsInText","verticalizable","positionedGlyphs","lineOffset","rect","glyph","jl","horizontalAlign","verticalAlign","ql","Tl","Ll","Dl","$l","Rl","badness","priorBreak","Ul","Kl","collisionPadding","Zl","Gl","layoutSize","minZoom","maxZoom","minSize","maxSize","Jl","Xl","angleDelta","Yl","Hl","Wl","Ql","tu","eu","ru","iu","au","stretch","ou","fixed","tex","glyphOffset","pixelOffsetTL","pixelOffsetBR","minFontScaleX","minFontScaleY","isSDF","su","lu","boxStartIndex","circleDiameter","boxEndIndex","uu","cu","_down","_up","peek","hu","pu","fu","SQRT2","du","POSITIVE_INFINITY","yu","gu","textMaxSize","bu","tilePixelRatio","allowVerticalPlacement","addToLineVertexArray","iconSizeData","xu","compositeIconSizes","addSymbols","icon","placedSymbolArray","vu","collisionBoxArray","glyphOffsetArray","Bu","MAX_GLYPHS","addToSortKeyRanges","symbolInstances","wu","sdf","textSizeData","compositeTextSizes","compareText","_u","Au","ku","Su","zu","Iu","dynamicLayoutVertexArray","opacityVertexArray","dynamicLayoutVertexBuffer","opacityVertexBuffer","itemSize","Mu","layoutAttributes","collisionVertexArray","collisionVertexBuffer","hasRTLText","sortKeyRanges","collisionCircleArray","placementInvProjMatrix","placementViewportMatrix","canOverlap","Fu","sortFeaturesByKey","sortFeaturesByY","writingModes","sourceID","createArrays","lineVertexArray","calculateGlyphDependencies","iconDependencies","glyphDependencies","getValueAndResolveTokens","hasDebugData","textCollisionBox","iconCollisionBox","destroyDebugData","tileUnitDistanceFromAnchor","_addCollisionDebugVertex","addCollisionDebugVertices","addDebugCollisionBoxes","generateCollisionDebugBuffers","_deserializeCollisionBoxesForSymbol","textBox","textFeatureIndex","verticalTextBox","verticalTextFeatureIndex","iconBox","iconFeatureIndex","verticalIconBox","verticalIconFeatureIndex","deserializeCollisionBoxes","collisionArrays","hasTextData","hasIconData","hasTextCollisionBoxData","hasIconCollisionBoxData","addIndicesForPlacedSymbol","getSortedSymbolIndexes","sortedAngle","symbolInstanceIndexes","symbolInstanceEnd","symbolInstanceStart","sortFeatures","featureSortOrder","addDynamicAttributes","Cu","Pu","runtimeType","getOverride","hasOverride","Vu","Eu","_setPaintOverrides","createBucket","queryRadius","queryIntersectsFeature","hasPaintOverride","_interpolationType","Tu","Lu","Du","onAdd","implementation","painter","onRemove","renderingMode","prerender","$u","cameraToCenterDistance","_updateColorRamp","colorRamp","colorRampTexture","heatmapFbo","gradientVersion","stepInterpolant","gradientExpression","Ru","_callback","_triggered","MessageChannel","_channel","port2","onmessage","trigger","port1","postMessage","setTimeout","Uu","Ou","wrap","distanceTo","toBounds","qu","setSouthWest","setNorthEast","_ne","_sw","getSouthWest","getNorthEast","getNorthWest","getWest","getNorth","getSouthEast","getEast","getSouth","contains","ju","Nu","Ku","Zu","Gu","Ju","Xu","toLngLat","toAltitude","meterInMercatorCoordinateUnits","Yu","Hu","tc","getTilePoint","Wu","Qu","overscaledZ","scaledTo","calculateScaledKey","isChildOf","isLessThan","unwrapTo","overscaleFactor","toUnwrapped","ec","stride","dim","_idx","_unpackTerrarium","_unpackMapbox","getUnpackVector","getPixels","backfillBorder","_stringToNumber","_numberToString","nc","_vectorTileFeature","_z","_x","_y","ic","tileID","grid3D","featureIndexArray","loadVTLayers","vtLayers","rawTileData","sourceLayerCoder","queryGeometry","queryPadding","ac","cameraQueryGeometry","oc","loadMatchingFeature","pixelPosMatrix","bucketLayerIDs","getId","getState","sc","intersectionZ","lookupSymbolFeatures","hasLayer","lc","PerformanceMarkers","fullLoad","uc","cc","hc","pc","mark","clearMetrics","clearMeasures","clearMarks","getPerformanceMetrics","measure","getEntriesByName","loadTime","fullLoadTime","fps","percentDroppedFrames","AJAXError","ARRAY_TYPE","Actor","mapId","callbacks","tasks","taskQueue","cancelCallbacks","invoker","process","receive","globalScope","hasCallback","targetMapId","mustQueue","sourceMapId","processTask","getWorkerSource","AlphaImage","CanonicalTileID","CollisionBoxArray","CollisionCircleLayoutArray","Color","DEMData","DataConstantProperty","DictionaryCoder","EXTENT","ErrorEvent","EvaluationParameters","Event","Evented","FeatureIndex","FillBucket","FillExtrusionBucket","GeoJSONFeature","ImageAtlas","ImagePosition","LineBucket","LineStripIndexArray","LngLat","LngLatBounds","MercatorCoordinate","ONE_EM","OverscaledTileID","PerformanceUtils","PosArray","Properties","QuadTriangleArray","RGBAImage","RasterBoundsArray","RequestPerformance","_marks","ResourceType","SegmentVector","SymbolBucket","Transitionable","TriangleIndexArray","Uniform1f","Uniform1i","uniform1i","Uniform2f","uniform2f","Uniform3f","uniform3f","Uniform4f","UniformColor","UniformMatrix4f","uniformMatrix4fv","UnwrappedTileID","ValidationError","ZoomHistory","asyncAll","bezier","bindAll","cacheEntryPossiblyAdded","getActor","clamp","clearTileCache","delete","clipLine","clone$1","collisionCircleLayout","config","createExpression","createFilter","createLayout","createStyleLayer","dot","ease","emitValidationErrors","enforceCacheSizeLimit","evaluateSizeForFeature","uSize","uSizeT","evaluateSizeForZoom","evaluateVariableOffset","evented","exported","exported$1","filterObject","getAnchorAlignment","getAnchorJustification","getArrayBuffer","getJSON","getOverlapMode","getRTLTextPluginStatus","getReferrer","getVideo","muted","onloadstart","crossOrigin","invert","isImageBitmap","isSafari","keysDifference","lazyLoadRTLTextPlugin","makeRequest","mapObject","mercatorXfromLng","mercatorYfromLat","mercatorZfromAltitude","mul","multiply","nextPowerOfTwo","parseCacheControl","parseGlyphPBF","pbf","performSymbolLayout","iconsNeedLinear","layoutIconSize","layoutTextSize","sdfIcons","perspective","pick","plugin","pointGeometry","polygonIntersectsPolygon","potpack","refProperties","registerForPluginStateChange","renderColorRamp","rotateX","rotateZ","scale$1","setCacheLimits","setRTLTextPlugin","spec","sphericalToCartesian","toEvaluationFeature","transformMat4","translate","triggerPluginCompletionEvent","unicodeBlockLookup","uniqueId","validateCustomStyleLayer","render","validateLight","validateStyle","vectorTile","warnOnce","keyCache","_layerConfigs","_layers","familiesBySource","showCollisionBoxes","collectResourceTiming","returnDependencies","stacks","icons","buckets","glyphAtlasImage","imageAtlas","glyphMap","iconMap","glyphPositions","request","rawData","layerIndex","loadVectorData","loading","loaded","loadTile","resourceTiming","reloadTile","reloadCallback","abortTile","removeTile","rawImageData","offscreenCanvas","offscreenCanvasContext","OffscreenCanvas","clearRect","_feature","tags","_geojsonTileLayer","rawGeometry","keycache","valuecache","fromVectorTileJs","fromGeojsonVt","GeoJSONWrapper","nodeSize","points","range","minPoints","radius","fround","trees","time","timeEnd","_cluster","getClusters","_limitZoom","numPoints","getChildren","_getOriginId","_getOriginZoom","parentId","getLeaves","_appendLeaves","getTile","_addTileFeatures","getClusterExpansionZoom","cluster_id","point_count","_map","point_count_abbreviated","numSimplified","numFeatures","debug","tileCoords","indexMaxZoom","indexMaxPoints","stats","total","splitTile","_geoJSONIndex","byteOffset","loadGeoJSON","loadData","_pendingCallback","abandoned","_pendingLoadDataParams","_state","_loadData","superclusterOptions","geojsonVtOptions","removeSource","clusterId","getClusterChildren","getClusterLeaves","limit","layerIndexes","workerSourceTypes","workerSources","demWorkerSources","registerWorkerSource","registerRTLTextPlugin","setReferrer","setImages","setLayers","getLayerIndex","updateLayers","removedIds","loadDEMTile","getDEMWorkerSource","removeDEMTile","loadWorkerSource","importScripts","syncRTLPluginState","getAvailableImages","lastIndexOf","reduceRight","isSealed","isFrozen","isExtensible","getOwnPropertyDescriptor","defineProperties","seal","preventExtensions","Worker","terminate","failIfMajorPerformanceCaveat","webGLContextAttributes","createShader","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","documentMode","antialias","stencil","docStyle","createElementNS","selectProp","userSelect","transformProp","capture","preventDefault","stopPropagation","suppressClickInternal","clientLeft","clientTop","button","parentNode","removeChild","documentElement","testProp","_transformRequestFn","transformRequest","normalizeSpriteURL","authority","setTransformRequest","texture","useMipmap","pixelStoreUnpackFlipY","pixelStoreUnpack","pixelStoreUnpackPremultiplyAlpha","premultiply","HTMLImageElement","HTMLCanvasElement","HTMLVideoElement","texSubImage2D","isSizePowerOfTwo","generateMipmap","LINEAR_MIPMAP_NEAREST","LINEAR","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","userImage","images","callbackDispatchedThisFrame","requestors","atlasImage","dirty","setLoaded","_notify","addImage","_validateStretch","_validateContent","updateImage","removeImage","listImages","getImages","getPixelSize","getPattern","bin","_updatePatternAtlas","atlasTexture","CLAMP_TO_EDGE","beginFrame","requestManager","localIdeographFontFamily","entries","setURL","getGlyphs","requests","ranges","_tinySDF","loadGlyphRange","_doesCharSupportLocalGlyph","tinySDF","TinySDF","fontSize","cutoff","fontFamily","fontWeight","draw","glyphWidth","glyphHeight","glyphLeft","glyphTop","glyphAdvance","fontStyle","_createCanvas","ctx","willReadFrequently","textBaseline","textAlign","fillStyle","gridOuter","gridInner","actualBoundingBoxAscent","actualBoundingBoxDescent","actualBoundingBoxLeft","actualBoundingBoxRight","measureText","fillText","_transitionable","setLight","_transitioning","getLight","nextRow","dashEntry","getDash","addDash","getDashRanges","isDash","zeroLength","addRoundDash","addRegularDash","ALPHA","REPEAT","workerPool","actors","currentActor","acquire","broadcast","release","vector_layers","vectorLayers","vectorLayerIds","validateBounds","dispatcher","reparseOverscaled","_loaded","_options","_collectResourceTiming","dataType","_tileJSONRequest","_requestManager","sourceCaches","clearTiles","tileBounds","sourceDataType","hasTile","setSourceProperty","setTiles","setUrl","getPixelRatio","aborted","_refreshExpiredTiles","setExpiryData","unloadTile","unloadVectorData","roundZoom","getTileTexture","extTextureFilterAnisotropic","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","extTextureFilterAnisotropicMax","saveTileTexture","dem","needsHillshadePrepare","neighboringTiles","_getNeighboringTiles","backfilled","demTexture","fbo","_removed","_pendingLoads","_data","workerOptions","_updateWorkerData","setData","_finishLoading","setCoordinates","fromLngLat","_boundsArray","boundsBuffer","prepare","boundsSegments","simpleSegment","loop","triggerRepaint","play","pause","seek","seekable","currentTime","readyState","paused","animate","canvas","getElementById","_hasInvalidDimensions","_playing","getCanvas","calculatePosMatrix","maxPitchScaleFactor","tilesIn","wrappedTileID","queryResults","tile","queryRenderedFeatures","getFeatureState","uses","expirationTime","hasSymbolBuckets","dependencies","expiredRequestCount","registerFadeDuration","timeAdded","fadeEndTime","wasRequested","hasData","latestFeatureIndex","latestRawTileData","getLayer","justReloaded","imageAtlasTexture","glyphAtlasTexture","getBucket","querySourceFeatures","patternsLoaded","getExpiryTimeout","setFeatureState","holdingForFade","symbolFadeHoldUntil","symbolFadeFinished","clearFadeHold","setHoldDuration","setDependencies","hasDependency","reset","timeout","clearTimeout","order","_getAndRemoveByKey","getAndRemove","getByKey","setMaxSize","stateChanges","deletedStates","updateState","removeFeatureState","initializeTileState","coalesceChanges","_sourceLoaded","_paused","reload","_sourceErrored","_source","_tiles","_cache","_unloadTile","_timers","_cacheTimers","_maxTileCacheSize","_loadedParentTiles","_coveredTiles","getSource","resume","_shouldReloadOnResume","_loadTile","_abortTile","imageManager","getIds","getRenderableIds","_isIdRenderable","hasRenderableParent","findLoadedParent","_reloadTile","_tileLoaded","refreshedUponExpiration","_setTileReloadTimer","_backfillDEM","getTileByID","_retainLoadedChildren","_getLoadedTile","updateCacheSize","handleWrapJump","_prevLng","used","getVisibleUnwrappedCoordinates","coveringTiles","coveringZoomLevel","maxOverzooming","maxUnderzooming","_updateRetainedTiles","_addTile","_fadeDuration","_removeTile","_updateLoadedParentTileCache","releaseSymbolFadeTiles","getCameraQueryGeometry","pointCoordinate","getVisibleCoordinates","posMatrix","reloadTilesForDependencies","active","workers","workerCount","numActive","isPreloaded","setStyle","addLayer","removeLayer","setFilter","addSource","setGeoJSONSourceData","setLayerZoomRange","setLayerProperty","setCenter","setZoom","setBearing","setPitch","setSprite","setGlyphs","command","_distances","paddedLength","lerp","boxCells","circleCells","xCellCount","yCellCount","circleKeys","boxKeys","circles","xScale","yScale","boxUid","circleUid","keysLength","_insertBoxCell","insertCircle","_insertCircleCell","_query","hitTest","overlapMode","seenUids","box","hitTestCircle","_queryCellCircle","_circleAndRectCollide","_circlesCollide","_convertToXCellCoord","_convertToYCellCoord","labelPlaneMatrix","glCoordMatrix","signedDistanceFromCamera","useVertical","notEnoughRoom","needsFlipping","last","ignoredGrid","pitchfactor","_pitch","screenRightBoundary","screenBottomBoundary","gridRightBoundary","gridBottomBoundary","placeCollisionBox","projectAndGetPerspectiveRatio","perspectiveRatio","isInsideGrid","offscreen","isOffscreen","placeCollisionCircles","collisionDetected","queryRenderedSymbols","bucketInstanceId","insertCollisionBox","collisionGroupID","insertCollisionCircles","getViewportMatrix","opacity","placed","skipFade","invProjMatrix","viewportMatrix","crossSourceCollisions","maxGroupID","collisionGroups","ID","predicate","collisionIndex","placements","opacities","variableOffsets","stale","commitTime","retainedQueryData","collisionCircleArrays","prevPlacement","placedOrientations","getBucketParts","bucket","textLabelPlaneMatrix","labelToScreenMatrix","textPixelRatio","partiallyEvaluatedTextSize","collisionGroup","attemptAnchorPlacement","textOffset","prevAnchor","markUsedJustification","markUsedOrientation","placedGlyphBoxes","placeLayerBucketPart","commit","zoomAtLastRecencyCheck","prevZoomAdjustment","zoomAdjustment","symbolFadeChange","lastPlacementChangeTime","updateLayerOpacities","updateBucketOpacities","hasTransitions","stillRecent","setStale","_sortAcrossTiles","_currentTileIndex","_currentPartIndex","_seenCrossTileIDs","_bucketParts","continuePlacement","placement","_currentPlacementIndex","_forceFullPlacement","_showCollisionBoxes","_done","isDone","_inProgressLayer","indexedSymbolInstances","getScaledCoordinates","findMatches","maxCrossTileID","generate","indexes","usedCrossTileIDs","addBucket","removeBucketCrossTileIDs","removeStaleBuckets","crossTileIDs","maxBucketInstanceId","bucketsInCurrentPlacement","pruneUnusedLayers","glyphManager","lineAtlas","crossTileSymbolIndex","_serializedLayers","_order","_availableImages","_resetUpdates","_rtlTextPluginCallback","sourceId","_validateLayer","loadURL","_request","_load","loadJSON","loadEmpty","stylesheet","_loadSprite","_serializeLayers","_spriteRequest","_updatedSources","_checkLoaded","_changed","_updatedLayers","_removedLayers","_updateWorkerLayers","_reloadSource","_clearSource","_updateTilesForChangedImages","_updatedPaintProps","_changedImages","_afterImageUpdated","isSourceLoaded","_layerOrderChanged","_updateLayer","moveLayer","getFilter","_flattenAndSortRenderedFeatures","addSourceType","getSourceType","setSourceType","workerSourceURL","_remove","_updateSources","_generateCollisionBoxes","_updatePlacement","pauseablePlacement","_releaseSymbolFadeTiles","getResource","prelude","backgroundPattern","clippingMask","heatmapTexture","collisionBox","collisionCircle","fillOutline","fillOutlinePattern","fillPattern","fillExtrusion","fillExtrusionPattern","hillshadePrepare","lineGradient","linePattern","lineSDF","symbolIcon","symbolSDF","symbolTextAndIcon","fragmentSource","vertexSource","staticAttributes","staticUniforms","boundProgram","boundLayoutVertexBuffer","boundPaintVertexBuffers","boundIndexBuffer","boundVertexOffset","boundDynamicVertexBuffer","vao","extVertexArrayObject","boundDynamicVertexBuffer2","bindVertexArrayOES","dynamicDraw","freshBind","numAttributes","createVertexArrayOES","currentNumAttributes","disableVertexAttribArray","enableAttributes","setVertexAttribPointers","deleteVertexArrayOES","program","createProgram","FRAGMENT_SHADER","failedToCreate","attachShader","attributes","bindAttribLocation","linkProgram","deleteShader","getUniformLocation","fixedUniforms","binderUniforms","setDepthMode","setStencilMode","setColorMode","setCullFace","LINES","TRIANGLES","LINE_STRIP","drawElements","UNSIGNED_SHORT","tileZoom","u_image","u_texsize","u_scale","u_fade","u_pixel_coord_upper","u_pixel_coord_lower","u_matrix","u_lightpos","u_lightintensity","u_lightcolor","u_vertical_gradient","u_opacity","u_height_factor","u_world","pixelsToGLUnits","u_camera_to_center_distance","u_scale_with_map","translatePosMatrix","u_pitch_with_map","u_device_pixel_ratio","u_extrude_scale","u_pixels_to_tile_units","u_overscale_factor","u_color","u_overlay","u_overlay_scale","u_intensity","u_ratio","u_units_to_pixels","u_image_height","u_patternscale_a","u_patternscale_b","u_sdfgamma","u_tex_y_a","u_tex_y_b","u_mix","u_tl_parent","u_scale_parent","u_buffer_scale","u_fade_t","mix","u_image0","u_image1","u_brightness_low","u_brightness_high","u_saturation_factor","u_contrast_factor","u_spin_weights","u_is_size_zoom_constant","u_is_size_feature_constant","u_size_t","u_size","u_pitch","u_rotate_symbol","u_aspect_ratio","u_fade_change","u_label_plane_matrix","u_coord_matrix","u_is_text","u_texture","u_gamma_scale","u_is_halo","u_texsize_icon","u_texture_icon","u_pattern_tl_a","u_pattern_br_a","u_pattern_tl_b","u_pattern_br_b","u_pattern_size_a","u_pattern_size_b","u_scale_a","u_scale_b","u_tile_units_to_pixels","u_inv_matrix","u_viewport_size","u_color_ramp","u_latrange","u_light","u_shadow","u_highlight","u_accent","u_dimension","u_zoom","u_unpack","createBuffer","unbindVAO","bindElementBuffer","bufferData","ELEMENT_ARRAY_BUFFER","DYNAMIC_DRAW","STATIC_DRAW","bufferSubData","deleteBuffer","bindVertexBuffer","ARRAY_BUFFER","enableVertexAttribArray","vertexAttribPointer","getDefault","setDefault","clearColor","clearDepth","clearStencil","colorMask","depthMask","stencilMask","func","ALWAYS","mask","stencilFunc","KEEP","stencilOp","enable","STENCIL_TEST","disable","depthRange","DEPTH_TEST","LESS","depthFunc","BLEND","ONE","ZERO","blendFunc","blendColor","FUNC_ADD","blendEquation","CULL_FACE","BACK","cullFace","CCW","frontFace","useProgram","TEXTURE0","activeTexture","drawingBufferWidth","drawingBufferHeight","bindFramebuffer","FRAMEBUFFER","bindRenderbuffer","RENDERBUFFER","bindBuffer","pixelStorei","UNPACK_ALIGNMENT","UNPACK_PREMULTIPLY_ALPHA_WEBGL","UNPACK_FLIP_Y_WEBGL","setDirty","framebufferTexture2D","COLOR_ATTACHMENT0","framebufferRenderbuffer","DEPTH_ATTACHMENT","framebuffer","createFramebuffer","colorAttachment","depthAttachment","deleteRenderbuffer","deleteFramebuffer","blendFunction","Replace","disabled","unblended","alphaBlended","getExtension","stencilTest","depthTest","blend","cullFaceSide","getParameter","MAX_TEXTURE_MAX_ANISOTROPY_EXT","extTextureHalfFloat","extRenderToTextureHalfFloat","extTimerQuery","maxTextureSize","MAX_TEXTURE_SIZE","createRenderbuffer","renderbufferStorage","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","fail","depthFail","pass","ReadOnly","ReadWrite","circleArray","circleOffset","invTransform","colorModeForRenderPass","backCCW","shiftedAnchor","depthModeForSublayer","rotating","zooming","NEAREST","buffers","uniformValues","atlasTextureIcon","atlasInterpolation","atlasInterpolationIcon","hasHalo","TEXTURE1","stencilModeForClipping","moving","rasterBoundsBuffer","quadTriangleIndexBuffer","rasterBoundsSegments","SCISSOR_TEST","scissor","emptyTexture","debugBuffer","tileBorderIndexBuffer","debugSegments","initDebugOverlayCanvas","debugOverlayCanvas","shadowColor","shadowBlur","lineWidth","strokeStyle","strokeText","debugOverlayTexture","renderPass","programConfiguration","HALF_FLOAT_OES","viewportBuffer","viewportSegments","gradient","opaquePassEnabledForLayer","LEQUAL","depthRangeFor3D","stencilModeFor3D","stencilConfigForOverlap","isPatternMissing","tileExtentBuffer","tileExtentSegments","custom","setCustomLayerDefaults","customLayerMatrix","setBaseState","_tileTextures","setup","numSublayers","depthEpsilon","gpuTimers","stencilClearMode","nextStencilID","currentStencilSource","_renderTileClippingMasks","_tileClippingMaskIDs","REPLACE","NOTEQUAL","EQUAL","GEQUAL","_showOverdrawInspector","CONSTANT_COLOR","currentLayer","opaquePassCutoff","renderLayer","showOverdrawInspector","showTileBoundaries","showPadding","centerPoint","gpuTimingStart","gpuTimingEnd","gpuTiming","calls","cpuTime","createQueryEXT","beginQueryEXT","TIME_ELAPSED_EXT","endQueryEXT","collectGpuTimers","queryGpuTimers","getQueryObjectEXT","QUERY_RESULT_EXT","deleteQueryEXT","cache","planes","quadrant","distanceX","distanceY","intersects","maxValidLatitude","_renderWorldCopies","_minZoom","_maxZoom","_minPitch","_maxPitch","setMaxBounds","_center","_fov","_unmodified","_edgeInsets","_posMatrixCache","_alignedPosMatrixCache","maxPitch","latRange","_calcMatrices","minPitch","renderWorldCopies","worldSize","centerOffset","rotationMatrix","fov","_zoom","zoomScale","zoomFraction","_constrain","isPaddingEqual","interpolatePadding","scaleZoom","fromInvProjectionMatrix","aabb","fullyVisible","distanceSq","unmodified","project","unproject","setLocationAtPoint","locationCoordinate","coordinateLocation","locationPoint","coordinatePoint","pointLocation","pixelMatrixInverse","pixelMatrix","getBounds","getMaxBounds","lngRange","alignedProjMatrix","projMatrix","mercatorMatrix","_constraining","getCameraPoint","_hashName","encodeURIComponent","_updateHash","_updateHashUnthrottled","addTo","_onHashChange","getHashString","hash","_getCurrentHash","dragRotate","isEnabled","touchZoomRotate","history","replaceState","linearity","easing","deceleration","maxSpeed","_inertiaBuffer","_drainInertiaBuffer","settings","_onMoveEnd","pan","pinchAround","around","zoomDelta","bearingDelta","pitchDelta","panDelta","amount","noMoveStart","mousePos","getCanvasContainer","lngLat","originalEvent","_defaultPrevented","defaultPrevented","changedTouches","touchPos","lngLats","_clickTolerance","clickTolerance","_mousedownPos","wheel","_firePreventable","mousedown","mouseup","click","dblclick","mouseover","mouseout","touchstart","touchmove","touchend","touchcancel","isActive","_delayContextMenu","_contextMenuEvent","contextmenu","_el","_container","_enabled","_active","shiftKey","disableDrag","_startPos","_lastPos","mousemoveWindow","_box","classList","_fireEvent","setTransform","mouseupWindow","suppressClick","cameraAnimation","fitScreenCoordinates","keydown","keyCode","enableDrag","numTouches","centroid","startTime","timeStamp","singleTap","numTaps","lastTime","lastTap","_zoomIn","_zoomOut","easeTo","_moved","_lastPoint","_eventButton","_correctButton","_move","mouseButton","buttons","ctrlKey","_minTouches","_touches","_sum","_calculateTransform","_firstTwoTouches","_start","_aroundCenter","_distance","_startDistance","_minDiameter","_startVector","_vector","_isBelowThreshold","_valid","_firstMove","_lastPoints","gestureBeginsVertically","panStep","bearingStep","pitchStep","_panStep","_bearingStep","_pitchStep","_rotationDisabled","altKey","metaKey","easeId","disableRotation","enableRotation","_handler","_delta","_defaultZoomRate","_wheelZoomRate","setZoomRate","setWheelZoomRate","_finishTimeout","isZooming","_zooming","deltaMode","WheelEvent","DOM_DELTA_LINE","deltaY","_lastWheelEventTime","_type","_lastValue","_timeout","_onTimeout","_lastWheelEvent","_frameId","_around","_aroundPoint","_triggerRenderFrame","renderFrame","_targetZoom","_startZoom","_easing","_smoothOutEasing","noInertia","needsRenderFrame","_prevEase","_clickZoom","_tapZoom","_tap","_swipePoint","_swipeTouch","_tapTime","_mousePan","_touchPan","_inertiaOptions","_pitchWithRotate","pitchWithRotate","_mouseRotate","_mousePitch","_touchZoom","_touchRotate","_tapDragZoom","drag","_handlers","_handlersById","_changes","_inertia","_bearingSnap","bearingSnap","_previousActiveHandlers","_eventsInProgress","_addDefaultHandlers","passive","handleWindowEvent","handleEvent","boxZoom","doubleClickZoom","touchPitch","dragPan","scrollZoom","keyboard","interactive","handlerName","allowed","stop","_updatingCamera","_fireEvents","isRotating","isMoving","_blockedByActive","_getMapTouches","mergeHandlerResult","_stop","_applyChanges","_updateMapTransform","_update","resetNorth","_requestFrame","_renderTaskQueue","run","logToElement","innerHTML","_moving","panBy","panTo","zoomTo","zoomIn","zoomOut","getPadding","setPadding","rotateTo","resetNorthPitch","snapToNorth","cameraForBounds","_cameraForBoxAndBearing","fitBounds","_fitInternal","flyTo","essential","_normalizeBearing","_normalizeCenter","_rotating","pitching","_pitching","_padding","_easeId","_prepareEase","_ease","_fireMoveEvents","_afterEase","speed","curve","screenSpeed","maxDuration","isEasing","_easeFrameId","_cancelRenderFrame","_onEaseFrame","_onEaseEnd","handlers","_easeStart","_easeOptions","_requestRenderFrame","_renderFrameCallback","getDefaultPosition","_compact","compact","_compactButton","_toggleAttribution","_setElementTitle","_innerContainer","_updateAttributions","_updateCompact","_updateData","_updateCompactMinimize","_attribHTML","_getUIString","setAttribute","removeAttribute","customAttribution","styleOwner","owner","styleId","_editLink","offsetWidth","rel","display","_queue","_id","_cleared","_currentlyRunning","attributionControl","maplibreLogo","preserveDrawingBuffer","trackResize","refreshExpiredTiles","maxTileCacheSize","showCompass","showZoom","visualizePitch","element","mouseRotate","mousePitch","down","move","offTemp","targetTouches","HTMLElement","_anchor","_color","_scale","_draggable","draggable","_isDragging","_rotation","rotation","_rotationAlignment","rotationAlignment","_pitchAlignment","pitchAlignment","_element","_offset","_defaultMarker","createNS","setAttributeNS","rx","ry","_popup","setDraggable","_onMapClick","_addDragHandler","_onUp","getLngLat","_lngLat","setLngLat","_pos","getElement","setPopup","_onKeyPress","_originalTabIndex","getAttribute","charCode","togglePopup","getPopup","isOpen","getOffset","setOffset","_pointerdownPos","_positionDelta","isDraggable","setRotation","getRotation","setRotationAlignment","getRotationAlignment","setPitchAlignment","getPitchAlignment","positionOptions","enableHighAccuracy","maximumAge","fitBoundsOptions","trackUserLocation","showAccuracyCircle","showUserLocation","maxWidth","clientHeight","closeButton","closeOnClick","focusAfterOpen","Map","_interactive","_failIfMajorPerformanceCaveat","_preserveDrawingBuffer","_antialias","_trackResize","_crossSourceCollisions","_crossFadingFactor","_controls","_mapId","_locale","_pixelRatio","devicePixelRatio","maxBounds","_setupContainer","_setupPainter","_onWindowOnline","_onWindowResize","_hash","_localIdeographFontFamily","addControl","logoPosition","_getMapId","_controlPositions","insertBefore","firstChild","removeControl","hasControl","_containerDimensions","_resizeCanvas","setPixelRatio","setMinZoom","getMinZoom","setMaxZoom","getMaxZoom","setMinPitch","getMinPitch","setMaxPitch","getMaxPitch","getRenderWorldCopies","setRenderWorldCopies","_createDelegatedListener","delegates","_delegatedListeners","diff","_diffStyle","_updateStyle","_lazyInitEmptyStyle","_updateDiff","getStyle","isStyleLoaded","areTilesLoaded","hasImage","loadImage","_canvasContainer","_canvas","clientWidth","_contextLost","_contextRestored","_onMapScroll","_frame","scrollTop","scrollLeft","_styleDirty","_sourcesDirty","_render","_placementDirty","gpuTime","layerTimes","_repaint","_fullyLoaded","redraw","loseContext","_showTileBoundaries","_showPadding","repaint","_vertices","_setCacheLimits","NavigationControl","_zoomInButton","_createButton","_zoomOutButton","_compass","_compassIcon","_updateZoomButtons","_rotateCompassArrow","_setButtonTitle","GeolocateControl","_setupUI","permissions","geolocation","_geolocationWatchID","clearWatch","_userLocationDotMarker","_accuracyCircleMarker","_onZoom","_isOutOfMapMaxBounds","longitude","latitude","_setErrorState","_watchState","_geolocateButton","_onSuccess","_updateMarker","_finish","_lastKnownPosition","_updateCamera","_dotElement","geolocateSource","_accuracy","_updateCircleRadius","_circleElement","_onError","_clearWatch","_timeoutId","_setup","watchPosition","getCurrentPosition","AttributionControl","LogoControl","ScaleControl","setUnit","FullscreenControl","_fullscreen","_fullscreenchange","_checkFullscreenSupport","_changeIcon","fullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","webkitFullscreenEnabled","_fullscreenButton","_updateTitle","_onClickFullscreen","_getTitle","_isFullscreen","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","toggle","exitFullscreen","mozCancelFullScreen","msExitFullscreen","webkitCancelFullScreen","requestFullscreen","mozRequestFullScreen","msRequestFullscreen","webkitRequestFullscreen","Popup","_onClose","closeOnMove","_focusFirstElement","_trackPointer","_onMouseMove","_content","_onDrag","trackPointer","setText","setDOMContent","createTextNode","setHTML","createDocumentFragment","getMaxWidth","setMaxWidth","hasChildNodes","_createCloseButton","addClassName","removeClassName","toggleClassName","_closeButton","_tip","offsetHeight","querySelector","focus","Marker","CanvasSource","GeoJSONSource","ImageSource","RasterDEMTileSource","RasterTileSource","VectorTileSource","VideoSource","prewarm","clearPrewarmedResources","maxParallelImageRequests","clearStorage","addProtocol","removeProtocol","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","definition","prop","Symbol","toStringTag","objectToString","isFunction","escapeRegExp","hasProperty","propName","regExpTest","nonSpaceRe","isWhitespace","testRegExp","entityMap","whiteRe","spaceRe","equalsRe","curlyRe","tagRe","Scanner","tail","Context","parentContext","Writer","templateCache","eos","scan","scanUntil","lookup","primitive","intermediateValue","lookupHit","clearCache","template","mustache","isCacheEnabled","openingTagRe","closingTagRe","closingCurlyRe","lineHasNonSpace","spaces","hasTag","nonSpace","indentation","tagIndex","stripSpace","compileTags","tagsToCompile","chr","token","openSection","scanner","valueLength","nestedTokens","collector","numTokens","nestTokens","lastToken","squashedTokens","squashTokens","parseTemplate","partials","getConfigTags","renderTokens","originalTemplate","renderSection","renderInverted","renderPartial","unescapedValue","escapedValue","rawValue","indentPartial","partial","filteredIndentation","partialByNl","indentedValue","escape","getConfigEscape","defaultWriter","RM2Event","subscribe","unsubscribe","expose","_definition","_crsCode","cp","definedProjection","_projections","projection","ex","coordinate","sourceProjection","targetProjection","crsCode","earthRadius","factors","centimeters","centimetres","feet","inches","kilometers","kilometres","meters","metres","miles","millimeters","millimetres","nauticalmiles","radians","yards","geom","feat","coordinates_1","ring","featureCollection","fc","radiansToLength","factor","lengthToRadians","radiansToDegrees","degreesToRadians","cloneFeature","cloned","cloneProperties","cloneGeometry","deepSlice","cloneFeatureCollection","coordEach","excludeWrapCoord","stopG","geometryMaybeCollection","isGeometryCollection","wrapShrink","coordIndex","isFeatureCollection","isFeature","geomIndex","multiFeatureIndex","geometryIndex","geomType","geomEach","featureProperties","featureBBox","featureId","flattenEach","segmentReduce","initialValue","previousValue","started","segmentIndex","previousCoords","previousFeatureIndex","previousMultiIndex","prevGeomIndex","currentCoord","featureIndexCoord","multiPartIndexCoord","currentSegment","segmentEach","west","east","north","lowLeft","bboxPolygon","xSum","ySum","results","getCoord","coordinates1","coordinates2","dLat","dLon","Coordinate","ordinates","fromOrdinates","toOrdinates","Envelope","minx","miny","maxx","maxy","envelope","fromNumArray","Geometry","getCoordinate","flattenCoords","getCoordinates","getEnvelopeInternal","getCentroid","p1","p2","fromCoordinate","flat","wktString","fromGeoJson","geoJson","MultiLineString","shell","toGeoJson","lsCoords","CameraChangeOptions","PanOptions","relCenterX","relCenterY","minResolution","FitOptions","ServiceType","_onOpen","_onSlide","_handleSlide","_selectedFeatureId","selectedFeature","getMaxWidthForPage","_featureCollection","_metadata","getService","Localization","refresh","isCarousel","mbPopup","closesOnClick","hasCloseButton","addContainer","parentElement","carouselEl","panOnPositionChange","cameraOptions","onOpen","onClose","onSlide","close","panPopup","topLeftX","topLeftY","topRightX","topRightY","bottomLeftX","bottomLeftY","bottomRightX","bottomRightY","mapSW","mapSWPixel","mapNE","mapNEPixel","deltaX","newSW","newNE","newCenter","slideTo","page","carousel","PopupOptions","panOnOpen","showMarkerOnMobile","CarouselPopupOptions","selectedItem","MapControlType","HighlightType","LineType","CircleRadiusUnitType","Feature","setProperties","getKeys","getField","setField","getProperties","getInternalId","setInternalId","instance","toGeoJsonString","mbFt","FeatureCollection","_idIndex","_spatialIndex","items","callbackfn","thisArg","getAll","getById","getByProperty","setCrsCode","getCrsCode","Crs","getByEnvelope","getByCoordinate","mbFc","fromMb","fromGeoJsonTyped","ftColl","setProperty","CrsProperties","NominatimServiceOptions","requestsTimeoutMs","queryUrl","query_v2Url","query_v3Url","reverseGeocodingUrl","GeocodeLocQueryUrl","GeocodeLocReverseUrl","QueryOptions","pageSize","lang","ReverseGeocodingOptions","NominatimService","Nominatim","enabled","res","rej","xhr","responseText","ontimeout","onabort","display_Name","display_name","class","category","dateTime","boundingBox","boundingbox","fromWkt","geoText","geotext","relevance","importance","service","query_v2","query_v3","Query_v3Request","reverse_v3","GeocodeLoc","GeocodeLocReverse","req","dataSource","ModelVersion","InCrs","OutCrs","HighlightOptions","HighlightTypePropertyName","applyFeatureHighlightOptions","fOpt","MarkerOptions","PolygonOptions","LineOptions","CircleOptions","FeatureHighlightOptions","zindex","IconPropertyName","AnchorPropertyName","SizePropertyName","OffsetPropertyName","ZIndexKeyPropertyName","applyOptionsToFeatureProperties","highlightTypeToString","props","fillColor","fillOpacity","outlineColor","outlineWidth","FillColorPropertyName","FillOpacityPropertyName","OutlineColorPropertyName","OutlineWidthPropertyName","lineColor","lineOpacity","lineType","Solid","lineJoin","lineCap","LineColorPropertyName","LineOpacityPropertyName","LineWidthPropertyName","LineTypePropertyName","Line","lineTypeToString","radiusUnitType","Pixels","CircleColorPropertyName","CircleOpacityPropertyName","CircleRadiusPropertyName","CircleRadiusUnitTypePropertyName","Circle","circleRadiusTypeToString","final","bear","calculateFinalBearing","lon1","lon2","origin","longitude1","latitude1","bearingRad","latitude2","startDist","stopDist","overshot","direction","origCoordsLength","travelled","segmentLength","numberOfSegments","isInteger","sliceLineSegments","RouteStatusResponseDTO","dto","route","RouteId","OptimalTTMs","RealTTMs","OptimalToEndTTMs","RealToEndTTMs","TravelTimeStatus","SegmentTravelTimes","SegmentIds","isSelected","routeColsVals","consecutiveSegment","segmentNrs","segmentLs","SegmentLengthMM","segmentOptimalTT","colValue","getRouteEdgeColorValue","segFt","getRouteColor","getRouteTravelTimeBackgroundClass","optimalTT","colorValue","getColorVals","fraction","upper","lower","lowerColor","hexToRgb","lowerData","upperColor","upperData","rgbToHex","lowerIndex","aboveIndex","hex","rStr","gStr","bStr","rDecimal","gDecimal","bDecimal","RouteOptions","PathMode","Fastest","RouteHighlightOptions","routeStyle","startPointStyle","viaPointStyle","endPointStyle","stationStyle","routeStyles","startPointStyles","viaPointStyles","endPointStyles","stationStyles","RoutingServiceOptions","urlv1","urlMultiple","urlRouteStatus","RouteFeatureCollection","RouteInstructionsFeatureCollection","RFunctionalRoadClass","RFormOfWay","RouteMultipleResponse","locations","routes","Routes","Instructions","Id","RoutingService","Routing","setOptions","async","locs","loc","routingRequest","profile","Mode","typeOfRoute","Points","Type","Odsek","Stacionaza","routeStr","postRequest","pointsFt","Title","includes","Cache","CurrentSegmentIndex","Route","fromResponse","_typeof","iterator","_classCallCheck","Constructor","_defineProperties","descriptor","configurable","writable","_createClass","protoProps","staticProps","_assertThisInitialized","ReferenceError","_setPrototypeOf","setPrototypeOf","_inherits","subClass","superClass","_possibleConstructorReturn","_getPrototypeOf","_defineProperty","_arrayLikeToArray","arr2","_toArray","minLen","enumerableOnly","symbols","sym","_objectSpread","getOwnPropertyDescriptors","consoleLogger","baseLogger","Logger","concreteLogger","prefix","logger","bool","_len","_key","_len2","_key2","_len3","_key3","_len4","_key4","lvl","debugOnly","moduleName","observers","_this","event","observer","_cloned","defer","promise","makeString","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","setPath","newValue","_getLastOfPath","getPath","_getLastOfPath3","getPathWithDefaults","defaultData","deepExtend","overwrite","regexEscape","str","_entityMap","isIE10","userAgentData","chars","ownKeys$1","_objectSpread$1","_createSuper","Derived","hasNativeReflectConstruct","construct","sham","Proxy","_isNativeReflectConstruct","Super","NewTarget","deepFind","keySeparator","paths","joinedPath","ResourceStore","_EventEmitter","_super","defaultNS","ignoreJSONStructure","silent","addNamespaces","resources","addResource","deep","pack","hasResourceBundle","removeNamespaces","compatibilityAPI","getDataByLanguage","postProcessor","processors","addPostProcessor","translator","processor","ownKeys$2","_objectSpread$2","_createSuper$1","_isNativeReflectConstruct$1","checkedLoadedFor","Translator","services","language","resolved","nsSeparator","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","matched","looksLikeObjectPath","interpolator","nestingRegexp","lastKey","_this2","overloadTranslationOptionHandler","returnDetails","_this$extractFromKey","extractFromKey","namespace","appendNamespaceToCIMode","resUsedKey","usedKey","resExactUsedKey","exactUsedKey","resType","noObject","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","extendTranslation","usedDefault","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","isValidLookup","missingKeyNoValueFallbackToKey","resForMissing","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","_this3","defaultVariables","usedLng","usedNS","skipInterpolation","nestBef","skipOnVariables","nb","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","_this4","extracted","fallbackNS","needsZeroSuffixLookup","ordinal","shouldUseIntlApi","needsContextHandling","utils","hasLoadedNamespace","possibleKey","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","contextKey","contextSeparator","returnNull","returnEmptyString","resourceStore","option","capitalize","LanguageUtil","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","part","cleanCode","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","isSupportedCode","lngOnly","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","sets","_rulesPluralsTypes","deprecatedJsonVersions","suffixesOrder","zero","one","two","few","many","createRules","rules","numbers","plurals","PluralResolver","compatibilityJSON","PluralRules","_unused","rule","getRule","pluralCategories","pluralCategory1","pluralCategory2","pluralCategory","select","getSuffixRetroCompatible","idx","noAbs","simplifyPluralSuffix","returnSuffix","ownKeys$3","_objectSpread$3","Interpolator","escapeValue","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexp","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","handleFormat","interpolationkey","missingInterpolationHandler","regex","safeValue","todo","matchedVar","lastIndex","clonedOptions","handleHasOptions","inheritedOptions","optionsString","formatters","doReduce","ownKeys$4","_objectSpread$4","Formatter","formats","datetime","DateTimeFormat","relativetime","RelativeTimeFormat","ListFormat","_format","mem","_parseFormatStr","formatStr","formatName","formatOptions","optStr","opt","_opt$split2","parseFormatStr","valOptions","formatParams","ownKeys$5","_objectSpread$5","_createSuper$2","_isNativeReflectConstruct$2","Connector","backend","store","waitingReads","maxParallelReads","readingCalls","queue","languages","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","pendingCount","addResourceBundle","_getLastOfPath2","removePending","done","loadedKeys","fcName","tried","wait","read","queueLoad","loadOne","prepareLoading","_this5","fallbackValue","isUpdate","initImmediate","preload","pluralSeparator","partialBundledLanguages","tDescription","transformOptions","ownKeys$6","_objectSpread$6","_createSuper$3","_isNativeReflectConstruct$3","noop","bindMemberFunctions","inst","I18n","modules","external","isInitialized","isClone","defOpts","createClassOnDemand","ClassOrObject","formatter","languageDetector","detection","storeApi","_this2$store","storeApiChained","_this2$store2","deferred","initializedStoreOnce","changeLanguage","usedCallback","resolvedLanguage","setResolvedLanguage","lngInLngs","hasLanguageSomeTranslations","isLanguageChangingTo","setLngProps","setLng","getBestMatchFromCodes","cacheUserLanguage","loadResources","detect","keyPrefix","fixedT","rest","resultKey","_this$translator","_this$translator2","exists","_this6","lastLng","loadNotPending","loadState","precheck","preResult","_this7","preloaded","newLngs","_this8","mergedOptions","membersToCopy","createInstance","reloadResources","use","getFixedT","setDefaultNamespace","loadNamespaces","loadLanguages","addQueryString","queryString","ajax","queryStringParams","ActiveXObject","crossDomain","overrideMimeType","customHeaders","onreadystatechange","getDefaults","loadPath","addPath","allowMultiLoading","parsePayload","Backend","loadUrl","payload","LocalizationServiceOptions","defaultLanguage","languageFilesPath","LocalizationService","htmlOptionsAttribute","getLanguage","setLanguage","localStorage","getItem","getTarget","localizeElement","extendStatics","__extends","__","__values","__read","__spreadArray","createErrorClass","createImpl","ctorFunc","UnsubscriptionError","arrRemove","Subscription","initialTeardown","closed","_parentage","_finalizers","empty","e_1","e_2","_b","_parentage_1","_parentage_1_1","e_1_1","return","initialFinalizer","_finalizers_1","_finalizers_1_1","finalizer","execFinalizer","e_2_1","teardown","_hasParent","_addParent","_removeParent","EMPTY_SUBSCRIPTION","isSubscription","onUnhandledError","onStoppedNotification","useDeprecatedSynchronousErrorHandling","useDeprecatedNextContext","timeoutProvider","delegate","COMPLETE_NOTIFICATION","createNotification","errorContext","cb","isRoot","errorThrown","Subscriber","isStopped","EMPTY_OBSERVER","complete","SafeSubscriber","handleStoppedNotification","nextNotification","_next","_error","_complete","_bind","ConsumerObserver","partialObserver","handleUnhandledError","observerOrNext","context_1","reportUnhandledError","notification","subscriber","observable","pipeFromArray","Observable","_subscribe","lift","isObserver","_trySubscribe","sink","promiseCtor","getPromiseCtor","pipe","operations","toPromise","ObjectUnsubscribedError","Subject","currentObservers","hasError","thrownError","subject","AnonymousSubject","_throwIfClosed","_c","_checkFinalizedStatuses","_innerSubscribe","asObservable","Highlights","_highlightsSourceName","_markerLayerName","_polygonLayerName","_lineSolidLayerName","_lineDottedLayerName","_lineDashedLayerName","_circleLayerName","rmFeatureLabel","_featuresAdded","_featuresRemoved","initLayers","featuresAdded","featuresRemoved","routeFc","showMarker","getFeaturePropertiesFromHighlightOptions","processData","clearMarkers","isRmFeature","showPolygon","clearPolygons","showLine","clearLines","showCircle","clearCircles","clearFeature","filtered","setSourceData","setFeatureValue","indices","findIndex","clearFeatures","getAllFeatures","fts","addFeaturesToSource","showRoutes","clearRoute","lines","wayPoints","instructions","routeSegments","routeSourceName","processPan","showRoute","ftStyleFunc","showRouteLegacy","Data","coordsTransformed","LineStrings","includeInIdentify","showFeature","processFeature","showFeatures","clearAll","fcCrs","setAsRmFeature","circleOptions","markerOptions","polygonOptions","lineOptions","topLayer","groups","groupName","gid","zIndex","defaultPolygon","polygonMbLayer","getProperty","defaultSolidLine","solidLineMbLayer","defaultDottedLine","dottedLineMbLayer","Dotted","defaultDashedLine","dashedLineMbLayer","Dashed","defaultCircle","circleMbLayer","defaultMarker","markerMbLayer","fitCameraToFeatures","addLiteral","MapPickerControlOptions","MapPickerControl","constructRoutes","drawRoutes","_onProcessingStatusChange","_onLocationSelected","_onRouteConstructed","onMapClick","nativeEvent","MouseEvent","hide","_localizationService","onclick","removeLocation","popupRemovePoint","openPopup","group","aStart","addLocation","aEnd","popupClick","_routingService","onClick","onProcessingStatusChange","onLocationSelected","onRouteConstructed","inject","setRoute","setLoadingStatus","routev1","refreshRoute","drawRoute","GeolocationOptions","panIfNotInView","isAccurate","showAccuracy","showHeading","autoZoom","markerScale","getPrimaryColor","getSecondaryColor","getHeadingIconName","Geolocation","metersToPixelsAtMaxZoom","_geolocationSourceName","_accuracyLayerName","_markerInnerCircleLayerName","_markerOuterCircleLayerName","_headingLayerName","initSources","PrimaryColorPropertyName","SecondaryColorPropertyName","LocationMarkerScalePropertyName","LocationMarkerOutlineWidthPropertyName","HeadingIconImagePropertyName","HeadingIconScalePropertyName","HeadingIconRotatePropertyName","AccuracyOutlineWidthPropertyName","AccuracyOutlineColorProperyName","AccuracyOpacityPropertyName","showGeolocation","apos","heading","createGeolocationFeature","updateAccuracyLayerRadius","handleCamera","clearGeolocation","isPositionInsideMap","getView","panOptions","panCoord","mbLayer","LayerGroup","_parent","uiVisible","iconClass","sequenceMode","uiGroupExpandable","uiGroupHeaderVisible","uiGroupAlwaysOpen","getParent","LegendControl","hoveringCheckbox","layerCheckboxes","resizePanel","getSize","_panel","maxHeight","_button","createButton","createPanel","onLayerVisibilityChanged","onGroupVisibilityChanged","getLayerCheckboxId","getGroupCheckboxId","wrapper","createLegend","panel","elementalLayersInGroup","getLayers","listGroup","listItem","listItemTitle","listItemImg","child","setGroupVisibility","persist","persistVisibility","formGroup","getCheckboxHeader","controls","groupContent","groupCollapse","collapse","collapseIcon","childHeader","flexGrowLabel","checkbox","formId","checked","onmouseenter","onmouseleave","onchange","vis","setLayerVisibility","label","iconSrc","htmlFor","Action","scheduler","work","schedule","intervalProvider","setInterval","clearInterval","AsyncAction","recycleAsyncId","requestAsyncId","flush","_scheduler","execute","_execute","_delay","errorValue","errored","actions","dateTimestampProvider","Scheduler","schedulerActionCtor","asyncScheduler","AsyncScheduler","SchedulerAction","_scheduled","action","operate","hasLift","liftedSource","RoutingInputActionButtonType","OperatorSubscriber","onNext","onComplete","onError","onFinalize","shouldUnsubscribe","closed_1","debounceTime","dueTime","activeTask","lastValue","emitWhenIdle","targetTime","createOperatorSubscriber","RoutingControlOptions","RoutingInput","placeholderText","placeholderTextAlt","_actionButtons","btn","setTarget","getLocation","_location","saveLocation","addActionButton","getActionButton","RoutingInputActionButton","_target","Utils","selected","RoutingControl","_searchInputs","inputChangeDebouncing","searchInputPlaceholder","searchToolbarItem","showDisclaimer","transportationModes","isMobile","onSearchTabSelected","focusedTransportationMode","clearHighlight","highlightLocation","_reverseLocations","searchTarget","refreshDisclaimerVisibility","onTransportationModeTabSelected","modeId","showModeRoute","waitingId","searchInputIdWaitingForLocation","waitingInput","onSearchKeyUp","navigateSearchResults","setSearchResultsStatus","stopSearchResultsHideTimeout","searchResultsHideTimeout","startSearchResultsHideTimeout","_nominatimService","_mapPicker","getControl","MapPicker","getLoadingStatus","geocode","clickCoord","getPanelStatus","setSearchInputValue","selectTransportationModeTab","setPanelStatus","processInputChange","locationHighlight","_panelTop","createPanelTop","createSearchResults","_panelBottom","createPanelBottom","panelTop","createToolbar","inputsContainer","routingInput","createInput","inputAppend","myLocBtn","myLocBtnIcon","timestamp","setMessage","i18nOptions","mins","hideMessage","MyLocation","panToLocBtn","locBtnIcon","PanToLocation","clearBtn","clearBtnIcon","Clear","reverseLocations","reverseLocationsBtn","firstLoc","second","secondLoc","enableRoutingDisclaimer","_disclaimer","searchResults","_searchResults","panelBottom","_spinner","spinnerContent","spinnerSpan","innerText","_toolbarContent","createToolbarContent","onkeyup","lastFocusedInput","createToolbarItem","modeIcon","hideI","clearSearch","createToolbarContentItem","createRouteOverviewContent","detail","row2","marginLeft","marginRight","distanceIcon","distanceText","formatDistance","Length","timeIcon","timeText","formatDuration","station","tollWarningDiv","tollIcon","tollText","createRouteOverviewStations","stations","getIcon","stationInstructionType","stationContainer","iconDiv","descriptionDiv","textDivContainer","iconMobile","textDiv","TitleTranslations","Item1","Item2","getLine","locationDiv","line1","line2","routeStationHighlight","removeFeature","getRelCenterX","createSearchResultItem","highlight","titleL","highlightL","span1","span2","endSpan","isCleared","clearTransportationModesContent","tab","setSearchResults","appendToSearchResults","FaIcon","span","HasNextPage","Page","more","lastChild","moreLocs","lastProcessedInputText","getSearchResultsStatus","recalculateInputsRoute","panBtn","processSearchInputs","defaultZoom","attachToolbarEventListeners","attach","removeToolbarEventListeners","getRouteFitPadding","focusedSearchResult","HTMLButtonElement","_message","titleDiv","contentDiv","closeBtn","closeBtnSpan","ascend","tagName","RoutingGeocodingFeatureProps","fromGeocodeLocResponse","RoutingGeocodingProps","fromQueryv2Response","fromReverseGeocodingResponse","formatDate","date","day","getDay","month","getMonth","year","getFullYear","getHours","getMinutes","sec","getSeconds","innerWidth","getQueryv2Icon","getGeocodeLocIcon","NextPage","HasNext","Skip","Take","PrometSiControlOptions","hasDetailButton","hasLegend","openLegend","weatherDataUrl","weatherImgUrl","weatherFrameInterval","weatherLastFrameUpdateInterval","PrometSiRoutingLocation","canSwapWithNext","PrometSiSearchResultsType","MapTheme","PrometSiExpandMapControl","PrometSiControl","weatherLayerName","weatherSourceName","_weatherData","_searchResultsFeatures","_onRouteSaved","refreshRouteDebouncing","searchTextDebouncing","_routingLocations","getNewRoutingLocationsArray","openLegendKey","injectedRouteId","injectedRouteTitle","myLocExecuting","selectedRoute","resizeElements","_legend","_routing","responsiveBreakpoint","_weatherContainer","refreshLegendSize","refreshRoutingSize","refreshSearchBarContainerSize","refreshRoutes","onLongClick","openMapClickOptionsMenu","popupRmb","getRoutingStatus","featureLayers","routeId","routeIdKey","setRoutesStatus","onRouteSaved","focusedSearchInput","_focusedSearchInput","_routingLocationsIncrementCount","getRoutingLocationsArray","searchEntryWidth","legendWidth","routingWidth","searchResultsMaxHeight","routeStatusKey","routeTTBadgeClassKey","closeAllPopups","Ad","Cesta","ds_at","adEl","adContent","bvx","bvy","cestaEl","cestaContent","setRoutingStatus","onSearchResultSelected","refreshRoutingLocations","injectRouteForEditing","_searchInput","currFetchId","menuContainer","containerParsed","_searchBarContainer","margin","Normal","legend","legendGroups","getLegendGroups","setLegendStatus","updateLegendItemUI","isCheckbox","weatherLayer","_weatherGroup","getGroupVisibility","tryStartWeatherLayerUpdating","radio","stopWeatherLayerUpdating","menuButton","getLegendStatus","_routingHeader","_routingBottom","overflowY","_routingSearchResults","_routingBottomSearchResultsContainer","onSearchInputEnterKey","weatherContainer","boxShadow","weatherBg","_weatherTimestampSpan","Description","searchResultsParsed","getContainerFromSearchResultsType","getLegendWidth","lPositive","setItem","groupsArray","startRouteStatusRefresh","currStatusRefreshId","waypoints","clearInstructionHighlight","stopRouteStatusRefresh","stopGeolocationSearch","isLast","setRoutingSpinnerStatus","setRoutingErrorStatus","before","routeFcdColors","routeColor","reorder","sel","selectedIndex","clearRoutingTabContainer","_routingTabsContainer","viaPoints","ins","CumulativeDuration","CumulativeLength","detourText","IsDetour","Selected","Start","Destination","Profile","DetourText","Duration","TTClass","TTSpinnerClass","instrAttrName","highlightInstruction","_routingSave","saveBtn","transformRoute","getOtherTabs","detailsSelector","_routingError","changed","threshold","waypointsFts","fetchId","routeMultiple","_routingSpinner","spinner","instructionHighlight","drawMarker","mapWidth","refreshId","refreshOnStart","routeStatusRefresh","routeStatusRefreshInterval","statusPromises","routeStatus","ttBadge","fromRoute","legendBody","getRoutingWidth","fetchWeatherData","onlyShowFinalFrame","updateLastWeatherFrame","startWeatherLayerUpdating","_weatherAnimationTimeout","setWeatherSource","srcUrl","srcBbox","weather","valid","show","getDate","StyleMetadata","enablePopup","hitTolerance","hitBuffer","md","clusterIcons","ClusterIconsData","findGroup","filterGroups","condition","withChildren","iconSize","textSize","LayerMetadata","lockMode","visibleRefreshButton","listViewDefaultExpand","listViewEnableOpenButton","listViewTitleTemplate","listViewDescriptionTemplate","infoWindowEnableOpenButton","infoWindowTitleTemplate","infoWindowDescriptionTemplate","infoWindowMaxWidth","infoWindowDescriptionRefreshInterval","clusterSymbol","clusterSymbolIconSize","clusterSymbolTextSize","clusterSymbolTextOffset","clusterSymbolTextColor","Layer","NAPControlOptions","resourcesPath","napDcUrl","NAPControl","refreshFilterSize","refreshDetailsSize","_connectorsDict","_vehiclesDict","onFeaturePopupClicked","contentName","getPolnilnice","polnilnice","setFilterStatus","setDetailsStatus","filterWidth","detailsWidth","chargingLayerId","createDetails","prometGroups","getPrometGroups","slider","change","vals","onFilterChange","_filter","attachSlojiToggleEventsListeners","details","_details","getFilterWidth","dayNow","isOpenToday","todayOpenTimes","days","getDaysArray","today","isToday","cssClasses","xWorkingHours","WorkingHours","DayInWeek","openTimes","OpenPeriods","isCurrentlyOpen","OpenTimes","CSSClasses","RefuelPoints","Connectors","getConnectorData","ChargingInterface","Icon","MaxPowerAtSocket","Days","TodayOpenTimes","TodayOpenStatus","PaymentTypesText","PaymentTypes","getDetailsWidth","startsWith","tabs","filterDebounce","filterReq","zasedenost_prosto","mocPolnjenja","prikljucek_3polni","prikljucek_5polni","prikljucek_schuko","prikljucek_type1","prikljucek_type2","prikljucek_chademo","prikljucek_ccs1sae","prikljucek_ccs2sae","prikljucek_roadster","prikljucek_supercharge","aktivacija_kartica","aktivacija_app","aktivacija_sms","aktivacija_pnc","cena_brezplacno","obrCas_24ur","obrCas_trenutnoOdprto","vrsta_avto","vrsta_koloMotorSkiro","vrsta_avtodom","vrsta_tovorno","MocPolnjenjaMin","MocPolnjenjaMax","ZasedenostProsto","Prikljucki3Polni","Prikljucki5Polni","PrikljuckiSchuko","PrikljuckiType1","PrikljuckiType2","PrikljuckiCHAdeMO","PrikljuckiCCS1SAE","PrikljuckiCCS2SAE","PrikljuckiRoadster","PrikljuckiSupercharge","NacinAktivacijeKartica","NacinAktivacijeAplikacija","NacinAktivacijeSMS","NacinAktivacijePlugAndCharge","CenaBrezplacno","ObratovalniCas24Ur","ObratovalniCasTrenutnoOdprto","VrstaVozilaAvto","VrstaVozilaKoloMotorSkiro","VrstaVozilaAvtodom","VrstaVozilaTovornoVozilo","polnilnicaReq","EnergySiteWebDTO","newFts","newFt","ContentName","isOperational","isFree","getTodayWorkingHours","hours","weekdays","btnWrapper","OpeningTimesWebDTO","fromGeojson","ChargingPointUsageTypeEnum","ChargingInterfaceTypeWebAppEnum","AuthenticationAndIdentificationEnum","OpenPeriodWebDTO","openFrom","openTill","OpenFrom","OpenTill","openFromH","openFromMin","openTillH","openTillMin","styleUrl","_onClick","_onLongClick","_onDblClick","_onLoad","_onStyleLoad","_onRestyleLayer","_onUserAction","_userActionEvents","_onSourceChange","_onViewChange","_onGroupVisibilityChanged","_onLayerVisibilityChanged","_onPopupOpened","_onFeaturePopupClicked","_onProcessingStatusChanged","_onFeaturesAdded","_onFeaturesRemoved","_theme","Light","_popups","_mobilePopups","_projection","_services","_clusterLayers","_sources","_sourceRequests","persistViewKey","persistVisibilityKey","mobileMarkerId","longClickCallback","movedSinceLastMouseButtonDown","_handleMapLongClick","_handleMapClick","featuresData","ftsAtPoint","parsed","decodeQueriedProperties","ftr","ftrprops","featureLayer","legendControl","Legend","notClusters","clickPoint","featuresDataSorted","_mbMap","_handleViewChange","persistView","_handleUserAction","_handleMousemove","mbOptions","_label","theme","_style","getPersistedView","startExtent","setMapTheme","srcId","generateClusterLayers","removeHiddenVectorHybridLayers","mglLayer","persisted","getPersistedVisibility","refreshSingleGroupVisibility","notice","noticeStyle","yearPlaceholder","enableSideScroller","getSideScroller","scrollerLeft","backgroundColor","scrollerLeftIcon","ctrlsContainer","routingServiceOpts","routingServiceName","nominatimServiceOpts","nominatimServiceName","localizationServiceOpts","enableRotate","addLocalizationService","_highlights","_geolocation","addControls","startRefreshingGeoJSONUrlSources","onloadend","initEvents","onDblClick","onMouseMove","onLoad","onStyleLoad","onRestyleLayer","onUserAction","onSourceChange","onViewChange","onZoom","onPopupOpened","onProcessingStatusChanged","onFeaturesAdded","onFeaturesRemoved","popups","newData","getGroups","getGroup","getLayerFeatures","getLayerVisibility","setMbLayerVisibility","updateUpwards","transformToProjection","fromProjection","transformToProjectionMulti","newCoordinates","transformGeometryToProjection","defaultPanOptions","camOptions","xOffset","yOffset","fit","boundsArray","defaultCameraChangeOptions","setView","panProp","fitCameraToCurrentRoute","drawPolygon","drawLine","drawCircle","ctrl","mapPicker","clearMapPicker","drawRouteLegacy","removeFeatures","clearAllHighlights","sortPopupClickListeners","contentMobile","clicks","mobileEl","popupClose","openPopupForFeature","openPopupForFeatures","clickDetectors","transformedFts","copyFtsToDiv","PopupCarouselTemplate","inner","getElementsByClassName","rendered","render1","render2","popup","refreshSourceWithUrl","srcs","getSrcsWithUrl","refreshSource","previous","mbLayers","newSrc","updateSize","checkIfCssLoaded","printWarning","loadedCss","styleSheets","searchFor","css","description","locate","newThemeLayer","otherLayer","compareWith","compareContainer","_mbMapCompare","_mbMapCompareMap","sliderPosition","getCurrentCompareMap","getCurrentCompareState","stopCompare","dispose","unp","visibilities","showMobileMarker","removeMobileMarker","_popupMobileMarker","innerHeight","scrollIntoView","block","inline","mobilePopup","clearLongClickTimeout","longClickTimeout","cursor","addLegendControl","FullScreen","Zoom","mp","PrometSi","NAP","nap","triggerGeolocator","_geolocatorControl","gjSrc","oldUrl","viewString","mbVis","elementalLayers","canDisplay","canDisplayGroup","clusterFilter","pointCount","notClusterFilter","symbolLayer","ReplaySubject","_bufferSize","_windowTime","_timestampProvider","_buffer","_infiniteTimeWindow","_trimBuffer","subscription","adjustedBufferSize","MapContainer","elementId","initMap","_onLayerReloadedSubs","_evt_mapInitialized","_evt_mapClick","_evt_mapLongClick","_evt_mapDblClick","_evt_mapMouseMove","_evt_layerRestyle","_evt_mapUserAction","_evt_mapLoad","_evt_layerReloaded","_evt_viewChange","_evt_routeConstructed","_evt_popupOpened","reconfigure","_reconfigure","_mapOnClick","_mapOnLongClick","_mapOnDblClick","_mapOnMouseMove","_mapOnRestyleLayer","_mapOnUserAction","_mapOnViewChange","_mapOnLoad","_mapRouteConstructed","_popupOpened","rmaps","_onMapInitialized","sh","onReloadLayer","newZoom","setVisibility","sids","sid","drawRouteFromGeoJson","includeInPopup","clearMarker","gjGeometry","clearCircle","clearLine","polygonCoords","clearPolygon","fitToFeatures","loadingId","loadingContainer","control","eventArgs","ftsLayers","ftLayer","clusterPointCountKey","clusterCoord","currView","intervals","_lastPopup","getPopupContent","_layerOnReloaded","ElementId","_extendElement","ElementAny","ATTRIBUTE_STYLE_URL","evt_mapInitialized","evt_mapClick","evt_mapLongClick","evt_mapDblClick","evt_mapMouseMove","evt_layerRestyle","evt_mapUserAction","evt_mapLoad","evt_layerReloaded","evt_viewChange","evt_routeConstructed","evt_popupOpened","mapContainerId","ftJson","transformEpsg3912ToEpsg4326","closeIcon","createDescription","dscr","tmplt","newDescription","replaceChild"],"sourceRoot":""}