{"version":3,"sources":["webpack://ol/webpack/universalModuleDefinition","webpack://ol/webpack/bootstrap","webpack://ol/./node_modules/rbush/rbush.min.js","webpack://ol/./node_modules/@openlayers/pepjs/dist/pep.js","webpack://ol/./node_modules/pbf/index.js","webpack://ol/./node_modules/pixelworks/lib/index.js","webpack://ol/./node_modules/ieee754/index.js","webpack://ol/./node_modules/pixelworks/lib/processor.js","webpack://ol/./node_modules/pixelworks/lib/util.js","webpack://ol/./build/ol/util.js","webpack://ol/./build/ol/AssertionError.js","webpack://ol/./build/ol/CollectionEventType.js","webpack://ol/./build/ol/ObjectEventType.js","webpack://ol/./build/ol/obj.js","webpack://ol/./build/ol/events.js","webpack://ol/./build/ol/Disposable.js","webpack://ol/./build/ol/array.js","webpack://ol/./build/ol/functions.js","webpack://ol/./build/ol/events/Event.js","webpack://ol/./build/ol/events/Target.js","webpack://ol/./build/ol/events/EventType.js","webpack://ol/./build/ol/Observable.js","webpack://ol/./build/ol/Object.js","webpack://ol/./build/ol/Collection.js","webpack://ol/./build/ol/asserts.js","webpack://ol/./build/ol/Feature.js","webpack://ol/./build/ol/extent/Corner.js","webpack://ol/./build/ol/extent/Relationship.js","webpack://ol/./build/ol/extent.js","webpack://ol/./build/ol/geom/GeometryLayout.js","webpack://ol/./build/ol/geom/GeometryType.js","webpack://ol/./build/ol/geom/flat/transform.js","webpack://ol/./build/ol/math.js","webpack://ol/./build/ol/sphere.js","webpack://ol/./build/ol/proj/Units.js","webpack://ol/./build/ol/proj/Projection.js","webpack://ol/./build/ol/proj/epsg3857.js","webpack://ol/./build/ol/proj/epsg4326.js","webpack://ol/./build/ol/proj/transforms.js","webpack://ol/./build/ol/proj/projections.js","webpack://ol/./build/ol/proj.js","webpack://ol/./build/ol/transform.js","webpack://ol/./build/ol/geom/Geometry.js","webpack://ol/./build/ol/geom/SimpleGeometry.js","webpack://ol/./build/ol/geom/flat/area.js","webpack://ol/./build/ol/geom/flat/closest.js","webpack://ol/./build/ol/geom/flat/deflate.js","webpack://ol/./build/ol/geom/flat/inflate.js","webpack://ol/./build/ol/geom/flat/simplify.js","webpack://ol/./build/ol/geom/LinearRing.js","webpack://ol/./build/ol/geom/Point.js","webpack://ol/./build/ol/geom/flat/contains.js","webpack://ol/./build/ol/geom/flat/interiorpoint.js","webpack://ol/./build/ol/geom/flat/segments.js","webpack://ol/./build/ol/geom/flat/intersectsextent.js","webpack://ol/./build/ol/geom/flat/reverse.js","webpack://ol/./build/ol/geom/flat/orient.js","webpack://ol/./build/ol/geom/Polygon.js","webpack://ol/./build/ol/Geolocation.js","webpack://ol/./build/ol/Kinetic.js","webpack://ol/./build/ol/MapEvent.js","webpack://ol/./build/ol/MapBrowserEvent.js","webpack://ol/./build/ol/has.js","webpack://ol/./build/ol/MapBrowserEventType.js","webpack://ol/./build/ol/MapBrowserPointerEvent.js","webpack://ol/./build/ol/pointer/EventType.js","webpack://ol/./build/ol/MapBrowserEventHandler.js","webpack://ol/./build/ol/MapEventType.js","webpack://ol/./build/ol/MapProperty.js","webpack://ol/./build/ol/render/EventType.js","webpack://ol/./build/ol/TileState.js","webpack://ol/./build/ol/structs/PriorityQueue.js","webpack://ol/./build/ol/TileQueue.js","webpack://ol/./build/ol/tilegrid/common.js","webpack://ol/./build/ol/centerconstraint.js","webpack://ol/./build/ol/resolutionconstraint.js","webpack://ol/./build/ol/rotationconstraint.js","webpack://ol/./build/ol/ViewHint.js","webpack://ol/./build/ol/ViewProperty.js","webpack://ol/./build/ol/string.js","webpack://ol/./build/ol/coordinate.js","webpack://ol/./build/ol/easing.js","webpack://ol/./build/ol/View.js","webpack://ol/./build/ol/dom.js","webpack://ol/./build/ol/layer/Property.js","webpack://ol/./build/ol/layer/Base.js","webpack://ol/./build/ol/source/State.js","webpack://ol/./build/ol/layer/Group.js","webpack://ol/./build/ol/size.js","webpack://ol/./build/ol/PluggableMap.js","webpack://ol/./build/ol/css.js","webpack://ol/./build/ol/control/Control.js","webpack://ol/./build/ol/layer/Layer.js","webpack://ol/./build/ol/control/Attribution.js","webpack://ol/./build/ol/control/Rotate.js","webpack://ol/./build/ol/control/Zoom.js","webpack://ol/./build/ol/control.js","webpack://ol/./build/ol/interaction/Property.js","webpack://ol/./build/ol/interaction/Interaction.js","webpack://ol/./build/ol/interaction/DoubleClickZoom.js","webpack://ol/./build/ol/events/condition.js","webpack://ol/./build/ol/interaction/Pointer.js","webpack://ol/./build/ol/interaction/DragPan.js","webpack://ol/./build/ol/interaction/DragRotate.js","webpack://ol/./build/ol/render/Box.js","webpack://ol/./build/ol/interaction/DragBox.js","webpack://ol/./build/ol/interaction/DragZoom.js","webpack://ol/./build/ol/events/KeyCode.js","webpack://ol/./build/ol/interaction/KeyboardPan.js","webpack://ol/./build/ol/interaction/KeyboardZoom.js","webpack://ol/./build/ol/interaction/MouseWheelZoom.js","webpack://ol/./build/ol/interaction/PinchRotate.js","webpack://ol/./build/ol/interaction/PinchZoom.js","webpack://ol/./build/ol/interaction.js","webpack://ol/./build/ol/render/Event.js","webpack://ol/./build/ol/color.js","webpack://ol/./build/ol/style/IconImageCache.js","webpack://ol/./build/ol/colorlike.js","webpack://ol/./build/ol/render/VectorContext.js","webpack://ol/./build/ol/render/canvas.js","webpack://ol/./build/ol/structs/LRUCache.js","webpack://ol/./build/ol/render/canvas/LabelCache.js","webpack://ol/./build/ol/render/canvas/Immediate.js","webpack://ol/./build/ol/ImageState.js","webpack://ol/./build/ol/render/canvas/BuilderType.js","webpack://ol/./build/ol/renderer/vector.js","webpack://ol/./build/ol/render.js","webpack://ol/./build/ol/renderer/Map.js","webpack://ol/./build/ol/renderer/Composite.js","webpack://ol/./build/ol/Map.js","webpack://ol/./build/ol/OverlayPositioning.js","webpack://ol/./build/ol/Overlay.js","webpack://ol/./build/ol/format/FormatType.js","webpack://ol/./build/ol/featureloader.js","webpack://ol/./build/ol/loadingstrategy.js","webpack://ol/./build/ol/TileRange.js","webpack://ol/./build/ol/tilecoord.js","webpack://ol/./build/ol/tilegrid/TileGrid.js","webpack://ol/./build/ol/tilegrid.js","webpack://ol/./build/ol/webgl.js","webpack://ol/./build/ol/xml.js","webpack://ol/./build/ol/webgl/Buffer.js","webpack://ol/./build/ol/webgl/ContextEventType.js","webpack://ol/./build/ol/vec/mat4.js","webpack://ol/./build/ol/webgl/PostProcessingPass.js","webpack://ol/./build/ol/webgl/Helper.js","webpack://ol/./build/ol/webgl/RenderTarget.js","webpack://ol/./build/ol/tilegrid/WMTS.js","webpack://ol/./build/ol/style/Image.js","webpack://ol/./build/ol/style/RegularShape.js","webpack://ol/./build/ol/style/Circle.js","webpack://ol/./build/ol/style/Fill.js","webpack://ol/./build/ol/style/IconAnchorUnits.js","webpack://ol/./build/ol/ImageBase.js","webpack://ol/./build/ol/Image.js","webpack://ol/./build/ol/style/IconImage.js","webpack://ol/./build/ol/style/IconOrigin.js","webpack://ol/./build/ol/style/Icon.js","webpack://ol/./build/ol/style/Stroke.js","webpack://ol/./build/ol/style/Style.js","webpack://ol/./build/ol/style/TextPlacement.js","webpack://ol/./build/ol/style/Text.js","webpack://ol/./build/ol/tileurlfunction.js","webpack://ol/./build/ol/net.js","webpack://ol/./build/ol/reproj/common.js","webpack://ol/./build/ol/Tile.js","webpack://ol/./build/ol/ImageTile.js","webpack://ol/./build/ol/TileCache.js","webpack://ol/./build/ol/reproj.js","webpack://ol/./build/ol/reproj/Triangulation.js","webpack://ol/./build/ol/reproj/Tile.js","webpack://ol/./build/ol/source/Source.js","webpack://ol/./build/ol/source/Tile.js","webpack://ol/./build/ol/source/TileEventType.js","webpack://ol/./build/ol/source/UrlTile.js","webpack://ol/./build/ol/source/TileImage.js","webpack://ol/./build/ol/source/BingMaps.js","webpack://ol/./build/ol/source/XYZ.js","webpack://ol/./build/ol/source/CartoDB.js","webpack://ol/./build/ol/source/VectorEventType.js","webpack://ol/./build/ol/structs/RBush.js","webpack://ol/./build/ol/source/Vector.js","webpack://ol/./build/ol/source/Cluster.js","webpack://ol/./build/ol/source/Zoomify.js","webpack://ol/./build/ol/format/IIIFInfo.js","webpack://ol/./build/ol/source/IIIF.js","webpack://ol/./build/ol/reproj/Image.js","webpack://ol/./build/ol/source/Image.js","webpack://ol/./build/ol/uri.js","webpack://ol/./build/ol/source/ImageArcGISRest.js","webpack://ol/./build/ol/ImageCanvas.js","webpack://ol/./build/ol/source/ImageCanvas.js","webpack://ol/./build/ol/source/ImageMapGuide.js","webpack://ol/./build/ol/source/ImageStatic.js","webpack://ol/./build/ol/source/common.js","webpack://ol/./build/ol/source/WMSServerType.js","webpack://ol/./build/ol/source/ImageWMS.js","webpack://ol/./build/ol/source/OSM.js","webpack://ol/./build/ol/layer/BaseImage.js","webpack://ol/./build/ol/renderer/Layer.js","webpack://ol/./build/ol/renderer/canvas/Layer.js","webpack://ol/./build/ol/renderer/canvas/ImageLayer.js","webpack://ol/./build/ol/layer/Image.js","webpack://ol/./build/ol/layer/TileProperty.js","webpack://ol/./build/ol/layer/BaseTile.js","webpack://ol/./build/ol/renderer/canvas/TileLayer.js","webpack://ol/./build/ol/layer/Tile.js","webpack://ol/./build/ol/source/Raster.js","webpack://ol/./build/ol/source/Stamen.js","webpack://ol/./build/ol/source/TileArcGISRest.js","webpack://ol/./build/ol/source/TileDebug.js","webpack://ol/./build/ol/source/TileJSON.js","webpack://ol/./build/ol/source/TileWMS.js","webpack://ol/./build/ol/source/UTFGrid.js","webpack://ol/./build/ol/VectorRenderTile.js","webpack://ol/./build/ol/VectorTile.js","webpack://ol/./build/ol/source/VectorTile.js","webpack://ol/./build/ol/source/WMTSRequestEncoding.js","webpack://ol/./build/ol/source/WMTS.js","webpack://ol/./build/ol/renderer/webgl/Layer.js","webpack://ol/./build/ol/worker/webgl.js","webpack://ol/./build/ol/layer/BaseVector.js","webpack://ol/./build/ol/renderer/webgl/PointsLayer.js","webpack://ol/./build/ol/render/canvas/Instruction.js","webpack://ol/./build/ol/render/canvas/Builder.js","webpack://ol/./build/ol/render/canvas/ImageBuilder.js","webpack://ol/./build/ol/render/canvas/LineStringBuilder.js","webpack://ol/./build/ol/render/canvas/PolygonBuilder.js","webpack://ol/./build/ol/geom/flat/straightchunk.js","webpack://ol/./build/ol/render/canvas/TextBuilder.js","webpack://ol/./build/ol/render/canvas/BuilderGroup.js","webpack://ol/./build/ol/geom/flat/length.js","webpack://ol/./build/ol/geom/flat/textpath.js","webpack://ol/./build/ol/render/canvas/Executor.js","webpack://ol/./build/ol/render/canvas/ExecutorGroup.js","webpack://ol/./build/ol/render/canvas/hitdetect.js","webpack://ol/./build/ol/renderer/canvas/VectorLayer.js","webpack://ol/./build/ol/renderer/canvas/VectorImageLayer.js","webpack://ol/./build/ol/layer/VectorTileRenderType.js","webpack://ol/./build/ol/renderer/canvas/VectorTileLayer.js","webpack://ol/./build/ol/layer/Vector.js","webpack://ol/./build/ol/geom/flat/interpolate.js","webpack://ol/./build/ol/geom/LineString.js","webpack://ol/./build/ol/geom/flat/geodesic.js","webpack://ol/./build/ol/layer/Graticule.js","webpack://ol/./build/ol/layer/Heatmap.js","webpack://ol/./build/ol/layer/VectorImage.js","webpack://ol/./build/ol/layer/VectorTile.js","webpack://ol/./build/ol/interaction/DragAndDrop.js","webpack://ol/./build/ol/interaction/DragRotateAndZoom.js","webpack://ol/./build/ol/geom/Circle.js","webpack://ol/./build/ol/geom/MultiLineString.js","webpack://ol/./build/ol/geom/MultiPoint.js","webpack://ol/./build/ol/geom/flat/center.js","webpack://ol/./build/ol/geom/MultiPolygon.js","webpack://ol/./build/ol/interaction/Draw.js","webpack://ol/./build/ol/interaction/Extent.js","webpack://ol/./build/ol/interaction/Modify.js","webpack://ol/./build/ol/interaction/Select.js","webpack://ol/./build/ol/interaction/Snap.js","webpack://ol/./build/ol/interaction/Translate.js","webpack://ol/./build/ol/geom/GeometryCollection.js","webpack://ol/./build/ol/format/Feature.js","webpack://ol/./build/ol/format/JSONFeature.js","webpack://ol/./build/ol/format/EsriJSON.js","webpack://ol/./build/ol/format/XMLFeature.js","webpack://ol/./build/ol/format/GMLBase.js","webpack://ol/./build/ol/format/xsd.js","webpack://ol/./build/ol/format/GML3.js","webpack://ol/./build/ol/format/GML.js","webpack://ol/./build/ol/format/GML2.js","webpack://ol/./build/ol/format/GML32.js","webpack://ol/./build/ol/format/GPX.js","webpack://ol/./build/ol/format/GeoJSON.js","webpack://ol/./build/ol/format/TextFeature.js","webpack://ol/./build/ol/format/KML.js","webpack://ol/./build/ol/format/IGC.js","webpack://ol/./build/ol/render/Feature.js","webpack://ol/./build/ol/format/MVT.js","webpack://ol/./build/ol/format/OSMXML.js","webpack://ol/./build/ol/geom/flat/flip.js","webpack://ol/./build/ol/format/Polyline.js","webpack://ol/./build/ol/format/TopoJSON.js","webpack://ol/./build/ol/format/filter/Filter.js","webpack://ol/./build/ol/format/filter/LogicalNary.js","webpack://ol/./build/ol/format/filter/And.js","webpack://ol/./build/ol/format/filter/Bbox.js","webpack://ol/./build/ol/format/filter/Spatial.js","webpack://ol/./build/ol/format/filter/Contains.js","webpack://ol/./build/ol/format/filter/Comparison.js","webpack://ol/./build/ol/format/filter/During.js","webpack://ol/./build/ol/format/filter/ComparisonBinary.js","webpack://ol/./build/ol/format/filter/EqualTo.js","webpack://ol/./build/ol/format/filter/GreaterThan.js","webpack://ol/./build/ol/format/filter/GreaterThanOrEqualTo.js","webpack://ol/./build/ol/format/filter/Intersects.js","webpack://ol/./build/ol/format/filter/IsBetween.js","webpack://ol/./build/ol/format/filter/IsLike.js","webpack://ol/./build/ol/format/filter/IsNull.js","webpack://ol/./build/ol/format/filter/LessThan.js","webpack://ol/./build/ol/format/filter/LessThanOrEqualTo.js","webpack://ol/./build/ol/format/filter/Not.js","webpack://ol/./build/ol/format/filter/NotEqualTo.js","webpack://ol/./build/ol/format/filter/Or.js","webpack://ol/./build/ol/format/filter/Within.js","webpack://ol/./build/ol/format/filter.js","webpack://ol/./build/ol/format/WFS.js","webpack://ol/./build/ol/format/WKT.js","webpack://ol/./build/ol/format/XLink.js","webpack://ol/./build/ol/format/XML.js","webpack://ol/./build/ol/format/WMSCapabilities.js","webpack://ol/./build/ol/format/WMSGetFeatureInfo.js","webpack://ol/./build/ol/format/OWS.js","webpack://ol/./build/ol/format/WMTSCapabilities.js","webpack://ol/./build/ol/control/FullScreen.js","webpack://ol/./build/ol/control/MousePosition.js","webpack://ol/./build/ol/control/OverviewMap.js","webpack://ol/./build/ol/control/ScaleLine.js","webpack://ol/./build/ol/control/ZoomSlider.js","webpack://ol/./build/ol/control/ZoomToExtent.js","webpack://ol/./build/index.js","webpack://ol/./build/ol/proj/proj4.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","e","a","h","Math","log","f","exp","u","sqrt","max","floor","min","x","length","this","_maxEntries","_minEntries","ceil","clear","indexOf","children","minX","minY","maxX","maxY","leaf","height","pop","push","all","_all","data","search","toBBox","collides","load","insert","_build","slice","_splitRoot","_insert","remove","splice","_condense","compareMinX","compareMinY","toJSON","fromJSON","apply","pow","_chooseSubtree","_split","_adjustParentBBoxes","_chooseSplitAxis","_chooseSplitIndex","v","M","_allDistMargin","sort","MOUSE_PROPS","MOUSE_DEFAULTS","PointerEvent","inType","inDict","document","createEvent","initEvent","bubbles","cancelable","buttons","pressure","undefined","clientX","y","clientY","pointerId","width","tiltX","tiltY","twist","tangentialPressure","pointerType","hwTimestamp","isPrimary","detail","PointerMap","Map","forEach","SparseArrayMap","array","size","set","k","delete","has","callback","thisArg","CLONE_PROPS","CLONE_DEFAULTS","BOUNDARY_EVENTS","HAS_SVG_INSTANCE","SVGElementInstance","dispatcher","pointermap","eventMap","captureInfo","eventSources","eventSourceList","registerSource","source","newEvents","events","register","element","es","unregister","contains","container","contained","ex","down","inEvent","fireEvent","move","up","enter","leave","over","out","cancel","leaveOut","event","propagate","enterOver","eventHandler","_handledByPE","type","fn","listen","target","addEvent","unlisten","removeEvent","eventName","addEventListener","boundHandler","removeEventListener","makeEvent","relatedTarget","preventDefault","_target","dispatchEvent","cloneEvent","eventCopy","correspondingUseElement","getTarget","capture","propagateDown","targets","parentNode","reverse","setCapture","inPointerId","inTarget","skipDispatch","releaseCapture","implicitRelease","asyncDispatchEvent","requestAnimationFrame","targeting","shadow","inEl","shadowRoot","webkitShadowRoot","canTarget","Boolean","elementFromPoint","targetingShadow","olderShadow","os","olderShadowRoot","se","querySelector","allShadows","shadows","searchRoot","inRoot","st","sr","ssr","owner","nodeType","Node","DOCUMENT_NODE","DOCUMENT_FRAGMENT_NODE","findTarget","Array","map","toArray","filter","MO","MutationObserver","WebKitMutationObserver","OBSERVER_INIT","subtree","childList","attributes","attributeOldValue","attributeFilter","Installer","add","changed","binder","addCallback","removeCallback","changedCallback","observer","mutationWatcher","rule","watchSubtree","observe","enableOnSubtree","readyState","installOnLoad","installNewSubtree","findElements","addElement","querySelectorAll","removeElement","el","elementChanged","oldValue","concatLists","accum","list","concat","isElement","ELEMENT_NODE","flattenMutationTree","inNodes","tree","reduce","mutations","mutationHandler","addedNodes","removedNodes","attrib2css","selector","styles","hasNativePE","MSPointerEvent","hasShadowRoot","ShadowDOMPolyfill","head","createShadowRoot","BUTTON_TO_BUTTONS","HAS_BUTTONS","MouseEvent","INSTALLER","mouseEvents","POINTER_ID","POINTER_TYPE","lastTouches","isEventSimulatedFromTouch","lts","dx","abs","dy","prepareEvent","pd","webkitForce","WEBKIT_FORCE_AT_MOUSE_DOWN","prepareButtonsForMove","which","mousedown","button","webkitmouseforcechanged","mousemove","mouseup","mouseover","mouseout","deactivateMouse","pointermap$1","touchEvents","elementAdded","getAttribute","touchActionToScrollType","_scrollType","elementRemoved","evts","oldSt","scrollTypes","UP","includes","DOWN","LEFT","RIGHT","touchAction","split","firstTouch","isPrimaryTouch","inTouch","identifier","setPrimaryTouch","firstXY","X","Y","scrolling","removePrimaryPointer","inPointer","typeToButtons","ret","touchToPointer","cte","currentTouchEvent","id","radiusX","webkitRadiusX","radiusY","webkitRadiusY","force","altitudeAngle","tan","radToDeg","PI","atan","cos","azimuthAngle","sin","touchType","altKey","ctrlKey","metaKey","shiftKey","self","processTouches","inFunction","tl","changedTouches","shouldScroll","currentTarget","dya","dxa","left","right","findTouch","inTL","inId","vacuumTouches","touches","cancelOut","touchstart","dedupSynthMouse","overDown","outTarget","touchforcechange","touchmove","touchcancel","moveOverOut","pointer","outEvent","touchend","upOut","cleanUpPointer","lt","setTimeout","pointermap$2","HAS_BITMAP_TYPE","MSPOINTER_TYPE_MOUSE","msEvents","POINTER_TYPES","cleanup","MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSLostPointerCapture","MSGotPointerCapture","assertActive","error","Error","assertConnected","elem","parent","ownerDocument","inActiveButtonState","navigator","msPointerEnabled","msSetPointerCapture","msReleasePointerCapture","shadowSelector","createElement","textContent","appendChild","applyAttributeStyles","tp","msMaxTouchPoints","ontouchstart","applyPolyfill","Element","setPointerCapture","defineProperties","targetFinding","Pbf","ieee754","buf","ArrayBuffer","isView","Uint8Array","pos","Varint","Fixed64","Bytes","Fixed32","utf8TextDecoder","TextDecoder","readPackedEnd","pbf","readVarint","toNum","low","high","isSigned","makeRoomForExtraLength","startPos","len","extraLen","LN2","realloc","writePackedVarint","arr","writeVarint","writePackedSVarint","writeSVarint","writePackedFloat","writeFloat","writePackedDouble","writeDouble","writePackedBoolean","writeBoolean","writePackedFixed32","writeFixed32","writePackedSFixed32","writeSFixed32","writePackedFixed64","writeFixed64","writePackedSFixed64","writeSFixed64","readUInt32","writeInt32","val","readInt32","destroy","readFields","readField","result","end","tag","skip","readMessage","readFixed32","readSFixed32","readFixed64","readSFixed64","readFloat","read","readDouble","b","readVarintRemainder","readVarint64","readSVarint","num","readBoolean","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","finish","writeBigVarintLow","lsb","writeBigVarintHigh","writeBigVarint","writeString","lead","charCodeAt","writeUtf8","write","writeBytes","writeRawMessage","obj","writeMessage","writeBytesField","writeFixed32Field","writeSFixed32Field","writeFixed64Field","writeSFixed64Field","writeVarintField","writeSVarintField","writeStringField","writeFloatField","writeDoubleField","writeBooleanField","Processor","offset","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","Infinity","rt","isNaN","newImageData","createMinion","operation","workerHasImageData","ImageData","_","newWorkerImageData","output","buffers","meta","imageOps","numBuffers","numBytes","byteLength","images","Uint8ClampedArray","arrays","pixels","j","pixel","createWorker","config","onMessage","lines","keys","lib","toString","blob","Blob","URL","createObjectURL","worker","Worker","threads","_imageOps","workers","_onWorkerMessage","minion","postMessage","createFauxWorker","_workers","_queue","_maxQueueLength","queue","_running","_dataLookup","_job","process","inputs","_enqueue","_dispatch","_destroyed","job","shift","input","segmentLength","slices","jj","index","_resolveJob","hasImageData","context","getContext","imageData","createImageData","uidCounter_","getUid","ol_uid","extendStatics","VERSION","__extends","setPrototypeOf","__proto__","__","constructor","_super","AssertionError","code","_this","message","ADD","REMOVE","assign","var_sources","TypeError","ii","arguments","getValues","values","isEmpty","listener","opt_this","opt_once","originalListener_1","eventsKey","listenOnce","unlistenByKey","Disposable","disposed_","dispose","disposeInternal","numberSafeCompareFunction","linearFindNearest","direction","reverseSubArray","begin","tmp","extend","extension","isArray","find","func","equals","arr1","arr2","len1","findIndex","every","idx","TRUE","FALSE","VOID","stopPropagation","evt","BaseEvent","propagationStopped","Target","opt_target","eventTarget_","pendingRemovals_","dispatching_","listeners_","listeners","Event","pendingRemovals","getListeners","hasListener","opt_type","CHANGE","ERROR","BLUR","CLEAR","CONTEXTMENU","CLICK","DBLCLICK","DRAGENTER","DRAGOVER","DROP","FOCUS","KEYDOWN","KEYPRESS","LOAD","RESIZE","WHEEL","Observable","revision_","EventType","getRevision","on","once","un","ObjectEvent","BaseObject","opt_values","values_","setProperties","getKeys","getProperties","notify","eventType","getChangeEventType","ObjectEventType","opt_silent","unset","changeEventTypeCache","Property","CollectionEvent","opt_element","opt_index","Collection","opt_array","opt_options","options","unique_","unique","array_","assertUnique_","updateLength_","getLength","getArray","item","insertAt","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","BOTTOM_LEFT","BOTTOM_RIGHT","TOP_LEFT","TOP_RIGHT","UNKNOWN","INTERSECTING","ABOVE","BELOW","boundingExtent","coordinates","extent","createEmpty","extendCoordinate","opt_extent","closestSquaredDistanceXY","containsCoordinate","coordinate","containsXY","containsExtent","extent1","extent2","coordinateRelationship","relationship","Relationship","createOrUpdate","createOrUpdateEmpty","createOrUpdateFromCoordinate","createOrUpdateFromFlatCoordinates","flatCoordinates","stride","extendFlatCoordinates","extendCoordinates","extendXY","forEachCorner","getBottomLeft","getBottomRight","getTopRight","getTopLeft","getArea","area","getWidth","getHeight","getCenter","getCorner","corner","Corner","getForViewAndSize","center","resolution","rotation","cosRotation","sinRotation","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","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","toEPSG4326","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","stack","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","point1","point2","intersectsLineString","coordinatesExtent","start","intersects","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","Geolocation","position_","transform_","watchId_","handleProjectionChanged_","handleTrackingChanged_","setProjection","trackingOptions","setTrackingOptions","setTracking","tracking","getProjection","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","SINGLECLICK","POINTERDRAG","POINTERMOVE","POINTERDOWN","POINTERUP","POINTEROVER","POINTEROUT","POINTERENTER","POINTERLEAVE","POINTERCANCEL","MapBrowserPointerEvent","pointerEvent","MapBrowserEventHandler","moveTolerance","map_","clickTimeoutId_","dragging_","dragListenerKeys_","moveTolerance_","down_","getViewport","activePointers_","trackedTouches_","element_","pointerdownListenerKey_","handlePointerDown_","relayedListenerKey_","relayEvent_","emulateClick_","newEvent","MapBrowserEventType","clearTimeout","updateActivePointers_","handlePointerUp_","isMouseActionButton_","handlePointerMove_","isMoving_","LAYERGROUP","SIZE","TARGET","VIEW","IDLE","LOADING","LOADED","EMPTY","ABORT","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","abortedTiles","DEFAULT_MAX_ZOOM","DEFAULT_TILE_SIZE","createExtent","onlyCenter","smooth","opt_isMoving","viewWidth","viewHeight","ratio","none","getViewportClampedResolution","maxExtent","viewportSize","xResolution","yResolution","getSmoothClampedResolution","maxResolution","minResolution","createMinMaxResolution","opt_smooth","opt_maxExtent","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_","targetCenter_","targetResolution_","targetRotation_","applyOptions_","resolutionConstraintInfo","resolutionConstraint","minZoom","maxZoom","zoomFactor","multiWorld","smoothResolutionConstraint","projExtent","constrainOnlyCenter","resolutions","constrainResolution","capped","z","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","cancelAnimationFrame","more","seriesComplete","elapsed","fraction","progress","getSizeFromViewport_","constrainedResolution","calculateCenterZoom","applyTargetState_","constrainedRotation","calculateCenterRotate","currentCenter","currentResolution","opt_rotation","metrics","getComputedStyle","w","ViewProperty","getConstraints","getHints","opt_hints","calculateExtent","opt_size","calculateExtentInternal","getMaxResolution","getMinResolution","getMaxZoom","getZoomForResolution","setMaxZoom","getMinZoom","setMinZoom","setConstrainResolution","enabled","getResolutions","getResolutionForExtent","getResolutionForExtentInternal","getResolutionForValueFunction","opt_power","getValueForResolutionFunction","nearest","baseLevel","fit","geometryOrExtent","userProjection","fitInternal","padding","minRotX","minRotY","maxRotX","maxRotY","rotX","rotY","getConstrainedResolution","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","canvas","offsetWidth","marginLeft","marginRight","offsetHeight","marginTop","marginBottom","replaceNode","newNode","oldNode","replaceChild","removeNode","node","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","setTouchAction","msTouchAction","setAttribute","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_","overlayContainerStopEvent_","mapBrowserEventHandler_","handleMapBrowserEvent","keyboardEventTarget_","keyHandlerKeys_","focusHandlerKeys_","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","getBoundingClientRect","eventPosition","top","getTargetElement","getView","pixelToCoordinateTransform","getOverlayById","getLoading","layerStatesArray","getSource","loading","getPixelFromCoordinate","viewCoordinate","getPixelFromCoordinateInternal","coordinateToPixelTransform","getRenderer","getSize","getOverlayContainer","getOverlayContainerStopEvent","tileSourceKey","tileCenter","tileResolution","wantedTiles","viewState","mapBrowserEvent","HTMLElement","parentElement","interactionsArray","getActive","handleEvent","handlePostRender","tileQueue","hints","viewHints","lowOnFrameBudget","time","dispatchRenderEvent","postRenderFunctions","render","targetElement","hasFocus","hasAttribute","activeElement","updateSize","handleViewPropertyChanged_","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","getMap","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","mapEvent","updateElement_","Attribution","ulElement_","collapsed_","collapsed","overrideCollapsible_","collapsible","collapsible_","tipLabel","collapseLabel","collapseLabel_","label","label_","activeLabel","title","handleClick_","cssClasses","renderedAttributions_","renderedVisible_","collectSourceAttributions_","lookup","visibleAttributions","attributionGetter","getAttributions","attributions","getAttributionsCollapsible","setCollapsible","display","innerHTML","handleToggle_","classList","toggle","getCollapsible","setCollapsed","getCollapsed","rotation_","autoHide_","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","always","mouseActionButton","never","singleClick","noModifierKeys","shiftKeyOnly","targetNotEditable","tagName","mouseOnly","primaryAction","pointerEvents","Pointer","PointerInteraction","handleDownEvent","handleDragEvent","handleMoveEvent","handleUpEvent","stopDown","handlingDownUpSequence","trackedPointers_","targetPointers","updateTrackedPointers_","handledUp","handled","isPointerDraggingEvent","event_1","defaultCondition","DragPan","kinetic_","kinetic","lastCentroid","lastPointersCount_","panning_","condition_","condition","noKinetic_","centroid","centerpx","DragRotate","lastAngle_","RenderBox","geometry_","startPixel_","endPixel_","render_","startPixel","endPixel","setPixels","createOrUpdateGeometry","DragBoxEventType","DragBoxEvent","DragBox","box_","minArea_","minArea","onBoxEnd_","onBoxEnd","boxEndCondition_","boxEndCondition","defaultBoxEndCondition","out_","mapExtent","boxPixelExtent","DragZoom","keyCode","KeyCode","mapUnitsDelta","pixelDelta_","pan","KeyboardPan","defaultCondition_","pixelDelta","charCode","KeyboardZoom","Mode","MouseWheelZoom","totalDelta_","lastDelta_","timeout_","timeout","useAnchor_","useAnchor","lastAnchor_","startTime_","timeoutId_","mode_","trackpadEventGap_","trackpadTimeoutId_","trackpadDeltaPerZoom_","endInteraction_","sign","wheelEvent","deltaMode","WheelEvent","DOM_DELTA_PIXEL","DOM_DELTA_LINE","timeLeft","handleWheelZoom_","setMouseAnchor","PinchRotate","pointerOptions","anchor_","rotating_","rotationDelta_","threshold_","threshold","rotationDelta","touch0","touch1","PinchZoom","lastDistance_","lastScaleDelta_","scaleDelta","altShiftDragRotate","doubleClickZoom","zoomDelta","zoomDuration","dragPan","onFocusOnly","pinchRotate","pinchZoom","keyboard","mouseWheelZoom","shiftDragZoom","RenderEvent","opt_inversePixelTransform","opt_context","inversePixelTransform","HEX_COLOR_RE_","NAMED_COLOR_RE_","asString","color","fromNamed","body","rgb","fromString","cacheSize","g","exec","hasAlpha","substr","normalize","Number","fromStringInternal_","asArray","IconImageCache","cache_","cacheSize_","maxCacheSize_","canExpireCache","expire","iconImage","src","crossOrigin","maxCacheSize","shared","asColorLike","measureFont","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","LRUCache","opt_highWaterMark","highWaterMark","count_","entries_","oldest_","newest_","containsKey","entry","value_","key_","newer","older","peekLast","peekLastKey","peekFirstKey","LabelCache","consumers","consumer","consumerId","prune","outer","release","defaultLineDash","defaultPadding","labelCache","checkedFonts","measureContext","textHeights","checkFont","interval","referenceWidth","retries","checked","referenceFonts","text","isAvailable","getMeasureContext","available","referenceFont","measureText","check","done","clearInterval","fontSpec","setInterval","div","heights","measureTextHeight","margin","measureTextWidth","rotateAtOffset","offsetX","offsetY","resetTransform","drawImage","image","originX","originY","alpha","globalAlpha","setTransform","CanvasImmediateRenderer","viewRotation","opt_squaredTolerance","opt_userTransform","context_","viewRotation_","squaredTolerance_","userTransform_","contextFillState_","contextStrokeState_","contextTextState_","fillState_","strokeState_","image_","imageAnchorX_","imageAnchorY_","imageHeight_","imageOpacity_","imageOriginX_","imageOriginY_","imageRotateWithView_","imageRotation_","imageScale_","imageWidth_","text_","textOffsetX_","textOffsetY_","textRotateWithView_","textRotation_","textScale_","textFillState_","textStrokeState_","textState_","pixelCoordinates_","tmpLocalTransform_","drawImages_","pixelCoordinates","localTransform","drawText_","setContextFillState_","setContextStrokeState_","setContextTextState_","strokeText","fillText","moveToLineTo_","close","moveTo","lineTo","closePath","drawRings_","simpleGeometry","transformGeom2D","beginPath","arc","fill","stroke","getFill","getStroke","getImage","getText","getGeometryFunction","geometries","getGeometriesArray","flatMidpoint","getFlatMidpoint","geometryExtent","flatMidpoints","getFlatMidpoints","flatInteriorPoint","getEndss","flatInteriorPoints","getFlatInteriorPoints","fillState","contextFillState","strokeState","contextStrokeState","lineCap","setLineDash","lineDash","lineDashOffset","lineJoin","lineWidth","miterLimit","textState","contextTextState","textAlign","textBaseline","fillStyleColor","getColor","strokeStyleColor","strokeStyleLineCap","getLineCap","strokeStyleLineDash","getLineDash","strokeStyleLineDashOffset","getLineDashOffset","strokeStyleLineJoin","getLineJoin","strokeStyleWidth","strokeStyleMiterLimit","getMiterLimit","imageAnchor","getAnchor","imageImage","imageOrigin","getOrigin","imageSize","getRotateWithView","getScale","textFillStyle","textFillStyleColor","textStrokeStyle","textStrokeStyleColor","textStrokeStyleLineCap","textStrokeStyleLineDash","textStrokeStyleLineDashOffset","textStrokeStyleLineJoin","textStrokeStyleWidth","textStrokeStyleMiterLimit","textFont","getFont","textOffsetX","getOffsetX","textOffsetY","getOffsetY","textRotateWithView","textRotation","textScale","textText","textTextAlign","getTextAlign","textTextBaseline","getTextBaseline","DEFAULT","IMAGE","TEXT","SIMPLIFY_TOLERANCE","GEOMETRY_RENDERERS","builderGroup","getImageState","ImageState","imageReplay","getBuilder","BuilderType","addDeclutter","textReplay","lineStringReplay","polygonReplay","replayGroup","geometryRenderer","circleReplay","defaultOrder","feature1","feature2","getSquaredTolerance","getTolerance","renderFeature","imageState","unlistenImageChange","listenImageChange","renderGeometry","getGeometries","replay","renderFeatureInternal","renderDeclutterItems","declutterTree","items","zIndexItems","renderDeclutter","expireIconCache","MapRenderer","declutterTree_","calculateMatrices2D","thisArg2","translatedCoordinate","offsets","projectionExtent","worldWidth","declutteredFeatures","numLayers","tmpCoord","getWrapX","callback_1","scheduleExpireIconCache","Composite","CompositeMapRenderer","labelCacheKey_","insertBefore","firstChild","children_","previousElement","oldChildren","childNodes","oldChild","newChild","replaceChildren","getDataAtPixel","BOTTOM_CENTER","CENTER_LEFT","CENTER_CENTER","CENTER_RIGHT","TOP_CENTER","ELEMENT","MAP","OFFSET","POSITIONING","Overlay","insertFirst","autoPan","autoPanAnimation","autoPanMargin","rendered","bottom_","left_","right_","top_","mapPostrenderListenerKey","handleElementChanged","handleMapChanged","handleOffsetChanged","handlePositionChanged","handlePositioningChanged","setElement","setOffset","setPositioning","positioning","OverlayPositioning","setPosition","getElement","getOffset","getPositioning","updatePixelPosition","panIntoView","mapRect","getRect","overlayRect","offsetLeft","offsetRight","offsetTop","offsetBottom","centerPx","newCenterPx","box","pageXOffset","pageYOffset","mapSize","updateRenderedPosition","bottom","top_1","getOptions","ARRAY_BUFFER","JSON","XML","withCredentials","loadFeaturesXhr","url","format","success","failure","xhr","XMLHttpRequest","open","FormatType","responseType","onload","status","responseText","responseXML","DOMParser","parseFromString","readFeatures","featureProjection","readProjection","onerror","send","dataProjection","addFeatures","TileRange","tileCoord","containsTileRange","tileRange","opt_tileCoord","getKeyZXY","hash","tmpTileCoord","TileGrid","opt_strict","compare","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","DOCUMENT","implementation","createDocument","XML_SCHEMA_INSTANCE_URI","createElementNS","namespaceURI","qualifiedName","getAllTextContent","normalizeWhitespace","getAllTextContent_","accumulator","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","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","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","attr","getByteSizeFromType","BYTES_PER_ELEMENT","Uint16Array","WebGLHelper","boundHandleWebGLContextLost_","handleWebGLContextLost","boundHandleWebGLContextRestored_","handleWebGLContextRestored","canvas_","bufferCache_","currentProgram_","getSupportedExtensions","getExtension","ContextEventType","offsetRotateMatrix_","offsetScaleMatrix_","tmpMat4_","uniformLocations_","attribLocations_","name_1","postProcessPasses_","postProcesses","shaderCompileErrors_","bufferKey","bufferCache","webGlBuffer","flushBufferData","deleteBuffer","bufferCacheEntry","isContextLost","prepareDraw","getCanvas","applyFrameState","prepareDrawToRenderTarget","renderTarget","opt_disableAlphaBlend","getFramebuffer","getTexture","ZERO","drawElements","elementType","numItems","offsetInBytes","finalizeDraw","offsetScaleMatrix","offsetRotateMatrix","setUniformMatrixValue","setUniformFloatValue","HTMLImageElement","program","shader","getProgram","fragmentShaderSource","vertexShaderSource","getShaderInfoLog","getShaderCompileErrors","getAttributeLocation","makeProjectionTransform","uniformMatrix4fv","enableAttributeArray_","attribName","enableAttributes","opt_data","opt_texture","tmpArray4","WebGLRenderTarget","helper","helper_","texture_","framebuffer_","size_","data_","dataCacheDirty_","updateSize_","clearCachedData","readAll","readPixels","readPixel","WMTSTileGrid","matrixIds_","matrixIds","getMatrixId","getMatrixIds","createFromCapabilitiesMatrixSet","matrixSet","opt_matrixLimits","matrixLimits","switchOriginXY","elt","elt_ml","tileWidth","tileHeight","ImageStyle","opacity_","rotateWithView_","rotateWithView","scale_","getHitDetectionImage","getImageSize","getHitDetectionImageSize","setRotateWithView","setScale","RegularShape","hitDetectionCanvas_","fill_","points","radius_","radius1","radius2_","radius2","stroke_","imageSize_","hitDetectionImageSize_","getPoints","getRadius2","strokeWidth","renderOptions","draw_","createHitDetectionCanvas_","angle0","radiusC","drawHitDetectionCanvas_","CircleStyle","setRadius","Fill","color_","setColor","FRACTION","ImageBase","getPixelRatio","listenImage","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","white","blue","LINE","DEFAULT_FILL_COLOR","Text","font_","textAlign_","textBaseline_","maxAngle_","maxAngle","placement_","placement","TextPlacement","overflow_","offsetX_","offsetY_","backgroundFill_","backgroundFill","backgroundStroke_","backgroundStroke","padding_","getPlacement","getMaxAngle","getOverflow","getBackgroundFill","getBackgroundStroke","getPadding","setOverflow","setFont","setMaxAngle","setOffsetX","setOffsetY","setPlacement","setTextAlign","setTextBaseline","setBackgroundFill","setBackgroundStroke","setPadding","zRegEx","xRegEx","yRegEx","dashYRegEx","range","createFromTemplates","templates","tileUrlFunctions","createFromTileUrlFunctions","nullTileUrlFunction","expandUrl","urls","match","startCharCode","stopCharCode","stop_1","jsonp","opt_errback","opt_callbackParam","script","async","timer","getElementsByTagName","ERROR_THRESHOLD","Tile","interimTile","transition_","transition","transitionStarts_","setState","getInterimTile","refreshInterimChain","getTileCoord","getAlpha","inTransition","endTransition","getBlankImage","ImageTile","tileLoadFunction","tileLoadFunction_","naturalWidth","naturalHeight","TileCache","expireCache","pruneExceptNewestZ","fromKey","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","save","p0","p1","p2","clip","restore","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","unlistenSources_","reproject_","leftToLoad_1","sourceListenKey_1","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","bbox","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","RBush","opt_maxEntries","rbush_","items_","extents","getAll","getInExtent","forEach_","forEachInExtent","rbush","VectorSourceEvent","opt_feature","Vector","VectorSource","loader_","format_","overlaps_","overlaps","url_","loader","strategy_","strategy","collection","useSpatialIndex","featuresRtree_","loadedExtentsRtree_","nullGeometryFeatures_","idIndex_","uidIndex_","featureChangeKeys_","featuresCollection_","addFeaturesInternal","bindFeaturesCollection_","addFeature","addFeatureInternal","featureKey","addToIndex_","setupChangeEvents_","VectorEventType","handleFeatureChange_","valid","newFeatures","geometryFeatures","length_1","length_2","length_3","modifyingCollection","removeFeature","opt_fast","featureId","removeFeatureInternal","clearEvent","forEachFeature","forEachFeatureAtCoordinateDirect","forEachFeatureInExtent","forEachFeatureIntersectingExtent","getFeaturesCollection","getFeaturesAtCoordinate","getFeaturesInExtent","getClosestFeatureToCoordinate","opt_filter","closestFeature","previousMinSquaredDistance","minDistance","getFeatureById","getFeatureByUid","getFormat","getOverlaps","getUrl","sid","removeFromIdIndex_","hasFeature","loadFeatures","loadedExtentsRtree","extentsToLoad","_loop_1","extentToLoad","this_1","removeLoadedExtent","removed","setLoader","Cluster","geometryFunction","cluster","setDistance","mapDistance","clustered","neighbors","neighbor","createCluster","TierSizeCalculation","TRUNCATED","CustomTile","zoomifyImage_","Zoomify","tierSizeCalculation","tierSizeInTiles","tileSizeForTierSizeCalculation","tileCountUpToTier","tileCoordZ","tileIndex","tileSize_1","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","acc","extraFeatures","extraQualities","IIIFInfo","setImageInfo","getImageApiVersion","getComplianceLevelEntryFromProfile","version","test","getComplianceLevelFromProfile","complianceLevel","level","getTileSourceOptions","opt_preferredOptions","imageOptions","quality","formatPercentage","percentage","toLocaleString","maximumFractionDigits","IIIF","baseUrl","lastIndexOf","supportsListedSizes","supportsListedTiles","isInteger","supportsArbitraryTiling","maxScaleFactor","ignoredSizesIndex","IiifTileClass","regionParam","sizeParam","tileX","tileY","regionX","regionY","regionW","regionH","sizeW","sizeH","regionWidth","regionHeight","ReprojImage","getImageFunction","sourceImage","sourcePixelRatio","targetExtent_","sourceImage_","sourcePixelRatio_","sourceListenerKey_","unlistenSource_","ImageSourceEventType","ImageSourceEvent","defaultImageLoadFunction","ImageSource","reprojectedImage_","reprojectedRevision_","findNearestResolution","getImageInternal","handleImageChange","appendParams","uri","params","keyParams","encodeURIComponent","qs","ImageArcGISRest","params_","renderedRevision_","ratio_","getParams","halfWidth","halfHeight","imageResolution","getRequestUrl_","getImageLoadFunction","srid","modifiedUrl","setImageLoadFunction","updateParams","ImageCanvas","opt_loader","error_","getError","handleLoad_","ImageCanvasSource","canvasFunction_","canvasFunction","canvasElement","ImageMapGuide","displayDpi_","displayDpi","useOverlay_","useOverlay","dpi","mcsW","mcsH","devW","devH","mpp","baseParams","Static","imageExtent_","imageExtent","getImageExtent","targetWidth","DEFAULT_WMS_VERSION","GETFEATUREINFO_IMAGE_SIZE","ImageWMS","v13_","updateV13_","serverType_","getFeatureInfoUrl","projectionObj","sourceProjectionObj","getLegendUrl","mpu","viewExtent","requestExtent","WMSServerType","ATTRIBUTION","OSM","BaseImage","BaseImageLayer","LayerRenderer","boundHandleImageChange_","handleImageChange_","layer_","loadedTileCallback","createLoadedTileFinder","getLayer","renderIfReadyAndVisible","loadImage","CanvasLayerRenderer","renderedResolution","tempTransform_","pixelTransform","containerReused","createTransformStringCanvas_","useContainer","layerClassName","transformOrigin","topLeft","topRight","bottomRight","bottomLeft","clipUnrotated","inverted","dispatchRenderEvent_","preRender","postRender","getRenderTransform","renderPixel","createTransformString","CanvasImageLayerRenderer","imageLayer","viewResolution","imageSource","renderedExtent","imagePixelRatio","viewCenter","size_1","canvasTransform","clearRect","clipped","layerExtent","dw","dh","previousAlpha","ImageLayer","BaseTile","BaseTileLayer","preload","useInterimTilesOnError","setPreload","setUseInterimTilesOnError","getPreload","TileProperty","getUseInterimTilesOnError","CanvasTileLayerRenderer","tileLayer","extentChanged","renderedExtent_","renderedPixelRatio","renderedProjection","renderedRevision","renderedTiles","newTiles_","tmpExtent","tmpTileRange_","isDrawableTile","tileSource","sourceRevision","canvasExtent","tilesToDrawByZ","findLoadedTiles","tmpTileRange","childTileRange","canvasScale","clips","clipZs","currentClip","zs","currentZ","currentTilePixelSize","currentScale","dx_1","dy_1","originTileCoord","originTileExtent","origin_1","tileGutter","tilesToDraw","floatX","nextX","floatY","nextY","i_1","drawTileImage","updateUsedTiles","manageTilePyramid","updateCacheSize_","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","VectorRenderTile","getSourceTiles","removeSourceTiles","executorGroups","loadingSourceTiles","errorSourceTileKeys","hitDetectionImageData","replayState_","wantedResolution","removeSourceTiles_","sourceTileListenerKeys","sourceZ","hasContext","getReplayState","dirty","renderedRenderOrder","renderedTileResolution","renderedTileRevision","renderedZ","renderedTileZ","VectorTile","features_","onLoad","setFeatures","onError","defaultLoadFunction","loadingTiles_","sourceTileByCoordKey_","sourceTilesByTileKey_","tileGrids_","sourceTiles","loadedZ","previousSourceTiles","sourceTileCoord","sourceTile","coordKey","key_1","sourceTileKey","errorTileCount","addSourceTiles","empty","KVP","REST","WMTS","requestEncoding","WMTSRequestEncoding","version_","dimensions_","dimensions","matrixSet_","requestEncoding_","getKeyForDimensions_","createFromWMTSTemplate","getDimensions","getMatrixSet","getRequestEncoding","getVersion","updateDimensions","WebGLWorkerMessageType","GENERATE_BUFFERS","WebGLLayerRenderer","BaseVector","BaseVectorLayer","renderBuffer","updateWhileAnimating","updateWhileInteracting","declutter_","declutter","renderBuffer_","updateWhileAnimating_","updateWhileInteracting_","getDeclutter","getRenderBuffer","getRenderOrder","getUpdateWhileAnimating","getUpdateWhileInteracting","setRenderOrder","renderOrder","styleFunction","WebGLPointsLayerRenderer","projectionMatrixTransform","sourceRevision_","verticesBuffer_","hitVerticesBuffer_","indicesBuffer_","program_","hitDetectionEnabled_","hitFragmentShader","hitVertexShader","hitProgram_","customAttributes","attribute","hitDetectionAttributes","currentTransform_","renderTransform_","invertRenderTransform_","renderInstructions_","hitRenderInstructions_","hitRenderTarget_","received","projectionTransform","hitDetection","vertexBuffer","indexBuffer","renderInstructions","featureCache_","featureCount_","sourceListenKeys_","handleSourceFeatureAdded_","handleSourceFeatureChanged_","handleSourceFeatureDelete_","renderCount","renderHitDetection","vectorSource","viewNotMoving","sourceChanged","rebuildBuffers_","featureCache","totalInstructionsCount","totalHitInstructionsCount","hitColor","tmpCoords","tmpColor","renderIndex","hitIndex","featureUid","radix","customAttributesCount","hitMessage","colorDecodeId","terminate","Instruction","BEGIN_GEOMETRY","BEGIN_PATH","CLOSE_PATH","CUSTOM","DRAW_CHARS","DRAW_IMAGE","END_GEOMETRY","FILL","MOVE_TO_LINE_TO","SET_FILL_STYLE","SET_STROKE_STYLE","STROKE","beginPathInstruction","closePathInstruction","CanvasBuilder","maxLineWidth","beginGeometryInstruction1_","beginGeometryInstruction2_","bufferedMaxExtent_","instructions","tmpCoordinate_","hitDetectionInstructions","applyPixelRatio","dashArray","dash","appendFlatCoordinates","closed","skipFirst","myEnd","getBufferedMaxExtent","lastRel","nextRel","lastXCoord","lastYCoord","nextCoord","skipped","drawCustomCoordinates_","builderEnds","builderEnd","beginGeometry","builderEndss","builderBegin","myEnds","endGeometry","reverseHitDetectionInstructions","instruction","createFill","fillInstruction","applyStroke","createStroke","updateFillStyle","currentFillStyle","updateStrokeStyle","currentStrokeStyle","currentLineCap","currentLineDash","currentLineDashOffset","currentLineJoin","currentLineWidth","currentMiterLimit","endGeometryInstruction","CanvasImageBuilder","declutterGroups_","anchorX_","anchorY_","height_","originX_","originY_","drawCoordinates_","myBegin","declutterGroups","hitDetectionImage","CanvasLineStringBuilder","drawFlatCoordinates_","moveToLineToInstruction","lastStroke","CanvasPolygonBuilder","drawFlatCoordinatess_","numEnds","setFillStrokeStyles_","circleInstruction","matchingChunk","m12","m23","x12","y12","x23","y23","chunkStart","chunkEnd","chunkM","acos","TEXT_ALIGN","BATCH_CONSTRUCTORS","PolygonBuilder","Builder","ImageBuilder","LineStringBuilder","CanvasTextBuilder","labels_","fillStates","strokeStates","textStates","textKey_","fillKey_","strokeKey_","geometryType","flatOffset","flatEnd","oo","declutterGroup","drawChars_","geometryWidths","saveTextStates_","pixelRatio_1","strokeKey","textKey","fillKey","baseline","BuilderGroup","tolerance_","maxExtent_","resolution_","buildersByZIndex_","group","builderInstructions","zKey","builders","builderKey","builderInstruction","builderType","zIndexKey","replays","Constructor","lineStringLength","drawTextOnPath","startM","measureAndCacheTextWidth","previousAngle","numChars","segmentM","angleChanged","char","charLength","charM","segmentPos","interpolate","p3","p4","Executor","alignFill_","coordinateCache_","renderedTransform_","widths_","getTextImage","align","numLines","widths","currentWidth","measureTextWidths","lineHeight","renderWidth","leftRight","replayTextBackground_","strokeInstruction","setStrokeStyle_","replayImage_","snapToPixel","fillStroke","boxW","boxH","boxX","boxY","strokePadding","declutterArgs","repeatSize","groupCount","declutterData","currentAlpha","drawTextImageWithPointPlacement_","execute_","featureCallback","opt_hitExtent","dd","prevX","prevY","roundX","roundY","pendingFill","pendingStroke","lastFillInstruction","lastStrokeInstruction","coordinateCache","viewRotationFromTransform","batchSize","labelWithAnchor","widthIndex","declutterGroupIndex","measurePixelRatio","pixelRatioScale","cachedWidths","pathLength","textLength","parts","cc","chars","part","execute","executeHitDetection","opt_featureCallback","ORDER","ExecutorGroup","allInstructions","opt_renderBuffer","executorsByZIndex_","hitDetectionContext_","hitDetectionTransform_","createExecutors_","flatClipCoords","getClipCoords","executors","instructionByZindex","hasExecutors","candidates","contextSize","hitExtent","circleArrayCache","arraySize","fillCircleArrayRowToMiddle","getCircleArray","j_1","result_1","executor","opt_builderTypes","opt_declutterReplays","builderTypes","0","replayDeclutter","declutterReplays","zz","executorData","currentExecutor","createHitDetectionImageData","transforms","imageSmoothingEnabled","featureCount","indexFactor","featuresByZIndex","featureStyleFunction","originalStyle","canvas_1","imgContext","byGeometryType","zIndexKeys","geomAndStyle","kk","hitDetect","resultFeatures","CanvasVectorLayerRenderer","vectorLayer","boundHandleStyleImageChange_","handleStyleImageChange_","animatingOrInteracting_","dirty_","hitDetectionImageData_","renderedFeatures_","renderedResolution_","renderedRotation_","renderedCenter_","renderedProjection_","renderedRenderOrder_","replayGroup_","replayGroupChanged","makeScale","world","transform_2","viewHints_1","Promise","resolve","reject","layer_1","features_1","animating","interacting","frameStateExtent","vectorLayerRevision","vectorLayerRenderBuffer","vectorLayerRenderOrder","userTransform","userExtent","replayGroupInstructions","executorGroup","CanvasVectorImageLayerRenderer","vectorRenderer_","layerImageRatio_","getImageRatio","coordinateToVectorPixelTransform_","renderedPixelToCoordinateTransform_","vectorPixel","vectorRenderer","imageFrameState_1","image_1","HYBRID","IMAGE_REPLAYS","VECTOR_REPLAYS","CanvasVectorTileLayerRenderer","renderedLayerRevision_","renderTileImageQueue_","tileListenerKeys_","tmpTransform_","prepareTile","tileUid","updateExecutorGroup_","tileImageNeedsRender_","listenerKey","renderTileImage_","layerRevision","builderState","layerUid","tt","sourceTileExtent","sharedExtent","bufferedExtent","executorGroupInstructions","replayExtent","renderingReplayGroup","found","_loop_2","tileContainsCoordinate","extent_1","tilePixel","rotation_1","transforms_1","renderQueuedTileImages_","renderMode","getRenderMode","VectorTileRenderType","replayTypes","worldOffset","replayState","renderPixelRatio","renderScale","pixelScale","VectorLayer","interpolatePoint","pointY","cumulativeLengths","haystack","needle","opt_comparator","mid","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","featurePool_","lineStyle_","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","DrawEventType","DrawEvent","Draw","shouldHandle_","downPx_","downTimeout_","lastDragTime_","freehand_","snapTolerance_","snapTolerance","type_","getMode","stopClick_","stopClick","minPoints_","minPoints","maxPoints_","maxPoints","finishCondition_","finishCondition","opt_geometry","squaredLength","Constructor_1","mode_1","dragVertexDelay_","dragVertexDelay","finishCoordinate_","sketchFeature_","sketchPoint_","sketchCoords_","sketchLine_","sketchLineCoords_","squaredClickTolerance_","clickTolerance","overlay_","geometryName","freehandCondition_","freehand","freehandCondition","updateState_","getOverlay","pass","addToDrawing_","startDrawing_","circleMode","finishDrawing","atFinish_","abortDrawing_","downPx","clickPx","modifyDrawing_","createOrUpdateSketchPoint_","at","potentiallyDone","potentiallyFinishCoordinates","sketchCoords","finishCoordinate","finishPixel","updateSketchFeatures_","sketchLineGeom","ring","removeLastPoint","sketchFeature","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_","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","feature_uid","segmentWriter","forEachFeatureAdd_","forEachFeatureRemove_","getFeatures_","snapTo","snapped","updateFeature_","featuresToUpdate","opt_unlisten","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_","XMLSerializer","doc","readFeatureFromDocument","readFeatureFromNode","readFeaturesFromDocument","readFeaturesFromNode","readGeometryFromDocument","readGeometryFromNode","readProjectionFromDocument","readProjectionFromNode","writeFeatureNode","serializeToString","writeFeaturesNode","writeGeometryNode","GMLNS","ONLY_WHITESPACE_RE","GMLBase","featureType","featureNS","srsName","schemaLocation","FEATURE_COLLECTION_PARSERS","namespace","readFeaturesInternal","child","ft","candidate","featureTypes","readFeatureElement","readGeometryElement","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","DEFAULT_STYLE_ARRAY","KML","defaultStyle_","defaultStyle","extractStyles_","extractStyles","writeStyles_","writeStyles","sharedStyles_","showPointNames_","showPointNames","readDocumentOrFolder_","readPlacemark_","readSharedStyle_","readSharedStyleMap_","styleUrl","sharedStyles","nameStyle","drawName","createNameStyleFunction","foundStyle","findStyle","styleValue","createFeatureStyleFunction","styleUri","baseURI","fs","readName","readNameFromDocument","readNameFromNode","name_2","readNetworkLinks","networkLinks","readNetworkLinksFromDocument","readNetworkLinksFromNode","readRegion","regions","readRegionFromDocument","readRegionFromNode","kml","xmlnsUri","textOffset","imageScale","foundText","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","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","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","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","Buffer","Helper","PostProcessingPass","RenderTarget"],"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(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=t||self).RBush=i()}(this,function(){\"use strict\";function t(t,r,e,a,h){!function t(n,r,e,a,h){for(;a>e;){if(a-e>600){var o=a-e+1,s=r-e+1,l=Math.log(o),f=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*f*(o-f)/o)*(s-o/2<0?-1:1),m=Math.max(e,Math.floor(r-s*f/o+u)),c=Math.min(a,Math.floor(r+(o-s)*f/o+u));t(n,r,m,c,h)}var p=n[r],d=e,x=a;for(i(n,e,r),h(n[a],p)>0&&i(n,e,a);d0;)x--}0===h(n[e],p)?i(n,e,x):i(n,++x,a),x<=r&&(e=x+1),r<=x&&(a=x-1)}}(t,r,e||0,a||t.length-1,h||n)}function i(t,i,n){var r=t[i];t[i]=t[n],t[n]=r}function n(t,i){return ti?1:0}var r=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function e(t,i,n){if(!n)return i.indexOf(t);for(var r=0;r=t.minX&&i.maxY>=t.minY}function p(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function d(i,n,r,e,a){for(var h=[n,r];h.length;)if(!((r=h.pop())-(n=h.pop())<=e)){var o=n+Math.ceil((r-n)/e/2)*e;t(i,o,n,r,a),h.push(n,o,o,r)}}return r.prototype.all=function(){return this._all(this.data,[])},r.prototype.search=function(t){var i=this.data,n=[];if(!c(t,i))return n;for(var r=this.toBBox,e=[];i;){for(var a=0;a=0&&e[i].children.length>this._maxEntries;)this._split(e,i),i--;this._adjustParentBBoxes(r,e,i)},r.prototype._split=function(t,i){var n=t[i],r=n.children.length,e=this._minEntries;this._chooseSplitAxis(n,e,r);var h=this._chooseSplitIndex(n,e,r),o=p(n.children.splice(h,n.children.length-h));o.height=n.height,o.leaf=n.leaf,a(n,this.toBBox),a(o,this.toBBox),i?t[i-1].children.push(o):this._splitRoot(n,o)},r.prototype._splitRoot=function(t,i){this.data=p([t,i]),this.data.height=t.height+1,this.data.leaf=!1,a(this.data,this.toBBox)},r.prototype._chooseSplitIndex=function(t,i,n){for(var r,e,a,o,s,l,u,m=1/0,c=1/0,p=i;p<=n-i;p++){var d=h(t,0,p,this.toBBox),x=h(t,p,n,this.toBBox),v=(e=d,a=x,o=void 0,s=void 0,l=void 0,u=void 0,o=Math.max(e.minX,a.minX),s=Math.max(e.minY,a.minY),l=Math.min(e.maxX,a.maxX),u=Math.min(e.maxY,a.maxY),Math.max(0,l-o)*Math.max(0,u-s)),M=f(d)+f(x);v=i;c--){var p=t.children[c];o(s,t.leaf?e(p):p),l+=u(s)}return l},r.prototype._adjustParentBBoxes=function(t,i,n){for(var r=n;r>=0;r--)o(i[r],t)},r.prototype._condense=function(t){for(var i=t.length-1,n=void 0;i>=0;i--)0===t[i].children.length?i>0?(n=t[i-1].children).splice(n.indexOf(t[i]),1):this.clear():a(t[i],this.toBBox)},r});\n","/*!\n * PEP v0.5.3 | https://github.com/jquery/PEP\n * Copyright jQuery Foundation and other contributors | http://jquery.org/license\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.PointerEventsPolyfill = factory());\n}(this, function () { 'use strict';\n\n /**\n * This is the constructor for new PointerEvents.\n *\n * New Pointer Events must be given a type, and an optional dictionary of\n * initialization properties.\n *\n * Due to certain platform requirements, events returned from the constructor\n * identify as MouseEvents.\n *\n * @constructor\n * @param {String} inType The type of the event to create.\n * @param {Object} [inDict] An optional dictionary of initial event properties.\n * @return {Event} A new PointerEvent of type `inType`, initialized with properties from `inDict`.\n */\n var MOUSE_PROPS = [\n 'bubbles',\n 'cancelable',\n 'view',\n 'screenX',\n 'screenY',\n 'clientX',\n 'clientY',\n 'ctrlKey',\n 'altKey',\n 'shiftKey',\n 'metaKey',\n 'button',\n 'relatedTarget',\n 'pageX',\n 'pageY'\n ];\n\n var MOUSE_DEFAULTS = [\n false,\n false,\n null,\n 0,\n 0,\n 0,\n 0,\n false,\n false,\n false,\n false,\n 0,\n null,\n 0,\n 0\n ];\n\n function PointerEvent(inType, inDict) {\n inDict = inDict || Object.create(null);\n\n var e = document.createEvent('Event');\n e.initEvent(inType, inDict.bubbles || false, inDict.cancelable || false);\n\n // define inherited MouseEvent properties\n // skip bubbles and cancelable since they're set above in initEvent()\n for (var i = 2, p; i < MOUSE_PROPS.length; i++) {\n p = MOUSE_PROPS[i];\n e[p] = inDict[p] || MOUSE_DEFAULTS[i];\n }\n e.buttons = inDict.buttons || 0;\n\n // Spec requires that pointers without pressure specified use 0.5 for down\n // state and 0 for up state.\n var pressure = 0;\n\n if (inDict.pressure !== undefined && e.buttons) {\n pressure = inDict.pressure;\n } else {\n pressure = e.buttons ? 0.5 : 0;\n }\n\n // add x/y properties aliased to clientX/Y\n e.x = e.clientX;\n e.y = e.clientY;\n\n // define the properties of the PointerEvent interface\n e.pointerId = inDict.pointerId || 0;\n e.width = inDict.width || 1;\n e.height = inDict.height || 1;\n e.pressure = pressure;\n e.tiltX = inDict.tiltX || 0;\n e.tiltY = inDict.tiltY || 0;\n e.twist = inDict.twist || 0;\n e.tangentialPressure = inDict.tangentialPressure || 0;\n e.pointerType = inDict.pointerType || '';\n e.hwTimestamp = inDict.hwTimestamp || 0;\n e.isPrimary = inDict.isPrimary || false;\n e.detail = 0;\n return e;\n }\n\n /**\n * This module implements a map of pointer states\n */\n var USE_MAP = window.Map && window.Map.prototype.forEach;\n var PointerMap = USE_MAP ? Map : SparseArrayMap;\n\n function SparseArrayMap() {\n this.array = [];\n this.size = 0;\n }\n\n SparseArrayMap.prototype = {\n set: function(k, v) {\n if (v === undefined) {\n return this.delete(k);\n }\n if (!this.has(k)) {\n this.size++;\n }\n this.array[k] = v;\n },\n has: function(k) {\n return this.array[k] !== undefined;\n },\n delete: function(k) {\n if (this.has(k)) {\n delete this.array[k];\n this.size--;\n }\n },\n get: function(k) {\n return this.array[k];\n },\n clear: function() {\n this.array.length = 0;\n this.size = 0;\n },\n\n // return value, key, map\n forEach: function(callback, thisArg) {\n return this.array.forEach(function(v, k) {\n callback.call(thisArg, v, k, this);\n }, this);\n }\n };\n\n var CLONE_PROPS = [\n\n // MouseEvent\n 'bubbles',\n 'cancelable',\n 'view',\n 'detail',\n 'screenX',\n 'screenY',\n 'clientX',\n 'clientY',\n 'ctrlKey',\n 'altKey',\n 'shiftKey',\n 'metaKey',\n 'button',\n 'relatedTarget',\n\n // DOM Level 3\n 'buttons',\n\n // PointerEvent\n 'pointerId',\n 'width',\n 'height',\n 'pressure',\n 'tiltX',\n 'tiltY',\n 'pointerType',\n 'hwTimestamp',\n 'isPrimary',\n\n // event instance\n 'type',\n 'target',\n 'currentTarget',\n 'which',\n 'pageX',\n 'pageY',\n 'timeStamp'\n ];\n\n var CLONE_DEFAULTS = [\n\n // MouseEvent\n false,\n false,\n null,\n null,\n 0,\n 0,\n 0,\n 0,\n false,\n false,\n false,\n false,\n 0,\n null,\n\n // DOM Level 3\n 0,\n\n // PointerEvent\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n '',\n 0,\n false,\n\n // event instance\n '',\n null,\n null,\n 0,\n 0,\n 0,\n 0\n ];\n\n var BOUNDARY_EVENTS = {\n 'pointerover': 1,\n 'pointerout': 1,\n 'pointerenter': 1,\n 'pointerleave': 1\n };\n\n var HAS_SVG_INSTANCE = (typeof SVGElementInstance !== 'undefined');\n\n /**\n * This module is for normalizing events. Mouse and Touch events will be\n * collected here, and fire PointerEvents that have the same semantics, no\n * matter the source.\n * Events fired:\n * - pointerdown: a pointing is added\n * - pointerup: a pointer is removed\n * - pointermove: a pointer is moved\n * - pointerover: a pointer crosses into an element\n * - pointerout: a pointer leaves an element\n * - pointercancel: a pointer will no longer generate events\n */\n var dispatcher = {\n pointermap: new PointerMap(),\n eventMap: Object.create(null),\n captureInfo: Object.create(null),\n\n // Scope objects for native events.\n // This exists for ease of testing.\n eventSources: Object.create(null),\n eventSourceList: [],\n /**\n * Add a new event source that will generate pointer events.\n *\n * `inSource` must contain an array of event names named `events`, and\n * functions with the names specified in the `events` array.\n * @param {string} name A name for the event source\n * @param {Object} source A new source of platform events.\n */\n registerSource: function(name, source) {\n var s = source;\n var newEvents = s.events;\n if (newEvents) {\n newEvents.forEach(function(e) {\n if (s[e]) {\n this.eventMap[e] = s[e].bind(s);\n }\n }, this);\n this.eventSources[name] = s;\n this.eventSourceList.push(s);\n }\n },\n register: function(element) {\n var l = this.eventSourceList.length;\n for (var i = 0, es; (i < l) && (es = this.eventSourceList[i]); i++) {\n\n // call eventsource register\n es.register.call(es, element);\n }\n },\n unregister: function(element) {\n var l = this.eventSourceList.length;\n for (var i = 0, es; (i < l) && (es = this.eventSourceList[i]); i++) {\n\n // call eventsource register\n es.unregister.call(es, element);\n }\n },\n contains: /*scope.external.contains || */function(container, contained) {\n try {\n return container.contains(contained);\n } catch (ex) {\n\n // most likely: https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n return false;\n }\n },\n\n // EVENTS\n down: function(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerdown', inEvent);\n },\n move: function(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointermove', inEvent);\n },\n up: function(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerup', inEvent);\n },\n enter: function(inEvent) {\n inEvent.bubbles = false;\n this.fireEvent('pointerenter', inEvent);\n },\n leave: function(inEvent) {\n inEvent.bubbles = false;\n this.fireEvent('pointerleave', inEvent);\n },\n over: function(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerover', inEvent);\n },\n out: function(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerout', inEvent);\n },\n cancel: function(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointercancel', inEvent);\n },\n leaveOut: function(event) {\n this.out(event);\n this.propagate(event, this.leave, false);\n },\n enterOver: function(event) {\n this.over(event);\n this.propagate(event, this.enter, true);\n },\n\n // LISTENER LOGIC\n eventHandler: function(inEvent) {\n\n // This is used to prevent multiple dispatch of pointerevents from\n // platform events. This can happen when two elements in different scopes\n // are set up to create pointer events, which is relevant to Shadow DOM.\n if (inEvent._handledByPE) {\n return;\n }\n var type = inEvent.type;\n var fn = this.eventMap && this.eventMap[type];\n if (fn) {\n fn(inEvent);\n }\n inEvent._handledByPE = true;\n },\n\n // set up event listeners\n listen: function(target, events) {\n events.forEach(function(e) {\n this.addEvent(target, e);\n }, this);\n },\n\n // remove event listeners\n unlisten: function(target, events) {\n events.forEach(function(e) {\n this.removeEvent(target, e);\n }, this);\n },\n addEvent: /*scope.external.addEvent || */function(target, eventName) {\n target.addEventListener(eventName, this.boundHandler);\n },\n removeEvent: /*scope.external.removeEvent || */function(target, eventName) {\n target.removeEventListener(eventName, this.boundHandler);\n },\n\n // EVENT CREATION AND TRACKING\n /**\n * Creates a new Event of type `inType`, based on the information in\n * `inEvent`.\n *\n * @param {string} inType A string representing the type of event to create\n * @param {Event} inEvent A platform event with a target\n * @return {Event} A PointerEvent of type `inType`\n */\n makeEvent: function(inType, inEvent) {\n\n // relatedTarget must be null if pointer is captured\n if (this.captureInfo[inEvent.pointerId]) {\n inEvent.relatedTarget = null;\n }\n var e = new PointerEvent(inType, inEvent);\n if (inEvent.preventDefault) {\n e.preventDefault = inEvent.preventDefault;\n }\n e._target = e._target || inEvent.target;\n return e;\n },\n\n // make and dispatch an event in one call\n fireEvent: function(inType, inEvent) {\n var e = this.makeEvent(inType, inEvent);\n return this.dispatchEvent(e);\n },\n /**\n * Returns a snapshot of inEvent, with writable properties.\n *\n * @param {Event} inEvent An event that contains properties to copy.\n * @return {Object} An object containing shallow copies of `inEvent`'s\n * properties.\n */\n cloneEvent: function(inEvent) {\n var eventCopy = Object.create(null);\n var p;\n for (var i = 0; i < CLONE_PROPS.length; i++) {\n p = CLONE_PROPS[i];\n eventCopy[p] = inEvent[p] || CLONE_DEFAULTS[i];\n\n // Work around SVGInstanceElement shadow tree\n // Return the element that is represented by the instance for Safari, Chrome, IE.\n // This is the behavior implemented by Firefox.\n if (HAS_SVG_INSTANCE && (p === 'target' || p === 'relatedTarget')) {\n if (eventCopy[p] instanceof SVGElementInstance) {\n eventCopy[p] = eventCopy[p].correspondingUseElement;\n }\n }\n }\n\n // keep the semantics of preventDefault\n if (inEvent.preventDefault) {\n eventCopy.preventDefault = function() {\n inEvent.preventDefault();\n };\n }\n return eventCopy;\n },\n getTarget: function(inEvent) {\n var capture = this.captureInfo[inEvent.pointerId];\n if (!capture) {\n return inEvent._target;\n }\n if (inEvent._target === capture || !(inEvent.type in BOUNDARY_EVENTS)) {\n return capture;\n }\n },\n propagate: function(event, fn, propagateDown) {\n var target = event.target;\n var targets = [];\n\n // Order of conditions due to document.contains() missing in IE.\n while (target != null && target !== document && !target.contains(event.relatedTarget)) {\n targets.push(target);\n target = target.parentNode;\n\n // Touch: Do not propagate if node is detached.\n if (!target) {\n return;\n }\n }\n if (propagateDown) {\n targets.reverse();\n }\n targets.forEach(function(target) {\n event.target = target;\n fn.call(this, event);\n }, this);\n },\n setCapture: function(inPointerId, inTarget, skipDispatch) {\n if (this.captureInfo[inPointerId]) {\n this.releaseCapture(inPointerId, skipDispatch);\n }\n\n this.captureInfo[inPointerId] = inTarget;\n this.implicitRelease = this.releaseCapture.bind(this, inPointerId, skipDispatch);\n document.addEventListener('pointerup', this.implicitRelease);\n document.addEventListener('pointercancel', this.implicitRelease);\n\n var e = new PointerEvent('gotpointercapture', { bubbles: true });\n e.pointerId = inPointerId;\n e._target = inTarget;\n\n if (!skipDispatch) {\n this.asyncDispatchEvent(e);\n }\n },\n releaseCapture: function(inPointerId, skipDispatch) {\n var t = this.captureInfo[inPointerId];\n if (!t) {\n return;\n }\n\n this.captureInfo[inPointerId] = undefined;\n document.removeEventListener('pointerup', this.implicitRelease);\n document.removeEventListener('pointercancel', this.implicitRelease);\n\n var e = new PointerEvent('lostpointercapture', { bubbles: true });\n e.pointerId = inPointerId;\n e._target = t;\n\n if (!skipDispatch) {\n this.asyncDispatchEvent(e);\n }\n },\n /**\n * Dispatches the event to its target.\n *\n * @param {Event} inEvent The event to be dispatched.\n * @return {Boolean} True if an event handler returns true, false otherwise.\n */\n dispatchEvent: /*scope.external.dispatchEvent || */function(inEvent) {\n var t = this.getTarget(inEvent);\n if (t) {\n return t.dispatchEvent(inEvent);\n }\n },\n asyncDispatchEvent: function(inEvent) {\n requestAnimationFrame(this.dispatchEvent.bind(this, inEvent));\n }\n };\n dispatcher.boundHandler = dispatcher.eventHandler.bind(dispatcher);\n\n var targeting = {\n shadow: function(inEl) {\n if (inEl) {\n return inEl.shadowRoot || inEl.webkitShadowRoot;\n }\n },\n canTarget: function(shadow) {\n return shadow && Boolean(shadow.elementFromPoint);\n },\n targetingShadow: function(inEl) {\n var s = this.shadow(inEl);\n if (this.canTarget(s)) {\n return s;\n }\n },\n olderShadow: function(shadow) {\n var os = shadow.olderShadowRoot;\n if (!os) {\n var se = shadow.querySelector('shadow');\n if (se) {\n os = se.olderShadowRoot;\n }\n }\n return os;\n },\n allShadows: function(element) {\n var shadows = [];\n var s = this.shadow(element);\n while (s) {\n shadows.push(s);\n s = this.olderShadow(s);\n }\n return shadows;\n },\n searchRoot: function(inRoot, x, y) {\n if (inRoot) {\n var t = inRoot.elementFromPoint(x, y);\n var st, sr;\n\n // is element a shadow host?\n sr = this.targetingShadow(t);\n while (sr) {\n\n // find the the element inside the shadow root\n st = sr.elementFromPoint(x, y);\n if (!st) {\n\n // check for older shadows\n sr = this.olderShadow(sr);\n } else {\n\n // shadowed element may contain a shadow root\n var ssr = this.targetingShadow(st);\n return this.searchRoot(ssr, x, y) || st;\n }\n }\n\n // light dom element is the target\n return t;\n }\n },\n owner: function(element) {\n var s = element;\n\n // walk up until you hit the shadow root or document\n while (s.parentNode) {\n s = s.parentNode;\n }\n\n // the owner element is expected to be a Document or ShadowRoot\n if (s.nodeType !== Node.DOCUMENT_NODE && s.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) {\n s = document;\n }\n return s;\n },\n findTarget: function(inEvent) {\n var x = inEvent.clientX;\n var y = inEvent.clientY;\n\n // if the listener is in the shadow root, it is much faster to start there\n var s = this.owner(inEvent.target);\n\n // if x, y is not in this root, fall back to document search\n if (!s.elementFromPoint(x, y)) {\n s = document;\n }\n return this.searchRoot(s, x, y);\n }\n };\n\n var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);\n var map = Array.prototype.map.call.bind(Array.prototype.map);\n var toArray = Array.prototype.slice.call.bind(Array.prototype.slice);\n var filter = Array.prototype.filter.call.bind(Array.prototype.filter);\n var MO = window.MutationObserver || window.WebKitMutationObserver;\n var SELECTOR = '[touch-action]';\n var OBSERVER_INIT = {\n subtree: true,\n childList: true,\n attributes: true,\n attributeOldValue: true,\n attributeFilter: ['touch-action']\n };\n\n function Installer(add, remove, changed, binder) {\n this.addCallback = add.bind(binder);\n this.removeCallback = remove.bind(binder);\n this.changedCallback = changed.bind(binder);\n if (MO) {\n this.observer = new MO(this.mutationWatcher.bind(this));\n }\n }\n\n Installer.prototype = {\n watchSubtree: function(target) {\n\n // Only watch scopes that can target find, as these are top-level.\n // Otherwise we can see duplicate additions and removals that add noise.\n //\n // TODO(dfreedman): For some instances with ShadowDOMPolyfill, we can see\n // a removal without an insertion when a node is redistributed among\n // shadows. Since it all ends up correct in the document, watching only\n // the document will yield the correct mutations to watch.\n if (this.observer && targeting.canTarget(target)) {\n this.observer.observe(target, OBSERVER_INIT);\n }\n },\n enableOnSubtree: function(target) {\n this.watchSubtree(target);\n if (target === document && document.readyState !== 'complete') {\n this.installOnLoad();\n } else {\n this.installNewSubtree(target);\n }\n },\n installNewSubtree: function(target) {\n forEach(this.findElements(target), this.addElement, this);\n },\n findElements: function(target) {\n if (target.querySelectorAll) {\n return target.querySelectorAll(SELECTOR);\n }\n return [];\n },\n removeElement: function(el) {\n this.removeCallback(el);\n },\n addElement: function(el) {\n this.addCallback(el);\n },\n elementChanged: function(el, oldValue) {\n this.changedCallback(el, oldValue);\n },\n concatLists: function(accum, list) {\n return accum.concat(toArray(list));\n },\n\n // register all touch-action = none nodes on document load\n installOnLoad: function() {\n document.addEventListener('readystatechange', function() {\n if (document.readyState === 'complete') {\n this.installNewSubtree(document);\n }\n }.bind(this));\n },\n isElement: function(n) {\n return n.nodeType === Node.ELEMENT_NODE;\n },\n flattenMutationTree: function(inNodes) {\n\n // find children with touch-action\n var tree = map(inNodes, this.findElements, this);\n\n // make sure the added nodes are accounted for\n tree.push(filter(inNodes, this.isElement));\n\n // flatten the list\n return tree.reduce(this.concatLists, []);\n },\n mutationWatcher: function(mutations) {\n mutations.forEach(this.mutationHandler, this);\n },\n mutationHandler: function(m) {\n if (m.type === 'childList') {\n var added = this.flattenMutationTree(m.addedNodes);\n added.forEach(this.addElement, this);\n var removed = this.flattenMutationTree(m.removedNodes);\n removed.forEach(this.removeElement, this);\n } else if (m.type === 'attributes') {\n this.elementChanged(m.target, m.oldValue);\n }\n }\n };\n\n function shadowSelector(s) {\n return 'body /shadow-deep/ ' + s;\n }\n function rule(v) {\n return '{ -ms-touch-action: ' + v + '; touch-action: ' + v + '; }';\n }\n var attrib2css = [\n { selector: '[touch-action=\"none\"]', value: 'none' },\n { selector: '[touch-action=\"auto\"]', value: 'auto' },\n { selector: '[touch-action~=\"pan-x\"]', value: 'pan-x' },\n { selector: '[touch-action~=\"pan-y\"]', value: 'pan-y' },\n { selector: '[touch-action~=\"pan-up\"]', value: 'pan-up' },\n { selector: '[touch-action~=\"pan-down\"]', value: 'pan-down' },\n { selector: '[touch-action~=\"pan-left\"]', value: 'pan-left' },\n { selector: '[touch-action~=\"pan-right\"]', value: 'pan-right' }\n ];\n var styles = '';\n\n // only install stylesheet if the browser has touch action support\n var hasNativePE = window.PointerEvent || window.MSPointerEvent;\n\n // only add shadow selectors if shadowdom is supported\n var hasShadowRoot = !window.ShadowDOMPolyfill && document.head.createShadowRoot;\n\n function applyAttributeStyles() {\n if (hasNativePE) {\n attrib2css.forEach(function(r) {\n styles += r.selector + rule(r.value) + '\\n';\n if (hasShadowRoot) {\n styles += shadowSelector(r.selector) + rule(r.value) + '\\n';\n }\n });\n\n var el = document.createElement('style');\n el.textContent = styles;\n document.head.appendChild(el);\n }\n }\n\n var pointermap = dispatcher.pointermap;\n\n // radius around touchend that swallows mouse events\n var DEDUP_DIST = 25;\n\n // left, middle, right, back, forward\n var BUTTON_TO_BUTTONS = [1, 4, 2, 8, 16];\n\n var HAS_BUTTONS = false;\n try {\n HAS_BUTTONS = new MouseEvent('test', { buttons: 1 }).buttons === 1;\n } catch (e) {}\n\n // handler block for native mouse events\n var mouseEvents = {\n POINTER_ID: 1,\n POINTER_TYPE: 'mouse',\n events: [\n 'mousedown',\n 'webkitmouseforcechanged',\n 'mousemove',\n 'mouseup',\n 'mouseover',\n 'mouseout'\n ],\n register: function(target) {\n dispatcher.listen(target, this.events);\n },\n unregister: function(target) {\n dispatcher.unlisten(target, this.events);\n },\n lastTouches: [],\n\n // collide with the global mouse listener\n isEventSimulatedFromTouch: function(inEvent) {\n var lts = this.lastTouches;\n var x = inEvent.clientX;\n var y = inEvent.clientY;\n for (var i = 0, l = lts.length, t; i < l && (t = lts[i]); i++) {\n\n // simulated mouse events will be swallowed near a primary touchend\n var dx = Math.abs(x - t.x);\n var dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DIST && dy <= DEDUP_DIST) {\n return true;\n }\n }\n },\n prepareEvent: function(inEvent) {\n var e = dispatcher.cloneEvent(inEvent);\n\n // forward mouse preventDefault\n var pd = e.preventDefault;\n e.preventDefault = function() {\n inEvent.preventDefault();\n pd();\n };\n e.pointerId = this.POINTER_ID;\n e.isPrimary = true;\n e.pointerType = this.POINTER_TYPE;\n if ('webkitForce' in inEvent) {\n e.pressure = inEvent.webkitForce - MouseEvent.WEBKIT_FORCE_AT_MOUSE_DOWN;\n }\n return e;\n },\n prepareButtonsForMove: function(e, inEvent) {\n var p = pointermap.get(this.POINTER_ID);\n\n // Update buttons state after possible out-of-document mouseup.\n if (inEvent.which === 0 || !p) {\n e.buttons = 0;\n } else {\n e.buttons = p.buttons;\n }\n inEvent.buttons = e.buttons;\n },\n mousedown: function(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var p = pointermap.get(this.POINTER_ID);\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) {\n e.buttons = BUTTON_TO_BUTTONS[e.button];\n if (p) { e.buttons |= p.buttons; }\n inEvent.buttons = e.buttons;\n }\n pointermap.set(this.POINTER_ID, inEvent);\n if (!p || p.buttons === 0) {\n dispatcher.down(e);\n } else {\n dispatcher.move(e);\n }\n }\n },\n\n // This is called when the user force presses without moving x/y\n webkitmouseforcechanged: function(inEvent) {\n this.mousemove(inEvent);\n },\n mousemove: function(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) { this.prepareButtonsForMove(e, inEvent); }\n e.button = -1;\n pointermap.set(this.POINTER_ID, inEvent);\n dispatcher.move(e);\n }\n },\n mouseup: function(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var p = pointermap.get(this.POINTER_ID);\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) {\n var up = BUTTON_TO_BUTTONS[e.button];\n\n // Produces wrong state of buttons in Browsers without `buttons` support\n // when a mouse button that was pressed outside the document is released\n // inside and other buttons are still pressed down.\n e.buttons = p ? p.buttons & ~up : 0;\n inEvent.buttons = e.buttons;\n }\n pointermap.set(this.POINTER_ID, inEvent);\n\n // Support: Firefox <=44 only\n // FF Ubuntu includes the lifted button in the `buttons` property on\n // mouseup.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1223366\n e.buttons &= ~BUTTON_TO_BUTTONS[e.button];\n if (e.buttons === 0) {\n dispatcher.up(e);\n } else {\n dispatcher.move(e);\n }\n }\n },\n mouseover: function(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) { this.prepareButtonsForMove(e, inEvent); }\n e.button = -1;\n pointermap.set(this.POINTER_ID, inEvent);\n dispatcher.enterOver(e);\n }\n },\n mouseout: function(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) { this.prepareButtonsForMove(e, inEvent); }\n e.button = -1;\n dispatcher.leaveOut(e);\n }\n },\n cancel: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.cancel(e);\n this.deactivateMouse();\n },\n deactivateMouse: function() {\n pointermap.delete(this.POINTER_ID);\n }\n };\n\n var captureInfo = dispatcher.captureInfo;\n var findTarget = targeting.findTarget.bind(targeting);\n var allShadows = targeting.allShadows.bind(targeting);\n var pointermap$1 = dispatcher.pointermap;\n\n // this should be long enough to ignore compat mouse events made by touch\n var DEDUP_TIMEOUT = 2500;\n var ATTRIB = 'touch-action';\n var INSTALLER;\n\n // bitmask for _scrollType\n var UP = 1;\n var DOWN = 2;\n var LEFT = 4;\n var RIGHT = 8;\n var AUTO = UP | DOWN | LEFT | RIGHT;\n\n // handler block for native touch events\n var touchEvents = {\n events: [\n 'touchstart',\n 'touchmove',\n 'touchforcechange',\n 'touchend',\n 'touchcancel'\n ],\n register: function(target) {\n INSTALLER.enableOnSubtree(target);\n },\n unregister: function() {\n\n // TODO(dfreedman): is it worth it to disconnect the MO?\n },\n elementAdded: function(el) {\n var a = el.getAttribute(ATTRIB);\n var st = this.touchActionToScrollType(a);\n if (typeof st === \"number\") {\n el._scrollType = st;\n dispatcher.listen(el, this.events);\n\n // set touch-action on shadows as well\n allShadows(el).forEach(function(s) {\n s._scrollType = st;\n dispatcher.listen(s, this.events);\n }, this);\n }\n },\n elementRemoved: function(el) {\n\n // In some cases, an element is removed before a touchend.\n // When this is the case, we should wait for the touchend before unlistening,\n // because we still want pointer events to bubble up after removing from DOM.\n if (pointermap$1.size > 0) {\n var evts = this.events;\n el.addEventListener('touchend', function() {\n el._scrollType = undefined;\n dispatcher.unlisten(el, evts);\n });\n } else {\n el._scrollType = undefined;\n dispatcher.unlisten(el, this.events);\n }\n\n // remove touch-action from shadow\n allShadows(el).forEach(function(s) {\n s._scrollType = undefined;\n dispatcher.unlisten(s, this.events);\n }, this);\n },\n elementChanged: function(el, oldValue) {\n var a = el.getAttribute(ATTRIB);\n var st = this.touchActionToScrollType(a);\n var oldSt = this.touchActionToScrollType(oldValue);\n\n // simply update scrollType if listeners are already established\n if (typeof st === \"number\" && typeof oldSt === \"number\") {\n el._scrollType = st;\n allShadows(el).forEach(function(s) {\n s._scrollType = st;\n }, this);\n } else if (typeof oldSt === \"number\") {\n this.elementRemoved(el);\n } else if (typeof st === \"number\") {\n this.elementAdded(el);\n }\n },\n scrollTypes: {\n UP: function(s) {\n return s.includes('pan-y') || s.includes('pan-up') ? UP : 0;\n },\n DOWN: function(s) {\n return s.includes('pan-y') || s.includes('pan-down') ? DOWN : 0;\n },\n LEFT: function(s) {\n return s.includes('pan-x') || s.includes('pan-left') ? LEFT : 0;\n },\n RIGHT: function(s) {\n return s.includes('pan-x') || s.includes('pan-right') ? RIGHT : 0;\n }\n },\n touchActionToScrollType: function(touchAction) {\n if (!touchAction) {\n return;\n }\n\n if (touchAction === \"auto\") {\n return AUTO;\n }\n\n if (touchAction === \"none\") {\n return 0;\n }\n\n var s = touchAction.split(' ');\n var st = this.scrollTypes;\n\n // construct a bitmask of allowed scroll directions\n return st.UP(s) | st.DOWN(s) | st.LEFT(s) | st.RIGHT(s);\n },\n POINTER_TYPE: 'touch',\n firstTouch: null,\n isPrimaryTouch: function(inTouch) {\n return this.firstTouch === inTouch.identifier;\n },\n setPrimaryTouch: function(inTouch) {\n\n // set primary touch if there no pointers, or the only pointer is the mouse\n if (pointermap$1.size === 0 || (pointermap$1.size === 1 && pointermap$1.has(1))) {\n this.firstTouch = inTouch.identifier;\n this.firstXY = { X: inTouch.clientX, Y: inTouch.clientY };\n this.scrolling = false;\n }\n },\n removePrimaryPointer: function(inPointer) {\n if (inPointer.isPrimary) {\n this.firstTouch = null;\n this.firstXY = null;\n }\n },\n typeToButtons: function(type) {\n var ret = 0;\n if (type === 'touchstart' || type === 'touchmove' || type === 'touchforcechange') {\n ret = 1;\n }\n return ret;\n },\n touchToPointer: function(inTouch) {\n var cte = this.currentTouchEvent;\n var e = dispatcher.cloneEvent(inTouch);\n\n // We reserve pointerId 1 for Mouse.\n // Touch identifiers can start at 0.\n // Add 2 to the touch identifier for compatibility.\n var id = e.pointerId = inTouch.identifier + 2;\n e.target = captureInfo[id] || findTarget(e);\n e.bubbles = true;\n e.cancelable = true;\n e.button = 0;\n e.buttons = this.typeToButtons(cte.type);\n e.width = (inTouch.radiusX || inTouch.webkitRadiusX || 0) * 2;\n e.height = (inTouch.radiusY || inTouch.webkitRadiusY || 0) * 2;\n e.pressure = inTouch.force !== undefined ?\n inTouch.force :\n inTouch.webkitForce !== undefined ?\n inTouch.webkitForce : undefined;\n e.isPrimary = this.isPrimaryTouch(inTouch);\n if (inTouch.altitudeAngle) {\n var tan = Math.tan(inTouch.altitudeAngle);\n var radToDeg = 180 / Math.PI;\n e.tiltX = Math.atan(Math.cos(inTouch.azimuthAngle) / tan) * radToDeg;\n e.tiltY = Math.atan(Math.sin(inTouch.azimuthAngle) / tan) * radToDeg;\n } else {\n e.tiltX = 0;\n e.tiltY = 0;\n }\n if (inTouch.touchType === 'stylus') {\n e.pointerType = 'pen';\n } else {\n e.pointerType = this.POINTER_TYPE;\n }\n\n // forward modifier keys\n e.altKey = cte.altKey;\n e.ctrlKey = cte.ctrlKey;\n e.metaKey = cte.metaKey;\n e.shiftKey = cte.shiftKey;\n\n // forward touch preventDefaults\n var self = this;\n e.preventDefault = function() {\n self.scrolling = false;\n self.firstXY = null;\n cte.preventDefault();\n };\n return e;\n },\n processTouches: function(inEvent, inFunction) {\n var tl = inEvent.changedTouches;\n this.currentTouchEvent = inEvent;\n for (var i = 0, t; i < tl.length; i++) {\n t = tl[i];\n inFunction.call(this, this.touchToPointer(t));\n }\n },\n\n // For single axis scrollers, determines whether the element should emit\n // pointer events or behave as a scroller\n shouldScroll: function(inEvent) {\n if (this.firstXY) {\n var ret;\n var st = inEvent.currentTarget._scrollType;\n if (st === 0) {\n\n // this element is a `touch-action: none`, should never scroll\n ret = false;\n } else if (st === AUTO) {\n\n // this element is a `touch-action: auto`, should always scroll\n ret = true;\n } else {\n var t = inEvent.changedTouches[0];\n\n var dy = t.clientY - this.firstXY.Y;\n var dya = Math.abs(dy);\n var dx = t.clientX - this.firstXY.X;\n var dxa = Math.abs(dx);\n\n var up = st & UP;\n var down = st & DOWN;\n var left = st & LEFT;\n var right = st & RIGHT;\n\n if (left && right) {\n\n // should scroll on the x axis\n ret = dxa > dya;\n } else if (left) {\n\n // should scroll left\n ret = dxa > dya && dx > 0;\n } else if (right) {\n\n // should scroll right\n ret = dxa > dya && dx < 0;\n }\n\n if (!ret) {\n if (up && down) {\n\n // should scroll on the y axis\n ret = dxa < dya;\n } else if (up) {\n\n // should scroll up\n ret = dxa < dya && dy > 0;\n } else if (down) {\n\n // should scroll down\n ret = dxa < dya && dy < 0;\n }\n }\n\n }\n this.firstXY = null;\n return ret;\n }\n },\n findTouch: function(inTL, inId) {\n for (var i = 0, l = inTL.length, t; i < l && (t = inTL[i]); i++) {\n if (t.identifier === inId) {\n return true;\n }\n }\n },\n\n // In some instances, a touchstart can happen without a touchend. This\n // leaves the pointermap in a broken state.\n // Therefore, on every touchstart, we remove the touches that did not fire a\n // touchend event.\n // To keep state globally consistent, we fire a\n // pointercancel for this \"abandoned\" touch\n vacuumTouches: function(inEvent) {\n var tl = inEvent.touches;\n\n // pointermap.size should be < tl.length here, as the touchstart has not\n // been processed yet.\n if (pointermap$1.size >= tl.length) {\n var d = [];\n pointermap$1.forEach(function(value, key) {\n\n // Never remove pointerId == 1, which is mouse.\n // Touch identifiers are 2 smaller than their pointerId, which is the\n // index in pointermap.\n if (key !== 1 && !this.findTouch(tl, key - 2)) {\n var p = value.out;\n d.push(p);\n }\n }, this);\n d.forEach(this.cancelOut, this);\n }\n },\n touchstart: function(inEvent) {\n this.vacuumTouches(inEvent);\n this.setPrimaryTouch(inEvent.changedTouches[0]);\n this.dedupSynthMouse(inEvent);\n if (!this.scrolling) {\n this.processTouches(inEvent, this.overDown);\n }\n },\n overDown: function(inPointer) {\n pointermap$1.set(inPointer.pointerId, {\n target: inPointer.target,\n out: inPointer,\n outTarget: inPointer.target\n });\n dispatcher.enterOver(inPointer);\n dispatcher.down(inPointer);\n },\n\n // Called when pressure or tilt changes without the x/y changing\n touchforcechange: function(inEvent) {\n this.touchmove(inEvent);\n },\n touchmove: function(inEvent) {\n if (!this.scrolling) {\n if (this.shouldScroll(inEvent)) {\n this.scrolling = true;\n this.touchcancel(inEvent);\n } else {\n if (inEvent.type !== 'touchforcechange') {\n inEvent.preventDefault();\n }\n this.processTouches(inEvent, this.moveOverOut);\n }\n }\n },\n moveOverOut: function(inPointer) {\n var event = inPointer;\n var pointer = pointermap$1.get(event.pointerId);\n\n // a finger drifted off the screen, ignore it\n if (!pointer) {\n return;\n }\n var outEvent = pointer.out;\n var outTarget = pointer.outTarget;\n dispatcher.move(event);\n if (outEvent && outTarget !== event.target) {\n outEvent.relatedTarget = event.target;\n event.relatedTarget = outTarget;\n\n // recover from retargeting by shadow\n outEvent.target = outTarget;\n if (event.target) {\n dispatcher.leaveOut(outEvent);\n dispatcher.enterOver(event);\n } else {\n\n // clean up case when finger leaves the screen\n event.target = outTarget;\n event.relatedTarget = null;\n this.cancelOut(event);\n }\n }\n pointer.out = event;\n pointer.outTarget = event.target;\n },\n touchend: function(inEvent) {\n this.dedupSynthMouse(inEvent);\n this.processTouches(inEvent, this.upOut);\n },\n upOut: function(inPointer) {\n if (!this.scrolling) {\n dispatcher.up(inPointer);\n dispatcher.leaveOut(inPointer);\n }\n this.cleanUpPointer(inPointer);\n },\n touchcancel: function(inEvent) {\n this.processTouches(inEvent, this.cancelOut);\n },\n cancelOut: function(inPointer) {\n dispatcher.cancel(inPointer);\n dispatcher.leaveOut(inPointer);\n this.cleanUpPointer(inPointer);\n },\n cleanUpPointer: function(inPointer) {\n pointermap$1.delete(inPointer.pointerId);\n this.removePrimaryPointer(inPointer);\n },\n\n // prevent synth mouse events from creating pointer events\n dedupSynthMouse: function(inEvent) {\n var lts = mouseEvents.lastTouches;\n var t = inEvent.changedTouches[0];\n\n // only the primary finger will synth mouse events\n if (this.isPrimaryTouch(t)) {\n\n // remember x/y of last touch\n var lt = { x: t.clientX, y: t.clientY };\n lts.push(lt);\n var fn = (function(lts, lt) {\n var i = lts.indexOf(lt);\n if (i > -1) {\n lts.splice(i, 1);\n }\n }).bind(null, lts, lt);\n setTimeout(fn, DEDUP_TIMEOUT);\n }\n }\n };\n\n INSTALLER = new Installer(touchEvents.elementAdded, touchEvents.elementRemoved,\n touchEvents.elementChanged, touchEvents);\n\n var pointermap$2 = dispatcher.pointermap;\n var HAS_BITMAP_TYPE = window.MSPointerEvent &&\n typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE === 'number';\n var msEvents = {\n events: [\n 'MSPointerDown',\n 'MSPointerMove',\n 'MSPointerUp',\n 'MSPointerOut',\n 'MSPointerOver',\n 'MSPointerCancel',\n 'MSGotPointerCapture',\n 'MSLostPointerCapture'\n ],\n register: function(target) {\n dispatcher.listen(target, this.events);\n },\n unregister: function(target) {\n dispatcher.unlisten(target, this.events);\n },\n POINTER_TYPES: [\n '',\n 'unavailable',\n 'touch',\n 'pen',\n 'mouse'\n ],\n prepareEvent: function(inEvent) {\n var e = inEvent;\n if (HAS_BITMAP_TYPE) {\n e = dispatcher.cloneEvent(inEvent);\n e.pointerType = this.POINTER_TYPES[inEvent.pointerType];\n }\n return e;\n },\n cleanup: function(id) {\n pointermap$2.delete(id);\n },\n MSPointerDown: function(inEvent) {\n pointermap$2.set(inEvent.pointerId, inEvent);\n var e = this.prepareEvent(inEvent);\n dispatcher.down(e);\n },\n MSPointerMove: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.move(e);\n },\n MSPointerUp: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.up(e);\n this.cleanup(inEvent.pointerId);\n },\n MSPointerOut: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.leaveOut(e);\n },\n MSPointerOver: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.enterOver(e);\n },\n MSPointerCancel: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.cancel(e);\n this.cleanup(inEvent.pointerId);\n },\n MSLostPointerCapture: function(inEvent) {\n var e = dispatcher.makeEvent('lostpointercapture', inEvent);\n dispatcher.dispatchEvent(e);\n },\n MSGotPointerCapture: function(inEvent) {\n var e = dispatcher.makeEvent('gotpointercapture', inEvent);\n dispatcher.dispatchEvent(e);\n }\n };\n\n function applyPolyfill() {\n\n // only activate if this platform does not have pointer events\n if (!window.PointerEvent) {\n window.PointerEvent = PointerEvent;\n\n if (window.navigator.msPointerEnabled) {\n var tp = window.navigator.msMaxTouchPoints;\n Object.defineProperty(window.navigator, 'maxTouchPoints', {\n value: tp,\n enumerable: true\n });\n dispatcher.registerSource('ms', msEvents);\n } else {\n Object.defineProperty(window.navigator, 'maxTouchPoints', {\n value: 0,\n enumerable: true\n });\n dispatcher.registerSource('mouse', mouseEvents);\n if (window.ontouchstart !== undefined) {\n dispatcher.registerSource('touch', touchEvents);\n }\n }\n\n dispatcher.register(document);\n }\n }\n\n var n = window.navigator;\n var s;\n var r;\n var h;\n function assertActive(id) {\n if (!dispatcher.pointermap.has(id)) {\n var error = new Error('NotFoundError');\n error.name = 'NotFoundError';\n throw error;\n }\n }\n function assertConnected(elem) {\n var parent = elem.parentNode;\n while (parent && parent !== elem.ownerDocument) {\n parent = parent.parentNode;\n }\n if (!parent) {\n var error = new Error('InvalidStateError');\n error.name = 'InvalidStateError';\n throw error;\n }\n }\n function inActiveButtonState(id) {\n var p = dispatcher.pointermap.get(id);\n return p.buttons !== 0;\n }\n if (n.msPointerEnabled) {\n s = function(pointerId) {\n assertActive(pointerId);\n assertConnected(this);\n if (inActiveButtonState(pointerId)) {\n dispatcher.setCapture(pointerId, this, true);\n this.msSetPointerCapture(pointerId);\n }\n };\n r = function(pointerId) {\n assertActive(pointerId);\n dispatcher.releaseCapture(pointerId, true);\n this.msReleasePointerCapture(pointerId);\n };\n } else {\n s = function setPointerCapture(pointerId) {\n assertActive(pointerId);\n assertConnected(this);\n if (inActiveButtonState(pointerId)) {\n dispatcher.setCapture(pointerId, this);\n }\n };\n r = function releasePointerCapture(pointerId) {\n assertActive(pointerId);\n dispatcher.releaseCapture(pointerId);\n };\n }\n h = function hasPointerCapture(pointerId) {\n return !!dispatcher.captureInfo[pointerId];\n };\n\n function applyPolyfill$1() {\n if (window.Element && !Element.prototype.setPointerCapture) {\n Object.defineProperties(Element.prototype, {\n 'setPointerCapture': {\n value: s\n },\n 'releasePointerCapture': {\n value: r\n },\n 'hasPointerCapture': {\n value: h\n }\n });\n }\n }\n\n applyAttributeStyles();\n applyPolyfill();\n applyPolyfill$1();\n\n var pointerevents = {\n dispatcher: dispatcher,\n Installer: Installer,\n PointerEvent: PointerEvent,\n PointerMap: PointerMap,\n targetFinding: targeting\n };\n\n return pointerevents;\n\n}));","'use strict';\n\nmodule.exports = Pbf;\n\nvar ieee754 = require('ieee754');\n\nfunction Pbf(buf) {\n this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0);\n this.pos = 0;\n this.type = 0;\n this.length = this.buf.length;\n}\n\nPbf.Varint = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nPbf.Fixed64 = 1; // 64-bit: double, fixed64, sfixed64\nPbf.Bytes = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nPbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32\n\nvar SHIFT_LEFT_32 = (1 << 16) * (1 << 16),\n SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\n// Threshold chosen based on both benchmarking and knowledge about browser string\n// data structures (which currently switch structure types at 12 bytes or more)\nvar TEXT_DECODER_MIN_LENGTH = 12;\nvar utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf8');\n\nPbf.prototype = {\n\n destroy: function() {\n this.buf = null;\n },\n\n // === READING =================================================================\n\n readFields: function(readField, result, end) {\n end = end || this.length;\n\n while (this.pos < end) {\n var val = this.readVarint(),\n tag = val >> 3,\n startPos = this.pos;\n\n this.type = val & 0x7;\n readField(tag, result, this);\n\n if (this.pos === startPos) this.skip(val);\n }\n return result;\n },\n\n readMessage: function(readField, result) {\n return this.readFields(readField, result, this.readVarint() + this.pos);\n },\n\n readFixed32: function() {\n var val = readUInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n readSFixed32: function() {\n var val = readInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n readFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readSFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readFloat: function() {\n var val = ieee754.read(this.buf, this.pos, true, 23, 4);\n this.pos += 4;\n return val;\n },\n\n readDouble: function() {\n var val = ieee754.read(this.buf, this.pos, true, 52, 8);\n this.pos += 8;\n return val;\n },\n\n readVarint: function(isSigned) {\n var buf = this.buf,\n val, b;\n\n b = buf[this.pos++]; val = b & 0x7f; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n b = buf[this.pos]; val |= (b & 0x0f) << 28;\n\n return readVarintRemainder(val, isSigned, this);\n },\n\n readVarint64: function() { // for compatibility with v2.0.1\n return this.readVarint(true);\n },\n\n readSVarint: function() {\n var num = this.readVarint();\n return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n },\n\n readBoolean: function() {\n return Boolean(this.readVarint());\n },\n\n readString: function() {\n var end = this.readVarint() + this.pos;\n var pos = this.pos;\n this.pos = end;\n\n if (end - pos >= TEXT_DECODER_MIN_LENGTH && utf8TextDecoder) {\n // longer strings are fast with the built-in browser TextDecoder API\n return readUtf8TextDecoder(this.buf, pos, end);\n }\n // short strings are fast with our custom implementation\n return readUtf8(this.buf, pos, end);\n },\n\n readBytes: function() {\n var end = this.readVarint() + this.pos,\n buffer = this.buf.subarray(this.pos, end);\n this.pos = end;\n return buffer;\n },\n\n // verbose for performance reasons; doesn't affect gzipped size\n\n readPackedVarint: function(arr, isSigned) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readVarint(isSigned));\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readVarint(isSigned));\n return arr;\n },\n readPackedSVarint: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSVarint());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSVarint());\n return arr;\n },\n readPackedBoolean: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readBoolean());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readBoolean());\n return arr;\n },\n readPackedFloat: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFloat());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFloat());\n return arr;\n },\n readPackedDouble: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readDouble());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readDouble());\n return arr;\n },\n readPackedFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed32());\n return arr;\n },\n readPackedSFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed32());\n return arr;\n },\n readPackedFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed64());\n return arr;\n },\n readPackedSFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed64());\n return arr;\n },\n\n skip: function(val) {\n var type = val & 0x7;\n if (type === Pbf.Varint) while (this.buf[this.pos++] > 0x7f) {}\n else if (type === Pbf.Bytes) this.pos = this.readVarint() + this.pos;\n else if (type === Pbf.Fixed32) this.pos += 4;\n else if (type === Pbf.Fixed64) this.pos += 8;\n else throw new Error('Unimplemented type: ' + type);\n },\n\n // === WRITING =================================================================\n\n writeTag: function(tag, type) {\n this.writeVarint((tag << 3) | type);\n },\n\n realloc: function(min) {\n var length = this.length || 16;\n\n while (length < this.pos + min) length *= 2;\n\n if (length !== this.length) {\n var buf = new Uint8Array(length);\n buf.set(this.buf);\n this.buf = buf;\n this.length = length;\n }\n },\n\n finish: function() {\n this.length = this.pos;\n this.pos = 0;\n return this.buf.subarray(0, this.length);\n },\n\n writeFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeSFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeSFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeVarint: function(val) {\n val = +val || 0;\n\n if (val > 0xfffffff || val < 0) {\n writeBigVarint(val, this);\n return;\n }\n\n this.realloc(4);\n\n this.buf[this.pos++] = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = (val >>> 7) & 0x7f;\n },\n\n writeSVarint: function(val) {\n this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n },\n\n writeBoolean: function(val) {\n this.writeVarint(Boolean(val));\n },\n\n writeString: function(str) {\n str = String(str);\n this.realloc(str.length * 4);\n\n this.pos++; // reserve 1 byte for short string length\n\n var startPos = this.pos;\n // write the string directly to the buffer and see how much was written\n this.pos = writeUtf8(this.buf, str, this.pos);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeFloat: function(val) {\n this.realloc(4);\n ieee754.write(this.buf, val, this.pos, true, 23, 4);\n this.pos += 4;\n },\n\n writeDouble: function(val) {\n this.realloc(8);\n ieee754.write(this.buf, val, this.pos, true, 52, 8);\n this.pos += 8;\n },\n\n writeBytes: function(buffer) {\n var len = buffer.length;\n this.writeVarint(len);\n this.realloc(len);\n for (var i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n },\n\n writeRawMessage: function(fn, obj) {\n this.pos++; // reserve 1 byte for short message length\n\n // write the message directly to the buffer and see how much was written\n var startPos = this.pos;\n fn(obj, this);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeMessage: function(tag, fn, obj) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeRawMessage(fn, obj);\n },\n\n writePackedVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedVarint, arr); },\n writePackedSVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSVarint, arr); },\n writePackedBoolean: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedBoolean, arr); },\n writePackedFloat: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFloat, arr); },\n writePackedDouble: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedDouble, arr); },\n writePackedFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed32, arr); },\n writePackedSFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed32, arr); },\n writePackedFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed64, arr); },\n writePackedSFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed64, arr); },\n\n writeBytesField: function(tag, buffer) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeBytes(buffer);\n },\n writeFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFixed32(val);\n },\n writeSFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeSFixed32(val);\n },\n writeFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeFixed64(val);\n },\n writeSFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeSFixed64(val);\n },\n writeVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeVarint(val);\n },\n writeSVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeSVarint(val);\n },\n writeStringField: function(tag, str) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeString(str);\n },\n writeFloatField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFloat(val);\n },\n writeDoubleField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeDouble(val);\n },\n writeBooleanField: function(tag, val) {\n this.writeVarintField(tag, Boolean(val));\n }\n};\n\nfunction readVarintRemainder(l, s, p) {\n var buf = p.buf,\n h, b;\n\n b = buf[p.pos++]; h = (b & 0x70) >> 4; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 3; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);\n\n throw new Error('Expected varint not more than 10 bytes');\n}\n\nfunction readPackedEnd(pbf) {\n return pbf.type === Pbf.Bytes ?\n pbf.readVarint() + pbf.pos : pbf.pos + 1;\n}\n\nfunction toNum(low, high, isSigned) {\n if (isSigned) {\n return high * 0x100000000 + (low >>> 0);\n }\n\n return ((high >>> 0) * 0x100000000) + (low >>> 0);\n}\n\nfunction writeBigVarint(val, pbf) {\n var low, high;\n\n if (val >= 0) {\n low = (val % 0x100000000) | 0;\n high = (val / 0x100000000) | 0;\n } else {\n low = ~(-val % 0x100000000);\n high = ~(-val / 0x100000000);\n\n if (low ^ 0xffffffff) {\n low = (low + 1) | 0;\n } else {\n low = 0;\n high = (high + 1) | 0;\n }\n }\n\n if (val >= 0x10000000000000000 || val < -0x10000000000000000) {\n throw new Error('Given varint doesn\\'t fit into 10 bytes');\n }\n\n pbf.realloc(10);\n\n writeBigVarintLow(low, high, pbf);\n writeBigVarintHigh(high, pbf);\n}\n\nfunction writeBigVarintLow(low, high, pbf) {\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos] = low & 0x7f;\n}\n\nfunction writeBigVarintHigh(high, pbf) {\n var lsb = (high & 0x07) << 4;\n\n pbf.buf[pbf.pos++] |= lsb | ((high >>>= 3) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f;\n}\n\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n var extraLen =\n len <= 0x3fff ? 1 :\n len <= 0x1fffff ? 2 :\n len <= 0xfffffff ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7));\n\n // if 1 byte isn't enough for encoding message length, shift the data to the right\n pbf.realloc(extraLen);\n for (var i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\nfunction writePackedVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]); }\nfunction writePackedSVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]); }\nfunction writePackedFloat(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]); }\nfunction writePackedDouble(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]); }\nfunction writePackedBoolean(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]); }\nfunction writePackedFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]); }\nfunction writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]); }\nfunction writePackedFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]); }\nfunction writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); }\n\n// Buffer code below from https://github.com/feross/buffer, MIT-licensed\n\nfunction readUInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] * 0x1000000);\n}\n\nfunction writeInt32(buf, val, pos) {\n buf[pos] = val;\n buf[pos + 1] = (val >>> 8);\n buf[pos + 2] = (val >>> 16);\n buf[pos + 3] = (val >>> 24);\n}\n\nfunction readInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] << 24);\n}\n\nfunction readUtf8(buf, pos, end) {\n var str = '';\n var i = pos;\n\n while (i < end) {\n var b0 = buf[i];\n var c = null; // codepoint\n var bytesPerSequence =\n b0 > 0xEF ? 4 :\n b0 > 0xDF ? 3 :\n b0 > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence > end) break;\n\n var b1, b2, b3;\n\n if (bytesPerSequence === 1) {\n if (b0 < 0x80) {\n c = b0;\n }\n } else if (bytesPerSequence === 2) {\n b1 = buf[i + 1];\n if ((b1 & 0xC0) === 0x80) {\n c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);\n if (c <= 0x7F) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 3) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);\n if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 4) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n b3 = buf[i + 3];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);\n if (c <= 0xFFFF || c >= 0x110000) {\n c = null;\n }\n }\n }\n\n if (c === null) {\n c = 0xFFFD;\n bytesPerSequence = 1;\n\n } else if (c > 0xFFFF) {\n c -= 0x10000;\n str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);\n c = 0xDC00 | c & 0x3FF;\n }\n\n str += String.fromCharCode(c);\n i += bytesPerSequence;\n }\n\n return str;\n}\n\nfunction readUtf8TextDecoder(buf, pos, end) {\n return utf8TextDecoder.decode(buf.subarray(pos, end));\n}\n\nfunction writeUtf8(buf, str, pos) {\n for (var i = 0, c, lead; i < str.length; i++) {\n c = str.charCodeAt(i); // code point\n\n if (c > 0xD7FF && c < 0xE000) {\n if (lead) {\n if (c < 0xDC00) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = c;\n continue;\n } else {\n c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n lead = null;\n }\n } else {\n if (c > 0xDBFF || (i + 1 === str.length)) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n } else {\n lead = c;\n }\n continue;\n }\n } else if (lead) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = null;\n }\n\n if (c < 0x80) {\n buf[pos++] = c;\n } else {\n if (c < 0x800) {\n buf[pos++] = c >> 0x6 | 0xC0;\n } else {\n if (c < 0x10000) {\n buf[pos++] = c >> 0xC | 0xE0;\n } else {\n buf[pos++] = c >> 0x12 | 0xF0;\n buf[pos++] = c >> 0xC & 0x3F | 0x80;\n }\n buf[pos++] = c >> 0x6 & 0x3F | 0x80;\n }\n buf[pos++] = c & 0x3F | 0x80;\n }\n }\n return pos;\n}\n","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.1.1';\n//# sourceMappingURL=util.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/AssertionError\n */\nimport { VERSION } from './util.js';\n/**\n * Error object thrown when an assertion failed. This is an ECMA-262 Error,\n * extended with a `code` property.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error.\n */\nvar AssertionError = /** @class */ (function (_super) {\n __extends(AssertionError, _super);\n /**\n * @param {number} code Error code.\n */\n function AssertionError(code) {\n var _this = this;\n var path = VERSION === 'latest' ? VERSION : 'v' + VERSION.split('-')[0];\n var message = 'Assertion failed. See https://openlayers.org/en/' + path +\n '/doc/errors/#' + code + ' for details.';\n _this = _super.call(this, message) || this;\n /**\n * Error code. The meaning of the code can be found on\n * https://openlayers.org/en/latest/doc/errors/ (replace `latest` with\n * the version found in the OpenLayers script's header comment if a version\n * other than the latest is used).\n * @type {number}\n * @api\n */\n _this.code = code;\n /**\n * @type {string}\n */\n _this.name = 'AssertionError';\n // Re-assign message, see https://github.com/Rich-Harris/buble/issues/40\n _this.message = message;\n return _this;\n }\n return AssertionError;\n}(Error));\nexport default AssertionError;\n//# sourceMappingURL=AssertionError.js.map","/**\n * @module ol/CollectionEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when an item is added to the collection.\n * @event module:ol/Collection.CollectionEvent#add\n * @api\n */\n ADD: 'add',\n /**\n * Triggered when an item is removed from the collection.\n * @event module:ol/Collection.CollectionEvent#remove\n * @api\n */\n REMOVE: 'remove'\n};\n//# sourceMappingURL=CollectionEventType.js.map","/**\n * @module ol/ObjectEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when a property is changed.\n * @event module:ol/Object.ObjectEvent#propertychange\n * @api\n */\n PROPERTYCHANGE: 'propertychange'\n};\n//# sourceMappingURL=ObjectEventType.js.map","/**\n * @module ol/obj\n */\n/**\n * Polyfill for Object.assign(). Assigns enumerable and own properties from\n * one or more source objects to a target object.\n * See https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign.\n *\n * @param {!Object} target The target object.\n * @param {...Object} var_sources The source object(s).\n * @return {!Object} The modified target object.\n */\nexport var assign = (typeof Object.assign === 'function') ? Object.assign : function (target, var_sources) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n var output = Object(target);\n for (var i = 1, ii = arguments.length; i < ii; ++i) {\n var source = arguments[i];\n if (source !== undefined && source !== null) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n output[key] = source[key];\n }\n }\n }\n }\n return output;\n};\n/**\n * Removes all properties from an object.\n * @param {Object} object The object to clear.\n */\nexport function clear(object) {\n for (var property in object) {\n delete object[property];\n }\n}\n/**\n * Polyfill for Object.values(). Get an array of property values from an object.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values\n *\n * @param {!Object} object The object from which to get the values.\n * @return {!Array} The property values.\n * @template K,V\n */\nexport var getValues = (typeof Object.values === 'function') ? Object.values : function (object) {\n var values = [];\n for (var property in object) {\n values.push(object[property]);\n }\n return values;\n};\n/**\n * Determine if an object has any properties.\n * @param {Object} object The object to check.\n * @return {boolean} The object is empty.\n */\nexport function isEmpty(object) {\n var property;\n for (property in object) {\n return false;\n }\n return !property;\n}\n//# sourceMappingURL=obj.js.map","/**\n * @module ol/events\n */\nimport { clear } from './obj.js';\n/**\n * Key to use with {@link module:ol/Observable~Observable#unByKey}.\n * @typedef {Object} EventsKey\n * @property {ListenerFunction} listener\n * @property {import(\"./events/Target.js\").EventTargetLike} target\n * @property {string} type\n * @api\n */\n/**\n * Listener function. This function is called with an event object as argument.\n * When the function returns `false`, event propagation will stop.\n *\n * @typedef {function((Event|import(\"./events/Event.js\").default)): (void|boolean)} ListenerFunction\n * @api\n */\n/**\n * Registers an event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` to a `this` object, and returns\n * a key for use with {@link module:ol/events~unlistenByKey}.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object=} opt_this Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @param {boolean=} opt_once If true, add the listener as one-off listener.\n * @return {EventsKey} Unique key for the listener.\n */\nexport function listen(target, type, listener, opt_this, opt_once) {\n if (opt_this && opt_this !== target) {\n listener = listener.bind(opt_this);\n }\n if (opt_once) {\n var originalListener_1 = listener;\n listener = function () {\n target.removeEventListener(type, listener);\n originalListener_1.apply(this, arguments);\n };\n }\n var eventsKey = {\n target: target,\n type: type,\n listener: listener\n };\n target.addEventListener(type, listener);\n return eventsKey;\n}\n/**\n * Registers a one-off event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` as self-unregistering listener\n * to a `this` object, and returns a key for use with\n * {@link module:ol/events~unlistenByKey} in case the listener needs to be\n * unregistered before it is called.\n *\n * When {@link module:ol/events~listen} is called with the same arguments after this\n * function, the self-unregistering listener will be turned into a permanent\n * listener.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object=} opt_this Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @return {EventsKey} Key for unlistenByKey.\n */\nexport function listenOnce(target, type, listener, opt_this) {\n return listen(target, type, listener, opt_this, true);\n}\n/**\n * Unregisters event listeners on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * The argument passed to this function is the key returned from\n * {@link module:ol/events~listen} or {@link module:ol/events~listenOnce}.\n *\n * @param {EventsKey} key The key.\n */\nexport function unlistenByKey(key) {\n if (key && key.target) {\n key.target.removeEventListener(key.type, key.listener);\n clear(key);\n }\n}\n//# sourceMappingURL=events.js.map","/**\n * @module ol/Disposable\n */\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nvar Disposable = /** @class */ (function () {\n function Disposable() {\n /**\n * The object has already been disposed.\n * @type {boolean}\n * @private\n */\n this.disposed_ = false;\n }\n /**\n * Clean up.\n */\n Disposable.prototype.dispose = function () {\n if (!this.disposed_) {\n this.disposed_ = true;\n this.disposeInternal();\n }\n };\n /**\n * Extension point for disposable objects.\n * @protected\n */\n Disposable.prototype.disposeInternal = function () { };\n return Disposable;\n}());\nexport default Disposable;\n//# sourceMappingURL=Disposable.js.map","/**\n * @module ol/array\n */\n/**\n * Performs a binary search on the provided sorted list and returns the index of the item if found. If it can't be found it'll return -1.\n * https://github.com/darkskyapp/binary-search\n *\n * @param {Array<*>} haystack Items to search through.\n * @param {*} needle The item to look for.\n * @param {Function=} opt_comparator Comparator function.\n * @return {number} The index of the item if found, -1 if not.\n */\nexport function binarySearch(haystack, needle, opt_comparator) {\n var mid, cmp;\n var comparator = opt_comparator || numberSafeCompareFunction;\n var low = 0;\n var high = haystack.length;\n var found = false;\n while (low < high) {\n /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n * to double (which gives the wrong results). */\n mid = low + (high - low >> 1);\n cmp = +comparator(haystack[mid], needle);\n if (cmp < 0.0) { /* Too low. */\n low = mid + 1;\n }\n else { /* Key found or too high */\n high = mid;\n found = !cmp;\n }\n }\n /* Key not found. */\n return found ? low : ~low;\n}\n/**\n * Compare function for array sort that is safe for numbers.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is less than, equal to, or greater than the second.\n */\nexport function numberSafeCompareFunction(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n}\n/**\n * Whether the array contains the given object.\n * @param {Array<*>} arr The array to test for the presence of the element.\n * @param {*} obj The object for which to test.\n * @return {boolean} The object is in the array.\n */\nexport function includes(arr, obj) {\n return arr.indexOf(obj) >= 0;\n}\n/**\n * @param {Array} arr Array.\n * @param {number} target Target.\n * @param {number} direction 0 means return the nearest, > 0\n * means return the largest nearest, < 0 means return the\n * smallest nearest.\n * @return {number} Index.\n */\nexport function linearFindNearest(arr, target, direction) {\n var n = arr.length;\n if (arr[0] <= target) {\n return 0;\n }\n else if (target <= arr[n - 1]) {\n return n - 1;\n }\n else {\n var i = void 0;\n if (direction > 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] < target) {\n return i - 1;\n }\n }\n }\n else if (direction < 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] <= target) {\n return i;\n }\n }\n }\n else {\n for (i = 1; i < n; ++i) {\n if (arr[i] == target) {\n return i;\n }\n else if (arr[i] < target) {\n if (arr[i - 1] - target < target - arr[i]) {\n return i - 1;\n }\n else {\n return i;\n }\n }\n }\n }\n return n - 1;\n }\n}\n/**\n * @param {Array<*>} arr Array.\n * @param {number} begin Begin index.\n * @param {number} end End index.\n */\nexport function reverseSubArray(arr, begin, end) {\n while (begin < end) {\n var tmp = arr[begin];\n arr[begin] = arr[end];\n arr[end] = tmp;\n ++begin;\n --end;\n }\n}\n/**\n * @param {Array} arr The array to modify.\n * @param {!Array|VALUE} data The elements or arrays of elements to add to arr.\n * @template VALUE\n */\nexport function extend(arr, data) {\n var extension = Array.isArray(data) ? data : [data];\n var length = extension.length;\n for (var i = 0; i < length; i++) {\n arr[arr.length] = extension[i];\n }\n}\n/**\n * @param {Array} arr The array to modify.\n * @param {VALUE} obj The element to remove.\n * @template VALUE\n * @return {boolean} If the element was removed.\n */\nexport function remove(arr, obj) {\n var i = arr.indexOf(obj);\n var found = i > -1;\n if (found) {\n arr.splice(i, 1);\n }\n return found;\n}\n/**\n * @param {Array} arr The array to search in.\n * @param {function(VALUE, number, ?) : boolean} func The function to compare.\n * @template VALUE\n * @return {VALUE|null} The element found or null.\n */\nexport function find(arr, func) {\n var length = arr.length >>> 0;\n var value;\n for (var i = 0; i < length; i++) {\n value = arr[i];\n if (func(value, i, arr)) {\n return value;\n }\n }\n return null;\n}\n/**\n * @param {Array|Uint8ClampedArray} arr1 The first array to compare.\n * @param {Array|Uint8ClampedArray} arr2 The second array to compare.\n * @return {boolean} Whether the two arrays are equal.\n */\nexport function equals(arr1, arr2) {\n var len1 = arr1.length;\n if (len1 !== arr2.length) {\n return false;\n }\n for (var i = 0; i < len1; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Sort the passed array such that the relative order of equal elements is preverved.\n * See https://en.wikipedia.org/wiki/Sorting_algorithm#Stability for details.\n * @param {Array<*>} arr The array to sort (modifies original).\n * @param {!function(*, *): number} compareFnc Comparison function.\n * @api\n */\nexport function stableSort(arr, compareFnc) {\n var length = arr.length;\n var tmp = Array(arr.length);\n var i;\n for (i = 0; i < length; i++) {\n tmp[i] = { index: i, value: arr[i] };\n }\n tmp.sort(function (a, b) {\n return compareFnc(a.value, b.value) || a.index - b.index;\n });\n for (i = 0; i < arr.length; i++) {\n arr[i] = tmp[i].value;\n }\n}\n/**\n * @param {Array<*>} arr The array to search in.\n * @param {Function} func Comparison function.\n * @return {number} Return index.\n */\nexport function findIndex(arr, func) {\n var index;\n var found = !arr.every(function (el, idx) {\n index = idx;\n return !func(el, idx, arr);\n });\n return found ? index : -1;\n}\n/**\n * @param {Array<*>} arr The array to test.\n * @param {Function=} opt_func Comparison function.\n * @param {boolean=} opt_strict Strictly sorted (default false).\n * @return {boolean} Return index.\n */\nexport function isSorted(arr, opt_func, opt_strict) {\n var compare = opt_func || numberSafeCompareFunction;\n return arr.every(function (currentVal, index) {\n if (index === 0) {\n return true;\n }\n var res = compare(arr[index - 1], currentVal);\n return !(res > 0 || opt_strict && res === 0);\n });\n}\n//# sourceMappingURL=array.js.map","/**\n * @module ol/functions\n */\nimport { equals as arrayEquals } from './array.js';\n/**\n * Always returns true.\n * @returns {boolean} true.\n */\nexport function TRUE() {\n return true;\n}\n/**\n * Always returns false.\n * @returns {boolean} false.\n */\nexport function FALSE() {\n return false;\n}\n/**\n * A reusable function, used e.g. as a default for callbacks.\n *\n * @return {void} Nothing.\n */\nexport function VOID() { }\n/**\n * Wrap a function in another function that remembers the last return. If the\n * returned function is called twice in a row with the same arguments and the same\n * this object, it will return the value from the first call in the second call.\n *\n * @param {function(...any): ReturnType} fn The function to memoize.\n * @return {function(...any): ReturnType} The memoized function.\n * @template ReturnType\n */\nexport function memoizeOne(fn) {\n var called = false;\n /** @type {ReturnType} */\n var lastResult;\n /** @type {Array} */\n var lastArgs;\n var lastThis;\n return function () {\n var nextArgs = Array.prototype.slice.call(arguments);\n if (!called || this !== lastThis || !arrayEquals(nextArgs, lastArgs)) {\n called = true;\n lastThis = this;\n lastArgs = nextArgs;\n lastResult = fn.apply(this, arguments);\n }\n return lastResult;\n };\n}\n//# sourceMappingURL=functions.js.map","/**\n * @module ol/events/Event\n */\n/**\n * @classdesc\n * Stripped down implementation of the W3C DOM Level 2 Event interface.\n * See https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-interface.\n *\n * This implementation only provides `type` and `target` properties, and\n * `stopPropagation` and `preventDefault` methods. It is meant as base class\n * for higher level events defined in the library, and works with\n * {@link module:ol/events/Target~Target}.\n */\nvar BaseEvent = /** @class */ (function () {\n /**\n * @param {string} type Type.\n */\n function BaseEvent(type) {\n /**\n * @type {boolean}\n */\n this.propagationStopped;\n /**\n * The event type.\n * @type {string}\n * @api\n */\n this.type = type;\n /**\n * The event target.\n * @type {Object}\n * @api\n */\n this.target = null;\n }\n /**\n * Stop event propagation.\n * @api\n */\n BaseEvent.prototype.preventDefault = function () {\n this.propagationStopped = true;\n };\n /**\n * Stop event propagation.\n * @api\n */\n BaseEvent.prototype.stopPropagation = function () {\n this.propagationStopped = true;\n };\n return BaseEvent;\n}());\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function stopPropagation(evt) {\n evt.stopPropagation();\n}\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function preventDefault(evt) {\n evt.preventDefault();\n}\nexport default BaseEvent;\n//# sourceMappingURL=Event.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/events/Target\n */\nimport Disposable from '../Disposable.js';\nimport { VOID } from '../functions.js';\nimport Event from './Event.js';\nimport { clear } from '../obj.js';\n/**\n * @typedef {EventTarget|Target} EventTargetLike\n */\n/**\n * @classdesc\n * A simplified implementation of the W3C DOM Level 2 EventTarget interface.\n * See https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.\n *\n * There are two important simplifications compared to the specification:\n *\n * 1. The handling of `useCapture` in `addEventListener` and\n * `removeEventListener`. There is no real capture model.\n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.\n * There is no event target hierarchy. When a listener calls\n * `stopPropagation` or `preventDefault` on an event object, it means that no\n * more listeners after this one will be called. Same as when the listener\n * returns false.\n */\nvar Target = /** @class */ (function (_super) {\n __extends(Target, _super);\n /**\n * @param {*=} opt_target Default event target for dispatched events.\n */\n function Target(opt_target) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {*}\n */\n _this.eventTarget_ = opt_target;\n /**\n * @private\n * @type {!Object}\n */\n _this.pendingRemovals_ = {};\n /**\n * @private\n * @type {!Object}\n */\n _this.dispatching_ = {};\n /**\n * @private\n * @type {!Object>}\n */\n _this.listeners_ = {};\n return _this;\n }\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").ListenerFunction} listener Listener.\n */\n Target.prototype.addEventListener = function (type, listener) {\n if (!type || !listener) {\n return;\n }\n var listeners = this.listeners_[type];\n if (!listeners) {\n listeners = [];\n this.listeners_[type] = listeners;\n }\n if (listeners.indexOf(listener) === -1) {\n listeners.push(listener);\n }\n };\n /**\n * Dispatches an event and calls all listeners listening for events\n * of this type. The event parameter can either be a string or an\n * Object with a `type` property.\n *\n * @param {{type: string,\n * target: (EventTargetLike|undefined),\n * propagationStopped: (boolean|undefined)}|\n * import(\"./Event.js\").default|string} event Event object.\n * @return {boolean|undefined} `false` if anyone called preventDefault on the\n * event object or if any of the listeners returned false.\n * @api\n */\n Target.prototype.dispatchEvent = function (event) {\n var evt = typeof event === 'string' ? new Event(event) : event;\n var type = evt.type;\n if (!evt.target) {\n evt.target = this.eventTarget_ || this;\n }\n var listeners = this.listeners_[type];\n var propagate;\n if (listeners) {\n if (!(type in this.dispatching_)) {\n this.dispatching_[type] = 0;\n this.pendingRemovals_[type] = 0;\n }\n ++this.dispatching_[type];\n for (var i = 0, ii = listeners.length; i < ii; ++i) {\n if (listeners[i].call(this, evt) === false || evt.propagationStopped) {\n propagate = false;\n break;\n }\n }\n --this.dispatching_[type];\n if (this.dispatching_[type] === 0) {\n var pendingRemovals = this.pendingRemovals_[type];\n delete this.pendingRemovals_[type];\n while (pendingRemovals--) {\n this.removeEventListener(type, VOID);\n }\n delete this.dispatching_[type];\n }\n return propagate;\n }\n };\n /**\n * @inheritDoc\n */\n Target.prototype.disposeInternal = function () {\n clear(this.listeners_);\n };\n /**\n * Get the listeners for a specified event type. Listeners are returned in the\n * order that they will be called in.\n *\n * @param {string} type Type.\n * @return {Array} Listeners.\n */\n Target.prototype.getListeners = function (type) {\n return this.listeners_[type];\n };\n /**\n * @param {string=} opt_type Type. If not provided,\n * `true` will be returned if this event target has any listeners.\n * @return {boolean} Has listeners.\n */\n Target.prototype.hasListener = function (opt_type) {\n return opt_type ?\n opt_type in this.listeners_ :\n Object.keys(this.listeners_).length > 0;\n };\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").ListenerFunction} listener Listener.\n */\n Target.prototype.removeEventListener = function (type, listener) {\n var listeners = this.listeners_[type];\n if (listeners) {\n var index = listeners.indexOf(listener);\n if (index !== -1) {\n if (type in this.pendingRemovals_) {\n // make listener a no-op, and remove later in #dispatchEvent()\n listeners[index] = VOID;\n ++this.pendingRemovals_[type];\n }\n else {\n listeners.splice(index, 1);\n if (listeners.length === 0) {\n delete this.listeners_[type];\n }\n }\n }\n }\n };\n return Target;\n}(Disposable));\nexport default Target;\n//# sourceMappingURL=Target.js.map","/**\n * @module ol/events/EventType\n */\n/**\n * @enum {string}\n * @const\n */\nexport default {\n /**\n * Generic change event. Triggered when the revision counter is increased.\n * @event module:ol/events/Event~BaseEvent#change\n * @api\n */\n CHANGE: 'change',\n /**\n * Generic error event. Triggered when an error occurs.\n * @event module:ol/events/Event~BaseEvent#error\n * @api\n */\n ERROR: 'error',\n BLUR: 'blur',\n CLEAR: 'clear',\n CONTEXTMENU: 'contextmenu',\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n DRAGENTER: 'dragenter',\n DRAGOVER: 'dragover',\n DROP: 'drop',\n FOCUS: 'focus',\n KEYDOWN: 'keydown',\n KEYPRESS: 'keypress',\n LOAD: 'load',\n RESIZE: 'resize',\n 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 * @license\n * Latitude/longitude spherical geodesy formulae taken from\n * http://www.movable-type.co.uk/scripts/latlong.html\n * Licensed under CC-BY-3.0.\n */\n/**\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 */\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 * 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//# 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 '@openlayers/pepjs';\nimport { DEVICE_PIXEL_RATIO } 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';\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 {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.relayedListenerKey_ = listen(element, PointerEventType.POINTERMOVE, _this.relayEvent_, _this);\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 var dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n this.dispatchEvent(new MapBrowserPointerEvent(pointerEvent.type, this.map_, pointerEvent, dragging));\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 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 ABORT: 5\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 ||\n state === TileState.EMPTY || state === TileState.ABORT) {\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 abortedTiles = false;\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.ABORT) {\n abortedTiles = true;\n }\n else if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {\n this.tilesLoadingKeys_[tileKey] = true;\n ++this.tilesLoading_;\n ++newLoads;\n tile.load();\n }\n }\n if (newLoads === 0 && abortedTiles) {\n // Do not stop the render loop when all wanted tiles were aborted due to\n // a small, saturated tile cache.\n this.tileChangeCallback_();\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 acocunt 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 * @return {number} Capped resolution.\n */\nfunction getViewportClampedResolution(resolution, maxExtent, viewportSize) {\n var xResolution = getWidth(maxExtent) / viewportSize[0];\n var yResolution = getHeight(maxExtent) / viewportSize[1];\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 * @return {Type} Zoom function.\n */\nexport function createSnapToResolutions(resolutions, opt_smooth, opt_maxExtent) {\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) :\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 * @return {Type} Zoom function.\n */\nexport function createSnapToPower(power, maxResolution, opt_minResolution, opt_smooth, opt_maxExtent) {\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) :\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 * @return {Type} Zoom function.\n */\nexport function createMinMaxResolution(maxResolution, minResolution, opt_smooth, opt_maxExtent) {\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) :\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 { getUid } from './util.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 {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(\"./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 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 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 }\n this.animations_.length = 0;\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.getSizeFromViewport_(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 * @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.getSizeFromViewport_ = function (opt_rotation) {\n var size = [100, 100];\n var selector = '.ol-viewport[data-view=\"' + getUid(this) + '\"]';\n var element = document.querySelector(selector);\n if (element) {\n var metrics = getComputedStyle(element);\n size[0] = parseInt(metrics.width, 10);\n size[1] = parseInt(metrics.height, 10);\n }\n if (opt_rotation) {\n var w = size[0];\n var h = size[1];\n size[0] = Math.abs(w * Math.cos(opt_rotation)) + Math.abs(h * Math.sin(opt_rotation));\n size[1] = Math.abs(w * Math.sin(opt_rotation)) + Math.abs(h * Math.cos(opt_rotation));\n }\n return size;\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 of the\n * first 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.getSizeFromViewport_();\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.getSizeFromViewport_();\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.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 power = opt_power || 2;\n var maxResolution = this.maxResolution_;\n var minResolution = this.minResolution_;\n var max = Math.log(maxResolution / minResolution) / Math.log(power);\n return (\n /**\n * @param {number} resolution Resolution.\n * @return {number} Value.\n */\n function (resolution) {\n var value = (Math.log(maxResolution / resolution) / Math.log(power)) / 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.getSizeFromViewport_() }, 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} */ (geometry.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.getSizeFromViewport_();\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.getSizeFromViewport_(this.getRotation());\n var newResolution = this.constraints_.resolution(this.targetResolution_ * ratio, 0, size, isMoving);\n if (opt_anchor !== undefined) {\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 !== undefined) {\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.getSizeFromViewport_(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 };\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.getSizeFromViewport_(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) {\n this.targetResolution_ = newResolution;\n this.targetRotation_ = newRotation;\n this.targetCenter_ = newCenter;\n this.applyTargetState_();\n return;\n }\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: opt_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.getSizeFromViewport_(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.getSizeFromViewport_(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 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);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent);\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);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent);\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 * @return {CanvasRenderingContext2D} The context.\n */\nexport function createCanvasContext2D(opt_width, opt_height) {\n var canvas = 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 { getUid } from './util.js';\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 } 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 * @param {HTMLElement} element Element.\n * @param {string} touchAction Value for `touch-action'.\n */\nfunction setTouchAction(element, touchAction) {\n element.style.msTouchAction = touchAction;\n element.style.touchAction = touchAction;\n element.setAttribute('touch-action', touchAction);\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 /**\n * @private\n * @type {?Array}\n */\n _this.focusHandlerKeys_ = null;\n var handleBrowserEvent = _this.handleBrowserEvent.bind(_this);\n _this.viewport_.addEventListener(EventType.CONTEXTMENU, handleBrowserEvent, false);\n _this.viewport_.addEventListener(EventType.WHEEL, handleBrowserEvent, 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 = mapBrowserEvent.originalEvent.target;\n while (target instanceof HTMLElement) {\n if (target.parentElement === this.overlayContainerStopEvent_) {\n return;\n }\n target = target.parentElement;\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.focusHandlerKeys_) {\n for (var i = 0, ii = this.focusHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.focusHandlerKeys_[i]);\n }\n this.focusHandlerKeys_ = null;\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 hasFocus = true;\n if (targetElement.hasAttribute('tabindex')) {\n hasFocus = document.activeElement === targetElement;\n this.focusHandlerKeys_ = [\n listen(targetElement, EventType.FOCUS, setTouchAction.bind(this, this.viewport_, 'none')),\n listen(targetElement, EventType.BLUR, setTouchAction.bind(this, this.viewport_, 'auto'))\n ];\n }\n setTouchAction(this.viewport_, hasFocus ? 'none' : 'auto');\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.viewport_.setAttribute('data-view', getUid(view));\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 };\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 * @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 * 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';\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 renderEvent.frameState.layerStatesArray.push(this.getLayerState(false));\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 * @api\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 if (view.getRotation() !== undefined) {\n if (this.duration_ > 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 * @api\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 * `