{"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/geom/flat/length.js","webpack://ol/./build/ol/geom/flat/textpath.js","webpack://ol/./build/ol/render/canvas/Instruction.js","webpack://ol/./build/ol/geom/flat/straightchunk.js","webpack://ol/./build/ol/render/canvas/Builder.js","webpack://ol/./build/ol/style/TextPlacement.js","webpack://ol/./build/ol/render/canvas/TextBuilder.js","webpack://ol/./build/ol/render/canvas/Executor.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/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/ImageBuilder.js","webpack://ol/./build/ol/render/canvas/LineStringBuilder.js","webpack://ol/./build/ol/render/canvas/PolygonBuilder.js","webpack://ol/./build/ol/render/canvas/BuilderGroup.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","lineStringLength","drawTextOnPath","text","startM","maxAngle","measureAndCacheTextWidth","previousAngle","reverse","numChars","segmentM","angleChanged","char","charLength","charM","segmentPos","interpolate","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","matchingChunk","m12","m23","x12","y12","x23","y23","chunkStart","chunkEnd","chunkM","acos","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","getEndss","myEnds","endGeometry","reverseHitDetectionInstructions","instruction","fillStyleColor","getColor","defaultFillStyle","strokeStyleColor","defaultStrokeStyle","strokeStyleLineCap","getLineCap","lineCap","defaultLineCap","strokeStyleLineDash","getLineDash","lineDash","defaultLineDash","strokeStyleLineDashOffset","getLineDashOffset","lineDashOffset","defaultLineDashOffset","strokeStyleLineJoin","getLineJoin","lineJoin","defaultLineJoin","strokeStyleWidth","lineWidth","defaultLineWidth","strokeStyleMiterLimit","getMiterLimit","miterLimit","defaultMiterLimit","createFill","fillInstruction","applyStroke","createStroke","updateFillStyle","currentFillStyle","updateStrokeStyle","currentStrokeStyle","currentLineCap","currentLineDash","currentLineDashOffset","currentLineJoin","currentLineWidth","currentMiterLimit","endGeometryInstruction","LINE","TEXT_ALIGN","CanvasTextBuilder","declutterGroups_","labels_","text_","textOffsetX_","textOffsetY_","textRotateWithView_","textRotation_","textFillState_","fillStates","textStrokeState_","strokeStates","textState_","textStates","textKey_","fillKey_","strokeKey_","fillState","strokeState","textState","geometryType","placement","TextPlacement","textAlign","flatOffset","flatEnd","oo","range","declutterGroup","drawChars_","geometryWidths","getFlatMidpoint","getFlatMidpoints","getFlatInteriorPoints","saveTextStates_","backgroundFill","backgroundStroke","pixelRatio_1","defaultPadding","strokeKey","textKey","defaultTextAlign","textBaseline","defaultTextBaseline","fillKey","baseline","textScale","strokeWidth","declutterGroups","textFillStyle","getFill","textStrokeStyle","getStroke","getFont","defaultFont","registerFont","getScale","getOverflow","getMaxAngle","getPlacement","getTextAlign","getTextBaseline","getBackgroundFill","getBackgroundStroke","getPadding","textOffsetX","getOffsetX","textOffsetY","getOffsetY","textRotateWithView","getRotateWithView","textRotation","getText","p3","p4","Executor","overlaps","alignFill_","coordinateCache_","renderedTransform_","pixelCoordinates_","viewRotation_","widths_","createLabel","align","numLines","widths","currentWidth","measureTextWidth","measureTextWidths","lineHeight","measureTextHeight","renderWidth","contextInstructions","CanvasRenderingContext2D","setLineDash","leftRight","replayTextBackground_","p1","p2","strokeInstruction","beginPath","moveTo","lineTo","fill_","setStrokeStyle_","stroke","replayImageOrLabel_","imageOrLabel","originX","originY","snapToPixel","fillStroke","boxW","boxH","boxX","boxY","strokePadding","declutterArgs","drawImageOrLabel","origin_1","repeatSize","save","fill","restore","renderDeclutter","declutterTree","groupCount","box","declutterData","currentAlpha","globalAlpha","drawLabelWithPointPlacement_","execute_","featureCallback","opt_hitExtent","pixelCoordinates","dd","prevX","prevY","roundX","roundY","image","pendingFill","pendingStroke","lastFillInstruction","lastStrokeInstruction","coordinateCache","viewRotation","viewRotationFromTransform","batchSize","arc","closePath","rotateWithView","labelWithAnchor","widthIndex","declutterGroupIndex","measurePixelRatio","pixelRatioScale","cachedWidths","pathLength","textLength","parts","cc","chars","part","execute","executeHitDetection","opt_featureCallback","checkedFonts","labelCache","console","warn","measureFont","div","heights","measureContext","textHeights","interval","referenceWidth","retries","referenceFonts","isAvailable","available","referenceFont","check","done","fonts","clearInterval","fontSpec","setInterval","measureText","rotateAtOffset","labelOrImage","setTransform","executeLabelInstructions","drawImage","CanvasImmediateRenderer","opt_squaredTolerance","opt_userTransform","context_","squaredTolerance_","userTransform_","contextFillState_","contextStrokeState_","contextTextState_","fillState_","strokeState_","image_","imageAnchorX_","imageAnchorY_","imageHeight_","imageOpacity_","imageOriginX_","imageOriginY_","imageRotateWithView_","imageRotation_","imageScale_","imageWidth_","textScale_","tmpLocalTransform_","drawImages_","localTransform","alpha","drawText_","setContextFillState_","setContextStrokeState_","setContextTextState_","strokeText","fillText","moveToLineTo_","close","drawRings_","simpleGeometry","transformGeom2D","getImage","getGeometryFunction","geometries","getGeometriesArray","flatMidpoint","geometryExtent","flatMidpoints","flatInteriorPoint","flatInteriorPoints","contextFillState","contextStrokeState","contextTextState","imageAnchor","getAnchor","imageImage","imageOrigin","getOrigin","imageSize","textFillStyleColor","textStrokeStyleColor","textStrokeStyleLineCap","textStrokeStyleLineDash","textStrokeStyleLineDashOffset","textStrokeStyleLineJoin","textStrokeStyleWidth","textStrokeStyleMiterLimit","textFont","textText","textTextAlign","textTextBaseline","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","zIndexItems","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","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_","scale_","displacement_","displacement","getDisplacement","getHitDetectionImage","getImageSize","getHitDetectionImageSize","setRotateWithView","setScale","RegularShape","hitDetectionCanvas_","points","radius_","radius1","radius2_","radius2","stroke_","imageSize_","hitDetectionImageSize_","getPoints","getRadius2","renderOptions","draw_","createHitDetectionCanvas_","angle0","radiusC","drawHitDetectionCanvas_","CircleStyle","setRadius","Fill","color_","setColor","FRACTION","ImageBase","getPixelRatio","listenImage","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","DEFAULT_FILL_COLOR","Text","font_","textAlign_","textBaseline_","maxAngle_","placement_","overflow_","offsetX_","offsetY_","backgroundFill_","backgroundStroke_","padding_","setOverflow","setFont","setMaxAngle","setOffsetX","setOffsetY","setPlacement","setTextAlign","setTextBaseline","setBackgroundFill","setBackgroundStroke","setPadding","zRegEx","xRegEx","yRegEx","dashYRegEx","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","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_","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","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","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","CanvasImageBuilder","anchorX_","anchorY_","height_","originX_","originY_","drawCoordinates_","myBegin","hitDetectionImage","CanvasLineStringBuilder","drawFlatCoordinates_","moveToLineToInstruction","lastStroke","CanvasPolygonBuilder","drawFlatCoordinatess_","numEnds","setFillStrokeStyles_","circleInstruction","BATCH_CONSTRUCTORS","Builder","ImageBuilder","LineStringBuilder","TextBuilder","BuilderGroup","tolerance_","maxExtent_","resolution_","buildersByZIndex_","group","builderInstructions","zKey","builders","builderKey","builderInstruction","builderType","zIndexKey","replays","Constructor","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.0';\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 * `