{"version":3,"file":"common.js","mappings":"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","sources":["webpack://ol-mapbox-style/webpack/runtime/chunk loaded","webpack://ol-mapbox-style/./node_modules/@mapbox/unitbezier/index.js","webpack://ol-mapbox-style/./node_modules/csscolorparser/csscolorparser.js","webpack://ol-mapbox-style/./node_modules/ieee754/index.js","webpack://ol-mapbox-style/./node_modules/mapbox-to-css-font/index.js","webpack://ol-mapbox-style/./node_modules/nanoassert/index.js","webpack://ol-mapbox-style/./node_modules/pbf/index.js","webpack://ol-mapbox-style/./node_modules/rbush/rbush.min.js","webpack://ol-mapbox-style/./node_modules/ol/AssertionError.js","webpack://ol-mapbox-style/./node_modules/ol/Collection.js","webpack://ol-mapbox-style/./node_modules/ol/CollectionEventType.js","webpack://ol-mapbox-style/./node_modules/ol/Disposable.js","webpack://ol-mapbox-style/./node_modules/ol/Image.js","webpack://ol-mapbox-style/./node_modules/ol/ImageState.js","webpack://ol-mapbox-style/./node_modules/ol/ImageTile.js","webpack://ol-mapbox-style/./node_modules/ol/renderer/Map.js","webpack://ol-mapbox-style/./node_modules/ol/renderer/Composite.js","webpack://ol-mapbox-style/./node_modules/ol/MapEvent.js","webpack://ol-mapbox-style/./node_modules/ol/MapBrowserEvent.js","webpack://ol-mapbox-style/./node_modules/ol/MapBrowserEventType.js","webpack://ol-mapbox-style/./node_modules/ol/pointer/EventType.js","webpack://ol-mapbox-style/./node_modules/ol/MapBrowserEventHandler.js","webpack://ol-mapbox-style/./node_modules/ol/MapEventType.js","webpack://ol-mapbox-style/./node_modules/ol/MapProperty.js","webpack://ol-mapbox-style/./node_modules/ol/control/Control.js","webpack://ol-mapbox-style/./node_modules/ol/control/Attribution.js","webpack://ol-mapbox-style/./node_modules/ol/control/Rotate.js","webpack://ol-mapbox-style/./node_modules/ol/control/Zoom.js","webpack://ol-mapbox-style/./node_modules/ol/interaction/Property.js","webpack://ol-mapbox-style/./node_modules/ol/interaction/Interaction.js","webpack://ol-mapbox-style/./node_modules/ol/interaction/DoubleClickZoom.js","webpack://ol-mapbox-style/./node_modules/ol/interaction/Pointer.js","webpack://ol-mapbox-style/./node_modules/ol/events/condition.js","webpack://ol-mapbox-style/./node_modules/ol/interaction/DragPan.js","webpack://ol-mapbox-style/./node_modules/ol/interaction/DragRotate.js","webpack://ol-mapbox-style/./node_modules/ol/render/Box.js","webpack://ol-mapbox-style/./node_modules/ol/interaction/DragBox.js","webpack://ol-mapbox-style/./node_modules/ol/interaction/DragZoom.js","webpack://ol-mapbox-style/./node_modules/ol/events/Key.js","webpack://ol-mapbox-style/./node_modules/ol/interaction/KeyboardPan.js","webpack://ol-mapbox-style/./node_modules/ol/interaction/KeyboardZoom.js","webpack://ol-mapbox-style/./node_modules/ol/Kinetic.js","webpack://ol-mapbox-style/./node_modules/ol/interaction/MouseWheelZoom.js","webpack://ol-mapbox-style/./node_modules/ol/interaction/PinchRotate.js","webpack://ol-mapbox-style/./node_modules/ol/interaction/PinchZoom.js","webpack://ol-mapbox-style/./node_modules/ol/Map.js","webpack://ol-mapbox-style/./node_modules/ol/control/defaults.js","webpack://ol-mapbox-style/./node_modules/ol/interaction/defaults.js","webpack://ol-mapbox-style/./node_modules/ol/Object.js","webpack://ol-mapbox-style/./node_modules/ol/ObjectEventType.js","webpack://ol-mapbox-style/./node_modules/ol/Observable.js","webpack://ol-mapbox-style/./node_modules/ol/Tile.js","webpack://ol-mapbox-style/./node_modules/ol/structs/PriorityQueue.js","webpack://ol-mapbox-style/./node_modules/ol/TileQueue.js","webpack://ol-mapbox-style/./node_modules/ol/TileRange.js","webpack://ol-mapbox-style/./node_modules/ol/TileState.js","webpack://ol-mapbox-style/./node_modules/ol/ViewProperty.js","webpack://ol-mapbox-style/./node_modules/ol/centerconstraint.js","webpack://ol-mapbox-style/./node_modules/ol/resolutionconstraint.js","webpack://ol-mapbox-style/./node_modules/ol/View.js","webpack://ol-mapbox-style/./node_modules/ol/ViewHint.js","webpack://ol-mapbox-style/./node_modules/ol/array.js","webpack://ol-mapbox-style/./node_modules/ol/asserts.js","webpack://ol-mapbox-style/./node_modules/ol/color.js","webpack://ol-mapbox-style/./node_modules/ol/colorlike.js","webpack://ol-mapbox-style/./node_modules/ol/console.js","webpack://ol-mapbox-style/./node_modules/ol/coordinate.js","webpack://ol-mapbox-style/./node_modules/ol/css.js","webpack://ol-mapbox-style/./node_modules/ol/dom.js","webpack://ol-mapbox-style/./node_modules/ol/easing.js","webpack://ol-mapbox-style/./node_modules/ol/events.js","webpack://ol-mapbox-style/./node_modules/ol/events/Event.js","webpack://ol-mapbox-style/./node_modules/ol/events/EventType.js","webpack://ol-mapbox-style/./node_modules/ol/events/Target.js","webpack://ol-mapbox-style/./node_modules/ol/extent.js","webpack://ol-mapbox-style/./node_modules/ol/extent/Relationship.js","webpack://ol-mapbox-style/./node_modules/ol/featureloader.js","webpack://ol-mapbox-style/./node_modules/ol/format/Feature.js","webpack://ol-mapbox-style/./node_modules/ol/Feature.js","webpack://ol-mapbox-style/./node_modules/ol/geom/GeometryCollection.js","webpack://ol-mapbox-style/./node_modules/ol/format/JSONFeature.js","webpack://ol-mapbox-style/./node_modules/ol/format/GeoJSON.js","webpack://ol-mapbox-style/./node_modules/ol/functions.js","webpack://ol-mapbox-style/./node_modules/ol/geom/Geometry.js","webpack://ol-mapbox-style/./node_modules/ol/geom/LineString.js","webpack://ol-mapbox-style/./node_modules/ol/geom/MultiLineString.js","webpack://ol-mapbox-style/./node_modules/ol/geom/MultiPoint.js","webpack://ol-mapbox-style/./node_modules/ol/geom/MultiPolygon.js","webpack://ol-mapbox-style/./node_modules/ol/geom/Point.js","webpack://ol-mapbox-style/./node_modules/ol/geom/LinearRing.js","webpack://ol-mapbox-style/./node_modules/ol/geom/Polygon.js","webpack://ol-mapbox-style/./node_modules/ol/geom/SimpleGeometry.js","webpack://ol-mapbox-style/./node_modules/ol/geom/flat/area.js","webpack://ol-mapbox-style/./node_modules/ol/geom/flat/center.js","webpack://ol-mapbox-style/./node_modules/ol/geom/flat/closest.js","webpack://ol-mapbox-style/./node_modules/ol/geom/flat/contains.js","webpack://ol-mapbox-style/./node_modules/ol/geom/flat/deflate.js","webpack://ol-mapbox-style/./node_modules/ol/geom/flat/inflate.js","webpack://ol-mapbox-style/./node_modules/ol/geom/flat/interiorpoint.js","webpack://ol-mapbox-style/./node_modules/ol/geom/flat/interpolate.js","webpack://ol-mapbox-style/./node_modules/ol/geom/flat/intersectsextent.js","webpack://ol-mapbox-style/./node_modules/ol/geom/flat/length.js","webpack://ol-mapbox-style/./node_modules/ol/geom/flat/reverse.js","webpack://ol-mapbox-style/./node_modules/ol/geom/flat/orient.js","webpack://ol-mapbox-style/./node_modules/ol/geom/flat/segments.js","webpack://ol-mapbox-style/./node_modules/ol/geom/flat/simplify.js","webpack://ol-mapbox-style/./node_modules/ol/geom/flat/transform.js","webpack://ol-mapbox-style/./node_modules/ol/has.js","webpack://ol-mapbox-style/./node_modules/ol/layer/Base.js","webpack://ol-mapbox-style/./node_modules/ol/style/flat.js","webpack://ol-mapbox-style/./node_modules/ol/layer/BaseVector.js","webpack://ol-mapbox-style/./node_modules/ol/layer/Group.js","webpack://ol-mapbox-style/./node_modules/ol/layer/Layer.js","webpack://ol-mapbox-style/./node_modules/ol/layer/Property.js","webpack://ol-mapbox-style/./node_modules/ol/layer/TileProperty.js","webpack://ol-mapbox-style/./node_modules/ol/renderer/canvas/VectorLayer.js","webpack://ol-mapbox-style/./node_modules/ol/layer/Vector.js","webpack://ol-mapbox-style/./node_modules/ol/renderer/canvas/VectorTileLayer.js","webpack://ol-mapbox-style/./node_modules/ol/layer/VectorTile.js","webpack://ol-mapbox-style/./node_modules/ol/loadingstrategy.js","webpack://ol-mapbox-style/./node_modules/ol/math.js","webpack://ol-mapbox-style/./node_modules/ol/obj.js","webpack://ol-mapbox-style/./node_modules/ol/proj/epsg3857.js","webpack://ol-mapbox-style/./node_modules/ol/proj/epsg4326.js","webpack://ol-mapbox-style/./node_modules/ol/proj/projections.js","webpack://ol-mapbox-style/./node_modules/ol/proj/transforms.js","webpack://ol-mapbox-style/./node_modules/ol/sphere.js","webpack://ol-mapbox-style/./node_modules/ol/proj.js","webpack://ol-mapbox-style/./node_modules/ol/proj/Projection.js","webpack://ol-mapbox-style/./node_modules/ol/proj/Units.js","webpack://ol-mapbox-style/./node_modules/ol/render/Event.js","webpack://ol-mapbox-style/./node_modules/ol/render/EventType.js","webpack://ol-mapbox-style/./node_modules/ol/render/VectorContext.js","webpack://ol-mapbox-style/./node_modules/ol/render/canvas.js","webpack://ol-mapbox-style/./node_modules/ol/render/canvas/Builder.js","webpack://ol-mapbox-style/./node_modules/ol/render/canvas/ImageBuilder.js","webpack://ol-mapbox-style/./node_modules/ol/render/canvas/LineStringBuilder.js","webpack://ol-mapbox-style/./node_modules/ol/render/canvas/PolygonBuilder.js","webpack://ol-mapbox-style/./node_modules/ol/render/canvas/BuilderGroup.js","webpack://ol-mapbox-style/./node_modules/ol/geom/flat/textpath.js","webpack://ol-mapbox-style/./node_modules/ol/render/canvas/Executor.js","webpack://ol-mapbox-style/./node_modules/ol/render/canvas/ExecutorGroup.js","webpack://ol-mapbox-style/./node_modules/ol/render/canvas/Instruction.js","webpack://ol-mapbox-style/./node_modules/ol/geom/flat/linechunk.js","webpack://ol-mapbox-style/./node_modules/ol/geom/flat/straightchunk.js","webpack://ol-mapbox-style/./node_modules/ol/render/canvas/TextBuilder.js","webpack://ol-mapbox-style/./node_modules/ol/render/canvas/Immediate.js","webpack://ol-mapbox-style/./node_modules/ol/render/canvas/hitdetect.js","webpack://ol-mapbox-style/./node_modules/ol/renderer/Layer.js","webpack://ol-mapbox-style/./node_modules/ol/renderer/canvas/Layer.js","webpack://ol-mapbox-style/./node_modules/ol/renderer/canvas/TileLayer.js","webpack://ol-mapbox-style/./node_modules/ol/renderer/vector.js","webpack://ol-mapbox-style/./node_modules/ol/reproj.js","webpack://ol-mapbox-style/./node_modules/ol/reproj/Tile.js","webpack://ol-mapbox-style/./node_modules/ol/reproj/Triangulation.js","webpack://ol-mapbox-style/./node_modules/ol/reproj/common.js","webpack://ol-mapbox-style/./node_modules/ol/rotationconstraint.js","webpack://ol-mapbox-style/./node_modules/ol/size.js","webpack://ol-mapbox-style/./node_modules/ol/source/Source.js","webpack://ol-mapbox-style/./node_modules/ol/structs/RBush.js","webpack://ol-mapbox-style/./node_modules/ol/source/VectorEventType.js","webpack://ol-mapbox-style/./node_modules/ol/source/Vector.js","webpack://ol-mapbox-style/./node_modules/ol/style/Circle.js","webpack://ol-mapbox-style/./node_modules/ol/style/Fill.js","webpack://ol-mapbox-style/./node_modules/ol/style/IconImage.js","webpack://ol-mapbox-style/./node_modules/ol/style/Icon.js","webpack://ol-mapbox-style/./node_modules/ol/style/IconImageCache.js","webpack://ol-mapbox-style/./node_modules/ol/style/Image.js","webpack://ol-mapbox-style/./node_modules/ol/style/RegularShape.js","webpack://ol-mapbox-style/./node_modules/ol/style/Stroke.js","webpack://ol-mapbox-style/./node_modules/ol/style/Style.js","webpack://ol-mapbox-style/./node_modules/ol/style/Text.js","webpack://ol-mapbox-style/./node_modules/ol/tilegrid/common.js","webpack://ol-mapbox-style/./node_modules/ol/transform.js","webpack://ol-mapbox-style/./node_modules/ol/util.js","webpack://ol-mapbox-style/./node_modules/ol/render/Feature.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/util/color.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/function/convert.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/util/extend.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/parsing_error.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/scope.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/types.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/types/collator.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/types/formatted.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/types/resolved_image.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/values.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/literal.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/runtime_error.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/assertion.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/format.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/image.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/coercion.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/evaluation_context.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/compound_expression.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/collator.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/within.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/is_constant.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/var.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/parsing_context.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/stops.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/step.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/util/interpolate.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/util/color_spaces.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/interpolate.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/coalesce.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/let.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/at.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/in.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/index_of.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/match.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/case.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/slice.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/comparison.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/number_format.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/length.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/definitions/index.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/util/result.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/util/properties.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/util/get_type.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/function/index.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/expression/index.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/util/unbundle_jsonlint.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/reference/latest.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/feature_filter/index.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/util/ref_properties.js","webpack://ol-mapbox-style/./node_modules/@mapbox/mapbox-gl-style-spec/deref.js","webpack://ol-mapbox-style/./node_modules/ol/tilecoord.js","webpack://ol-mapbox-style/./node_modules/ol/tileurlfunction.js","webpack://ol-mapbox-style/./node_modules/ol/layer/BaseImage.js","webpack://ol-mapbox-style/./node_modules/ol/renderer/canvas/ImageLayer.js","webpack://ol-mapbox-style/./node_modules/ol/layer/Image.js","webpack://ol-mapbox-style/./node_modules/ol/format/MVT.js","webpack://ol-mapbox-style/./node_modules/ol/ImageBase.js","webpack://ol-mapbox-style/./node_modules/ol/ImageCanvas.js","webpack://ol-mapbox-style/./node_modules/ol/reproj/Image.js","webpack://ol-mapbox-style/./node_modules/ol/source/Image.js","webpack://ol-mapbox-style/./node_modules/ol/layer/BaseTile.js","webpack://ol-mapbox-style/./node_modules/ol/layer/Tile.js","webpack://ol-mapbox-style/./node_modules/ol/structs/LRUCache.js","webpack://ol-mapbox-style/./node_modules/ol/TileCache.js","webpack://ol-mapbox-style/./node_modules/ol/tilegrid/TileGrid.js","webpack://ol-mapbox-style/./node_modules/ol/tilegrid.js","webpack://ol-mapbox-style/./node_modules/ol/source/Tile.js","webpack://ol-mapbox-style/./node_modules/ol/source/Raster.js","webpack://ol-mapbox-style/./node_modules/ol/source/UrlTile.js","webpack://ol-mapbox-style/./node_modules/ol/source/TileEventType.js","webpack://ol-mapbox-style/./node_modules/ol/source/TileImage.js","webpack://ol-mapbox-style/./node_modules/ol/source/TileJSON.js","webpack://ol-mapbox-style/./node_modules/ol/net.js","webpack://ol-mapbox-style/./node_modules/ol/VectorTile.js","webpack://ol-mapbox-style/./node_modules/ol/VectorRenderTile.js","webpack://ol-mapbox-style/./node_modules/ol/source/VectorTile.js","webpack://ol-mapbox-style/./src/shaders.js","webpack://ol-mapbox-style/./src/mapbox.js","webpack://ol-mapbox-style/./src/apply.js","webpack://ol-mapbox-style/./src/util.js","webpack://ol-mapbox-style/./src/text.js","webpack://ol-mapbox-style/./src/stylefunction.js","webpack://ol-mapbox-style/webpack/bootstrap","webpack://ol-mapbox-style/webpack/runtime/define property getters","webpack://ol-mapbox-style/webpack/runtime/hasOwnProperty shorthand","webpack://ol-mapbox-style/webpack/runtime/make namespace object","webpack://ol-mapbox-style/webpack/runtime/jsonp chunk loading"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/*\n * Copyright (C) 2008 Apple Inc. All Rights Reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * Ported from Webkit\n * http://svn.webkit.org/repository/webkit/trunk/Source/WebCore/platform/graphics/UnitBezier.h\n */\n\nmodule.exports = UnitBezier;\n\nfunction UnitBezier(p1x, p1y, p2x, p2y) {\n // Calculate the polynomial coefficients, implicit first and last control points are (0,0) and (1,1).\n this.cx = 3.0 * p1x;\n this.bx = 3.0 * (p2x - p1x) - this.cx;\n this.ax = 1.0 - this.cx - this.bx;\n\n this.cy = 3.0 * p1y;\n this.by = 3.0 * (p2y - p1y) - this.cy;\n this.ay = 1.0 - this.cy - this.by;\n\n this.p1x = p1x;\n this.p1y = p2y;\n this.p2x = p2x;\n this.p2y = p2y;\n}\n\nUnitBezier.prototype.sampleCurveX = function(t) {\n // `ax t^3 + bx t^2 + cx t' expanded using Horner's rule.\n return ((this.ax * t + this.bx) * t + this.cx) * t;\n};\n\nUnitBezier.prototype.sampleCurveY = function(t) {\n return ((this.ay * t + this.by) * t + this.cy) * t;\n};\n\nUnitBezier.prototype.sampleCurveDerivativeX = function(t) {\n return (3.0 * this.ax * t + 2.0 * this.bx) * t + this.cx;\n};\n\nUnitBezier.prototype.solveCurveX = function(x, epsilon) {\n if (typeof epsilon === 'undefined') epsilon = 1e-6;\n\n var t0, t1, t2, x2, i;\n\n // First try a few iterations of Newton's method -- normally very fast.\n for (t2 = x, i = 0; i < 8; i++) {\n\n x2 = this.sampleCurveX(t2) - x;\n if (Math.abs(x2) < epsilon) return t2;\n\n var d2 = this.sampleCurveDerivativeX(t2);\n if (Math.abs(d2) < 1e-6) break;\n\n t2 = t2 - x2 / d2;\n }\n\n // Fall back to the bisection method for reliability.\n t0 = 0.0;\n t1 = 1.0;\n t2 = x;\n\n if (t2 < t0) return t0;\n if (t2 > t1) return t1;\n\n while (t0 < t1) {\n\n x2 = this.sampleCurveX(t2);\n if (Math.abs(x2 - x) < epsilon) return t2;\n\n if (x > x2) {\n t0 = t2;\n } else {\n t1 = t2;\n }\n\n t2 = (t1 - t0) * 0.5 + t0;\n }\n\n // Failure.\n return t2;\n};\n\nUnitBezier.prototype.solve = function(x, epsilon) {\n return this.sampleCurveY(this.solveCurveX(x, epsilon));\n};\n","// (c) Dean McNamee , 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n \"rebeccapurple\": [102,51,153,1],\n \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) { // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) { // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) { // int or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_byte(parseFloat(str) / 100 * 255);\n return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) { // float or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_float(parseFloat(str) / 100);\n return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n if (h < 0) h += 1;\n else if (h > 1) h -= 1;\n\n if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n if (h * 2 < 1) return m2;\n if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n return m1;\n}\n\nfunction parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable) return kCSSColorTable[str].slice(); // dup.\n\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xfff)) return null; // Covers NaN.\n return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n (iv & 0xf0) | ((iv & 0xf0) >> 4),\n (iv & 0xf) | ((iv & 0xf) << 4),\n 1];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xffffff)) return null; // Covers NaN.\n return [(iv & 0xff0000) >> 16,\n (iv & 0xff00) >> 8,\n iv & 0xff,\n 1];\n }\n\n return null;\n }\n\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op+1, ep-(op+1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3) return null;\n return [parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha];\n case 'hsla':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3) return null;\n var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n alpha];\n default:\n return null;\n }\n }\n\n return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var fontWeights = {\n thin: 100,\n hairline: 100,\n 'ultra-light': 100,\n 'extra-light': 100,\n light: 200,\n book: 300,\n regular: 400,\n normal: 400,\n plain: 400,\n roman: 400,\n standard: 400,\n medium: 500,\n 'semi-bold': 600,\n 'demi-bold': 600,\n bold: 700,\n heavy: 800,\n black: 800,\n 'extra-bold': 800,\n 'ultra-black': 900,\n 'extra-black': 900,\n 'ultra-bold': 900,\n 'heavy-black': 900,\n fat: 900,\n poster: 900\n};\nvar sp = ' ';\nvar italicRE = /(italic|oblique)$/i;\n\nvar fontCache = {};\n\nmodule.exports = function(fonts, size, lineHeight) {\n var cssData = fontCache[fonts];\n if (!cssData) {\n if (!Array.isArray(fonts)) {\n fonts = [fonts];\n }\n var weight = 400;\n var style = 'normal';\n var fontFamilies = [];\n var haveWeight, haveStyle;\n for (var i = 0, ii = fonts.length; i < ii; ++i) {\n var font = fonts[i];\n var parts = font.split(' ');\n var maybeWeight = parts[parts.length - 1].toLowerCase();\n if (maybeWeight == 'normal' || maybeWeight == 'italic' || maybeWeight == 'oblique') {\n style = haveStyle ? style : maybeWeight;\n parts.pop();\n maybeWeight = parts[parts.length - 1].toLowerCase();\n } else if (italicRE.test(maybeWeight)) {\n maybeWeight = maybeWeight.replace(italicRE, '');\n style = haveStyle ? style : parts[parts.length - 1].replace(maybeWeight, '');\n }\n for (var w in fontWeights) {\n var previousPart = parts.length > 1 ? parts[parts.length - 2].toLowerCase() : '';\n if (maybeWeight == w || maybeWeight == w.replace('-', '') || previousPart + '-' + maybeWeight == w) {\n weight = haveWeight ? weight : fontWeights[w];\n parts.pop();\n if (previousPart && w.startsWith(previousPart)) {\n parts.pop();\n }\n break;\n }\n }\n if (!haveWeight && typeof maybeWeight == 'number') {\n weight = maybeWeight;\n }\n var fontFamily = parts.join(sp)\n .replace('Klokantech Noto Sans', 'Noto Sans');\n if (fontFamily.indexOf(sp) !== -1) {\n fontFamily = '\"' + fontFamily + '\"';\n }\n fontFamilies.push(fontFamily);\n }\n // CSS font property: font-style font-weight font-size/line-height font-family\n cssData = fontCache[fonts] = [style, weight, fontFamilies];\n }\n return cssData[0] + sp + cssData[1] + sp + size + 'px' + (lineHeight ? '/' + lineHeight : '') + sp + cssData[2];\n};\n","module.exports = assert\n\nclass AssertionError extends Error {}\nAssertionError.prototype.name = 'AssertionError'\n\n/**\n * Minimal assert function\n * @param {any} t Value to check if falsy\n * @param {string=} m Optional assertion error message\n * @throws {AssertionError}\n */\nfunction assert (t, m) {\n if (!t) {\n var err = new AssertionError(m)\n if (Error.captureStackTrace) Error.captureStackTrace(err, assert)\n throw err\n }\n}\n","'use strict';\n\nmodule.exports = Pbf;\n\nvar ieee754 = require('ieee754');\n\nfunction Pbf(buf) {\n this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0);\n this.pos = 0;\n this.type = 0;\n this.length = this.buf.length;\n}\n\nPbf.Varint = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nPbf.Fixed64 = 1; // 64-bit: double, fixed64, sfixed64\nPbf.Bytes = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nPbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32\n\nvar SHIFT_LEFT_32 = (1 << 16) * (1 << 16),\n SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\n// Threshold chosen based on both benchmarking and knowledge about browser string\n// data structures (which currently switch structure types at 12 bytes or more)\nvar TEXT_DECODER_MIN_LENGTH = 12;\nvar utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf8');\n\nPbf.prototype = {\n\n destroy: function() {\n this.buf = null;\n },\n\n // === READING =================================================================\n\n readFields: function(readField, result, end) {\n end = end || this.length;\n\n while (this.pos < end) {\n var val = this.readVarint(),\n tag = val >> 3,\n startPos = this.pos;\n\n this.type = val & 0x7;\n readField(tag, result, this);\n\n if (this.pos === startPos) this.skip(val);\n }\n return result;\n },\n\n readMessage: function(readField, result) {\n return this.readFields(readField, result, this.readVarint() + this.pos);\n },\n\n readFixed32: function() {\n var val = readUInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n readSFixed32: function() {\n var val = readInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n readFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readSFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readFloat: function() {\n var val = ieee754.read(this.buf, this.pos, true, 23, 4);\n this.pos += 4;\n return val;\n },\n\n readDouble: function() {\n var val = ieee754.read(this.buf, this.pos, true, 52, 8);\n this.pos += 8;\n return val;\n },\n\n readVarint: function(isSigned) {\n var buf = this.buf,\n val, b;\n\n b = buf[this.pos++]; val = b & 0x7f; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n b = buf[this.pos]; val |= (b & 0x0f) << 28;\n\n return readVarintRemainder(val, isSigned, this);\n },\n\n readVarint64: function() { // for compatibility with v2.0.1\n return this.readVarint(true);\n },\n\n readSVarint: function() {\n var num = this.readVarint();\n return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n },\n\n readBoolean: function() {\n return Boolean(this.readVarint());\n },\n\n readString: function() {\n var end = this.readVarint() + this.pos;\n var pos = this.pos;\n this.pos = end;\n\n if (end - pos >= TEXT_DECODER_MIN_LENGTH && utf8TextDecoder) {\n // longer strings are fast with the built-in browser TextDecoder API\n return readUtf8TextDecoder(this.buf, pos, end);\n }\n // short strings are fast with our custom implementation\n return readUtf8(this.buf, pos, end);\n },\n\n readBytes: function() {\n var end = this.readVarint() + this.pos,\n buffer = this.buf.subarray(this.pos, end);\n this.pos = end;\n return buffer;\n },\n\n // verbose for performance reasons; doesn't affect gzipped size\n\n readPackedVarint: function(arr, isSigned) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readVarint(isSigned));\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readVarint(isSigned));\n return arr;\n },\n readPackedSVarint: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSVarint());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSVarint());\n return arr;\n },\n readPackedBoolean: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readBoolean());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readBoolean());\n return arr;\n },\n readPackedFloat: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFloat());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFloat());\n return arr;\n },\n readPackedDouble: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readDouble());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readDouble());\n return arr;\n },\n readPackedFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed32());\n return arr;\n },\n readPackedSFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed32());\n return arr;\n },\n readPackedFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed64());\n return arr;\n },\n readPackedSFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed64());\n return arr;\n },\n\n skip: function(val) {\n var type = val & 0x7;\n if (type === Pbf.Varint) while (this.buf[this.pos++] > 0x7f) {}\n else if (type === Pbf.Bytes) this.pos = this.readVarint() + this.pos;\n else if (type === Pbf.Fixed32) this.pos += 4;\n else if (type === Pbf.Fixed64) this.pos += 8;\n else throw new Error('Unimplemented type: ' + type);\n },\n\n // === WRITING =================================================================\n\n writeTag: function(tag, type) {\n this.writeVarint((tag << 3) | type);\n },\n\n realloc: function(min) {\n var length = this.length || 16;\n\n while (length < this.pos + min) length *= 2;\n\n if (length !== this.length) {\n var buf = new Uint8Array(length);\n buf.set(this.buf);\n this.buf = buf;\n this.length = length;\n }\n },\n\n finish: function() {\n this.length = this.pos;\n this.pos = 0;\n return this.buf.subarray(0, this.length);\n },\n\n writeFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeSFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeSFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeVarint: function(val) {\n val = +val || 0;\n\n if (val > 0xfffffff || val < 0) {\n writeBigVarint(val, this);\n return;\n }\n\n this.realloc(4);\n\n this.buf[this.pos++] = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = (val >>> 7) & 0x7f;\n },\n\n writeSVarint: function(val) {\n this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n },\n\n writeBoolean: function(val) {\n this.writeVarint(Boolean(val));\n },\n\n writeString: function(str) {\n str = String(str);\n this.realloc(str.length * 4);\n\n this.pos++; // reserve 1 byte for short string length\n\n var startPos = this.pos;\n // write the string directly to the buffer and see how much was written\n this.pos = writeUtf8(this.buf, str, this.pos);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeFloat: function(val) {\n this.realloc(4);\n ieee754.write(this.buf, val, this.pos, true, 23, 4);\n this.pos += 4;\n },\n\n writeDouble: function(val) {\n this.realloc(8);\n ieee754.write(this.buf, val, this.pos, true, 52, 8);\n this.pos += 8;\n },\n\n writeBytes: function(buffer) {\n var len = buffer.length;\n this.writeVarint(len);\n this.realloc(len);\n for (var i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n },\n\n writeRawMessage: function(fn, obj) {\n this.pos++; // reserve 1 byte for short message length\n\n // write the message directly to the buffer and see how much was written\n var startPos = this.pos;\n fn(obj, this);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeMessage: function(tag, fn, obj) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeRawMessage(fn, obj);\n },\n\n writePackedVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedVarint, arr); },\n writePackedSVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSVarint, arr); },\n writePackedBoolean: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedBoolean, arr); },\n writePackedFloat: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFloat, arr); },\n writePackedDouble: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedDouble, arr); },\n writePackedFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed32, arr); },\n writePackedSFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed32, arr); },\n writePackedFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed64, arr); },\n writePackedSFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed64, arr); },\n\n writeBytesField: function(tag, buffer) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeBytes(buffer);\n },\n writeFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFixed32(val);\n },\n writeSFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeSFixed32(val);\n },\n writeFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeFixed64(val);\n },\n writeSFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeSFixed64(val);\n },\n writeVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeVarint(val);\n },\n writeSVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeSVarint(val);\n },\n writeStringField: function(tag, str) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeString(str);\n },\n writeFloatField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFloat(val);\n },\n writeDoubleField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeDouble(val);\n },\n writeBooleanField: function(tag, val) {\n this.writeVarintField(tag, Boolean(val));\n }\n};\n\nfunction readVarintRemainder(l, s, p) {\n var buf = p.buf,\n h, b;\n\n b = buf[p.pos++]; h = (b & 0x70) >> 4; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 3; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);\n\n throw new Error('Expected varint not more than 10 bytes');\n}\n\nfunction readPackedEnd(pbf) {\n return pbf.type === Pbf.Bytes ?\n pbf.readVarint() + pbf.pos : pbf.pos + 1;\n}\n\nfunction toNum(low, high, isSigned) {\n if (isSigned) {\n return high * 0x100000000 + (low >>> 0);\n }\n\n return ((high >>> 0) * 0x100000000) + (low >>> 0);\n}\n\nfunction writeBigVarint(val, pbf) {\n var low, high;\n\n if (val >= 0) {\n low = (val % 0x100000000) | 0;\n high = (val / 0x100000000) | 0;\n } else {\n low = ~(-val % 0x100000000);\n high = ~(-val / 0x100000000);\n\n if (low ^ 0xffffffff) {\n low = (low + 1) | 0;\n } else {\n low = 0;\n high = (high + 1) | 0;\n }\n }\n\n if (val >= 0x10000000000000000 || val < -0x10000000000000000) {\n throw new Error('Given varint doesn\\'t fit into 10 bytes');\n }\n\n pbf.realloc(10);\n\n writeBigVarintLow(low, high, pbf);\n writeBigVarintHigh(high, pbf);\n}\n\nfunction writeBigVarintLow(low, high, pbf) {\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos] = low & 0x7f;\n}\n\nfunction writeBigVarintHigh(high, pbf) {\n var lsb = (high & 0x07) << 4;\n\n pbf.buf[pbf.pos++] |= lsb | ((high >>>= 3) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f;\n}\n\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n var extraLen =\n len <= 0x3fff ? 1 :\n len <= 0x1fffff ? 2 :\n len <= 0xfffffff ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7));\n\n // if 1 byte isn't enough for encoding message length, shift the data to the right\n pbf.realloc(extraLen);\n for (var i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\nfunction writePackedVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]); }\nfunction writePackedSVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]); }\nfunction writePackedFloat(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]); }\nfunction writePackedDouble(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]); }\nfunction writePackedBoolean(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]); }\nfunction writePackedFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]); }\nfunction writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]); }\nfunction writePackedFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]); }\nfunction writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); }\n\n// Buffer code below from https://github.com/feross/buffer, MIT-licensed\n\nfunction readUInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] * 0x1000000);\n}\n\nfunction writeInt32(buf, val, pos) {\n buf[pos] = val;\n buf[pos + 1] = (val >>> 8);\n buf[pos + 2] = (val >>> 16);\n buf[pos + 3] = (val >>> 24);\n}\n\nfunction readInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] << 24);\n}\n\nfunction readUtf8(buf, pos, end) {\n var str = '';\n var i = pos;\n\n while (i < end) {\n var b0 = buf[i];\n var c = null; // codepoint\n var bytesPerSequence =\n b0 > 0xEF ? 4 :\n b0 > 0xDF ? 3 :\n b0 > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence > end) break;\n\n var b1, b2, b3;\n\n if (bytesPerSequence === 1) {\n if (b0 < 0x80) {\n c = b0;\n }\n } else if (bytesPerSequence === 2) {\n b1 = buf[i + 1];\n if ((b1 & 0xC0) === 0x80) {\n c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);\n if (c <= 0x7F) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 3) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);\n if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 4) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n b3 = buf[i + 3];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);\n if (c <= 0xFFFF || c >= 0x110000) {\n c = null;\n }\n }\n }\n\n if (c === null) {\n c = 0xFFFD;\n bytesPerSequence = 1;\n\n } else if (c > 0xFFFF) {\n c -= 0x10000;\n str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);\n c = 0xDC00 | c & 0x3FF;\n }\n\n str += String.fromCharCode(c);\n i += bytesPerSequence;\n }\n\n return str;\n}\n\nfunction readUtf8TextDecoder(buf, pos, end) {\n return utf8TextDecoder.decode(buf.subarray(pos, end));\n}\n\nfunction writeUtf8(buf, str, pos) {\n for (var i = 0, c, lead; i < str.length; i++) {\n c = str.charCodeAt(i); // code point\n\n if (c > 0xD7FF && c < 0xE000) {\n if (lead) {\n if (c < 0xDC00) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = c;\n continue;\n } else {\n c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n lead = null;\n }\n } else {\n if (c > 0xDBFF || (i + 1 === str.length)) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n } else {\n lead = c;\n }\n continue;\n }\n } else if (lead) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = null;\n }\n\n if (c < 0x80) {\n buf[pos++] = c;\n } else {\n if (c < 0x800) {\n buf[pos++] = c >> 0x6 | 0xC0;\n } else {\n if (c < 0x10000) {\n buf[pos++] = c >> 0xC | 0xE0;\n } else {\n buf[pos++] = c >> 0x12 | 0xF0;\n buf[pos++] = c >> 0xC & 0x3F | 0x80;\n }\n buf[pos++] = c >> 0x6 & 0x3F | 0x80;\n }\n buf[pos++] = c & 0x3F | 0x80;\n }\n }\n return pos;\n}\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","/**\n * @module ol/AssertionError\n */\n\n/** @type {Object} */\nconst messages = {\n 1: 'The view center is not defined',\n 2: 'The view resolution is not defined',\n 3: 'The view rotation is not defined',\n 4: '`image` and `src` cannot be provided at the same time',\n 5: '`imgSize` must be set when `image` is provided',\n 7: '`format` must be set when `url` is set',\n 8: 'Unknown `serverType` configured',\n 9: '`url` must be configured or set using `#setUrl()`',\n 10: 'The default `geometryFunction` can only handle `Point` geometries',\n 11: '`options.featureTypes` must be an Array',\n 12: '`options.geometryName` must also be provided when `options.bbox` is set',\n 13: 'Invalid corner',\n 14: 'Invalid color',\n 15: 'Tried to get a value for a key that does not exist in the cache',\n 16: 'Tried to set a value for a key that is used already',\n 17: '`resolutions` must be sorted in descending order',\n 18: 'Either `origin` or `origins` must be configured, never both',\n 19: 'Number of `tileSizes` and `resolutions` must be equal',\n 20: 'Number of `origins` and `resolutions` must be equal',\n 22: 'Either `tileSize` or `tileSizes` must be configured, never both',\n 24: 'Invalid extent or geometry provided as `geometry`',\n 25: 'Cannot fit empty extent provided as `geometry`',\n 26: 'Features must have an id set',\n 27: 'Features must have an id set',\n 28: '`renderMode` must be `\"hybrid\"` or `\"vector\"`',\n 30: 'The passed `feature` was already added to the source',\n 31: 'Tried to enqueue an `element` that was already added to the queue',\n 32: 'Transformation matrix cannot be inverted',\n 33: 'Invalid units',\n 34: 'Invalid geometry layout',\n 36: 'Unknown SRS type',\n 37: 'Unknown geometry type found',\n 38: '`styleMapValue` has an unknown type',\n 39: 'Unknown geometry type',\n 40: 'Expected `feature` to have a geometry',\n 41: 'Expected an `ol/style/Style` or an array of `ol/style/Style.js`',\n 42: 'Question unknown, the answer is 42',\n 43: 'Expected `layers` to be an array or a `Collection`',\n 47: 'Expected `controls` to be an array or an `ol/Collection`',\n 48: 'Expected `interactions` to be an array or an `ol/Collection`',\n 49: 'Expected `overlays` to be an array or an `ol/Collection`',\n 50: '`options.featureTypes` should be an Array',\n 51: 'Either `url` or `tileJSON` options must be provided',\n 52: 'Unknown `serverType` configured',\n 53: 'Unknown `tierSizeCalculation` configured',\n 55: 'The {-y} placeholder requires a tile grid with extent',\n 56: 'mapBrowserEvent must originate from a pointer event',\n 57: 'At least 2 conditions are required',\n 59: 'Invalid command found in the PBF',\n 60: 'Missing or invalid `size`',\n 61: 'Cannot determine IIIF Image API version from provided image information JSON',\n 62: 'A `WebGLArrayBuffer` must either be of type `ELEMENT_ARRAY_BUFFER` or `ARRAY_BUFFER`',\n 64: 'Layer opacity must be a number',\n 66: '`forEachFeatureAtCoordinate` cannot be used on a WebGL layer if the hit detection logic has not been enabled. This is done by providing adequate shaders using the `hitVertexShader` and `hitFragmentShader` properties of `WebGLPointsLayerRenderer`',\n 67: 'A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both',\n 68: 'A VectorTile source can only be rendered if it has a projection compatible with the view projection',\n 69: '`width` or `height` cannot be provided together with `scale`',\n};\n\n/**\n * Error object thrown when an assertion failed. This is an ECMA-262 Error,\n * extended with a `code` property.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error.\n */\nclass AssertionError extends Error {\n /**\n * @param {number} code Error code.\n */\n constructor(code) {\n const message = messages[code];\n\n super(message);\n\n /**\n * Error code. The meaning of the code can be found on\n * https://openlayers.org/en/latest/doc/errors/ (replace `latest` with\n * the version found in the OpenLayers script's header comment if a version\n * other than the latest is used).\n * @type {number}\n * @deprecated ol/AssertionError and error codes will be removed in v8.0\n * @api\n */\n this.code = code;\n\n /**\n * @type {string}\n */\n this.name = 'AssertionError';\n\n // Re-assign message, see https://github.com/Rich-Harris/buble/issues/40\n this.message = message;\n }\n}\n\nexport default AssertionError;\n","/**\n * @module ol/Collection\n */\nimport AssertionError from './AssertionError.js';\nimport BaseObject from './Object.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport Event from './events/Event.js';\n\n/**\n * @enum {string}\n * @private\n */\nconst Property = {\n LENGTH: 'length',\n};\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Collection~Collection} instances are instances of this\n * type.\n * @template T\n */\nexport class CollectionEvent extends Event {\n /**\n * @param {import(\"./CollectionEventType.js\").default} type Type.\n * @param {T} element Element.\n * @param {number} index The index of the added or removed element.\n */\n constructor(type, element, index) {\n super(type);\n\n /**\n * The element that is added to or removed from the collection.\n * @type {T}\n * @api\n */\n this.element = element;\n\n /**\n * The index of the added or removed element.\n * @type {number}\n * @api\n */\n this.index = index;\n }\n}\n\n/***\n * @template T\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature<'add'|'remove', CollectionEvent, Return> &\n * import(\"./Observable\").CombinedOnSignature} CollectionOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {boolean} [unique=false] Disallow the same item from being added to\n * the collection twice.\n */\n\n/**\n * @classdesc\n * An expanded version of standard JS Array, adding convenience methods for\n * manipulation. Add and remove changes to the Collection trigger a Collection\n * event. Note that this does not cover changes to the objects _within_ the\n * Collection; they trigger events on the appropriate object, not on the\n * Collection as a whole.\n *\n * @fires CollectionEvent\n *\n * @template T\n * @api\n */\nclass Collection extends BaseObject {\n /**\n * @param {Array} [array] Array.\n * @param {Options} [options] Collection options.\n */\n constructor(array, options) {\n super();\n\n /***\n * @type {CollectionOnSignature}\n */\n this.on;\n\n /***\n * @type {CollectionOnSignature}\n */\n this.once;\n\n /***\n * @type {CollectionOnSignature}\n */\n this.un;\n\n options = options || {};\n\n /**\n * @private\n * @type {boolean}\n */\n this.unique_ = !!options.unique;\n\n /**\n * @private\n * @type {!Array}\n */\n this.array_ = array ? array : [];\n\n if (this.unique_) {\n for (let i = 0, ii = this.array_.length; i < ii; ++i) {\n this.assertUnique_(this.array_[i], i);\n }\n }\n\n this.updateLength_();\n }\n\n /**\n * Remove all elements from the collection.\n * @api\n */\n clear() {\n while (this.getLength() > 0) {\n this.pop();\n }\n }\n\n /**\n * Add elements to the collection. This pushes each item in the provided array\n * to the end of the collection.\n * @param {!Array} arr Array.\n * @return {Collection} This collection.\n * @api\n */\n extend(arr) {\n for (let i = 0, ii = arr.length; i < ii; ++i) {\n this.push(arr[i]);\n }\n return this;\n }\n\n /**\n * Iterate over each element, calling the provided callback.\n * @param {function(T, number, Array): *} f The function to call\n * for every element. This function takes 3 arguments (the element, the\n * index and the array). The return value is ignored.\n * @api\n */\n forEach(f) {\n const array = this.array_;\n for (let i = 0, ii = array.length; i < ii; ++i) {\n f(array[i], i, array);\n }\n }\n\n /**\n * Get a reference to the underlying Array object. Warning: if the array\n * is mutated, no events will be dispatched by the collection, and the\n * collection's \"length\" property won't be in sync with the actual length\n * of the array.\n * @return {!Array} Array.\n * @api\n */\n getArray() {\n return this.array_;\n }\n\n /**\n * Get the element at the provided index.\n * @param {number} index Index.\n * @return {T} Element.\n * @api\n */\n item(index) {\n return this.array_[index];\n }\n\n /**\n * Get the length of this collection.\n * @return {number} The length of the array.\n * @observable\n * @api\n */\n getLength() {\n return this.get(Property.LENGTH);\n }\n\n /**\n * Insert an element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n insertAt(index, elem) {\n if (index < 0 || index > this.getLength()) {\n throw new Error('Index out of bounds: ' + index);\n }\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n this.array_.splice(index, 0, elem);\n this.updateLength_();\n this.dispatchEvent(\n new CollectionEvent(CollectionEventType.ADD, elem, index)\n );\n }\n\n /**\n * Remove the last element of the collection and return it.\n * Return `undefined` if the collection is empty.\n * @return {T|undefined} Element.\n * @api\n */\n pop() {\n return this.removeAt(this.getLength() - 1);\n }\n\n /**\n * Insert the provided element at the end of the collection.\n * @param {T} elem Element.\n * @return {number} New length of the collection.\n * @api\n */\n push(elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n const n = this.getLength();\n this.insertAt(n, elem);\n return this.getLength();\n }\n\n /**\n * Remove the first occurrence of an element from the collection.\n * @param {T} elem Element.\n * @return {T|undefined} The removed element or undefined if none found.\n * @api\n */\n remove(elem) {\n const arr = this.array_;\n for (let i = 0, ii = arr.length; i < ii; ++i) {\n if (arr[i] === elem) {\n return this.removeAt(i);\n }\n }\n return undefined;\n }\n\n /**\n * Remove the element at the provided index and return it.\n * Return `undefined` if the collection does not contain this index.\n * @param {number} index Index.\n * @return {T|undefined} Value.\n * @api\n */\n removeAt(index) {\n if (index < 0 || index >= this.getLength()) {\n return undefined;\n }\n const prev = this.array_[index];\n this.array_.splice(index, 1);\n this.updateLength_();\n this.dispatchEvent(\n /** @type {CollectionEvent} */ (\n new CollectionEvent(CollectionEventType.REMOVE, prev, index)\n )\n );\n return prev;\n }\n\n /**\n * Set the element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n setAt(index, elem) {\n const n = this.getLength();\n if (index >= n) {\n this.insertAt(index, elem);\n return;\n }\n if (index < 0) {\n throw new Error('Index out of bounds: ' + index);\n }\n if (this.unique_) {\n this.assertUnique_(elem, index);\n }\n const prev = this.array_[index];\n this.array_[index] = elem;\n this.dispatchEvent(\n /** @type {CollectionEvent} */ (\n new CollectionEvent(CollectionEventType.REMOVE, prev, index)\n )\n );\n this.dispatchEvent(\n /** @type {CollectionEvent} */ (\n new CollectionEvent(CollectionEventType.ADD, elem, index)\n )\n );\n }\n\n /**\n * @private\n */\n updateLength_() {\n this.set(Property.LENGTH, this.array_.length);\n }\n\n /**\n * @private\n * @param {T} elem Element.\n * @param {number} [except] Optional index to ignore.\n */\n assertUnique_(elem, except) {\n for (let i = 0, ii = this.array_.length; i < ii; ++i) {\n if (this.array_[i] === elem && i !== except) {\n throw new AssertionError(58);\n }\n }\n }\n}\n\nexport default Collection;\n","/**\n * @module ol/CollectionEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when an item is added to the collection.\n * @event module:ol/Collection.CollectionEvent#add\n * @api\n */\n ADD: 'add',\n /**\n * Triggered when an item is removed from the collection.\n * @event module:ol/Collection.CollectionEvent#remove\n * @api\n */\n REMOVE: 'remove',\n};\n","/**\n * @module ol/Disposable\n */\n\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nclass Disposable {\n constructor() {\n /**\n * The object has already been disposed.\n * @type {boolean}\n * @protected\n */\n this.disposed = false;\n }\n\n /**\n * Clean up.\n */\n dispose() {\n if (!this.disposed) {\n this.disposed = true;\n this.disposeInternal();\n }\n }\n\n /**\n * Extension point for disposable objects.\n * @protected\n */\n disposeInternal() {}\n}\n\nexport default Disposable;\n","/**\n * @module ol/Image\n */\nimport EventType from './events/EventType.js';\nimport ImageBase from './ImageBase.js';\nimport ImageState from './ImageState.js';\nimport {IMAGE_DECODE} from './has.js';\nimport {getHeight} from './extent.js';\nimport {listenOnce, unlistenByKey} from './events.js';\n\n/**\n * A function that takes an {@link module:ol/Image~ImageWrapper} for the image and a\n * `{string}` for the src as arguments. It is supposed to make it so the\n * underlying image {@link module:ol/Image~ImageWrapper#getImage} is assigned the\n * content specified by the src. If not specified, the default is\n *\n * function(image, src) {\n * image.getImage().src = src;\n * }\n *\n * Providing a custom `imageLoadFunction` can be useful to load images with\n * post requests or - in general - through XHR requests, where the src of the\n * image element would be set to a data URI when the content is loaded.\n *\n * @typedef {function(ImageWrapper, string): void} LoadFunction\n * @api\n */\n\nclass ImageWrapper extends ImageBase {\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number|undefined} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {string} src Image source URI.\n * @param {?string} crossOrigin Cross origin.\n * @param {LoadFunction} imageLoadFunction Image load function.\n * @param {CanvasRenderingContext2D} [context] Canvas context. When provided, the image will be\n * drawn into the context's canvas, and `getImage()` will return the canvas once the image\n * has finished loading.\n */\n constructor(\n extent,\n resolution,\n pixelRatio,\n src,\n crossOrigin,\n imageLoadFunction,\n context\n ) {\n super(extent, resolution, pixelRatio, ImageState.IDLE);\n\n /**\n * @private\n * @type {string}\n */\n this.src_ = src;\n\n /**\n * @private\n * @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement}\n */\n this.image_ = new Image();\n if (crossOrigin !== null) {\n this.image_.crossOrigin = crossOrigin;\n }\n\n /**\n * @private\n * @type {CanvasRenderingContext2D}\n */\n this.context_ = context;\n\n /**\n * @private\n * @type {?function():void}\n */\n this.unlisten_ = null;\n\n /**\n * @protected\n * @type {import(\"./ImageState.js\").default}\n */\n this.state = ImageState.IDLE;\n\n /**\n * @private\n * @type {LoadFunction}\n */\n this.imageLoadFunction_ = imageLoadFunction;\n }\n\n /**\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @api\n */\n getImage() {\n if (\n this.state == ImageState.LOADED &&\n this.context_ &&\n !(this.image_ instanceof HTMLCanvasElement)\n ) {\n const canvas = this.context_.canvas;\n canvas.width = this.image_.width;\n canvas.height = this.image_.height;\n this.context_.drawImage(this.image_, 0, 0);\n this.image_ = this.context_.canvas;\n }\n return this.image_;\n }\n\n /**\n * Tracks loading or read errors.\n *\n * @private\n */\n handleImageError_() {\n this.state = ImageState.ERROR;\n this.unlistenImage_();\n this.changed();\n }\n\n /**\n * Tracks successful image load.\n *\n * @private\n */\n handleImageLoad_() {\n if (this.resolution === undefined) {\n this.resolution = getHeight(this.extent) / this.image_.height;\n }\n this.state = ImageState.LOADED;\n this.unlistenImage_();\n this.changed();\n }\n\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n * @api\n */\n load() {\n if (this.state == ImageState.IDLE || this.state == ImageState.ERROR) {\n this.state = ImageState.LOADING;\n this.changed();\n this.imageLoadFunction_(this, this.src_);\n this.unlisten_ = listenImage(\n this.image_,\n this.handleImageLoad_.bind(this),\n this.handleImageError_.bind(this)\n );\n }\n }\n\n /**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image.\n */\n setImage(image) {\n this.image_ = image;\n this.resolution = getHeight(this.extent) / this.image_.height;\n }\n\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n unlistenImage_() {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n }\n}\n\n/**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image element.\n * @param {function():any} loadHandler Load callback function.\n * @param {function():any} errorHandler Error callback function.\n * @return {function():void} Callback to stop listening.\n */\nexport function listenImage(image, loadHandler, errorHandler) {\n const img = /** @type {HTMLImageElement} */ (image);\n let listening = true;\n let decoding = false;\n let loaded = false;\n\n const listenerKeys = [\n listenOnce(img, EventType.LOAD, function () {\n loaded = true;\n if (!decoding) {\n loadHandler();\n }\n }),\n ];\n\n if (img.src && IMAGE_DECODE) {\n decoding = true;\n img\n .decode()\n .then(function () {\n if (listening) {\n loadHandler();\n }\n })\n .catch(function (error) {\n if (listening) {\n if (loaded) {\n loadHandler();\n } else {\n errorHandler();\n }\n }\n });\n } else {\n listenerKeys.push(listenOnce(img, EventType.ERROR, errorHandler));\n }\n\n return function unlisten() {\n listening = false;\n listenerKeys.forEach(unlistenByKey);\n };\n}\n\nexport default ImageWrapper;\n","/**\n * @module ol/ImageState\n */\n\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n ERROR: 3,\n EMPTY: 4,\n};\n","/**\n * @module ol/ImageTile\n */\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\nimport {createCanvasContext2D} from './dom.js';\nimport {listenImage} from './Image.js';\n\nclass ImageTile extends Tile {\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {string} src Image source URI.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"./Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n * @param {import(\"./Tile.js\").Options} [options] Tile options.\n */\n constructor(tileCoord, state, src, crossOrigin, tileLoadFunction, options) {\n super(tileCoord, state, options);\n\n /**\n * @private\n * @type {?string}\n */\n this.crossOrigin_ = crossOrigin;\n\n /**\n * Image URI\n *\n * @private\n * @type {string}\n */\n this.src_ = src;\n\n this.key = src;\n\n /**\n * @private\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n this.image_ = new Image();\n if (crossOrigin !== null) {\n this.image_.crossOrigin = crossOrigin;\n }\n\n /**\n * @private\n * @type {?function():void}\n */\n this.unlisten_ = null;\n\n /**\n * @private\n * @type {import(\"./Tile.js\").LoadFunction}\n */\n this.tileLoadFunction_ = tileLoadFunction;\n }\n\n /**\n * Get the HTML image element for this tile (may be a Canvas, Image, or Video).\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @api\n */\n getImage() {\n return this.image_;\n }\n\n /**\n * Sets an HTML image element for this tile (may be a Canvas or preloaded Image).\n * @param {HTMLCanvasElement|HTMLImageElement} element Element.\n */\n setImage(element) {\n this.image_ = element;\n this.state = TileState.LOADED;\n this.unlistenImage_();\n this.changed();\n }\n\n /**\n * Tracks loading or read errors.\n *\n * @private\n */\n handleImageError_() {\n this.state = TileState.ERROR;\n this.unlistenImage_();\n this.image_ = getBlankImage();\n this.changed();\n }\n\n /**\n * Tracks successful image load.\n *\n * @private\n */\n handleImageLoad_() {\n const image = /** @type {HTMLImageElement} */ (this.image_);\n if (image.naturalWidth && image.naturalHeight) {\n this.state = TileState.LOADED;\n } else {\n this.state = TileState.EMPTY;\n }\n this.unlistenImage_();\n this.changed();\n }\n\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n *\n * To retry loading tiles on failed requests, use a custom `tileLoadFunction`\n * that checks for error status codes and reloads only when the status code is\n * 408, 429, 500, 502, 503 and 504, and only when not too many retries have been\n * made already:\n *\n * ```js\n * const retryCodes = [408, 429, 500, 502, 503, 504];\n * const retries = {};\n * source.setTileLoadFunction((tile, src) => {\n * const image = tile.getImage();\n * fetch(src)\n * .then((response) => {\n * if (retryCodes.includes(response.status)) {\n * retries[src] = (retries[src] || 0) + 1;\n * if (retries[src] <= 3) {\n * setTimeout(() => tile.load(), retries[src] * 1000);\n * }\n * return Promise.reject();\n * }\n * return response.blob();\n * })\n * .then((blob) => {\n * const imageUrl = URL.createObjectURL(blob);\n * image.src = imageUrl;\n * setTimeout(() => URL.revokeObjectURL(imageUrl), 5000);\n * })\n * .catch(() => tile.setState(3)); // error\n * });\n * ```\n *\n * @api\n */\n load() {\n if (this.state == TileState.ERROR) {\n this.state = TileState.IDLE;\n this.image_ = new Image();\n if (this.crossOrigin_ !== null) {\n this.image_.crossOrigin = this.crossOrigin_;\n }\n }\n if (this.state == TileState.IDLE) {\n this.state = TileState.LOADING;\n this.changed();\n this.tileLoadFunction_(this, this.src_);\n this.unlisten_ = listenImage(\n this.image_,\n this.handleImageLoad_.bind(this),\n this.handleImageError_.bind(this)\n );\n }\n }\n\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n unlistenImage_() {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n }\n}\n\n/**\n * Get a 1-pixel blank image.\n * @return {HTMLCanvasElement} Blank image.\n */\nfunction getBlankImage() {\n const ctx = createCanvasContext2D(1, 1);\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return ctx.canvas;\n}\n\nexport default ImageTile;\n","/**\n * @module ol/renderer/Map\n */\nimport Disposable from '../Disposable.js';\nimport {TRUE} from '../functions.js';\nimport {abstract} from '../util.js';\nimport {compose as composeTransform, makeInverse} from '../transform.js';\nimport {getWidth} from '../extent.js';\nimport {shared as iconImageCache} from '../style/IconImageCache.js';\nimport {inView} from '../layer/Layer.js';\nimport {wrapX} from '../coordinate.js';\n\n/**\n * @typedef HitMatch\n * @property {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @property {import(\"../layer/Layer.js\").default} layer Layer.\n * @property {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @property {number} distanceSq Squared distance.\n * @property {import(\"./vector.js\").FeatureCallback} callback Callback.\n * @template T\n */\n\n/**\n * @abstract\n */\nclass MapRenderer extends Disposable {\n /**\n * @param {import(\"../Map.js\").default} map Map.\n */\n constructor(map) {\n super();\n\n /**\n * @private\n * @type {import(\"../Map.js\").default}\n */\n this.map_ = map;\n }\n\n /**\n * @abstract\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\n dispatchRenderEvent(type, frameState) {\n abstract();\n }\n\n /**\n * @param {import(\"../Map.js\").FrameState} frameState FrameState.\n * @protected\n */\n calculateMatrices2D(frameState) {\n const viewState = frameState.viewState;\n const coordinateToPixelTransform = frameState.coordinateToPixelTransform;\n const pixelToCoordinateTransform = frameState.pixelToCoordinateTransform;\n\n composeTransform(\n coordinateToPixelTransform,\n frameState.size[0] / 2,\n frameState.size[1] / 2,\n 1 / viewState.resolution,\n -1 / viewState.resolution,\n -viewState.rotation,\n -viewState.center[0],\n -viewState.center[1]\n );\n\n makeInverse(pixelToCoordinateTransform, coordinateToPixelTransform);\n }\n\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../Map.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {import(\"./vector.js\").FeatureCallback} callback Feature callback.\n * @param {S} thisArg Value to use as `this` when executing `callback`.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg2 Value to use as `this` when executing `layerFilter`.\n * @return {T|undefined} Callback result.\n * @template S,T,U\n */\n forEachFeatureAtCoordinate(\n coordinate,\n frameState,\n hitTolerance,\n checkWrapped,\n callback,\n thisArg,\n layerFilter,\n thisArg2\n ) {\n let result;\n const viewState = frameState.viewState;\n\n /**\n * @param {boolean} managed Managed layer.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../layer/Layer.js\").default} layer Layer.\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @return {T|undefined} Callback result.\n */\n function forEachFeatureAtCoordinate(managed, feature, layer, geometry) {\n return callback.call(thisArg, feature, managed ? layer : null, geometry);\n }\n\n const projection = viewState.projection;\n\n const translatedCoordinate = wrapX(coordinate.slice(), projection);\n const offsets = [[0, 0]];\n if (projection.canWrapX() && checkWrapped) {\n const projectionExtent = projection.getExtent();\n const worldWidth = getWidth(projectionExtent);\n offsets.push([-worldWidth, 0], [worldWidth, 0]);\n }\n\n const layerStates = frameState.layerStatesArray;\n const numLayers = layerStates.length;\n\n const matches = /** @type {Array>} */ ([]);\n const tmpCoord = [];\n for (let i = 0; i < offsets.length; i++) {\n for (let j = numLayers - 1; j >= 0; --j) {\n const layerState = layerStates[j];\n const layer = layerState.layer;\n if (\n layer.hasRenderer() &&\n inView(layerState, viewState) &&\n layerFilter.call(thisArg2, layer)\n ) {\n const layerRenderer = layer.getRenderer();\n const source = layer.getSource();\n if (layerRenderer && source) {\n const coordinates = source.getWrapX()\n ? translatedCoordinate\n : coordinate;\n const callback = forEachFeatureAtCoordinate.bind(\n null,\n layerState.managed\n );\n tmpCoord[0] = coordinates[0] + offsets[i][0];\n tmpCoord[1] = coordinates[1] + offsets[i][1];\n result = layerRenderer.forEachFeatureAtCoordinate(\n tmpCoord,\n frameState,\n hitTolerance,\n callback,\n matches\n );\n }\n if (result) {\n return result;\n }\n }\n }\n }\n if (matches.length === 0) {\n return undefined;\n }\n const order = 1 / matches.length;\n matches.forEach((m, i) => (m.distanceSq += i * order));\n matches.sort((a, b) => a.distanceSq - b.distanceSq);\n matches.some((m) => {\n return (result = m.callback(m.feature, m.layer, m.geometry));\n });\n return result;\n }\n\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../Map.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg Value to use as `this` when executing `layerFilter`.\n * @return {boolean} Is there a feature at the given coordinate?\n * @template U\n */\n hasFeatureAtCoordinate(\n coordinate,\n frameState,\n hitTolerance,\n checkWrapped,\n layerFilter,\n thisArg\n ) {\n const hasFeature = this.forEachFeatureAtCoordinate(\n coordinate,\n frameState,\n hitTolerance,\n checkWrapped,\n TRUE,\n this,\n layerFilter,\n thisArg\n );\n\n return hasFeature !== undefined;\n }\n\n /**\n * @return {import(\"../Map.js\").default} Map.\n */\n getMap() {\n return this.map_;\n }\n\n /**\n * Render.\n * @abstract\n * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n */\n renderFrame(frameState) {\n abstract();\n }\n\n /**\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n * @protected\n */\n scheduleExpireIconCache(frameState) {\n if (iconImageCache.canExpireCache()) {\n frameState.postRenderFunctions.push(expireIconCache);\n }\n }\n}\n\n/**\n * @param {import(\"../Map.js\").default} map Map.\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\nfunction expireIconCache(map, frameState) {\n iconImageCache.expire();\n}\n\nexport default MapRenderer;\n","/**\n * @module ol/renderer/Composite\n */\nimport MapRenderer from './Map.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport RenderEvent from '../render/Event.js';\nimport RenderEventType from '../render/EventType.js';\nimport {CLASS_UNSELECTABLE} from '../css.js';\nimport {checkedFonts} from '../render/canvas.js';\nimport {inView} from '../layer/Layer.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {replaceChildren} from '../dom.js';\n\n/**\n * @classdesc\n * Canvas map renderer.\n * @api\n */\nclass CompositeMapRenderer extends MapRenderer {\n /**\n * @param {import(\"../Map.js\").default} map Map.\n */\n constructor(map) {\n super(map);\n\n /**\n * @type {import(\"../events.js\").EventsKey}\n */\n this.fontChangeListenerKey_ = listen(\n checkedFonts,\n ObjectEventType.PROPERTYCHANGE,\n map.redrawText.bind(map)\n );\n\n /**\n * @private\n * @type {HTMLDivElement}\n */\n this.element_ = document.createElement('div');\n const style = this.element_.style;\n style.position = 'absolute';\n style.width = '100%';\n style.height = '100%';\n style.zIndex = '0';\n\n this.element_.className = CLASS_UNSELECTABLE + ' ol-layers';\n\n const container = map.getViewport();\n container.insertBefore(this.element_, container.firstChild || null);\n\n /**\n * @private\n * @type {Array}\n */\n this.children_ = [];\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderedVisible_ = true;\n }\n\n /**\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\n dispatchRenderEvent(type, frameState) {\n const map = this.getMap();\n if (map.hasListener(type)) {\n const event = new RenderEvent(type, undefined, frameState);\n map.dispatchEvent(event);\n }\n }\n\n disposeInternal() {\n unlistenByKey(this.fontChangeListenerKey_);\n this.element_.parentNode.removeChild(this.element_);\n super.disposeInternal();\n }\n\n /**\n * Render.\n * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n */\n renderFrame(frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element_.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n\n this.calculateMatrices2D(frameState);\n this.dispatchRenderEvent(RenderEventType.PRECOMPOSE, frameState);\n\n const layerStatesArray = frameState.layerStatesArray.sort(function (a, b) {\n return a.zIndex - b.zIndex;\n });\n const viewState = frameState.viewState;\n\n this.children_.length = 0;\n /**\n * @type {Array}\n */\n const declutterLayers = [];\n let previousElement = null;\n for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n const layerState = layerStatesArray[i];\n frameState.layerIndex = i;\n\n const layer = layerState.layer;\n const sourceState = layer.getSourceState();\n if (\n !inView(layerState, viewState) ||\n (sourceState != 'ready' && sourceState != 'undefined')\n ) {\n layer.unrender();\n continue;\n }\n\n const element = layer.render(frameState, previousElement);\n if (!element) {\n continue;\n }\n if (element !== previousElement) {\n this.children_.push(element);\n previousElement = element;\n }\n if ('getDeclutter' in layer) {\n declutterLayers.push(\n /** @type {import(\"../layer/BaseVector.js\").default} */ (layer)\n );\n }\n }\n for (let i = declutterLayers.length - 1; i >= 0; --i) {\n declutterLayers[i].renderDeclutter(frameState);\n }\n\n replaceChildren(this.element_, this.children_);\n\n this.dispatchRenderEvent(RenderEventType.POSTCOMPOSE, frameState);\n\n if (!this.renderedVisible_) {\n this.element_.style.display = '';\n this.renderedVisible_ = true;\n }\n\n this.scheduleExpireIconCache(frameState);\n }\n}\n\nexport default CompositeMapRenderer;\n","/**\n * @module ol/MapEvent\n */\nimport Event from './events/Event.js';\n\n/**\n * @classdesc\n * Events emitted as map events are instances of this type.\n * See {@link module:ol/Map~Map} for which events trigger a map event.\n */\nclass MapEvent extends Event {\n /**\n * @param {string} type Event type.\n * @param {import(\"./Map.js\").default} map Map.\n * @param {?import(\"./Map.js\").FrameState} [frameState] Frame state.\n */\n constructor(type, map, frameState) {\n super(type);\n\n /**\n * The map where the event occurred.\n * @type {import(\"./Map.js\").default}\n * @api\n */\n this.map = map;\n\n /**\n * The frame state at the time of the event.\n * @type {?import(\"./Map.js\").FrameState}\n * @api\n */\n this.frameState = frameState !== undefined ? frameState : null;\n }\n}\n\nexport default MapEvent;\n","/**\n * @module ol/MapBrowserEvent\n */\nimport MapEvent from './MapEvent.js';\n\n/**\n * @classdesc\n * Events emitted as map browser events are instances of this type.\n * See {@link module:ol/Map~Map} for which events trigger a map browser event.\n * @template {UIEvent} EVENT\n */\nclass MapBrowserEvent extends MapEvent {\n /**\n * @param {string} type Event type.\n * @param {import(\"./Map.js\").default} map Map.\n * @param {EVENT} originalEvent Original event.\n * @param {boolean} [dragging] Is the map currently being dragged?\n * @param {import(\"./Map.js\").FrameState} [frameState] Frame state.\n * @param {Array} [activePointers] Active pointers.\n */\n constructor(type, map, originalEvent, dragging, frameState, activePointers) {\n super(type, map, frameState);\n\n /**\n * The original browser event.\n * @const\n * @type {EVENT}\n * @api\n */\n this.originalEvent = originalEvent;\n\n /**\n * The map pixel relative to the viewport corresponding to the original browser event.\n * @type {?import(\"./pixel.js\").Pixel}\n */\n this.pixel_ = null;\n\n /**\n * The coordinate in the user projection corresponding to the original browser event.\n * @type {?import(\"./coordinate.js\").Coordinate}\n */\n this.coordinate_ = null;\n\n /**\n * Indicates if the map is currently being dragged. Only set for\n * `POINTERDRAG` and `POINTERMOVE` events. Default is `false`.\n *\n * @type {boolean}\n * @api\n */\n this.dragging = dragging !== undefined ? dragging : false;\n\n /**\n * @type {Array|undefined}\n */\n this.activePointers = activePointers;\n }\n\n /**\n * The map pixel relative to the viewport corresponding to the original event.\n * @type {import(\"./pixel.js\").Pixel}\n * @api\n */\n get pixel() {\n if (!this.pixel_) {\n this.pixel_ = this.map.getEventPixel(this.originalEvent);\n }\n return this.pixel_;\n }\n set pixel(pixel) {\n this.pixel_ = pixel;\n }\n\n /**\n * The coordinate corresponding to the original browser event. This will be in the user\n * projection if one is set. Otherwise it will be in the view projection.\n * @type {import(\"./coordinate.js\").Coordinate}\n * @api\n */\n get coordinate() {\n if (!this.coordinate_) {\n this.coordinate_ = this.map.getCoordinateFromPixel(this.pixel);\n }\n return this.coordinate_;\n }\n set coordinate(coordinate) {\n this.coordinate_ = coordinate;\n }\n\n /**\n * Prevents the default browser action.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault.\n * @api\n */\n preventDefault() {\n super.preventDefault();\n if ('preventDefault' in this.originalEvent) {\n /** @type {UIEvent} */ (this.originalEvent).preventDefault();\n }\n }\n\n /**\n * Prevents further propagation of the current event.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation.\n * @api\n */\n stopPropagation() {\n super.stopPropagation();\n if ('stopPropagation' in this.originalEvent) {\n /** @type {UIEvent} */ (this.originalEvent).stopPropagation();\n }\n }\n}\n\nexport default MapBrowserEvent;\n","/**\n * @module ol/MapBrowserEventType\n */\nimport EventType from './events/EventType.js';\n\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n /**\n * A true single click with no dragging and no double click. Note that this\n * event is delayed by 250 ms to ensure that it is not a double click.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#singleclick\n * @api\n */\n SINGLECLICK: 'singleclick',\n\n /**\n * A click with no dragging. A double click will fire two of this.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#click\n * @api\n */\n CLICK: EventType.CLICK,\n\n /**\n * A true double click, with no dragging.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#dblclick\n * @api\n */\n DBLCLICK: EventType.DBLCLICK,\n\n /**\n * Triggered when a pointer is dragged.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointerdrag\n * @api\n */\n POINTERDRAG: 'pointerdrag',\n\n /**\n * Triggered when a pointer is moved. Note that on touch devices this is\n * triggered when the map is panned, so is not the same as mousemove.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointermove\n * @api\n */\n POINTERMOVE: 'pointermove',\n\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel',\n};\n\n/***\n * @typedef {'singleclick'|'click'|'dblclick'|'pointerdrag'|'pointermove'} Types\n */\n","/**\n * @module ol/pointer/EventType\n */\n\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n POINTERMOVE: 'pointermove',\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel',\n};\n","/**\n * @module ol/MapBrowserEventHandler\n */\n\nimport EventType from './events/EventType.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport Target from './events/Target.js';\nimport {PASSIVE_EVENT_LISTENERS} from './has.js';\nimport {listen, unlistenByKey} from './events.js';\n\nclass MapBrowserEventHandler extends Target {\n /**\n * @param {import(\"./Map.js\").default} map The map with the viewport to listen to events on.\n * @param {number} [moveTolerance] The minimal distance the pointer must travel to trigger a move.\n */\n constructor(map, moveTolerance) {\n super(map);\n\n /**\n * This is the element that we will listen to the real events on.\n * @type {import(\"./Map.js\").default}\n * @private\n */\n this.map_ = map;\n\n /**\n * @type {any}\n * @private\n */\n this.clickTimeoutId_;\n\n /**\n * Emulate dblclick and singleclick. Will be true when only one pointer is active.\n * @type {boolean}\n */\n this.emulateClicks_ = false;\n\n /**\n * @type {boolean}\n * @private\n */\n this.dragging_ = false;\n\n /**\n * @type {!Array}\n * @private\n */\n this.dragListenerKeys_ = [];\n\n /**\n * @type {number}\n * @private\n */\n this.moveTolerance_ = moveTolerance === undefined ? 1 : moveTolerance;\n\n /**\n * The most recent \"down\" type event (or null if none have occurred).\n * Set on pointerdown.\n * @type {PointerEvent|null}\n * @private\n */\n this.down_ = null;\n\n const element = this.map_.getViewport();\n\n /**\n * @type {Array}\n * @private\n */\n this.activePointers_ = [];\n\n /**\n * @type {!Object}\n * @private\n */\n this.trackedTouches_ = {};\n\n this.element_ = element;\n\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n this.pointerdownListenerKey_ = listen(\n element,\n PointerEventType.POINTERDOWN,\n this.handlePointerDown_,\n this\n );\n\n /**\n * @type {PointerEvent}\n * @private\n */\n this.originalPointerMoveEvent_;\n\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n this.relayedListenerKey_ = listen(\n element,\n PointerEventType.POINTERMOVE,\n this.relayMoveEvent_,\n this\n );\n\n /**\n * @private\n */\n this.boundHandleTouchMove_ = this.handleTouchMove_.bind(this);\n\n this.element_.addEventListener(\n EventType.TOUCHMOVE,\n this.boundHandleTouchMove_,\n PASSIVE_EVENT_LISTENERS ? {passive: false} : false\n );\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n emulateClick_(pointerEvent) {\n let newEvent = new MapBrowserEvent(\n MapBrowserEventType.CLICK,\n this.map_,\n pointerEvent\n );\n this.dispatchEvent(newEvent);\n if (this.clickTimeoutId_ !== undefined) {\n // double-click\n clearTimeout(this.clickTimeoutId_);\n this.clickTimeoutId_ = undefined;\n newEvent = new MapBrowserEvent(\n MapBrowserEventType.DBLCLICK,\n this.map_,\n pointerEvent\n );\n this.dispatchEvent(newEvent);\n } else {\n // click\n this.clickTimeoutId_ = setTimeout(() => {\n this.clickTimeoutId_ = undefined;\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.SINGLECLICK,\n this.map_,\n pointerEvent\n );\n this.dispatchEvent(newEvent);\n }, 250);\n }\n }\n\n /**\n * Keeps track on how many pointers are currently active.\n *\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n updateActivePointers_(pointerEvent) {\n const event = pointerEvent;\n const id = event.pointerId;\n\n if (\n event.type == MapBrowserEventType.POINTERUP ||\n event.type == MapBrowserEventType.POINTERCANCEL\n ) {\n delete this.trackedTouches_[id];\n for (const pointerId in this.trackedTouches_) {\n if (this.trackedTouches_[pointerId].target !== event.target) {\n // Some platforms assign a new pointerId when the target changes.\n // If this happens, delete one tracked pointer. If there is more\n // than one tracked pointer for the old target, it will be cleared\n // by subsequent POINTERUP events from other pointers.\n delete this.trackedTouches_[pointerId];\n break;\n }\n }\n } else if (\n event.type == MapBrowserEventType.POINTERDOWN ||\n event.type == MapBrowserEventType.POINTERMOVE\n ) {\n this.trackedTouches_[id] = event;\n }\n this.activePointers_ = Object.values(this.trackedTouches_);\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerUp_(pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.POINTERUP,\n this.map_,\n pointerEvent,\n undefined,\n undefined,\n this.activePointers_\n );\n this.dispatchEvent(newEvent);\n\n // We emulate click events on left mouse button click, touch contact, and pen\n // contact. isMouseActionButton returns true in these cases (evt.button is set\n // to 0).\n // See http://www.w3.org/TR/pointerevents/#button-states\n // We only fire click, singleclick, and doubleclick if nobody has called\n // event.preventDefault().\n if (\n this.emulateClicks_ &&\n !newEvent.defaultPrevented &&\n !this.dragging_ &&\n this.isMouseActionButton_(pointerEvent)\n ) {\n this.emulateClick_(this.down_);\n }\n\n if (this.activePointers_.length === 0) {\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.dragging_ = false;\n this.down_ = null;\n }\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} If the left mouse button was pressed.\n * @private\n */\n isMouseActionButton_(pointerEvent) {\n return pointerEvent.button === 0;\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerDown_(pointerEvent) {\n this.emulateClicks_ = this.activePointers_.length === 0;\n this.updateActivePointers_(pointerEvent);\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.POINTERDOWN,\n this.map_,\n pointerEvent,\n undefined,\n undefined,\n this.activePointers_\n );\n this.dispatchEvent(newEvent);\n\n this.down_ = new PointerEvent(pointerEvent.type, pointerEvent);\n Object.defineProperty(this.down_, 'target', {\n writable: false,\n value: pointerEvent.target,\n });\n\n if (this.dragListenerKeys_.length === 0) {\n const doc = this.map_.getOwnerDocument();\n this.dragListenerKeys_.push(\n listen(\n doc,\n MapBrowserEventType.POINTERMOVE,\n this.handlePointerMove_,\n this\n ),\n listen(doc, MapBrowserEventType.POINTERUP, this.handlePointerUp_, this),\n /* Note that the listener for `pointercancel is set up on\n * `pointerEventHandler_` and not `documentPointerEventHandler_` like\n * the `pointerup` and `pointermove` listeners.\n *\n * The reason for this is the following: `TouchSource.vacuumTouches_()`\n * issues `pointercancel` events, when there was no `touchend` for a\n * `touchstart`. Now, let's say a first `touchstart` is registered on\n * `pointerEventHandler_`. The `documentPointerEventHandler_` is set up.\n * But `documentPointerEventHandler_` doesn't know about the first\n * `touchstart`. If there is no `touchend` for the `touchstart`, we can\n * only receive a `touchcancel` from `pointerEventHandler_`, because it is\n * only registered there.\n */\n listen(\n this.element_,\n MapBrowserEventType.POINTERCANCEL,\n this.handlePointerUp_,\n this\n )\n );\n if (this.element_.getRootNode && this.element_.getRootNode() !== doc) {\n this.dragListenerKeys_.push(\n listen(\n this.element_.getRootNode(),\n MapBrowserEventType.POINTERUP,\n this.handlePointerUp_,\n this\n )\n );\n }\n }\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerMove_(pointerEvent) {\n // Between pointerdown and pointerup, pointermove events are triggered.\n // To avoid a 'false' touchmove event to be dispatched, we test if the pointer\n // moved a significant distance.\n if (this.isMoving_(pointerEvent)) {\n this.updateActivePointers_(pointerEvent);\n this.dragging_ = true;\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.POINTERDRAG,\n this.map_,\n pointerEvent,\n this.dragging_,\n undefined,\n this.activePointers_\n );\n this.dispatchEvent(newEvent);\n }\n }\n\n /**\n * Wrap and relay a pointermove event.\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n relayMoveEvent_(pointerEvent) {\n this.originalPointerMoveEvent_ = pointerEvent;\n const dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n this.dispatchEvent(\n new MapBrowserEvent(\n MapBrowserEventType.POINTERMOVE,\n this.map_,\n pointerEvent,\n dragging\n )\n );\n }\n\n /**\n * Flexible handling of a `touch-action: none` css equivalent: because calling\n * `preventDefault()` on a `pointermove` event does not stop native page scrolling\n * and zooming, we also listen for `touchmove` and call `preventDefault()` on it\n * when an interaction (currently `DragPan` handles the event.\n * @param {TouchEvent} event Event.\n * @private\n */\n handleTouchMove_(event) {\n // Due to https://github.com/mpizenberg/elm-pep/issues/2, `this.originalPointerMoveEvent_`\n // may not be initialized yet when we get here on a platform without native pointer events.\n const originalEvent = this.originalPointerMoveEvent_;\n if (\n (!originalEvent || originalEvent.defaultPrevented) &&\n (typeof event.cancelable !== 'boolean' || event.cancelable === true)\n ) {\n event.preventDefault();\n }\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} Is moving.\n * @private\n */\n isMoving_(pointerEvent) {\n return (\n this.dragging_ ||\n Math.abs(pointerEvent.clientX - this.down_.clientX) >\n this.moveTolerance_ ||\n Math.abs(pointerEvent.clientY - this.down_.clientY) > this.moveTolerance_\n );\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n if (this.relayedListenerKey_) {\n unlistenByKey(this.relayedListenerKey_);\n this.relayedListenerKey_ = null;\n }\n this.element_.removeEventListener(\n EventType.TOUCHMOVE,\n this.boundHandleTouchMove_\n );\n\n if (this.pointerdownListenerKey_) {\n unlistenByKey(this.pointerdownListenerKey_);\n this.pointerdownListenerKey_ = null;\n }\n\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n\n this.element_ = null;\n super.disposeInternal();\n }\n}\n\nexport default MapBrowserEventHandler;\n","/**\n * @module ol/MapEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered after a map frame is rendered.\n * @event module:ol/MapEvent~MapEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n\n /**\n * Triggered when the map starts moving.\n * @event module:ol/MapEvent~MapEvent#movestart\n * @api\n */\n MOVESTART: 'movestart',\n\n /**\n * Triggered after the map is moved.\n * @event module:ol/MapEvent~MapEvent#moveend\n * @api\n */\n MOVEEND: 'moveend',\n\n /**\n * Triggered when loading of additional map data (tiles, images, features) starts.\n * @event module:ol/MapEvent~MapEvent#loadstart\n * @api\n */\n LOADSTART: 'loadstart',\n\n /**\n * Triggered when loading of additional map data has completed.\n * @event module:ol/MapEvent~MapEvent#loadend\n * @api\n */\n LOADEND: 'loadend',\n};\n\n/***\n * @typedef {'postrender'|'movestart'|'moveend'|'loadstart'|'loadend'} Types\n */\n","/**\n * @module ol/MapProperty\n */\n\n/**\n * @enum {string}\n */\nexport default {\n LAYERGROUP: 'layergroup',\n SIZE: 'size',\n TARGET: 'target',\n VIEW: 'view',\n};\n","/**\n * @module ol/control/Control\n */\nimport BaseObject from '../Object.js';\nimport MapEventType from '../MapEventType.js';\nimport {VOID} from '../functions.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {removeNode} from '../dom.js';\n\n/**\n * @typedef {Object} Options\n * @property {HTMLElement} [element] The element is the control's\n * container element. This only needs to be specified if you're developing\n * a custom control.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n * @property {HTMLElement|string} [target] Specify a target if you want\n * the control to be rendered outside of the map's viewport.\n */\n\n/**\n * @classdesc\n * A control is a visible widget with a DOM element in a fixed position on the\n * screen. They can involve user input (buttons), or be informational only;\n * the position is determined using CSS. By default these are placed in the\n * container with CSS class name `ol-overlaycontainer-stopevent`, but can use\n * any outside DOM element.\n *\n * This is the base class for controls. You can use it for simple custom\n * controls by creating the element with listeners, creating an instance:\n * ```js\n * const myControl = new Control({element: myElement});\n * ```\n * and then adding this to the map.\n *\n * The main advantage of having this as a control rather than a simple separate\n * DOM element is that preventing propagation is handled for you. Controls\n * will also be objects in a {@link module:ol/Collection~Collection}, so you can use their methods.\n *\n * You can also extend this base for your own control class. See\n * examples/custom-controls for an example of how to do this.\n *\n * @api\n */\nclass Control extends BaseObject {\n /**\n * @param {Options} options Control options.\n */\n constructor(options) {\n super();\n\n const element = options.element;\n if (element && !options.target && !element.style.pointerEvents) {\n element.style.pointerEvents = 'auto';\n }\n\n /**\n * @protected\n * @type {HTMLElement}\n */\n this.element = element ? element : null;\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.target_ = null;\n\n /**\n * @private\n * @type {import(\"../Map.js\").default|null}\n */\n this.map_ = null;\n\n /**\n * @protected\n * @type {!Array}\n */\n this.listenerKeys = [];\n\n if (options.render) {\n this.render = options.render;\n }\n\n if (options.target) {\n this.setTarget(options.target);\n }\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n removeNode(this.element);\n super.disposeInternal();\n }\n\n /**\n * Get the map associated with this control.\n * @return {import(\"../Map.js\").default|null} Map.\n * @api\n */\n getMap() {\n return this.map_;\n }\n\n /**\n * Remove the control from its current map and attach it to the new map.\n * Pass `null` to just remove the control from the current map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../Map.js\").default|null} map Map.\n * @api\n */\n setMap(map) {\n if (this.map_) {\n removeNode(this.element);\n }\n for (let i = 0, ii = this.listenerKeys.length; i < ii; ++i) {\n unlistenByKey(this.listenerKeys[i]);\n }\n this.listenerKeys.length = 0;\n this.map_ = map;\n if (map) {\n const target = this.target_\n ? this.target_\n : map.getOverlayContainerStopEvent();\n target.appendChild(this.element);\n if (this.render !== VOID) {\n this.listenerKeys.push(\n listen(map, MapEventType.POSTRENDER, this.render, this)\n );\n }\n map.render();\n }\n }\n\n /**\n * Renders the control.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @api\n */\n render(mapEvent) {}\n\n /**\n * This function is used to set a target element for the control. It has no\n * effect if it is called after the control has been added to the map (i.e.\n * after `setMap` is called on the control). If no `target` is set in the\n * options passed to the control constructor and if `setTarget` is not called\n * then the control is added to the map's overlay container.\n * @param {HTMLElement|string} target Target.\n * @api\n */\n setTarget(target) {\n this.target_ =\n typeof target === 'string' ? document.getElementById(target) : target;\n }\n}\n\nexport default Control;\n","/**\n * @module ol/control/Attribution\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport {CLASS_COLLAPSED, CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {equals} from '../array.js';\nimport {removeChildren, replaceNode} from '../dom.js';\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-attribution'] CSS class name.\n * @property {HTMLElement|string} [target] Specify a target if you\n * want the control to be rendered outside of the map's\n * viewport.\n * @property {boolean} [collapsible] Specify if attributions can\n * be collapsed. If not specified, sources control this behavior with their\n * `attributionsCollapsible` setting.\n * @property {boolean} [collapsed=true] Specify if attributions should\n * be collapsed at startup.\n * @property {string} [tipLabel='Attributions'] Text label to use for the button tip.\n * @property {string|HTMLElement} [label='i'] Text label to use for the\n * collapsed attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [expandClassName=className + '-expand'] CSS class name for the\n * collapsed attributions button.\n * @property {string|HTMLElement} [collapseLabel='›'] Text label to use\n * for the expanded attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [collapseClassName=className + '-collapse'] CSS class name for the\n * expanded attributions button.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n */\n\n/**\n * @classdesc\n * Control to show all the attributions associated with the layer sources\n * in the map. This control is one of the default controls included in maps.\n * By default it will show in the bottom right portion of the map, but this can\n * be changed by using a css selector for `.ol-attribution`.\n *\n * @api\n */\nclass Attribution extends Control {\n /**\n * @param {Options} [options] Attribution options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n });\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.ulElement_ = document.createElement('ul');\n\n /**\n * @private\n * @type {boolean}\n */\n this.collapsed_ =\n options.collapsed !== undefined ? options.collapsed : true;\n\n /**\n * @private\n * @type {boolean}\n */\n this.userCollapsed_ = this.collapsed_;\n\n /**\n * @private\n * @type {boolean}\n */\n this.overrideCollapsible_ = options.collapsible !== undefined;\n\n /**\n * @private\n * @type {boolean}\n */\n this.collapsible_ =\n options.collapsible !== undefined ? options.collapsible : true;\n\n if (!this.collapsible_) {\n this.collapsed_ = false;\n }\n\n const className =\n options.className !== undefined ? options.className : 'ol-attribution';\n\n const tipLabel =\n options.tipLabel !== undefined ? options.tipLabel : 'Attributions';\n\n const expandClassName =\n options.expandClassName !== undefined\n ? options.expandClassName\n : className + '-expand';\n\n const collapseLabel =\n options.collapseLabel !== undefined ? options.collapseLabel : '\\u203A';\n\n const collapseClassName =\n options.collapseClassName !== undefined\n ? options.collapseClassName\n : className + '-collapse';\n\n if (typeof collapseLabel === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n this.collapseLabel_ = document.createElement('span');\n this.collapseLabel_.textContent = collapseLabel;\n this.collapseLabel_.className = collapseClassName;\n } else {\n this.collapseLabel_ = collapseLabel;\n }\n\n const label = options.label !== undefined ? options.label : 'i';\n\n if (typeof label === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n this.label_ = document.createElement('span');\n this.label_.textContent = label;\n this.label_.className = expandClassName;\n } else {\n this.label_ = label;\n }\n\n const activeLabel =\n this.collapsible_ && !this.collapsed_ ? this.collapseLabel_ : this.label_;\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.toggleButton_ = document.createElement('button');\n this.toggleButton_.setAttribute('type', 'button');\n this.toggleButton_.setAttribute('aria-expanded', String(!this.collapsed_));\n this.toggleButton_.title = tipLabel;\n this.toggleButton_.appendChild(activeLabel);\n\n this.toggleButton_.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this),\n false\n );\n\n const cssClasses =\n className +\n ' ' +\n CLASS_UNSELECTABLE +\n ' ' +\n CLASS_CONTROL +\n (this.collapsed_ && this.collapsible_ ? ' ' + CLASS_COLLAPSED : '') +\n (this.collapsible_ ? '' : ' ol-uncollapsible');\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(this.toggleButton_);\n element.appendChild(this.ulElement_);\n\n /**\n * A list of currently rendered resolutions.\n * @type {Array}\n * @private\n */\n this.renderedAttributions_ = [];\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderedVisible_ = true;\n }\n\n /**\n * Collect a list of visible attributions and set the collapsible state.\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n * @return {Array} Attributions.\n * @private\n */\n collectSourceAttributions_(frameState) {\n const visibleAttributions = Array.from(\n new Set(\n this.getMap()\n .getAllLayers()\n .flatMap((layer) => layer.getAttributions(frameState))\n )\n );\n\n const collapsible = !this.getMap()\n .getAllLayers()\n .some(\n (layer) =>\n layer.getSource() &&\n layer.getSource().getAttributionsCollapsible() === false\n );\n if (!this.overrideCollapsible_) {\n this.setCollapsible(collapsible);\n }\n return visibleAttributions;\n }\n\n /**\n * @private\n * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n */\n updateElement_(frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n\n const attributions = this.collectSourceAttributions_(frameState);\n\n const visible = attributions.length > 0;\n if (this.renderedVisible_ != visible) {\n this.element.style.display = visible ? '' : 'none';\n this.renderedVisible_ = visible;\n }\n\n if (equals(attributions, this.renderedAttributions_)) {\n return;\n }\n\n removeChildren(this.ulElement_);\n\n // append the attributions\n for (let i = 0, ii = attributions.length; i < ii; ++i) {\n const element = document.createElement('li');\n element.innerHTML = attributions[i];\n this.ulElement_.appendChild(element);\n }\n\n this.renderedAttributions_ = attributions;\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n this.handleToggle_();\n this.userCollapsed_ = this.collapsed_;\n }\n\n /**\n * @private\n */\n handleToggle_() {\n this.element.classList.toggle(CLASS_COLLAPSED);\n if (this.collapsed_) {\n replaceNode(this.collapseLabel_, this.label_);\n } else {\n replaceNode(this.label_, this.collapseLabel_);\n }\n this.collapsed_ = !this.collapsed_;\n this.toggleButton_.setAttribute('aria-expanded', String(!this.collapsed_));\n }\n\n /**\n * Return `true` if the attribution is collapsible, `false` otherwise.\n * @return {boolean} True if the widget is collapsible.\n * @api\n */\n getCollapsible() {\n return this.collapsible_;\n }\n\n /**\n * Set whether the attribution should be collapsible.\n * @param {boolean} collapsible True if the widget is collapsible.\n * @api\n */\n setCollapsible(collapsible) {\n if (this.collapsible_ === collapsible) {\n return;\n }\n this.collapsible_ = collapsible;\n this.element.classList.toggle('ol-uncollapsible');\n if (this.userCollapsed_) {\n this.handleToggle_();\n }\n }\n\n /**\n * Collapse or expand the attribution according to the passed parameter. Will\n * not do anything if the attribution isn't collapsible or if the current\n * collapsed state is already the one requested.\n * @param {boolean} collapsed True if the widget is collapsed.\n * @api\n */\n setCollapsed(collapsed) {\n this.userCollapsed_ = collapsed;\n if (!this.collapsible_ || this.collapsed_ === collapsed) {\n return;\n }\n this.handleToggle_();\n }\n\n /**\n * Return `true` when the attribution is currently collapsed or `false`\n * otherwise.\n * @return {boolean} True if the widget is collapsed.\n * @api\n */\n getCollapsed() {\n return this.collapsed_;\n }\n\n /**\n * Update the attribution element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n render(mapEvent) {\n this.updateElement_(mapEvent.frameState);\n }\n}\n\nexport default Attribution;\n","/**\n * @module ol/control/Rotate\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport {CLASS_CONTROL, CLASS_HIDDEN, CLASS_UNSELECTABLE} from '../css.js';\nimport {easeOut} from '../easing.js';\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-rotate'] CSS class name.\n * @property {string|HTMLElement} [label='⇧'] Text label to use for the rotate button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Reset rotation'] Text label to use for the rotate tip.\n * @property {string} [compassClassName='ol-compass'] CSS class name for the compass.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {boolean} [autoHide=true] Hide the control when rotation is 0.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control should\n * be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {function():void} [resetNorth] Function called when the control is clicked.\n * This will override the default `resetNorth`.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n\n/**\n * @classdesc\n * A button control to reset rotation to 0.\n * To style this control use css selector `.ol-rotate`. A `.ol-hidden` css\n * selector is added to the button when the rotation is 0.\n *\n * @api\n */\nclass Rotate extends Control {\n /**\n * @param {Options} [options] Rotate options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n });\n\n const className =\n options.className !== undefined ? options.className : 'ol-rotate';\n\n const label = options.label !== undefined ? options.label : '\\u21E7';\n\n const compassClassName =\n options.compassClassName !== undefined\n ? options.compassClassName\n : 'ol-compass';\n\n /**\n * @type {HTMLElement}\n * @private\n */\n this.label_ = null;\n\n if (typeof label === 'string') {\n this.label_ = document.createElement('span');\n this.label_.className = compassClassName;\n this.label_.textContent = label;\n } else {\n this.label_ = label;\n this.label_.classList.add(compassClassName);\n }\n\n const tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';\n\n const button = document.createElement('button');\n button.className = className + '-reset';\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(this.label_);\n\n button.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this),\n false\n );\n\n const cssClasses =\n className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(button);\n\n this.callResetNorth_ = options.resetNorth ? options.resetNorth : undefined;\n\n /**\n * @type {number}\n * @private\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n\n /**\n * @type {boolean}\n * @private\n */\n this.autoHide_ = options.autoHide !== undefined ? options.autoHide : true;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.rotation_ = undefined;\n\n if (this.autoHide_) {\n this.element.classList.add(CLASS_HIDDEN);\n }\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n if (this.callResetNorth_ !== undefined) {\n this.callResetNorth_();\n } else {\n this.resetNorth_();\n }\n }\n\n /**\n * @private\n */\n resetNorth_() {\n const map = this.getMap();\n const view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n const rotation = view.getRotation();\n if (rotation !== undefined) {\n if (this.duration_ > 0 && rotation % (2 * Math.PI) !== 0) {\n view.animate({\n rotation: 0,\n duration: this.duration_,\n easing: easeOut,\n });\n } else {\n view.setRotation(0);\n }\n }\n }\n\n /**\n * Update the rotate control element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n render(mapEvent) {\n const frameState = mapEvent.frameState;\n if (!frameState) {\n return;\n }\n const rotation = frameState.viewState.rotation;\n if (rotation != this.rotation_) {\n const transform = 'rotate(' + rotation + 'rad)';\n if (this.autoHide_) {\n const contains = this.element.classList.contains(CLASS_HIDDEN);\n if (!contains && rotation === 0) {\n this.element.classList.add(CLASS_HIDDEN);\n } else if (contains && rotation !== 0) {\n this.element.classList.remove(CLASS_HIDDEN);\n }\n }\n this.label_.style.transform = transform;\n }\n this.rotation_ = rotation;\n }\n}\n\nexport default Rotate;\n","/**\n * @module ol/control/Zoom\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {easeOut} from '../easing.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {string} [className='ol-zoom'] CSS class name.\n * @property {string} [zoomInClassName=className + '-in'] CSS class name for the zoom-in button.\n * @property {string} [zoomOutClassName=className + '-out'] CSS class name for the zoom-out button.\n * @property {string|HTMLElement} [zoomInLabel='+'] Text label to use for the zoom-in\n * button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [zoomOutLabel='–'] Text label to use for the zoom-out button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [zoomInTipLabel='Zoom in'] Text label to use for the button tip.\n * @property {string} [zoomOutTipLabel='Zoom out'] Text label to use for the button tip.\n * @property {number} [delta=1] The zoom delta applied on each click.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n\n/**\n * @classdesc\n * A control with 2 buttons, one for zoom in and one for zoom out.\n * This control is one of the default controls of a map. To style this control\n * use css selectors `.ol-zoom-in` and `.ol-zoom-out`.\n *\n * @api\n */\nclass Zoom extends Control {\n /**\n * @param {Options} [options] Zoom options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n element: document.createElement('div'),\n target: options.target,\n });\n\n const className =\n options.className !== undefined ? options.className : 'ol-zoom';\n\n const delta = options.delta !== undefined ? options.delta : 1;\n\n const zoomInClassName =\n options.zoomInClassName !== undefined\n ? options.zoomInClassName\n : className + '-in';\n\n const zoomOutClassName =\n options.zoomOutClassName !== undefined\n ? options.zoomOutClassName\n : className + '-out';\n\n const zoomInLabel =\n options.zoomInLabel !== undefined ? options.zoomInLabel : '+';\n const zoomOutLabel =\n options.zoomOutLabel !== undefined ? options.zoomOutLabel : '\\u2013';\n\n const zoomInTipLabel =\n options.zoomInTipLabel !== undefined ? options.zoomInTipLabel : 'Zoom in';\n const zoomOutTipLabel =\n options.zoomOutTipLabel !== undefined\n ? options.zoomOutTipLabel\n : 'Zoom out';\n\n const inElement = document.createElement('button');\n inElement.className = zoomInClassName;\n inElement.setAttribute('type', 'button');\n inElement.title = zoomInTipLabel;\n inElement.appendChild(\n typeof zoomInLabel === 'string'\n ? document.createTextNode(zoomInLabel)\n : zoomInLabel\n );\n\n inElement.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this, delta),\n false\n );\n\n const outElement = document.createElement('button');\n outElement.className = zoomOutClassName;\n outElement.setAttribute('type', 'button');\n outElement.title = zoomOutTipLabel;\n outElement.appendChild(\n typeof zoomOutLabel === 'string'\n ? document.createTextNode(zoomOutLabel)\n : zoomOutLabel\n );\n\n outElement.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this, -delta),\n false\n );\n\n const cssClasses =\n className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(inElement);\n element.appendChild(outElement);\n\n /**\n * @type {number}\n * @private\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n }\n\n /**\n * @param {number} delta Zoom delta.\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(delta, event) {\n event.preventDefault();\n this.zoomByDelta_(delta);\n }\n\n /**\n * @param {number} delta Zoom delta.\n * @private\n */\n zoomByDelta_(delta) {\n const map = this.getMap();\n const view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n const currentZoom = view.getZoom();\n if (currentZoom !== undefined) {\n const newZoom = view.getConstrainedZoom(currentZoom + delta);\n if (this.duration_ > 0) {\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n zoom: newZoom,\n duration: this.duration_,\n easing: easeOut,\n });\n } else {\n view.setZoom(newZoom);\n }\n }\n }\n}\n\nexport default Zoom;\n","/**\n * @module ol/interaction/Property\n */\n\n/**\n * @enum {string}\n */\nexport default {\n ACTIVE: 'active',\n};\n","/**\n * @module ol/interaction/Interaction\n */\nimport BaseObject from '../Object.js';\nimport InteractionProperty from './Property.js';\nimport {easeOut, linear} from '../easing.js';\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} InteractionOnSignature\n */\n\n/**\n * Object literal with config options for interactions.\n * @typedef {Object} InteractionOptions\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} handleEvent\n * Method called by the map to notify the interaction that a browser event was\n * dispatched to the map. If the function returns a falsy value, propagation of\n * the event to other interactions in the map's interactions chain will be\n * prevented (this includes functions with no explicit return). The interactions\n * are traversed in reverse order of the interactions collection of the map.\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * User actions that change the state of the map. Some are similar to controls,\n * but are not associated with a DOM element.\n * For example, {@link module:ol/interaction/KeyboardZoom~KeyboardZoom} is\n * functionally the same as {@link module:ol/control/Zoom~Zoom}, but triggered\n * by a keyboard event not a button element event.\n * Although interactions do not have a DOM element, some of them do render\n * vectors and so are visible on the screen.\n * @api\n */\nclass Interaction extends BaseObject {\n /**\n * @param {InteractionOptions} [options] Options.\n */\n constructor(options) {\n super();\n\n /***\n * @type {InteractionOnSignature}\n */\n this.on;\n\n /***\n * @type {InteractionOnSignature}\n */\n this.once;\n\n /***\n * @type {InteractionOnSignature}\n */\n this.un;\n\n if (options && options.handleEvent) {\n this.handleEvent = options.handleEvent;\n }\n\n /**\n * @private\n * @type {import(\"../Map.js\").default|null}\n */\n this.map_ = null;\n\n this.setActive(true);\n }\n\n /**\n * Return whether the interaction is currently active.\n * @return {boolean} `true` if the interaction is active, `false` otherwise.\n * @observable\n * @api\n */\n getActive() {\n return /** @type {boolean} */ (this.get(InteractionProperty.ACTIVE));\n }\n\n /**\n * Get the map associated with this interaction.\n * @return {import(\"../Map.js\").default|null} Map.\n * @api\n */\n getMap() {\n return this.map_;\n }\n\n /**\n * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event}.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @api\n */\n handleEvent(mapBrowserEvent) {\n return true;\n }\n\n /**\n * Activate or deactivate the interaction.\n * @param {boolean} active Active.\n * @observable\n * @api\n */\n setActive(active) {\n this.set(InteractionProperty.ACTIVE, active);\n }\n\n /**\n * Remove the interaction from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../Map.js\").default|null} map Map.\n */\n setMap(map) {\n this.map_ = map;\n }\n}\n\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {import(\"../coordinate.js\").Coordinate} delta Delta.\n * @param {number} [duration] Duration.\n */\nexport function pan(view, delta, duration) {\n const currentCenter = view.getCenterInternal();\n if (currentCenter) {\n const center = [currentCenter[0] + delta[0], currentCenter[1] + delta[1]];\n view.animateInternal({\n duration: duration !== undefined ? duration : 250,\n easing: linear,\n center: view.getConstrainedCenter(center),\n });\n }\n}\n\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {number} delta Delta from previous zoom level.\n * @param {import(\"../coordinate.js\").Coordinate} [anchor] Anchor coordinate in the user projection.\n * @param {number} [duration] Duration.\n */\nexport function zoomByDelta(view, delta, anchor, duration) {\n const currentZoom = view.getZoom();\n\n if (currentZoom === undefined) {\n return;\n }\n\n const newZoom = view.getConstrainedZoom(currentZoom + delta);\n const newResolution = view.getResolutionForZoom(newZoom);\n\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n resolution: newResolution,\n anchor: anchor,\n duration: duration !== undefined ? duration : 250,\n easing: easeOut,\n });\n}\n\nexport default Interaction;\n","/**\n * @module ol/interaction/DoubleClickZoom\n */\nimport Interaction, {zoomByDelta} from './Interaction.js';\nimport MapBrowserEventType from '../MapBrowserEventType.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {number} [delta=1] The zoom delta applied on each double click.\n */\n\n/**\n * @classdesc\n * Allows the user to zoom by double-clicking on the map.\n * @api\n */\nclass DoubleClickZoom extends Interaction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n super();\n\n options = options ? options : {};\n\n /**\n * @private\n * @type {number}\n */\n this.delta_ = options.delta ? options.delta : 1;\n\n /**\n * @private\n * @type {number}\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n }\n\n /**\n * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} (if it was a\n * doubleclick) and eventually zooms the map.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n */\n handleEvent(mapBrowserEvent) {\n let stopEvent = false;\n if (mapBrowserEvent.type == MapBrowserEventType.DBLCLICK) {\n const browserEvent = /** @type {MouseEvent} */ (\n mapBrowserEvent.originalEvent\n );\n const map = mapBrowserEvent.map;\n const anchor = mapBrowserEvent.coordinate;\n const delta = browserEvent.shiftKey ? -this.delta_ : this.delta_;\n const view = map.getView();\n zoomByDelta(view, delta, anchor, this.duration_);\n browserEvent.preventDefault();\n stopEvent = true;\n }\n return !stopEvent;\n }\n}\n\nexport default DoubleClickZoom;\n","/**\n * @module ol/interaction/Pointer\n */\nimport Interaction from './Interaction.js';\nimport MapBrowserEventType from '../MapBrowserEventType.js';\n\n/**\n * @typedef {Object} Options\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleDownEvent]\n * Function handling \"down\" events. If the function returns `true` then a drag\n * sequence is started.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleDragEvent]\n * Function handling \"drag\" events. This function is called on \"move\" events\n * during a drag sequence.\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleEvent]\n * Method called by the map to notify the interaction that a browser event was\n * dispatched to the map. The function may return `false` to prevent the\n * propagation of the event to other interactions in the map's interactions\n * chain.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleMoveEvent]\n * Function handling \"move\" events. This function is called on \"move\" events.\n * This functions is also called during a drag sequence, so during a drag\n * sequence both the `handleDragEvent` function and this function are called.\n * If `handleDownEvent` is defined and it returns true this function will not\n * be called during a drag sequence.\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleUpEvent]\n * Function handling \"up\" events. If the function returns `false` then the\n * current drag sequence is stopped.\n * @property {function(boolean):boolean} [stopDown]\n * Should the down event be propagated to other interactions, or should be\n * stopped?\n */\n\n/**\n * @classdesc\n * Base class that calls user-defined functions on `down`, `move` and `up`\n * events. This class also manages \"drag sequences\".\n *\n * When the `handleDownEvent` user function returns `true` a drag sequence is\n * started. During a drag sequence the `handleDragEvent` user function is\n * called on `move` events. The drag sequence ends when the `handleUpEvent`\n * user function is called and returns `false`.\n * @api\n */\nclass PointerInteraction extends Interaction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super(\n /** @type {import(\"./Interaction.js\").InteractionOptions} */ (options)\n );\n\n if (options.handleDownEvent) {\n this.handleDownEvent = options.handleDownEvent;\n }\n\n if (options.handleDragEvent) {\n this.handleDragEvent = options.handleDragEvent;\n }\n\n if (options.handleMoveEvent) {\n this.handleMoveEvent = options.handleMoveEvent;\n }\n\n if (options.handleUpEvent) {\n this.handleUpEvent = options.handleUpEvent;\n }\n\n if (options.stopDown) {\n this.stopDown = options.stopDown;\n }\n\n /**\n * @type {boolean}\n * @protected\n */\n this.handlingDownUpSequence = false;\n\n /**\n * @type {Array}\n * @protected\n */\n this.targetPointers = [];\n }\n\n /**\n * Returns the current number of pointers involved in the interaction,\n * e.g. `2` when two fingers are used.\n * @return {number} The number of pointers.\n * @api\n */\n getPointerCount() {\n return this.targetPointers.length;\n }\n\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n * @protected\n */\n handleDownEvent(mapBrowserEvent) {\n return false;\n }\n\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @protected\n */\n handleDragEvent(mapBrowserEvent) {}\n\n /**\n * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} and may call into\n * other functions, if event sequences like e.g. 'drag' or 'down-up' etc. are\n * detected.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @api\n */\n handleEvent(mapBrowserEvent) {\n if (!mapBrowserEvent.originalEvent) {\n return true;\n }\n\n let stopEvent = false;\n this.updateTrackedPointers_(mapBrowserEvent);\n if (this.handlingDownUpSequence) {\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERDRAG) {\n this.handleDragEvent(mapBrowserEvent);\n // prevent page scrolling during dragging\n mapBrowserEvent.originalEvent.preventDefault();\n } else if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {\n const handledUp = this.handleUpEvent(mapBrowserEvent);\n this.handlingDownUpSequence =\n handledUp && this.targetPointers.length > 0;\n }\n } else {\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERDOWN) {\n const handled = this.handleDownEvent(mapBrowserEvent);\n this.handlingDownUpSequence = handled;\n stopEvent = this.stopDown(handled);\n } else if (mapBrowserEvent.type == MapBrowserEventType.POINTERMOVE) {\n this.handleMoveEvent(mapBrowserEvent);\n }\n }\n return !stopEvent;\n }\n\n /**\n * Handle pointer move events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @protected\n */\n handleMoveEvent(mapBrowserEvent) {}\n\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n * @protected\n */\n handleUpEvent(mapBrowserEvent) {\n return false;\n }\n\n /**\n * This function is used to determine if \"down\" events should be propagated\n * to other interactions or should be stopped.\n * @param {boolean} handled Was the event handled by the interaction?\n * @return {boolean} Should the `down` event be stopped?\n */\n stopDown(handled) {\n return handled;\n }\n\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @private\n */\n updateTrackedPointers_(mapBrowserEvent) {\n if (mapBrowserEvent.activePointers) {\n this.targetPointers = mapBrowserEvent.activePointers;\n }\n }\n}\n\n/**\n * @param {Array} pointerEvents List of events.\n * @return {{clientX: number, clientY: number}} Centroid pixel.\n */\nexport function centroid(pointerEvents) {\n const length = pointerEvents.length;\n let clientX = 0;\n let clientY = 0;\n for (let i = 0; i < length; i++) {\n clientX += pointerEvents[i].clientX;\n clientY += pointerEvents[i].clientY;\n }\n return {clientX: clientX / length, clientY: clientY / length};\n}\n\nexport default PointerInteraction;\n","/**\n * @module ol/events/condition\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport {FALSE, TRUE} from '../functions.js';\nimport {MAC, WEBKIT} from '../has.js';\nimport {assert} from '../asserts.js';\n\n/**\n * A function that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * `{boolean}`. If the condition is met, true should be returned.\n *\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default): boolean} Condition\n */\n\n/**\n * Creates a condition function that passes when all provided conditions pass.\n * @param {...Condition} var_args Conditions to check.\n * @return {Condition} Condition function.\n */\nexport function all(var_args) {\n const conditions = arguments;\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n * @return {boolean} All conditions passed.\n */\n return function (event) {\n let pass = true;\n for (let i = 0, ii = conditions.length; i < ii; ++i) {\n pass = pass && conditions[i](event);\n if (!pass) {\n break;\n }\n }\n return pass;\n };\n}\n\n/**\n * Return `true` if only the alt-key is pressed, `false` otherwise (e.g. when\n * additionally the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt key is pressed.\n * @api\n */\nexport const altKeyOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if only the alt-key and shift-key is pressed, `false` otherwise\n * (e.g. when additionally the platform-modifier-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt and shift keys are pressed.\n * @api\n */\nexport const altShiftKeysOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if the map has the focus. This condition requires a map target\n * element with a `tabindex` attribute, e.g. `
`.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map has the focus.\n * @api\n */\nexport const focus = function (event) {\n const targetElement = event.map.getTargetElement();\n const activeElement = event.map.getOwnerDocument().activeElement;\n return targetElement.contains(activeElement);\n};\n\n/**\n * Return `true` if the map has the focus or no 'tabindex' attribute set.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map container has the focus or no 'tabindex' attribute.\n */\nexport const focusWithTabindex = function (event) {\n return event.map.getTargetElement().hasAttribute('tabindex')\n ? focus(event)\n : true;\n};\n\n/**\n * Return always true.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True.\n * @api\n */\nexport const always = TRUE;\n\n/**\n * Return `true` if the event is a `click` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `click` event.\n * @api\n */\nexport const click = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.CLICK;\n};\n\n/**\n * Return `true` if the event has an \"action\"-producing mouse button.\n *\n * By definition, this includes left-click on windows/linux, and left-click\n * without the ctrl key on Macs.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} The result.\n */\nexport const mouseActionButton = function (mapBrowserEvent) {\n const originalEvent = /** @type {MouseEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return originalEvent.button == 0 && !(WEBKIT && MAC && originalEvent.ctrlKey);\n};\n\n/**\n * Return always false.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} False.\n * @api\n */\nexport const never = FALSE;\n\n/**\n * Return `true` if the browser event is a `pointermove` event, `false`\n * otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the browser event is a `pointermove` event.\n * @api\n */\nexport const pointerMove = function (mapBrowserEvent) {\n return mapBrowserEvent.type == 'pointermove';\n};\n\n/**\n * Return `true` if the event is a map `singleclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `singleclick` event.\n * @api\n */\nexport const singleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.SINGLECLICK;\n};\n\n/**\n * Return `true` if the event is a map `dblclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `dblclick` event.\n * @api\n */\nexport const doubleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.DBLCLICK;\n};\n\n/**\n * Return `true` if no modifier key (alt-, shift- or platform-modifier-key) is\n * pressed.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if there no modifier keys are pressed.\n * @api\n */\nexport const noModifierKeys = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n !originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if only the platform-modifier-key (the meta-key on Mac,\n * ctrl-key otherwise) is pressed, `false` otherwise (e.g. when additionally\n * the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the platform modifier key is pressed.\n * @api\n */\nexport const platformModifierKeyOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n !originalEvent.altKey &&\n (MAC ? originalEvent.metaKey : originalEvent.ctrlKey) &&\n !originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if only the shift-key is pressed, `false` otherwise (e.g. when\n * additionally the alt-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the shift key is pressed.\n * @api\n */\nexport const shiftKeyOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n !originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if the target element is not editable, i.e. not an `input`,\n * `select`, or `textarea` element and no `contenteditable` attribute is\n * set or inherited, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if the target element is not editable.\n * @api\n */\nexport const targetNotEditable = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n const tagName = /** @type {Element} */ (originalEvent.target).tagName;\n return (\n tagName !== 'INPUT' &&\n tagName !== 'SELECT' &&\n tagName !== 'TEXTAREA' &&\n // `isContentEditable` is only available on `HTMLElement`, but it may also be a\n // different type like `SVGElement`.\n // @ts-ignore\n !originalEvent.target.isContentEditable\n );\n};\n\n/**\n * Return `true` if the event originates from a mouse device.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a mouse device.\n * @api\n */\nexport const mouseOnly = function (mapBrowserEvent) {\n const pointerEvent = /** @type {import(\"../MapBrowserEvent\").default} */ (\n mapBrowserEvent\n ).originalEvent;\n assert(pointerEvent !== undefined, 56); // mapBrowserEvent must originate from a pointer event\n // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n return pointerEvent.pointerType == 'mouse';\n};\n\n/**\n * Return `true` if the event originates from a touchable device.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a touchable device.\n * @api\n */\nexport const touchOnly = function (mapBrowserEvent) {\n const pointerEvt = /** @type {import(\"../MapBrowserEvent\").default} */ (\n mapBrowserEvent\n ).originalEvent;\n assert(pointerEvt !== undefined, 56); // mapBrowserEvent must originate from a pointer event\n // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n return pointerEvt.pointerType === 'touch';\n};\n\n/**\n * Return `true` if the event originates from a digital pen.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a digital pen.\n * @api\n */\nexport const penOnly = function (mapBrowserEvent) {\n const pointerEvt = /** @type {import(\"../MapBrowserEvent\").default} */ (\n mapBrowserEvent\n ).originalEvent;\n assert(pointerEvt !== undefined, 56); // mapBrowserEvent must originate from a pointer event\n // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n return pointerEvt.pointerType === 'pen';\n};\n\n/**\n * Return `true` if the event originates from a primary pointer in\n * contact with the surface or if the left mouse button is pressed.\n * See https://www.w3.org/TR/pointerevents/#button-states.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a primary pointer.\n * @api\n */\nexport const primaryAction = function (mapBrowserEvent) {\n const pointerEvent = /** @type {import(\"../MapBrowserEvent\").default} */ (\n mapBrowserEvent\n ).originalEvent;\n assert(pointerEvent !== undefined, 56); // mapBrowserEvent must originate from a pointer event\n return pointerEvent.isPrimary && pointerEvent.button === 0;\n};\n","/**\n * @module ol/interaction/DragPan\n */\nimport PointerInteraction, {\n centroid as centroidFromPointers,\n} from './Pointer.js';\nimport {FALSE} from '../functions.js';\nimport {\n all,\n focusWithTabindex,\n noModifierKeys,\n primaryAction,\n} from '../events/condition.js';\nimport {easeOut} from '../easing.js';\nimport {\n rotate as rotateCoordinate,\n scale as scaleCoordinate,\n} from '../coordinate.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition.noModifierKeys} and {@link module:ol/events/condition.primaryAction}.\n * @property {boolean} [onFocusOnly=false] When the map's target has a `tabindex` attribute set,\n * the interaction will only handle events when the map has the focus.\n * @property {import(\"../Kinetic.js\").default} [kinetic] Kinetic inertia to apply to the pan.\n */\n\n/**\n * @classdesc\n * Allows the user to pan the map by dragging the map.\n * @api\n */\nclass DragPan extends PointerInteraction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n super({\n stopDown: FALSE,\n });\n\n options = options ? options : {};\n\n /**\n * @private\n * @type {import(\"../Kinetic.js\").default|undefined}\n */\n this.kinetic_ = options.kinetic;\n\n /**\n * @type {import(\"../pixel.js\").Pixel}\n */\n this.lastCentroid = null;\n\n /**\n * @type {number}\n */\n this.lastPointersCount_;\n\n /**\n * @type {boolean}\n */\n this.panning_ = false;\n\n const condition = options.condition\n ? options.condition\n : all(noModifierKeys, primaryAction);\n\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n this.condition_ = options.onFocusOnly\n ? all(focusWithTabindex, condition)\n : condition;\n\n /**\n * @private\n * @type {boolean}\n */\n this.noKinetic_ = false;\n }\n\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n */\n handleDragEvent(mapBrowserEvent) {\n const map = mapBrowserEvent.map;\n if (!this.panning_) {\n this.panning_ = true;\n map.getView().beginInteraction();\n }\n const targetPointers = this.targetPointers;\n const centroid = map.getEventPixel(centroidFromPointers(targetPointers));\n if (targetPointers.length == this.lastPointersCount_) {\n if (this.kinetic_) {\n this.kinetic_.update(centroid[0], centroid[1]);\n }\n if (this.lastCentroid) {\n const delta = [\n this.lastCentroid[0] - centroid[0],\n centroid[1] - this.lastCentroid[1],\n ];\n const map = mapBrowserEvent.map;\n const view = map.getView();\n scaleCoordinate(delta, view.getResolution());\n rotateCoordinate(delta, view.getRotation());\n view.adjustCenterInternal(delta);\n }\n } else if (this.kinetic_) {\n // reset so we don't overestimate the kinetic energy after\n // after one finger down, tiny drag, second finger down\n this.kinetic_.begin();\n }\n this.lastCentroid = centroid;\n this.lastPointersCount_ = targetPointers.length;\n mapBrowserEvent.originalEvent.preventDefault();\n }\n\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleUpEvent(mapBrowserEvent) {\n const map = mapBrowserEvent.map;\n const view = map.getView();\n if (this.targetPointers.length === 0) {\n if (!this.noKinetic_ && this.kinetic_ && this.kinetic_.end()) {\n const distance = this.kinetic_.getDistance();\n const angle = this.kinetic_.getAngle();\n const center = view.getCenterInternal();\n const centerpx = map.getPixelFromCoordinateInternal(center);\n const dest = map.getCoordinateFromPixelInternal([\n centerpx[0] - distance * Math.cos(angle),\n centerpx[1] - distance * Math.sin(angle),\n ]);\n view.animateInternal({\n center: view.getConstrainedCenter(dest),\n duration: 500,\n easing: easeOut,\n });\n }\n if (this.panning_) {\n this.panning_ = false;\n view.endInteraction();\n }\n return false;\n }\n if (this.kinetic_) {\n // reset so we don't overestimate the kinetic energy after\n // after one finger up, tiny drag, second finger up\n this.kinetic_.begin();\n }\n this.lastCentroid = null;\n return true;\n }\n\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleDownEvent(mapBrowserEvent) {\n if (this.targetPointers.length > 0 && this.condition_(mapBrowserEvent)) {\n const map = mapBrowserEvent.map;\n const view = map.getView();\n this.lastCentroid = null;\n // stop any current animation\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n if (this.kinetic_) {\n this.kinetic_.begin();\n }\n // No kinetic as soon as more than one pointer on the screen is\n // detected. This is to prevent nasty pans after pinch.\n this.noKinetic_ = this.targetPointers.length > 1;\n return true;\n }\n return false;\n }\n}\n\nexport default DragPan;\n","/**\n * @module ol/interaction/DragRotate\n */\nimport PointerInteraction from './Pointer.js';\nimport {FALSE} from '../functions.js';\nimport {\n altShiftKeysOnly,\n mouseActionButton,\n mouseOnly,\n} from '../events/condition.js';\nimport {disable} from '../rotationconstraint.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes an\n * {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition.altShiftKeysOnly}.\n * @property {number} [duration=250] Animation duration in milliseconds.\n */\n\n/**\n * @classdesc\n * Allows the user to rotate the map by clicking and dragging on the map,\n * normally combined with an {@link module:ol/events/condition} that limits\n * it to when the alt and shift keys are held down.\n *\n * This interaction is only supported for mouse devices.\n * @api\n */\nclass DragRotate extends PointerInteraction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n stopDown: FALSE,\n });\n\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n this.condition_ = options.condition ? options.condition : altShiftKeysOnly;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.lastAngle_ = undefined;\n\n /**\n * @private\n * @type {number}\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n }\n\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n */\n handleDragEvent(mapBrowserEvent) {\n if (!mouseOnly(mapBrowserEvent)) {\n return;\n }\n\n const map = mapBrowserEvent.map;\n const view = map.getView();\n if (view.getConstraints().rotation === disable) {\n return;\n }\n const size = map.getSize();\n const offset = mapBrowserEvent.pixel;\n const theta = Math.atan2(size[1] / 2 - offset[1], offset[0] - size[0] / 2);\n if (this.lastAngle_ !== undefined) {\n const delta = theta - this.lastAngle_;\n view.adjustRotationInternal(-delta);\n }\n this.lastAngle_ = theta;\n }\n\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleUpEvent(mapBrowserEvent) {\n if (!mouseOnly(mapBrowserEvent)) {\n return true;\n }\n\n const map = mapBrowserEvent.map;\n const view = map.getView();\n view.endInteraction(this.duration_);\n return false;\n }\n\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleDownEvent(mapBrowserEvent) {\n if (!mouseOnly(mapBrowserEvent)) {\n return false;\n }\n\n if (\n mouseActionButton(mapBrowserEvent) &&\n this.condition_(mapBrowserEvent)\n ) {\n const map = mapBrowserEvent.map;\n map.getView().beginInteraction();\n this.lastAngle_ = undefined;\n return true;\n }\n return false;\n }\n}\n\nexport default DragRotate;\n","/**\n * @module ol/render/Box\n */\n\nimport Disposable from '../Disposable.js';\nimport Polygon from '../geom/Polygon.js';\n\nclass RenderBox extends Disposable {\n /**\n * @param {string} className CSS class name.\n */\n constructor(className) {\n super();\n\n /**\n * @type {import(\"../geom/Polygon.js\").default}\n * @private\n */\n this.geometry_ = null;\n\n /**\n * @type {HTMLDivElement}\n * @private\n */\n this.element_ = document.createElement('div');\n this.element_.style.position = 'absolute';\n this.element_.style.pointerEvents = 'auto';\n this.element_.className = 'ol-box ' + className;\n\n /**\n * @private\n * @type {import(\"../Map.js\").default|null}\n */\n this.map_ = null;\n\n /**\n * @private\n * @type {import(\"../pixel.js\").Pixel}\n */\n this.startPixel_ = null;\n\n /**\n * @private\n * @type {import(\"../pixel.js\").Pixel}\n */\n this.endPixel_ = null;\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n this.setMap(null);\n }\n\n /**\n * @private\n */\n render_() {\n const startPixel = this.startPixel_;\n const endPixel = this.endPixel_;\n const px = 'px';\n const style = this.element_.style;\n style.left = Math.min(startPixel[0], endPixel[0]) + px;\n style.top = Math.min(startPixel[1], endPixel[1]) + px;\n style.width = Math.abs(endPixel[0] - startPixel[0]) + px;\n style.height = Math.abs(endPixel[1] - startPixel[1]) + px;\n }\n\n /**\n * @param {import(\"../Map.js\").default|null} map Map.\n */\n setMap(map) {\n if (this.map_) {\n this.map_.getOverlayContainer().removeChild(this.element_);\n const style = this.element_.style;\n style.left = 'inherit';\n style.top = 'inherit';\n style.width = 'inherit';\n style.height = 'inherit';\n }\n this.map_ = map;\n if (this.map_) {\n this.map_.getOverlayContainer().appendChild(this.element_);\n }\n }\n\n /**\n * @param {import(\"../pixel.js\").Pixel} startPixel Start pixel.\n * @param {import(\"../pixel.js\").Pixel} endPixel End pixel.\n */\n setPixels(startPixel, endPixel) {\n this.startPixel_ = startPixel;\n this.endPixel_ = endPixel;\n this.createOrUpdateGeometry();\n this.render_();\n }\n\n /**\n * Creates or updates the cached geometry.\n */\n createOrUpdateGeometry() {\n const startPixel = this.startPixel_;\n const endPixel = this.endPixel_;\n const pixels = [\n startPixel,\n [startPixel[0], endPixel[1]],\n endPixel,\n [endPixel[0], startPixel[1]],\n ];\n const coordinates = pixels.map(\n this.map_.getCoordinateFromPixelInternal,\n this.map_\n );\n // close the polygon\n coordinates[4] = coordinates[0].slice();\n if (!this.geometry_) {\n this.geometry_ = new Polygon([coordinates]);\n } else {\n this.geometry_.setCoordinates([coordinates]);\n }\n }\n\n /**\n * @return {import(\"../geom/Polygon.js\").default} Geometry.\n */\n getGeometry() {\n return this.geometry_;\n }\n}\n\nexport default RenderBox;\n","/**\n * @module ol/interaction/DragBox\n */\n// FIXME draw drag box\nimport Event from '../events/Event.js';\nimport PointerInteraction from './Pointer.js';\nimport RenderBox from '../render/Box.js';\nimport {mouseActionButton} from '../events/condition.js';\n\n/**\n * A function that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and two\n * {@link module:ol/pixel~Pixel}s and returns a `{boolean}`. If the condition is met,\n * true should be returned.\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default, import(\"../pixel.js\").Pixel, import(\"../pixel.js\").Pixel):boolean} EndCondition\n */\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-dragbox'] CSS class name for styling the box.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link ol/events/condition~mouseActionButton}.\n * @property {number} [minArea=64] The minimum area of the box in pixel, this value is used by the default\n * `boxEndCondition` function.\n * @property {EndCondition} [boxEndCondition] A function that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and two\n * {@link module:ol/pixel~Pixel}s to indicate whether a `boxend` event should be fired.\n * Default is `true` if the area of the box is bigger than the `minArea` option.\n * @property {function(this:DragBox, import(\"../MapBrowserEvent.js\").default):void} [onBoxEnd] Code to execute just\n * before `boxend` is fired.\n */\n\n/**\n * @enum {string}\n */\nconst DragBoxEventType = {\n /**\n * Triggered upon drag box start.\n * @event DragBoxEvent#boxstart\n * @api\n */\n BOXSTART: 'boxstart',\n\n /**\n * Triggered on drag when box is active.\n * @event DragBoxEvent#boxdrag\n * @api\n */\n BOXDRAG: 'boxdrag',\n\n /**\n * Triggered upon drag box end.\n * @event DragBoxEvent#boxend\n * @api\n */\n BOXEND: 'boxend',\n\n /**\n * Triggered upon drag box canceled.\n * @event DragBoxEvent#boxcancel\n * @api\n */\n BOXCANCEL: 'boxcancel',\n};\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/interaction/DragBox~DragBox} instances are instances of\n * this type.\n */\nexport class DragBoxEvent extends Event {\n /**\n * @param {string} type The event type.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate The event coordinate.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Originating event.\n */\n constructor(type, coordinate, mapBrowserEvent) {\n super(type);\n\n /**\n * The coordinate of the drag event.\n * @const\n * @type {import(\"../coordinate.js\").Coordinate}\n * @api\n */\n this.coordinate = coordinate;\n\n /**\n * @const\n * @type {import(\"../MapBrowserEvent.js\").default}\n * @api\n */\n this.mapBrowserEvent = mapBrowserEvent;\n }\n}\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature<'boxcancel'|'boxdrag'|'boxend'|'boxstart', DragBoxEvent, Return> &\n * import(\"../Observable\").CombinedOnSignature} DragBoxOnSignature\n */\n\n/**\n * @classdesc\n * Allows the user to draw a vector box by clicking and dragging on the map,\n * normally combined with an {@link module:ol/events/condition} that limits\n * it to when the shift or other key is held down. This is used, for example,\n * for zooming to a specific area of the map\n * (see {@link module:ol/interaction/DragZoom~DragZoom} and\n * {@link module:ol/interaction/DragRotateAndZoom~DragRotateAndZoom}).\n *\n * @fires DragBoxEvent\n * @api\n */\nclass DragBox extends PointerInteraction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n super();\n\n /***\n * @type {DragBoxOnSignature}\n */\n this.on;\n\n /***\n * @type {DragBoxOnSignature}\n */\n this.once;\n\n /***\n * @type {DragBoxOnSignature}\n */\n this.un;\n\n options = options ? options : {};\n\n /**\n * @type {import(\"../render/Box.js\").default}\n * @private\n */\n this.box_ = new RenderBox(options.className || 'ol-dragbox');\n\n /**\n * @type {number}\n * @private\n */\n this.minArea_ = options.minArea !== undefined ? options.minArea : 64;\n\n if (options.onBoxEnd) {\n this.onBoxEnd = options.onBoxEnd;\n }\n\n /**\n * @type {import(\"../pixel.js\").Pixel}\n * @private\n */\n this.startPixel_ = null;\n\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n this.condition_ = options.condition ? options.condition : mouseActionButton;\n\n /**\n * @private\n * @type {EndCondition}\n */\n this.boxEndCondition_ = options.boxEndCondition\n ? options.boxEndCondition\n : this.defaultBoxEndCondition;\n }\n\n /**\n * The default condition for determining whether the boxend event\n * should fire.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent The originating MapBrowserEvent\n * leading to the box end.\n * @param {import(\"../pixel.js\").Pixel} startPixel The starting pixel of the box.\n * @param {import(\"../pixel.js\").Pixel} endPixel The end pixel of the box.\n * @return {boolean} Whether or not the boxend condition should be fired.\n */\n defaultBoxEndCondition(mapBrowserEvent, startPixel, endPixel) {\n const width = endPixel[0] - startPixel[0];\n const height = endPixel[1] - startPixel[1];\n return width * width + height * height >= this.minArea_;\n }\n\n /**\n * Returns geometry of last drawn box.\n * @return {import(\"../geom/Polygon.js\").default} Geometry.\n * @api\n */\n getGeometry() {\n return this.box_.getGeometry();\n }\n\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n */\n handleDragEvent(mapBrowserEvent) {\n this.box_.setPixels(this.startPixel_, mapBrowserEvent.pixel);\n\n this.dispatchEvent(\n new DragBoxEvent(\n DragBoxEventType.BOXDRAG,\n mapBrowserEvent.coordinate,\n mapBrowserEvent\n )\n );\n }\n\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleUpEvent(mapBrowserEvent) {\n this.box_.setMap(null);\n\n const completeBox = this.boxEndCondition_(\n mapBrowserEvent,\n this.startPixel_,\n mapBrowserEvent.pixel\n );\n if (completeBox) {\n this.onBoxEnd(mapBrowserEvent);\n }\n this.dispatchEvent(\n new DragBoxEvent(\n completeBox ? DragBoxEventType.BOXEND : DragBoxEventType.BOXCANCEL,\n mapBrowserEvent.coordinate,\n mapBrowserEvent\n )\n );\n return false;\n }\n\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleDownEvent(mapBrowserEvent) {\n if (this.condition_(mapBrowserEvent)) {\n this.startPixel_ = mapBrowserEvent.pixel;\n this.box_.setMap(mapBrowserEvent.map);\n this.box_.setPixels(this.startPixel_, this.startPixel_);\n this.dispatchEvent(\n new DragBoxEvent(\n DragBoxEventType.BOXSTART,\n mapBrowserEvent.coordinate,\n mapBrowserEvent\n )\n );\n return true;\n }\n return false;\n }\n\n /**\n * Function to execute just before `onboxend` is fired\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n */\n onBoxEnd(event) {}\n}\n\nexport default DragBox;\n","/**\n * @module ol/interaction/DragZoom\n */\nimport DragBox from './DragBox.js';\nimport {easeOut} from '../easing.js';\nimport {shiftKeyOnly} from '../events/condition.js';\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-dragzoom'] CSS class name for styling the\n * box.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition.shiftKeyOnly}.\n * @property {number} [duration=200] Animation duration in milliseconds.\n * @property {boolean} [out=false] Use interaction for zooming out.\n * @property {number} [minArea=64] The minimum area of the box in pixel, this value is used by the parent default\n * `boxEndCondition` function.\n */\n\n/**\n * @classdesc\n * Allows the user to zoom the map by clicking and dragging on the map,\n * normally combined with an {@link module:ol/events/condition} that limits\n * it to when a key, shift by default, is held down.\n *\n * To change the style of the box, use CSS and the `.ol-dragzoom` selector, or\n * your custom one configured with `className`.\n * @api\n */\nclass DragZoom extends DragBox {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n const condition = options.condition ? options.condition : shiftKeyOnly;\n\n super({\n condition: condition,\n className: options.className || 'ol-dragzoom',\n minArea: options.minArea,\n });\n\n /**\n * @private\n * @type {number}\n */\n this.duration_ = options.duration !== undefined ? options.duration : 200;\n\n /**\n * @private\n * @type {boolean}\n */\n this.out_ = options.out !== undefined ? options.out : false;\n }\n\n /**\n * Function to execute just before `onboxend` is fired\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n */\n onBoxEnd(event) {\n const map = this.getMap();\n const view = /** @type {!import(\"../View.js\").default} */ (map.getView());\n let geometry = this.getGeometry();\n\n if (this.out_) {\n const rotatedExtent = view.rotatedExtentForGeometry(geometry);\n const resolution = view.getResolutionForExtentInternal(rotatedExtent);\n const factor = view.getResolution() / resolution;\n geometry = geometry.clone();\n geometry.scale(factor * factor);\n }\n\n view.fitInternal(geometry, {\n duration: this.duration_,\n easing: easeOut,\n });\n }\n}\n\nexport default DragZoom;\n","/**\n * @module ol/events/Key\n */\n\n/**\n * @enum {string}\n * @const\n */\nexport default {\n LEFT: 'ArrowLeft',\n UP: 'ArrowUp',\n RIGHT: 'ArrowRight',\n DOWN: 'ArrowDown',\n};\n","/**\n * @module ol/interaction/KeyboardPan\n */\nimport EventType from '../events/EventType.js';\nimport Interaction, {pan} from './Interaction.js';\nimport Key from '../events/Key.js';\nimport {noModifierKeys, targetNotEditable} from '../events/condition.js';\nimport {rotate as rotateCoordinate} from '../coordinate.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. Default is\n * {@link module:ol/events/condition.noModifierKeys} and\n * {@link module:ol/events/condition.targetNotEditable}.\n * @property {number} [duration=100] Animation duration in milliseconds.\n * @property {number} [pixelDelta=128] The amount of pixels to pan on each key\n * press.\n */\n\n/**\n * @classdesc\n * Allows the user to pan the map using keyboard arrows.\n * Note that, although this interaction is by default included in maps,\n * the keys can only be used when browser focus is on the element to which\n * the keyboard events are attached. By default, this is the map div,\n * though you can change this with the `keyboardEventTarget` in\n * {@link module:ol/Map~Map}. `document` never loses focus but, for any other\n * element, focus will have to be on, and returned to, this element if the keys\n * are to function.\n * See also {@link module:ol/interaction/KeyboardZoom~KeyboardZoom}.\n * @api\n */\nclass KeyboardPan extends Interaction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n super();\n\n options = options || {};\n\n /**\n * @private\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Browser event.\n * @return {boolean} Combined condition result.\n */\n this.defaultCondition_ = function (mapBrowserEvent) {\n return (\n noModifierKeys(mapBrowserEvent) && targetNotEditable(mapBrowserEvent)\n );\n };\n\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n this.condition_ =\n options.condition !== undefined\n ? options.condition\n : this.defaultCondition_;\n\n /**\n * @private\n * @type {number}\n */\n this.duration_ = options.duration !== undefined ? options.duration : 100;\n\n /**\n * @private\n * @type {number}\n */\n this.pixelDelta_ =\n options.pixelDelta !== undefined ? options.pixelDelta : 128;\n }\n\n /**\n * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} if it was a\n * `KeyEvent`, and decides the direction to pan to (if an arrow key was\n * pressed).\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n */\n handleEvent(mapBrowserEvent) {\n let stopEvent = false;\n if (mapBrowserEvent.type == EventType.KEYDOWN) {\n const keyEvent = /** @type {KeyboardEvent} */ (\n mapBrowserEvent.originalEvent\n );\n const key = keyEvent.key;\n if (\n this.condition_(mapBrowserEvent) &&\n (key == Key.DOWN ||\n key == Key.LEFT ||\n key == Key.RIGHT ||\n key == Key.UP)\n ) {\n const map = mapBrowserEvent.map;\n const view = map.getView();\n const mapUnitsDelta = view.getResolution() * this.pixelDelta_;\n let deltaX = 0,\n deltaY = 0;\n if (key == Key.DOWN) {\n deltaY = -mapUnitsDelta;\n } else if (key == Key.LEFT) {\n deltaX = -mapUnitsDelta;\n } else if (key == Key.RIGHT) {\n deltaX = mapUnitsDelta;\n } else {\n deltaY = mapUnitsDelta;\n }\n const delta = [deltaX, deltaY];\n rotateCoordinate(delta, view.getRotation());\n pan(view, delta, this.duration_);\n keyEvent.preventDefault();\n stopEvent = true;\n }\n }\n return !stopEvent;\n }\n}\n\nexport default KeyboardPan;\n","/**\n * @module ol/interaction/KeyboardZoom\n */\nimport EventType from '../events/EventType.js';\nimport Interaction, {zoomByDelta} from './Interaction.js';\nimport {targetNotEditable} from '../events/condition.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=100] Animation duration in milliseconds.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. Default is\n * {@link module:ol/events/condition.targetNotEditable}.\n * @property {number} [delta=1] The zoom level delta on each key press.\n */\n\n/**\n * @classdesc\n * Allows the user to zoom the map using keyboard + and -.\n * Note that, although this interaction is by default included in maps,\n * the keys can only be used when browser focus is on the element to which\n * the keyboard events are attached. By default, this is the map div,\n * though you can change this with the `keyboardEventTarget` in\n * {@link module:ol/Map~Map}. `document` never loses focus but, for any other\n * element, focus will have to be on, and returned to, this element if the keys\n * are to function.\n * See also {@link module:ol/interaction/KeyboardPan~KeyboardPan}.\n * @api\n */\nclass KeyboardZoom extends Interaction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n super();\n\n options = options ? options : {};\n\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n this.condition_ = options.condition ? options.condition : targetNotEditable;\n\n /**\n * @private\n * @type {number}\n */\n this.delta_ = options.delta ? options.delta : 1;\n\n /**\n * @private\n * @type {number}\n */\n this.duration_ = options.duration !== undefined ? options.duration : 100;\n }\n\n /**\n * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} if it was a\n * `KeyEvent`, and decides whether to zoom in or out (depending on whether the\n * key pressed was '+' or '-').\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n */\n handleEvent(mapBrowserEvent) {\n let stopEvent = false;\n if (\n mapBrowserEvent.type == EventType.KEYDOWN ||\n mapBrowserEvent.type == EventType.KEYPRESS\n ) {\n const keyEvent = /** @type {KeyboardEvent} */ (\n mapBrowserEvent.originalEvent\n );\n const key = keyEvent.key;\n if (this.condition_(mapBrowserEvent) && (key === '+' || key === '-')) {\n const map = mapBrowserEvent.map;\n const delta = key === '+' ? this.delta_ : -this.delta_;\n const view = map.getView();\n zoomByDelta(view, delta, undefined, this.duration_);\n keyEvent.preventDefault();\n stopEvent = true;\n }\n }\n return !stopEvent;\n }\n}\n\nexport default KeyboardZoom;\n","/**\n * @module ol/Kinetic\n */\n\n/**\n * @classdesc\n * Implementation of inertial deceleration for map movement.\n *\n * @api\n */\nclass Kinetic {\n /**\n * @param {number} decay Rate of decay (must be negative).\n * @param {number} minVelocity Minimum velocity (pixels/millisecond).\n * @param {number} delay Delay to consider to calculate the kinetic\n * initial values (milliseconds).\n */\n constructor(decay, minVelocity, delay) {\n /**\n * @private\n * @type {number}\n */\n this.decay_ = decay;\n\n /**\n * @private\n * @type {number}\n */\n this.minVelocity_ = minVelocity;\n\n /**\n * @private\n * @type {number}\n */\n this.delay_ = delay;\n\n /**\n * @private\n * @type {Array}\n */\n this.points_ = [];\n\n /**\n * @private\n * @type {number}\n */\n this.angle_ = 0;\n\n /**\n * @private\n * @type {number}\n */\n this.initialVelocity_ = 0;\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n begin() {\n this.points_.length = 0;\n this.angle_ = 0;\n this.initialVelocity_ = 0;\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n */\n update(x, y) {\n this.points_.push(x, y, Date.now());\n }\n\n /**\n * @return {boolean} Whether we should do kinetic animation.\n */\n end() {\n if (this.points_.length < 6) {\n // at least 2 points are required (i.e. there must be at least 6 elements\n // in the array)\n return false;\n }\n const delay = Date.now() - this.delay_;\n const lastIndex = this.points_.length - 3;\n if (this.points_[lastIndex + 2] < delay) {\n // the last tracked point is too old, which means that the user stopped\n // panning before releasing the map\n return false;\n }\n\n // get the first point which still falls into the delay time\n let firstIndex = lastIndex - 3;\n while (firstIndex > 0 && this.points_[firstIndex + 2] > delay) {\n firstIndex -= 3;\n }\n\n const duration = this.points_[lastIndex + 2] - this.points_[firstIndex + 2];\n // we don't want a duration of 0 (divide by zero)\n // we also make sure the user panned for a duration of at least one frame\n // (1/60s) to compute sane displacement values\n if (duration < 1000 / 60) {\n return false;\n }\n\n const dx = this.points_[lastIndex] - this.points_[firstIndex];\n const dy = this.points_[lastIndex + 1] - this.points_[firstIndex + 1];\n this.angle_ = Math.atan2(dy, dx);\n this.initialVelocity_ = Math.sqrt(dx * dx + dy * dy) / duration;\n return this.initialVelocity_ > this.minVelocity_;\n }\n\n /**\n * @return {number} Total distance travelled (pixels).\n */\n getDistance() {\n return (this.minVelocity_ - this.initialVelocity_) / this.decay_;\n }\n\n /**\n * @return {number} Angle of the kinetic panning animation (radians).\n */\n getAngle() {\n return this.angle_;\n }\n}\n\nexport default Kinetic;\n","/**\n * @module ol/interaction/MouseWheelZoom\n */\nimport EventType from '../events/EventType.js';\nimport Interaction, {zoomByDelta} from './Interaction.js';\nimport {DEVICE_PIXEL_RATIO, FIREFOX} from '../has.js';\nimport {all, always, focusWithTabindex} from '../events/condition.js';\nimport {clamp} from '../math.js';\n\n/**\n * @typedef {'trackpad' | 'wheel'} Mode\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. Default is\n * {@link module:ol/events/condition.always}.\n * @property {boolean} [onFocusOnly=false] When the map's target has a `tabindex` attribute set,\n * the interaction will only handle events when the map has the focus.\n * @property {number} [maxDelta=1] Maximum mouse wheel delta.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {number} [timeout=80] Mouse wheel timeout duration in milliseconds.\n * @property {boolean} [useAnchor=true] Enable zooming using the mouse's\n * location as the anchor. When set to `false`, zooming in and out will zoom to\n * the center of the screen instead of zooming on the mouse's location.\n * @property {boolean} [constrainResolution=false] If true, the mouse wheel zoom\n * event will always animate to the closest zoom level after an interaction;\n * false means intermediary zoom levels are allowed.\n */\n\n/**\n * @classdesc\n * Allows the user to zoom the map by scrolling the mouse wheel.\n * @api\n */\nclass MouseWheelZoom extends Interaction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super(\n /** @type {import(\"./Interaction.js\").InteractionOptions} */ (options)\n );\n\n /**\n * @private\n * @type {number}\n */\n this.totalDelta_ = 0;\n\n /**\n * @private\n * @type {number}\n */\n this.lastDelta_ = 0;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDelta_ = options.maxDelta !== undefined ? options.maxDelta : 1;\n\n /**\n * @private\n * @type {number}\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n\n /**\n * @private\n * @type {number}\n */\n this.timeout_ = options.timeout !== undefined ? options.timeout : 80;\n\n /**\n * @private\n * @type {boolean}\n */\n this.useAnchor_ =\n options.useAnchor !== undefined ? options.useAnchor : true;\n\n /**\n * @private\n * @type {boolean}\n */\n this.constrainResolution_ =\n options.constrainResolution !== undefined\n ? options.constrainResolution\n : false;\n\n const condition = options.condition ? options.condition : always;\n\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n this.condition_ = options.onFocusOnly\n ? all(focusWithTabindex, condition)\n : condition;\n\n /**\n * @private\n * @type {?import(\"../coordinate.js\").Coordinate}\n */\n this.lastAnchor_ = null;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.startTime_ = undefined;\n\n /**\n * @private\n * @type {?}\n */\n this.timeoutId_;\n\n /**\n * @private\n * @type {Mode|undefined}\n */\n this.mode_ = undefined;\n\n /**\n * Trackpad events separated by this delay will be considered separate\n * interactions.\n * @type {number}\n */\n this.trackpadEventGap_ = 400;\n\n /**\n * @type {?}\n */\n this.trackpadTimeoutId_;\n\n /**\n * The number of delta values per zoom level\n * @private\n * @type {number}\n */\n this.deltaPerZoom_ = 300;\n }\n\n /**\n * @private\n */\n endInteraction_() {\n this.trackpadTimeoutId_ = undefined;\n const map = this.getMap();\n if (!map) {\n return;\n }\n const view = map.getView();\n view.endInteraction(\n undefined,\n this.lastDelta_ ? (this.lastDelta_ > 0 ? 1 : -1) : 0,\n this.lastAnchor_\n );\n }\n\n /**\n * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} (if it was a mousewheel-event) and eventually\n * zooms the map.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n */\n handleEvent(mapBrowserEvent) {\n if (!this.condition_(mapBrowserEvent)) {\n return true;\n }\n const type = mapBrowserEvent.type;\n if (type !== EventType.WHEEL) {\n return true;\n }\n\n const map = mapBrowserEvent.map;\n const wheelEvent = /** @type {WheelEvent} */ (\n mapBrowserEvent.originalEvent\n );\n wheelEvent.preventDefault();\n\n if (this.useAnchor_) {\n this.lastAnchor_ = mapBrowserEvent.coordinate;\n }\n\n // Delta normalisation inspired by\n // https://github.com/mapbox/mapbox-gl-js/blob/001c7b9/js/ui/handler/scroll_zoom.js\n let delta;\n if (mapBrowserEvent.type == EventType.WHEEL) {\n delta = wheelEvent.deltaY;\n if (FIREFOX && wheelEvent.deltaMode === WheelEvent.DOM_DELTA_PIXEL) {\n delta /= DEVICE_PIXEL_RATIO;\n }\n if (wheelEvent.deltaMode === WheelEvent.DOM_DELTA_LINE) {\n delta *= 40;\n }\n }\n\n if (delta === 0) {\n return false;\n }\n this.lastDelta_ = delta;\n\n const now = Date.now();\n\n if (this.startTime_ === undefined) {\n this.startTime_ = now;\n }\n\n if (!this.mode_ || now - this.startTime_ > this.trackpadEventGap_) {\n this.mode_ = Math.abs(delta) < 4 ? 'trackpad' : 'wheel';\n }\n\n const view = map.getView();\n if (\n this.mode_ === 'trackpad' &&\n !(view.getConstrainResolution() || this.constrainResolution_)\n ) {\n if (this.trackpadTimeoutId_) {\n clearTimeout(this.trackpadTimeoutId_);\n } else {\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.beginInteraction();\n }\n this.trackpadTimeoutId_ = setTimeout(\n this.endInteraction_.bind(this),\n this.timeout_\n );\n view.adjustZoom(-delta / this.deltaPerZoom_, this.lastAnchor_);\n this.startTime_ = now;\n return false;\n }\n\n this.totalDelta_ += delta;\n\n const timeLeft = Math.max(this.timeout_ - (now - this.startTime_), 0);\n\n clearTimeout(this.timeoutId_);\n this.timeoutId_ = setTimeout(\n this.handleWheelZoom_.bind(this, map),\n timeLeft\n );\n\n return false;\n }\n\n /**\n * @private\n * @param {import(\"../Map.js\").default} map Map.\n */\n handleWheelZoom_(map) {\n const view = map.getView();\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n let delta =\n -clamp(\n this.totalDelta_,\n -this.maxDelta_ * this.deltaPerZoom_,\n this.maxDelta_ * this.deltaPerZoom_\n ) / this.deltaPerZoom_;\n if (view.getConstrainResolution() || this.constrainResolution_) {\n // view has a zoom constraint, zoom by 1\n delta = delta ? (delta > 0 ? 1 : -1) : 0;\n }\n zoomByDelta(view, delta, this.lastAnchor_, this.duration_);\n\n this.mode_ = undefined;\n this.totalDelta_ = 0;\n this.lastAnchor_ = null;\n this.startTime_ = undefined;\n this.timeoutId_ = undefined;\n }\n\n /**\n * Enable or disable using the mouse's location as an anchor when zooming\n * @param {boolean} useAnchor true to zoom to the mouse's location, false\n * to zoom to the center of the map\n * @api\n */\n setMouseAnchor(useAnchor) {\n this.useAnchor_ = useAnchor;\n if (!useAnchor) {\n this.lastAnchor_ = null;\n }\n }\n}\n\nexport default MouseWheelZoom;\n","/**\n * @module ol/interaction/PinchRotate\n */\nimport PointerInteraction, {\n centroid as centroidFromPointers,\n} from './Pointer.js';\nimport {FALSE} from '../functions.js';\nimport {disable} from '../rotationconstraint.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] The duration of the animation in\n * milliseconds.\n * @property {number} [threshold=0.3] Minimal angle in radians to start a rotation.\n */\n\n/**\n * @classdesc\n * Allows the user to rotate the map by twisting with two fingers\n * on a touch screen.\n * @api\n */\nclass PinchRotate extends PointerInteraction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n const pointerOptions = /** @type {import(\"./Pointer.js\").Options} */ (\n options\n );\n\n if (!pointerOptions.stopDown) {\n pointerOptions.stopDown = FALSE;\n }\n\n super(pointerOptions);\n\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n this.anchor_ = null;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.lastAngle_ = undefined;\n\n /**\n * @private\n * @type {boolean}\n */\n this.rotating_ = false;\n\n /**\n * @private\n * @type {number}\n */\n this.rotationDelta_ = 0.0;\n\n /**\n * @private\n * @type {number}\n */\n this.threshold_ = options.threshold !== undefined ? options.threshold : 0.3;\n\n /**\n * @private\n * @type {number}\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n }\n\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n */\n handleDragEvent(mapBrowserEvent) {\n let rotationDelta = 0.0;\n\n const touch0 = this.targetPointers[0];\n const touch1 = this.targetPointers[1];\n\n // angle between touches\n const angle = Math.atan2(\n touch1.clientY - touch0.clientY,\n touch1.clientX - touch0.clientX\n );\n\n if (this.lastAngle_ !== undefined) {\n const delta = angle - this.lastAngle_;\n this.rotationDelta_ += delta;\n if (!this.rotating_ && Math.abs(this.rotationDelta_) > this.threshold_) {\n this.rotating_ = true;\n }\n rotationDelta = delta;\n }\n this.lastAngle_ = angle;\n\n const map = mapBrowserEvent.map;\n const view = map.getView();\n if (view.getConstraints().rotation === disable) {\n return;\n }\n\n // rotate anchor point.\n // FIXME: should be the intersection point between the lines:\n // touch0,touch1 and previousTouch0,previousTouch1\n this.anchor_ = map.getCoordinateFromPixelInternal(\n map.getEventPixel(centroidFromPointers(this.targetPointers))\n );\n\n // rotate\n if (this.rotating_) {\n map.render();\n view.adjustRotationInternal(rotationDelta, this.anchor_);\n }\n }\n\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleUpEvent(mapBrowserEvent) {\n if (this.targetPointers.length < 2) {\n const map = mapBrowserEvent.map;\n const view = map.getView();\n view.endInteraction(this.duration_);\n return false;\n }\n return true;\n }\n\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleDownEvent(mapBrowserEvent) {\n if (this.targetPointers.length >= 2) {\n const map = mapBrowserEvent.map;\n this.anchor_ = null;\n this.lastAngle_ = undefined;\n this.rotating_ = false;\n this.rotationDelta_ = 0.0;\n if (!this.handlingDownUpSequence) {\n map.getView().beginInteraction();\n }\n return true;\n }\n return false;\n }\n}\n\nexport default PinchRotate;\n","/**\n * @module ol/interaction/PinchZoom\n */\nimport PointerInteraction, {\n centroid as centroidFromPointers,\n} from './Pointer.js';\nimport {FALSE} from '../functions.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=400] Animation duration in milliseconds.\n */\n\n/**\n * @classdesc\n * Allows the user to zoom the map by pinching with two fingers\n * on a touch screen.\n * @api\n */\nclass PinchZoom extends PointerInteraction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n const pointerOptions = /** @type {import(\"./Pointer.js\").Options} */ (\n options\n );\n\n if (!pointerOptions.stopDown) {\n pointerOptions.stopDown = FALSE;\n }\n\n super(pointerOptions);\n\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n this.anchor_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.duration_ = options.duration !== undefined ? options.duration : 400;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.lastDistance_ = undefined;\n\n /**\n * @private\n * @type {number}\n */\n this.lastScaleDelta_ = 1;\n }\n\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n */\n handleDragEvent(mapBrowserEvent) {\n let scaleDelta = 1.0;\n\n const touch0 = this.targetPointers[0];\n const touch1 = this.targetPointers[1];\n const dx = touch0.clientX - touch1.clientX;\n const dy = touch0.clientY - touch1.clientY;\n\n // distance between touches\n const distance = Math.sqrt(dx * dx + dy * dy);\n\n if (this.lastDistance_ !== undefined) {\n scaleDelta = this.lastDistance_ / distance;\n }\n this.lastDistance_ = distance;\n\n const map = mapBrowserEvent.map;\n const view = map.getView();\n\n if (scaleDelta != 1.0) {\n this.lastScaleDelta_ = scaleDelta;\n }\n\n // scale anchor point.\n this.anchor_ = map.getCoordinateFromPixelInternal(\n map.getEventPixel(centroidFromPointers(this.targetPointers))\n );\n\n // scale, bypass the resolution constraint\n map.render();\n view.adjustResolutionInternal(scaleDelta, this.anchor_);\n }\n\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleUpEvent(mapBrowserEvent) {\n if (this.targetPointers.length < 2) {\n const map = mapBrowserEvent.map;\n const view = map.getView();\n const direction = this.lastScaleDelta_ > 1 ? 1 : -1;\n view.endInteraction(this.duration_, direction);\n return false;\n }\n return true;\n }\n\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleDownEvent(mapBrowserEvent) {\n if (this.targetPointers.length >= 2) {\n const map = mapBrowserEvent.map;\n this.anchor_ = null;\n this.lastDistance_ = undefined;\n this.lastScaleDelta_ = 1;\n if (!this.handlingDownUpSequence) {\n map.getView().beginInteraction();\n }\n return true;\n }\n return false;\n }\n}\n\nexport default PinchZoom;\n","/**\n * @module ol/Map\n */\nimport BaseObject from './Object.js';\nimport Collection from './Collection.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport CompositeMapRenderer from './renderer/Composite.js';\nimport EventType from './events/EventType.js';\nimport Layer from './layer/Layer.js';\nimport LayerGroup, {GroupEvent} from './layer/Group.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventHandler from './MapBrowserEventHandler.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapEvent from './MapEvent.js';\nimport MapEventType from './MapEventType.js';\nimport MapProperty from './MapProperty.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport RenderEventType from './render/EventType.js';\nimport TileQueue, {getTilePriority} from './TileQueue.js';\nimport View from './View.js';\nimport ViewHint from './ViewHint.js';\nimport {DEVICE_PIXEL_RATIO, PASSIVE_EVENT_LISTENERS} from './has.js';\nimport {TRUE} from './functions.js';\nimport {\n apply as applyTransform,\n create as createTransform,\n} from './transform.js';\nimport {assert} from './asserts.js';\nimport {\n clone,\n createOrUpdateEmpty,\n equals as equalsExtent,\n getForViewAndSize,\n isEmpty,\n} from './extent.js';\nimport {defaults as defaultControls} from './control/defaults.js';\nimport {defaults as defaultInteractions} from './interaction/defaults.js';\nimport {equals} from './array.js';\nimport {fromUserCoordinate, toUserCoordinate} from './proj.js';\nimport {getUid} from './util.js';\nimport {hasArea} from './size.js';\nimport {listen, unlistenByKey} from './events.js';\nimport {removeNode} from './dom.js';\nimport {warn} from './console.js';\n\n/**\n * State of the current frame. Only `pixelRatio`, `time` and `viewState` should\n * be used in applications.\n * @typedef {Object} FrameState\n * @property {number} pixelRatio The pixel ratio of the frame.\n * @property {number} time The time when rendering of the frame was requested.\n * @property {import(\"./View.js\").State} viewState The state of the current view.\n * @property {boolean} animate Animate.\n * @property {import(\"./transform.js\").Transform} coordinateToPixelTransform CoordinateToPixelTransform.\n * @property {import(\"rbush\").default} declutterTree DeclutterTree.\n * @property {null|import(\"./extent.js\").Extent} extent Extent (in view projection coordinates).\n * @property {import(\"./extent.js\").Extent} [nextExtent] Next extent during an animation series.\n * @property {number} index Index.\n * @property {Array} layerStatesArray LayerStatesArray.\n * @property {number} layerIndex LayerIndex.\n * @property {import(\"./transform.js\").Transform} pixelToCoordinateTransform PixelToCoordinateTransform.\n * @property {Array} postRenderFunctions PostRenderFunctions.\n * @property {import(\"./size.js\").Size} size Size.\n * @property {TileQueue} tileQueue TileQueue.\n * @property {!Object>} usedTiles UsedTiles.\n * @property {Array} viewHints ViewHints.\n * @property {!Object>} wantedTiles WantedTiles.\n * @property {string} mapId The id of the map.\n * @property {Object} renderTargets Identifiers of previously rendered elements.\n */\n\n/**\n * @typedef {function(Map, ?FrameState): any} PostRenderFunction\n */\n\n/**\n * @typedef {Object} AtPixelOptions\n * @property {undefined|function(import(\"./layer/Layer.js\").default): boolean} [layerFilter] Layer filter\n * function. The filter function will receive one argument, the\n * {@link module:ol/layer/Layer~Layer layer-candidate} and it should return a boolean value.\n * Only layers which are visible and for which this function returns `true`\n * will be tested for features. By default, all visible layers will be tested.\n * @property {number} [hitTolerance=0] Hit-detection tolerance in css pixels. Pixels\n * inside the radius around the given position will be checked for features.\n * @property {boolean} [checkWrapped=true] Check-Wrapped Will check for wrapped geometries inside the range of\n * +/- 1 world width. Works only if a projection is used that can be wrapped.\n */\n\n/**\n * @typedef {Object} MapOptionsInternal\n * @property {Collection} [controls] Controls.\n * @property {Collection} [interactions] Interactions.\n * @property {HTMLElement|Document} keyboardEventTarget KeyboardEventTarget.\n * @property {Collection} overlays Overlays.\n * @property {Object} values Values.\n */\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:layergroup'|'change:size'|'change:target'|'change:view'} MapObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} MapEventHandler\n */\n\n/**\n * Object literal with config options for the map.\n * @typedef {Object} MapOptions\n * @property {Collection|Array} [controls]\n * Controls initially added to the map. If not specified,\n * {@link module:ol/control/defaults.defaults} is used.\n * @property {number} [pixelRatio=window.devicePixelRatio] The ratio between\n * physical pixels and device-independent pixels (dips) on the device.\n * @property {Collection|Array} [interactions]\n * Interactions that are initially added to the map. If not specified,\n * {@link module:ol/interaction/defaults.defaults} is used.\n * @property {HTMLElement|Document|string} [keyboardEventTarget] The element to\n * listen to keyboard events on. This determines when the `KeyboardPan` and\n * `KeyboardZoom` interactions trigger. For example, if this option is set to\n * `document` the keyboard interactions will always trigger. If this option is\n * not specified, the element the library listens to keyboard events on is the\n * map target (i.e. the user-provided div for the map). If this is not\n * `document`, the target element needs to be focused for key events to be\n * emitted, requiring that the target element has a `tabindex` attribute.\n * @property {Array|Collection|LayerGroup} [layers]\n * Layers. If this is not defined, a map with no layers will be rendered. Note\n * that layers are rendered in the order supplied, so if you want, for example,\n * a vector layer to appear on top of a tile layer, it must come after the tile\n * layer.\n * @property {number} [maxTilesLoading=16] Maximum number tiles to load\n * simultaneously.\n * @property {number} [moveTolerance=1] The minimum distance in pixels the\n * cursor must move to be detected as a map move event instead of a click.\n * Increasing this value can make it easier to click on the map.\n * @property {Collection|Array} [overlays]\n * Overlays initially added to the map. By default, no overlays are added.\n * @property {HTMLElement|string} [target] The container for the map, either the\n * element itself or the `id` of the element. If not specified at construction\n * time, {@link module:ol/Map~Map#setTarget} must be called for the map to be\n * rendered. If passed by element, the container can be in a secondary document.\n * **Note:** CSS `transform` support for the target element is limited to `scale`.\n * @property {View|Promise} [view] The map's view. No layer sources will be\n * fetched unless this is specified at construction time or through\n * {@link module:ol/Map~Map#setView}.\n */\n\n/**\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n */\nfunction removeLayerMapProperty(layer) {\n if (layer instanceof Layer) {\n layer.setMapInternal(null);\n return;\n }\n if (layer instanceof LayerGroup) {\n layer.getLayers().forEach(removeLayerMapProperty);\n }\n}\n\n/**\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @param {Map} map Map.\n */\nfunction setLayerMapProperty(layer, map) {\n if (layer instanceof Layer) {\n layer.setMapInternal(map);\n return;\n }\n if (layer instanceof LayerGroup) {\n const layers = layer.getLayers().getArray();\n for (let i = 0, ii = layers.length; i < ii; ++i) {\n setLayerMapProperty(layers[i], map);\n }\n }\n}\n\n/**\n * @classdesc\n * The map is the core component of OpenLayers. For a map to render, a view,\n * one or more layers, and a target container are needed:\n *\n * import Map from 'ol/Map.js';\n * import View from 'ol/View.js';\n * import TileLayer from 'ol/layer/Tile.js';\n * import OSM from 'ol/source/OSM.js';\n *\n * const map = new Map({\n * view: new View({\n * center: [0, 0],\n * zoom: 1,\n * }),\n * layers: [\n * new TileLayer({\n * source: new OSM(),\n * }),\n * ],\n * target: 'map',\n * });\n *\n * The above snippet creates a map using a {@link module:ol/layer/Tile~TileLayer} to\n * display {@link module:ol/source/OSM~OSM} OSM data and render it to a DOM\n * element with the id `map`.\n *\n * The constructor places a viewport container (with CSS class name\n * `ol-viewport`) in the target element (see `getViewport()`), and then two\n * further elements within the viewport: one with CSS class name\n * `ol-overlaycontainer-stopevent` for controls and some overlays, and one with\n * CSS class name `ol-overlaycontainer` for other overlays (see the `stopEvent`\n * option of {@link module:ol/Overlay~Overlay} for the difference). The map\n * itself is placed in a further element within the viewport.\n *\n * Layers are stored as a {@link module:ol/Collection~Collection} in\n * layerGroups. A top-level group is provided by the library. This is what is\n * accessed by `getLayerGroup` and `setLayerGroup`. Layers entered in the\n * options are added to this group, and `addLayer` and `removeLayer` change the\n * layer collection in the group. `getLayers` is a convenience function for\n * `getLayerGroup().getLayers()`. Note that {@link module:ol/layer/Group~LayerGroup}\n * is a subclass of {@link module:ol/layer/Base~BaseLayer}, so layers entered in the\n * options or added with `addLayer` can be groups, which can contain further\n * groups, and so on.\n *\n * @fires import(\"./MapBrowserEvent.js\").MapBrowserEvent\n * @fires import(\"./MapEvent.js\").MapEvent\n * @fires import(\"./render/Event.js\").default#precompose\n * @fires import(\"./render/Event.js\").default#postcompose\n * @fires import(\"./render/Event.js\").default#rendercomplete\n * @api\n */\nclass Map extends BaseObject {\n /**\n * @param {MapOptions} [options] Map options.\n */\n constructor(options) {\n super();\n\n options = options || {};\n\n /***\n * @type {MapEventHandler}\n */\n this.on;\n\n /***\n * @type {MapEventHandler}\n */\n this.once;\n\n /***\n * @type {MapEventHandler}\n */\n this.un;\n\n const optionsInternal = createOptionsInternal(options);\n\n /**\n * @private\n * @type {boolean|undefined}\n */\n this.renderComplete_;\n\n /**\n * @private\n * @type {boolean}\n */\n this.loaded_ = true;\n\n /** @private */\n this.boundHandleBrowserEvent_ = this.handleBrowserEvent.bind(this);\n\n /**\n * @type {number}\n * @private\n */\n this.maxTilesLoading_ =\n options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;\n\n /**\n * @private\n * @type {number}\n */\n this.pixelRatio_ =\n options.pixelRatio !== undefined\n ? options.pixelRatio\n : DEVICE_PIXEL_RATIO;\n\n /**\n * @private\n * @type {*}\n */\n this.postRenderTimeoutHandle_;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.animationDelayKey_;\n\n /**\n * @private\n */\n this.animationDelay_ = this.animationDelay_.bind(this);\n\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n this.coordinateToPixelTransform_ = createTransform();\n\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n this.pixelToCoordinateTransform_ = createTransform();\n\n /**\n * @private\n * @type {number}\n */\n this.frameIndex_ = 0;\n\n /**\n * @private\n * @type {?FrameState}\n */\n this.frameState_ = null;\n\n /**\n * The extent at the previous 'moveend' event.\n * @private\n * @type {import(\"./extent.js\").Extent}\n */\n this.previousExtent_ = null;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.viewPropertyListenerKey_ = null;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.viewChangeListenerKey_ = null;\n\n /**\n * @private\n * @type {?Array}\n */\n this.layerGroupPropertyListenerKeys_ = null;\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.viewport_ = document.createElement('div');\n this.viewport_.className =\n 'ol-viewport' + ('ontouchstart' in window ? ' ol-touch' : '');\n this.viewport_.style.position = 'relative';\n this.viewport_.style.overflow = 'hidden';\n this.viewport_.style.width = '100%';\n this.viewport_.style.height = '100%';\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.overlayContainer_ = document.createElement('div');\n this.overlayContainer_.style.position = 'absolute';\n this.overlayContainer_.style.zIndex = '0';\n this.overlayContainer_.style.width = '100%';\n this.overlayContainer_.style.height = '100%';\n this.overlayContainer_.style.pointerEvents = 'none';\n this.overlayContainer_.className = 'ol-overlaycontainer';\n this.viewport_.appendChild(this.overlayContainer_);\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.overlayContainerStopEvent_ = document.createElement('div');\n this.overlayContainerStopEvent_.style.position = 'absolute';\n this.overlayContainerStopEvent_.style.zIndex = '0';\n this.overlayContainerStopEvent_.style.width = '100%';\n this.overlayContainerStopEvent_.style.height = '100%';\n this.overlayContainerStopEvent_.style.pointerEvents = 'none';\n this.overlayContainerStopEvent_.className = 'ol-overlaycontainer-stopevent';\n this.viewport_.appendChild(this.overlayContainerStopEvent_);\n\n /**\n * @private\n * @type {MapBrowserEventHandler}\n */\n this.mapBrowserEventHandler_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.moveTolerance_ = options.moveTolerance;\n\n /**\n * @private\n * @type {HTMLElement|Document}\n */\n this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n\n /**\n * @private\n * @type {?Array}\n */\n this.targetChangeHandlerKeys_ = null;\n\n /**\n * @private\n * @type {HTMLElement|null}\n */\n this.targetElement_ = null;\n\n /**\n * @type {ResizeObserver}\n */\n this.resizeObserver_ = new ResizeObserver(() => this.updateSize());\n\n /**\n * @type {Collection}\n * @protected\n */\n this.controls = optionsInternal.controls || defaultControls();\n\n /**\n * @type {Collection}\n * @protected\n */\n this.interactions =\n optionsInternal.interactions ||\n defaultInteractions({\n onFocusOnly: true,\n });\n\n /**\n * @type {Collection}\n * @private\n */\n this.overlays_ = optionsInternal.overlays;\n\n /**\n * A lookup of overlays by id.\n * @private\n * @type {Object}\n */\n this.overlayIdIndex_ = {};\n\n /**\n * @type {import(\"./renderer/Map.js\").default|null}\n * @private\n */\n this.renderer_ = null;\n\n /**\n * @private\n * @type {!Array}\n */\n this.postRenderFunctions_ = [];\n\n /**\n * @private\n * @type {TileQueue}\n */\n this.tileQueue_ = new TileQueue(\n this.getTilePriority.bind(this),\n this.handleTileChange_.bind(this)\n );\n\n this.addChangeListener(\n MapProperty.LAYERGROUP,\n this.handleLayerGroupChanged_\n );\n this.addChangeListener(MapProperty.VIEW, this.handleViewChanged_);\n this.addChangeListener(MapProperty.SIZE, this.handleSizeChanged_);\n this.addChangeListener(MapProperty.TARGET, this.handleTargetChanged_);\n\n // setProperties will trigger the rendering of the map if the map\n // is \"defined\" already.\n this.setProperties(optionsInternal.values);\n\n const map = this;\n if (options.view && !(options.view instanceof View)) {\n options.view.then(function (viewOptions) {\n map.setView(new View(viewOptions));\n });\n }\n\n this.controls.addEventListener(\n CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent\n */\n (event) => {\n event.element.setMap(this);\n }\n );\n\n this.controls.addEventListener(\n CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n event.element.setMap(null);\n }\n );\n\n this.interactions.addEventListener(\n CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n event.element.setMap(this);\n }\n );\n\n this.interactions.addEventListener(\n CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n event.element.setMap(null);\n }\n );\n\n this.overlays_.addEventListener(\n CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n this.addOverlayInternal_(event.element);\n }\n );\n\n this.overlays_.addEventListener(\n CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n const id = event.element.getId();\n if (id !== undefined) {\n delete this.overlayIdIndex_[id.toString()];\n }\n event.element.setMap(null);\n }\n );\n\n this.controls.forEach(\n /**\n * @param {import(\"./control/Control.js\").default} control Control.\n */\n (control) => {\n control.setMap(this);\n }\n );\n\n this.interactions.forEach(\n /**\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction.\n */\n (interaction) => {\n interaction.setMap(this);\n }\n );\n\n this.overlays_.forEach(this.addOverlayInternal_.bind(this));\n }\n\n /**\n * Add the given control to the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @api\n */\n addControl(control) {\n this.getControls().push(control);\n }\n\n /**\n * Add the given interaction to the map. If you want to add an interaction\n * at another point of the collection use `getInteractions()` and the methods\n * available on {@link module:ol/Collection~Collection}. This can be used to\n * stop the event propagation from the handleEvent function. The interactions\n * get to handle the events in the reverse order of this collection.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to add.\n * @api\n */\n addInteraction(interaction) {\n this.getInteractions().push(interaction);\n }\n\n /**\n * Adds the given layer to the top of this map. If you want to add a layer\n * elsewhere in the stack, use `getLayers()` and the methods available on\n * {@link module:ol/Collection~Collection}.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @api\n */\n addLayer(layer) {\n const layers = this.getLayerGroup().getLayers();\n layers.push(layer);\n }\n\n /**\n * @param {import(\"./layer/Group.js\").GroupEvent} event The layer add event.\n * @private\n */\n handleLayerAdd_(event) {\n setLayerMapProperty(event.layer, this);\n }\n\n /**\n * Add the given overlay to the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @api\n */\n addOverlay(overlay) {\n this.getOverlays().push(overlay);\n }\n\n /**\n * This deals with map's overlay collection changes.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @private\n */\n addOverlayInternal_(overlay) {\n const id = overlay.getId();\n if (id !== undefined) {\n this.overlayIdIndex_[id.toString()] = overlay;\n }\n overlay.setMap(this);\n }\n\n /**\n *\n * Clean up.\n */\n disposeInternal() {\n this.controls.clear();\n this.interactions.clear();\n this.overlays_.clear();\n this.resizeObserver_.disconnect();\n this.setTarget(null);\n super.disposeInternal();\n }\n\n /**\n * Detect features that intersect a pixel on the viewport, and execute a\n * callback with each intersecting feature. Layers included in the detection can\n * be configured through the `layerFilter` option in `options`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(import(\"./Feature.js\").FeatureLike, import(\"./layer/Layer.js\").default, import(\"./geom/SimpleGeometry.js\").default): T} callback Feature callback. The callback will be\n * called with two arguments. The first argument is one\n * {@link module:ol/Feature~Feature feature} or\n * {@link module:ol/render/Feature~RenderFeature render feature} at the pixel, the second is\n * the {@link module:ol/layer/Layer~Layer layer} of the feature and will be null for\n * unmanaged layers. To stop detection, callback functions can return a\n * truthy value.\n * @param {AtPixelOptions} [options] Optional options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template T\n * @api\n */\n forEachFeatureAtPixel(pixel, callback, options) {\n if (!this.frameState_ || !this.renderer_) {\n return;\n }\n const coordinate = this.getCoordinateFromPixelInternal(pixel);\n options = options !== undefined ? options : {};\n const hitTolerance =\n options.hitTolerance !== undefined ? options.hitTolerance : 0;\n const layerFilter =\n options.layerFilter !== undefined ? options.layerFilter : TRUE;\n const checkWrapped = options.checkWrapped !== false;\n return this.renderer_.forEachFeatureAtCoordinate(\n coordinate,\n this.frameState_,\n hitTolerance,\n checkWrapped,\n callback,\n null,\n layerFilter,\n null\n );\n }\n\n /**\n * Get all features that intersect a pixel on the viewport.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions} [options] Optional options.\n * @return {Array} The detected features or\n * an empty array if none were found.\n * @api\n */\n getFeaturesAtPixel(pixel, options) {\n const features = [];\n this.forEachFeatureAtPixel(\n pixel,\n function (feature) {\n features.push(feature);\n },\n options\n );\n return features;\n }\n\n /**\n * Get all layers from all layer groups.\n * @return {Array} Layers.\n * @api\n */\n getAllLayers() {\n const layers = [];\n function addLayersFrom(layerGroup) {\n layerGroup.forEach(function (layer) {\n if (layer instanceof LayerGroup) {\n addLayersFrom(layer.getLayers());\n } else {\n layers.push(layer);\n }\n });\n }\n addLayersFrom(this.getLayers());\n return layers;\n }\n\n /**\n * Detect if features intersect a pixel on the viewport. Layers included in the\n * detection can be configured through the `layerFilter` option.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions} [options] Optional options.\n * @return {boolean} Is there a feature at the given pixel?\n * @api\n */\n hasFeatureAtPixel(pixel, options) {\n if (!this.frameState_ || !this.renderer_) {\n return false;\n }\n const coordinate = this.getCoordinateFromPixelInternal(pixel);\n options = options !== undefined ? options : {};\n const layerFilter =\n options.layerFilter !== undefined ? options.layerFilter : TRUE;\n const hitTolerance =\n options.hitTolerance !== undefined ? options.hitTolerance : 0;\n const checkWrapped = options.checkWrapped !== false;\n return this.renderer_.hasFeatureAtCoordinate(\n coordinate,\n this.frameState_,\n hitTolerance,\n checkWrapped,\n layerFilter,\n null\n );\n }\n\n /**\n * Returns the coordinate in user projection for a browser event.\n * @param {MouseEvent} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n getEventCoordinate(event) {\n return this.getCoordinateFromPixel(this.getEventPixel(event));\n }\n\n /**\n * Returns the coordinate in view projection for a browser event.\n * @param {MouseEvent} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n */\n getEventCoordinateInternal(event) {\n return this.getCoordinateFromPixelInternal(this.getEventPixel(event));\n }\n\n /**\n * Returns the map pixel position for a browser event relative to the viewport.\n * @param {UIEvent|{clientX: number, clientY: number}} event Event.\n * @return {import(\"./pixel.js\").Pixel} Pixel.\n * @api\n */\n getEventPixel(event) {\n const viewport = this.viewport_;\n const viewportPosition = viewport.getBoundingClientRect();\n const viewportSize = this.getSize();\n const scaleX = viewportPosition.width / viewportSize[0];\n const scaleY = viewportPosition.height / viewportSize[1];\n const eventPosition =\n //FIXME Are we really calling this with a TouchEvent anywhere?\n 'changedTouches' in event\n ? /** @type {TouchEvent} */ (event).changedTouches[0]\n : /** @type {MouseEvent} */ (event);\n\n return [\n (eventPosition.clientX - viewportPosition.left) / scaleX,\n (eventPosition.clientY - viewportPosition.top) / scaleY,\n ];\n }\n\n /**\n * Get the target in which this map is rendered.\n * Note that this returns what is entered as an option or in setTarget:\n * if that was an element, it returns an element; if a string, it returns that.\n * @return {HTMLElement|string|undefined} The Element or id of the Element that the\n * map is rendered in.\n * @observable\n * @api\n */\n getTarget() {\n return /** @type {HTMLElement|string|undefined} */ (\n this.get(MapProperty.TARGET)\n );\n }\n\n /**\n * Get the DOM element into which this map is rendered. In contrast to\n * `getTarget` this method always return an `Element`, or `null` if the\n * map has no target.\n * @return {HTMLElement} The element that the map is rendered in.\n * @api\n */\n getTargetElement() {\n return this.targetElement_;\n }\n\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * user projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n * @api\n */\n getCoordinateFromPixel(pixel) {\n return toUserCoordinate(\n this.getCoordinateFromPixelInternal(pixel),\n this.getView().getProjection()\n );\n }\n\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * map view projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n */\n getCoordinateFromPixelInternal(pixel) {\n const frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n return applyTransform(frameState.pixelToCoordinateTransform, pixel.slice());\n }\n\n /**\n * Get the map controls. Modifying this collection changes the controls\n * associated with the map.\n * @return {Collection} Controls.\n * @api\n */\n getControls() {\n return this.controls;\n }\n\n /**\n * Get the map overlays. Modifying this collection changes the overlays\n * associated with the map.\n * @return {Collection} Overlays.\n * @api\n */\n getOverlays() {\n return this.overlays_;\n }\n\n /**\n * Get an overlay by its identifier (the value returned by overlay.getId()).\n * Note that the index treats string and numeric identifiers as the same. So\n * `map.getOverlayById(2)` will return an overlay with id `'2'` or `2`.\n * @param {string|number} id Overlay identifier.\n * @return {import(\"./Overlay.js\").default} Overlay.\n * @api\n */\n getOverlayById(id) {\n const overlay = this.overlayIdIndex_[id.toString()];\n return overlay !== undefined ? overlay : null;\n }\n\n /**\n * Get the map interactions. Modifying this collection changes the interactions\n * associated with the map.\n *\n * Interactions are used for e.g. pan, zoom and rotate.\n * @return {Collection} Interactions.\n * @api\n */\n getInteractions() {\n return this.interactions;\n }\n\n /**\n * Get the layergroup associated with this map.\n * @return {LayerGroup} A layer group containing the layers in this map.\n * @observable\n * @api\n */\n getLayerGroup() {\n return /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP));\n }\n\n /**\n * Clear any existing layers and add layers to the map.\n * @param {Array|Collection} layers The layers to be added to the map.\n * @api\n */\n setLayers(layers) {\n const group = this.getLayerGroup();\n if (layers instanceof Collection) {\n group.setLayers(layers);\n return;\n }\n\n const collection = group.getLayers();\n collection.clear();\n collection.extend(layers);\n }\n\n /**\n * Get the collection of layers associated with this map.\n * @return {!Collection} Layers.\n * @api\n */\n getLayers() {\n const layers = this.getLayerGroup().getLayers();\n return layers;\n }\n\n /**\n * @return {boolean} Layers have sources that are still loading.\n */\n getLoadingOrNotReady() {\n const layerStatesArray = this.getLayerGroup().getLayerStatesArray();\n for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n const state = layerStatesArray[i];\n if (!state.visible) {\n continue;\n }\n const renderer = state.layer.getRenderer();\n if (renderer && !renderer.ready) {\n return true;\n }\n const source = state.layer.getSource();\n if (source && source.loading) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the user\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n * @api\n */\n getPixelFromCoordinate(coordinate) {\n const viewCoordinate = fromUserCoordinate(\n coordinate,\n this.getView().getProjection()\n );\n return this.getPixelFromCoordinateInternal(viewCoordinate);\n }\n\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the map view\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n */\n getPixelFromCoordinateInternal(coordinate) {\n const frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n return applyTransform(\n frameState.coordinateToPixelTransform,\n coordinate.slice(0, 2)\n );\n }\n\n /**\n * Get the map renderer.\n * @return {import(\"./renderer/Map.js\").default|null} Renderer\n */\n getRenderer() {\n return this.renderer_;\n }\n\n /**\n * Get the size of this map.\n * @return {import(\"./size.js\").Size|undefined} The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n getSize() {\n return /** @type {import(\"./size.js\").Size|undefined} */ (\n this.get(MapProperty.SIZE)\n );\n }\n\n /**\n * Get the view associated with this map. A view manages properties such as\n * center and resolution.\n * @return {View} The view that controls this map.\n * @observable\n * @api\n */\n getView() {\n return /** @type {View} */ (this.get(MapProperty.VIEW));\n }\n\n /**\n * Get the element that serves as the map viewport.\n * @return {HTMLElement} Viewport.\n * @api\n */\n getViewport() {\n return this.viewport_;\n }\n\n /**\n * Get the element that serves as the container for overlays. Elements added to\n * this container will let mousedown and touchstart events through to the map,\n * so clicks and gestures on an overlay will trigger {@link module:ol/MapBrowserEvent~MapBrowserEvent}\n * events.\n * @return {!HTMLElement} The map's overlay container.\n */\n getOverlayContainer() {\n return this.overlayContainer_;\n }\n\n /**\n * Get the element that serves as a container for overlays that don't allow\n * event propagation. Elements added to this container won't let mousedown and\n * touchstart events through to the map, so clicks and gestures on an overlay\n * don't trigger any {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n * @return {!HTMLElement} The map's overlay container that stops events.\n */\n getOverlayContainerStopEvent() {\n return this.overlayContainerStopEvent_;\n }\n\n /**\n * @return {!Document} The document where the map is displayed.\n */\n getOwnerDocument() {\n const targetElement = this.getTargetElement();\n return targetElement ? targetElement.ownerDocument : document;\n }\n\n /**\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\n getTilePriority(tile, tileSourceKey, tileCenter, tileResolution) {\n return getTilePriority(\n this.frameState_,\n tile,\n tileSourceKey,\n tileCenter,\n tileResolution\n );\n }\n\n /**\n * @param {UIEvent} browserEvent Browser event.\n * @param {string} [type] Type.\n */\n handleBrowserEvent(browserEvent, type) {\n type = type || browserEvent.type;\n const mapBrowserEvent = new MapBrowserEvent(type, this, browserEvent);\n this.handleMapBrowserEvent(mapBrowserEvent);\n }\n\n /**\n * @param {MapBrowserEvent} mapBrowserEvent The event to handle.\n */\n handleMapBrowserEvent(mapBrowserEvent) {\n if (!this.frameState_) {\n // With no view defined, we cannot translate pixels into geographical\n // coordinates so interactions cannot be used.\n return;\n }\n const originalEvent = /** @type {PointerEvent} */ (\n mapBrowserEvent.originalEvent\n );\n const eventType = originalEvent.type;\n if (\n eventType === PointerEventType.POINTERDOWN ||\n eventType === EventType.WHEEL ||\n eventType === EventType.KEYDOWN\n ) {\n const doc = this.getOwnerDocument();\n const rootNode = this.viewport_.getRootNode\n ? this.viewport_.getRootNode()\n : doc;\n const target = /** @type {Node} */ (originalEvent.target);\n if (\n // Abort if the target is a child of the container for elements whose events are not meant\n // to be handled by map interactions.\n this.overlayContainerStopEvent_.contains(target) ||\n // Abort if the event target is a child of the container that is no longer in the page.\n // It's possible for the target to no longer be in the page if it has been removed in an\n // event listener, this might happen in a Control that recreates it's content based on\n // user interaction either manually or via a render in something like https://reactjs.org/\n !(rootNode === doc ? doc.documentElement : rootNode).contains(target)\n ) {\n return;\n }\n }\n mapBrowserEvent.frameState = this.frameState_;\n if (this.dispatchEvent(mapBrowserEvent) !== false) {\n const interactionsArray = this.getInteractions().getArray().slice();\n for (let i = interactionsArray.length - 1; i >= 0; i--) {\n const interaction = interactionsArray[i];\n if (\n interaction.getMap() !== this ||\n !interaction.getActive() ||\n !this.getTargetElement()\n ) {\n continue;\n }\n const cont = interaction.handleEvent(mapBrowserEvent);\n if (!cont || mapBrowserEvent.propagationStopped) {\n break;\n }\n }\n }\n }\n\n /**\n * @protected\n */\n handlePostRender() {\n const frameState = this.frameState_;\n\n // Manage the tile queue\n // Image loads are expensive and a limited resource, so try to use them\n // efficiently:\n // * When the view is static we allow a large number of parallel tile loads\n // to complete the frame as quickly as possible.\n // * When animating or interacting, image loads can cause janks, so we reduce\n // the maximum number of loads per frame and limit the number of parallel\n // tile loads to remain reactive to view changes and to reduce the chance of\n // loading tiles that will quickly disappear from view.\n const tileQueue = this.tileQueue_;\n if (!tileQueue.isEmpty()) {\n let maxTotalLoading = this.maxTilesLoading_;\n let maxNewLoads = maxTotalLoading;\n if (frameState) {\n const hints = frameState.viewHints;\n if (hints[ViewHint.ANIMATING] || hints[ViewHint.INTERACTING]) {\n const lowOnFrameBudget = Date.now() - frameState.time > 8;\n maxTotalLoading = lowOnFrameBudget ? 0 : 8;\n maxNewLoads = lowOnFrameBudget ? 0 : 2;\n }\n }\n if (tileQueue.getTilesLoading() < maxTotalLoading) {\n tileQueue.reprioritize(); // FIXME only call if view has changed\n tileQueue.loadMoreTiles(maxTotalLoading, maxNewLoads);\n }\n }\n\n if (frameState && this.renderer_ && !frameState.animate) {\n if (this.renderComplete_ === true) {\n if (this.hasListener(RenderEventType.RENDERCOMPLETE)) {\n this.renderer_.dispatchRenderEvent(\n RenderEventType.RENDERCOMPLETE,\n frameState\n );\n }\n if (this.loaded_ === false) {\n this.loaded_ = true;\n this.dispatchEvent(\n new MapEvent(MapEventType.LOADEND, this, frameState)\n );\n }\n } else if (this.loaded_ === true) {\n this.loaded_ = false;\n this.dispatchEvent(\n new MapEvent(MapEventType.LOADSTART, this, frameState)\n );\n }\n }\n\n const postRenderFunctions = this.postRenderFunctions_;\n for (let i = 0, ii = postRenderFunctions.length; i < ii; ++i) {\n postRenderFunctions[i](this, frameState);\n }\n postRenderFunctions.length = 0;\n }\n\n /**\n * @private\n */\n handleSizeChanged_() {\n if (this.getView() && !this.getView().getAnimating()) {\n this.getView().resolveConstraints(0);\n }\n\n this.render();\n }\n\n /**\n * @private\n */\n handleTargetChanged_() {\n if (this.mapBrowserEventHandler_) {\n for (let i = 0, ii = this.targetChangeHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.targetChangeHandlerKeys_[i]);\n }\n this.targetChangeHandlerKeys_ = null;\n this.viewport_.removeEventListener(\n EventType.CONTEXTMENU,\n this.boundHandleBrowserEvent_\n );\n this.viewport_.removeEventListener(\n EventType.WHEEL,\n this.boundHandleBrowserEvent_\n );\n this.mapBrowserEventHandler_.dispose();\n this.mapBrowserEventHandler_ = null;\n removeNode(this.viewport_);\n }\n\n if (this.targetElement_) {\n this.resizeObserver_.unobserve(this.targetElement_);\n const rootNode = this.targetElement_.getRootNode();\n if (rootNode instanceof ShadowRoot) {\n this.resizeObserver_.unobserve(rootNode.host);\n }\n this.setSize(undefined);\n }\n\n // target may be undefined, null, a string or an Element.\n // If it's a string we convert it to an Element before proceeding.\n // If it's not now an Element we remove the viewport from the DOM.\n // If it's an Element we append the viewport element to it.\n\n const target = this.getTarget();\n const targetElement =\n typeof target === 'string' ? document.getElementById(target) : target;\n this.targetElement_ = targetElement;\n if (!targetElement) {\n if (this.renderer_) {\n clearTimeout(this.postRenderTimeoutHandle_);\n this.postRenderTimeoutHandle_ = undefined;\n this.postRenderFunctions_.length = 0;\n this.renderer_.dispose();\n this.renderer_ = null;\n }\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n this.animationDelayKey_ = undefined;\n }\n } else {\n targetElement.appendChild(this.viewport_);\n if (!this.renderer_) {\n this.renderer_ = new CompositeMapRenderer(this);\n }\n\n this.mapBrowserEventHandler_ = new MapBrowserEventHandler(\n this,\n this.moveTolerance_\n );\n for (const key in MapBrowserEventType) {\n this.mapBrowserEventHandler_.addEventListener(\n MapBrowserEventType[key],\n this.handleMapBrowserEvent.bind(this)\n );\n }\n this.viewport_.addEventListener(\n EventType.CONTEXTMENU,\n this.boundHandleBrowserEvent_,\n false\n );\n this.viewport_.addEventListener(\n EventType.WHEEL,\n this.boundHandleBrowserEvent_,\n PASSIVE_EVENT_LISTENERS ? {passive: false} : false\n );\n\n const keyboardEventTarget = !this.keyboardEventTarget_\n ? targetElement\n : this.keyboardEventTarget_;\n this.targetChangeHandlerKeys_ = [\n listen(\n keyboardEventTarget,\n EventType.KEYDOWN,\n this.handleBrowserEvent,\n this\n ),\n listen(\n keyboardEventTarget,\n EventType.KEYPRESS,\n this.handleBrowserEvent,\n this\n ),\n ];\n const rootNode = targetElement.getRootNode();\n if (rootNode instanceof ShadowRoot) {\n this.resizeObserver_.observe(rootNode.host);\n }\n this.resizeObserver_.observe(targetElement);\n }\n\n this.updateSize();\n // updateSize calls setSize, so no need to call this.render\n // ourselves here.\n }\n\n /**\n * @private\n */\n handleTileChange_() {\n this.render();\n }\n\n /**\n * @private\n */\n handleViewPropertyChanged_() {\n this.render();\n }\n\n /**\n * @private\n */\n handleViewChanged_() {\n if (this.viewPropertyListenerKey_) {\n unlistenByKey(this.viewPropertyListenerKey_);\n this.viewPropertyListenerKey_ = null;\n }\n if (this.viewChangeListenerKey_) {\n unlistenByKey(this.viewChangeListenerKey_);\n this.viewChangeListenerKey_ = null;\n }\n const view = this.getView();\n if (view) {\n this.updateViewportSize_();\n\n this.viewPropertyListenerKey_ = listen(\n view,\n ObjectEventType.PROPERTYCHANGE,\n this.handleViewPropertyChanged_,\n this\n );\n this.viewChangeListenerKey_ = listen(\n view,\n EventType.CHANGE,\n this.handleViewPropertyChanged_,\n this\n );\n\n view.resolveConstraints(0);\n }\n this.render();\n }\n\n /**\n * @private\n */\n handleLayerGroupChanged_() {\n if (this.layerGroupPropertyListenerKeys_) {\n this.layerGroupPropertyListenerKeys_.forEach(unlistenByKey);\n this.layerGroupPropertyListenerKeys_ = null;\n }\n const layerGroup = this.getLayerGroup();\n if (layerGroup) {\n this.handleLayerAdd_(new GroupEvent('addlayer', layerGroup));\n this.layerGroupPropertyListenerKeys_ = [\n listen(layerGroup, ObjectEventType.PROPERTYCHANGE, this.render, this),\n listen(layerGroup, EventType.CHANGE, this.render, this),\n listen(layerGroup, 'addlayer', this.handleLayerAdd_, this),\n listen(layerGroup, 'removelayer', this.handleLayerRemove_, this),\n ];\n }\n this.render();\n }\n\n /**\n * @return {boolean} Is rendered.\n */\n isRendered() {\n return !!this.frameState_;\n }\n\n /**\n * @private\n */\n animationDelay_() {\n this.animationDelayKey_ = undefined;\n this.renderFrame_(Date.now());\n }\n\n /**\n * Requests an immediate render in a synchronous manner.\n * @api\n */\n renderSync() {\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n }\n this.animationDelay_();\n }\n\n /**\n * Redraws all text after new fonts have loaded\n */\n redrawText() {\n const layerStates = this.getLayerGroup().getLayerStatesArray();\n for (let i = 0, ii = layerStates.length; i < ii; ++i) {\n const layer = layerStates[i].layer;\n if (layer.hasRenderer()) {\n layer.getRenderer().handleFontsChanged();\n }\n }\n }\n\n /**\n * Request a map rendering (at the next animation frame).\n * @api\n */\n render() {\n if (this.renderer_ && this.animationDelayKey_ === undefined) {\n this.animationDelayKey_ = requestAnimationFrame(this.animationDelay_);\n }\n }\n\n /**\n * Remove the given control from the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @return {import(\"./control/Control.js\").default|undefined} The removed control (or undefined\n * if the control was not found).\n * @api\n */\n removeControl(control) {\n return this.getControls().remove(control);\n }\n\n /**\n * Remove the given interaction from the map.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to remove.\n * @return {import(\"./interaction/Interaction.js\").default|undefined} The removed interaction (or\n * undefined if the interaction was not found).\n * @api\n */\n removeInteraction(interaction) {\n return this.getInteractions().remove(interaction);\n }\n\n /**\n * Removes the given layer from the map.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @return {import(\"./layer/Base.js\").default|undefined} The removed layer (or undefined if the\n * layer was not found).\n * @api\n */\n removeLayer(layer) {\n const layers = this.getLayerGroup().getLayers();\n return layers.remove(layer);\n }\n\n /**\n * @param {import(\"./layer/Group.js\").GroupEvent} event The layer remove event.\n * @private\n */\n handleLayerRemove_(event) {\n removeLayerMapProperty(event.layer);\n }\n\n /**\n * Remove the given overlay from the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @return {import(\"./Overlay.js\").default|undefined} The removed overlay (or undefined\n * if the overlay was not found).\n * @api\n */\n removeOverlay(overlay) {\n return this.getOverlays().remove(overlay);\n }\n\n /**\n * @param {number} time Time.\n * @private\n */\n renderFrame_(time) {\n const size = this.getSize();\n const view = this.getView();\n const previousFrameState = this.frameState_;\n /** @type {?FrameState} */\n let frameState = null;\n if (size !== undefined && hasArea(size) && view && view.isDef()) {\n const viewHints = view.getHints(\n this.frameState_ ? this.frameState_.viewHints : undefined\n );\n const viewState = view.getState();\n frameState = {\n animate: false,\n coordinateToPixelTransform: this.coordinateToPixelTransform_,\n declutterTree: null,\n extent: getForViewAndSize(\n viewState.center,\n viewState.resolution,\n viewState.rotation,\n size\n ),\n index: this.frameIndex_++,\n layerIndex: 0,\n layerStatesArray: this.getLayerGroup().getLayerStatesArray(),\n pixelRatio: this.pixelRatio_,\n pixelToCoordinateTransform: this.pixelToCoordinateTransform_,\n postRenderFunctions: [],\n size: size,\n tileQueue: this.tileQueue_,\n time: time,\n usedTiles: {},\n viewState: viewState,\n viewHints: viewHints,\n wantedTiles: {},\n mapId: getUid(this),\n renderTargets: {},\n };\n if (viewState.nextCenter && viewState.nextResolution) {\n const rotation = isNaN(viewState.nextRotation)\n ? viewState.rotation\n : viewState.nextRotation;\n\n frameState.nextExtent = getForViewAndSize(\n viewState.nextCenter,\n viewState.nextResolution,\n rotation,\n size\n );\n }\n }\n\n this.frameState_ = frameState;\n this.renderer_.renderFrame(frameState);\n\n if (frameState) {\n if (frameState.animate) {\n this.render();\n }\n Array.prototype.push.apply(\n this.postRenderFunctions_,\n frameState.postRenderFunctions\n );\n\n if (previousFrameState) {\n const moveStart =\n !this.previousExtent_ ||\n (!isEmpty(this.previousExtent_) &&\n !equalsExtent(frameState.extent, this.previousExtent_));\n if (moveStart) {\n this.dispatchEvent(\n new MapEvent(MapEventType.MOVESTART, this, previousFrameState)\n );\n this.previousExtent_ = createOrUpdateEmpty(this.previousExtent_);\n }\n }\n\n const idle =\n this.previousExtent_ &&\n !frameState.viewHints[ViewHint.ANIMATING] &&\n !frameState.viewHints[ViewHint.INTERACTING] &&\n !equalsExtent(frameState.extent, this.previousExtent_);\n\n if (idle) {\n this.dispatchEvent(\n new MapEvent(MapEventType.MOVEEND, this, frameState)\n );\n clone(frameState.extent, this.previousExtent_);\n }\n }\n\n this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState));\n\n this.renderComplete_ =\n this.hasListener(MapEventType.LOADSTART) ||\n this.hasListener(MapEventType.LOADEND) ||\n this.hasListener(RenderEventType.RENDERCOMPLETE)\n ? !this.tileQueue_.getTilesLoading() &&\n !this.tileQueue_.getCount() &&\n !this.getLoadingOrNotReady()\n : undefined;\n\n if (!this.postRenderTimeoutHandle_) {\n this.postRenderTimeoutHandle_ = setTimeout(() => {\n this.postRenderTimeoutHandle_ = undefined;\n this.handlePostRender();\n }, 0);\n }\n }\n\n /**\n * Sets the layergroup of this map.\n * @param {LayerGroup} layerGroup A layer group containing the layers in this map.\n * @observable\n * @api\n */\n setLayerGroup(layerGroup) {\n const oldLayerGroup = this.getLayerGroup();\n if (oldLayerGroup) {\n this.handleLayerRemove_(new GroupEvent('removelayer', oldLayerGroup));\n }\n this.set(MapProperty.LAYERGROUP, layerGroup);\n }\n\n /**\n * Set the size of this map.\n * @param {import(\"./size.js\").Size|undefined} size The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n setSize(size) {\n this.set(MapProperty.SIZE, size);\n }\n\n /**\n * Set the target element to render this map into.\n * @param {HTMLElement|string} [target] The Element or id of the Element\n * that the map is rendered in.\n * @observable\n * @api\n */\n setTarget(target) {\n this.set(MapProperty.TARGET, target);\n }\n\n /**\n * Set the view for this map.\n * @param {View|Promise} view The view that controls this map.\n * It is also possible to pass a promise that resolves to options for constructing a view. This\n * alternative allows view properties to be resolved by sources or other components that load\n * view-related metadata.\n * @observable\n * @api\n */\n setView(view) {\n if (!view || view instanceof View) {\n this.set(MapProperty.VIEW, view);\n return;\n }\n this.set(MapProperty.VIEW, new View());\n\n const map = this;\n view.then(function (viewOptions) {\n map.setView(new View(viewOptions));\n });\n }\n\n /**\n * Force a recalculation of the map viewport size. This should be called when\n * third-party code changes the size of the map viewport.\n * @api\n */\n updateSize() {\n const targetElement = this.getTargetElement();\n\n let size = undefined;\n if (targetElement) {\n const computedStyle = getComputedStyle(targetElement);\n const width =\n targetElement.offsetWidth -\n parseFloat(computedStyle['borderLeftWidth']) -\n parseFloat(computedStyle['paddingLeft']) -\n parseFloat(computedStyle['paddingRight']) -\n parseFloat(computedStyle['borderRightWidth']);\n const height =\n targetElement.offsetHeight -\n parseFloat(computedStyle['borderTopWidth']) -\n parseFloat(computedStyle['paddingTop']) -\n parseFloat(computedStyle['paddingBottom']) -\n parseFloat(computedStyle['borderBottomWidth']);\n if (!isNaN(width) && !isNaN(height)) {\n size = [width, height];\n if (\n !hasArea(size) &&\n !!(\n targetElement.offsetWidth ||\n targetElement.offsetHeight ||\n targetElement.getClientRects().length\n )\n ) {\n warn(\n \"No map visible because the map container's width or height are 0.\"\n );\n }\n }\n }\n\n const oldSize = this.getSize();\n if (size && (!oldSize || !equals(size, oldSize))) {\n this.setSize(size);\n this.updateViewportSize_();\n }\n }\n\n /**\n * Recomputes the viewport size and save it on the view object (if any)\n * @private\n */\n updateViewportSize_() {\n const view = this.getView();\n if (view) {\n let size = undefined;\n const computedStyle = getComputedStyle(this.viewport_);\n if (computedStyle.width && computedStyle.height) {\n size = [\n parseInt(computedStyle.width, 10),\n parseInt(computedStyle.height, 10),\n ];\n }\n view.setViewportSize(size);\n }\n }\n}\n\n/**\n * @param {MapOptions} options Map options.\n * @return {MapOptionsInternal} Internal map options.\n */\nfunction createOptionsInternal(options) {\n /**\n * @type {HTMLElement|Document}\n */\n let keyboardEventTarget = null;\n if (options.keyboardEventTarget !== undefined) {\n keyboardEventTarget =\n typeof options.keyboardEventTarget === 'string'\n ? document.getElementById(options.keyboardEventTarget)\n : options.keyboardEventTarget;\n }\n\n /**\n * @type {Object}\n */\n const values = {};\n\n const layerGroup =\n options.layers &&\n typeof (/** @type {?} */ (options.layers).getLayers) === 'function'\n ? /** @type {LayerGroup} */ (options.layers)\n : new LayerGroup({\n layers:\n /** @type {Collection|Array} */ (\n options.layers\n ),\n });\n values[MapProperty.LAYERGROUP] = layerGroup;\n\n values[MapProperty.TARGET] = options.target;\n\n values[MapProperty.VIEW] =\n options.view instanceof View ? options.view : new View();\n\n /** @type {Collection} */\n let controls;\n if (options.controls !== undefined) {\n if (Array.isArray(options.controls)) {\n controls = new Collection(options.controls.slice());\n } else {\n assert(\n typeof (/** @type {?} */ (options.controls).getArray) === 'function',\n 47\n ); // Expected `controls` to be an array or an `import(\"./Collection.js\").Collection`\n controls = options.controls;\n }\n }\n\n /** @type {Collection} */\n let interactions;\n if (options.interactions !== undefined) {\n if (Array.isArray(options.interactions)) {\n interactions = new Collection(options.interactions.slice());\n } else {\n assert(\n typeof (/** @type {?} */ (options.interactions).getArray) ===\n 'function',\n 48\n ); // Expected `interactions` to be an array or an `import(\"./Collection.js\").Collection`\n interactions = options.interactions;\n }\n }\n\n /** @type {Collection} */\n let overlays;\n if (options.overlays !== undefined) {\n if (Array.isArray(options.overlays)) {\n overlays = new Collection(options.overlays.slice());\n } else {\n assert(\n typeof (/** @type {?} */ (options.overlays).getArray) === 'function',\n 49\n ); // Expected `overlays` to be an array or an `import(\"./Collection.js\").Collection`\n overlays = options.overlays;\n }\n } else {\n overlays = new Collection();\n }\n\n return {\n controls: controls,\n interactions: interactions,\n keyboardEventTarget: keyboardEventTarget,\n overlays: overlays,\n values: values,\n };\n}\nexport default Map;\n","/**\n * @module ol/control/defaults\n */\nimport Attribution from './Attribution.js';\nimport Collection from '../Collection.js';\nimport Rotate from './Rotate.js';\nimport Zoom from './Zoom.js';\n\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [attribution=true] Include\n * {@link module:ol/control/Attribution~Attribution}.\n * @property {import(\"./Attribution.js\").Options} [attributionOptions]\n * Options for {@link module:ol/control/Attribution~Attribution}.\n * @property {boolean} [rotate=true] Include\n * {@link module:ol/control/Rotate~Rotate}.\n * @property {import(\"./Rotate.js\").Options} [rotateOptions] Options\n * for {@link module:ol/control/Rotate~Rotate}.\n * @property {boolean} [zoom] Include {@link module:ol/control/Zoom~Zoom}.\n * @property {import(\"./Zoom.js\").Options} [zoomOptions] Options for\n * {@link module:ol/control/Zoom~Zoom}.\n */\n\n/**\n * Set of controls included in maps by default. Unless configured otherwise,\n * this returns a collection containing an instance of each of the following\n * controls:\n * * {@link module:ol/control/Zoom~Zoom}\n * * {@link module:ol/control/Rotate~Rotate}\n * * {@link module:ol/control/Attribution~Attribution}\n *\n * @param {DefaultsOptions} [options] Options for the default controls.\n * @return {Collection} A collection of controls\n * to be used with the {@link module:ol/Map~Map} constructor's `controls` option.\n * @api\n */\nexport function defaults(options) {\n options = options ? options : {};\n\n /** @type {Collection} */\n const controls = new Collection();\n\n const zoomControl = options.zoom !== undefined ? options.zoom : true;\n if (zoomControl) {\n controls.push(new Zoom(options.zoomOptions));\n }\n\n const rotateControl = options.rotate !== undefined ? options.rotate : true;\n if (rotateControl) {\n controls.push(new Rotate(options.rotateOptions));\n }\n\n const attributionControl =\n options.attribution !== undefined ? options.attribution : true;\n if (attributionControl) {\n controls.push(new Attribution(options.attributionOptions));\n }\n\n return controls;\n}\n","/**\n * @module ol/interaction/defaults\n */\nimport Collection from '../Collection.js';\nimport DoubleClickZoom from './DoubleClickZoom.js';\nimport DragPan from './DragPan.js';\nimport DragRotate from './DragRotate.js';\nimport DragZoom from './DragZoom.js';\nimport KeyboardPan from './KeyboardPan.js';\nimport KeyboardZoom from './KeyboardZoom.js';\nimport Kinetic from '../Kinetic.js';\nimport MouseWheelZoom from './MouseWheelZoom.js';\nimport PinchRotate from './PinchRotate.js';\nimport PinchZoom from './PinchZoom.js';\n\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [altShiftDragRotate=true] Whether Alt-Shift-drag rotate is\n * desired.\n * @property {boolean} [onFocusOnly=false] Interact only when the map has the\n * focus. This affects the `MouseWheelZoom` and `DragPan` interactions and is\n * useful when page scroll is desired for maps that do not have the browser's\n * focus.\n * @property {boolean} [doubleClickZoom=true] Whether double click zoom is\n * desired.\n * @property {boolean} [keyboard=true] Whether keyboard interaction is desired.\n * @property {boolean} [mouseWheelZoom=true] Whether mousewheel zoom is desired.\n * @property {boolean} [shiftDragZoom=true] Whether Shift-drag zoom is desired.\n * @property {boolean} [dragPan=true] Whether drag pan is desired.\n * @property {boolean} [pinchRotate=true] Whether pinch rotate is desired.\n * @property {boolean} [pinchZoom=true] Whether pinch zoom is desired.\n * @property {number} [zoomDelta] Zoom level delta when using keyboard or double click zoom.\n * @property {number} [zoomDuration] Duration of the zoom animation in\n * milliseconds.\n */\n\n/**\n * Set of interactions included in maps by default. Specific interactions can be\n * excluded by setting the appropriate option to false in the constructor\n * options, but the order of the interactions is fixed. If you want to specify\n * a different order for interactions, you will need to create your own\n * {@link module:ol/interaction/Interaction~Interaction} instances and insert\n * them into a {@link module:ol/Collection~Collection} in the order you want\n * before creating your {@link module:ol/Map~Map} instance. Changing the order can\n * be of interest if the event propagation needs to be stopped at a point.\n * The default set of interactions, in sequence, is:\n * * {@link module:ol/interaction/DragRotate~DragRotate}\n * * {@link module:ol/interaction/DoubleClickZoom~DoubleClickZoom}\n * * {@link module:ol/interaction/DragPan~DragPan}\n * * {@link module:ol/interaction/PinchRotate~PinchRotate}\n * * {@link module:ol/interaction/PinchZoom~PinchZoom}\n * * {@link module:ol/interaction/KeyboardPan~KeyboardPan}\n * * {@link module:ol/interaction/KeyboardZoom~KeyboardZoom}\n * * {@link module:ol/interaction/MouseWheelZoom~MouseWheelZoom}\n * * {@link module:ol/interaction/DragZoom~DragZoom}\n *\n * @param {DefaultsOptions} [options] Defaults options.\n * @return {Collection}\n * A collection of interactions to be used with the {@link module:ol/Map~Map}\n * constructor's `interactions` option.\n * @api\n */\nexport function defaults(options) {\n options = options ? options : {};\n\n /** @type {Collection} */\n const interactions = new Collection();\n\n const kinetic = new Kinetic(-0.005, 0.05, 100);\n\n const altShiftDragRotate =\n options.altShiftDragRotate !== undefined\n ? options.altShiftDragRotate\n : true;\n if (altShiftDragRotate) {\n interactions.push(new DragRotate());\n }\n\n const doubleClickZoom =\n options.doubleClickZoom !== undefined ? options.doubleClickZoom : true;\n if (doubleClickZoom) {\n interactions.push(\n new DoubleClickZoom({\n delta: options.zoomDelta,\n duration: options.zoomDuration,\n })\n );\n }\n\n const dragPan = options.dragPan !== undefined ? options.dragPan : true;\n if (dragPan) {\n interactions.push(\n new DragPan({\n onFocusOnly: options.onFocusOnly,\n kinetic: kinetic,\n })\n );\n }\n\n const pinchRotate =\n options.pinchRotate !== undefined ? options.pinchRotate : true;\n if (pinchRotate) {\n interactions.push(new PinchRotate());\n }\n\n const pinchZoom = options.pinchZoom !== undefined ? options.pinchZoom : true;\n if (pinchZoom) {\n interactions.push(\n new PinchZoom({\n duration: options.zoomDuration,\n })\n );\n }\n\n const keyboard = options.keyboard !== undefined ? options.keyboard : true;\n if (keyboard) {\n interactions.push(new KeyboardPan());\n interactions.push(\n new KeyboardZoom({\n delta: options.zoomDelta,\n duration: options.zoomDuration,\n })\n );\n }\n\n const mouseWheelZoom =\n options.mouseWheelZoom !== undefined ? options.mouseWheelZoom : true;\n if (mouseWheelZoom) {\n interactions.push(\n new MouseWheelZoom({\n onFocusOnly: options.onFocusOnly,\n duration: options.zoomDuration,\n })\n );\n }\n\n const shiftDragZoom =\n options.shiftDragZoom !== undefined ? options.shiftDragZoom : true;\n if (shiftDragZoom) {\n interactions.push(\n new DragZoom({\n duration: options.zoomDuration,\n })\n );\n }\n\n return interactions;\n}\n","/**\n * @module ol/Object\n */\nimport Event from './events/Event.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport Observable from './Observable.js';\nimport {getUid} from './util.js';\nimport {isEmpty} from './obj.js';\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Object~BaseObject} instances are instances of this type.\n */\nexport class ObjectEvent extends Event {\n /**\n * @param {string} type The event type.\n * @param {string} key The property name.\n * @param {*} oldValue The old value for `key`.\n */\n constructor(type, key, oldValue) {\n super(type);\n\n /**\n * The name of the property whose value is changing.\n * @type {string}\n * @api\n */\n this.key = key;\n\n /**\n * The old value. To get the new value use `e.target.get(e.key)` where\n * `e` is the event object.\n * @type {*}\n * @api\n */\n this.oldValue = oldValue;\n }\n}\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} ObjectOnSignature\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Most non-trivial classes inherit from this.\n *\n * This extends {@link module:ol/Observable~Observable} with observable\n * properties, where each property is observable as well as the object as a\n * whole.\n *\n * Classes that inherit from this have pre-defined properties, to which you can\n * add your owns. The pre-defined properties are listed in this documentation as\n * 'Observable Properties', and have their own accessors; for example,\n * {@link module:ol/Map~Map} has a `target` property, accessed with\n * `getTarget()` and changed with `setTarget()`. Not all properties are however\n * settable. There are also general-purpose accessors `get()` and `set()`. For\n * example, `get('target')` is equivalent to `getTarget()`.\n *\n * The `set` accessors trigger a change event, and you can monitor this by\n * registering a listener. For example, {@link module:ol/View~View} has a\n * `center` property, so `view.on('change:center', function(evt) {...});` would\n * call the function whenever the value of the center property changes. Within\n * the function, `evt.target` would be the view, so `evt.target.getCenter()`\n * would return the new center.\n *\n * You can add your own observable properties with\n * `object.set('prop', 'value')`, and retrieve that with `object.get('prop')`.\n * You can listen for changes on that property value with\n * `object.on('change:prop', listener)`. You can get a list of all\n * properties with {@link module:ol/Object~BaseObject#getProperties}.\n *\n * Note that the observable properties are separate from standard JS properties.\n * You can, for example, give your map object a title with\n * `map.title='New title'` and with `map.set('title', 'Another title')`. The\n * first will be a `hasOwnProperty`; the second will appear in\n * `getProperties()`. Only the second is observable.\n *\n * Properties can be deleted by using the unset method. E.g.\n * object.unset('foo').\n *\n * @fires ObjectEvent\n * @api\n */\nclass BaseObject extends Observable {\n /**\n * @param {Object} [values] An object with key-value pairs.\n */\n constructor(values) {\n super();\n\n /***\n * @type {ObjectOnSignature}\n */\n this.on;\n\n /***\n * @type {ObjectOnSignature}\n */\n this.once;\n\n /***\n * @type {ObjectOnSignature}\n */\n this.un;\n\n // Call {@link module:ol/util.getUid} to ensure that the order of objects' ids is\n // the same as the order in which they were created. This also helps to\n // ensure that object properties are always added in the same order, which\n // helps many JavaScript engines generate faster code.\n getUid(this);\n\n /**\n * @private\n * @type {Object}\n */\n this.values_ = null;\n\n if (values !== undefined) {\n this.setProperties(values);\n }\n }\n\n /**\n * Gets a value.\n * @param {string} key Key name.\n * @return {*} Value.\n * @api\n */\n get(key) {\n let value;\n if (this.values_ && this.values_.hasOwnProperty(key)) {\n value = this.values_[key];\n }\n return value;\n }\n\n /**\n * Get a list of object property names.\n * @return {Array} List of property names.\n * @api\n */\n getKeys() {\n return (this.values_ && Object.keys(this.values_)) || [];\n }\n\n /**\n * Get an object of all property names and values.\n * @return {Object} Object.\n * @api\n */\n getProperties() {\n return (this.values_ && Object.assign({}, this.values_)) || {};\n }\n\n /**\n * @return {boolean} The object has properties.\n */\n hasProperties() {\n return !!this.values_;\n }\n\n /**\n * @param {string} key Key name.\n * @param {*} oldValue Old value.\n */\n notify(key, oldValue) {\n let eventType;\n eventType = `change:${key}`;\n if (this.hasListener(eventType)) {\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n }\n eventType = ObjectEventType.PROPERTYCHANGE;\n if (this.hasListener(eventType)) {\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n }\n }\n\n /**\n * @param {string} key Key name.\n * @param {import(\"./events.js\").Listener} listener Listener.\n */\n addChangeListener(key, listener) {\n this.addEventListener(`change:${key}`, listener);\n }\n\n /**\n * @param {string} key Key name.\n * @param {import(\"./events.js\").Listener} listener Listener.\n */\n removeChangeListener(key, listener) {\n this.removeEventListener(`change:${key}`, listener);\n }\n\n /**\n * Sets a value.\n * @param {string} key Key name.\n * @param {*} value Value.\n * @param {boolean} [silent] Update without triggering an event.\n * @api\n */\n set(key, value, silent) {\n const values = this.values_ || (this.values_ = {});\n if (silent) {\n values[key] = value;\n } else {\n const oldValue = values[key];\n values[key] = value;\n if (oldValue !== value) {\n this.notify(key, oldValue);\n }\n }\n }\n\n /**\n * Sets a collection of key-value pairs. Note that this changes any existing\n * properties and adds new ones (it does not remove any existing properties).\n * @param {Object} values Values.\n * @param {boolean} [silent] Update without triggering an event.\n * @api\n */\n setProperties(values, silent) {\n for (const key in values) {\n this.set(key, values[key], silent);\n }\n }\n\n /**\n * Apply any properties from another object without triggering events.\n * @param {BaseObject} source The source object.\n * @protected\n */\n applyProperties(source) {\n if (!source.values_) {\n return;\n }\n Object.assign(this.values_ || (this.values_ = {}), source.values_);\n }\n\n /**\n * Unsets a property.\n * @param {string} key Key name.\n * @param {boolean} [silent] Unset without triggering an event.\n * @api\n */\n unset(key, silent) {\n if (this.values_ && key in this.values_) {\n const oldValue = this.values_[key];\n delete this.values_[key];\n if (isEmpty(this.values_)) {\n this.values_ = null;\n }\n if (!silent) {\n this.notify(key, oldValue);\n }\n }\n }\n}\n\nexport default BaseObject;\n","/**\n * @module ol/ObjectEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when a property is changed.\n * @event module:ol/Object.ObjectEvent#propertychange\n * @api\n */\n PROPERTYCHANGE: 'propertychange',\n};\n\n/**\n * @typedef {'propertychange'} Types\n */\n","/**\n * @module ol/Observable\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport {listen, listenOnce, unlistenByKey} from './events.js';\n\n/***\n * @template {string} Type\n * @template {Event|import(\"./events/Event.js\").default} EventClass\n * @template Return\n * @typedef {(type: Type, listener: (event: EventClass) => ?) => Return} OnSignature\n */\n\n/***\n * @template {string} Type\n * @template Return\n * @typedef {(type: Type[], listener: (event: Event|import(\"./events/Event\").default) => ?) => Return extends void ? void : Return[]} CombinedOnSignature\n */\n\n/**\n * @typedef {'change'|'error'} EventTypes\n */\n\n/***\n * @template Return\n * @typedef {OnSignature & CombinedOnSignature} ObservableOnSignature\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * An event target providing convenient methods for listener registration\n * and unregistration. A generic `change` event is always available through\n * {@link module:ol/Observable~Observable#changed}.\n *\n * @fires import(\"./events/Event.js\").default\n * @api\n */\nclass Observable extends EventTarget {\n constructor() {\n super();\n\n this.on =\n /** @type {ObservableOnSignature} */ (\n this.onInternal\n );\n\n this.once =\n /** @type {ObservableOnSignature} */ (\n this.onceInternal\n );\n\n this.un = /** @type {ObservableOnSignature} */ (this.unInternal);\n\n /**\n * @private\n * @type {number}\n */\n this.revision_ = 0;\n }\n\n /**\n * Increases the revision counter and dispatches a 'change' event.\n * @api\n */\n changed() {\n ++this.revision_;\n this.dispatchEvent(EventType.CHANGE);\n }\n\n /**\n * Get the version number for this object. Each time the object is modified,\n * its version number will be incremented.\n * @return {number} Revision.\n * @api\n */\n getRevision() {\n return this.revision_;\n }\n\n /**\n * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @return {import(\"./events.js\").EventsKey|Array} Event key.\n * @protected\n */\n onInternal(type, listener) {\n if (Array.isArray(type)) {\n const len = type.length;\n const keys = new Array(len);\n for (let i = 0; i < len; ++i) {\n keys[i] = listen(this, type[i], listener);\n }\n return keys;\n }\n return listen(this, /** @type {string} */ (type), listener);\n }\n\n /**\n * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @return {import(\"./events.js\").EventsKey|Array} Event key.\n * @protected\n */\n onceInternal(type, listener) {\n let key;\n if (Array.isArray(type)) {\n const len = type.length;\n key = new Array(len);\n for (let i = 0; i < len; ++i) {\n key[i] = listenOnce(this, type[i], listener);\n }\n } else {\n key = listenOnce(this, /** @type {string} */ (type), listener);\n }\n /** @type {Object} */ (listener).ol_key = key;\n return key;\n }\n\n /**\n * Unlisten for a certain type of event.\n * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @protected\n */\n unInternal(type, listener) {\n const key = /** @type {Object} */ (listener).ol_key;\n if (key) {\n unByKey(key);\n } else if (Array.isArray(type)) {\n for (let i = 0, ii = type.length; i < ii; ++i) {\n this.removeEventListener(type[i], listener);\n }\n } else {\n this.removeEventListener(type, listener);\n }\n }\n}\n\n/**\n * Listen for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\nObservable.prototype.on;\n\n/**\n * Listen once for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\nObservable.prototype.once;\n\n/**\n * Unlisten for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @api\n */\nObservable.prototype.un;\n\n/**\n * Removes an event listener using the key returned by `on()` or `once()`.\n * @param {import(\"./events.js\").EventsKey|Array} key The key returned by `on()`\n * or `once()` (or an array of keys).\n * @api\n */\nexport function unByKey(key) {\n if (Array.isArray(key)) {\n for (let i = 0, ii = key.length; i < ii; ++i) {\n unlistenByKey(key[i]);\n }\n } else {\n unlistenByKey(/** @type {import(\"./events.js\").EventsKey} */ (key));\n }\n}\n\nexport default Observable;\n","/**\n * @module ol/Tile\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport TileState from './TileState.js';\nimport {abstract} from './util.js';\nimport {easeIn} from './easing.js';\n\n/**\n * A function that takes an {@link module:ol/Tile~Tile} for the tile and a\n * `{string}` for the url as arguments. The default is\n * ```js\n * source.setTileLoadFunction(function(tile, src) {\n * tile.getImage().src = src;\n * });\n * ```\n * For more fine grained control, the load function can use fetch or XMLHttpRequest and involve\n * error handling:\n *\n * ```js\n * import TileState from 'ol/TileState.js';\n *\n * source.setTileLoadFunction(function(tile, src) {\n * const xhr = new XMLHttpRequest();\n * xhr.responseType = 'blob';\n * xhr.addEventListener('loadend', function (evt) {\n * const data = this.response;\n * if (data !== undefined) {\n * tile.getImage().src = URL.createObjectURL(data);\n * } else {\n * tile.setState(TileState.ERROR);\n * }\n * });\n * xhr.addEventListener('error', function () {\n * tile.setState(TileState.ERROR);\n * });\n * xhr.open('GET', src);\n * xhr.send();\n * });\n * ```\n *\n * @typedef {function(Tile, string): void} LoadFunction\n * @api\n */\n\n/**\n * {@link module:ol/source/Tile~TileSource} sources use a function of this type to get\n * the url that provides a tile for a given tile coordinate.\n *\n * This function takes an {@link module:ol/tilecoord~TileCoord} for the tile\n * coordinate, a `{number}` representing the pixel ratio and a\n * {@link module:ol/proj/Projection~Projection} for the projection as arguments\n * and returns a `{string}` representing the tile URL, or undefined if no tile\n * should be requested for the passed tile coordinate.\n *\n * @typedef {function(import(\"./tilecoord.js\").TileCoord, number,\n * import(\"./proj/Projection.js\").default): (string|undefined)} UrlFunction\n * @api\n */\n\n/**\n * @typedef {Object} Options\n * @property {number} [transition=250] A duration for tile opacity\n * transitions in milliseconds. A duration of 0 disables the opacity transition.\n * @property {boolean} [interpolate=false] Use interpolated values when resampling. By default,\n * the nearest neighbor is used when resampling.\n * @api\n */\n\n/**\n * @classdesc\n * Base class for tiles.\n *\n * @abstract\n */\nclass Tile extends EventTarget {\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {Options} [options] Tile options.\n */\n constructor(tileCoord, state, options) {\n super();\n\n options = options ? options : {};\n\n /**\n * @type {import(\"./tilecoord.js\").TileCoord}\n */\n this.tileCoord = tileCoord;\n\n /**\n * @protected\n * @type {import(\"./TileState.js\").default}\n */\n this.state = state;\n\n /**\n * An \"interim\" tile for this tile. The interim tile may be used while this\n * one is loading, for \"smooth\" transitions when changing params/dimensions\n * on the source.\n * @type {Tile}\n */\n this.interimTile = null;\n\n /**\n * A key assigned to the tile. This is used by the tile source to determine\n * if this tile can effectively be used, or if a new tile should be created\n * and this one be used as an interim tile for this new tile.\n * @type {string}\n */\n this.key = '';\n\n /**\n * The duration for the opacity transition.\n * @type {number}\n */\n this.transition_ =\n options.transition === undefined ? 250 : options.transition;\n\n /**\n * Lookup of start times for rendering transitions. If the start time is\n * equal to -1, the transition is complete.\n * @type {Object}\n */\n this.transitionStarts_ = {};\n\n /**\n * @type {boolean}\n */\n this.interpolate = !!options.interpolate;\n }\n\n /**\n * @protected\n */\n changed() {\n this.dispatchEvent(EventType.CHANGE);\n }\n\n /**\n * Called by the tile cache when the tile is removed from the cache due to expiry\n */\n release() {\n if (this.state === TileState.ERROR) {\n // to remove the `change` listener on this tile in `ol/TileQueue#handleTileChange`\n this.setState(TileState.EMPTY);\n }\n }\n\n /**\n * @return {string} Key.\n */\n getKey() {\n return this.key + '/' + this.tileCoord;\n }\n\n /**\n * Get the interim tile most suitable for rendering using the chain of interim\n * tiles. This corresponds to the most recent tile that has been loaded, if no\n * such tile exists, the original tile is returned.\n * @return {!Tile} Best tile for rendering.\n */\n getInterimTile() {\n if (!this.interimTile) {\n //empty chain\n return this;\n }\n let tile = this.interimTile;\n\n // find the first loaded tile and return it. Since the chain is sorted in\n // decreasing order of creation time, there is no need to search the remainder\n // of the list (all those tiles correspond to older requests and will be\n // cleaned up by refreshInterimChain)\n do {\n if (tile.getState() == TileState.LOADED) {\n // Show tile immediately instead of fading it in after loading, because\n // the interim tile is in place already\n this.transition_ = 0;\n return tile;\n }\n tile = tile.interimTile;\n } while (tile);\n\n // we can not find a better tile\n return this;\n }\n\n /**\n * Goes through the chain of interim tiles and discards sections of the chain\n * that are no longer relevant.\n */\n refreshInterimChain() {\n if (!this.interimTile) {\n return;\n }\n\n let tile = this.interimTile;\n\n /**\n * @type {Tile}\n */\n let prev = this;\n\n do {\n if (tile.getState() == TileState.LOADED) {\n //we have a loaded tile, we can discard the rest of the list\n //we would could abort any LOADING tile request\n //older than this tile (i.e. any LOADING tile following this entry in the chain)\n tile.interimTile = null;\n break;\n } else if (tile.getState() == TileState.LOADING) {\n //keep this LOADING tile any loaded tiles later in the chain are\n //older than this tile, so we're still interested in the request\n prev = tile;\n } else if (tile.getState() == TileState.IDLE) {\n //the head of the list is the most current tile, we don't need\n //to start any other requests for this chain\n prev.interimTile = tile.interimTile;\n } else {\n prev = tile;\n }\n tile = prev.interimTile;\n } while (tile);\n }\n\n /**\n * Get the tile coordinate for this tile.\n * @return {import(\"./tilecoord.js\").TileCoord} The tile coordinate.\n * @api\n */\n getTileCoord() {\n return this.tileCoord;\n }\n\n /**\n * @return {import(\"./TileState.js\").default} State.\n */\n getState() {\n return this.state;\n }\n\n /**\n * Sets the state of this tile. If you write your own {@link module:ol/Tile~LoadFunction tileLoadFunction} ,\n * it is important to set the state correctly to {@link module:ol/TileState~ERROR}\n * when the tile cannot be loaded. Otherwise the tile cannot be removed from\n * the tile queue and will block other requests.\n * @param {import(\"./TileState.js\").default} state State.\n * @api\n */\n setState(state) {\n if (this.state !== TileState.ERROR && this.state > state) {\n throw new Error('Tile load sequence violation');\n }\n this.state = state;\n this.changed();\n }\n\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n * @abstract\n * @api\n */\n load() {\n abstract();\n }\n\n /**\n * Get the alpha value for rendering.\n * @param {string} id An id for the renderer.\n * @param {number} time The render frame time.\n * @return {number} A number between 0 and 1.\n */\n getAlpha(id, time) {\n if (!this.transition_) {\n return 1;\n }\n\n let start = this.transitionStarts_[id];\n if (!start) {\n start = time;\n this.transitionStarts_[id] = start;\n } else if (start === -1) {\n return 1;\n }\n\n const delta = time - start + 1000 / 60; // avoid rendering at 0\n if (delta >= this.transition_) {\n return 1;\n }\n return easeIn(delta / this.transition_);\n }\n\n /**\n * Determine if a tile is in an alpha transition. A tile is considered in\n * transition if tile.getAlpha() has not yet been called or has been called\n * and returned 1.\n * @param {string} id An id for the renderer.\n * @return {boolean} The tile is in transition.\n */\n inTransition(id) {\n if (!this.transition_) {\n return false;\n }\n return this.transitionStarts_[id] !== -1;\n }\n\n /**\n * Mark a transition as complete.\n * @param {string} id An id for the renderer.\n */\n endTransition(id) {\n if (this.transition_) {\n this.transitionStarts_[id] = -1;\n }\n }\n}\n\nexport default Tile;\n","/**\n * @module ol/structs/PriorityQueue\n */\nimport {assert} from '../asserts.js';\nimport {clear} from '../obj.js';\n\n/**\n * @type {number}\n */\nexport const DROP = Infinity;\n\n/**\n * @classdesc\n * Priority queue.\n *\n * The implementation is inspired from the Closure Library's Heap class and\n * Python's heapq module.\n *\n * See https://github.com/google/closure-library/blob/master/closure/goog/structs/heap.js\n * and https://hg.python.org/cpython/file/2.7/Lib/heapq.py.\n *\n * @template T\n */\nclass PriorityQueue {\n /**\n * @param {function(T): number} priorityFunction Priority function.\n * @param {function(T): string} keyFunction Key function.\n */\n constructor(priorityFunction, keyFunction) {\n /**\n * @type {function(T): number}\n * @private\n */\n this.priorityFunction_ = priorityFunction;\n\n /**\n * @type {function(T): string}\n * @private\n */\n this.keyFunction_ = keyFunction;\n\n /**\n * @type {Array}\n * @private\n */\n this.elements_ = [];\n\n /**\n * @type {Array}\n * @private\n */\n this.priorities_ = [];\n\n /**\n * @type {!Object}\n * @private\n */\n this.queuedElements_ = {};\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n clear() {\n this.elements_.length = 0;\n this.priorities_.length = 0;\n clear(this.queuedElements_);\n }\n\n /**\n * Remove and return the highest-priority element. O(log N).\n * @return {T} Element.\n */\n dequeue() {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const element = elements[0];\n if (elements.length == 1) {\n elements.length = 0;\n priorities.length = 0;\n } else {\n elements[0] = elements.pop();\n priorities[0] = priorities.pop();\n this.siftUp_(0);\n }\n const elementKey = this.keyFunction_(element);\n delete this.queuedElements_[elementKey];\n return element;\n }\n\n /**\n * Enqueue an element. O(log N).\n * @param {T} element Element.\n * @return {boolean} The element was added to the queue.\n */\n enqueue(element) {\n assert(!(this.keyFunction_(element) in this.queuedElements_), 31); // Tried to enqueue an `element` that was already added to the queue\n const priority = this.priorityFunction_(element);\n if (priority != DROP) {\n this.elements_.push(element);\n this.priorities_.push(priority);\n this.queuedElements_[this.keyFunction_(element)] = true;\n this.siftDown_(0, this.elements_.length - 1);\n return true;\n }\n return false;\n }\n\n /**\n * @return {number} Count.\n */\n getCount() {\n return this.elements_.length;\n }\n\n /**\n * Gets the index of the left child of the node at the given index.\n * @param {number} index The index of the node to get the left child for.\n * @return {number} The index of the left child.\n * @private\n */\n getLeftChildIndex_(index) {\n return index * 2 + 1;\n }\n\n /**\n * Gets the index of the right child of the node at the given index.\n * @param {number} index The index of the node to get the right child for.\n * @return {number} The index of the right child.\n * @private\n */\n getRightChildIndex_(index) {\n return index * 2 + 2;\n }\n\n /**\n * Gets the index of the parent of the node at the given index.\n * @param {number} index The index of the node to get the parent for.\n * @return {number} The index of the parent.\n * @private\n */\n getParentIndex_(index) {\n return (index - 1) >> 1;\n }\n\n /**\n * Make this a heap. O(N).\n * @private\n */\n heapify_() {\n let i;\n for (i = (this.elements_.length >> 1) - 1; i >= 0; i--) {\n this.siftUp_(i);\n }\n }\n\n /**\n * @return {boolean} Is empty.\n */\n isEmpty() {\n return this.elements_.length === 0;\n }\n\n /**\n * @param {string} key Key.\n * @return {boolean} Is key queued.\n */\n isKeyQueued(key) {\n return key in this.queuedElements_;\n }\n\n /**\n * @param {T} element Element.\n * @return {boolean} Is queued.\n */\n isQueued(element) {\n return this.isKeyQueued(this.keyFunction_(element));\n }\n\n /**\n * @param {number} index The index of the node to move down.\n * @private\n */\n siftUp_(index) {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const count = elements.length;\n const element = elements[index];\n const priority = priorities[index];\n const startIndex = index;\n\n while (index < count >> 1) {\n const lIndex = this.getLeftChildIndex_(index);\n const rIndex = this.getRightChildIndex_(index);\n\n const smallerChildIndex =\n rIndex < count && priorities[rIndex] < priorities[lIndex]\n ? rIndex\n : lIndex;\n\n elements[index] = elements[smallerChildIndex];\n priorities[index] = priorities[smallerChildIndex];\n index = smallerChildIndex;\n }\n\n elements[index] = element;\n priorities[index] = priority;\n this.siftDown_(startIndex, index);\n }\n\n /**\n * @param {number} startIndex The index of the root.\n * @param {number} index The index of the node to move up.\n * @private\n */\n siftDown_(startIndex, index) {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const element = elements[index];\n const priority = priorities[index];\n\n while (index > startIndex) {\n const parentIndex = this.getParentIndex_(index);\n if (priorities[parentIndex] > priority) {\n elements[index] = elements[parentIndex];\n priorities[index] = priorities[parentIndex];\n index = parentIndex;\n } else {\n break;\n }\n }\n elements[index] = element;\n priorities[index] = priority;\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n reprioritize() {\n const priorityFunction = this.priorityFunction_;\n const elements = this.elements_;\n const priorities = this.priorities_;\n let index = 0;\n const n = elements.length;\n let element, i, priority;\n for (i = 0; i < n; ++i) {\n element = elements[i];\n priority = priorityFunction(element);\n if (priority == DROP) {\n delete this.queuedElements_[this.keyFunction_(element)];\n } else {\n priorities[index] = priority;\n elements[index++] = element;\n }\n }\n elements.length = index;\n priorities.length = index;\n this.heapify_();\n }\n}\n\nexport default PriorityQueue;\n","/**\n * @module ol/TileQueue\n */\nimport EventType from './events/EventType.js';\nimport PriorityQueue, {DROP} from './structs/PriorityQueue.js';\nimport TileState from './TileState.js';\n\n/**\n * @typedef {function(import(\"./Tile.js\").default, string, import(\"./coordinate.js\").Coordinate, number): number} PriorityFunction\n */\n\nclass TileQueue extends PriorityQueue {\n /**\n * @param {PriorityFunction} tilePriorityFunction Tile priority function.\n * @param {function(): ?} tileChangeCallback Function called on each tile change event.\n */\n constructor(tilePriorityFunction, tileChangeCallback) {\n super(\n /**\n * @param {Array} element Element.\n * @return {number} Priority.\n */\n function (element) {\n return tilePriorityFunction.apply(null, element);\n },\n /**\n * @param {Array} element Element.\n * @return {string} Key.\n */\n function (element) {\n return /** @type {import(\"./Tile.js\").default} */ (element[0]).getKey();\n }\n );\n\n /** @private */\n this.boundHandleTileChange_ = this.handleTileChange.bind(this);\n\n /**\n * @private\n * @type {function(): ?}\n */\n this.tileChangeCallback_ = tileChangeCallback;\n\n /**\n * @private\n * @type {number}\n */\n this.tilesLoading_ = 0;\n\n /**\n * @private\n * @type {!Object}\n */\n this.tilesLoadingKeys_ = {};\n }\n\n /**\n * @param {Array} element Element.\n * @return {boolean} The element was added to the queue.\n */\n enqueue(element) {\n const added = super.enqueue(element);\n if (added) {\n const tile = element[0];\n tile.addEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n }\n return added;\n }\n\n /**\n * @return {number} Number of tiles loading.\n */\n getTilesLoading() {\n return this.tilesLoading_;\n }\n\n /**\n * @param {import(\"./events/Event.js\").default} event Event.\n * @protected\n */\n handleTileChange(event) {\n const tile = /** @type {import(\"./Tile.js\").default} */ (event.target);\n const state = tile.getState();\n if (\n state === TileState.LOADED ||\n state === TileState.ERROR ||\n state === TileState.EMPTY\n ) {\n if (state !== TileState.ERROR) {\n tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n }\n const tileKey = tile.getKey();\n if (tileKey in this.tilesLoadingKeys_) {\n delete this.tilesLoadingKeys_[tileKey];\n --this.tilesLoading_;\n }\n this.tileChangeCallback_();\n }\n }\n\n /**\n * @param {number} maxTotalLoading Maximum number tiles to load simultaneously.\n * @param {number} maxNewLoads Maximum number of new tiles to load.\n */\n loadMoreTiles(maxTotalLoading, maxNewLoads) {\n let newLoads = 0;\n let state, tile, tileKey;\n while (\n this.tilesLoading_ < maxTotalLoading &&\n newLoads < maxNewLoads &&\n this.getCount() > 0\n ) {\n tile = /** @type {import(\"./Tile.js\").default} */ (this.dequeue()[0]);\n tileKey = tile.getKey();\n state = tile.getState();\n if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {\n this.tilesLoadingKeys_[tileKey] = true;\n ++this.tilesLoading_;\n ++newLoads;\n tile.load();\n }\n }\n }\n}\n\nexport default TileQueue;\n\n/**\n * @param {import('./Map.js').FrameState} frameState Frame state.\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\nexport function getTilePriority(\n frameState,\n tile,\n tileSourceKey,\n tileCenter,\n tileResolution\n) {\n // Filter out tiles at higher zoom levels than the current zoom level, or that\n // are outside the visible extent.\n if (!frameState || !(tileSourceKey in frameState.wantedTiles)) {\n return DROP;\n }\n if (!frameState.wantedTiles[tileSourceKey][tile.getKey()]) {\n return DROP;\n }\n // Prioritize the highest zoom level tiles closest to the focus.\n // Tiles at higher zoom levels are prioritized using Math.log(tileResolution).\n // Within a zoom level, tiles are prioritized by the distance in pixels between\n // the center of the tile and the center of the viewport. The factor of 65536\n // means that the prioritization should behave as desired for tiles up to\n // 65536 * Math.log(2) = 45426 pixels from the focus.\n const center = frameState.viewState.center;\n const deltaX = tileCenter[0] - center[0];\n const deltaY = tileCenter[1] - center[1];\n return (\n 65536 * Math.log(tileResolution) +\n Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution\n );\n}\n","/**\n * @module ol/TileRange\n */\n\n/**\n * A representation of a contiguous block of tiles. A tile range is specified\n * by its min/max tile coordinates and is inclusive of coordinates.\n */\nclass TileRange {\n /**\n * @param {number} minX Minimum X.\n * @param {number} maxX Maximum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxY Maximum Y.\n */\n constructor(minX, maxX, minY, maxY) {\n /**\n * @type {number}\n */\n this.minX = minX;\n\n /**\n * @type {number}\n */\n this.maxX = maxX;\n\n /**\n * @type {number}\n */\n this.minY = minY;\n\n /**\n * @type {number}\n */\n this.maxY = maxY;\n }\n\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @return {boolean} Contains tile coordinate.\n */\n contains(tileCoord) {\n return this.containsXY(tileCoord[1], tileCoord[2]);\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n * @return {boolean} Contains.\n */\n containsTileRange(tileRange) {\n return (\n this.minX <= tileRange.minX &&\n tileRange.maxX <= this.maxX &&\n this.minY <= tileRange.minY &&\n tileRange.maxY <= this.maxY\n );\n }\n\n /**\n * @param {number} x Tile coordinate x.\n * @param {number} y Tile coordinate y.\n * @return {boolean} Contains coordinate.\n */\n containsXY(x, y) {\n return this.minX <= x && x <= this.maxX && this.minY <= y && y <= this.maxY;\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n * @return {boolean} Equals.\n */\n equals(tileRange) {\n return (\n this.minX == tileRange.minX &&\n this.minY == tileRange.minY &&\n this.maxX == tileRange.maxX &&\n this.maxY == tileRange.maxY\n );\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n */\n extend(tileRange) {\n if (tileRange.minX < this.minX) {\n this.minX = tileRange.minX;\n }\n if (tileRange.maxX > this.maxX) {\n this.maxX = tileRange.maxX;\n }\n if (tileRange.minY < this.minY) {\n this.minY = tileRange.minY;\n }\n if (tileRange.maxY > this.maxY) {\n this.maxY = tileRange.maxY;\n }\n }\n\n /**\n * @return {number} Height.\n */\n getHeight() {\n return this.maxY - this.minY + 1;\n }\n\n /**\n * @return {import(\"./size.js\").Size} Size.\n */\n getSize() {\n return [this.getWidth(), this.getHeight()];\n }\n\n /**\n * @return {number} Width.\n */\n getWidth() {\n return this.maxX - this.minX + 1;\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n * @return {boolean} Intersects.\n */\n intersects(tileRange) {\n return (\n this.minX <= tileRange.maxX &&\n this.maxX >= tileRange.minX &&\n this.minY <= tileRange.maxY &&\n this.maxY >= tileRange.minY\n );\n }\n}\n\n/**\n * @param {number} minX Minimum X.\n * @param {number} maxX Maximum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxY Maximum Y.\n * @param {TileRange} [tileRange] TileRange.\n * @return {TileRange} Tile range.\n */\nexport function createOrUpdate(minX, maxX, minY, maxY, tileRange) {\n if (tileRange !== undefined) {\n tileRange.minX = minX;\n tileRange.maxX = maxX;\n tileRange.minY = minY;\n tileRange.maxY = maxY;\n return tileRange;\n }\n return new TileRange(minX, maxX, minY, maxY);\n}\n\nexport default TileRange;\n","/**\n * @module ol/TileState\n */\n\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n /**\n * Indicates that tile loading failed\n * @type {number}\n */\n ERROR: 3,\n EMPTY: 4,\n};\n","/**\n * @module ol/ViewProperty\n */\n\n/**\n * @enum {string}\n */\nexport default {\n CENTER: 'center',\n RESOLUTION: 'resolution',\n ROTATION: 'rotation',\n};\n","/**\n * @module ol/centerconstraint\n */\nimport {clamp} from './math.js';\n\n/**\n * @typedef {function((import(\"./coordinate.js\").Coordinate|undefined), number, import(\"./size.js\").Size, boolean=, Array=): (import(\"./coordinate.js\").Coordinate|undefined)} Type\n */\n\n/**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {boolean} onlyCenter If true, the constraint will only apply to the view center.\n * @param {boolean} smooth If true, the view will be able to go slightly out of the given extent\n * (only during interaction and animation).\n * @return {Type} The constraint.\n */\nexport function createExtent(extent, onlyCenter, smooth) {\n return (\n /**\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center Center.\n * @param {number|undefined} resolution Resolution.\n * @param {import(\"./size.js\").Size} size Viewport size; unused if `onlyCenter` was specified.\n * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n * @param {Array} [centerShift] Shift between map center and viewport center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\n function (center, resolution, size, isMoving, centerShift) {\n if (!center) {\n return undefined;\n }\n if (!resolution && !onlyCenter) {\n return center;\n }\n const viewWidth = onlyCenter ? 0 : size[0] * resolution;\n const viewHeight = onlyCenter ? 0 : size[1] * resolution;\n const shiftX = centerShift ? centerShift[0] : 0;\n const shiftY = centerShift ? centerShift[1] : 0;\n let minX = extent[0] + viewWidth / 2 + shiftX;\n let maxX = extent[2] - viewWidth / 2 + shiftX;\n let minY = extent[1] + viewHeight / 2 + shiftY;\n let maxY = extent[3] - viewHeight / 2 + shiftY;\n\n // note: when zooming out of bounds, min and max values for x and y may\n // end up inverted (min > max); this has to be accounted for\n if (minX > maxX) {\n minX = (maxX + minX) / 2;\n maxX = minX;\n }\n if (minY > maxY) {\n minY = (maxY + minY) / 2;\n maxY = minY;\n }\n\n let x = clamp(center[0], minX, maxX);\n let y = clamp(center[1], minY, maxY);\n\n // during an interaction, allow some overscroll\n if (isMoving && smooth && resolution) {\n const ratio = 30 * resolution;\n x +=\n -ratio * Math.log(1 + Math.max(0, minX - center[0]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[0] - maxX) / ratio);\n y +=\n -ratio * Math.log(1 + Math.max(0, minY - center[1]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[1] - maxY) / ratio);\n }\n\n return [x, y];\n }\n );\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} [center] Center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\nexport function none(center) {\n return center;\n}\n","/**\n * @module ol/resolutionconstraint\n */\nimport {clamp} from './math.js';\nimport {getHeight, getWidth} from './extent.js';\nimport {linearFindNearest} from './array.js';\n\n/**\n * @typedef {function((number|undefined), number, import(\"./size.js\").Size, boolean=): (number|undefined)} Type\n */\n\n/**\n * Returns a modified resolution taking into account the viewport size and maximum\n * allowed extent.\n * @param {number} resolution Resolution\n * @param {import(\"./extent.js\").Extent} maxExtent Maximum allowed extent.\n * @param {import(\"./size.js\").Size} viewportSize Viewport size.\n * @param {boolean} showFullExtent Whether to show the full extent.\n * @return {number} Capped resolution.\n */\nfunction getViewportClampedResolution(\n resolution,\n maxExtent,\n viewportSize,\n showFullExtent\n) {\n const xResolution = getWidth(maxExtent) / viewportSize[0];\n const yResolution = getHeight(maxExtent) / viewportSize[1];\n\n if (showFullExtent) {\n return Math.min(resolution, Math.max(xResolution, yResolution));\n }\n return Math.min(resolution, Math.min(xResolution, yResolution));\n}\n\n/**\n * Returns a modified resolution to be between maxResolution and minResolution while\n * still allowing the value to be slightly out of bounds.\n * Note: the computation is based on the logarithm function (ln):\n * - at 1, ln(x) is 0\n * - above 1, ln(x) keeps increasing but at a much slower pace than x\n * The final result is clamped to prevent getting too far away from bounds.\n * @param {number} resolution Resolution.\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @return {number} Smoothed resolution.\n */\nfunction getSmoothClampedResolution(resolution, maxResolution, minResolution) {\n let result = Math.min(resolution, maxResolution);\n const ratio = 50;\n\n result *=\n Math.log(1 + ratio * Math.max(0, resolution / maxResolution - 1)) / ratio +\n 1;\n if (minResolution) {\n result = Math.max(result, minResolution);\n result /=\n Math.log(1 + ratio * Math.max(0, minResolution / resolution - 1)) /\n ratio +\n 1;\n }\n return clamp(result, minResolution / 2, maxResolution * 2);\n}\n\n/**\n * @param {Array} resolutions Resolutions.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToResolutions(\n resolutions,\n smooth,\n maxExtent,\n showFullExtent\n) {\n smooth = smooth !== undefined ? smooth : true;\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, isMoving) {\n if (resolution !== undefined) {\n const maxResolution = resolutions[0];\n const minResolution = resolutions[resolutions.length - 1];\n const cappedMaxRes = maxExtent\n ? getViewportClampedResolution(\n maxResolution,\n maxExtent,\n size,\n showFullExtent\n )\n : maxResolution;\n\n // during interacting or animating, allow intermediary values\n if (isMoving) {\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(\n resolution,\n cappedMaxRes,\n minResolution\n );\n }\n\n const capped = Math.min(cappedMaxRes, resolution);\n const z = Math.floor(linearFindNearest(resolutions, capped, direction));\n if (resolutions[z] > cappedMaxRes && z < resolutions.length - 1) {\n return resolutions[z + 1];\n }\n return resolutions[z];\n }\n return undefined;\n }\n );\n}\n\n/**\n * @param {number} power Power.\n * @param {number} maxResolution Maximum resolution.\n * @param {number} [minResolution] Minimum resolution.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToPower(\n power,\n maxResolution,\n minResolution,\n smooth,\n maxExtent,\n showFullExtent\n) {\n smooth = smooth !== undefined ? smooth : true;\n minResolution = minResolution !== undefined ? minResolution : 0;\n\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, isMoving) {\n if (resolution !== undefined) {\n const cappedMaxRes = maxExtent\n ? getViewportClampedResolution(\n maxResolution,\n maxExtent,\n size,\n showFullExtent\n )\n : maxResolution;\n\n // during interacting or animating, allow intermediary values\n if (isMoving) {\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(\n resolution,\n cappedMaxRes,\n minResolution\n );\n }\n\n const tolerance = 1e-9;\n const minZoomLevel = Math.ceil(\n Math.log(maxResolution / cappedMaxRes) / Math.log(power) - tolerance\n );\n const offset = -direction * (0.5 - tolerance) + 0.5;\n const capped = Math.min(cappedMaxRes, resolution);\n const cappedZoomLevel = Math.floor(\n Math.log(maxResolution / capped) / Math.log(power) + offset\n );\n const zoomLevel = Math.max(minZoomLevel, cappedZoomLevel);\n const newResolution = maxResolution / Math.pow(power, zoomLevel);\n return clamp(newResolution, minResolution, cappedMaxRes);\n }\n return undefined;\n }\n );\n}\n\n/**\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createMinMaxResolution(\n maxResolution,\n minResolution,\n smooth,\n maxExtent,\n showFullExtent\n) {\n smooth = smooth !== undefined ? smooth : true;\n\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, isMoving) {\n if (resolution !== undefined) {\n const cappedMaxRes = maxExtent\n ? getViewportClampedResolution(\n maxResolution,\n maxExtent,\n size,\n showFullExtent\n )\n : maxResolution;\n\n if (!smooth || !isMoving) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(\n resolution,\n cappedMaxRes,\n minResolution\n );\n }\n return undefined;\n }\n );\n}\n","/**\n * @module ol/View\n */\nimport BaseObject from './Object.js';\nimport ViewHint from './ViewHint.js';\nimport ViewProperty from './ViewProperty.js';\nimport {DEFAULT_TILE_SIZE} from './tilegrid/common.js';\nimport {\n METERS_PER_UNIT,\n createProjection,\n disableCoordinateWarning,\n fromUserCoordinate,\n fromUserExtent,\n getUserProjection,\n toUserCoordinate,\n toUserExtent,\n} from './proj.js';\nimport {VOID} from './functions.js';\nimport {\n add as addCoordinate,\n equals as coordinatesEqual,\n equals,\n rotate as rotateCoordinate,\n} from './coordinate.js';\nimport {assert} from './asserts.js';\nimport {none as centerNone, createExtent} from './centerconstraint.js';\nimport {clamp, modulo} from './math.js';\nimport {\n createMinMaxResolution,\n createSnapToPower,\n createSnapToResolutions,\n} from './resolutionconstraint.js';\nimport {\n createSnapToN,\n createSnapToZero,\n disable,\n none as rotationNone,\n} from './rotationconstraint.js';\nimport {easeOut, inAndOut} from './easing.js';\nimport {\n getCenter,\n getForViewAndSize,\n getHeight,\n getWidth,\n isEmpty,\n} from './extent.js';\nimport {linearFindNearest} from './array.js';\nimport {fromExtent as polygonFromExtent} from './geom/Polygon.js';\n\n/**\n * An animation configuration\n *\n * @typedef {Object} Animation\n * @property {import(\"./coordinate.js\").Coordinate} [sourceCenter] Source center.\n * @property {import(\"./coordinate.js\").Coordinate} [targetCenter] Target center.\n * @property {number} [sourceResolution] Source resolution.\n * @property {number} [targetResolution] Target resolution.\n * @property {number} [sourceRotation] Source rotation.\n * @property {number} [targetRotation] Target rotation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Anchor.\n * @property {number} start Start.\n * @property {number} duration Duration.\n * @property {boolean} complete Complete.\n * @property {function(number):number} easing Easing.\n * @property {function(boolean):void} callback Callback.\n */\n\n/**\n * @typedef {Object} Constraints\n * @property {import(\"./centerconstraint.js\").Type} center Center.\n * @property {import(\"./resolutionconstraint.js\").Type} resolution Resolution.\n * @property {import(\"./rotationconstraint.js\").Type} rotation Rotation.\n */\n\n/**\n * @typedef {Object} FitOptions\n * @property {import(\"./size.js\").Size} [size] The size in pixels of the box to fit\n * the extent into. Default is the current size of the first map in the DOM that\n * uses this view, or `[100, 100]` if no such map is found.\n * @property {!Array} [padding=[0, 0, 0, 0]] Padding (in pixels) to be\n * cleared inside the view. Values in the array are top, right, bottom and left\n * padding.\n * @property {boolean} [nearest=false] If the view `constrainResolution` option is `true`,\n * get the nearest extent instead of the closest that actually fits the view.\n * @property {number} [minResolution=0] Minimum resolution that we zoom to.\n * @property {number} [maxZoom] Maximum zoom level that we zoom to. If\n * `minResolution` is given, this property is ignored.\n * @property {number} [duration] The duration of the animation in milliseconds.\n * By default, there is no animation to the target extent.\n * @property {function(number):number} [easing] The easing function used during\n * the animation (defaults to {@link module:ol/easing.inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n * @property {function(boolean):void} [callback] Function called when the view is in\n * its final position. The callback will be called with `true` if the animation\n * series completed on its own or `false` if it was cancelled.\n */\n\n/**\n * @typedef {Object} ViewOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The initial center for\n * the view. If a user projection is not set, the coordinate system for the center is\n * specified with the `projection` option. Layer sources will not be fetched if this\n * is not set, but the center can be set later with {@link #setCenter}.\n * @property {boolean|number} [constrainRotation=true] Rotation constraint.\n * `false` means no constraint. `true` means no constraint, but snap to zero\n * near zero. A number constrains the rotation to that number of values. For\n * example, `4` will constrain the rotation to 0, 90, 180, and 270 degrees.\n * @property {boolean} [enableRotation=true] Enable rotation.\n * If `false`, a rotation constraint that always sets the rotation to zero is\n * used. The `constrainRotation` option has no effect if `enableRotation` is\n * `false`.\n * @property {import(\"./extent.js\").Extent} [extent] The extent that constrains the\n * view, in other words, nothing outside of this extent can be visible on the map.\n * @property {boolean} [constrainOnlyCenter=false] If true, the extent\n * constraint will only apply to the view center and not the whole extent.\n * @property {boolean} [smoothExtentConstraint=true] If true, the extent\n * constraint will be applied smoothly, i.e. allow the view to go slightly outside\n * of the given `extent`.\n * @property {number} [maxResolution] The maximum resolution used to determine\n * the resolution constraint. It is used together with `minResolution` (or\n * `maxZoom`) and `zoomFactor`. If unspecified it is calculated in such a way\n * that the projection's validity extent fits in a 256x256 px tile. If the\n * projection is Spherical Mercator (the default) then `maxResolution` defaults\n * to `40075016.68557849 / 256 = 156543.03392804097`.\n * @property {number} [minResolution] The minimum resolution used to determine\n * the resolution constraint. It is used together with `maxResolution` (or\n * `minZoom`) and `zoomFactor`. If unspecified it is calculated assuming 29\n * zoom levels (with a factor of 2). If the projection is Spherical Mercator\n * (the default) then `minResolution` defaults to\n * `40075016.68557849 / 256 / Math.pow(2, 28) = 0.0005831682455839253`.\n * @property {number} [maxZoom=28] The maximum zoom level used to determine the\n * resolution constraint. It is used together with `minZoom` (or\n * `maxResolution`) and `zoomFactor`. Note that if `minResolution` is also\n * provided, it is given precedence over `maxZoom`.\n * @property {number} [minZoom=0] The minimum zoom level used to determine the\n * resolution constraint. It is used together with `maxZoom` (or\n * `minResolution`) and `zoomFactor`. Note that if `maxResolution` is also\n * provided, it is given precedence over `minZoom`.\n * @property {boolean} [multiWorld=false] If `false` the view is constrained so\n * only one world is visible, and you cannot pan off the edge. If `true` the map\n * may show multiple worlds at low zoom levels. Only used if the `projection` is\n * global. Note that if `extent` is also provided it is given precedence.\n * @property {boolean} [constrainResolution=false] If true, the view will always\n * animate to the closest zoom level after an interaction; false means\n * intermediary zoom levels are allowed.\n * @property {boolean} [smoothResolutionConstraint=true] If true, the resolution\n * min/max values will be applied smoothly, i. e. allow the view to exceed slightly\n * the given resolution or zoom bounds.\n * @property {boolean} [showFullExtent=false] Allow the view to be zoomed out to\n * show the full configured extent. By default, when a view is configured with an\n * extent, users will not be able to zoom out so the viewport exceeds the extent in\n * either dimension. This means the full extent may not be visible if the viewport\n * is taller or wider than the aspect ratio of the configured extent. If\n * showFullExtent is true, the user will be able to zoom out so that the viewport\n * exceeds the height or width of the configured extent, but not both, allowing the\n * full extent to be shown.\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857'] The\n * projection. The default is Spherical Mercator.\n * @property {number} [resolution] The initial resolution for the view. The\n * units are `projection` units per pixel (e.g. meters per pixel). An\n * alternative to setting this is to set `zoom`. Layer sources will not be\n * fetched if neither this nor `zoom` are defined, but they can be set later\n * with {@link #setZoom} or {@link #setResolution}.\n * @property {Array} [resolutions] Resolutions that determine the\n * zoom levels if specified. The index in the array corresponds to the zoom level,\n * therefore the resolution values have to be in descending order. It also constrains\n * the resolution by the minimum and maximum value. If set the `maxResolution`,\n * `minResolution`, `minZoom`, `maxZoom`, and `zoomFactor` options are ignored.\n * @property {number} [rotation=0] The initial rotation for the view in radians\n * (positive rotation clockwise, 0 means North).\n * @property {number} [zoom] Only used if `resolution` is not defined. Zoom\n * level used to calculate the initial resolution for the view.\n * @property {number} [zoomFactor=2] The zoom factor used to compute the\n * corresponding resolution.\n * @property {!Array} [padding=[0, 0, 0, 0]] Padding (in css pixels).\n * If the map viewport is partially covered with other content (overlays) along\n * its edges, this setting allows to shift the center of the viewport away from\n * that content. The order of the values is top, right, bottom, left.\n */\n\n/**\n * @typedef {Object} AnimationOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The center of the view at the end of\n * the animation.\n * @property {number} [zoom] The zoom level of the view at the end of the\n * animation. This takes precedence over `resolution`.\n * @property {number} [resolution] The resolution of the view at the end\n * of the animation. If `zoom` is also provided, this option will be ignored.\n * @property {number} [rotation] The rotation of the view at the end of\n * the animation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Optional anchor to remain fixed\n * during a rotation or resolution animation.\n * @property {number} [duration=1000] The duration of the animation in milliseconds.\n * @property {function(number):number} [easing] The easing function used\n * during the animation (defaults to {@link module:ol/easing.inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n */\n\n/**\n * @typedef {Object} State\n * @property {import(\"./coordinate.js\").Coordinate} center Center (in view projection coordinates).\n * @property {import(\"./proj/Projection.js\").default} projection Projection.\n * @property {number} resolution Resolution.\n * @property {import(\"./coordinate.js\").Coordinate} [nextCenter] The next center during an animation series.\n * @property {number} [nextResolution] The next resolution during an animation series.\n * @property {number} [nextRotation] The next rotation during an animation series.\n * @property {number} rotation Rotation.\n * @property {number} zoom Zoom.\n */\n\n/**\n * Like {@link import(\"./Map.js\").FrameState}, but just `viewState` and `extent`.\n * @typedef {Object} ViewStateLayerStateExtent\n * @property {State} viewState View state.\n * @property {import(\"./extent.js\").Extent} extent Extent (in user projection coordinates).\n * @property {Array} [layerStatesArray] Layer states.\n */\n\n/**\n * Default min zoom level for the map view.\n * @type {number}\n */\nconst DEFAULT_MIN_ZOOM = 0;\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:center'|'change:resolution'|'change:rotation'} ViewObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} ViewOnSignature\n */\n\n/**\n * @classdesc\n * A View object represents a simple 2D view of the map.\n *\n * This is the object to act upon to change the center, resolution,\n * and rotation of the map.\n *\n * A View has a `projection`. The projection determines the\n * coordinate system of the center, and its units determine the units of the\n * resolution (projection units per pixel). The default projection is\n * Web Mercator (EPSG:3857).\n *\n * ### The view states\n *\n * A View is determined by three states: `center`, `resolution`,\n * and `rotation`. Each state has a corresponding getter and setter, e.g.\n * `getCenter` and `setCenter` for the `center` state.\n *\n * The `zoom` state is actually not saved on the view: all computations\n * internally use the `resolution` state. Still, the `setZoom` and `getZoom`\n * methods are available, as well as `getResolutionForZoom` and\n * `getZoomForResolution` to switch from one system to the other.\n *\n * ### The constraints\n *\n * `setCenter`, `setResolution` and `setRotation` can be used to change the\n * states of the view, but any constraint defined in the constructor will\n * be applied along the way.\n *\n * A View object can have a *resolution constraint*, a *rotation constraint*\n * and a *center constraint*.\n *\n * The *resolution constraint* typically restricts min/max values and\n * snaps to specific resolutions. It is determined by the following\n * options: `resolutions`, `maxResolution`, `maxZoom` and `zoomFactor`.\n * If `resolutions` is set, the other three options are ignored. See\n * documentation for each option for more information. By default, the view\n * only has a min/max restriction and allow intermediary zoom levels when\n * pinch-zooming for example.\n *\n * The *rotation constraint* snaps to specific angles. It is determined\n * by the following options: `enableRotation` and `constrainRotation`.\n * By default rotation is allowed and its value is snapped to zero when approaching the\n * horizontal.\n *\n * The *center constraint* is determined by the `extent` option. By\n * default the view center is not constrained at all.\n *\n * ### Changing the view state\n *\n * It is important to note that `setZoom`, `setResolution`, `setCenter` and\n * `setRotation` are subject to the above mentioned constraints. As such, it\n * may sometimes not be possible to know in advance the resulting state of the\n * View. For example, calling `setResolution(10)` does not guarantee that\n * `getResolution()` will return `10`.\n *\n * A consequence of this is that, when applying a delta on the view state, one\n * should use `adjustCenter`, `adjustRotation`, `adjustZoom` and `adjustResolution`\n * rather than the corresponding setters. This will let view do its internal\n * computations. Besides, the `adjust*` methods also take an `anchor`\n * argument which allows specifying an origin for the transformation.\n *\n * ### Interacting with the view\n *\n * View constraints are usually only applied when the view is *at rest*, meaning that\n * no interaction or animation is ongoing. As such, if the user puts the view in a\n * state that is not equivalent to a constrained one (e.g. rotating the view when\n * the snap angle is 0), an animation will be triggered at the interaction end to\n * put back the view to a stable state;\n *\n * @api\n */\nclass View extends BaseObject {\n /**\n * @param {ViewOptions} [options] View options.\n */\n constructor(options) {\n super();\n\n /***\n * @type {ViewOnSignature}\n */\n this.on;\n\n /***\n * @type {ViewOnSignature}\n */\n this.once;\n\n /***\n * @type {ViewOnSignature}\n */\n this.un;\n\n options = Object.assign({}, options);\n\n /**\n * @private\n * @type {Array}\n */\n this.hints_ = [0, 0];\n\n /**\n * @private\n * @type {Array>}\n */\n this.animations_ = [];\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.updateAnimationKey_;\n\n /**\n * @private\n * @const\n * @type {import(\"./proj/Projection.js\").default}\n */\n this.projection_ = createProjection(options.projection, 'EPSG:3857');\n\n /**\n * @private\n * @type {import(\"./size.js\").Size}\n */\n this.viewportSize_ = [100, 100];\n\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n this.targetCenter_ = null;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.targetResolution_;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.targetRotation_;\n\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate}\n */\n this.nextCenter_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.nextResolution_;\n\n /**\n * @private\n * @type {number}\n */\n this.nextRotation_;\n\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n this.cancelAnchor_ = undefined;\n\n if (options.projection) {\n disableCoordinateWarning();\n }\n if (options.center) {\n options.center = fromUserCoordinate(options.center, this.projection_);\n }\n if (options.extent) {\n options.extent = fromUserExtent(options.extent, this.projection_);\n }\n\n this.applyOptions_(options);\n }\n\n /**\n * Set up the view with the given options.\n * @param {ViewOptions} options View options.\n */\n applyOptions_(options) {\n const properties = Object.assign({}, options);\n for (const key in ViewProperty) {\n delete properties[key];\n }\n this.setProperties(properties, true);\n\n const resolutionConstraintInfo = createResolutionConstraint(options);\n\n /**\n * @private\n * @type {number}\n */\n this.maxResolution_ = resolutionConstraintInfo.maxResolution;\n\n /**\n * @private\n * @type {number}\n */\n this.minResolution_ = resolutionConstraintInfo.minResolution;\n\n /**\n * @private\n * @type {number}\n */\n this.zoomFactor_ = resolutionConstraintInfo.zoomFactor;\n\n /**\n * @private\n * @type {Array|undefined}\n */\n this.resolutions_ = options.resolutions;\n\n /**\n * @type {Array|undefined}\n * @private\n */\n this.padding_ = options.padding;\n\n /**\n * @private\n * @type {number}\n */\n this.minZoom_ = resolutionConstraintInfo.minZoom;\n\n const centerConstraint = createCenterConstraint(options);\n const resolutionConstraint = resolutionConstraintInfo.constraint;\n const rotationConstraint = createRotationConstraint(options);\n\n /**\n * @private\n * @type {Constraints}\n */\n this.constraints_ = {\n center: centerConstraint,\n resolution: resolutionConstraint,\n rotation: rotationConstraint,\n };\n\n this.setRotation(options.rotation !== undefined ? options.rotation : 0);\n this.setCenterInternal(\n options.center !== undefined ? options.center : null\n );\n if (options.resolution !== undefined) {\n this.setResolution(options.resolution);\n } else if (options.zoom !== undefined) {\n this.setZoom(options.zoom);\n }\n }\n\n /**\n * Padding (in css pixels).\n * If the map viewport is partially covered with other content (overlays) along\n * its edges, this setting allows to shift the center of the viewport away from that\n * content. The order of the values in the array is top, right, bottom, left.\n * The default is no padding, which is equivalent to `[0, 0, 0, 0]`.\n * @type {Array|undefined}\n * @api\n */\n get padding() {\n return this.padding_;\n }\n set padding(padding) {\n let oldPadding = this.padding_;\n this.padding_ = padding;\n const center = this.getCenterInternal();\n if (center) {\n const newPadding = padding || [0, 0, 0, 0];\n oldPadding = oldPadding || [0, 0, 0, 0];\n const resolution = this.getResolution();\n const offsetX =\n (resolution / 2) *\n (newPadding[3] - oldPadding[3] + oldPadding[1] - newPadding[1]);\n const offsetY =\n (resolution / 2) *\n (newPadding[0] - oldPadding[0] + oldPadding[2] - newPadding[2]);\n this.setCenterInternal([center[0] + offsetX, center[1] - offsetY]);\n }\n }\n\n /**\n * Get an updated version of the view options used to construct the view. The\n * current resolution (or zoom), center, and rotation are applied to any stored\n * options. The provided options can be used to apply new min/max zoom or\n * resolution limits.\n * @param {ViewOptions} newOptions New options to be applied.\n * @return {ViewOptions} New options updated with the current view state.\n */\n getUpdatedOptions_(newOptions) {\n const options = this.getProperties();\n\n // preserve resolution (or zoom)\n if (options.resolution !== undefined) {\n options.resolution = this.getResolution();\n } else {\n options.zoom = this.getZoom();\n }\n\n // preserve center\n options.center = this.getCenterInternal();\n\n // preserve rotation\n options.rotation = this.getRotation();\n\n return Object.assign({}, options, newOptions);\n }\n\n /**\n * Animate the view. The view's center, zoom (or resolution), and rotation\n * can be animated for smooth transitions between view states. For example,\n * to animate the view to a new zoom level:\n *\n * view.animate({zoom: view.getZoom() + 1});\n *\n * By default, the animation lasts one second and uses in-and-out easing. You\n * can customize this behavior by including `duration` (in milliseconds) and\n * `easing` options (see {@link module:ol/easing}).\n *\n * To chain together multiple animations, call the method with multiple\n * animation objects. For example, to first zoom and then pan:\n *\n * view.animate({zoom: 10}, {center: [0, 0]});\n *\n * If you provide a function as the last argument to the animate method, it\n * will get called at the end of an animation series. The callback will be\n * called with `true` if the animation series completed on its own or `false`\n * if it was cancelled.\n *\n * Animations are cancelled by user interactions (e.g. dragging the map) or by\n * calling `view.setCenter()`, `view.setResolution()`, or `view.setRotation()`\n * (or another method that calls one of these).\n *\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation\n * options. Multiple animations can be run in series by passing multiple\n * options objects. To run multiple animations in parallel, call the method\n * multiple times. An optional callback can be provided as a final\n * argument. The callback will be called with a boolean indicating whether\n * the animation completed without being cancelled.\n * @api\n */\n animate(var_args) {\n if (this.isDef() && !this.getAnimating()) {\n this.resolveConstraints(0);\n }\n const args = new Array(arguments.length);\n for (let i = 0; i < args.length; ++i) {\n let options = arguments[i];\n if (options.center) {\n options = Object.assign({}, options);\n options.center = fromUserCoordinate(\n options.center,\n this.getProjection()\n );\n }\n if (options.anchor) {\n options = Object.assign({}, options);\n options.anchor = fromUserCoordinate(\n options.anchor,\n this.getProjection()\n );\n }\n args[i] = options;\n }\n this.animateInternal.apply(this, args);\n }\n\n /**\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation options.\n */\n animateInternal(var_args) {\n let animationCount = arguments.length;\n let callback;\n if (\n animationCount > 1 &&\n typeof arguments[animationCount - 1] === 'function'\n ) {\n callback = arguments[animationCount - 1];\n --animationCount;\n }\n\n let i = 0;\n for (; i < animationCount && !this.isDef(); ++i) {\n // if view properties are not yet set, shortcut to the final state\n const state = arguments[i];\n if (state.center) {\n this.setCenterInternal(state.center);\n }\n if (state.zoom !== undefined) {\n this.setZoom(state.zoom);\n } else if (state.resolution) {\n this.setResolution(state.resolution);\n }\n if (state.rotation !== undefined) {\n this.setRotation(state.rotation);\n }\n }\n if (i === animationCount) {\n if (callback) {\n animationCallback(callback, true);\n }\n return;\n }\n\n let start = Date.now();\n let center = this.targetCenter_.slice();\n let resolution = this.targetResolution_;\n let rotation = this.targetRotation_;\n const series = [];\n for (; i < animationCount; ++i) {\n const options = /** @type {AnimationOptions} */ (arguments[i]);\n\n const animation = {\n start: start,\n complete: false,\n anchor: options.anchor,\n duration: options.duration !== undefined ? options.duration : 1000,\n easing: options.easing || inAndOut,\n callback: callback,\n };\n\n if (options.center) {\n animation.sourceCenter = center;\n animation.targetCenter = options.center.slice();\n center = animation.targetCenter;\n }\n\n if (options.zoom !== undefined) {\n animation.sourceResolution = resolution;\n animation.targetResolution = this.getResolutionForZoom(options.zoom);\n resolution = animation.targetResolution;\n } else if (options.resolution) {\n animation.sourceResolution = resolution;\n animation.targetResolution = options.resolution;\n resolution = animation.targetResolution;\n }\n\n if (options.rotation !== undefined) {\n animation.sourceRotation = rotation;\n const delta =\n modulo(options.rotation - rotation + Math.PI, 2 * Math.PI) - Math.PI;\n animation.targetRotation = rotation + delta;\n rotation = animation.targetRotation;\n }\n\n // check if animation is a no-op\n if (isNoopAnimation(animation)) {\n animation.complete = true;\n // we still push it onto the series for callback handling\n } else {\n start += animation.duration;\n }\n series.push(animation);\n }\n this.animations_.push(series);\n this.setHint(ViewHint.ANIMATING, 1);\n this.updateAnimations_();\n }\n\n /**\n * Determine if the view is being animated.\n * @return {boolean} The view is being animated.\n * @api\n */\n getAnimating() {\n return this.hints_[ViewHint.ANIMATING] > 0;\n }\n\n /**\n * Determine if the user is interacting with the view, such as panning or zooming.\n * @return {boolean} The view is being interacted with.\n * @api\n */\n getInteracting() {\n return this.hints_[ViewHint.INTERACTING] > 0;\n }\n\n /**\n * Cancel any ongoing animations.\n * @api\n */\n cancelAnimations() {\n this.setHint(ViewHint.ANIMATING, -this.hints_[ViewHint.ANIMATING]);\n let anchor;\n for (let i = 0, ii = this.animations_.length; i < ii; ++i) {\n const series = this.animations_[i];\n if (series[0].callback) {\n animationCallback(series[0].callback, false);\n }\n if (!anchor) {\n for (let j = 0, jj = series.length; j < jj; ++j) {\n const animation = series[j];\n if (!animation.complete) {\n anchor = animation.anchor;\n break;\n }\n }\n }\n }\n this.animations_.length = 0;\n this.cancelAnchor_ = anchor;\n this.nextCenter_ = null;\n this.nextResolution_ = NaN;\n this.nextRotation_ = NaN;\n }\n\n /**\n * Update all animations.\n */\n updateAnimations_() {\n if (this.updateAnimationKey_ !== undefined) {\n cancelAnimationFrame(this.updateAnimationKey_);\n this.updateAnimationKey_ = undefined;\n }\n if (!this.getAnimating()) {\n return;\n }\n const now = Date.now();\n let more = false;\n for (let i = this.animations_.length - 1; i >= 0; --i) {\n const series = this.animations_[i];\n let seriesComplete = true;\n for (let j = 0, jj = series.length; j < jj; ++j) {\n const animation = series[j];\n if (animation.complete) {\n continue;\n }\n const elapsed = now - animation.start;\n let fraction =\n animation.duration > 0 ? elapsed / animation.duration : 1;\n if (fraction >= 1) {\n animation.complete = true;\n fraction = 1;\n } else {\n seriesComplete = false;\n }\n const progress = animation.easing(fraction);\n if (animation.sourceCenter) {\n const x0 = animation.sourceCenter[0];\n const y0 = animation.sourceCenter[1];\n const x1 = animation.targetCenter[0];\n const y1 = animation.targetCenter[1];\n this.nextCenter_ = animation.targetCenter;\n const x = x0 + progress * (x1 - x0);\n const y = y0 + progress * (y1 - y0);\n this.targetCenter_ = [x, y];\n }\n if (animation.sourceResolution && animation.targetResolution) {\n const resolution =\n progress === 1\n ? animation.targetResolution\n : animation.sourceResolution +\n progress *\n (animation.targetResolution - animation.sourceResolution);\n if (animation.anchor) {\n const size = this.getViewportSize_(this.getRotation());\n const constrainedResolution = this.constraints_.resolution(\n resolution,\n 0,\n size,\n true\n );\n this.targetCenter_ = this.calculateCenterZoom(\n constrainedResolution,\n animation.anchor\n );\n }\n this.nextResolution_ = animation.targetResolution;\n this.targetResolution_ = resolution;\n this.applyTargetState_(true);\n }\n if (\n animation.sourceRotation !== undefined &&\n animation.targetRotation !== undefined\n ) {\n const rotation =\n progress === 1\n ? modulo(animation.targetRotation + Math.PI, 2 * Math.PI) -\n Math.PI\n : animation.sourceRotation +\n progress *\n (animation.targetRotation - animation.sourceRotation);\n if (animation.anchor) {\n const constrainedRotation = this.constraints_.rotation(\n rotation,\n true\n );\n this.targetCenter_ = this.calculateCenterRotate(\n constrainedRotation,\n animation.anchor\n );\n }\n this.nextRotation_ = animation.targetRotation;\n this.targetRotation_ = rotation;\n }\n this.applyTargetState_(true);\n more = true;\n if (!animation.complete) {\n break;\n }\n }\n if (seriesComplete) {\n this.animations_[i] = null;\n this.setHint(ViewHint.ANIMATING, -1);\n this.nextCenter_ = null;\n this.nextResolution_ = NaN;\n this.nextRotation_ = NaN;\n const callback = series[0].callback;\n if (callback) {\n animationCallback(callback, true);\n }\n }\n }\n // prune completed series\n this.animations_ = this.animations_.filter(Boolean);\n if (more && this.updateAnimationKey_ === undefined) {\n this.updateAnimationKey_ = requestAnimationFrame(\n this.updateAnimations_.bind(this)\n );\n }\n }\n\n /**\n * @param {number} rotation Target rotation.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Rotation anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for rotation and anchor.\n */\n calculateCenterRotate(rotation, anchor) {\n let center;\n const currentCenter = this.getCenterInternal();\n if (currentCenter !== undefined) {\n center = [currentCenter[0] - anchor[0], currentCenter[1] - anchor[1]];\n rotateCoordinate(center, rotation - this.getRotation());\n addCoordinate(center, anchor);\n }\n return center;\n }\n\n /**\n * @param {number} resolution Target resolution.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Zoom anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for resolution and anchor.\n */\n calculateCenterZoom(resolution, anchor) {\n let center;\n const currentCenter = this.getCenterInternal();\n const currentResolution = this.getResolution();\n if (currentCenter !== undefined && currentResolution !== undefined) {\n const x =\n anchor[0] -\n (resolution * (anchor[0] - currentCenter[0])) / currentResolution;\n const y =\n anchor[1] -\n (resolution * (anchor[1] - currentCenter[1])) / currentResolution;\n center = [x, y];\n }\n return center;\n }\n\n /**\n * Returns the current viewport size.\n * @private\n * @param {number} [rotation] Take into account the rotation of the viewport when giving the size\n * @return {import(\"./size.js\").Size} Viewport size or `[100, 100]` when no viewport is found.\n */\n getViewportSize_(rotation) {\n const size = this.viewportSize_;\n if (rotation) {\n const w = size[0];\n const h = size[1];\n return [\n Math.abs(w * Math.cos(rotation)) + Math.abs(h * Math.sin(rotation)),\n Math.abs(w * Math.sin(rotation)) + Math.abs(h * Math.cos(rotation)),\n ];\n }\n return size;\n }\n\n /**\n * Stores the viewport size on the view. The viewport size is not read every time from the DOM\n * to avoid performance hit and layout reflow.\n * This should be done on map size change.\n * Note: the constraints are not resolved during an animation to avoid stopping it\n * @param {import(\"./size.js\").Size} [size] Viewport size; if undefined, [100, 100] is assumed\n */\n setViewportSize(size) {\n this.viewportSize_ = Array.isArray(size) ? size.slice() : [100, 100];\n if (!this.getAnimating()) {\n this.resolveConstraints(0);\n }\n }\n\n /**\n * Get the view center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n * @observable\n * @api\n */\n getCenter() {\n const center = this.getCenterInternal();\n if (!center) {\n return center;\n }\n return toUserCoordinate(center, this.getProjection());\n }\n\n /**\n * Get the view center without transforming to user projection.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n */\n getCenterInternal() {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (\n this.get(ViewProperty.CENTER)\n );\n }\n\n /**\n * @return {Constraints} Constraints.\n */\n getConstraints() {\n return this.constraints_;\n }\n\n /**\n * @return {boolean} Resolution constraint is set\n */\n getConstrainResolution() {\n return this.get('constrainResolution');\n }\n\n /**\n * @param {Array} [hints] Destination array.\n * @return {Array} Hint.\n */\n getHints(hints) {\n if (hints !== undefined) {\n hints[0] = this.hints_[0];\n hints[1] = this.hints_[1];\n return hints;\n }\n return this.hints_.slice();\n }\n\n /**\n * Calculate the extent for the current view state and the passed size.\n * The size is the pixel dimensions of the box into which the calculated extent\n * should fit. In most cases you want to get the extent of the entire map,\n * that is `map.getSize()`.\n * @param {import(\"./size.js\").Size} [size] Box pixel size. If not provided, the size\n * of the map that uses this view will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n * @api\n */\n calculateExtent(size) {\n const extent = this.calculateExtentInternal(size);\n return toUserExtent(extent, this.getProjection());\n }\n\n /**\n * @param {import(\"./size.js\").Size} [size] Box pixel size. If not provided,\n * the map's last known viewport size will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n calculateExtentInternal(size) {\n size = size || this.getViewportSizeMinusPadding_();\n const center = /** @type {!import(\"./coordinate.js\").Coordinate} */ (\n this.getCenterInternal()\n );\n assert(center, 1); // The view center is not defined\n const resolution = /** @type {!number} */ (this.getResolution());\n assert(resolution !== undefined, 2); // The view resolution is not defined\n const rotation = /** @type {!number} */ (this.getRotation());\n assert(rotation !== undefined, 3); // The view rotation is not defined\n\n return getForViewAndSize(center, resolution, rotation, size);\n }\n\n /**\n * Get the maximum resolution of the view.\n * @return {number} The maximum resolution of the view.\n * @api\n */\n getMaxResolution() {\n return this.maxResolution_;\n }\n\n /**\n * Get the minimum resolution of the view.\n * @return {number} The minimum resolution of the view.\n * @api\n */\n getMinResolution() {\n return this.minResolution_;\n }\n\n /**\n * Get the maximum zoom level for the view.\n * @return {number} The maximum zoom level.\n * @api\n */\n getMaxZoom() {\n return /** @type {number} */ (\n this.getZoomForResolution(this.minResolution_)\n );\n }\n\n /**\n * Set a new maximum zoom level for the view.\n * @param {number} zoom The maximum zoom level.\n * @api\n */\n setMaxZoom(zoom) {\n this.applyOptions_(this.getUpdatedOptions_({maxZoom: zoom}));\n }\n\n /**\n * Get the minimum zoom level for the view.\n * @return {number} The minimum zoom level.\n * @api\n */\n getMinZoom() {\n return /** @type {number} */ (\n this.getZoomForResolution(this.maxResolution_)\n );\n }\n\n /**\n * Set a new minimum zoom level for the view.\n * @param {number} zoom The minimum zoom level.\n * @api\n */\n setMinZoom(zoom) {\n this.applyOptions_(this.getUpdatedOptions_({minZoom: zoom}));\n }\n\n /**\n * Set whether the view should allow intermediary zoom levels.\n * @param {boolean} enabled Whether the resolution is constrained.\n * @api\n */\n setConstrainResolution(enabled) {\n this.applyOptions_(this.getUpdatedOptions_({constrainResolution: enabled}));\n }\n\n /**\n * Get the view projection.\n * @return {import(\"./proj/Projection.js\").default} The projection of the view.\n * @api\n */\n getProjection() {\n return this.projection_;\n }\n\n /**\n * Get the view resolution.\n * @return {number|undefined} The resolution of the view.\n * @observable\n * @api\n */\n getResolution() {\n return /** @type {number|undefined} */ (this.get(ViewProperty.RESOLUTION));\n }\n\n /**\n * Get the resolutions for the view. This returns the array of resolutions\n * passed to the constructor of the View, or undefined if none were given.\n * @return {Array|undefined} The resolutions of the view.\n * @api\n */\n getResolutions() {\n return this.resolutions_;\n }\n\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size} [size] Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n * @api\n */\n getResolutionForExtent(extent, size) {\n return this.getResolutionForExtentInternal(\n fromUserExtent(extent, this.getProjection()),\n size\n );\n }\n\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size} [size] Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n */\n getResolutionForExtentInternal(extent, size) {\n size = size || this.getViewportSizeMinusPadding_();\n const xResolution = getWidth(extent) / size[0];\n const yResolution = getHeight(extent) / size[1];\n return Math.max(xResolution, yResolution);\n }\n\n /**\n * Return a function that returns a value between 0 and 1 for a\n * resolution. Exponential scaling is assumed.\n * @param {number} [power] Power.\n * @return {function(number): number} Resolution for value function.\n */\n getResolutionForValueFunction(power) {\n power = power || 2;\n const maxResolution = this.getConstrainedResolution(this.maxResolution_);\n const minResolution = this.minResolution_;\n const max = Math.log(maxResolution / minResolution) / Math.log(power);\n return (\n /**\n * @param {number} value Value.\n * @return {number} Resolution.\n */\n function (value) {\n const resolution = maxResolution / Math.pow(power, value * max);\n return resolution;\n }\n );\n }\n\n /**\n * Get the view rotation.\n * @return {number} The rotation of the view in radians.\n * @observable\n * @api\n */\n getRotation() {\n return /** @type {number} */ (this.get(ViewProperty.ROTATION));\n }\n\n /**\n * Return a function that returns a resolution for a value between\n * 0 and 1. Exponential scaling is assumed.\n * @param {number} [power] Power.\n * @return {function(number): number} Value for resolution function.\n */\n getValueForResolutionFunction(power) {\n const logPower = Math.log(power || 2);\n const maxResolution = this.getConstrainedResolution(this.maxResolution_);\n const minResolution = this.minResolution_;\n const max = Math.log(maxResolution / minResolution) / logPower;\n return (\n /**\n * @param {number} resolution Resolution.\n * @return {number} Value.\n */\n function (resolution) {\n const value = Math.log(maxResolution / resolution) / logPower / max;\n return value;\n }\n );\n }\n\n /**\n * Returns the size of the viewport minus padding.\n * @private\n * @param {number} [rotation] Take into account the rotation of the viewport when giving the size\n * @return {import(\"./size.js\").Size} Viewport size reduced by the padding.\n */\n getViewportSizeMinusPadding_(rotation) {\n let size = this.getViewportSize_(rotation);\n const padding = this.padding_;\n if (padding) {\n size = [\n size[0] - padding[1] - padding[3],\n size[1] - padding[0] - padding[2],\n ];\n }\n return size;\n }\n\n /**\n * @return {State} View state.\n */\n getState() {\n const projection = this.getProjection();\n const resolution = this.getResolution();\n const rotation = this.getRotation();\n let center = /** @type {import(\"./coordinate.js\").Coordinate} */ (\n this.getCenterInternal()\n );\n const padding = this.padding_;\n if (padding) {\n const reducedSize = this.getViewportSizeMinusPadding_();\n center = calculateCenterOn(\n center,\n this.getViewportSize_(),\n [reducedSize[0] / 2 + padding[3], reducedSize[1] / 2 + padding[0]],\n resolution,\n rotation\n );\n }\n return {\n center: center.slice(0),\n projection: projection !== undefined ? projection : null,\n resolution: resolution,\n nextCenter: this.nextCenter_,\n nextResolution: this.nextResolution_,\n nextRotation: this.nextRotation_,\n rotation: rotation,\n zoom: this.getZoom(),\n };\n }\n\n /**\n * @return {ViewStateLayerStateExtent} Like `FrameState`, but just `viewState` and `extent`.\n */\n getViewStateAndExtent() {\n return {\n viewState: this.getState(),\n extent: this.calculateExtent(),\n };\n }\n\n /**\n * Get the current zoom level. This method may return non-integer zoom levels\n * if the view does not constrain the resolution, or if an interaction or\n * animation is underway.\n * @return {number|undefined} Zoom.\n * @api\n */\n getZoom() {\n let zoom;\n const resolution = this.getResolution();\n if (resolution !== undefined) {\n zoom = this.getZoomForResolution(resolution);\n }\n return zoom;\n }\n\n /**\n * Get the zoom level for a resolution.\n * @param {number} resolution The resolution.\n * @return {number|undefined} The zoom level for the provided resolution.\n * @api\n */\n getZoomForResolution(resolution) {\n let offset = this.minZoom_ || 0;\n let max, zoomFactor;\n if (this.resolutions_) {\n const nearest = linearFindNearest(this.resolutions_, resolution, 1);\n offset = nearest;\n max = this.resolutions_[nearest];\n if (nearest == this.resolutions_.length - 1) {\n zoomFactor = 2;\n } else {\n zoomFactor = max / this.resolutions_[nearest + 1];\n }\n } else {\n max = this.maxResolution_;\n zoomFactor = this.zoomFactor_;\n }\n return offset + Math.log(max / resolution) / Math.log(zoomFactor);\n }\n\n /**\n * Get the resolution for a zoom level.\n * @param {number} zoom Zoom level.\n * @return {number} The view resolution for the provided zoom level.\n * @api\n */\n getResolutionForZoom(zoom) {\n if (this.resolutions_) {\n if (this.resolutions_.length <= 1) {\n return 0;\n }\n const baseLevel = clamp(\n Math.floor(zoom),\n 0,\n this.resolutions_.length - 2\n );\n const zoomFactor =\n this.resolutions_[baseLevel] / this.resolutions_[baseLevel + 1];\n return (\n this.resolutions_[baseLevel] /\n Math.pow(zoomFactor, clamp(zoom - baseLevel, 0, 1))\n );\n }\n return (\n this.maxResolution_ / Math.pow(this.zoomFactor_, zoom - this.minZoom_)\n );\n }\n\n /**\n * Fit the given geometry or extent based on the given map size and border.\n * The size is pixel dimensions of the box to fit the extent into.\n * In most cases you will want to use the map size, that is `map.getSize()`.\n * Takes care of the map angle.\n * @param {import(\"./geom/SimpleGeometry.js\").default|import(\"./extent.js\").Extent} geometryOrExtent The geometry or\n * extent to fit the view to.\n * @param {FitOptions} [options] Options.\n * @api\n */\n fit(geometryOrExtent, options) {\n /** @type {import(\"./geom/SimpleGeometry.js\").default} */\n let geometry;\n assert(\n Array.isArray(geometryOrExtent) ||\n typeof (/** @type {?} */ (geometryOrExtent).getSimplifiedGeometry) ===\n 'function',\n 24\n ); // Invalid extent or geometry provided as `geometry`\n if (Array.isArray(geometryOrExtent)) {\n assert(!isEmpty(geometryOrExtent), 25); // Cannot fit empty extent provided as `geometry`\n const extent = fromUserExtent(geometryOrExtent, this.getProjection());\n geometry = polygonFromExtent(extent);\n } else if (geometryOrExtent.getType() === 'Circle') {\n const extent = fromUserExtent(\n geometryOrExtent.getExtent(),\n this.getProjection()\n );\n geometry = polygonFromExtent(extent);\n geometry.rotate(this.getRotation(), getCenter(extent));\n } else {\n const userProjection = getUserProjection();\n if (userProjection) {\n geometry = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (\n geometryOrExtent\n .clone()\n .transform(userProjection, this.getProjection())\n );\n } else {\n geometry = geometryOrExtent;\n }\n }\n\n this.fitInternal(geometry, options);\n }\n\n /**\n * Calculate rotated extent\n * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n * @return {import(\"./extent\").Extent} The rotated extent for the geometry.\n */\n rotatedExtentForGeometry(geometry) {\n const rotation = this.getRotation();\n const cosAngle = Math.cos(rotation);\n const sinAngle = Math.sin(-rotation);\n const coords = geometry.getFlatCoordinates();\n const stride = geometry.getStride();\n let minRotX = +Infinity;\n let minRotY = +Infinity;\n let maxRotX = -Infinity;\n let maxRotY = -Infinity;\n for (let i = 0, ii = coords.length; i < ii; i += stride) {\n const rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle;\n const rotY = coords[i] * sinAngle + coords[i + 1] * cosAngle;\n minRotX = Math.min(minRotX, rotX);\n minRotY = Math.min(minRotY, rotY);\n maxRotX = Math.max(maxRotX, rotX);\n maxRotY = Math.max(maxRotY, rotY);\n }\n return [minRotX, minRotY, maxRotX, maxRotY];\n }\n\n /**\n * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n * @param {FitOptions} [options] Options.\n */\n fitInternal(geometry, options) {\n options = options || {};\n let size = options.size;\n if (!size) {\n size = this.getViewportSizeMinusPadding_();\n }\n const padding =\n options.padding !== undefined ? options.padding : [0, 0, 0, 0];\n const nearest = options.nearest !== undefined ? options.nearest : false;\n let minResolution;\n if (options.minResolution !== undefined) {\n minResolution = options.minResolution;\n } else if (options.maxZoom !== undefined) {\n minResolution = this.getResolutionForZoom(options.maxZoom);\n } else {\n minResolution = 0;\n }\n\n const rotatedExtent = this.rotatedExtentForGeometry(geometry);\n\n // calculate resolution\n let resolution = this.getResolutionForExtentInternal(rotatedExtent, [\n size[0] - padding[1] - padding[3],\n size[1] - padding[0] - padding[2],\n ]);\n resolution = isNaN(resolution)\n ? minResolution\n : Math.max(resolution, minResolution);\n resolution = this.getConstrainedResolution(resolution, nearest ? 0 : 1);\n\n // calculate center\n const rotation = this.getRotation();\n const sinAngle = Math.sin(rotation);\n const cosAngle = Math.cos(rotation);\n const centerRot = getCenter(rotatedExtent);\n centerRot[0] += ((padding[1] - padding[3]) / 2) * resolution;\n centerRot[1] += ((padding[0] - padding[2]) / 2) * resolution;\n const centerX = centerRot[0] * cosAngle - centerRot[1] * sinAngle;\n const centerY = centerRot[1] * cosAngle + centerRot[0] * sinAngle;\n const center = this.getConstrainedCenter([centerX, centerY], resolution);\n const callback = options.callback ? options.callback : VOID;\n\n if (options.duration !== undefined) {\n this.animateInternal(\n {\n resolution: resolution,\n center: center,\n duration: options.duration,\n easing: options.easing,\n },\n callback\n );\n } else {\n this.targetResolution_ = resolution;\n this.targetCenter_ = center;\n this.applyTargetState_(false, true);\n animationCallback(callback, true);\n }\n }\n\n /**\n * Center on coordinate and view position.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n * @api\n */\n centerOn(coordinate, size, position) {\n this.centerOnInternal(\n fromUserCoordinate(coordinate, this.getProjection()),\n size,\n position\n );\n }\n\n /**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n */\n centerOnInternal(coordinate, size, position) {\n this.setCenterInternal(\n calculateCenterOn(\n coordinate,\n size,\n position,\n this.getResolution(),\n this.getRotation()\n )\n );\n }\n\n /**\n * Calculates the shift between map and viewport center.\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @return {Array|undefined} Center shift.\n */\n calculateCenterShift(center, resolution, rotation, size) {\n let centerShift;\n const padding = this.padding_;\n if (padding && center) {\n const reducedSize = this.getViewportSizeMinusPadding_(-rotation);\n const shiftedCenter = calculateCenterOn(\n center,\n size,\n [reducedSize[0] / 2 + padding[3], reducedSize[1] / 2 + padding[0]],\n resolution,\n rotation\n );\n centerShift = [\n center[0] - shiftedCenter[0],\n center[1] - shiftedCenter[1],\n ];\n }\n return centerShift;\n }\n\n /**\n * @return {boolean} Is defined.\n */\n isDef() {\n return !!this.getCenterInternal() && this.getResolution() !== undefined;\n }\n\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n * @api\n */\n adjustCenter(deltaCoordinates) {\n const center = toUserCoordinate(this.targetCenter_, this.getProjection());\n this.setCenter([\n center[0] + deltaCoordinates[0],\n center[1] + deltaCoordinates[1],\n ]);\n }\n\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n */\n adjustCenterInternal(deltaCoordinates) {\n const center = this.targetCenter_;\n this.setCenterInternal([\n center[0] + deltaCoordinates[0],\n center[1] + deltaCoordinates[1],\n ]);\n }\n\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n * @api\n */\n adjustResolution(ratio, anchor) {\n anchor = anchor && fromUserCoordinate(anchor, this.getProjection());\n this.adjustResolutionInternal(ratio, anchor);\n }\n\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n */\n adjustResolutionInternal(ratio, anchor) {\n const isMoving = this.getAnimating() || this.getInteracting();\n const size = this.getViewportSize_(this.getRotation());\n const newResolution = this.constraints_.resolution(\n this.targetResolution_ * ratio,\n 0,\n size,\n isMoving\n );\n\n if (anchor) {\n this.targetCenter_ = this.calculateCenterZoom(newResolution, anchor);\n }\n\n this.targetResolution_ *= ratio;\n this.applyTargetState_();\n }\n\n /**\n * Adds a value to the view zoom level, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom level.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n * @api\n */\n adjustZoom(delta, anchor) {\n this.adjustResolution(Math.pow(this.zoomFactor_, -delta), anchor);\n }\n\n /**\n * Adds a value to the view rotation, optionally using an anchor. Any rotation\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The rotation center.\n * @api\n */\n adjustRotation(delta, anchor) {\n if (anchor) {\n anchor = fromUserCoordinate(anchor, this.getProjection());\n }\n this.adjustRotationInternal(delta, anchor);\n }\n\n /**\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The rotation center.\n */\n adjustRotationInternal(delta, anchor) {\n const isMoving = this.getAnimating() || this.getInteracting();\n const newRotation = this.constraints_.rotation(\n this.targetRotation_ + delta,\n isMoving\n );\n if (anchor) {\n this.targetCenter_ = this.calculateCenterRotate(newRotation, anchor);\n }\n this.targetRotation_ += delta;\n this.applyTargetState_();\n }\n\n /**\n * Set the center of the current view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n * @observable\n * @api\n */\n setCenter(center) {\n this.setCenterInternal(\n center ? fromUserCoordinate(center, this.getProjection()) : center\n );\n }\n\n /**\n * Set the center using the view projection (not the user projection).\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n */\n setCenterInternal(center) {\n this.targetCenter_ = center;\n this.applyTargetState_();\n }\n\n /**\n * @param {import(\"./ViewHint.js\").default} hint Hint.\n * @param {number} delta Delta.\n * @return {number} New value.\n */\n setHint(hint, delta) {\n this.hints_[hint] += delta;\n this.changed();\n return this.hints_[hint];\n }\n\n /**\n * Set the resolution for this view. Any resolution constraint will apply.\n * @param {number|undefined} resolution The resolution of the view.\n * @observable\n * @api\n */\n setResolution(resolution) {\n this.targetResolution_ = resolution;\n this.applyTargetState_();\n }\n\n /**\n * Set the rotation for this view. Any rotation constraint will apply.\n * @param {number} rotation The rotation of the view in radians.\n * @observable\n * @api\n */\n setRotation(rotation) {\n this.targetRotation_ = rotation;\n this.applyTargetState_();\n }\n\n /**\n * Zoom to a specific zoom level. Any resolution constrain will apply.\n * @param {number} zoom Zoom level.\n * @api\n */\n setZoom(zoom) {\n this.setResolution(this.getResolutionForZoom(zoom));\n }\n\n /**\n * Recompute rotation/resolution/center based on target values.\n * Note: we have to compute rotation first, then resolution and center considering that\n * parameters can influence one another in case a view extent constraint is present.\n * @param {boolean} [doNotCancelAnims] Do not cancel animations.\n * @param {boolean} [forceMoving] Apply constraints as if the view is moving.\n * @private\n */\n applyTargetState_(doNotCancelAnims, forceMoving) {\n const isMoving =\n this.getAnimating() || this.getInteracting() || forceMoving;\n\n // compute rotation\n const newRotation = this.constraints_.rotation(\n this.targetRotation_,\n isMoving\n );\n const size = this.getViewportSize_(newRotation);\n const newResolution = this.constraints_.resolution(\n this.targetResolution_,\n 0,\n size,\n isMoving\n );\n const newCenter = this.constraints_.center(\n this.targetCenter_,\n newResolution,\n size,\n isMoving,\n this.calculateCenterShift(\n this.targetCenter_,\n newResolution,\n newRotation,\n size\n )\n );\n\n if (this.get(ViewProperty.ROTATION) !== newRotation) {\n this.set(ViewProperty.ROTATION, newRotation);\n }\n if (this.get(ViewProperty.RESOLUTION) !== newResolution) {\n this.set(ViewProperty.RESOLUTION, newResolution);\n this.set('zoom', this.getZoom(), true);\n }\n if (\n !newCenter ||\n !this.get(ViewProperty.CENTER) ||\n !equals(this.get(ViewProperty.CENTER), newCenter)\n ) {\n this.set(ViewProperty.CENTER, newCenter);\n }\n\n if (this.getAnimating() && !doNotCancelAnims) {\n this.cancelAnimations();\n }\n this.cancelAnchor_ = undefined;\n }\n\n /**\n * If any constraints need to be applied, an animation will be triggered.\n * This is typically done on interaction end.\n * Note: calling this with a duration of 0 will apply the constrained values straight away,\n * without animation.\n * @param {number} [duration] The animation duration in ms.\n * @param {number} [resolutionDirection] Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n */\n resolveConstraints(duration, resolutionDirection, anchor) {\n duration = duration !== undefined ? duration : 200;\n const direction = resolutionDirection || 0;\n\n const newRotation = this.constraints_.rotation(this.targetRotation_);\n const size = this.getViewportSize_(newRotation);\n const newResolution = this.constraints_.resolution(\n this.targetResolution_,\n direction,\n size\n );\n const newCenter = this.constraints_.center(\n this.targetCenter_,\n newResolution,\n size,\n false,\n this.calculateCenterShift(\n this.targetCenter_,\n newResolution,\n newRotation,\n size\n )\n );\n\n if (duration === 0 && !this.cancelAnchor_) {\n this.targetResolution_ = newResolution;\n this.targetRotation_ = newRotation;\n this.targetCenter_ = newCenter;\n this.applyTargetState_();\n return;\n }\n\n anchor = anchor || (duration === 0 ? this.cancelAnchor_ : undefined);\n this.cancelAnchor_ = undefined;\n\n if (\n this.getResolution() !== newResolution ||\n this.getRotation() !== newRotation ||\n !this.getCenterInternal() ||\n !equals(this.getCenterInternal(), newCenter)\n ) {\n if (this.getAnimating()) {\n this.cancelAnimations();\n }\n\n this.animateInternal({\n rotation: newRotation,\n center: newCenter,\n resolution: newResolution,\n duration: duration,\n easing: easeOut,\n anchor: anchor,\n });\n }\n }\n\n /**\n * Notify the View that an interaction has started.\n * The view state will be resolved to a stable one if needed\n * (depending on its constraints).\n * @api\n */\n beginInteraction() {\n this.resolveConstraints(0);\n\n this.setHint(ViewHint.INTERACTING, 1);\n }\n\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number} [duration] Animation duration in ms.\n * @param {number} [resolutionDirection] Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n * @api\n */\n endInteraction(duration, resolutionDirection, anchor) {\n anchor = anchor && fromUserCoordinate(anchor, this.getProjection());\n this.endInteractionInternal(duration, resolutionDirection, anchor);\n }\n\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number} [duration] Animation duration in ms.\n * @param {number} [resolutionDirection] Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n */\n endInteractionInternal(duration, resolutionDirection, anchor) {\n if (!this.getInteracting()) {\n return;\n }\n this.setHint(ViewHint.INTERACTING, -1);\n this.resolveConstraints(duration, resolutionDirection, anchor);\n }\n\n /**\n * Get a valid position for the view center according to the current constraints.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} targetCenter Target center position.\n * @param {number} [targetResolution] Target resolution. If not supplied, the current one will be used.\n * This is useful to guess a valid center position at a different zoom level.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Valid center position.\n */\n getConstrainedCenter(targetCenter, targetResolution) {\n const size = this.getViewportSize_(this.getRotation());\n return this.constraints_.center(\n targetCenter,\n targetResolution || this.getResolution(),\n size\n );\n }\n\n /**\n * Get a valid zoom level according to the current view constraints.\n * @param {number|undefined} targetZoom Target zoom.\n * @param {number} [direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid zoom level.\n */\n getConstrainedZoom(targetZoom, direction) {\n const targetRes = this.getResolutionForZoom(targetZoom);\n return this.getZoomForResolution(\n this.getConstrainedResolution(targetRes, direction)\n );\n }\n\n /**\n * Get a valid resolution according to the current view constraints.\n * @param {number|undefined} targetResolution Target resolution.\n * @param {number} [direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid resolution.\n */\n getConstrainedResolution(targetResolution, direction) {\n direction = direction || 0;\n const size = this.getViewportSize_(this.getRotation());\n\n return this.constraints_.resolution(targetResolution, direction, size);\n }\n}\n\n/**\n * @param {Function} callback Callback.\n * @param {*} returnValue Return value.\n */\nfunction animationCallback(callback, returnValue) {\n setTimeout(function () {\n callback(returnValue);\n }, 0);\n}\n\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./centerconstraint.js\").Type} The constraint.\n */\nexport function createCenterConstraint(options) {\n if (options.extent !== undefined) {\n const smooth =\n options.smoothExtentConstraint !== undefined\n ? options.smoothExtentConstraint\n : true;\n return createExtent(options.extent, options.constrainOnlyCenter, smooth);\n }\n\n const projection = createProjection(options.projection, 'EPSG:3857');\n if (options.multiWorld !== true && projection.isGlobal()) {\n const extent = projection.getExtent().slice();\n extent[0] = -Infinity;\n extent[2] = Infinity;\n return createExtent(extent, false, false);\n }\n\n return centerNone;\n}\n\n/**\n * @param {ViewOptions} options View options.\n * @return {{constraint: import(\"./resolutionconstraint.js\").Type, maxResolution: number,\n * minResolution: number, minZoom: number, zoomFactor: number}} The constraint.\n */\nexport function createResolutionConstraint(options) {\n let resolutionConstraint;\n let maxResolution;\n let minResolution;\n\n // TODO: move these to be ol constants\n // see https://github.com/openlayers/openlayers/issues/2076\n const defaultMaxZoom = 28;\n const defaultZoomFactor = 2;\n\n let minZoom =\n options.minZoom !== undefined ? options.minZoom : DEFAULT_MIN_ZOOM;\n\n let maxZoom =\n options.maxZoom !== undefined ? options.maxZoom : defaultMaxZoom;\n\n const zoomFactor =\n options.zoomFactor !== undefined ? options.zoomFactor : defaultZoomFactor;\n\n const multiWorld =\n options.multiWorld !== undefined ? options.multiWorld : false;\n\n const smooth =\n options.smoothResolutionConstraint !== undefined\n ? options.smoothResolutionConstraint\n : true;\n\n const showFullExtent =\n options.showFullExtent !== undefined ? options.showFullExtent : false;\n\n const projection = createProjection(options.projection, 'EPSG:3857');\n const projExtent = projection.getExtent();\n let constrainOnlyCenter = options.constrainOnlyCenter;\n let extent = options.extent;\n if (!multiWorld && !extent && projection.isGlobal()) {\n constrainOnlyCenter = false;\n extent = projExtent;\n }\n\n if (options.resolutions !== undefined) {\n const resolutions = options.resolutions;\n maxResolution = resolutions[minZoom];\n minResolution =\n resolutions[maxZoom] !== undefined\n ? resolutions[maxZoom]\n : resolutions[resolutions.length - 1];\n\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToResolutions(\n resolutions,\n smooth,\n !constrainOnlyCenter && extent,\n showFullExtent\n );\n } else {\n resolutionConstraint = createMinMaxResolution(\n maxResolution,\n minResolution,\n smooth,\n !constrainOnlyCenter && extent,\n showFullExtent\n );\n }\n } else {\n // calculate the default min and max resolution\n const size = !projExtent\n ? // use an extent that can fit the whole world if need be\n (360 * METERS_PER_UNIT.degrees) / projection.getMetersPerUnit()\n : Math.max(getWidth(projExtent), getHeight(projExtent));\n\n const defaultMaxResolution =\n size / DEFAULT_TILE_SIZE / Math.pow(defaultZoomFactor, DEFAULT_MIN_ZOOM);\n\n const defaultMinResolution =\n defaultMaxResolution /\n Math.pow(defaultZoomFactor, defaultMaxZoom - DEFAULT_MIN_ZOOM);\n\n // user provided maxResolution takes precedence\n maxResolution = options.maxResolution;\n if (maxResolution !== undefined) {\n minZoom = 0;\n } else {\n maxResolution = defaultMaxResolution / Math.pow(zoomFactor, minZoom);\n }\n\n // user provided minResolution takes precedence\n minResolution = options.minResolution;\n if (minResolution === undefined) {\n if (options.maxZoom !== undefined) {\n if (options.maxResolution !== undefined) {\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom);\n } else {\n minResolution = defaultMaxResolution / Math.pow(zoomFactor, maxZoom);\n }\n } else {\n minResolution = defaultMinResolution;\n }\n }\n\n // given discrete zoom levels, minResolution may be different than provided\n maxZoom =\n minZoom +\n Math.floor(\n Math.log(maxResolution / minResolution) / Math.log(zoomFactor)\n );\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);\n\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToPower(\n zoomFactor,\n maxResolution,\n minResolution,\n smooth,\n !constrainOnlyCenter && extent,\n showFullExtent\n );\n } else {\n resolutionConstraint = createMinMaxResolution(\n maxResolution,\n minResolution,\n smooth,\n !constrainOnlyCenter && extent,\n showFullExtent\n );\n }\n }\n return {\n constraint: resolutionConstraint,\n maxResolution: maxResolution,\n minResolution: minResolution,\n minZoom: minZoom,\n zoomFactor: zoomFactor,\n };\n}\n\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./rotationconstraint.js\").Type} Rotation constraint.\n */\nexport function createRotationConstraint(options) {\n const enableRotation =\n options.enableRotation !== undefined ? options.enableRotation : true;\n if (enableRotation) {\n const constrainRotation = options.constrainRotation;\n if (constrainRotation === undefined || constrainRotation === true) {\n return createSnapToZero();\n }\n if (constrainRotation === false) {\n return rotationNone;\n }\n if (typeof constrainRotation === 'number') {\n return createSnapToN(constrainRotation);\n }\n return rotationNone;\n }\n return disable;\n}\n\n/**\n * Determine if an animation involves no view change.\n * @param {Animation} animation The animation.\n * @return {boolean} The animation involves no view change.\n */\nexport function isNoopAnimation(animation) {\n if (animation.sourceCenter && animation.targetCenter) {\n if (!coordinatesEqual(animation.sourceCenter, animation.targetCenter)) {\n return false;\n }\n }\n if (animation.sourceResolution !== animation.targetResolution) {\n return false;\n }\n if (animation.sourceRotation !== animation.targetRotation) {\n return false;\n }\n return true;\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @return {import(\"./coordinate.js\").Coordinate} Shifted center.\n */\nfunction calculateCenterOn(coordinate, size, position, resolution, rotation) {\n // calculate rotated position\n const cosAngle = Math.cos(-rotation);\n let sinAngle = Math.sin(-rotation);\n let rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n let rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n rotX += (size[0] / 2 - position[0]) * resolution;\n rotY += (position[1] - size[1] / 2) * resolution;\n\n // go back to original angle\n sinAngle = -sinAngle; // go back to original rotation\n const centerX = rotX * cosAngle - rotY * sinAngle;\n const centerY = rotY * cosAngle + rotX * sinAngle;\n\n return [centerX, centerY];\n}\n\nexport default View;\n","/**\n * @module ol/ViewHint\n */\n\n/**\n * @enum {number}\n */\nexport default {\n ANIMATING: 0,\n INTERACTING: 1,\n};\n","/**\n * @module ol/array\n */\n\n/**\n * Performs a binary search on the provided sorted list and returns the index of the item if found. If it can't be found it'll return -1.\n * https://github.com/darkskyapp/binary-search\n *\n * @param {Array<*>} haystack Items to search through.\n * @param {*} needle The item to look for.\n * @param {Function} [comparator] Comparator function.\n * @return {number} The index of the item if found, -1 if not.\n */\nexport function binarySearch(haystack, needle, comparator) {\n let mid, cmp;\n comparator = comparator || ascending;\n let low = 0;\n let high = haystack.length;\n let found = false;\n\n while (low < high) {\n /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n * to double (which gives the wrong results). */\n mid = low + ((high - low) >> 1);\n cmp = +comparator(haystack[mid], needle);\n\n if (cmp < 0.0) {\n /* Too low. */\n low = mid + 1;\n } else {\n /* Key found or too high */\n high = mid;\n found = !cmp;\n }\n }\n\n /* Key not found. */\n return found ? low : ~low;\n}\n\n/**\n * Compare function sorting arrays in ascending order. Safe to use for numeric values.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is less than, equal to, or greater than the second.\n */\nexport function ascending(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\n/**\n * {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution} can use a function\n * of this type to determine which nearest resolution to use.\n *\n * This function takes a `{number}` representing a value between two array entries,\n * a `{number}` representing the value of the nearest higher entry and\n * a `{number}` representing the value of the nearest lower entry\n * as arguments and returns a `{number}`. If a negative number or zero is returned\n * the lower value will be used, if a positive number is returned the higher value\n * will be used.\n * @typedef {function(number, number, number): number} NearestDirectionFunction\n * @api\n */\n\n/**\n * @param {Array} arr Array in descending order.\n * @param {number} target Target.\n * @param {number|NearestDirectionFunction} direction\n * 0 means return the nearest,\n * > 0 means return the largest nearest,\n * < 0 means return the smallest nearest.\n * @return {number} Index.\n */\nexport function linearFindNearest(arr, target, direction) {\n if (arr[0] <= target) {\n return 0;\n }\n\n const n = arr.length;\n if (target <= arr[n - 1]) {\n return n - 1;\n }\n\n if (typeof direction === 'function') {\n for (let i = 1; i < n; ++i) {\n const candidate = arr[i];\n if (candidate === target) {\n return i;\n }\n if (candidate < target) {\n if (direction(target, arr[i - 1], candidate) > 0) {\n return i - 1;\n }\n return i;\n }\n }\n return n - 1;\n }\n\n if (direction > 0) {\n for (let i = 1; i < n; ++i) {\n if (arr[i] < target) {\n return i - 1;\n }\n }\n return n - 1;\n }\n\n if (direction < 0) {\n for (let i = 1; i < n; ++i) {\n if (arr[i] <= target) {\n return i;\n }\n }\n return n - 1;\n }\n\n for (let i = 1; i < n; ++i) {\n if (arr[i] == target) {\n return i;\n }\n if (arr[i] < target) {\n if (arr[i - 1] - target < target - arr[i]) {\n return i - 1;\n }\n return i;\n }\n }\n return n - 1;\n}\n\n/**\n * @param {Array<*>} arr Array.\n * @param {number} begin Begin index.\n * @param {number} end End index.\n */\nexport function reverseSubArray(arr, begin, end) {\n while (begin < end) {\n const tmp = arr[begin];\n arr[begin] = arr[end];\n arr[end] = tmp;\n ++begin;\n --end;\n }\n}\n\n/**\n * @param {Array} arr The array to modify.\n * @param {!Array|VALUE} data The elements or arrays of elements to add to arr.\n * @template VALUE\n */\nexport function extend(arr, data) {\n const extension = Array.isArray(data) ? data : [data];\n const length = extension.length;\n for (let i = 0; i < length; i++) {\n arr[arr.length] = extension[i];\n }\n}\n\n/**\n * @param {Array} arr The array to modify.\n * @param {VALUE} obj The element to remove.\n * @template VALUE\n * @return {boolean} If the element was removed.\n */\nexport function remove(arr, obj) {\n const i = arr.indexOf(obj);\n const found = i > -1;\n if (found) {\n arr.splice(i, 1);\n }\n return found;\n}\n\n/**\n * @param {Array|Uint8ClampedArray} arr1 The first array to compare.\n * @param {Array|Uint8ClampedArray} arr2 The second array to compare.\n * @return {boolean} Whether the two arrays are equal.\n */\nexport function equals(arr1, arr2) {\n const len1 = arr1.length;\n if (len1 !== arr2.length) {\n return false;\n }\n for (let i = 0; i < len1; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Sort the passed array such that the relative order of equal elements is preserved.\n * See https://en.wikipedia.org/wiki/Sorting_algorithm#Stability for details.\n * @param {Array<*>} arr The array to sort (modifies original).\n * @param {!function(*, *): number} compareFnc Comparison function.\n * @api\n */\nexport function stableSort(arr, compareFnc) {\n const length = arr.length;\n const tmp = Array(arr.length);\n let i;\n for (i = 0; i < length; i++) {\n tmp[i] = {index: i, value: arr[i]};\n }\n tmp.sort(function (a, b) {\n return compareFnc(a.value, b.value) || a.index - b.index;\n });\n for (i = 0; i < arr.length; i++) {\n arr[i] = tmp[i].value;\n }\n}\n\n/**\n * @param {Array<*>} arr The array to test.\n * @param {Function} [func] Comparison function.\n * @param {boolean} [strict] Strictly sorted (default false).\n * @return {boolean} Return index.\n */\nexport function isSorted(arr, func, strict) {\n const compare = func || ascending;\n return arr.every(function (currentVal, index) {\n if (index === 0) {\n return true;\n }\n const res = compare(arr[index - 1], currentVal);\n return !(res > 0 || (strict && res === 0));\n });\n}\n","/**\n * @module ol/asserts\n */\nimport AssertionError from './AssertionError.js';\n\n/**\n * @param {*} assertion Assertion we expected to be truthy.\n * @param {number} errorCode Error code.\n */\nexport function assert(assertion, errorCode) {\n if (!assertion) {\n throw new AssertionError(errorCode);\n }\n}\n","/**\n * @module ol/color\n */\nimport {assert} from './asserts.js';\nimport {clamp} from './math.js';\n\n/**\n * A color represented as a short array [red, green, blue, alpha].\n * red, green, and blue should be integers in the range 0..255 inclusive.\n * alpha should be a float in the range 0..1 inclusive. If no alpha value is\n * given then `1` will be used.\n * @typedef {Array} Color\n * @api\n */\n\n/**\n * This RegExp matches # followed by 3, 4, 6, or 8 hex digits.\n * @const\n * @type {RegExp}\n * @private\n */\nconst HEX_COLOR_RE_ = /^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i;\n\n/**\n * Regular expression for matching potential named color style strings.\n * @const\n * @type {RegExp}\n * @private\n */\nconst NAMED_COLOR_RE_ = /^([a-z]*)$|^hsla?\\(.*\\)$/i;\n\n/**\n * Return the color as an rgba string.\n * @param {Color|string} color Color.\n * @return {string} Rgba string.\n * @api\n */\nexport function asString(color) {\n if (typeof color === 'string') {\n return color;\n }\n return toString(color);\n}\n\n/**\n * Return named color as an rgba string.\n * @param {string} color Named color.\n * @return {string} Rgb string.\n */\nfunction fromNamed(color) {\n const el = document.createElement('div');\n el.style.color = color;\n if (el.style.color !== '') {\n document.body.appendChild(el);\n const rgb = getComputedStyle(el).color;\n document.body.removeChild(el);\n return rgb;\n }\n return '';\n}\n\n/**\n * @param {string} s String.\n * @return {Color} Color.\n */\nexport const fromString = (function () {\n // We maintain a small cache of parsed strings. To provide cheap LRU-like\n // semantics, whenever the cache grows too large we simply delete an\n // arbitrary 25% of the entries.\n\n /**\n * @const\n * @type {number}\n */\n const MAX_CACHE_SIZE = 1024;\n\n /**\n * @type {Object}\n */\n const cache = {};\n\n /**\n * @type {number}\n */\n let cacheSize = 0;\n\n return (\n /**\n * @param {string} s String.\n * @return {Color} Color.\n */\n function (s) {\n let color;\n if (cache.hasOwnProperty(s)) {\n color = cache[s];\n } else {\n if (cacheSize >= MAX_CACHE_SIZE) {\n let i = 0;\n for (const key in cache) {\n if ((i++ & 3) === 0) {\n delete cache[key];\n --cacheSize;\n }\n }\n }\n color = fromStringInternal_(s);\n cache[s] = color;\n ++cacheSize;\n }\n return color;\n }\n );\n})();\n\n/**\n * Return the color as an array. This function maintains a cache of calculated\n * arrays which means the result should not be modified.\n * @param {Color|string} color Color.\n * @return {Color} Color.\n * @api\n */\nexport function asArray(color) {\n if (Array.isArray(color)) {\n return color;\n }\n return fromString(color);\n}\n\n/**\n * @param {string} s String.\n * @private\n * @return {Color} Color.\n */\nfunction fromStringInternal_(s) {\n let r, g, b, a, color;\n\n if (NAMED_COLOR_RE_.exec(s)) {\n s = fromNamed(s);\n }\n\n if (HEX_COLOR_RE_.exec(s)) {\n // hex\n const n = s.length - 1; // number of hex digits\n let d; // number of digits per channel\n if (n <= 4) {\n d = 1;\n } else {\n d = 2;\n }\n const hasAlpha = n === 4 || n === 8;\n r = parseInt(s.substr(1 + 0 * d, d), 16);\n g = parseInt(s.substr(1 + 1 * d, d), 16);\n b = parseInt(s.substr(1 + 2 * d, d), 16);\n if (hasAlpha) {\n a = parseInt(s.substr(1 + 3 * d, d), 16);\n } else {\n a = 255;\n }\n if (d == 1) {\n r = (r << 4) + r;\n g = (g << 4) + g;\n b = (b << 4) + b;\n if (hasAlpha) {\n a = (a << 4) + a;\n }\n }\n color = [r, g, b, a / 255];\n } else if (s.startsWith('rgba(')) {\n // rgba()\n color = s.slice(5, -1).split(',').map(Number);\n normalize(color);\n } else if (s.startsWith('rgb(')) {\n // rgb()\n color = s.slice(4, -1).split(',').map(Number);\n color.push(1);\n normalize(color);\n } else {\n assert(false, 14); // Invalid color\n }\n return color;\n}\n\n/**\n * TODO this function is only used in the test, we probably shouldn't export it\n * @param {Color} color Color.\n * @return {Color} Clamped color.\n */\nexport function normalize(color) {\n color[0] = clamp((color[0] + 0.5) | 0, 0, 255);\n color[1] = clamp((color[1] + 0.5) | 0, 0, 255);\n color[2] = clamp((color[2] + 0.5) | 0, 0, 255);\n color[3] = clamp(color[3], 0, 1);\n return color;\n}\n\n/**\n * @param {Color} color Color.\n * @return {string} String.\n */\nexport function toString(color) {\n let r = color[0];\n if (r != (r | 0)) {\n r = (r + 0.5) | 0;\n }\n let g = color[1];\n if (g != (g | 0)) {\n g = (g + 0.5) | 0;\n }\n let b = color[2];\n if (b != (b | 0)) {\n b = (b + 0.5) | 0;\n }\n const a = color[3] === undefined ? 1 : Math.round(color[3] * 100) / 100;\n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n}\n\n/**\n * @param {string} s String.\n * @return {boolean} Whether the string is actually a valid color\n */\nexport function isStringColor(s) {\n if (NAMED_COLOR_RE_.test(s)) {\n s = fromNamed(s);\n }\n return HEX_COLOR_RE_.test(s) || s.startsWith('rgba(') || s.startsWith('rgb(');\n}\n","/**\n * @module ol/colorlike\n */\nimport {toString} from './color.js';\n\n/**\n * A type accepted by CanvasRenderingContext2D.fillStyle\n * or CanvasRenderingContext2D.strokeStyle.\n * Represents a color, pattern, or gradient. The origin for patterns and\n * gradients as fill style is an increment of 512 css pixels from map coordinate\n * `[0, 0]`. For seamless repeat patterns, width and height of the pattern image\n * must be a factor of two (2, 4, 8, ..., 512).\n *\n * @typedef {string|CanvasPattern|CanvasGradient} ColorLike\n * @api\n */\n\n/**\n * @param {import(\"./color.js\").Color|ColorLike} color Color.\n * @return {ColorLike} The color as an {@link ol/colorlike~ColorLike}.\n * @api\n */\nexport function asColorLike(color) {\n if (Array.isArray(color)) {\n return toString(color);\n }\n return color;\n}\n","/**\n * @module ol/console\n */\n\n/**\n * @typedef {'info'|'warn'|'error'|'none'} Level\n */\n\n/**\n * @type {Object}\n */\nconst levels = {\n info: 1,\n warn: 2,\n error: 3,\n none: 4,\n};\n\n/**\n * @type {number}\n */\nlet level = levels.info;\n\n/**\n * Set the logging level. By default, the level is set to 'info' and all\n * messages will be logged. Set to 'warn' to only display warnings and errors.\n * Set to 'error' to only display errors. Set to 'none' to silence all messages.\n *\n * @param {Level} l The new level.\n */\nexport function setLevel(l) {\n level = levels[l];\n}\n\nexport function log(...args) {\n if (level > levels.info) {\n return;\n }\n console.log(...args); // eslint-disable-line no-console\n}\n\nexport function warn(...args) {\n if (level > levels.warn) {\n return;\n }\n console.warn(...args); // eslint-disable-line no-console\n}\n\nexport function error(...args) {\n if (level > levels.error) {\n return;\n }\n console.error(...args); // eslint-disable-line no-console\n}\n","/**\n * @module ol/coordinate\n */\nimport {getWidth} from './extent.js';\nimport {modulo, toFixed} from './math.js';\nimport {padNumber} from './string.js';\n\n/**\n * An array of numbers representing an xy coordinate. Example: `[16, 48]`.\n * @typedef {Array} Coordinate\n * @api\n */\n\n/**\n * A function that takes a {@link module:ol/coordinate~Coordinate} and\n * transforms it into a `{string}`.\n *\n * @typedef {function((Coordinate|undefined)): string} CoordinateFormat\n * @api\n */\n\n/**\n * Add `delta` to `coordinate`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {add} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * add(coord, [-2, 4]);\n * // coord is now [5.85, 51.983333]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {Coordinate} delta Delta.\n * @return {Coordinate} The input coordinate adjusted by\n * the given delta.\n * @api\n */\nexport function add(coordinate, delta) {\n coordinate[0] += +delta[0];\n coordinate[1] += +delta[1];\n return coordinate;\n}\n\n/**\n * Calculates the point closest to the passed coordinate on the passed circle.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {import(\"./geom/Circle.js\").default} circle The circle.\n * @return {Coordinate} Closest point on the circumference.\n */\nexport function closestOnCircle(coordinate, circle) {\n const r = circle.getRadius();\n const center = circle.getCenter();\n const x0 = center[0];\n const y0 = center[1];\n const x1 = coordinate[0];\n const y1 = coordinate[1];\n\n let dx = x1 - x0;\n const dy = y1 - y0;\n if (dx === 0 && dy === 0) {\n dx = 1;\n }\n const d = Math.sqrt(dx * dx + dy * dy);\n\n const x = x0 + (r * dx) / d;\n const y = y0 + (r * dy) / d;\n\n return [x, y];\n}\n\n/**\n * Calculates the point closest to the passed coordinate on the passed segment.\n * This is the foot of the perpendicular of the coordinate to the segment when\n * the foot is on the segment, or the closest segment coordinate when the foot\n * is outside the segment.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {Array} segment The two coordinates\n * of the segment.\n * @return {Coordinate} The foot of the perpendicular of\n * the coordinate to the segment.\n */\nexport function closestOnSegment(coordinate, segment) {\n const x0 = coordinate[0];\n const y0 = coordinate[1];\n const start = segment[0];\n const end = segment[1];\n const x1 = start[0];\n const y1 = start[1];\n const x2 = end[0];\n const y2 = end[1];\n const dx = x2 - x1;\n const dy = y2 - y1;\n const along =\n dx === 0 && dy === 0\n ? 0\n : (dx * (x0 - x1) + dy * (y0 - y1)) / (dx * dx + dy * dy || 0);\n let x, y;\n if (along <= 0) {\n x = x1;\n y = y1;\n } else if (along >= 1) {\n x = x2;\n y = y2;\n } else {\n x = x1 + along * dx;\n y = y1 + along * dy;\n }\n return [x, y];\n}\n\n/**\n * Returns a {@link module:ol/coordinate~CoordinateFormat} function that can be\n * used to format\n * a {Coordinate} to a string.\n *\n * Example without specifying the fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const stringifyFunc = createStringXY();\n * const out = stringifyFunc(coord);\n * // out is now '8, 48'\n *\n * Example with explicitly specifying 2 fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const stringifyFunc = createStringXY(2);\n * const out = stringifyFunc(coord);\n * // out is now '7.85, 47.98'\n *\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {CoordinateFormat} Coordinate format.\n * @api\n */\nexport function createStringXY(fractionDigits) {\n return (\n /**\n * @param {Coordinate} coordinate Coordinate.\n * @return {string} String XY.\n */\n function (coordinate) {\n return toStringXY(coordinate, fractionDigits);\n }\n );\n}\n\n/**\n * @param {string} hemispheres Hemispheres.\n * @param {number} degrees Degrees.\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} String.\n */\nexport function degreesToStringHDMS(hemispheres, degrees, fractionDigits) {\n const normalizedDegrees = modulo(degrees + 180, 360) - 180;\n const x = Math.abs(3600 * normalizedDegrees);\n const decimals = fractionDigits || 0;\n\n let deg = Math.floor(x / 3600);\n let min = Math.floor((x - deg * 3600) / 60);\n let sec = toFixed(x - deg * 3600 - min * 60, decimals);\n\n if (sec >= 60) {\n sec = 0;\n min += 1;\n }\n\n if (min >= 60) {\n min = 0;\n deg += 1;\n }\n\n let hdms = deg + '\\u00b0';\n if (min !== 0 || sec !== 0) {\n hdms += ' ' + padNumber(min, 2) + '\\u2032';\n }\n if (sec !== 0) {\n hdms += ' ' + padNumber(sec, 2, decimals) + '\\u2033';\n }\n if (normalizedDegrees !== 0) {\n hdms += ' ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0);\n }\n\n return hdms;\n}\n\n/**\n * Transforms the given {@link module:ol/coordinate~Coordinate} to a string\n * using the given string template. The strings `{x}` and `{y}` in the template\n * will be replaced with the first and second coordinate values respectively.\n *\n * Example without specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const template = 'Coordinate is ({x}|{y}).';\n * const out = format(coord, template);\n * // out is now 'Coordinate is (8|48).'\n *\n * Example explicitly specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const template = 'Coordinate is ({x}|{y}).';\n * const out = format(coord, template, 2);\n * // out is now 'Coordinate is (7.85|47.98).'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {string} template A template string with `{x}` and `{y}` placeholders\n * that will be replaced by first and second coordinate values.\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Formatted coordinate.\n * @api\n */\nexport function format(coordinate, template, fractionDigits) {\n if (coordinate) {\n return template\n .replace('{x}', coordinate[0].toFixed(fractionDigits))\n .replace('{y}', coordinate[1].toFixed(fractionDigits));\n }\n return '';\n}\n\n/**\n * @param {Coordinate} coordinate1 First coordinate.\n * @param {Coordinate} coordinate2 Second coordinate.\n * @return {boolean} The two coordinates are equal.\n */\nexport function equals(coordinate1, coordinate2) {\n let equals = true;\n for (let i = coordinate1.length - 1; i >= 0; --i) {\n if (coordinate1[i] != coordinate2[i]) {\n equals = false;\n break;\n }\n }\n return equals;\n}\n\n/**\n * Rotate `coordinate` by `angle`. `coordinate` is modified in place and\n * returned by the function.\n *\n * Example:\n *\n * import {rotate} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const rotateRadians = Math.PI / 2; // 90 degrees\n * rotate(coord, rotateRadians);\n * // coord is now [-47.983333, 7.85]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} angle Angle in radian.\n * @return {Coordinate} Coordinate.\n * @api\n */\nexport function rotate(coordinate, angle) {\n const cosAngle = Math.cos(angle);\n const sinAngle = Math.sin(angle);\n const x = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n const y = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n coordinate[0] = x;\n coordinate[1] = y;\n return coordinate;\n}\n\n/**\n * Scale `coordinate` by `scale`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {scale as scaleCoordinate} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const scale = 1.2;\n * scaleCoordinate(coord, scale);\n * // coord is now [9.42, 57.5799996]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} scale Scale factor.\n * @return {Coordinate} Coordinate.\n */\nexport function scale(coordinate, scale) {\n coordinate[0] *= scale;\n coordinate[1] *= scale;\n return coordinate;\n}\n\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Squared distance between coord1 and coord2.\n */\nexport function squaredDistance(coord1, coord2) {\n const dx = coord1[0] - coord2[0];\n const dy = coord1[1] - coord2[1];\n return dx * dx + dy * dy;\n}\n\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Distance between coord1 and coord2.\n */\nexport function distance(coord1, coord2) {\n return Math.sqrt(squaredDistance(coord1, coord2));\n}\n\n/**\n * Calculate the squared distance from a coordinate to a line segment.\n *\n * @param {Coordinate} coordinate Coordinate of the point.\n * @param {Array} segment Line segment (2\n * coordinates).\n * @return {number} Squared distance from the point to the line segment.\n */\nexport function squaredDistanceToSegment(coordinate, segment) {\n return squaredDistance(coordinate, closestOnSegment(coordinate, segment));\n}\n\n/**\n * Format a geographic coordinate with the hemisphere, degrees, minutes, and\n * seconds.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringHDMS} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const out = toStringHDMS(coord);\n * // out is now '47° 58′ 60″ N 7° 50′ 60″ E'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringHDMS} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const out = toStringHDMS(coord, 1);\n * // out is now '47° 58′ 60.0″ N 7° 50′ 60.0″ E'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Hemisphere, degrees, minutes and seconds.\n * @api\n */\nexport function toStringHDMS(coordinate, fractionDigits) {\n if (coordinate) {\n return (\n degreesToStringHDMS('NS', coordinate[1], fractionDigits) +\n ' ' +\n degreesToStringHDMS('EW', coordinate[0], fractionDigits)\n );\n }\n return '';\n}\n\n/**\n * Format a coordinate as a comma delimited string.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringXY} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const out = toStringXY(coord);\n * // out is now '8, 48'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringXY} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const out = toStringXY(coord, 1);\n * // out is now '7.8, 48.0'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} XY.\n * @api\n */\nexport function toStringXY(coordinate, fractionDigits) {\n return format(coordinate, '{x}, {y}', fractionDigits);\n}\n\n/**\n * Modifies the provided coordinate in-place to be within the real world\n * extent. The lower projection extent boundary is inclusive, the upper one\n * exclusive.\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {Coordinate} The coordinate within the real world extent.\n */\nexport function wrapX(coordinate, projection) {\n if (projection.canWrapX()) {\n const worldWidth = getWidth(projection.getExtent());\n const worldsAway = getWorldsAway(coordinate, projection, worldWidth);\n if (worldsAway) {\n coordinate[0] -= worldsAway * worldWidth;\n }\n }\n return coordinate;\n}\n/**\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {number} [sourceExtentWidth] Width of the source extent.\n * @return {number} Offset in world widths.\n */\nexport function getWorldsAway(coordinate, projection, sourceExtentWidth) {\n const projectionExtent = projection.getExtent();\n let worldsAway = 0;\n if (\n projection.canWrapX() &&\n (coordinate[0] < projectionExtent[0] || coordinate[0] > projectionExtent[2])\n ) {\n sourceExtentWidth = sourceExtentWidth || getWidth(projectionExtent);\n worldsAway = Math.floor(\n (coordinate[0] - projectionExtent[0]) / sourceExtentWidth\n );\n }\n return worldsAway;\n}\n","/**\n * @module ol/css\n */\n\n/**\n * @typedef {Object} FontParameters\n * @property {string} style Style.\n * @property {string} variant Variant.\n * @property {string} weight Weight.\n * @property {string} size Size.\n * @property {string} lineHeight LineHeight.\n * @property {string} family Family.\n * @property {Array} families Families.\n */\n\n/**\n * The CSS class for hidden feature.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_HIDDEN = 'ol-hidden';\n\n/**\n * The CSS class that we'll give the DOM elements to have them selectable.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_SELECTABLE = 'ol-selectable';\n\n/**\n * The CSS class that we'll give the DOM elements to have them unselectable.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_UNSELECTABLE = 'ol-unselectable';\n\n/**\n * The CSS class for unsupported feature.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_UNSUPPORTED = 'ol-unsupported';\n\n/**\n * The CSS class for controls.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_CONTROL = 'ol-control';\n\n/**\n * The CSS class that we'll give the DOM elements that are collapsed, i.e.\n * to those elements which usually can be expanded.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_COLLAPSED = 'ol-collapsed';\n\n/**\n * From https://stackoverflow.com/questions/10135697/regex-to-parse-any-css-font\n * @type {RegExp}\n */\nconst fontRegEx = new RegExp(\n [\n '^\\\\s*(?=(?:(?:[-a-z]+\\\\s*){0,2}(italic|oblique))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(small-caps))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)',\n '(?:(?:normal|\\\\1|\\\\2|\\\\3)\\\\s*){0,3}((?:xx?-)?',\n '(?:small|large)|medium|smaller|larger|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx]))',\n '(?:\\\\s*\\\\/\\\\s*(normal|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx])?))',\n '?\\\\s*([-,\\\\\"\\\\\\'\\\\sa-z]+?)\\\\s*$',\n ].join(''),\n 'i'\n);\nconst fontRegExMatchIndex = [\n 'style',\n 'variant',\n 'weight',\n 'size',\n 'lineHeight',\n 'family',\n];\n\n/**\n * Get the list of font families from a font spec. Note that this doesn't work\n * for font families that have commas in them.\n * @param {string} fontSpec The CSS font property.\n * @return {FontParameters|null} The font parameters (or null if the input spec is invalid).\n */\nexport const getFontParameters = function (fontSpec) {\n const match = fontSpec.match(fontRegEx);\n if (!match) {\n return null;\n }\n const style = /** @type {FontParameters} */ ({\n lineHeight: 'normal',\n size: '1.2em',\n style: 'normal',\n weight: 'normal',\n variant: 'normal',\n });\n for (let i = 0, ii = fontRegExMatchIndex.length; i < ii; ++i) {\n const value = match[i + 1];\n if (value !== undefined) {\n style[fontRegExMatchIndex[i]] = value;\n }\n }\n style.families = style.family.split(/,\\s?/);\n return style;\n};\n","import {WORKER_OFFSCREEN_CANVAS} from './has.js';\n\n/**\n * @module ol/dom\n */\n\n//FIXME Move this function to the canvas module\n/**\n * Create an html canvas element and returns its 2d context.\n * @param {number} [width] Canvas width.\n * @param {number} [height] Canvas height.\n * @param {Array} [canvasPool] Canvas pool to take existing canvas from.\n * @param {CanvasRenderingContext2DSettings} [settings] CanvasRenderingContext2DSettings\n * @return {CanvasRenderingContext2D} The context.\n */\nexport function createCanvasContext2D(width, height, canvasPool, settings) {\n /** @type {HTMLCanvasElement|OffscreenCanvas} */\n let canvas;\n if (canvasPool && canvasPool.length) {\n canvas = canvasPool.shift();\n } else if (WORKER_OFFSCREEN_CANVAS) {\n canvas = new OffscreenCanvas(width || 300, height || 300);\n } else {\n canvas = document.createElement('canvas');\n }\n if (width) {\n canvas.width = width;\n }\n if (height) {\n canvas.height = height;\n }\n //FIXME Allow OffscreenCanvasRenderingContext2D as return type\n return /** @type {CanvasRenderingContext2D} */ (\n canvas.getContext('2d', settings)\n );\n}\n\n/**\n * Releases canvas memory to avoid exceeding memory limits in Safari.\n * See https://pqina.nl/blog/total-canvas-memory-use-exceeds-the-maximum-limit/\n * @param {CanvasRenderingContext2D} context Context.\n */\nexport function releaseCanvas(context) {\n const canvas = context.canvas;\n canvas.width = 1;\n canvas.height = 1;\n context.clearRect(0, 0, 1, 1);\n}\n\n/**\n * Get the current computed width for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerWidth(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The width.\n */\nexport function outerWidth(element) {\n let width = element.offsetWidth;\n const style = getComputedStyle(element);\n width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);\n\n return width;\n}\n\n/**\n * Get the current computed height for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerHeight(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The height.\n */\nexport function outerHeight(element) {\n let height = element.offsetHeight;\n const style = getComputedStyle(element);\n height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);\n\n return height;\n}\n\n/**\n * @param {Node} newNode Node to replace old node\n * @param {Node} oldNode The node to be replaced\n */\nexport function replaceNode(newNode, oldNode) {\n const parent = oldNode.parentNode;\n if (parent) {\n parent.replaceChild(newNode, oldNode);\n }\n}\n\n/**\n * @param {Node} node The node to remove.\n * @return {Node|null} The node that was removed or null.\n */\nexport function removeNode(node) {\n return node && node.parentNode ? node.parentNode.removeChild(node) : null;\n}\n\n/**\n * @param {Node} node The node to remove the children from.\n */\nexport function removeChildren(node) {\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n}\n\n/**\n * Transform the children of a parent node so they match the\n * provided list of children. This function aims to efficiently\n * remove, add, and reorder child nodes while maintaining a simple\n * implementation (it is not guaranteed to minimize DOM operations).\n * @param {Node} node The parent node whose children need reworking.\n * @param {Array} children The desired children.\n */\nexport function replaceChildren(node, children) {\n const oldChildren = node.childNodes;\n\n for (let i = 0; true; ++i) {\n const oldChild = oldChildren[i];\n const newChild = children[i];\n\n // check if our work is done\n if (!oldChild && !newChild) {\n break;\n }\n\n // check if children match\n if (oldChild === newChild) {\n continue;\n }\n\n // check if a new child needs to be added\n if (!oldChild) {\n node.appendChild(newChild);\n continue;\n }\n\n // check if an old child needs to be removed\n if (!newChild) {\n node.removeChild(oldChild);\n --i;\n continue;\n }\n\n // reorder\n node.insertBefore(newChild, oldChild);\n }\n}\n","/**\n * @module ol/easing\n */\n\n/**\n * Start slow and speed up.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeIn(t) {\n return Math.pow(t, 3);\n}\n\n/**\n * Start fast and slow down.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeOut(t) {\n return 1 - easeIn(1 - t);\n}\n\n/**\n * Start slow, speed up, and then slow down again.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function inAndOut(t) {\n return 3 * t * t - 2 * t * t * t;\n}\n\n/**\n * Maintain a constant speed over time.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function linear(t) {\n return t;\n}\n\n/**\n * Start slow, speed up, and at the very end slow down again. This has the\n * same general behavior as {@link module:ol/easing.inAndOut}, but the final\n * slowdown is delayed.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function upAndDown(t) {\n if (t < 0.5) {\n return inAndOut(2 * t);\n }\n return 1 - inAndOut(2 * (t - 0.5));\n}\n","/**\n * @module ol/events\n */\nimport {clear} from './obj.js';\n\n/**\n * Key to use with {@link module:ol/Observable.unByKey}.\n * @typedef {Object} EventsKey\n * @property {ListenerFunction} listener Listener.\n * @property {import(\"./events/Target.js\").EventTargetLike} target Target.\n * @property {string} type Type.\n * @api\n */\n\n/**\n * Listener function. This function is called with an event object as argument.\n * When the function returns `false`, event propagation will stop.\n *\n * @typedef {function((Event|import(\"./events/Event.js\").default)): (void|boolean)} ListenerFunction\n * @api\n */\n\n/**\n * @typedef {Object} ListenerObject\n * @property {ListenerFunction} handleEvent HandleEvent listener function.\n */\n\n/**\n * @typedef {ListenerFunction|ListenerObject} Listener\n */\n\n/**\n * Registers an event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` to a `this` object, and returns\n * a key for use with {@link module:ol/events.unlistenByKey}.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object} [thisArg] Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @param {boolean} [once] If true, add the listener as one-off listener.\n * @return {EventsKey} Unique key for the listener.\n */\nexport function listen(target, type, listener, thisArg, once) {\n if (thisArg && thisArg !== target) {\n listener = listener.bind(thisArg);\n }\n if (once) {\n const originalListener = listener;\n listener = function () {\n target.removeEventListener(type, listener);\n originalListener.apply(this, arguments);\n };\n }\n const eventsKey = {\n target: target,\n type: type,\n listener: listener,\n };\n target.addEventListener(type, listener);\n return eventsKey;\n}\n\n/**\n * Registers a one-off event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` as self-unregistering listener\n * to a `this` object, and returns a key for use with\n * {@link module:ol/events.unlistenByKey} in case the listener needs to be\n * unregistered before it is called.\n *\n * When {@link module:ol/events.listen} is called with the same arguments after this\n * function, the self-unregistering listener will be turned into a permanent\n * listener.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object} [thisArg] Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @return {EventsKey} Key for unlistenByKey.\n */\nexport function listenOnce(target, type, listener, thisArg) {\n return listen(target, type, listener, thisArg, true);\n}\n\n/**\n * Unregisters event listeners on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * The argument passed to this function is the key returned from\n * {@link module:ol/events.listen} or {@link module:ol/events.listenOnce}.\n *\n * @param {EventsKey} key The key.\n */\nexport function unlistenByKey(key) {\n if (key && key.target) {\n key.target.removeEventListener(key.type, key.listener);\n clear(key);\n }\n}\n","/**\n * @module ol/events/Event\n */\n\n/**\n * @classdesc\n * Stripped down implementation of the W3C DOM Level 2 Event interface.\n * See https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-interface.\n *\n * This implementation only provides `type` and `target` properties, and\n * `stopPropagation` and `preventDefault` methods. It is meant as base class\n * for higher level events defined in the library, and works with\n * {@link module:ol/events/Target~Target}.\n */\nclass BaseEvent {\n /**\n * @param {string} type Type.\n */\n constructor(type) {\n /**\n * @type {boolean}\n */\n this.propagationStopped;\n\n /**\n * @type {boolean}\n */\n this.defaultPrevented;\n\n /**\n * The event type.\n * @type {string}\n * @api\n */\n this.type = type;\n\n /**\n * The event target.\n * @type {Object}\n * @api\n */\n this.target = null;\n }\n\n /**\n * Prevent default. This means that no emulated `click`, `singleclick` or `doubleclick` events\n * will be fired.\n * @api\n */\n preventDefault() {\n this.defaultPrevented = true;\n }\n\n /**\n * Stop event propagation.\n * @api\n */\n stopPropagation() {\n this.propagationStopped = true;\n }\n}\n\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function stopPropagation(evt) {\n evt.stopPropagation();\n}\n\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function preventDefault(evt) {\n evt.preventDefault();\n}\n\nexport default BaseEvent;\n","/**\n * @module ol/events/EventType\n */\n\n/**\n * @enum {string}\n * @const\n */\nexport default {\n /**\n * Generic change event. Triggered when the revision counter is increased.\n * @event module:ol/events/Event~BaseEvent#change\n * @api\n */\n CHANGE: 'change',\n\n /**\n * Generic error event. Triggered when an error occurs.\n * @event module:ol/events/Event~BaseEvent#error\n * @api\n */\n ERROR: 'error',\n\n BLUR: 'blur',\n CLEAR: 'clear',\n CONTEXTMENU: 'contextmenu',\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n DRAGENTER: 'dragenter',\n DRAGOVER: 'dragover',\n DROP: 'drop',\n FOCUS: 'focus',\n KEYDOWN: 'keydown',\n KEYPRESS: 'keypress',\n LOAD: 'load',\n RESIZE: 'resize',\n TOUCHMOVE: 'touchmove',\n WHEEL: 'wheel',\n};\n","/**\n * @module ol/events/Target\n */\nimport Disposable from '../Disposable.js';\nimport Event from './Event.js';\nimport {VOID} from '../functions.js';\nimport {clear} from '../obj.js';\n\n/**\n * @typedef {EventTarget|Target} EventTargetLike\n */\n\n/**\n * @classdesc\n * A simplified implementation of the W3C DOM Level 2 EventTarget interface.\n * See https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.\n *\n * There are two important simplifications compared to the specification:\n *\n * 1. The handling of `useCapture` in `addEventListener` and\n * `removeEventListener`. There is no real capture model.\n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.\n * There is no event target hierarchy. When a listener calls\n * `stopPropagation` or `preventDefault` on an event object, it means that no\n * more listeners after this one will be called. Same as when the listener\n * returns false.\n */\nclass Target extends Disposable {\n /**\n * @param {*} [target] Default event target for dispatched events.\n */\n constructor(target) {\n super();\n\n /**\n * @private\n * @type {*}\n */\n this.eventTarget_ = target;\n\n /**\n * @private\n * @type {Object}\n */\n this.pendingRemovals_ = null;\n\n /**\n * @private\n * @type {Object}\n */\n this.dispatching_ = null;\n\n /**\n * @private\n * @type {Object>}\n */\n this.listeners_ = null;\n }\n\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n addEventListener(type, listener) {\n if (!type || !listener) {\n return;\n }\n const listeners = this.listeners_ || (this.listeners_ = {});\n const listenersForType = listeners[type] || (listeners[type] = []);\n if (!listenersForType.includes(listener)) {\n listenersForType.push(listener);\n }\n }\n\n /**\n * Dispatches an event and calls all listeners listening for events\n * of this type. The event parameter can either be a string or an\n * Object with a `type` property.\n *\n * @param {import(\"./Event.js\").default|string} event Event object.\n * @return {boolean|undefined} `false` if anyone called preventDefault on the\n * event object or if any of the listeners returned false.\n * @api\n */\n dispatchEvent(event) {\n const isString = typeof event === 'string';\n const type = isString ? event : event.type;\n const listeners = this.listeners_ && this.listeners_[type];\n if (!listeners) {\n return;\n }\n\n const evt = isString ? new Event(event) : /** @type {Event} */ (event);\n if (!evt.target) {\n evt.target = this.eventTarget_ || this;\n }\n const dispatching = this.dispatching_ || (this.dispatching_ = {});\n const pendingRemovals =\n this.pendingRemovals_ || (this.pendingRemovals_ = {});\n if (!(type in dispatching)) {\n dispatching[type] = 0;\n pendingRemovals[type] = 0;\n }\n ++dispatching[type];\n let propagate;\n for (let i = 0, ii = listeners.length; i < ii; ++i) {\n if ('handleEvent' in listeners[i]) {\n propagate = /** @type {import(\"../events.js\").ListenerObject} */ (\n listeners[i]\n ).handleEvent(evt);\n } else {\n propagate = /** @type {import(\"../events.js\").ListenerFunction} */ (\n listeners[i]\n ).call(this, evt);\n }\n if (propagate === false || evt.propagationStopped) {\n propagate = false;\n break;\n }\n }\n if (--dispatching[type] === 0) {\n let pr = pendingRemovals[type];\n delete pendingRemovals[type];\n while (pr--) {\n this.removeEventListener(type, VOID);\n }\n delete dispatching[type];\n }\n return propagate;\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n this.listeners_ && clear(this.listeners_);\n }\n\n /**\n * Get the listeners for a specified event type. Listeners are returned in the\n * order that they will be called in.\n *\n * @param {string} type Type.\n * @return {Array|undefined} Listeners.\n */\n getListeners(type) {\n return (this.listeners_ && this.listeners_[type]) || undefined;\n }\n\n /**\n * @param {string} [type] Type. If not provided,\n * `true` will be returned if this event target has any listeners.\n * @return {boolean} Has listeners.\n */\n hasListener(type) {\n if (!this.listeners_) {\n return false;\n }\n return type\n ? type in this.listeners_\n : Object.keys(this.listeners_).length > 0;\n }\n\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n removeEventListener(type, listener) {\n const listeners = this.listeners_ && this.listeners_[type];\n if (listeners) {\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n if (this.pendingRemovals_ && type in this.pendingRemovals_) {\n // make listener a no-op, and remove later in #dispatchEvent()\n listeners[index] = VOID;\n ++this.pendingRemovals_[type];\n } else {\n listeners.splice(index, 1);\n if (listeners.length === 0) {\n delete this.listeners_[type];\n }\n }\n }\n }\n }\n}\n\nexport default Target;\n","/**\n * @module ol/extent\n */\nimport Relationship from './extent/Relationship.js';\nimport {assert} from './asserts.js';\n\n/**\n * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.\n * @typedef {Array} Extent\n * @api\n */\n\n/**\n * Extent corner.\n * @typedef {'bottom-left' | 'bottom-right' | 'top-left' | 'top-right'} Corner\n */\n\n/**\n * Build an extent that includes all given coordinates.\n *\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Bounding extent.\n * @api\n */\nexport function boundingExtent(coordinates) {\n const extent = createEmpty();\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n\n/**\n * @param {Array} xs Xs.\n * @param {Array} ys Ys.\n * @param {Extent} [dest] Destination extent.\n * @private\n * @return {Extent} Extent.\n */\nfunction _boundingExtentXYs(xs, ys, dest) {\n const minX = Math.min.apply(null, xs);\n const minY = Math.min.apply(null, ys);\n const maxX = Math.max.apply(null, xs);\n const maxY = Math.max.apply(null, ys);\n return createOrUpdate(minX, minY, maxX, maxY, dest);\n}\n\n/**\n * Return extent increased by the provided value.\n * @param {Extent} extent Extent.\n * @param {number} value The amount by which the extent should be buffered.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n * @api\n */\nexport function buffer(extent, value, dest) {\n if (dest) {\n dest[0] = extent[0] - value;\n dest[1] = extent[1] - value;\n dest[2] = extent[2] + value;\n dest[3] = extent[3] + value;\n return dest;\n }\n return [\n extent[0] - value,\n extent[1] - value,\n extent[2] + value,\n extent[3] + value,\n ];\n}\n\n/**\n * Creates a clone of an extent.\n *\n * @param {Extent} extent Extent to clone.\n * @param {Extent} [dest] Extent.\n * @return {Extent} The clone.\n */\nexport function clone(extent, dest) {\n if (dest) {\n dest[0] = extent[0];\n dest[1] = extent[1];\n dest[2] = extent[2];\n dest[3] = extent[3];\n return dest;\n }\n return extent.slice();\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {number} Closest squared distance.\n */\nexport function closestSquaredDistanceXY(extent, x, y) {\n let dx, dy;\n if (x < extent[0]) {\n dx = extent[0] - x;\n } else if (extent[2] < x) {\n dx = x - extent[2];\n } else {\n dx = 0;\n }\n if (y < extent[1]) {\n dy = extent[1] - y;\n } else if (extent[3] < y) {\n dy = y - extent[3];\n } else {\n dy = 0;\n }\n return dx * dx + dy * dy;\n}\n\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} The coordinate is contained in the extent.\n * @api\n */\nexport function containsCoordinate(extent, coordinate) {\n return containsXY(extent, coordinate[0], coordinate[1]);\n}\n\n/**\n * Check if one extent contains another.\n *\n * An extent is deemed contained if it lies completely within the other extent,\n * including if they share one or more edges.\n *\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The second extent is contained by or on the edge of the\n * first.\n * @api\n */\nexport function containsExtent(extent1, extent2) {\n return (\n extent1[0] <= extent2[0] &&\n extent2[2] <= extent1[2] &&\n extent1[1] <= extent2[1] &&\n extent2[3] <= extent1[3]\n );\n}\n\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {number} x X coordinate.\n * @param {number} y Y coordinate.\n * @return {boolean} The x, y values are contained in the extent.\n * @api\n */\nexport function containsXY(extent, x, y) {\n return extent[0] <= x && x <= extent[2] && extent[1] <= y && y <= extent[3];\n}\n\n/**\n * Get the relationship between a coordinate and extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate The coordinate.\n * @return {import(\"./extent/Relationship.js\").default} The relationship (bitwise compare with\n * import(\"./extent/Relationship.js\").Relationship).\n */\nexport function coordinateRelationship(extent, coordinate) {\n const minX = extent[0];\n const minY = extent[1];\n const maxX = extent[2];\n const maxY = extent[3];\n const x = coordinate[0];\n const y = coordinate[1];\n let relationship = Relationship.UNKNOWN;\n if (x < minX) {\n relationship = relationship | Relationship.LEFT;\n } else if (x > maxX) {\n relationship = relationship | Relationship.RIGHT;\n }\n if (y < minY) {\n relationship = relationship | Relationship.BELOW;\n } else if (y > maxY) {\n relationship = relationship | Relationship.ABOVE;\n }\n if (relationship === Relationship.UNKNOWN) {\n relationship = Relationship.INTERSECTING;\n }\n return relationship;\n}\n\n/**\n * Create an empty extent.\n * @return {Extent} Empty extent.\n * @api\n */\nexport function createEmpty() {\n return [Infinity, Infinity, -Infinity, -Infinity];\n}\n\n/**\n * Create a new extent or update the provided extent.\n * @param {number} minX Minimum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxX Maximum X.\n * @param {number} maxY Maximum Y.\n * @param {Extent} [dest] Destination extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdate(minX, minY, maxX, maxY, dest) {\n if (dest) {\n dest[0] = minX;\n dest[1] = minY;\n dest[2] = maxX;\n dest[3] = maxY;\n return dest;\n }\n return [minX, minY, maxX, maxY];\n}\n\n/**\n * Create a new empty extent or make the provided one empty.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateEmpty(dest) {\n return createOrUpdate(Infinity, Infinity, -Infinity, -Infinity, dest);\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinate(coordinate, dest) {\n const x = coordinate[0];\n const y = coordinate[1];\n return createOrUpdate(x, y, x, y, dest);\n}\n\n/**\n * @param {Array} coordinates Coordinates.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinates(coordinates, dest) {\n const extent = createOrUpdateEmpty(dest);\n return extendCoordinates(extent, coordinates);\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromFlatCoordinates(\n flatCoordinates,\n offset,\n end,\n stride,\n dest\n) {\n const extent = createOrUpdateEmpty(dest);\n return extendFlatCoordinates(extent, flatCoordinates, offset, end, stride);\n}\n\n/**\n * @param {Array>} rings Rings.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromRings(rings, dest) {\n const extent = createOrUpdateEmpty(dest);\n return extendRings(extent, rings);\n}\n\n/**\n * Determine if two extents are equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The two extents are equivalent.\n * @api\n */\nexport function equals(extent1, extent2) {\n return (\n extent1[0] == extent2[0] &&\n extent1[2] == extent2[2] &&\n extent1[1] == extent2[1] &&\n extent1[3] == extent2[3]\n );\n}\n\n/**\n * Determine if two extents are approximately equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {number} tolerance Tolerance in extent coordinate units.\n * @return {boolean} The two extents differ by less than the tolerance.\n */\nexport function approximatelyEquals(extent1, extent2, tolerance) {\n return (\n Math.abs(extent1[0] - extent2[0]) < tolerance &&\n Math.abs(extent1[2] - extent2[2]) < tolerance &&\n Math.abs(extent1[1] - extent2[1]) < tolerance &&\n Math.abs(extent1[3] - extent2[3]) < tolerance\n );\n}\n\n/**\n * Modify an extent to include another extent.\n * @param {Extent} extent1 The extent to be modified.\n * @param {Extent} extent2 The extent that will be included in the first.\n * @return {Extent} A reference to the first (extended) extent.\n * @api\n */\nexport function extend(extent1, extent2) {\n if (extent2[0] < extent1[0]) {\n extent1[0] = extent2[0];\n }\n if (extent2[2] > extent1[2]) {\n extent1[2] = extent2[2];\n }\n if (extent2[1] < extent1[1]) {\n extent1[1] = extent2[1];\n }\n if (extent2[3] > extent1[3]) {\n extent1[3] = extent2[3];\n }\n return extent1;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n */\nexport function extendCoordinate(extent, coordinate) {\n if (coordinate[0] < extent[0]) {\n extent[0] = coordinate[0];\n }\n if (coordinate[0] > extent[2]) {\n extent[2] = coordinate[0];\n }\n if (coordinate[1] < extent[1]) {\n extent[1] = coordinate[1];\n }\n if (coordinate[1] > extent[3]) {\n extent[3] = coordinate[1];\n }\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Extent.\n */\nexport function extendCoordinates(extent, coordinates) {\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {Extent} Extent.\n */\nexport function extendFlatCoordinates(\n extent,\n flatCoordinates,\n offset,\n end,\n stride\n) {\n for (; offset < end; offset += stride) {\n extendXY(extent, flatCoordinates[offset], flatCoordinates[offset + 1]);\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array>} rings Rings.\n * @return {Extent} Extent.\n */\nexport function extendRings(extent, rings) {\n for (let i = 0, ii = rings.length; i < ii; ++i) {\n extendCoordinates(extent, rings[i]);\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n */\nexport function extendXY(extent, x, y) {\n extent[0] = Math.min(extent[0], x);\n extent[1] = Math.min(extent[1], y);\n extent[2] = Math.max(extent[2], x);\n extent[3] = Math.max(extent[3], y);\n}\n\n/**\n * This function calls `callback` for each corner of the extent. If the\n * callback returns a truthy value the function returns that value\n * immediately. Otherwise the function returns `false`.\n * @param {Extent} extent Extent.\n * @param {function(import(\"./coordinate.js\").Coordinate): S} callback Callback.\n * @return {S|boolean} Value.\n * @template S\n */\nexport function forEachCorner(extent, callback) {\n let val;\n val = callback(getBottomLeft(extent));\n if (val) {\n return val;\n }\n val = callback(getBottomRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopLeft(extent));\n if (val) {\n return val;\n }\n return false;\n}\n\n/**\n * Get the size of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Area.\n * @api\n */\nexport function getArea(extent) {\n let area = 0;\n if (!isEmpty(extent)) {\n area = getWidth(extent) * getHeight(extent);\n }\n return area;\n}\n\n/**\n * Get the bottom left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom left coordinate.\n * @api\n */\nexport function getBottomLeft(extent) {\n return [extent[0], extent[1]];\n}\n\n/**\n * Get the bottom right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom right coordinate.\n * @api\n */\nexport function getBottomRight(extent) {\n return [extent[2], extent[1]];\n}\n\n/**\n * Get the center coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Center.\n * @api\n */\nexport function getCenter(extent) {\n return [(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2];\n}\n\n/**\n * Get a corner coordinate of an extent.\n * @param {Extent} extent Extent.\n * @param {Corner} corner Corner.\n * @return {import(\"./coordinate.js\").Coordinate} Corner coordinate.\n */\nexport function getCorner(extent, corner) {\n let coordinate;\n if (corner === 'bottom-left') {\n coordinate = getBottomLeft(extent);\n } else if (corner === 'bottom-right') {\n coordinate = getBottomRight(extent);\n } else if (corner === 'top-left') {\n coordinate = getTopLeft(extent);\n } else if (corner === 'top-right') {\n coordinate = getTopRight(extent);\n } else {\n assert(false, 13); // Invalid corner\n }\n return coordinate;\n}\n\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Enlarged area.\n */\nexport function getEnlargedArea(extent1, extent2) {\n const minX = Math.min(extent1[0], extent2[0]);\n const minY = Math.min(extent1[1], extent2[1]);\n const maxX = Math.max(extent1[2], extent2[2]);\n const maxY = Math.max(extent1[3], extent2[3]);\n return (maxX - minX) * (maxY - minY);\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @param {Extent} [dest] Destination extent.\n * @return {Extent} Extent.\n */\nexport function getForViewAndSize(center, resolution, rotation, size, dest) {\n const [x0, y0, x1, y1, x2, y2, x3, y3] = getRotatedViewport(\n center,\n resolution,\n rotation,\n size\n );\n return createOrUpdate(\n Math.min(x0, x1, x2, x3),\n Math.min(y0, y1, y2, y3),\n Math.max(x0, x1, x2, x3),\n Math.max(y0, y1, y2, y3),\n dest\n );\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @return {Array} Linear ring representing the viewport.\n */\nexport function getRotatedViewport(center, resolution, rotation, size) {\n const dx = (resolution * size[0]) / 2;\n const dy = (resolution * size[1]) / 2;\n const cosRotation = Math.cos(rotation);\n const sinRotation = Math.sin(rotation);\n const xCos = dx * cosRotation;\n const xSin = dx * sinRotation;\n const yCos = dy * cosRotation;\n const ySin = dy * sinRotation;\n const x = center[0];\n const y = center[1];\n return [\n x - xCos + ySin,\n y - xSin - yCos,\n x - xCos - ySin,\n y - xSin + yCos,\n x + xCos - ySin,\n y + xSin + yCos,\n x + xCos + ySin,\n y + xSin - yCos,\n x - xCos + ySin,\n y - xSin - yCos,\n ];\n}\n\n/**\n * Get the height of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Height.\n * @api\n */\nexport function getHeight(extent) {\n return extent[3] - extent[1];\n}\n\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Intersection area.\n */\nexport function getIntersectionArea(extent1, extent2) {\n const intersection = getIntersection(extent1, extent2);\n return getArea(intersection);\n}\n\n/**\n * Get the intersection of two extents.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {Extent} [dest] Optional extent to populate with intersection.\n * @return {Extent} Intersecting extent.\n * @api\n */\nexport function getIntersection(extent1, extent2, dest) {\n const intersection = dest ? dest : createEmpty();\n if (intersects(extent1, extent2)) {\n if (extent1[0] > extent2[0]) {\n intersection[0] = extent1[0];\n } else {\n intersection[0] = extent2[0];\n }\n if (extent1[1] > extent2[1]) {\n intersection[1] = extent1[1];\n } else {\n intersection[1] = extent2[1];\n }\n if (extent1[2] < extent2[2]) {\n intersection[2] = extent1[2];\n } else {\n intersection[2] = extent2[2];\n }\n if (extent1[3] < extent2[3]) {\n intersection[3] = extent1[3];\n } else {\n intersection[3] = extent2[3];\n }\n } else {\n createOrUpdateEmpty(intersection);\n }\n return intersection;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @return {number} Margin.\n */\nexport function getMargin(extent) {\n return getWidth(extent) + getHeight(extent);\n}\n\n/**\n * Get the size (width, height) of an extent.\n * @param {Extent} extent The extent.\n * @return {import(\"./size.js\").Size} The extent size.\n * @api\n */\nexport function getSize(extent) {\n return [extent[2] - extent[0], extent[3] - extent[1]];\n}\n\n/**\n * Get the top left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top left coordinate.\n * @api\n */\nexport function getTopLeft(extent) {\n return [extent[0], extent[3]];\n}\n\n/**\n * Get the top right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top right coordinate.\n * @api\n */\nexport function getTopRight(extent) {\n return [extent[2], extent[3]];\n}\n\n/**\n * Get the width of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Width.\n * @api\n */\nexport function getWidth(extent) {\n return extent[2] - extent[0];\n}\n\n/**\n * Determine if one extent intersects another.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent.\n * @return {boolean} The two extents intersect.\n * @api\n */\nexport function intersects(extent1, extent2) {\n return (\n extent1[0] <= extent2[2] &&\n extent1[2] >= extent2[0] &&\n extent1[1] <= extent2[3] &&\n extent1[3] >= extent2[1]\n );\n}\n\n/**\n * Determine if an extent is empty.\n * @param {Extent} extent Extent.\n * @return {boolean} Is empty.\n * @api\n */\nexport function isEmpty(extent) {\n return extent[2] < extent[0] || extent[3] < extent[1];\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function returnOrUpdate(extent, dest) {\n if (dest) {\n dest[0] = extent[0];\n dest[1] = extent[1];\n dest[2] = extent[2];\n dest[3] = extent[3];\n return dest;\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} value Value.\n */\nexport function scaleFromCenter(extent, value) {\n const deltaX = ((extent[2] - extent[0]) / 2) * (value - 1);\n const deltaY = ((extent[3] - extent[1]) / 2) * (value - 1);\n extent[0] -= deltaX;\n extent[2] += deltaX;\n extent[1] -= deltaY;\n extent[3] += deltaY;\n}\n\n/**\n * Determine if the segment between two coordinates intersects (crosses,\n * touches, or is contained by) the provided extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} start Segment start coordinate.\n * @param {import(\"./coordinate.js\").Coordinate} end Segment end coordinate.\n * @return {boolean} The segment intersects the extent.\n */\nexport function intersectsSegment(extent, start, end) {\n let intersects = false;\n const startRel = coordinateRelationship(extent, start);\n const endRel = coordinateRelationship(extent, end);\n if (\n startRel === Relationship.INTERSECTING ||\n endRel === Relationship.INTERSECTING\n ) {\n intersects = true;\n } else {\n const minX = extent[0];\n const minY = extent[1];\n const maxX = extent[2];\n const maxY = extent[3];\n const startX = start[0];\n const startY = start[1];\n const endX = end[0];\n const endY = end[1];\n const slope = (endY - startY) / (endX - startX);\n let x, y;\n if (!!(endRel & Relationship.ABOVE) && !(startRel & Relationship.ABOVE)) {\n // potentially intersects top\n x = endX - (endY - maxY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (\n !intersects &&\n !!(endRel & Relationship.RIGHT) &&\n !(startRel & Relationship.RIGHT)\n ) {\n // potentially intersects right\n y = endY - (endX - maxX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n if (\n !intersects &&\n !!(endRel & Relationship.BELOW) &&\n !(startRel & Relationship.BELOW)\n ) {\n // potentially intersects bottom\n x = endX - (endY - minY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (\n !intersects &&\n !!(endRel & Relationship.LEFT) &&\n !(startRel & Relationship.LEFT)\n ) {\n // potentially intersects left\n y = endY - (endX - minX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n }\n return intersects;\n}\n\n/**\n * Apply a transform function to the extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./proj.js\").TransformFunction} transformFn Transform function.\n * Called with `[minX, minY, maxX, maxY]` extent coordinates.\n * @param {Extent} [dest] Destination extent.\n * @param {number} [stops] Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {Extent} Extent.\n * @api\n */\nexport function applyTransform(extent, transformFn, dest, stops) {\n if (isEmpty(extent)) {\n return createOrUpdateEmpty(dest);\n }\n let coordinates = [];\n if (stops > 1) {\n const width = extent[2] - extent[0];\n const height = extent[3] - extent[1];\n for (let i = 0; i < stops; ++i) {\n coordinates.push(\n extent[0] + (width * i) / stops,\n extent[1],\n extent[2],\n extent[1] + (height * i) / stops,\n extent[2] - (width * i) / stops,\n extent[3],\n extent[0],\n extent[3] - (height * i) / stops\n );\n }\n } else {\n coordinates = [\n extent[0],\n extent[1],\n extent[2],\n extent[1],\n extent[2],\n extent[3],\n extent[0],\n extent[3],\n ];\n }\n transformFn(coordinates, coordinates, 2);\n const xs = [];\n const ys = [];\n for (let i = 0, l = coordinates.length; i < l; i += 2) {\n xs.push(coordinates[i]);\n ys.push(coordinates[i + 1]);\n }\n return _boundingExtentXYs(xs, ys, dest);\n}\n\n/**\n * Modifies the provided extent in-place to be within the real world\n * extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Extent} The extent within the real world extent.\n */\nexport function wrapX(extent, projection) {\n const projectionExtent = projection.getExtent();\n const center = getCenter(extent);\n if (\n projection.canWrapX() &&\n (center[0] < projectionExtent[0] || center[0] >= projectionExtent[2])\n ) {\n const worldWidth = getWidth(projectionExtent);\n const worldsAway = Math.floor(\n (center[0] - projectionExtent[0]) / worldWidth\n );\n const offset = worldsAway * worldWidth;\n extent[0] -= offset;\n extent[2] -= offset;\n }\n return extent;\n}\n\n/**\n * Fits the extent to the real world\n *\n * If the extent does not cross the anti meridian, this will return the extent in an array\n * If the extent crosses the anti meridian, the extent will be sliced, so each part fits within the\n * real world\n *\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Array} The extent within the real world extent.\n */\nexport function wrapAndSliceX(extent, projection) {\n if (projection.canWrapX()) {\n const projectionExtent = projection.getExtent();\n\n if (!isFinite(extent[0]) || !isFinite(extent[2])) {\n return [[projectionExtent[0], extent[1], projectionExtent[2], extent[3]]];\n }\n\n wrapX(extent, projection);\n const worldWidth = getWidth(projectionExtent);\n\n if (getWidth(extent) > worldWidth) {\n // the extent wraps around on itself\n return [[projectionExtent[0], extent[1], projectionExtent[2], extent[3]]];\n }\n if (extent[0] < projectionExtent[0]) {\n // the extent crosses the anti meridian, so it needs to be sliced\n return [\n [extent[0] + worldWidth, extent[1], projectionExtent[2], extent[3]],\n [projectionExtent[0], extent[1], extent[2], extent[3]],\n ];\n }\n if (extent[2] > projectionExtent[2]) {\n // the extent crosses the anti meridian, so it needs to be sliced\n return [\n [extent[0], extent[1], projectionExtent[2], extent[3]],\n [projectionExtent[0], extent[1], extent[2] - worldWidth, extent[3]],\n ];\n }\n }\n\n return [extent];\n}\n","/**\n * @module ol/extent/Relationship\n */\n\n/**\n * Relationship to an extent.\n * @enum {number}\n */\nexport default {\n UNKNOWN: 0,\n INTERSECTING: 1,\n ABOVE: 2,\n RIGHT: 4,\n BELOW: 8,\n LEFT: 16,\n};\n","/**\n * @module ol/featureloader\n */\nimport {VOID} from './functions.js';\n\n/**\n *\n * @type {boolean}\n * @private\n */\nlet withCredentials = false;\n\n/**\n * {@link module:ol/source/Vector~VectorSource} sources use a function of this type to\n * load features.\n *\n * This function takes up to 5 arguments. These are an {@link module:ol/extent~Extent} representing\n * the area to be loaded, a `{number}` representing the resolution (map units per pixel), an\n * {@link module:ol/proj/Projection~Projection} for the projection, an optional success callback that should get\n * the loaded features passed as an argument and an optional failure callback with no arguments. If\n * the callbacks are not used, the corresponding vector source will not fire `'featuresloadend'` and\n * `'featuresloaderror'` events. `this` within the function is bound to the\n * {@link module:ol/source/Vector~VectorSource} it's called from.\n *\n * The function is responsible for loading the features and adding them to the\n * source.\n * @typedef {function(this:(import(\"./source/Vector\").default|import(\"./VectorTile.js\").default),\n * import(\"./extent.js\").Extent,\n * number,\n * import(\"./proj/Projection.js\").default,\n * function(Array): void=,\n * function(): void=): void} FeatureLoader\n * @api\n */\n\n/**\n * {@link module:ol/source/Vector~VectorSource} sources use a function of this type to\n * get the url to load features from.\n *\n * This function takes an {@link module:ol/extent~Extent} representing the area\n * to be loaded, a `{number}` representing the resolution (map units per pixel)\n * and an {@link module:ol/proj/Projection~Projection} for the projection as\n * arguments and returns a `{string}` representing the URL.\n * @typedef {function(import(\"./extent.js\").Extent, number, import(\"./proj/Projection.js\").default): string} FeatureUrlFunction\n * @api\n */\n\n/**\n * @param {string|FeatureUrlFunction} url Feature URL service.\n * @param {import(\"./format/Feature.js\").default} format Feature format.\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {function(Array, import(\"./proj/Projection.js\").default): void} success Success\n * Function called with the loaded features and optionally with the data projection.\n * @param {function(): void} failure Failure\n * Function called when loading failed.\n */\nexport function loadFeaturesXhr(\n url,\n format,\n extent,\n resolution,\n projection,\n success,\n failure\n) {\n const xhr = new XMLHttpRequest();\n xhr.open(\n 'GET',\n typeof url === 'function' ? url(extent, resolution, projection) : url,\n true\n );\n if (format.getType() == 'arraybuffer') {\n xhr.responseType = 'arraybuffer';\n }\n xhr.withCredentials = withCredentials;\n /**\n * @param {Event} event Event.\n * @private\n */\n xhr.onload = function (event) {\n // status will be 0 for file:// urls\n if (!xhr.status || (xhr.status >= 200 && xhr.status < 300)) {\n const type = format.getType();\n /** @type {Document|Node|Object|string|undefined} */\n let source;\n if (type == 'json' || type == 'text') {\n source = xhr.responseText;\n } else if (type == 'xml') {\n source = xhr.responseXML;\n if (!source) {\n source = new DOMParser().parseFromString(\n xhr.responseText,\n 'application/xml'\n );\n }\n } else if (type == 'arraybuffer') {\n source = /** @type {ArrayBuffer} */ (xhr.response);\n }\n if (source) {\n success(\n /** @type {Array} */\n (\n format.readFeatures(source, {\n extent: extent,\n featureProjection: projection,\n })\n ),\n format.readProjection(source)\n );\n } else {\n failure();\n }\n } else {\n failure();\n }\n };\n /**\n * @private\n */\n xhr.onerror = failure;\n xhr.send();\n}\n\n/**\n * Create an XHR feature loader for a `url` and `format`. The feature loader\n * loads features (with XHR), parses the features, and adds them to the\n * vector source.\n * @param {string|FeatureUrlFunction} url Feature URL service.\n * @param {import(\"./format/Feature.js\").default} format Feature format.\n * @return {FeatureLoader} The feature loader.\n * @api\n */\nexport function xhr(url, format) {\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {function(Array): void} [success] Success\n * Function called when loading succeeded.\n * @param {function(): void} [failure] Failure\n * Function called when loading failed.\n */\n return function (extent, resolution, projection, success, failure) {\n const source = /** @type {import(\"./source/Vector\").default} */ (this);\n loadFeaturesXhr(\n url,\n format,\n extent,\n resolution,\n projection,\n /**\n * @param {Array} features The loaded features.\n * @param {import(\"./proj/Projection.js\").default} dataProjection Data\n * projection.\n */\n function (features, dataProjection) {\n source.addFeatures(features);\n if (success !== undefined) {\n success(features);\n }\n },\n /* FIXME handle error */ failure ? failure : VOID\n );\n };\n}\n\n/**\n * Setter for the withCredentials configuration for the XHR.\n *\n * @param {boolean} xhrWithCredentials The value of withCredentials to set.\n * Compare https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/\n * @api\n */\nexport function setWithCredentials(xhrWithCredentials) {\n withCredentials = xhrWithCredentials;\n}\n","/**\n * @module ol/format/Feature\n */\nimport {abstract} from '../util.js';\nimport {\n equivalent as equivalentProjection,\n get as getProjection,\n transformExtent,\n} from '../proj.js';\n\n/**\n * @typedef {Object} ReadOptions\n * @property {import(\"../proj.js\").ProjectionLike} [dataProjection] Projection of the data we are reading.\n * If not provided, the projection will be derived from the data (where possible) or\n * the `dataProjection` of the format is assigned (where set). If the projection\n * can not be derived from the data and if no `dataProjection` is set for a format,\n * the features will not be reprojected.\n * @property {import(\"../extent.js\").Extent} [extent] Tile extent in map units of the tile being read.\n * This is only required when reading data with tile pixels as geometry units. When configured,\n * a `dataProjection` with `TILE_PIXELS` as `units` and the tile's pixel extent as `extent` needs to be\n * provided.\n * @property {import(\"../proj.js\").ProjectionLike} [featureProjection] Projection of the feature geometries\n * created by the format reader. If not provided, features will be returned in the\n * `dataProjection`.\n */\n\n/**\n * @typedef {Object} WriteOptions\n * @property {import(\"../proj.js\").ProjectionLike} [dataProjection] Projection of the data we are writing.\n * If not provided, the `dataProjection` of the format is assigned (where set).\n * If no `dataProjection` is set for a format, the features will be returned\n * in the `featureProjection`.\n * @property {import(\"../proj.js\").ProjectionLike} [featureProjection] Projection of the feature geometries\n * that will be serialized by the format writer. If not provided, geometries are assumed\n * to be in the `dataProjection` if that is set; in other words, they are not transformed.\n * @property {boolean} [rightHanded] When writing geometries, follow the right-hand\n * rule for linear ring orientation. This means that polygons will have counter-clockwise\n * exterior rings and clockwise interior rings. By default, coordinates are serialized\n * as they are provided at construction. If `true`, the right-hand rule will\n * be applied. If `false`, the left-hand rule will be applied (clockwise for\n * exterior and counter-clockwise for interior rings). Note that not all\n * formats support this. The GeoJSON format does use this property when writing\n * geometries.\n * @property {number} [decimals] Maximum number of decimal places for coordinates.\n * Coordinates are stored internally as floats, but floating-point arithmetic can create\n * coordinates with a large number of decimal places, not generally wanted on output.\n * Set a number here to round coordinates. Can also be used to ensure that\n * coordinates read in can be written back out with the same number of decimals.\n * Default is no rounding.\n */\n\n/**\n * @typedef {'arraybuffer' | 'json' | 'text' | 'xml'} Type\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for feature formats.\n * {@link module:ol/format/Feature~FeatureFormat} subclasses provide the ability to decode and encode\n * {@link module:ol/Feature~Feature} objects from a variety of commonly used geospatial\n * file formats. See the documentation for each format for more details.\n *\n * @abstract\n * @api\n */\nclass FeatureFormat {\n constructor() {\n /**\n * @protected\n * @type {import(\"../proj/Projection.js\").default|undefined}\n */\n this.dataProjection = undefined;\n\n /**\n * @protected\n * @type {import(\"../proj/Projection.js\").default|undefined}\n */\n this.defaultFeatureProjection = undefined;\n\n /**\n * A list media types supported by the format in descending order of preference.\n * @type {Array}\n */\n this.supportedMediaTypes = null;\n }\n\n /**\n * Adds the data projection to the read options.\n * @param {Document|Element|Object|string} source Source.\n * @param {ReadOptions} [options] Options.\n * @return {ReadOptions|undefined} Options.\n * @protected\n */\n getReadOptions(source, options) {\n if (options) {\n let dataProjection = options.dataProjection\n ? getProjection(options.dataProjection)\n : this.readProjection(source);\n if (\n options.extent &&\n dataProjection &&\n dataProjection.getUnits() === 'tile-pixels'\n ) {\n dataProjection = getProjection(dataProjection);\n dataProjection.setWorldExtent(options.extent);\n }\n options = {\n dataProjection: dataProjection,\n featureProjection: options.featureProjection,\n };\n }\n return this.adaptOptions(options);\n }\n\n /**\n * Sets the `dataProjection` on the options, if no `dataProjection`\n * is set.\n * @param {WriteOptions|ReadOptions|undefined} options\n * Options.\n * @protected\n * @return {WriteOptions|ReadOptions|undefined}\n * Updated options.\n */\n adaptOptions(options) {\n return Object.assign(\n {\n dataProjection: this.dataProjection,\n featureProjection: this.defaultFeatureProjection,\n },\n options\n );\n }\n\n /**\n * @abstract\n * @return {Type} The format type.\n */\n getType() {\n return abstract();\n }\n\n /**\n * Read a single feature from a source.\n *\n * @abstract\n * @param {Document|Element|Object|string} source Source.\n * @param {ReadOptions} [options] Read options.\n * @return {import(\"../Feature.js\").FeatureLike} Feature.\n */\n readFeature(source, options) {\n return abstract();\n }\n\n /**\n * Read all features from a source.\n *\n * @abstract\n * @param {Document|Element|ArrayBuffer|Object|string} source Source.\n * @param {ReadOptions} [options] Read options.\n * @return {Array} Features.\n */\n readFeatures(source, options) {\n return abstract();\n }\n\n /**\n * Read a single geometry from a source.\n *\n * @abstract\n * @param {Document|Element|Object|string} source Source.\n * @param {ReadOptions} [options] Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n readGeometry(source, options) {\n return abstract();\n }\n\n /**\n * Read the projection from a source.\n *\n * @abstract\n * @param {Document|Element|Object|string} source Source.\n * @return {import(\"../proj/Projection.js\").default|undefined} Projection.\n */\n readProjection(source) {\n return abstract();\n }\n\n /**\n * Encode a feature in this format.\n *\n * @abstract\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {WriteOptions} [options] Write options.\n * @return {string|ArrayBuffer} Result.\n */\n writeFeature(feature, options) {\n return abstract();\n }\n\n /**\n * Encode an array of features in this format.\n *\n * @abstract\n * @param {Array} features Features.\n * @param {WriteOptions} [options] Write options.\n * @return {string|ArrayBuffer} Result.\n */\n writeFeatures(features, options) {\n return abstract();\n }\n\n /**\n * Write a single geometry in this format.\n *\n * @abstract\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {WriteOptions} [options] Write options.\n * @return {string|ArrayBuffer} Result.\n */\n writeGeometry(geometry, options) {\n return abstract();\n }\n}\n\nexport default FeatureFormat;\n\n/**\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {boolean} write Set to true for writing, false for reading.\n * @param {WriteOptions|ReadOptions} [options] Options.\n * @return {import(\"../geom/Geometry.js\").default} Transformed geometry.\n */\nexport function transformGeometryWithOptions(geometry, write, options) {\n const featureProjection = options\n ? getProjection(options.featureProjection)\n : null;\n const dataProjection = options ? getProjection(options.dataProjection) : null;\n\n let transformed;\n if (\n featureProjection &&\n dataProjection &&\n !equivalentProjection(featureProjection, dataProjection)\n ) {\n transformed = (write ? geometry.clone() : geometry).transform(\n write ? featureProjection : dataProjection,\n write ? dataProjection : featureProjection\n );\n } else {\n transformed = geometry;\n }\n if (\n write &&\n options &&\n /** @type {WriteOptions} */ (options).decimals !== undefined\n ) {\n const power = Math.pow(10, /** @type {WriteOptions} */ (options).decimals);\n // if decimals option on write, round each coordinate appropriately\n /**\n * @param {Array} coordinates Coordinates.\n * @return {Array} Transformed coordinates.\n */\n const transform = function (coordinates) {\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n coordinates[i] = Math.round(coordinates[i] * power) / power;\n }\n return coordinates;\n };\n if (transformed === geometry) {\n transformed = geometry.clone();\n }\n transformed.applyTransform(transform);\n }\n return transformed;\n}\n\n/**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {ReadOptions} [options] Read options.\n * @return {import(\"../extent.js\").Extent} Transformed extent.\n */\nexport function transformExtentWithOptions(extent, options) {\n const featureProjection = options\n ? getProjection(options.featureProjection)\n : null;\n const dataProjection = options ? getProjection(options.dataProjection) : null;\n\n if (\n featureProjection &&\n dataProjection &&\n !equivalentProjection(featureProjection, dataProjection)\n ) {\n return transformExtent(extent, dataProjection, featureProjection);\n }\n return extent;\n}\n","/**\n * @module ol/Feature\n */\nimport BaseObject from './Object.js';\nimport EventType from './events/EventType.js';\nimport {assert} from './asserts.js';\nimport {listen, unlistenByKey} from './events.js';\n\n/**\n * @typedef {typeof Feature|typeof import(\"./render/Feature.js\").default} FeatureClass\n */\n\n/**\n * @typedef {Feature|import(\"./render/Feature.js\").default} FeatureLike\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} FeatureOnSignature\n */\n\n/***\n * @template Geometry\n * @typedef {Object & { geometry?: Geometry }} ObjectWithGeometry\n */\n\n/**\n * @classdesc\n * A vector object for geographic features with a geometry and other\n * attribute properties, similar to the features in vector file formats like\n * GeoJSON.\n *\n * Features can be styled individually with `setStyle`; otherwise they use the\n * style of their vector layer.\n *\n * Note that attribute properties are set as {@link module:ol/Object~BaseObject} properties on\n * the feature object, so they are observable, and have get/set accessors.\n *\n * Typically, a feature has a single geometry property. You can set the\n * geometry using the `setGeometry` method and get it with `getGeometry`.\n * It is possible to store more than one geometry on a feature using attribute\n * properties. By default, the geometry used for rendering is identified by\n * the property name `geometry`. If you want to use another geometry property\n * for rendering, use the `setGeometryName` method to change the attribute\n * property associated with the geometry for the feature. For example:\n *\n * ```js\n *\n * import Feature from 'ol/Feature.js';\n * import Polygon from 'ol/geom/Polygon.js';\n * import Point from 'ol/geom/Point.js';\n *\n * const feature = new Feature({\n * geometry: new Polygon(polyCoords),\n * labelPoint: new Point(labelCoords),\n * name: 'My Polygon',\n * });\n *\n * // get the polygon geometry\n * const poly = feature.getGeometry();\n *\n * // Render the feature as a point using the coordinates from labelPoint\n * feature.setGeometryName('labelPoint');\n *\n * // get the point geometry\n * const point = feature.getGeometry();\n * ```\n *\n * @api\n * @template {import(\"./geom/Geometry.js\").default} [Geometry=import(\"./geom/Geometry.js\").default]\n */\nclass Feature extends BaseObject {\n /**\n * @param {Geometry|ObjectWithGeometry} [geometryOrProperties]\n * You may pass a Geometry object directly, or an object literal containing\n * properties. If you pass an object literal, you may include a Geometry\n * associated with a `geometry` key.\n */\n constructor(geometryOrProperties) {\n super();\n\n /***\n * @type {FeatureOnSignature}\n */\n this.on;\n\n /***\n * @type {FeatureOnSignature}\n */\n this.once;\n\n /***\n * @type {FeatureOnSignature}\n */\n this.un;\n\n /**\n * @private\n * @type {number|string|undefined}\n */\n this.id_ = undefined;\n\n /**\n * @type {string}\n * @private\n */\n this.geometryName_ = 'geometry';\n\n /**\n * User provided style.\n * @private\n * @type {import(\"./style/Style.js\").StyleLike}\n */\n this.style_ = null;\n\n /**\n * @private\n * @type {import(\"./style/Style.js\").StyleFunction|undefined}\n */\n this.styleFunction_ = undefined;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.geometryChangeKey_ = null;\n\n this.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n\n if (geometryOrProperties) {\n if (\n typeof (\n /** @type {?} */ (geometryOrProperties).getSimplifiedGeometry\n ) === 'function'\n ) {\n const geometry = /** @type {Geometry} */ (geometryOrProperties);\n this.setGeometry(geometry);\n } else {\n /** @type {Object} */\n const properties = geometryOrProperties;\n this.setProperties(properties);\n }\n }\n }\n\n /**\n * Clone this feature. If the original feature has a geometry it\n * is also cloned. The feature id is not set in the clone.\n * @return {Feature} The clone.\n * @api\n */\n clone() {\n const clone = /** @type {Feature} */ (\n new Feature(this.hasProperties() ? this.getProperties() : null)\n );\n clone.setGeometryName(this.getGeometryName());\n const geometry = this.getGeometry();\n if (geometry) {\n clone.setGeometry(/** @type {Geometry} */ (geometry.clone()));\n }\n const style = this.getStyle();\n if (style) {\n clone.setStyle(style);\n }\n return clone;\n }\n\n /**\n * Get the feature's default geometry. A feature may have any number of named\n * geometries. The \"default\" geometry (the one that is rendered by default) is\n * set when calling {@link module:ol/Feature~Feature#setGeometry}.\n * @return {Geometry|undefined} The default geometry for the feature.\n * @api\n * @observable\n */\n getGeometry() {\n return /** @type {Geometry|undefined} */ (this.get(this.geometryName_));\n }\n\n /**\n * Get the feature identifier. This is a stable identifier for the feature and\n * is either set when reading data from a remote source or set explicitly by\n * calling {@link module:ol/Feature~Feature#setId}.\n * @return {number|string|undefined} Id.\n * @api\n */\n getId() {\n return this.id_;\n }\n\n /**\n * Get the name of the feature's default geometry. By default, the default\n * geometry is named `geometry`.\n * @return {string} Get the property name associated with the default geometry\n * for this feature.\n * @api\n */\n getGeometryName() {\n return this.geometryName_;\n }\n\n /**\n * Get the feature's style. Will return what was provided to the\n * {@link module:ol/Feature~Feature#setStyle} method.\n * @return {import(\"./style/Style.js\").StyleLike|undefined} The feature style.\n * @api\n */\n getStyle() {\n return this.style_;\n }\n\n /**\n * Get the feature's style function.\n * @return {import(\"./style/Style.js\").StyleFunction|undefined} Return a function\n * representing the current style of this feature.\n * @api\n */\n getStyleFunction() {\n return this.styleFunction_;\n }\n\n /**\n * @private\n */\n handleGeometryChange_() {\n this.changed();\n }\n\n /**\n * @private\n */\n handleGeometryChanged_() {\n if (this.geometryChangeKey_) {\n unlistenByKey(this.geometryChangeKey_);\n this.geometryChangeKey_ = null;\n }\n const geometry = this.getGeometry();\n if (geometry) {\n this.geometryChangeKey_ = listen(\n geometry,\n EventType.CHANGE,\n this.handleGeometryChange_,\n this\n );\n }\n this.changed();\n }\n\n /**\n * Set the default geometry for the feature. This will update the property\n * with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.\n * @param {Geometry|undefined} geometry The new geometry.\n * @api\n * @observable\n */\n setGeometry(geometry) {\n this.set(this.geometryName_, geometry);\n }\n\n /**\n * Set the style for the feature to override the layer style. This can be a\n * single style object, an array of styles, or a function that takes a\n * resolution and returns an array of styles. To unset the feature style, call\n * `setStyle()` without arguments or a falsey value.\n * @param {import(\"./style/Style.js\").StyleLike} [style] Style for this feature.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n setStyle(style) {\n this.style_ = style;\n this.styleFunction_ = !style ? undefined : createStyleFunction(style);\n this.changed();\n }\n\n /**\n * Set the feature id. The feature id is considered stable and may be used when\n * requesting features or comparing identifiers returned from a remote source.\n * The feature id can be used with the\n * {@link module:ol/source/Vector~VectorSource#getFeatureById} method.\n * @param {number|string|undefined} id The feature id.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n setId(id) {\n this.id_ = id;\n this.changed();\n }\n\n /**\n * Set the property name to be used when getting the feature's default geometry.\n * When calling {@link module:ol/Feature~Feature#getGeometry}, the value of the property with\n * this name will be returned.\n * @param {string} name The property name of the default geometry.\n * @api\n */\n setGeometryName(name) {\n this.removeChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.geometryName_ = name;\n this.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.handleGeometryChanged_();\n }\n}\n\n/**\n * Convert the provided object into a feature style function. Functions passed\n * through unchanged. Arrays of Style or single style objects wrapped\n * in a new feature style function.\n * @param {!import(\"./style/Style.js\").StyleFunction|!Array|!import(\"./style/Style.js\").default} obj\n * A feature style function, a single style, or an array of styles.\n * @return {import(\"./style/Style.js\").StyleFunction} A style function.\n */\nexport function createStyleFunction(obj) {\n if (typeof obj === 'function') {\n return obj;\n }\n /**\n * @type {Array}\n */\n let styles;\n if (Array.isArray(obj)) {\n styles = obj;\n } else {\n assert(typeof (/** @type {?} */ (obj).getZIndex) === 'function', 41); // Expected an `import(\"./style/Style.js\").Style` or an array of `import(\"./style/Style.js\").Style`\n const style = /** @type {import(\"./style/Style.js\").default} */ (obj);\n styles = [style];\n }\n return function () {\n return styles;\n };\n}\nexport default Feature;\n","/**\n * @module ol/geom/GeometryCollection\n */\nimport EventType from '../events/EventType.js';\nimport Geometry from './Geometry.js';\nimport {\n closestSquaredDistanceXY,\n createOrUpdateEmpty,\n extend,\n getCenter,\n} from '../extent.js';\nimport {listen, unlistenByKey} from '../events.js';\n\n/**\n * @classdesc\n * An array of {@link module:ol/geom/Geometry~Geometry} objects.\n *\n * @api\n */\nclass GeometryCollection extends Geometry {\n /**\n * @param {Array} [geometries] Geometries.\n */\n constructor(geometries) {\n super();\n\n /**\n * @private\n * @type {Array}\n */\n this.geometries_ = geometries ? geometries : null;\n\n /**\n * @type {Array}\n */\n this.changeEventsKeys_ = [];\n\n this.listenGeometriesChange_();\n }\n\n /**\n * @private\n */\n unlistenGeometriesChange_() {\n this.changeEventsKeys_.forEach(unlistenByKey);\n this.changeEventsKeys_.length = 0;\n }\n\n /**\n * @private\n */\n listenGeometriesChange_() {\n if (!this.geometries_) {\n return;\n }\n for (let i = 0, ii = this.geometries_.length; i < ii; ++i) {\n this.changeEventsKeys_.push(\n listen(this.geometries_[i], EventType.CHANGE, this.changed, this)\n );\n }\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!GeometryCollection} Clone.\n * @api\n */\n clone() {\n const geometryCollection = new GeometryCollection(null);\n geometryCollection.setGeometries(this.geometries_);\n geometryCollection.applyProperties(this);\n return geometryCollection;\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n const geometries = this.geometries_;\n for (let i = 0, ii = geometries.length; i < ii; ++i) {\n minSquaredDistance = geometries[i].closestPointXY(\n x,\n y,\n closestPoint,\n minSquaredDistance\n );\n }\n return minSquaredDistance;\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n containsXY(x, y) {\n const geometries = this.geometries_;\n for (let i = 0, ii = geometries.length; i < ii; ++i) {\n if (geometries[i].containsXY(x, y)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n computeExtent(extent) {\n createOrUpdateEmpty(extent);\n const geometries = this.geometries_;\n for (let i = 0, ii = geometries.length; i < ii; ++i) {\n extend(extent, geometries[i].getExtent());\n }\n return extent;\n }\n\n /**\n * Return the geometries that make up this geometry collection.\n * @return {Array} Geometries.\n * @api\n */\n getGeometries() {\n return cloneGeometries(this.geometries_);\n }\n\n /**\n * @return {Array} Geometries.\n */\n getGeometriesArray() {\n return this.geometries_;\n }\n\n /**\n * @return {Array} Geometries.\n */\n getGeometriesArrayRecursive() {\n /** @type {Array} */\n let geometriesArray = [];\n const geometries = this.geometries_;\n for (let i = 0, ii = geometries.length; i < ii; ++i) {\n if (geometries[i].getType() === this.getType()) {\n geometriesArray = geometriesArray.concat(\n /** @type {GeometryCollection} */ (\n geometries[i]\n ).getGeometriesArrayRecursive()\n );\n } else {\n geometriesArray.push(geometries[i]);\n }\n }\n return geometriesArray;\n }\n\n /**\n * Create a simplified version of this geometry using the Douglas Peucker algorithm.\n * @param {number} squaredTolerance Squared tolerance.\n * @return {GeometryCollection} Simplified GeometryCollection.\n */\n getSimplifiedGeometry(squaredTolerance) {\n if (this.simplifiedGeometryRevision !== this.getRevision()) {\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n this.simplifiedGeometryRevision = this.getRevision();\n }\n if (\n squaredTolerance < 0 ||\n (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n squaredTolerance < this.simplifiedGeometryMaxMinSquaredTolerance)\n ) {\n return this;\n }\n\n const simplifiedGeometries = [];\n const geometries = this.geometries_;\n let simplified = false;\n for (let i = 0, ii = geometries.length; i < ii; ++i) {\n const geometry = geometries[i];\n const simplifiedGeometry =\n geometry.getSimplifiedGeometry(squaredTolerance);\n simplifiedGeometries.push(simplifiedGeometry);\n if (simplifiedGeometry !== geometry) {\n simplified = true;\n }\n }\n if (simplified) {\n const simplifiedGeometryCollection = new GeometryCollection(null);\n simplifiedGeometryCollection.setGeometriesArray(simplifiedGeometries);\n return simplifiedGeometryCollection;\n }\n this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;\n return this;\n }\n\n /**\n * Get the type of this geometry.\n * @return {import(\"./Geometry.js\").Type} Geometry type.\n * @api\n */\n getType() {\n return 'GeometryCollection';\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n intersectsExtent(extent) {\n const geometries = this.geometries_;\n for (let i = 0, ii = geometries.length; i < ii; ++i) {\n if (geometries[i].intersectsExtent(extent)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * @return {boolean} Is empty.\n */\n isEmpty() {\n return this.geometries_.length === 0;\n }\n\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n rotate(angle, anchor) {\n const geometries = this.geometries_;\n for (let i = 0, ii = geometries.length; i < ii; ++i) {\n geometries[i].rotate(angle, anchor);\n }\n this.changed();\n }\n\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number} [sy] The scaling factor in the y-direction (defaults to sx).\n * @param {import(\"../coordinate.js\").Coordinate} [anchor] The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n scale(sx, sy, anchor) {\n if (!anchor) {\n anchor = getCenter(this.getExtent());\n }\n const geometries = this.geometries_;\n for (let i = 0, ii = geometries.length; i < ii; ++i) {\n geometries[i].scale(sx, sy, anchor);\n }\n this.changed();\n }\n\n /**\n * Set the geometries that make up this geometry collection.\n * @param {Array} geometries Geometries.\n * @api\n */\n setGeometries(geometries) {\n this.setGeometriesArray(cloneGeometries(geometries));\n }\n\n /**\n * @param {Array} geometries Geometries.\n */\n setGeometriesArray(geometries) {\n this.unlistenGeometriesChange_();\n this.geometries_ = geometries;\n this.listenGeometriesChange_();\n this.changed();\n }\n\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n * @api\n */\n applyTransform(transformFn) {\n const geometries = this.geometries_;\n for (let i = 0, ii = geometries.length; i < ii; ++i) {\n geometries[i].applyTransform(transformFn);\n }\n this.changed();\n }\n\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n translate(deltaX, deltaY) {\n const geometries = this.geometries_;\n for (let i = 0, ii = geometries.length; i < ii; ++i) {\n geometries[i].translate(deltaX, deltaY);\n }\n this.changed();\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n this.unlistenGeometriesChange_();\n super.disposeInternal();\n }\n}\n\n/**\n * @param {Array} geometries Geometries.\n * @return {Array} Cloned geometries.\n */\nfunction cloneGeometries(geometries) {\n const clonedGeometries = [];\n for (let i = 0, ii = geometries.length; i < ii; ++i) {\n clonedGeometries.push(geometries[i].clone());\n }\n return clonedGeometries;\n}\n\nexport default GeometryCollection;\n","/**\n * @module ol/format/JSONFeature\n */\nimport FeatureFormat from './Feature.js';\nimport {abstract} from '../util.js';\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for JSON feature formats.\n *\n * @abstract\n */\nclass JSONFeature extends FeatureFormat {\n constructor() {\n super();\n }\n\n /**\n * @return {import(\"./Feature.js\").Type} Format.\n */\n getType() {\n return 'json';\n }\n\n /**\n * Read a feature. Only works for a single feature. Use `readFeatures` to\n * read a feature collection.\n *\n * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"../Feature.js\").default} Feature.\n * @api\n */\n readFeature(source, options) {\n return this.readFeatureFromObject(\n getObject(source),\n this.getReadOptions(source, options)\n );\n }\n\n /**\n * Read all features. Works with both a single feature and a feature\n * collection.\n *\n * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {Array} Features.\n * @api\n */\n readFeatures(source, options) {\n return this.readFeaturesFromObject(\n getObject(source),\n this.getReadOptions(source, options)\n );\n }\n\n /**\n * @abstract\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {import(\"../Feature.js\").default} Feature.\n */\n readFeatureFromObject(object, options) {\n return abstract();\n }\n\n /**\n * @abstract\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {Array} Features.\n */\n readFeaturesFromObject(object, options) {\n return abstract();\n }\n\n /**\n * Read a geometry.\n *\n * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n * @api\n */\n readGeometry(source, options) {\n return this.readGeometryFromObject(\n getObject(source),\n this.getReadOptions(source, options)\n );\n }\n\n /**\n * @abstract\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n readGeometryFromObject(object, options) {\n return abstract();\n }\n\n /**\n * Read the projection.\n *\n * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n * @return {import(\"../proj/Projection.js\").default} Projection.\n * @api\n */\n readProjection(source) {\n return this.readProjectionFromObject(getObject(source));\n }\n\n /**\n * @abstract\n * @param {Object} object Object.\n * @protected\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n readProjectionFromObject(object) {\n return abstract();\n }\n\n /**\n * Encode a feature as string.\n *\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {string} Encoded feature.\n * @api\n */\n writeFeature(feature, options) {\n return JSON.stringify(this.writeFeatureObject(feature, options));\n }\n\n /**\n * @abstract\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {Object} Object.\n */\n writeFeatureObject(feature, options) {\n return abstract();\n }\n\n /**\n * Encode an array of features as string.\n *\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {string} Encoded features.\n * @api\n */\n writeFeatures(features, options) {\n return JSON.stringify(this.writeFeaturesObject(features, options));\n }\n\n /**\n * @abstract\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {Object} Object.\n */\n writeFeaturesObject(features, options) {\n return abstract();\n }\n\n /**\n * Encode a geometry as string.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {string} Encoded geometry.\n * @api\n */\n writeGeometry(geometry, options) {\n return JSON.stringify(this.writeGeometryObject(geometry, options));\n }\n\n /**\n * @abstract\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {Object} Object.\n */\n writeGeometryObject(geometry, options) {\n return abstract();\n }\n}\n\n/**\n * @param {Document|Element|Object|string} source Source.\n * @return {Object} Object.\n */\nfunction getObject(source) {\n if (typeof source === 'string') {\n const object = JSON.parse(source);\n return object ? /** @type {Object} */ (object) : null;\n }\n if (source !== null) {\n return source;\n }\n return null;\n}\n\nexport default JSONFeature;\n","/**\n * @module ol/format/GeoJSON\n */\n\nimport Feature from '../Feature.js';\nimport GeometryCollection from '../geom/GeometryCollection.js';\nimport JSONFeature from './JSONFeature.js';\nimport LineString from '../geom/LineString.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPoint from '../geom/MultiPoint.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport Point from '../geom/Point.js';\nimport Polygon from '../geom/Polygon.js';\nimport {assert} from '../asserts.js';\nimport {get as getProjection} from '../proj.js';\nimport {isEmpty} from '../obj.js';\nimport {transformGeometryWithOptions} from './Feature.js';\n\n/**\n * @typedef {import(\"geojson\").GeoJSON} GeoJSONObject\n * @typedef {import(\"geojson\").Feature} GeoJSONFeature\n * @typedef {import(\"geojson\").FeatureCollection} GeoJSONFeatureCollection\n * @typedef {import(\"geojson\").Geometry} GeoJSONGeometry\n * @typedef {import(\"geojson\").Point} GeoJSONPoint\n * @typedef {import(\"geojson\").LineString} GeoJSONLineString\n * @typedef {import(\"geojson\").Polygon} GeoJSONPolygon\n * @typedef {import(\"geojson\").MultiPoint} GeoJSONMultiPoint\n * @typedef {import(\"geojson\").MultiLineString} GeoJSONMultiLineString\n * @typedef {import(\"geojson\").MultiPolygon} GeoJSONMultiPolygon\n * @typedef {import(\"geojson\").GeometryCollection} GeoJSONGeometryCollection\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../proj.js\").ProjectionLike} [dataProjection='EPSG:4326'] Default data projection.\n * @property {import(\"../proj.js\").ProjectionLike} [featureProjection] Projection for features read or\n * written by the format. Options passed to read or write methods will take precedence.\n * @property {string} [geometryName] Geometry name to use when creating features.\n * @property {boolean} [extractGeometryName=false] Certain GeoJSON providers include\n * the geometry_name field in the feature GeoJSON. If set to `true` the GeoJSON reader\n * will look for that field to set the geometry name. If both this field is set to `true`\n * and a `geometryName` is provided, the `geometryName` will take precedence.\n */\n\n/**\n * @classdesc\n * Feature format for reading and writing data in the GeoJSON format.\n *\n * @api\n */\nclass GeoJSON extends JSONFeature {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super();\n\n /**\n * @type {import(\"../proj/Projection.js\").default}\n */\n this.dataProjection = getProjection(\n options.dataProjection ? options.dataProjection : 'EPSG:4326'\n );\n\n if (options.featureProjection) {\n /**\n * @type {import(\"../proj/Projection.js\").default}\n */\n this.defaultFeatureProjection = getProjection(options.featureProjection);\n }\n\n /**\n * Name of the geometry attribute for features.\n * @type {string|undefined}\n * @private\n */\n this.geometryName_ = options.geometryName;\n\n /**\n * Look for the geometry name in the feature GeoJSON\n * @type {boolean|undefined}\n * @private\n */\n this.extractGeometryName_ = options.extractGeometryName;\n\n this.supportedMediaTypes = [\n 'application/geo+json',\n 'application/vnd.geo+json',\n ];\n }\n\n /**\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {import(\"../Feature.js\").default} Feature.\n */\n readFeatureFromObject(object, options) {\n /**\n * @type {GeoJSONFeature}\n */\n let geoJSONFeature = null;\n if (object['type'] === 'Feature') {\n geoJSONFeature = /** @type {GeoJSONFeature} */ (object);\n } else {\n geoJSONFeature = {\n 'type': 'Feature',\n 'geometry': /** @type {GeoJSONGeometry} */ (object),\n 'properties': null,\n };\n }\n\n const geometry = readGeometry(geoJSONFeature['geometry'], options);\n const feature = new Feature();\n if (this.geometryName_) {\n feature.setGeometryName(this.geometryName_);\n } else if (\n this.extractGeometryName_ &&\n 'geometry_name' in geoJSONFeature !== undefined\n ) {\n feature.setGeometryName(geoJSONFeature['geometry_name']);\n }\n feature.setGeometry(geometry);\n\n if ('id' in geoJSONFeature) {\n feature.setId(geoJSONFeature['id']);\n }\n\n if (geoJSONFeature['properties']) {\n feature.setProperties(geoJSONFeature['properties'], true);\n }\n return feature;\n }\n\n /**\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {Array} Features.\n */\n readFeaturesFromObject(object, options) {\n const geoJSONObject = /** @type {GeoJSONObject} */ (object);\n /** @type {Array} */\n let features = null;\n if (geoJSONObject['type'] === 'FeatureCollection') {\n const geoJSONFeatureCollection = /** @type {GeoJSONFeatureCollection} */ (\n object\n );\n features = [];\n const geoJSONFeatures = geoJSONFeatureCollection['features'];\n for (let i = 0, ii = geoJSONFeatures.length; i < ii; ++i) {\n features.push(this.readFeatureFromObject(geoJSONFeatures[i], options));\n }\n } else {\n features = [this.readFeatureFromObject(object, options)];\n }\n return features;\n }\n\n /**\n * @param {GeoJSONGeometry} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n readGeometryFromObject(object, options) {\n return readGeometry(object, options);\n }\n\n /**\n * @param {Object} object Object.\n * @protected\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n readProjectionFromObject(object) {\n const crs = object['crs'];\n let projection;\n if (crs) {\n if (crs['type'] == 'name') {\n projection = getProjection(crs['properties']['name']);\n } else if (crs['type'] === 'EPSG') {\n projection = getProjection('EPSG:' + crs['properties']['code']);\n } else {\n assert(false, 36); // Unknown SRS type\n }\n } else {\n projection = this.dataProjection;\n }\n return /** @type {import(\"../proj/Projection.js\").default} */ (projection);\n }\n\n /**\n * Encode a feature as a GeoJSON Feature object.\n *\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONFeature} Object.\n * @api\n */\n writeFeatureObject(feature, options) {\n options = this.adaptOptions(options);\n\n /** @type {GeoJSONFeature} */\n const object = {\n 'type': 'Feature',\n geometry: null,\n properties: null,\n };\n\n const id = feature.getId();\n if (id !== undefined) {\n object.id = id;\n }\n\n if (!feature.hasProperties()) {\n return object;\n }\n\n const properties = feature.getProperties();\n const geometry = feature.getGeometry();\n if (geometry) {\n object.geometry = writeGeometry(geometry, options);\n\n delete properties[feature.getGeometryName()];\n }\n\n if (!isEmpty(properties)) {\n object.properties = properties;\n }\n\n return object;\n }\n\n /**\n * Encode an array of features as a GeoJSON object.\n *\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONFeatureCollection} GeoJSON Object.\n * @api\n */\n writeFeaturesObject(features, options) {\n options = this.adaptOptions(options);\n const objects = [];\n for (let i = 0, ii = features.length; i < ii; ++i) {\n objects.push(this.writeFeatureObject(features[i], options));\n }\n return {\n type: 'FeatureCollection',\n features: objects,\n };\n }\n\n /**\n * Encode a geometry as a GeoJSON object.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry|GeoJSONGeometryCollection} Object.\n * @api\n */\n writeGeometryObject(geometry, options) {\n return writeGeometry(geometry, this.adaptOptions(options));\n }\n}\n\n/**\n * @param {GeoJSONGeometry|GeoJSONGeometryCollection} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\nfunction readGeometry(object, options) {\n if (!object) {\n return null;\n }\n\n /**\n * @type {import(\"../geom/Geometry.js\").default}\n */\n let geometry;\n switch (object['type']) {\n case 'Point': {\n geometry = readPointGeometry(/** @type {GeoJSONPoint} */ (object));\n break;\n }\n case 'LineString': {\n geometry = readLineStringGeometry(\n /** @type {GeoJSONLineString} */ (object)\n );\n break;\n }\n case 'Polygon': {\n geometry = readPolygonGeometry(/** @type {GeoJSONPolygon} */ (object));\n break;\n }\n case 'MultiPoint': {\n geometry = readMultiPointGeometry(\n /** @type {GeoJSONMultiPoint} */ (object)\n );\n break;\n }\n case 'MultiLineString': {\n geometry = readMultiLineStringGeometry(\n /** @type {GeoJSONMultiLineString} */ (object)\n );\n break;\n }\n case 'MultiPolygon': {\n geometry = readMultiPolygonGeometry(\n /** @type {GeoJSONMultiPolygon} */ (object)\n );\n break;\n }\n case 'GeometryCollection': {\n geometry = readGeometryCollectionGeometry(\n /** @type {GeoJSONGeometryCollection} */ (object)\n );\n break;\n }\n default: {\n throw new Error('Unsupported GeoJSON type: ' + object['type']);\n }\n }\n return transformGeometryWithOptions(geometry, false, options);\n}\n\n/**\n * @param {GeoJSONGeometryCollection} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {GeometryCollection} Geometry collection.\n */\nfunction readGeometryCollectionGeometry(object, options) {\n const geometries = object['geometries'].map(\n /**\n * @param {GeoJSONGeometry} geometry Geometry.\n * @return {import(\"../geom/Geometry.js\").default} geometry Geometry.\n */\n function (geometry) {\n return readGeometry(geometry, options);\n }\n );\n return new GeometryCollection(geometries);\n}\n\n/**\n * @param {GeoJSONPoint} object Object.\n * @return {Point} Point.\n */\nfunction readPointGeometry(object) {\n return new Point(object['coordinates']);\n}\n\n/**\n * @param {GeoJSONLineString} object Object.\n * @return {LineString} LineString.\n */\nfunction readLineStringGeometry(object) {\n return new LineString(object['coordinates']);\n}\n\n/**\n * @param {GeoJSONMultiLineString} object Object.\n * @return {MultiLineString} MultiLineString.\n */\nfunction readMultiLineStringGeometry(object) {\n return new MultiLineString(object['coordinates']);\n}\n\n/**\n * @param {GeoJSONMultiPoint} object Object.\n * @return {MultiPoint} MultiPoint.\n */\nfunction readMultiPointGeometry(object) {\n return new MultiPoint(object['coordinates']);\n}\n\n/**\n * @param {GeoJSONMultiPolygon} object Object.\n * @return {MultiPolygon} MultiPolygon.\n */\nfunction readMultiPolygonGeometry(object) {\n return new MultiPolygon(object['coordinates']);\n}\n\n/**\n * @param {GeoJSONPolygon} object Object.\n * @return {Polygon} Polygon.\n */\nfunction readPolygonGeometry(object) {\n return new Polygon(object['coordinates']);\n}\n\n/**\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeGeometry(geometry, options) {\n geometry = transformGeometryWithOptions(geometry, true, options);\n const type = geometry.getType();\n\n /** @type {GeoJSONGeometry} */\n let geoJSON;\n switch (type) {\n case 'Point': {\n geoJSON = writePointGeometry(/** @type {Point} */ (geometry), options);\n break;\n }\n case 'LineString': {\n geoJSON = writeLineStringGeometry(\n /** @type {LineString} */ (geometry),\n options\n );\n break;\n }\n case 'Polygon': {\n geoJSON = writePolygonGeometry(\n /** @type {Polygon} */ (geometry),\n options\n );\n break;\n }\n case 'MultiPoint': {\n geoJSON = writeMultiPointGeometry(\n /** @type {MultiPoint} */ (geometry),\n options\n );\n break;\n }\n case 'MultiLineString': {\n geoJSON = writeMultiLineStringGeometry(\n /** @type {MultiLineString} */ (geometry),\n options\n );\n break;\n }\n case 'MultiPolygon': {\n geoJSON = writeMultiPolygonGeometry(\n /** @type {MultiPolygon} */ (geometry),\n options\n );\n break;\n }\n case 'GeometryCollection': {\n geoJSON = writeGeometryCollectionGeometry(\n /** @type {GeometryCollection} */ (geometry),\n options\n );\n break;\n }\n case 'Circle': {\n geoJSON = {\n type: 'GeometryCollection',\n geometries: [],\n };\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return geoJSON;\n}\n\n/**\n * @param {GeometryCollection} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometryCollection} GeoJSON geometry collection.\n */\nfunction writeGeometryCollectionGeometry(geometry, options) {\n options = Object.assign({}, options);\n delete options.featureProjection;\n const geometries = geometry.getGeometriesArray().map(function (geometry) {\n return writeGeometry(geometry, options);\n });\n return {\n type: 'GeometryCollection',\n geometries: geometries,\n };\n}\n\n/**\n * @param {LineString} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeLineStringGeometry(geometry, options) {\n return {\n type: 'LineString',\n coordinates: geometry.getCoordinates(),\n };\n}\n\n/**\n * @param {MultiLineString} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeMultiLineStringGeometry(geometry, options) {\n return {\n type: 'MultiLineString',\n coordinates: geometry.getCoordinates(),\n };\n}\n\n/**\n * @param {MultiPoint} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeMultiPointGeometry(geometry, options) {\n return {\n type: 'MultiPoint',\n coordinates: geometry.getCoordinates(),\n };\n}\n\n/**\n * @param {MultiPolygon} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeMultiPolygonGeometry(geometry, options) {\n let right;\n if (options) {\n right = options.rightHanded;\n }\n return {\n type: 'MultiPolygon',\n coordinates: geometry.getCoordinates(right),\n };\n}\n\n/**\n * @param {Point} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writePointGeometry(geometry, options) {\n return {\n type: 'Point',\n coordinates: geometry.getCoordinates(),\n };\n}\n\n/**\n * @param {Polygon} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writePolygonGeometry(geometry, options) {\n let right;\n if (options) {\n right = options.rightHanded;\n }\n return {\n type: 'Polygon',\n coordinates: geometry.getCoordinates(right),\n };\n}\n\nexport default GeoJSON;\n","/**\n * @module ol/functions\n */\n\nimport {equals as arrayEquals} from './array.js';\n\n/**\n * Always returns true.\n * @return {boolean} true.\n */\nexport function TRUE() {\n return true;\n}\n\n/**\n * Always returns false.\n * @return {boolean} false.\n */\nexport function FALSE() {\n return false;\n}\n\n/**\n * A reusable function, used e.g. as a default for callbacks.\n *\n * @return {void} Nothing.\n */\nexport function VOID() {}\n\n/**\n * Wrap a function in another function that remembers the last return. If the\n * returned function is called twice in a row with the same arguments and the same\n * this object, it will return the value from the first call in the second call.\n *\n * @param {function(...any): ReturnType} fn The function to memoize.\n * @return {function(...any): ReturnType} The memoized function.\n * @template ReturnType\n */\nexport function memoizeOne(fn) {\n let called = false;\n\n /** @type {ReturnType} */\n let lastResult;\n\n /** @type {Array} */\n let lastArgs;\n\n let lastThis;\n\n return function () {\n const nextArgs = Array.prototype.slice.call(arguments);\n if (!called || this !== lastThis || !arrayEquals(nextArgs, lastArgs)) {\n called = true;\n lastThis = this;\n lastArgs = nextArgs;\n lastResult = fn.apply(this, arguments);\n }\n return lastResult;\n };\n}\n\n/**\n * @template T\n * @param {function(): (T | Promise)} getter A function that returns a value or a promise for a value.\n * @return {Promise} A promise for the value.\n */\nexport function toPromise(getter) {\n function promiseGetter() {\n let value;\n try {\n value = getter();\n } catch (err) {\n return Promise.reject(err);\n }\n if (value instanceof Promise) {\n return value;\n }\n return Promise.resolve(value);\n }\n return promiseGetter();\n}\n","/**\n * @module ol/geom/Geometry\n */\nimport BaseObject from '../Object.js';\nimport {abstract} from '../util.js';\nimport {\n compose as composeTransform,\n create as createTransform,\n} from '../transform.js';\nimport {\n createEmpty,\n createOrUpdateEmpty,\n getHeight,\n returnOrUpdate,\n} from '../extent.js';\nimport {get as getProjection, getTransform} from '../proj.js';\nimport {memoizeOne} from '../functions.js';\nimport {transform2D} from './flat/transform.js';\n\n/**\n * @typedef {'XY' | 'XYZ' | 'XYM' | 'XYZM'} GeometryLayout\n * The coordinate layout for geometries, indicating whether a 3rd or 4th z ('Z')\n * or measure ('M') coordinate is available.\n */\n\n/**\n * @typedef {'Point' | 'LineString' | 'LinearRing' | 'Polygon' | 'MultiPoint' | 'MultiLineString' | 'MultiPolygon' | 'GeometryCollection' | 'Circle'} Type\n * The geometry type. One of `'Point'`, `'LineString'`, `'LinearRing'`,\n * `'Polygon'`, `'MultiPoint'`, `'MultiLineString'`, `'MultiPolygon'`,\n * `'GeometryCollection'`, or `'Circle'`.\n */\n\n/**\n * @type {import(\"../transform.js\").Transform}\n */\nconst tmpTransform = createTransform();\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for vector geometries.\n *\n * To get notified of changes to the geometry, register a listener for the\n * generic `change` event on your geometry instance.\n *\n * @abstract\n * @api\n */\nclass Geometry extends BaseObject {\n constructor() {\n super();\n\n /**\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.extent_ = createEmpty();\n\n /**\n * @private\n * @type {number}\n */\n this.extentRevision_ = -1;\n\n /**\n * @protected\n * @type {number}\n */\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n\n /**\n * @protected\n * @type {number}\n */\n this.simplifiedGeometryRevision = 0;\n\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} revision The geometry revision.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n this.simplifyTransformedInternal = memoizeOne(function (\n revision,\n squaredTolerance,\n transform\n ) {\n if (!transform) {\n return this.getSimplifiedGeometry(squaredTolerance);\n }\n const clone = this.clone();\n clone.applyTransform(transform);\n return clone.getSimplifiedGeometry(squaredTolerance);\n });\n }\n\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n simplifyTransformed(squaredTolerance, transform) {\n return this.simplifyTransformedInternal(\n this.getRevision(),\n squaredTolerance,\n transform\n );\n }\n\n /**\n * Make a complete copy of the geometry.\n * @abstract\n * @return {!Geometry} Clone.\n */\n clone() {\n return abstract();\n }\n\n /**\n * @abstract\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n return abstract();\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n containsXY(x, y) {\n const coord = this.getClosestPoint([x, y]);\n return coord[0] === x && coord[1] === y;\n }\n\n /**\n * Return the closest point of the geometry to the passed point as\n * {@link module:ol/coordinate~Coordinate coordinate}.\n * @param {import(\"../coordinate.js\").Coordinate} point Point.\n * @param {import(\"../coordinate.js\").Coordinate} [closestPoint] Closest point.\n * @return {import(\"../coordinate.js\").Coordinate} Closest point.\n * @api\n */\n getClosestPoint(point, closestPoint) {\n closestPoint = closestPoint ? closestPoint : [NaN, NaN];\n this.closestPointXY(point[0], point[1], closestPoint, Infinity);\n return closestPoint;\n }\n\n /**\n * Returns true if this geometry includes the specified coordinate. If the\n * coordinate is on the boundary of the geometry, returns false.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains coordinate.\n * @api\n */\n intersectsCoordinate(coordinate) {\n return this.containsXY(coordinate[0], coordinate[1]);\n }\n\n /**\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n computeExtent(extent) {\n return abstract();\n }\n\n /**\n * Get the extent of the geometry.\n * @param {import(\"../extent.js\").Extent} [extent] Extent.\n * @return {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n getExtent(extent) {\n if (this.extentRevision_ != this.getRevision()) {\n const extent = this.computeExtent(this.extent_);\n if (isNaN(extent[0]) || isNaN(extent[1])) {\n createOrUpdateEmpty(extent);\n }\n this.extentRevision_ = this.getRevision();\n }\n return returnOrUpdate(this.extent_, extent);\n }\n\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n rotate(angle, anchor) {\n abstract();\n }\n\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number} [sy] The scaling factor in the y-direction (defaults to sx).\n * @param {import(\"../coordinate.js\").Coordinate} [anchor] The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n scale(sx, sy, anchor) {\n abstract();\n }\n\n /**\n * Create a simplified version of this geometry. For linestrings, this uses\n * the [Douglas Peucker](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm)\n * algorithm. For polygons, a quantization-based\n * simplification is used to preserve topology.\n * @param {number} tolerance The tolerance distance for simplification.\n * @return {Geometry} A new, simplified version of the original geometry.\n * @api\n */\n simplify(tolerance) {\n return this.getSimplifiedGeometry(tolerance * tolerance);\n }\n\n /**\n * Create a simplified version of this geometry using the Douglas Peucker\n * algorithm.\n * See https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Geometry} Simplified geometry.\n */\n getSimplifiedGeometry(squaredTolerance) {\n return abstract();\n }\n\n /**\n * Get the type of this geometry.\n * @abstract\n * @return {Type} Geometry type.\n */\n getType() {\n return abstract();\n }\n\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @abstract\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n */\n applyTransform(transformFn) {\n abstract();\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n */\n intersectsExtent(extent) {\n return abstract();\n }\n\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @abstract\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n translate(deltaX, deltaY) {\n abstract();\n }\n\n /**\n * Transform each coordinate of the geometry from one coordinate reference\n * system to another. The geometry is modified in place.\n * For example, a line will be transformed to a line and a circle to a circle.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n *\n * @param {import(\"../proj.js\").ProjectionLike} source The current projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @param {import(\"../proj.js\").ProjectionLike} destination The desired projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @return {Geometry} This geometry. Note that original geometry is\n * modified in place.\n * @api\n */\n transform(source, destination) {\n /** @type {import(\"../proj/Projection.js\").default} */\n const sourceProj = getProjection(source);\n const transformFn =\n sourceProj.getUnits() == 'tile-pixels'\n ? function (inCoordinates, outCoordinates, stride) {\n const pixelExtent = sourceProj.getExtent();\n const projectedExtent = sourceProj.getWorldExtent();\n const scale = getHeight(projectedExtent) / getHeight(pixelExtent);\n composeTransform(\n tmpTransform,\n projectedExtent[0],\n projectedExtent[3],\n scale,\n -scale,\n 0,\n 0,\n 0\n );\n transform2D(\n inCoordinates,\n 0,\n inCoordinates.length,\n stride,\n tmpTransform,\n outCoordinates\n );\n return getTransform(sourceProj, destination)(\n inCoordinates,\n outCoordinates,\n stride\n );\n }\n : getTransform(sourceProj, destination);\n this.applyTransform(transformFn);\n return this;\n }\n}\n\nexport default Geometry;\n","/**\n * @module ol/geom/LineString\n */\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {assignClosestPoint, maxSquaredDelta} from './flat/closest.js';\nimport {closestSquaredDistanceXY} from '../extent.js';\nimport {deflateCoordinates} from './flat/deflate.js';\nimport {douglasPeucker} from './flat/simplify.js';\nimport {extend} from '../array.js';\nimport {forEach as forEachSegment} from './flat/segments.js';\nimport {inflateCoordinates} from './flat/inflate.js';\nimport {interpolatePoint, lineStringCoordinateAtM} from './flat/interpolate.js';\nimport {intersectsLineString} from './flat/intersectsextent.js';\nimport {lineStringLength} from './flat/length.js';\n\n/**\n * @classdesc\n * Linestring geometry.\n *\n * @api\n */\nclass LineString extends SimpleGeometry {\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `layout` are also accepted.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n */\n constructor(coordinates, layout) {\n super();\n\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n this.flatMidpoint_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.flatMidpointRevision_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDelta_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDeltaRevision_ = -1;\n\n if (layout !== undefined && !Array.isArray(coordinates[0])) {\n this.setFlatCoordinates(\n layout,\n /** @type {Array} */ (coordinates)\n );\n } else {\n this.setCoordinates(\n /** @type {Array} */ (\n coordinates\n ),\n layout\n );\n }\n }\n\n /**\n * Append the passed coordinate to the coordinates of the linestring.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @api\n */\n appendCoordinate(coordinate) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = coordinate.slice();\n } else {\n extend(this.flatCoordinates, coordinate);\n }\n this.changed();\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!LineString} Clone.\n * @api\n */\n clone() {\n const lineString = new LineString(\n this.flatCoordinates.slice(),\n this.layout\n );\n lineString.applyProperties(this);\n return lineString;\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(\n maxSquaredDelta(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n 0\n )\n );\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n this.maxDelta_,\n false,\n x,\n y,\n closestPoint,\n minSquaredDistance\n );\n }\n\n /**\n * Iterate over each segment, calling the provided callback.\n * If the callback returns a truthy value the function returns that\n * value immediately. Otherwise the function returns `false`.\n *\n * @param {function(this: S, import(\"../coordinate.js\").Coordinate, import(\"../coordinate.js\").Coordinate): T} callback Function\n * called for each segment. The function will receive two arguments, the start and end coordinates of the segment.\n * @return {T|boolean} Value.\n * @template T,S\n * @api\n */\n forEachSegment(callback) {\n return forEachSegment(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n callback\n );\n }\n\n /**\n * Returns the coordinate at `m` using linear interpolation, or `null` if no\n * such coordinate exists.\n *\n * `extrapolate` controls extrapolation beyond the range of Ms in the\n * MultiLineString. If `extrapolate` is `true` then Ms less than the first\n * M will return the first coordinate and Ms greater than the last M will\n * return the last coordinate.\n *\n * @param {number} m M.\n * @param {boolean} [extrapolate] Extrapolate. Default is `false`.\n * @return {import(\"../coordinate.js\").Coordinate|null} Coordinate.\n * @api\n */\n getCoordinateAtM(m, extrapolate) {\n if (this.layout != 'XYM' && this.layout != 'XYZM') {\n return null;\n }\n extrapolate = extrapolate !== undefined ? extrapolate : false;\n return lineStringCoordinateAtM(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n m,\n extrapolate\n );\n }\n\n /**\n * Return the coordinates of the linestring.\n * @return {Array} Coordinates.\n * @api\n */\n getCoordinates() {\n return inflateCoordinates(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride\n );\n }\n\n /**\n * Return the coordinate at the provided fraction along the linestring.\n * The `fraction` is a number between 0 and 1, where 0 is the start of the\n * linestring and 1 is the end.\n * @param {number} fraction Fraction.\n * @param {import(\"../coordinate.js\").Coordinate} [dest] Optional coordinate whose values will\n * be modified. If not provided, a new coordinate will be returned.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinate of the interpolated point.\n * @api\n */\n getCoordinateAt(fraction, dest) {\n return interpolatePoint(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n fraction,\n dest,\n this.stride\n );\n }\n\n /**\n * Return the length of the linestring on projected plane.\n * @return {number} Length (on projected plane).\n * @api\n */\n getLength() {\n return lineStringLength(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride\n );\n }\n\n /**\n * @return {Array} Flat midpoint.\n */\n getFlatMidpoint() {\n if (this.flatMidpointRevision_ != this.getRevision()) {\n this.flatMidpoint_ = this.getCoordinateAt(0.5, this.flatMidpoint_);\n this.flatMidpointRevision_ = this.getRevision();\n }\n return this.flatMidpoint_;\n }\n\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {LineString} Simplified LineString.\n * @protected\n */\n getSimplifiedGeometryInternal(squaredTolerance) {\n const simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n 0\n );\n return new LineString(simplifiedFlatCoordinates, 'XY');\n }\n\n /**\n * Get the type of this geometry.\n * @return {import(\"./Geometry.js\").Type} Geometry type.\n * @api\n */\n getType() {\n return 'LineString';\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n intersectsExtent(extent) {\n return intersectsLineString(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n extent\n );\n }\n\n /**\n * Set the coordinates of the linestring.\n * @param {!Array} coordinates Coordinates.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n * @api\n */\n setCoordinates(coordinates, layout) {\n this.setLayout(layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(\n this.flatCoordinates,\n 0,\n coordinates,\n this.stride\n );\n this.changed();\n }\n}\n\nexport default LineString;\n","/**\n * @module ol/geom/MultiLineString\n */\nimport LineString from './LineString.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {arrayMaxSquaredDelta, assignClosestArrayPoint} from './flat/closest.js';\nimport {closestSquaredDistanceXY} from '../extent.js';\nimport {deflateCoordinatesArray} from './flat/deflate.js';\nimport {douglasPeuckerArray} from './flat/simplify.js';\nimport {extend} from '../array.js';\nimport {inflateCoordinatesArray} from './flat/inflate.js';\nimport {\n interpolatePoint,\n lineStringsCoordinateAtM,\n} from './flat/interpolate.js';\nimport {intersectsLineStringArray} from './flat/intersectsextent.js';\n\n/**\n * @classdesc\n * Multi-linestring geometry.\n *\n * @api\n */\nclass MultiLineString extends SimpleGeometry {\n /**\n * @param {Array|LineString>|Array} coordinates\n * Coordinates or LineString geometries. (For internal use, flat coordinates in\n * combination with `layout` and `ends` are also accepted.)\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n * @param {Array} [ends] Flat coordinate ends for internal use.\n */\n constructor(coordinates, layout, ends) {\n super();\n\n /**\n * @type {Array}\n * @private\n */\n this.ends_ = [];\n\n /**\n * @private\n * @type {number}\n */\n this.maxDelta_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDeltaRevision_ = -1;\n\n if (Array.isArray(coordinates[0])) {\n this.setCoordinates(\n /** @type {Array>} */ (\n coordinates\n ),\n layout\n );\n } else if (layout !== undefined && ends) {\n this.setFlatCoordinates(\n layout,\n /** @type {Array} */ (coordinates)\n );\n this.ends_ = ends;\n } else {\n let layout = this.getLayout();\n const lineStrings = /** @type {Array} */ (coordinates);\n const flatCoordinates = [];\n const ends = [];\n for (let i = 0, ii = lineStrings.length; i < ii; ++i) {\n const lineString = lineStrings[i];\n if (i === 0) {\n layout = lineString.getLayout();\n }\n extend(flatCoordinates, lineString.getFlatCoordinates());\n ends.push(flatCoordinates.length);\n }\n this.setFlatCoordinates(layout, flatCoordinates);\n this.ends_ = ends;\n }\n }\n\n /**\n * Append the passed linestring to the multilinestring.\n * @param {LineString} lineString LineString.\n * @api\n */\n appendLineString(lineString) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = lineString.getFlatCoordinates().slice();\n } else {\n extend(this.flatCoordinates, lineString.getFlatCoordinates().slice());\n }\n this.ends_.push(this.flatCoordinates.length);\n this.changed();\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!MultiLineString} Clone.\n * @api\n */\n clone() {\n const multiLineString = new MultiLineString(\n this.flatCoordinates.slice(),\n this.layout,\n this.ends_.slice()\n );\n multiLineString.applyProperties(this);\n return multiLineString;\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(\n arrayMaxSquaredDelta(\n this.flatCoordinates,\n 0,\n this.ends_,\n this.stride,\n 0\n )\n );\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestArrayPoint(\n this.flatCoordinates,\n 0,\n this.ends_,\n this.stride,\n this.maxDelta_,\n false,\n x,\n y,\n closestPoint,\n minSquaredDistance\n );\n }\n\n /**\n * Returns the coordinate at `m` using linear interpolation, or `null` if no\n * such coordinate exists.\n *\n * `extrapolate` controls extrapolation beyond the range of Ms in the\n * MultiLineString. If `extrapolate` is `true` then Ms less than the first\n * M will return the first coordinate and Ms greater than the last M will\n * return the last coordinate.\n *\n * `interpolate` controls interpolation between consecutive LineStrings\n * within the MultiLineString. If `interpolate` is `true` the coordinates\n * will be linearly interpolated between the last coordinate of one LineString\n * and the first coordinate of the next LineString. If `interpolate` is\n * `false` then the function will return `null` for Ms falling between\n * LineStrings.\n *\n * @param {number} m M.\n * @param {boolean} [extrapolate] Extrapolate. Default is `false`.\n * @param {boolean} [interpolate] Interpolate. Default is `false`.\n * @return {import(\"../coordinate.js\").Coordinate|null} Coordinate.\n * @api\n */\n getCoordinateAtM(m, extrapolate, interpolate) {\n if (\n (this.layout != 'XYM' && this.layout != 'XYZM') ||\n this.flatCoordinates.length === 0\n ) {\n return null;\n }\n extrapolate = extrapolate !== undefined ? extrapolate : false;\n interpolate = interpolate !== undefined ? interpolate : false;\n return lineStringsCoordinateAtM(\n this.flatCoordinates,\n 0,\n this.ends_,\n this.stride,\n m,\n extrapolate,\n interpolate\n );\n }\n\n /**\n * Return the coordinates of the multilinestring.\n * @return {Array>} Coordinates.\n * @api\n */\n getCoordinates() {\n return inflateCoordinatesArray(\n this.flatCoordinates,\n 0,\n this.ends_,\n this.stride\n );\n }\n\n /**\n * @return {Array} Ends.\n */\n getEnds() {\n return this.ends_;\n }\n\n /**\n * Return the linestring at the specified index.\n * @param {number} index Index.\n * @return {LineString} LineString.\n * @api\n */\n getLineString(index) {\n if (index < 0 || this.ends_.length <= index) {\n return null;\n }\n return new LineString(\n this.flatCoordinates.slice(\n index === 0 ? 0 : this.ends_[index - 1],\n this.ends_[index]\n ),\n this.layout\n );\n }\n\n /**\n * Return the linestrings of this multilinestring.\n * @return {Array} LineStrings.\n * @api\n */\n getLineStrings() {\n const flatCoordinates = this.flatCoordinates;\n const ends = this.ends_;\n const layout = this.layout;\n /** @type {Array} */\n const lineStrings = [];\n let offset = 0;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n const lineString = new LineString(\n flatCoordinates.slice(offset, end),\n layout\n );\n lineStrings.push(lineString);\n offset = end;\n }\n return lineStrings;\n }\n\n /**\n * @return {Array} Flat midpoints.\n */\n getFlatMidpoints() {\n const midpoints = [];\n const flatCoordinates = this.flatCoordinates;\n let offset = 0;\n const ends = this.ends_;\n const stride = this.stride;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n const midpoint = interpolatePoint(\n flatCoordinates,\n offset,\n end,\n stride,\n 0.5\n );\n extend(midpoints, midpoint);\n offset = end;\n }\n return midpoints;\n }\n\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {MultiLineString} Simplified MultiLineString.\n * @protected\n */\n getSimplifiedGeometryInternal(squaredTolerance) {\n const simplifiedFlatCoordinates = [];\n const simplifiedEnds = [];\n simplifiedFlatCoordinates.length = douglasPeuckerArray(\n this.flatCoordinates,\n 0,\n this.ends_,\n this.stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n 0,\n simplifiedEnds\n );\n return new MultiLineString(simplifiedFlatCoordinates, 'XY', simplifiedEnds);\n }\n\n /**\n * Get the type of this geometry.\n * @return {import(\"./Geometry.js\").Type} Geometry type.\n * @api\n */\n getType() {\n return 'MultiLineString';\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n intersectsExtent(extent) {\n return intersectsLineStringArray(\n this.flatCoordinates,\n 0,\n this.ends_,\n this.stride,\n extent\n );\n }\n\n /**\n * Set the coordinates of the multilinestring.\n * @param {!Array>} coordinates Coordinates.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n * @api\n */\n setCoordinates(coordinates, layout) {\n this.setLayout(layout, coordinates, 2);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n const ends = deflateCoordinatesArray(\n this.flatCoordinates,\n 0,\n coordinates,\n this.stride,\n this.ends_\n );\n this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1];\n this.changed();\n }\n}\n\nexport default MultiLineString;\n","/**\n * @module ol/geom/MultiPoint\n */\nimport Point from './Point.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {closestSquaredDistanceXY, containsXY} from '../extent.js';\nimport {deflateCoordinates} from './flat/deflate.js';\nimport {extend} from '../array.js';\nimport {inflateCoordinates} from './flat/inflate.js';\nimport {squaredDistance as squaredDx} from '../math.js';\n\n/**\n * @classdesc\n * Multi-point geometry.\n *\n * @api\n */\nclass MultiPoint extends SimpleGeometry {\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `layout` are also accepted.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n */\n constructor(coordinates, layout) {\n super();\n if (layout && !Array.isArray(coordinates[0])) {\n this.setFlatCoordinates(\n layout,\n /** @type {Array} */ (coordinates)\n );\n } else {\n this.setCoordinates(\n /** @type {Array} */ (\n coordinates\n ),\n layout\n );\n }\n }\n\n /**\n * Append the passed point to this multipoint.\n * @param {Point} point Point.\n * @api\n */\n appendPoint(point) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = point.getFlatCoordinates().slice();\n } else {\n extend(this.flatCoordinates, point.getFlatCoordinates());\n }\n this.changed();\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!MultiPoint} Clone.\n * @api\n */\n clone() {\n const multiPoint = new MultiPoint(\n this.flatCoordinates.slice(),\n this.layout\n );\n multiPoint.applyProperties(this);\n return multiPoint;\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n const flatCoordinates = this.flatCoordinates;\n const stride = this.stride;\n for (let i = 0, ii = flatCoordinates.length; i < ii; i += stride) {\n const squaredDistance = squaredDx(\n x,\n y,\n flatCoordinates[i],\n flatCoordinates[i + 1]\n );\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (let j = 0; j < stride; ++j) {\n closestPoint[j] = flatCoordinates[i + j];\n }\n closestPoint.length = stride;\n }\n }\n return minSquaredDistance;\n }\n\n /**\n * Return the coordinates of the multipoint.\n * @return {Array} Coordinates.\n * @api\n */\n getCoordinates() {\n return inflateCoordinates(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride\n );\n }\n\n /**\n * Return the point at the specified index.\n * @param {number} index Index.\n * @return {Point} Point.\n * @api\n */\n getPoint(index) {\n const n = !this.flatCoordinates\n ? 0\n : this.flatCoordinates.length / this.stride;\n if (index < 0 || n <= index) {\n return null;\n }\n return new Point(\n this.flatCoordinates.slice(\n index * this.stride,\n (index + 1) * this.stride\n ),\n this.layout\n );\n }\n\n /**\n * Return the points of this multipoint.\n * @return {Array} Points.\n * @api\n */\n getPoints() {\n const flatCoordinates = this.flatCoordinates;\n const layout = this.layout;\n const stride = this.stride;\n /** @type {Array} */\n const points = [];\n for (let i = 0, ii = flatCoordinates.length; i < ii; i += stride) {\n const point = new Point(flatCoordinates.slice(i, i + stride), layout);\n points.push(point);\n }\n return points;\n }\n\n /**\n * Get the type of this geometry.\n * @return {import(\"./Geometry.js\").Type} Geometry type.\n * @api\n */\n getType() {\n return 'MultiPoint';\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n intersectsExtent(extent) {\n const flatCoordinates = this.flatCoordinates;\n const stride = this.stride;\n for (let i = 0, ii = flatCoordinates.length; i < ii; i += stride) {\n const x = flatCoordinates[i];\n const y = flatCoordinates[i + 1];\n if (containsXY(extent, x, y)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Set the coordinates of the multipoint.\n * @param {!Array} coordinates Coordinates.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n * @api\n */\n setCoordinates(coordinates, layout) {\n this.setLayout(layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(\n this.flatCoordinates,\n 0,\n coordinates,\n this.stride\n );\n this.changed();\n }\n}\n\nexport default MultiPoint;\n","/**\n * @module ol/geom/MultiPolygon\n */\nimport MultiPoint from './MultiPoint.js';\nimport Polygon from './Polygon.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {\n assignClosestMultiArrayPoint,\n multiArrayMaxSquaredDelta,\n} from './flat/closest.js';\nimport {closestSquaredDistanceXY} from '../extent.js';\nimport {deflateMultiCoordinatesArray} from './flat/deflate.js';\nimport {extend} from '../array.js';\nimport {getInteriorPointsOfMultiArray} from './flat/interiorpoint.js';\nimport {inflateMultiCoordinatesArray} from './flat/inflate.js';\nimport {intersectsLinearRingMultiArray} from './flat/intersectsextent.js';\nimport {\n linearRingssAreOriented,\n orientLinearRingsArray,\n} from './flat/orient.js';\nimport {linearRingss as linearRingssArea} from './flat/area.js';\nimport {linearRingss as linearRingssCenter} from './flat/center.js';\nimport {linearRingssContainsXY} from './flat/contains.js';\nimport {quantizeMultiArray} from './flat/simplify.js';\n\n/**\n * @classdesc\n * Multi-polygon geometry.\n *\n * @api\n */\nclass MultiPolygon extends SimpleGeometry {\n /**\n * @param {Array>|Polygon>|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `layout` and `endss` are also accepted.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n * @param {Array>} [endss] Array of ends for internal use with flat coordinates.\n */\n constructor(coordinates, layout, endss) {\n super();\n\n /**\n * @type {Array>}\n * @private\n */\n this.endss_ = [];\n\n /**\n * @private\n * @type {number}\n */\n this.flatInteriorPointsRevision_ = -1;\n\n /**\n * @private\n * @type {Array}\n */\n this.flatInteriorPoints_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDelta_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDeltaRevision_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.orientedRevision_ = -1;\n\n /**\n * @private\n * @type {Array}\n */\n this.orientedFlatCoordinates_ = null;\n\n if (!endss && !Array.isArray(coordinates[0])) {\n let thisLayout = this.getLayout();\n const polygons = /** @type {Array} */ (coordinates);\n const flatCoordinates = [];\n const thisEndss = [];\n for (let i = 0, ii = polygons.length; i < ii; ++i) {\n const polygon = polygons[i];\n if (i === 0) {\n thisLayout = polygon.getLayout();\n }\n const offset = flatCoordinates.length;\n const ends = polygon.getEnds();\n for (let j = 0, jj = ends.length; j < jj; ++j) {\n ends[j] += offset;\n }\n extend(flatCoordinates, polygon.getFlatCoordinates());\n thisEndss.push(ends);\n }\n layout = thisLayout;\n coordinates = flatCoordinates;\n endss = thisEndss;\n }\n if (layout !== undefined && endss) {\n this.setFlatCoordinates(\n layout,\n /** @type {Array} */ (coordinates)\n );\n this.endss_ = endss;\n } else {\n this.setCoordinates(\n /** @type {Array>>} */ (\n coordinates\n ),\n layout\n );\n }\n }\n\n /**\n * Append the passed polygon to this multipolygon.\n * @param {Polygon} polygon Polygon.\n * @api\n */\n appendPolygon(polygon) {\n /** @type {Array} */\n let ends;\n if (!this.flatCoordinates) {\n this.flatCoordinates = polygon.getFlatCoordinates().slice();\n ends = polygon.getEnds().slice();\n this.endss_.push();\n } else {\n const offset = this.flatCoordinates.length;\n extend(this.flatCoordinates, polygon.getFlatCoordinates());\n ends = polygon.getEnds().slice();\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n ends[i] += offset;\n }\n }\n this.endss_.push(ends);\n this.changed();\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!MultiPolygon} Clone.\n * @api\n */\n clone() {\n const len = this.endss_.length;\n const newEndss = new Array(len);\n for (let i = 0; i < len; ++i) {\n newEndss[i] = this.endss_[i].slice();\n }\n\n const multiPolygon = new MultiPolygon(\n this.flatCoordinates.slice(),\n this.layout,\n newEndss\n );\n multiPolygon.applyProperties(this);\n\n return multiPolygon;\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(\n multiArrayMaxSquaredDelta(\n this.flatCoordinates,\n 0,\n this.endss_,\n this.stride,\n 0\n )\n );\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestMultiArrayPoint(\n this.getOrientedFlatCoordinates(),\n 0,\n this.endss_,\n this.stride,\n this.maxDelta_,\n true,\n x,\n y,\n closestPoint,\n minSquaredDistance\n );\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n containsXY(x, y) {\n return linearRingssContainsXY(\n this.getOrientedFlatCoordinates(),\n 0,\n this.endss_,\n this.stride,\n x,\n y\n );\n }\n\n /**\n * Return the area of the multipolygon on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n getArea() {\n return linearRingssArea(\n this.getOrientedFlatCoordinates(),\n 0,\n this.endss_,\n this.stride\n );\n }\n\n /**\n * Get the coordinate array for this geometry. This array has the structure\n * of a GeoJSON coordinate array for multi-polygons.\n *\n * @param {boolean} [right] Orient coordinates according to the right-hand\n * rule (counter-clockwise for exterior and clockwise for interior rings).\n * If `false`, coordinates will be oriented according to the left-hand rule\n * (clockwise for exterior and counter-clockwise for interior rings).\n * By default, coordinate orientation will depend on how the geometry was\n * constructed.\n * @return {Array>>} Coordinates.\n * @api\n */\n getCoordinates(right) {\n let flatCoordinates;\n if (right !== undefined) {\n flatCoordinates = this.getOrientedFlatCoordinates().slice();\n orientLinearRingsArray(\n flatCoordinates,\n 0,\n this.endss_,\n this.stride,\n right\n );\n } else {\n flatCoordinates = this.flatCoordinates;\n }\n\n return inflateMultiCoordinatesArray(\n flatCoordinates,\n 0,\n this.endss_,\n this.stride\n );\n }\n\n /**\n * @return {Array>} Endss.\n */\n getEndss() {\n return this.endss_;\n }\n\n /**\n * @return {Array} Flat interior points.\n */\n getFlatInteriorPoints() {\n if (this.flatInteriorPointsRevision_ != this.getRevision()) {\n const flatCenters = linearRingssCenter(\n this.flatCoordinates,\n 0,\n this.endss_,\n this.stride\n );\n this.flatInteriorPoints_ = getInteriorPointsOfMultiArray(\n this.getOrientedFlatCoordinates(),\n 0,\n this.endss_,\n this.stride,\n flatCenters\n );\n this.flatInteriorPointsRevision_ = this.getRevision();\n }\n return this.flatInteriorPoints_;\n }\n\n /**\n * Return the interior points as {@link module:ol/geom/MultiPoint~MultiPoint multipoint}.\n * @return {MultiPoint} Interior points as XYM coordinates, where M is\n * the length of the horizontal intersection that the point belongs to.\n * @api\n */\n getInteriorPoints() {\n return new MultiPoint(this.getFlatInteriorPoints().slice(), 'XYM');\n }\n\n /**\n * @return {Array} Oriented flat coordinates.\n */\n getOrientedFlatCoordinates() {\n if (this.orientedRevision_ != this.getRevision()) {\n const flatCoordinates = this.flatCoordinates;\n if (\n linearRingssAreOriented(flatCoordinates, 0, this.endss_, this.stride)\n ) {\n this.orientedFlatCoordinates_ = flatCoordinates;\n } else {\n this.orientedFlatCoordinates_ = flatCoordinates.slice();\n this.orientedFlatCoordinates_.length = orientLinearRingsArray(\n this.orientedFlatCoordinates_,\n 0,\n this.endss_,\n this.stride\n );\n }\n this.orientedRevision_ = this.getRevision();\n }\n return this.orientedFlatCoordinates_;\n }\n\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {MultiPolygon} Simplified MultiPolygon.\n * @protected\n */\n getSimplifiedGeometryInternal(squaredTolerance) {\n const simplifiedFlatCoordinates = [];\n const simplifiedEndss = [];\n simplifiedFlatCoordinates.length = quantizeMultiArray(\n this.flatCoordinates,\n 0,\n this.endss_,\n this.stride,\n Math.sqrt(squaredTolerance),\n simplifiedFlatCoordinates,\n 0,\n simplifiedEndss\n );\n return new MultiPolygon(simplifiedFlatCoordinates, 'XY', simplifiedEndss);\n }\n\n /**\n * Return the polygon at the specified index.\n * @param {number} index Index.\n * @return {Polygon} Polygon.\n * @api\n */\n getPolygon(index) {\n if (index < 0 || this.endss_.length <= index) {\n return null;\n }\n let offset;\n if (index === 0) {\n offset = 0;\n } else {\n const prevEnds = this.endss_[index - 1];\n offset = prevEnds[prevEnds.length - 1];\n }\n const ends = this.endss_[index].slice();\n const end = ends[ends.length - 1];\n if (offset !== 0) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n ends[i] -= offset;\n }\n }\n return new Polygon(\n this.flatCoordinates.slice(offset, end),\n this.layout,\n ends\n );\n }\n\n /**\n * Return the polygons of this multipolygon.\n * @return {Array} Polygons.\n * @api\n */\n getPolygons() {\n const layout = this.layout;\n const flatCoordinates = this.flatCoordinates;\n const endss = this.endss_;\n const polygons = [];\n let offset = 0;\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i].slice();\n const end = ends[ends.length - 1];\n if (offset !== 0) {\n for (let j = 0, jj = ends.length; j < jj; ++j) {\n ends[j] -= offset;\n }\n }\n const polygon = new Polygon(\n flatCoordinates.slice(offset, end),\n layout,\n ends\n );\n polygons.push(polygon);\n offset = end;\n }\n return polygons;\n }\n\n /**\n * Get the type of this geometry.\n * @return {import(\"./Geometry.js\").Type} Geometry type.\n * @api\n */\n getType() {\n return 'MultiPolygon';\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n intersectsExtent(extent) {\n return intersectsLinearRingMultiArray(\n this.getOrientedFlatCoordinates(),\n 0,\n this.endss_,\n this.stride,\n extent\n );\n }\n\n /**\n * Set the coordinates of the multipolygon.\n * @param {!Array>>} coordinates Coordinates.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n * @api\n */\n setCoordinates(coordinates, layout) {\n this.setLayout(layout, coordinates, 3);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n const endss = deflateMultiCoordinatesArray(\n this.flatCoordinates,\n 0,\n coordinates,\n this.stride,\n this.endss_\n );\n if (endss.length === 0) {\n this.flatCoordinates.length = 0;\n } else {\n const lastEnds = endss[endss.length - 1];\n this.flatCoordinates.length =\n lastEnds.length === 0 ? 0 : lastEnds[lastEnds.length - 1];\n }\n this.changed();\n }\n}\n\nexport default MultiPolygon;\n","/**\n * @module ol/geom/Point\n */\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {containsXY, createOrUpdateFromCoordinate} from '../extent.js';\nimport {deflateCoordinate} from './flat/deflate.js';\nimport {squaredDistance as squaredDx} from '../math.js';\n\n/**\n * @classdesc\n * Point geometry.\n *\n * @api\n */\nclass Point extends SimpleGeometry {\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinates Coordinates.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n */\n constructor(coordinates, layout) {\n super();\n this.setCoordinates(coordinates, layout);\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!Point} Clone.\n * @api\n */\n clone() {\n const point = new Point(this.flatCoordinates.slice(), this.layout);\n point.applyProperties(this);\n return point;\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n const flatCoordinates = this.flatCoordinates;\n const squaredDistance = squaredDx(\n x,\n y,\n flatCoordinates[0],\n flatCoordinates[1]\n );\n if (squaredDistance < minSquaredDistance) {\n const stride = this.stride;\n for (let i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n }\n return minSquaredDistance;\n }\n\n /**\n * Return the coordinate of the point.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinates.\n * @api\n */\n getCoordinates() {\n return !this.flatCoordinates ? [] : this.flatCoordinates.slice();\n }\n\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n computeExtent(extent) {\n return createOrUpdateFromCoordinate(this.flatCoordinates, extent);\n }\n\n /**\n * Get the type of this geometry.\n * @return {import(\"./Geometry.js\").Type} Geometry type.\n * @api\n */\n getType() {\n return 'Point';\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n intersectsExtent(extent) {\n return containsXY(extent, this.flatCoordinates[0], this.flatCoordinates[1]);\n }\n\n /**\n * @param {!Array<*>} coordinates Coordinates.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n * @api\n */\n setCoordinates(coordinates, layout) {\n this.setLayout(layout, coordinates, 0);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinate(\n this.flatCoordinates,\n 0,\n coordinates,\n this.stride\n );\n this.changed();\n }\n}\n\nexport default Point;\n","/**\n * @module ol/geom/LinearRing\n */\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {assignClosestPoint, maxSquaredDelta} from './flat/closest.js';\nimport {closestSquaredDistanceXY} from '../extent.js';\nimport {deflateCoordinates} from './flat/deflate.js';\nimport {douglasPeucker} from './flat/simplify.js';\nimport {inflateCoordinates} from './flat/inflate.js';\nimport {linearRing as linearRingArea} from './flat/area.js';\n\n/**\n * @classdesc\n * Linear ring geometry. Only used as part of polygon; cannot be rendered\n * on its own.\n *\n * @api\n */\nclass LinearRing extends SimpleGeometry {\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `layout` are also accepted.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n */\n constructor(coordinates, layout) {\n super();\n\n /**\n * @private\n * @type {number}\n */\n this.maxDelta_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDeltaRevision_ = -1;\n\n if (layout !== undefined && !Array.isArray(coordinates[0])) {\n this.setFlatCoordinates(\n layout,\n /** @type {Array} */ (coordinates)\n );\n } else {\n this.setCoordinates(\n /** @type {Array} */ (\n coordinates\n ),\n layout\n );\n }\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!LinearRing} Clone.\n * @api\n */\n clone() {\n return new LinearRing(this.flatCoordinates.slice(), this.layout);\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(\n maxSquaredDelta(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n 0\n )\n );\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n this.maxDelta_,\n true,\n x,\n y,\n closestPoint,\n minSquaredDistance\n );\n }\n\n /**\n * Return the area of the linear ring on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n getArea() {\n return linearRingArea(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride\n );\n }\n\n /**\n * Return the coordinates of the linear ring.\n * @return {Array} Coordinates.\n * @api\n */\n getCoordinates() {\n return inflateCoordinates(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride\n );\n }\n\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {LinearRing} Simplified LinearRing.\n * @protected\n */\n getSimplifiedGeometryInternal(squaredTolerance) {\n const simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n 0\n );\n return new LinearRing(simplifiedFlatCoordinates, 'XY');\n }\n\n /**\n * Get the type of this geometry.\n * @return {import(\"./Geometry.js\").Type} Geometry type.\n * @api\n */\n getType() {\n return 'LinearRing';\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n intersectsExtent(extent) {\n return false;\n }\n\n /**\n * Set the coordinates of the linear ring.\n * @param {!Array} coordinates Coordinates.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n * @api\n */\n setCoordinates(coordinates, layout) {\n this.setLayout(layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(\n this.flatCoordinates,\n 0,\n coordinates,\n this.stride\n );\n this.changed();\n }\n}\n\nexport default LinearRing;\n","/**\n * @module ol/geom/Polygon\n */\nimport LinearRing from './LinearRing.js';\nimport Point from './Point.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {arrayMaxSquaredDelta, assignClosestArrayPoint} from './flat/closest.js';\nimport {closestSquaredDistanceXY, getCenter} from '../extent.js';\nimport {deflateCoordinatesArray} from './flat/deflate.js';\nimport {extend} from '../array.js';\nimport {getInteriorPointOfArray} from './flat/interiorpoint.js';\nimport {inflateCoordinatesArray} from './flat/inflate.js';\nimport {intersectsLinearRingArray} from './flat/intersectsextent.js';\nimport {linearRingsAreOriented, orientLinearRings} from './flat/orient.js';\nimport {linearRings as linearRingsArea} from './flat/area.js';\nimport {linearRingsContainsXY} from './flat/contains.js';\nimport {modulo} from '../math.js';\nimport {quantizeArray} from './flat/simplify.js';\nimport {offset as sphereOffset} from '../sphere.js';\n\n/**\n * @classdesc\n * Polygon geometry.\n *\n * @api\n */\nclass Polygon extends SimpleGeometry {\n /**\n * @param {!Array>|!Array} coordinates\n * Array of linear rings that define the polygon. The first linear ring of the\n * array defines the outer-boundary or surface of the polygon. Each subsequent\n * linear ring defines a hole in the surface of the polygon. A linear ring is\n * an array of vertices' coordinates where the first coordinate and the last are\n * equivalent. (For internal use, flat coordinates in combination with\n * `layout` and `ends` are also accepted.)\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n * @param {Array} [ends] Ends (for internal use with flat coordinates).\n */\n constructor(coordinates, layout, ends) {\n super();\n\n /**\n * @type {Array}\n * @private\n */\n this.ends_ = [];\n\n /**\n * @private\n * @type {number}\n */\n this.flatInteriorPointRevision_ = -1;\n\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n this.flatInteriorPoint_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDelta_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDeltaRevision_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.orientedRevision_ = -1;\n\n /**\n * @private\n * @type {Array}\n */\n this.orientedFlatCoordinates_ = null;\n\n if (layout !== undefined && ends) {\n this.setFlatCoordinates(\n layout,\n /** @type {Array} */ (coordinates)\n );\n this.ends_ = ends;\n } else {\n this.setCoordinates(\n /** @type {Array>} */ (\n coordinates\n ),\n layout\n );\n }\n }\n\n /**\n * Append the passed linear ring to this polygon.\n * @param {LinearRing} linearRing Linear ring.\n * @api\n */\n appendLinearRing(linearRing) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = linearRing.getFlatCoordinates().slice();\n } else {\n extend(this.flatCoordinates, linearRing.getFlatCoordinates());\n }\n this.ends_.push(this.flatCoordinates.length);\n this.changed();\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!Polygon} Clone.\n * @api\n */\n clone() {\n const polygon = new Polygon(\n this.flatCoordinates.slice(),\n this.layout,\n this.ends_.slice()\n );\n polygon.applyProperties(this);\n return polygon;\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(\n arrayMaxSquaredDelta(\n this.flatCoordinates,\n 0,\n this.ends_,\n this.stride,\n 0\n )\n );\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestArrayPoint(\n this.flatCoordinates,\n 0,\n this.ends_,\n this.stride,\n this.maxDelta_,\n true,\n x,\n y,\n closestPoint,\n minSquaredDistance\n );\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n containsXY(x, y) {\n return linearRingsContainsXY(\n this.getOrientedFlatCoordinates(),\n 0,\n this.ends_,\n this.stride,\n x,\n y\n );\n }\n\n /**\n * Return the area of the polygon on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n getArea() {\n return linearRingsArea(\n this.getOrientedFlatCoordinates(),\n 0,\n this.ends_,\n this.stride\n );\n }\n\n /**\n * Get the coordinate array for this geometry. This array has the structure\n * of a GeoJSON coordinate array for polygons.\n *\n * @param {boolean} [right] Orient coordinates according to the right-hand\n * rule (counter-clockwise for exterior and clockwise for interior rings).\n * If `false`, coordinates will be oriented according to the left-hand rule\n * (clockwise for exterior and counter-clockwise for interior rings).\n * By default, coordinate orientation will depend on how the geometry was\n * constructed.\n * @return {Array>} Coordinates.\n * @api\n */\n getCoordinates(right) {\n let flatCoordinates;\n if (right !== undefined) {\n flatCoordinates = this.getOrientedFlatCoordinates().slice();\n orientLinearRings(flatCoordinates, 0, this.ends_, this.stride, right);\n } else {\n flatCoordinates = this.flatCoordinates;\n }\n\n return inflateCoordinatesArray(flatCoordinates, 0, this.ends_, this.stride);\n }\n\n /**\n * @return {Array} Ends.\n */\n getEnds() {\n return this.ends_;\n }\n\n /**\n * @return {Array} Interior point.\n */\n getFlatInteriorPoint() {\n if (this.flatInteriorPointRevision_ != this.getRevision()) {\n const flatCenter = getCenter(this.getExtent());\n this.flatInteriorPoint_ = getInteriorPointOfArray(\n this.getOrientedFlatCoordinates(),\n 0,\n this.ends_,\n this.stride,\n flatCenter,\n 0\n );\n this.flatInteriorPointRevision_ = this.getRevision();\n }\n return this.flatInteriorPoint_;\n }\n\n /**\n * Return an interior point of the polygon.\n * @return {Point} Interior point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n * @api\n */\n getInteriorPoint() {\n return new Point(this.getFlatInteriorPoint(), 'XYM');\n }\n\n /**\n * Return the number of rings of the polygon, this includes the exterior\n * ring and any interior rings.\n *\n * @return {number} Number of rings.\n * @api\n */\n getLinearRingCount() {\n return this.ends_.length;\n }\n\n /**\n * Return the Nth linear ring of the polygon geometry. Return `null` if the\n * given index is out of range.\n * The exterior linear ring is available at index `0` and the interior rings\n * at index `1` and beyond.\n *\n * @param {number} index Index.\n * @return {LinearRing|null} Linear ring.\n * @api\n */\n getLinearRing(index) {\n if (index < 0 || this.ends_.length <= index) {\n return null;\n }\n return new LinearRing(\n this.flatCoordinates.slice(\n index === 0 ? 0 : this.ends_[index - 1],\n this.ends_[index]\n ),\n this.layout\n );\n }\n\n /**\n * Return the linear rings of the polygon.\n * @return {Array} Linear rings.\n * @api\n */\n getLinearRings() {\n const layout = this.layout;\n const flatCoordinates = this.flatCoordinates;\n const ends = this.ends_;\n const linearRings = [];\n let offset = 0;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n const linearRing = new LinearRing(\n flatCoordinates.slice(offset, end),\n layout\n );\n linearRings.push(linearRing);\n offset = end;\n }\n return linearRings;\n }\n\n /**\n * @return {Array} Oriented flat coordinates.\n */\n getOrientedFlatCoordinates() {\n if (this.orientedRevision_ != this.getRevision()) {\n const flatCoordinates = this.flatCoordinates;\n if (linearRingsAreOriented(flatCoordinates, 0, this.ends_, this.stride)) {\n this.orientedFlatCoordinates_ = flatCoordinates;\n } else {\n this.orientedFlatCoordinates_ = flatCoordinates.slice();\n this.orientedFlatCoordinates_.length = orientLinearRings(\n this.orientedFlatCoordinates_,\n 0,\n this.ends_,\n this.stride\n );\n }\n this.orientedRevision_ = this.getRevision();\n }\n return this.orientedFlatCoordinates_;\n }\n\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Polygon} Simplified Polygon.\n * @protected\n */\n getSimplifiedGeometryInternal(squaredTolerance) {\n const simplifiedFlatCoordinates = [];\n const simplifiedEnds = [];\n simplifiedFlatCoordinates.length = quantizeArray(\n this.flatCoordinates,\n 0,\n this.ends_,\n this.stride,\n Math.sqrt(squaredTolerance),\n simplifiedFlatCoordinates,\n 0,\n simplifiedEnds\n );\n return new Polygon(simplifiedFlatCoordinates, 'XY', simplifiedEnds);\n }\n\n /**\n * Get the type of this geometry.\n * @return {import(\"./Geometry.js\").Type} Geometry type.\n * @api\n */\n getType() {\n return 'Polygon';\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n intersectsExtent(extent) {\n return intersectsLinearRingArray(\n this.getOrientedFlatCoordinates(),\n 0,\n this.ends_,\n this.stride,\n extent\n );\n }\n\n /**\n * Set the coordinates of the polygon.\n * @param {!Array>} coordinates Coordinates.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n * @api\n */\n setCoordinates(coordinates, layout) {\n this.setLayout(layout, coordinates, 2);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n const ends = deflateCoordinatesArray(\n this.flatCoordinates,\n 0,\n coordinates,\n this.stride,\n this.ends_\n );\n this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1];\n this.changed();\n }\n}\n\nexport default Polygon;\n\n/**\n * Create an approximation of a circle on the surface of a sphere.\n * @param {import(\"../coordinate.js\").Coordinate} center Center (`[lon, lat]` in degrees).\n * @param {number} radius The great-circle distance from the center to\n * the polygon vertices in meters.\n * @param {number} [n] Optional number of vertices for the resulting\n * polygon. Default is `32`.\n * @param {number} [sphereRadius] Optional radius for the sphere (defaults to\n * the Earth's mean radius using the WGS84 ellipsoid).\n * @return {Polygon} The \"circular\" polygon.\n * @api\n */\nexport function circular(center, radius, n, sphereRadius) {\n n = n ? n : 32;\n /** @type {Array} */\n const flatCoordinates = [];\n for (let i = 0; i < n; ++i) {\n extend(\n flatCoordinates,\n sphereOffset(center, radius, (2 * Math.PI * i) / n, sphereRadius)\n );\n }\n flatCoordinates.push(flatCoordinates[0], flatCoordinates[1]);\n return new Polygon(flatCoordinates, 'XY', [flatCoordinates.length]);\n}\n\n/**\n * Create a polygon from an extent. The layout used is `XY`.\n * @param {import(\"../extent.js\").Extent} extent The extent.\n * @return {Polygon} The polygon.\n * @api\n */\nexport function fromExtent(extent) {\n const minX = extent[0];\n const minY = extent[1];\n const maxX = extent[2];\n const maxY = extent[3];\n const flatCoordinates = [\n minX,\n minY,\n minX,\n maxY,\n maxX,\n maxY,\n maxX,\n minY,\n minX,\n minY,\n ];\n return new Polygon(flatCoordinates, 'XY', [flatCoordinates.length]);\n}\n\n/**\n * Create a regular polygon from a circle.\n * @param {import(\"./Circle.js\").default} circle Circle geometry.\n * @param {number} [sides] Number of sides of the polygon. Default is 32.\n * @param {number} [angle] Start angle for the first vertex of the polygon in\n * counter-clockwise radians. 0 means East. Default is 0.\n * @return {Polygon} Polygon geometry.\n * @api\n */\nexport function fromCircle(circle, sides, angle) {\n sides = sides ? sides : 32;\n const stride = circle.getStride();\n const layout = circle.getLayout();\n const center = circle.getCenter();\n const arrayLength = stride * (sides + 1);\n const flatCoordinates = new Array(arrayLength);\n for (let i = 0; i < arrayLength; i += stride) {\n flatCoordinates[i] = 0;\n flatCoordinates[i + 1] = 0;\n for (let j = 2; j < stride; j++) {\n flatCoordinates[i + j] = center[j];\n }\n }\n const ends = [flatCoordinates.length];\n const polygon = new Polygon(flatCoordinates, layout, ends);\n makeRegular(polygon, center, circle.getRadius(), angle);\n return polygon;\n}\n\n/**\n * Modify the coordinates of a polygon to make it a regular polygon.\n * @param {Polygon} polygon Polygon geometry.\n * @param {import(\"../coordinate.js\").Coordinate} center Center of the regular polygon.\n * @param {number} radius Radius of the regular polygon.\n * @param {number} [angle] Start angle for the first vertex of the polygon in\n * counter-clockwise radians. 0 means East. Default is 0.\n */\nexport function makeRegular(polygon, center, radius, angle) {\n const flatCoordinates = polygon.getFlatCoordinates();\n const stride = polygon.getStride();\n const sides = flatCoordinates.length / stride - 1;\n const startAngle = angle ? angle : 0;\n for (let i = 0; i <= sides; ++i) {\n const offset = i * stride;\n const angle = startAngle + (modulo(i, sides) * 2 * Math.PI) / sides;\n flatCoordinates[offset] = center[0] + radius * Math.cos(angle);\n flatCoordinates[offset + 1] = center[1] + radius * Math.sin(angle);\n }\n polygon.changed();\n}\n","/**\n * @module ol/geom/SimpleGeometry\n */\nimport Geometry from './Geometry.js';\nimport {abstract} from '../util.js';\nimport {createOrUpdateFromFlatCoordinates, getCenter} from '../extent.js';\nimport {rotate, scale, transform2D, translate} from './flat/transform.js';\n\n/**\n * @classdesc\n * Abstract base class; only used for creating subclasses; do not instantiate\n * in apps, as cannot be rendered.\n *\n * @abstract\n * @api\n */\nclass SimpleGeometry extends Geometry {\n constructor() {\n super();\n\n /**\n * @protected\n * @type {import(\"./Geometry.js\").GeometryLayout}\n */\n this.layout = 'XY';\n\n /**\n * @protected\n * @type {number}\n */\n this.stride = 2;\n\n /**\n * @protected\n * @type {Array}\n */\n this.flatCoordinates = null;\n }\n\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n computeExtent(extent) {\n return createOrUpdateFromFlatCoordinates(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n extent\n );\n }\n\n /**\n * @abstract\n * @return {Array<*> | null} Coordinates.\n */\n getCoordinates() {\n return abstract();\n }\n\n /**\n * Return the first coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} First coordinate.\n * @api\n */\n getFirstCoordinate() {\n return this.flatCoordinates.slice(0, this.stride);\n }\n\n /**\n * @return {Array} Flat coordinates.\n */\n getFlatCoordinates() {\n return this.flatCoordinates;\n }\n\n /**\n * Return the last coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} Last point.\n * @api\n */\n getLastCoordinate() {\n return this.flatCoordinates.slice(\n this.flatCoordinates.length - this.stride\n );\n }\n\n /**\n * Return the {@link import(\"./Geometry.js\").GeometryLayout layout} of the geometry.\n * @return {import(\"./Geometry.js\").GeometryLayout} Layout.\n * @api\n */\n getLayout() {\n return this.layout;\n }\n\n /**\n * Create a simplified version of this geometry using the Douglas Peucker algorithm.\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n */\n getSimplifiedGeometry(squaredTolerance) {\n if (this.simplifiedGeometryRevision !== this.getRevision()) {\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n this.simplifiedGeometryRevision = this.getRevision();\n }\n // If squaredTolerance is negative or if we know that simplification will not\n // have any effect then just return this.\n if (\n squaredTolerance < 0 ||\n (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n squaredTolerance <= this.simplifiedGeometryMaxMinSquaredTolerance)\n ) {\n return this;\n }\n\n const simplifiedGeometry =\n this.getSimplifiedGeometryInternal(squaredTolerance);\n const simplifiedFlatCoordinates = simplifiedGeometry.getFlatCoordinates();\n if (simplifiedFlatCoordinates.length < this.flatCoordinates.length) {\n return simplifiedGeometry;\n }\n // Simplification did not actually remove any coordinates. We now know\n // that any calls to getSimplifiedGeometry with a squaredTolerance less\n // than or equal to the current squaredTolerance will also not have any\n // effect. This allows us to short circuit simplification (saving CPU\n // cycles) and prevents the cache of simplified geometries from filling\n // up with useless identical copies of this geometry (saving memory).\n this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;\n return this;\n }\n\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n * @protected\n */\n getSimplifiedGeometryInternal(squaredTolerance) {\n return this;\n }\n\n /**\n * @return {number} Stride.\n */\n getStride() {\n return this.stride;\n }\n\n /**\n * @param {import(\"./Geometry.js\").GeometryLayout} layout Layout.\n * @param {Array} flatCoordinates Flat coordinates.\n */\n setFlatCoordinates(layout, flatCoordinates) {\n this.stride = getStrideForLayout(layout);\n this.layout = layout;\n this.flatCoordinates = flatCoordinates;\n }\n\n /**\n * @abstract\n * @param {!Array<*>} coordinates Coordinates.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n */\n setCoordinates(coordinates, layout) {\n abstract();\n }\n\n /**\n * @param {import(\"./Geometry.js\").GeometryLayout|undefined} layout Layout.\n * @param {Array<*>} coordinates Coordinates.\n * @param {number} nesting Nesting.\n * @protected\n */\n setLayout(layout, coordinates, nesting) {\n /** @type {number} */\n let stride;\n if (layout) {\n stride = getStrideForLayout(layout);\n } else {\n for (let i = 0; i < nesting; ++i) {\n if (coordinates.length === 0) {\n this.layout = 'XY';\n this.stride = 2;\n return;\n }\n coordinates = /** @type {Array} */ (coordinates[0]);\n }\n stride = coordinates.length;\n layout = getLayoutForStride(stride);\n }\n this.layout = layout;\n this.stride = stride;\n }\n\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n * @api\n */\n applyTransform(transformFn) {\n if (this.flatCoordinates) {\n transformFn(this.flatCoordinates, this.flatCoordinates, this.stride);\n this.changed();\n }\n }\n\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @param {number} angle Rotation angle in counter-clockwise radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n rotate(angle, anchor) {\n const flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n const stride = this.getStride();\n rotate(\n flatCoordinates,\n 0,\n flatCoordinates.length,\n stride,\n angle,\n anchor,\n flatCoordinates\n );\n this.changed();\n }\n }\n\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number} [sy] The scaling factor in the y-direction (defaults to sx).\n * @param {import(\"../coordinate.js\").Coordinate} [anchor] The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n scale(sx, sy, anchor) {\n if (sy === undefined) {\n sy = sx;\n }\n if (!anchor) {\n anchor = getCenter(this.getExtent());\n }\n const flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n const stride = this.getStride();\n scale(\n flatCoordinates,\n 0,\n flatCoordinates.length,\n stride,\n sx,\n sy,\n anchor,\n flatCoordinates\n );\n this.changed();\n }\n }\n\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n translate(deltaX, deltaY) {\n const flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n const stride = this.getStride();\n translate(\n flatCoordinates,\n 0,\n flatCoordinates.length,\n stride,\n deltaX,\n deltaY,\n flatCoordinates\n );\n this.changed();\n }\n }\n}\n\n/**\n * @param {number} stride Stride.\n * @return {import(\"./Geometry.js\").GeometryLayout} layout Layout.\n */\nfunction getLayoutForStride(stride) {\n let layout;\n if (stride == 2) {\n layout = 'XY';\n } else if (stride == 3) {\n layout = 'XYZ';\n } else if (stride == 4) {\n layout = 'XYZM';\n }\n return /** @type {import(\"./Geometry.js\").GeometryLayout} */ (layout);\n}\n\n/**\n * @param {import(\"./Geometry.js\").GeometryLayout} layout Layout.\n * @return {number} Stride.\n */\nexport function getStrideForLayout(layout) {\n let stride;\n if (layout == 'XY') {\n stride = 2;\n } else if (layout == 'XYZ' || layout == 'XYM') {\n stride = 3;\n } else if (layout == 'XYZM') {\n stride = 4;\n }\n return /** @type {number} */ (stride);\n}\n\n/**\n * @param {SimpleGeometry} simpleGeometry Simple geometry.\n * @param {import(\"../transform.js\").Transform} transform Transform.\n * @param {Array} [dest] Destination.\n * @return {Array} Transformed flat coordinates.\n */\nexport function transformGeom2D(simpleGeometry, transform, dest) {\n const flatCoordinates = simpleGeometry.getFlatCoordinates();\n if (!flatCoordinates) {\n return null;\n }\n const stride = simpleGeometry.getStride();\n return transform2D(\n flatCoordinates,\n 0,\n flatCoordinates.length,\n stride,\n transform,\n dest\n );\n}\n\nexport default SimpleGeometry;\n","/**\n * @module ol/geom/flat/area\n */\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRing(flatCoordinates, offset, end, stride) {\n let twiceArea = 0;\n let x1 = flatCoordinates[end - stride];\n let y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n const x2 = flatCoordinates[offset];\n const y2 = flatCoordinates[offset + 1];\n twiceArea += y1 * x2 - x1 * y2;\n x1 = x2;\n y1 = y2;\n }\n return twiceArea / 2;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRings(flatCoordinates, offset, ends, stride) {\n let area = 0;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n area += linearRing(flatCoordinates, offset, end, stride);\n offset = end;\n }\n return area;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRingss(flatCoordinates, offset, endss, stride) {\n let area = 0;\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n area += linearRings(flatCoordinates, offset, ends, stride);\n offset = ends[ends.length - 1];\n }\n return area;\n}\n","/**\n * @module ol/geom/flat/center\n */\nimport {createEmpty, createOrUpdateFromFlatCoordinates} from '../../extent.js';\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @return {Array} Flat centers.\n */\nexport function linearRingss(flatCoordinates, offset, endss, stride) {\n const flatCenters = [];\n let extent = createEmpty();\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n extent = createOrUpdateFromFlatCoordinates(\n flatCoordinates,\n offset,\n ends[0],\n stride\n );\n flatCenters.push((extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2);\n offset = ends[ends.length - 1];\n }\n return flatCenters;\n}\n","/**\n * @module ol/geom/flat/closest\n */\nimport {lerp, squaredDistance as squaredDx} from '../../math.js';\n\n/**\n * Returns the point on the 2D line segment flatCoordinates[offset1] to\n * flatCoordinates[offset2] that is closest to the point (x, y). Extra\n * dimensions are linearly interpolated.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset1 Offset 1.\n * @param {number} offset2 Offset 2.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n */\nfunction assignClosest(\n flatCoordinates,\n offset1,\n offset2,\n stride,\n x,\n y,\n closestPoint\n) {\n const x1 = flatCoordinates[offset1];\n const y1 = flatCoordinates[offset1 + 1];\n const dx = flatCoordinates[offset2] - x1;\n const dy = flatCoordinates[offset2 + 1] - y1;\n let offset;\n if (dx === 0 && dy === 0) {\n offset = offset1;\n } else {\n const t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n offset = offset2;\n } else if (t > 0) {\n for (let i = 0; i < stride; ++i) {\n closestPoint[i] = lerp(\n flatCoordinates[offset1 + i],\n flatCoordinates[offset2 + i],\n t\n );\n }\n closestPoint.length = stride;\n return;\n } else {\n offset = offset1;\n }\n }\n for (let i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n}\n\n/**\n * Return the squared of the largest distance between any pair of consecutive\n * coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function maxSquaredDelta(flatCoordinates, offset, end, stride, max) {\n let x1 = flatCoordinates[offset];\n let y1 = flatCoordinates[offset + 1];\n for (offset += stride; offset < end; offset += stride) {\n const x2 = flatCoordinates[offset];\n const y2 = flatCoordinates[offset + 1];\n const squaredDelta = squaredDx(x1, y1, x2, y2);\n if (squaredDelta > max) {\n max = squaredDelta;\n }\n x1 = x2;\n y1 = y2;\n }\n return max;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function arrayMaxSquaredDelta(\n flatCoordinates,\n offset,\n ends,\n stride,\n max\n) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n max = maxSquaredDelta(flatCoordinates, offset, end, stride, max);\n offset = end;\n }\n return max;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function multiArrayMaxSquaredDelta(\n flatCoordinates,\n offset,\n endss,\n stride,\n max\n) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n max = arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max);\n offset = ends[ends.length - 1];\n }\n return max;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array} [tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestPoint(\n flatCoordinates,\n offset,\n end,\n stride,\n maxDelta,\n isRing,\n x,\n y,\n closestPoint,\n minSquaredDistance,\n tmpPoint\n) {\n if (offset == end) {\n return minSquaredDistance;\n }\n let i, squaredDistance;\n if (maxDelta === 0) {\n // All points are identical, so just test the first point.\n squaredDistance = squaredDx(\n x,\n y,\n flatCoordinates[offset],\n flatCoordinates[offset + 1]\n );\n if (squaredDistance < minSquaredDistance) {\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n }\n return minSquaredDistance;\n }\n tmpPoint = tmpPoint ? tmpPoint : [NaN, NaN];\n let index = offset + stride;\n while (index < end) {\n assignClosest(\n flatCoordinates,\n index - stride,\n index,\n stride,\n x,\n y,\n tmpPoint\n );\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n index += stride;\n } else {\n // Skip ahead multiple points, because we know that all the skipped\n // points cannot be any closer than the closest point we have found so\n // far. We know this because we know how close the current point is, how\n // close the closest point we have found so far is, and the maximum\n // distance between consecutive points. For example, if we're currently\n // at distance 10, the best we've found so far is 3, and that the maximum\n // distance between consecutive points is 2, then we'll need to skip at\n // least (10 - 3) / 2 == 3 (rounded down) points to have any chance of\n // finding a closer point. We use Math.max(..., 1) to ensure that we\n // always advance at least one point, to avoid an infinite loop.\n index +=\n stride *\n Math.max(\n ((Math.sqrt(squaredDistance) - Math.sqrt(minSquaredDistance)) /\n maxDelta) |\n 0,\n 1\n );\n }\n }\n if (isRing) {\n // Check the closing segment.\n assignClosest(\n flatCoordinates,\n end - stride,\n offset,\n stride,\n x,\n y,\n tmpPoint\n );\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n }\n }\n return minSquaredDistance;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array} [tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestArrayPoint(\n flatCoordinates,\n offset,\n ends,\n stride,\n maxDelta,\n isRing,\n x,\n y,\n closestPoint,\n minSquaredDistance,\n tmpPoint\n) {\n tmpPoint = tmpPoint ? tmpPoint : [NaN, NaN];\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n minSquaredDistance = assignClosestPoint(\n flatCoordinates,\n offset,\n end,\n stride,\n maxDelta,\n isRing,\n x,\n y,\n closestPoint,\n minSquaredDistance,\n tmpPoint\n );\n offset = end;\n }\n return minSquaredDistance;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array} [tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestMultiArrayPoint(\n flatCoordinates,\n offset,\n endss,\n stride,\n maxDelta,\n isRing,\n x,\n y,\n closestPoint,\n minSquaredDistance,\n tmpPoint\n) {\n tmpPoint = tmpPoint ? tmpPoint : [NaN, NaN];\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n minSquaredDistance = assignClosestArrayPoint(\n flatCoordinates,\n offset,\n ends,\n stride,\n maxDelta,\n isRing,\n x,\n y,\n closestPoint,\n minSquaredDistance,\n tmpPoint\n );\n offset = ends[ends.length - 1];\n }\n return minSquaredDistance;\n}\n","/**\n * @module ol/geom/flat/contains\n */\nimport {forEachCorner} from '../../extent.js';\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} Contains extent.\n */\nexport function linearRingContainsExtent(\n flatCoordinates,\n offset,\n end,\n stride,\n extent\n) {\n const outside = forEachCorner(\n extent,\n /**\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains (x, y).\n */\n function (coordinate) {\n return !linearRingContainsXY(\n flatCoordinates,\n offset,\n end,\n stride,\n coordinate[0],\n coordinate[1]\n );\n }\n );\n return !outside;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingContainsXY(\n flatCoordinates,\n offset,\n end,\n stride,\n x,\n y\n) {\n // https://geomalgorithms.com/a03-_inclusion.html\n // Copyright 2000 softSurfer, 2012 Dan Sunday\n // This code may be freely used and modified for any purpose\n // providing that this copyright notice is included with it.\n // SoftSurfer makes no warranty for this code, and cannot be held\n // liable for any real or imagined damage resulting from its use.\n // Users of this code must verify correctness for their application.\n let wn = 0;\n let x1 = flatCoordinates[end - stride];\n let y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n const x2 = flatCoordinates[offset];\n const y2 = flatCoordinates[offset + 1];\n if (y1 <= y) {\n if (y2 > y && (x2 - x1) * (y - y1) - (x - x1) * (y2 - y1) > 0) {\n wn++;\n }\n } else if (y2 <= y && (x2 - x1) * (y - y1) - (x - x1) * (y2 - y1) < 0) {\n wn--;\n }\n x1 = x2;\n y1 = y2;\n }\n return wn !== 0;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingsContainsXY(\n flatCoordinates,\n offset,\n ends,\n stride,\n x,\n y\n) {\n if (ends.length === 0) {\n return false;\n }\n if (!linearRingContainsXY(flatCoordinates, offset, ends[0], stride, x, y)) {\n return false;\n }\n for (let i = 1, ii = ends.length; i < ii; ++i) {\n if (\n linearRingContainsXY(flatCoordinates, ends[i - 1], ends[i], stride, x, y)\n ) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingssContainsXY(\n flatCoordinates,\n offset,\n endss,\n stride,\n x,\n y\n) {\n if (endss.length === 0) {\n return false;\n }\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n","/**\n * @module ol/geom/flat/deflate\n */\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinate(flatCoordinates, offset, coordinate, stride) {\n for (let i = 0, ii = coordinate.length; i < ii; ++i) {\n flatCoordinates[offset++] = coordinate[i];\n }\n return offset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} coordinates Coordinates.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinates(\n flatCoordinates,\n offset,\n coordinates,\n stride\n) {\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n const coordinate = coordinates[i];\n for (let j = 0; j < stride; ++j) {\n flatCoordinates[offset++] = coordinate[j];\n }\n }\n return offset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} coordinatess Coordinatess.\n * @param {number} stride Stride.\n * @param {Array} [ends] Ends.\n * @return {Array} Ends.\n */\nexport function deflateCoordinatesArray(\n flatCoordinates,\n offset,\n coordinatess,\n stride,\n ends\n) {\n ends = ends ? ends : [];\n let i = 0;\n for (let j = 0, jj = coordinatess.length; j < jj; ++j) {\n const end = deflateCoordinates(\n flatCoordinates,\n offset,\n coordinatess[j],\n stride\n );\n ends[i++] = end;\n offset = end;\n }\n ends.length = i;\n return ends;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>>} coordinatesss Coordinatesss.\n * @param {number} stride Stride.\n * @param {Array>} [endss] Endss.\n * @return {Array>} Endss.\n */\nexport function deflateMultiCoordinatesArray(\n flatCoordinates,\n offset,\n coordinatesss,\n stride,\n endss\n) {\n endss = endss ? endss : [];\n let i = 0;\n for (let j = 0, jj = coordinatesss.length; j < jj; ++j) {\n const ends = deflateCoordinatesArray(\n flatCoordinates,\n offset,\n coordinatesss[j],\n stride,\n endss[i]\n );\n if (ends.length === 0) {\n ends[0] = offset;\n }\n endss[i++] = ends;\n offset = ends[ends.length - 1];\n }\n endss.length = i;\n return endss;\n}\n","/**\n * @module ol/geom/flat/inflate\n */\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Array} [coordinates] Coordinates.\n * @return {Array} Coordinates.\n */\nexport function inflateCoordinates(\n flatCoordinates,\n offset,\n end,\n stride,\n coordinates\n) {\n coordinates = coordinates !== undefined ? coordinates : [];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n coordinates[i++] = flatCoordinates.slice(j, j + stride);\n }\n coordinates.length = i;\n return coordinates;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array>} [coordinatess] Coordinatess.\n * @return {Array>} Coordinatess.\n */\nexport function inflateCoordinatesArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n coordinatess\n) {\n coordinatess = coordinatess !== undefined ? coordinatess : [];\n let i = 0;\n for (let j = 0, jj = ends.length; j < jj; ++j) {\n const end = ends[j];\n coordinatess[i++] = inflateCoordinates(\n flatCoordinates,\n offset,\n end,\n stride,\n coordinatess[i]\n );\n offset = end;\n }\n coordinatess.length = i;\n return coordinatess;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array>>} [coordinatesss]\n * Coordinatesss.\n * @return {Array>>} Coordinatesss.\n */\nexport function inflateMultiCoordinatesArray(\n flatCoordinates,\n offset,\n endss,\n stride,\n coordinatesss\n) {\n coordinatesss = coordinatesss !== undefined ? coordinatesss : [];\n let i = 0;\n for (let j = 0, jj = endss.length; j < jj; ++j) {\n const ends = endss[j];\n coordinatesss[i++] =\n ends.length === 1 && ends[0] === offset\n ? []\n : inflateCoordinatesArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n coordinatesss[i]\n );\n offset = ends[ends.length - 1];\n }\n coordinatesss.length = i;\n return coordinatesss;\n}\n","/**\n * @module ol/geom/flat/interiorpoint\n */\nimport {ascending} from '../../array.js';\nimport {linearRingsContainsXY} from './contains.js';\n\n/**\n * Calculates a point that is likely to lie in the interior of the linear rings.\n * Inspired by JTS's com.vividsolutions.jts.geom.Geometry#getInteriorPoint.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @param {number} flatCentersOffset Flat center offset.\n * @param {Array} [dest] Destination.\n * @return {Array} Destination point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointOfArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n flatCenters,\n flatCentersOffset,\n dest\n) {\n let i, ii, x, x1, x2, y1, y2;\n const y = flatCenters[flatCentersOffset + 1];\n /** @type {Array} */\n const intersections = [];\n // Calculate intersections with the horizontal line\n for (let r = 0, rr = ends.length; r < rr; ++r) {\n const end = ends[r];\n x1 = flatCoordinates[end - stride];\n y1 = flatCoordinates[end - stride + 1];\n for (i = offset; i < end; i += stride) {\n x2 = flatCoordinates[i];\n y2 = flatCoordinates[i + 1];\n if ((y <= y1 && y2 <= y) || (y1 <= y && y <= y2)) {\n x = ((y - y1) / (y2 - y1)) * (x2 - x1) + x1;\n intersections.push(x);\n }\n x1 = x2;\n y1 = y2;\n }\n }\n // Find the longest segment of the horizontal line that has its center point\n // inside the linear ring.\n let pointX = NaN;\n let maxSegmentLength = -Infinity;\n intersections.sort(ascending);\n x1 = intersections[0];\n for (i = 1, ii = intersections.length; i < ii; ++i) {\n x2 = intersections[i];\n const segmentLength = Math.abs(x2 - x1);\n if (segmentLength > maxSegmentLength) {\n x = (x1 + x2) / 2;\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n pointX = x;\n maxSegmentLength = segmentLength;\n }\n }\n x1 = x2;\n }\n if (isNaN(pointX)) {\n // There is no horizontal line that has its center point inside the linear\n // ring. Use the center of the the linear ring's extent.\n pointX = flatCenters[flatCentersOffset];\n }\n if (dest) {\n dest.push(pointX, y, maxSegmentLength);\n return dest;\n }\n return [pointX, y, maxSegmentLength];\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @return {Array} Interior points as XYM coordinates, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointsOfMultiArray(\n flatCoordinates,\n offset,\n endss,\n stride,\n flatCenters\n) {\n let interiorPoints = [];\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n interiorPoints = getInteriorPointOfArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n flatCenters,\n 2 * i,\n interiorPoints\n );\n offset = ends[ends.length - 1];\n }\n return interiorPoints;\n}\n","/**\n * @module ol/geom/flat/interpolate\n */\nimport {binarySearch} from '../../array.js';\nimport {lerp} from '../../math.js';\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} fraction Fraction.\n * @param {Array} [dest] Destination.\n * @param {number} [dimension] Destination dimension (default is `2`)\n * @return {Array} Destination.\n */\nexport function interpolatePoint(\n flatCoordinates,\n offset,\n end,\n stride,\n fraction,\n dest,\n dimension\n) {\n let o, t;\n const n = (end - offset) / stride;\n if (n === 1) {\n o = offset;\n } else if (n === 2) {\n o = offset;\n t = fraction;\n } else if (n !== 0) {\n let x1 = flatCoordinates[offset];\n let y1 = flatCoordinates[offset + 1];\n let length = 0;\n const cumulativeLengths = [0];\n for (let i = offset + stride; i < end; i += stride) {\n const x2 = flatCoordinates[i];\n const y2 = flatCoordinates[i + 1];\n length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n cumulativeLengths.push(length);\n x1 = x2;\n y1 = y2;\n }\n const target = fraction * length;\n const index = binarySearch(cumulativeLengths, target);\n if (index < 0) {\n t =\n (target - cumulativeLengths[-index - 2]) /\n (cumulativeLengths[-index - 1] - cumulativeLengths[-index - 2]);\n o = offset + (-index - 2) * stride;\n } else {\n o = offset + index * stride;\n }\n }\n dimension = dimension > 1 ? dimension : 2;\n dest = dest ? dest : new Array(dimension);\n for (let i = 0; i < dimension; ++i) {\n dest[i] =\n o === undefined\n ? NaN\n : t === undefined\n ? flatCoordinates[o + i]\n : lerp(flatCoordinates[o + i], flatCoordinates[o + stride + i], t);\n }\n return dest;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @return {import(\"../../coordinate.js\").Coordinate|null} Coordinate.\n */\nexport function lineStringCoordinateAtM(\n flatCoordinates,\n offset,\n end,\n stride,\n m,\n extrapolate\n) {\n if (end == offset) {\n return null;\n }\n let coordinate;\n if (m < flatCoordinates[offset + stride - 1]) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(offset, offset + stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n return null;\n }\n if (flatCoordinates[end - 1] < m) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(end - stride, end);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n return null;\n }\n // FIXME use O(1) search\n if (m == flatCoordinates[offset + stride - 1]) {\n return flatCoordinates.slice(offset, offset + stride);\n }\n let lo = offset / stride;\n let hi = end / stride;\n while (lo < hi) {\n const mid = (lo + hi) >> 1;\n if (m < flatCoordinates[(mid + 1) * stride - 1]) {\n hi = mid;\n } else {\n lo = mid + 1;\n }\n }\n const m0 = flatCoordinates[lo * stride - 1];\n if (m == m0) {\n return flatCoordinates.slice((lo - 1) * stride, (lo - 1) * stride + stride);\n }\n const m1 = flatCoordinates[(lo + 1) * stride - 1];\n const t = (m - m0) / (m1 - m0);\n coordinate = [];\n for (let i = 0; i < stride - 1; ++i) {\n coordinate.push(\n lerp(\n flatCoordinates[(lo - 1) * stride + i],\n flatCoordinates[lo * stride + i],\n t\n )\n );\n }\n coordinate.push(m);\n return coordinate;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @param {boolean} interpolate Interpolate.\n * @return {import(\"../../coordinate.js\").Coordinate|null} Coordinate.\n */\nexport function lineStringsCoordinateAtM(\n flatCoordinates,\n offset,\n ends,\n stride,\n m,\n extrapolate,\n interpolate\n) {\n if (interpolate) {\n return lineStringCoordinateAtM(\n flatCoordinates,\n offset,\n ends[ends.length - 1],\n stride,\n m,\n extrapolate\n );\n }\n let coordinate;\n if (m < flatCoordinates[stride - 1]) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(0, stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n return null;\n }\n if (flatCoordinates[flatCoordinates.length - 1] < m) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(flatCoordinates.length - stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n return null;\n }\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n if (offset == end) {\n continue;\n }\n if (m < flatCoordinates[offset + stride - 1]) {\n return null;\n }\n if (m <= flatCoordinates[end - 1]) {\n return lineStringCoordinateAtM(\n flatCoordinates,\n offset,\n end,\n stride,\n m,\n false\n );\n }\n offset = end;\n }\n return null;\n}\n","/**\n * @module ol/geom/flat/intersectsextent\n */\nimport {\n containsExtent,\n createEmpty,\n extendFlatCoordinates,\n intersects,\n intersectsSegment,\n} from '../../extent.js';\nimport {forEach as forEachSegment} from './segments.js';\nimport {linearRingContainsExtent, linearRingContainsXY} from './contains.js';\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineString(\n flatCoordinates,\n offset,\n end,\n stride,\n extent\n) {\n const coordinatesExtent = extendFlatCoordinates(\n createEmpty(),\n flatCoordinates,\n offset,\n end,\n stride\n );\n if (!intersects(extent, coordinatesExtent)) {\n return false;\n }\n if (containsExtent(extent, coordinatesExtent)) {\n return true;\n }\n if (coordinatesExtent[0] >= extent[0] && coordinatesExtent[2] <= extent[2]) {\n return true;\n }\n if (coordinatesExtent[1] >= extent[1] && coordinatesExtent[3] <= extent[3]) {\n return true;\n }\n return forEachSegment(\n flatCoordinates,\n offset,\n end,\n stride,\n /**\n * @param {import(\"../../coordinate.js\").Coordinate} point1 Start point.\n * @param {import(\"../../coordinate.js\").Coordinate} point2 End point.\n * @return {boolean} `true` if the segment and the extent intersect,\n * `false` otherwise.\n */\n function (point1, point2) {\n return intersectsSegment(extent, point1, point2);\n }\n );\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineStringArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n extent\n) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n if (\n intersectsLineString(flatCoordinates, offset, ends[i], stride, extent)\n ) {\n return true;\n }\n offset = ends[i];\n }\n return false;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRing(\n flatCoordinates,\n offset,\n end,\n stride,\n extent\n) {\n if (intersectsLineString(flatCoordinates, offset, end, stride, extent)) {\n return true;\n }\n if (\n linearRingContainsXY(\n flatCoordinates,\n offset,\n end,\n stride,\n extent[0],\n extent[1]\n )\n ) {\n return true;\n }\n if (\n linearRingContainsXY(\n flatCoordinates,\n offset,\n end,\n stride,\n extent[0],\n extent[3]\n )\n ) {\n return true;\n }\n if (\n linearRingContainsXY(\n flatCoordinates,\n offset,\n end,\n stride,\n extent[2],\n extent[1]\n )\n ) {\n return true;\n }\n if (\n linearRingContainsXY(\n flatCoordinates,\n offset,\n end,\n stride,\n extent[2],\n extent[3]\n )\n ) {\n return true;\n }\n return false;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n extent\n) {\n if (!intersectsLinearRing(flatCoordinates, offset, ends[0], stride, extent)) {\n return false;\n }\n if (ends.length === 1) {\n return true;\n }\n for (let i = 1, ii = ends.length; i < ii; ++i) {\n if (\n linearRingContainsExtent(\n flatCoordinates,\n ends[i - 1],\n ends[i],\n stride,\n extent\n )\n ) {\n if (\n !intersectsLineString(\n flatCoordinates,\n ends[i - 1],\n ends[i],\n stride,\n extent\n )\n ) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingMultiArray(\n flatCoordinates,\n offset,\n endss,\n stride,\n extent\n) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n if (\n intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent)\n ) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n","/**\n * @module ol/geom/flat/length\n */\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Length.\n */\nexport function lineStringLength(flatCoordinates, offset, end, stride) {\n let x1 = flatCoordinates[offset];\n let y1 = flatCoordinates[offset + 1];\n let length = 0;\n for (let i = offset + stride; i < end; i += stride) {\n const x2 = flatCoordinates[i];\n const y2 = flatCoordinates[i + 1];\n length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n x1 = x2;\n y1 = y2;\n }\n return length;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Perimeter.\n */\nexport function linearRingLength(flatCoordinates, offset, end, stride) {\n let perimeter = lineStringLength(flatCoordinates, offset, end, stride);\n const dx = flatCoordinates[end - stride] - flatCoordinates[offset];\n const dy = flatCoordinates[end - stride + 1] - flatCoordinates[offset + 1];\n perimeter += Math.sqrt(dx * dx + dy * dy);\n return perimeter;\n}\n","/**\n * @module ol/geom/flat/reverse\n */\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n */\nexport function coordinates(flatCoordinates, offset, end, stride) {\n while (offset < end - stride) {\n for (let i = 0; i < stride; ++i) {\n const tmp = flatCoordinates[offset + i];\n flatCoordinates[offset + i] = flatCoordinates[end - stride + i];\n flatCoordinates[end - stride + i] = tmp;\n }\n offset += stride;\n end -= stride;\n }\n}\n","/**\n * @module ol/geom/flat/orient\n */\nimport {coordinates as reverseCoordinates} from './reverse.js';\n\n/**\n * Is the linear ring oriented clockwise in a coordinate system with a bottom-left\n * coordinate origin? For a coordinate system with a top-left coordinate origin,\n * the ring's orientation is clockwise when this function returns false.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {boolean} Is clockwise.\n */\nexport function linearRingIsClockwise(flatCoordinates, offset, end, stride) {\n // https://stackoverflow.com/q/1165647/clockwise-method#1165943\n // https://github.com/OSGeo/gdal/blob/master/gdal/ogr/ogrlinearring.cpp\n let edge = 0;\n let x1 = flatCoordinates[end - stride];\n let y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n const x2 = flatCoordinates[offset];\n const y2 = flatCoordinates[offset + 1];\n edge += (x2 - x1) * (y2 + y1);\n x1 = x2;\n y1 = y2;\n }\n return edge === 0 ? undefined : edge > 0;\n}\n\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean} [right] Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingsAreOriented(\n flatCoordinates,\n offset,\n ends,\n stride,\n right\n) {\n right = right !== undefined ? right : false;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n const isClockwise = linearRingIsClockwise(\n flatCoordinates,\n offset,\n end,\n stride\n );\n if (i === 0) {\n if ((right && isClockwise) || (!right && !isClockwise)) {\n return false;\n }\n } else {\n if ((right && !isClockwise) || (!right && isClockwise)) {\n return false;\n }\n }\n offset = end;\n }\n return true;\n}\n\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean} [right] Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingssAreOriented(\n flatCoordinates,\n offset,\n endss,\n stride,\n right\n) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n if (!linearRingsAreOriented(flatCoordinates, offset, ends, stride, right)) {\n return false;\n }\n if (ends.length) {\n offset = ends[ends.length - 1];\n }\n }\n return true;\n}\n\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {boolean} [right] Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRings(\n flatCoordinates,\n offset,\n ends,\n stride,\n right\n) {\n right = right !== undefined ? right : false;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n const isClockwise = linearRingIsClockwise(\n flatCoordinates,\n offset,\n end,\n stride\n );\n const reverse =\n i === 0\n ? (right && isClockwise) || (!right && !isClockwise)\n : (right && !isClockwise) || (!right && isClockwise);\n if (reverse) {\n reverseCoordinates(flatCoordinates, offset, end, stride);\n }\n offset = end;\n }\n return offset;\n}\n\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean} [right] Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRingsArray(\n flatCoordinates,\n offset,\n endss,\n stride,\n right\n) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n offset = orientLinearRings(\n flatCoordinates,\n offset,\n endss[i],\n stride,\n right\n );\n }\n return offset;\n}\n\n/**\n * Return a two-dimensional endss\n * @param {Array} flatCoordinates Flat coordinates\n * @param {Array} ends Linear ring end indexes\n * @return {Array>} Two dimensional endss array that can\n * be used to construct a MultiPolygon\n */\nexport function inflateEnds(flatCoordinates, ends) {\n const endss = [];\n let offset = 0;\n let prevEndIndex = 0;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n // classifies an array of rings into polygons with outer rings and holes\n if (!linearRingIsClockwise(flatCoordinates, offset, end, 2)) {\n endss.push(ends.slice(prevEndIndex, i + 1));\n } else {\n if (endss.length === 0) {\n continue;\n }\n endss[endss.length - 1].push(ends[prevEndIndex]);\n }\n prevEndIndex = i + 1;\n offset = end;\n }\n return endss;\n}\n","/**\n * @module ol/geom/flat/segments\n */\n\n/**\n * This function calls `callback` for each segment of the flat coordinates\n * array. If the callback returns a truthy value the function returns that\n * value immediately. Otherwise the function returns `false`.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {function(import(\"../../coordinate.js\").Coordinate, import(\"../../coordinate.js\").Coordinate): T} callback Function\n * called for each segment.\n * @return {T|boolean} Value.\n * @template T\n */\nexport function forEach(flatCoordinates, offset, end, stride, callback) {\n let ret;\n offset += stride;\n for (; offset < end; offset += stride) {\n ret = callback(\n flatCoordinates.slice(offset - stride, offset),\n flatCoordinates.slice(offset, offset + stride)\n );\n if (ret) {\n return ret;\n }\n }\n return false;\n}\n","/**\n * @module ol/geom/flat/simplify\n */\n// Based on simplify-js https://github.com/mourner/simplify-js\n// Copyright (c) 2012, Vladimir Agafonkin\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n//\n// 1. Redistributions of source code must retain the above copyright notice,\n// this list of conditions and the following disclaimer.\n//\n// 2. Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n// POSSIBILITY OF SUCH DAMAGE.\n\nimport {squaredDistance, squaredSegmentDistance} from '../../math.js';\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {boolean} highQuality Highest quality.\n * @param {Array} [simplifiedFlatCoordinates] Simplified flat\n * coordinates.\n * @return {Array} Simplified line string.\n */\nexport function simplifyLineString(\n flatCoordinates,\n offset,\n end,\n stride,\n squaredTolerance,\n highQuality,\n simplifiedFlatCoordinates\n) {\n simplifiedFlatCoordinates =\n simplifiedFlatCoordinates !== undefined ? simplifiedFlatCoordinates : [];\n if (!highQuality) {\n end = radialDistance(\n flatCoordinates,\n offset,\n end,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n 0\n );\n flatCoordinates = simplifiedFlatCoordinates;\n offset = 0;\n stride = 2;\n }\n simplifiedFlatCoordinates.length = douglasPeucker(\n flatCoordinates,\n offset,\n end,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n 0\n );\n return simplifiedFlatCoordinates;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function douglasPeucker(\n flatCoordinates,\n offset,\n end,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset\n) {\n const n = (end - offset) / stride;\n if (n < 3) {\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n /** @type {Array} */\n const markers = new Array(n);\n markers[0] = 1;\n markers[n - 1] = 1;\n /** @type {Array} */\n const stack = [offset, end - stride];\n let index = 0;\n while (stack.length > 0) {\n const last = stack.pop();\n const first = stack.pop();\n let maxSquaredDistance = 0;\n const x1 = flatCoordinates[first];\n const y1 = flatCoordinates[first + 1];\n const x2 = flatCoordinates[last];\n const y2 = flatCoordinates[last + 1];\n for (let i = first + stride; i < last; i += stride) {\n const x = flatCoordinates[i];\n const y = flatCoordinates[i + 1];\n const squaredDistance = squaredSegmentDistance(x, y, x1, y1, x2, y2);\n if (squaredDistance > maxSquaredDistance) {\n index = i;\n maxSquaredDistance = squaredDistance;\n }\n }\n if (maxSquaredDistance > squaredTolerance) {\n markers[(index - offset) / stride] = 1;\n if (first + stride < index) {\n stack.push(first, index);\n }\n if (index + stride < last) {\n stack.push(index, last);\n }\n }\n }\n for (let i = 0; i < n; ++i) {\n if (markers[i]) {\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride + 1];\n }\n }\n return simplifiedOffset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset,\n simplifiedEnds\n) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n simplifiedOffset = douglasPeucker(\n flatCoordinates,\n offset,\n end,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset\n );\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerMultiArray(\n flatCoordinates,\n offset,\n endss,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset,\n simplifiedEndss\n) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n const simplifiedEnds = [];\n simplifiedOffset = douglasPeuckerArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset,\n simplifiedEnds\n );\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function radialDistance(\n flatCoordinates,\n offset,\n end,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset\n) {\n if (end <= offset + stride) {\n // zero or one point, no simplification possible, so copy and return\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n let x1 = flatCoordinates[offset];\n let y1 = flatCoordinates[offset + 1];\n // copy first point\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n let x2 = x1;\n let y2 = y1;\n for (offset += stride; offset < end; offset += stride) {\n x2 = flatCoordinates[offset];\n y2 = flatCoordinates[offset + 1];\n if (squaredDistance(x1, y1, x2, y2) > squaredTolerance) {\n // copy point at offset\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n }\n }\n if (x2 != x1 || y2 != y1) {\n // copy last point\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n }\n return simplifiedOffset;\n}\n\n/**\n * @param {number} value Value.\n * @param {number} tolerance Tolerance.\n * @return {number} Rounded value.\n */\nexport function snap(value, tolerance) {\n return tolerance * Math.round(value / tolerance);\n}\n\n/**\n * Simplifies a line string using an algorithm designed by Tim Schaub.\n * Coordinates are snapped to the nearest value in a virtual grid and\n * consecutive duplicate coordinates are discarded. This effectively preserves\n * topology as the simplification of any subsection of a line string is\n * independent of the rest of the line string. This means that, for examples,\n * the common edge between two polygons will be simplified to the same line\n * string independently in both polygons. This implementation uses a single\n * pass over the coordinates and eliminates intermediate collinear points.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function quantize(\n flatCoordinates,\n offset,\n end,\n stride,\n tolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset\n) {\n // do nothing if the line is empty\n if (offset == end) {\n return simplifiedOffset;\n }\n // snap the first coordinate (P1)\n let x1 = snap(flatCoordinates[offset], tolerance);\n let y1 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // add the first coordinate to the output\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n // find the next coordinate that does not snap to the same value as the first\n // coordinate (P2)\n let x2, y2;\n do {\n x2 = snap(flatCoordinates[offset], tolerance);\n y2 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n if (offset == end) {\n // all coordinates snap to the same value, the line collapses to a point\n // push the last snapped value anyway to ensure that the output contains\n // at least two points\n // FIXME should we really return at least two points anyway?\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n }\n } while (x2 == x1 && y2 == y1);\n while (offset < end) {\n // snap the next coordinate (P3)\n const x3 = snap(flatCoordinates[offset], tolerance);\n const y3 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // skip P3 if it is equal to P2\n if (x3 == x2 && y3 == y2) {\n continue;\n }\n // calculate the delta between P1 and P2\n const dx1 = x2 - x1;\n const dy1 = y2 - y1;\n // calculate the delta between P3 and P1\n const dx2 = x3 - x1;\n const dy2 = y3 - y1;\n // if P1, P2, and P3 are colinear and P3 is further from P1 than P2 is from\n // P1 in the same direction then P2 is on the straight line between P1 and\n // P3\n if (\n dx1 * dy2 == dy1 * dx2 &&\n ((dx1 < 0 && dx2 < dx1) || dx1 == dx2 || (dx1 > 0 && dx2 > dx1)) &&\n ((dy1 < 0 && dy2 < dy1) || dy1 == dy2 || (dy1 > 0 && dy2 > dy1))\n ) {\n // discard P2 and set P2 = P3\n x2 = x3;\n y2 = y3;\n continue;\n }\n // either P1, P2, and P3 are not colinear, or they are colinear but P3 is\n // between P3 and P1 or on the opposite half of the line to P2. add P2,\n // and continue with P1 = P2 and P2 = P3\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n x2 = x3;\n y2 = y3;\n }\n // add the last point (P2)\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function quantizeArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n tolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset,\n simplifiedEnds\n) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n simplifiedOffset = quantize(\n flatCoordinates,\n offset,\n end,\n stride,\n tolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset\n );\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function quantizeMultiArray(\n flatCoordinates,\n offset,\n endss,\n stride,\n tolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset,\n simplifiedEndss\n) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n const simplifiedEnds = [];\n simplifiedOffset = quantizeArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n tolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset,\n simplifiedEnds\n );\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n","/**\n * @module ol/geom/flat/transform\n */\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @param {Array} [dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function transform2D(\n flatCoordinates,\n offset,\n end,\n stride,\n transform,\n dest\n) {\n dest = dest ? dest : [];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n const x = flatCoordinates[j];\n const y = flatCoordinates[j + 1];\n dest[i++] = transform[0] * x + transform[2] * y + transform[4];\n dest[i++] = transform[1] * x + transform[3] * y + transform[5];\n }\n if (dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} angle Angle.\n * @param {Array} anchor Rotation anchor point.\n * @param {Array} [dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function rotate(\n flatCoordinates,\n offset,\n end,\n stride,\n angle,\n anchor,\n dest\n) {\n dest = dest ? dest : [];\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const anchorX = anchor[0];\n const anchorY = anchor[1];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n const deltaX = flatCoordinates[j] - anchorX;\n const deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + deltaX * cos - deltaY * sin;\n dest[i++] = anchorY + deltaX * sin + deltaY * cos;\n for (let k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n\n/**\n * Scale the coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} sx Scale factor in the x-direction.\n * @param {number} sy Scale factor in the y-direction.\n * @param {Array} anchor Scale anchor point.\n * @param {Array} [dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function scale(\n flatCoordinates,\n offset,\n end,\n stride,\n sx,\n sy,\n anchor,\n dest\n) {\n dest = dest ? dest : [];\n const anchorX = anchor[0];\n const anchorY = anchor[1];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n const deltaX = flatCoordinates[j] - anchorX;\n const deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + sx * deltaX;\n dest[i++] = anchorY + sy * deltaY;\n for (let k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @param {Array} [dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function translate(\n flatCoordinates,\n offset,\n end,\n stride,\n deltaX,\n deltaY,\n dest\n) {\n dest = dest ? dest : [];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n dest[i++] = flatCoordinates[j] + deltaX;\n dest[i++] = flatCoordinates[j + 1] + deltaY;\n for (let k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n","/**\n * @module ol/has\n */\n\nconst ua =\n typeof navigator !== 'undefined' && typeof navigator.userAgent !== 'undefined'\n ? navigator.userAgent.toLowerCase()\n : '';\n\n/**\n * User agent string says we are dealing with Firefox as browser.\n * @type {boolean}\n */\nexport const FIREFOX = ua.includes('firefox');\n\n/**\n * User agent string says we are dealing with Safari as browser.\n * @type {boolean}\n */\nexport const SAFARI = ua.includes('safari') && !ua.includes('chrom');\n\n/**\n * https://bugs.webkit.org/show_bug.cgi?id=237906\n * @type {boolean}\n */\nexport const SAFARI_BUG_237906 =\n SAFARI &&\n (ua.includes('version/15.4') ||\n /cpu (os|iphone os) 15_4 like mac os x/.test(ua));\n\n/**\n * User agent string says we are dealing with a WebKit engine.\n * @type {boolean}\n */\nexport const WEBKIT = ua.includes('webkit') && !ua.includes('edge');\n\n/**\n * User agent string says we are dealing with a Mac as platform.\n * @type {boolean}\n */\nexport const MAC = ua.includes('macintosh');\n\n/**\n * The ratio between physical pixels and device-independent pixels\n * (dips) on the device (`window.devicePixelRatio`).\n * @const\n * @type {number}\n * @api\n */\nexport const DEVICE_PIXEL_RATIO =\n typeof devicePixelRatio !== 'undefined' ? devicePixelRatio : 1;\n\n/**\n * The execution context is a worker with OffscreenCanvas available.\n * @const\n * @type {boolean}\n */\nexport const WORKER_OFFSCREEN_CANVAS =\n typeof WorkerGlobalScope !== 'undefined' &&\n typeof OffscreenCanvas !== 'undefined' &&\n self instanceof WorkerGlobalScope; //eslint-disable-line\n\n/**\n * Image.prototype.decode() is supported.\n * @type {boolean}\n */\nexport const IMAGE_DECODE =\n typeof Image !== 'undefined' && Image.prototype.decode;\n\n/**\n * @type {boolean}\n */\nexport const PASSIVE_EVENT_LISTENERS = (function () {\n let passive = false;\n try {\n const options = Object.defineProperty({}, 'passive', {\n get: function () {\n passive = true;\n },\n });\n\n window.addEventListener('_', null, options);\n window.removeEventListener('_', null, options);\n } catch (error) {\n // passive not supported\n }\n return passive;\n})();\n","/**\n * @module ol/layer/Base\n */\nimport BaseObject from '../Object.js';\nimport LayerProperty from './Property.js';\nimport {abstract} from '../util.js';\nimport {assert} from '../asserts.js';\nimport {clamp} from '../math.js';\n\n/**\n * A css color, or a function called with a view resolution returning a css color.\n *\n * @typedef {string|function(number):string} BackgroundColor\n * @api\n */\n\n/**\n * @typedef {import(\"../ObjectEventType\").Types|'change:extent'|'change:maxResolution'|'change:maxZoom'|\n * 'change:minResolution'|'change:minZoom'|'change:opacity'|'change:visible'|'change:zIndex'} BaseLayerObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} BaseLayerOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {BackgroundColor} [background] Background color for the layer. If not specified, no background\n * will be rendered.\n * @property {Object} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Note that with {@link module:ol/layer/Base~BaseLayer} and all its subclasses, any property set in\n * the options is set as a {@link module:ol/Object~BaseObject} property on the layer object, so\n * is observable, and has get/set accessors.\n *\n * @api\n */\nclass BaseLayer extends BaseObject {\n /**\n * @param {Options} options Layer options.\n */\n constructor(options) {\n super();\n\n /***\n * @type {BaseLayerOnSignature}\n */\n this.on;\n\n /***\n * @type {BaseLayerOnSignature}\n */\n this.once;\n\n /***\n * @type {BaseLayerOnSignature}\n */\n this.un;\n\n /**\n * @type {BackgroundColor|false}\n * @private\n */\n this.background_ = options.background;\n\n /**\n * @type {Object}\n */\n const properties = Object.assign({}, options);\n if (typeof options.properties === 'object') {\n delete properties.properties;\n Object.assign(properties, options.properties);\n }\n\n properties[LayerProperty.OPACITY] =\n options.opacity !== undefined ? options.opacity : 1;\n assert(typeof properties[LayerProperty.OPACITY] === 'number', 64); // Layer opacity must be a number\n\n properties[LayerProperty.VISIBLE] =\n options.visible !== undefined ? options.visible : true;\n properties[LayerProperty.Z_INDEX] = options.zIndex;\n properties[LayerProperty.MAX_RESOLUTION] =\n options.maxResolution !== undefined ? options.maxResolution : Infinity;\n properties[LayerProperty.MIN_RESOLUTION] =\n options.minResolution !== undefined ? options.minResolution : 0;\n properties[LayerProperty.MIN_ZOOM] =\n options.minZoom !== undefined ? options.minZoom : -Infinity;\n properties[LayerProperty.MAX_ZOOM] =\n options.maxZoom !== undefined ? options.maxZoom : Infinity;\n\n /**\n * @type {string}\n * @private\n */\n this.className_ =\n properties.className !== undefined ? properties.className : 'ol-layer';\n delete properties.className;\n\n this.setProperties(properties);\n\n /**\n * @type {import(\"./Layer.js\").State}\n * @private\n */\n this.state_ = null;\n }\n\n /**\n * Get the background for this layer.\n * @return {BackgroundColor|false} Layer background.\n */\n getBackground() {\n return this.background_;\n }\n\n /**\n * @return {string} CSS class name.\n */\n getClassName() {\n return this.className_;\n }\n\n /**\n * This method is not meant to be called by layers or layer renderers because the state\n * is incorrect if the layer is included in a layer group.\n *\n * @param {boolean} [managed] Layer is managed.\n * @return {import(\"./Layer.js\").State} Layer state.\n */\n getLayerState(managed) {\n /** @type {import(\"./Layer.js\").State} */\n const state =\n this.state_ ||\n /** @type {?} */ ({\n layer: this,\n managed: managed === undefined ? true : managed,\n });\n const zIndex = this.getZIndex();\n state.opacity = clamp(Math.round(this.getOpacity() * 100) / 100, 0, 1);\n state.visible = this.getVisible();\n state.extent = this.getExtent();\n state.zIndex = zIndex === undefined && !state.managed ? Infinity : zIndex;\n state.maxResolution = this.getMaxResolution();\n state.minResolution = Math.max(this.getMinResolution(), 0);\n state.minZoom = this.getMinZoom();\n state.maxZoom = this.getMaxZoom();\n this.state_ = state;\n\n return state;\n }\n\n /**\n * @abstract\n * @param {Array} [array] Array of layers (to be\n * modified in place).\n * @return {Array} Array of layers.\n */\n getLayersArray(array) {\n return abstract();\n }\n\n /**\n * @abstract\n * @param {Array} [states] Optional list of layer\n * states (to be modified in place).\n * @return {Array} List of layer states.\n */\n getLayerStatesArray(states) {\n return abstract();\n }\n\n /**\n * Return the {@link module:ol/extent~Extent extent} of the layer or `undefined` if it\n * will be visible regardless of extent.\n * @return {import(\"../extent.js\").Extent|undefined} The layer extent.\n * @observable\n * @api\n */\n getExtent() {\n return /** @type {import(\"../extent.js\").Extent|undefined} */ (\n this.get(LayerProperty.EXTENT)\n );\n }\n\n /**\n * Return the maximum resolution of the layer.\n * @return {number} The maximum resolution of the layer.\n * @observable\n * @api\n */\n getMaxResolution() {\n return /** @type {number} */ (this.get(LayerProperty.MAX_RESOLUTION));\n }\n\n /**\n * Return the minimum resolution of the layer.\n * @return {number} The minimum resolution of the layer.\n * @observable\n * @api\n */\n getMinResolution() {\n return /** @type {number} */ (this.get(LayerProperty.MIN_RESOLUTION));\n }\n\n /**\n * Return the minimum zoom level of the layer.\n * @return {number} The minimum zoom level of the layer.\n * @observable\n * @api\n */\n getMinZoom() {\n return /** @type {number} */ (this.get(LayerProperty.MIN_ZOOM));\n }\n\n /**\n * Return the maximum zoom level of the layer.\n * @return {number} The maximum zoom level of the layer.\n * @observable\n * @api\n */\n getMaxZoom() {\n return /** @type {number} */ (this.get(LayerProperty.MAX_ZOOM));\n }\n\n /**\n * Return the opacity of the layer (between 0 and 1).\n * @return {number} The opacity of the layer.\n * @observable\n * @api\n */\n getOpacity() {\n return /** @type {number} */ (this.get(LayerProperty.OPACITY));\n }\n\n /**\n * @abstract\n * @return {import(\"../source/Source.js\").State} Source state.\n */\n getSourceState() {\n return abstract();\n }\n\n /**\n * Return the value of this layer's `visible` property. To find out whether the layer\n * is visible on a map, use `isVisible()` instead.\n * @return {boolean} The value of the `visible` property of the layer.\n * @observable\n * @api\n */\n getVisible() {\n return /** @type {boolean} */ (this.get(LayerProperty.VISIBLE));\n }\n\n /**\n * Return the Z-index of the layer, which is used to order layers before\n * rendering. The default Z-index is 0.\n * @return {number} The Z-index of the layer.\n * @observable\n * @api\n */\n getZIndex() {\n return /** @type {number} */ (this.get(LayerProperty.Z_INDEX));\n }\n\n /**\n * Sets the background color.\n * @param {BackgroundColor} [background] Background color.\n */\n setBackground(background) {\n this.background_ = background;\n this.changed();\n }\n\n /**\n * Set the extent at which the layer is visible. If `undefined`, the layer\n * will be visible at all extents.\n * @param {import(\"../extent.js\").Extent|undefined} extent The extent of the layer.\n * @observable\n * @api\n */\n setExtent(extent) {\n this.set(LayerProperty.EXTENT, extent);\n }\n\n /**\n * Set the maximum resolution at which the layer is visible.\n * @param {number} maxResolution The maximum resolution of the layer.\n * @observable\n * @api\n */\n setMaxResolution(maxResolution) {\n this.set(LayerProperty.MAX_RESOLUTION, maxResolution);\n }\n\n /**\n * Set the minimum resolution at which the layer is visible.\n * @param {number} minResolution The minimum resolution of the layer.\n * @observable\n * @api\n */\n setMinResolution(minResolution) {\n this.set(LayerProperty.MIN_RESOLUTION, minResolution);\n }\n\n /**\n * Set the maximum zoom (exclusive) at which the layer is visible.\n * Note that the zoom levels for layer visibility are based on the\n * view zoom level, which may be different from a tile source zoom level.\n * @param {number} maxZoom The maximum zoom of the layer.\n * @observable\n * @api\n */\n setMaxZoom(maxZoom) {\n this.set(LayerProperty.MAX_ZOOM, maxZoom);\n }\n\n /**\n * Set the minimum zoom (inclusive) at which the layer is visible.\n * Note that the zoom levels for layer visibility are based on the\n * view zoom level, which may be different from a tile source zoom level.\n * @param {number} minZoom The minimum zoom of the layer.\n * @observable\n * @api\n */\n setMinZoom(minZoom) {\n this.set(LayerProperty.MIN_ZOOM, minZoom);\n }\n\n /**\n * Set the opacity of the layer, allowed values range from 0 to 1.\n * @param {number} opacity The opacity of the layer.\n * @observable\n * @api\n */\n setOpacity(opacity) {\n assert(typeof opacity === 'number', 64); // Layer opacity must be a number\n this.set(LayerProperty.OPACITY, opacity);\n }\n\n /**\n * Set the visibility of the layer (`true` or `false`).\n * @param {boolean} visible The visibility of the layer.\n * @observable\n * @api\n */\n setVisible(visible) {\n this.set(LayerProperty.VISIBLE, visible);\n }\n\n /**\n * Set Z-index of the layer, which is used to order layers before rendering.\n * The default Z-index is 0.\n * @param {number} zindex The z-index of the layer.\n * @observable\n * @api\n */\n setZIndex(zindex) {\n this.set(LayerProperty.Z_INDEX, zindex);\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n if (this.state_) {\n this.state_.layer = null;\n this.state_ = null;\n }\n super.disposeInternal();\n }\n}\n\nexport default BaseLayer;\n","/**\n * @module ol/style/flat\n */\n\nimport Circle from '../style/Circle.js';\nimport Fill from './Fill.js';\nimport Icon from './Icon.js';\nimport RegularShape from './RegularShape.js';\nimport Stroke from './Stroke.js';\nimport Style from './Style.js';\nimport Text from './Text.js';\n\n/**\n * For static styling, the [layer.setStyle()]{@link module:ol/layer/Vector~VectorLayer#setStyle} method\n * can be called with an object literal that has fill, stroke, text, icon, regular shape, and/or circle properties.\n * @api\n *\n * @typedef {FlatFill & FlatStroke & FlatText & FlatIcon & FlatShape & FlatCircle} FlatStyle\n */\n\n/**\n * A flat style literal or an array of the same.\n *\n * @typedef {FlatStyle|Array} FlatStyleLike\n */\n\n/**\n * Fill style properties applied to polygon features.\n *\n * @typedef {Object} FlatFill\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [fill-color] The fill color.\n */\n\n/**\n * Stroke style properties applied to line strings and polygon boundaries. To apply a stroke, at least one of\n * `stroke-color` or `stroke-width` must be provided.\n *\n * @typedef {Object} FlatStroke\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [stroke-color] The stroke color.\n * @property {number} [stroke-width] Stroke pixel width.\n * @property {CanvasLineCap} [stroke-line-cap='round'] Line cap style: `butt`, `round`, or `square`.\n * @property {CanvasLineJoin} [stroke-line-join='round'] Line join style: `bevel`, `round`, or `miter`.\n * @property {Array} [stroke-line-dash] Line dash pattern.\n * @property {number} [stroke-line-dash-offset=0] Line dash offset.\n * @property {number} [stroke-miter-limit=10] Miter limit.\n */\n\n/**\n * Label style properties applied to all features. At a minimum, a `text-value` must be provided.\n *\n * @typedef {Object} FlatText\n * @property {string|Array} [text-value] Text content or rich text content. For plain text provide a string, which can\n * contain line breaks (`\\n`). For rich text provide an array of text/font tuples. A tuple consists of the text to\n * render and the font to use (or `''` to use the text style's font). A line break has to be a separate tuple (i.e. `'\\n', ''`).\n * **Example:** `['foo', 'bold 10px sans-serif', ' bar', 'italic 10px sans-serif', ' baz', '']` will yield \"**foo** *bar* baz\".\n * **Note:** Rich text is not supported for the immediate rendering API.\n * @property {string} [text-font] Font style as CSS `font` value, see:\n * https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/font. Default is `'10px sans-serif'`\n * @property {number} [text-max-angle=Math.PI/4] When `text-placement` is set to `'line'`, allow a maximum angle between adjacent characters.\n * The expected value is in radians, and the default is 45° (`Math.PI / 4`).\n * @property {number} [text-offset-x=0] Horizontal text offset in pixels. A positive will shift the text right.\n * @property {number} [text-offset-y=0] Vertical text offset in pixels. A positive will shift the text down.\n * @property {boolean} [text-overflow=false] For polygon labels or when `placement` is set to `'line'`, allow text to exceed\n * the width of the polygon at the label position or the length of the path that it follows.\n * @property {import(\"./Text.js\").TextPlacement} [text-placement='point'] Text placement.\n * @property {number} [text-repeat] Repeat interval in pixels. When set, the text will be repeated at this interval. Only available when\n * `text-placement` is set to `'line'`. Overrides `text-align`.\n * @property {number|import(\"../size.js\").Size} [text-scale] Scale.\n * @property {boolean} [text-rotate-with-view=false] Whether to rotate the text with the view.\n * @property {number} [text-rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {CanvasTextAlign} [text-align] Text alignment. Possible values: `'left'`, `'right'`, `'center'`, `'end'` or `'start'`.\n * Default is `'center'` for `text-placement: 'point'`. For `text-placement: 'line'`, the default is to let the renderer choose a\n * placement where `text-max-angle` is not exceeded.\n * @property {import('./Text.js').TextJustify} [text-justify] Text justification within the text box.\n * If not set, text is justified towards the `textAlign` anchor.\n * Otherwise, use options `'left'`, `'center'`, or `'right'` to justify the text within the text box.\n * **Note:** `text-justify` is ignored for immediate rendering and also for `text-placement: 'line'`.\n * @property {CanvasTextBaseline} [text-baseline='middle'] Text base line. Possible values: `'bottom'`, `'top'`, `'middle'`, `'alphabetic'`,\n * `'hanging'`, `'ideographic'`.\n * @property {Array} [text-padding=[0, 0, 0, 0]] Padding in pixels around the text for decluttering and background. The order of\n * values in the array is `[top, right, bottom, left]`.\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [text-fill-color] The fill color.\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [text-background-fill-color] The fill color.\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [text-stroke-color] The stroke color.\n * @property {CanvasLineCap} [text-stroke-line-cap='round'] Line cap style: `butt`, `round`, or `square`.\n * @property {CanvasLineJoin} [text-stroke-line-join='round'] Line join style: `bevel`, `round`, or `miter`.\n * @property {Array} [text-stroke-line-dash] Line dash pattern.\n * @property {number} [text-stroke-line-dash-offset=0] Line dash offset.\n * @property {number} [text-stroke-miter-limit=10] Miter limit.\n * @property {number} [text-stroke-width] Stroke pixel width.\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [text-background-stroke-color] The stroke color.\n * @property {CanvasLineCap} [text-background-stroke-line-cap='round'] Line cap style: `butt`, `round`, or `square`.\n * @property {CanvasLineJoin} [text-background-stroke-line-join='round'] Line join style: `bevel`, `round`, or `miter`.\n * @property {Array} [text-background-stroke-line-dash] Line dash pattern.\n * @property {number} [text-background-stroke-line-dash-offset=0] Line dash offset.\n * @property {number} [text-background-stroke-miter-limit=10] Miter limit.\n * @property {number} [text-background-stroke-width] Stroke pixel width.\n */\n\n/**\n * Icon style properties applied to point features. One of `icon-src` or `icon-img` must be provided to render\n * points with an icon.\n *\n * @typedef {Object} FlatIcon\n * @property {string} [icon-src] Image source URI.\n * @property {HTMLImageElement|HTMLCanvasElement} [icon-img] Image object for the icon. If the `icon-src` option is not provided then the\n * provided image must already be loaded. And in that case, it is required\n * to provide the size of the image, with the `icon-img-size` option.\n * @property {import(\"../size.js\").Size} [icon-img-size] Image size in pixels. Only required if `icon-img` is set and `icon-src` is not.\n * The provided size needs to match the actual size of the image.\n * @property {Array} [icon-anchor=[0.5, 0.5]] Anchor. Default value is the icon center.\n * @property {import(\"./Icon.js\").IconOrigin} [icon-anchor-origin='top-left'] Origin of the anchor: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`.\n * @property {import(\"./Icon.js\").IconAnchorUnits} [icon-anchor-x-units='fraction'] Units in which the anchor x value is\n * specified. A value of `'fraction'` indicates the x value is a fraction of the icon. A value of `'pixels'` indicates\n * the x value in pixels.\n * @property {import(\"./Icon.js\").IconAnchorUnits} [icon-anchor-y-units='fraction'] Units in which the anchor y value is\n * specified. A value of `'fraction'` indicates the y value is a fraction of the icon. A value of `'pixels'` indicates\n * the y value in pixels.\n * @property {import(\"../color.js\").Color|string} [icon-color] Color to tint the icon. If not specified,\n * the icon will be left as is.\n * @property {null|string} [icon-cross-origin] The `crossOrigin` attribute for loaded images. Note that you must provide a\n * `icon-cross-origin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {Array} [icon-offset=[0, 0]] Offset, which, together with the size and the offset origin, define the\n * sub-rectangle to use from the original icon image.\n * @property {Array} [icon-displacement=[0,0]] Displacement of the icon.\n * @property {import(\"./Icon.js\").IconOrigin} [icon-offset-origin='top-left'] Origin of the offset: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`.\n * @property {number} [icon-opacity=1] Opacity of the icon.\n * @property {number|import(\"../size.js\").Size} [icon-scale=1] Scale.\n * @property {number} [icon-width] Width of the icon. If not specified, the actual image width will be used. Cannot be combined\n * with `scale`.\n * @property {number} [icon-height] Height of the icon. If not specified, the actual image height will be used. Cannot be combined\n * with `scale`.\n * @property {number} [icon-rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {boolean} [icon-rotate-with-view=false] Whether to rotate the icon with the view.\n * @property {import(\"../size.js\").Size} [icon-size] Icon size in pixel. Can be used together with `icon-offset` to define the\n * sub-rectangle to use from the origin (sprite) icon image.\n * @property {\"declutter\"|\"obstacle\"|\"none\"|undefined} [icon-declutter-mode] Declutter mode\n */\n\n/**\n * Regular shape style properties for rendering point features. At least `shape-points` must be provided.\n *\n * @typedef {Object} FlatShape\n * @property {number} [shape-points] Number of points for stars and regular polygons. In case of a polygon, the number of points\n * is the number of sides.\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [shape-fill-color] The fill color.\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [shape-stroke-color] The stroke color.\n * @property {number} [shape-stroke-width] Stroke pixel width.\n * @property {CanvasLineCap} [shape-stroke-line-cap='round'] Line cap style: `butt`, `round`, or `square`.\n * @property {CanvasLineJoin} [shape-stroke-line-join='round'] Line join style: `bevel`, `round`, or `miter`.\n * @property {Array} [shape-stroke-line-dash] Line dash pattern.\n * @property {number} [shape-stroke-line-dash-offset=0] Line dash offset.\n * @property {number} [shape-stroke-miter-limit=10] Miter limit.\n * @property {number} [shape-radius] Radius of a regular polygon.\n * @property {number} [shape-radius1] First radius of a star. Ignored if radius is set.\n * @property {number} [shape-radius2] Second radius of a star.\n * @property {number} [shape-angle=0] Shape's angle in radians. A value of 0 will have one of the shape's point facing up.\n * @property {Array} [shape-displacement=[0,0]] Displacement of the shape\n * @property {number} [shape-rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {boolean} [shape-rotate-with-view=false] Whether to rotate the shape with the view.\n * @property {number|import(\"../size.js\").Size} [shape-scale=1] Scale. Unless two dimensional scaling is required a better\n * result may be obtained with appropriate settings for `shape-radius`, `shape-radius1` and `shape-radius2`.\n * @property {\"declutter\"|\"obstacle\"|\"none\"|undefined} [shape-declutter-mode] Declutter mode.\n */\n\n/**\n * Circle style properties for rendering point features. At least `circle-radius` must be provided.\n *\n * @typedef {Object} FlatCircle\n * @property {number} [circle-radius] Circle radius.\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [circle-fill-color] The fill color.\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [circle-stroke-color] The stroke color.\n * @property {number} [circle-stroke-width] Stroke pixel width.\n * @property {CanvasLineCap} [circle-stroke-line-cap='round'] Line cap style: `butt`, `round`, or `square`.\n * @property {CanvasLineJoin} [circle-stroke-line-join='round'] Line join style: `bevel`, `round`, or `miter`.\n * @property {Array} [circle-stroke-line-dash] Line dash pattern.\n * @property {number} [circle-stroke-line-dash-offset=0] Line dash offset.\n * @property {number} [circle-stroke-miter-limit=10] Miter limit.\n * @property {Array} [circle-displacement=[0,0]] displacement\n * @property {number|import(\"../size.js\").Size} [circle-scale=1] Scale. A two dimensional scale will produce an ellipse.\n * Unless two dimensional scaling is required a better result may be obtained with an appropriate setting for `circle-radius`.\n * @property {number} [circle-rotation=0] Rotation in radians\n * (positive rotation clockwise, meaningful only when used in conjunction with a two dimensional scale).\n * @property {boolean} [circle-rotate-with-view=false] Whether to rotate the shape with the view\n * (meaningful only when used in conjunction with a two dimensional scale).\n * @property {\"declutter\"|\"obstacle\"|\"none\"|undefined} [circle-declutter-mode] Declutter mode\n */\n\n/**\n * @param {FlatStyle} flatStyle A flat style literal.\n * @return {import(\"./Style.js\").default} A style instance.\n */\nexport function toStyle(flatStyle) {\n const style = new Style({\n fill: getFill(flatStyle, ''),\n stroke: getStroke(flatStyle, ''),\n text: getText(flatStyle),\n image: getImage(flatStyle),\n });\n\n return style;\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} prefix The property prefix.\n * @return {Fill|undefined} The fill (if any).\n */\nfunction getFill(flatStyle, prefix) {\n const color = flatStyle[prefix + 'fill-color'];\n if (!color) {\n return;\n }\n\n return new Fill({color: color});\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} prefix The property prefix.\n * @return {Stroke|undefined} The stroke (if any).\n */\nfunction getStroke(flatStyle, prefix) {\n const width = flatStyle[prefix + 'stroke-width'];\n const color = flatStyle[prefix + 'stroke-color'];\n if (!width && !color) {\n return;\n }\n\n return new Stroke({\n width: width,\n color: color,\n lineCap: flatStyle[prefix + 'stroke-line-cap'],\n lineJoin: flatStyle[prefix + 'stroke-line-join'],\n lineDash: flatStyle[prefix + 'stroke-line-dash'],\n lineDashOffset: flatStyle[prefix + 'stroke-line-dash-offset'],\n miterLimit: flatStyle[prefix + 'stroke-miter-limit'],\n });\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @return {Text|undefined} The text (if any).\n */\nfunction getText(flatStyle) {\n const value = flatStyle['text-value'];\n if (!value) {\n return;\n }\n\n const text = new Text({\n text: value,\n font: flatStyle['text-font'],\n maxAngle: flatStyle['text-max-angle'],\n offsetX: flatStyle['text-offset-x'],\n offsetY: flatStyle['text-offset-y'],\n overflow: flatStyle['text-overflow'],\n placement: flatStyle['text-placement'],\n repeat: flatStyle['text-repeat'],\n scale: flatStyle['text-scale'],\n rotateWithView: flatStyle['text-rotate-with-view'],\n rotation: flatStyle['text-rotation'],\n textAlign: flatStyle['text-align'],\n justify: flatStyle['text-justify'],\n textBaseline: flatStyle['text-baseline'],\n padding: flatStyle['text-padding'],\n fill: getFill(flatStyle, 'text-'),\n backgroundFill: getFill(flatStyle, 'text-background-'),\n stroke: getStroke(flatStyle, 'text-'),\n backgroundStroke: getStroke(flatStyle, 'text-background-'),\n });\n\n return text;\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @return {import(\"./Image.js\").default|undefined} The image (if any).\n */\nfunction getImage(flatStyle) {\n const iconSrc = flatStyle['icon-src'];\n const iconImg = flatStyle['icon-img'];\n if (iconSrc || iconImg) {\n const icon = new Icon({\n src: iconSrc,\n img: iconImg,\n imgSize: flatStyle['icon-img-size'],\n anchor: flatStyle['icon-anchor'],\n anchorOrigin: flatStyle['icon-anchor-origin'],\n anchorXUnits: flatStyle['icon-anchor-x-units'],\n anchorYUnits: flatStyle['icon-anchor-y-units'],\n color: flatStyle['icon-color'],\n crossOrigin: flatStyle['icon-cross-origin'],\n offset: flatStyle['icon-offset'],\n displacement: flatStyle['icon-displacement'],\n opacity: flatStyle['icon-opacity'],\n scale: flatStyle['icon-scale'],\n width: flatStyle['icon-width'],\n height: flatStyle['icon-height'],\n rotation: flatStyle['icon-rotation'],\n rotateWithView: flatStyle['icon-rotate-with-view'],\n size: flatStyle['icon-size'],\n declutterMode: flatStyle['icon-declutter-mode'],\n });\n return icon;\n }\n\n const shapePoints = flatStyle['shape-points'];\n if (shapePoints) {\n const prefix = 'shape-';\n const shape = new RegularShape({\n points: shapePoints,\n fill: getFill(flatStyle, prefix),\n stroke: getStroke(flatStyle, prefix),\n radius: flatStyle['shape-radius'],\n radius1: flatStyle['shape-radius1'],\n radius2: flatStyle['shape-radius2'],\n angle: flatStyle['shape-angle'],\n displacement: flatStyle['shape-displacement'],\n rotation: flatStyle['shape-rotation'],\n rotateWithView: flatStyle['shape-rotate-with-view'],\n scale: flatStyle['shape-scale'],\n declutterMode: flatStyle['shape-declutter-mode'],\n });\n\n return shape;\n }\n\n const circleRadius = flatStyle['circle-radius'];\n if (circleRadius) {\n const prefix = 'circle-';\n const circle = new Circle({\n radius: circleRadius,\n fill: getFill(flatStyle, prefix),\n stroke: getStroke(flatStyle, prefix),\n displacement: flatStyle['circle-displacement'],\n scale: flatStyle['circle-scale'],\n rotation: flatStyle['circle-rotation'],\n rotateWithView: flatStyle['circle-rotate-with-view'],\n declutterMode: flatStyle['circle-declutter-mode'],\n });\n\n return circle;\n }\n\n return;\n}\n","/**\n * @module ol/layer/BaseVector\n */\nimport Layer from './Layer.js';\nimport RBush from 'rbush';\nimport Style, {\n createDefaultStyle,\n toFunction as toStyleFunction,\n} from '../style/Style.js';\nimport {toStyle} from '../style/flat.js';\n\n/**\n * @template {import(\"../source/Vector.js\").default|import(\"../source/VectorTile.js\").default} VectorSourceType\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {import(\"../render.js\").OrderFunction} [renderOrder] Render order. Function to be used when sorting\n * features before rendering. By default features are drawn in the order that they are created. Use\n * `null` to avoid the sort, but get an undefined draw order.\n * @property {number} [renderBuffer=100] The buffer in pixels around the viewport extent used by the\n * renderer when getting features from the vector source for the rendering or hit-detection.\n * Recommended value: the size of the largest symbol, line width or label.\n * @property {VectorSourceType} [source] Source.\n * @property {import(\"../Map.js\").default} [map] Sets the layer as overlay on a map. The map will not manage\n * this layer in its layers collection, and the layer will be rendered on top. This is useful for\n * temporary layers. The standard way to add a layer to a map and have it managed by the map is to\n * use [map.addLayer()]{@link import(\"../Map.js\").default#addLayer}.\n * @property {boolean} [declutter=false] Declutter images and text. Decluttering is applied to all\n * image and text styles of all Vector and VectorTile layers that have set this to `true`. The priority\n * is defined by the z-index of the layer, the `zIndex` of the style and the render order of features.\n * Higher z-index means higher priority. Within the same z-index, a feature rendered before another has\n * higher priority.\n *\n * As an optimization decluttered features from layers with the same `className` are rendered above\n * the fill and stroke styles of all of those layers regardless of z-index. To opt out of this\n * behavior and place declutterd features with their own layer configure the layer with a `className`\n * other than `ol-layer`.\n * @property {import(\"../style/Style.js\").StyleLike|import(\"../style/flat.js\").FlatStyleLike|null} [style] Layer style. When set to `null`, only\n * features that have their own style will be rendered. See {@link module:ol/style/Style~Style} for the default style\n * which will be used if this is not set.\n * @property {import(\"./Base.js\").BackgroundColor} [background] Background color for the layer. If not specified, no background\n * will be rendered.\n * @property {boolean} [updateWhileAnimating=false] When set to `true`, feature batches will\n * be recreated during animations. This means that no vectors will be shown clipped, but the\n * setting will have a performance impact for large amounts of vector data. When set to `false`,\n * batches will be recreated when no animation is active.\n * @property {boolean} [updateWhileInteracting=false] When set to `true`, feature batches will\n * be recreated during interactions. See also `updateWhileAnimating`.\n * @property {Object} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @enum {string}\n * @private\n */\nconst Property = {\n RENDER_ORDER: 'renderOrder',\n};\n\n/**\n * @classdesc\n * Vector data that is rendered client-side.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/Vector.js\").default|import(\"../source/VectorTile.js\").default} VectorSourceType\n * @template {import(\"../renderer/canvas/VectorLayer.js\").default|import(\"../renderer/canvas/VectorTileLayer.js\").default|import(\"../renderer/canvas/VectorImageLayer.js\").default|import(\"../renderer/webgl/PointsLayer.js\").default} RendererType\n * @extends {Layer}\n * @api\n */\nclass BaseVectorLayer extends Layer {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n const baseOptions = Object.assign({}, options);\n\n delete baseOptions.style;\n delete baseOptions.renderBuffer;\n delete baseOptions.updateWhileAnimating;\n delete baseOptions.updateWhileInteracting;\n super(baseOptions);\n\n /**\n * @private\n * @type {boolean}\n */\n this.declutter_ =\n options.declutter !== undefined ? options.declutter : false;\n\n /**\n * @type {number}\n * @private\n */\n this.renderBuffer_ =\n options.renderBuffer !== undefined ? options.renderBuffer : 100;\n\n /**\n * User provided style.\n * @type {import(\"../style/Style.js\").StyleLike}\n * @private\n */\n this.style_ = null;\n\n /**\n * Style function for use within the library.\n * @type {import(\"../style/Style.js\").StyleFunction|undefined}\n * @private\n */\n this.styleFunction_ = undefined;\n\n this.setStyle(options.style);\n\n /**\n * @type {boolean}\n * @private\n */\n this.updateWhileAnimating_ =\n options.updateWhileAnimating !== undefined\n ? options.updateWhileAnimating\n : false;\n\n /**\n * @type {boolean}\n * @private\n */\n this.updateWhileInteracting_ =\n options.updateWhileInteracting !== undefined\n ? options.updateWhileInteracting\n : false;\n }\n\n /**\n * @return {boolean} Declutter.\n */\n getDeclutter() {\n return this.declutter_;\n }\n\n /**\n * Get the topmost feature that intersects the given pixel on the viewport. Returns a promise\n * that resolves with an array of features. The array will either contain the topmost feature\n * when a hit was detected, or it will be empty.\n *\n * The hit detection algorithm used for this method is optimized for performance, but is less\n * accurate than the one used in [map.getFeaturesAtPixel()]{@link import(\"../Map.js\").default#getFeaturesAtPixel}.\n * Text is not considered, and icons are only represented by their bounding box instead of the exact\n * image.\n *\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @return {Promise>} Promise that resolves with an array of features.\n * @api\n */\n getFeatures(pixel) {\n return super.getFeatures(pixel);\n }\n\n /**\n * @return {number|undefined} Render buffer.\n */\n getRenderBuffer() {\n return this.renderBuffer_;\n }\n\n /**\n * @return {function(import(\"../Feature.js\").default, import(\"../Feature.js\").default): number|null|undefined} Render\n * order.\n */\n getRenderOrder() {\n return /** @type {import(\"../render.js\").OrderFunction|null|undefined} */ (\n this.get(Property.RENDER_ORDER)\n );\n }\n\n /**\n * Get the style for features. This returns whatever was passed to the `style`\n * option at construction or to the `setStyle` method.\n * @return {import(\"../style/Style.js\").StyleLike|null|undefined} Layer style.\n * @api\n */\n getStyle() {\n return this.style_;\n }\n\n /**\n * Get the style function.\n * @return {import(\"../style/Style.js\").StyleFunction|undefined} Layer style function.\n * @api\n */\n getStyleFunction() {\n return this.styleFunction_;\n }\n\n /**\n * @return {boolean} Whether the rendered layer should be updated while\n * animating.\n */\n getUpdateWhileAnimating() {\n return this.updateWhileAnimating_;\n }\n\n /**\n * @return {boolean} Whether the rendered layer should be updated while\n * interacting.\n */\n getUpdateWhileInteracting() {\n return this.updateWhileInteracting_;\n }\n\n /**\n * Render declutter items for this layer\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\n renderDeclutter(frameState) {\n if (!frameState.declutterTree) {\n frameState.declutterTree = new RBush(9);\n }\n /** @type {*} */ (this.getRenderer()).renderDeclutter(frameState);\n }\n\n /**\n * @param {import(\"../render.js\").OrderFunction|null|undefined} renderOrder\n * Render order.\n */\n setRenderOrder(renderOrder) {\n this.set(Property.RENDER_ORDER, renderOrder);\n }\n\n /**\n * Set the style for features. This can be a single style object, an array\n * of styles, or a function that takes a feature and resolution and returns\n * an array of styles. If set to `null`, the layer has no style (a `null` style),\n * so only features that have their own styles will be rendered in the layer. Call\n * `setStyle()` without arguments to reset to the default style. See\n * [the ol/style/Style module]{@link module:ol/style/Style~Style} for information on the default style.\n *\n * If your layer has a static style, you can use [flat style]{@link module:ol/style/flat~FlatStyle} object\n * literals instead of using the `Style` and symbolizer constructors (`Fill`, `Stroke`, etc.):\n * ```js\n * vectorLayer.setStyle({\n * \"fill-color\": \"yellow\",\n * \"stroke-color\": \"black\",\n * \"stroke-width\": 4\n * })\n * ```\n *\n * @param {import(\"../style/Style.js\").StyleLike|import(\"../style/flat.js\").FlatStyleLike|null} [style] Layer style.\n * @api\n */\n setStyle(style) {\n /**\n * @type {import(\"../style/Style.js\").StyleLike|null}\n */\n let styleLike;\n\n if (style === undefined) {\n styleLike = createDefaultStyle;\n } else if (style === null) {\n styleLike = null;\n } else if (typeof style === 'function') {\n styleLike = style;\n } else if (style instanceof Style) {\n styleLike = style;\n } else if (Array.isArray(style)) {\n const len = style.length;\n\n /**\n * @type {Array