{"version":3,"sources":["webpack://ol/webpack/universalModuleDefinition","webpack://ol/webpack/bootstrap","webpack://ol/./node_modules/rbush/rbush.js","webpack://ol/./node_modules/elm-pep/dist/elm-pep.js","webpack://ol/./node_modules/pbf/index.js","webpack://ol/./node_modules/pixelworks/lib/index.js","webpack://ol/./node_modules/ieee754/index.js","webpack://ol/./node_modules/pixelworks/lib/processor.js","webpack://ol/./node_modules/pixelworks/lib/util.js","webpack://ol/./build/ol/util.js","webpack://ol/./build/ol/AssertionError.js","webpack://ol/./build/ol/CollectionEventType.js","webpack://ol/./build/ol/ObjectEventType.js","webpack://ol/./build/ol/obj.js","webpack://ol/./build/ol/events.js","webpack://ol/./build/ol/Disposable.js","webpack://ol/./build/ol/array.js","webpack://ol/./build/ol/functions.js","webpack://ol/./build/ol/events/Event.js","webpack://ol/./build/ol/events/Target.js","webpack://ol/./build/ol/events/EventType.js","webpack://ol/./build/ol/Observable.js","webpack://ol/./build/ol/Object.js","webpack://ol/./build/ol/Collection.js","webpack://ol/./build/ol/asserts.js","webpack://ol/./build/ol/Feature.js","webpack://ol/./build/ol/extent/Corner.js","webpack://ol/./build/ol/extent/Relationship.js","webpack://ol/./build/ol/extent.js","webpack://ol/./build/ol/geom/GeometryLayout.js","webpack://ol/./build/ol/geom/GeometryType.js","webpack://ol/./build/ol/geom/flat/transform.js","webpack://ol/./build/ol/math.js","webpack://ol/./build/ol/sphere.js","webpack://ol/./build/ol/proj/Units.js","webpack://ol/./build/ol/proj/Projection.js","webpack://ol/./build/ol/proj/epsg3857.js","webpack://ol/./build/ol/proj/epsg4326.js","webpack://ol/./build/ol/proj/transforms.js","webpack://ol/./build/ol/proj/projections.js","webpack://ol/./build/ol/proj.js","webpack://ol/./build/ol/transform.js","webpack://ol/./build/ol/geom/Geometry.js","webpack://ol/./build/ol/geom/SimpleGeometry.js","webpack://ol/./build/ol/geom/flat/area.js","webpack://ol/./build/ol/geom/flat/closest.js","webpack://ol/./build/ol/geom/flat/deflate.js","webpack://ol/./build/ol/geom/flat/inflate.js","webpack://ol/./build/ol/geom/flat/simplify.js","webpack://ol/./build/ol/geom/LinearRing.js","webpack://ol/./build/ol/geom/Point.js","webpack://ol/./build/ol/geom/flat/contains.js","webpack://ol/./build/ol/geom/flat/interiorpoint.js","webpack://ol/./build/ol/geom/flat/segments.js","webpack://ol/./build/ol/geom/flat/intersectsextent.js","webpack://ol/./build/ol/geom/flat/reverse.js","webpack://ol/./build/ol/geom/flat/orient.js","webpack://ol/./build/ol/geom/Polygon.js","webpack://ol/./build/ol/Geolocation.js","webpack://ol/./build/ol/Kinetic.js","webpack://ol/./build/ol/MapEvent.js","webpack://ol/./build/ol/MapBrowserEvent.js","webpack://ol/./build/ol/has.js","webpack://ol/./build/ol/MapBrowserEventType.js","webpack://ol/./build/ol/MapBrowserPointerEvent.js","webpack://ol/./build/ol/pointer/EventType.js","webpack://ol/./build/ol/MapBrowserEventHandler.js","webpack://ol/./build/ol/MapEventType.js","webpack://ol/./build/ol/MapProperty.js","webpack://ol/./build/ol/render/EventType.js","webpack://ol/./build/ol/TileState.js","webpack://ol/./build/ol/structs/PriorityQueue.js","webpack://ol/./build/ol/TileQueue.js","webpack://ol/./build/ol/centerconstraint.js","webpack://ol/./build/ol/resolutionconstraint.js","webpack://ol/./build/ol/rotationconstraint.js","webpack://ol/./build/ol/ViewHint.js","webpack://ol/./build/ol/ViewProperty.js","webpack://ol/./build/ol/string.js","webpack://ol/./build/ol/coordinate.js","webpack://ol/./build/ol/easing.js","webpack://ol/./build/ol/View.js","webpack://ol/./build/ol/tilegrid/common.js","webpack://ol/./build/ol/dom.js","webpack://ol/./build/ol/layer/Property.js","webpack://ol/./build/ol/layer/Base.js","webpack://ol/./build/ol/source/State.js","webpack://ol/./build/ol/layer/Group.js","webpack://ol/./build/ol/size.js","webpack://ol/./build/ol/PluggableMap.js","webpack://ol/./build/ol/control/Control.js","webpack://ol/./build/ol/css.js","webpack://ol/./build/ol/layer/Layer.js","webpack://ol/./build/ol/control/Attribution.js","webpack://ol/./build/ol/control/Rotate.js","webpack://ol/./build/ol/control/Zoom.js","webpack://ol/./build/ol/control.js","webpack://ol/./build/ol/interaction/Property.js","webpack://ol/./build/ol/interaction/Interaction.js","webpack://ol/./build/ol/interaction/DoubleClickZoom.js","webpack://ol/./build/ol/events/condition.js","webpack://ol/./build/ol/interaction/Pointer.js","webpack://ol/./build/ol/interaction/DragPan.js","webpack://ol/./build/ol/interaction/DragRotate.js","webpack://ol/./build/ol/render/Box.js","webpack://ol/./build/ol/interaction/DragBox.js","webpack://ol/./build/ol/interaction/DragZoom.js","webpack://ol/./build/ol/events/KeyCode.js","webpack://ol/./build/ol/interaction/KeyboardPan.js","webpack://ol/./build/ol/interaction/KeyboardZoom.js","webpack://ol/./build/ol/interaction/MouseWheelZoom.js","webpack://ol/./build/ol/interaction/PinchRotate.js","webpack://ol/./build/ol/interaction/PinchZoom.js","webpack://ol/./build/ol/interaction.js","webpack://ol/./build/ol/render/Event.js","webpack://ol/./build/ol/color.js","webpack://ol/./build/ol/style/IconImageCache.js","webpack://ol/./build/ol/colorlike.js","webpack://ol/./build/ol/render/VectorContext.js","webpack://ol/./build/ol/render/canvas.js","webpack://ol/./build/ol/render/canvas/Immediate.js","webpack://ol/./build/ol/ImageState.js","webpack://ol/./build/ol/render/canvas/BuilderType.js","webpack://ol/./build/ol/renderer/vector.js","webpack://ol/./build/ol/render.js","webpack://ol/./build/ol/renderer/Map.js","webpack://ol/./build/ol/renderer/Composite.js","webpack://ol/./build/ol/Map.js","webpack://ol/./build/ol/OverlayPositioning.js","webpack://ol/./build/ol/Overlay.js","webpack://ol/./build/ol/format/FormatType.js","webpack://ol/./build/ol/featureloader.js","webpack://ol/./build/ol/loadingstrategy.js","webpack://ol/./build/ol/TileRange.js","webpack://ol/./build/ol/tilecoord.js","webpack://ol/./build/ol/tilegrid/TileGrid.js","webpack://ol/./build/ol/tilegrid.js","webpack://ol/./build/ol/webgl.js","webpack://ol/./build/ol/xml.js","webpack://ol/./build/ol/webgl/Buffer.js","webpack://ol/./build/ol/webgl/ContextEventType.js","webpack://ol/./build/ol/vec/mat4.js","webpack://ol/./build/ol/webgl/PostProcessingPass.js","webpack://ol/./build/ol/webgl/Helper.js","webpack://ol/./build/ol/webgl/RenderTarget.js","webpack://ol/./build/ol/tilegrid/WMTS.js","webpack://ol/./build/ol/style/Image.js","webpack://ol/./build/ol/style/RegularShape.js","webpack://ol/./build/ol/style/Circle.js","webpack://ol/./build/ol/style/Fill.js","webpack://ol/./build/ol/style/IconAnchorUnits.js","webpack://ol/./build/ol/ImageBase.js","webpack://ol/./build/ol/Image.js","webpack://ol/./build/ol/style/IconImage.js","webpack://ol/./build/ol/style/IconOrigin.js","webpack://ol/./build/ol/style/Icon.js","webpack://ol/./build/ol/style/Stroke.js","webpack://ol/./build/ol/style/Style.js","webpack://ol/./build/ol/style/TextPlacement.js","webpack://ol/./build/ol/style/Text.js","webpack://ol/./build/ol/tileurlfunction.js","webpack://ol/./build/ol/net.js","webpack://ol/./build/ol/reproj/common.js","webpack://ol/./build/ol/Tile.js","webpack://ol/./build/ol/ImageTile.js","webpack://ol/./build/ol/structs/LRUCache.js","webpack://ol/./build/ol/TileCache.js","webpack://ol/./build/ol/reproj.js","webpack://ol/./build/ol/reproj/Triangulation.js","webpack://ol/./build/ol/reproj/Tile.js","webpack://ol/./build/ol/source/Source.js","webpack://ol/./build/ol/source/Tile.js","webpack://ol/./build/ol/source/TileEventType.js","webpack://ol/./build/ol/source/UrlTile.js","webpack://ol/./build/ol/source/TileImage.js","webpack://ol/./build/ol/source/BingMaps.js","webpack://ol/./build/ol/source/XYZ.js","webpack://ol/./build/ol/source/CartoDB.js","webpack://ol/./build/ol/source/VectorEventType.js","webpack://ol/./build/ol/structs/RBush.js","webpack://ol/./build/ol/source/Vector.js","webpack://ol/./build/ol/source/Cluster.js","webpack://ol/./build/ol/source/Zoomify.js","webpack://ol/./build/ol/format/IIIFInfo.js","webpack://ol/./build/ol/source/IIIF.js","webpack://ol/./build/ol/reproj/Image.js","webpack://ol/./build/ol/source/Image.js","webpack://ol/./build/ol/uri.js","webpack://ol/./build/ol/source/ImageArcGISRest.js","webpack://ol/./build/ol/ImageCanvas.js","webpack://ol/./build/ol/source/ImageCanvas.js","webpack://ol/./build/ol/source/ImageMapGuide.js","webpack://ol/./build/ol/source/ImageStatic.js","webpack://ol/./build/ol/source/WMSServerType.js","webpack://ol/./build/ol/source/ImageWMS.js","webpack://ol/./build/ol/source/common.js","webpack://ol/./build/ol/source/OSM.js","webpack://ol/./build/ol/layer/BaseImage.js","webpack://ol/./build/ol/renderer/Layer.js","webpack://ol/./build/ol/renderer/canvas/Layer.js","webpack://ol/./build/ol/renderer/canvas/ImageLayer.js","webpack://ol/./build/ol/layer/Image.js","webpack://ol/./build/ol/layer/TileProperty.js","webpack://ol/./build/ol/layer/BaseTile.js","webpack://ol/./build/ol/renderer/canvas/TileLayer.js","webpack://ol/./build/ol/layer/Tile.js","webpack://ol/./build/ol/source/Raster.js","webpack://ol/./build/ol/source/Stamen.js","webpack://ol/./build/ol/source/TileArcGISRest.js","webpack://ol/./build/ol/source/TileDebug.js","webpack://ol/./build/ol/source/TileJSON.js","webpack://ol/./build/ol/source/TileWMS.js","webpack://ol/./build/ol/source/UTFGrid.js","webpack://ol/./build/ol/VectorRenderTile.js","webpack://ol/./build/ol/VectorTile.js","webpack://ol/./build/ol/source/VectorTile.js","webpack://ol/./build/ol/source/WMTSRequestEncoding.js","webpack://ol/./build/ol/source/WMTS.js","webpack://ol/./build/ol/renderer/webgl/Layer.js","webpack://ol/./build/ol/worker/webgl.js","webpack://ol/./build/ol/layer/BaseVector.js","webpack://ol/./build/ol/renderer/webgl/PointsLayer.js","webpack://ol/./build/ol/render/canvas/Instruction.js","webpack://ol/./build/ol/render/canvas/Builder.js","webpack://ol/./build/ol/render/canvas/ImageBuilder.js","webpack://ol/./build/ol/render/canvas/LineStringBuilder.js","webpack://ol/./build/ol/render/canvas/PolygonBuilder.js","webpack://ol/./build/ol/geom/flat/straightchunk.js","webpack://ol/./build/ol/render/canvas/TextBuilder.js","webpack://ol/./build/ol/render/canvas/BuilderGroup.js","webpack://ol/./build/ol/geom/flat/length.js","webpack://ol/./build/ol/geom/flat/textpath.js","webpack://ol/./build/ol/render/canvas/Executor.js","webpack://ol/./build/ol/render/canvas/ExecutorGroup.js","webpack://ol/./build/ol/render/canvas/hitdetect.js","webpack://ol/./build/ol/renderer/canvas/VectorLayer.js","webpack://ol/./build/ol/renderer/canvas/VectorImageLayer.js","webpack://ol/./build/ol/layer/VectorTileRenderType.js","webpack://ol/./build/ol/renderer/canvas/VectorTileLayer.js","webpack://ol/./build/ol/layer/Vector.js","webpack://ol/./build/ol/geom/flat/interpolate.js","webpack://ol/./build/ol/geom/LineString.js","webpack://ol/./build/ol/geom/flat/geodesic.js","webpack://ol/./build/ol/layer/Graticule.js","webpack://ol/./build/ol/layer/Heatmap.js","webpack://ol/./build/ol/layer/VectorImage.js","webpack://ol/./build/ol/layer/VectorTile.js","webpack://ol/./build/ol/interaction/DragAndDrop.js","webpack://ol/./build/ol/interaction/DragRotateAndZoom.js","webpack://ol/./build/ol/geom/Circle.js","webpack://ol/./build/ol/geom/MultiLineString.js","webpack://ol/./build/ol/geom/MultiPoint.js","webpack://ol/./build/ol/geom/flat/center.js","webpack://ol/./build/ol/geom/MultiPolygon.js","webpack://ol/./build/ol/interaction/Draw.js","webpack://ol/./build/ol/interaction/Extent.js","webpack://ol/./build/ol/interaction/Modify.js","webpack://ol/./build/ol/interaction/Select.js","webpack://ol/./build/ol/interaction/Snap.js","webpack://ol/./build/ol/interaction/Translate.js","webpack://ol/./build/ol/geom/GeometryCollection.js","webpack://ol/./build/ol/format/Feature.js","webpack://ol/./build/ol/format/JSONFeature.js","webpack://ol/./build/ol/format/EsriJSON.js","webpack://ol/./build/ol/format/XMLFeature.js","webpack://ol/./build/ol/format/GMLBase.js","webpack://ol/./build/ol/format/xsd.js","webpack://ol/./build/ol/format/GML3.js","webpack://ol/./build/ol/format/GML.js","webpack://ol/./build/ol/format/GML2.js","webpack://ol/./build/ol/format/GML32.js","webpack://ol/./build/ol/format/GPX.js","webpack://ol/./build/ol/format/GeoJSON.js","webpack://ol/./build/ol/format/TextFeature.js","webpack://ol/./build/ol/format/KML.js","webpack://ol/./build/ol/format/IGC.js","webpack://ol/./build/ol/render/Feature.js","webpack://ol/./build/ol/format/MVT.js","webpack://ol/./build/ol/format/OSMXML.js","webpack://ol/./build/ol/geom/flat/flip.js","webpack://ol/./build/ol/format/Polyline.js","webpack://ol/./build/ol/format/TopoJSON.js","webpack://ol/./build/ol/format/filter/Filter.js","webpack://ol/./build/ol/format/filter/LogicalNary.js","webpack://ol/./build/ol/format/filter/And.js","webpack://ol/./build/ol/format/filter/Bbox.js","webpack://ol/./build/ol/format/filter/Spatial.js","webpack://ol/./build/ol/format/filter/Contains.js","webpack://ol/./build/ol/format/filter/Comparison.js","webpack://ol/./build/ol/format/filter/During.js","webpack://ol/./build/ol/format/filter/ComparisonBinary.js","webpack://ol/./build/ol/format/filter/EqualTo.js","webpack://ol/./build/ol/format/filter/GreaterThan.js","webpack://ol/./build/ol/format/filter/GreaterThanOrEqualTo.js","webpack://ol/./build/ol/format/filter/Intersects.js","webpack://ol/./build/ol/format/filter/IsBetween.js","webpack://ol/./build/ol/format/filter/IsLike.js","webpack://ol/./build/ol/format/filter/IsNull.js","webpack://ol/./build/ol/format/filter/LessThan.js","webpack://ol/./build/ol/format/filter/LessThanOrEqualTo.js","webpack://ol/./build/ol/format/filter/Not.js","webpack://ol/./build/ol/format/filter/NotEqualTo.js","webpack://ol/./build/ol/format/filter/Or.js","webpack://ol/./build/ol/format/filter/Within.js","webpack://ol/./build/ol/format/filter.js","webpack://ol/./build/ol/format/WFS.js","webpack://ol/./build/ol/format/WKT.js","webpack://ol/./build/ol/format/XLink.js","webpack://ol/./build/ol/format/XML.js","webpack://ol/./build/ol/format/WMSCapabilities.js","webpack://ol/./build/ol/format/WMSGetFeatureInfo.js","webpack://ol/./build/ol/format/OWS.js","webpack://ol/./build/ol/format/WMTSCapabilities.js","webpack://ol/./build/ol/control/FullScreen.js","webpack://ol/./build/ol/control/MousePosition.js","webpack://ol/./build/ol/control/OverviewMap.js","webpack://ol/./build/ol/control/ScaleLine.js","webpack://ol/./build/ol/control/ZoomSlider.js","webpack://ol/./build/ol/control/ZoomToExtent.js","webpack://ol/./build/index.js","webpack://ol/./build/ol/proj/proj4.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","quickselect","arr","k","left","right","compare","quickselectStep","z","Math","log","exp","sd","sqrt","newLeft","max","floor","newRight","min","j","swap","length","defaultCompare","tmp","a","b","RBush","maxEntries","this","_maxEntries","_minEntries","ceil","clear","findItem","item","items","equalsFn","indexOf","calcBBox","node","toBBox","distBBox","children","destNode","createNode","minX","Infinity","minY","maxX","maxY","child","extend","leaf","compareNodeMinX","compareNodeMinY","bboxArea","bboxMargin","contains","intersects","height","multiSelect","stack","pop","mid","push","all","_all","data","search","bbox","result","nodesToSearch","childBBox","collides","load","insert","_build","slice","_splitRoot","tmpNode","_insert","remove","parent","goingUp","path","indexes","index","splice","_condense","compareMinX","compareMinY","toJSON","fromJSON","apply","N","M","pow","N2","N1","right2","right3","_chooseSubtree","level","minArea","minEnlargement","targetNode","area","enlargement","isNode","insertPath","_split","_adjustParentBBoxes","_chooseSplitAxis","splitIndex","_chooseSplitIndex","newNode","minOverlap","bbox1","bbox2","overlap","_allDistMargin","sort","leftBBox","rightBBox","margin","i$1","child$1","siblings","primaryTouchId","mouseCaptureTarget","addMouseToPointerListener","target","mouseType","pointerType","addEventListener","mouseEvent","pointerEvent","MouseEvent","pointerId","isPrimary","width","tiltX","tiltY","buttons","pressure","dispatchEvent","defaultPrevented","preventDefault","addTouchToPointerListener","touchType","touchEvent","changedTouches","nbTouches","CustomEvent","bubbles","cancelable","ctrlKey","shiftKey","altKey","metaKey","touch","clientX","clientY","screenX","screenY","pageX","pageY","rect","getBoundingClientRect","offsetX","offsetY","top","identifier","button","movementX","movementY","region","relatedTarget","x","y","Element","setPointerCapture","setCapture","releasePointerCapture","releaseCapture","document","Pbf","ieee754","buf","ArrayBuffer","isView","Uint8Array","pos","type","Varint","Fixed64","Bytes","Fixed32","utf8TextDecoder","TextDecoder","readPackedEnd","pbf","readVarint","toNum","low","high","isSigned","makeRoomForExtraLength","startPos","len","extraLen","LN2","realloc","writePackedVarint","writeVarint","writePackedSVarint","writeSVarint","writePackedFloat","writeFloat","writePackedDouble","writeDouble","writePackedBoolean","writeBoolean","writePackedFixed32","writeFixed32","writePackedSFixed32","writeSFixed32","writePackedFixed64","writeFixed64","writePackedSFixed64","writeSFixed64","readUInt32","writeInt32","val","readInt32","destroy","readFields","readField","end","tag","skip","readMessage","readFixed32","readSFixed32","readFixed64","readSFixed64","readFloat","read","readDouble","h","Error","readVarintRemainder","readVarint64","readSVarint","num","readBoolean","Boolean","readString","decode","subarray","readUtf8TextDecoder","str","b1","b2","b3","b0","bytesPerSequence","String","fromCharCode","readUtf8","readBytes","buffer","readPackedVarint","readPackedSVarint","readPackedBoolean","readPackedFloat","readPackedDouble","readPackedFixed32","readPackedSFixed32","readPackedFixed64","readPackedSFixed64","writeTag","set","finish","writeBigVarintLow","lsb","writeBigVarintHigh","writeBigVarint","writeString","lead","charCodeAt","writeUtf8","write","writeBytes","writeRawMessage","fn","obj","writeMessage","writeBytesField","writeFixed32Field","writeSFixed32Field","writeFixed64Field","writeSFixed64Field","writeVarintField","writeSVarintField","writeStringField","writeFloatField","writeDoubleField","writeBooleanField","Processor","offset","isLE","mLen","nBytes","e","eLen","eMax","eBias","nBits","NaN","rt","abs","isNaN","newImageData","createMinion","operation","workerHasImageData","ImageData","_","newWorkerImageData","output","buffers","meta","imageOps","numBuffers","numBytes","byteLength","images","Array","Uint8ClampedArray","arrays","pixels","array","pixel","createWorker","config","onMessage","lines","keys","lib","map","toString","concat","blob","Blob","source","URL","createObjectURL","worker","Worker","threads","_imageOps","workers","_onWorkerMessage","minion","postMessage","setTimeout","createFauxWorker","_workers","_queue","_maxQueueLength","queue","_running","_dataLookup","_job","process","inputs","callback","_enqueue","_dispatch","_destroyed","job","shift","input","segmentLength","slices","jj","event","_resolveJob","hasImageData","context","createElement","getContext","imageData","createImageData","uidCounter_","getUid","ol_uid","extendStatics","__extends","setPrototypeOf","__proto__","__","constructor","_super","AssertionError","code","_this","message","split","assign","var_sources","TypeError","ii","arguments","getValues","values","isEmpty","listen","listener","opt_this","opt_once","originalListener_1","removeEventListener","eventsKey","listenOnce","unlistenByKey","Disposable","disposed_","dispose","disposeInternal","numberSafeCompareFunction","includes","linearFindNearest","direction","reverseSubArray","begin","extension","isArray","find","func","equals","arr1","arr2","len1","findIndex","every","el","idx","TRUE","FALSE","VOID","stopPropagation","evt","BaseEvent","propagationStopped","Target","opt_target","eventTarget_","pendingRemovals_","dispatching_","listeners_","listeners","Event","propagate","handleEvent","pendingRemovals","getListeners","hasListener","opt_type","Observable","revision_","changed","EventType","getRevision","on","once","un","ObjectEvent","oldValue","BaseObject","opt_values","values_","undefined","setProperties","getKeys","getProperties","notify","eventType","getChangeEventType","ObjectEventType","opt_silent","unset","changeEventTypeCache","Property","CollectionEvent","opt_element","opt_index","element","Collection","opt_array","opt_options","options","unique_","unique","array_","assertUnique_","updateLength_","getLength","forEach","f","getArray","insertAt","elem","CollectionEventType","removeAt","prev","setAt","opt_except","assert","assertion","errorCode","Feature","opt_geometryOrProperties","id_","geometryName_","style_","styleFunction_","geometryChangeKey_","handleGeometryChanged_","getSimplifiedGeometry","geometry","setGeometry","properties","clone","setGeometryName","getGeometryName","getGeometry","style","getStyle","setStyle","getId","getStyleFunction","handleGeometryChange_","styles_1","getZIndex","createStyleFunction","setId","id","boundingExtent","coordinates","extent","createEmpty","extendCoordinate","opt_extent","closestSquaredDistanceXY","dx","dy","containsCoordinate","coordinate","containsXY","containsExtent","extent1","extent2","coordinateRelationship","relationship","Relationship","createOrUpdate","createOrUpdateEmpty","createOrUpdateFromCoordinate","createOrUpdateFromFlatCoordinates","flatCoordinates","stride","extendFlatCoordinates","extendCoordinates","extendXY","forEachCorner","getBottomLeft","getBottomRight","getTopRight","getTopLeft","getArea","getWidth","getHeight","getCenter","getCorner","corner","Corner","getForViewAndSize","center","resolution","rotation","size","cosRotation","cos","sinRotation","sin","xCos","xSin","yCos","ySin","x0","x1","x2","x3","y0","y1","y2","y3","getIntersection","intersection","scaleFromCenter","deltaX","deltaY","applyTransform","transformFn","opt_stops","xs","ys","_boundingExtentXYs","projection","projectionExtent","getExtent","canWrapX","worldWidth","POINT","LINE_STRING","LINEAR_RING","POLYGON","MULTI_POINT","MULTI_LINE_STRING","MULTI_POLYGON","GEOMETRY_COLLECTION","CIRCLE","transform2D","transform","opt_dest","dest","rotate","angle","anchor","anchorX","anchorY","clamp","cosh","squaredSegmentDistance","toDegrees","angleInRadians","PI","toRadians","angleInDegrees","modulo","lerp","getDistance","c1","c2","opt_radius","radius","lat1","lat2","deltaLatBy2","deltaLonBy2","atan2","getLengthInternal","getAreaInternal","distance","bearing","lon1","dByR","lat","asin","Units","DEGREES","FEET","METERS","PIXELS","TILE_PIXELS","USFEET","METERS_PER_UNIT","Projection","code_","units_","extent_","worldExtent_","worldExtent","axisOrientation_","axisOrientation","global_","global","canWrapX_","getPointResolutionFunc_","getPointResolution","defaultTileGrid_","metersPerUnit_","metersPerUnit","getCode","getUnits","getMetersPerUnit","getWorldExtent","getAxisOrientation","isGlobal","setGlobal","getDefaultTileGrid","setDefaultTileGrid","tileGrid","setExtent","setWorldExtent","setGetPointResolution","getPointResolutionFunc","HALF_SIZE","EXTENT","WORLD_EXTENT","EPSG3857Projection","units","point","PROJECTIONS","fromEPSG4326","opt_output","opt_dimension","dimension","halfSize","tan","toEPSG4326","atan","EPSG4326Projection","opt_axisOrientation","destination","sourceCode","destinationCode","cloneTransform","identityTransform","addProjection","projectionLike","opt_units","pointResolution","toEPSG4326_1","getTransformFromProjections","vertices","addEquivalentProjections","projections","addProjections","createProjection","defaultCode","createTransformFromCoordinateTransform","coordTransform","addCoordinateTransforms","forward","inverse","sourceProj","destProj","equivalent","projection1","projection2","equalUnits","sourceProjection","destinationProjection","transformFunc","getTransform","transformExtent","projections2","forwardTransform","inverseTransform","getUserProjection","toUserCoordinate","fromUserCoordinate","destProjection","toUserExtent","fromUserExtent","tmp_","multiply","transform1","transform2","a1","d1","e1","f1","a2","d2","e2","f2","compose","dx1","dy1","sx","sy","dx2","dy2","makeInverse","mat","det","join","tmpTransform","Geometry","lastResult","lastArgs","lastThis","called","extentRevision_","simplifiedGeometryMaxMinSquaredTolerance","simplifiedGeometryRevision","simplifyTransformedInternal","revision","squaredTolerance","opt_transform","nextArgs","simplifyTransformed","closestPointXY","closestPoint","minSquaredDistance","coord","getClosestPoint","opt_closestPoint","intersectsCoordinate","computeExtent","returnOrUpdate","scale","opt_sy","opt_anchor","simplify","tolerance","getType","intersectsExtent","translate","inCoordinates","outCoordinates","pixelExtent","projectedExtent","getStrideForLayout","layout","GeometryLayout","SimpleGeometry","getCoordinates","getFirstCoordinate","getFlatCoordinates","getLastCoordinate","getLayout","simplifiedGeometry","getSimplifiedGeometryInternal","getStride","setFlatCoordinates","setCoordinates","opt_layout","setLayout","nesting","getLayoutForStride","twiceArea","ends","assignClosest","offset1","offset2","maxSquaredDelta","squaredDelta","arrayMaxSquaredDelta","assignClosestPoint","maxDelta","isRing","opt_tmpPoint","squaredDistance","tmpPoint","assignClosestArrayPoint","deflateCoordinate","deflateCoordinates","deflateCoordinatesArray","coordinatess","opt_ends","inflateCoordinates","opt_coordinates","inflateCoordinatesArray","opt_coordinatess","inflateMultiCoordinatesArray","endss","opt_coordinatesss","coordinatesss","douglasPeucker","simplifiedFlatCoordinates","simplifiedOffset","markers","last","first","maxSquaredDistance","squaredDistance_1","douglasPeuckerArray","simplifiedEnds","snap","round","quantize","quantizeArray","LinearRing","maxDelta_","maxDeltaRevision_","GeometryType","Point","linearRingContainsExtent","linearRingContainsXY","wn","linearRingsContainsXY","getInteriorPointOfArray","flatCenters","flatCentersOffset","intersections","rr","pointX","maxSegmentLength","getInteriorPointsOfMultiArray","interiorPoints","ret","point1","point2","intersectsLineString","coordinatesExtent","start","startRel","endRel","startX","startY","endX","endY","slope","intersectsSegment","intersectsLinearRingArray","intersectsLinearRing","linearRingIsClockwise","edge","linearRingsAreOriented","opt_right","isClockwise","orientLinearRings","orientLinearRingsArray","Polygon","ends_","flatInteriorPointRevision_","flatInteriorPoint_","orientedRevision_","orientedFlatCoordinates_","appendLinearRing","linearRing","getOrientedFlatCoordinates","getEnds","getFlatInteriorPoint","flatCenter","getInteriorPoint","getLinearRingCount","getLinearRing","getLinearRings","linearRings","circular","opt_n","opt_sphereRadius","fromExtent","fromCircle","circle","opt_sides","opt_angle","sides","arrayLength","polygon","makeRegular","getRadius","startAngle","GeolocationError","error","Geolocation","position_","transform_","watchId_","handleProjectionChanged_","handleTrackingChanged_","setProjection","trackingOptions","setTrackingOptions","setTracking","tracking","getProjection","navigator","getTracking","geolocation","watchPosition","positionChange_","positionError_","getTrackingOptions","clearWatch","position","coords","accuracy","altitude","altitudeAccuracy","heading","longitude","latitude","projectedPosition","speed","getAccuracy","getAccuracyGeometry","getAltitude","getAltitudeAccuracy","getHeading","getPosition","getSpeed","Kinetic","decay","minVelocity","delay","decay_","minVelocity_","delay_","points_","angle_","initialVelocity_","update","Date","now","lastIndex","firstIndex","duration","getAngle","MapEvent","opt_frameState","frameState","MapBrowserEvent","browserEvent","opt_dragging","originalEvent","pixel_","coordinate_","dragging","getEventPixel","configurable","getCoordinateFromPixel","ua","userAgent","toLowerCase","FIREFOX","WEBKIT","MAC","DEVICE_PIXEL_RATIO","devicePixelRatio","WORKER_OFFSCREEN_CANVAS","WorkerGlobalScope","OffscreenCanvas","self","IMAGE_DECODE","Image","PASSIVE_EVENT_LISTENERS","passive","SINGLECLICK","CLICK","DBLCLICK","POINTERDRAG","POINTERMOVE","POINTERDOWN","POINTERUP","POINTEROVER","POINTEROUT","POINTERENTER","POINTERLEAVE","POINTERCANCEL","MapBrowserPointerEvent","MapBrowserEventHandler","moveTolerance","map_","clickTimeoutId_","dragging_","dragListenerKeys_","moveTolerance_","down_","getViewport","activePointers_","trackedTouches_","element_","pointerdownListenerKey_","handlePointerDown_","originalPointerMoveEvent_","relayedListenerKey_","relayEvent_","boundHandleTouchMove_","handleTouchMove_","emulateClick_","newEvent","MapBrowserEventType","clearTimeout","updateActivePointers_","handlePointerUp_","isMouseActionButton_","handlePointerMove_","isMoving_","PriorityQueue","priorityFunction","keyFunction","priorityFunction_","keyFunction_","elements_","priorities_","queuedElements_","dequeue","elements","priorities","siftUp_","elementKey","enqueue","priority","siftDown_","getCount","getLeftChildIndex_","getRightChildIndex_","getParentIndex_","heapify_","isKeyQueued","isQueued","count","startIndex","lIndex","rIndex","smallerChildIndex","parentIndex","reprioritize","TileQueue","tilePriorityFunction","tileChangeCallback","getKey","boundHandleTileChange_","handleTileChange","tileChangeCallback_","tilesLoading_","tilesLoadingKeys_","added","getTilesLoading","tile","state","getState","hifi","TileState","tileKey","loadMoreTiles","maxTotalLoading","maxNewLoads","newLoads","createExtent","onlyCenter","smooth","opt_isMoving","viewWidth","viewHeight","ratio","none","getViewportClampedResolution","maxExtent","viewportSize","showFullExtent","xResolution","yResolution","getSmoothClampedResolution","maxResolution","minResolution","createMinMaxResolution","opt_smooth","opt_maxExtent","opt_showFullExtent","cappedMaxRes","disable","padNumber","number","opt_precision","numberString","toFixed","decimal","compareVersions","v1","v2","s1","s2","n1","parseInt","n2","delta","closestOnSegment","segment","along","degreesToStringHDMS","hemispheres","degrees","opt_fractionDigits","normalizedDegrees","dflPrecision","precision","deg","sec","charAt","template","replace","coordinate1","coordinate2","cosAngle","sinAngle","coord1","coord2","squaredDistanceToSegment","toStringXY","worldsAway","easeIn","easeOut","inAndOut","linear","animationCallback","returnValue","isNoopAnimation","animation","sourceCenter","targetCenter","sourceResolution","targetResolution","sourceRotation","targetRotation","View","hints_","animations_","updateAnimationKey_","projection_","viewportSize_","targetCenter_","targetResolution_","targetRotation_","cancelAnchor_","applyOptions_","resolutionConstraintInfo","resolutionConstraint","minZoom","maxZoom","zoomFactor","multiWorld","smoothResolutionConstraint","projExtent","constrainOnlyCenter","resolutions","constrainResolution","capped","createSnapToResolutions","defaultMaxResolution","defaultMinResolution","defaultMaxZoom","power","opt_minResolution","minZoomLevel","cappedZoomLevel","zoomLevel","createSnapToPower","constraint","createResolutionConstraint","maxResolution_","minResolution_","zoomFactor_","resolutions_","minZoom_","centerConstraint","smoothExtentConstraint","createCenterConstraint","rotationConstraint","enableRotation","constrainRotation","opt_tolerance","theta","createRotationConstraint","constraints_","setRotation","setCenterInternal","setResolution","zoom","setZoom","options_","getUpdatedOptions_","newOptions","getResolution","getZoom","getCenterInternal","getRotation","animate","var_args","isDef","getAnimating","resolveConstraints","args","animateInternal","animationCount","series","complete","easing","getResolutionForZoom","setHint","ViewHint","updateAnimations_","getInteracting","cancelAnimations","cancelAnimationFrame","more","seriesComplete","elapsed","fraction","progress","getViewportSize_","constrainedResolution","calculateCenterZoom","applyTargetState_","constrainedRotation","calculateCenterRotate","filter","requestAnimationFrame","currentCenter","currentResolution","opt_rotation","w","setViewportSize","opt_size","ViewProperty","getConstraints","getConstrainResolution","getHints","opt_hints","calculateExtent","calculateExtentInternal","getMaxResolution","getMinResolution","getMaxZoom","getZoomForResolution","setMaxZoom","getMinZoom","setMinZoom","setConstrainResolution","enabled","getResolutions","getResolutionForExtent","getResolutionForExtentInternal","getResolutionForValueFunction","opt_power","getConstrainedResolution","getValueForResolutionFunction","logPower","nearest","baseLevel","fit","geometryOrExtent","userProjection","fitInternal","padding","minRotX","minRotY","maxRotX","maxRotY","rotX","rotY","centerRotX","centerRotY","getConstrainedCenter","centerOn","centerOnInternal","centerX","centerY","adjustCenter","deltaCoordinates","setCenter","adjustCenterInternal","adjustResolution","adjustResolutionInternal","isMoving","newResolution","adjustZoom","adjustRotation","adjustRotationInternal","newRotation","hint","opt_doNotCancelAnims","opt_forceMoving","newCenter","opt_duration","opt_resolutionDirection","beginInteraction","endInteraction","endInteractionInternal","opt_targetResolution","getConstrainedZoom","targetZoom","opt_direction","targetRes","createCanvasContext2D","opt_width","opt_height","opt_canvasPool","canvas","offsetWidth","getComputedStyle","marginLeft","marginRight","offsetHeight","marginTop","marginBottom","replaceNode","oldNode","parentNode","replaceChild","removeNode","removeChild","removeChildren","lastChild","Base","BaseLayer","opacity","visible","zIndex","className_","className","state_","getClassName","getLayerState","opt_managed","layer","managed","getOpacity","sourceState","getSourceState","getVisible","getLayersArray","getLayerStatesArray","opt_states","setMaxResolution","setMinResolution","setOpacity","setVisible","setZIndex","zindex","LayerGroup","baseOptions","layers","layersListenerKeys_","listenerKeys_","handleLayersChanged_","setLayers","handleLayerChange_","getLayers","handleLayersAdd_","handleLayersRemove_","layersArray","collectionEvent","states","ownLayerState","layerState","toSize","PluggableMap","optionsInternal","keyboardEventTarget","getElementById","controls","interactions","overlays","layerGroup","MapProperty","view","createOptionsInternal","boundHandleBrowserEvent_","handleBrowserEvent","maxTilesLoading_","maxTilesLoading","pixelRatio_","pixelRatio","postRenderTimeoutHandle_","animationDelayKey_","animationDelay_","renderFrame_","coordinateToPixelTransform_","pixelToCoordinateTransform_","frameIndex_","frameState_","previousExtent_","viewPropertyListenerKey_","viewChangeListenerKey_","layerGroupPropertyListenerKeys_","viewport_","overflow","overlayContainer_","appendChild","overlayContainerStopEvent_","mapBrowserEventHandler_","handleMapBrowserEvent","keyboardEventTarget_","keyHandlerKeys_","overlays_","overlayIdIndex_","renderer_","handleResize_","postRenderFunctions_","tileQueue_","getTilePriority","handleTileChange_","handleLayerGroupChanged_","handleViewChanged_","handleSizeChanged_","handleTargetChanged_","control","setMap","interaction","addOverlayInternal_","createRenderer","addControl","getControls","addInteraction","getInteractions","addLayer","getLayerGroup","addOverlay","overlay","getOverlays","setTarget","forEachFeatureAtPixel","getCoordinateFromPixelInternal","hitTolerance","layerFilter","checkWrapped","forEachFeatureAtCoordinate","getFeaturesAtPixel","features","feature","forEachLayerAtPixel","hasFeatureAtPixel","hasFeatureAtCoordinate","getEventCoordinate","getEventCoordinateInternal","viewportPosition","eventPosition","getTarget","getTargetElement","getView","pixelToCoordinateTransform","getOverlayById","getLoading","layerStatesArray","getSource","loading","getPixelFromCoordinate","viewCoordinate","getPixelFromCoordinateInternal","coordinateToPixelTransform","getRenderer","getSize","getOverlayContainer","getOverlayContainerStopEvent","tileSourceKey","tileCenter","tileResolution","wantedTiles","viewState","mapBrowserEvent","body","getRootNode","interactionsArray","getActive","handlePostRender","tileQueue","hints","viewHints","lowOnFrameBudget","time","dispatchRenderEvent","postRenderFunctions","render","targetElement","updateSize","handleViewPropertyChanged_","updateViewportSize_","isRendered","renderSync","redrawText","layerStates","hasRenderer","handleFontsChanged","removeControl","removeInteraction","removeLayer","removeOverlay","previousFrameState","hasArea","declutterItems","layerIndex","usedTiles","renderFrame","MapEventType","setLayerGroup","setSize","setView","computedStyle","parseFloat","Control","target_","listenerKeys","render_","getMap","mapEvent","fontRegEx","RegExp","fontRegExMatchIndex","getFontParameters","fontSpec","match","lineHeight","weight","variant","families","family","inView","Layer","mapPrecomposeKey_","mapRenderKey_","sourceChangeKey_","handleSourcePropertyChange_","setSource","handleSourceChange_","getFeatures","layerRenderer","prepareFrame","some","arrayLayerState","updateElement_","Attribution","ulElement_","collapsed_","collapsed","overrideCollapsible_","collapsible","collapsible_","tipLabel","collapseLabel","collapseLabel_","textContent","label","label_","activeLabel","setAttribute","title","handleClick_","cssClasses","renderedAttributions_","renderedVisible_","collectSourceAttributions_","lookup","visibleAttributions","attributionGetter","getAttributions","attributions","getAttributionsCollapsible","setCollapsible","display","innerHTML","handleToggle_","classList","toggle","getCollapsible","setCollapsed","getCollapsed","rotation_","autoHide_","add","Rotate","callResetNorth_","resetNorth","duration_","autoHide","resetNorth_","Zoom","zoomInLabel","zoomOutLabel","zoomInTipLabel","zoomOutTipLabel","inElement","createTextNode","outElement","zoomByDelta_","currentZoom","newZoom","defaults","zoomOptions","rotateOptions","attribution","attributionOptions","zoomByDelta","Interaction","setActive","active","stopEvent","delta_","DoubleClickZoom","altKeyOnly","altShiftKeysOnly","activeElement","always","mouseActionButton","never","singleClick","noModifierKeys","shiftKeyOnly","targetNotEditable","tagName","mouseOnly","primaryAction","pointerEvents","Pointer","PointerInteraction","handleDownEvent","handleDragEvent","handleMoveEvent","handleUpEvent","stopDown","handlingDownUpSequence","trackedPointers_","targetPointers","getPointerCount","updateTrackedPointers_","handledUp","handled","isPointerDraggingEvent","event_1","defaultCondition","DragPan","kinetic_","kinetic","lastCentroid","lastPointersCount_","panning_","condition_","condition","noKinetic_","conditionInternal_","pass","hasAttribute","centroid","centerpx","DragRotate","lastAngle_","RenderBox","geometry_","startPixel_","endPixel_","startPixel","endPixel","setPixels","createOrUpdateGeometry","DragBoxEventType","DragBoxEvent","DragBox","box_","minArea_","onBoxEnd_","onBoxEnd","boxEndCondition_","boxEndCondition","defaultBoxEndCondition","out_","mapExtent","boxPixelExtent","DragZoom","out","keyCode","KeyCode","mapUnitsDelta","pixelDelta_","pan","KeyboardPan","defaultCondition_","pixelDelta","charCode","KeyboardZoom","Mode","MouseWheelZoom","totalDelta_","lastDelta_","timeout_","timeout","useAnchor_","useAnchor","lastAnchor_","startTime_","timeoutId_","mode_","trackpadEventGap_","trackpadTimeoutId_","deltaPerZoom_","endInteraction_","wheelEvent","deltaMode","WheelEvent","DOM_DELTA_PIXEL","DOM_DELTA_LINE","timeLeft","handleWheelZoom_","setMouseAnchor","PinchRotate","pointerOptions","anchor_","rotating_","rotationDelta_","threshold_","threshold","rotationDelta","touch0","touch1","PinchZoom","lastDistance_","lastScaleDelta_","scaleDelta","altShiftDragRotate","doubleClickZoom","zoomDelta","zoomDuration","dragPan","onFocusOnly","pinchRotate","pinchZoom","keyboard","mouseWheelZoom","shiftDragZoom","RenderEvent","opt_inversePixelTransform","opt_context","inversePixelTransform","HEX_COLOR_RE_","NAMED_COLOR_RE_","asString","color","fromNamed","rgb","cache","cacheSize","fromString","g","exec","hasAlpha","substr","normalize","Number","fromStringInternal_","asArray","IconImageCache","cache_","cacheSize_","maxCacheSize_","canExpireCache","expire","iconImage","src","crossOrigin","maxCacheSize","shared","asColorLike","VectorContext","drawCustom","renderer","drawGeometry","drawCircle","circleGeometry","drawFeature","drawGeometryCollection","geometryCollectionGeometry","drawLineString","lineStringGeometry","drawMultiLineString","multiLineStringGeometry","drawMultiPoint","multiPointGeometry","drawMultiPolygon","multiPolygonGeometry","drawPoint","pointGeometry","drawPolygon","polygonGeometry","drawText","setFillStrokeStyle","fillStyle","strokeStyle","setImageStyle","imageStyle","opt_declutterGroup","setTextStyle","textStyle","opt_declutterGroups","defaultLineDash","defaultPadding","checkedFonts","labelCache","console","warn","measureFont","div","heights","measureContext","textHeights","registerFont","interval","referenceWidth","referenceFonts","text","isAvailable","fontStyle","fontWeight","fontFamily","available","referenceFont","measureTextWidth","check","done","fonts","font","clearInterval","setInterval","measureTextHeight","metrics","measureText","actualBoundingBoxAscent","actualBoundingBoxDescent","rotateAtOffset","drawImageOrLabel","labelOrImage","originX","originY","save","globalAlpha","setTransform","contextInstructions","executeLabelInstructions","drawImage","restore","createTransformStringCanvas","createTransformString","CanvasImmediateRenderer","viewRotation","opt_squaredTolerance","opt_userTransform","context_","viewRotation_","squaredTolerance_","userTransform_","contextFillState_","contextStrokeState_","contextTextState_","fillState_","strokeState_","image_","imageAnchorX_","imageAnchorY_","imageHeight_","imageOpacity_","imageOriginX_","imageOriginY_","imageRotateWithView_","imageRotation_","imageScale_","imageWidth_","text_","textOffsetX_","textOffsetY_","textRotateWithView_","textRotation_","textScale_","textFillState_","textStrokeState_","textState_","pixelCoordinates_","tmpLocalTransform_","drawImages_","pixelCoordinates","localTransform","alpha","drawText_","setContextFillState_","setContextStrokeState_","setContextTextState_","strokeText","fillText","moveToLineTo_","close","moveTo","lineTo","closePath","drawRings_","simpleGeometry","transformGeom2D","beginPath","arc","fill","stroke","getFill","getStroke","getImage","getText","getGeometryFunction","geometries","getGeometriesArray","flatMidpoint","getFlatMidpoint","geometryExtent","flatMidpoints","getFlatMidpoints","flatInteriorPoint","getEndss","flatInteriorPoints","getFlatInteriorPoints","fillState","contextFillState","strokeState","contextStrokeState","lineCap","setLineDash","lineDash","lineDashOffset","lineJoin","lineWidth","miterLimit","textState","contextTextState","textAlign","textBaseline","fillStyleColor","getColor","strokeStyleColor","strokeStyleLineCap","getLineCap","strokeStyleLineDash","getLineDash","strokeStyleLineDashOffset","getLineDashOffset","strokeStyleLineJoin","getLineJoin","strokeStyleWidth","strokeStyleMiterLimit","getMiterLimit","imageAnchor","getAnchor","imageImage","imageOrigin","getOrigin","imageSize","getRotateWithView","getScale","textFillStyle","textFillStyleColor","textStrokeStyle","textStrokeStyleColor","textStrokeStyleLineCap","textStrokeStyleLineDash","textStrokeStyleLineDashOffset","textStrokeStyleLineJoin","textStrokeStyleWidth","textStrokeStyleMiterLimit","textFont","getFont","textOffsetX","getOffsetX","textOffsetY","getOffsetY","textRotateWithView","textRotation","textScale","textText","textTextAlign","getTextAlign","textTextBaseline","getTextBaseline","GEOMETRY_RENDERERS","builderGroup","getImageState","ImageState","imageReplay","getBuilder","BuilderType","addDeclutter","textReplay","lineStringReplay","polygonReplay","replayGroup","geometryRenderer","circleReplay","defaultOrder","feature1","feature2","getSquaredTolerance","getTolerance","renderFeature","imageState","unlistenImageChange","listenImageChange","renderGeometry","getGeometries","renderFeatureInternal","getVectorContext","userTransform","renderDeclutterItems","declutterTree","zIndexItems","renderDeclutter","expireIconCache","MapRenderer","declutterTree_","calculateMatrices2D","thisArg","thisArg2","translatedCoordinate","offsets","declutteredFeatures","numLayers","entry","tmpCoord","getWrapX","callback_1","scheduleExpireIconCache","Composite","CompositeMapRenderer","fontChangeListenerKey_","CLASS_UNSELECTABLE","container","insertBefore","firstChild","children_","previousElement","oldChildren","childNodes","oldChild","newChild","replaceChildren","getDataAtPixel","Map","Overlay","insertFirst","autoPan","autoPanAnimation","autoPanMargin","rendered","mapPostrenderListenerKey","handleElementChanged","handleMapChanged","handleOffsetChanged","handlePositionChanged","handlePositioningChanged","setElement","setOffset","setPositioning","positioning","OverlayPositioning","setPosition","getElement","getOffset","getPositioning","updatePixelPosition","performAutoPan","panIntoView","panIntoViewOptions","mapRect","getRect","overlayRect","myMargin","offsetLeft","offsetRight","offsetTop","offsetBottom","centerPx","newCenterPx","panOptions","box","pageXOffset","pageYOffset","mapSize","updateRenderedPosition","posX","posY","msTransform","getOptions","withCredentials","loadFeaturesXhr","url","format","success","failure","xhr","XMLHttpRequest","open","FormatType","responseType","onload","status","responseText","responseXML","DOMParser","parseFromString","readFeatures","featureProjection","readProjection","onerror","send","dataProjection","addFeatures","TileRange","tileCoord","containsTileRange","tileRange","opt_tileCoord","getKeyZXY","fromKey","hash","tmpTileCoord","TileGrid","opt_strict","currentVal","res","origins","origin_","origin","origins_","tileSizes_","tileSizes","tileSize_","tileSize","fullTileRanges_","tmpSize_","sizes","calculateTileRanges_","forEachTileCoord","getTileRangeForExtentAndZ","forEachTileCoordParentTileRange","opt_tileRange","tileCoordExtent","getTileCoordExtent","getTileCoordChildTileRange","getTileRangeExtent","getTileSize","getTileCoordForXYAndZ_","getTileCoordCenter","getTileCoordForCoordAndResolution","getTileCoordForXYAndResolution_","reverseIntersectionPolicy","getZForResolution","adjustX","adjustY","xFromOrigin","yFromOrigin","tileCoordX","tileCoordY","getTileCoordForCoordAndZ","getTileCoordResolution","getFullTileRange","fullTileRanges","getForProjection","createForProjection","createXYZ","xyzOptions","gridOptions","resolutionsFromExtent","opt_maxZoom","opt_tileSize","opt_maxResolution","opt_corner","createForExtent","extentFromProjection","half","supportedExtensions","CONTEXT_IDS","opt_attributes","XML_SCHEMA_INSTANCE_URI","createElementNS","namespaceURI","qualifiedName","getDocument","getAllTextContent","normalizeWhitespace","getAllTextContent_","accumulator","nodeType","Node","CDATA_SECTION_NODE","TEXT_NODE","nodeValue","nextSibling","isDocument","parse","xml","makeArrayExtender","valueReader","objectStack","makeArrayPusher","makeReplacer","makeObjectPropertyPusher","opt_property","localName","makeObjectPropertySetter","makeChildAppender","nodeWriter","makeArraySerializer","serializersNS","nodeFactory","serializers","makeSimpleNodeFactory","serialize","opt_nodeName","opt_namespaceURI","fixedNodeName","nodeName","OBJECT_PROPERTY_NODE_FACTORY","makeSequence","orderedKeys","sequence","makeStructureNS","namespaceURIs","structure","opt_structureNS","structureNS","parseNode","parsersNS","firstElementChild","nextElementSibling","parsers","parser","pushParseAndPop","opt_keys","pushSerializeAndPop","xmlSerializer_","document_","implementation","createDocument","BufferUsage","getArrayClassForType","Float32Array","Uint32Array","WebGLArrayBuffer","opt_usage","usage","ofSize","fromArray","from","fromArrayBuffer","getUsage","fromTransform","mat4","WebGLPostProcessingPass","gl_","webGlContext","gl","scaleRatio_","scaleRatio","renderTargetTexture_","createTexture","renderTargetTextureSize_","frameBuffer_","createFramebuffer","vertexShader","createShader","VERTEX_SHADER","shaderSource","compileShader","fragmentShader","FRAGMENT_SHADER","renderTargetProgram_","createProgram","attachShader","linkProgram","renderTargetVerticesBuffer_","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","renderTargetAttribLocation_","getAttribLocation","renderTargetUniformLocation_","getUniformLocation","renderTargetTextureLocation_","uniforms_","uniforms","location","getGL","init","textureSize","drawingBufferWidth","drawingBufferHeight","bindFramebuffer","FRAMEBUFFER","getFrameBuffer","viewport","internalFormat","RGBA","UNSIGNED_BYTE","bindTexture","TEXTURE_2D","texImage2D","texParameteri","TEXTURE_MIN_FILTER","LINEAR","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","framebufferTexture2D","COLOR_ATTACHMENT0","nextPass","activeTexture","TEXTURE0","clearColor","COLOR_BUFFER_BIT","enable","BLEND","blendFunc","ONE","ONE_MINUS_SRC_ALPHA","useProgram","enableVertexAttribArray","vertexAttribPointer","FLOAT","uniform2f","uniform1i","applyUniforms","drawArrays","TRIANGLES","textureSlot","uniform","HTMLCanvasElement","texture","uniform3f","uniform4f","uniform1f","DefaultUniform","AttributeType","UNSIGNED_SHORT","UNSIGNED_INT","computeAttributesStride","attributes","attr","getByteSizeFromType","BYTES_PER_ELEMENT","Uint16Array","WebGLHelper","boundHandleWebGLContextLost_","handleWebGLContextLost","boundHandleWebGLContextRestored_","handleWebGLContextRestored","canvas_","bufferCache_","currentProgram_","getSupportedExtensions","getExtension","ContextEventType","offsetRotateMatrix_","offsetScaleMatrix_","tmpMat4_","uniformLocations_","attribLocations_","name_1","postProcessPasses_","postProcesses","shaderCompileErrors_","bufferKey","bufferCache","webGlBuffer","flushBufferData","deleteBuffer","bufferCacheEntry","isContextLost","prepareDraw","getCanvas","applyFrameState","prepareDrawToRenderTarget","renderTarget","opt_disableAlphaBlend","getFramebuffer","getTexture","ZERO","drawElements","elementType","numItems","offsetInBytes","finalizeDraw","offsetScaleMatrix","offsetRotateMatrix","setUniformMatrixValue","setUniformFloatValue","HTMLImageElement","prevValue","program","shader","getProgram","fragmentShaderSource","vertexShaderSource","getShaderInfoLog","getShaderCompileErrors","getAttributeLocation","makeProjectionTransform","uniformMatrix4fv","enableAttributeArray_","attribName","enableAttributes","opt_data","opt_texture","tmpArray4","WebGLRenderTarget","helper","helper_","texture_","framebuffer_","size_","data_","dataCacheDirty_","updateSize_","clearCachedData","readAll","readPixels","readPixel","WMTSTileGrid","matrixIds_","matrixIds","getMatrixId","getMatrixIds","createFromCapabilitiesMatrixSet","matrixSet","opt_matrixLimits","matrixLimits","switchOriginXY","elt","elt_ml","tileWidth","tileHeight","ImageStyle","opacity_","rotateWithView_","rotateWithView","scale_","displacement_","displacement","getDisplacement","getHitDetectionImage","getImageSize","getHitDetectionImageSize","setRotateWithView","setScale","RegularShape","hitDetectionCanvas_","fill_","points","radius_","radius1","radius2_","radius2","stroke_","imageSize_","hitDetectionImageSize_","getPoints","getRadius2","strokeWidth","renderOptions","draw_","createHitDetectionCanvas_","angle0","radiusC","drawHitDetectionCanvas_","CircleStyle","setRadius","Fill","color_","setColor","ImageBase","getPixelRatio","listenImage","image","loadHandler","errorHandler","img","promise","listening_1","then","catch","ImageWrapper","imageLoadFunction","src_","unlisten_","imageLoadFunction_","handleImageError_","unlistenImage_","handleImageLoad_","setImage","IconImage","hitDetectionImage_","imageState_","tainted_","isTainted_","getImageData","dispatchChangeEvent_","replaceColor_","fillRect","getSrc","ctx","globalCompositeOperation","imgData","putImageData","Icon","normalizedAnchor_","anchorOrigin_","anchorOrigin","IconOrigin","anchorXUnits_","anchorXUnits","IconAnchorUnits","anchorYUnits_","anchorYUnits","crossOrigin_","imgSize","iconImage_","offset_","offsetOrigin_","offsetOrigin","setAnchor","iconImageSize","Stroke","lineCap_","lineDash_","lineDashOffset_","lineJoin_","miterLimit_","width_","setLineCap","setLineDashOffset","setLineJoin","setMiterLimit","setWidth","Style","geometryFunction_","defaultGeometryFunction","zIndex_","setRenderer","setFill","setStroke","setText","defaultStyles","createDefaultStyle","createEditingStyle","styles","white","blue","Text","font_","textAlign_","textBaseline_","maxAngle_","maxAngle","placement_","placement","TextPlacement","overflow_","offsetX_","offsetY_","backgroundFill_","backgroundFill","backgroundStroke_","backgroundStroke","padding_","getPlacement","getMaxAngle","getOverflow","getBackgroundFill","getBackgroundStroke","getPadding","setOverflow","setFont","setMaxAngle","setOffsetX","setOffsetY","setPlacement","setTextAlign","setTextBaseline","setBackgroundFill","setBackgroundStroke","setPadding","zRegEx","xRegEx","yRegEx","dashYRegEx","range","createFromTemplates","templates","tileUrlFunctions","createFromTileUrlFunctions","nullTileUrlFunction","expandUrl","urls","startCharCode","stopCharCode","stop_1","jsonp","opt_errback","opt_callbackParam","script","cleanup","async","timer","getElementsByTagName","Tile","interimTile","transition_","transition","transitionStarts_","release","getInterimTile","refreshInterimChain","getTileCoord","setState","getAlpha","inTransition","endTransition","ImageTile","tileLoadFunction","tileLoadFunction_","naturalWidth","naturalHeight","LRUCache","opt_highWaterMark","highWaterMark","count_","entries_","oldest_","newest_","containsKey","value_","key_","newer","older","peekLast","peekLastKey","peekFirstKey","TileCache","expireCache","pruneExceptNewestZ","calculateSourceResolution","targetProj","targetMetersPerUnit","sourceMetersPerUnit","sourceExtent","compensationFactor","isFinite","enlargeClipPoint","centroidX","centroidY","dX","dY","targetExtent","triangulation","sources","gutter","opt_renderEdges","sourceDataExtent","canvasWidthInUnits","canvasHeightInUnits","stitchContext","stitchScale","xPos","yPos","srcWidth","srcHeight","targetTopLeft","getTriangles","triangle","u0","v0","u1","u2","sourceNumericalShiftX","sourceNumericalShiftY","affineCoefs","maxRow","maxEl","absValue","coef","solveLinearSystem","p0","p1","p2","clip","Triangulation","maxSourceExtent","errorThreshold","opt_destinationResolution","sourceProj_","targetProj_","transformInvCache","transformInv","transformInv_","maxSourceExtent_","errorThresholdSquared_","triangles_","wrapsXInSource_","canWrapXInSource_","sourceWorldWidth_","targetWorldWidth_","destinationTopLeft","destinationTopRight","destinationBottomRight","destinationBottomLeft","sourceTopLeft","sourceTopRight","sourceBottomRight","sourceBottomLeft","maxSubdivision","log2","addQuad_","leftBound_1","newTriangle","addTriangle_","aSrc","bSrc","cSrc","dSrc","sourceQuadExtent","sourceCoverageX","sourceWorldWidth","wrapsX","needsSubdivision","centerSrc","bc","bcSrc","da","daSrc","ab","abSrc","cd","cdSrc","calculateSourceExtent","ReprojTile","sourceTileGrid","targetTileGrid","wrappedTileCoord","getTileFunction","opt_errorThreshold","renderEdges_","gutter_","sourceTileGrid_","targetTileGrid_","wrappedTileCoord_","sourceTiles_","sourcesListenerKeys_","sourceZ_","maxTargetExtent","limitedTargetExtent","sourceProjExtent","errorThresholdInPixels","triangulation_","sourceRange","srcX","srcY","reproject_","leftToLoad_1","sourceListenKey_1","unlistenSources_","adaptAttributions","attributionLike","Source","attributions_","attributionsCollapsible_","attributionsCollapsible","wrapX_","wrapX","refresh","setAttributions","TileSource","opaque_","opaque","tilePixelRatio_","tilePixelRatio","canUseScreen","screen","availWidth","availHeight","minCacheSize","tileCache","tmpSize","tileOptions","zDirection","getTileCacheForProjection","forEachLoadedTile","tileCoordKey","loaded","covered","getGutterForProjection","setKey","getOpaque","getTile","getTileGrid","getTileGridForProjection","thisProj","getTilePixelRatio","getTilePixelSize","getTileCoordForTileUrlFunction","opt_projection","withinExtentAndZ","useTile","TileSourceEvent","UrlTile","generateTileUrlFunction_","tileUrlFunction","setUrls","setUrl","tileLoadingKeys_","getTileLoadFunction","getTileUrlFunction","getUrls","uid","tileState","TileEventType","setTileLoadFunction","setTileUrlFunction","defaultTileLoadFunction","imageTile","TileImage","tileClass","tileCacheForProjection","tileGridForProjection","reprojectionErrorThreshold_","reprojectionErrorThreshold","renderReprojectionEdges_","usedTileCache","getGutter","projKey","createTile_","urlTileCoord","tileUrl","newTile","getTileInternal","setRenderReprojectionEdges","setTileGridForProjection","tilegrid","proj","BingMaps","hidpi","hidpi_","culture_","culture","maxZoom_","apiKey_","imagerySet_","imagerySet","handleImageryMetadataResponse","getApiKey","getImagerySet","response","statusCode","statusDescription","authenticationResultCode","resourceSets","resources","resource","zoomMax","imageWidth","imageHeight","zoomMin","imageUrlSubdomains","subdomain","quadKeyTileCoord","imageUrl","digits","mask","quadKey","imageryProviders","transform_1","imageryProvider","intersecting","coverageAreas","coverageArea","XYZ","CartoDB","account_","account","mapId_","config_","templateCache_","initializeMap_","getConfig","updateConfig","setConfig","paramHash","JSON","stringify","applyTemplate_","mapUrl","client","handleInitResponse_","handleInitError_","setRequestHeader","err","tilesUrl","cdn_url","https","layergroupid","opt_maxEntries","rbush_","items_","extents","getAll","getInExtent","forEach_","forEachInExtent","rbush","VectorSourceEvent","opt_feature","Vector","VectorSource","loader_","format_","overlaps_","overlaps","url_","loader","strategy_","strategy","collection","useSpatialIndex","featuresRtree_","loadedExtentsRtree_","nullGeometryFeatures_","idIndex_","uidIndex_","featureChangeKeys_","featuresCollection_","addFeaturesInternal","bindFeaturesCollection_","addFeature","addFeatureInternal","featureKey","addToIndex_","setupChangeEvents_","VectorEventType","handleFeatureChange_","valid","newFeatures","geometryFeatures","length_1","length_2","length_3","modifyingCollection","removeFeature","opt_fast","featureId","removeFeatureInternal","clearEvent","forEachFeature","forEachFeatureAtCoordinateDirect","forEachFeatureInExtent","forEachFeatureIntersectingExtent","getFeaturesCollection","getFeaturesAtCoordinate","getFeaturesInExtent","getClosestFeatureToCoordinate","opt_filter","closestFeature","previousMinSquaredDistance","minDistance","getFeatureById","getFeatureByUid","getFormat","getOverlaps","getUrl","sid","removeFromIdIndex_","hasFeature","loadFeatures","loadedExtentsRtree","extentsToLoad","_loop_1","extentToLoad","this_1","removeLoadedExtent","removed","setLoader","Cluster","geometryFunction","boundRefresh_","cluster","setDistance","mapDistance","clustered","neighbors","neighbor","createCluster","TierSizeCalculation","CustomTile","zoomifyImage_","Zoomify","tierSizeCalculation","tierSizeInTiles","tileSizeForTierSizeCalculation","reverse","tileCountUpToTier","tileCoordZ","tileIndex","localContext_1","ZoomifyTileClass","testTileUrl","Versions","IIIF_PROFILE_VALUES","supports","formats","qualities","COMPLIANCE_VERSION1","COMPLIANCE_VERSION2","COMPLIANCE_VERSION3","versionFunctions","iiifInfo","levelProfile","getComplianceLevelSupportedFeatures","imageInfo","scale_factors","tile_width","tile_height","additionalProfile","profile","profileSupports","profileFormats","profileQualities","tiles","scaleFactors","extraFormats","preferredFormat","preferredFormats","reduce","acc","extraFeatures","extraQualities","IIIFInfo","setImageInfo","getImageApiVersion","getComplianceLevelEntryFromProfile","version","test","getComplianceLevelFromProfile","complianceLevel","getTileSourceOptions","opt_preferredOptions","imageOptions","quality","formatPercentage","percentage","toLocaleString","maximumFractionDigits","IIIF","baseUrl","lastIndexOf","supportsListedSizes","supportsListedTiles","isInteger","supportsArbitraryTiling","maxScaleFactor","ignoredSizesIndex","IiifTileClass","regionParam","sizeParam","tileX","tileY","regionX","regionY","regionW","regionH","sizeW","sizeH","regionWidth","regionHeight","ReprojImage","getImageFunction","sourceImage","sourcePixelRatio","targetExtent_","sourceImage_","sourcePixelRatio_","sourceListenerKey_","unlistenSource_","ImageSourceEventType","ImageSourceEvent","defaultImageLoadFunction","ImageSource","reprojectedImage_","reprojectedRevision_","findNearestResolution","getImageInternal","handleImageChange","appendParams","uri","params","keyParams","encodeURIComponent","qs","ImageArcGISRest","params_","renderedRevision_","ratio_","getParams","halfWidth","halfHeight","imageResolution","getRequestUrl_","getImageLoadFunction","srid","modifiedUrl","setImageLoadFunction","updateParams","ImageCanvas","opt_loader","error_","getError","handleLoad_","ImageCanvasSource","canvasFunction_","canvasFunction","canvasElement","ImageMapGuide","displayDpi_","displayDpi","useOverlay_","useOverlay","dpi","mcsW","mcsH","devW","devH","mpp","baseParams","Static","imageExtent_","imageExtent","getImageExtent","targetWidth","GETFEATUREINFO_IMAGE_SIZE","ImageWMS","v13_","updateV13_","serverType_","getFeatureInfoUrl","projectionObj","sourceProjectionObj","getLegendUrl","LAYERS","mpu","viewExtent","requestExtent","WMSServerType","ATTRIBUTION","OSM","BaseImage","BaseImageLayer","LayerRenderer","boundHandleImageChange_","handleImageChange_","layer_","loadedTileCallback","createLoadedTileFinder","getLayer","renderIfReadyAndVisible","loadImage","CanvasLayerRenderer","renderedResolution","tempTransform_","pixelTransform","containerReused","useContainer","layerClassName","transformOrigin","topLeft","topRight","bottomRight","bottomLeft","clipUnrotated","inverted","dispatchRenderEvent_","preRender","postRender","getRenderTransform","renderPixel","CanvasImageLayerRenderer","imageLayer","viewResolution","imageSource","renderedExtent","imagePixelRatio","viewCenter","size_1","canvasTransform","clearRect","clipped","layerExtent","dw","dh","previousAlpha","ImageLayer","BaseTile","BaseTileLayer","preload","useInterimTilesOnError","setPreload","setUseInterimTilesOnError","getPreload","TileProperty","getUseInterimTilesOnError","CanvasTileLayerRenderer","tileLayer","extentChanged","renderedExtent_","renderedPixelRatio","renderedProjection","renderedRevision","renderedTiles","newTiles_","tmpExtent","tmpTileRange_","isDrawableTile","tileSource","sourceRevision","canvasExtent","tilesToDrawByZ","findLoadedTiles","tmpTileRange","childTileRange","canvasScale","clips","clipZs","currentClip","zs","currentZ","currentTilePixelSize","currentScale","dx_1","dy_1","originTileCoord","originTileExtent","origin_1","tileGutter","tilesToDraw","floatX","nextX","floatY","nextY","i_1","drawTileImage","updateUsedTiles","manageTilePyramid","scheduleExpireCache","getTileImage","tileAlpha","alphaChanged","postRenderFunction","opt_tileCallback","TileLayer","RasterEventType","RasterOperationType","RasterSourceEvent","RasterSource","worker_","operationType_","operationType","threads_","layers_","createLayer","createLayers","requestedFrameState_","renderedImageCanvas_","iMax","sourceOrLayer","sourceAttribution","setOperation","opt_lib","updateFrameState_","allSourcesReady_","ready","processSources_","imageDatas","onWorkerComplete_","sharedContext","layerOrSource","Raster","ATTRIBUTIONS","LayerConfig","ProviderConfig","Stamen","provider","providerConfig","layerConfig","tileExtent","tmpExtent_","TileArcGISRest","getKeyForParams_","LabeledTile","strokeRect","TileDebug","textTileCoord","TileJSON","tileJSON_","handleTileJSONResponse","handleTileJSONError","onXHRLoad_","onXHRError_","tileJSON","getTileJSON","epsg4326Projection","attributionExtent_1","TileWMS","transparent","preemptive","preemptive_","grid_","keys_","jsonp_","getData","xRelative","yRelative","row","forDataAtCoordinate","opt_request","loadInternal_","handleError_","json","UTFGrid","tileUrlFunction_","template_","getTemplate","forDataAtCoordinateAndResolution","grids","canvasPool","VectorRenderTile","getSourceTiles","executorGroups","loadingSourceTiles","errorSourceTileKeys","hitDetectionImageData","replayState_","sourceTiles","wantedResolution","sourceZ","hasContext","getReplayState","dirty","renderedRenderOrder","renderedTileResolution","renderedTileRevision","renderedZ","renderedTileZ","VectorTile","features_","onLoad","setFeatures","onError","defaultLoadFunction","loadingTiles_","sourceTileCache","tileGrids_","sourceTile","tileFeatures","candidate","loadedZ","previousSourceTiles","sourceTileCoord","listenChange","sourceTileKey","errorTileCount","coordKey","empty","WMTS","requestEncoding","WMTSRequestEncoding","version_","dimensions_","dimensions","matrixSet_","requestEncoding_","getKeyForDimensions_","createFromWMTSTemplate","getDimensions","getMatrixSet","getRequestEncoding","getVersion","updateDimensions","WebGLWorkerMessageType","WebGLLayerRenderer","BaseVector","BaseVectorLayer","renderBuffer","updateWhileAnimating","updateWhileInteracting","declutter_","declutter","renderBuffer_","updateWhileAnimating_","updateWhileInteracting_","getDeclutter","getRenderBuffer","getRenderOrder","getUpdateWhileAnimating","getUpdateWhileInteracting","setRenderOrder","renderOrder","styleFunction","WebGLPointsLayerRenderer","projectionMatrixTransform","sourceRevision_","verticesBuffer_","hitVerticesBuffer_","indicesBuffer_","program_","hitDetectionEnabled_","hitFragmentShader","hitVertexShader","hitProgram_","customAttributes","attribute","hitDetectionAttributes","currentTransform_","renderTransform_","invertRenderTransform_","renderInstructions_","hitRenderInstructions_","hitRenderTarget_","received","projectionTransform","hitDetection","vertexBuffer","indexBuffer","renderInstructions","featureCache_","featureCount_","sourceListenKeys_","handleSourceFeatureAdded_","handleSourceFeatureChanged_","handleSourceFeatureDelete_","handleSourceFeatureClear_","renderCount","renderHitDetection","vectorSource","viewNotMoving","sourceChanged","rebuildBuffers_","featureCache","totalInstructionsCount","totalHitInstructionsCount","hitColor","tmpCoords","tmpColor","renderIndex","hitIndex","featureUid","radix","customAttributesCount","hitMessage","colorDecodeId","terminate","Instruction","BEGIN_GEOMETRY","BEGIN_PATH","CLOSE_PATH","CUSTOM","DRAW_CHARS","DRAW_IMAGE","END_GEOMETRY","FILL","MOVE_TO_LINE_TO","SET_FILL_STYLE","SET_STROKE_STYLE","STROKE","beginPathInstruction","closePathInstruction","CanvasBuilder","maxLineWidth","beginGeometryInstruction1_","beginGeometryInstruction2_","bufferedMaxExtent_","instructions","tmpCoordinate_","hitDetectionInstructions","applyPixelRatio","dashArray","dash","appendFlatCoordinates","closed","skipFirst","myEnd","getBufferedMaxExtent","lastRel","nextRel","lastXCoord","lastYCoord","nextCoord","skipped","drawCustomCoordinates_","builderEnds","builderEnd","beginGeometry","builderEndss","builderBegin","myEnds","endGeometry","reverseHitDetectionInstructions","instruction","createFill","fillInstruction","applyStroke","createStroke","updateFillStyle","currentFillStyle","updateStrokeStyle","currentStrokeStyle","currentLineCap","currentLineDash","currentLineDashOffset","currentLineJoin","currentLineWidth","currentMiterLimit","endGeometryInstruction","CanvasImageBuilder","declutterGroups_","anchorX_","anchorY_","height_","originX_","originY_","drawCoordinates_","myBegin","declutterGroups","hitDetectionImage","CanvasLineStringBuilder","drawFlatCoordinates_","moveToLineToInstruction","lastStroke","CanvasPolygonBuilder","drawFlatCoordinatess_","numEnds","setFillStrokeStyles_","circleInstruction","matchingChunk","m12","m23","x12","y12","x23","y23","chunkStart","chunkEnd","chunkM","acos","TEXT_ALIGN","BATCH_CONSTRUCTORS","PolygonBuilder","Builder","ImageBuilder","LineStringBuilder","CanvasTextBuilder","labels_","fillStates","strokeStates","textStates","textKey_","fillKey_","strokeKey_","geometryType","flatOffset","flatEnd","oo","declutterGroup","drawChars_","geometryWidths","saveTextStates_","pixelRatio_1","strokeKey","textKey","fillKey","baseline","BuilderGroup","tolerance_","maxExtent_","resolution_","buildersByZIndex_","group","builderInstructions","zKey","builders","builderKey","builderInstruction","builderType","zIndexKey","replays","replay","Constructor","lineStringLength","drawTextOnPath","startM","measureAndCacheTextWidth","previousAngle","numChars","segmentM","angleChanged","char","charLength","charM","segmentPos","interpolate","p3","p4","Executor","alignFill_","coordinateCache_","renderedTransform_","widths_","createLabel","align","numLines","widths","currentWidth","measureTextWidths","renderWidth","OffscreenCanvasRenderingContext2D","CanvasRenderingContext2D","leftRight","replayTextBackground_","strokeInstruction","setStrokeStyle_","replayImageOrLabel_","imageOrLabel","snapToPixel","fillStroke","boxW","boxH","boxX","boxY","strokePadding","declutterArgs","repeatSize","groupCount","declutterData","currentAlpha","drawLabelWithPointPlacement_","execute_","featureCallback","opt_hitExtent","dd","prevX","prevY","roundX","roundY","pendingFill","pendingStroke","lastFillInstruction","lastStrokeInstruction","coordinateCache","viewRotationFromTransform","batchSize","labelWithAnchor","widthIndex","declutterGroupIndex","measurePixelRatio","pixelRatioScale","cachedWidths","pathLength","textLength","parts","cc","chars","part","execute","executeHitDetection","opt_featureCallback","ORDER","ExecutorGroup","allInstructions","opt_renderBuffer","executorsByZIndex_","hitDetectionContext_","hitDetectionTransform_","createExecutors_","flatClipCoords","getClipCoords","executors","instructionByZindex","hasExecutors","candidates","contextSize","hitExtent","circleArrayCache","arraySize","fillCircleArrayRowToMiddle","getCircleArray","j_1","result_1","executor","opt_builderTypes","opt_declutterReplays","builderTypes","0","replayDeclutter","declutterReplays","zz","executorData","currentExecutor","createHitDetectionImageData","transforms","imageSmoothingEnabled","featureCount","indexFactor","featuresByZIndex","featureStyleFunction","originalStyle","canvas_1","imgContext","byGeometryType","zIndexKeys","geomAndStyle","kk","hitDetect","resultFeatures","CanvasVectorLayerRenderer","vectorLayer","boundHandleStyleImageChange_","handleStyleImageChange_","animatingOrInteracting_","dirty_","hitDetectionImageData_","renderedFeatures_","renderedResolution_","renderedRotation_","renderedCenter_","renderedProjection_","renderedRenderOrder_","replayGroup_","replayGroupChanged","makeScale","world","transform_2","viewHints_1","Promise","resolve","reject","layer_1","features_1","animating","interacting","frameStateExtent","vectorLayerRevision","vectorLayerRenderBuffer","vectorLayerRenderOrder","loadExtents","loadExtent","userExtent","replayGroupInstructions","executorGroup","CanvasVectorImageLayerRenderer","vectorRenderer_","layerImageRatio_","getImageRatio","coordinateToVectorPixelTransform_","renderedPixelToCoordinateTransform_","vectorPixel","vectorRenderer","imageFrameState_1","image_1","IMAGE_REPLAYS","VECTOR_REPLAYS","CanvasVectorTileLayerRenderer","renderedLayerRevision_","renderTileImageQueue_","tileListenerKeys_","tmpTransform_","prepareTile","tileUid","updateExecutorGroup_","tileImageNeedsRender_","listenerKey","getRenderMode","VectorTileRenderType","renderTileImage_","layerRevision","builderState","layerUid","tt","sourceTileExtent","sharedExtent","bufferedExtent","executorGroupInstructions","replayExtent","renderingReplayGroup","found","_loop_2","tileContainsCoordinate","extent_1","tilePixel","renderQueuedTileImages_","renderMode","replayTypes","worldOffset","replayState","renderPixelRatio","renderScale","pixelScale","VectorLayer","interpolatePoint","pointY","cumulativeLengths","haystack","needle","opt_comparator","cmp","comparator","binarySearch","lineStringCoordinateAtM","extrapolate","lo","hi","m0","LineString","flatMidpoint_","flatMidpointRevision_","appendCoordinate","forEachSegment","getCoordinateAtM","opt_extrapolate","getCoordinateAt","geoM","fracA","fracB","fracM","geoA","geoB","geoStack","fractionStack","fractions","maxIterations","DEFAULT_STROKE_STYLE","INTERVALS","Graticule","maxLines","targetSize","showLabels","lonLabelFormatter","latLabelFormatter","lonLabelPosition","latLabelPosition","lonLabelStyle","latLabelStyle","intervals","maxLat_","maxLon_","minLat_","minLon_","maxX_","maxY_","minX_","minY_","targetSize_","maxLines_","meridians_","parallels_","strokeStyle_","fromLonLatTransform_","toLonLatTransform_","projectionCenterLonLat_","bottomLeft_","bottomRight_","topLeft_","topRight_","meridiansLabels_","parallelsLabels_","lonLabelFormatter_","latLabelFormatter_","lonLabelPosition_","latLabelPosition_","lonLabelStyleBase_","lonLabelStyle_","latLabelStyleBase_","latLabelStyle_","drawLabels_","intervals_","loaderFunction","strategyFunction","featurePool_","lineStyle_","loadedExtent_","realWorldExtent","renderExtent","updateProjectionInfo_","createGraticule_","featuresColl","poolIndex","addMeridian_","lon","minLat","maxLat","lineString","getMeridian_","geom","addParallel_","minLon","maxLon","getParallel_","rotationCenter","rotationExtent","cr","sr","unrotatedWidth","unrotatedHeight","startWorld","endWorld","labelsAtStart","vectorContext","textPoint","getMeridianPoint_","getParallelPoint_","getInterval_","validCenterP","centerLonLat","cnt","centerLon","centerLat","validExtentP","validExtent","clampedLat","frac","meridian","bottom","clampedBottom","clampedTop","getMeridians","lon2","parallel","clampedLeft","clampedRight","getParallels","toLonLatTransform","split_1","lonLatCoordinates","worldExtentP","DEFAULT_GRADIENT","Heatmap","gradient","blur","gradient_","handleGradientChanged_","setGradient","setBlur","weightFunction_","getBlur","getGradient","colors","createLinearGradient","step","addColorStop","createGradient","u_size","u_blurSlope","u_gradientTexture","VectorImage","VectorImageLayer","imageRatio","imageRatio_","VectorTileLayer","renderMode_","DragAndDropEventType","DragAndDropEvent","file","opt_features","handleDrop","files","dataTransfer","reader","FileReader","handleResult_","readAsText","handleStop","dropEffect","DragAndDrop","formatConstructors_","formatConstructors","dropListenKeys_","source_","tryReadFeatures_","registerListeners_","dropArea","unregisterListeners_","DragRotateAndZoom","lastMagnitude_","magnitude","angleDelta","Circle","setCenterAndRadius","getRadiusSquared_","MultiLineString","lineStrings","appendLineString","opt_interpolate","lineStringsCoordinateAtM","getLineString","getLineStrings","midpoints","intersectsLineStringArray","MultiPoint","appendPoint","getPoint","MultiPolygon","opt_endss","endss_","flatInteriorPointsRevision_","flatInteriorPoints_","polygons","appendPolygon","newEndss","multiArrayMaxSquaredDelta","assignClosestMultiArrayPoint","linearRingssContainsXY","linearRingss","getInteriorPoints","linearRingssAreOriented","simplifiedEndss","quantizeMultiArray","getPolygon","prevEnds","getPolygons","intersectsLinearRingMultiArray","deflateMultiCoordinatesArray","lastEnds","DrawEventType","DrawEvent","Draw","shouldHandle_","downPx_","downTimeout_","lastDragTime_","freehand_","snapTolerance_","snapTolerance","type_","getMode","stopClick_","stopClick","minPoints_","minPoints","maxPoints_","maxPoints","finishCondition_","finishCondition","opt_geometry","squaredLength","Constructor_1","mode_1","dragVertexDelay_","dragVertexDelay","finishCoordinate_","sketchFeature_","sketchPoint_","sketchCoords_","sketchLine_","sketchLineCoords_","squaredClickTolerance_","clickTolerance","overlay_","geometryName","freehandCondition_","freehand","freehandCondition","updateState_","getOverlay","move","addToDrawing_","startDrawing_","circleMode","finishDrawing","atFinish_","abortDrawing","downPx","clickPx","modifyDrawing_","createOrUpdateSketchPoint_","at","potentiallyDone","potentiallyFinishCoordinates","sketchCoords","finishCoordinate","finishPixel","updateSketchFeatures_","sketchLineGeom","ring","removeLastPoint","sketchFeature","abortDrawing_","appendCoordinates","ending","sketchFeatures","overlaySource","ExtentEventType","ExtentEvent","getDefaultPointerStyleFunction","getPointHandler","fixedPoint","getEdgeHandler","fixedP1","fixedP2","Extent","pointerHandler_","pixelTolerance_","pixelTolerance","snappedToVertex_","extentFeature_","vertexFeature_","extentOverlay_","boxStyle","vertexOverlay_","pointerStyle","snapToVertex_","pixelCoordinate","getExtentInternal","segments","getSegments","closestSegment","vertex","vertexPixel","pixel1","pixel2","squaredDist1","squaredDist2","dist","createOrUpdatePointerFeature_","createOrUpdateExtentFeature_","extentFeature","vertexFeature","getOpposingPoint","x_","y_","tempExtent","tempSegment","ModifyEventType","ModifyEvent","mapBrowserPointerEvent","compareIndexes","projectedDistanceToSegmentDataSquared","pointCoordinates","segmentData","distanceToCenterSquared","distanceToCircumference","closestOnSegmentData","Modify","boundHandleFeatureChange_","defaultDeleteCondition_","deleteCondition_","deleteCondition","insertVertexCondition_","insertVertexCondition","vertexSegments_","lastPixel_","ignoreNextSingleClick_","modified_","rBush_","changingFeature_","dragSegments_","SEGMENT_WRITERS_","writePointGeometry_","writeLineStringGeometry_","writePolygonGeometry_","writeMultiPointGeometry_","writeMultiLineStringGeometry_","writeMultiPolygonGeometry_","writeCircleGeometry_","writeGeometryCollectionGeometry_","handleSourceAdd_","handleSourceRemove_","addFeature_","handleFeatureAdd_","handleFeatureRemove_","lastPointerEvent_","writer","handlePointerAtPixel_","willModifyFeatures_","removeFeature_","removeFeatureSegmentData_","rBush","nodesToRemove","nodeToRemove","depth","rings","centerSegmentData","circumferenceSegmentData","featureSegments","geometry_1","createOrUpdateVertexFeature_","removePoint","dragSegment","setGeometryCoordinates_","insertVertices","vertexExtent","segmentDataMatches","componentSegments","segmentDataMatch","insertVertex_","opt_coordinate","nodes","vertexSegments","rTree","updateSegmentIndices_","newSegmentData","newSegmentData2","removeVertex_","component","newIndex","dragSegments","segmentsByFeature","deleted","SelectEventType","SelectEvent","selected","deselected","originalFeatureStyles","addCondition_","removeCondition_","toggleCondition_","featureLayerAssociation_","filter_","addFeatureLayerAssociation_","multi_","layerFilter_","hitTolerance_","removeFeatureLayerAssociation_","Select","boundAddFeature_","boundRemoveFeature_","addCondition","removeCondition","toggleCondition","multi","layers_1","getHitTolerance","setHitTolerance","restorePreviousStyle_","applySelectedStyle_","selectInteractions","getFeatureFromEvent","Snap","vertex_","edge_","featuresListenerKeys_","featureChangeListenerKeys_","indexedFeaturesExtents_","pendingFeatures_","opt_listen","register","feature_uid","segmentWriter","forEachFeatureAdd_","forEachFeatureRemove_","getFeatures_","snapTo","snapped","updateFeature_","featuresToUpdate","opt_unlisten","unregister","nodesToRemove_1","currentMap","closestSegmentData","projectedCoordinate","isCircle","closestOnCircle","TranslateEventType","TranslateEvent","startCoordinate","Translate","lastCoordinate_","startCoordinate_","lastFeature_","handleActiveChanged_","featuresAtPixel_","newCoordinate","deltaX_1","deltaY_1","oldMap","cloneGeometries","clonedGeometries","GeometryCollection","opt_geometries","geometries_","changeEventsKeys_","listenGeometriesChange_","unlistenGeometriesChange_","geometryCollection","setGeometries","getGeometriesArrayRecursive","geometriesArray","simplifiedGeometries","simplified","simplifiedGeometryCollection","setGeometriesArray","FeatureFormat","defaultFeatureProjection","getReadOptions","adaptOptions","readFeature","readGeometry","writeFeature","writeFeatures","writeGeometry","transformGeometryWithOptions","transformed","decimals","power_1","transformExtentWithOptions","getObject","JSONFeature","readFeatureFromObject","readFeaturesFromObject","readGeometryFromObject","readProjectionFromObject","writeFeatureObject","writeFeaturesObject","writeGeometryObject","GEOMETRY_READERS","getGeometryLayout","paths","GEOMETRY_WRITERS","_a","_b","esriJSONPolygon","flatRing","outerRings","holes","hole","matched","outerRing","convertRings","geometryReader","hasZ","hasM","getHasZM","geometryWriter","esriJSON","hasZM","multiPoint","multiLineString","EsriJSON","esriJSONFeature","idField","esriJSONFeatures","objectIdFieldName","wkid","objects","XMLFeature","XMLSerializer","doc","readFeatureFromDocument","readFeatureFromNode","readFeaturesFromDocument","readFeaturesFromNode","ELEMENT_NODE","readGeometryFromDocument","readGeometryFromNode","readProjectionFromDocument","readProjectionFromNode","writeFeatureNode","serializeToString","writeFeaturesNode","writeGeometryNode","GMLNS","ONLY_WHITESPACE_RE","GMLBase","featureType","featureNS","srsName","schemaLocation","FEATURE_COLLECTION_PARSERS","namespace","readFeaturesInternal","ft","featureTypes","readFeatureElement","readGeometryElement","getAttribute","GEOMETRY_PARSERS","readFeatureElementInternal","asFeature","_content_","attName","fid","getAttributeNS","readPoint","readFlatCoordinatesFromNode_","readMultiPoint","MULTIPOINT_PARSERS_","readMultiLineString","MULTILINESTRING_PARSERS_","readMultiPolygon","MULTIPOLYGON_PARSERS_","pointMemberParser_","POINTMEMBER_PARSERS_","lineStringMemberParser_","LINESTRINGMEMBER_PARSERS_","polygonMemberParser_","POLYGONMEMBER_PARSERS_","readLineString","readFlatLinearRing_","GEOMETRY_FLAT_COORDINATES_PARSERS","readLinearRing","readPolygon","flatLinearRings","FLAT_LINEAR_RINGS_PARSERS","RING_PARSERS","readBooleanString","string","readDateTime","dateTime","readDecimal","readDecimalString","readNonNegativeInteger","readNonNegativeIntegerString","trim","writeBooleanTextNode","bool","writeStringTextNode","writeDecimalTextNode","toPrecision","writeNonNegativeIntegerTextNode","nonNegativeInteger","MULTIGEOMETRY_TO_MEMBER_NODENAME","GML3","surface_","surface","curve_","curve","multiCurve_","multiCurve","multiSurface_","multiSurface","readMultiCurve_","MULTICURVE_PARSERS_","readMultiSurface_","MULTISURFACE_PARSERS_","curveMemberParser_","CURVEMEMBER_PARSERS_","surfaceMemberParser_","SURFACEMEMBER_PARSERS_","readPatch_","PATCHES_PARSERS_","readSegment_","SEGMENTS_PARSERS_","readPolygonPatch_","readLineStringSegment_","interiorParser_","flatLinearRing","exteriorParser_","readSurface_","SURFACE_PARSERS_","readCurve_","CURVE_PARSERS_","readEnvelope_","ENVELOPE_PARSERS_","readFlatPos_","re","containerSrs","readFlatPosList_","contextDimension","dim","writePos_","srsDimension","getCoords_","opt_srsName","opt_hasZ","writePosList_","writePoint_","writeEnvelope","ENVELOPE_SERIALIZERS_","writeLinearRing_","posList","RING_NODE_FACTORY_","exteriorWritten","writeSurfaceOrPolygon_","RING_SERIALIZERS_","patches","writeSurfacePatches_","writeCurveOrLineString_","writeCurveSegments_","writeMultiSurfaceOrPolygon_","SURFACEORPOLYGONMEMBER_SERIALIZERS_","MULTIGEOMETRY_MEMBER_NODE_FACTORY_","writeMultiPoint_","POINTMEMBER_SERIALIZERS_","writeMultiCurveOrLineString_","LINESTRINGORCURVEMEMBER_SERIALIZERS_","writeRing_","writeSurfaceOrPolygonMember_","GEOMETRY_NODE_FACTORY_","writePointMember_","writeLineStringOrCurveMember_","line","writeGeometryElement","GEOMETRY_SERIALIZERS_","writeFeatureElement","writeFeatureMembers_","setAttributeNS","GML","GML2","readFlatCoordinates_","coordsGroups","readBox_","BOX_PARSERS_","innerBoundaryIsParser_","outerBoundaryIsParser_","createCoordinatesNode_","writeCoordinates_","GML32","NAMESPACE_URIS","FEATURE_READER","readRte","readTrk","readWpt","GPX_PARSERS","LINK_PARSERS","GPX_SERIALIZERS","RTE_SEQUENCE","RTE_SERIALIZERS","TRK_SEQUENCE","TRK_SERIALIZERS","writeWptType","GPX","readExtensions_","readExtensions","handleReadExtensions_","extensionsNode","featureReader","gpx","GPX_NODE_FACTORY","RTE_PARSERS","parseLink","parseExtensions","RTEPT_PARSERS","rteValues","layoutOptions","TRK_PARSERS","TRKSEG_PARSERS","TRKPT_PARSERS","trkValues","WPT_PARSERS","LINK_SEQUENCE","LINK_SERIALIZERS","writeLink","RTEPT_TYPE_SEQUENCE","TRKSEG_SERIALIZERS","TRKSEG_NODE_FACTORY","WPT_TYPE_SEQUENCE","WPT_TYPE_SERIALIZERS","date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","GEOMETRY_TYPE_TO_NODENAME","applyLayoutOptions","href","link","readGeometryCollectionGeometry","geoJSON","rightHanded","writeGeometryCollectionGeometry","GeoJSON","extractGeometryName_","extractGeometryName","geoJSONFeature","geoJSONFeatures","crs","DEFAULT_COLOR","DEFAULT_IMAGE_STYLE_ANCHOR","DEFAULT_IMAGE_STYLE_ANCHOR_X_UNITS","DEFAULT_IMAGE_STYLE_ANCHOR_Y_UNITS","DEFAULT_IMAGE_STYLE_SIZE","DEFAULT_IMAGE_STYLE_SRC","DEFAULT_IMAGE_SCALE_MULTIPLIER","TextFeature","readFeatureFromText","readFeaturesFromText","readGeometryFromText","readProjectionFromText","writeFeatureText","writeFeaturesText","writeGeometryText","IGCZ","B_RECORD_RE","H_RECORD_RE","HFDTE_RECORD_RE","NEWLINE_RE","IGC","altitudeMode_","altitudeMode","year","month","day","lastDateTime","hour","minute","second","UTC","GX_NAMESPACE_URIS","ICON_ANCHOR_UNITS_MAP","PLACEMARK_PARSERS","extendedDataParser","regionParser","readMultiGeometry","readStyle","styleMapValue","readStyleMapValue","placemarkObject","readURI","GX_MULTITRACK_GEOMETRY_PARSERS","readGxTrack","NETWORK_LINK_PARSERS","REGION_PARSERS","LAT_LON_ALT_BOX_PARSERS","regionObject","LOD_PARSERS","lodObject","KML_SEQUENCE","KML_SERIALIZERS","DOCUMENT_SERIALIZERS","DOCUMENT_NODE_FACTORY","writePlacemark","DEFAULT_FILL_STYLE","DEFAULT_NO_IMAGE_STYLE","DEFAULT_IMAGE_STYLE","DEFAULT_TEXT_STROKE_STYLE","DEFAULT_TEXT_STYLE","DEFAULT_STYLE","TEXTAREA","DEFAULT_STYLE_ARRAY","KML","defaultStyle_","defaultStyle","extractStyles_","extractStyles","writeStyles_","writeStyles","sharedStyles_","showPointNames_","showPointNames","readDocumentOrFolder_","readPlacemark_","readSharedStyle_","readSharedStyleMap_","styleUrl","sharedStyles","drawName","multiGeometryPoints","featureStyle","findStyle","styleValue","nameStyle","foundStyle","textOffset","imageScale","createNameStyleFunction","createFeatureStyleFunction","styleUri","baseURI","fs","readName","readNameFromDocument","readNameFromNode","name_2","readNetworkLinks","networkLinks","readNetworkLinksFromDocument","readNetworkLinksFromNode","readRegion","regions","readRegionFromDocument","readRegionFromNode","kml","xmlnsUri","readColor","hexColor","readFlatCoordinates","readScale","STYLE_MAP_PARSERS","pairObject","PAIR_PARSERS","ICON_STYLE_PARSERS","iconObject","ICON_PARSERS","xunits","yunits","LABEL_STYLE_PARSERS","LINE_STYLE_PARSERS","POLY_STYLE_PARSERS","FLAT_LINEAR_RING_PARSERS","readFlatLinearRing","GX_TRACK_PARSERS","whens","when","gxTrackObject","readFlatCoordinatesFromNode","EXTRUDE_AND_ALTITUDE_MODE_PARSERS","MULTI_GEOMETRY_PARSERS","multiGeometry","homogeneous","setCommonGeometryProperties","INNER_BOUNDARY_IS_PARSERS","OUTER_BOUNDARY_IS_PARSERS","STYLE_PARSERS","styleObject","IconObject","drawIcon","hotSpot","outline","hasExtrude","hasTessellate","hasAltitudeMode","extrudes","tessellates","altitudeModes","DATA_PARSERS","EXTENDED_DATA_PARSERS","featureObject","displayName","SCHEMA_DATA_PARSERS","writeColorTextNode","rgba","abgr","hex","EXTENDEDDATA_NODE_SERIALIZERS","pair","createCDATASection","writeCDATASection","DATA_NODE_FACTORY","ICON_SEQUENCE","ICON_SERIALIZERS","GX_NODE_FACTORY","ICON_STYLE_SEQUENCE","ICON_STYLE_SERIALIZERS","icon","vec2","writeScaleTextNode","LABEL_STYLE_SEQUENCE","LABEL_STYLE_SERIALIZERS","LINE_STYLE_SEQUENCE","LINE_STYLE_SERIALIZERS","GEOMETRY_NODE_FACTORY","POINT_NODE_FACTORY","LINE_STRING_NODE_FACTORY","LINEAR_RING_NODE_FACTORY","POLYGON_NODE_FACTORY","MULTI_GEOMETRY_SERIALIZERS","writePrimitiveGeometry","writePolygon","writeMultiGeometry","BOUNDARY_IS_SERIALIZERS","writeBoundaryIs","PLACEMARK_SERIALIZERS","namesAndValues","names","pointStyles","lineStyles","polyStyles","STYLE_SEQUENCE","STYLE_SERIALIZERS","PLACEMARK_SEQUENCE","EXTENDEDDATA_NODE_FACTORY","v","styleArray","PRIMITIVE_GEOMETRY_SEQUENCE","PRIMITIVE_GEOMETRY_SERIALIZERS","POLY_STYLE_SEQUENCE","POLYGON_SERIALIZERS","INNER_BOUNDARY_NODE_FACTORY","OUTER_BOUNDARY_NODE_FACTORY","POLY_STYLE_SERIALIZERS","iconProperties","RenderFeature","flatCoordinates_","flatMidpoints_","properties_","midpoint","layersPBFReader","layerPBFReader","featurePBFReader","readRawFeature","MVT","featureClass_","featureClass","layerName_","layerName","idProperty_","idProperty","readRawGeometry_","cmd","coordsLen","currentEnd","cmdLen","createFeature_","rawFeature","getGeometryType","prevEndIndex","ctor","pbfLayers","pbfLayer","WAY_PARSERS","ndrefs","readTag","PARSERS","tags","NODE_PARSERS","ways","OSMXML","flipXY","opt_destOffset","destOffset","encodeDeltas","numbers","opt_factor","factor","lastNumbers","encodeFloats","decodeDeltas","encoded","decodeFloats","encodeUnsignedInteger","encodeUnsignedIntegers","encodeSignedIntegers","current","decodeUnsignedIntegers","decodeSignedIntegers","Polyline","factor_","geometryLayout_","geometryLayout","TopoJSON","topoJSONTopology","arcs","transformArc","transformArcs","topoJSONFeatures","objectName","readFeaturesFromGeometryCollection","readFeatureFromGeometry","transformVertex","concatenateArcs","polyArray","ringCoords","indices","Filter","tagName_","getTagName","LogicalNary","conditions","And","Bbox","Spatial","Contains","Comparison","propertyName","During","ComparisonBinary","expression","opt_matchCase","matchCase","EqualTo","GreaterThan","GreaterThanOrEqualTo","Intersects","IsBetween","lowerBoundary","upperBoundary","IsLike","pattern","opt_wildCard","opt_singleChar","opt_escapeChar","wildCard","singleChar","escapeChar","IsNull","LessThan","LessThanOrEqualTo","Not","NotEqualTo","Or","Within","and","Function","TRANSACTION_SUMMARY_PARSERS","TRANSACTION_RESPONSE_PARSERS","INSERT_RESULTS_PARSERS","QUERY_SERIALIZERS","TRANSACTION_SERIALIZERS","gmlVersion","featurePrefix","typeName","getTypeName","XMLNS","writeOgcFidFilter","WFSNS","nativeElement","vendorId","safeToIgnore","OGCNS","SCHEMA_LOCATIONS","WFS","featureType_","featureNS_","gmlFormat_","gmlFormat","schemaLocation_","getFeatureType","setFeatureType","readTransactionResponse","readTransactionResponseFromDocument","readTransactionResponseFromNode","readFeatureCollectionMetadata","readFeatureCollectionMetadataFromDocument","readFeatureCollectionMetadataFromNode","writeGetFeature","handle","outputFormat","maxFeatures","resultType","viewParams","propertyNames","GETFEATURE_SERIALIZERS","writeTransaction","inserts","updates","deletes","baseObj","gmlOptions","nativeElements","OGC_FID_PARSERS","prefix","writeFilterCondition","valueReference","timePeriod","writeTimeInstant","writeLogicalFilter","writeOgcPropertyName","writeComparisonFilter","writeOgcLiteral","writeOgcExpression","timeInstant","timePosition","GeometryConstructor","TokenType","WKTGeometryType","toUpperCase","Lexer","wkt","index_","isAlpha_","isNumeric_","opt_decimal","isWhiteSpace_","nextChar_","nextToken","readNumber_","readText_","scientificNotation","substring","Parser","lexer","lexer_","token_","layout_","consume_","isTokenType","isMatch","parseGeometry_","parseGeometryLayout_","dimToken","dimInfo","parseGeometryCollectionText_","isEmptyGeometry_","formatErrorMessage_","parsePointText_","parsePoint_","parseLineStringText_","parsePointList_","parsePolygonText_","parseLineStringTextList_","parseMultiPointText_","parsePointTextList_","parseMultiLineStringText_","parseMultiPolygonText_","parsePolygonTextList_","token","geomType","WKT","splitCollection_","splitCollection","parse_","encode","encodePointGeometry","encodeLineStringGeometry","encodePolygonGeometry","GeometryEncoder","components","geoms","enc","geometryEncoder","encodeGeometryLayout","readHref","XML","readFromDocument","readFromNode","SERVICE_PARSERS","CAPABILITY_PARSERS","REQUEST_PARSERS","EXCEPTION_PARSERS","LAYER_PARSERS","WMSCapabilities","wmsCapabilityObject","readKeywordList","CONTACT_INFORMATION_PARSERS","CONTACT_PERSON_PARSERS","CONTACT_ADDRESS_PARSERS","geographicBoundingBox","EX_GEOGRAPHIC_BOUNDING_BOX_PARSERS","westBoundLongitude","southBoundLatitude","eastBoundLongitude","northBoundLatitude","ATTRIBUTION_PARSERS","authorityObject","readFormatOnlineresource","metadataObject","parentLayerObject","layerObject","queryable","cascaded","noSubsets","fixedWidth","fixedHeight","childValue","parentValue","readSizedFormatOnlineresource","readOperationType","OPERATIONTYPE_PARSERS","DCPTYPE_PARSERS","HTTP_PARSERS","FORMAT_ONLINERESOURCE_PARSERS","KEYWORDLIST_PARSERS","formatOnlineresource","WMSGetFeatureInfo","readFeatures_","layerElement","layerFeatures","gmlFeatures","SERVICE_IDENTIFICATION_PARSERS","SERVICE_PROVIDER_PARSERS","OPERATIONS_METADATA_PARSERS","OWS","owsObject","ADDRESS_PARSERS","ALLOWED_VALUES_PARSERS","CONSTRAINT_PARSERS","CONTACT_INFO_PARSERS","PHONE_PARSERS","DCP_PARSERS","REQUEST_METHOD_PARSERS","OPERATION_PARSERS","SERVICE_CONTACT_PARSERS","CONTENTS_PARSERS","WMTSCapabilities","owsParser_","WMTSCapabilityObject","TMS_PARSERS","isDefault","TMS_LINKS_PARSERS","DIMENSION_PARSERS","resourceType","WGS84_BBOX_READERS","legend","TMS_LIMITS_LIST_PARSERS","TMS_LIMITS_PARSERS","readCoordinates","TM_PARSERS","events","FullScreenEventType","isFullScreenSupported","webkitRequestFullscreen","msRequestFullscreen","msFullscreenEnabled","requestFullscreen","fullscreenEnabled","isFullScreen","webkitIsFullScreen","msFullscreenElement","fullscreenElement","requestFullScreen","FullScreen","cssClassName_","labelNode_","labelActive","labelActiveNode_","button_","setClassName_","handleFullScreen_","exitFullscreen","msExitFullscreen","webkitExitFullscreen","requestFullScreenWithKeys","handleFullScreenChange_","fullscreen","activeClassName","inactiveClassName","nextClassName","mapProjection_","MousePosition","coordinateFormat","setCoordinateFormat","undefinedHTML_","undefinedHTML","renderOnMouseOut_","renderedHTML_","getCoordinateFormat","handleMouseMove","updateHTML_","handleMouseOut","html","ControlledMap","validateExtent_","updateBox_","OverviewMap","boundHandleRotationChanged_","handleRotationChanged_","viewExtent_","ovmapDiv_","view_","ovmap_","ovmap","boxSizing","boxOverlay_","scope","overlayBox","mousePosition","endMoving","oldView","unbindView_","handleMapPropertyChange_","bindView_","resetExtent_","newView","ovmapSize","ovextent","topLeftPixel","bottomRightPixel","boxWidth","boxHeight","ovmapWidth","ovmapHeight","recenter_","ovview","steps","MAX_RATIO","ovresolution","getOverviewMap","LEADING_DIGITS","viewState_","ScaleLine","bar","innerElement_","minWidth_","minWidth","renderedWidth_","handleUnitsChanged_","setUnits","scaleBar_","scaleBarSteps_","scaleBarText_","pointResolutionUnits","nominalCount","suffix","metersPerDegree","decimalCount","createScaleBar","mapScale","getScaleForResolution","scaleSteps","stepWidth","backgroundColor","createMarker","createStepText","isLast","lengthString","Direction","sliderInitialized_","initSlider_","currentResolution_","setThumbPosition_","ZoomSlider","direction_","heightLimit_","widthLimit_","startX_","startY_","thumbSize_","thumbElement","containerElement","handleDraggerStart_","handleDraggerDrag_","handleDraggerEnd_","handleContainerClick_","containerSize","thumb","thumbWidth","thumbHeight","relativePosition","getRelativePosition_","getResolutionForPosition_","drag","getPositionForResolution_","ZoomToExtent","handleZoomToExtent","ol","featureloader","has","loadingstrategy","proj4","webgl","sphere","util","unByKey","stableSort","compareFnc","colorlike","createStringXY","toStringHDMS","upAndDown","click","doubleClick","focus","penOnly","pointerEvt","platformModifierKeyOnly","pointerMove","touchOnly","setWithCredentials","xhrWithCredentials","writeFilter","between","during","equalTo","greaterThan","greaterThanOrEqualTo","isNull","lessThan","lessThanOrEqualTo","like","not","notEqualTo","or","within","createBox","boxCoordinates","createRegularPolygon","Group","fromLonLat","projCodes","defs","def","axis","to_meter","code1","proj1","code2","proj2","toLonLat","lonLat","getRenderPixel","toContext","PointsLayer","ImageStatic","optionsFromCapabilities","wmtsCap","tileMatrixSets","supportedCRS","matrixSetObj","projConfig","matrix0","TileMatrix","ScaleDenominator","TopLeftCorner","tileSpanX","TileWidth","tileSpanY","TileHeight","MatrixHeight","MatrixWidth","gets","encodings","composeCssTransform","Buffer","DYNAMIC_DRAW","ELEMENT_ARRAY_BUFFER","Helper","PostProcessingPass","RenderTarget","STREAM_DRAW","registerDocument","registerXMLSerializer","xmlSerializer"],"mappings":"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","file":"ol.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ol\"] = factory();\n\telse\n\t\troot[\"ol\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 7);\n","(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\ntypeof define === 'function' && define.amd ? define(factory) :\n(global = global || self, global.RBush = factory());\n}(this, function () { 'use strict';\n\nfunction quickselect(arr, k, left, right, compare) {\n quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare);\n}\n\nfunction quickselectStep(arr, k, left, right, compare) {\n\n while (right > left) {\n if (right - left > 600) {\n var n = right - left + 1;\n var m = k - left + 1;\n var z = Math.log(n);\n var s = 0.5 * Math.exp(2 * z / 3);\n var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselectStep(arr, k, newLeft, newRight, compare);\n }\n\n var t = arr[k];\n var i = left;\n var j = right;\n\n swap(arr, left, k);\n if (compare(arr[right], t) > 0) { swap(arr, left, right); }\n\n while (i < j) {\n swap(arr, i, j);\n i++;\n j--;\n while (compare(arr[i], t) < 0) { i++; }\n while (compare(arr[j], t) > 0) { j--; }\n }\n\n if (compare(arr[left], t) === 0) { swap(arr, left, j); }\n else {\n j++;\n swap(arr, j, right);\n }\n\n if (j <= k) { left = j + 1; }\n if (k <= j) { right = j - 1; }\n }\n}\n\nfunction swap(arr, i, j) {\n var tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nvar RBush = function RBush(maxEntries) {\n if ( maxEntries === void 0 ) maxEntries = 9;\n\n // max entries in a node is 9 by default; min node fill is 40% for best performance\n this._maxEntries = Math.max(4, maxEntries);\n this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4));\n this.clear();\n};\n\nRBush.prototype.all = function all () {\n return this._all(this.data, []);\n};\n\nRBush.prototype.search = function search (bbox) {\n var node = this.data;\n var result = [];\n\n if (!intersects(bbox, node)) { return result; }\n\n var toBBox = this.toBBox;\n var nodesToSearch = [];\n\n while (node) {\n for (var i = 0; i < node.children.length; i++) {\n var child = node.children[i];\n var childBBox = node.leaf ? toBBox(child) : child;\n\n if (intersects(bbox, childBBox)) {\n if (node.leaf) { result.push(child); }\n else if (contains(bbox, childBBox)) { this._all(child, result); }\n else { nodesToSearch.push(child); }\n }\n }\n node = nodesToSearch.pop();\n }\n\n return result;\n};\n\nRBush.prototype.collides = function collides (bbox) {\n var node = this.data;\n\n if (!intersects(bbox, node)) { return false; }\n\n var nodesToSearch = [];\n while (node) {\n for (var i = 0; i < node.children.length; i++) {\n var child = node.children[i];\n var childBBox = node.leaf ? this.toBBox(child) : child;\n\n if (intersects(bbox, childBBox)) {\n if (node.leaf || contains(bbox, childBBox)) { return true; }\n nodesToSearch.push(child);\n }\n }\n node = nodesToSearch.pop();\n }\n\n return false;\n};\n\nRBush.prototype.load = function load (data) {\n if (!(data && data.length)) { return this; }\n\n if (data.length < this._minEntries) {\n for (var i = 0; i < data.length; i++) {\n this.insert(data[i]);\n }\n return this;\n }\n\n // recursively build the tree with the given data from scratch using OMT algorithm\n var node = this._build(data.slice(), 0, data.length - 1, 0);\n\n if (!this.data.children.length) {\n // save as is if tree is empty\n this.data = node;\n\n } else if (this.data.height === node.height) {\n // split root if trees have the same height\n this._splitRoot(this.data, node);\n\n } else {\n if (this.data.height < node.height) {\n // swap trees if inserted one is bigger\n var tmpNode = this.data;\n this.data = node;\n node = tmpNode;\n }\n\n // insert the small tree into the large tree at appropriate level\n this._insert(node, this.data.height - node.height - 1, true);\n }\n\n return this;\n};\n\nRBush.prototype.insert = function insert (item) {\n if (item) { this._insert(item, this.data.height - 1); }\n return this;\n};\n\nRBush.prototype.clear = function clear () {\n this.data = createNode([]);\n return this;\n};\n\nRBush.prototype.remove = function remove (item, equalsFn) {\n if (!item) { return this; }\n\n var node = this.data;\n var bbox = this.toBBox(item);\n var path = [];\n var indexes = [];\n var i, parent, goingUp;\n\n // depth-first iterative tree traversal\n while (node || path.length) {\n\n if (!node) { // go up\n node = path.pop();\n parent = path[path.length - 1];\n i = indexes.pop();\n goingUp = true;\n }\n\n if (node.leaf) { // check current node\n var index = findItem(item, node.children, equalsFn);\n\n if (index !== -1) {\n // item found, remove the item and condense tree upwards\n node.children.splice(index, 1);\n path.push(node);\n this._condense(path);\n return this;\n }\n }\n\n if (!goingUp && !node.leaf && contains(node, bbox)) { // go down\n path.push(node);\n indexes.push(i);\n i = 0;\n parent = node;\n node = node.children[0];\n\n } else if (parent) { // go right\n i++;\n node = parent.children[i];\n goingUp = false;\n\n } else { node = null; } // nothing found\n }\n\n return this;\n};\n\nRBush.prototype.toBBox = function toBBox (item) { return item; };\n\nRBush.prototype.compareMinX = function compareMinX (a, b) { return a.minX - b.minX; };\nRBush.prototype.compareMinY = function compareMinY (a, b) { return a.minY - b.minY; };\n\nRBush.prototype.toJSON = function toJSON () { return this.data; };\n\nRBush.prototype.fromJSON = function fromJSON (data) {\n this.data = data;\n return this;\n};\n\nRBush.prototype._all = function _all (node, result) {\n var nodesToSearch = [];\n while (node) {\n if (node.leaf) { result.push.apply(result, node.children); }\n else { nodesToSearch.push.apply(nodesToSearch, node.children); }\n\n node = nodesToSearch.pop();\n }\n return result;\n};\n\nRBush.prototype._build = function _build (items, left, right, height) {\n\n var N = right - left + 1;\n var M = this._maxEntries;\n var node;\n\n if (N <= M) {\n // reached leaf level; return leaf\n node = createNode(items.slice(left, right + 1));\n calcBBox(node, this.toBBox);\n return node;\n }\n\n if (!height) {\n // target height of the bulk-loaded tree\n height = Math.ceil(Math.log(N) / Math.log(M));\n\n // target number of root entries to maximize storage utilization\n M = Math.ceil(N / Math.pow(M, height - 1));\n }\n\n node = createNode([]);\n node.leaf = false;\n node.height = height;\n\n // split the items into M mostly square tiles\n\n var N2 = Math.ceil(N / M);\n var N1 = N2 * Math.ceil(Math.sqrt(M));\n\n multiSelect(items, left, right, N1, this.compareMinX);\n\n for (var i = left; i <= right; i += N1) {\n\n var right2 = Math.min(i + N1 - 1, right);\n\n multiSelect(items, i, right2, N2, this.compareMinY);\n\n for (var j = i; j <= right2; j += N2) {\n\n var right3 = Math.min(j + N2 - 1, right2);\n\n // pack each entry recursively\n node.children.push(this._build(items, j, right3, height - 1));\n }\n }\n\n calcBBox(node, this.toBBox);\n\n return node;\n};\n\nRBush.prototype._chooseSubtree = function _chooseSubtree (bbox, node, level, path) {\n while (true) {\n path.push(node);\n\n if (node.leaf || path.length - 1 === level) { break; }\n\n var minArea = Infinity;\n var minEnlargement = Infinity;\n var targetNode = (void 0);\n\n for (var i = 0; i < node.children.length; i++) {\n var child = node.children[i];\n var area = bboxArea(child);\n var enlargement = enlargedArea(bbox, child) - area;\n\n // choose entry with the least area enlargement\n if (enlargement < minEnlargement) {\n minEnlargement = enlargement;\n minArea = area < minArea ? area : minArea;\n targetNode = child;\n\n } else if (enlargement === minEnlargement) {\n // otherwise choose one with the smallest area\n if (area < minArea) {\n minArea = area;\n targetNode = child;\n }\n }\n }\n\n node = targetNode || node.children[0];\n }\n\n return node;\n};\n\nRBush.prototype._insert = function _insert (item, level, isNode) {\n var bbox = isNode ? item : this.toBBox(item);\n var insertPath = [];\n\n // find the best node for accommodating the item, saving all nodes along the path too\n var node = this._chooseSubtree(bbox, this.data, level, insertPath);\n\n // put the item into the node\n node.children.push(item);\n extend(node, bbox);\n\n // split on node overflow; propagate upwards if necessary\n while (level >= 0) {\n if (insertPath[level].children.length > this._maxEntries) {\n this._split(insertPath, level);\n level--;\n } else { break; }\n }\n\n // adjust bboxes along the insertion path\n this._adjustParentBBoxes(bbox, insertPath, level);\n};\n\n// split overflowed node into two\nRBush.prototype._split = function _split (insertPath, level) {\n var node = insertPath[level];\n var M = node.children.length;\n var m = this._minEntries;\n\n this._chooseSplitAxis(node, m, M);\n\n var splitIndex = this._chooseSplitIndex(node, m, M);\n\n var newNode = createNode(node.children.splice(splitIndex, node.children.length - splitIndex));\n newNode.height = node.height;\n newNode.leaf = node.leaf;\n\n calcBBox(node, this.toBBox);\n calcBBox(newNode, this.toBBox);\n\n if (level) { insertPath[level - 1].children.push(newNode); }\n else { this._splitRoot(node, newNode); }\n};\n\nRBush.prototype._splitRoot = function _splitRoot (node, newNode) {\n // split root node\n this.data = createNode([node, newNode]);\n this.data.height = node.height + 1;\n this.data.leaf = false;\n calcBBox(this.data, this.toBBox);\n};\n\nRBush.prototype._chooseSplitIndex = function _chooseSplitIndex (node, m, M) {\n var index;\n var minOverlap = Infinity;\n var minArea = Infinity;\n\n for (var i = m; i <= M - m; i++) {\n var bbox1 = distBBox(node, 0, i, this.toBBox);\n var bbox2 = distBBox(node, i, M, this.toBBox);\n\n var overlap = intersectionArea(bbox1, bbox2);\n var area = bboxArea(bbox1) + bboxArea(bbox2);\n\n // choose distribution with minimum overlap\n if (overlap < minOverlap) {\n minOverlap = overlap;\n index = i;\n\n minArea = area < minArea ? area : minArea;\n\n } else if (overlap === minOverlap) {\n // otherwise choose distribution with minimum area\n if (area < minArea) {\n minArea = area;\n index = i;\n }\n }\n }\n\n return index || M - m;\n};\n\n// sorts node children by the best axis for split\nRBush.prototype._chooseSplitAxis = function _chooseSplitAxis (node, m, M) {\n var compareMinX = node.leaf ? this.compareMinX : compareNodeMinX;\n var compareMinY = node.leaf ? this.compareMinY : compareNodeMinY;\n var xMargin = this._allDistMargin(node, m, M, compareMinX);\n var yMargin = this._allDistMargin(node, m, M, compareMinY);\n\n // if total distributions margin value is minimal for x, sort by minX,\n // otherwise it's already sorted by minY\n if (xMargin < yMargin) { node.children.sort(compareMinX); }\n};\n\n// total margin of all possible split distributions where each node is at least m full\nRBush.prototype._allDistMargin = function _allDistMargin (node, m, M, compare) {\n node.children.sort(compare);\n\n var toBBox = this.toBBox;\n var leftBBox = distBBox(node, 0, m, toBBox);\n var rightBBox = distBBox(node, M - m, M, toBBox);\n var margin = bboxMargin(leftBBox) + bboxMargin(rightBBox);\n\n for (var i = m; i < M - m; i++) {\n var child = node.children[i];\n extend(leftBBox, node.leaf ? toBBox(child) : child);\n margin += bboxMargin(leftBBox);\n }\n\n for (var i$1 = M - m - 1; i$1 >= m; i$1--) {\n var child$1 = node.children[i$1];\n extend(rightBBox, node.leaf ? toBBox(child$1) : child$1);\n margin += bboxMargin(rightBBox);\n }\n\n return margin;\n};\n\nRBush.prototype._adjustParentBBoxes = function _adjustParentBBoxes (bbox, path, level) {\n // adjust bboxes along the given tree path\n for (var i = level; i >= 0; i--) {\n extend(path[i], bbox);\n }\n};\n\nRBush.prototype._condense = function _condense (path) {\n // go through the path, removing empty nodes and updating bboxes\n for (var i = path.length - 1, siblings = (void 0); i >= 0; i--) {\n if (path[i].children.length === 0) {\n if (i > 0) {\n siblings = path[i - 1].children;\n siblings.splice(siblings.indexOf(path[i]), 1);\n\n } else { this.clear(); }\n\n } else { calcBBox(path[i], this.toBBox); }\n }\n};\n\nfunction findItem(item, items, equalsFn) {\n if (!equalsFn) { return items.indexOf(item); }\n\n for (var i = 0; i < items.length; i++) {\n if (equalsFn(item, items[i])) { return i; }\n }\n return -1;\n}\n\n// calculate node's bbox from bboxes of its children\nfunction calcBBox(node, toBBox) {\n distBBox(node, 0, node.children.length, toBBox, node);\n}\n\n// min bounding rectangle of node children from k to p-1\nfunction distBBox(node, k, p, toBBox, destNode) {\n if (!destNode) { destNode = createNode(null); }\n destNode.minX = Infinity;\n destNode.minY = Infinity;\n destNode.maxX = -Infinity;\n destNode.maxY = -Infinity;\n\n for (var i = k; i < p; i++) {\n var child = node.children[i];\n extend(destNode, node.leaf ? toBBox(child) : child);\n }\n\n return destNode;\n}\n\nfunction extend(a, b) {\n a.minX = Math.min(a.minX, b.minX);\n a.minY = Math.min(a.minY, b.minY);\n a.maxX = Math.max(a.maxX, b.maxX);\n a.maxY = Math.max(a.maxY, b.maxY);\n return a;\n}\n\nfunction compareNodeMinX(a, b) { return a.minX - b.minX; }\nfunction compareNodeMinY(a, b) { return a.minY - b.minY; }\n\nfunction bboxArea(a) { return (a.maxX - a.minX) * (a.maxY - a.minY); }\nfunction bboxMargin(a) { return (a.maxX - a.minX) + (a.maxY - a.minY); }\n\nfunction enlargedArea(a, b) {\n return (Math.max(b.maxX, a.maxX) - Math.min(b.minX, a.minX)) *\n (Math.max(b.maxY, a.maxY) - Math.min(b.minY, a.minY));\n}\n\nfunction intersectionArea(a, b) {\n var minX = Math.max(a.minX, b.minX);\n var minY = Math.max(a.minY, b.minY);\n var maxX = Math.min(a.maxX, b.maxX);\n var maxY = Math.min(a.maxY, b.maxY);\n\n return Math.max(0, maxX - minX) *\n Math.max(0, maxY - minY);\n}\n\nfunction contains(a, b) {\n return a.minX <= b.minX &&\n a.minY <= b.minY &&\n b.maxX <= a.maxX &&\n b.maxY <= a.maxY;\n}\n\nfunction intersects(a, b) {\n return b.minX <= a.maxX &&\n b.minY <= a.maxY &&\n b.maxX >= a.minX &&\n b.maxY >= a.minY;\n}\n\nfunction createNode(children) {\n return {\n children: children,\n height: 1,\n leaf: true,\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity\n };\n}\n\n// sort an array so that items come in groups of n unsorted items, with groups sorted between each other;\n// combines selection algorithm with binary divide & conquer approach\n\nfunction multiSelect(arr, left, right, n, compare) {\n var stack = [left, right];\n\n while (stack.length) {\n right = stack.pop();\n left = stack.pop();\n\n if (right - left <= n) { continue; }\n\n var mid = left + Math.ceil((right - left) / n / 2) * n;\n quickselect(arr, mid, left, right, compare);\n\n stack.push(left, mid, mid, right);\n }\n}\n\nreturn RBush;\n\n}));\n","// This Source Code Form is subject to the terms of the Mozilla Public\n// License, v. 2.0. If a copy of the MPL was not distributed with this\n// file, You can obtain one at http://mozilla.org/MPL/2.0/\n// Variable to hold current primary touch event identifier.\n// iOS needs this since it does not attribute\n// identifier 0 to primary touch event.\nvar primaryTouchId = null;\n// Variable to hold mouse pointer captures.\nvar mouseCaptureTarget = null;\nif (!(\"PointerEvent\" in window)) {\n // Define {set,release}PointerCapture\n definePointerCapture();\n // Create Pointer polyfill from mouse events only on non-touch device\n if (!(\"TouchEvent\" in window)) {\n addMouseToPointerListener(document, \"mousedown\", \"pointerdown\");\n addMouseToPointerListener(document, \"mousemove\", \"pointermove\");\n addMouseToPointerListener(document, \"mouseup\", \"pointerup\");\n }\n // Define Pointer polyfill from touch events\n addTouchToPointerListener(document, \"touchstart\", \"pointerdown\");\n addTouchToPointerListener(document, \"touchmove\", \"pointermove\");\n addTouchToPointerListener(document, \"touchend\", \"pointerup\");\n}\n// Function defining {set,release}PointerCapture from {set,releas}Capture\nfunction definePointerCapture() {\n Element.prototype.setPointerCapture = Element.prototype.setCapture;\n Element.prototype.releasePointerCapture = Element.prototype.releaseCapture;\n}\n// Function converting a Mouse event to a Pointer event.\nfunction addMouseToPointerListener(target, mouseType, pointerType) {\n target.addEventListener(mouseType, function (mouseEvent) {\n var pointerEvent = new MouseEvent(pointerType, mouseEvent);\n pointerEvent.pointerId = 1;\n pointerEvent.isPrimary = true;\n pointerEvent.pointerType = \"mouse\";\n pointerEvent.width = 1;\n pointerEvent.height = 1;\n pointerEvent.tiltX = 0;\n pointerEvent.tiltY = 0;\n // pressure is 0.5 if a button is holded\n \"buttons\" in mouseEvent && mouseEvent.buttons !== 0\n ? (pointerEvent.pressure = 0.5)\n : (pointerEvent.pressure = 0);\n // if already capturing mouse event, transfer target\n // and don't forget implicit release on mouseup.\n var target = mouseEvent.target;\n if (mouseCaptureTarget !== null) {\n target = mouseCaptureTarget;\n if (mouseType === \"mouseup\") {\n mouseCaptureTarget = null;\n }\n }\n target.dispatchEvent(pointerEvent);\n if (pointerEvent.defaultPrevented) {\n mouseEvent.preventDefault();\n }\n });\n}\n// Function converting a Touch event to a Pointer event.\nfunction addTouchToPointerListener(target, touchType, pointerType) {\n target.addEventListener(touchType, function (touchEvent) {\n var changedTouches = touchEvent.changedTouches;\n var nbTouches = changedTouches.length;\n for (var t = 0; t < nbTouches; t++) {\n var pointerEvent = new CustomEvent(pointerType, {\n bubbles: true,\n cancelable: true\n });\n pointerEvent.ctrlKey = touchEvent.ctrlKey;\n pointerEvent.shiftKey = touchEvent.shiftKey;\n pointerEvent.altKey = touchEvent.altKey;\n pointerEvent.metaKey = touchEvent.metaKey;\n var touch = changedTouches.item(t);\n pointerEvent.clientX = touch.clientX;\n pointerEvent.clientY = touch.clientY;\n pointerEvent.screenX = touch.screenX;\n pointerEvent.screenY = touch.screenY;\n pointerEvent.pageX = touch.pageX;\n pointerEvent.pageY = touch.pageY;\n var rect = touch.target.getBoundingClientRect();\n pointerEvent.offsetX = touch.clientX - rect.left;\n pointerEvent.offsetY = touch.clientY - rect.top;\n pointerEvent.pointerId = 1 + touch.identifier;\n // Default values for standard MouseEvent fields.\n pointerEvent.button = 0;\n pointerEvent.buttons = 1;\n pointerEvent.movementX = 0;\n pointerEvent.movementY = 0;\n pointerEvent.region = null;\n pointerEvent.relatedTarget = null;\n pointerEvent.x = pointerEvent.clientX;\n pointerEvent.y = pointerEvent.clientY;\n // Pointer event details\n pointerEvent.pointerType = \"touch\";\n pointerEvent.width = 1;\n pointerEvent.height = 1;\n pointerEvent.tiltX = 0;\n pointerEvent.tiltY = 0;\n pointerEvent.pressure = 1;\n // First touch is the primary pointer event.\n if (touchType === \"touchstart\" && primaryTouchId === null) {\n primaryTouchId = touch.identifier;\n }\n pointerEvent.isPrimary = touch.identifier === primaryTouchId;\n // If first touch ends, reset primary touch id.\n if (touchType === \"touchend\" && pointerEvent.isPrimary) {\n primaryTouchId = null;\n }\n touchEvent.target.dispatchEvent(pointerEvent);\n if (pointerEvent.defaultPrevented) {\n touchEvent.preventDefault();\n }\n }\n });\n}\n//# sourceMappingURL=elm-pep.js.map","'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","var Processor = require('./processor');\n\nexports.Processor = Processor;\n","exports.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 newImageData = require('./util').newImageData;\n\n/**\n * Create a function for running operations. This function is serialized for\n * use in a worker.\n * @param {function(Array, Object):*} operation The operation.\n * @return {function(Object):ArrayBuffer} A function that takes an object with\n * buffers, meta, imageOps, width, and height properties and returns an array\n * buffer.\n */\nfunction createMinion(operation) {\n var workerHasImageData = true;\n try {\n new ImageData(10, 10);\n } catch (_) {\n workerHasImageData = false;\n }\n\n function newWorkerImageData(data, width, height) {\n if (workerHasImageData) {\n return new ImageData(data, width, height);\n } else {\n return {data: data, width: width, height: height};\n }\n }\n\n return function(data) {\n // bracket notation for minification support\n var buffers = data['buffers'];\n var meta = data['meta'];\n var imageOps = data['imageOps'];\n var width = data['width'];\n var height = data['height'];\n\n var numBuffers = buffers.length;\n var numBytes = buffers[0].byteLength;\n var output, b;\n\n if (imageOps) {\n var images = new Array(numBuffers);\n for (b = 0; b < numBuffers; ++b) {\n images[b] = newWorkerImageData(\n new Uint8ClampedArray(buffers[b]), width, height);\n }\n output = operation(images, meta).data;\n } else {\n output = new Uint8ClampedArray(numBytes);\n var arrays = new Array(numBuffers);\n var pixels = new Array(numBuffers);\n for (b = 0; b < numBuffers; ++b) {\n arrays[b] = new Uint8ClampedArray(buffers[b]);\n pixels[b] = [0, 0, 0, 0];\n }\n for (var i = 0; i < numBytes; i += 4) {\n for (var j = 0; j < numBuffers; ++j) {\n var array = arrays[j];\n pixels[j][0] = array[i];\n pixels[j][1] = array[i + 1];\n pixels[j][2] = array[i + 2];\n pixels[j][3] = array[i + 3];\n }\n var pixel = operation(pixels, meta);\n output[i] = pixel[0];\n output[i + 1] = pixel[1];\n output[i + 2] = pixel[2];\n output[i + 3] = pixel[3];\n }\n }\n return output.buffer;\n };\n}\n\n/**\n * Create a worker for running operations.\n * @param {Object} config Configuration.\n * @param {function(MessageEvent)} onMessage Called with a message event.\n * @return {Worker} The worker.\n */\nfunction createWorker(config, onMessage) {\n var lib = Object.keys(config.lib || {}).map(function(name) {\n return 'var ' + name + ' = ' + config.lib[name].toString() + ';';\n });\n\n var lines = lib.concat([\n 'var __minion__ = (' + createMinion.toString() + ')(', config.operation.toString(), ');',\n 'self.addEventListener(\"message\", function(event) {',\n ' var buffer = __minion__(event.data);',\n ' self.postMessage({buffer: buffer, meta: event.data.meta}, [buffer]);',\n '});'\n ]);\n\n var blob = new Blob(lines, {type: 'text/javascript'});\n var source = URL.createObjectURL(blob);\n var worker = new Worker(source);\n worker.addEventListener('message', onMessage);\n return worker;\n}\n\n/**\n * Create a faux worker for running operations.\n * @param {Object} config Configuration.\n * @param {function(MessageEvent)} onMessage Called with a message event.\n * @return {Object} The faux worker.\n */\nfunction createFauxWorker(config, onMessage) {\n var minion = createMinion(config.operation);\n return {\n postMessage: function(data) {\n setTimeout(function() {\n onMessage({'data': {'buffer': minion(data), 'meta': data['meta']}});\n }, 0);\n }\n };\n}\n\n/**\n * A processor runs pixel or image operations in workers.\n * @param {Object} config Configuration.\n */\nfunction Processor(config) {\n this._imageOps = !!config.imageOps;\n var threads;\n if (config.threads === 0) {\n threads = 0;\n } else if (this._imageOps) {\n threads = 1;\n } else {\n threads = config.threads || 1;\n }\n var workers = [];\n if (threads) {\n for (var i = 0; i < threads; ++i) {\n workers[i] = createWorker(config, this._onWorkerMessage.bind(this, i));\n }\n } else {\n workers[0] = createFauxWorker(config, this._onWorkerMessage.bind(this, 0));\n }\n this._workers = workers;\n this._queue = [];\n this._maxQueueLength = config.queue || Infinity;\n this._running = 0;\n this._dataLookup = {};\n this._job = null;\n}\n\n/**\n * Run operation on input data.\n * @param {Array.} inputs Array of pixels or image data\n * (depending on the operation type).\n * @param {Object} meta A user data object. This is passed to all operations\n * and must be serializable.\n * @param {function(Error, ImageData, Object)} callback Called when work\n * completes. The first argument is any error. The second is the ImageData\n * generated by operations. The third is the user data object.\n */\nProcessor.prototype.process = function(inputs, meta, callback) {\n this._enqueue({\n inputs: inputs,\n meta: meta,\n callback: callback\n });\n this._dispatch();\n};\n\n/**\n * Stop responding to any completed work and destroy the processor.\n */\nProcessor.prototype.destroy = function() {\n for (var key in this) {\n this[key] = null;\n }\n this._destroyed = true;\n};\n\n/**\n * Add a job to the queue.\n * @param {Object} job The job.\n */\nProcessor.prototype._enqueue = function(job) {\n this._queue.push(job);\n while (this._queue.length > this._maxQueueLength) {\n this._queue.shift().callback(null, null);\n }\n};\n\n/**\n * Dispatch a job.\n */\nProcessor.prototype._dispatch = function() {\n if (this._running === 0 && this._queue.length > 0) {\n var job = this._job = this._queue.shift();\n var width = job.inputs[0].width;\n var height = job.inputs[0].height;\n var buffers = job.inputs.map(function(input) {\n return input.data.buffer;\n });\n var threads = this._workers.length;\n this._running = threads;\n if (threads === 1) {\n this._workers[0].postMessage({\n 'buffers': buffers,\n 'meta': job.meta,\n 'imageOps': this._imageOps,\n 'width': width,\n 'height': height\n }, buffers);\n } else {\n var length = job.inputs[0].data.length;\n var segmentLength = 4 * Math.ceil(length / 4 / threads);\n for (var i = 0; i < threads; ++i) {\n var offset = i * segmentLength;\n var slices = [];\n for (var j = 0, jj = buffers.length; j < jj; ++j) {\n slices.push(buffers[i].slice(offset, offset + segmentLength));\n }\n this._workers[i].postMessage({\n 'buffers': slices,\n 'meta': job.meta,\n 'imageOps': this._imageOps,\n 'width': width,\n 'height': height\n }, slices);\n }\n }\n }\n};\n\n/**\n * Handle messages from the worker.\n * @param {number} index The worker index.\n * @param {MessageEvent} event The message event.\n */\nProcessor.prototype._onWorkerMessage = function(index, event) {\n if (this._destroyed) {\n return;\n }\n this._dataLookup[index] = event.data;\n --this._running;\n if (this._running === 0) {\n this._resolveJob();\n }\n};\n\n/**\n * Resolve a job. If there are no more worker threads, the processor callback\n * will be called.\n */\nProcessor.prototype._resolveJob = function() {\n var job = this._job;\n var threads = this._workers.length;\n var data, meta;\n if (threads === 1) {\n data = new Uint8ClampedArray(this._dataLookup[0]['buffer']);\n meta = this._dataLookup[0]['meta'];\n } else {\n var length = job.inputs[0].data.length;\n data = new Uint8ClampedArray(length);\n meta = new Array(length);\n var segmentLength = 4 * Math.ceil(length / 4 / threads);\n for (var i = 0; i < threads; ++i) {\n var buffer = this._dataLookup[i]['buffer'];\n var offset = i * segmentLength;\n data.set(new Uint8ClampedArray(buffer), offset);\n meta[i] = this._dataLookup[i]['meta'];\n }\n }\n this._job = null;\n this._dataLookup = {};\n job.callback(null,\n newImageData(data, job.inputs[0].width, job.inputs[0].height), meta);\n this._dispatch();\n};\n\nmodule.exports = Processor;\n","var hasImageData = true;\ntry {\n new ImageData(10, 10);\n} catch (_) {\n hasImageData = false;\n}\n\nvar context = document.createElement('canvas').getContext('2d');\n\nfunction newImageData(data, width, height) {\n if (hasImageData) {\n return new ImageData(data, width, height);\n } else {\n var imageData = context.createImageData(width, height);\n imageData.data.set(data);\n return imageData;\n }\n}\n\nexports.newImageData = newImageData;\n","/**\n * @module ol/util\n */\n/**\n * @return {?} Any return.\n */\nexport function abstract() {\n return /** @type {?} */ ((function () {\n throw new Error('Unimplemented abstract method.');\n })());\n}\n/**\n * Counter for getUid.\n * @type {number}\n * @private\n */\nvar uidCounter_ = 0;\n/**\n * Gets a unique ID for an object. This mutates the object so that further calls\n * with the same object as a parameter returns the same value. Unique IDs are generated\n * as a strictly increasing sequence. Adapted from goog.getUid.\n *\n * @param {Object} obj The object to get the unique ID for.\n * @return {string} The unique ID for the object.\n * @api\n */\nexport function getUid(obj) {\n return obj.ol_uid || (obj.ol_uid = String(++uidCounter_));\n}\n/**\n * OpenLayers version.\n * @type {string}\n */\nexport var VERSION = '6.3.1';\n//# sourceMappingURL=util.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/AssertionError\n */\nimport { VERSION } from './util.js';\n/**\n * Error object thrown when an assertion failed. This is an ECMA-262 Error,\n * extended with a `code` property.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error.\n */\nvar AssertionError = /** @class */ (function (_super) {\n __extends(AssertionError, _super);\n /**\n * @param {number} code Error code.\n */\n function AssertionError(code) {\n var _this = this;\n var path = VERSION === 'latest' ? VERSION : 'v' + VERSION.split('-')[0];\n var message = 'Assertion failed. See https://openlayers.org/en/' + path +\n '/doc/errors/#' + code + ' for details.';\n _this = _super.call(this, message) || this;\n /**\n * Error code. The meaning of the code can be found on\n * https://openlayers.org/en/latest/doc/errors/ (replace `latest` with\n * the version found in the OpenLayers script's header comment if a version\n * other than the latest is used).\n * @type {number}\n * @api\n */\n _this.code = code;\n /**\n * @type {string}\n */\n _this.name = 'AssertionError';\n // Re-assign message, see https://github.com/Rich-Harris/buble/issues/40\n _this.message = message;\n return _this;\n }\n return AssertionError;\n}(Error));\nexport default AssertionError;\n//# sourceMappingURL=AssertionError.js.map","/**\n * @module ol/CollectionEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when an item is added to the collection.\n * @event module:ol/Collection.CollectionEvent#add\n * @api\n */\n ADD: 'add',\n /**\n * Triggered when an item is removed from the collection.\n * @event module:ol/Collection.CollectionEvent#remove\n * @api\n */\n REMOVE: 'remove'\n};\n//# sourceMappingURL=CollectionEventType.js.map","/**\n * @module ol/ObjectEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when a property is changed.\n * @event module:ol/Object.ObjectEvent#propertychange\n * @api\n */\n PROPERTYCHANGE: 'propertychange'\n};\n//# sourceMappingURL=ObjectEventType.js.map","/**\n * @module ol/obj\n */\n/**\n * Polyfill for Object.assign(). Assigns enumerable and own properties from\n * one or more source objects to a target object.\n * See https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign.\n *\n * @param {!Object} target The target object.\n * @param {...Object} var_sources The source object(s).\n * @return {!Object} The modified target object.\n */\nexport var assign = (typeof Object.assign === 'function') ? Object.assign : function (target, var_sources) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n var output = Object(target);\n for (var i = 1, ii = arguments.length; i < ii; ++i) {\n var source = arguments[i];\n if (source !== undefined && source !== null) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n output[key] = source[key];\n }\n }\n }\n }\n return output;\n};\n/**\n * Removes all properties from an object.\n * @param {Object} object The object to clear.\n */\nexport function clear(object) {\n for (var property in object) {\n delete object[property];\n }\n}\n/**\n * Polyfill for Object.values(). Get an array of property values from an object.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values\n *\n * @param {!Object} object The object from which to get the values.\n * @return {!Array} The property values.\n * @template K,V\n */\nexport var getValues = (typeof Object.values === 'function') ? Object.values : function (object) {\n var values = [];\n for (var property in object) {\n values.push(object[property]);\n }\n return values;\n};\n/**\n * Determine if an object has any properties.\n * @param {Object} object The object to check.\n * @return {boolean} The object is empty.\n */\nexport function isEmpty(object) {\n var property;\n for (property in object) {\n return false;\n }\n return !property;\n}\n//# sourceMappingURL=obj.js.map","/**\n * @module ol/events\n */\nimport { clear } from './obj.js';\n/**\n * Key to use with {@link module:ol/Observable~Observable#unByKey}.\n * @typedef {Object} EventsKey\n * @property {ListenerFunction} listener\n * @property {import(\"./events/Target.js\").EventTargetLike} target\n * @property {string} type\n * @api\n */\n/**\n * Listener function. This function is called with an event object as argument.\n * When the function returns `false`, event propagation will stop.\n *\n * @typedef {function((Event|import(\"./events/Event.js\").default)): (void|boolean)} ListenerFunction\n * @api\n */\n/**\n * @typedef {Object} ListenerObject\n * @property {ListenerFunction} handleEvent\n */\n/**\n * @typedef {ListenerFunction|ListenerObject} Listener\n */\n/**\n * Registers an event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` to a `this` object, and returns\n * a key for use with {@link module:ol/events~unlistenByKey}.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object=} opt_this Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @param {boolean=} opt_once If true, add the listener as one-off listener.\n * @return {EventsKey} Unique key for the listener.\n */\nexport function listen(target, type, listener, opt_this, opt_once) {\n if (opt_this && opt_this !== target) {\n listener = listener.bind(opt_this);\n }\n if (opt_once) {\n var originalListener_1 = listener;\n listener = function () {\n target.removeEventListener(type, listener);\n originalListener_1.apply(this, arguments);\n };\n }\n var eventsKey = {\n target: target,\n type: type,\n listener: listener\n };\n target.addEventListener(type, listener);\n return eventsKey;\n}\n/**\n * Registers a one-off event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` as self-unregistering listener\n * to a `this` object, and returns a key for use with\n * {@link module:ol/events~unlistenByKey} in case the listener needs to be\n * unregistered before it is called.\n *\n * When {@link module:ol/events~listen} is called with the same arguments after this\n * function, the self-unregistering listener will be turned into a permanent\n * listener.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object=} opt_this Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @return {EventsKey} Key for unlistenByKey.\n */\nexport function listenOnce(target, type, listener, opt_this) {\n return listen(target, type, listener, opt_this, true);\n}\n/**\n * Unregisters event listeners on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * The argument passed to this function is the key returned from\n * {@link module:ol/events~listen} or {@link module:ol/events~listenOnce}.\n *\n * @param {EventsKey} key The key.\n */\nexport function unlistenByKey(key) {\n if (key && key.target) {\n key.target.removeEventListener(key.type, key.listener);\n clear(key);\n }\n}\n//# sourceMappingURL=events.js.map","/**\n * @module ol/Disposable\n */\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nvar Disposable = /** @class */ (function () {\n function Disposable() {\n /**\n * The object has already been disposed.\n * @type {boolean}\n * @private\n */\n this.disposed_ = false;\n }\n /**\n * Clean up.\n */\n Disposable.prototype.dispose = function () {\n if (!this.disposed_) {\n this.disposed_ = true;\n this.disposeInternal();\n }\n };\n /**\n * Extension point for disposable objects.\n * @protected\n */\n Disposable.prototype.disposeInternal = function () { };\n return Disposable;\n}());\nexport default Disposable;\n//# sourceMappingURL=Disposable.js.map","/**\n * @module ol/array\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=} opt_comparator Comparator function.\n * @return {number} The index of the item if found, -1 if not.\n */\nexport function binarySearch(haystack, needle, opt_comparator) {\n var mid, cmp;\n var comparator = opt_comparator || numberSafeCompareFunction;\n var low = 0;\n var high = haystack.length;\n var found = false;\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 if (cmp < 0.0) { /* Too low. */\n low = mid + 1;\n }\n else { /* Key found or too high */\n high = mid;\n found = !cmp;\n }\n }\n /* Key not found. */\n return found ? low : ~low;\n}\n/**\n * Compare function for array sort that is safe for numbers.\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 numberSafeCompareFunction(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n}\n/**\n * Whether the array contains the given object.\n * @param {Array<*>} arr The array to test for the presence of the element.\n * @param {*} obj The object for which to test.\n * @return {boolean} The object is in the array.\n */\nexport function includes(arr, obj) {\n return arr.indexOf(obj) >= 0;\n}\n/**\n * @param {Array} arr Array.\n * @param {number} target Target.\n * @param {number} direction 0 means return the nearest, > 0\n * means return the largest nearest, < 0 means return the\n * smallest nearest.\n * @return {number} Index.\n */\nexport function linearFindNearest(arr, target, direction) {\n var n = arr.length;\n if (arr[0] <= target) {\n return 0;\n }\n else if (target <= arr[n - 1]) {\n return n - 1;\n }\n else {\n var i = void 0;\n if (direction > 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] < target) {\n return i - 1;\n }\n }\n }\n else if (direction < 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] <= target) {\n return i;\n }\n }\n }\n else {\n for (i = 1; i < n; ++i) {\n if (arr[i] == target) {\n return i;\n }\n else if (arr[i] < target) {\n if (arr[i - 1] - target < target - arr[i]) {\n return i - 1;\n }\n else {\n return i;\n }\n }\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 var tmp = arr[begin];\n arr[begin] = arr[end];\n arr[end] = tmp;\n ++begin;\n --end;\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 var extension = Array.isArray(data) ? data : [data];\n var length = extension.length;\n for (var i = 0; i < length; i++) {\n arr[arr.length] = extension[i];\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 var i = arr.indexOf(obj);\n var found = i > -1;\n if (found) {\n arr.splice(i, 1);\n }\n return found;\n}\n/**\n * @param {Array} arr The array to search in.\n * @param {function(VALUE, number, ?) : boolean} func The function to compare.\n * @template VALUE\n * @return {VALUE|null} The element found or null.\n */\nexport function find(arr, func) {\n var length = arr.length >>> 0;\n var value;\n for (var i = 0; i < length; i++) {\n value = arr[i];\n if (func(value, i, arr)) {\n return value;\n }\n }\n return null;\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 var len1 = arr1.length;\n if (len1 !== arr2.length) {\n return false;\n }\n for (var i = 0; i < len1; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Sort the passed array such that the relative order of equal elements is preverved.\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 var length = arr.length;\n var tmp = Array(arr.length);\n var 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 * @param {Array<*>} arr The array to search in.\n * @param {Function} func Comparison function.\n * @return {number} Return index.\n */\nexport function findIndex(arr, func) {\n var index;\n var found = !arr.every(function (el, idx) {\n index = idx;\n return !func(el, idx, arr);\n });\n return found ? index : -1;\n}\n/**\n * @param {Array<*>} arr The array to test.\n * @param {Function=} opt_func Comparison function.\n * @param {boolean=} opt_strict Strictly sorted (default false).\n * @return {boolean} Return index.\n */\nexport function isSorted(arr, opt_func, opt_strict) {\n var compare = opt_func || numberSafeCompareFunction;\n return arr.every(function (currentVal, index) {\n if (index === 0) {\n return true;\n }\n var res = compare(arr[index - 1], currentVal);\n return !(res > 0 || opt_strict && res === 0);\n });\n}\n//# sourceMappingURL=array.js.map","/**\n * @module ol/functions\n */\nimport { equals as arrayEquals } from './array.js';\n/**\n * Always returns true.\n * @returns {boolean} true.\n */\nexport function TRUE() {\n return true;\n}\n/**\n * Always returns false.\n * @returns {boolean} false.\n */\nexport function FALSE() {\n return false;\n}\n/**\n * A reusable function, used e.g. as a default for callbacks.\n *\n * @return {void} Nothing.\n */\nexport function VOID() { }\n/**\n * Wrap a function in another function that remembers the last return. If the\n * returned function is called twice in a row with the same arguments and the same\n * this object, it will return the value from the first call in the second call.\n *\n * @param {function(...any): ReturnType} fn The function to memoize.\n * @return {function(...any): ReturnType} The memoized function.\n * @template ReturnType\n */\nexport function memoizeOne(fn) {\n var called = false;\n /** @type {ReturnType} */\n var lastResult;\n /** @type {Array} */\n var lastArgs;\n var lastThis;\n return function () {\n var nextArgs = Array.prototype.slice.call(arguments);\n if (!called || this !== lastThis || !arrayEquals(nextArgs, lastArgs)) {\n called = true;\n lastThis = this;\n lastArgs = nextArgs;\n lastResult = fn.apply(this, arguments);\n }\n return lastResult;\n };\n}\n//# sourceMappingURL=functions.js.map","/**\n * @module ol/events/Event\n */\n/**\n * @classdesc\n * Stripped down implementation of the W3C DOM Level 2 Event interface.\n * See https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-interface.\n *\n * This implementation only provides `type` and `target` properties, and\n * `stopPropagation` and `preventDefault` methods. It is meant as base class\n * for higher level events defined in the library, and works with\n * {@link module:ol/events/Target~Target}.\n */\nvar BaseEvent = /** @class */ (function () {\n /**\n * @param {string} type Type.\n */\n function BaseEvent(type) {\n /**\n * @type {boolean}\n */\n this.propagationStopped;\n /**\n * The event type.\n * @type {string}\n * @api\n */\n this.type = type;\n /**\n * The event target.\n * @type {Object}\n * @api\n */\n this.target = null;\n }\n /**\n * Stop event propagation.\n * @api\n */\n BaseEvent.prototype.preventDefault = function () {\n this.propagationStopped = true;\n };\n /**\n * Stop event propagation.\n * @api\n */\n BaseEvent.prototype.stopPropagation = function () {\n this.propagationStopped = true;\n };\n return BaseEvent;\n}());\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function stopPropagation(evt) {\n evt.stopPropagation();\n}\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function preventDefault(evt) {\n evt.preventDefault();\n}\nexport default BaseEvent;\n//# sourceMappingURL=Event.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/events/Target\n */\nimport Disposable from '../Disposable.js';\nimport { VOID } from '../functions.js';\nimport Event from './Event.js';\nimport { clear } from '../obj.js';\n/**\n * @typedef {EventTarget|Target} EventTargetLike\n */\n/**\n * @classdesc\n * A simplified implementation of the W3C DOM Level 2 EventTarget interface.\n * See https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.\n *\n * There are two important simplifications compared to the specification:\n *\n * 1. The handling of `useCapture` in `addEventListener` and\n * `removeEventListener`. There is no real capture model.\n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.\n * There is no event target hierarchy. When a listener calls\n * `stopPropagation` or `preventDefault` on an event object, it means that no\n * more listeners after this one will be called. Same as when the listener\n * returns false.\n */\nvar Target = /** @class */ (function (_super) {\n __extends(Target, _super);\n /**\n * @param {*=} opt_target Default event target for dispatched events.\n */\n function Target(opt_target) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {*}\n */\n _this.eventTarget_ = opt_target;\n /**\n * @private\n * @type {!Object}\n */\n _this.pendingRemovals_ = {};\n /**\n * @private\n * @type {!Object}\n */\n _this.dispatching_ = {};\n /**\n * @private\n * @type {!Object>}\n */\n _this.listeners_ = {};\n return _this;\n }\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n Target.prototype.addEventListener = function (type, listener) {\n if (!type || !listener) {\n return;\n }\n var listeners = this.listeners_[type];\n if (!listeners) {\n listeners = [];\n this.listeners_[type] = listeners;\n }\n if (listeners.indexOf(listener) === -1) {\n listeners.push(listener);\n }\n };\n /**\n * Dispatches an event and calls all listeners listening for events\n * of this type. The event parameter can either be a string or an\n * Object with a `type` property.\n *\n * @param {import(\"./Event.js\").default|string} event Event object.\n * @return {boolean|undefined} `false` if anyone called preventDefault on the\n * event object or if any of the listeners returned false.\n * @api\n */\n Target.prototype.dispatchEvent = function (event) {\n /** @type {import(\"./Event.js\").default|Event} */\n var evt = typeof event === 'string' ? new Event(event) : event;\n var type = evt.type;\n if (!evt.target) {\n evt.target = this.eventTarget_ || this;\n }\n var listeners = this.listeners_[type];\n var propagate;\n if (listeners) {\n if (!(type in this.dispatching_)) {\n this.dispatching_[type] = 0;\n this.pendingRemovals_[type] = 0;\n }\n ++this.dispatching_[type];\n for (var i = 0, ii = listeners.length; i < ii; ++i) {\n if ('handleEvent' in listeners[i]) {\n propagate = /** @type {import(\"../events.js\").ListenerObject} */ (listeners[i]).handleEvent(evt);\n }\n else {\n propagate = /** @type {import(\"../events.js\").ListenerFunction} */ (listeners[i]).call(this, evt);\n }\n if (propagate === false || evt.propagationStopped) {\n propagate = false;\n break;\n }\n }\n --this.dispatching_[type];\n if (this.dispatching_[type] === 0) {\n var pendingRemovals = this.pendingRemovals_[type];\n delete this.pendingRemovals_[type];\n while (pendingRemovals--) {\n this.removeEventListener(type, VOID);\n }\n delete this.dispatching_[type];\n }\n return propagate;\n }\n };\n /**\n * @inheritDoc\n */\n Target.prototype.disposeInternal = function () {\n clear(this.listeners_);\n };\n /**\n * Get the listeners for a specified event type. Listeners are returned in the\n * order that they will be called in.\n *\n * @param {string} type Type.\n * @return {Array} Listeners.\n */\n Target.prototype.getListeners = function (type) {\n return this.listeners_[type];\n };\n /**\n * @param {string=} opt_type Type. If not provided,\n * `true` will be returned if this event target has any listeners.\n * @return {boolean} Has listeners.\n */\n Target.prototype.hasListener = function (opt_type) {\n return opt_type ?\n opt_type in this.listeners_ :\n Object.keys(this.listeners_).length > 0;\n };\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n Target.prototype.removeEventListener = function (type, listener) {\n var listeners = this.listeners_[type];\n if (listeners) {\n var index = listeners.indexOf(listener);\n if (index !== -1) {\n if (type in this.pendingRemovals_) {\n // make listener a no-op, and remove later in #dispatchEvent()\n listeners[index] = VOID;\n ++this.pendingRemovals_[type];\n }\n else {\n listeners.splice(index, 1);\n if (listeners.length === 0) {\n delete this.listeners_[type];\n }\n }\n }\n }\n };\n return Target;\n}(Disposable));\nexport default Target;\n//# sourceMappingURL=Target.js.map","/**\n * @module ol/events/EventType\n */\n/**\n * @enum {string}\n * @const\n */\nexport default {\n /**\n * Generic change event. Triggered when the revision counter is increased.\n * @event module:ol/events/Event~BaseEvent#change\n * @api\n */\n CHANGE: 'change',\n /**\n * Generic error event. Triggered when an error occurs.\n * @event module:ol/events/Event~BaseEvent#error\n * @api\n */\n ERROR: 'error',\n BLUR: 'blur',\n CLEAR: 'clear',\n CONTEXTMENU: 'contextmenu',\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n DRAGENTER: 'dragenter',\n DRAGOVER: 'dragover',\n DROP: 'drop',\n FOCUS: 'focus',\n KEYDOWN: 'keydown',\n KEYPRESS: 'keypress',\n LOAD: 'load',\n RESIZE: 'resize',\n TOUCHMOVE: 'touchmove',\n WHEEL: 'wheel'\n};\n//# sourceMappingURL=EventType.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Observable\n */\nimport { listen, unlistenByKey, listenOnce } from './events.js';\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * An event target providing convenient methods for listener registration\n * and unregistration. A generic `change` event is always available through\n * {@link module:ol/Observable~Observable#changed}.\n *\n * @fires import(\"./events/Event.js\").default\n * @api\n */\nvar Observable = /** @class */ (function (_super) {\n __extends(Observable, _super);\n function Observable() {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {number}\n */\n _this.revision_ = 0;\n return _this;\n }\n /**\n * Increases the revision counter and dispatches a 'change' event.\n * @api\n */\n Observable.prototype.changed = function () {\n ++this.revision_;\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * Get the version number for this object. Each time the object is modified,\n * its version number will be incremented.\n * @return {number} Revision.\n * @api\n */\n Observable.prototype.getRevision = function () {\n return this.revision_;\n };\n /**\n * Listen for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {import(\"./events.js\").ListenerFunction} 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 */\n Observable.prototype.on = function (type, listener) {\n if (Array.isArray(type)) {\n var len = type.length;\n var keys = new Array(len);\n for (var i = 0; i < len; ++i) {\n keys[i] = listen(this, type[i], listener);\n }\n return keys;\n }\n else {\n return listen(this, /** @type {string} */ (type), listener);\n }\n };\n /**\n * Listen once for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} 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 */\n Observable.prototype.once = function (type, listener) {\n if (Array.isArray(type)) {\n var len = type.length;\n var keys = new Array(len);\n for (var i = 0; i < len; ++i) {\n keys[i] = listenOnce(this, type[i], listener);\n }\n return keys;\n }\n else {\n return listenOnce(this, /** @type {string} */ (type), listener);\n }\n };\n /**\n * Unlisten for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @api\n */\n Observable.prototype.un = function (type, listener) {\n if (Array.isArray(type)) {\n for (var i = 0, ii = type.length; i < ii; ++i) {\n this.removeEventListener(type[i], listener);\n }\n }\n else {\n this.removeEventListener(type, listener);\n }\n };\n return Observable;\n}(EventTarget));\n/**\n * 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 (var i = 0, ii = key.length; i < ii; ++i) {\n unlistenByKey(key[i]);\n }\n }\n else {\n unlistenByKey(/** @type {import(\"./events.js\").EventsKey} */ (key));\n }\n}\nexport default Observable;\n//# sourceMappingURL=Observable.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Object\n */\nimport { getUid } from './util.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport Observable from './Observable.js';\nimport Event from './events/Event.js';\nimport { assign } from './obj.js';\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Object~BaseObject} instances are instances of this type.\n */\nvar ObjectEvent = /** @class */ (function (_super) {\n __extends(ObjectEvent, _super);\n /**\n * @param {string} type The event type.\n * @param {string} key The property name.\n * @param {*} oldValue The old value for `key`.\n */\n function ObjectEvent(type, key, oldValue) {\n var _this = _super.call(this, type) || this;\n /**\n * The name of the property whose value is changing.\n * @type {string}\n * @api\n */\n _this.key = key;\n /**\n * The old value. To get the new value use `e.target.get(e.key)` where\n * `e` is the event object.\n * @type {*}\n * @api\n */\n _this.oldValue = oldValue;\n return _this;\n }\n return ObjectEvent;\n}(Event));\nexport { ObjectEvent };\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Most non-trivial classes inherit from this.\n *\n * This extends {@link module:ol/Observable} with observable\n * properties, where each property is observable as well as the object as a\n * whole.\n *\n * Classes that inherit from this have pre-defined properties, to which you can\n * add your owns. The pre-defined properties are listed in this documentation as\n * 'Observable Properties', and have their own accessors; for example,\n * {@link module:ol/Map~Map} has a `target` property, accessed with\n * `getTarget()` and changed with `setTarget()`. Not all properties are however\n * settable. There are also general-purpose accessors `get()` and `set()`. For\n * example, `get('target')` is equivalent to `getTarget()`.\n *\n * The `set` accessors trigger a change event, and you can monitor this by\n * registering a listener. For example, {@link module:ol/View~View} has a\n * `center` property, so `view.on('change:center', function(evt) {...});` would\n * call the function whenever the value of the center property changes. Within\n * the function, `evt.target` would be the view, so `evt.target.getCenter()`\n * would return the new center.\n *\n * You can add your own observable properties with\n * `object.set('prop', 'value')`, and retrieve that with `object.get('prop')`.\n * You can listen for changes on that property value with\n * `object.on('change:prop', listener)`. You can get a list of all\n * properties with {@link module:ol/Object~BaseObject#getProperties}.\n *\n * Note that the observable properties are separate from standard JS properties.\n * You can, for example, give your map object a title with\n * `map.title='New title'` and with `map.set('title', 'Another title')`. The\n * first will be a `hasOwnProperty`; the second will appear in\n * `getProperties()`. Only the second is observable.\n *\n * Properties can be deleted by using the unset method. E.g.\n * object.unset('foo').\n *\n * @fires ObjectEvent\n * @api\n */\nvar BaseObject = /** @class */ (function (_super) {\n __extends(BaseObject, _super);\n /**\n * @param {Object=} opt_values An object with key-value pairs.\n */\n function BaseObject(opt_values) {\n var _this = _super.call(this) || this;\n // Call {@link module:ol/util~getUid} to ensure that the order of objects' ids is\n // the same as the order in which they were created. This also helps to\n // ensure that object properties are always added in the same order, which\n // helps many JavaScript engines generate faster code.\n getUid(_this);\n /**\n * @private\n * @type {!Object}\n */\n _this.values_ = {};\n if (opt_values !== undefined) {\n _this.setProperties(opt_values);\n }\n return _this;\n }\n /**\n * Gets a value.\n * @param {string} key Key name.\n * @return {*} Value.\n * @api\n */\n BaseObject.prototype.get = function (key) {\n var value;\n if (this.values_.hasOwnProperty(key)) {\n value = this.values_[key];\n }\n return value;\n };\n /**\n * Get a list of object property names.\n * @return {Array} List of property names.\n * @api\n */\n BaseObject.prototype.getKeys = function () {\n return Object.keys(this.values_);\n };\n /**\n * Get an object of all property names and values.\n * @return {Object} Object.\n * @api\n */\n BaseObject.prototype.getProperties = function () {\n return assign({}, this.values_);\n };\n /**\n * @param {string} key Key name.\n * @param {*} oldValue Old value.\n */\n BaseObject.prototype.notify = function (key, oldValue) {\n var eventType;\n eventType = getChangeEventType(key);\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n eventType = ObjectEventType.PROPERTYCHANGE;\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n };\n /**\n * Sets a value.\n * @param {string} key Key name.\n * @param {*} value Value.\n * @param {boolean=} opt_silent Update without triggering an event.\n * @api\n */\n BaseObject.prototype.set = function (key, value, opt_silent) {\n if (opt_silent) {\n this.values_[key] = value;\n }\n else {\n var oldValue = this.values_[key];\n this.values_[key] = value;\n if (oldValue !== value) {\n this.notify(key, oldValue);\n }\n }\n };\n /**\n * Sets a collection of key-value pairs. Note that this changes any existing\n * properties and adds new ones (it does not remove any existing properties).\n * @param {Object} values Values.\n * @param {boolean=} opt_silent Update without triggering an event.\n * @api\n */\n BaseObject.prototype.setProperties = function (values, opt_silent) {\n for (var key in values) {\n this.set(key, values[key], opt_silent);\n }\n };\n /**\n * Unsets a property.\n * @param {string} key Key name.\n * @param {boolean=} opt_silent Unset without triggering an event.\n * @api\n */\n BaseObject.prototype.unset = function (key, opt_silent) {\n if (key in this.values_) {\n var oldValue = this.values_[key];\n delete this.values_[key];\n if (!opt_silent) {\n this.notify(key, oldValue);\n }\n }\n };\n return BaseObject;\n}(Observable));\n/**\n * @type {Object}\n */\nvar changeEventTypeCache = {};\n/**\n * @param {string} key Key name.\n * @return {string} Change name.\n */\nexport function getChangeEventType(key) {\n return changeEventTypeCache.hasOwnProperty(key) ?\n changeEventTypeCache[key] :\n (changeEventTypeCache[key] = 'change:' + key);\n}\nexport default BaseObject;\n//# sourceMappingURL=Object.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Collection\n */\nimport AssertionError from './AssertionError.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport BaseObject from './Object.js';\nimport Event from './events/Event.js';\n/**\n * @enum {string}\n * @private\n */\nvar Property = {\n LENGTH: 'length'\n};\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Collection~Collection} instances are instances of this\n * type.\n */\nvar CollectionEvent = /** @class */ (function (_super) {\n __extends(CollectionEvent, _super);\n /**\n * @param {CollectionEventType} type Type.\n * @param {*=} opt_element Element.\n * @param {number=} opt_index The index of the added or removed element.\n */\n function CollectionEvent(type, opt_element, opt_index) {\n var _this = _super.call(this, type) || this;\n /**\n * The element that is added to or removed from the collection.\n * @type {*}\n * @api\n */\n _this.element = opt_element;\n /**\n * The index of the added or removed element.\n * @type {number}\n * @api\n */\n _this.index = opt_index;\n return _this;\n }\n return CollectionEvent;\n}(Event));\nexport { CollectionEvent };\n/**\n * @typedef {Object} Options\n * @property {boolean} [unique=false] Disallow the same item from being added to\n * the collection twice.\n */\n/**\n * @classdesc\n * An expanded version of standard JS Array, adding convenience methods for\n * manipulation. Add and remove changes to the Collection trigger a Collection\n * event. Note that this does not cover changes to the objects _within_ the\n * Collection; they trigger events on the appropriate object, not on the\n * Collection as a whole.\n *\n * @fires CollectionEvent\n *\n * @template T\n * @api\n */\nvar Collection = /** @class */ (function (_super) {\n __extends(Collection, _super);\n /**\n * @param {Array=} opt_array Array.\n * @param {Options=} opt_options Collection options.\n */\n function Collection(opt_array, opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options || {};\n /**\n * @private\n * @type {boolean}\n */\n _this.unique_ = !!options.unique;\n /**\n * @private\n * @type {!Array}\n */\n _this.array_ = opt_array ? opt_array : [];\n if (_this.unique_) {\n for (var i = 0, ii = _this.array_.length; i < ii; ++i) {\n _this.assertUnique_(_this.array_[i], i);\n }\n }\n _this.updateLength_();\n return _this;\n }\n /**\n * Remove all elements from the collection.\n * @api\n */\n Collection.prototype.clear = function () {\n while (this.getLength() > 0) {\n this.pop();\n }\n };\n /**\n * Add elements to the collection. This pushes each item in the provided array\n * to the end of the collection.\n * @param {!Array} arr Array.\n * @return {Collection} This collection.\n * @api\n */\n Collection.prototype.extend = function (arr) {\n for (var i = 0, ii = arr.length; i < ii; ++i) {\n this.push(arr[i]);\n }\n return this;\n };\n /**\n * Iterate over each element, calling the provided callback.\n * @param {function(T, number, Array): *} f The function to call\n * for every element. This function takes 3 arguments (the element, the\n * index and the array). The return value is ignored.\n * @api\n */\n Collection.prototype.forEach = function (f) {\n var array = this.array_;\n for (var i = 0, ii = array.length; i < ii; ++i) {\n f(array[i], i, array);\n }\n };\n /**\n * Get a reference to the underlying Array object. Warning: if the array\n * is mutated, no events will be dispatched by the collection, and the\n * collection's \"length\" property won't be in sync with the actual length\n * of the array.\n * @return {!Array} Array.\n * @api\n */\n Collection.prototype.getArray = function () {\n return this.array_;\n };\n /**\n * Get the element at the provided index.\n * @param {number} index Index.\n * @return {T} Element.\n * @api\n */\n Collection.prototype.item = function (index) {\n return this.array_[index];\n };\n /**\n * Get the length of this collection.\n * @return {number} The length of the array.\n * @observable\n * @api\n */\n Collection.prototype.getLength = function () {\n return this.get(Property.LENGTH);\n };\n /**\n * Insert an element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n Collection.prototype.insertAt = function (index, elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n this.array_.splice(index, 0, elem);\n this.updateLength_();\n this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD, elem, index));\n };\n /**\n * Remove the last element of the collection and return it.\n * Return `undefined` if the collection is empty.\n * @return {T|undefined} Element.\n * @api\n */\n Collection.prototype.pop = function () {\n return this.removeAt(this.getLength() - 1);\n };\n /**\n * Insert the provided element at the end of the collection.\n * @param {T} elem Element.\n * @return {number} New length of the collection.\n * @api\n */\n Collection.prototype.push = function (elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n var n = this.getLength();\n this.insertAt(n, elem);\n return this.getLength();\n };\n /**\n * Remove the first occurrence of an element from the collection.\n * @param {T} elem Element.\n * @return {T|undefined} The removed element or undefined if none found.\n * @api\n */\n Collection.prototype.remove = function (elem) {\n var arr = this.array_;\n for (var i = 0, ii = arr.length; i < ii; ++i) {\n if (arr[i] === elem) {\n return this.removeAt(i);\n }\n }\n return undefined;\n };\n /**\n * Remove the element at the provided index and return it.\n * Return `undefined` if the collection does not contain this index.\n * @param {number} index Index.\n * @return {T|undefined} Value.\n * @api\n */\n Collection.prototype.removeAt = function (index) {\n var prev = this.array_[index];\n this.array_.splice(index, 1);\n this.updateLength_();\n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev, index));\n return prev;\n };\n /**\n * Set the element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n Collection.prototype.setAt = function (index, elem) {\n var n = this.getLength();\n if (index < n) {\n if (this.unique_) {\n this.assertUnique_(elem, index);\n }\n var prev = this.array_[index];\n this.array_[index] = elem;\n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev, index));\n this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD, elem, index));\n }\n else {\n for (var j = n; j < index; ++j) {\n this.insertAt(j, undefined);\n }\n this.insertAt(index, elem);\n }\n };\n /**\n * @private\n */\n Collection.prototype.updateLength_ = function () {\n this.set(Property.LENGTH, this.array_.length);\n };\n /**\n * @private\n * @param {T} elem Element.\n * @param {number=} opt_except Optional index to ignore.\n */\n Collection.prototype.assertUnique_ = function (elem, opt_except) {\n for (var i = 0, ii = this.array_.length; i < ii; ++i) {\n if (this.array_[i] === elem && i !== opt_except) {\n throw new AssertionError(58);\n }\n }\n };\n return Collection;\n}(BaseObject));\nexport default Collection;\n//# sourceMappingURL=Collection.js.map","/**\n * @module ol/asserts\n */\nimport AssertionError from './AssertionError.js';\n/**\n * @param {*} assertion Assertion we expected to be truthy.\n * @param {number} errorCode Error code.\n */\nexport function assert(assertion, errorCode) {\n if (!assertion) {\n throw new AssertionError(errorCode);\n }\n}\n//# sourceMappingURL=asserts.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Feature\n */\nimport { assert } from './asserts.js';\nimport { listen, unlistenByKey } from './events.js';\nimport EventType from './events/EventType.js';\nimport BaseObject, { getChangeEventType } from './Object.js';\n/**\n * @typedef {typeof Feature|typeof import(\"./render/Feature.js\").default} FeatureClass\n */\n/**\n * @typedef {Feature|import(\"./render/Feature.js\").default} FeatureLike\n */\n/**\n * @classdesc\n * A vector object for geographic features with a geometry and other\n * attribute properties, similar to the features in vector file formats like\n * GeoJSON.\n *\n * Features can be styled individually with `setStyle`; otherwise they use the\n * style of their vector layer.\n *\n * Note that attribute properties are set as {@link module:ol/Object} properties on\n * the feature object, so they are observable, and have get/set accessors.\n *\n * Typically, a feature has a single geometry property. You can set the\n * geometry using the `setGeometry` method and get it with `getGeometry`.\n * It is possible to store more than one geometry on a feature using attribute\n * properties. By default, the geometry used for rendering is identified by\n * the property name `geometry`. If you want to use another geometry property\n * for rendering, use the `setGeometryName` method to change the attribute\n * property associated with the geometry for the feature. For example:\n *\n * ```js\n *\n * import Feature from 'ol/Feature';\n * import Polygon from 'ol/geom/Polygon';\n * import Point from 'ol/geom/Point';\n *\n * var feature = new Feature({\n * geometry: new Polygon(polyCoords),\n * labelPoint: new Point(labelCoords),\n * name: 'My Polygon'\n * });\n *\n * // get the polygon geometry\n * var poly = feature.getGeometry();\n *\n * // Render the feature as a point using the coordinates from labelPoint\n * feature.setGeometryName('labelPoint');\n *\n * // get the point geometry\n * var point = feature.getGeometry();\n * ```\n *\n * @api\n * @template {import(\"./geom/Geometry.js\").default} Geometry\n */\nvar Feature = /** @class */ (function (_super) {\n __extends(Feature, _super);\n /**\n * @param {Geometry|Object=} opt_geometryOrProperties\n * You may pass a Geometry object directly, or an object literal containing\n * properties. If you pass an object literal, you may include a Geometry\n * associated with a `geometry` key.\n */\n function Feature(opt_geometryOrProperties) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {number|string|undefined}\n */\n _this.id_ = undefined;\n /**\n * @type {string}\n * @private\n */\n _this.geometryName_ = 'geometry';\n /**\n * User provided style.\n * @private\n * @type {import(\"./style/Style.js\").StyleLike}\n */\n _this.style_ = null;\n /**\n * @private\n * @type {import(\"./style/Style.js\").StyleFunction|undefined}\n */\n _this.styleFunction_ = undefined;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.geometryChangeKey_ = null;\n _this.addEventListener(getChangeEventType(_this.geometryName_), _this.handleGeometryChanged_);\n if (opt_geometryOrProperties) {\n if (typeof /** @type {?} */ (opt_geometryOrProperties).getSimplifiedGeometry === 'function') {\n var geometry = /** @type {Geometry} */ (opt_geometryOrProperties);\n _this.setGeometry(geometry);\n }\n else {\n /** @type {Object} */\n var properties = opt_geometryOrProperties;\n _this.setProperties(properties);\n }\n }\n return _this;\n }\n /**\n * Clone this feature. If the original feature has a geometry it\n * is also cloned. The feature id is not set in the clone.\n * @return {Feature} The clone.\n * @api\n */\n Feature.prototype.clone = function () {\n var clone = new Feature(this.getProperties());\n clone.setGeometryName(this.getGeometryName());\n var geometry = this.getGeometry();\n if (geometry) {\n clone.setGeometry(geometry.clone());\n }\n var style = this.getStyle();\n if (style) {\n clone.setStyle(style);\n }\n return clone;\n };\n /**\n * Get the feature's default geometry. A feature may have any number of named\n * geometries. The \"default\" geometry (the one that is rendered by default) is\n * set when calling {@link module:ol/Feature~Feature#setGeometry}.\n * @return {Geometry|undefined} The default geometry for the feature.\n * @api\n * @observable\n */\n Feature.prototype.getGeometry = function () {\n return (\n /** @type {Geometry|undefined} */ (this.get(this.geometryName_)));\n };\n /**\n * Get the feature identifier. This is a stable identifier for the feature and\n * is either set when reading data from a remote source or set explicitly by\n * calling {@link module:ol/Feature~Feature#setId}.\n * @return {number|string|undefined} Id.\n * @api\n */\n Feature.prototype.getId = function () {\n return this.id_;\n };\n /**\n * Get the name of the feature's default geometry. By default, the default\n * geometry is named `geometry`.\n * @return {string} Get the property name associated with the default geometry\n * for this feature.\n * @api\n */\n Feature.prototype.getGeometryName = function () {\n return this.geometryName_;\n };\n /**\n * Get the feature's style. Will return what was provided to the\n * {@link module:ol/Feature~Feature#setStyle} method.\n * @return {import(\"./style/Style.js\").StyleLike} The feature style.\n * @api\n */\n Feature.prototype.getStyle = function () {\n return this.style_;\n };\n /**\n * Get the feature's style function.\n * @return {import(\"./style/Style.js\").StyleFunction|undefined} Return a function\n * representing the current style of this feature.\n * @api\n */\n Feature.prototype.getStyleFunction = function () {\n return this.styleFunction_;\n };\n /**\n * @private\n */\n Feature.prototype.handleGeometryChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n Feature.prototype.handleGeometryChanged_ = function () {\n if (this.geometryChangeKey_) {\n unlistenByKey(this.geometryChangeKey_);\n this.geometryChangeKey_ = null;\n }\n var geometry = this.getGeometry();\n if (geometry) {\n this.geometryChangeKey_ = listen(geometry, EventType.CHANGE, this.handleGeometryChange_, this);\n }\n this.changed();\n };\n /**\n * Set the default geometry for the feature. This will update the property\n * with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.\n * @param {Geometry|undefined} geometry The new geometry.\n * @api\n * @observable\n */\n Feature.prototype.setGeometry = function (geometry) {\n this.set(this.geometryName_, geometry);\n };\n /**\n * Set the style for the feature. This can be a single style object, an array\n * of styles, or a function that takes a resolution and returns an array of\n * styles. If it is `null` the feature has no style (a `null` style).\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 Feature.prototype.setStyle = function (style) {\n this.style_ = style;\n this.styleFunction_ = !style ? undefined : createStyleFunction(style);\n this.changed();\n };\n /**\n * Set the feature id. The feature id is considered stable and may be used when\n * requesting features or comparing identifiers returned from a remote source.\n * The feature id can be used with the\n * {@link module:ol/source/Vector~VectorSource#getFeatureById} method.\n * @param {number|string|undefined} id The feature id.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n Feature.prototype.setId = function (id) {\n this.id_ = id;\n this.changed();\n };\n /**\n * Set the property name to be used when getting the feature's default geometry.\n * When calling {@link module:ol/Feature~Feature#getGeometry}, the value of the property with\n * this name will be returned.\n * @param {string} name The property name of the default geometry.\n * @api\n */\n Feature.prototype.setGeometryName = function (name) {\n this.removeEventListener(getChangeEventType(this.geometryName_), this.handleGeometryChanged_);\n this.geometryName_ = name;\n this.addEventListener(getChangeEventType(this.geometryName_), this.handleGeometryChanged_);\n this.handleGeometryChanged_();\n };\n return Feature;\n}(BaseObject));\n/**\n * Convert the provided object into a feature style function. Functions passed\n * through unchanged. Arrays of Style or single style objects wrapped\n * in a new feature style function.\n * @param {!import(\"./style/Style.js\").StyleFunction|!Array|!import(\"./style/Style.js\").default} obj\n * A feature style function, a single style, or an array of styles.\n * @return {import(\"./style/Style.js\").StyleFunction} A style function.\n */\nexport function createStyleFunction(obj) {\n if (typeof obj === 'function') {\n return obj;\n }\n else {\n /**\n * @type {Array}\n */\n var styles_1;\n if (Array.isArray(obj)) {\n styles_1 = obj;\n }\n else {\n assert(typeof /** @type {?} */ (obj).getZIndex === 'function', 41); // Expected an `import(\"./style/Style.js\").Style` or an array of `import(\"./style/Style.js\").Style`\n var style = /** @type {import(\"./style/Style.js\").default} */ (obj);\n styles_1 = [style];\n }\n return function () {\n return styles_1;\n };\n }\n}\nexport default Feature;\n//# sourceMappingURL=Feature.js.map","/**\n * @module ol/extent/Corner\n */\n/**\n * Extent corner.\n * @enum {string}\n */\nexport default {\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right',\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right'\n};\n//# sourceMappingURL=Corner.js.map","/**\n * @module ol/extent/Relationship\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//# sourceMappingURL=Relationship.js.map","/**\n * @module ol/extent\n */\nimport { assert } from './asserts.js';\nimport Corner from './extent/Corner.js';\nimport Relationship from './extent/Relationship.js';\n/**\n * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.\n * @typedef {Array} Extent\n * @api\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 var extent = createEmpty();\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n/**\n * @param {Array} xs Xs.\n * @param {Array} ys Ys.\n * @param {Extent=} opt_extent Destination extent.\n * @private\n * @return {Extent} Extent.\n */\nfunction _boundingExtentXYs(xs, ys, opt_extent) {\n var minX = Math.min.apply(null, xs);\n var minY = Math.min.apply(null, ys);\n var maxX = Math.max.apply(null, xs);\n var maxY = Math.max.apply(null, ys);\n return createOrUpdate(minX, minY, maxX, maxY, opt_extent);\n}\n/**\n * Return extent increased by the provided value.\n * @param {Extent} extent Extent.\n * @param {number} value The amount by which the extent should be buffered.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n * @api\n */\nexport function buffer(extent, value, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0] - value;\n opt_extent[1] = extent[1] - value;\n opt_extent[2] = extent[2] + value;\n opt_extent[3] = extent[3] + value;\n return opt_extent;\n }\n else {\n return [\n extent[0] - value,\n extent[1] - value,\n extent[2] + value,\n extent[3] + value\n ];\n }\n}\n/**\n * Creates a clone of an extent.\n *\n * @param {Extent} extent Extent to clone.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} The clone.\n */\nexport function clone(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n }\n else {\n return extent.slice();\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {number} Closest squared distance.\n */\nexport function closestSquaredDistanceXY(extent, x, y) {\n var dx, dy;\n if (x < extent[0]) {\n dx = extent[0] - x;\n }\n else if (extent[2] < x) {\n dx = x - extent[2];\n }\n else {\n dx = 0;\n }\n if (y < extent[1]) {\n dy = extent[1] - y;\n }\n else if (extent[3] < y) {\n dy = y - extent[3];\n }\n else {\n dy = 0;\n }\n return dx * dx + dy * dy;\n}\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} The coordinate is contained in the extent.\n * @api\n */\nexport function containsCoordinate(extent, coordinate) {\n return containsXY(extent, coordinate[0], coordinate[1]);\n}\n/**\n * Check if one extent contains another.\n *\n * An extent is deemed contained if it lies completely within the other extent,\n * including if they share one or more edges.\n *\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The second extent is contained by or on the edge of the\n * first.\n * @api\n */\nexport function containsExtent(extent1, extent2) {\n return extent1[0] <= extent2[0] && extent2[2] <= extent1[2] &&\n extent1[1] <= extent2[1] && extent2[3] <= extent1[3];\n}\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {number} x X coordinate.\n * @param {number} y Y coordinate.\n * @return {boolean} The x, y values are contained in the extent.\n * @api\n */\nexport function containsXY(extent, x, y) {\n return extent[0] <= x && x <= extent[2] && extent[1] <= y && y <= extent[3];\n}\n/**\n * Get the relationship between a coordinate and extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate The coordinate.\n * @return {Relationship} The relationship (bitwise compare with\n * import(\"./extent/Relationship.js\").Relationship).\n */\nexport function coordinateRelationship(extent, coordinate) {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var x = coordinate[0];\n var y = coordinate[1];\n var relationship = Relationship.UNKNOWN;\n if (x < minX) {\n relationship = relationship | Relationship.LEFT;\n }\n else if (x > maxX) {\n relationship = relationship | Relationship.RIGHT;\n }\n if (y < minY) {\n relationship = relationship | Relationship.BELOW;\n }\n else if (y > maxY) {\n relationship = relationship | Relationship.ABOVE;\n }\n if (relationship === Relationship.UNKNOWN) {\n relationship = Relationship.INTERSECTING;\n }\n return relationship;\n}\n/**\n * Create an empty extent.\n * @return {Extent} Empty extent.\n * @api\n */\nexport function createEmpty() {\n return [Infinity, Infinity, -Infinity, -Infinity];\n}\n/**\n * Create a new extent or update the provided extent.\n * @param {number} minX Minimum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxX Maximum X.\n * @param {number} maxY Maximum Y.\n * @param {Extent=} opt_extent Destination extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdate(minX, minY, maxX, maxY, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = minX;\n opt_extent[1] = minY;\n opt_extent[2] = maxX;\n opt_extent[3] = maxY;\n return opt_extent;\n }\n else {\n return [minX, minY, maxX, maxY];\n }\n}\n/**\n * Create a new empty extent or make the provided one empty.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateEmpty(opt_extent) {\n return createOrUpdate(Infinity, Infinity, -Infinity, -Infinity, opt_extent);\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinate(coordinate, opt_extent) {\n var x = coordinate[0];\n var y = coordinate[1];\n return createOrUpdate(x, y, x, y, opt_extent);\n}\n/**\n * @param {Array} coordinates Coordinates.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinates(coordinates, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendCoordinates(extent, coordinates);\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromFlatCoordinates(flatCoordinates, offset, end, stride, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendFlatCoordinates(extent, flatCoordinates, offset, end, stride);\n}\n/**\n * @param {Array>} rings Rings.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromRings(rings, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendRings(extent, rings);\n}\n/**\n * Determine if two extents are equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The two extents are equivalent.\n * @api\n */\nexport function equals(extent1, extent2) {\n return extent1[0] == extent2[0] && extent1[2] == extent2[2] &&\n extent1[1] == extent2[1] && extent1[3] == extent2[3];\n}\n/**\n * Determine if two extents are approximately equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {number} tolerance Tolerance in extent coordinate units.\n * @return {boolean} The two extents differ by less than the tolerance.\n */\nexport function approximatelyEquals(extent1, extent2, tolerance) {\n return Math.abs(extent1[0] - extent2[0]) < tolerance && Math.abs(extent1[2] - extent2[2]) < tolerance &&\n Math.abs(extent1[1] - extent2[1]) < tolerance && Math.abs(extent1[3] - extent2[3]) < tolerance;\n}\n/**\n * Modify an extent to include another extent.\n * @param {Extent} extent1 The extent to be modified.\n * @param {Extent} extent2 The extent that will be included in the first.\n * @return {Extent} A reference to the first (extended) extent.\n * @api\n */\nexport function extend(extent1, extent2) {\n if (extent2[0] < extent1[0]) {\n extent1[0] = extent2[0];\n }\n if (extent2[2] > extent1[2]) {\n extent1[2] = extent2[2];\n }\n if (extent2[1] < extent1[1]) {\n extent1[1] = extent2[1];\n }\n if (extent2[3] > extent1[3]) {\n extent1[3] = extent2[3];\n }\n return extent1;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n */\nexport function extendCoordinate(extent, coordinate) {\n if (coordinate[0] < extent[0]) {\n extent[0] = coordinate[0];\n }\n if (coordinate[0] > extent[2]) {\n extent[2] = coordinate[0];\n }\n if (coordinate[1] < extent[1]) {\n extent[1] = coordinate[1];\n }\n if (coordinate[1] > extent[3]) {\n extent[3] = coordinate[1];\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Extent.\n */\nexport function extendCoordinates(extent, coordinates) {\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {Extent} Extent.\n */\nexport function extendFlatCoordinates(extent, flatCoordinates, offset, end, stride) {\n for (; offset < end; offset += stride) {\n extendXY(extent, flatCoordinates[offset], flatCoordinates[offset + 1]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array>} rings Rings.\n * @return {Extent} Extent.\n */\nexport function extendRings(extent, rings) {\n for (var i = 0, ii = rings.length; i < ii; ++i) {\n extendCoordinates(extent, rings[i]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n */\nexport function extendXY(extent, x, y) {\n extent[0] = Math.min(extent[0], x);\n extent[1] = Math.min(extent[1], y);\n extent[2] = Math.max(extent[2], x);\n extent[3] = Math.max(extent[3], y);\n}\n/**\n * This function calls `callback` for each corner of the extent. If the\n * callback returns a truthy value the function returns that value\n * immediately. Otherwise the function returns `false`.\n * @param {Extent} extent Extent.\n * @param {function(import(\"./coordinate.js\").Coordinate): S} callback Callback.\n * @return {S|boolean} Value.\n * @template S\n */\nexport function forEachCorner(extent, callback) {\n var val;\n val = callback(getBottomLeft(extent));\n if (val) {\n return val;\n }\n val = callback(getBottomRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopLeft(extent));\n if (val) {\n return val;\n }\n return false;\n}\n/**\n * Get the size of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Area.\n * @api\n */\nexport function getArea(extent) {\n var area = 0;\n if (!isEmpty(extent)) {\n area = getWidth(extent) * getHeight(extent);\n }\n return area;\n}\n/**\n * Get the bottom left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom left coordinate.\n * @api\n */\nexport function getBottomLeft(extent) {\n return [extent[0], extent[1]];\n}\n/**\n * Get the bottom right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom right coordinate.\n * @api\n */\nexport function getBottomRight(extent) {\n return [extent[2], extent[1]];\n}\n/**\n * Get the center coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Center.\n * @api\n */\nexport function getCenter(extent) {\n return [(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2];\n}\n/**\n * Get a corner coordinate of an extent.\n * @param {Extent} extent Extent.\n * @param {Corner} corner Corner.\n * @return {import(\"./coordinate.js\").Coordinate} Corner coordinate.\n */\nexport function getCorner(extent, corner) {\n var coordinate;\n if (corner === Corner.BOTTOM_LEFT) {\n coordinate = getBottomLeft(extent);\n }\n else if (corner === Corner.BOTTOM_RIGHT) {\n coordinate = getBottomRight(extent);\n }\n else if (corner === Corner.TOP_LEFT) {\n coordinate = getTopLeft(extent);\n }\n else if (corner === Corner.TOP_RIGHT) {\n coordinate = getTopRight(extent);\n }\n else {\n assert(false, 13); // Invalid corner\n }\n return coordinate;\n}\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Enlarged area.\n */\nexport function getEnlargedArea(extent1, extent2) {\n var minX = Math.min(extent1[0], extent2[0]);\n var minY = Math.min(extent1[1], extent2[1]);\n var maxX = Math.max(extent1[2], extent2[2]);\n var maxY = Math.max(extent1[3], extent2[3]);\n return (maxX - minX) * (maxY - minY);\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @param {Extent=} opt_extent Destination extent.\n * @return {Extent} Extent.\n */\nexport function getForViewAndSize(center, resolution, rotation, size, opt_extent) {\n var dx = resolution * size[0] / 2;\n var dy = resolution * size[1] / 2;\n var cosRotation = Math.cos(rotation);\n var sinRotation = Math.sin(rotation);\n var xCos = dx * cosRotation;\n var xSin = dx * sinRotation;\n var yCos = dy * cosRotation;\n var ySin = dy * sinRotation;\n var x = center[0];\n var y = center[1];\n var x0 = x - xCos + ySin;\n var x1 = x - xCos - ySin;\n var x2 = x + xCos - ySin;\n var x3 = x + xCos + ySin;\n var y0 = y - xSin - yCos;\n var y1 = y - xSin + yCos;\n var y2 = y + xSin + yCos;\n var y3 = y + xSin - yCos;\n return createOrUpdate(Math.min(x0, x1, x2, x3), Math.min(y0, y1, y2, y3), Math.max(x0, x1, x2, x3), Math.max(y0, y1, y2, y3), opt_extent);\n}\n/**\n * Get the height of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Height.\n * @api\n */\nexport function getHeight(extent) {\n return extent[3] - extent[1];\n}\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Intersection area.\n */\nexport function getIntersectionArea(extent1, extent2) {\n var intersection = getIntersection(extent1, extent2);\n return getArea(intersection);\n}\n/**\n * Get the intersection of two extents.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {Extent=} opt_extent Optional extent to populate with intersection.\n * @return {Extent} Intersecting extent.\n * @api\n */\nexport function getIntersection(extent1, extent2, opt_extent) {\n var intersection = opt_extent ? opt_extent : createEmpty();\n if (intersects(extent1, extent2)) {\n if (extent1[0] > extent2[0]) {\n intersection[0] = extent1[0];\n }\n else {\n intersection[0] = extent2[0];\n }\n if (extent1[1] > extent2[1]) {\n intersection[1] = extent1[1];\n }\n else {\n intersection[1] = extent2[1];\n }\n if (extent1[2] < extent2[2]) {\n intersection[2] = extent1[2];\n }\n else {\n intersection[2] = extent2[2];\n }\n if (extent1[3] < extent2[3]) {\n intersection[3] = extent1[3];\n }\n else {\n intersection[3] = extent2[3];\n }\n }\n else {\n createOrUpdateEmpty(intersection);\n }\n return intersection;\n}\n/**\n * @param {Extent} extent Extent.\n * @return {number} Margin.\n */\nexport function getMargin(extent) {\n return getWidth(extent) + getHeight(extent);\n}\n/**\n * Get the size (width, height) of an extent.\n * @param {Extent} extent The extent.\n * @return {import(\"./size.js\").Size} The extent size.\n * @api\n */\nexport function getSize(extent) {\n return [extent[2] - extent[0], extent[3] - extent[1]];\n}\n/**\n * Get the top left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top left coordinate.\n * @api\n */\nexport function getTopLeft(extent) {\n return [extent[0], extent[3]];\n}\n/**\n * Get the top right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top right coordinate.\n * @api\n */\nexport function getTopRight(extent) {\n return [extent[2], extent[3]];\n}\n/**\n * Get the width of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Width.\n * @api\n */\nexport function getWidth(extent) {\n return extent[2] - extent[0];\n}\n/**\n * Determine if one extent intersects another.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent.\n * @return {boolean} The two extents intersect.\n * @api\n */\nexport function intersects(extent1, extent2) {\n return extent1[0] <= extent2[2] &&\n extent1[2] >= extent2[0] &&\n extent1[1] <= extent2[3] &&\n extent1[3] >= extent2[1];\n}\n/**\n * Determine if an extent is empty.\n * @param {Extent} extent Extent.\n * @return {boolean} Is empty.\n * @api\n */\nexport function isEmpty(extent) {\n return extent[2] < extent[0] || extent[3] < extent[1];\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function returnOrUpdate(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n }\n else {\n return extent;\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} value Value.\n */\nexport function scaleFromCenter(extent, value) {\n var deltaX = ((extent[2] - extent[0]) / 2) * (value - 1);\n var deltaY = ((extent[3] - extent[1]) / 2) * (value - 1);\n extent[0] -= deltaX;\n extent[2] += deltaX;\n extent[1] -= deltaY;\n extent[3] += deltaY;\n}\n/**\n * Determine if the segment between two coordinates intersects (crosses,\n * touches, or is contained by) the provided extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} start Segment start coordinate.\n * @param {import(\"./coordinate.js\").Coordinate} end Segment end coordinate.\n * @return {boolean} The segment intersects the extent.\n */\nexport function intersectsSegment(extent, start, end) {\n var intersects = false;\n var startRel = coordinateRelationship(extent, start);\n var endRel = coordinateRelationship(extent, end);\n if (startRel === Relationship.INTERSECTING ||\n endRel === Relationship.INTERSECTING) {\n intersects = true;\n }\n else {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var startX = start[0];\n var startY = start[1];\n var endX = end[0];\n var endY = end[1];\n var slope = (endY - startY) / (endX - startX);\n var x = void 0, y = void 0;\n if (!!(endRel & Relationship.ABOVE) &&\n !(startRel & Relationship.ABOVE)) {\n // potentially intersects top\n x = endX - ((endY - maxY) / slope);\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects && !!(endRel & Relationship.RIGHT) &&\n !(startRel & Relationship.RIGHT)) {\n // potentially intersects right\n y = endY - ((endX - maxX) * slope);\n intersects = y >= minY && y <= maxY;\n }\n if (!intersects && !!(endRel & Relationship.BELOW) &&\n !(startRel & Relationship.BELOW)) {\n // potentially intersects bottom\n x = endX - ((endY - minY) / slope);\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects && !!(endRel & Relationship.LEFT) &&\n !(startRel & Relationship.LEFT)) {\n // potentially intersects left\n y = endY - ((endX - minX) * slope);\n intersects = y >= minY && y <= maxY;\n }\n }\n return intersects;\n}\n/**\n * Apply a transform function to the extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./proj.js\").TransformFunction} transformFn Transform function.\n * Called with `[minX, minY, maxX, maxY]` extent coordinates.\n * @param {Extent=} opt_extent Destination extent.\n * @param {number=} opt_stops Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {Extent} Extent.\n * @api\n */\nexport function applyTransform(extent, transformFn, opt_extent, opt_stops) {\n var coordinates = [];\n if (opt_stops > 1) {\n var width = extent[2] - extent[0];\n var height = extent[3] - extent[1];\n for (var i = 0; i < opt_stops; ++i) {\n coordinates.push(extent[0] + width * i / opt_stops, extent[1], extent[2], extent[1] + height * i / opt_stops, extent[2] - width * i / opt_stops, extent[3], extent[0], extent[3] - height * i / opt_stops);\n }\n }\n else {\n coordinates = [\n extent[0], extent[1],\n extent[2], extent[1],\n extent[2], extent[3],\n extent[0], extent[3]\n ];\n }\n transformFn(coordinates, coordinates, 2);\n var xs = [];\n var ys = [];\n for (var i = 0, l = coordinates.length; i < l; i += 2) {\n xs.push(coordinates[i]);\n ys.push(coordinates[i + 1]);\n }\n return _boundingExtentXYs(xs, ys, opt_extent);\n}\n/**\n * Modifies the provided extent in-place to be within the real world\n * extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Extent} The extent within the real world extent.\n */\nexport function wrapX(extent, projection) {\n var projectionExtent = projection.getExtent();\n var center = getCenter(extent);\n if (projection.canWrapX() && (center[0] < projectionExtent[0] || center[0] >= projectionExtent[2])) {\n var worldWidth = getWidth(projectionExtent);\n var worldsAway = Math.floor((center[0] - projectionExtent[0]) / worldWidth);\n var offset = (worldsAway * worldWidth);\n extent[0] -= offset;\n extent[2] -= offset;\n }\n return extent;\n}\n//# sourceMappingURL=extent.js.map","/**\n * @module ol/geom/GeometryLayout\n */\n/**\n * The coordinate layout for geometries, indicating whether a 3rd or 4th z ('Z')\n * or measure ('M') coordinate is available. Supported values are `'XY'`,\n * `'XYZ'`, `'XYM'`, `'XYZM'`.\n * @enum {string}\n */\nexport default {\n XY: 'XY',\n XYZ: 'XYZ',\n XYM: 'XYM',\n XYZM: 'XYZM'\n};\n//# sourceMappingURL=GeometryLayout.js.map","/**\n * @module ol/geom/GeometryType\n */\n/**\n * The geometry type. One of `'Point'`, `'LineString'`, `'LinearRing'`,\n * `'Polygon'`, `'MultiPoint'`, `'MultiLineString'`, `'MultiPolygon'`,\n * `'GeometryCollection'`, `'Circle'`.\n * @enum {string}\n */\nexport default {\n POINT: 'Point',\n LINE_STRING: 'LineString',\n LINEAR_RING: 'LinearRing',\n POLYGON: 'Polygon',\n MULTI_POINT: 'MultiPoint',\n MULTI_LINE_STRING: 'MultiLineString',\n MULTI_POLYGON: 'MultiPolygon',\n GEOMETRY_COLLECTION: 'GeometryCollection',\n CIRCLE: 'Circle'\n};\n//# sourceMappingURL=GeometryType.js.map","/**\n * @module ol/geom/flat/transform\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=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function transform2D(flatCoordinates, offset, end, stride, transform, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var x = flatCoordinates[j];\n var 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 (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\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=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function rotate(flatCoordinates, offset, end, stride, angle, anchor, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n var anchorX = anchor[0];\n var anchorY = anchor[1];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var deltaX = flatCoordinates[j] - anchorX;\n var deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + deltaX * cos - deltaY * sin;\n dest[i++] = anchorY + deltaX * sin + deltaY * cos;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\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=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function scale(flatCoordinates, offset, end, stride, sx, sy, anchor, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var anchorX = anchor[0];\n var anchorY = anchor[1];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var deltaX = flatCoordinates[j] - anchorX;\n var deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + sx * deltaX;\n dest[i++] = anchorY + sy * deltaY;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\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=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function translate(flatCoordinates, offset, end, stride, deltaX, deltaY, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n dest[i++] = flatCoordinates[j] + deltaX;\n dest[i++] = flatCoordinates[j + 1] + deltaY;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n//# sourceMappingURL=transform.js.map","/**\n * @module ol/math\n */\n/**\n * Takes a number and clamps it to within the provided bounds.\n * @param {number} value The input number.\n * @param {number} min The minimum value to return.\n * @param {number} max The maximum value to return.\n * @return {number} The input number if it is within bounds, or the nearest\n * number within the bounds.\n */\nexport function clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n/**\n * Return the hyperbolic cosine of a given number. The method will use the\n * native `Math.cosh` function if it is available, otherwise the hyperbolic\n * cosine will be calculated via the reference implementation of the Mozilla\n * developer network.\n *\n * @param {number} x X.\n * @return {number} Hyperbolic cosine of x.\n */\nexport var cosh = (function () {\n // Wrapped in a iife, to save the overhead of checking for the native\n // implementation on every invocation.\n var cosh;\n if ('cosh' in Math) {\n // The environment supports the native Math.cosh function, use it…\n cosh = Math.cosh;\n }\n else {\n // … else, use the reference implementation of MDN:\n cosh = function (x) {\n var y = /** @type {Math} */ (Math).exp(x);\n return (y + 1 / y) / 2;\n };\n }\n return cosh;\n}());\n/**\n * Returns the square of the closest distance between the point (x, y) and the\n * line segment (x1, y1) to (x2, y2).\n * @param {number} x X.\n * @param {number} y Y.\n * @param {number} x1 X1.\n * @param {number} y1 Y1.\n * @param {number} x2 X2.\n * @param {number} y2 Y2.\n * @return {number} Squared distance.\n */\nexport function squaredSegmentDistance(x, y, x1, y1, x2, y2) {\n var dx = x2 - x1;\n var dy = y2 - y1;\n if (dx !== 0 || dy !== 0) {\n var t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n x1 = x2;\n y1 = y2;\n }\n else if (t > 0) {\n x1 += dx * t;\n y1 += dy * t;\n }\n }\n return squaredDistance(x, y, x1, y1);\n}\n/**\n * Returns the square of the distance between the points (x1, y1) and (x2, y2).\n * @param {number} x1 X1.\n * @param {number} y1 Y1.\n * @param {number} x2 X2.\n * @param {number} y2 Y2.\n * @return {number} Squared distance.\n */\nexport function squaredDistance(x1, y1, x2, y2) {\n var dx = x2 - x1;\n var dy = y2 - y1;\n return dx * dx + dy * dy;\n}\n/**\n * Solves system of linear equations using Gaussian elimination method.\n *\n * @param {Array>} mat Augmented matrix (n x n + 1 column)\n * in row-major order.\n * @return {Array} The resulting vector.\n */\nexport function solveLinearSystem(mat) {\n var n = mat.length;\n for (var i = 0; i < n; i++) {\n // Find max in the i-th column (ignoring i - 1 first rows)\n var maxRow = i;\n var maxEl = Math.abs(mat[i][i]);\n for (var r = i + 1; r < n; r++) {\n var absValue = Math.abs(mat[r][i]);\n if (absValue > maxEl) {\n maxEl = absValue;\n maxRow = r;\n }\n }\n if (maxEl === 0) {\n return null; // matrix is singular\n }\n // Swap max row with i-th (current) row\n var tmp = mat[maxRow];\n mat[maxRow] = mat[i];\n mat[i] = tmp;\n // Subtract the i-th row to make all the remaining rows 0 in the i-th column\n for (var j = i + 1; j < n; j++) {\n var coef = -mat[j][i] / mat[i][i];\n for (var k = i; k < n + 1; k++) {\n if (i == k) {\n mat[j][k] = 0;\n }\n else {\n mat[j][k] += coef * mat[i][k];\n }\n }\n }\n }\n // Solve Ax=b for upper triangular matrix A (mat)\n var x = new Array(n);\n for (var l = n - 1; l >= 0; l--) {\n x[l] = mat[l][n] / mat[l][l];\n for (var m = l - 1; m >= 0; m--) {\n mat[m][n] -= mat[m][l] * x[l];\n }\n }\n return x;\n}\n/**\n * Converts radians to to degrees.\n *\n * @param {number} angleInRadians Angle in radians.\n * @return {number} Angle in degrees.\n */\nexport function toDegrees(angleInRadians) {\n return angleInRadians * 180 / Math.PI;\n}\n/**\n * Converts degrees to radians.\n *\n * @param {number} angleInDegrees Angle in degrees.\n * @return {number} Angle in radians.\n */\nexport function toRadians(angleInDegrees) {\n return angleInDegrees * Math.PI / 180;\n}\n/**\n * Returns the modulo of a / b, depending on the sign of b.\n *\n * @param {number} a Dividend.\n * @param {number} b Divisor.\n * @return {number} Modulo.\n */\nexport function modulo(a, b) {\n var r = a % b;\n return r * b < 0 ? r + b : r;\n}\n/**\n * Calculates the linearly interpolated value of x between a and b.\n *\n * @param {number} a Number\n * @param {number} b Number\n * @param {number} x Value to be interpolated.\n * @return {number} Interpolated value.\n */\nexport function lerp(a, b, x) {\n return a + x * (b - a);\n}\n//# sourceMappingURL=math.js.map","/**\n * @module ol/sphere\n */\nimport { toRadians, toDegrees } from './math.js';\nimport GeometryType from './geom/GeometryType.js';\n/**\n * Object literal with options for the {@link getLength} or {@link getArea}\n * functions.\n * @typedef {Object} SphereMetricOptions\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857']\n * Projection of the geometry. By default, the geometry is assumed to be in\n * Web Mercator.\n * @property {number} [radius=6371008.8] Sphere radius. By default, the\n * [mean Earth radius](https://en.wikipedia.org/wiki/Earth_radius#Mean_radius)\n * for the WGS84 ellipsoid is used.\n */\n/**\n * The mean Earth radius (1/3 * (2a + b)) for the WGS84 ellipsoid.\n * https://en.wikipedia.org/wiki/Earth_radius#Mean_radius\n * @type {number}\n */\nexport var DEFAULT_RADIUS = 6371008.8;\n/**\n * Get the great circle distance (in meters) between two geographic coordinates.\n * @param {Array} c1 Starting coordinate.\n * @param {Array} c2 Ending coordinate.\n * @param {number=} opt_radius The sphere radius to use. Defaults to the Earth's\n * mean radius using the WGS84 ellipsoid.\n * @return {number} The great circle distance between the points (in meters).\n * @api\n */\nexport function getDistance(c1, c2, opt_radius) {\n var radius = opt_radius || DEFAULT_RADIUS;\n var lat1 = toRadians(c1[1]);\n var lat2 = toRadians(c2[1]);\n var deltaLatBy2 = (lat2 - lat1) / 2;\n var deltaLonBy2 = toRadians(c2[0] - c1[0]) / 2;\n var a = Math.sin(deltaLatBy2) * Math.sin(deltaLatBy2) +\n Math.sin(deltaLonBy2) * Math.sin(deltaLonBy2) *\n Math.cos(lat1) * Math.cos(lat2);\n return 2 * radius * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n}\n/**\n * Get the cumulative great circle length of linestring coordinates (geographic).\n * @param {Array} coordinates Linestring coordinates.\n * @param {number} radius The sphere radius to use.\n * @return {number} The length (in meters).\n */\nfunction getLengthInternal(coordinates, radius) {\n var length = 0;\n for (var i = 0, ii = coordinates.length; i < ii - 1; ++i) {\n length += getDistance(coordinates[i], coordinates[i + 1], radius);\n }\n return length;\n}\n/**\n * Get the spherical length of a geometry. This length is the sum of the\n * great circle distances between coordinates. For polygons, the length is\n * the sum of all rings. For points, the length is zero. For multi-part\n * geometries, the length is the sum of the length of each part.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions=} opt_options Options for the\n * length calculation. By default, geometries are assumed to be in 'EPSG:3857'.\n * You can change this by providing a `projection` option.\n * @return {number} The spherical length (in meters).\n * @api\n */\nexport function getLength(geometry, opt_options) {\n var options = opt_options || {};\n var radius = options.radius || DEFAULT_RADIUS;\n var projection = options.projection || 'EPSG:3857';\n var type = geometry.getType();\n if (type !== GeometryType.GEOMETRY_COLLECTION) {\n geometry = geometry.clone().transform(projection, 'EPSG:4326');\n }\n var length = 0;\n var coordinates, coords, i, ii, j, jj;\n switch (type) {\n case GeometryType.POINT:\n case GeometryType.MULTI_POINT: {\n break;\n }\n case GeometryType.LINE_STRING:\n case GeometryType.LINEAR_RING: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n length = getLengthInternal(coordinates, radius);\n break;\n }\n case GeometryType.MULTI_LINE_STRING:\n case GeometryType.POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n length += getLengthInternal(coordinates[i], radius);\n }\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n coords = coordinates[i];\n for (j = 0, jj = coords.length; j < jj; ++j) {\n length += getLengthInternal(coords[j], radius);\n }\n }\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n var geometries = /** @type {import(\"./geom/GeometryCollection.js\").default} */ (geometry).getGeometries();\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n length += getLength(geometries[i], opt_options);\n }\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return length;\n}\n/**\n * Returns the spherical area for a list of coordinates.\n *\n * [Reference](https://trs-new.jpl.nasa.gov/handle/2014/40409)\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for\n * Polygons on a Sphere\", JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007\n *\n * @param {Array} coordinates List of coordinates of a linear\n * ring. If the ring is oriented clockwise, the area will be positive,\n * otherwise it will be negative.\n * @param {number} radius The sphere radius.\n * @return {number} Area (in square meters).\n */\nfunction getAreaInternal(coordinates, radius) {\n var area = 0;\n var len = coordinates.length;\n var x1 = coordinates[len - 1][0];\n var y1 = coordinates[len - 1][1];\n for (var i = 0; i < len; i++) {\n var x2 = coordinates[i][0];\n var y2 = coordinates[i][1];\n area += toRadians(x2 - x1) *\n (2 + Math.sin(toRadians(y1)) +\n Math.sin(toRadians(y2)));\n x1 = x2;\n y1 = y2;\n }\n return area * radius * radius / 2.0;\n}\n/**\n * Get the spherical area of a geometry. This is the area (in meters) assuming\n * that polygon edges are segments of great circles on a sphere.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions=} opt_options Options for the area\n * calculation. By default, geometries are assumed to be in 'EPSG:3857'.\n * You can change this by providing a `projection` option.\n * @return {number} The spherical area (in square meters).\n * @api\n */\nexport function getArea(geometry, opt_options) {\n var options = opt_options || {};\n var radius = options.radius || DEFAULT_RADIUS;\n var projection = options.projection || 'EPSG:3857';\n var type = geometry.getType();\n if (type !== GeometryType.GEOMETRY_COLLECTION) {\n geometry = geometry.clone().transform(projection, 'EPSG:4326');\n }\n var area = 0;\n var coordinates, coords, i, ii, j, jj;\n switch (type) {\n case GeometryType.POINT:\n case GeometryType.MULTI_POINT:\n case GeometryType.LINE_STRING:\n case GeometryType.MULTI_LINE_STRING:\n case GeometryType.LINEAR_RING: {\n break;\n }\n case GeometryType.POLYGON: {\n coordinates = /** @type {import(\"./geom/Polygon.js\").default} */ (geometry).getCoordinates();\n area = Math.abs(getAreaInternal(coordinates[0], radius));\n for (i = 1, ii = coordinates.length; i < ii; ++i) {\n area -= Math.abs(getAreaInternal(coordinates[i], radius));\n }\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n coords = coordinates[i];\n area += Math.abs(getAreaInternal(coords[0], radius));\n for (j = 1, jj = coords.length; j < jj; ++j) {\n area -= Math.abs(getAreaInternal(coords[j], radius));\n }\n }\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n var geometries = /** @type {import(\"./geom/GeometryCollection.js\").default} */ (geometry).getGeometries();\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n area += getArea(geometries[i], opt_options);\n }\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return area;\n}\n/**\n * Returns the coordinate at the given distance and bearing from `c1`.\n *\n * @param {import(\"./coordinate.js\").Coordinate} c1 The origin point (`[lon, lat]` in degrees).\n * @param {number} distance The great-circle distance between the origin\n * point and the target point.\n * @param {number} bearing The bearing (in radians).\n * @param {number=} opt_radius The sphere radius to use. Defaults to the Earth's\n * mean radius using the WGS84 ellipsoid.\n * @return {import(\"./coordinate.js\").Coordinate} The target point.\n */\nexport function offset(c1, distance, bearing, opt_radius) {\n var radius = opt_radius || DEFAULT_RADIUS;\n var lat1 = toRadians(c1[1]);\n var lon1 = toRadians(c1[0]);\n var dByR = distance / radius;\n var lat = Math.asin(Math.sin(lat1) * Math.cos(dByR) +\n Math.cos(lat1) * Math.sin(dByR) * Math.cos(bearing));\n var lon = lon1 + Math.atan2(Math.sin(bearing) * Math.sin(dByR) * Math.cos(lat1), Math.cos(dByR) - Math.sin(lat1) * Math.sin(lat));\n return [toDegrees(lon), toDegrees(lat)];\n}\n//# sourceMappingURL=sphere.js.map","/**\n * @module ol/proj/Units\n */\n/**\n * Projection units: `'degrees'`, `'ft'`, `'m'`, `'pixels'`, `'tile-pixels'` or\n * `'us-ft'`.\n * @enum {string}\n */\nvar Units = {\n DEGREES: 'degrees',\n FEET: 'ft',\n METERS: 'm',\n PIXELS: 'pixels',\n TILE_PIXELS: 'tile-pixels',\n USFEET: 'us-ft'\n};\n/**\n * Meters per unit lookup table.\n * @const\n * @type {Object}\n * @api\n */\nexport var METERS_PER_UNIT = {};\n// use the radius of the Normal sphere\nMETERS_PER_UNIT[Units.DEGREES] = 2 * Math.PI * 6370997 / 360;\nMETERS_PER_UNIT[Units.FEET] = 0.3048;\nMETERS_PER_UNIT[Units.METERS] = 1;\nMETERS_PER_UNIT[Units.USFEET] = 1200 / 3937;\nexport default Units;\n//# sourceMappingURL=Units.js.map","/**\n * @module ol/proj/Projection\n */\nimport { METERS_PER_UNIT } from './Units.js';\n/**\n * @typedef {Object} Options\n * @property {string} code The SRS identifier code, e.g. `EPSG:4326`.\n * @property {import(\"./Units.js\").default|string} [units] Units. Required unless a\n * proj4 projection is defined for `code`.\n * @property {import(\"../extent.js\").Extent} [extent] The validity extent for the SRS.\n * @property {string} [axisOrientation='enu'] The axis orientation as specified in Proj4.\n * @property {boolean} [global=false] Whether the projection is valid for the whole globe.\n * @property {number} [metersPerUnit] The meters per unit for the SRS.\n * If not provided, the `units` are used to get the meters per unit from the {@link module:ol/proj/Units~METERS_PER_UNIT}\n * lookup table.\n * @property {import(\"../extent.js\").Extent} [worldExtent] The world extent for the SRS.\n * @property {function(number, import(\"../coordinate.js\").Coordinate):number} [getPointResolution]\n * Function to determine resolution at a point. The function is called with a\n * `{number}` view resolution and an `{import(\"../coordinate.js\").Coordinate}` as arguments, and returns\n * the `{number}` resolution in projection units at the passed coordinate. If this is `undefined`,\n * the default {@link module:ol/proj#getPointResolution} function will be used.\n */\n/**\n * @classdesc\n * Projection definition class. One of these is created for each projection\n * supported in the application and stored in the {@link module:ol/proj} namespace.\n * You can use these in applications, but this is not required, as API params\n * and options use {@link module:ol/proj~ProjectionLike} which means the simple string\n * code will suffice.\n *\n * You can use {@link module:ol/proj~get} to retrieve the object for a particular\n * projection.\n *\n * The library includes definitions for `EPSG:4326` and `EPSG:3857`, together\n * with the following aliases:\n * * `EPSG:4326`: CRS:84, urn:ogc:def:crs:EPSG:6.6:4326,\n * urn:ogc:def:crs:OGC:1.3:CRS84, urn:ogc:def:crs:OGC:2:84,\n * http://www.opengis.net/gml/srs/epsg.xml#4326,\n * urn:x-ogc:def:crs:EPSG:4326\n * * `EPSG:3857`: EPSG:102100, EPSG:102113, EPSG:900913,\n * urn:ogc:def:crs:EPSG:6.18:3:3857,\n * http://www.opengis.net/gml/srs/epsg.xml#3857\n *\n * If you use [proj4js](https://github.com/proj4js/proj4js), aliases can\n * be added using `proj4.defs()`. After all required projection definitions are\n * added, call the {@link module:ol/proj/proj4~register} function.\n *\n * @api\n */\nvar Projection = /** @class */ (function () {\n /**\n * @param {Options} options Projection options.\n */\n function Projection(options) {\n /**\n * @private\n * @type {string}\n */\n this.code_ = options.code;\n /**\n * Units of projected coordinates. When set to `TILE_PIXELS`, a\n * `this.extent_` and `this.worldExtent_` must be configured properly for each\n * tile.\n * @private\n * @type {import(\"./Units.js\").default}\n */\n this.units_ = /** @type {import(\"./Units.js\").default} */ (options.units);\n /**\n * Validity extent of the projection in projected coordinates. For projections\n * with `TILE_PIXELS` units, this is the extent of the tile in\n * tile pixel space.\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.extent_ = options.extent !== undefined ? options.extent : null;\n /**\n * Extent of the world in EPSG:4326. For projections with\n * `TILE_PIXELS` units, this is the extent of the tile in\n * projected coordinate space.\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.worldExtent_ = options.worldExtent !== undefined ?\n options.worldExtent : null;\n /**\n * @private\n * @type {string}\n */\n this.axisOrientation_ = options.axisOrientation !== undefined ?\n options.axisOrientation : 'enu';\n /**\n * @private\n * @type {boolean}\n */\n this.global_ = options.global !== undefined ? options.global : false;\n /**\n * @private\n * @type {boolean}\n */\n this.canWrapX_ = !!(this.global_ && this.extent_);\n /**\n * @private\n * @type {function(number, import(\"../coordinate.js\").Coordinate):number|undefined}\n */\n this.getPointResolutionFunc_ = options.getPointResolution;\n /**\n * @private\n * @type {import(\"../tilegrid/TileGrid.js\").default}\n */\n this.defaultTileGrid_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n this.metersPerUnit_ = options.metersPerUnit;\n }\n /**\n * @return {boolean} The projection is suitable for wrapping the x-axis\n */\n Projection.prototype.canWrapX = function () {\n return this.canWrapX_;\n };\n /**\n * Get the code for this projection, e.g. 'EPSG:4326'.\n * @return {string} Code.\n * @api\n */\n Projection.prototype.getCode = function () {\n return this.code_;\n };\n /**\n * Get the validity extent for this projection.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n Projection.prototype.getExtent = function () {\n return this.extent_;\n };\n /**\n * Get the units of this projection.\n * @return {import(\"./Units.js\").default} Units.\n * @api\n */\n Projection.prototype.getUnits = function () {\n return this.units_;\n };\n /**\n * Get the amount of meters per unit of this projection. If the projection is\n * not configured with `metersPerUnit` or a units identifier, the return is\n * `undefined`.\n * @return {number|undefined} Meters.\n * @api\n */\n Projection.prototype.getMetersPerUnit = function () {\n return this.metersPerUnit_ || METERS_PER_UNIT[this.units_];\n };\n /**\n * Get the world extent for this projection.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n Projection.prototype.getWorldExtent = function () {\n return this.worldExtent_;\n };\n /**\n * Get the axis orientation of this projection.\n * Example values are:\n * enu - the default easting, northing, elevation.\n * neu - northing, easting, up - useful for \"lat/long\" geographic coordinates,\n * or south orientated transverse mercator.\n * wnu - westing, northing, up - some planetary coordinate systems have\n * \"west positive\" coordinate systems\n * @return {string} Axis orientation.\n * @api\n */\n Projection.prototype.getAxisOrientation = function () {\n return this.axisOrientation_;\n };\n /**\n * Is this projection a global projection which spans the whole world?\n * @return {boolean} Whether the projection is global.\n * @api\n */\n Projection.prototype.isGlobal = function () {\n return this.global_;\n };\n /**\n * Set if the projection is a global projection which spans the whole world\n * @param {boolean} global Whether the projection is global.\n * @api\n */\n Projection.prototype.setGlobal = function (global) {\n this.global_ = global;\n this.canWrapX_ = !!(global && this.extent_);\n };\n /**\n * @return {import(\"../tilegrid/TileGrid.js\").default} The default tile grid.\n */\n Projection.prototype.getDefaultTileGrid = function () {\n return this.defaultTileGrid_;\n };\n /**\n * @param {import(\"../tilegrid/TileGrid.js\").default} tileGrid The default tile grid.\n */\n Projection.prototype.setDefaultTileGrid = function (tileGrid) {\n this.defaultTileGrid_ = tileGrid;\n };\n /**\n * Set the validity extent for this projection.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n Projection.prototype.setExtent = function (extent) {\n this.extent_ = extent;\n this.canWrapX_ = !!(this.global_ && extent);\n };\n /**\n * Set the world extent for this projection.\n * @param {import(\"../extent.js\").Extent} worldExtent World extent\n * [minlon, minlat, maxlon, maxlat].\n * @api\n */\n Projection.prototype.setWorldExtent = function (worldExtent) {\n this.worldExtent_ = worldExtent;\n };\n /**\n * Set the getPointResolution function (see {@link module:ol/proj~getPointResolution}\n * for this projection.\n * @param {function(number, import(\"../coordinate.js\").Coordinate):number} func Function\n * @api\n */\n Projection.prototype.setGetPointResolution = function (func) {\n this.getPointResolutionFunc_ = func;\n };\n /**\n * Get the custom point resolution function for this projection (if set).\n * @return {function(number, import(\"../coordinate.js\").Coordinate):number|undefined} The custom point\n * resolution function (if set).\n */\n Projection.prototype.getPointResolutionFunc = function () {\n return this.getPointResolutionFunc_;\n };\n return Projection;\n}());\nexport default Projection;\n//# sourceMappingURL=Projection.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/proj/epsg3857\n */\nimport { cosh } from '../math.js';\nimport Projection from './Projection.js';\nimport Units from './Units.js';\n/**\n * Radius of WGS84 sphere\n *\n * @const\n * @type {number}\n */\nexport var RADIUS = 6378137;\n/**\n * @const\n * @type {number}\n */\nexport var HALF_SIZE = Math.PI * RADIUS;\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport var EXTENT = [\n -HALF_SIZE, -HALF_SIZE,\n HALF_SIZE, HALF_SIZE\n];\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport var WORLD_EXTENT = [-180, -85, 180, 85];\n/**\n * @classdesc\n * Projection object for web/spherical Mercator (EPSG:3857).\n */\nvar EPSG3857Projection = /** @class */ (function (_super) {\n __extends(EPSG3857Projection, _super);\n /**\n * @param {string} code Code.\n */\n function EPSG3857Projection(code) {\n return _super.call(this, {\n code: code,\n units: Units.METERS,\n extent: EXTENT,\n global: true,\n worldExtent: WORLD_EXTENT,\n getPointResolution: function (resolution, point) {\n return resolution / cosh(point[1] / RADIUS);\n }\n }) || this;\n }\n return EPSG3857Projection;\n}(Projection));\n/**\n * Projections equal to EPSG:3857.\n *\n * @const\n * @type {Array}\n */\nexport var PROJECTIONS = [\n new EPSG3857Projection('EPSG:3857'),\n new EPSG3857Projection('EPSG:102100'),\n new EPSG3857Projection('EPSG:102113'),\n new EPSG3857Projection('EPSG:900913'),\n new EPSG3857Projection('urn:ogc:def:crs:EPSG:6.18:3:3857'),\n new EPSG3857Projection('urn:ogc:def:crs:EPSG::3857'),\n new EPSG3857Projection('http://www.opengis.net/gml/srs/epsg.xml#3857')\n];\n/**\n * Transformation from EPSG:4326 to EPSG:3857.\n *\n * @param {Array} input Input array of coordinate values.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension (default is `2`).\n * @return {Array} Output array of coordinate values.\n */\nexport function fromEPSG4326(input, opt_output, opt_dimension) {\n var length = input.length;\n var dimension = opt_dimension > 1 ? opt_dimension : 2;\n var output = opt_output;\n if (output === undefined) {\n if (dimension > 2) {\n // preserve values beyond second dimension\n output = input.slice();\n }\n else {\n output = new Array(length);\n }\n }\n var halfSize = HALF_SIZE;\n for (var i = 0; i < length; i += dimension) {\n output[i] = halfSize * input[i] / 180;\n var y = RADIUS *\n Math.log(Math.tan(Math.PI * (+input[i + 1] + 90) / 360));\n if (y > halfSize) {\n y = halfSize;\n }\n else if (y < -halfSize) {\n y = -halfSize;\n }\n output[i + 1] = y;\n }\n return output;\n}\n/**\n * Transformation from EPSG:3857 to EPSG:4326.\n *\n * @param {Array} input Input array of coordinate values.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension (default is `2`).\n * @return {Array} Output array of coordinate values.\n */\nexport function toEPSG4326(input, opt_output, opt_dimension) {\n var length = input.length;\n var dimension = opt_dimension > 1 ? opt_dimension : 2;\n var output = opt_output;\n if (output === undefined) {\n if (dimension > 2) {\n // preserve values beyond second dimension\n output = input.slice();\n }\n else {\n output = new Array(length);\n }\n }\n for (var i = 0; i < length; i += dimension) {\n output[i] = 180 * input[i] / HALF_SIZE;\n output[i + 1] = 360 * Math.atan(Math.exp(input[i + 1] / RADIUS)) / Math.PI - 90;\n }\n return output;\n}\n//# sourceMappingURL=epsg3857.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/proj/epsg4326\n */\nimport Projection from './Projection.js';\nimport Units from './Units.js';\n/**\n * Semi-major radius of the WGS84 ellipsoid.\n *\n * @const\n * @type {number}\n */\nexport var RADIUS = 6378137;\n/**\n * Extent of the EPSG:4326 projection which is the whole world.\n *\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport var EXTENT = [-180, -90, 180, 90];\n/**\n * @const\n * @type {number}\n */\nexport var METERS_PER_UNIT = Math.PI * RADIUS / 180;\n/**\n * @classdesc\n * Projection object for WGS84 geographic coordinates (EPSG:4326).\n *\n * Note that OpenLayers does not strictly comply with the EPSG definition.\n * The EPSG registry defines 4326 as a CRS for Latitude,Longitude (y,x).\n * OpenLayers treats EPSG:4326 as a pseudo-projection, with x,y coordinates.\n */\nvar EPSG4326Projection = /** @class */ (function (_super) {\n __extends(EPSG4326Projection, _super);\n /**\n * @param {string} code Code.\n * @param {string=} opt_axisOrientation Axis orientation.\n */\n function EPSG4326Projection(code, opt_axisOrientation) {\n return _super.call(this, {\n code: code,\n units: Units.DEGREES,\n extent: EXTENT,\n axisOrientation: opt_axisOrientation,\n global: true,\n metersPerUnit: METERS_PER_UNIT,\n worldExtent: EXTENT\n }) || this;\n }\n return EPSG4326Projection;\n}(Projection));\n/**\n * Projections equal to EPSG:4326.\n *\n * @const\n * @type {Array}\n */\nexport var PROJECTIONS = [\n new EPSG4326Projection('CRS:84'),\n new EPSG4326Projection('EPSG:4326', 'neu'),\n new EPSG4326Projection('urn:ogc:def:crs:EPSG::4326', 'neu'),\n new EPSG4326Projection('urn:ogc:def:crs:EPSG:6.6:4326', 'neu'),\n new EPSG4326Projection('urn:ogc:def:crs:OGC:1.3:CRS84'),\n new EPSG4326Projection('urn:ogc:def:crs:OGC:2:84'),\n new EPSG4326Projection('http://www.opengis.net/gml/srs/epsg.xml#4326', 'neu'),\n new EPSG4326Projection('urn:x-ogc:def:crs:EPSG:4326', 'neu')\n];\n//# sourceMappingURL=epsg4326.js.map","/**\n * @module ol/proj/transforms\n */\nimport { isEmpty } from '../obj.js';\n/**\n * @private\n * @type {!Object>}\n */\nvar transforms = {};\n/**\n * Clear the transform cache.\n */\nexport function clear() {\n transforms = {};\n}\n/**\n * Registers a conversion function to convert coordinates from the source\n * projection to the destination projection.\n *\n * @param {import(\"./Projection.js\").default} source Source.\n * @param {import(\"./Projection.js\").default} destination Destination.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform.\n */\nexport function add(source, destination, transformFn) {\n var sourceCode = source.getCode();\n var destinationCode = destination.getCode();\n if (!(sourceCode in transforms)) {\n transforms[sourceCode] = {};\n }\n transforms[sourceCode][destinationCode] = transformFn;\n}\n/**\n * Unregisters the conversion function to convert coordinates from the source\n * projection to the destination projection. This method is used to clean up\n * cached transforms during testing.\n *\n * @param {import(\"./Projection.js\").default} source Source projection.\n * @param {import(\"./Projection.js\").default} destination Destination projection.\n * @return {import(\"../proj.js\").TransformFunction} transformFn The unregistered transform.\n */\nexport function remove(source, destination) {\n var sourceCode = source.getCode();\n var destinationCode = destination.getCode();\n var transform = transforms[sourceCode][destinationCode];\n delete transforms[sourceCode][destinationCode];\n if (isEmpty(transforms[sourceCode])) {\n delete transforms[sourceCode];\n }\n return transform;\n}\n/**\n * Get a transform given a source code and a destination code.\n * @param {string} sourceCode The code for the source projection.\n * @param {string} destinationCode The code for the destination projection.\n * @return {import(\"../proj.js\").TransformFunction|undefined} The transform function (if found).\n */\nexport function get(sourceCode, destinationCode) {\n var transform;\n if (sourceCode in transforms && destinationCode in transforms[sourceCode]) {\n transform = transforms[sourceCode][destinationCode];\n }\n return transform;\n}\n//# sourceMappingURL=transforms.js.map","/**\n * @module ol/proj/projections\n */\n/**\n * @type {Object}\n */\nvar cache = {};\n/**\n * Clear the projections cache.\n */\nexport function clear() {\n cache = {};\n}\n/**\n * Get a cached projection by code.\n * @param {string} code The code for the projection.\n * @return {import(\"./Projection.js\").default} The projection (if cached).\n */\nexport function get(code) {\n return cache[code] || null;\n}\n/**\n * Add a projection to the cache.\n * @param {string} code The projection code.\n * @param {import(\"./Projection.js\").default} projection The projection to cache.\n */\nexport function add(code, projection) {\n cache[code] = projection;\n}\n//# sourceMappingURL=projections.js.map","/**\n * @module ol/proj\n */\n/**\n * The ol/proj module stores:\n * * a list of {@link module:ol/proj/Projection}\n * objects, one for each projection supported by the application\n * * a list of transform functions needed to convert coordinates in one projection\n * into another.\n *\n * The static functions are the methods used to maintain these.\n * Each transform function can handle not only simple coordinate pairs, but also\n * large arrays of coordinates such as vector geometries.\n *\n * When loaded, the library adds projection objects for EPSG:4326 (WGS84\n * geographic coordinates) and EPSG:3857 (Web or Spherical Mercator, as used\n * for example by Bing Maps or OpenStreetMap), together with the relevant\n * transform functions.\n *\n * Additional transforms may be added by using the http://proj4js.org/\n * library (version 2.2 or later). You can use the full build supplied by\n * Proj4js, or create a custom build to support those projections you need; see\n * the Proj4js website for how to do this. You also need the Proj4js definitions\n * for the required projections. These definitions can be obtained from\n * https://epsg.io/, and are a JS function, so can be loaded in a script\n * tag (as in the examples) or pasted into your application.\n *\n * After all required projection definitions are added to proj4's registry (by\n * using `proj4.defs()`), simply call `register(proj4)` from the `ol/proj/proj4`\n * package. Existing transforms are not changed by this function. See\n * examples/wms-image-custom-proj for an example of this.\n *\n * Additional projection definitions can be registered with `proj4.defs()` any\n * time. Just make sure to call `register(proj4)` again; for example, with user-supplied data where you don't\n * know in advance what projections are needed, you can initially load minimal\n * support and then load whichever are requested.\n *\n * Note that Proj4js does not support projection extents. If you want to add\n * one for creating default tile grids, you can add it after the Projection\n * object has been created with `setExtent`, for example,\n * `get('EPSG:1234').setExtent(extent)`.\n *\n * In addition to Proj4js support, any transform functions can be added with\n * {@link module:ol/proj~addCoordinateTransforms}. To use this, you must first create\n * a {@link module:ol/proj/Projection} object for the new projection and add it with\n * {@link module:ol/proj~addProjection}. You can then add the forward and inverse\n * functions with {@link module:ol/proj~addCoordinateTransforms}. See\n * examples/wms-custom-proj for an example of this.\n *\n * Note that if no transforms are needed and you only need to define the\n * projection, just add a {@link module:ol/proj/Projection} with\n * {@link module:ol/proj~addProjection}. See examples/wms-no-proj for an example of\n * this.\n */\nimport { getDistance } from './sphere.js';\nimport { applyTransform } from './extent.js';\nimport { modulo } from './math.js';\nimport { toEPSG4326, fromEPSG4326, PROJECTIONS as EPSG3857_PROJECTIONS } from './proj/epsg3857.js';\nimport { PROJECTIONS as EPSG4326_PROJECTIONS } from './proj/epsg4326.js';\nimport Projection from './proj/Projection.js';\nimport Units, { METERS_PER_UNIT } from './proj/Units.js';\nimport { add as addTransformFunc, clear as clearTransformFuncs, get as getTransformFunc } from './proj/transforms.js';\nimport { add as addProj, clear as clearProj, get as getProj } from './proj/projections.js';\n/**\n * A projection as {@link module:ol/proj/Projection}, SRS identifier\n * string or undefined.\n * @typedef {Projection|string|undefined} ProjectionLike\n * @api\n */\n/**\n * A transform function accepts an array of input coordinate values, an optional\n * output array, and an optional dimension (default should be 2). The function\n * transforms the input coordinate values, populates the output array, and\n * returns the output array.\n *\n * @typedef {function(Array, Array=, number=): Array} TransformFunction\n * @api\n */\nexport { METERS_PER_UNIT };\nexport { Projection };\n/**\n * @param {Array} input Input coordinate array.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension.\n * @return {Array} Output coordinate array (new array, same coordinate\n * values).\n */\nexport function cloneTransform(input, opt_output, opt_dimension) {\n var output;\n if (opt_output !== undefined) {\n for (var i = 0, ii = input.length; i < ii; ++i) {\n opt_output[i] = input[i];\n }\n output = opt_output;\n }\n else {\n output = input.slice();\n }\n return output;\n}\n/**\n * @param {Array} input Input coordinate array.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension.\n * @return {Array} Input coordinate array (same array as input).\n */\nexport function identityTransform(input, opt_output, opt_dimension) {\n if (opt_output !== undefined && input !== opt_output) {\n for (var i = 0, ii = input.length; i < ii; ++i) {\n opt_output[i] = input[i];\n }\n input = opt_output;\n }\n return input;\n}\n/**\n * Add a Projection object to the list of supported projections that can be\n * looked up by their code.\n *\n * @param {Projection} projection Projection instance.\n * @api\n */\nexport function addProjection(projection) {\n addProj(projection.getCode(), projection);\n addTransformFunc(projection, projection, cloneTransform);\n}\n/**\n * @param {Array} projections Projections.\n */\nexport function addProjections(projections) {\n projections.forEach(addProjection);\n}\n/**\n * Fetches a Projection object for the code specified.\n *\n * @param {ProjectionLike} projectionLike Either a code string which is\n * a combination of authority and identifier such as \"EPSG:4326\", or an\n * existing projection object, or undefined.\n * @return {Projection} Projection object, or null if not in list.\n * @api\n */\nexport function get(projectionLike) {\n return typeof projectionLike === 'string' ?\n getProj(/** @type {string} */ (projectionLike)) :\n ( /** @type {Projection} */(projectionLike) || null);\n}\n/**\n * Get the resolution of the point in degrees or distance units.\n * For projections with degrees as the unit this will simply return the\n * provided resolution. For other projections the point resolution is\n * by default estimated by transforming the 'point' pixel to EPSG:4326,\n * measuring its width and height on the normal sphere,\n * and taking the average of the width and height.\n * A custom function can be provided for a specific projection, either\n * by setting the `getPointResolution` option in the\n * {@link module:ol/proj/Projection~Projection} constructor or by using\n * {@link module:ol/proj/Projection~Projection#setGetPointResolution} to change an existing\n * projection object.\n * @param {ProjectionLike} projection The projection.\n * @param {number} resolution Nominal resolution in projection units.\n * @param {import(\"./coordinate.js\").Coordinate} point Point to find adjusted resolution at.\n * @param {Units=} opt_units Units to get the point resolution in.\n * Default is the projection's units.\n * @return {number} Point resolution.\n * @api\n */\nexport function getPointResolution(projection, resolution, point, opt_units) {\n projection = get(projection);\n var pointResolution;\n var getter = projection.getPointResolutionFunc();\n if (getter) {\n pointResolution = getter(resolution, point);\n if (opt_units && opt_units !== projection.getUnits()) {\n var metersPerUnit = projection.getMetersPerUnit();\n if (metersPerUnit) {\n pointResolution = pointResolution * metersPerUnit / METERS_PER_UNIT[opt_units];\n }\n }\n }\n else {\n var units = projection.getUnits();\n if (units == Units.DEGREES && !opt_units || opt_units == Units.DEGREES) {\n pointResolution = resolution;\n }\n else {\n // Estimate point resolution by transforming the center pixel to EPSG:4326,\n // measuring its width and height on the normal sphere, and taking the\n // average of the width and height.\n var toEPSG4326_1 = getTransformFromProjections(projection, get('EPSG:4326'));\n var vertices = [\n point[0] - resolution / 2, point[1],\n point[0] + resolution / 2, point[1],\n point[0], point[1] - resolution / 2,\n point[0], point[1] + resolution / 2\n ];\n vertices = toEPSG4326_1(vertices, vertices, 2);\n var width = getDistance(vertices.slice(0, 2), vertices.slice(2, 4));\n var height = getDistance(vertices.slice(4, 6), vertices.slice(6, 8));\n pointResolution = (width + height) / 2;\n var metersPerUnit = opt_units ?\n METERS_PER_UNIT[opt_units] :\n projection.getMetersPerUnit();\n if (metersPerUnit !== undefined) {\n pointResolution /= metersPerUnit;\n }\n }\n }\n return pointResolution;\n}\n/**\n * Registers transformation functions that don't alter coordinates. Those allow\n * to transform between projections with equal meaning.\n *\n * @param {Array} projections Projections.\n * @api\n */\nexport function addEquivalentProjections(projections) {\n addProjections(projections);\n projections.forEach(function (source) {\n projections.forEach(function (destination) {\n if (source !== destination) {\n addTransformFunc(source, destination, cloneTransform);\n }\n });\n });\n}\n/**\n * Registers transformation functions to convert coordinates in any projection\n * in projection1 to any projection in projection2.\n *\n * @param {Array} projections1 Projections with equal\n * meaning.\n * @param {Array} projections2 Projections with equal\n * meaning.\n * @param {TransformFunction} forwardTransform Transformation from any\n * projection in projection1 to any projection in projection2.\n * @param {TransformFunction} inverseTransform Transform from any projection\n * in projection2 to any projection in projection1..\n */\nexport function addEquivalentTransforms(projections1, projections2, forwardTransform, inverseTransform) {\n projections1.forEach(function (projection1) {\n projections2.forEach(function (projection2) {\n addTransformFunc(projection1, projection2, forwardTransform);\n addTransformFunc(projection2, projection1, inverseTransform);\n });\n });\n}\n/**\n * Clear all cached projections and transforms.\n */\nexport function clearAllProjections() {\n clearProj();\n clearTransformFuncs();\n}\n/**\n * @param {Projection|string|undefined} projection Projection.\n * @param {string} defaultCode Default code.\n * @return {Projection} Projection.\n */\nexport function createProjection(projection, defaultCode) {\n if (!projection) {\n return get(defaultCode);\n }\n else if (typeof projection === 'string') {\n return get(projection);\n }\n else {\n return (\n /** @type {Projection} */ (projection));\n }\n}\n/**\n * Creates a {@link module:ol/proj~TransformFunction} from a simple 2D coordinate transform\n * function.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} coordTransform Coordinate\n * transform.\n * @return {TransformFunction} Transform function.\n */\nexport function createTransformFromCoordinateTransform(coordTransform) {\n return (\n /**\n * @param {Array} input Input.\n * @param {Array=} opt_output Output.\n * @param {number=} opt_dimension Dimension.\n * @return {Array} Output.\n */\n function (input, opt_output, opt_dimension) {\n var length = input.length;\n var dimension = opt_dimension !== undefined ? opt_dimension : 2;\n var output = opt_output !== undefined ? opt_output : new Array(length);\n for (var i = 0; i < length; i += dimension) {\n var point = coordTransform([input[i], input[i + 1]]);\n output[i] = point[0];\n output[i + 1] = point[1];\n for (var j = dimension - 1; j >= 2; --j) {\n output[i + j] = input[i + j];\n }\n }\n return output;\n });\n}\n/**\n * Registers coordinate transform functions to convert coordinates between the\n * source projection and the destination projection.\n * The forward and inverse functions convert coordinate pairs; this function\n * converts these into the functions used internally which also handle\n * extents and coordinate arrays.\n *\n * @param {ProjectionLike} source Source projection.\n * @param {ProjectionLike} destination Destination projection.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} forward The forward transform\n * function (that is, from the source projection to the destination\n * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n * the transformed {@link module:ol/coordinate~Coordinate}.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} inverse The inverse transform\n * function (that is, from the destination projection to the source\n * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n * the transformed {@link module:ol/coordinate~Coordinate}.\n * @api\n */\nexport function addCoordinateTransforms(source, destination, forward, inverse) {\n var sourceProj = get(source);\n var destProj = get(destination);\n addTransformFunc(sourceProj, destProj, createTransformFromCoordinateTransform(forward));\n addTransformFunc(destProj, sourceProj, createTransformFromCoordinateTransform(inverse));\n}\n/**\n * Transforms a coordinate from longitude/latitude to a different projection.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate as longitude and latitude, i.e.\n * an array with longitude as 1st and latitude as 2nd element.\n * @param {ProjectionLike=} opt_projection Target projection. The\n * default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate projected to the target projection.\n * @api\n */\nexport function fromLonLat(coordinate, opt_projection) {\n return transform(coordinate, 'EPSG:4326', opt_projection !== undefined ? opt_projection : 'EPSG:3857');\n}\n/**\n * Transforms a coordinate to longitude/latitude.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Projected coordinate.\n * @param {ProjectionLike=} opt_projection Projection of the coordinate.\n * The default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate as longitude and latitude, i.e. an array\n * with longitude as 1st and latitude as 2nd element.\n * @api\n */\nexport function toLonLat(coordinate, opt_projection) {\n var lonLat = transform(coordinate, opt_projection !== undefined ? opt_projection : 'EPSG:3857', 'EPSG:4326');\n var lon = lonLat[0];\n if (lon < -180 || lon > 180) {\n lonLat[0] = modulo(lon + 180, 360) - 180;\n }\n return lonLat;\n}\n/**\n * Checks if two projections are the same, that is every coordinate in one\n * projection does represent the same geographic point as the same coordinate in\n * the other projection.\n *\n * @param {Projection} projection1 Projection 1.\n * @param {Projection} projection2 Projection 2.\n * @return {boolean} Equivalent.\n * @api\n */\nexport function equivalent(projection1, projection2) {\n if (projection1 === projection2) {\n return true;\n }\n var equalUnits = projection1.getUnits() === projection2.getUnits();\n if (projection1.getCode() === projection2.getCode()) {\n return equalUnits;\n }\n else {\n var transformFunc = getTransformFromProjections(projection1, projection2);\n return transformFunc === cloneTransform && equalUnits;\n }\n}\n/**\n * Searches in the list of transform functions for the function for converting\n * coordinates from the source projection to the destination projection.\n *\n * @param {Projection} sourceProjection Source Projection object.\n * @param {Projection} destinationProjection Destination Projection\n * object.\n * @return {TransformFunction} Transform function.\n */\nexport function getTransformFromProjections(sourceProjection, destinationProjection) {\n var sourceCode = sourceProjection.getCode();\n var destinationCode = destinationProjection.getCode();\n var transformFunc = getTransformFunc(sourceCode, destinationCode);\n if (!transformFunc) {\n transformFunc = identityTransform;\n }\n return transformFunc;\n}\n/**\n * Given the projection-like objects, searches for a transformation\n * function to convert a coordinates array from the source projection to the\n * destination projection.\n *\n * @param {ProjectionLike} source Source.\n * @param {ProjectionLike} destination Destination.\n * @return {TransformFunction} Transform function.\n * @api\n */\nexport function getTransform(source, destination) {\n var sourceProjection = get(source);\n var destinationProjection = get(destination);\n return getTransformFromProjections(sourceProjection, destinationProjection);\n}\n/**\n * Transforms a coordinate from source projection to destination projection.\n * This returns a new coordinate (and does not modify the original).\n *\n * See {@link module:ol/proj~transformExtent} for extent transformation.\n * See the transform method of {@link module:ol/geom/Geometry~Geometry} and its\n * subclasses for geometry transforms.\n *\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\nexport function transform(coordinate, source, destination) {\n var transformFunc = getTransform(source, destination);\n return transformFunc(coordinate, undefined, coordinate.length);\n}\n/**\n * Transforms an extent from source projection to destination projection. This\n * returns a new extent (and does not modify the original).\n *\n * @param {import(\"./extent.js\").Extent} extent The extent to transform.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @param {number=} opt_stops Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {import(\"./extent.js\").Extent} The transformed extent.\n * @api\n */\nexport function transformExtent(extent, source, destination, opt_stops) {\n var transformFunc = getTransform(source, destination);\n return applyTransform(extent, transformFunc, undefined, opt_stops);\n}\n/**\n * Transforms the given point to the destination projection.\n *\n * @param {import(\"./coordinate.js\").Coordinate} point Point.\n * @param {Projection} sourceProjection Source projection.\n * @param {Projection} destinationProjection Destination projection.\n * @return {import(\"./coordinate.js\").Coordinate} Point.\n */\nexport function transformWithProjections(point, sourceProjection, destinationProjection) {\n var transformFunc = getTransformFromProjections(sourceProjection, destinationProjection);\n return transformFunc(point);\n}\n/**\n * @type {?Projection}\n */\nvar userProjection = null;\n/**\n * Set the projection for coordinates supplied from and returned by API methods.\n * Note that this method is not yet a part of the stable API. Support for user\n * projections is not yet complete and should be considered experimental.\n * @param {ProjectionLike} projection The user projection.\n */\nexport function setUserProjection(projection) {\n userProjection = get(projection);\n}\n/**\n * Clear the user projection if set. Note that this method is not yet a part of\n * the stable API. Support for user projections is not yet complete and should\n * be considered experimental.\n */\nexport function clearUserProjection() {\n userProjection = null;\n}\n/**\n * Get the projection for coordinates supplied from and returned by API methods.\n * Note that this method is not yet a part of the stable API. Support for user\n * projections is not yet complete and should be considered experimental.\n * @returns {?Projection} The user projection (or null if not set).\n */\nexport function getUserProjection() {\n return userProjection;\n}\n/**\n * Use geographic coordinates (WGS-84 datum) in API methods. Note that this\n * method is not yet a part of the stable API. Support for user projections is\n * not yet complete and should be considered experimental.\n */\nexport function useGeographic() {\n setUserProjection('EPSG:4326');\n}\n/**\n * Return a coordinate transformed into the user projection. If no user projection\n * is set, the original coordinate is returned.\n * @param {Array} coordinate Input coordinate.\n * @param {ProjectionLike} sourceProjection The input coordinate projection.\n * @returns {Array} The input coordinate in the user projection.\n */\nexport function toUserCoordinate(coordinate, sourceProjection) {\n if (!userProjection) {\n return coordinate;\n }\n return transform(coordinate, sourceProjection, userProjection);\n}\n/**\n * Return a coordinate transformed from the user projection. If no user projection\n * is set, the original coordinate is returned.\n * @param {Array} coordinate Input coordinate.\n * @param {ProjectionLike} destProjection The destination projection.\n * @returns {Array} The input coordinate transformed.\n */\nexport function fromUserCoordinate(coordinate, destProjection) {\n if (!userProjection) {\n return coordinate;\n }\n return transform(coordinate, userProjection, destProjection);\n}\n/**\n * Return an extent transformed into the user projection. If no user projection\n * is set, the original extent is returned.\n * @param {import(\"./extent.js\").Extent} extent Input extent.\n * @param {ProjectionLike} sourceProjection The input extent projection.\n * @returns {import(\"./extent.js\").Extent} The input extent in the user projection.\n */\nexport function toUserExtent(extent, sourceProjection) {\n if (!userProjection) {\n return extent;\n }\n return transformExtent(extent, sourceProjection, userProjection);\n}\n/**\n * Return an extent transformed from the user projection. If no user projection\n * is set, the original extent is returned.\n * @param {import(\"./extent.js\").Extent} extent Input extent.\n * @param {ProjectionLike} destProjection The destination projection.\n * @returns {import(\"./extent.js\").Extent} The input extent transformed.\n */\nexport function fromUserExtent(extent, destProjection) {\n if (!userProjection) {\n return extent;\n }\n return transformExtent(extent, userProjection, destProjection);\n}\n/**\n * Add transforms to and from EPSG:4326 and EPSG:3857. This function is called\n * by when this module is executed and should only need to be called again after\n * `clearAllProjections()` is called (e.g. in tests).\n */\nexport function addCommon() {\n // Add transformations that don't alter coordinates to convert within set of\n // projections with equal meaning.\n addEquivalentProjections(EPSG3857_PROJECTIONS);\n addEquivalentProjections(EPSG4326_PROJECTIONS);\n // Add transformations to convert EPSG:4326 like coordinates to EPSG:3857 like\n // coordinates and back.\n addEquivalentTransforms(EPSG4326_PROJECTIONS, EPSG3857_PROJECTIONS, fromEPSG4326, toEPSG4326);\n}\naddCommon();\n//# sourceMappingURL=proj.js.map","/**\n * @module ol/transform\n */\nimport { assert } from './asserts.js';\n/**\n * An array representing an affine 2d transformation for use with\n * {@link module:ol/transform} functions. The array has 6 elements.\n * @typedef {!Array} Transform\n * @api\n */\n/**\n * Collection of affine 2d transformation functions. The functions work on an\n * array of 6 elements. The element order is compatible with the [SVGMatrix\n * interface](https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix) and is\n * a subset (elements a to f) of a 3×3 matrix:\n * ```\n * [ a c e ]\n * [ b d f ]\n * [ 0 0 1 ]\n * ```\n */\n/**\n * @private\n * @type {Transform}\n */\nvar tmp_ = new Array(6);\n/**\n * Create an identity transform.\n * @return {!Transform} Identity transform.\n */\nexport function create() {\n return [1, 0, 0, 1, 0, 0];\n}\n/**\n * Resets the given transform to an identity transform.\n * @param {!Transform} transform Transform.\n * @return {!Transform} Transform.\n */\nexport function reset(transform) {\n return set(transform, 1, 0, 0, 1, 0, 0);\n}\n/**\n * Multiply the underlying matrices of two transforms and return the result in\n * the first transform.\n * @param {!Transform} transform1 Transform parameters of matrix 1.\n * @param {!Transform} transform2 Transform parameters of matrix 2.\n * @return {!Transform} transform1 multiplied with transform2.\n */\nexport function multiply(transform1, transform2) {\n var a1 = transform1[0];\n var b1 = transform1[1];\n var c1 = transform1[2];\n var d1 = transform1[3];\n var e1 = transform1[4];\n var f1 = transform1[5];\n var a2 = transform2[0];\n var b2 = transform2[1];\n var c2 = transform2[2];\n var d2 = transform2[3];\n var e2 = transform2[4];\n var f2 = transform2[5];\n transform1[0] = a1 * a2 + c1 * b2;\n transform1[1] = b1 * a2 + d1 * b2;\n transform1[2] = a1 * c2 + c1 * d2;\n transform1[3] = b1 * c2 + d1 * d2;\n transform1[4] = a1 * e2 + c1 * f2 + e1;\n transform1[5] = b1 * e2 + d1 * f2 + f1;\n return transform1;\n}\n/**\n * Set the transform components a-f on a given transform.\n * @param {!Transform} transform Transform.\n * @param {number} a The a component of the transform.\n * @param {number} b The b component of the transform.\n * @param {number} c The c component of the transform.\n * @param {number} d The d component of the transform.\n * @param {number} e The e component of the transform.\n * @param {number} f The f component of the transform.\n * @return {!Transform} Matrix with transform applied.\n */\nexport function set(transform, a, b, c, d, e, f) {\n transform[0] = a;\n transform[1] = b;\n transform[2] = c;\n transform[3] = d;\n transform[4] = e;\n transform[5] = f;\n return transform;\n}\n/**\n * Set transform on one matrix from another matrix.\n * @param {!Transform} transform1 Matrix to set transform to.\n * @param {!Transform} transform2 Matrix to set transform from.\n * @return {!Transform} transform1 with transform from transform2 applied.\n */\nexport function setFromArray(transform1, transform2) {\n transform1[0] = transform2[0];\n transform1[1] = transform2[1];\n transform1[2] = transform2[2];\n transform1[3] = transform2[3];\n transform1[4] = transform2[4];\n transform1[5] = transform2[5];\n return transform1;\n}\n/**\n * Transforms the given coordinate with the given transform returning the\n * resulting, transformed coordinate. The coordinate will be modified in-place.\n *\n * @param {Transform} transform The transformation.\n * @param {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} coordinate The coordinate to transform.\n * @return {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} return coordinate so that operations can be\n * chained together.\n */\nexport function apply(transform, coordinate) {\n var x = coordinate[0];\n var y = coordinate[1];\n coordinate[0] = transform[0] * x + transform[2] * y + transform[4];\n coordinate[1] = transform[1] * x + transform[3] * y + transform[5];\n return coordinate;\n}\n/**\n * Applies rotation to the given transform.\n * @param {!Transform} transform Transform.\n * @param {number} angle Angle in radians.\n * @return {!Transform} The rotated transform.\n */\nexport function rotate(transform, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n return multiply(transform, set(tmp_, cos, sin, -sin, cos, 0, 0));\n}\n/**\n * Applies scale to a given transform.\n * @param {!Transform} transform Transform.\n * @param {number} x Scale factor x.\n * @param {number} y Scale factor y.\n * @return {!Transform} The scaled transform.\n */\nexport function scale(transform, x, y) {\n return multiply(transform, set(tmp_, x, 0, 0, y, 0, 0));\n}\n/**\n * Creates a scale transform.\n * @param {!Transform} target Transform to overwrite.\n * @param {number} x Scale factor x.\n * @param {number} y Scale factor y.\n * @return {!Transform} The scale transform.\n */\nexport function makeScale(target, x, y) {\n return set(target, x, 0, 0, y, 0, 0);\n}\n/**\n * Applies translation to the given transform.\n * @param {!Transform} transform Transform.\n * @param {number} dx Translation x.\n * @param {number} dy Translation y.\n * @return {!Transform} The translated transform.\n */\nexport function translate(transform, dx, dy) {\n return multiply(transform, set(tmp_, 1, 0, 0, 1, dx, dy));\n}\n/**\n * Creates a composite transform given an initial translation, scale, rotation, and\n * final translation (in that order only, not commutative).\n * @param {!Transform} transform The transform (will be modified in place).\n * @param {number} dx1 Initial translation x.\n * @param {number} dy1 Initial translation y.\n * @param {number} sx Scale factor x.\n * @param {number} sy Scale factor y.\n * @param {number} angle Rotation (in counter-clockwise radians).\n * @param {number} dx2 Final translation x.\n * @param {number} dy2 Final translation y.\n * @return {!Transform} The composite transform.\n */\nexport function compose(transform, dx1, dy1, sx, sy, angle, dx2, dy2) {\n var sin = Math.sin(angle);\n var cos = Math.cos(angle);\n transform[0] = sx * cos;\n transform[1] = sy * sin;\n transform[2] = -sx * sin;\n transform[3] = sy * cos;\n transform[4] = dx2 * sx * cos - dy2 * sx * sin + dx1;\n transform[5] = dx2 * sy * sin + dy2 * sy * cos + dy1;\n return transform;\n}\n/**\n * Creates a composite transform given an initial translation, scale, rotation, and\n * final translation (in that order only, not commutative). The resulting transform\n * string can be applied as `transform` porperty of an HTMLElement's style.\n * @param {number} dx1 Initial translation x.\n * @param {number} dy1 Initial translation y.\n * @param {number} sx Scale factor x.\n * @param {number} sy Scale factor y.\n * @param {number} angle Rotation (in counter-clockwise radians).\n * @param {number} dx2 Final translation x.\n * @param {number} dy2 Final translation y.\n * @return {string} The composite css transform.\n * @api\n */\nexport function composeCssTransform(dx1, dy1, sx, sy, angle, dx2, dy2) {\n return toString(compose(create(), dx1, dy1, sx, sy, angle, dx2, dy2));\n}\n/**\n * Invert the given transform.\n * @param {!Transform} source The source transform to invert.\n * @return {!Transform} The inverted (source) transform.\n */\nexport function invert(source) {\n return makeInverse(source, source);\n}\n/**\n * Invert the given transform.\n * @param {!Transform} target Transform to be set as the inverse of\n * the source transform.\n * @param {!Transform} source The source transform to invert.\n * @return {!Transform} The inverted (target) transform.\n */\nexport function makeInverse(target, source) {\n var det = determinant(source);\n assert(det !== 0, 32); // Transformation matrix cannot be inverted\n var a = source[0];\n var b = source[1];\n var c = source[2];\n var d = source[3];\n var e = source[4];\n var f = source[5];\n target[0] = d / det;\n target[1] = -b / det;\n target[2] = -c / det;\n target[3] = a / det;\n target[4] = (c * f - d * e) / det;\n target[5] = -(a * f - b * e) / det;\n return target;\n}\n/**\n * Returns the determinant of the given matrix.\n * @param {!Transform} mat Matrix.\n * @return {number} Determinant.\n */\nexport function determinant(mat) {\n return mat[0] * mat[3] - mat[1] * mat[2];\n}\n/**\n * A string version of the transform. This can be used\n * for CSS transforms.\n * @param {!Transform} mat Matrix.\n * @return {string} The transform as a string.\n */\nexport function toString(mat) {\n return 'matrix(' + mat.join(', ') + ')';\n}\n//# sourceMappingURL=transform.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Geometry\n */\nimport { abstract } from '../util.js';\nimport BaseObject from '../Object.js';\nimport { createEmpty, getHeight, returnOrUpdate } from '../extent.js';\nimport { transform2D } from './flat/transform.js';\nimport { get as getProjection, getTransform } from '../proj.js';\nimport Units from '../proj/Units.js';\nimport { create as createTransform, compose as composeTransform } from '../transform.js';\nimport { memoizeOne } from '../functions.js';\n/**\n * @type {import(\"../transform.js\").Transform}\n */\nvar tmpTransform = createTransform();\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 */\nvar Geometry = /** @class */ (function (_super) {\n __extends(Geometry, _super);\n function Geometry() {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n _this.extent_ = createEmpty();\n /**\n * @private\n * @type {number}\n */\n _this.extentRevision_ = -1;\n /**\n * @protected\n * @type {number}\n */\n _this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n /**\n * @protected\n * @type {number}\n */\n _this.simplifiedGeometryRevision = 0;\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} [opt_transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n _this.simplifyTransformedInternal = memoizeOne(function (revision, squaredTolerance, opt_transform) {\n if (!opt_transform) {\n return this.getSimplifiedGeometry(squaredTolerance);\n }\n var clone = this.clone();\n clone.applyTransform(opt_transform);\n return clone.getSimplifiedGeometry(squaredTolerance);\n });\n return _this;\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} [opt_transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n Geometry.prototype.simplifyTransformed = function (squaredTolerance, opt_transform) {\n return this.simplifyTransformedInternal(this.getRevision(), squaredTolerance, opt_transform);\n };\n /**\n * Make a complete copy of the geometry.\n * @abstract\n * @return {!Geometry} Clone.\n */\n Geometry.prototype.clone = function () {\n return abstract();\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 Geometry.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n return abstract();\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n Geometry.prototype.containsXY = function (x, y) {\n var coord = this.getClosestPoint([x, y]);\n return coord[0] === x && coord[1] === y;\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=} opt_closestPoint Closest point.\n * @return {import(\"../coordinate.js\").Coordinate} Closest point.\n * @api\n */\n Geometry.prototype.getClosestPoint = function (point, opt_closestPoint) {\n var closestPoint = opt_closestPoint ? opt_closestPoint : [NaN, NaN];\n this.closestPointXY(point[0], point[1], closestPoint, Infinity);\n return closestPoint;\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 Geometry.prototype.intersectsCoordinate = function (coordinate) {\n return this.containsXY(coordinate[0], coordinate[1]);\n };\n /**\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n Geometry.prototype.computeExtent = function (extent) {\n return abstract();\n };\n /**\n * Get the extent of the geometry.\n * @param {import(\"../extent.js\").Extent=} opt_extent Extent.\n * @return {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n Geometry.prototype.getExtent = function (opt_extent) {\n if (this.extentRevision_ != this.getRevision()) {\n this.extent_ = this.computeExtent(this.extent_);\n this.extentRevision_ = this.getRevision();\n }\n return returnOrUpdate(this.extent_, opt_extent);\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 Geometry.prototype.rotate = function (angle, anchor) {\n abstract();\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=} opt_sy The scaling factor in the y-direction (defaults to\n * sx).\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n Geometry.prototype.scale = function (sx, opt_sy, opt_anchor) {\n abstract();\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 Geometry.prototype.simplify = function (tolerance) {\n return this.getSimplifiedGeometry(tolerance * tolerance);\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 Geometry.prototype.getSimplifiedGeometry = function (squaredTolerance) {\n return abstract();\n };\n /**\n * Get the type of this geometry.\n * @abstract\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n */\n Geometry.prototype.getType = function () {\n return abstract();\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 Geometry.prototype.applyTransform = function (transformFn) {\n abstract();\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 Geometry.prototype.intersectsExtent = function (extent) {\n return abstract();\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 Geometry.prototype.translate = function (deltaX, deltaY) {\n abstract();\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 Geometry.prototype.transform = function (source, destination) {\n /** @type {import(\"../proj/Projection.js\").default} */\n var sourceProj = getProjection(source);\n var transformFn = sourceProj.getUnits() == Units.TILE_PIXELS ?\n function (inCoordinates, outCoordinates, stride) {\n var pixelExtent = sourceProj.getExtent();\n var projectedExtent = sourceProj.getWorldExtent();\n var scale = getHeight(projectedExtent) / getHeight(pixelExtent);\n composeTransform(tmpTransform, projectedExtent[0], projectedExtent[3], scale, -scale, 0, 0, 0);\n transform2D(inCoordinates, 0, inCoordinates.length, stride, tmpTransform, outCoordinates);\n return getTransform(sourceProj, destination)(inCoordinates, outCoordinates, stride);\n } :\n getTransform(sourceProj, destination);\n this.applyTransform(transformFn);\n return this;\n };\n return Geometry;\n}(BaseObject));\nexport default Geometry;\n//# sourceMappingURL=Geometry.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/SimpleGeometry\n */\nimport { abstract } from '../util.js';\nimport { createOrUpdateFromFlatCoordinates, getCenter } from '../extent.js';\nimport Geometry from './Geometry.js';\nimport GeometryLayout from './GeometryLayout.js';\nimport { rotate, scale, translate, transform2D } from './flat/transform.js';\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 */\nvar SimpleGeometry = /** @class */ (function (_super) {\n __extends(SimpleGeometry, _super);\n function SimpleGeometry() {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {GeometryLayout}\n */\n _this.layout = GeometryLayout.XY;\n /**\n * @protected\n * @type {number}\n */\n _this.stride = 2;\n /**\n * @protected\n * @type {Array}\n */\n _this.flatCoordinates = null;\n return _this;\n }\n /**\n * @inheritDoc\n */\n SimpleGeometry.prototype.computeExtent = function (extent) {\n return createOrUpdateFromFlatCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, extent);\n };\n /**\n * @abstract\n * @return {Array<*>} Coordinates.\n */\n SimpleGeometry.prototype.getCoordinates = function () {\n return abstract();\n };\n /**\n * Return the first coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} First coordinate.\n * @api\n */\n SimpleGeometry.prototype.getFirstCoordinate = function () {\n return this.flatCoordinates.slice(0, this.stride);\n };\n /**\n * @return {Array} Flat coordinates.\n */\n SimpleGeometry.prototype.getFlatCoordinates = function () {\n return this.flatCoordinates;\n };\n /**\n * Return the last coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} Last point.\n * @api\n */\n SimpleGeometry.prototype.getLastCoordinate = function () {\n return this.flatCoordinates.slice(this.flatCoordinates.length - this.stride);\n };\n /**\n * Return the {@link module:ol/geom/GeometryLayout layout} of the geometry.\n * @return {GeometryLayout} Layout.\n * @api\n */\n SimpleGeometry.prototype.getLayout = function () {\n return this.layout;\n };\n /**\n * @inheritDoc\n */\n SimpleGeometry.prototype.getSimplifiedGeometry = function (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 (squaredTolerance < 0 ||\n (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n squaredTolerance <= this.simplifiedGeometryMaxMinSquaredTolerance)) {\n return this;\n }\n var simplifiedGeometry = this.getSimplifiedGeometryInternal(squaredTolerance);\n var simplifiedFlatCoordinates = simplifiedGeometry.getFlatCoordinates();\n if (simplifiedFlatCoordinates.length < this.flatCoordinates.length) {\n return simplifiedGeometry;\n }\n else {\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 SimpleGeometry.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n return this;\n };\n /**\n * @return {number} Stride.\n */\n SimpleGeometry.prototype.getStride = function () {\n return this.stride;\n };\n /**\n * @param {GeometryLayout} layout Layout.\n * @param {Array} flatCoordinates Flat coordinates.\n */\n SimpleGeometry.prototype.setFlatCoordinates = function (layout, flatCoordinates) {\n this.stride = getStrideForLayout(layout);\n this.layout = layout;\n this.flatCoordinates = flatCoordinates;\n };\n /**\n * @abstract\n * @param {!Array<*>} coordinates Coordinates.\n * @param {GeometryLayout=} opt_layout Layout.\n */\n SimpleGeometry.prototype.setCoordinates = function (coordinates, opt_layout) {\n abstract();\n };\n /**\n * @param {GeometryLayout|undefined} layout Layout.\n * @param {Array<*>} coordinates Coordinates.\n * @param {number} nesting Nesting.\n * @protected\n */\n SimpleGeometry.prototype.setLayout = function (layout, coordinates, nesting) {\n /** @type {number} */\n var stride;\n if (layout) {\n stride = getStrideForLayout(layout);\n }\n else {\n for (var i = 0; i < nesting; ++i) {\n if (coordinates.length === 0) {\n this.layout = GeometryLayout.XY;\n this.stride = 2;\n return;\n }\n else {\n coordinates = /** @type {Array} */ (coordinates[0]);\n }\n }\n stride = coordinates.length;\n layout = getLayoutForStride(stride);\n }\n this.layout = layout;\n this.stride = stride;\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 SimpleGeometry.prototype.applyTransform = function (transformFn) {\n if (this.flatCoordinates) {\n transformFn(this.flatCoordinates, this.flatCoordinates, this.stride);\n this.changed();\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 SimpleGeometry.prototype.rotate = function (angle, anchor) {\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n rotate(flatCoordinates, 0, flatCoordinates.length, stride, angle, anchor, flatCoordinates);\n this.changed();\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=} opt_sy The scaling factor in the y-direction (defaults to\n * sx).\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n SimpleGeometry.prototype.scale = function (sx, opt_sy, opt_anchor) {\n var sy = opt_sy;\n if (sy === undefined) {\n sy = sx;\n }\n var anchor = opt_anchor;\n if (!anchor) {\n anchor = getCenter(this.getExtent());\n }\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n scale(flatCoordinates, 0, flatCoordinates.length, stride, sx, sy, anchor, flatCoordinates);\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 SimpleGeometry.prototype.translate = function (deltaX, deltaY) {\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n translate(flatCoordinates, 0, flatCoordinates.length, stride, deltaX, deltaY, flatCoordinates);\n this.changed();\n }\n };\n return SimpleGeometry;\n}(Geometry));\n/**\n * @param {number} stride Stride.\n * @return {GeometryLayout} layout Layout.\n */\nfunction getLayoutForStride(stride) {\n var layout;\n if (stride == 2) {\n layout = GeometryLayout.XY;\n }\n else if (stride == 3) {\n layout = GeometryLayout.XYZ;\n }\n else if (stride == 4) {\n layout = GeometryLayout.XYZM;\n }\n return (\n /** @type {GeometryLayout} */ (layout));\n}\n/**\n * @param {GeometryLayout} layout Layout.\n * @return {number} Stride.\n */\nexport function getStrideForLayout(layout) {\n var stride;\n if (layout == GeometryLayout.XY) {\n stride = 2;\n }\n else if (layout == GeometryLayout.XYZ || layout == GeometryLayout.XYM) {\n stride = 3;\n }\n else if (layout == GeometryLayout.XYZM) {\n stride = 4;\n }\n return /** @type {number} */ (stride);\n}\n/**\n * @param {SimpleGeometry} simpleGeometry Simple geometry.\n * @param {import(\"../transform.js\").Transform} transform Transform.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed flat coordinates.\n */\nexport function transformGeom2D(simpleGeometry, transform, opt_dest) {\n var flatCoordinates = simpleGeometry.getFlatCoordinates();\n if (!flatCoordinates) {\n return null;\n }\n else {\n var stride = simpleGeometry.getStride();\n return transform2D(flatCoordinates, 0, flatCoordinates.length, stride, transform, opt_dest);\n }\n}\nexport default SimpleGeometry;\n//# sourceMappingURL=SimpleGeometry.js.map","/**\n * @module ol/geom/flat/area\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 var twiceArea = 0;\n var x1 = flatCoordinates[end - stride];\n var y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n twiceArea += y1 * x2 - x1 * y2;\n x1 = x2;\n y1 = y2;\n }\n return twiceArea / 2;\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 var area = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n area += linearRing(flatCoordinates, offset, end, stride);\n offset = end;\n }\n return area;\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 var area = 0;\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n area += linearRings(flatCoordinates, offset, ends, stride);\n offset = ends[ends.length - 1];\n }\n return area;\n}\n//# sourceMappingURL=area.js.map","/**\n * @module ol/geom/flat/closest\n */\nimport { lerp, squaredDistance as squaredDx } from '../../math.js';\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(flatCoordinates, offset1, offset2, stride, x, y, closestPoint) {\n var x1 = flatCoordinates[offset1];\n var y1 = flatCoordinates[offset1 + 1];\n var dx = flatCoordinates[offset2] - x1;\n var dy = flatCoordinates[offset2 + 1] - y1;\n var offset;\n if (dx === 0 && dy === 0) {\n offset = offset1;\n }\n else {\n var t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n offset = offset2;\n }\n else if (t > 0) {\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = lerp(flatCoordinates[offset1 + i], flatCoordinates[offset2 + i], t);\n }\n closestPoint.length = stride;\n return;\n }\n else {\n offset = offset1;\n }\n }\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\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 var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n for (offset += stride; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n var 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 * @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(flatCoordinates, offset, ends, stride, max) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n max = maxSquaredDelta(flatCoordinates, offset, end, stride, max);\n offset = end;\n }\n return max;\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(flatCoordinates, offset, endss, stride, max) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n max = arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max);\n offset = ends[ends.length - 1];\n }\n return max;\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=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestPoint(flatCoordinates, offset, end, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n if (offset == end) {\n return minSquaredDistance;\n }\n var i, squaredDistance;\n if (maxDelta === 0) {\n // All points are identical, so just test the first point.\n squaredDistance = squaredDx(x, y, flatCoordinates[offset], flatCoordinates[offset + 1]);\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 else {\n return minSquaredDistance;\n }\n }\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n var index = offset + stride;\n while (index < end) {\n assignClosest(flatCoordinates, index - stride, index, stride, x, y, tmpPoint);\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 }\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 += stride * Math.max(((Math.sqrt(squaredDistance) -\n Math.sqrt(minSquaredDistance)) / maxDelta) | 0, 1);\n }\n }\n if (isRing) {\n // Check the closing segment.\n assignClosest(flatCoordinates, end - stride, offset, stride, x, y, tmpPoint);\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 * @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=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestArrayPoint(flatCoordinates, offset, ends, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n minSquaredDistance = assignClosestPoint(flatCoordinates, offset, end, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);\n offset = end;\n }\n return minSquaredDistance;\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=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestMultiArrayPoint(flatCoordinates, offset, endss, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n minSquaredDistance = assignClosestArrayPoint(flatCoordinates, offset, ends, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);\n offset = ends[ends.length - 1];\n }\n return minSquaredDistance;\n}\n//# sourceMappingURL=closest.js.map","/**\n * @module ol/geom/flat/deflate\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 (var i = 0, ii = coordinate.length; i < ii; ++i) {\n flatCoordinates[offset++] = coordinate[i];\n }\n return offset;\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(flatCoordinates, offset, coordinates, stride) {\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n var coordinate = coordinates[i];\n for (var j = 0; j < stride; ++j) {\n flatCoordinates[offset++] = coordinate[j];\n }\n }\n return offset;\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=} opt_ends Ends.\n * @return {Array} Ends.\n */\nexport function deflateCoordinatesArray(flatCoordinates, offset, coordinatess, stride, opt_ends) {\n var ends = opt_ends ? opt_ends : [];\n var i = 0;\n for (var j = 0, jj = coordinatess.length; j < jj; ++j) {\n var end = deflateCoordinates(flatCoordinates, offset, coordinatess[j], stride);\n ends[i++] = end;\n offset = end;\n }\n ends.length = i;\n return ends;\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>=} opt_endss Endss.\n * @return {Array>} Endss.\n */\nexport function deflateMultiCoordinatesArray(flatCoordinates, offset, coordinatesss, stride, opt_endss) {\n var endss = opt_endss ? opt_endss : [];\n var i = 0;\n for (var j = 0, jj = coordinatesss.length; j < jj; ++j) {\n var ends = deflateCoordinatesArray(flatCoordinates, offset, coordinatesss[j], stride, endss[i]);\n endss[i++] = ends;\n offset = ends[ends.length - 1];\n }\n endss.length = i;\n return endss;\n}\n//# sourceMappingURL=deflate.js.map","/**\n * @module ol/geom/flat/inflate\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=} opt_coordinates Coordinates.\n * @return {Array} Coordinates.\n */\nexport function inflateCoordinates(flatCoordinates, offset, end, stride, opt_coordinates) {\n var coordinates = opt_coordinates !== undefined ? opt_coordinates : [];\n var i = 0;\n for (var 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 * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array>=} opt_coordinatess Coordinatess.\n * @return {Array>} Coordinatess.\n */\nexport function inflateCoordinatesArray(flatCoordinates, offset, ends, stride, opt_coordinatess) {\n var coordinatess = opt_coordinatess !== undefined ? opt_coordinatess : [];\n var i = 0;\n for (var j = 0, jj = ends.length; j < jj; ++j) {\n var end = ends[j];\n coordinatess[i++] = inflateCoordinates(flatCoordinates, offset, end, stride, coordinatess[i]);\n offset = end;\n }\n coordinatess.length = i;\n return coordinatess;\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>>=} opt_coordinatesss\n * Coordinatesss.\n * @return {Array>>} Coordinatesss.\n */\nexport function inflateMultiCoordinatesArray(flatCoordinates, offset, endss, stride, opt_coordinatesss) {\n var coordinatesss = opt_coordinatesss !== undefined ? opt_coordinatesss : [];\n var i = 0;\n for (var j = 0, jj = endss.length; j < jj; ++j) {\n var ends = endss[j];\n coordinatesss[i++] = inflateCoordinatesArray(flatCoordinates, offset, ends, stride, coordinatesss[i]);\n offset = ends[ends.length - 1];\n }\n coordinatesss.length = i;\n return coordinatesss;\n}\n//# sourceMappingURL=inflate.js.map","/**\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.\nimport { squaredSegmentDistance, squaredDistance } from '../../math.js';\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=} opt_simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @return {Array} Simplified line string.\n */\nexport function simplifyLineString(flatCoordinates, offset, end, stride, squaredTolerance, highQuality, opt_simplifiedFlatCoordinates) {\n var simplifiedFlatCoordinates = opt_simplifiedFlatCoordinates !== undefined ?\n opt_simplifiedFlatCoordinates : [];\n if (!highQuality) {\n end = radialDistance(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n flatCoordinates = simplifiedFlatCoordinates;\n offset = 0;\n stride = 2;\n }\n simplifiedFlatCoordinates.length = douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return simplifiedFlatCoordinates;\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(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n var n = (end - offset) / stride;\n if (n < 3) {\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n /** @type {Array} */\n var markers = new Array(n);\n markers[0] = 1;\n markers[n - 1] = 1;\n /** @type {Array} */\n var stack = [offset, end - stride];\n var index = 0;\n while (stack.length > 0) {\n var last = stack.pop();\n var first = stack.pop();\n var maxSquaredDistance = 0;\n var x1 = flatCoordinates[first];\n var y1 = flatCoordinates[first + 1];\n var x2 = flatCoordinates[last];\n var y2 = flatCoordinates[last + 1];\n for (var i = first + stride; i < last; i += stride) {\n var x = flatCoordinates[i];\n var y = flatCoordinates[i + 1];\n var squaredDistance_1 = squaredSegmentDistance(x, y, x1, y1, x2, y2);\n if (squaredDistance_1 > maxSquaredDistance) {\n index = i;\n maxSquaredDistance = squaredDistance_1;\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 (var 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 * @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(flatCoordinates, offset, ends, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n simplifiedOffset = douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset);\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\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(flatCoordinates, offset, endss, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n var simplifiedEnds = [];\n simplifiedOffset = douglasPeuckerArray(flatCoordinates, offset, ends, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds);\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\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(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) {\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 var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n // copy first point\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n var x2 = x1;\n var 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 * @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 * 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(flatCoordinates, offset, end, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n // do nothing if the line is empty\n if (offset == end) {\n return simplifiedOffset;\n }\n // snap the first coordinate (P1)\n var x1 = snap(flatCoordinates[offset], tolerance);\n var 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 var 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 var x3 = snap(flatCoordinates[offset], tolerance);\n var 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 var dx1 = x2 - x1;\n var dy1 = y2 - y1;\n // calculate the delta between P3 and P1\n var dx2 = x3 - x1;\n var 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 ((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 // 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 * @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(flatCoordinates, offset, ends, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n simplifiedOffset = quantize(flatCoordinates, offset, end, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset);\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\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(flatCoordinates, offset, endss, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n var simplifiedEnds = [];\n simplifiedOffset = quantizeArray(flatCoordinates, offset, ends, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds);\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n//# sourceMappingURL=simplify.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/LinearRing\n */\nimport { closestSquaredDistanceXY } from '../extent.js';\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { linearRing as linearRingArea } from './flat/area.js';\nimport { assignClosestPoint, maxSquaredDelta } from './flat/closest.js';\nimport { deflateCoordinates } from './flat/deflate.js';\nimport { inflateCoordinates } from './flat/inflate.js';\nimport { douglasPeucker } from './flat/simplify.js';\n/**\n * @classdesc\n * Linear ring geometry. Only used as part of polygon; cannot be rendered\n * on its own.\n *\n * @api\n */\nvar LinearRing = /** @class */ (function (_super) {\n __extends(LinearRing, _super);\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `opt_layout` are also accepted.\n * @param {GeometryLayout=} opt_layout Layout.\n */\n function LinearRing(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n if (opt_layout !== undefined && !Array.isArray(coordinates[0])) {\n _this.setFlatCoordinates(opt_layout, /** @type {Array} */ (coordinates));\n }\n else {\n _this.setCoordinates(/** @type {Array} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Make a complete copy of the geometry.\n * @return {!LinearRing} Clone.\n * @override\n * @api\n */\n LinearRing.prototype.clone = function () {\n return new LinearRing(this.flatCoordinates.slice(), this.layout);\n };\n /**\n * @inheritDoc\n */\n LinearRing.prototype.closestPointXY = function (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(maxSquaredDelta(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * Return the area of the linear ring on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n LinearRing.prototype.getArea = function () {\n return linearRingArea(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * Return the coordinates of the linear ring.\n * @return {Array} Coordinates.\n * @override\n * @api\n */\n LinearRing.prototype.getCoordinates = function () {\n return inflateCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * @inheritDoc\n */\n LinearRing.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return new LinearRing(simplifiedFlatCoordinates, GeometryLayout.XY);\n };\n /**\n * @inheritDoc\n * @api\n */\n LinearRing.prototype.getType = function () {\n return GeometryType.LINEAR_RING;\n };\n /**\n * @inheritDoc\n */\n LinearRing.prototype.intersectsExtent = function (extent) {\n return false;\n };\n /**\n * Set the coordinates of the linear ring.\n * @param {!Array} coordinates Coordinates.\n * @param {GeometryLayout=} opt_layout Layout.\n * @override\n * @api\n */\n LinearRing.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return LinearRing;\n}(SimpleGeometry));\nexport default LinearRing;\n//# sourceMappingURL=LinearRing.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Point\n */\nimport { createOrUpdateFromCoordinate, containsXY } from '../extent.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { deflateCoordinate } from './flat/deflate.js';\nimport { squaredDistance as squaredDx } from '../math.js';\n/**\n * @classdesc\n * Point geometry.\n *\n * @api\n */\nvar Point = /** @class */ (function (_super) {\n __extends(Point, _super);\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n function Point(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n _this.setCoordinates(coordinates, opt_layout);\n return _this;\n }\n /**\n * Make a complete copy of the geometry.\n * @return {!Point} Clone.\n * @override\n * @api\n */\n Point.prototype.clone = function () {\n var point = new Point(this.flatCoordinates.slice(), this.layout);\n return point;\n };\n /**\n * @inheritDoc\n */\n Point.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n var flatCoordinates = this.flatCoordinates;\n var squaredDistance = squaredDx(x, y, flatCoordinates[0], flatCoordinates[1]);\n if (squaredDistance < minSquaredDistance) {\n var stride = this.stride;\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n }\n else {\n return minSquaredDistance;\n }\n };\n /**\n * Return the coordinate of the point.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinates.\n * @override\n * @api\n */\n Point.prototype.getCoordinates = function () {\n return !this.flatCoordinates ? [] : this.flatCoordinates.slice();\n };\n /**\n * @inheritDoc\n */\n Point.prototype.computeExtent = function (extent) {\n return createOrUpdateFromCoordinate(this.flatCoordinates, extent);\n };\n /**\n * @inheritDoc\n * @api\n */\n Point.prototype.getType = function () {\n return GeometryType.POINT;\n };\n /**\n * @inheritDoc\n * @api\n */\n Point.prototype.intersectsExtent = function (extent) {\n return containsXY(extent, this.flatCoordinates[0], this.flatCoordinates[1]);\n };\n /**\n * @inheritDoc\n * @api\n */\n Point.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 0);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinate(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return Point;\n}(SimpleGeometry));\nexport default Point;\n//# sourceMappingURL=Point.js.map","/**\n * @module ol/geom/flat/contains\n */\nimport { forEachCorner } from '../../extent.js';\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(flatCoordinates, offset, end, stride, extent) {\n var outside = forEachCorner(extent, \n /**\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains (x, y).\n */\n function (coordinate) {\n return !linearRingContainsXY(flatCoordinates, offset, end, stride, coordinate[0], coordinate[1]);\n });\n return !outside;\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(flatCoordinates, offset, end, stride, x, y) {\n // http://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 var wn = 0;\n var x1 = flatCoordinates[end - stride];\n var y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var 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 }\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 * @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(flatCoordinates, offset, ends, stride, x, y) {\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 (var i = 1, ii = ends.length; i < ii; ++i) {\n if (linearRingContainsXY(flatCoordinates, ends[i - 1], ends[i], stride, x, y)) {\n return false;\n }\n }\n return true;\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(flatCoordinates, offset, endss, stride, x, y) {\n if (endss.length === 0) {\n return false;\n }\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var 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//# sourceMappingURL=contains.js.map","/**\n * @module ol/geom/flat/interiorpoint\n */\nimport { numberSafeCompareFunction } from '../../array.js';\nimport { linearRingsContainsXY } from './contains.js';\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=} opt_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(flatCoordinates, offset, ends, stride, flatCenters, flatCentersOffset, opt_dest) {\n var i, ii, x, x1, x2, y1, y2;\n var y = flatCenters[flatCentersOffset + 1];\n /** @type {Array} */\n var intersections = [];\n // Calculate intersections with the horizontal line\n for (var r = 0, rr = ends.length; r < rr; ++r) {\n var 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 var pointX = NaN;\n var maxSegmentLength = -Infinity;\n intersections.sort(numberSafeCompareFunction);\n x1 = intersections[0];\n for (i = 1, ii = intersections.length; i < ii; ++i) {\n x2 = intersections[i];\n var 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 (opt_dest) {\n opt_dest.push(pointX, y, maxSegmentLength);\n return opt_dest;\n }\n else {\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(flatCoordinates, offset, endss, stride, flatCenters) {\n var interiorPoints = [];\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n interiorPoints = getInteriorPointOfArray(flatCoordinates, offset, ends, stride, flatCenters, 2 * i, interiorPoints);\n offset = ends[ends.length - 1];\n }\n return interiorPoints;\n}\n//# sourceMappingURL=interiorpoint.js.map","/**\n * @module ol/geom/flat/segments\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 var point1 = [flatCoordinates[offset], flatCoordinates[offset + 1]];\n var point2 = [];\n var ret;\n for (; (offset + stride) < end; offset += stride) {\n point2[0] = flatCoordinates[offset + stride];\n point2[1] = flatCoordinates[offset + stride + 1];\n ret = callback(point1, point2);\n if (ret) {\n return ret;\n }\n point1[0] = point2[0];\n point1[1] = point2[1];\n }\n return false;\n}\n//# sourceMappingURL=segments.js.map","/**\n * @module ol/geom/flat/intersectsextent\n */\nimport { containsExtent, createEmpty, extendFlatCoordinates, intersects, intersectsSegment } from '../../extent.js';\nimport { linearRingContainsXY, linearRingContainsExtent } from './contains.js';\nimport { forEach as forEachSegment } from './segments.js';\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(flatCoordinates, offset, end, stride, extent) {\n var coordinatesExtent = extendFlatCoordinates(createEmpty(), flatCoordinates, offset, end, stride);\n if (!intersects(extent, coordinatesExtent)) {\n return false;\n }\n if (containsExtent(extent, coordinatesExtent)) {\n return true;\n }\n if (coordinatesExtent[0] >= extent[0] &&\n coordinatesExtent[2] <= extent[2]) {\n return true;\n }\n if (coordinatesExtent[1] >= extent[1] &&\n coordinatesExtent[3] <= extent[3]) {\n return true;\n }\n return forEachSegment(flatCoordinates, offset, end, 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 * @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(flatCoordinates, offset, ends, stride, extent) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n if (intersectsLineString(flatCoordinates, offset, ends[i], stride, extent)) {\n return true;\n }\n offset = ends[i];\n }\n return false;\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(flatCoordinates, offset, end, stride, extent) {\n if (intersectsLineString(flatCoordinates, offset, end, stride, extent)) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[1])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[3])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[1])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[3])) {\n return true;\n }\n return false;\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(flatCoordinates, offset, ends, stride, extent) {\n if (!intersectsLinearRing(flatCoordinates, offset, ends[0], stride, extent)) {\n return false;\n }\n if (ends.length === 1) {\n return true;\n }\n for (var i = 1, ii = ends.length; i < ii; ++i) {\n if (linearRingContainsExtent(flatCoordinates, ends[i - 1], ends[i], stride, extent)) {\n if (!intersectsLineString(flatCoordinates, ends[i - 1], ends[i], stride, extent)) {\n return false;\n }\n }\n }\n return true;\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(flatCoordinates, offset, endss, stride, extent) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n//# sourceMappingURL=intersectsextent.js.map","/**\n * @module ol/geom/flat/reverse\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 (var i = 0; i < stride; ++i) {\n var 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//# sourceMappingURL=reverse.js.map","/**\n * @module ol/geom/flat/orient\n */\nimport { coordinates as reverseCoordinates } from './reverse.js';\n/**\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 // http://tinyurl.com/clockwise-method\n // https://github.com/OSGeo/gdal/blob/trunk/gdal/ogr/ogrlinearring.cpp\n var edge = 0;\n var x1 = flatCoordinates[end - stride];\n var y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n edge += (x2 - x1) * (y2 + y1);\n x1 = x2;\n y1 = y2;\n }\n return edge > 0;\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 `opt_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=} opt_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(flatCoordinates, offset, ends, stride, opt_right) {\n var right = opt_right !== undefined ? opt_right : false;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var isClockwise = linearRingIsClockwise(flatCoordinates, offset, end, stride);\n if (i === 0) {\n if ((right && isClockwise) || (!right && !isClockwise)) {\n return false;\n }\n }\n else {\n if ((right && !isClockwise) || (!right && isClockwise)) {\n return false;\n }\n }\n offset = end;\n }\n return true;\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 `opt_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=} opt_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(flatCoordinates, offset, endss, stride, opt_right) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (!linearRingsAreOriented(flatCoordinates, offset, ends, stride, opt_right)) {\n return false;\n }\n if (ends.length) {\n offset = ends[ends.length - 1];\n }\n }\n return true;\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 `opt_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=} opt_right Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRings(flatCoordinates, offset, ends, stride, opt_right) {\n var right = opt_right !== undefined ? opt_right : false;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var isClockwise = linearRingIsClockwise(flatCoordinates, offset, end, stride);\n var reverse = 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 * 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 `opt_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=} opt_right Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRingsArray(flatCoordinates, offset, endss, stride, opt_right) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n offset = orientLinearRings(flatCoordinates, offset, endss[i], stride, opt_right);\n }\n return offset;\n}\n//# sourceMappingURL=orient.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Polygon\n */\nimport { extend } from '../array.js';\nimport { closestSquaredDistanceXY, getCenter } from '../extent.js';\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport LinearRing from './LinearRing.js';\nimport Point from './Point.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { offset as sphereOffset } from '../sphere.js';\nimport { linearRings as linearRingsArea } from './flat/area.js';\nimport { assignClosestArrayPoint, arrayMaxSquaredDelta } from './flat/closest.js';\nimport { linearRingsContainsXY } from './flat/contains.js';\nimport { deflateCoordinatesArray } from './flat/deflate.js';\nimport { inflateCoordinatesArray } from './flat/inflate.js';\nimport { getInteriorPointOfArray } from './flat/interiorpoint.js';\nimport { intersectsLinearRingArray } from './flat/intersectsextent.js';\nimport { linearRingsAreOriented, orientLinearRings } from './flat/orient.js';\nimport { quantizeArray } from './flat/simplify.js';\nimport { modulo } from '../math.js';\n/**\n * @classdesc\n * Polygon geometry.\n *\n * @api\n */\nvar Polygon = /** @class */ (function (_super) {\n __extends(Polygon, _super);\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 * `opt_layout` and `opt_ends` are also accepted.)\n * @param {GeometryLayout=} opt_layout Layout.\n * @param {Array=} opt_ends Ends (for internal use with flat coordinates).\n */\n function Polygon(coordinates, opt_layout, opt_ends) {\n var _this = _super.call(this) || this;\n /**\n * @type {Array}\n * @private\n */\n _this.ends_ = [];\n /**\n * @private\n * @type {number}\n */\n _this.flatInteriorPointRevision_ = -1;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n _this.flatInteriorPoint_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.orientedRevision_ = -1;\n /**\n * @private\n * @type {Array}\n */\n _this.orientedFlatCoordinates_ = null;\n if (opt_layout !== undefined && opt_ends) {\n _this.setFlatCoordinates(opt_layout, /** @type {Array} */ (coordinates));\n _this.ends_ = opt_ends;\n }\n else {\n _this.setCoordinates(/** @type {Array>} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Append the passed linear ring to this polygon.\n * @param {LinearRing} linearRing Linear ring.\n * @api\n */\n Polygon.prototype.appendLinearRing = function (linearRing) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = linearRing.getFlatCoordinates().slice();\n }\n else {\n extend(this.flatCoordinates, linearRing.getFlatCoordinates());\n }\n this.ends_.push(this.flatCoordinates.length);\n this.changed();\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!Polygon} Clone.\n * @override\n * @api\n */\n Polygon.prototype.clone = function () {\n return new Polygon(this.flatCoordinates.slice(), this.layout, this.ends_.slice());\n };\n /**\n * @inheritDoc\n */\n Polygon.prototype.closestPointXY = function (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(arrayMaxSquaredDelta(this.flatCoordinates, 0, this.ends_, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestArrayPoint(this.flatCoordinates, 0, this.ends_, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * @inheritDoc\n */\n Polygon.prototype.containsXY = function (x, y) {\n return linearRingsContainsXY(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, x, y);\n };\n /**\n * Return the area of the polygon on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n Polygon.prototype.getArea = function () {\n return linearRingsArea(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride);\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=} opt_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 * @override\n * @api\n */\n Polygon.prototype.getCoordinates = function (opt_right) {\n var flatCoordinates;\n if (opt_right !== undefined) {\n flatCoordinates = this.getOrientedFlatCoordinates().slice();\n orientLinearRings(flatCoordinates, 0, this.ends_, this.stride, opt_right);\n }\n else {\n flatCoordinates = this.flatCoordinates;\n }\n return inflateCoordinatesArray(flatCoordinates, 0, this.ends_, this.stride);\n };\n /**\n * @return {Array} Ends.\n */\n Polygon.prototype.getEnds = function () {\n return this.ends_;\n };\n /**\n * @return {Array} Interior point.\n */\n Polygon.prototype.getFlatInteriorPoint = function () {\n if (this.flatInteriorPointRevision_ != this.getRevision()) {\n var flatCenter = getCenter(this.getExtent());\n this.flatInteriorPoint_ = getInteriorPointOfArray(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, flatCenter, 0);\n this.flatInteriorPointRevision_ = this.getRevision();\n }\n return this.flatInteriorPoint_;\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 Polygon.prototype.getInteriorPoint = function () {\n return new Point(this.getFlatInteriorPoint(), GeometryLayout.XYM);\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 Polygon.prototype.getLinearRingCount = function () {\n return this.ends_.length;\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} Linear ring.\n * @api\n */\n Polygon.prototype.getLinearRing = function (index) {\n if (index < 0 || this.ends_.length <= index) {\n return null;\n }\n return new LinearRing(this.flatCoordinates.slice(index === 0 ? 0 : this.ends_[index - 1], this.ends_[index]), this.layout);\n };\n /**\n * Return the linear rings of the polygon.\n * @return {Array} Linear rings.\n * @api\n */\n Polygon.prototype.getLinearRings = function () {\n var layout = this.layout;\n var flatCoordinates = this.flatCoordinates;\n var ends = this.ends_;\n var linearRings = [];\n var offset = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var linearRing = new LinearRing(flatCoordinates.slice(offset, end), layout);\n linearRings.push(linearRing);\n offset = end;\n }\n return linearRings;\n };\n /**\n * @return {Array} Oriented flat coordinates.\n */\n Polygon.prototype.getOrientedFlatCoordinates = function () {\n if (this.orientedRevision_ != this.getRevision()) {\n var flatCoordinates = this.flatCoordinates;\n if (linearRingsAreOriented(flatCoordinates, 0, this.ends_, this.stride)) {\n this.orientedFlatCoordinates_ = flatCoordinates;\n }\n else {\n this.orientedFlatCoordinates_ = flatCoordinates.slice();\n this.orientedFlatCoordinates_.length =\n orientLinearRings(this.orientedFlatCoordinates_, 0, this.ends_, this.stride);\n }\n this.orientedRevision_ = this.getRevision();\n }\n return this.orientedFlatCoordinates_;\n };\n /**\n * @inheritDoc\n */\n Polygon.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n var simplifiedEnds = [];\n simplifiedFlatCoordinates.length = quantizeArray(this.flatCoordinates, 0, this.ends_, this.stride, Math.sqrt(squaredTolerance), simplifiedFlatCoordinates, 0, simplifiedEnds);\n return new Polygon(simplifiedFlatCoordinates, GeometryLayout.XY, simplifiedEnds);\n };\n /**\n * @inheritDoc\n * @api\n */\n Polygon.prototype.getType = function () {\n return GeometryType.POLYGON;\n };\n /**\n * @inheritDoc\n * @api\n */\n Polygon.prototype.intersectsExtent = function (extent) {\n return intersectsLinearRingArray(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, extent);\n };\n /**\n * Set the coordinates of the polygon.\n * @param {!Array>} coordinates Coordinates.\n * @param {GeometryLayout=} opt_layout Layout.\n * @override\n * @api\n */\n Polygon.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 2);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n var ends = deflateCoordinatesArray(this.flatCoordinates, 0, coordinates, this.stride, this.ends_);\n this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1];\n this.changed();\n };\n return Polygon;\n}(SimpleGeometry));\nexport default Polygon;\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.\n * @param {number=} opt_n Optional number of vertices for the resulting\n * polygon. Default is `32`.\n * @param {number=} opt_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, opt_n, opt_sphereRadius) {\n var n = opt_n ? opt_n : 32;\n /** @type {Array} */\n var flatCoordinates = [];\n for (var i = 0; i < n; ++i) {\n extend(flatCoordinates, sphereOffset(center, radius, 2 * Math.PI * i / n, opt_sphereRadius));\n }\n flatCoordinates.push(flatCoordinates[0], flatCoordinates[1]);\n return new Polygon(flatCoordinates, GeometryLayout.XY, [flatCoordinates.length]);\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 var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var flatCoordinates = [minX, minY, minX, maxY, maxX, maxY, maxX, minY, minX, minY];\n return new Polygon(flatCoordinates, GeometryLayout.XY, [flatCoordinates.length]);\n}\n/**\n * Create a regular polygon from a circle.\n * @param {import(\"./Circle.js\").default} circle Circle geometry.\n * @param {number=} opt_sides Number of sides of the polygon. Default is 32.\n * @param {number=} opt_angle Start angle for the first vertex of the polygon in\n * radians. Default is 0.\n * @return {Polygon} Polygon geometry.\n * @api\n */\nexport function fromCircle(circle, opt_sides, opt_angle) {\n var sides = opt_sides ? opt_sides : 32;\n var stride = circle.getStride();\n var layout = circle.getLayout();\n var center = circle.getCenter();\n var arrayLength = stride * (sides + 1);\n var flatCoordinates = new Array(arrayLength);\n for (var i = 0; i < arrayLength; i += stride) {\n flatCoordinates[i] = 0;\n flatCoordinates[i + 1] = 0;\n for (var j = 2; j < stride; j++) {\n flatCoordinates[i + j] = center[j];\n }\n }\n var ends = [flatCoordinates.length];\n var polygon = new Polygon(flatCoordinates, layout, ends);\n makeRegular(polygon, center, circle.getRadius(), opt_angle);\n return polygon;\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=} opt_angle Start angle for the first vertex of the polygon in\n * radians. Default is 0.\n */\nexport function makeRegular(polygon, center, radius, opt_angle) {\n var flatCoordinates = polygon.getFlatCoordinates();\n var stride = polygon.getStride();\n var sides = flatCoordinates.length / stride - 1;\n var startAngle = opt_angle ? opt_angle : 0;\n for (var i = 0; i <= sides; ++i) {\n var offset = i * stride;\n var 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//# sourceMappingURL=Polygon.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Geolocation\n */\nimport BaseObject, { getChangeEventType } from './Object.js';\nimport BaseEvent from './events/Event.js';\nimport EventType from './events/EventType.js';\nimport { circular as circularPolygon } from './geom/Polygon.js';\nimport { toRadians } from './math.js';\nimport { get as getProjection, getTransformFromProjections, identityTransform } from './proj.js';\n/**\n * @enum {string}\n */\nvar Property = {\n ACCURACY: 'accuracy',\n ACCURACY_GEOMETRY: 'accuracyGeometry',\n ALTITUDE: 'altitude',\n ALTITUDE_ACCURACY: 'altitudeAccuracy',\n HEADING: 'heading',\n POSITION: 'position',\n PROJECTION: 'projection',\n SPEED: 'speed',\n TRACKING: 'tracking',\n TRACKING_OPTIONS: 'trackingOptions'\n};\n/**\n * @classdesc\n * Events emitted on Geolocation error.\n */\nvar GeolocationError = /** @class */ (function (_super) {\n __extends(GeolocationError, _super);\n /**\n * @param {PositionError} error error object.\n */\n function GeolocationError(error) {\n var _this = _super.call(this, EventType.ERROR) || this;\n /**\n * @type {number}\n */\n _this.code = error.code;\n /**\n * @type {string}\n */\n _this.message = error.message;\n return _this;\n }\n return GeolocationError;\n}(BaseEvent));\n/**\n * @typedef {Object} Options\n * @property {boolean} [tracking=false] Start Tracking right after\n * instantiation.\n * @property {PositionOptions} [trackingOptions] Tracking options.\n * See http://www.w3.org/TR/geolocation-API/#position_options_interface.\n * @property {import(\"./proj.js\").ProjectionLike} [projection] The projection the position\n * is reported in.\n */\n/**\n * @classdesc\n * Helper class for providing HTML5 Geolocation capabilities.\n * The [Geolocation API](http://www.w3.org/TR/geolocation-API/)\n * is used to locate a user's position.\n *\n * To get notified of position changes, register a listener for the generic\n * `change` event on your instance of {@link module:ol/Geolocation~Geolocation}.\n *\n * Example:\n *\n * var geolocation = new Geolocation({\n * // take the projection to use from the map's view\n * projection: view.getProjection()\n * });\n * // listen to changes in position\n * geolocation.on('change', function(evt) {\n * window.console.log(geolocation.getPosition());\n * });\n *\n * @fires module:ol/events/Event~BaseEvent#event:error\n * @api\n */\nvar Geolocation = /** @class */ (function (_super) {\n __extends(Geolocation, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function Geolocation(opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options || {};\n /**\n * The unprojected (EPSG:4326) device position.\n * @private\n * @type {?import(\"./coordinate.js\").Coordinate}\n */\n _this.position_ = null;\n /**\n * @private\n * @type {import(\"./proj.js\").TransformFunction}\n */\n _this.transform_ = identityTransform;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.watchId_ = undefined;\n _this.addEventListener(getChangeEventType(Property.PROJECTION), _this.handleProjectionChanged_);\n _this.addEventListener(getChangeEventType(Property.TRACKING), _this.handleTrackingChanged_);\n if (options.projection !== undefined) {\n _this.setProjection(options.projection);\n }\n if (options.trackingOptions !== undefined) {\n _this.setTrackingOptions(options.trackingOptions);\n }\n _this.setTracking(options.tracking !== undefined ? options.tracking : false);\n return _this;\n }\n /**\n * @inheritDoc\n */\n Geolocation.prototype.disposeInternal = function () {\n this.setTracking(false);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * @private\n */\n Geolocation.prototype.handleProjectionChanged_ = function () {\n var projection = this.getProjection();\n if (projection) {\n this.transform_ = getTransformFromProjections(getProjection('EPSG:4326'), projection);\n if (this.position_) {\n this.set(Property.POSITION, this.transform_(this.position_));\n }\n }\n };\n /**\n * @private\n */\n Geolocation.prototype.handleTrackingChanged_ = function () {\n if ('geolocation' in navigator) {\n var tracking = this.getTracking();\n if (tracking && this.watchId_ === undefined) {\n this.watchId_ = navigator.geolocation.watchPosition(this.positionChange_.bind(this), this.positionError_.bind(this), this.getTrackingOptions());\n }\n else if (!tracking && this.watchId_ !== undefined) {\n navigator.geolocation.clearWatch(this.watchId_);\n this.watchId_ = undefined;\n }\n }\n };\n /**\n * @private\n * @param {Position} position position event.\n */\n Geolocation.prototype.positionChange_ = function (position) {\n var coords = position.coords;\n this.set(Property.ACCURACY, coords.accuracy);\n this.set(Property.ALTITUDE, coords.altitude === null ? undefined : coords.altitude);\n this.set(Property.ALTITUDE_ACCURACY, coords.altitudeAccuracy === null ?\n undefined : coords.altitudeAccuracy);\n this.set(Property.HEADING, coords.heading === null ?\n undefined : toRadians(coords.heading));\n if (!this.position_) {\n this.position_ = [coords.longitude, coords.latitude];\n }\n else {\n this.position_[0] = coords.longitude;\n this.position_[1] = coords.latitude;\n }\n var projectedPosition = this.transform_(this.position_);\n this.set(Property.POSITION, projectedPosition);\n this.set(Property.SPEED, coords.speed === null ? undefined : coords.speed);\n var geometry = circularPolygon(this.position_, coords.accuracy);\n geometry.applyTransform(this.transform_);\n this.set(Property.ACCURACY_GEOMETRY, geometry);\n this.changed();\n };\n /**\n * @private\n * @param {PositionError} error error object.\n */\n Geolocation.prototype.positionError_ = function (error) {\n this.setTracking(false);\n this.dispatchEvent(new GeolocationError(error));\n };\n /**\n * Get the accuracy of the position in meters.\n * @return {number|undefined} The accuracy of the position measurement in\n * meters.\n * @observable\n * @api\n */\n Geolocation.prototype.getAccuracy = function () {\n return /** @type {number|undefined} */ (this.get(Property.ACCURACY));\n };\n /**\n * Get a geometry of the position accuracy.\n * @return {?import(\"./geom/Polygon.js\").default} A geometry of the position accuracy.\n * @observable\n * @api\n */\n Geolocation.prototype.getAccuracyGeometry = function () {\n return (\n /** @type {?import(\"./geom/Polygon.js\").default} */ (this.get(Property.ACCURACY_GEOMETRY) || null));\n };\n /**\n * Get the altitude associated with the position.\n * @return {number|undefined} The altitude of the position in meters above mean\n * sea level.\n * @observable\n * @api\n */\n Geolocation.prototype.getAltitude = function () {\n return /** @type {number|undefined} */ (this.get(Property.ALTITUDE));\n };\n /**\n * Get the altitude accuracy of the position.\n * @return {number|undefined} The accuracy of the altitude measurement in\n * meters.\n * @observable\n * @api\n */\n Geolocation.prototype.getAltitudeAccuracy = function () {\n return /** @type {number|undefined} */ (this.get(Property.ALTITUDE_ACCURACY));\n };\n /**\n * Get the heading as radians clockwise from North.\n * Note: depending on the browser, the heading is only defined if the `enableHighAccuracy`\n * is set to `true` in the tracking options.\n * @return {number|undefined} The heading of the device in radians from north.\n * @observable\n * @api\n */\n Geolocation.prototype.getHeading = function () {\n return /** @type {number|undefined} */ (this.get(Property.HEADING));\n };\n /**\n * Get the position of the device.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The current position of the device reported\n * in the current projection.\n * @observable\n * @api\n */\n Geolocation.prototype.getPosition = function () {\n return (\n /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (this.get(Property.POSITION)));\n };\n /**\n * Get the projection associated with the position.\n * @return {import(\"./proj/Projection.js\").default|undefined} The projection the position is\n * reported in.\n * @observable\n * @api\n */\n Geolocation.prototype.getProjection = function () {\n return (\n /** @type {import(\"./proj/Projection.js\").default|undefined} */ (this.get(Property.PROJECTION)));\n };\n /**\n * Get the speed in meters per second.\n * @return {number|undefined} The instantaneous speed of the device in meters\n * per second.\n * @observable\n * @api\n */\n Geolocation.prototype.getSpeed = function () {\n return /** @type {number|undefined} */ (this.get(Property.SPEED));\n };\n /**\n * Determine if the device location is being tracked.\n * @return {boolean} The device location is being tracked.\n * @observable\n * @api\n */\n Geolocation.prototype.getTracking = function () {\n return /** @type {boolean} */ (this.get(Property.TRACKING));\n };\n /**\n * Get the tracking options.\n * See http://www.w3.org/TR/geolocation-API/#position-options.\n * @return {PositionOptions|undefined} PositionOptions as defined by\n * the [HTML5 Geolocation spec\n * ](http://www.w3.org/TR/geolocation-API/#position_options_interface).\n * @observable\n * @api\n */\n Geolocation.prototype.getTrackingOptions = function () {\n return /** @type {PositionOptions|undefined} */ (this.get(Property.TRACKING_OPTIONS));\n };\n /**\n * Set the projection to use for transforming the coordinates.\n * @param {import(\"./proj.js\").ProjectionLike} projection The projection the position is\n * reported in.\n * @observable\n * @api\n */\n Geolocation.prototype.setProjection = function (projection) {\n this.set(Property.PROJECTION, getProjection(projection));\n };\n /**\n * Enable or disable tracking.\n * @param {boolean} tracking Enable tracking.\n * @observable\n * @api\n */\n Geolocation.prototype.setTracking = function (tracking) {\n this.set(Property.TRACKING, tracking);\n };\n /**\n * Set the tracking options.\n * See http://www.w3.org/TR/geolocation-API/#position-options.\n * @param {PositionOptions} options PositionOptions as defined by the\n * [HTML5 Geolocation spec\n * ](http://www.w3.org/TR/geolocation-API/#position_options_interface).\n * @observable\n * @api\n */\n Geolocation.prototype.setTrackingOptions = function (options) {\n this.set(Property.TRACKING_OPTIONS, options);\n };\n return Geolocation;\n}(BaseObject));\nexport default Geolocation;\n//# sourceMappingURL=Geolocation.js.map","/**\n * @module ol/Kinetic\n */\n/**\n * @classdesc\n * Implementation of inertial deceleration for map movement.\n *\n * @api\n */\nvar Kinetic = /** @class */ (function () {\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 function Kinetic(decay, minVelocity, delay) {\n /**\n * @private\n * @type {number}\n */\n this.decay_ = decay;\n /**\n * @private\n * @type {number}\n */\n this.minVelocity_ = minVelocity;\n /**\n * @private\n * @type {number}\n */\n this.delay_ = delay;\n /**\n * @private\n * @type {Array}\n */\n this.points_ = [];\n /**\n * @private\n * @type {number}\n */\n this.angle_ = 0;\n /**\n * @private\n * @type {number}\n */\n this.initialVelocity_ = 0;\n }\n /**\n * FIXME empty description for jsdoc\n */\n Kinetic.prototype.begin = function () {\n this.points_.length = 0;\n this.angle_ = 0;\n this.initialVelocity_ = 0;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n */\n Kinetic.prototype.update = function (x, y) {\n this.points_.push(x, y, Date.now());\n };\n /**\n * @return {boolean} Whether we should do kinetic animation.\n */\n Kinetic.prototype.end = function () {\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 var delay = Date.now() - this.delay_;\n var 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 // get the first point which still falls into the delay time\n var firstIndex = lastIndex - 3;\n while (firstIndex > 0 && this.points_[firstIndex + 2] > delay) {\n firstIndex -= 3;\n }\n var 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 var dx = this.points_[lastIndex] - this.points_[firstIndex];\n var 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 * @return {number} Total distance travelled (pixels).\n */\n Kinetic.prototype.getDistance = function () {\n return (this.minVelocity_ - this.initialVelocity_) / this.decay_;\n };\n /**\n * @return {number} Angle of the kinetic panning animation (radians).\n */\n Kinetic.prototype.getAngle = function () {\n return this.angle_;\n };\n return Kinetic;\n}());\nexport default Kinetic;\n//# sourceMappingURL=Kinetic.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/MapEvent\n */\nimport Event from './events/Event.js';\n/**\n * @classdesc\n * Events emitted as map events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map event.\n */\nvar MapEvent = /** @class */ (function (_super) {\n __extends(MapEvent, _super);\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n function MapEvent(type, map, opt_frameState) {\n var _this = _super.call(this, type) || this;\n /**\n * The map where the event occurred.\n * @type {import(\"./PluggableMap.js\").default}\n * @api\n */\n _this.map = map;\n /**\n * The frame state at the time of the event.\n * @type {?import(\"./PluggableMap.js\").FrameState}\n * @api\n */\n _this.frameState = opt_frameState !== undefined ? opt_frameState : null;\n return _this;\n }\n return MapEvent;\n}(Event));\nexport default MapEvent;\n//# sourceMappingURL=MapEvent.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/MapBrowserEvent\n */\nimport MapEvent from './MapEvent.js';\n/**\n * @classdesc\n * Events emitted as map browser events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map browser event.\n */\nvar MapBrowserEvent = /** @class */ (function (_super) {\n __extends(MapBrowserEvent, _super);\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {Event} browserEvent Browser event.\n * @param {boolean=} opt_dragging Is the map currently being dragged?\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n function MapBrowserEvent(type, map, browserEvent, opt_dragging, opt_frameState) {\n var _this = _super.call(this, type, map, opt_frameState) || this;\n /**\n * The original browser event.\n * @const\n * @type {Event}\n * @api\n */\n _this.originalEvent = browserEvent;\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 * 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 * 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 = opt_dragging !== undefined ? opt_dragging : false;\n return _this;\n }\n Object.defineProperty(MapBrowserEvent.prototype, \"pixel\", {\n /**\n * The map pixel relative to the viewport corresponding to the original browser event.\n * @type {import(\"./pixel.js\").Pixel}\n * @api\n */\n get: function () {\n if (!this.pixel_) {\n this.pixel_ = this.map.getEventPixel(this.originalEvent);\n }\n return this.pixel_;\n },\n set: function (pixel) {\n this.pixel_ = pixel;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MapBrowserEvent.prototype, \"coordinate\", {\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: function () {\n if (!this.coordinate_) {\n this.coordinate_ = this.map.getCoordinateFromPixel(this.pixel);\n }\n return this.coordinate_;\n },\n set: function (coordinate) {\n this.coordinate_ = coordinate;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Prevents the default browser action.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault.\n * @override\n * @api\n */\n MapBrowserEvent.prototype.preventDefault = function () {\n _super.prototype.preventDefault.call(this);\n this.originalEvent.preventDefault();\n };\n /**\n * Prevents further propagation of the current event.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation.\n * @override\n * @api\n */\n MapBrowserEvent.prototype.stopPropagation = function () {\n _super.prototype.stopPropagation.call(this);\n this.originalEvent.stopPropagation();\n };\n return MapBrowserEvent;\n}(MapEvent));\nexport default MapBrowserEvent;\n//# sourceMappingURL=MapBrowserEvent.js.map","/**\n * @module ol/has\n */\nvar ua = typeof navigator !== 'undefined' ?\n navigator.userAgent.toLowerCase() : '';\n/**\n * User agent string says we are dealing with Firefox as browser.\n * @type {boolean}\n */\nexport var FIREFOX = ua.indexOf('firefox') !== -1;\n/**\n * User agent string says we are dealing with Safari as browser.\n * @type {boolean}\n */\nexport var SAFARI = ua.indexOf('safari') !== -1 && ua.indexOf('chrom') == -1;\n/**\n * User agent string says we are dealing with a WebKit engine.\n * @type {boolean}\n */\nexport var WEBKIT = ua.indexOf('webkit') !== -1 && ua.indexOf('edge') == -1;\n/**\n * User agent string says we are dealing with a Mac as platform.\n * @type {boolean}\n */\nexport var MAC = ua.indexOf('macintosh') !== -1;\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 var DEVICE_PIXEL_RATIO = typeof devicePixelRatio !== 'undefined' ? devicePixelRatio : 1;\n/**\n * The execution context is a worker with OffscreenCanvas available.\n * @const\n * @type {boolean}\n */\nexport var WORKER_OFFSCREEN_CANVAS = typeof WorkerGlobalScope !== 'undefined' && typeof OffscreenCanvas !== 'undefined' &&\n self instanceof WorkerGlobalScope; //eslint-disable-line\n/**\n * Image.prototype.decode() is supported.\n * @type {boolean}\n */\nexport var IMAGE_DECODE = typeof Image !== 'undefined' && Image.prototype.decode;\n/**\n * @type {boolean}\n */\nexport var PASSIVE_EVENT_LISTENERS = (function () {\n var passive = false;\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passive = true;\n }\n });\n window.addEventListener('_', null, options);\n window.removeEventListener('_', null, options);\n }\n catch (error) {\n // passive not supported\n }\n return passive;\n})();\n//# sourceMappingURL=has.js.map","/**\n * @module ol/MapBrowserEventType\n */\nimport EventType from './events/EventType.js';\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 * 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 * A true double click, with no dragging.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#dblclick\n * @api\n */\n DBLCLICK: EventType.DBLCLICK,\n /**\n * Triggered when a pointer is dragged.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointerdrag\n * @api\n */\n POINTERDRAG: 'pointerdrag',\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 POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel'\n};\n//# sourceMappingURL=MapBrowserEventType.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/MapBrowserPointerEvent\n */\nimport MapBrowserEvent from './MapBrowserEvent.js';\nvar MapBrowserPointerEvent = /** @class */ (function (_super) {\n __extends(MapBrowserPointerEvent, _super);\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {PointerEvent} pointerEvent Pointer event.\n * @param {boolean=} opt_dragging Is the map currently being dragged?\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n function MapBrowserPointerEvent(type, map, pointerEvent, opt_dragging, opt_frameState) {\n var _this = _super.call(this, type, map, pointerEvent, opt_dragging, opt_frameState) || this;\n /**\n * @const\n * @type {PointerEvent}\n */\n _this.pointerEvent = pointerEvent;\n return _this;\n }\n return MapBrowserPointerEvent;\n}(MapBrowserEvent));\nexport default MapBrowserPointerEvent;\n//# sourceMappingURL=MapBrowserPointerEvent.js.map","/**\n * @module ol/pointer/EventType\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//# sourceMappingURL=EventType.js.map","/**\n * @module ol/MapBrowserEventHandler\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport 'elm-pep';\nimport { DEVICE_PIXEL_RATIO, PASSIVE_EVENT_LISTENERS } from './has.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapBrowserPointerEvent from './MapBrowserPointerEvent.js';\nimport { listen, unlistenByKey } from './events.js';\nimport EventTarget from './events/Target.js';\nimport PointerEventType from './pointer/EventType.js';\nimport EventType from './events/EventType.js';\nvar MapBrowserEventHandler = /** @class */ (function (_super) {\n __extends(MapBrowserEventHandler, _super);\n /**\n * @param {import(\"./PluggableMap.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 function MapBrowserEventHandler(map, moveTolerance) {\n var _this = _super.call(this, map) || this;\n /**\n * This is the element that we will listen to the real events on.\n * @type {import(\"./PluggableMap.js\").default}\n * @private\n */\n _this.map_ = map;\n /**\n * @type {any}\n * @private\n */\n _this.clickTimeoutId_;\n /**\n * @type {boolean}\n * @private\n */\n _this.dragging_ = false;\n /**\n * @type {!Array}\n * @private\n */\n _this.dragListenerKeys_ = [];\n /**\n * @type {number}\n * @private\n */\n _this.moveTolerance_ = moveTolerance ?\n moveTolerance * DEVICE_PIXEL_RATIO : DEVICE_PIXEL_RATIO;\n /**\n * The most recent \"down\" type event (or null if none have occurred).\n * Set on pointerdown.\n * @type {PointerEvent}\n * @private\n */\n _this.down_ = null;\n var element = _this.map_.getViewport();\n /**\n * @type {number}\n * @private\n */\n _this.activePointers_ = 0;\n /**\n * @type {!Object}\n * @private\n */\n _this.trackedTouches_ = {};\n _this.element_ = element;\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.pointerdownListenerKey_ = listen(element, PointerEventType.POINTERDOWN, _this.handlePointerDown_, _this);\n /**\n * @type {PointerEvent}\n * @private\n */\n _this.originalPointerMoveEvent_;\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.relayedListenerKey_ = listen(element, PointerEventType.POINTERMOVE, _this.relayEvent_, _this);\n /**\n * @private\n */\n _this.boundHandleTouchMove_ = _this.handleTouchMove_.bind(_this);\n _this.element_.addEventListener(EventType.TOUCHMOVE, _this.boundHandleTouchMove_, PASSIVE_EVENT_LISTENERS ? { passive: false } : false);\n return _this;\n }\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.emulateClick_ = function (pointerEvent) {\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.CLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n if (this.clickTimeoutId_ !== undefined) {\n // double-click\n clearTimeout(this.clickTimeoutId_);\n this.clickTimeoutId_ = undefined;\n newEvent = new MapBrowserPointerEvent(MapBrowserEventType.DBLCLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }\n else {\n // click\n this.clickTimeoutId_ = setTimeout(function () {\n this.clickTimeoutId_ = undefined;\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.SINGLECLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }.bind(this), 250);\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 MapBrowserEventHandler.prototype.updateActivePointers_ = function (pointerEvent) {\n var event = pointerEvent;\n if (event.type == MapBrowserEventType.POINTERUP ||\n event.type == MapBrowserEventType.POINTERCANCEL) {\n delete this.trackedTouches_[event.pointerId];\n }\n else if (event.type == MapBrowserEventType.POINTERDOWN) {\n this.trackedTouches_[event.pointerId] = true;\n }\n this.activePointers_ = Object.keys(this.trackedTouches_).length;\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerUp_ = function (pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.POINTERUP, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\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.stopPropagation() or event.preventDefault().\n if (!newEvent.propagationStopped && !this.dragging_ && this.isMouseActionButton_(pointerEvent)) {\n this.emulateClick_(this.down_);\n }\n if (this.activePointers_ === 0) {\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.dragging_ = false;\n this.down_ = null;\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} If the left mouse button was pressed.\n * @private\n */\n MapBrowserEventHandler.prototype.isMouseActionButton_ = function (pointerEvent) {\n return pointerEvent.button === 0;\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerDown_ = function (pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.POINTERDOWN, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n this.down_ = pointerEvent;\n if (this.dragListenerKeys_.length === 0) {\n this.dragListenerKeys_.push(listen(document, MapBrowserEventType.POINTERMOVE, this.handlePointerMove_, this), listen(document, 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(this.element_, MapBrowserEventType.POINTERCANCEL, this.handlePointerUp_, this));\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerMove_ = function (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.dragging_ = true;\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.POINTERDRAG, this.map_, pointerEvent, this.dragging_);\n this.dispatchEvent(newEvent);\n }\n };\n /**\n * Wrap and relay a pointer event. Note that this requires that the type\n * string for the MapBrowserPointerEvent matches the PointerEvent type.\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.relayEvent_ = function (pointerEvent) {\n this.originalPointerMoveEvent_ = pointerEvent;\n var dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n this.dispatchEvent(new MapBrowserPointerEvent(pointerEvent.type, this.map_, pointerEvent, dragging));\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 MapBrowserEventHandler.prototype.handleTouchMove_ = function (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 if (!this.originalPointerMoveEvent_ || this.originalPointerMoveEvent_.defaultPrevented) {\n event.preventDefault();\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} Is moving.\n * @private\n */\n MapBrowserEventHandler.prototype.isMoving_ = function (pointerEvent) {\n return this.dragging_ ||\n Math.abs(pointerEvent.clientX - this.down_.clientX) > this.moveTolerance_ ||\n Math.abs(pointerEvent.clientY - this.down_.clientY) > this.moveTolerance_;\n };\n /**\n * @inheritDoc\n */\n MapBrowserEventHandler.prototype.disposeInternal = function () {\n if (this.relayedListenerKey_) {\n unlistenByKey(this.relayedListenerKey_);\n this.relayedListenerKey_ = null;\n }\n this.element_.removeEventListener(EventType.TOUCHMOVE, this.boundHandleTouchMove_);\n if (this.pointerdownListenerKey_) {\n unlistenByKey(this.pointerdownListenerKey_);\n this.pointerdownListenerKey_ = null;\n }\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.element_ = null;\n _super.prototype.disposeInternal.call(this);\n };\n return MapBrowserEventHandler;\n}(EventTarget));\nexport default MapBrowserEventHandler;\n//# sourceMappingURL=MapBrowserEventHandler.js.map","/**\n * @module ol/MapEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered after a map frame is rendered.\n * @event module:ol/MapEvent~MapEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n /**\n * Triggered when the map starts moving.\n * @event module:ol/MapEvent~MapEvent#movestart\n * @api\n */\n MOVESTART: 'movestart',\n /**\n * Triggered after the map is moved.\n * @event module:ol/MapEvent~MapEvent#moveend\n * @api\n */\n MOVEEND: 'moveend'\n};\n//# sourceMappingURL=MapEventType.js.map","/**\n * @module ol/MapProperty\n */\n/**\n * @enum {string}\n */\nexport default {\n LAYERGROUP: 'layergroup',\n SIZE: 'size',\n TARGET: 'target',\n VIEW: 'view'\n};\n//# sourceMappingURL=MapProperty.js.map","/**\n * @module ol/render/EventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered before a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#prerender\n * @api\n */\n PRERENDER: 'prerender',\n /**\n * Triggered after a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n /**\n * Triggered before layers are rendered.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#precompose\n * @api\n */\n PRECOMPOSE: 'precompose',\n /**\n * Triggered after all layers are rendered.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#postcompose\n * @api\n */\n POSTCOMPOSE: 'postcompose',\n /**\n * Triggered when rendering is complete, i.e. all sources and tiles have\n * finished loading for the current viewport, and all tiles are faded in.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#rendercomplete\n * @api\n */\n RENDERCOMPLETE: 'rendercomplete'\n};\n//# sourceMappingURL=EventType.js.map","/**\n * @module ol/TileState\n */\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n /**\n * Indicates that tile loading failed\n * @type {number}\n */\n ERROR: 3,\n EMPTY: 4\n};\n//# sourceMappingURL=TileState.js.map","/**\n * @module ol/structs/PriorityQueue\n */\nimport { assert } from '../asserts.js';\nimport { clear } from '../obj.js';\n/**\n * @type {number}\n */\nexport var DROP = Infinity;\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 http://closure-library.googlecode.com/svn/docs/closure_goog_structs_heap.js.source.html\n * and http://hg.python.org/cpython/file/2.7/Lib/heapq.py.\n *\n * @template T\n */\nvar PriorityQueue = /** @class */ (function () {\n /**\n * @param {function(T): number} priorityFunction Priority function.\n * @param {function(T): string} keyFunction Key function.\n */\n function PriorityQueue(priorityFunction, keyFunction) {\n /**\n * @type {function(T): number}\n * @private\n */\n this.priorityFunction_ = priorityFunction;\n /**\n * @type {function(T): string}\n * @private\n */\n this.keyFunction_ = keyFunction;\n /**\n * @type {Array}\n * @private\n */\n this.elements_ = [];\n /**\n * @type {Array}\n * @private\n */\n this.priorities_ = [];\n /**\n * @type {!Object}\n * @private\n */\n this.queuedElements_ = {};\n }\n /**\n * FIXME empty description for jsdoc\n */\n PriorityQueue.prototype.clear = function () {\n this.elements_.length = 0;\n this.priorities_.length = 0;\n clear(this.queuedElements_);\n };\n /**\n * Remove and return the highest-priority element. O(log N).\n * @return {T} Element.\n */\n PriorityQueue.prototype.dequeue = function () {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var element = elements[0];\n if (elements.length == 1) {\n elements.length = 0;\n priorities.length = 0;\n }\n else {\n elements[0] = elements.pop();\n priorities[0] = priorities.pop();\n this.siftUp_(0);\n }\n var elementKey = this.keyFunction_(element);\n delete this.queuedElements_[elementKey];\n return element;\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 PriorityQueue.prototype.enqueue = function (element) {\n assert(!(this.keyFunction_(element) in this.queuedElements_), 31); // Tried to enqueue an `element` that was already added to the queue\n var 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 * @return {number} Count.\n */\n PriorityQueue.prototype.getCount = function () {\n return this.elements_.length;\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 PriorityQueue.prototype.getLeftChildIndex_ = function (index) {\n return index * 2 + 1;\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 PriorityQueue.prototype.getRightChildIndex_ = function (index) {\n return index * 2 + 2;\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 PriorityQueue.prototype.getParentIndex_ = function (index) {\n return (index - 1) >> 1;\n };\n /**\n * Make this a heap. O(N).\n * @private\n */\n PriorityQueue.prototype.heapify_ = function () {\n var i;\n for (i = (this.elements_.length >> 1) - 1; i >= 0; i--) {\n this.siftUp_(i);\n }\n };\n /**\n * @return {boolean} Is empty.\n */\n PriorityQueue.prototype.isEmpty = function () {\n return this.elements_.length === 0;\n };\n /**\n * @param {string} key Key.\n * @return {boolean} Is key queued.\n */\n PriorityQueue.prototype.isKeyQueued = function (key) {\n return key in this.queuedElements_;\n };\n /**\n * @param {T} element Element.\n * @return {boolean} Is queued.\n */\n PriorityQueue.prototype.isQueued = function (element) {\n return this.isKeyQueued(this.keyFunction_(element));\n };\n /**\n * @param {number} index The index of the node to move down.\n * @private\n */\n PriorityQueue.prototype.siftUp_ = function (index) {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var count = elements.length;\n var element = elements[index];\n var priority = priorities[index];\n var startIndex = index;\n while (index < (count >> 1)) {\n var lIndex = this.getLeftChildIndex_(index);\n var rIndex = this.getRightChildIndex_(index);\n var smallerChildIndex = rIndex < count &&\n priorities[rIndex] < priorities[lIndex] ?\n rIndex : lIndex;\n elements[index] = elements[smallerChildIndex];\n priorities[index] = priorities[smallerChildIndex];\n index = smallerChildIndex;\n }\n elements[index] = element;\n priorities[index] = priority;\n this.siftDown_(startIndex, index);\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 PriorityQueue.prototype.siftDown_ = function (startIndex, index) {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var element = elements[index];\n var priority = priorities[index];\n while (index > startIndex) {\n var parentIndex = this.getParentIndex_(index);\n if (priorities[parentIndex] > priority) {\n elements[index] = elements[parentIndex];\n priorities[index] = priorities[parentIndex];\n index = parentIndex;\n }\n else {\n break;\n }\n }\n elements[index] = element;\n priorities[index] = priority;\n };\n /**\n * FIXME empty description for jsdoc\n */\n PriorityQueue.prototype.reprioritize = function () {\n var priorityFunction = this.priorityFunction_;\n var elements = this.elements_;\n var priorities = this.priorities_;\n var index = 0;\n var n = elements.length;\n var 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 }\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 return PriorityQueue;\n}());\nexport default PriorityQueue;\n//# sourceMappingURL=PriorityQueue.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/TileQueue\n */\nimport TileState from './TileState.js';\nimport EventType from './events/EventType.js';\nimport PriorityQueue, { DROP } from './structs/PriorityQueue.js';\n/**\n * @typedef {function(import(\"./Tile.js\").default, string, import(\"./coordinate.js\").Coordinate, number): number} PriorityFunction\n */\nvar TileQueue = /** @class */ (function (_super) {\n __extends(TileQueue, _super);\n /**\n * @param {PriorityFunction} tilePriorityFunction Tile priority function.\n * @param {function(): ?} tileChangeCallback Function called on each tile change event.\n */\n function TileQueue(tilePriorityFunction, tileChangeCallback) {\n var _this = _super.call(this, \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 }) || this;\n /** @private */\n _this.boundHandleTileChange_ = _this.handleTileChange.bind(_this);\n /**\n * @private\n * @type {function(): ?}\n */\n _this.tileChangeCallback_ = tileChangeCallback;\n /**\n * @private\n * @type {number}\n */\n _this.tilesLoading_ = 0;\n /**\n * @private\n * @type {!Object}\n */\n _this.tilesLoadingKeys_ = {};\n return _this;\n }\n /**\n * @inheritDoc\n */\n TileQueue.prototype.enqueue = function (element) {\n var added = _super.prototype.enqueue.call(this, element);\n if (added) {\n var tile = element[0];\n tile.addEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n }\n return added;\n };\n /**\n * @return {number} Number of tiles loading.\n */\n TileQueue.prototype.getTilesLoading = function () {\n return this.tilesLoading_;\n };\n /**\n * @param {import(\"./events/Event.js\").default} event Event.\n * @protected\n */\n TileQueue.prototype.handleTileChange = function (event) {\n var tile = /** @type {import(\"./Tile.js\").default} */ (event.target);\n var state = tile.getState();\n if (tile.hifi && state === TileState.LOADED || state === TileState.ERROR || state === TileState.EMPTY) {\n tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n var 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 * @param {number} maxTotalLoading Maximum number tiles to load simultaneously.\n * @param {number} maxNewLoads Maximum number of new tiles to load.\n */\n TileQueue.prototype.loadMoreTiles = function (maxTotalLoading, maxNewLoads) {\n var newLoads = 0;\n var state, tile, tileKey;\n while (this.tilesLoading_ < maxTotalLoading && newLoads < maxNewLoads &&\n this.getCount() > 0) {\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 return TileQueue;\n}(PriorityQueue));\nexport default TileQueue;\n/**\n * @param {import('./PluggableMap.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(frameState, tile, tileSourceKey, tileCenter, tileResolution) {\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 var center = frameState.viewState.center;\n var deltaX = tileCenter[0] - center[0];\n var deltaY = tileCenter[1] - center[1];\n return 65536 * Math.log(tileResolution) +\n Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution;\n}\n//# sourceMappingURL=TileQueue.js.map","/**\n * @module ol/centerconstraint\n */\nimport { clamp } from './math.js';\n/**\n * @typedef {function((import(\"./coordinate.js\").Coordinate|undefined), number, import(\"./size.js\").Size, boolean=): (import(\"./coordinate.js\").Coordinate|undefined)} Type\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} resolution Resolution.\n * @param {import(\"./size.js\").Size} size Viewport size; unused if `onlyCenter` was specified.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\n function (center, resolution, size, opt_isMoving) {\n if (center) {\n var viewWidth = onlyCenter ? 0 : size[0] * resolution;\n var viewHeight = onlyCenter ? 0 : size[1] * resolution;\n var minX = extent[0] + viewWidth / 2;\n var maxX = extent[2] - viewWidth / 2;\n var minY = extent[1] + viewHeight / 2;\n var maxY = extent[3] - viewHeight / 2;\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 var x = clamp(center[0], minX, maxX);\n var y = clamp(center[1], minY, maxY);\n var ratio = 30 * resolution;\n // during an interaction, allow some overscroll\n if (opt_isMoving && smooth) {\n x += -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 += -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 return [x, y];\n }\n else {\n return undefined;\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//# sourceMappingURL=centerconstraint.js.map","/**\n * @module ol/resolutionconstraint\n */\nimport { linearFindNearest } from './array.js';\nimport { getHeight, getWidth } from './extent.js';\nimport { clamp } from './math.js';\n/**\n * @typedef {function((number|undefined), number, import(\"./size.js\").Size, boolean=): (number|undefined)} Type\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(resolution, maxExtent, viewportSize, showFullExtent) {\n var xResolution = getWidth(maxExtent) / viewportSize[0];\n var yResolution = getHeight(maxExtent) / viewportSize[1];\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 * 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 var result = Math.min(resolution, maxResolution);\n var ratio = 50;\n result *= Math.log(1 + ratio * Math.max(0, resolution / maxResolution - 1)) / ratio + 1;\n if (minResolution) {\n result = Math.max(result, minResolution);\n result /= Math.log(1 + ratio * Math.max(0, minResolution / resolution - 1)) / ratio + 1;\n }\n return clamp(result, minResolution / 2, maxResolution * 2);\n}\n/**\n * @param {Array} resolutions Resolutions.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToResolutions(resolutions, opt_smooth, opt_maxExtent, opt_showFullExtent) {\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=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var maxResolution = resolutions[0];\n var minResolution = resolutions[resolutions.length - 1];\n var cappedMaxRes = opt_maxExtent ?\n getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent) :\n maxResolution;\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n var capped = Math.min(cappedMaxRes, resolution);\n var 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 else {\n return undefined;\n }\n });\n}\n/**\n * @param {number} power Power.\n * @param {number} maxResolution Maximum resolution.\n * @param {number=} opt_minResolution Minimum resolution.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToPower(power, maxResolution, opt_minResolution, opt_smooth, opt_maxExtent, opt_showFullExtent) {\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=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var cappedMaxRes = opt_maxExtent ?\n getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent) :\n maxResolution;\n var minResolution = opt_minResolution !== undefined ? opt_minResolution : 0;\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n var tolerance = 1e-9;\n var minZoomLevel = Math.ceil(Math.log(maxResolution / cappedMaxRes) / Math.log(power) - tolerance);\n var offset = -direction * (0.5 - tolerance) + 0.5;\n var capped = Math.min(cappedMaxRes, resolution);\n var cappedZoomLevel = Math.floor(Math.log(maxResolution / capped) / Math.log(power) + offset);\n var zoomLevel = Math.max(minZoomLevel, cappedZoomLevel);\n var newResolution = maxResolution / Math.pow(power, zoomLevel);\n return clamp(newResolution, minResolution, cappedMaxRes);\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createMinMaxResolution(maxResolution, minResolution, opt_smooth, opt_maxExtent, opt_showFullExtent) {\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=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var cappedMaxRes = opt_maxExtent ?\n getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent) :\n maxResolution;\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth || !opt_isMoving) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n else {\n return undefined;\n }\n });\n}\n//# sourceMappingURL=resolutionconstraint.js.map","/**\n * @module ol/rotationconstraint\n */\nimport { toRadians } from './math.js';\n/**\n * @typedef {function((number|undefined), boolean=): (number|undefined)} Type\n */\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function disable(rotation) {\n if (rotation !== undefined) {\n return 0;\n }\n else {\n return undefined;\n }\n}\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function none(rotation) {\n if (rotation !== undefined) {\n return rotation;\n }\n else {\n return undefined;\n }\n}\n/**\n * @param {number} n N.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToN(n) {\n var theta = 2 * Math.PI / n;\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function (rotation, opt_isMoving) {\n if (opt_isMoving) {\n return rotation;\n }\n if (rotation !== undefined) {\n rotation = Math.floor(rotation / theta + 0.5) * theta;\n return rotation;\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number=} opt_tolerance Tolerance.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToZero(opt_tolerance) {\n var tolerance = opt_tolerance || toRadians(5);\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function (rotation, opt_isMoving) {\n if (opt_isMoving) {\n return rotation;\n }\n if (rotation !== undefined) {\n if (Math.abs(rotation) <= tolerance) {\n return 0;\n }\n else {\n return rotation;\n }\n }\n else {\n return undefined;\n }\n });\n}\n//# sourceMappingURL=rotationconstraint.js.map","/**\n * @module ol/ViewHint\n */\n/**\n * @enum {number}\n */\nexport default {\n ANIMATING: 0,\n INTERACTING: 1\n};\n//# sourceMappingURL=ViewHint.js.map","/**\n * @module ol/ViewProperty\n */\n/**\n * @enum {string}\n */\nexport default {\n CENTER: 'center',\n RESOLUTION: 'resolution',\n ROTATION: 'rotation'\n};\n//# sourceMappingURL=ViewProperty.js.map","/**\n * @module ol/string\n */\n/**\n * @param {number} number Number to be formatted\n * @param {number} width The desired width\n * @param {number=} opt_precision Precision of the output string (i.e. number of decimal places)\n * @returns {string} Formatted string\n */\nexport function padNumber(number, width, opt_precision) {\n var numberString = opt_precision !== undefined ? number.toFixed(opt_precision) : '' + number;\n var decimal = numberString.indexOf('.');\n decimal = decimal === -1 ? numberString.length : decimal;\n return decimal > width ? numberString : new Array(1 + width - decimal).join('0') + numberString;\n}\n/**\n * Adapted from https://github.com/omichelsen/compare-versions/blob/master/index.js\n * @param {string|number} v1 First version\n * @param {string|number} v2 Second version\n * @returns {number} Value\n */\nexport function compareVersions(v1, v2) {\n var s1 = ('' + v1).split('.');\n var s2 = ('' + v2).split('.');\n for (var i = 0; i < Math.max(s1.length, s2.length); i++) {\n var n1 = parseInt(s1[i] || '0', 10);\n var n2 = parseInt(s2[i] || '0', 10);\n if (n1 > n2) {\n return 1;\n }\n if (n2 > n1) {\n return -1;\n }\n }\n return 0;\n}\n//# sourceMappingURL=string.js.map","/**\n * @module ol/coordinate\n */\nimport { modulo } from './math.js';\nimport { padNumber } from './string.js';\nimport { getWidth } from './extent.js';\n/**\n * An array of numbers representing an xy coordinate. Example: `[16, 48]`.\n * @typedef {Array} Coordinate\n * @api\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 * 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';\n *\n * var 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 * 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 var r = circle.getRadius();\n var center = circle.getCenter();\n var x0 = center[0];\n var y0 = center[1];\n var x1 = coordinate[0];\n var y1 = coordinate[1];\n var dx = x1 - x0;\n var dy = y1 - y0;\n if (dx === 0 && dy === 0) {\n dx = 1;\n }\n var d = Math.sqrt(dx * dx + dy * dy);\n var x = x0 + r * dx / d;\n var y = y0 + r * dy / d;\n return [x, y];\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 var x0 = coordinate[0];\n var y0 = coordinate[1];\n var start = segment[0];\n var end = segment[1];\n var x1 = start[0];\n var y1 = start[1];\n var x2 = end[0];\n var y2 = end[1];\n var dx = x2 - x1;\n var dy = y2 - y1;\n var along = (dx === 0 && dy === 0) ? 0 :\n ((dx * (x0 - x1)) + (dy * (y0 - y1))) / ((dx * dx + dy * dy) || 0);\n var x, y;\n if (along <= 0) {\n x = x1;\n y = y1;\n }\n else if (along >= 1) {\n x = x2;\n y = y2;\n }\n else {\n x = x1 + along * dx;\n y = y1 + along * dy;\n }\n return [x, y];\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';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY();\n * var 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';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY(2);\n * var out = stringifyFunc(coord);\n * // out is now '7.85, 47.98'\n *\n * @param {number=} opt_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(opt_fractionDigits) {\n return (\n /**\n * @param {Coordinate} coordinate Coordinate.\n * @return {string} String XY.\n */\n function (coordinate) {\n return toStringXY(coordinate, opt_fractionDigits);\n });\n}\n/**\n * @param {string} hemispheres Hemispheres.\n * @param {number} degrees Degrees.\n * @param {number=} opt_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, opt_fractionDigits) {\n var normalizedDegrees = modulo(degrees + 180, 360) - 180;\n var x = Math.abs(3600 * normalizedDegrees);\n var dflPrecision = opt_fractionDigits || 0;\n var precision = Math.pow(10, dflPrecision);\n var deg = Math.floor(x / 3600);\n var min = Math.floor((x - deg * 3600) / 60);\n var sec = x - (deg * 3600) - (min * 60);\n sec = Math.ceil(sec * precision) / precision;\n if (sec >= 60) {\n sec = 0;\n min += 1;\n }\n if (min >= 60) {\n min = 0;\n deg += 1;\n }\n return deg + '\\u00b0 ' + padNumber(min, 2) + '\\u2032 ' +\n padNumber(sec, 2, dflPrecision) + '\\u2033' +\n (normalizedDegrees == 0 ? '' : ' ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0));\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';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var 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';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var 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=} opt_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, opt_fractionDigits) {\n if (coordinate) {\n return template\n .replace('{x}', coordinate[0].toFixed(opt_fractionDigits))\n .replace('{y}', coordinate[1].toFixed(opt_fractionDigits));\n }\n else {\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 var equals = true;\n for (var 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 * 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';\n *\n * var coord = [7.85, 47.983333];\n * var 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 var cosAngle = Math.cos(angle);\n var sinAngle = Math.sin(angle);\n var x = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n var y = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n coordinate[0] = x;\n coordinate[1] = y;\n return coordinate;\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';\n *\n * var coord = [7.85, 47.983333];\n * var 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 * @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 var dx = coord1[0] - coord2[0];\n var dy = coord1[1] - coord2[1];\n return dx * dx + dy * dy;\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 * 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 * 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';\n *\n * var coord = [7.85, 47.983333];\n * var 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';\n *\n * var coord = [7.85, 47.983333];\n * var 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=} opt_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, opt_fractionDigits) {\n if (coordinate) {\n return degreesToStringHDMS('NS', coordinate[1], opt_fractionDigits) + ' ' +\n degreesToStringHDMS('EW', coordinate[0], opt_fractionDigits);\n }\n else {\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';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord);\n * // out is now '8, 48'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord, 1);\n * // out is now '7.8, 48.0'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number=} opt_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, opt_fractionDigits) {\n return format(coordinate, '{x}, {y}', opt_fractionDigits);\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 var projectionExtent = projection.getExtent();\n if (projection.canWrapX() && (coordinate[0] < projectionExtent[0] || coordinate[0] >= projectionExtent[2])) {\n var worldWidth = getWidth(projectionExtent);\n var worldsAway = Math.floor((coordinate[0] - projectionExtent[0]) / worldWidth);\n coordinate[0] -= (worldsAway * worldWidth);\n }\n return coordinate;\n}\n//# sourceMappingURL=coordinate.js.map","/**\n * @module ol/easing\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 * 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 * 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 * 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 * 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 else {\n return 1 - inAndOut(2 * (t - 0.5));\n }\n}\n//# sourceMappingURL=easing.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/View\n */\nimport { DEFAULT_TILE_SIZE } from './tilegrid/common.js';\nimport { VOID } from './functions.js';\nimport { createExtent, none as centerNone } from './centerconstraint.js';\nimport BaseObject from './Object.js';\nimport { createSnapToResolutions, createSnapToPower } from './resolutionconstraint.js';\nimport { createSnapToZero, createSnapToN, none as rotationNone, disable } from './rotationconstraint.js';\nimport ViewHint from './ViewHint.js';\nimport ViewProperty from './ViewProperty.js';\nimport { linearFindNearest } from './array.js';\nimport { assert } from './asserts.js';\nimport { add as addCoordinate, rotate as rotateCoordinate, equals as coordinatesEqual } from './coordinate.js';\nimport { inAndOut } from './easing.js';\nimport { getForViewAndSize, getCenter, getHeight, getWidth, isEmpty } from './extent.js';\nimport GeometryType from './geom/GeometryType.js';\nimport { fromExtent as polygonFromExtent } from './geom/Polygon.js';\nimport { clamp, modulo } from './math.js';\nimport { assign } from './obj.js';\nimport { createProjection, METERS_PER_UNIT, toUserCoordinate, toUserExtent, fromUserCoordinate, fromUserExtent, getUserProjection } from './proj.js';\nimport Units from './proj/Units.js';\nimport { equals } from './coordinate.js';\nimport { easeOut } from './easing.js';\nimport { createMinMaxResolution } from './resolutionconstraint.js';\n/**\n * An animation configuration\n *\n * @typedef {Object} Animation\n * @property {import(\"./coordinate.js\").Coordinate} [sourceCenter]\n * @property {import(\"./coordinate.js\").Coordinate} [targetCenter]\n * @property {number} [sourceResolution]\n * @property {number} [targetResolution]\n * @property {number} [sourceRotation]\n * @property {number} [targetRotation]\n * @property {import(\"./coordinate.js\").Coordinate} [anchor]\n * @property {number} start\n * @property {number} duration\n * @property {boolean} complete\n * @property {function(number):number} easing\n * @property {function(boolean)} callback\n */\n/**\n * @typedef {Object} Constraints\n * @property {import(\"./centerconstraint.js\").Type} center\n * @property {import(\"./resolutionconstraint.js\").Type} resolution\n * @property {import(\"./rotationconstraint.js\").Type} rotation\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)} [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 * @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 to determine the\n * resolution constraint. If set the `maxResolution`, `minResolution`,\n * `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 */\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 * @typedef {Object} State\n * @property {import(\"./coordinate.js\").Coordinate} center\n * @property {import(\"./proj/Projection.js\").default} projection\n * @property {number} resolution\n * @property {number} rotation\n * @property {number} zoom\n */\n/**\n * Default min zoom level for the map view.\n * @type {number}\n */\nvar DEFAULT_MIN_ZOOM = 0;\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 * Spherical 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 `opt_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 */\nvar View = /** @class */ (function (_super) {\n __extends(View, _super);\n /**\n * @param {ViewOptions=} opt_options View options.\n */\n function View(opt_options) {\n var _this = _super.call(this) || this;\n var options = assign({}, opt_options);\n /**\n * @private\n * @type {Array}\n */\n _this.hints_ = [0, 0];\n /**\n * @private\n * @type {Array>}\n */\n _this.animations_ = [];\n /**\n * @private\n * @type {number|undefined}\n */\n _this.updateAnimationKey_;\n /**\n * @private\n * @const\n * @type {import(\"./proj/Projection.js\").default}\n */\n _this.projection_ = createProjection(options.projection, 'EPSG:3857');\n /**\n * @private\n * @type {import(\"./size.js\").Size}\n */\n _this.viewportSize_ = [100, 100];\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n _this.targetCenter_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.targetResolution_;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.targetRotation_;\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n _this.cancelAnchor_ = undefined;\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 _this.applyOptions_(options);\n return _this;\n }\n /**\n * Set up the view with the given options.\n * @param {ViewOptions} options View options.\n */\n View.prototype.applyOptions_ = function (options) {\n /**\n * @type {Object}\n */\n var properties = {};\n var resolutionConstraintInfo = createResolutionConstraint(options);\n /**\n * @private\n * @type {number}\n */\n this.maxResolution_ = resolutionConstraintInfo.maxResolution;\n /**\n * @private\n * @type {number}\n */\n this.minResolution_ = resolutionConstraintInfo.minResolution;\n /**\n * @private\n * @type {number}\n */\n this.zoomFactor_ = resolutionConstraintInfo.zoomFactor;\n /**\n * @private\n * @type {Array|undefined}\n */\n this.resolutions_ = options.resolutions;\n /**\n * @private\n * @type {number}\n */\n this.minZoom_ = resolutionConstraintInfo.minZoom;\n var centerConstraint = createCenterConstraint(options);\n var resolutionConstraint = resolutionConstraintInfo.constraint;\n var rotationConstraint = createRotationConstraint(options);\n /**\n * @private\n * @type {Constraints}\n */\n this.constraints_ = {\n center: centerConstraint,\n resolution: resolutionConstraint,\n rotation: rotationConstraint\n };\n this.setRotation(options.rotation !== undefined ? options.rotation : 0);\n this.setCenterInternal(options.center !== undefined ? options.center : null);\n if (options.resolution !== undefined) {\n this.setResolution(options.resolution);\n }\n else if (options.zoom !== undefined) {\n this.setZoom(options.zoom);\n }\n this.setProperties(properties);\n /**\n * @private\n * @type {ViewOptions}\n */\n this.options_ = options;\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 View.prototype.getUpdatedOptions_ = function (newOptions) {\n var options = assign({}, this.options_);\n // preserve resolution (or zoom)\n if (options.resolution !== undefined) {\n options.resolution = this.getResolution();\n }\n else {\n options.zoom = this.getZoom();\n }\n // preserve center\n options.center = this.getCenterInternal();\n // preserve rotation\n options.rotation = this.getRotation();\n return assign({}, options, newOptions);\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 View.prototype.animate = function (var_args) {\n if (this.isDef() && !this.getAnimating()) {\n this.resolveConstraints(0);\n }\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n var options = arguments[i];\n if (options.center) {\n options = assign({}, options);\n options.center = fromUserCoordinate(options.center, this.getProjection());\n }\n if (options.anchor) {\n options = assign({}, options);\n options.anchor = fromUserCoordinate(options.anchor, this.getProjection());\n }\n args[i] = options;\n }\n this.animateInternal.apply(this, args);\n };\n /**\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation options.\n */\n View.prototype.animateInternal = function (var_args) {\n var animationCount = arguments.length;\n var callback;\n if (animationCount > 1 && typeof arguments[animationCount - 1] === 'function') {\n callback = arguments[animationCount - 1];\n --animationCount;\n }\n if (!this.isDef()) {\n // if view properties are not yet set, shortcut to the final state\n var state = arguments[animationCount - 1];\n if (state.center) {\n this.setCenterInternal(state.center);\n }\n if (state.zoom !== undefined) {\n this.setZoom(state.zoom);\n }\n if (state.rotation !== undefined) {\n this.setRotation(state.rotation);\n }\n if (callback) {\n animationCallback(callback, true);\n }\n return;\n }\n var start = Date.now();\n var center = this.targetCenter_.slice();\n var resolution = this.targetResolution_;\n var rotation = this.targetRotation_;\n var series = [];\n for (var i = 0; i < animationCount; ++i) {\n var options = /** @type {AnimationOptions} */ (arguments[i]);\n var 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 if (options.center) {\n animation.sourceCenter = center;\n animation.targetCenter = options.center.slice();\n center = animation.targetCenter;\n }\n if (options.zoom !== undefined) {\n animation.sourceResolution = resolution;\n animation.targetResolution = this.getResolutionForZoom(options.zoom);\n resolution = animation.targetResolution;\n }\n else if (options.resolution) {\n animation.sourceResolution = resolution;\n animation.targetResolution = options.resolution;\n resolution = animation.targetResolution;\n }\n if (options.rotation !== undefined) {\n animation.sourceRotation = rotation;\n var delta = modulo(options.rotation - rotation + Math.PI, 2 * Math.PI) - Math.PI;\n animation.targetRotation = rotation + delta;\n rotation = animation.targetRotation;\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 }\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 * Determine if the view is being animated.\n * @return {boolean} The view is being animated.\n * @api\n */\n View.prototype.getAnimating = function () {\n return this.hints_[ViewHint.ANIMATING] > 0;\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 View.prototype.getInteracting = function () {\n return this.hints_[ViewHint.INTERACTING] > 0;\n };\n /**\n * Cancel any ongoing animations.\n * @api\n */\n View.prototype.cancelAnimations = function () {\n this.setHint(ViewHint.ANIMATING, -this.hints_[ViewHint.ANIMATING]);\n var anchor;\n for (var i = 0, ii = this.animations_.length; i < ii; ++i) {\n var series = this.animations_[i];\n if (series[0].callback) {\n animationCallback(series[0].callback, false);\n }\n if (!anchor) {\n for (var j = 0, jj = series.length; j < jj; ++j) {\n var 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 };\n /**\n * Update all animations.\n */\n View.prototype.updateAnimations_ = function () {\n if (this.updateAnimationKey_ !== undefined) {\n cancelAnimationFrame(this.updateAnimationKey_);\n this.updateAnimationKey_ = undefined;\n }\n if (!this.getAnimating()) {\n return;\n }\n var now = Date.now();\n var more = false;\n for (var i = this.animations_.length - 1; i >= 0; --i) {\n var series = this.animations_[i];\n var seriesComplete = true;\n for (var j = 0, jj = series.length; j < jj; ++j) {\n var animation = series[j];\n if (animation.complete) {\n continue;\n }\n var elapsed = now - animation.start;\n var fraction = animation.duration > 0 ? elapsed / animation.duration : 1;\n if (fraction >= 1) {\n animation.complete = true;\n fraction = 1;\n }\n else {\n seriesComplete = false;\n }\n var progress = animation.easing(fraction);\n if (animation.sourceCenter) {\n var x0 = animation.sourceCenter[0];\n var y0 = animation.sourceCenter[1];\n var x1 = animation.targetCenter[0];\n var y1 = animation.targetCenter[1];\n var x = x0 + progress * (x1 - x0);\n var y = y0 + progress * (y1 - y0);\n this.targetCenter_ = [x, y];\n }\n if (animation.sourceResolution && animation.targetResolution) {\n var resolution = progress === 1 ?\n animation.targetResolution :\n animation.sourceResolution + progress * (animation.targetResolution - animation.sourceResolution);\n if (animation.anchor) {\n var size = this.getViewportSize_(this.getRotation());\n var constrainedResolution = this.constraints_.resolution(resolution, 0, size, true);\n this.targetCenter_ = this.calculateCenterZoom(constrainedResolution, animation.anchor);\n }\n this.targetResolution_ = resolution;\n this.applyTargetState_(true);\n }\n if (animation.sourceRotation !== undefined && animation.targetRotation !== undefined) {\n var rotation = progress === 1 ?\n modulo(animation.targetRotation + Math.PI, 2 * Math.PI) - Math.PI :\n animation.sourceRotation + progress * (animation.targetRotation - animation.sourceRotation);\n if (animation.anchor) {\n var constrainedRotation = this.constraints_.rotation(rotation, true);\n this.targetCenter_ = this.calculateCenterRotate(constrainedRotation, animation.anchor);\n }\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 var 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(this.updateAnimations_.bind(this));\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 View.prototype.calculateCenterRotate = function (rotation, anchor) {\n var center;\n var 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 * @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 View.prototype.calculateCenterZoom = function (resolution, anchor) {\n var center;\n var currentCenter = this.getCenterInternal();\n var currentResolution = this.getResolution();\n if (currentCenter !== undefined && currentResolution !== undefined) {\n var x = anchor[0] - resolution * (anchor[0] - currentCenter[0]) / currentResolution;\n var y = anchor[1] - resolution * (anchor[1] - currentCenter[1]) / currentResolution;\n center = [x, y];\n }\n return center;\n };\n /**\n * Returns the current viewport size.\n * @private\n * @param {number=} opt_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 View.prototype.getViewportSize_ = function (opt_rotation) {\n var size = this.viewportSize_;\n if (opt_rotation) {\n var w = size[0];\n var h = size[1];\n return [\n Math.abs(w * Math.cos(opt_rotation)) + Math.abs(h * Math.sin(opt_rotation)),\n Math.abs(w * Math.sin(opt_rotation)) + Math.abs(h * Math.cos(opt_rotation))\n ];\n }\n else {\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 * @param {import(\"./size.js\").Size=} opt_size Viewport size; if undefined, [100, 100] is assumed\n */\n View.prototype.setViewportSize = function (opt_size) {\n this.viewportSize_ = Array.isArray(opt_size) ? opt_size.slice() : [100, 100];\n this.resolveConstraints(0);\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 View.prototype.getCenter = function () {\n var center = this.getCenterInternal();\n if (!center) {\n return center;\n }\n return toUserCoordinate(center, this.getProjection());\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 View.prototype.getCenterInternal = function () {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (this.get(ViewProperty.CENTER));\n };\n /**\n * @return {Constraints} Constraints.\n */\n View.prototype.getConstraints = function () {\n return this.constraints_;\n };\n /**\n * @return {boolean} Resolution constraint is set\n */\n View.prototype.getConstrainResolution = function () {\n return this.options_.constrainResolution;\n };\n /**\n * @param {Array=} opt_hints Destination array.\n * @return {Array} Hint.\n */\n View.prototype.getHints = function (opt_hints) {\n if (opt_hints !== undefined) {\n opt_hints[0] = this.hints_[0];\n opt_hints[1] = this.hints_[1];\n return opt_hints;\n }\n else {\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=} opt_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 View.prototype.calculateExtent = function (opt_size) {\n var extent = this.calculateExtentInternal(opt_size);\n return toUserExtent(extent, this.getProjection());\n };\n /**\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size. If not provided, the size of the\n * first map that uses this view will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n View.prototype.calculateExtentInternal = function (opt_size) {\n var size = opt_size || this.getViewportSize_();\n var center = /** @type {!import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n assert(center, 1); // The view center is not defined\n var resolution = /** @type {!number} */ (this.getResolution());\n assert(resolution !== undefined, 2); // The view resolution is not defined\n var rotation = /** @type {!number} */ (this.getRotation());\n assert(rotation !== undefined, 3); // The view rotation is not defined\n return getForViewAndSize(center, resolution, rotation, size);\n };\n /**\n * Get the maximum resolution of the view.\n * @return {number} The maximum resolution of the view.\n * @api\n */\n View.prototype.getMaxResolution = function () {\n return this.maxResolution_;\n };\n /**\n * Get the minimum resolution of the view.\n * @return {number} The minimum resolution of the view.\n * @api\n */\n View.prototype.getMinResolution = function () {\n return this.minResolution_;\n };\n /**\n * Get the maximum zoom level for the view.\n * @return {number} The maximum zoom level.\n * @api\n */\n View.prototype.getMaxZoom = function () {\n return /** @type {number} */ (this.getZoomForResolution(this.minResolution_));\n };\n /**\n * Set a new maximum zoom level for the view.\n * @param {number} zoom The maximum zoom level.\n * @api\n */\n View.prototype.setMaxZoom = function (zoom) {\n this.applyOptions_(this.getUpdatedOptions_({ maxZoom: zoom }));\n };\n /**\n * Get the minimum zoom level for the view.\n * @return {number} The minimum zoom level.\n * @api\n */\n View.prototype.getMinZoom = function () {\n return /** @type {number} */ (this.getZoomForResolution(this.maxResolution_));\n };\n /**\n * Set a new minimum zoom level for the view.\n * @param {number} zoom The minimum zoom level.\n * @api\n */\n View.prototype.setMinZoom = function (zoom) {\n this.applyOptions_(this.getUpdatedOptions_({ minZoom: zoom }));\n };\n /**\n * Set whether the view shoud allow intermediary zoom levels.\n * @param {boolean} enabled Whether the resolution is constrained.\n * @api\n */\n View.prototype.setConstrainResolution = function (enabled) {\n this.applyOptions_(this.getUpdatedOptions_({ constrainResolution: enabled }));\n };\n /**\n * Get the view projection.\n * @return {import(\"./proj/Projection.js\").default} The projection of the view.\n * @api\n */\n View.prototype.getProjection = function () {\n return this.projection_;\n };\n /**\n * Get the view resolution.\n * @return {number|undefined} The resolution of the view.\n * @observable\n * @api\n */\n View.prototype.getResolution = function () {\n return /** @type {number|undefined} */ (this.get(ViewProperty.RESOLUTION));\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 View.prototype.getResolutions = function () {\n return this.resolutions_;\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=} opt_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 View.prototype.getResolutionForExtent = function (extent, opt_size) {\n return this.getResolutionForExtentInternal(fromUserExtent(extent, this.getProjection()), opt_size);\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=} opt_size Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n */\n View.prototype.getResolutionForExtentInternal = function (extent, opt_size) {\n var size = opt_size || this.getViewportSize_();\n var xResolution = getWidth(extent) / size[0];\n var yResolution = getHeight(extent) / size[1];\n return Math.max(xResolution, yResolution);\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=} opt_power Power.\n * @return {function(number): number} Resolution for value function.\n */\n View.prototype.getResolutionForValueFunction = function (opt_power) {\n var power = opt_power || 2;\n var maxResolution = this.getConstrainedResolution(this.maxResolution_);\n var minResolution = this.minResolution_;\n var 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 var resolution = maxResolution / Math.pow(power, value * max);\n return resolution;\n });\n };\n /**\n * Get the view rotation.\n * @return {number} The rotation of the view in radians.\n * @observable\n * @api\n */\n View.prototype.getRotation = function () {\n return /** @type {number} */ (this.get(ViewProperty.ROTATION));\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=} opt_power Power.\n * @return {function(number): number} Value for resolution function.\n */\n View.prototype.getValueForResolutionFunction = function (opt_power) {\n var logPower = Math.log(opt_power || 2);\n var maxResolution = this.getConstrainedResolution(this.maxResolution_);\n var minResolution = this.minResolution_;\n var max = Math.log(maxResolution / minResolution) / logPower;\n return (\n /**\n * @param {number} resolution Resolution.\n * @return {number} Value.\n */\n function (resolution) {\n var value = (Math.log(maxResolution / resolution) / logPower) / max;\n return value;\n });\n };\n /**\n * @return {State} View state.\n */\n View.prototype.getState = function () {\n var center = /** @type {import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n var projection = this.getProjection();\n var resolution = /** @type {number} */ (this.getResolution());\n var rotation = this.getRotation();\n return {\n center: center.slice(0),\n projection: projection !== undefined ? projection : null,\n resolution: resolution,\n rotation: rotation,\n zoom: this.getZoom()\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 View.prototype.getZoom = function () {\n var zoom;\n var resolution = this.getResolution();\n if (resolution !== undefined) {\n zoom = this.getZoomForResolution(resolution);\n }\n return zoom;\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 View.prototype.getZoomForResolution = function (resolution) {\n var offset = this.minZoom_ || 0;\n var max, zoomFactor;\n if (this.resolutions_) {\n var 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 }\n else {\n zoomFactor = max / this.resolutions_[nearest + 1];\n }\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 * 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 View.prototype.getResolutionForZoom = function (zoom) {\n if (this.resolutions_) {\n if (this.resolutions_.length <= 1) {\n return 0;\n }\n var baseLevel = clamp(Math.floor(zoom), 0, this.resolutions_.length - 2);\n var zoomFactor = this.resolutions_[baseLevel] / this.resolutions_[baseLevel + 1];\n return this.resolutions_[baseLevel] / Math.pow(zoomFactor, clamp(zoom - baseLevel, 0, 1));\n }\n else {\n return this.maxResolution_ / Math.pow(this.zoomFactor_, zoom - this.minZoom_);\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=} opt_options Options.\n * @api\n */\n View.prototype.fit = function (geometryOrExtent, opt_options) {\n var options = assign({ size: this.getViewportSize_() }, opt_options || {});\n /** @type {import(\"./geom/SimpleGeometry.js\").default} */\n var geometry;\n assert(Array.isArray(geometryOrExtent) || typeof /** @type {?} */ (geometryOrExtent).getSimplifiedGeometry === 'function', 24); // 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 var extent = fromUserExtent(geometryOrExtent, this.getProjection());\n geometry = polygonFromExtent(extent);\n }\n else if (geometryOrExtent.getType() === GeometryType.CIRCLE) {\n var extent = fromUserExtent(geometryOrExtent.getExtent(), this.getProjection());\n geometry = polygonFromExtent(extent);\n geometry.rotate(this.getRotation(), getCenter(extent));\n }\n else {\n var userProjection = getUserProjection();\n if (userProjection) {\n geometry = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometryOrExtent.clone().transform(userProjection, this.getProjection()));\n }\n else {\n geometry = geometryOrExtent;\n }\n }\n this.fitInternal(geometry, options);\n };\n /**\n * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n * @param {FitOptions=} opt_options Options.\n */\n View.prototype.fitInternal = function (geometry, opt_options) {\n var options = opt_options || {};\n var size = options.size;\n if (!size) {\n size = this.getViewportSize_();\n }\n var padding = options.padding !== undefined ? options.padding : [0, 0, 0, 0];\n var nearest = options.nearest !== undefined ? options.nearest : false;\n var minResolution;\n if (options.minResolution !== undefined) {\n minResolution = options.minResolution;\n }\n else if (options.maxZoom !== undefined) {\n minResolution = this.getResolutionForZoom(options.maxZoom);\n }\n else {\n minResolution = 0;\n }\n var coords = geometry.getFlatCoordinates();\n // calculate rotated extent\n var rotation = this.getRotation();\n var cosAngle = Math.cos(-rotation);\n var sinAngle = Math.sin(-rotation);\n var minRotX = +Infinity;\n var minRotY = +Infinity;\n var maxRotX = -Infinity;\n var maxRotY = -Infinity;\n var stride = geometry.getStride();\n for (var i = 0, ii = coords.length; i < ii; i += stride) {\n var rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle;\n var 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 // calculate resolution\n var resolution = this.getResolutionForExtentInternal([minRotX, minRotY, maxRotX, maxRotY], [size[0] - padding[1] - padding[3], size[1] - padding[0] - padding[2]]);\n resolution = isNaN(resolution) ? minResolution :\n Math.max(resolution, minResolution);\n resolution = this.getConstrainedResolution(resolution, nearest ? 0 : 1);\n // calculate center\n sinAngle = -sinAngle; // go back to original rotation\n var centerRotX = (minRotX + maxRotX) / 2;\n var centerRotY = (minRotY + maxRotY) / 2;\n centerRotX += (padding[1] - padding[3]) / 2 * resolution;\n centerRotY += (padding[0] - padding[2]) / 2 * resolution;\n var centerX = centerRotX * cosAngle - centerRotY * sinAngle;\n var centerY = centerRotY * cosAngle + centerRotX * sinAngle;\n var center = [centerX, centerY];\n var callback = options.callback ? options.callback : VOID;\n if (options.duration !== undefined) {\n this.animateInternal({\n resolution: resolution,\n center: this.getConstrainedCenter(center, resolution),\n duration: options.duration,\n easing: options.easing\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 * 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 View.prototype.centerOn = function (coordinate, size, position) {\n this.centerOnInternal(fromUserCoordinate(coordinate, this.getProjection()), size, position);\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 View.prototype.centerOnInternal = function (coordinate, size, position) {\n // calculate rotated position\n var rotation = this.getRotation();\n var cosAngle = Math.cos(-rotation);\n var sinAngle = Math.sin(-rotation);\n var rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n var rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n var resolution = this.getResolution();\n rotX += (size[0] / 2 - position[0]) * resolution;\n rotY += (position[1] - size[1] / 2) * resolution;\n // go back to original angle\n sinAngle = -sinAngle; // go back to original rotation\n var centerX = rotX * cosAngle - rotY * sinAngle;\n var centerY = rotY * cosAngle + rotX * sinAngle;\n this.setCenterInternal([centerX, centerY]);\n };\n /**\n * @return {boolean} Is defined.\n */\n View.prototype.isDef = function () {\n return !!this.getCenterInternal() && this.getResolution() !== undefined;\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 View.prototype.adjustCenter = function (deltaCoordinates) {\n var center = toUserCoordinate(this.targetCenter_, this.getProjection());\n this.setCenter([center[0] + deltaCoordinates[0], center[1] + deltaCoordinates[1]]);\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 View.prototype.adjustCenterInternal = function (deltaCoordinates) {\n var center = this.targetCenter_;\n this.setCenterInternal([center[0] + deltaCoordinates[0], center[1] + deltaCoordinates[1]]);\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=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.adjustResolution = function (ratio, opt_anchor) {\n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.adjustResolutionInternal(ratio, anchor);\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=} opt_anchor The origin of the transformation.\n */\n View.prototype.adjustResolutionInternal = function (ratio, opt_anchor) {\n var isMoving = this.getAnimating() || this.getInteracting();\n var size = this.getViewportSize_(this.getRotation());\n var newResolution = this.constraints_.resolution(this.targetResolution_ * ratio, 0, size, isMoving);\n if (opt_anchor) {\n this.targetCenter_ = this.calculateCenterZoom(newResolution, opt_anchor);\n }\n this.targetResolution_ *= ratio;\n this.applyTargetState_();\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=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.adjustZoom = function (delta, opt_anchor) {\n this.adjustResolution(Math.pow(this.zoomFactor_, -delta), opt_anchor);\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=} opt_anchor The rotation center.\n * @api\n */\n View.prototype.adjustRotation = function (delta, opt_anchor) {\n if (opt_anchor) {\n opt_anchor = fromUserCoordinate(opt_anchor, this.getProjection());\n }\n this.adjustRotationInternal(delta, opt_anchor);\n };\n /**\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The rotation center.\n */\n View.prototype.adjustRotationInternal = function (delta, opt_anchor) {\n var isMoving = this.getAnimating() || this.getInteracting();\n var newRotation = this.constraints_.rotation(this.targetRotation_ + delta, isMoving);\n if (opt_anchor) {\n this.targetCenter_ = this.calculateCenterRotate(newRotation, opt_anchor);\n }\n this.targetRotation_ += delta;\n this.applyTargetState_();\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 View.prototype.setCenter = function (center) {\n this.setCenterInternal(fromUserCoordinate(center, this.getProjection()));\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 View.prototype.setCenterInternal = function (center) {\n this.targetCenter_ = center;\n this.applyTargetState_();\n };\n /**\n * @param {ViewHint} hint Hint.\n * @param {number} delta Delta.\n * @return {number} New value.\n */\n View.prototype.setHint = function (hint, delta) {\n this.hints_[hint] += delta;\n this.changed();\n return this.hints_[hint];\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 View.prototype.setResolution = function (resolution) {\n this.targetResolution_ = resolution;\n this.applyTargetState_();\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 View.prototype.setRotation = function (rotation) {\n this.targetRotation_ = rotation;\n this.applyTargetState_();\n };\n /**\n * Zoom to a specific zoom level. Any resolution constrain will apply.\n * @param {number} zoom Zoom level.\n * @api\n */\n View.prototype.setZoom = function (zoom) {\n this.setResolution(this.getResolutionForZoom(zoom));\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=} opt_doNotCancelAnims Do not cancel animations.\n * @param {boolean=} opt_forceMoving Apply constraints as if the view is moving.\n * @private\n */\n View.prototype.applyTargetState_ = function (opt_doNotCancelAnims, opt_forceMoving) {\n var isMoving = this.getAnimating() || this.getInteracting() || opt_forceMoving;\n // compute rotation\n var newRotation = this.constraints_.rotation(this.targetRotation_, isMoving);\n var size = this.getViewportSize_(newRotation);\n var newResolution = this.constraints_.resolution(this.targetResolution_, 0, size, isMoving);\n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size, isMoving);\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 }\n if (!this.get(ViewProperty.CENTER) || !equals(this.get(ViewProperty.CENTER), newCenter)) {\n this.set(ViewProperty.CENTER, newCenter);\n }\n if (this.getAnimating() && !opt_doNotCancelAnims) {\n this.cancelAnimations();\n }\n this.cancelAnchor_ = undefined;\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=} opt_duration The animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.resolveConstraints = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n var duration = opt_duration !== undefined ? opt_duration : 200;\n var direction = opt_resolutionDirection || 0;\n var newRotation = this.constraints_.rotation(this.targetRotation_);\n var size = this.getViewportSize_(newRotation);\n var newResolution = this.constraints_.resolution(this.targetResolution_, direction, size);\n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size);\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 var anchor = opt_anchor || (duration === 0 ? this.cancelAnchor_ : undefined);\n this.cancelAnchor_ = undefined;\n if (this.getResolution() !== newResolution ||\n this.getRotation() !== newRotation ||\n !this.getCenterInternal() ||\n !equals(this.getCenterInternal(), newCenter)) {\n if (this.getAnimating()) {\n this.cancelAnimations();\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 * 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 View.prototype.beginInteraction = function () {\n this.resolveConstraints(0);\n this.setHint(ViewHint.INTERACTING, 1);\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=} opt_duration Animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.endInteraction = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.endInteractionInternal(opt_duration, opt_resolutionDirection, anchor);\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=} opt_duration Animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.endInteractionInternal = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n this.setHint(ViewHint.INTERACTING, -1);\n this.resolveConstraints(opt_duration, opt_resolutionDirection, opt_anchor);\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=} opt_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 View.prototype.getConstrainedCenter = function (targetCenter, opt_targetResolution) {\n var size = this.getViewportSize_(this.getRotation());\n return this.constraints_.center(targetCenter, opt_targetResolution || this.getResolution(), size);\n };\n /**\n * Get a valid zoom level according to the current view constraints.\n * @param {number|undefined} targetZoom Target zoom.\n * @param {number=} [opt_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 View.prototype.getConstrainedZoom = function (targetZoom, opt_direction) {\n var targetRes = this.getResolutionForZoom(targetZoom);\n return this.getZoomForResolution(this.getConstrainedResolution(targetRes, opt_direction));\n };\n /**\n * Get a valid resolution according to the current view constraints.\n * @param {number|undefined} targetResolution Target resolution.\n * @param {number=} [opt_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 View.prototype.getConstrainedResolution = function (targetResolution, opt_direction) {\n var direction = opt_direction || 0;\n var size = this.getViewportSize_(this.getRotation());\n return this.constraints_.resolution(targetResolution, direction, size);\n };\n return View;\n}(BaseObject));\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 * @param {ViewOptions} options View options.\n * @return {import(\"./centerconstraint.js\").Type} The constraint.\n */\nexport function createCenterConstraint(options) {\n if (options.extent !== undefined) {\n var smooth = options.smoothExtentConstraint !== undefined ? options.smoothExtentConstraint : true;\n return createExtent(options.extent, options.constrainOnlyCenter, smooth);\n }\n var projection = createProjection(options.projection, 'EPSG:3857');\n if (options.multiWorld !== true && projection.isGlobal()) {\n var extent = projection.getExtent().slice();\n extent[0] = -Infinity;\n extent[2] = Infinity;\n return createExtent(extent, false, false);\n }\n return centerNone;\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 var resolutionConstraint;\n var maxResolution;\n var minResolution;\n // TODO: move these to be ol constants\n // see https://github.com/openlayers/openlayers/issues/2076\n var defaultMaxZoom = 28;\n var defaultZoomFactor = 2;\n var minZoom = options.minZoom !== undefined ?\n options.minZoom : DEFAULT_MIN_ZOOM;\n var maxZoom = options.maxZoom !== undefined ?\n options.maxZoom : defaultMaxZoom;\n var zoomFactor = options.zoomFactor !== undefined ?\n options.zoomFactor : defaultZoomFactor;\n var multiWorld = options.multiWorld !== undefined ?\n options.multiWorld : false;\n var smooth = options.smoothResolutionConstraint !== undefined ? options.smoothResolutionConstraint : true;\n var showFullExtent = options.showFullExtent !== undefined ? options.showFullExtent : false;\n var projection = createProjection(options.projection, 'EPSG:3857');\n var projExtent = projection.getExtent();\n var constrainOnlyCenter = options.constrainOnlyCenter;\n var extent = options.extent;\n if (!multiWorld && !extent && projection.isGlobal()) {\n constrainOnlyCenter = false;\n extent = projExtent;\n }\n if (options.resolutions !== undefined) {\n var resolutions = options.resolutions;\n maxResolution = resolutions[minZoom];\n minResolution = resolutions[maxZoom] !== undefined ?\n resolutions[maxZoom] : resolutions[resolutions.length - 1];\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToResolutions(resolutions, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n }\n else {\n // calculate the default min and max resolution\n var size = !projExtent ?\n // use an extent that can fit the whole world if need be\n 360 * METERS_PER_UNIT[Units.DEGREES] /\n projection.getMetersPerUnit() :\n Math.max(getWidth(projExtent), getHeight(projExtent));\n var defaultMaxResolution = size / DEFAULT_TILE_SIZE / Math.pow(defaultZoomFactor, DEFAULT_MIN_ZOOM);\n var defaultMinResolution = defaultMaxResolution / Math.pow(defaultZoomFactor, defaultMaxZoom - DEFAULT_MIN_ZOOM);\n // user provided maxResolution takes precedence\n maxResolution = options.maxResolution;\n if (maxResolution !== undefined) {\n minZoom = 0;\n }\n else {\n maxResolution = defaultMaxResolution / Math.pow(zoomFactor, minZoom);\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 }\n else {\n minResolution = defaultMaxResolution / Math.pow(zoomFactor, maxZoom);\n }\n }\n else {\n minResolution = defaultMinResolution;\n }\n }\n // given discrete zoom levels, minResolution may be different than provided\n maxZoom = minZoom + Math.floor(Math.log(maxResolution / minResolution) / Math.log(zoomFactor));\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToPower(zoomFactor, maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n }\n return { constraint: resolutionConstraint, maxResolution: maxResolution,\n minResolution: minResolution, minZoom: minZoom, zoomFactor: zoomFactor };\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./rotationconstraint.js\").Type} Rotation constraint.\n */\nexport function createRotationConstraint(options) {\n var enableRotation = options.enableRotation !== undefined ?\n options.enableRotation : true;\n if (enableRotation) {\n var constrainRotation = options.constrainRotation;\n if (constrainRotation === undefined || constrainRotation === true) {\n return createSnapToZero();\n }\n else if (constrainRotation === false) {\n return rotationNone;\n }\n else if (typeof constrainRotation === 'number') {\n return createSnapToN(constrainRotation);\n }\n else {\n return rotationNone;\n }\n }\n else {\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}\nexport default View;\n//# sourceMappingURL=View.js.map","/**\n * @module ol/tilegrid/common\n */\n/**\n * Default maximum zoom for default tile grids.\n * @type {number}\n */\nexport var DEFAULT_MAX_ZOOM = 42;\n/**\n * Default tile size.\n * @type {number}\n */\nexport var DEFAULT_TILE_SIZE = 256;\n//# sourceMappingURL=common.js.map","import { WORKER_OFFSCREEN_CANVAS } from './has.js';\n/**\n * @module ol/dom\n */\n//FIXME Move this function to the canvas module\n/**\n * Create an html canvas element and returns its 2d context.\n * @param {number=} opt_width Canvas width.\n * @param {number=} opt_height Canvas height.\n * @param {Array=} opt_canvasPool Canvas pool to take existing canvas from.\n * @return {CanvasRenderingContext2D} The context.\n */\nexport function createCanvasContext2D(opt_width, opt_height, opt_canvasPool) {\n var canvas = opt_canvasPool && opt_canvasPool.length ?\n opt_canvasPool.shift() :\n WORKER_OFFSCREEN_CANVAS ?\n new OffscreenCanvas(opt_width || 300, opt_height || 300) :\n document.createElement('canvas');\n if (opt_width) {\n canvas.width = opt_width;\n }\n if (opt_height) {\n canvas.height = opt_height;\n }\n //FIXME Allow OffscreenCanvasRenderingContext2D as return type\n return /** @type {CanvasRenderingContext2D} */ (canvas.getContext('2d'));\n}\n/**\n * Get the current computed width for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerWidth(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The width.\n */\nexport function outerWidth(element) {\n var width = element.offsetWidth;\n var style = getComputedStyle(element);\n width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);\n return width;\n}\n/**\n * Get the current computed height for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerHeight(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The height.\n */\nexport function outerHeight(element) {\n var height = element.offsetHeight;\n var style = getComputedStyle(element);\n height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);\n return height;\n}\n/**\n * @param {Node} newNode Node to replace old node\n * @param {Node} oldNode The node to be replaced\n */\nexport function replaceNode(newNode, oldNode) {\n var parent = oldNode.parentNode;\n if (parent) {\n parent.replaceChild(newNode, oldNode);\n }\n}\n/**\n * @param {Node} node The node to remove.\n * @returns {Node} The node that was removed or null.\n */\nexport function removeNode(node) {\n return node && node.parentNode ? node.parentNode.removeChild(node) : null;\n}\n/**\n * @param {Node} node The node to remove the children from.\n */\nexport function removeChildren(node) {\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n}\n/**\n * Transform the children of a parent node so they match the\n * provided list of children. This function aims to efficiently\n * remove, add, and reorder child nodes while maintaining a simple\n * implementation (it is not guaranteed to minimize DOM operations).\n * @param {Node} node The parent node whose children need reworking.\n * @param {Array} children The desired children.\n */\nexport function replaceChildren(node, children) {\n var oldChildren = node.childNodes;\n for (var i = 0; true; ++i) {\n var oldChild = oldChildren[i];\n var newChild = children[i];\n // check if our work is done\n if (!oldChild && !newChild) {\n break;\n }\n // check if children match\n if (oldChild === newChild) {\n continue;\n }\n // check if a new child needs to be added\n if (!oldChild) {\n node.appendChild(newChild);\n continue;\n }\n // check if an old child needs to be removed\n if (!newChild) {\n node.removeChild(oldChild);\n --i;\n continue;\n }\n // reorder\n node.insertBefore(newChild, oldChild);\n }\n}\n//# sourceMappingURL=dom.js.map","/**\n * @module ol/layer/Property\n */\n/**\n * @enum {string}\n */\nexport default {\n OPACITY: 'opacity',\n VISIBLE: 'visible',\n EXTENT: 'extent',\n Z_INDEX: 'zIndex',\n MAX_RESOLUTION: 'maxResolution',\n MIN_RESOLUTION: 'minResolution',\n MAX_ZOOM: 'maxZoom',\n MIN_ZOOM: 'minZoom',\n SOURCE: 'source'\n};\n//# sourceMappingURL=Property.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Base\n */\nimport { abstract } from '../util.js';\nimport BaseObject from '../Object.js';\nimport LayerProperty from './Property.js';\nimport { clamp } from '../math.js';\nimport { assign } from '../obj.js';\nimport { assert } from '../asserts.js';\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 */\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} and all its subclasses, any property set in\n * the options is set as a {@link module:ol/Object} property on the layer object, so\n * is observable, and has get/set accessors.\n *\n * @api\n */\nvar BaseLayer = /** @class */ (function (_super) {\n __extends(BaseLayer, _super);\n /**\n * @param {Options} options Layer options.\n */\n function BaseLayer(options) {\n var _this = _super.call(this) || this;\n /**\n * @type {Object}\n */\n var properties = assign({}, options);\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 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 * @type {string}\n * @private\n */\n _this.className_ = properties.className !== undefined ? options.className : 'ol-layer';\n delete properties.className;\n _this.setProperties(properties);\n /**\n * @type {import(\"./Layer.js\").State}\n * @private\n */\n _this.state_ = null;\n return _this;\n }\n /**\n * @return {string} CSS class name.\n */\n BaseLayer.prototype.getClassName = function () {\n return this.className_;\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=} opt_managed Layer is managed.\n * @return {import(\"./Layer.js\").State} Layer state.\n */\n BaseLayer.prototype.getLayerState = function (opt_managed) {\n /** @type {import(\"./Layer.js\").State} */\n var state = this.state_ || /** @type {?} */ ({\n layer: this,\n managed: opt_managed === undefined ? true : opt_managed\n });\n var zIndex = this.getZIndex();\n state.opacity = clamp(Math.round(this.getOpacity() * 100) / 100, 0, 1);\n state.sourceState = this.getSourceState();\n state.visible = this.getVisible();\n state.extent = this.getExtent();\n state.zIndex = zIndex !== undefined ? zIndex : (state.managed === false ? Infinity : 0);\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 return state;\n };\n /**\n * @abstract\n * @param {Array=} opt_array Array of layers (to be\n * modified in place).\n * @return {Array} Array of layers.\n */\n BaseLayer.prototype.getLayersArray = function (opt_array) {\n return abstract();\n };\n /**\n * @abstract\n * @param {Array=} opt_states Optional list of layer\n * states (to be modified in place).\n * @return {Array} List of layer states.\n */\n BaseLayer.prototype.getLayerStatesArray = function (opt_states) {\n return abstract();\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 BaseLayer.prototype.getExtent = function () {\n return (\n /** @type {import(\"../extent.js\").Extent|undefined} */ (this.get(LayerProperty.EXTENT)));\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 BaseLayer.prototype.getMaxResolution = function () {\n return /** @type {number} */ (this.get(LayerProperty.MAX_RESOLUTION));\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 BaseLayer.prototype.getMinResolution = function () {\n return /** @type {number} */ (this.get(LayerProperty.MIN_RESOLUTION));\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 BaseLayer.prototype.getMinZoom = function () {\n return /** @type {number} */ (this.get(LayerProperty.MIN_ZOOM));\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 BaseLayer.prototype.getMaxZoom = function () {\n return /** @type {number} */ (this.get(LayerProperty.MAX_ZOOM));\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 BaseLayer.prototype.getOpacity = function () {\n return /** @type {number} */ (this.get(LayerProperty.OPACITY));\n };\n /**\n * @abstract\n * @return {import(\"../source/State.js\").default} Source state.\n */\n BaseLayer.prototype.getSourceState = function () {\n return abstract();\n };\n /**\n * Return the visibility of the layer (`true` or `false`).\n * @return {boolean} The visibility of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getVisible = function () {\n return /** @type {boolean} */ (this.get(LayerProperty.VISIBLE));\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 BaseLayer.prototype.getZIndex = function () {\n return /** @type {number} */ (this.get(LayerProperty.Z_INDEX));\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 BaseLayer.prototype.setExtent = function (extent) {\n this.set(LayerProperty.EXTENT, extent);\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 BaseLayer.prototype.setMaxResolution = function (maxResolution) {\n this.set(LayerProperty.MAX_RESOLUTION, maxResolution);\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 BaseLayer.prototype.setMinResolution = function (minResolution) {\n this.set(LayerProperty.MIN_RESOLUTION, minResolution);\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 BaseLayer.prototype.setMaxZoom = function (maxZoom) {\n this.set(LayerProperty.MAX_ZOOM, maxZoom);\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 BaseLayer.prototype.setMinZoom = function (minZoom) {\n this.set(LayerProperty.MIN_ZOOM, minZoom);\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 BaseLayer.prototype.setOpacity = function (opacity) {\n assert(typeof opacity === 'number', 64); // Layer opacity must be a number\n this.set(LayerProperty.OPACITY, opacity);\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 BaseLayer.prototype.setVisible = function (visible) {\n this.set(LayerProperty.VISIBLE, visible);\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 BaseLayer.prototype.setZIndex = function (zindex) {\n this.set(LayerProperty.Z_INDEX, zindex);\n };\n /**\n * @inheritDoc\n */\n BaseLayer.prototype.disposeInternal = function () {\n if (this.state_) {\n this.state_.layer = null;\n this.state_ = null;\n }\n _super.prototype.disposeInternal.call(this);\n };\n return BaseLayer;\n}(BaseObject));\nexport default BaseLayer;\n//# sourceMappingURL=Base.js.map","/**\n * @module ol/source/State\n */\n/**\n * @enum {string}\n * State of the source, one of 'undefined', 'loading', 'ready' or 'error'.\n */\nexport default {\n UNDEFINED: 'undefined',\n LOADING: 'loading',\n READY: 'ready',\n ERROR: 'error'\n};\n//# sourceMappingURL=State.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Group\n */\nimport { getUid } from '../util.js';\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport { getChangeEventType } from '../Object.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport { assert } from '../asserts.js';\nimport { listen, unlistenByKey } from '../events.js';\nimport EventType from '../events/EventType.js';\nimport { getIntersection } from '../extent.js';\nimport BaseLayer from './Base.js';\nimport { assign, clear } from '../obj.js';\nimport SourceState from '../source/State.js';\n/**\n * @typedef {Object} Options\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 {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 {Array|import(\"../Collection.js\").default} [layers] Child layers.\n */\n/**\n * @enum {string}\n * @private\n */\nvar Property = {\n LAYERS: 'layers'\n};\n/**\n * @classdesc\n * A {@link module:ol/Collection~Collection} of layers that are handled together.\n *\n * A generic `change` event is triggered when the group/Collection changes.\n *\n * @api\n */\nvar LayerGroup = /** @class */ (function (_super) {\n __extends(LayerGroup, _super);\n /**\n * @param {Options=} opt_options Layer options.\n */\n function LayerGroup(opt_options) {\n var _this = this;\n var options = opt_options || {};\n var baseOptions = /** @type {Options} */ (assign({}, options));\n delete baseOptions.layers;\n var layers = options.layers;\n _this = _super.call(this, baseOptions) || this;\n /**\n * @private\n * @type {Array}\n */\n _this.layersListenerKeys_ = [];\n /**\n * @private\n * @type {Object>}\n */\n _this.listenerKeys_ = {};\n _this.addEventListener(getChangeEventType(Property.LAYERS), _this.handleLayersChanged_);\n if (layers) {\n if (Array.isArray(layers)) {\n layers = new Collection(layers.slice(), { unique: true });\n }\n else {\n assert(typeof /** @type {?} */ (layers).getArray === 'function', 43); // Expected `layers` to be an array or a `Collection`\n }\n }\n else {\n layers = new Collection(undefined, { unique: true });\n }\n _this.setLayers(layers);\n return _this;\n }\n /**\n * @private\n */\n LayerGroup.prototype.handleLayerChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n LayerGroup.prototype.handleLayersChanged_ = function () {\n this.layersListenerKeys_.forEach(unlistenByKey);\n this.layersListenerKeys_.length = 0;\n var layers = this.getLayers();\n this.layersListenerKeys_.push(listen(layers, CollectionEventType.ADD, this.handleLayersAdd_, this), listen(layers, CollectionEventType.REMOVE, this.handleLayersRemove_, this));\n for (var id in this.listenerKeys_) {\n this.listenerKeys_[id].forEach(unlistenByKey);\n }\n clear(this.listenerKeys_);\n var layersArray = layers.getArray();\n for (var i = 0, ii = layersArray.length; i < ii; i++) {\n var layer = layersArray[i];\n this.listenerKeys_[getUid(layer)] = [\n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this)\n ];\n }\n this.changed();\n };\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n LayerGroup.prototype.handleLayersAdd_ = function (collectionEvent) {\n var layer = /** @type {import(\"./Base.js\").default} */ (collectionEvent.element);\n this.listenerKeys_[getUid(layer)] = [\n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this)\n ];\n this.changed();\n };\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n LayerGroup.prototype.handleLayersRemove_ = function (collectionEvent) {\n var layer = /** @type {import(\"./Base.js\").default} */ (collectionEvent.element);\n var key = getUid(layer);\n this.listenerKeys_[key].forEach(unlistenByKey);\n delete this.listenerKeys_[key];\n this.changed();\n };\n /**\n * Returns the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @return {!import(\"../Collection.js\").default} Collection of\n * {@link module:ol/layer/Base layers} that are part of this group.\n * @observable\n * @api\n */\n LayerGroup.prototype.getLayers = function () {\n return (\n /** @type {!import(\"../Collection.js\").default} */ (this.get(Property.LAYERS)));\n };\n /**\n * Set the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @param {!import(\"../Collection.js\").default} layers Collection of\n * {@link module:ol/layer/Base layers} that are part of this group.\n * @observable\n * @api\n */\n LayerGroup.prototype.setLayers = function (layers) {\n this.set(Property.LAYERS, layers);\n };\n /**\n * @inheritDoc\n */\n LayerGroup.prototype.getLayersArray = function (opt_array) {\n var array = opt_array !== undefined ? opt_array : [];\n this.getLayers().forEach(function (layer) {\n layer.getLayersArray(array);\n });\n return array;\n };\n /**\n * @inheritDoc\n */\n LayerGroup.prototype.getLayerStatesArray = function (opt_states) {\n var states = opt_states !== undefined ? opt_states : [];\n var pos = states.length;\n this.getLayers().forEach(function (layer) {\n layer.getLayerStatesArray(states);\n });\n var ownLayerState = this.getLayerState();\n for (var i = pos, ii = states.length; i < ii; i++) {\n var layerState = states[i];\n layerState.opacity *= ownLayerState.opacity;\n layerState.visible = layerState.visible && ownLayerState.visible;\n layerState.maxResolution = Math.min(layerState.maxResolution, ownLayerState.maxResolution);\n layerState.minResolution = Math.max(layerState.minResolution, ownLayerState.minResolution);\n layerState.minZoom = Math.max(layerState.minZoom, ownLayerState.minZoom);\n layerState.maxZoom = Math.min(layerState.maxZoom, ownLayerState.maxZoom);\n if (ownLayerState.extent !== undefined) {\n if (layerState.extent !== undefined) {\n layerState.extent = getIntersection(layerState.extent, ownLayerState.extent);\n }\n else {\n layerState.extent = ownLayerState.extent;\n }\n }\n }\n return states;\n };\n /**\n * @inheritDoc\n */\n LayerGroup.prototype.getSourceState = function () {\n return SourceState.READY;\n };\n return LayerGroup;\n}(BaseLayer));\nexport default LayerGroup;\n//# sourceMappingURL=Group.js.map","/**\n * @module ol/size\n */\n/**\n * An array of numbers representing a size: `[width, height]`.\n * @typedef {Array} Size\n * @api\n */\n/**\n * Returns a buffered size.\n * @param {Size} size Size.\n * @param {number} num The amount by which to buffer.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} The buffered size.\n */\nexport function buffer(size, num, opt_size) {\n if (opt_size === undefined) {\n opt_size = [0, 0];\n }\n opt_size[0] = size[0] + 2 * num;\n opt_size[1] = size[1] + 2 * num;\n return opt_size;\n}\n/**\n * Determines if a size has a positive area.\n * @param {Size} size The size to test.\n * @return {boolean} The size has a positive area.\n */\nexport function hasArea(size) {\n return size[0] > 0 && size[1] > 0;\n}\n/**\n * Returns a size scaled by a ratio. The result will be an array of integers.\n * @param {Size} size Size.\n * @param {number} ratio Ratio.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} The scaled size.\n */\nexport function scale(size, ratio, opt_size) {\n if (opt_size === undefined) {\n opt_size = [0, 0];\n }\n opt_size[0] = (size[0] * ratio + 0.5) | 0;\n opt_size[1] = (size[1] * ratio + 0.5) | 0;\n return opt_size;\n}\n/**\n * Returns an `Size` array for the passed in number (meaning: square) or\n * `Size` array.\n * (meaning: non-square),\n * @param {number|Size} size Width and height.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} Size.\n * @api\n */\nexport function toSize(size, opt_size) {\n if (Array.isArray(size)) {\n return size;\n }\n else {\n if (opt_size === undefined) {\n opt_size = [size, size];\n }\n else {\n opt_size[0] = size;\n opt_size[1] = size;\n }\n return opt_size;\n }\n}\n//# sourceMappingURL=size.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/PluggableMap\n */\nimport Collection from './Collection.js';\nimport CollectionEventType from './CollectionEventType.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 RenderEventType from './render/EventType.js';\nimport BaseObject, { getChangeEventType } from './Object.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport TileQueue, { getTilePriority } from './TileQueue.js';\nimport View from './View.js';\nimport ViewHint from './ViewHint.js';\nimport { assert } from './asserts.js';\nimport { removeNode } from './dom.js';\nimport { listen, unlistenByKey } from './events.js';\nimport EventType from './events/EventType.js';\nimport { clone, createOrUpdateEmpty, equals, getForViewAndSize, isEmpty } from './extent.js';\nimport { TRUE } from './functions.js';\nimport { DEVICE_PIXEL_RATIO, IMAGE_DECODE, PASSIVE_EVENT_LISTENERS } from './has.js';\nimport LayerGroup from './layer/Group.js';\nimport { hasArea } from './size.js';\nimport { create as createTransform, apply as applyTransform } from './transform.js';\nimport { toUserCoordinate, fromUserCoordinate } from './proj.js';\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\n * @property {import(\"./transform.js\").Transform} coordinateToPixelTransform\n * @property {null|import(\"./extent.js\").Extent} extent\n * @property {Array} declutterItems\n * @property {number} index\n * @property {Array} layerStatesArray\n * @property {number} layerIndex\n * @property {import(\"./transform.js\").Transform} pixelToCoordinateTransform\n * @property {Array} postRenderFunctions\n * @property {import(\"./size.js\").Size} size\n * @property {TileQueue} tileQueue\n * @property {!Object>} usedTiles\n * @property {Array} viewHints\n * @property {!Object>} wantedTiles\n */\n/**\n * @typedef {Object} DeclutterItems\n * @property {Array<*>} items Declutter items of an executor.\n * @property {number} opacity Layer opacity.\n */\n/**\n * @typedef {function(PluggableMap, ?FrameState): any} PostRenderFunction\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-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 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 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 * @typedef {Object} MapOptionsInternal\n * @property {Collection} [controls]\n * @property {Collection} [interactions]\n * @property {HTMLElement|Document} keyboardEventTarget\n * @property {Collection} overlays\n * @property {Object} values\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} 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} 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.\n * @property {View} [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 * @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 */\nvar PluggableMap = /** @class */ (function (_super) {\n __extends(PluggableMap, _super);\n /**\n * @param {MapOptions} options Map options.\n */\n function PluggableMap(options) {\n var _this = _super.call(this) || this;\n var optionsInternal = createOptionsInternal(options);\n /** @private */\n _this.boundHandleBrowserEvent_ = _this.handleBrowserEvent.bind(_this);\n /**\n * @type {number}\n * @private\n */\n _this.maxTilesLoading_ = options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;\n /**\n * @private\n * @type {number}\n */\n _this.pixelRatio_ = options.pixelRatio !== undefined ?\n options.pixelRatio : DEVICE_PIXEL_RATIO;\n /**\n * @private\n * @type {*}\n */\n _this.postRenderTimeoutHandle_;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.animationDelayKey_;\n /**\n * @private\n */\n _this.animationDelay_ = function () {\n this.animationDelayKey_ = undefined;\n this.renderFrame_(Date.now());\n }.bind(_this);\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n _this.coordinateToPixelTransform_ = createTransform();\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n _this.pixelToCoordinateTransform_ = createTransform();\n /**\n * @private\n * @type {number}\n */\n _this.frameIndex_ = 0;\n /**\n * @private\n * @type {?FrameState}\n */\n _this.frameState_ = null;\n /**\n * The extent at the previous 'moveend' event.\n * @private\n * @type {import(\"./extent.js\").Extent}\n */\n _this.previousExtent_ = null;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.viewPropertyListenerKey_ = null;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.viewChangeListenerKey_ = null;\n /**\n * @private\n * @type {?Array}\n */\n _this.layerGroupPropertyListenerKeys_ = null;\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.viewport_ = document.createElement('div');\n _this.viewport_.className = '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 * @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_.className = 'ol-overlaycontainer';\n _this.viewport_.appendChild(_this.overlayContainer_);\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_.className = 'ol-overlaycontainer-stopevent';\n _this.viewport_.appendChild(_this.overlayContainerStopEvent_);\n /**\n * @private\n * @type {MapBrowserEventHandler}\n */\n _this.mapBrowserEventHandler_ = new MapBrowserEventHandler(_this, options.moveTolerance);\n var handleMapBrowserEvent = _this.handleMapBrowserEvent.bind(_this);\n for (var key in MapBrowserEventType) {\n _this.mapBrowserEventHandler_.addEventListener(MapBrowserEventType[key], handleMapBrowserEvent);\n }\n /**\n * @private\n * @type {HTMLElement|Document}\n */\n _this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n /**\n * @private\n * @type {?Array}\n */\n _this.keyHandlerKeys_ = null;\n var handleBrowserEvent = _this.handleBrowserEvent.bind(_this);\n _this.viewport_.addEventListener(EventType.CONTEXTMENU, handleBrowserEvent, false);\n _this.viewport_.addEventListener(EventType.WHEEL, handleBrowserEvent, PASSIVE_EVENT_LISTENERS ? { passive: false } : false);\n /**\n * @type {Collection}\n * @protected\n */\n _this.controls = optionsInternal.controls || new Collection();\n /**\n * @type {Collection}\n * @protected\n */\n _this.interactions = optionsInternal.interactions || new Collection();\n /**\n * @type {Collection}\n * @private\n */\n _this.overlays_ = optionsInternal.overlays;\n /**\n * A lookup of overlays by id.\n * @private\n * @type {Object}\n */\n _this.overlayIdIndex_ = {};\n /**\n * @type {import(\"./renderer/Map.js\").default}\n * @private\n */\n _this.renderer_ = null;\n /**\n * @type {undefined|function(Event): void}\n * @private\n */\n _this.handleResize_;\n /**\n * @private\n * @type {!Array}\n */\n _this.postRenderFunctions_ = [];\n /**\n * @private\n * @type {TileQueue}\n */\n _this.tileQueue_ = new TileQueue(_this.getTilePriority.bind(_this), _this.handleTileChange_.bind(_this));\n _this.addEventListener(getChangeEventType(MapProperty.LAYERGROUP), _this.handleLayerGroupChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.VIEW), _this.handleViewChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.SIZE), _this.handleSizeChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.TARGET), _this.handleTargetChanged_);\n // setProperties will trigger the rendering of the map if the map\n // is \"defined\" already.\n _this.setProperties(optionsInternal.values);\n _this.controls.forEach(\n /**\n * @param {import(\"./control/Control.js\").default} control Control.\n * @this {PluggableMap}\n */\n function (control) {\n control.setMap(this);\n }.bind(_this));\n _this.controls.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(_this));\n _this.controls.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(_this));\n _this.interactions.forEach(\n /**\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction.\n * @this {PluggableMap}\n */\n function (interaction) {\n interaction.setMap(this);\n }.bind(_this));\n _this.interactions.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(_this));\n _this.interactions.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(_this));\n _this.overlays_.forEach(_this.addOverlayInternal_.bind(_this));\n _this.overlays_.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n this.addOverlayInternal_(/** @type {import(\"./Overlay.js\").default} */ (event.element));\n }.bind(_this));\n _this.overlays_.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n var overlay = /** @type {import(\"./Overlay.js\").default} */ (event.element);\n var id = overlay.getId();\n if (id !== undefined) {\n delete this.overlayIdIndex_[id.toString()];\n }\n event.element.setMap(null);\n }.bind(_this));\n return _this;\n }\n /**\n * @abstract\n * @return {import(\"./renderer/Map.js\").default} The map renderer\n */\n PluggableMap.prototype.createRenderer = function () {\n throw new Error('Use a map type that has a createRenderer method');\n };\n /**\n * Add the given control to the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @api\n */\n PluggableMap.prototype.addControl = function (control) {\n this.getControls().push(control);\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 `getInteraction()` 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 PluggableMap.prototype.addInteraction = function (interaction) {\n this.getInteractions().push(interaction);\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 PluggableMap.prototype.addLayer = function (layer) {\n var layers = this.getLayerGroup().getLayers();\n layers.push(layer);\n };\n /**\n * Add the given overlay to the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @api\n */\n PluggableMap.prototype.addOverlay = function (overlay) {\n this.getOverlays().push(overlay);\n };\n /**\n * This deals with map's overlay collection changes.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @private\n */\n PluggableMap.prototype.addOverlayInternal_ = function (overlay) {\n var id = overlay.getId();\n if (id !== undefined) {\n this.overlayIdIndex_[id.toString()] = overlay;\n }\n overlay.setMap(this);\n };\n /**\n *\n * @inheritDoc\n */\n PluggableMap.prototype.disposeInternal = function () {\n this.mapBrowserEventHandler_.dispose();\n this.viewport_.removeEventListener(EventType.CONTEXTMENU, this.boundHandleBrowserEvent_);\n this.viewport_.removeEventListener(EventType.WHEEL, this.boundHandleBrowserEvent_);\n if (this.handleResize_ !== undefined) {\n removeEventListener(EventType.RESIZE, this.handleResize_, false);\n this.handleResize_ = undefined;\n }\n this.setTarget(null);\n _super.prototype.disposeInternal.call(this);\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 `opt_options`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(this: S, import(\"./Feature.js\").FeatureLike,\n * import(\"./layer/Layer.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} or\n * {@link module:ol/render/Feature render feature} at the pixel, the second is\n * the {@link module:ol/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=} opt_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 S,T\n * @api\n */\n PluggableMap.prototype.forEachFeatureAtPixel = function (pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n var coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n var hitTolerance = opt_options.hitTolerance !== undefined ?\n opt_options.hitTolerance * this.frameState_.pixelRatio : 0;\n var layerFilter = opt_options.layerFilter !== undefined ?\n opt_options.layerFilter : TRUE;\n var checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.forEachFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, callback, null, layerFilter, null);\n };\n /**\n * Get all features that intersect a pixel on the viewport.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {Array} The detected features or\n * an empty array if none were found.\n * @api\n */\n PluggableMap.prototype.getFeaturesAtPixel = function (pixel, opt_options) {\n var features = [];\n this.forEachFeatureAtPixel(pixel, function (feature) {\n features.push(feature);\n }, opt_options);\n return features;\n };\n /**\n * Detect layers that have a color value at a pixel on the viewport, and\n * execute a callback with each matching layer. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n *\n * Note: this may give false positives unless the map layers have had different `className`\n * properties assigned to them.\n *\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(this: S, import(\"./layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback\n * Layer callback. This callback will receive two arguments: first is the\n * {@link module:ol/layer/Layer layer}, second argument is an array representing\n * [R, G, B, A] pixel values (0 - 255) and will be `null` for layer types\n * that do not currently support this argument. To stop detection, callback\n * functions can return a truthy value.\n * @param {AtPixelOptions=} opt_options Configuration 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 S,T\n * @api\n */\n PluggableMap.prototype.forEachLayerAtPixel = function (pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n var options = opt_options || {};\n var hitTolerance = options.hitTolerance !== undefined ?\n options.hitTolerance * this.frameState_.pixelRatio : 0;\n var layerFilter = options.layerFilter || TRUE;\n return this.renderer_.forEachLayerAtPixel(pixel, this.frameState_, hitTolerance, callback, layerFilter);\n };\n /**\n * Detect if features intersect a pixel on the viewport. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {boolean} Is there a feature at the given pixel?\n * @api\n */\n PluggableMap.prototype.hasFeatureAtPixel = function (pixel, opt_options) {\n if (!this.frameState_) {\n return false;\n }\n var coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n var layerFilter = opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE;\n var hitTolerance = opt_options.hitTolerance !== undefined ?\n opt_options.hitTolerance * this.frameState_.pixelRatio : 0;\n var checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.hasFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, layerFilter, null);\n };\n /**\n * Returns the coordinate in user projection for a browser event.\n * @param {Event} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n PluggableMap.prototype.getEventCoordinate = function (event) {\n return this.getCoordinateFromPixel(this.getEventPixel(event));\n };\n /**\n * Returns the coordinate in view projection for a browser event.\n * @param {Event} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n */\n PluggableMap.prototype.getEventCoordinateInternal = function (event) {\n return this.getCoordinateFromPixelInternal(this.getEventPixel(event));\n };\n /**\n * Returns the map pixel position for a browser event relative to the viewport.\n * @param {Event|TouchEvent} event Event.\n * @return {import(\"./pixel.js\").Pixel} Pixel.\n * @api\n */\n PluggableMap.prototype.getEventPixel = function (event) {\n var viewportPosition = this.viewport_.getBoundingClientRect();\n var eventPosition = 'changedTouches' in event ?\n /** @type {TouchEvent} */ (event).changedTouches[0] :\n /** @type {MouseEvent} */ (event);\n return [\n eventPosition.clientX - viewportPosition.left,\n eventPosition.clientY - viewportPosition.top\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 PluggableMap.prototype.getTarget = function () {\n return /** @type {HTMLElement|string|undefined} */ (this.get(MapProperty.TARGET));\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 PluggableMap.prototype.getTargetElement = function () {\n var target = this.getTarget();\n if (target !== undefined) {\n return typeof target === 'string' ? document.getElementById(target) : target;\n }\n else {\n return null;\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 PluggableMap.prototype.getCoordinateFromPixel = function (pixel) {\n return toUserCoordinate(this.getCoordinateFromPixelInternal(pixel), this.getView().getProjection());\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 PluggableMap.prototype.getCoordinateFromPixelInternal = function (pixel) {\n var frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n else {\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 PluggableMap.prototype.getControls = function () {\n return this.controls;\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 PluggableMap.prototype.getOverlays = function () {\n return this.overlays_;\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 PluggableMap.prototype.getOverlayById = function (id) {\n var overlay = this.overlayIdIndex_[id.toString()];\n return overlay !== undefined ? overlay : null;\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 PluggableMap.prototype.getInteractions = function () {\n return this.interactions;\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 PluggableMap.prototype.getLayerGroup = function () {\n return (\n /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP)));\n };\n /**\n * Get the collection of layers associated with this map.\n * @return {!Collection} Layers.\n * @api\n */\n PluggableMap.prototype.getLayers = function () {\n var layers = this.getLayerGroup().getLayers();\n return layers;\n };\n /**\n * @return {boolean} Layers have sources that are still loading.\n */\n PluggableMap.prototype.getLoading = function () {\n var layerStatesArray = this.getLayerGroup().getLayerStatesArray();\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layer = layerStatesArray[i].layer;\n var source = /** @type {import(\"./layer/Layer.js\").default} */ (layer).getSource();\n if (source && source.loading) {\n return true;\n }\n }\n return false;\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 PluggableMap.prototype.getPixelFromCoordinate = function (coordinate) {\n var viewCoordinate = fromUserCoordinate(coordinate, this.getView().getProjection());\n return this.getPixelFromCoordinateInternal(viewCoordinate);\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 PluggableMap.prototype.getPixelFromCoordinateInternal = function (coordinate) {\n var frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n else {\n return applyTransform(frameState.coordinateToPixelTransform, coordinate.slice(0, 2));\n }\n };\n /**\n * Get the map renderer.\n * @return {import(\"./renderer/Map.js\").default} Renderer\n */\n PluggableMap.prototype.getRenderer = function () {\n return this.renderer_;\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 PluggableMap.prototype.getSize = function () {\n return (\n /** @type {import(\"./size.js\").Size|undefined} */ (this.get(MapProperty.SIZE)));\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 PluggableMap.prototype.getView = function () {\n return (\n /** @type {View} */ (this.get(MapProperty.VIEW)));\n };\n /**\n * Get the element that serves as the map viewport.\n * @return {HTMLElement} Viewport.\n * @api\n */\n PluggableMap.prototype.getViewport = function () {\n return this.viewport_;\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 PluggableMap.prototype.getOverlayContainer = function () {\n return this.overlayContainer_;\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 PluggableMap.prototype.getOverlayContainerStopEvent = function () {\n return this.overlayContainerStopEvent_;\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 PluggableMap.prototype.getTilePriority = function (tile, tileSourceKey, tileCenter, tileResolution) {\n return getTilePriority(this.frameState_, tile, tileSourceKey, tileCenter, tileResolution);\n };\n /**\n * @param {Event} browserEvent Browser event.\n * @param {string=} opt_type Type.\n */\n PluggableMap.prototype.handleBrowserEvent = function (browserEvent, opt_type) {\n var type = opt_type || browserEvent.type;\n var mapBrowserEvent = new MapBrowserEvent(type, this, browserEvent);\n this.handleMapBrowserEvent(mapBrowserEvent);\n };\n /**\n * @param {MapBrowserEvent} mapBrowserEvent The event to handle.\n */\n PluggableMap.prototype.handleMapBrowserEvent = function (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 var target = /** @type {Node} */ (mapBrowserEvent.originalEvent.target);\n if (!mapBrowserEvent.dragging) {\n if (this.overlayContainerStopEvent_.contains(target) || !(document.body.contains(target) || this.viewport_.getRootNode && this.viewport_.getRootNode().contains(target))) {\n // Abort if the event target is a child of the container that doesn't allow\n // event propagation or is no longer in the page. It's possible for the target to no longer\n // be in the page if it has been removed in an event listener, this might happen in a Control\n // that recreates it's content based on user interaction either manually or via a render\n // in something like https://reactjs.org/\n return;\n }\n }\n mapBrowserEvent.frameState = this.frameState_;\n var interactionsArray = this.getInteractions().getArray();\n if (this.dispatchEvent(mapBrowserEvent) !== false) {\n for (var i = interactionsArray.length - 1; i >= 0; i--) {\n var interaction = interactionsArray[i];\n if (!interaction.getActive()) {\n continue;\n }\n var cont = interaction.handleEvent(mapBrowserEvent);\n if (!cont) {\n break;\n }\n }\n }\n };\n /**\n * @protected\n */\n PluggableMap.prototype.handlePostRender = function () {\n var frameState = this.frameState_;\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 var tileQueue = this.tileQueue_;\n if (!tileQueue.isEmpty()) {\n var maxTotalLoading = this.maxTilesLoading_;\n var maxNewLoads = maxTotalLoading;\n if (frameState) {\n var hints = frameState.viewHints;\n if (hints[ViewHint.ANIMATING] || hints[ViewHint.INTERACTING]) {\n var lowOnFrameBudget = !IMAGE_DECODE && 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 if (frameState && this.hasListener(RenderEventType.RENDERCOMPLETE) && !frameState.animate &&\n !this.tileQueue_.getTilesLoading() && !this.getLoading()) {\n this.renderer_.dispatchRenderEvent(RenderEventType.RENDERCOMPLETE, frameState);\n }\n var postRenderFunctions = this.postRenderFunctions_;\n for (var i = 0, ii = postRenderFunctions.length; i < ii; ++i) {\n postRenderFunctions[i](this, frameState);\n }\n postRenderFunctions.length = 0;\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleSizeChanged_ = function () {\n if (this.getView()) {\n this.getView().resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTargetChanged_ = function () {\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 var targetElement;\n if (this.getTarget()) {\n targetElement = this.getTargetElement();\n }\n if (this.keyHandlerKeys_) {\n for (var i = 0, ii = this.keyHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.keyHandlerKeys_[i]);\n }\n this.keyHandlerKeys_ = null;\n }\n if (!targetElement) {\n if (this.renderer_) {\n clearTimeout(this.postRenderTimeoutHandle_);\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 removeNode(this.viewport_);\n if (this.handleResize_ !== undefined) {\n removeEventListener(EventType.RESIZE, this.handleResize_, false);\n this.handleResize_ = undefined;\n }\n }\n else {\n targetElement.appendChild(this.viewport_);\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n var keyboardEventTarget = !this.keyboardEventTarget_ ?\n targetElement : this.keyboardEventTarget_;\n this.keyHandlerKeys_ = [\n listen(keyboardEventTarget, EventType.KEYDOWN, this.handleBrowserEvent, this),\n listen(keyboardEventTarget, EventType.KEYPRESS, this.handleBrowserEvent, this)\n ];\n if (!this.handleResize_) {\n this.handleResize_ = this.updateSize.bind(this);\n window.addEventListener(EventType.RESIZE, this.handleResize_, false);\n }\n }\n this.updateSize();\n // updateSize calls setSize, so no need to call this.render\n // ourselves here.\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTileChange_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewPropertyChanged_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewChanged_ = function () {\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 var view = this.getView();\n if (view) {\n this.updateViewportSize_();\n this.viewPropertyListenerKey_ = listen(view, ObjectEventType.PROPERTYCHANGE, this.handleViewPropertyChanged_, this);\n this.viewChangeListenerKey_ = listen(view, EventType.CHANGE, this.handleViewPropertyChanged_, this);\n view.resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleLayerGroupChanged_ = function () {\n if (this.layerGroupPropertyListenerKeys_) {\n this.layerGroupPropertyListenerKeys_.forEach(unlistenByKey);\n this.layerGroupPropertyListenerKeys_ = null;\n }\n var layerGroup = this.getLayerGroup();\n if (layerGroup) {\n this.layerGroupPropertyListenerKeys_ = [\n listen(layerGroup, ObjectEventType.PROPERTYCHANGE, this.render, this),\n listen(layerGroup, EventType.CHANGE, this.render, this)\n ];\n }\n this.render();\n };\n /**\n * @return {boolean} Is rendered.\n */\n PluggableMap.prototype.isRendered = function () {\n return !!this.frameState_;\n };\n /**\n * Requests an immediate render in a synchronous manner.\n * @api\n */\n PluggableMap.prototype.renderSync = function () {\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n }\n this.animationDelay_();\n };\n /**\n * Redraws all text after new fonts have loaded\n */\n PluggableMap.prototype.redrawText = function () {\n var layerStates = this.getLayerGroup().getLayerStatesArray();\n for (var i = 0, ii = layerStates.length; i < ii; ++i) {\n var layer = layerStates[i].layer;\n if (layer.hasRenderer()) {\n layer.getRenderer().handleFontsChanged();\n }\n }\n };\n /**\n * Request a map rendering (at the next animation frame).\n * @api\n */\n PluggableMap.prototype.render = function () {\n if (this.renderer_ && this.animationDelayKey_ === undefined) {\n this.animationDelayKey_ = requestAnimationFrame(this.animationDelay_);\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 PluggableMap.prototype.removeControl = function (control) {\n return this.getControls().remove(control);\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 PluggableMap.prototype.removeInteraction = function (interaction) {\n return this.getInteractions().remove(interaction);\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 PluggableMap.prototype.removeLayer = function (layer) {\n var layers = this.getLayerGroup().getLayers();\n return layers.remove(layer);\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 PluggableMap.prototype.removeOverlay = function (overlay) {\n return this.getOverlays().remove(overlay);\n };\n /**\n * @param {number} time Time.\n * @private\n */\n PluggableMap.prototype.renderFrame_ = function (time) {\n var size = this.getSize();\n var view = this.getView();\n var previousFrameState = this.frameState_;\n /** @type {?FrameState} */\n var frameState = null;\n if (size !== undefined && hasArea(size) && view && view.isDef()) {\n var viewHints = view.getHints(this.frameState_ ? this.frameState_.viewHints : undefined);\n var viewState = view.getState();\n frameState = {\n animate: false,\n coordinateToPixelTransform: this.coordinateToPixelTransform_,\n declutterItems: previousFrameState ? previousFrameState.declutterItems : [],\n extent: getForViewAndSize(viewState.center, viewState.resolution, viewState.rotation, size),\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 };\n }\n this.frameState_ = frameState;\n this.renderer_.renderFrame(frameState);\n if (frameState) {\n if (frameState.animate) {\n this.render();\n }\n Array.prototype.push.apply(this.postRenderFunctions_, frameState.postRenderFunctions);\n if (previousFrameState) {\n var moveStart = !this.previousExtent_ ||\n (!isEmpty(this.previousExtent_) &&\n !equals(frameState.extent, this.previousExtent_));\n if (moveStart) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVESTART, this, previousFrameState));\n this.previousExtent_ = createOrUpdateEmpty(this.previousExtent_);\n }\n }\n var idle = this.previousExtent_ &&\n !frameState.viewHints[ViewHint.ANIMATING] &&\n !frameState.viewHints[ViewHint.INTERACTING] &&\n !equals(frameState.extent, this.previousExtent_);\n if (idle) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVEEND, this, frameState));\n clone(frameState.extent, this.previousExtent_);\n }\n }\n this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState));\n this.postRenderTimeoutHandle_ = setTimeout(this.handlePostRender.bind(this), 0);\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 PluggableMap.prototype.setLayerGroup = function (layerGroup) {\n this.set(MapProperty.LAYERGROUP, layerGroup);\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 PluggableMap.prototype.setSize = function (size) {\n this.set(MapProperty.SIZE, size);\n };\n /**\n * Set the target element to render this map into.\n * @param {HTMLElement|string|undefined} target The Element or id of the Element\n * that the map is rendered in.\n * @observable\n * @api\n */\n PluggableMap.prototype.setTarget = function (target) {\n this.set(MapProperty.TARGET, target);\n };\n /**\n * Set the view for this map.\n * @param {View} view The view that controls this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.setView = function (view) {\n this.set(MapProperty.VIEW, view);\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 PluggableMap.prototype.updateSize = function () {\n var targetElement = this.getTargetElement();\n if (!targetElement) {\n this.setSize(undefined);\n }\n else {\n var computedStyle = getComputedStyle(targetElement);\n this.setSize([\n targetElement.offsetWidth -\n parseFloat(computedStyle['borderLeftWidth']) -\n parseFloat(computedStyle['paddingLeft']) -\n parseFloat(computedStyle['paddingRight']) -\n parseFloat(computedStyle['borderRightWidth']),\n targetElement.offsetHeight -\n parseFloat(computedStyle['borderTopWidth']) -\n parseFloat(computedStyle['paddingTop']) -\n parseFloat(computedStyle['paddingBottom']) -\n parseFloat(computedStyle['borderBottomWidth'])\n ]);\n }\n this.updateViewportSize_();\n };\n /**\n * Recomputes the viewport size and save it on the view object (if any)\n * @private\n */\n PluggableMap.prototype.updateViewportSize_ = function () {\n var view = this.getView();\n if (view) {\n var size = undefined;\n var 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 return PluggableMap;\n}(BaseObject));\n/**\n * @param {MapOptions} options Map options.\n * @return {MapOptionsInternal} Internal map options.\n */\nfunction createOptionsInternal(options) {\n /**\n * @type {HTMLElement|Document}\n */\n var keyboardEventTarget = null;\n if (options.keyboardEventTarget !== undefined) {\n keyboardEventTarget = typeof options.keyboardEventTarget === 'string' ?\n document.getElementById(options.keyboardEventTarget) :\n options.keyboardEventTarget;\n }\n /**\n * @type {Object}\n */\n var values = {};\n var layerGroup = options.layers && typeof /** @type {?} */ (options.layers).getLayers === 'function' ?\n /** @type {LayerGroup} */ (options.layers) : new LayerGroup({ layers: /** @type {Collection} */ (options.layers) });\n values[MapProperty.LAYERGROUP] = layerGroup;\n values[MapProperty.TARGET] = options.target;\n values[MapProperty.VIEW] = options.view !== undefined ?\n options.view : new View();\n var controls;\n if (options.controls !== undefined) {\n if (Array.isArray(options.controls)) {\n controls = new Collection(options.controls.slice());\n }\n else {\n assert(typeof /** @type {?} */ (options.controls).getArray === 'function', 47); // Expected `controls` to be an array or an `import(\"./Collection.js\").Collection`\n controls = /** @type {Collection} */ (options.controls);\n }\n }\n var interactions;\n if (options.interactions !== undefined) {\n if (Array.isArray(options.interactions)) {\n interactions = new Collection(options.interactions.slice());\n }\n else {\n assert(typeof /** @type {?} */ (options.interactions).getArray === 'function', 48); // Expected `interactions` to be an array or an `import(\"./Collection.js\").Collection`\n interactions = /** @type {Collection} */ (options.interactions);\n }\n }\n var overlays;\n if (options.overlays !== undefined) {\n if (Array.isArray(options.overlays)) {\n overlays = new Collection(options.overlays.slice());\n }\n else {\n assert(typeof /** @type {?} */ (options.overlays).getArray === 'function', 49); // Expected `overlays` to be an array or an `import(\"./Collection.js\").Collection`\n overlays = options.overlays;\n }\n }\n else {\n overlays = new Collection();\n }\n return {\n controls: controls,\n interactions: interactions,\n keyboardEventTarget: keyboardEventTarget,\n overlays: overlays,\n values: values\n };\n}\nexport default PluggableMap;\n//# sourceMappingURL=PluggableMap.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Control\n */\nimport { VOID } from '../functions.js';\nimport MapEventType from '../MapEventType.js';\nimport BaseObject from '../Object.js';\nimport { removeNode } from '../dom.js';\nimport { listen, unlistenByKey } from '../events.js';\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)} [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 * @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 * var 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 */\nvar Control = /** @class */ (function (_super) {\n __extends(Control, _super);\n /**\n * @param {Options} options Control options.\n */\n function Control(options) {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {HTMLElement}\n */\n _this.element = options.element ? options.element : null;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.target_ = null;\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = null;\n /**\n * @protected\n * @type {!Array}\n */\n _this.listenerKeys = [];\n /**\n * @private\n * @type {function(import(\"../MapEvent.js\").default): void}\n */\n _this.render_ = options.render ? options.render : VOID;\n if (options.target) {\n _this.setTarget(options.target);\n }\n return _this;\n }\n /**\n * @inheritDoc\n */\n Control.prototype.disposeInternal = function () {\n removeNode(this.element);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Get the map associated with this control.\n * @return {import(\"../PluggableMap.js\").default} Map.\n * @api\n */\n Control.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Remove the control 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(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n Control.prototype.setMap = function (map) {\n if (this.map_) {\n removeNode(this.element);\n }\n for (var 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 (this.map_) {\n var target = this.target_ ?\n this.target_ : map.getOverlayContainerStopEvent();\n target.appendChild(this.element);\n if (this.render !== VOID) {\n this.listenerKeys.push(listen(map, MapEventType.POSTRENDER, this.render, this));\n }\n map.render();\n }\n };\n /**\n * Update the projection. Rendering of the coordinates is done in\n * `handleMouseMove` and `handleMouseUp`.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @api\n */\n Control.prototype.render = function (mapEvent) {\n this.render_.call(this, 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 Control.prototype.setTarget = function (target) {\n this.target_ = typeof target === 'string' ?\n document.getElementById(target) :\n target;\n };\n return Control;\n}(BaseObject));\nexport default Control;\n//# sourceMappingURL=Control.js.map","/**\n * @module ol/css\n */\n/**\n * @typedef {Object} FontParameters\n * @property {string} style\n * @property {string} variant\n * @property {string} weight\n * @property {string} size\n * @property {string} lineHeight\n * @property {string} family\n * @property {Array} families\n */\n/**\n * The CSS class for hidden feature.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_HIDDEN = 'ol-hidden';\n/**\n * The CSS class that we'll give the DOM elements to have them selectable.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_SELECTABLE = 'ol-selectable';\n/**\n * The CSS class that we'll give the DOM elements to have them unselectable.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_UNSELECTABLE = 'ol-unselectable';\n/**\n * The CSS class for unsupported feature.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_UNSUPPORTED = 'ol-unsupported';\n/**\n * The CSS class for controls.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_CONTROL = 'ol-control';\n/**\n * The CSS class that we'll give the DOM elements that are collapsed, i.e.\n * to those elements which usually can be expanded.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_COLLAPSED = 'ol-collapsed';\n/**\n * From http://stackoverflow.com/questions/10135697/regex-to-parse-any-css-font\n * @type {RegExp}\n */\nvar fontRegEx = new RegExp([\n '^\\\\s*(?=(?:(?:[-a-z]+\\\\s*){0,2}(italic|oblique))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(small-caps))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)',\n '(?:(?:normal|\\\\1|\\\\2|\\\\3)\\\\s*){0,3}((?:xx?-)?',\n '(?:small|large)|medium|smaller|larger|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx]))',\n '(?:\\\\s*\\\\/\\\\s*(normal|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx])?))',\n '?\\\\s*([-,\\\\\"\\\\\\'\\\\sa-z]+?)\\\\s*$'\n].join(''), 'i');\nvar fontRegExMatchIndex = [\n 'style',\n 'variant',\n 'weight',\n 'size',\n 'lineHeight',\n 'family'\n];\n/**\n * Get the list of font families from a font spec. Note that this doesn't work\n * for font families that have commas in them.\n * @param {string} fontSpec The CSS font property.\n * @return {FontParameters} The font parameters (or null if the input spec is invalid).\n */\nexport var getFontParameters = function (fontSpec) {\n var match = fontSpec.match(fontRegEx);\n if (!match) {\n return null;\n }\n var style = /** @type {FontParameters} */ ({\n lineHeight: 'normal',\n size: '1.2em',\n style: 'normal',\n weight: 'normal',\n variant: 'normal'\n });\n for (var i = 0, ii = fontRegExMatchIndex.length; i < ii; ++i) {\n var value = match[i + 1];\n if (value !== undefined) {\n style[fontRegExMatchIndex[i]] = value;\n }\n }\n style.families = style.family.split(/,\\s?/);\n return style;\n};\n//# sourceMappingURL=css.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Layer\n */\nimport { listen, unlistenByKey } from '../events.js';\nimport EventType from '../events/EventType.js';\nimport { getChangeEventType } from '../Object.js';\nimport BaseLayer from './Base.js';\nimport LayerProperty from './Property.js';\nimport { assign } from '../obj.js';\nimport RenderEventType from '../render/EventType.js';\nimport SourceState from '../source/State.js';\nimport { assert } from '../asserts.js';\n/**\n * @typedef {function(import(\"../PluggableMap.js\").FrameState):HTMLElement} RenderFunction\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 {import(\"../source/Source.js\").default} [source] Source for this layer. If not provided to the constructor,\n * the source can be set by calling {@link module:ol/layer/Layer#setSource layer.setSource(source)} after\n * construction.\n * @property {import(\"../PluggableMap.js\").default} [map] Map.\n * @property {RenderFunction} [render] Render function. Takes the frame state as input and is expected to return an\n * HTML element. Will overwrite the default rendering for the layer.\n */\n/**\n * @typedef {Object} State\n * @property {import(\"./Base.js\").default} layer\n * @property {number} opacity Opacity, the value is rounded to two digits to appear after the decimal point.\n * @property {SourceState} sourceState\n * @property {boolean} visible\n * @property {boolean} managed\n * @property {import(\"../extent.js\").Extent} [extent]\n * @property {number} zIndex\n * @property {number} maxResolution\n * @property {number} minResolution\n * @property {number} minZoom\n * @property {number} maxZoom\n */\n/**\n * @classdesc\n * Base class from which all layer types are derived. This should only be instantiated\n * in the case where a custom layer is be added to the map with a custom `render` function.\n * Such a function can be specified in the `options` object, and is expected to return an HTML element.\n *\n * A visual representation of raster or vector map data.\n * Layers group together those properties that pertain to how the data is to be\n * displayed, irrespective of the source of that data.\n *\n * Layers are usually added to a map with {@link module:ol/Map#addLayer}. Components\n * like {@link module:ol/interaction/Select~Select} use unmanaged layers\n * internally. These unmanaged layers are associated with the map using\n * {@link module:ol/layer/Layer~Layer#setMap} instead.\n *\n * A generic `change` event is fired when the state of the source changes.\n *\n * Please note that for performance reasons several layers might get rendered to\n * the same HTML element, which will cause {@link module:ol/Map~Map#forEachLayerAtPixel} to\n * give false positives. To avoid this, apply different `className` properties to the\n * layers at creation time.\n *\n * @fires import(\"../render/Event.js\").RenderEvent#prerender\n * @fires import(\"../render/Event.js\").RenderEvent#postrender\n *\n * @template {import(\"../source/Source.js\").default} SourceType\n * @api\n */\nvar Layer = /** @class */ (function (_super) {\n __extends(Layer, _super);\n /**\n * @param {Options} options Layer options.\n */\n function Layer(options) {\n var _this = this;\n var baseOptions = assign({}, options);\n delete baseOptions.source;\n _this = _super.call(this, baseOptions) || this;\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n _this.mapPrecomposeKey_ = null;\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n _this.mapRenderKey_ = null;\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n _this.sourceChangeKey_ = null;\n /**\n * @private\n * @type {import(\"../renderer/Layer.js\").default}\n */\n _this.renderer_ = null;\n // Overwrite default render method with a custom one\n if (options.render) {\n _this.render = options.render;\n }\n if (options.map) {\n _this.setMap(options.map);\n }\n _this.addEventListener(getChangeEventType(LayerProperty.SOURCE), _this.handleSourcePropertyChange_);\n var source = options.source ? /** @type {SourceType} */ (options.source) : null;\n _this.setSource(source);\n return _this;\n }\n /**\n * @inheritDoc\n */\n Layer.prototype.getLayersArray = function (opt_array) {\n var array = opt_array ? opt_array : [];\n array.push(this);\n return array;\n };\n /**\n * @inheritDoc\n */\n Layer.prototype.getLayerStatesArray = function (opt_states) {\n var states = opt_states ? opt_states : [];\n states.push(this.getLayerState());\n return states;\n };\n /**\n * Get the layer source.\n * @return {SourceType} The layer source (or `null` if not yet set).\n * @observable\n * @api\n */\n Layer.prototype.getSource = function () {\n return /** @type {SourceType} */ (this.get(LayerProperty.SOURCE)) || null;\n };\n /**\n * @inheritDoc\n */\n Layer.prototype.getSourceState = function () {\n var source = this.getSource();\n return !source ? SourceState.UNDEFINED : source.getState();\n };\n /**\n * @private\n */\n Layer.prototype.handleSourceChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n Layer.prototype.handleSourcePropertyChange_ = function () {\n if (this.sourceChangeKey_) {\n unlistenByKey(this.sourceChangeKey_);\n this.sourceChangeKey_ = null;\n }\n var source = this.getSource();\n if (source) {\n this.sourceChangeKey_ = listen(source, EventType.CHANGE, this.handleSourceChange_, this);\n }\n this.changed();\n };\n /**\n * @param {import(\"../pixel\").Pixel} pixel Pixel.\n * @return {Promise>} Promise that resolves with\n * an array of features.\n */\n Layer.prototype.getFeatures = function (pixel) {\n return this.renderer_.getFeatures(pixel);\n };\n /**\n * In charge to manage the rendering of the layer. One layer type is\n * bounded with one layer renderer.\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @param {HTMLElement} target Target which the renderer may (but need not) use\n * for rendering its content.\n * @return {HTMLElement} The rendered element.\n */\n Layer.prototype.render = function (frameState, target) {\n var layerRenderer = this.getRenderer();\n if (layerRenderer.prepareFrame(frameState)) {\n return layerRenderer.renderFrame(frameState, target);\n }\n };\n /**\n * Sets the layer to be rendered on top of other layers on a map. The map will\n * not manage this layer in its layers collection, and the callback in\n * {@link module:ol/Map#forEachLayerAtPixel} will receive `null` as layer. This\n * is useful for temporary layers. To remove an unmanaged layer from the map,\n * use `#setMap(null)`.\n *\n * To add the layer to a map and have it managed by the map, use\n * {@link module:ol/Map#addLayer} instead.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n Layer.prototype.setMap = function (map) {\n if (this.mapPrecomposeKey_) {\n unlistenByKey(this.mapPrecomposeKey_);\n this.mapPrecomposeKey_ = null;\n }\n if (!map) {\n this.changed();\n }\n if (this.mapRenderKey_) {\n unlistenByKey(this.mapRenderKey_);\n this.mapRenderKey_ = null;\n }\n if (map) {\n this.mapPrecomposeKey_ = listen(map, RenderEventType.PRECOMPOSE, function (evt) {\n var renderEvent = /** @type {import(\"../render/Event.js\").default} */ (evt);\n var layerStatesArray = renderEvent.frameState.layerStatesArray;\n var layerState = this.getLayerState(false);\n // A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both.\n assert(!layerStatesArray.some(function (arrayLayerState) {\n return arrayLayerState.layer === layerState.layer;\n }), 67);\n layerStatesArray.push(layerState);\n }, this);\n this.mapRenderKey_ = listen(this, EventType.CHANGE, map.render, map);\n this.changed();\n }\n };\n /**\n * Set the layer source.\n * @param {SourceType} source The layer source.\n * @observable\n * @api\n */\n Layer.prototype.setSource = function (source) {\n this.set(LayerProperty.SOURCE, source);\n };\n /**\n * Get the renderer for this layer.\n * @return {import(\"../renderer/Layer.js\").default} The layer renderer.\n */\n Layer.prototype.getRenderer = function () {\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n return this.renderer_;\n };\n /**\n * @return {boolean} The layer has a renderer.\n */\n Layer.prototype.hasRenderer = function () {\n return !!this.renderer_;\n };\n /**\n * Create a renderer for this layer.\n * @return {import(\"../renderer/Layer.js\").default} A layer renderer.\n * @protected\n */\n Layer.prototype.createRenderer = function () {\n return null;\n };\n /**\n * @inheritDoc\n */\n Layer.prototype.disposeInternal = function () {\n this.setSource(null);\n _super.prototype.disposeInternal.call(this);\n };\n return Layer;\n}(BaseLayer));\n/**\n * Return `true` if the layer is visible and if the provided view state\n * has resolution and zoom levels that are in range of the layer's min/max.\n * @param {State} layerState Layer state.\n * @param {import(\"../View.js\").State} viewState View state.\n * @return {boolean} The layer is visible at the given view state.\n */\nexport function inView(layerState, viewState) {\n if (!layerState.visible) {\n return false;\n }\n var resolution = viewState.resolution;\n if (resolution < layerState.minResolution || resolution >= layerState.maxResolution) {\n return false;\n }\n var zoom = viewState.zoom;\n return zoom > layerState.minZoom && zoom <= layerState.maxZoom;\n}\nexport default Layer;\n//# sourceMappingURL=Layer.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Attribution\n */\nimport { equals } from '../array.js';\nimport Control from './Control.js';\nimport { CLASS_CONTROL, CLASS_UNSELECTABLE, CLASS_COLLAPSED } from '../css.js';\nimport { removeChildren, replaceNode } from '../dom.js';\nimport EventType from '../events/EventType.js';\nimport { inView } from '../layer/Layer.js';\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} [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|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 {function(import(\"../MapEvent.js\").default)} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\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 */\nvar Attribution = /** @class */ (function (_super) {\n __extends(Attribution, _super);\n /**\n * @param {Options=} opt_options Attribution options.\n */\n function Attribution(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render || render,\n target: options.target\n }) || this;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.ulElement_ = document.createElement('ul');\n /**\n * @private\n * @type {boolean}\n */\n _this.collapsed_ = options.collapsed !== undefined ? options.collapsed : true;\n /**\n * @private\n * @type {boolean}\n */\n _this.overrideCollapsible_ = options.collapsible !== undefined;\n /**\n * @private\n * @type {boolean}\n */\n _this.collapsible_ = options.collapsible !== undefined ?\n options.collapsible : true;\n if (!_this.collapsible_) {\n _this.collapsed_ = false;\n }\n var className = options.className !== undefined ? options.className : 'ol-attribution';\n var tipLabel = options.tipLabel !== undefined ? options.tipLabel : 'Attributions';\n var collapseLabel = options.collapseLabel !== undefined ? options.collapseLabel : '\\u00BB';\n if (typeof collapseLabel === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.collapseLabel_ = document.createElement('span');\n _this.collapseLabel_.textContent = collapseLabel;\n }\n else {\n _this.collapseLabel_ = collapseLabel;\n }\n var label = options.label !== undefined ? options.label : 'i';\n if (typeof label === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.label_ = document.createElement('span');\n _this.label_.textContent = label;\n }\n else {\n _this.label_ = label;\n }\n var activeLabel = (_this.collapsible_ && !_this.collapsed_) ?\n _this.collapseLabel_ : _this.label_;\n var button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(activeLabel);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL +\n (_this.collapsed_ && _this.collapsible_ ? ' ' + CLASS_COLLAPSED : '') +\n (_this.collapsible_ ? '' : ' ol-uncollapsible');\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(_this.ulElement_);\n element.appendChild(button);\n /**\n * A list of currently rendered resolutions.\n * @type {Array}\n * @private\n */\n _this.renderedAttributions_ = [];\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = true;\n return _this;\n }\n /**\n * Collect a list of visible attributions and set the collapsible state.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @return {Array} Attributions.\n * @private\n */\n Attribution.prototype.collectSourceAttributions_ = function (frameState) {\n /**\n * Used to determine if an attribution already exists.\n * @type {!Object}\n */\n var lookup = {};\n /**\n * A list of visible attributions.\n * @type {Array}\n */\n var visibleAttributions = [];\n var layerStatesArray = frameState.layerStatesArray;\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layerState = layerStatesArray[i];\n if (!inView(layerState, frameState.viewState)) {\n continue;\n }\n var source = /** @type {import(\"../layer/Layer.js\").default} */ (layerState.layer).getSource();\n if (!source) {\n continue;\n }\n var attributionGetter = source.getAttributions();\n if (!attributionGetter) {\n continue;\n }\n var attributions = attributionGetter(frameState);\n if (!attributions) {\n continue;\n }\n if (!this.overrideCollapsible_ && source.getAttributionsCollapsible() === false) {\n this.setCollapsible(false);\n }\n if (Array.isArray(attributions)) {\n for (var j = 0, jj = attributions.length; j < jj; ++j) {\n if (!(attributions[j] in lookup)) {\n visibleAttributions.push(attributions[j]);\n lookup[attributions[j]] = true;\n }\n }\n }\n else {\n if (!(attributions in lookup)) {\n visibleAttributions.push(attributions);\n lookup[attributions] = true;\n }\n }\n }\n return visibleAttributions;\n };\n /**\n * @private\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n Attribution.prototype.updateElement_ = function (frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n var attributions = this.collectSourceAttributions_(frameState);\n var visible = attributions.length > 0;\n if (this.renderedVisible_ != visible) {\n this.element.style.display = visible ? '' : 'none';\n this.renderedVisible_ = visible;\n }\n if (equals(attributions, this.renderedAttributions_)) {\n return;\n }\n removeChildren(this.ulElement_);\n // append the attributions\n for (var i = 0, ii = attributions.length; i < ii; ++i) {\n var element = document.createElement('li');\n element.innerHTML = attributions[i];\n this.ulElement_.appendChild(element);\n }\n this.renderedAttributions_ = attributions;\n };\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Attribution.prototype.handleClick_ = function (event) {\n event.preventDefault();\n this.handleToggle_();\n };\n /**\n * @private\n */\n Attribution.prototype.handleToggle_ = function () {\n this.element.classList.toggle(CLASS_COLLAPSED);\n if (this.collapsed_) {\n replaceNode(this.collapseLabel_, this.label_);\n }\n else {\n replaceNode(this.label_, this.collapseLabel_);\n }\n this.collapsed_ = !this.collapsed_;\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 Attribution.prototype.getCollapsible = function () {\n return this.collapsible_;\n };\n /**\n * Set whether the attribution should be collapsible.\n * @param {boolean} collapsible True if the widget is collapsible.\n * @api\n */\n Attribution.prototype.setCollapsible = function (collapsible) {\n if (this.collapsible_ === collapsible) {\n return;\n }\n this.collapsible_ = collapsible;\n this.element.classList.toggle('ol-uncollapsible');\n if (!collapsible && this.collapsed_) {\n this.handleToggle_();\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 Attribution.prototype.setCollapsed = function (collapsed) {\n if (!this.collapsible_ || this.collapsed_ === collapsed) {\n return;\n }\n this.handleToggle_();\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 Attribution.prototype.getCollapsed = function () {\n return this.collapsed_;\n };\n return Attribution;\n}(Control));\n/**\n * Update the attribution element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @this {Attribution}\n */\nexport function render(mapEvent) {\n this.updateElement_(mapEvent.frameState);\n}\nexport default Attribution;\n//# sourceMappingURL=Attribution.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Rotate\n */\nimport Control from './Control.js';\nimport { CLASS_CONTROL, CLASS_HIDDEN, CLASS_UNSELECTABLE } from '../css.js';\nimport { easeOut } from '../easing.js';\nimport EventType from '../events/EventType.js';\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 {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)} [render] Function called when the control should\n * be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {function()} [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 * @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 */\nvar Rotate = /** @class */ (function (_super) {\n __extends(Rotate, _super);\n /**\n * @param {Options=} opt_options Rotate options.\n */\n function Rotate(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render || render,\n target: options.target\n }) || this;\n var className = options.className !== undefined ? options.className : 'ol-rotate';\n var label = options.label !== undefined ? options.label : '\\u21E7';\n /**\n * @type {HTMLElement}\n * @private\n */\n _this.label_ = null;\n if (typeof label === 'string') {\n _this.label_ = document.createElement('span');\n _this.label_.className = 'ol-compass';\n _this.label_.textContent = label;\n }\n else {\n _this.label_ = label;\n _this.label_.classList.add('ol-compass');\n }\n var tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';\n var button = document.createElement('button');\n button.className = className + '-reset';\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(_this.label_);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(button);\n _this.callResetNorth_ = options.resetNorth ? options.resetNorth : undefined;\n /**\n * @type {number}\n * @private\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n /**\n * @type {boolean}\n * @private\n */\n _this.autoHide_ = options.autoHide !== undefined ? options.autoHide : true;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.rotation_ = undefined;\n if (_this.autoHide_) {\n _this.element.classList.add(CLASS_HIDDEN);\n }\n return _this;\n }\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Rotate.prototype.handleClick_ = function (event) {\n event.preventDefault();\n if (this.callResetNorth_ !== undefined) {\n this.callResetNorth_();\n }\n else {\n this.resetNorth_();\n }\n };\n /**\n * @private\n */\n Rotate.prototype.resetNorth_ = function () {\n var map = this.getMap();\n var 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 var 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 }\n else {\n view.setRotation(0);\n }\n }\n };\n return Rotate;\n}(Control));\n/**\n * Update the rotate control element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @this {Rotate}\n */\nexport function render(mapEvent) {\n var frameState = mapEvent.frameState;\n if (!frameState) {\n return;\n }\n var rotation = frameState.viewState.rotation;\n if (rotation != this.rotation_) {\n var transform = 'rotate(' + rotation + 'rad)';\n if (this.autoHide_) {\n var contains = this.element.classList.contains(CLASS_HIDDEN);\n if (!contains && rotation === 0) {\n this.element.classList.add(CLASS_HIDDEN);\n }\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}\nexport default Rotate;\n//# sourceMappingURL=Rotate.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Zoom\n */\nimport EventType from '../events/EventType.js';\nimport Control from './Control.js';\nimport { CLASS_CONTROL, CLASS_UNSELECTABLE } from '../css.js';\nimport { easeOut } from '../easing.js';\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|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 * @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 */\nvar Zoom = /** @class */ (function (_super) {\n __extends(Zoom, _super);\n /**\n * @param {Options=} opt_options Zoom options.\n */\n function Zoom(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n target: options.target\n }) || this;\n var className = options.className !== undefined ? options.className : 'ol-zoom';\n var delta = options.delta !== undefined ? options.delta : 1;\n var zoomInLabel = options.zoomInLabel !== undefined ? options.zoomInLabel : '+';\n var zoomOutLabel = options.zoomOutLabel !== undefined ? options.zoomOutLabel : '\\u2212';\n var zoomInTipLabel = options.zoomInTipLabel !== undefined ?\n options.zoomInTipLabel : 'Zoom in';\n var zoomOutTipLabel = options.zoomOutTipLabel !== undefined ?\n options.zoomOutTipLabel : 'Zoom out';\n var inElement = document.createElement('button');\n inElement.className = className + '-in';\n inElement.setAttribute('type', 'button');\n inElement.title = zoomInTipLabel;\n inElement.appendChild(typeof zoomInLabel === 'string' ? document.createTextNode(zoomInLabel) : zoomInLabel);\n inElement.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this, delta), false);\n var outElement = document.createElement('button');\n outElement.className = className + '-out';\n outElement.setAttribute('type', 'button');\n outElement.title = zoomOutTipLabel;\n outElement.appendChild(typeof zoomOutLabel === 'string' ? document.createTextNode(zoomOutLabel) : zoomOutLabel);\n outElement.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this, -delta), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(inElement);\n element.appendChild(outElement);\n /**\n * @type {number}\n * @private\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n /**\n * @param {number} delta Zoom delta.\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Zoom.prototype.handleClick_ = function (delta, event) {\n event.preventDefault();\n this.zoomByDelta_(delta);\n };\n /**\n * @param {number} delta Zoom delta.\n * @private\n */\n Zoom.prototype.zoomByDelta_ = function (delta) {\n var map = this.getMap();\n var 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 var currentZoom = view.getZoom();\n if (currentZoom !== undefined) {\n var 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 }\n else {\n view.setZoom(newZoom);\n }\n }\n };\n return Zoom;\n}(Control));\nexport default Zoom;\n//# sourceMappingURL=Zoom.js.map","/**\n * @module ol/control\n */\nimport Collection from './Collection.js';\nimport Attribution from './control/Attribution.js';\nimport Rotate from './control/Rotate.js';\nimport Zoom from './control/Zoom.js';\nexport { default as Attribution } from './control/Attribution.js';\nexport { default as Control } from './control/Control.js';\nexport { default as FullScreen } from './control/FullScreen.js';\nexport { default as MousePosition } from './control/MousePosition.js';\nexport { default as OverviewMap } from './control/OverviewMap.js';\nexport { default as Rotate } from './control/Rotate.js';\nexport { default as ScaleLine } from './control/ScaleLine.js';\nexport { default as Zoom } from './control/Zoom.js';\nexport { default as ZoomSlider } from './control/ZoomSlider.js';\nexport { default as ZoomToExtent } from './control/ZoomToExtent.js';\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [attribution=true] Include\n * {@link module:ol/control/Attribution~Attribution}.\n * @property {import(\"./control/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(\"./control/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(\"./control/Zoom.js\").Options} [zoomOptions] Options for\n * {@link module:ol/control/Zoom~Zoom}.\n * @api\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=} opt_options\n * Defaults options.\n * @return {Collection}\n * Controls.\n * @api\n */\nexport function defaults(opt_options) {\n var options = opt_options ? opt_options : {};\n var controls = new Collection();\n var zoomControl = options.zoom !== undefined ? options.zoom : true;\n if (zoomControl) {\n controls.push(new Zoom(options.zoomOptions));\n }\n var rotateControl = options.rotate !== undefined ? options.rotate : true;\n if (rotateControl) {\n controls.push(new Rotate(options.rotateOptions));\n }\n var attributionControl = options.attribution !== undefined ?\n options.attribution : true;\n if (attributionControl) {\n controls.push(new Attribution(options.attributionOptions));\n }\n return controls;\n}\n//# sourceMappingURL=control.js.map","/**\n * @module ol/interaction/Property\n */\n/**\n * @enum {string}\n */\nexport default {\n ACTIVE: 'active'\n};\n//# sourceMappingURL=Property.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/Interaction\n */\nimport BaseObject from '../Object.js';\nimport { easeOut, linear } from '../easing.js';\nimport InteractionProperty from './Property.js';\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 * @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 */\nvar Interaction = /** @class */ (function (_super) {\n __extends(Interaction, _super);\n /**\n * @param {InteractionOptions} options Options.\n */\n function Interaction(options) {\n var _this = _super.call(this) || this;\n if (options.handleEvent) {\n _this.handleEvent = options.handleEvent;\n }\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = null;\n _this.setActive(true);\n return _this;\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 Interaction.prototype.getActive = function () {\n return /** @type {boolean} */ (this.get(InteractionProperty.ACTIVE));\n };\n /**\n * Get the map associated with this interaction.\n * @return {import(\"../PluggableMap.js\").default} Map.\n * @api\n */\n Interaction.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Handles the {@link module:ol/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 Interaction.prototype.handleEvent = function (mapBrowserEvent) {\n return true;\n };\n /**\n * Activate or deactivate the interaction.\n * @param {boolean} active Active.\n * @observable\n * @api\n */\n Interaction.prototype.setActive = function (active) {\n this.set(InteractionProperty.ACTIVE, active);\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(\"../PluggableMap.js\").default} map Map.\n */\n Interaction.prototype.setMap = function (map) {\n this.map_ = map;\n };\n return Interaction;\n}(BaseObject));\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {import(\"../coordinate.js\").Coordinate} delta Delta.\n * @param {number=} opt_duration Duration.\n */\nexport function pan(view, delta, opt_duration) {\n var currentCenter = view.getCenterInternal();\n if (currentCenter) {\n var center = [currentCenter[0] + delta[0], currentCenter[1] + delta[1]];\n view.animateInternal({\n duration: opt_duration !== undefined ? opt_duration : 250,\n easing: linear,\n center: view.getConstrainedCenter(center)\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=} opt_anchor Anchor coordinate in the user projection.\n * @param {number=} opt_duration Duration.\n */\nexport function zoomByDelta(view, delta, opt_anchor, opt_duration) {\n var currentZoom = view.getZoom();\n if (currentZoom === undefined) {\n return;\n }\n var newZoom = view.getConstrainedZoom(currentZoom + delta);\n var newResolution = view.getResolutionForZoom(newZoom);\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n resolution: newResolution,\n anchor: opt_anchor,\n duration: opt_duration !== undefined ? opt_duration : 250,\n easing: easeOut\n });\n}\nexport default Interaction;\n//# sourceMappingURL=Interaction.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/DoubleClickZoom\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport Interaction, { zoomByDelta } from './Interaction.js';\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 * @classdesc\n * Allows the user to zoom by double-clicking on the map.\n * @api\n */\nvar DoubleClickZoom = /** @class */ (function (_super) {\n __extends(DoubleClickZoom, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function DoubleClickZoom(opt_options) {\n var _this = _super.call(this, {\n handleEvent: handleEvent\n }) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @private\n * @type {number}\n */\n _this.delta_ = options.delta ? options.delta : 1;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n return DoubleClickZoom;\n}(Interaction));\n/**\n * Handles the {@link module:ol/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 * @this {DoubleClickZoom}\n */\nfunction handleEvent(mapBrowserEvent) {\n var stopEvent = false;\n if (mapBrowserEvent.type == MapBrowserEventType.DBLCLICK) {\n var browserEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);\n var map = mapBrowserEvent.map;\n var anchor = mapBrowserEvent.coordinate;\n var delta = browserEvent.shiftKey ? -this.delta_ : this.delta_;\n var view = map.getView();\n zoomByDelta(view, delta, anchor, this.duration_);\n mapBrowserEvent.preventDefault();\n stopEvent = true;\n }\n return !stopEvent;\n}\nexport default DoubleClickZoom;\n//# sourceMappingURL=DoubleClickZoom.js.map","/**\n * @module ol/events/condition\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport { assert } from '../asserts.js';\nimport { TRUE, FALSE } from '../functions.js';\nimport { WEBKIT, MAC } from '../has.js';\n/**\n * A function that takes an {@link module:ol/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 * 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 var altKeyOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\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 var altShiftKeysOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey);\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 var focus = function (event) {\n return event.target.getTargetElement() === document.activeElement;\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 var always = TRUE;\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 var click = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.CLICK;\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 var mouseActionButton = function (mapBrowserEvent) {\n var originalEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);\n return originalEvent.button == 0 &&\n !(WEBKIT && MAC && originalEvent.ctrlKey);\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 var never = FALSE;\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 var pointerMove = function (mapBrowserEvent) {\n return mapBrowserEvent.type == 'pointermove';\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 var singleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.SINGLECLICK;\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 var doubleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.DBLCLICK;\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 var noModifierKeys = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (!originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\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 var platformModifierKeyOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return !originalEvent.altKey &&\n (MAC ? originalEvent.metaKey : originalEvent.ctrlKey) &&\n !originalEvent.shiftKey;\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 var shiftKeyOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (!originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey);\n};\n/**\n * Return `true` if the target element is not editable, i.e. not a ``-,\n * `