{"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/tilegrid/common.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/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/css.js","webpack://ol/./build/ol/control/Control.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/common.js","webpack://ol/./build/ol/source/WMSServerType.js","webpack://ol/./build/ol/source/ImageWMS.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","VERSION","__extends","setPrototypeOf","__proto__","__","constructor","_super","AssertionError","code","_this","message","split","ADD","REMOVE","PROPERTYCHANGE","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","pendingRemovals","getListeners","hasListener","opt_type","CHANGE","ERROR","BLUR","CLEAR","CONTEXTMENU","CLICK","DBLCLICK","DRAGENTER","DRAGOVER","DROP","FOCUS","KEYDOWN","KEYPRESS","LOAD","RESIZE","TOUCHMOVE","WHEEL","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","BOTTOM_LEFT","BOTTOM_RIGHT","TOP_LEFT","TOP_RIGHT","UNKNOWN","INTERSECTING","ABOVE","RIGHT","BELOW","LEFT","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","xs","ys","_boundingExtentXYs","XY","XYZ","XYM","XYZM","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","DEFAULT_RADIUS","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","canWrapX","getCode","getExtent","getUnits","getMetersPerUnit","getWorldExtent","getAxisOrientation","isGlobal","setGlobal","getDefaultTileGrid","setDefaultTileGrid","tileGrid","setExtent","setWorldExtent","setGetPointResolution","getPointResolutionFunc","RADIUS","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","projection","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","ACCURACY","ACCURACY_GEOMETRY","ALTITUDE","ALTITUDE_ACCURACY","HEADING","POSITION","PROJECTION","SPEED","TRACKING","TRACKING_OPTIONS","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","IMAGE_DECODE","Image","PASSIVE_EVENT_LISTENERS","passive","SINGLECLICK","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_","LAYERGROUP","SIZE","TARGET","VIEW","IDLE","LOADING","LOADED","EMPTY","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","DEFAULT_MAX_ZOOM","DEFAULT_TILE_SIZE","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","easeIn","easeOut","inAndOut","linear","DEFAULT_MIN_ZOOM","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","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","resolveConstraints","options_","getUpdatedOptions_","newOptions","getResolution","getZoom","getCenterInternal","getRotation","animate","var_args","isDef","getAnimating","args","animateInternal","animationCount","series","complete","easing","getResolutionForZoom","setHint","ViewHint","updateAnimations_","getInteracting","cancelAnimations","filter","cancelAnimationFrame","more","seriesComplete","elapsed","fraction","progress","getViewportSize_","constrainedResolution","calculateCenterZoom","applyTargetState_","constrainedRotation","calculateCenterRotate","requestAnimationFrame","currentCenter","currentResolution","opt_rotation","w","setViewportSize","opt_size","ViewProperty","getConstraints","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","OPACITY","VISIBLE","Z_INDEX","MAX_RESOLUTION","MIN_RESOLUTION","MAX_ZOOM","MIN_ZOOM","SOURCE","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","UNDEFINED","READY","LAYERS","LayerGroup","baseOptions","layers","layersListenerKeys_","listenerKeys_","handleLayersChanged_","setLayers","handleLayerChange_","getLayers","handleLayersAdd_","handleLayersRemove_","layersArray","collectionEvent","states","ownLayerState","layerState","toSize","cache","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","interactionsArray","getActive","handleEvent","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","CLASS_HIDDEN","CLASS_SELECTABLE","CLASS_UNSELECTABLE","CLASS_UNSUPPORTED","CLASS_CONTROL","CLASS_COLLAPSED","getFontParameters","font","family","fontFamily","fontWeight","fontStyle","families","weight","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","ACTIVE","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","UP","DOWN","keyCode","KeyCode","mapUnitsDelta","pixelDelta_","pan","KeyboardPan","defaultCondition_","pixelDelta","charCode","KeyboardZoom","MouseWheelZoom","totalDelta_","lastDelta_","timeout_","timeout","useAnchor_","useAnchor","lastAnchor_","startTime_","eventGap_","timeoutId_","deltaPerZoom_","endInteraction_","wheelEvent","deltaMode","WheelEvent","DOM_DELTA_PIXEL","DOM_DELTA_LINE","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","fromString","cacheSize","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","retries","referenceFonts","text","isAvailable","available","referenceFont","measureTextWidth","check","done","fonts","clearInterval","fontSpec","setInterval","measureTextHeight","measureText","rotateAtOffset","drawImageOrLabel","labelOrImage","originX","originY","save","setTransform","contextInstructions","CanvasRenderingContext2D","executeLabelInstructions","drawImage","restore","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","globalAlpha","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","DEFAULT","IMAGE","TEXT","SIMPLIFY_TOLERANCE","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","replay","renderFeatureInternal","renderDeclutterItems","declutterTree","zIndexItems","renderDeclutter","expireIconCache","MapRenderer","declutterTree_","calculateMatrices2D","thisArg","thisArg2","translatedCoordinate","offsets","projectionExtent","worldWidth","declutteredFeatures","numLayers","entry","tmpCoord","getWrapX","callback_1","scheduleExpireIconCache","Composite","CompositeMapRenderer","fontChangeListenerKey_","container","insertBefore","firstChild","children_","previousElement","oldChildren","childNodes","oldChild","newChild","replaceChildren","getDataAtPixel","Map","BOTTOM_CENTER","CENTER_LEFT","CENTER_CENTER","CENTER_RIGHT","TOP_CENTER","ELEMENT","MAP","OFFSET","POSITIONING","Overlay","insertFirst","autoPan","autoPanAnimation","autoPanMargin","rendered","bottom_","left_","right_","top_","mapPostrenderListenerKey","handleElementChanged","handleMapChanged","handleOffsetChanged","handlePositionChanged","handlePositioningChanged","setElement","setOffset","setPositioning","positioning","OverlayPositioning","setPosition","getElement","getOffset","getPositioning","updatePixelPosition","panIntoView","mapRect","getRect","overlayRect","offsetLeft","offsetRight","offsetTop","offsetBottom","centerPx","newCenterPx","box","pageXOffset","pageYOffset","mapSize","updateRenderedPosition","bottom","top_1","getOptions","ARRAY_BUFFER","JSON","XML","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_corner","createForExtent","extentFromProjection","half","supportedExtensions","ELEMENT_ARRAY_BUFFER","DYNAMIC_DRAW","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","STATIC_DRAW","STREAM_DRAW","getArrayClassForType","Float32Array","Uint32Array","WebGLArrayBuffer","opt_usage","usage","ofSize","fromArray","from","fromArrayBuffer","getUsage","LOST","RESTORED","fromTransform","mat4","DEFAULT_VERTEX_SHADER","DEFAULT_FRAGMENT_SHADER","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","bufferData","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","PROJECTION_MATRIX","OFFSET_SCALE_MATRIX","OFFSET_ROTATION_MATRIX","TIME","ZOOM","RESOLUTION","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","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","FRACTION","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","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","LINE","DEFAULT_FILL_COLOR","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","match","startCharCode","stopCharCode","stop_1","jsonp","opt_errback","opt_callbackParam","script","cleanup","async","timer","getElementsByTagName","ERROR_THRESHOLD","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","MAX_SUBDIVISION","Triangulation","maxSourceExtent","errorThreshold","sourceProj_","targetProj_","transformInvCache","transformInv","transformInv_","maxSourceExtent_","errorThresholdSquared_","triangles_","wrapsXInSource_","canWrapXInSource_","sourceWorldWidth_","targetWorldWidth_","destinationTopLeft","destinationTopRight","destinationBottomRight","destinationBottomLeft","sourceTopLeft","sourceTopRight","sourceBottomRight","sourceBottomLeft","addQuad_","leftBound_1","newTriangle","addTriangle_","aSrc","bSrc","cSrc","dSrc","maxSubdivision","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","tileCache","tmpSize","tileOptions","zDirection","getTileCacheForProjection","forEachLoadedTile","tileCoordKey","loaded","covered","getGutterForProjection","setKey","getOpaque","getTile","getTileGrid","getTileGridForProjection","thisProj","getTilePixelRatio","getTilePixelSize","getTileCoordForTileUrlFunction","opt_projection","worldsAway","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","CartoDB","account_","account","mapId_","config_","templateCache_","initializeMap_","getConfig","updateConfig","setConfig","paramHash","stringify","applyTemplate_","mapUrl","client","handleInitResponse_","handleInitError_","setRequestHeader","err","tilesUrl","cdn_url","https","layergroupid","ADDFEATURE","CHANGEFEATURE","REMOVEFEATURE","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","cluster","setDistance","mapDistance","clustered","neighbors","neighbor","createCluster","TierSizeCalculation","TRUNCATED","CustomTile","zoomifyImage_","Zoomify","tierSizeCalculation","tierSizeInTiles","tileSizeForTierSizeCalculation","reverse","tileCountUpToTier","tileCoordZ","tileIndex","localContext_1","ZoomifyTileClass","Versions","VERSION1","VERSION2","VERSION3","IIIF_PROFILE_VALUES","supports","formats","qualities","COMPLIANCE_VERSION1","RegExp","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","DEFAULT_WMS_VERSION","GETFEATUREINFO_IMAGE_SIZE","ImageWMS","v13_","updateV13_","serverType_","getFeatureInfoUrl","projectionObj","sourceProjectionObj","getLegendUrl","mpu","viewExtent","requestExtent","WMSServerType","ATTRIBUTION","OSM","BaseImage","BaseImageLayer","LayerRenderer","boundHandleImageChange_","handleImageChange_","layer_","loadedTileCallback","createLoadedTileFinder","getLayer","renderIfReadyAndVisible","loadImage","CanvasLayerRenderer","renderedResolution","tempTransform_","pixelTransform","containerReused","createTransformStringCanvas_","useContainer","layerClassName","transformOrigin","topLeft","topRight","bottomRight","bottomLeft","clipUnrotated","inverted","dispatchRenderEvent_","preRender","postRender","getRenderTransform","renderPixel","createTransformString","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","PIXEL","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","KVP","REST","WMTS","requestEncoding","WMTSRequestEncoding","version_","dimensions_","dimensions","matrixSet_","requestEncoding_","getKeyForDimensions_","createFromWMTSTemplate","getDimensions","getMatrixSet","getRequestEncoding","getVersion","updateDimensions","WebGLWorkerMessageType","GENERATE_BUFFERS","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_","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","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","lineHeight","renderWidth","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","userTransform","userExtent","replayGroupInstructions","executorGroup","CanvasVectorImageLayerRenderer","vectorRenderer_","layerImageRatio_","getImageRatio","coordinateToVectorPixelTransform_","renderedPixelToCoordinateTransform_","vectorPixel","vectorRenderer","imageFrameState_1","image_1","HYBRID","VECTOR","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_","maxLatP_","maxLonP_","minLatP_","minLonP_","targetSize_","maxLines_","meridians_","parallels_","strokeStyle_","fromLonLatTransform_","toLonLatTransform_","projectionCenterLonLat_","meridiansLabels_","parallelsLabels_","lonLabelFormatter_","latLabelFormatter_","lonLabelPosition_","latLabelPosition_","lonLabelStyleBase_","lonLabelStyle_","latLabelStyleBase_","latLabelStyle_","intervals_","loaderFunction","strategyFunction","featurePool_","lineStyle_","loadedExtent_","renderExtent","updateProjectionInfo_","createGraticule_","featuresColl","labelData","poolIndex","geom","addMeridian_","lon","minLat","maxLat","lineString","getMeridian_","textPoint","getMeridianPoint_","addParallel_","minLon","maxLon","getParallel_","getParallelPoint_","getInterval_","cnt","centerLonLat","centerLon","centerLat","validExtent","frac","meridian","clampedBottom","clampedTop","getMeridians","lon2","parallel","clampedLeft","clampedRight","getParallels","worldExtentP","GRADIENT","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","Mode","DrawEventType","DrawEvent","Draw","shouldHandle_","downPx_","downTimeout_","lastDragTime_","freehand_","snapTolerance_","snapTolerance","type_","mode_","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","appendCoordinates","ending","sketchFeatures","overlaySource","ExtentEventType","EXTENTCHANGED","ExtentEvent","getDefaultExtentStyleFunction","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_","CIRCLE_CIRCUMFERENCE_INDEX","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","SELECT","SelectEvent","selected","deselected","addCondition_","removeCondition_","toggleCondition_","featureLayerAssociation_","filter_","addFeatureLayerAssociation_","multi_","layerFilter_","hitTolerance_","removeFeatureLayerAssociation_","Select","addCondition","removeCondition","toggleCondition","multi","featureStyleAssociation_","layers_1","getHitTolerance","setHitTolerance","removeSelectedStyle_","giveSelectedStyle_","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","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","BAROMETRIC","GPS","NONE","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","STYLE_SEQUENCE","STYLE_SERIALIZERS","PLACEMARK_SEQUENCE","EXTENDEDDATA_NODE_FACTORY","v","PRIMITIVE_GEOMETRY_SEQUENCE","PRIMITIVE_GEOMETRY_SERIALIZERS","POLYGON_SERIALIZERS","INNER_BOUNDARY_NODE_FACTORY","OUTER_BOUNDARY_NODE_FACTORY","POLY_STYLE_SERIALIZERS","COLOR_NODE_FACTORY","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","FEATURE_PREFIX","OGCNS","FESNS","SCHEMA_LOCATIONS","DEFAULT_VERSION","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","Z","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","NAMESPACE_URI","readHref","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","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_","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","UNITS_PROP","IMPERIAL","NAUTICAL","METRIC","US","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","VERTICAL","HORIZONTAL","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","getVectorContext","toContext","PointsLayer","ImageStatic","optionsFromCapabilities","wmtsCap","tileMatrixSets","supportedCRS","matrixSetObj","projConfig","wgs84BoundingBox","wgs84ProjectionExtent","gets","encodings","composeCssTransform","Buffer","Helper","PostProcessingPass","RenderTarget","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.2.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 * 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\").ListenerFunction} 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 {{type: string,\n * target: (EventTargetLike|undefined),\n * propagationStopped: (boolean|undefined)}|\n * 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 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 (listeners[i].call(this, evt) === 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\").ListenerFunction} 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 {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.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 * 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 * @return {Extent} Extent.\n * @api\n */\nexport function applyTransform(extent, transformFn, opt_extent) {\n var coordinates = [\n extent[0], extent[1],\n extent[0], extent[3],\n extent[2], extent[1],\n extent[2], extent[3]\n ];\n transformFn(coordinates, coordinates, 2);\n var xs = [coordinates[0], coordinates[2], coordinates[4], coordinates[6]];\n var ys = [coordinates[1], coordinates[3], coordinates[5], coordinates[7]];\n return _boundingExtentXYs(xs, ys, opt_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 * @return {import(\"./extent.js\").Extent} The transformed extent.\n * @api\n */\nexport function transformExtent(extent, source, destination) {\n var transformFunc = getTransform(source, destination);\n return applyTransform(extent, transformFunc);\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 = window.devicePixelRatio || 1;\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 if (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 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//# sourceMappingURL=TileQueue.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","/**\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';\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//# 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.resolveConstraints(0);\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 anchor = anchor ||\n series.filter(function (animation) {\n return !animation.complete;\n })[0].anchor;\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 };\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 * @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/dom\n */\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() : document.createElement('canvas');\n if (opt_width) {\n canvas.width = opt_width;\n }\n if (opt_height) {\n canvas.height = opt_height;\n }\n return 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 {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 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 { DROP } from './structs/PriorityQueue.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 // Filter out tiles at higher zoom levels than the current zoom level, or that\n // are outside the visible extent.\n var frameState = this.frameState_;\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 /**\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)) {\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","/**\n * @module ol/css\n */\n/**\n * @typedef {Object} FontParameters\n * @property {Array} families\n * @property {string} style\n * @property {string} weight\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 * 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} The CSS font property.\n * @return {FontParameters} The font families (or null if the input spec is invalid).\n */\nexport var getFontParameters = (function () {\n /**\n * @type {CSSStyleDeclaration}\n */\n var style;\n /**\n * @type {Object}\n */\n var cache = {};\n return function (font) {\n if (!style) {\n style = document.createElement('div').style;\n }\n if (!(font in cache)) {\n style.font = font;\n var family = style.fontFamily;\n var fontWeight = style.fontWeight;\n var fontStyle = style.fontStyle;\n style.font = '';\n if (!family) {\n return null;\n }\n var families = family.split(/,\\s?/);\n cache[font] = {\n families: families,\n weight: fontWeight,\n style: fontStyle\n };\n }\n return cache[font];\n };\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/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","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 {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 * `