{"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/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/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/BaseVector.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","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","str","b1","b2","b3","b0","bytesPerSequence","String","fromCharCode","readUtf8","readBytes","buffer","subarray","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","target_","pendingRemovals_","dispatching_","listeners_","listeners","Event","pendingRemovals","getListeners","hasListener","opt_type","CHANGE","ERROR","CLEAR","CONTEXTMENU","CLICK","DBLCLICK","DRAGENTER","DRAGOVER","DROP","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","transforms","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","makeScale","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","decode","SINGLECLICK","POINTERDRAG","POINTERMOVE","POINTERDOWN","POINTERUP","POINTEROVER","POINTEROUT","POINTERENTER","POINTERLEAVE","POINTERCANCEL","MapBrowserPointerEvent","pointerEvent","MapBrowserEventHandler","moveTolerance","map_","clickTimeoutId_","dragging_","dragListenerKeys_","moveTolerance_","down_","getViewport","setAttribute","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","hasOverlay","getOpacity","sourceState","getSourceState","getVisible","getLayersArray","getLayerStatesArray","opt_states","setMaxResolution","setMinResolution","setOpacity","setVisible","setZIndex","zindex","UNDEFINED","READY","LAYERS","LayerGroup","baseOptions","layers","layersListenerKeys_","listenerKeys_","handleLayersChanged_","setLayers","handleLayerChange_","getLayers","handleLayersAdd_","handleLayersRemove_","layersArray","collectionEvent","states","ownLayerState","layerState","toSize","cache","PluggableMap","optionsInternal","keyboardEventTarget","getElementById","controls","interactions","overlays","layerGroup","MapProperty","view","createOptionsInternal","boundHandleBrowserEvent_","handleBrowserEvent","maxTilesLoading_","maxTilesLoading","pixelRatio_","pixelRatio","postRenderTimeoutHandle_","animationDelayKey_","animationDelay_","renderFrame_","coordinateToPixelTransform_","pixelToCoordinateTransform_","frameIndex_","frameState_","previousExtent_","viewPropertyListenerKey_","viewChangeListenerKey_","layerGroupPropertyListenerKeys_","viewport_","overflow","msTouchAction","overlayContainer_","overlayContainerStopEvent_","mapBrowserEventHandler_","handleMapBrowserEvent","keyboardEventTarget_","keyHandlerKeys_","labelCache_","labelCacheListenerKey_","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","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","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_","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","activeElement","always","mouseActionButton","never","pointerMove","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","fromString","cacheSize","g","exec","body","rgb","fromNamed","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","childElementCount","lastElementChild","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","AttributeType","UNSIGNED_SHORT","UNSIGNED_INT","computeAttributesStride","attr","getByteSizeFromType","BYTES_PER_ELEMENT","Uint16Array","WebGLHelper","boundHandleWebGLContextLost_","handleWebGLContextLost","boundHandleWebGLContextRestored_","handleWebGLContextRestored","canvas_","bufferCache_","shaderCache_","programCache_","currentProgram_","getSupportedExtensions","getExtension","ContextEventType","offsetRotateMatrix_","offsetScaleMatrix_","tmpMat4_","uniformLocations_","attribLocations_","name_1","postProcessPasses_","postProcesses","shaderCompileErrors_","bufferKey","bufferCache","webGlBuffer","flushBufferData","deleteBuffer","bufferCacheEntry","isContextLost","deleteProgram","deleteShader","prepareDraw","getCanvas","applyFrameState","prepareDrawToRenderTarget","renderTarget","opt_disableAlphaBlend","getFramebuffer","getTexture","ZERO","drawElements","elementType","numItems","offsetInBytes","finalizeDraw","offsetScaleMatrix","offsetRotateMatrix","setUniformMatrixValue","HTMLImageElement","program","shader","getProgram","fragmentShaderSource","vertexShaderSource","getShaderInfoLog","getShaderCompileErrors","getAttributeLocation","makeProjectionTransform","setUniformFloatValue","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_","getInterimTile","refreshInterimChain","getTileCoord","setState","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","getFeatures","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","useContainer","layerClassName","transformOrigin","topLeft","topRight","bottomRight","bottomLeft","clipUnrotated","inverted","dispatchRenderEvent_","preRender","postRender","getRenderTransform","renderPixel","CanvasImageLayerRenderer","imageLayer","viewResolution","imageSource","renderedExtent","imagePixelRatio","viewCenter","clearRect","clipped","layerExtent","dw","dh","previousAlpha","canvasTransform","ImageLayer","BaseTile","BaseTileLayer","preload","useInterimTilesOnError","setPreload","setUseInterimTilesOnError","getPreload","TileProperty","getUseInterimTilesOnError","CanvasTileLayerRenderer","tileLayer","extentChanged","renderedExtent_","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","replayState_","wantedResolution","getSourceTiles_","removeSourceTiles_","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","onSourceTileChange_1","sourceTileKey","onTileChange_1","addSourceTiles","empty","KVP","REST","WMTS","requestEncoding","WMTSRequestEncoding","version_","dimensions_","dimensions","matrixSet_","requestEncoding_","getKeyForDimensions_","createFromWMTSTemplate","getDimensions","getMatrixSet","getRequestEncoding","getVersion","updateDimensions","WebGLWorkerMessageType","GENERATE_BUFFERS","WebGLLayerRenderer","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","renderCount","renderHitDetection","vectorSource","sourceChanged","viewNotMoving","rebuildBuffers_","totalInstructionsCount","totalHitInstructionsCount","hitColor","tmpCoords","tmpColor","renderIndex","hitIndex","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","declutter","declutter_","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","batchSize","labelWithAnchor","widthIndex","declutterGroupIndex","measurePixelRatio","pixelRatioScale","cachedWidths","pathLength","textLength","parts","cc","chars","part","execute","executeHitDetection","opt_featureCallback","ORDER","ExecutorGroup","allInstructions","opt_renderBuffer","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","CanvasVectorLayerRenderer","vectorLayer","boundHandleStyleImageChange_","handleStyleImageChange_","dirty_","renderedResolution_","renderedRenderOrder_","replayGroup_","replayGroupChanged","getDeclutter","world","transform_2","viewHints_1","layer_1","features_1","animating","interacting","updateWhileAnimating","getUpdateWhileAnimating","updateWhileInteracting","getUpdateWhileInteracting","frameStateExtent","vectorLayerRevision","vectorLayerRenderBuffer","getRenderBuffer","vectorLayerRenderOrder","getRenderOrder","userTransform","styleFunction","userExtent","features_2","replayGroupInstructions","executorGroup","CanvasVectorImageLayerRenderer","vectorRenderer_","layerImageRatio_","getImageRatio","vectorRenderer","imageFrameState_1","image_1","HYBRID","IMAGE_REPLAYS","VECTOR_REPLAYS","CanvasVectorTileLayerRenderer","overlayContext_","overlayContextUid_","overlayPixelTransform_","inverseOverlayPixelTransform_","renderedLayerRevision_","renderTileImageQueue_","tileListenerKeys_","tmpTransform_","overlayContext","overlayContext_1","prepareTile","tileUid","updateExecutorGroup_","tileImageNeedsRender_","listenerKey","renderTileImage_","layerRevision","renderOrder","builderState","layerUid","tt","sourceTileExtent","sharedExtent","bufferedExtent","executorGroupInstructions","replayExtent","renderingReplayGroup","found","_loop_2","tileContainsCoordinate","renderQueuedTileImages_","renderMode","getRenderMode","VectorTileRenderType","replayTypes","worldOffset","replayState","renderPixelRatio","renderScale","pixelScale","BaseVector","BaseVectorLayer","renderBuffer","updateWhileAnimating_","updateWhileInteracting_","setRenderOrder","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_","lonLabelStyleCache_","lonLabelStyle_","latLabelStyleCache_","latLabelStyle_","intervals_","loaderFunction","featurePool_","lineStyle_","renderExtent","updateProjectionInfo_","createGraticule_","featureCount","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","BLUR","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","kk","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","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\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 str = readUtf8(this.buf, this.pos, end);\n this.pos = end;\n return str;\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 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.0.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.target_ = 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 = this.listeners_[type] = [];\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.target_ || 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 CLEAR: 'clear',\n CONTEXTMENU: 'contextmenu',\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n DRAGENTER: 'dragenter',\n DRAGOVER: 'dragover',\n DROP: 'drop',\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 each coordinate 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.\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 * @inheritDoc\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 * @inheritDoc\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 * @inheritDoc\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 * @inheritDoc\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 element.setAttribute('touch-action', 'none');\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 * @event module:ol/render/Event~RenderEvent#precompose\n * @api\n */\n PRECOMPOSE: 'precompose',\n /**\n * Triggered after all layers are rendered.\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 * @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 = (maxX + minX) / 2;\n }\n if (minY > maxY) {\n minY = maxY = (maxY + minY) / 2;\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 hasOverlay: false\n });\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 = this.getZIndex() || (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 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] = opt_size[1] = /** @type {number} */ (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 * @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 // prevent page zoom on IE >= 10 browsers\n _this.viewport_.style.msTouchAction = 'none';\n _this.viewport_.style.touchAction = 'none';\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.overlayContainer_ = document.createElement('div');\n _this.overlayContainer_.style.position = 'absolute';\n _this.overlayContainer_.style.zIndex = '0';\n _this.overlayContainer_.style.width = '100%';\n _this.overlayContainer_.style.height = '100%';\n _this.overlayContainer_.className = 'ol-overlaycontainer';\n _this.viewport_.appendChild(_this.overlayContainer_);\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.overlayContainerStopEvent_ = document.createElement('div');\n _this.overlayContainerStopEvent_.style.position = 'absolute';\n _this.overlayContainerStopEvent_.style.zIndex = '0';\n _this.overlayContainerStopEvent_.style.width = '100%';\n _this.overlayContainerStopEvent_.style.height = '100%';\n _this.overlayContainerStopEvent_.className = 'ol-overlaycontainer-stopevent';\n _this.viewport_.appendChild(_this.overlayContainerStopEvent_);\n /**\n * @private\n * @type {MapBrowserEventHandler}\n */\n _this.mapBrowserEventHandler_ = new MapBrowserEventHandler(_this, options.moveTolerance);\n var handleMapBrowserEvent = _this.handleMapBrowserEvent.bind(_this);\n for (var key in MapBrowserEventType) {\n _this.mapBrowserEventHandler_.addEventListener(MapBrowserEventType[key], handleMapBrowserEvent);\n }\n /**\n * @private\n * @type {HTMLElement|Document}\n */\n _this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n /**\n * @private\n * @type {?Array}\n */\n _this.keyHandlerKeys_ = null;\n var handleBrowserEvent = _this.handleBrowserEvent.bind(_this);\n _this.viewport_.addEventListener(EventType.CONTEXTMENU, handleBrowserEvent, false);\n _this.viewport_.addEventListener(EventType.WHEEL, handleBrowserEvent, 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 {import(\"./events/Target.js\").default}\n */\n _this.labelCache_ = null;\n /**\n * @type {import(\"./events.js\").EventsKey}\n */\n _this.labelCacheListenerKey_;\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 {function(Event): void|undefined}\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 /** @type {AtPixelOptions} */ ({});\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 || /** @type {AtPixelOptions} */ ({});\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 /** @type {AtPixelOptions} */ ({});\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.keyHandlerKeys_) {\n for (var i = 0, ii = this.keyHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.keyHandlerKeys_[i]);\n }\n this.keyHandlerKeys_ = null;\n }\n if (!targetElement) {\n if (this.renderer_) {\n clearTimeout(this.postRenderTimeoutHandle_);\n this.postRenderFunctions_.length = 0;\n this.renderer_.dispose();\n this.renderer_ = null;\n }\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n this.animationDelayKey_ = undefined;\n }\n removeNode(this.viewport_);\n if (this.handleResize_ !== undefined) {\n removeEventListener(EventType.RESIZE, this.handleResize_, false);\n this.handleResize_ = undefined;\n }\n }\n else {\n targetElement.appendChild(this.viewport_);\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n var keyboardEventTarget = !this.keyboardEventTarget_ ?\n targetElement : this.keyboardEventTarget_;\n this.keyHandlerKeys_ = [\n listen(keyboardEventTarget, EventType.KEYDOWN, this.handleBrowserEvent, this),\n listen(keyboardEventTarget, EventType.KEYPRESS, this.handleBrowserEvent, this)\n ];\n if (!this.handleResize_) {\n this.handleResize_ = this.updateSize.bind(this);\n window.addEventListener(EventType.RESIZE, this.handleResize_, false);\n }\n }\n this.updateSize();\n // updateSize calls setSize, so no need to call this.render\n // ourselves here.\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTileChange_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewPropertyChanged_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewChanged_ = function () {\n if (this.viewPropertyListenerKey_) {\n unlistenByKey(this.viewPropertyListenerKey_);\n this.viewPropertyListenerKey_ = null;\n }\n if (this.viewChangeListenerKey_) {\n unlistenByKey(this.viewChangeListenerKey_);\n this.viewChangeListenerKey_ = null;\n }\n var view = this.getView();\n if (view) {\n this.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 {boolean} hasOverlay Set by the renderer when an overlay for points and text is used.\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 * 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 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 * `