{"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/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/ImageState.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/render/canvas/BuilderType.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/vector.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","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","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","context_","viewRotation_","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","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","TEXT","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","getImageState","getImageSize","getHitDetectionImageSize","setRotateWithView","setScale","listenImageChange","unlistenImageChange","RegularShape","hitDetectionCanvas_","fill_","points","radius_","radius1","radius2_","radius2","stroke_","imageSize_","hitDetectionImageSize_","getPoints","getRadius2","ImageState","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","imageState","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","DEFAULT","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","IMAGE","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","empty","loadedZ","previousSourceTiles","sourceTileCoord","sourceTile","coordKey","key_1","sourceTileKey","addSourceTiles","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_","addDeclutter","group","builderInstructions","zKey","builders","builderKey","builderInstruction","getBuilder","builderType","zIndexKey","replays","replay","Constructor","lineStringLength","drawTextOnPath","startM","measureAndCacheTextWidth","previousAngle","numChars","segmentM","angleChanged","char","charLength","charM","segmentPos","interpolate","p3","p4","Executor","alignFill_","coordinateCache_","renderedTransform_","widths_","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","BuilderType","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","SIMPLIFY_TOLERANCE","GEOMETRY_RENDERERS","builderGroup","imageReplay","textReplay","lineStringReplay","polygonReplay","replayGroup","geometryRenderer","circleReplay","defaultOrder","feature1","feature2","getSquaredTolerance","getTolerance","renderFeature","renderGeometry","getGeometries","renderFeatureInternal","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","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","pointDistanceToSegmentDataSquared","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","pixelCoordinate_","Snap","vertex_","edge_","featuresListenerKeys_","featureChangeListenerKeys_","indexedFeaturesExtents_","pendingFeatures_","sortByDistance_","opt_listen","feature_uid","segmentWriter","forEachFeatureAdd_","forEachFeatureRemove_","getFeatures_","snapTo","snapped","updateFeature_","featuresToUpdate","opt_unlisten","nodesToRemove_1","currentMap","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.0';\n//# sourceMappingURL=util.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/AssertionError\n */\nimport { VERSION } from './util.js';\n/**\n * Error object thrown when an assertion failed. This is an ECMA-262 Error,\n * extended with a `code` property.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error.\n */\nvar AssertionError = /** @class */ (function (_super) {\n __extends(AssertionError, _super);\n /**\n * @param {number} code Error code.\n */\n function AssertionError(code) {\n var _this = this;\n var path = VERSION === 'latest' ? VERSION : 'v' + VERSION.split('-')[0];\n var message = 'Assertion failed. See https://openlayers.org/en/' + path +\n '/doc/errors/#' + code + ' for details.';\n _this = _super.call(this, message) || this;\n /**\n * Error code. The meaning of the code can be found on\n * https://openlayers.org/en/latest/doc/errors/ (replace `latest` with\n * the version found in the OpenLayers script's header comment if a version\n * other than the latest is used).\n * @type {number}\n * @api\n */\n _this.code = code;\n /**\n * @type {string}\n */\n _this.name = 'AssertionError';\n // Re-assign message, see https://github.com/Rich-Harris/buble/issues/40\n _this.message = message;\n return _this;\n }\n return AssertionError;\n}(Error));\nexport default AssertionError;\n//# sourceMappingURL=AssertionError.js.map","/**\n * @module ol/CollectionEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when an item is added to the collection.\n * @event module:ol/Collection.CollectionEvent#add\n * @api\n */\n ADD: 'add',\n /**\n * Triggered when an item is removed from the collection.\n * @event module:ol/Collection.CollectionEvent#remove\n * @api\n */\n REMOVE: 'remove'\n};\n//# sourceMappingURL=CollectionEventType.js.map","/**\n * @module ol/ObjectEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when a property is changed.\n * @event module:ol/Object.ObjectEvent#propertychange\n * @api\n */\n PROPERTYCHANGE: 'propertychange'\n};\n//# sourceMappingURL=ObjectEventType.js.map","/**\n * @module ol/obj\n */\n/**\n * Polyfill for Object.assign(). Assigns enumerable and own properties from\n * one or more source objects to a target object.\n * See https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign.\n *\n * @param {!Object} target The target object.\n * @param {...Object} var_sources The source object(s).\n * @return {!Object} The modified target object.\n */\nexport var assign = (typeof Object.assign === 'function') ? Object.assign : function (target, var_sources) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n var output = Object(target);\n for (var i = 1, ii = arguments.length; i < ii; ++i) {\n var source = arguments[i];\n if (source !== undefined && source !== null) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n output[key] = source[key];\n }\n }\n }\n }\n return output;\n};\n/**\n * Removes all properties from an object.\n * @param {Object} object The object to clear.\n */\nexport function clear(object) {\n for (var property in object) {\n delete object[property];\n }\n}\n/**\n * Polyfill for Object.values(). Get an array of property values from an object.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values\n *\n * @param {!Object} object The object from which to get the values.\n * @return {!Array} The property values.\n * @template K,V\n */\nexport var getValues = (typeof Object.values === 'function') ? Object.values : function (object) {\n var values = [];\n for (var property in object) {\n values.push(object[property]);\n }\n return values;\n};\n/**\n * Determine if an object has any properties.\n * @param {Object} object The object to check.\n * @return {boolean} The object is empty.\n */\nexport function isEmpty(object) {\n var property;\n for (property in object) {\n return false;\n }\n return !property;\n}\n//# sourceMappingURL=obj.js.map","/**\n * @module ol/events\n */\nimport { clear } from './obj.js';\n/**\n * Key to use with {@link module:ol/Observable~Observable#unByKey}.\n * @typedef {Object} EventsKey\n * @property {ListenerFunction} listener\n * @property {import(\"./events/Target.js\").EventTargetLike} target\n * @property {string} type\n * @api\n */\n/**\n * Listener function. This function is called with an event object as argument.\n * When the function returns `false`, event propagation will stop.\n *\n * @typedef {function((Event|import(\"./events/Event.js\").default)): (void|boolean)} ListenerFunction\n * @api\n */\n/**\n * Registers an event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` to a `this` object, and returns\n * a key for use with {@link module:ol/events~unlistenByKey}.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object=} opt_this Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @param {boolean=} opt_once If true, add the listener as one-off listener.\n * @return {EventsKey} Unique key for the listener.\n */\nexport function listen(target, type, listener, opt_this, opt_once) {\n if (opt_this && opt_this !== target) {\n listener = listener.bind(opt_this);\n }\n if (opt_once) {\n var originalListener_1 = listener;\n listener = function () {\n target.removeEventListener(type, listener);\n originalListener_1.apply(this, arguments);\n };\n }\n var eventsKey = {\n target: target,\n type: type,\n listener: listener\n };\n target.addEventListener(type, listener);\n return eventsKey;\n}\n/**\n * Registers a one-off event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` as self-unregistering listener\n * to a `this` object, and returns a key for use with\n * {@link module:ol/events~unlistenByKey} in case the listener needs to be\n * unregistered before it is called.\n *\n * When {@link module:ol/events~listen} is called with the same arguments after this\n * function, the self-unregistering listener will be turned into a permanent\n * listener.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object=} opt_this Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @return {EventsKey} Key for unlistenByKey.\n */\nexport function listenOnce(target, type, listener, opt_this) {\n return listen(target, type, listener, opt_this, true);\n}\n/**\n * Unregisters event listeners on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * The argument passed to this function is the key returned from\n * {@link module:ol/events~listen} or {@link module:ol/events~listenOnce}.\n *\n * @param {EventsKey} key The key.\n */\nexport function unlistenByKey(key) {\n if (key && key.target) {\n key.target.removeEventListener(key.type, key.listener);\n clear(key);\n }\n}\n//# sourceMappingURL=events.js.map","/**\n * @module ol/Disposable\n */\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nvar Disposable = /** @class */ (function () {\n function Disposable() {\n /**\n * The object has already been disposed.\n * @type {boolean}\n * @private\n */\n this.disposed_ = false;\n }\n /**\n * Clean up.\n */\n Disposable.prototype.dispose = function () {\n if (!this.disposed_) {\n this.disposed_ = true;\n this.disposeInternal();\n }\n };\n /**\n * Extension point for disposable objects.\n * @protected\n */\n Disposable.prototype.disposeInternal = function () { };\n return Disposable;\n}());\nexport default Disposable;\n//# sourceMappingURL=Disposable.js.map","/**\n * @module ol/array\n */\n/**\n * Performs a binary search on the provided sorted list and returns the index of the item if found. If it can't be found it'll return -1.\n * https://github.com/darkskyapp/binary-search\n *\n * @param {Array<*>} haystack Items to search through.\n * @param {*} needle The item to look for.\n * @param {Function=} opt_comparator Comparator function.\n * @return {number} The index of the item if found, -1 if not.\n */\nexport function binarySearch(haystack, needle, opt_comparator) {\n var mid, cmp;\n var comparator = opt_comparator || numberSafeCompareFunction;\n var low = 0;\n var high = haystack.length;\n var found = false;\n while (low < high) {\n /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n * to double (which gives the wrong results). */\n mid = low + (high - low >> 1);\n cmp = +comparator(haystack[mid], needle);\n if (cmp < 0.0) { /* Too low. */\n low = mid + 1;\n }\n else { /* Key found or too high */\n high = mid;\n found = !cmp;\n }\n }\n /* Key not found. */\n return found ? low : ~low;\n}\n/**\n * Compare function for array sort that is safe for numbers.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is less than, equal to, or greater than the second.\n */\nexport function numberSafeCompareFunction(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n}\n/**\n * Whether the array contains the given object.\n * @param {Array<*>} arr The array to test for the presence of the element.\n * @param {*} obj The object for which to test.\n * @return {boolean} The object is in the array.\n */\nexport function includes(arr, obj) {\n return arr.indexOf(obj) >= 0;\n}\n/**\n * @param {Array} arr Array.\n * @param {number} target Target.\n * @param {number} direction 0 means return the nearest, > 0\n * means return the largest nearest, < 0 means return the\n * smallest nearest.\n * @return {number} Index.\n */\nexport function linearFindNearest(arr, target, direction) {\n var n = arr.length;\n if (arr[0] <= target) {\n return 0;\n }\n else if (target <= arr[n - 1]) {\n return n - 1;\n }\n else {\n var i = void 0;\n if (direction > 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] < target) {\n return i - 1;\n }\n }\n }\n else if (direction < 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] <= target) {\n return i;\n }\n }\n }\n else {\n for (i = 1; i < n; ++i) {\n if (arr[i] == target) {\n return i;\n }\n else if (arr[i] < target) {\n if (arr[i - 1] - target < target - arr[i]) {\n return i - 1;\n }\n else {\n return i;\n }\n }\n }\n }\n return n - 1;\n }\n}\n/**\n * @param {Array<*>} arr Array.\n * @param {number} begin Begin index.\n * @param {number} end End index.\n */\nexport function reverseSubArray(arr, begin, end) {\n while (begin < end) {\n var tmp = arr[begin];\n arr[begin] = arr[end];\n arr[end] = tmp;\n ++begin;\n --end;\n }\n}\n/**\n * @param {Array} arr The array to modify.\n * @param {!Array|VALUE} data The elements or arrays of elements to add to arr.\n * @template VALUE\n */\nexport function extend(arr, data) {\n var extension = Array.isArray(data) ? data : [data];\n var length = extension.length;\n for (var i = 0; i < length; i++) {\n arr[arr.length] = extension[i];\n }\n}\n/**\n * @param {Array} arr The array to modify.\n * @param {VALUE} obj The element to remove.\n * @template VALUE\n * @return {boolean} If the element was removed.\n */\nexport function remove(arr, obj) {\n var i = arr.indexOf(obj);\n var found = i > -1;\n if (found) {\n arr.splice(i, 1);\n }\n return found;\n}\n/**\n * @param {Array} arr The array to search in.\n * @param {function(VALUE, number, ?) : boolean} func The function to compare.\n * @template VALUE\n * @return {VALUE|null} The element found or null.\n */\nexport function find(arr, func) {\n var length = arr.length >>> 0;\n var value;\n for (var i = 0; i < length; i++) {\n value = arr[i];\n if (func(value, i, arr)) {\n return value;\n }\n }\n return null;\n}\n/**\n * @param {Array|Uint8ClampedArray} arr1 The first array to compare.\n * @param {Array|Uint8ClampedArray} arr2 The second array to compare.\n * @return {boolean} Whether the two arrays are equal.\n */\nexport function equals(arr1, arr2) {\n var len1 = arr1.length;\n if (len1 !== arr2.length) {\n return false;\n }\n for (var i = 0; i < len1; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Sort the passed array such that the relative order of equal elements is preverved.\n * See https://en.wikipedia.org/wiki/Sorting_algorithm#Stability for details.\n * @param {Array<*>} arr The array to sort (modifies original).\n * @param {!function(*, *): number} compareFnc Comparison function.\n * @api\n */\nexport function stableSort(arr, compareFnc) {\n var length = arr.length;\n var tmp = Array(arr.length);\n var i;\n for (i = 0; i < length; i++) {\n tmp[i] = { index: i, value: arr[i] };\n }\n tmp.sort(function (a, b) {\n return compareFnc(a.value, b.value) || a.index - b.index;\n });\n for (i = 0; i < arr.length; i++) {\n arr[i] = tmp[i].value;\n }\n}\n/**\n * @param {Array<*>} arr The array to search in.\n * @param {Function} func Comparison function.\n * @return {number} Return index.\n */\nexport function findIndex(arr, func) {\n var index;\n var found = !arr.every(function (el, idx) {\n index = idx;\n return !func(el, idx, arr);\n });\n return found ? index : -1;\n}\n/**\n * @param {Array<*>} arr The array to test.\n * @param {Function=} opt_func Comparison function.\n * @param {boolean=} opt_strict Strictly sorted (default false).\n * @return {boolean} Return index.\n */\nexport function isSorted(arr, opt_func, opt_strict) {\n var compare = opt_func || numberSafeCompareFunction;\n return arr.every(function (currentVal, index) {\n if (index === 0) {\n return true;\n }\n var res = compare(arr[index - 1], currentVal);\n return !(res > 0 || opt_strict && res === 0);\n });\n}\n//# sourceMappingURL=array.js.map","/**\n * @module ol/functions\n */\nimport { equals as arrayEquals } from './array.js';\n/**\n * Always returns true.\n * @returns {boolean} true.\n */\nexport function TRUE() {\n return true;\n}\n/**\n * Always returns false.\n * @returns {boolean} false.\n */\nexport function FALSE() {\n return false;\n}\n/**\n * A reusable function, used e.g. as a default for callbacks.\n *\n * @return {void} Nothing.\n */\nexport function VOID() { }\n/**\n * Wrap a function in another function that remembers the last return. If the\n * returned function is called twice in a row with the same arguments and the same\n * this object, it will return the value from the first call in the second call.\n *\n * @param {function(...any): ReturnType} fn The function to memoize.\n * @return {function(...any): ReturnType} The memoized function.\n * @template ReturnType\n */\nexport function memoizeOne(fn) {\n var called = false;\n /** @type ReturnType */\n var lastResult;\n /** @type Array */\n var lastArgs;\n var lastThis;\n return function () {\n var nextArgs = Array.prototype.slice.call(arguments);\n if (!called || this !== lastThis || !arrayEquals(nextArgs, lastArgs)) {\n called = true;\n lastThis = this;\n lastArgs = nextArgs;\n lastResult = fn.apply(this, arguments);\n }\n return lastResult;\n };\n}\n//# sourceMappingURL=functions.js.map","/**\n * @module ol/events/Event\n */\n/**\n * @classdesc\n * Stripped down implementation of the W3C DOM Level 2 Event interface.\n * See https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-interface.\n *\n * This implementation only provides `type` and `target` properties, and\n * `stopPropagation` and `preventDefault` methods. It is meant as base class\n * for higher level events defined in the library, and works with\n * {@link module:ol/events/Target~Target}.\n */\nvar BaseEvent = /** @class */ (function () {\n /**\n * @param {string} type Type.\n */\n function BaseEvent(type) {\n /**\n * @type {boolean}\n */\n this.propagationStopped;\n /**\n * The event type.\n * @type {string}\n * @api\n */\n this.type = type;\n /**\n * The event target.\n * @type {Object}\n * @api\n */\n this.target = null;\n }\n /**\n * Stop event propagation.\n * @api\n */\n BaseEvent.prototype.preventDefault = function () {\n this.propagationStopped = true;\n };\n /**\n * Stop event propagation.\n * @api\n */\n BaseEvent.prototype.stopPropagation = function () {\n this.propagationStopped = true;\n };\n return BaseEvent;\n}());\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function stopPropagation(evt) {\n evt.stopPropagation();\n}\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function preventDefault(evt) {\n evt.preventDefault();\n}\nexport default BaseEvent;\n//# sourceMappingURL=Event.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/events/Target\n */\nimport Disposable from '../Disposable.js';\nimport { VOID } from '../functions.js';\nimport Event from './Event.js';\nimport { clear } from '../obj.js';\n/**\n * @typedef {EventTarget|Target} EventTargetLike\n */\n/**\n * @classdesc\n * A simplified implementation of the W3C DOM Level 2 EventTarget interface.\n * See https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.\n *\n * There are two important simplifications compared to the specification:\n *\n * 1. The handling of `useCapture` in `addEventListener` and\n * `removeEventListener`. There is no real capture model.\n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.\n * There is no event target hierarchy. When a listener calls\n * `stopPropagation` or `preventDefault` on an event object, it means that no\n * more listeners after this one will be called. Same as when the listener\n * returns false.\n */\nvar Target = /** @class */ (function (_super) {\n __extends(Target, _super);\n /**\n * @param {*=} opt_target Default event target for dispatched events.\n */\n function Target(opt_target) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {*}\n */\n _this.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~Event#change\n * @api\n */\n CHANGE: 'change',\n /**\n * Generic error event. Triggered when an error occurs.\n * @event module:ol/events/Event~Event#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\").Event\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~Event#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~Event#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, getTransformFromProjections } 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/Projection.js\").default} [sourceProjection] The source projection.\n * @param {import(\"../proj/Projection.js\").default} [destProjection] The destination projection.\n * @return {Geometry} Simplified geometry.\n */\n _this.simplifyTransformedInternal = memoizeOne(function (revision, squaredTolerance, sourceProjection, destProjection) {\n if (!sourceProjection || !destProjection) {\n return this.getSimplifiedGeometry(squaredTolerance);\n }\n var transform = getTransformFromProjections(sourceProjection, destProjection);\n var clone = this.clone();\n clone.applyTransform(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/Projection.js\").default} sourceProjection The source projection.\n * @param {import(\"../proj/Projection.js\").default} destProjection The destination projection.\n * @return {Geometry} Simplified geometry.\n */\n Geometry.prototype.simplifyTransformed = function (squaredTolerance, sourceProjection, destProjection) {\n return this.simplifyTransformedInternal(this.getRevision(), squaredTolerance, sourceProjection, destProjection);\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~Event#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 tile.load();\n if (tile.getState() === TileState.LOADING) {\n this.tilesLoadingKeys_[tileKey] = true;\n ++this.tilesLoading_;\n ++newLoads;\n }\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 offset = -direction * (0.5 - 1e-9) + 0.5;\n var capped = Math.min(cappedMaxRes, resolution);\n var zoomLevel = Math.floor(Math.log(maxResolution / capped) / Math.log(power) + offset);\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 opt_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 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 * `