{"version":3,"sources":["webpack:///./node_modules/ol/events/EventType.js","webpack:///./node_modules/ol/extent/Relationship.js","webpack:///./node_modules/ol/extent.js","webpack:///./node_modules/ol/events/Target.js","webpack:///./node_modules/html-to-image/lib/embedResources.js","webpack:///./node_modules/ol/util.js","webpack:///./node_modules/ol/events.js","webpack:///./node_modules/html-to-image/lib/utils.js","webpack:///./node_modules/html-to-image/lib/getBlobFromURL.js","webpack:///./node_modules/ol/proj/Projection.js","webpack:///./node_modules/ol/proj/epsg3857.js","webpack:///./node_modules/ol/proj/epsg4326.js","webpack:///./node_modules/ol/proj/transforms.js","webpack:///./node_modules/ol/proj/projections.js","webpack:///./node_modules/ol/proj.js","webpack:///./node_modules/rbush/rbush.min.js","webpack:///./node_modules/ol/Observable.js","webpack:///./node_modules/ol/extent/Corner.js","webpack:///./node_modules/ol/obj.js","webpack:///./node_modules/@openlayers/pepjs/dist/pep.js","webpack:///./node_modules/ol/geom/GeometryLayout.js","webpack:///./node_modules/ol/functions.js","webpack:///./node_modules/html-to-image/lib/embedImages.js","webpack:///./node_modules/html-to-image/lib/embedWebFonts.js","webpack:///./node_modules/ol/sphere.js","webpack:///./node_modules/ol/ObjectEventType.js","webpack:///./node_modules/ol/math.js","webpack:///./node_modules/ol/AssertionError.js","webpack:///./node_modules/ol/geom/Geometry.js","webpack:///./node_modules/ol/asserts.js","webpack:///./node_modules/html-to-image/lib/index.js","webpack:///./node_modules/ol/geom/SimpleGeometry.js","webpack:///./node_modules/ol/array.js","webpack:///./node_modules/ol/transform.js","webpack:///./node_modules/ol/geom/flat/deflate.js","webpack:///./node_modules/html-to-image/lib/applyStyleWithOptions.js","webpack:///./node_modules/html-to-image/lib/clonePseudoElements.js","webpack:///./node_modules/ol/geom/flat/transform.js","webpack:///./node_modules/html-to-image/lib/createSvgDataURL.js","webpack:///./node_modules/html-to-image/lib/cloneNode.js","webpack:///./node_modules/ol/events/Event.js","webpack:///./node_modules/ol/Disposable.js","webpack:///./node_modules/ol/Object.js","webpack:///./node_modules/ol/geom/Point.js","webpack:///./node_modules/ol/geom/GeometryType.js","webpack:///./node_modules/ol/geom/Circle.js","webpack:///./node_modules/ol/CollectionEventType.js","webpack:///./node_modules/ol/Collection.js","webpack:///./node_modules/ol/MapEvent.js","webpack:///./node_modules/ol/MapBrowserEvent.js","webpack:///./node_modules/ol/has.js","webpack:///./node_modules/ol/MapBrowserEventType.js","webpack:///./node_modules/ol/MapBrowserPointerEvent.js","webpack:///./node_modules/ol/pointer/EventType.js","webpack:///./node_modules/ol/MapBrowserEventHandler.js","webpack:///./node_modules/ol/MapEventType.js","webpack:///./node_modules/ol/MapProperty.js","webpack:///./node_modules/ol/render/EventType.js","webpack:///./node_modules/ol/TileState.js","webpack:///./node_modules/ol/structs/PriorityQueue.js","webpack:///./node_modules/ol/TileQueue.js","webpack:///./node_modules/ol/tilegrid/common.js","webpack:///./node_modules/ol/centerconstraint.js","webpack:///./node_modules/ol/resolutionconstraint.js","webpack:///./node_modules/ol/rotationconstraint.js","webpack:///./node_modules/ol/ViewHint.js","webpack:///./node_modules/ol/ViewProperty.js","webpack:///./node_modules/ol/string.js","webpack:///./node_modules/ol/coordinate.js","webpack:///./node_modules/ol/easing.js","webpack:///./node_modules/ol/geom/flat/area.js","webpack:///./node_modules/ol/geom/flat/closest.js","webpack:///./node_modules/ol/geom/flat/inflate.js","webpack:///./node_modules/ol/geom/flat/simplify.js","webpack:///./node_modules/ol/geom/LinearRing.js","webpack:///./node_modules/ol/geom/flat/contains.js","webpack:///./node_modules/ol/geom/flat/interiorpoint.js","webpack:///./node_modules/ol/geom/flat/segments.js","webpack:///./node_modules/ol/geom/flat/intersectsextent.js","webpack:///./node_modules/ol/geom/flat/reverse.js","webpack:///./node_modules/ol/geom/flat/orient.js","webpack:///./node_modules/ol/geom/Polygon.js","webpack:///./node_modules/ol/View.js","webpack:///./node_modules/ol/dom.js","webpack:///./node_modules/ol/layer/Property.js","webpack:///./node_modules/ol/layer/Base.js","webpack:///./node_modules/ol/source/State.js","webpack:///./node_modules/ol/layer/Group.js","webpack:///./node_modules/ol/size.js","webpack:///./node_modules/ol/PluggableMap.js","webpack:///./node_modules/ol/control/Control.js","webpack:///./node_modules/ol/css.js","webpack:///./node_modules/ol/layer/Layer.js","webpack:///./node_modules/ol/control/Attribution.js","webpack:///./node_modules/ol/control/Rotate.js","webpack:///./node_modules/ol/control/Zoom.js","webpack:///./node_modules/ol/control.js","webpack:///./node_modules/ol/Kinetic.js","webpack:///./node_modules/ol/interaction/Property.js","webpack:///./node_modules/ol/interaction/Interaction.js","webpack:///./node_modules/ol/interaction/DoubleClickZoom.js","webpack:///./node_modules/ol/events/condition.js","webpack:///./node_modules/ol/interaction/Pointer.js","webpack:///./node_modules/ol/interaction/DragPan.js","webpack:///./node_modules/ol/interaction/DragRotate.js","webpack:///./node_modules/ol/render/Box.js","webpack:///./node_modules/ol/interaction/DragBox.js","webpack:///./node_modules/ol/interaction/DragZoom.js","webpack:///./node_modules/ol/events/KeyCode.js","webpack:///./node_modules/ol/interaction/KeyboardPan.js","webpack:///./node_modules/ol/interaction/KeyboardZoom.js","webpack:///./node_modules/ol/interaction/MouseWheelZoom.js","webpack:///./node_modules/ol/interaction/PinchRotate.js","webpack:///./node_modules/ol/interaction/PinchZoom.js","webpack:///./node_modules/ol/interaction.js","webpack:///./node_modules/ol/render/Event.js","webpack:///./node_modules/ol/color.js","webpack:///./node_modules/ol/style/IconImageCache.js","webpack:///./node_modules/ol/colorlike.js","webpack:///./node_modules/ol/render/canvas.js","webpack:///./node_modules/ol/render/VectorContext.js","webpack:///./node_modules/ol/structs/LRUCache.js","webpack:///./node_modules/ol/render/canvas/LabelCache.js","webpack:///./node_modules/ol/render/canvas/Immediate.js","webpack:///./node_modules/ol/ImageState.js","webpack:///./node_modules/ol/render/canvas/BuilderType.js","webpack:///./node_modules/ol/renderer/vector.js","webpack:///./node_modules/ol/render.js","webpack:///./node_modules/ol/renderer/Map.js","webpack:///./node_modules/ol/renderer/Composite.js","webpack:///./node_modules/ol/Map.js","webpack:///./node_modules/ol/OverlayPositioning.js","webpack:///./node_modules/ol/Overlay.js","webpack:///./node_modules/ol/Feature.js","webpack:///./node_modules/ol/control/FullScreen.js","webpack:///./node_modules/ol/control/OverviewMap.js","webpack:///./node_modules/ol/control/ScaleLine.js","webpack:///./node_modules/ol/control/ZoomSlider.js","webpack:///./node_modules/ol/control/ZoomToExtent.js","webpack:///./node_modules/ol/control/MousePosition.js","webpack:///./node_modules/ol/geom/flat/interpolate.js","webpack:///./node_modules/ol/geom/flat/length.js","webpack:///./node_modules/ol/geom/LineString.js","webpack:///./node_modules/ol/geom/MultiLineString.js","webpack:///./node_modules/ol/geom/MultiPoint.js","webpack:///./node_modules/ol/geom/flat/center.js","webpack:///./node_modules/ol/geom/MultiPolygon.js","webpack:///./node_modules/ol/style/Image.js","webpack:///./node_modules/ol/style/RegularShape.js","webpack:///./node_modules/ol/style/Circle.js","webpack:///./node_modules/ol/style/Fill.js","webpack:///./node_modules/ol/style/Stroke.js","webpack:///./node_modules/ol/style/Style.js","webpack:///./node_modules/ol/layer/BaseVector.js","webpack:///./node_modules/ol/render/canvas/Instruction.js","webpack:///./node_modules/ol/render/canvas/Builder.js","webpack:///./node_modules/ol/render/canvas/ImageBuilder.js","webpack:///./node_modules/ol/render/canvas/LineStringBuilder.js","webpack:///./node_modules/ol/render/canvas/PolygonBuilder.js","webpack:///./node_modules/ol/geom/flat/straightchunk.js","webpack:///./node_modules/ol/style/TextPlacement.js","webpack:///./node_modules/ol/render/canvas/TextBuilder.js","webpack:///./node_modules/ol/render/canvas/BuilderGroup.js","webpack:///./node_modules/ol/geom/flat/textpath.js","webpack:///./node_modules/ol/render/canvas/Executor.js","webpack:///./node_modules/ol/render/canvas/ExecutorGroup.js","webpack:///./node_modules/ol/renderer/Layer.js","webpack:///./node_modules/ol/renderer/canvas/Layer.js","webpack:///./node_modules/ol/style/IconAnchorUnits.js","webpack:///./node_modules/ol/ImageBase.js","webpack:///./node_modules/ol/Image.js","webpack:///./node_modules/ol/style/IconImage.js","webpack:///./node_modules/ol/style/IconOrigin.js","webpack:///./node_modules/ol/style/Icon.js","webpack:///./node_modules/ol/render/canvas/hitdetect.js","webpack:///./node_modules/ol/renderer/canvas/VectorLayer.js","webpack:///./node_modules/ol/layer/Vector.js","webpack:///./node_modules/ol/format/FormatType.js","webpack:///./node_modules/ol/featureloader.js","webpack:///./node_modules/ol/loadingstrategy.js","webpack:///./node_modules/ol/source/Source.js","webpack:///./node_modules/ol/source/VectorEventType.js","webpack:///./node_modules/ol/structs/RBush.js","webpack:///./node_modules/ol/source/Vector.js","webpack:///./node_modules/ol/interaction/Draw.js","webpack:///./node_modules/ol/format/Feature.js","webpack:///./node_modules/ol/format/TextFeature.js","webpack:///./node_modules/ol/geom/GeometryCollection.js","webpack:///./node_modules/ol/format/WKT.js","webpack:///./node_modules/ol/xml.js","webpack:///./node_modules/ol/format/XMLFeature.js","webpack:///./node_modules/ol/format/xsd.js","webpack:///./node_modules/ol/style/Text.js","webpack:///./node_modules/ol/format/KML.js","webpack:///./node_modules/ol/layer/BaseImage.js","webpack:///./node_modules/ol/reproj/common.js","webpack:///./node_modules/ol/renderer/canvas/ImageLayer.js","webpack:///./node_modules/ol/layer/Image.js","webpack:///./node_modules/ol/layer/TileProperty.js","webpack:///./node_modules/ol/layer/BaseTile.js","webpack:///./node_modules/ol/TileRange.js","webpack:///./node_modules/ol/renderer/canvas/TileLayer.js","webpack:///./node_modules/ol/layer/Tile.js","webpack:///./node_modules/ol/source/common.js","webpack:///./node_modules/ol/reproj.js","webpack:///./node_modules/ol/reproj/Triangulation.js","webpack:///./node_modules/ol/reproj/Image.js","webpack:///./node_modules/ol/source/Image.js","webpack:///./node_modules/ol/source/WMSServerType.js","webpack:///./node_modules/ol/uri.js","webpack:///./node_modules/ol/source/ImageWMS.js","webpack:///./node_modules/ol/source/Cluster.js","webpack:///./node_modules/ol/Tile.js","webpack:///./node_modules/ol/ImageTile.js","webpack:///./node_modules/ol/tilecoord.js","webpack:///./node_modules/ol/TileCache.js","webpack:///./node_modules/ol/reproj/Tile.js","webpack:///./node_modules/ol/tileurlfunction.js","webpack:///./node_modules/ol/tilegrid/TileGrid.js","webpack:///./node_modules/ol/tilegrid.js","webpack:///./node_modules/ol/source/Tile.js","webpack:///./node_modules/ol/source/TileEventType.js","webpack:///./node_modules/ol/source/UrlTile.js","webpack:///./node_modules/ol/source/TileImage.js","webpack:///./node_modules/ol/source/XYZ.js","webpack:///./node_modules/ol/source/OSM.js","webpack:///./node_modules/ol/net.js","webpack:///./node_modules/ol/source/BingMaps.js","webpack:///./src/util/mapfunction.js","webpack:///./node_modules/ol/proj/Units.js"],"names":["CHANGE","ERROR","BLUR","CLEAR","CONTEXTMENU","CLICK","DBLCLICK","DRAGENTER","DRAGOVER","DROP","FOCUS","KEYDOWN","KEYPRESS","LOAD","RESIZE","WHEEL","UNKNOWN","INTERSECTING","ABOVE","RIGHT","BELOW","LEFT","boundingExtent","coordinates","extent","createEmpty","i","ii","length","extendCoordinate","_boundingExtentXYs","xs","ys","opt_extent","minX","Math","min","apply","minY","maxX","max","maxY","createOrUpdate","buffer","value","clone","slice","closestSquaredDistanceXY","x","y","dx","dy","containsCoordinate","coordinate","containsXY","containsExtent","extent1","extent2","coordinateRelationship","relationship","Infinity","createOrUpdateEmpty","createOrUpdateFromCoordinate","createOrUpdateFromCoordinates","extendCoordinates","createOrUpdateFromFlatCoordinates","flatCoordinates","offset","end","stride","extendFlatCoordinates","equals","extend","extendXY","forEachCorner","callback","val","getBottomLeft","getBottomRight","getTopRight","getTopLeft","getArea","area","isEmpty","getWidth","getHeight","getCenter","getCorner","corner","BOTTOM_LEFT","BOTTOM_RIGHT","TOP_LEFT","TOP_RIGHT","getForViewAndSize","center","resolution","rotation","size","cosRotation","cos","sinRotation","sin","xCos","xSin","yCos","ySin","x0","x1","x2","x3","y0","y1","y2","y3","getIntersection","intersection","intersects","returnOrUpdate","scaleFromCenter","deltaX","deltaY","intersectsSegment","start","startRel","endRel","startX","startY","endX","endY","slope","applyTransform","transformFn","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","Target","_super","opt_target","_this","call","eventTarget_","pendingRemovals_","dispatching_","listeners_","addEventListener","type","listener","listeners","indexOf","push","dispatchEvent","event","evt","target","propagate","propagationStopped","pendingRemovals","removeEventListener","disposeInternal","getListeners","hasListener","opt_type","keys","index","splice","__importDefault","mod","__esModule","defineProperty","exports","getBlobFromURL_1","utils_1","URL_REGEX","resolveUrl","url","baseUrl","match","window","location","protocol","doc","document","implementation","createHTMLDocument","base","createElement","a","head","appendChild","body","href","escape","replace","urlToRegex","RegExp","parseURLs","str","result","raw","quotation","filter","isDataUrl","embed","cssString","resourceURL","baseURL","options","resolvedURL","Promise","resolve","then","default","data","toDataURL","getMimeType","dataURL","content","shouldEmbed","string","search","embedResources","urls","reduce","done","ret","abstract","Error","uidCounter_","getUid","obj","ol_uid","String","VERSION","listen","opt_this","opt_once","bind","originalListener_1","arguments","eventsKey","listenOnce","unlistenByKey","key","WOFF","JPEG","mimes","woff","woff2","ttf","eot","png","jpg","jpeg","gif","tiff","svg","parseExtension","exec","ext","toLowerCase","delay","ms","args","setTimeout","createImage","reject","image","Image","onload","onerror","crossOrigin","src","mimeType","getDataURLContent","split","toBlob","canvas","binaryString","atob","len","binaryArray","Uint8Array","charCodeAt","Blob","canvasToBlob","toArray","arrayLike","arr","l","px","node","styleProperty","getComputedStyle","getPropertyValue","parseFloat","getNodeWidth","leftBorder","rightBorder","scrollWidth","getNodeHeight","topBorder","bottomBorder","scrollHeight","getPixelRatio","devicePixelRatio","svgToDataURL","XMLSerializer","serializeToString","encodeURIComponent","html","getBlobFromImageURL","width","height","context","getContext","ratio","style","scale","drawImage","uuid","counter","randomFourChars","random","pow","toString","TIMEOUT","getBlobFromURL","cacheBust","test","Date","getTime","failed","reason","placeholder","imagePlaceholder","msg","message","console","error","deferred","fetch","response","blob","reader","FileReader","onloadend","readAsDataURL","catch","req","XMLHttpRequest","timeout","readyState","status","encoder","onreadystatechange","ontimeout","responseType","open","send","Projection","code_","code","units_","extent_","undefined","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","func","getPointResolutionFunc","RADIUS","HALF_SIZE","PI","EXTENT","WORLD_EXTENT","EPSG3857Projection","units","Units","METERS","point","PROJECTIONS","fromEPSG4326","input","opt_output","opt_dimension","dimension","output","halfSize","log","tan","toEPSG4326","atan","exp","METERS_PER_UNIT","EPSG4326Projection","opt_axisOrientation","DEGREES","transforms","add","source","destination","sourceCode","destinationCode","get","transform","cache","projection","cloneTransform","identityTransform","addProjection","addProjections","projections","forEach","projectionLike","opt_units","pointResolution","getter","toEPSG4326_1","getTransformFromProjections","vertices","addEquivalentProjections","addEquivalentTransforms","projections1","projections2","forwardTransform","inverseTransform","projection1","projection2","createProjection","defaultCode","fromLonLat","opt_projection","equivalent","equalUnits","transformFunc","sourceProjection","destinationProjection","getTransform","transformExtent","userProjection","getUserProjection","toUserCoordinate","fromUserCoordinate","destProjection","toUserExtent","fromUserExtent","addCommon","t","module","r","e","h","n","o","s","f","u","sqrt","m","floor","c","_maxEntries","_minEntries","ceil","clear","children","leaf","pop","all","_all","toBBox","collides","load","insert","_build","_splitRoot","_insert","remove","_condense","compareMinX","compareMinY","toJSON","fromJSON","_chooseSubtree","_split","_adjustParentBBoxes","_chooseSplitAxis","_chooseSplitIndex","v","M","_allDistMargin","sort","Observable","revision_","changed","getRevision","on","isArray","once","un","unByKey","assign","var_sources","TypeError","object","property","getValues","values","factory","MOUSE_PROPS","MOUSE_DEFAULTS","PointerEvent","inType","inDict","createEvent","initEvent","bubbles","cancelable","buttons","pressure","clientX","clientY","pointerId","tiltX","tiltY","twist","tangentialPressure","pointerType","hwTimestamp","isPrimary","detail","USE_MAP","Map","PointerMap","SparseArrayMap","array","set","k","delete","has","thisArg","CLONE_PROPS","CLONE_DEFAULTS","BOUNDARY_EVENTS","HAS_SVG_INSTANCE","SVGElementInstance","dispatcher","pointermap","eventMap","captureInfo","eventSources","eventSourceList","registerSource","name","newEvents","events","register","element","es","unregister","contains","container","contained","ex","down","inEvent","fireEvent","move","up","enter","leave","over","out","cancel","leaveOut","enterOver","eventHandler","_handledByPE","fn","addEvent","unlisten","removeEvent","eventName","boundHandler","makeEvent","relatedTarget","preventDefault","_target","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","map","MO","MutationObserver","WebKitMutationObserver","SELECTOR","OBSERVER_INIT","subtree","childList","attributes","attributeOldValue","attributeFilter","Installer","binder","addCallback","removeCallback","changedCallback","observer","mutationWatcher","shadowSelector","rule","watchSubtree","observe","enableOnSubtree","installOnLoad","installNewSubtree","findElements","addElement","querySelectorAll","removeElement","el","elementChanged","oldValue","concatLists","accum","list","concat","isElement","ELEMENT_NODE","flattenMutationTree","inNodes","tree","mutations","mutationHandler","added","addedNodes","removed","removedNodes","attrib2css","selector","styles","hasNativePE","MSPointerEvent","hasShadowRoot","ShadowDOMPolyfill","createShadowRoot","applyAttributeStyles","textContent","DEDUP_DIST","BUTTON_TO_BUTTONS","HAS_BUTTONS","MouseEvent","INSTALLER","mouseEvents","POINTER_ID","POINTER_TYPE","lastTouches","isEventSimulatedFromTouch","lts","abs","prepareEvent","pd","webkitForce","WEBKIT_FORCE_AT_MOUSE_DOWN","prepareButtonsForMove","which","mousedown","button","webkitmouseforcechanged","mousemove","mouseup","mouseover","mouseout","deactivateMouse","pointermap$1","DEDUP_TIMEOUT","ATTRIB","UP","DOWN","AUTO","touchEvents","elementAdded","getAttribute","touchActionToScrollType","_scrollType","elementRemoved","evts","oldSt","scrollTypes","includes","touchAction","firstTouch","isPrimaryTouch","inTouch","identifier","setPrimaryTouch","firstXY","X","Y","scrolling","removePrimaryPointer","inPointer","typeToButtons","touchToPointer","cte","currentTouchEvent","id","radiusX","webkitRadiusX","radiusY","webkitRadiusY","force","altitudeAngle","radToDeg","azimuthAngle","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","pointermap$2","HAS_BITMAP_TYPE","MSPOINTER_TYPE_MOUSE","msEvents","POINTER_TYPES","cleanup","MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSLostPointerCapture","MSGotPointerCapture","applyPolyfill","navigator","msPointerEnabled","tp","msMaxTouchPoints","enumerable","ontouchstart","assertActive","assertConnected","elem","parent","ownerDocument","inActiveButtonState","applyPolyfill$1","Element","setPointerCapture","defineProperties","msSetPointerCapture","msReleasePointerCapture","pointerevents","targetFinding","XY","XYZ","XYM","XYZM","TRUE","FALSE","VOID","memoizeOne","lastResult","lastArgs","lastThis","called","nextArgs","embedResources_1","embedBackground","clonedNode","background","setProperty","getPropertyPriority","embedImageNode","HTMLImageElement","embedChildren","childNodes","deferreds","child","embedImages","__importStar","parseCSS","cssText","css","cssKeyframeRegex","combinedCSSRegex","cssCommentsRegex","keyframesRegex","unified","fetchCSS","sheet","res","text","embedFonts","resolved","fontLocations","fontLoadedPromises","startsWith","URL","getCssRules","styleSheets","promises","cssRules","item","CSSRule","IMPORT_RULE","parsed","insertRule","inline_1","find","getWebFontRules","FONT_FACE_RULE","parseWebFontRules","embedWebFonts","rules","parentStyleSheet","cssStrings","join","styleNode","sytleContent","createTextNode","firstChild","insertBefore","DEFAULT_RADIUS","getDistance","c1","c2","opt_radius","radius","lat1","lat2","deltaLatBy2","deltaLonBy2","atan2","getLengthInternal","getLength","geometry","opt_options","getType","GEOMETRY_COLLECTION","coords","j","jj","POINT","MULTI_POINT","LINE_STRING","LINEAR_RING","getCoordinates","MULTI_LINE_STRING","POLYGON","MULTI_POLYGON","geometries","getGeometries","getAreaInternal","distance","bearing","lon1","dByR","lat","asin","lon","PROPERTYCHANGE","clamp","cosh","squaredSegmentDistance","squaredDistance","solveLinearSystem","mat","maxRow","maxEl","absValue","tmp","coef","toDegrees","angleInRadians","toRadians","angleInDegrees","modulo","lerp","AssertionError","path","tmpTransform","Geometry","extentRevision_","simplifiedGeometryMaxMinSquaredTolerance","simplifiedGeometryRevision","simplifyTransformedInternal","revision","squaredTolerance","opt_transform","getSimplifiedGeometry","simplifyTransformed","closestPointXY","closestPoint","minSquaredDistance","coord","getClosestPoint","opt_closestPoint","NaN","intersectsCoordinate","computeExtent","rotate","angle","anchor","sx","opt_sy","opt_anchor","simplify","tolerance","intersectsExtent","translate","sourceProj","TILE_PIXELS","inCoordinates","outCoordinates","pixelExtent","projectedExtent","assert","assertion","errorCode","cloneNode_1","embedWebFonts_1","embedImages_1","createSvgDataURL_1","applyStyleWithOptions_1","getImageSize","domNode","toSvgDataURL","_a","toCanvas","backgroundColor","fillStyle","fillRect","toPixelData","getImageData","toPng","toJpeg","quality","SimpleGeometry","layout","getFirstCoordinate","getFlatCoordinates","getLastCoordinate","getLayout","simplifiedGeometry","getSimplifiedGeometryInternal","simplifiedFlatCoordinates","getStride","setFlatCoordinates","getStrideForLayout","setCoordinates","opt_layout","setLayout","nesting","getLayoutForStride","sy","transformGeom2D","simpleGeometry","opt_dest","binarySearch","haystack","needle","opt_comparator","mid","cmp","comparator","numberSafeCompareFunction","low","high","found","linearFindNearest","direction","reverseSubArray","begin","extension","arr1","arr2","len1","isSorted","opt_func","opt_strict","compare","every","currentVal","tmp_","multiply","transform1","transform2","a1","b1","d1","e1","f1","a2","b2","d2","e2","f2","setFromArray","makeScale","compose","dx1","dy1","dx2","dy2","makeInverse","det","determinant","deflateCoordinate","deflateCoordinates","deflateCoordinatesArray","coordinatess","opt_ends","ends","deflateMultiCoordinatesArray","coordinatesss","opt_endss","endss","applyStyleWithOptions","formatCssText","formatCssProperties","priority","getPseudoElementStyle","className","pseudo","clonePseudoElement","nativeNode","styleElement","clonePseudoElements","transform2D","dest","anchorX","anchorY","createSvgDataURL","xmlns","createElementNS","foreignObject","setAttributeNS","clonePseudoElements_1","cloneSingleNode","HTMLCanvasElement","tagName","cloneNode","cloneChildren","clonedChild","cloneCssStyle","cloneInputValue","HTMLTextAreaElement","innerHTML","HTMLInputElement","setAttribute","decorate","isRoot","BaseEvent","stopPropagation","Disposable","disposed_","dispose","ObjectEvent","BaseObject","opt_values","values_","setProperties","getKeys","getProperties","notify","eventType","getChangeEventType","opt_silent","unset","changeEventTypeCache","Point","CIRCLE","Circle","setCenterAndRadius","delta","getRadius","getRadiusSquared_","circleExtent","setCenter","setRadius","ADD","REMOVE","Property","LENGTH","CollectionEvent","opt_element","opt_index","Event","Collection","opt_array","unique_","unique","array_","assertUnique_","updateLength_","getArray","insertAt","CollectionEventType","removeAt","prev","setAt","opt_except","MapEvent","opt_frameState","frameState","MapBrowserEvent","browserEvent","opt_dragging","originalEvent","pixel_","coordinate_","dragging","getEventPixel","pixel","configurable","getCoordinateFromPixel","ua","userAgent","FIREFOX","WEBKIT","MAC","DEVICE_PIXEL_RATIO","IMAGE_DECODE","decode","SINGLECLICK","EventType","POINTERDRAG","POINTERMOVE","POINTERDOWN","POINTERUP","POINTEROVER","POINTEROUT","POINTERENTER","POINTERLEAVE","POINTERCANCEL","MapBrowserPointerEvent","pointerEvent","MapBrowserEventHandler","moveTolerance","map_","clickTimeoutId_","dragging_","dragListenerKeys_","moveTolerance_","down_","getViewport","activePointers_","trackedTouches_","element_","pointerdownListenerKey_","handlePointerDown_","relayedListenerKey_","relayEvent_","emulateClick_","newEvent","MapBrowserEventType","clearTimeout","updateActivePointers_","handlePointerUp_","isMouseActionButton_","handlePointerMove_","isMoving_","POSTRENDER","MOVESTART","MOVEEND","LAYERGROUP","SIZE","TARGET","VIEW","PRERENDER","PRECOMPOSE","POSTCOMPOSE","RENDERCOMPLETE","IDLE","LOADING","LOADED","EMPTY","ABORT","PriorityQueue","priorityFunction","keyFunction","priorityFunction_","keyFunction_","elements_","priorities_","queuedElements_","dequeue","elements","priorities","siftUp_","elementKey","enqueue","siftDown_","getCount","getLeftChildIndex_","getRightChildIndex_","getParentIndex_","heapify_","isKeyQueued","isQueued","count","startIndex","lIndex","rIndex","smallerChildIndex","parentIndex","reprioritize","TileQueue","tilePriorityFunction","tileChangeCallback","getKey","boundHandleTileChange_","handleTileChange","tileChangeCallback_","tilesLoading_","tilesLoadingKeys_","tile","getTilesLoading","state","getState","hifi","TileState","tileKey","loadMoreTiles","maxTotalLoading","maxNewLoads","newLoads","abortedTiles","DEFAULT_MAX_ZOOM","DEFAULT_TILE_SIZE","createExtent","onlyCenter","smooth","opt_isMoving","viewWidth","viewHeight","none","getViewportClampedResolution","maxExtent","viewportSize","xResolution","yResolution","getSmoothClampedResolution","maxResolution","minResolution","createSnapToResolutions","resolutions","opt_smooth","opt_maxExtent","cappedMaxRes","capped","z","createSnapToPower","power","opt_minResolution","minZoomLevel","cappedZoomLevel","zoomLevel","newResolution","createMinMaxResolution","disable","createSnapToN","theta","createSnapToZero","opt_tolerance","ANIMATING","INTERACTING","CENTER","RESOLUTION","ROTATION","compareVersions","v1","v2","s1","s2","n1","parseInt","n2","createStringXY","opt_fractionDigits","toStringXY","template","toFixed","coordinate1","coordinate2","cosAngle","sinAngle","coord1","coord2","easeIn","easeOut","inAndOut","linear","twiceArea","linearRingss","assignClosest","offset1","offset2","maxSquaredDelta","squaredDelta","arrayMaxSquaredDelta","multiArrayMaxSquaredDelta","assignClosestPoint","maxDelta","isRing","opt_tmpPoint","tmpPoint","assignClosestArrayPoint","assignClosestMultiArrayPoint","inflateCoordinates","opt_coordinates","inflateCoordinatesArray","opt_coordinatess","inflateMultiCoordinatesArray","opt_coordinatesss","douglasPeucker","simplifiedOffset","markers","stack","last","first","maxSquaredDistance","squaredDistance_1","douglasPeuckerArray","simplifiedEnds","snap","round","quantize","quantizeArray","quantizeMultiArray","simplifiedEndss","LinearRing","maxDelta_","maxDeltaRevision_","GeometryLayout","GeometryType","deflate","linearRingContainsExtent","outside","linearRingContainsXY","wn","linearRingsContainsXY","linearRingssContainsXY","getInteriorPointOfArray","flatCenters","flatCentersOffset","intersections","rr","pointX","maxSegmentLength","segmentLength","isNaN","getInteriorPointsOfMultiArray","interiorPoints","point1","point2","intersectsLineString","coordinatesExtent","intersectsLineStringArray","intersectsLinearRing","intersectsLinearRingArray","intersectsLinearRingMultiArray","linearRingIsClockwise","edge","linearRingsAreOriented","opt_right","isClockwise","linearRingssAreOriented","orientLinearRings","orientLinearRingsArray","Polygon","ends_","flatInteriorPointRevision_","flatInteriorPoint_","orientedRevision_","orientedFlatCoordinates_","appendLinearRing","linearRing","getOrientedFlatCoordinates","getEnds","getFlatInteriorPoint","flatCenter","getInteriorPoint","getLinearRingCount","getLinearRing","getLinearRings","linearRings","circular","opt_n","opt_sphereRadius","sphere","fromExtent","DEFAULT_MIN_ZOOM","View","hints_","animations_","updateAnimationKey_","projection_","targetCenter_","targetResolution_","targetRotation_","applyOptions_","properties","resolutionConstraintInfo","createResolutionConstraint","maxResolution_","minResolution_","zoomFactor_","zoomFactor","resolutions_","minZoom_","minZoom","centerConstraint","createCenterConstraint","resolutionConstraint","constraint","rotationConstraint","createRotationConstraint","constraints_","setRotation","setCenterInternal","setResolution","zoom","setZoom","resolveConstraints","options_","getUpdatedOptions_","newOptions","getResolution","getZoom","getCenterInternal","getRotation","animate","var_args","isDef","getAnimating","getProjection","animateInternal","animationCount","animationCallback","now","series","animation","complete","duration","easing","sourceCenter","targetCenter","sourceResolution","targetResolution","getResolutionForZoom","sourceRotation","targetRotation","isNoopAnimation","setHint","ViewHint","updateAnimations_","getInteracting","cancelAnimations","cancelAnimationFrame","more","seriesComplete","elapsed","fraction","progress","getSizeFromViewport_","constrainedResolution","calculateCenterZoom","applyTargetState_","constrainedRotation","calculateCenterRotate","currentCenter","currentResolution","opt_rotation","metrics","w","ViewProperty","getConstraints","getHints","opt_hints","calculateExtent","opt_size","calculateExtentInternal","getMaxResolution","getMinResolution","getMaxZoom","getZoomForResolution","setMaxZoom","maxZoom","getMinZoom","setMinZoom","setConstrainResolution","enabled","constrainResolution","getResolutions","getResolutionForExtent","getResolutionForExtentInternal","getResolutionForValueFunction","opt_power","getValueForResolutionFunction","nearest","baseLevel","fit","geometryOrExtent","fitInternal","padding","minRotX","minRotY","maxRotX","maxRotY","rotX","rotY","getConstrainedResolution","centerRotX","centerRotY","centerX","centerY","getConstrainedCenter","centerOn","position","centerOnInternal","adjustCenter","deltaCoordinates","adjustCenterInternal","adjustResolution","adjustResolutionInternal","isMoving","adjustZoom","adjustRotation","adjustRotationInternal","newRotation","hint","opt_doNotCancelAnims","opt_forceMoving","newCenter","opt_duration","opt_resolutionDirection","beginInteraction","endInteraction","endInteractionInternal","opt_targetResolution","getConstrainedZoom","targetZoom","opt_direction","targetRes","returnValue","smoothExtentConstraint","constrainOnlyCenter","multiWorld","defaultMaxZoom","defaultZoomFactor","smoothResolutionConstraint","projExtent","defaultMaxResolution","defaultMinResolution","enableRotation","constrainRotation","createCanvasContext2D","opt_width","opt_height","offsetWidth","marginLeft","marginRight","offsetHeight","marginTop","marginBottom","replaceNode","newNode","oldNode","replaceChild","removeNode","removeChild","removeChildren","lastChild","replaceChildren","oldChildren","oldChild","newChild","OPACITY","VISIBLE","Z_INDEX","MAX_RESOLUTION","MIN_RESOLUTION","MAX_ZOOM","MIN_ZOOM","SOURCE","BaseLayer","opacity","visible","zIndex","className_","state_","getClassName","getLayerState","opt_managed","layer","managed","getZIndex","getOpacity","sourceState","getSourceState","getVisible","getLayersArray","getLayerStatesArray","opt_states","setMaxResolution","setMinResolution","setOpacity","setVisible","setZIndex","zindex","Base","UNDEFINED","READY","LAYERS","LayerGroup","baseOptions","layers","layersListenerKeys_","listenerKeys_","handleLayersChanged_","setLayers","handleLayerChange_","getLayers","handleLayersAdd_","handleLayersRemove_","layersArray","ObjectEventType","collectionEvent","states","pos","ownLayerState","layerState","hasArea","toSize","setTouchAction","msTouchAction","PluggableMap","optionsInternal","createOptionsInternal","boundHandleBrowserEvent_","handleBrowserEvent","maxTilesLoading_","maxTilesLoading","pixelRatio_","pixelRatio","postRenderTimeoutHandle_","animationDelayKey_","animationDelay_","renderFrame_","coordinateToPixelTransform_","pixelToCoordinateTransform_","frameIndex_","frameState_","previousExtent_","viewPropertyListenerKey_","viewChangeListenerKey_","layerGroupPropertyListenerKeys_","viewport_","overflow","overlayContainer_","overlayContainerStopEvent_","mapBrowserEventHandler_","handleMapBrowserEvent","keyboardEventTarget_","keyboardEventTarget","keyHandlerKeys_","focusHandlerKeys_","controls","interactions","overlays_","overlays","overlayIdIndex_","renderer_","handleResize_","postRenderFunctions_","tileQueue_","getTilePriority","handleTileChange_","MapProperty","handleLayerGroupChanged_","handleViewChanged_","handleSizeChanged_","handleTargetChanged_","control","setMap","interaction","addOverlayInternal_","overlay","getId","createRenderer","addControl","getControls","addInteraction","getInteractions","addLayer","getLayerGroup","addOverlay","getOverlays","setTarget","forEachFeatureAtPixel","getCoordinateFromPixelInternal","hitTolerance","layerFilter","checkWrapped","forEachFeatureAtCoordinate","getFeaturesAtPixel","features","feature","forEachLayerAtPixel","hasFeatureAtPixel","hasFeatureAtCoordinate","getEventCoordinate","getEventCoordinateInternal","viewportPosition","getBoundingClientRect","eventPosition","top","getTargetElement","getElementById","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","cont","handleEvent","handlePostRender","tileQueue","hints","viewHints","lowOnFrameBudget","time","dispatchRenderEvent","postRenderFunctions","render","targetElement","hasFocus","hasAttribute","activeElement","updateSize","handleViewPropertyChanged_","view","layerGroup","isRendered","renderSync","redrawText","layerStates","hasRenderer","handleFontsChanged","removeControl","removeInteraction","removeLayer","removeOverlay","previousFrameState","declutterItems","layerIndex","usedTiles","renderFrame","moveStart","MapEventType","idle","setLayerGroup","setSize","setView","computedStyle","Control","target_","listenerKeys","getMap","CLASS_HIDDEN","CLASS_SELECTABLE","CLASS_UNSELECTABLE","CLASS_UNSUPPORTED","CLASS_CONTROL","CLASS_COLLAPSED","getFontParameters","font","family","fontFamily","fontWeight","fontStyle","families","weight","Layer","mapPrecomposeKey_","mapRenderKey_","sourceChangeKey_","handleSourcePropertyChange_","setSource","handleSourceChange_","getFeatures","layerRenderer","prepareFrame","renderEvent","inView","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","updateElement_","display","handleToggle_","classList","toggle","getCollapsible","setCollapsed","getCollapsed","mapEvent","Rotate","callResetNorth_","resetNorth","duration_","autoHide_","autoHide","rotation_","resetNorth_","Zoom","zoomInLabel","zoomOutLabel","zoomInTipLabel","zoomOutTipLabel","inElement","outElement","zoomByDelta_","currentZoom","newZoom","defaults","zoomControl","zoomOptions","rotateControl","rotateOptions","attributionControl","attribution","attributionOptions","Kinetic","decay","minVelocity","decay_","minVelocity_","delay_","points_","angle_","initialVelocity_","update","lastIndex","firstIndex","getAngle","ACTIVE","Interaction","setActive","active","pan","zoomByDelta","DoubleClickZoom","delta_","stopEvent","altShiftKeysOnly","always","mouseActionButton","noModifierKeys","shiftKeyOnly","targetNotEditable","mouseOnly","primaryAction","PointerInteraction","handleDownEvent","handleDragEvent","handleMoveEvent","handleUpEvent","stopDown","handlingDownUpSequence","trackedPointers_","targetPointers","updateTrackedPointers_","handledUp","handled","isPointerDraggingEvent","event_1","pointerEvents","Pointer","DragPan","kinetic_","kinetic","lastCentroid","lastPointersCount_","panning_","condition_","condition","defaultCondition","noKinetic_","centroid","centerpx","DragRotate","lastAngle_","RenderBox","geometry_","startPixel_","endPixel_","render_","startPixel","endPixel","setPixels","createOrUpdateGeometry","pixels","getGeometry","DragBoxEventType","BOXSTART","BOXDRAG","BOXEND","DragBoxEvent","DragBox","box_","minArea_","minArea","onBoxEnd_","onBoxEnd","boxEndCondition_","boxEndCondition","defaultBoxEndCondition","DragZoom","out_","mapExtent","boxPixelExtent","factor","KeyboardPan","defaultCondition_","pixelDelta_","pixelDelta","keyEvent","keyCode","KeyCode","mapUnitsDelta","KeyboardZoom","charCode","Mode","TRACKPAD","MouseWheelZoom","totalDelta_","lastDelta_","timeout_","useAnchor_","useAnchor","lastAnchor_","startTime_","timeoutId_","mode_","trackpadEventGap_","trackpadTimeoutId_","trackpadDeltaPerZoom_","endInteraction_","sign","wheelEvent","deltaMode","WheelEvent","DOM_DELTA_PIXEL","DOM_DELTA_LINE","timeLeft","handleWheelZoom_","setMouseAnchor","PinchRotate","pointerOptions","anchor_","rotating_","rotationDelta_","threshold_","threshold","rotationDelta","touch0","touch1","PinchZoom","lastDistance_","lastScaleDelta_","scaleDelta","altShiftDragRotate","doubleClickZoom","zoomDelta","zoomDuration","dragPan","onFocusOnly","pinchRotate","pinchZoom","keyboard","mouseWheelZoom","shiftDragZoom","RenderEvent","opt_inversePixelTransform","opt_context","inversePixelTransform","HEX_COLOR_RE_","NAMED_COLOR_RE_","asString","color","fromNamed","rgb","fromString","MAX_CACHE_SIZE","cacheSize","fromStringInternal_","asArray","g","hasAlpha","substr","Number","normalize","IconImageCache","cache_","cacheSize_","maxCacheSize_","canExpireCache","expire","iconImage","maxCacheSize","colorString","shared","asColorLike","measureFont","VectorContext","drawCustom","renderer","drawGeometry","setStyle","drawCircle","circleGeometry","drawFeature","drawGeometryCollection","geometryCollectionGeometry","drawLineString","lineStringGeometry","drawMultiLineString","multiLineStringGeometry","drawMultiPoint","multiPointGeometry","drawMultiPolygon","multiPolygonGeometry","drawPoint","pointGeometry","drawPolygon","polygonGeometry","drawText","setFillStrokeStyle","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","defaultFont","defaultFillStyle","defaultLineCap","defaultLineDash","defaultLineDashOffset","defaultLineJoin","defaultMiterLimit","defaultStrokeStyle","defaultTextAlign","defaultTextBaseline","defaultPadding","defaultLineWidth","labelCache","checkedFonts","measureContext","textHeights","checkFont","interval","referenceWidth","retries","checked","referenceFonts","isAvailable","getMeasureContext","available","referenceFont","measureText","check","clearInterval","fontSpec","setInterval","measureTextHeight","div","heights","margin","measureTextWidth","measureTextWidths","lines","widths","numLines","currentWidth","rotateAtOffset","offsetX","offsetY","resetTransform","originX","originY","alpha","globalAlpha","setTransform","CanvasImmediateRenderer","viewRotation","opt_squaredTolerance","opt_userTransform","context_","transform_","viewRotation_","squaredTolerance_","userTransform_","contextFillState_","contextStrokeState_","contextTextState_","fillState_","strokeState_","image_","imageAnchorX_","imageAnchorY_","imageHeight_","imageOpacity_","imageOriginX_","imageOriginY_","imageRotateWithView_","imageRotation_","imageScale_","imageWidth_","text_","textOffsetX_","textOffsetY_","textRotateWithView_","textRotation_","textScale_","textFillState_","textStrokeState_","textState_","pixelCoordinates_","tmpLocalTransform_","drawImages_","pixelCoordinates","localTransform","drawText_","setContextFillState_","setContextStrokeState_","setContextTextState_","strokeText","fillText","moveToLineTo_","close","moveTo","lineTo","closePath","drawRings_","beginPath","arc","fill","stroke","getFill","getStroke","getImage","getText","getGeometryFunction","getGeometriesArray","flatMidpoint","getFlatMidpoint","geometryExtent","flatMidpoints","getFlatMidpoints","flatInteriorPoint","getEndss","flatInteriorPoints","getFlatInteriorPoints","fillState","contextFillState","strokeState","contextStrokeState","lineCap","setLineDash","lineDash","lineDashOffset","lineJoin","lineWidth","miterLimit","textState","contextTextState","textAlign","textBaseline","fillStyleColor","getColor","strokeStyleColor","strokeStyleLineCap","getLineCap","strokeStyleLineDash","getLineDash","strokeStyleLineDashOffset","getLineDashOffset","strokeStyleLineJoin","getLineJoin","strokeStyleWidth","strokeStyleMiterLimit","getMiterLimit","imageAnchor","getAnchor","imageImage","imageOrigin","getOrigin","imageSize","getRotateWithView","getScale","textFillStyle","textFillStyleColor","textStrokeStyle","textStrokeStyleColor","textStrokeStyleLineCap","textStrokeStyleLineDash","textStrokeStyleLineDashOffset","textStrokeStyleLineJoin","textStrokeStyleWidth","textStrokeStyleMiterLimit","textFont","getFont","textOffsetX","getOffsetX","textOffsetY","getOffsetY","textRotateWithView","textRotation","textScale","textText","textTextAlign","getTextAlign","textTextBaseline","getTextBaseline","DEFAULT","IMAGE","TEXT","SIMPLIFY_TOLERANCE","GEOMETRY_RENDERERS","renderPointGeometry","renderLineStringGeometry","renderPolygonGeometry","renderMultiPointGeometry","renderMultiLineStringGeometry","renderMultiPolygonGeometry","renderGeometryCollectionGeometry","renderCircleGeometry","defaultOrder","feature1","feature2","getSquaredTolerance","getTolerance","builderGroup","circleReplay","getBuilder","BuilderType","textReplay","addDeclutter","renderFeature","replayGroup","imageState","getImageState","ImageState","unlistenImageChange","listenImageChange","renderFeatureInternal","renderGeometry","geometryRenderer","replay","lineStringReplay","polygonReplay","imageReplay","getVectorContext","userTransform","renderDeclutterItems","declutterTree","items","zIndexItems","renderDeclutter","MapRenderer","declutterTree_","calculateMatrices2D","thisArg2","translatedCoordinate","offsets","projectionExtent","worldWidth","worldsAway","declutteredFeatures","numLayers","tmpCoord","getWrapX","callback_1","hasFeature","scheduleExpireIconCache","expireIconCache","CompositeMapRenderer","labelCacheKey_","children_","previousElement","getDataAtPixel","Composite","BOTTOM_CENTER","CENTER_LEFT","CENTER_CENTER","CENTER_RIGHT","TOP_CENTER","ELEMENT","MAP","OFFSET","POSITION","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","getPosition","getPositioning","updatePixelPosition","panIntoView","mapRect","getRect","overlayRect","offsetLeft","offsetRight","offsetTop","offsetBottom","centerPx","newCenterPx","box","pageXOffset","pageYOffset","mapSize","updateRenderedPosition","bottom","top_1","getOptions","Feature","opt_geometryOrProperties","id_","geometryName_","style_","styleFunction_","geometryChangeKey_","handleGeometryChanged_","setGeometry","setGeometryName","getGeometryName","getStyle","getStyleFunction","handleGeometryChange_","createStyleFunction","setId","styles_1","FullScreen","cssClassName_","labelNode_","labelActive","labelActiveNode_","button_","setClassName_","isFullScreen","isFullScreenSupported","keys_","source_","handleFullScreen_","exitFullScreen","requestFullScreenWithKeys","requestFullScreen","handleFullScreenChange_","fullscreen","activeClassName","inactiveClassName","nextClassName","webkitRequestFullscreen","msRequestFullscreen","msFullscreenEnabled","requestFullscreen","fullscreenEnabled","webkitIsFullScreen","msFullscreenElement","fullscreenElement","exitFullscreen","msExitFullscreen","webkitExitFullscreen","MAX_RATIO","MIN_RATIO","ControlledMap","OverviewMap","boundHandleRotationChanged_","handleRotationChanged_","rotateWithView_","rotateWithView","viewExtent_","ovmapDiv_","ovmap_","ovmap","boxSizing","boxOverlay_","scope","overlayBox","computeDesiredMousePosition","mousePosition","endMoving","oldMap","oldView","unbindView_","handleMapPropertyChange_","bindView_","resetExtent_","newView","validateExtent_","ovmapSize","ovview","ovextent","topLeftPixel","bottomRightPixel","boxWidth","boxHeight","ovmapWidth","ovmapHeight","recenter_","steps","LN2","updateBox_","ovresolution","setRotateWithView","getOverviewMap","UNITS_PROP","IMPERIAL","NAUTICAL","METRIC","US","LEADING_DIGITS","ScaleLine","bar","innerElement_","viewState_","minWidth_","minWidth","renderedWidth_","renderedHTML_","handleUnitsChanged_","setUnits","scaleBar_","scaleBarSteps_","scaleBarText_","pointResolutionUnits","nominalCount","suffix","metersPerDegree","decimalCount","decimal","createScaleBar","scaleBarText","mapScale","getScaleForResolution","toLocaleString","scaleSteps","stepWidth","createMarker","createStepText","isLast","lengthString","dpi","mpu","inchesPerMeter","Direction","VERTICAL","HORIZONTAL","ZoomSlider","currentResolution_","direction_","heightLimit_","widthLimit_","startX_","startY_","thumbSize_","sliderInitialized_","thumbElement","containerElement","handleDraggerStart_","handleDraggerDrag_","handleDraggerEnd_","handleContainerClick_","initSlider_","containerSize","thumb","thumbWidth","thumbHeight","relativePosition","getRelativePosition_","getResolutionForPosition_","firstElementChild","drag","setThumbPosition_","getPositionForResolution_","amount","ZoomToExtent","handleZoomToExtent","PROJECTION","COORDINATE_FORMAT","MousePosition","handleProjectionChanged_","coordinateFormat","setCoordinateFormat","setProjection","undefinedHTML_","undefinedHTML","renderOnMouseOut_","mapProjection_","getCoordinateFormat","handleMouseMove","updateHTML_","handleMouseOut","viewport","format","interpolatePoint","pointY","length_1","cumulativeLengths","lineStringCoordinateAtM","extrapolate","lo","hi","m0","m1","lineStringsCoordinateAtM","interpolate","lineStringLength","LineString","flatMidpoint_","flatMidpointRevision_","appendCoordinate","forEachSegment","getCoordinateAtM","opt_extrapolate","getCoordinateAt","MultiLineString","lineStrings","lineString","appendLineString","opt_interpolate","getLineString","getLineStrings","midpoints","midpoint","MultiPoint","appendPoint","multiPoint","getPoint","getPoints","points","MultiPolygon","endss_","flatInteriorPointsRevision_","flatInteriorPoints_","polygons","polygon","appendPolygon","newEndss","getInteriorPoints","getPolygon","prevEnds","getPolygons","lastEnds","ImageStyle","opacity_","scale_","getHitDetectionImage","getHitDetectionImageSize","setScale","RegularShape","canvas_","hitDetectionCanvas_","fill_","origin_","radius_","radius1","radius2_","radius2","stroke_","size_","imageSize_","hitDetectionImageSize_","getRadius2","strokeWidth","renderOptions","draw_","createHitDetectionCanvas_","angle0","radiusC","drawHitDetectionCanvas_","CircleStyle","Fill","color_","setColor","Stroke","lineCap_","lineDash_","lineDashOffset_","lineJoin_","miterLimit_","width_","setLineCap","setLineDashOffset","setLineJoin","setMiterLimit","setWidth","Style","geometryFunction_","defaultGeometryFunction","zIndex_","setRenderer","setFill","setImage","setStroke","setText","toFunction","styleFunction","defaultStyles","createDefaultStyle","createEditingStyle","white","blue","RENDER_ORDER","BaseVectorLayer","renderBuffer","updateWhileAnimating","updateWhileInteracting","declutter_","declutter","renderBuffer_","updateWhileAnimating_","updateWhileInteracting_","getDeclutter","getRenderBuffer","getRenderOrder","getUpdateWhileAnimating","getUpdateWhileInteracting","setRenderOrder","renderOrder","BaseVector","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","Relationship","drawCustomCoordinates_","builderEnds","builderEnd","beginGeometry","builderEndss","builderBegin","myEnds","endGeometry","finish","reverseHitDetectionInstructions","instruction","createFill","fillInstruction","applyStroke","createStroke","updateFillStyle","currentFillStyle","updateStrokeStyle","currentStrokeStyle","currentLineCap","currentLineDash","currentLineDashOffset","currentLineJoin","currentLineWidth","currentMiterLimit","endGeometryInstruction","CanvasImageBuilder","declutterGroups_","hitDetectionImage_","anchorX_","anchorY_","height_","originX_","originY_","drawCoordinates_","myBegin","declutterGroups","hitDetectionImage","origin","CanvasLineStringBuilder","drawFlatCoordinates_","moveToLineToInstruction","lastStroke","CanvasPolygonBuilder","drawFlatCoordinatess_","numEnds","setFillStrokeStyles_","circleInstruction","matchingChunk","maxAngle","acos","m12","m23","x12","y12","x23","y23","chunkStart","chunkEnd","chunkM","LINE","TEXT_ALIGN","CanvasTextBuilder","labels_","fillStates","strokeStates","textStates","textKey_","fillKey_","strokeKey_","geometryType","placement","TextPlacement","flatOffset","flatEnd","oo","range","declutterGroup","drawChars_","geometryWidths","saveTextStates_","backgroundFill","backgroundStroke","pixelRatio_1","strokeKey","textKey","fillKey","baseline","getOverflow","getMaxAngle","getPlacement","getBackgroundFill","getBackgroundStroke","getPadding","BATCH_CONSTRUCTORS","PolygonBuilder","Builder","ImageBuilder","LineStringBuilder","TextBuilder","BuilderGroup","tolerance_","maxExtent_","resolution_","buildersByZIndex_","group","builderInstructions","zKey","builders","builderKey","builderInstruction","builderType","zIndexKey","replays","Constructor","drawTextOnPath","startM","measureAndCacheTextWidth","numChars","previousAngle","segmentM","angleChanged","char","charLength","charM","segmentPos","p3","p4","Executor","overlaps","alignFill_","coordinateCache_","renderedTransform_","widths_","getTextImage","align","lineHeight","renderWidth","leftRight","replayTextBackground_","p1","p2","strokeInstruction","setStrokeStyle_","replayImage_","snapToPixel","fillStroke","boxW","boxH","boxX","boxY","strokePadding","declutterArgs","origin_1","repeatSize","save","restore","groupCount","declutterData","currentAlpha","drawTextImageWithPointPlacement_","execute_","featureCallback","opt_hitExtent","dd","prevX","prevY","roundX","roundY","pendingFill","pendingStroke","lastFillInstruction","lastStrokeInstruction","coordinateCache","viewRotationFromTransform","batchSize","labelWithAnchor","widthIndex","declutterGroupIndex","measurePixelRatio","pixelRatioScale","cachedWidths","pathLength","textLength","parts","cc","chars","part","execute","executeHitDetection","opt_featureCallback","ORDER","ExecutorGroup","allInstructions","opt_renderBuffer","overlaps_","executorsByZIndex_","hitDetectionContext_","hitDetectionTransform_","createExecutors_","clip","flatClipCoords","getClipCoords","executors","instructionByZindex","hasExecutors","candidates","contextSize","hitExtent","clearRect","mask","getCircleArray","imageData","i_1","j_1","result_1","executor","zs","opt_builderTypes","opt_declutterReplays","builderTypes","circleArrayCache","0","fillCircleArrayRowToMiddle","arraySize","replayDeclutter","declutterReplays","zz","executorData","currentExecutor","LayerRenderer","boundHandleImageChange_","handleImageChange_","layer_","loadedTileCallback","tiles","tileCoord","createLoadedTileFinder","tileRange","forEachLoadedTile","getLayer","renderIfReadyAndVisible","loadImage","CanvasLayerRenderer","renderedResolution","tempTransform_","pixelTransform","containerReused","createTransformStringCanvas_","useContainer","layerClassName","transformOrigin","halfWidth","halfHeight","topLeft","topRight","bottomRight","bottomLeft","clipUnrotated","inverted","dispatchRenderEvent_","preRender","postRender","getRenderTransform","renderPixel","err","createTransformString","FRACTION","PIXELS","ImageBase","ImageWrapper","imageLoadFunction","src_","unlisten_","imageLoadFunction_","handleImageError_","unlistenImage_","handleImageLoad_","listenImage","loadHandler","errorHandler","img","promise","listening_1","IconImage","imageState_","tainted_","isTainted_","dispatchChangeEvent_","replaceColor_","getSrc","ctx","imgData","putImageData","Icon","normalizedAnchor_","anchorOrigin_","anchorOrigin","IconOrigin","anchorXUnits_","anchorXUnits","IconAnchorUnits","anchorYUnits_","anchorYUnits","crossOrigin_","imgSize","iconImage_","offset_","offsetOrigin_","offsetOrigin","setAnchor","iconImageSize","createHitDetectionImageData","imageSmoothingEnabled","featureCount","indexFactor","featuresByZIndex","featureStyleFunction","originalStyle","canvas_1","imgContext","width_1","height_1","iconContext","byGeometryType","zIndexKeys","geomAndStyle","kk","hitDetect","resultFeatures","CanvasVectorLayerRenderer","vectorLayer","boundHandleStyleImageChange_","handleStyleImageChange_","animatingOrInteracting_","dirty_","hitDetectionImageData_","renderedFeatures_","renderedRevision_","renderedResolution_","renderedExtent_","renderedRotation_","renderedCenter_","renderedProjection_","renderedRenderOrder_","replayGroup_","replayGroupChanged","canvasTransform","vectorSource","clipped","layerExtent","world","transform_1","transform_2","viewHints_1","layer_1","features_1","animating","interacting","frameStateExtent","vectorLayerRevision","vectorLayerRenderBuffer","vectorLayerRenderOrder","gutter","loadFeatures","dirty","userExtent","getFeaturesInExtent","replayGroupInstructions","executorGroup","getOverlaps","VectorLayer","Vector","ARRAY_BUFFER","JSON","XML","withCredentials","loadFeaturesXhr","success","failure","xhr","FormatType","responseText","responseXML","DOMParser","parseFromString","readFeatures","featureProjection","readProjection","dataProjection","sourceOrTile","addFeatures","Source","attributions_","adaptAttributions","attributionsCollapsible_","attributionsCollapsible","wrapX_","wrapX","refresh","setAttributions","setState","attributionLike","ADDFEATURE","CHANGEFEATURE","REMOVEFEATURE","RBush","opt_maxEntries","rbush_","items_","extents","uid","bbox","getAll","getInExtent","forEach_","forEachInExtent","rbush","VectorSourceEvent","opt_feature","VectorSource","loader_","format_","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_2","length_3","modifyingCollection","removeFeature","opt_fast","featureId","removeFeatureInternal","clearEvent","forEachFeature","forEachFeatureAtCoordinateDirect","forEachFeatureInExtent","forEachFeatureIntersectingExtent","getFeaturesCollection","getFeaturesAtCoordinate","getClosestFeatureToCoordinate","opt_filter","closestFeature","previousMinSquaredDistance","minDistance","getFeatureById","getFeatureByUid","getFormat","getUrl","sid","removeFromIdIndex_","loadedExtentsRtree","extentsToLoad","_loop_1","extentToLoad","alreadyLoaded","this_1","removeLoadedExtent","setLoader","setUrl","DrawEventType","DRAWSTART","DRAWEND","DrawEvent","Draw","shouldHandle_","downPx_","downTimeout_","lastDragTime_","freehand_","features_","snapTolerance_","snapTolerance","type_","getMode","stopClick_","stopClick","minPoints_","minPoints","maxPoints_","maxPoints","finishCondition_","finishCondition","geometryFunction","opt_geometry","circle","squaredLength","Constructor_1","mode_1","dragVertexDelay_","dragVertexDelay","finishCoordinate_","sketchFeature_","sketchPoint_","sketchCoords_","sketchLine_","sketchLineCoords_","squaredClickTolerance_","clickTolerance","overlay_","getDefaultStyleFunction","geometryName","freehandCondition_","freehand","freehandCondition","updateState_","getOverlay","pass","addToDrawing_","startDrawing_","circleMode","finishDrawing","atFinish_","abortDrawing_","downPx","clickPx","modifyDrawing_","createOrUpdateSketchPoint_","at","potentiallyDone","potentiallyFinishCoordinates","sketchCoords","finishCoordinate","finishPixel","sketchPointGeom","updateSketchFeatures_","sketchLineGeom","ring","removeLastPoint","sketchFeature","sketchFeatures","overlaySource","mode","FeatureFormat","defaultFeatureProjection","getReadOptions","adaptOptions","readFeature","readGeometry","writeFeature","writeFeatures","writeGeometry","transformGeometryWithOptions","write","transformed","decimals","power_1","TextFeature","readFeatureFromText","readFeaturesFromText","readGeometryFromText","readProjectionFromText","writeFeatureText","writeFeaturesText","writeGeometryText","GeometryCollection","opt_geometries","geometries_","changeEventsKeys_","listenGeometriesChange_","unlistenGeometriesChange_","geometryCollection","setGeometries","cloneGeometries","simplifiedGeometries","simplified","simplifiedGeometryCollection","setGeometriesArray","clonedGeometries","GeometryConstructor","Z","ZM","TokenType","LEFT_PAREN","RIGHT_PAREN","NUMBER","COMMA","EOF","WKTGeometryType","toUpperCase","Lexer","wkt","index_","isAlpha_","isNumeric_","opt_decimal","isWhiteSpace_","nextChar_","charAt","nextToken","readNumber_","readText_","scientificNotation","substring","Parser","lexer","lexer_","token_","layout_","consume_","isTokenType","isMatch","parse","parseGeometry_","parseGeometryLayout_","dimToken","dimInfo","parseGeometryCollectionText_","isEmptyGeometry_","formatErrorMessage_","parsePointText_","parsePoint_","parseLineStringText_","parsePointList_","parsePolygonText_","parseLineStringTextList_","parseMultiPointText_","parsePointTextList_","parseMultiLineStringText_","parseMultiPolygonText_","parsePolygonTextList_","dimensions","token","geomType","ctor","WKT","splitCollection_","splitCollection","parse_","parser","geom","encode","encodePointGeometry","encodeMultiPointGeometry","components","encodeGeometryCollectionGeometry","geoms","encodeLineStringGeometry","encodeMultiLineStringGeometry","encodePolygonGeometry","rings","encodeMultiPolygonGeometry","encodeGeometryLayout","GeometryEncoder","geometryEncoder","enc","DOCUMENT","createDocument","XML_SCHEMA_INSTANCE_URI","namespaceURI","qualifiedName","getAllTextContent","normalizeWhitespace","getAllTextContent_","accumulator","CDATA_SECTION_NODE","TEXT_NODE","nodeValue","nextSibling","isDocument","xml","makeArrayExtender","valueReader","objectStack","makeArrayPusher","makeReplacer","makeObjectPropertySetter","opt_property","localName","makeChildAppender","nodeWriter","makeSimpleNodeFactory","opt_nodeName","opt_namespaceURI","fixedNodeName","nodeName","OBJECT_PROPERTY_NODE_FACTORY","makeSequence","orderedKeys","sequence","makeStructureNS","namespaceURIs","structure","opt_structureNS","structureNS","parseNode","parsersNS","nextElementSibling","parsers","pushParseAndPop","serialize","serializersNS","nodeFactory","opt_keys","pushSerializeAndPop","XMLFeature","xmlSerializer_","readFeatureFromDocument","readFeatureFromNode","readFeaturesFromDocument","readFeaturesFromNode","readGeometryFromDocument","readGeometryFromNode","readProjectionFromDocument","readProjectionFromNode","writeFeatureNode","writeFeaturesNode","writeGeometryNode","readBoolean","readBooleanString","readDecimal","readDecimalString","readString","trim","writeBooleanTextNode","bool","writeStringTextNode","writeCDATASection","createCDATASection","writeDecimalTextNode","toPrecision","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","DEFAULT_FILL_COLOR","Text","font_","textAlign_","textBaseline_","maxAngle_","placement_","overflow_","offsetX_","offsetY_","backgroundFill_","backgroundStroke_","padding_","setOverflow","setFont","setMaxAngle","setOffsetX","setOffsetY","setPlacement","setTextAlign","setTextBaseline","setBackgroundFill","setBackgroundStroke","setPadding","GX_NAMESPACE_URIS","NAMESPACE_URIS","SCHEMA_LOCATION","ICON_ANCHOR_UNITS_MAP","PLACEMARK_PARSERS","extendedDataParser","regionParser","readMultiGeometry","readLineString","readLinearRing","readPoint","readPolygon","readStyle","placemarkStyleMapParser","readURI","readGxMultiTrack","readGxTrack","NETWORK_LINK_PARSERS","linkParser","LINK_PARSERS","REGION_PARSERS","latLonAltBoxParser","lodParser","KML_SEQUENCE","KML_SERIALIZERS","writeDocument","writePlacemark","DEFAULT_FILL_STYLE","DEFAULT_NO_IMAGE_STYLE","DEFAULT_IMAGE_STYLE","DEFAULT_TEXT_STROKE_STYLE","DEFAULT_STROKE_STYLE","DEFAULT_TEXT_STYLE","DEFAULT_STYLE","DEFAULT_STYLE_ARRAY","createStyleDefaults","KML","defaultStyle_","defaultStyle","extractStyles_","extractStyles","writeStyles_","writeStyles","sharedStyles_","showPointNames_","showPointNames","readDocumentOrFolder_","readPlacemark_","readSharedStyle_","readSharedStyleMap_","styleUrl","createFeatureStyleFunction","styleUri","baseURI","styleMapValue","readStyleMapValue","fs","readName","readNameFromDocument","readNameFromNode","name_1","name_2","readNetworkLinks","networkLinks","readNetworkLinksFromDocument","readNetworkLinksFromNode","readRegion","regions","readRegionFromDocument","readRegionFromNode","kml","xmlnsUri","createNameStyleFunction","foundStyle","textOffset","imageScale","foundText","nameStyle","sharedStyles","drawName","findStyle","styleValue","readColor","hexColor","readFlatCoordinates","re","readVec2","xunits","yunits","readScale","STYLE_MAP_PARSERS","pairDataParser","ICON_STYLE_PARSERS","readIcon","iconStyleParser","styleObject","IconObject","drawIcon","hotSpot","heading","LABEL_STYLE_PARSERS","labelStyleParser","LINE_STYLE_PARSERS","lineStyleParser","POLY_STYLE_PARSERS","polyStyleParser","outline","FLAT_LINEAR_RING_PARSERS","readFlatLinearRing","gxCoordParser","gxTrackObject","GX_MULTITRACK_GEOMETRY_PARSERS","GX_TRACK_PARSERS","whenParser","whens","ICON_PARSERS","iconObject","GEOMETRY_FLAT_COORDINATES_PARSERS","readFlatCoordinatesFromNode","EXTRUDE_AND_ALTITUDE_MODE_PARSERS","MULTI_GEOMETRY_PARSERS","multiGeometry","homogeneous","setCommonGeometryProperties","FLAT_LINEAR_RINGS_PARSERS","innerBoundaryIsParser","outerBoundaryIsParser","flatLinearRings","STYLE_PARSERS","hasExtrude","hasTessellate","hasAltitudeMode","extrudes","tessellates","altitudeModes","DATA_PARSERS","dataParser","featureObject","displayName","EXTENDED_DATA_PARSERS","schemaDataParser","PAIR_PARSERS","pairObject","placemarkObject","SCHEMA_DATA_PARSERS","simpleDataParser","LAT_LON_ALT_BOX_PARSERS","regionObject","LOD_PARSERS","lodObject","INNER_BOUNDARY_IS_PARSERS","flatLinearRing","OUTER_BOUNDARY_IS_PARSERS","when","writeColorTextNode","rgba","abgr","hex","writeCoordinatesTextNode","EXTENDEDDATA_NODE_SERIALIZERS","writeDataNode","writeDataNodeValue","writeDataNodeName","pair","DOCUMENT_SERIALIZERS","DOCUMENT_NODE_FACTORY","DATA_NODE_FACTORY","writeExtendedData","namesAndValues","names","ICON_SEQUENCE","ICON_SERIALIZERS","GX_NODE_FACTORY","writeIcon","icon","ICON_STYLE_SEQUENCE","ICON_STYLE_SERIALIZERS","writeVec2","writeScaleTextNode","writeIconStyle","iconProperties","LABEL_STYLE_SEQUENCE","LABEL_STYLE_SERIALIZERS","writeLabelStyle","LINE_STYLE_SEQUENCE","LINE_STYLE_SERIALIZERS","writeLineStyle","GEOMETRY_TYPE_TO_NODENAME","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","writeStyle","PLACEMARK_SEQUENCE","EXTENDEDDATA_NODE_FACTORY","PRIMITIVE_GEOMETRY_SEQUENCE","PRIMITIVE_GEOMETRY_SERIALIZERS","POLYGON_SERIALIZERS","INNER_BOUNDARY_NODE_FACTORY","OUTER_BOUNDARY_NODE_FACTORY","outerRing","shift","POLY_STYLE_SERIALIZERS","COLOR_NODE_FACTORY","writePolyStyle","STYLE_SEQUENCE","STYLE_SERIALIZERS","vec2","BaseImageLayer","BaseImage","ERROR_THRESHOLD","ENABLE_RASTER_REPROJECTION","CanvasImageLayerRenderer","imageLayer","viewResolution","imageSource","renderedExtent","imageExtent","imageResolution","imagePixelRatio","viewCenter","size_1","dw","dh","previousAlpha","ImageLayer","PRELOAD","USE_INTERIM_TILES_ON_ERROR","BaseTileLayer","preload","useInterimTilesOnError","setPreload","setUseInterimTilesOnError","getPreload","TileProperty","getUseInterimTilesOnError","BaseTile","TileRange","containsTileRange","CanvasTileLayerRenderer","tileLayer","extentChanged","renderedPixelRatio","renderedProjection","renderedRevision","renderedTiles","newTiles_","tmpExtent","tmpTileRange_","isDrawableTile","tileState","getTile","tileSource","getInterimTile","sourceRevision","getTileGridForProjection","getZForResolution","zDirection","tilePixelRatio","getTilePixelRatio","canvasExtent","getTileRangeForExtentAndZ","tilesToDrawByZ","findLoadedTiles","tmpTileRange","inTransition","getAlpha","childTileRange","getTileCoordChildTileRange","covered","forEachTileCoordParentTileRange","canvasScale","clips","clipZs","currentClip","getOpaque","currentZ","currentTilePixelSize","getTilePixelSize","currentScale","dx_1","dy_1","originTileCoord","getTileCoordForCoordAndZ","originTileExtent","getTileCoordExtent","tileGutter","getGutterForProjection","tilesToDraw","tileCoordKey","floatX","nextX","floatY","nextY","transition","drawTileImage","updateUsedTiles","manageTilePyramid","updateCacheSize_","scheduleExpireCache","getTileImage","tileAlpha","alphaChanged","endTransition","postRenderFunction","expireCache","tileCache","opt_tileCallback","getTileCoordCenter","useTile","TileLayer","DEFAULT_WMS_VERSION","calculateSourceResolution","targetProj","targetMetersPerUnit","sourceMetersPerUnit","sourceExtent","compensationFactor","isFinite","enlargeClipPoint","centroidX","centroidY","dX","dY","targetExtent","triangulation","sources","opt_renderEdges","sourceDataExtent","canvasWidthInUnits","canvasHeightInUnits","stitchContext","stitchScale","xPos","yPos","srcWidth","srcHeight","targetTopLeft","getTriangles","triangle","u0","v0","u1","u2","sourceNumericalShiftX","sourceNumericalShiftY","augmentedMatrix","affineCoefs","p0","MAX_SUBDIVISION","MAX_TRIANGLE_WIDTH","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","targetQuadExtent","targetCoverageX","centerSrc","centerSrcEstimX","centerSrcErrorSquared","bc","bcSrc","da","daSrc","ab","abSrc","cd","cdSrc","calculateSourceExtent","ReprojImage","getImageFunction","maxTargetExtent","limitedTargetExtent","errorThresholdInPixels","sourceImage","sourcePixelRatio","triangulation_","targetExtent_","sourceImage_","sourcePixelRatio_","sourceListenerKey_","unlistenSource_","reproject_","ImageSourceEventType","IMAGELOADSTART","IMAGELOADEND","IMAGELOADERROR","ImageSourceEvent","ImageSource","reprojectedImage_","reprojectedRevision_","findNearestResolution","idx","getImageInternal","handleImageChange","defaultImageLoadFunction","CARMENTA_SERVER","GEOSERVER","MAPSERVER","QGIS","appendParams","uri","params","keyParams","qs","GETFEATUREINFO_IMAGE_SIZE","ImageWMS","params_","v13_","updateV13_","serverType_","hidpi_","hidpi","ratio_","getFeatureInfoUrl","projectionObj","sourceProjectionObj","baseParams","getRequestUrl_","getLegendUrl","isSingleLayer","getParams","viewExtent","requestWidth","requestHeight","requestExtent","getImageLoadFunction","WMSServerType","setImageLoadFunction","updateParams","version","Cluster","cluster","setDistance","mapDistance","clustered","neighbors","neighbor","createCluster","Tile","interimTile","transition_","transitionStarts_","refreshInterimChain","getTileCoord","ImageTile","tileLoadFunction","tileLoadFunction_","getBlankImage","naturalWidth","naturalHeight","opt_tileCoord","getKeyZXY","fromKey","hash","withinExtentAndZ","getFullTileRange","TileCache","pruneExceptNewestZ","ReprojTile","sourceTileGrid","targetTileGrid","wrappedTileCoord","getTileFunction","opt_errorThreshold","renderEdges_","gutter_","sourceTileGrid_","targetTileGrid_","wrappedTileCoord_","sourceTiles_","sourcesListenerKeys_","sourceZ_","sourceProjExtent","sourceRange","srcX","srcY","unlistenSources_","getTileSize","leftToLoad_1","sourceListenKey_1","createFromTemplate","zRegEx","xRegEx","yRegEx","dashYRegEx","createFromTemplates","templates","tileUrlFunctions","createFromTileUrlFunctions","nullTileUrlFunction","expandUrl","startCharCode","stopCharCode","fromCharCode","stop_1","tmpTileCoord","TileGrid","origins","origins_","tileSizes_","tileSizes","tileSize_","tileSize","fullTileRanges_","tmpSize_","sizes","calculateTileRanges_","forEachTileCoord","opt_tileRange","tileCoordExtent","getTileRangeExtent","getTileCoordForXYAndZ_","getTileCoordForCoordAndResolution","getTileCoordForXYAndResolution_","reverseIntersectionPolicy","adjustX","adjustY","xFromOrigin","yFromOrigin","tileCoordX","tileCoordY","getTileCoordResolution","fullTileRanges","getForProjection","createForProjection","extentFromProjection","createForExtent","opt_maxZoom","opt_tileSize","opt_corner","Corner","resolutionsFromExtent","createXYZ","xyzOptions","gridOptions","half","TileSource","opaque_","opaque","tilePixelRatio_","canUseScreen","screen","availWidth","availHeight","tmpSize","tileOptions","getTileCacheForProjection","loaded","setKey","getTileGrid","thisProj","getTileCoordForTileUrlFunction","TileSourceEvent","TILELOADSTART","TILELOADEND","TILELOADERROR","UrlTile","generateTileUrlFunction_","tileUrlFunction","setUrls","tileLoadingKeys_","getTileLoadFunction","getTileUrlFunction","getUrls","TileEventType","setTileLoadFunction","setTileUrlFunction","TileImage","defaultTileLoadFunction","tileClass","tileCacheForProjection","tileGridForProjection","reprojectionErrorThreshold_","reprojectionErrorThreshold","renderReprojectionEdges_","usedTileCache","getGutter","projKey","createTile_","urlTileCoord","tileUrl","newTile","getTileInternal","setRenderReprojectionEdges","setTileGridForProjection","tilegrid","proj","imageTile","ATTRIBUTION","OSM","jsonp","opt_errback","opt_callbackParam","script","async","timer","getElementsByTagName","quadKey","digits","TOS_ATTRIBUTION","BingMaps","culture_","culture","maxZoom_","apiKey_","imagerySet_","imagerySet","handleImageryMetadataResponse","getApiKey","getImagerySet","statusCode","statusDescription","authenticationResultCode","resourceSets","resources","resource","zoomMax","imageWidth","imageHeight","zoomMin","imageUrlSubdomains","subdomain","quadKeyTileCoord","imageUrl","imageryProviders","imageryProvider","intersecting","coverageAreas","coverageArea","epsg4326Extent","extent_1","EPSGType","EPSG4326","EPSG3857","MapStyle","GoogleMapRoad","GoogleMapHybrid","GoogleMapDark","BaiduMap","BaiduHybrid","BingMap","BingMapHybrid","OpenStreetMap","MapBox","MapBoxHybrid","GaoDe","GaoDeHybrid","createMapFactory","bingMapsKey","mapBoxKey","wmsUrl","mapControls","disableControlls","zoomTipLabel","zoomValue","targetId","baseMapLayers","addBaseMapLaysersToMap","mapSelect","createBaseLayers","getBaseMapLaysers","setBaseMap","createOverviewMap","mapOverviewMapTipLabel","overviewMapControl","dataLayers","popupOverlay","createImageLayer","option","layerGeoId","viewparams","FORMAT","STYLES","layerName","FILTER","CQL_FILTER","FEATUREID","LayerGeoId","previousImage","blankSrc","isFunction","loaderror","removeImageLayer","updateFilter","filterParamsc","singleclick","callbackFunction","urlData","getGetFeatureInfoUrl","layerId","addPopupOverlay","popupId","removePopupOverlay","circleDataLayers","pointDataLaysers","createPoint","pointGeom","pointFeature","vector","createPointByLonLat","removePoint","removeAllPoint","removeCircle","createShapeByWKT","wktReader","createCircle","circleSize","createCircleByLonLat","PolygonGeom","circleFeature","removeAllCircle","draw","sketch","helpTooltipElement","helpTooltip","measureTooltipElement","measureTooltip","geomObjects","overlayObjects","measureSupClass","formatLength","line","formatCircle","formatArea","showTip","drawStartCallBack","drawEndCallBack","createMeasureTooltip","createHelpTooltip","tooltipCoord","targetGeom","StartMeasure","drawType","StopMeasure","ClearMeasure","clusterVector","loadingstrategy","calculateClusterInfo","styleParam","maxFeatureCount","originalFeatures","competitorCount","mySiteCount","featureData","removeCluster","createFullScreen","mapFullScreenTipLabel","createRotate","mapRotateTipLabel","createScaleLine","createZoom","createZoomSlider","createZoomToExtend","mapZoomToExtentTipLabel","fitFeature","centerByLonLat","centerFromWM","animatePointByLonLat","animatePoint","baseMap","addRandomFeature","flash","listenerKey","vectorContext","flashGeom","elapsedRatio","createMousePosition","divId","epsg","precision","chamgeMousePositionStyle","googleTrafficLayer","addGoogleTrafficLayer","removeGoogleTrafficLayer","gaodeTrafficLayer","addGaodeTrafficLayer","removeGaodeTrafficLayer","baiduTrafficLayer","addBaiduTraffic","createBaiduMap","removeBaiduTraffic","exportOptions","link","download","click","convert4326To3857","layer1","layer2","baiduSource","functionToCheck","mapfunction","FEET","USFEET"],"mappings":"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","file":"js/chunk-f761e88c.836ec84e.js","sourcesContent":["/**\n * @module ol/events/EventType\n */\n/**\n * @enum {string}\n * @const\n */\nexport default {\n /**\n * Generic change event. Triggered when the revision counter is increased.\n * @event module:ol/events/Event~BaseEvent#change\n * @api\n */\n CHANGE: 'change',\n /**\n * Generic error event. Triggered when an error occurs.\n * @event module:ol/events/Event~BaseEvent#error\n * @api\n */\n ERROR: 'error',\n BLUR: 'blur',\n CLEAR: 'clear',\n CONTEXTMENU: 'contextmenu',\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n DRAGENTER: 'dragenter',\n DRAGOVER: 'dragover',\n DROP: 'drop',\n FOCUS: 'focus',\n KEYDOWN: 'keydown',\n KEYPRESS: 'keypress',\n LOAD: 'load',\n RESIZE: 'resize',\n WHEEL: 'wheel'\n};\n//# sourceMappingURL=EventType.js.map","/**\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/events/Target\n */\nimport Disposable from '../Disposable.js';\nimport { VOID } from '../functions.js';\nimport Event from './Event.js';\nimport { clear } from '../obj.js';\n/**\n * @typedef {EventTarget|Target} EventTargetLike\n */\n/**\n * @classdesc\n * A simplified implementation of the W3C DOM Level 2 EventTarget interface.\n * See https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.\n *\n * There are two important simplifications compared to the specification:\n *\n * 1. The handling of `useCapture` in `addEventListener` and\n * `removeEventListener`. There is no real capture model.\n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.\n * There is no event target hierarchy. When a listener calls\n * `stopPropagation` or `preventDefault` on an event object, it means that no\n * more listeners after this one will be called. Same as when the listener\n * returns false.\n */\nvar Target = /** @class */ (function (_super) {\n __extends(Target, _super);\n /**\n * @param {*=} opt_target Default event target for dispatched events.\n */\n function Target(opt_target) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {*}\n */\n _this.eventTarget_ = opt_target;\n /**\n * @private\n * @type {!Object}\n */\n _this.pendingRemovals_ = {};\n /**\n * @private\n * @type {!Object}\n */\n _this.dispatching_ = {};\n /**\n * @private\n * @type {!Object>}\n */\n _this.listeners_ = {};\n return _this;\n }\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").ListenerFunction} listener Listener.\n */\n Target.prototype.addEventListener = function (type, listener) {\n if (!type || !listener) {\n return;\n }\n var listeners = this.listeners_[type];\n if (!listeners) {\n listeners = [];\n this.listeners_[type] = listeners;\n }\n if (listeners.indexOf(listener) === -1) {\n listeners.push(listener);\n }\n };\n /**\n * Dispatches an event and calls all listeners listening for events\n * of this type. The event parameter can either be a string or an\n * Object with a `type` property.\n *\n * @param {{type: string,\n * target: (EventTargetLike|undefined),\n * propagationStopped: (boolean|undefined)}|\n * import(\"./Event.js\").default|string} event Event object.\n * @return {boolean|undefined} `false` if anyone called preventDefault on the\n * event object or if any of the listeners returned false.\n * @api\n */\n Target.prototype.dispatchEvent = function (event) {\n var evt = typeof event === 'string' ? new Event(event) : event;\n var type = evt.type;\n if (!evt.target) {\n evt.target = this.eventTarget_ || this;\n }\n var listeners = this.listeners_[type];\n var propagate;\n if (listeners) {\n if (!(type in this.dispatching_)) {\n this.dispatching_[type] = 0;\n this.pendingRemovals_[type] = 0;\n }\n ++this.dispatching_[type];\n for (var i = 0, ii = listeners.length; i < ii; ++i) {\n if (listeners[i].call(this, evt) === false || evt.propagationStopped) {\n propagate = false;\n break;\n }\n }\n --this.dispatching_[type];\n if (this.dispatching_[type] === 0) {\n var pendingRemovals = this.pendingRemovals_[type];\n delete this.pendingRemovals_[type];\n while (pendingRemovals--) {\n this.removeEventListener(type, VOID);\n }\n delete this.dispatching_[type];\n }\n return propagate;\n }\n };\n /**\n * @inheritDoc\n */\n Target.prototype.disposeInternal = function () {\n clear(this.listeners_);\n };\n /**\n * Get the listeners for a specified event type. Listeners are returned in the\n * order that they will be called in.\n *\n * @param {string} type Type.\n * @return {Array} Listeners.\n */\n Target.prototype.getListeners = function (type) {\n return this.listeners_[type];\n };\n /**\n * @param {string=} opt_type Type. If not provided,\n * `true` will be returned if this event target has any listeners.\n * @return {boolean} Has listeners.\n */\n Target.prototype.hasListener = function (opt_type) {\n return opt_type ?\n opt_type in this.listeners_ :\n Object.keys(this.listeners_).length > 0;\n };\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").ListenerFunction} listener Listener.\n */\n Target.prototype.removeEventListener = function (type, listener) {\n var listeners = this.listeners_[type];\n if (listeners) {\n var index = listeners.indexOf(listener);\n if (index !== -1) {\n if (type in this.pendingRemovals_) {\n // make listener a no-op, and remove later in #dispatchEvent()\n listeners[index] = VOID;\n ++this.pendingRemovals_[type];\n }\n else {\n listeners.splice(index, 1);\n if (listeners.length === 0) {\n delete this.listeners_[type];\n }\n }\n }\n }\n };\n return Target;\n}(Disposable));\nexport default Target;\n//# sourceMappingURL=Target.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar getBlobFromURL_1 = __importDefault(require(\"./getBlobFromURL\"));\nvar utils_1 = require(\"./utils\");\nvar URL_REGEX = /url\\((['\"]?)([^'\"]+?)\\1\\)/g;\nfunction resolveUrl(url, baseUrl) {\n // url is absolute already\n if (url.match(/^[a-z]+:\\/\\//i)) {\n return url;\n }\n // url is absolute already, without protocol\n if (url.match(/^\\/\\//)) {\n return window.location.protocol + url;\n }\n // dataURI, mailto:, tel:, etc.\n if (url.match(/^[a-z]+:/i)) {\n return url;\n }\n var doc = document.implementation.createHTMLDocument();\n var base = doc.createElement('base');\n var a = doc.createElement('a');\n doc.head.appendChild(base);\n doc.body.appendChild(a);\n if (baseUrl) {\n base.href = baseUrl;\n }\n a.href = url;\n return a.href;\n}\nfunction escape(url) {\n return url.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n}\nfunction urlToRegex(url) {\n return new RegExp(\"(url\\\\(['\\\"]?)(\" + escape(url) + \")(['\\\"]?\\\\))\", 'g');\n}\nfunction parseURLs(str) {\n var result = [];\n str.replace(URL_REGEX, function (raw, quotation, url) {\n result.push(url);\n return raw;\n });\n return result.filter(function (url) { return !utils_1.isDataUrl(url); });\n}\nfunction embed(cssString, resourceURL, baseURL, options) {\n var resolvedURL = baseURL ? resolveUrl(resourceURL, baseURL) : resourceURL;\n return Promise.resolve(resolvedURL)\n .then(function (url) { return getBlobFromURL_1.default(url, options); })\n .then(function (data) { return utils_1.toDataURL(data, utils_1.getMimeType(resourceURL)); })\n .then(function (dataURL) { return cssString.replace(urlToRegex(resourceURL), \"$1\" + dataURL + \"$3\"); })\n .then(function (content) { return content; }, function () { return resolvedURL; });\n}\nfunction shouldEmbed(string) {\n return string.search(URL_REGEX) !== -1;\n}\nexports.shouldEmbed = shouldEmbed;\nfunction embedResources(cssString, baseUrl, options) {\n if (!shouldEmbed(cssString)) {\n return Promise.resolve(cssString);\n }\n return Promise.resolve(cssString)\n .then(parseURLs)\n .then(function (urls) { return urls.reduce(function (done, url) { return done.then(function (ret) { return embed(ret, url, baseUrl, options); }); }, Promise.resolve(cssString)); });\n}\nexports.default = embedResources;\n","/**\n * @module ol/util\n */\n/**\n * @return {?} Any return.\n */\nexport function abstract() {\n return /** @type {?} */ ((function () {\n throw new Error('Unimplemented abstract method.');\n })());\n}\n/**\n * Counter for getUid.\n * @type {number}\n * @private\n */\nvar uidCounter_ = 0;\n/**\n * Gets a unique ID for an object. This mutates the object so that further calls\n * with the same object as a parameter returns the same value. Unique IDs are generated\n * as a strictly increasing sequence. Adapted from goog.getUid.\n *\n * @param {Object} obj The object to get the unique ID for.\n * @return {string} The unique ID for the object.\n * @api\n */\nexport function getUid(obj) {\n return obj.ol_uid || (obj.ol_uid = String(++uidCounter_));\n}\n/**\n * OpenLayers version.\n * @type {string}\n */\nexport var VERSION = '6.1.1';\n//# sourceMappingURL=util.js.map","/**\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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar WOFF = 'application/font-woff';\nvar JPEG = 'image/jpeg';\nvar mimes = {\n woff: WOFF,\n woff2: WOFF,\n ttf: 'application/font-truetype',\n eot: 'application/vnd.ms-fontobject',\n png: 'image/png',\n jpg: JPEG,\n jpeg: JPEG,\n gif: 'image/gif',\n tiff: 'image/tiff',\n svg: 'image/svg+xml',\n};\nexports.uuid = (function uuid() {\n // generate uuid for className of pseudo elements.\n // We should not use GUIDs, otherwise pseudo elements sometimes cannot be captured.\n var counter = 0;\n // ref: http://stackoverflow.com/a/6248722/2519373\n var randomFourChars = function () {\n return (\"0000\" + (Math.random() * (Math.pow(36, 4)) << 0).toString(36)).slice(-4);\n };\n return function () {\n counter += 1;\n return \"u\" + randomFourChars() + counter;\n };\n}());\nfunction parseExtension(url) {\n var match = /\\.([^./]*?)$/g.exec(url);\n if (match)\n return match[1];\n return '';\n}\nexports.parseExtension = parseExtension;\nfunction getMimeType(url) {\n var ext = parseExtension(url).toLowerCase();\n return mimes[ext] || '';\n}\nexports.getMimeType = getMimeType;\nfunction delay(ms) {\n return function (args) { return new Promise((function (resolve) {\n setTimeout(function () {\n resolve(args);\n }, ms);\n })); };\n}\nexports.delay = delay;\nfunction createImage(url) {\n return new Promise((function (resolve, reject) {\n var image = new Image();\n image.onload = function () {\n resolve(image);\n };\n image.onerror = reject;\n image.crossOrigin = 'anonymous';\n image.src = url;\n }));\n}\nexports.createImage = createImage;\nfunction isDataUrl(url) {\n return url.search(/^(data:)/) !== -1;\n}\nexports.isDataUrl = isDataUrl;\nfunction toDataURL(content, mimeType) {\n return \"data:\" + mimeType + \";base64,\" + content;\n}\nexports.toDataURL = toDataURL;\nfunction getDataURLContent(dataURL) {\n return dataURL.split(/,/)[1];\n}\nexports.getDataURLContent = getDataURLContent;\nfunction toBlob(canvas) {\n return new Promise((function (resolve) {\n var binaryString = window.atob(canvas.toDataURL().split(',')[1]);\n var len = binaryString.length;\n var binaryArray = new Uint8Array(len);\n for (var i = 0; i < len; i += 1) {\n binaryArray[i] = binaryString.charCodeAt(i);\n }\n resolve(new Blob([binaryArray], {\n type: 'image/png',\n }));\n }));\n}\nfunction canvasToBlob(canvas) {\n if (canvas.toBlob) {\n return new Promise((function (resolve) {\n canvas.toBlob(resolve);\n }));\n }\n return toBlob(canvas);\n}\nexports.canvasToBlob = canvasToBlob;\nfunction toArray(arrayLike) {\n var arr = [];\n for (var i = 0, l = arrayLike.length; i < l; i += 1) {\n arr.push(arrayLike[i]);\n }\n return arr;\n}\nexports.toArray = toArray;\nfunction px(node, styleProperty) {\n var value = window.getComputedStyle(node).getPropertyValue(styleProperty);\n return parseFloat(value.replace('px', ''));\n}\nfunction getNodeWidth(node) {\n var leftBorder = px(node, 'border-left-width');\n var rightBorder = px(node, 'border-right-width');\n return node.scrollWidth + leftBorder + rightBorder;\n}\nexports.getNodeWidth = getNodeWidth;\nfunction getNodeHeight(node) {\n var topBorder = px(node, 'border-top-width');\n var bottomBorder = px(node, 'border-bottom-width');\n return node.scrollHeight + topBorder + bottomBorder;\n}\nexports.getNodeHeight = getNodeHeight;\nfunction getPixelRatio() {\n return (window.devicePixelRatio || 1);\n}\nexports.getPixelRatio = getPixelRatio;\nfunction svgToDataURL(svg) {\n return Promise.resolve()\n .then(function () { return new XMLSerializer().serializeToString(svg); })\n .then(encodeURIComponent)\n .then(function (html) { return \"data:image/svg+xml;charset=utf-8,\" + html; });\n}\nexports.svgToDataURL = svgToDataURL;\nfunction getBlobFromImageURL(url) {\n return createImage(url).then(function (image) {\n var width = image.width, height = image.height;\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n var ratio = getPixelRatio();\n canvas.width = width * ratio;\n canvas.height = height * ratio;\n canvas.style.width = \"\" + width;\n canvas.style.height = \"\" + height;\n context.scale(ratio, ratio);\n context.drawImage(image, 0, 0);\n var dataURL = canvas.toDataURL(getMimeType(url));\n return getDataURLContent(dataURL);\n });\n}\nexports.getBlobFromImageURL = getBlobFromImageURL;\n","\"use strict\";\n/* tslint:disable:max-line-length */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"./utils\");\n// KNOWN ISSUE\n// -----------\n// Can not handle redirect-url, such as when access 'http://something.com/avatar.png'\n// will redirect to 'http://something.com/65fc2ffcc8aea7ba65a1d1feda173540'\nvar TIMEOUT = 30000;\nfunction getBlobFromURL(url, options) {\n // cache bypass so we dont have CORS issues with cached images\n // ref: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n if (options.cacheBust) {\n url += ((/\\?/).test(url) ? '&' : '?') + (new Date()).getTime(); // tslint:disable-line\n }\n var failed = function (reason) {\n var placeholder = '';\n if (options.imagePlaceholder) {\n var split = options.imagePlaceholder.split(/,/);\n if (split && split[1]) {\n placeholder = split[1];\n }\n }\n var msg = \"Failed to fetch resource: \" + url;\n if (reason) {\n msg = typeof reason === 'string' ? reason : reason.message;\n }\n if (msg) {\n console.error(msg);\n }\n return placeholder;\n };\n var deferred = window.fetch\n // fetch\n ? window.fetch(url)\n .then(function (response) { return response.blob(); })\n .then(function (blob) { return new Promise(function (resolve, reject) {\n var reader = new FileReader();\n reader.onloadend = function () { return resolve(reader.result); };\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n }); })\n .then(utils_1.getDataURLContent)\n .catch(function () { return new Promise(function (resolve, reject) {\n reject();\n }); })\n // xhr\n : new Promise((function (resolve, reject) {\n var req = new XMLHttpRequest();\n var timeout = function () {\n reject(new Error(\"Timeout of \" + TIMEOUT + \"ms occured while fetching resource: \" + url));\n };\n var done = function () {\n if (req.readyState !== 4) {\n return;\n }\n if (req.status !== 200) {\n reject(new Error(\"Failed to fetch resource: \" + url + \", status: \" + req.status));\n return;\n }\n var encoder = new FileReader();\n encoder.onloadend = function () {\n resolve(utils_1.getDataURLContent(encoder.result));\n };\n encoder.readAsDataURL(req.response);\n };\n req.onreadystatechange = done;\n req.ontimeout = timeout;\n req.responseType = 'blob';\n req.timeout = TIMEOUT;\n req.open('GET', url, true);\n req.send();\n }));\n return deferred.catch(failed);\n}\nexports.default = getBlobFromURL;\n","/**\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","!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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Observable\n */\nimport { listen, unlistenByKey, listenOnce } from './events.js';\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * An event target providing convenient methods for listener registration\n * and unregistration. A generic `change` event is always available through\n * {@link module:ol/Observable~Observable#changed}.\n *\n * @fires import(\"./events/Event.js\").default\n * @api\n */\nvar Observable = /** @class */ (function (_super) {\n __extends(Observable, _super);\n function Observable() {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {number}\n */\n _this.revision_ = 0;\n return _this;\n }\n /**\n * Increases the revision counter and dispatches a 'change' event.\n * @api\n */\n Observable.prototype.changed = function () {\n ++this.revision_;\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * Get the version number for this object. Each time the object is modified,\n * its version number will be incremented.\n * @return {number} Revision.\n * @api\n */\n Observable.prototype.getRevision = function () {\n return this.revision_;\n };\n /**\n * Listen for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\n Observable.prototype.on = function (type, listener) {\n if (Array.isArray(type)) {\n var len = type.length;\n var keys = new Array(len);\n for (var i = 0; i < len; ++i) {\n keys[i] = listen(this, type[i], listener);\n }\n return keys;\n }\n else {\n return listen(this, /** @type {string} */ (type), listener);\n }\n };\n /**\n * Listen once for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\n Observable.prototype.once = function (type, listener) {\n if (Array.isArray(type)) {\n var len = type.length;\n var keys = new Array(len);\n for (var i = 0; i < len; ++i) {\n keys[i] = listenOnce(this, type[i], listener);\n }\n return keys;\n }\n else {\n return listenOnce(this, /** @type {string} */ (type), listener);\n }\n };\n /**\n * Unlisten for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @api\n */\n Observable.prototype.un = function (type, listener) {\n if (Array.isArray(type)) {\n for (var i = 0, ii = type.length; i < ii; ++i) {\n this.removeEventListener(type[i], listener);\n }\n }\n else {\n this.removeEventListener(type, listener);\n }\n };\n return Observable;\n}(EventTarget));\n/**\n * Removes an event listener using the key returned by `on()` or `once()`.\n * @param {import(\"./events.js\").EventsKey|Array} key The key returned by `on()`\n * or `once()` (or an array of keys).\n * @api\n */\nexport function unByKey(key) {\n if (Array.isArray(key)) {\n for (var i = 0, ii = key.length; i < ii; ++i) {\n unlistenByKey(key[i]);\n }\n }\n else {\n unlistenByKey(/** @type {import(\"./events.js\").EventsKey} */ (key));\n }\n}\nexport default Observable;\n//# sourceMappingURL=Observable.js.map","/**\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/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 * 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}));","/**\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/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","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"./utils\");\nvar getBlobFromURL_1 = __importDefault(require(\"./getBlobFromURL\"));\nvar embedResources_1 = __importDefault(require(\"./embedResources\"));\nfunction embedBackground(clonedNode, options) {\n var background = clonedNode.style.getPropertyValue('background');\n if (!background) {\n return Promise.resolve(clonedNode);\n }\n return Promise.resolve(background)\n .then(function (cssString) { return embedResources_1.default(cssString, null, options); })\n .then(function (cssString) {\n clonedNode.style.setProperty('background', cssString, clonedNode.style.getPropertyPriority('background'));\n return clonedNode;\n });\n}\nfunction embedImageNode(clonedNode, options) {\n if (!(clonedNode instanceof HTMLImageElement) || utils_1.isDataUrl(clonedNode.src)) {\n return Promise.resolve(clonedNode);\n }\n return Promise.resolve(clonedNode.src)\n .then(function (url) { return getBlobFromURL_1.default(url, options); })\n .then(function (data) { return utils_1.toDataURL(data, utils_1.getMimeType(clonedNode.src)); })\n .then(function (dataURL) { return new Promise((function (resolve, reject) {\n clonedNode.onload = resolve;\n clonedNode.onerror = reject;\n clonedNode.src = dataURL;\n })); })\n .then(function () { return clonedNode; }, function () { return clonedNode; });\n}\nfunction embedChildren(clonedNode, options) {\n var children = utils_1.toArray(clonedNode.childNodes);\n var deferreds = children.map(function (child) { return embedImages(child, options); });\n return Promise.all(deferreds).then(function () { return clonedNode; });\n}\nfunction embedImages(clonedNode, options) {\n if (!(clonedNode instanceof Element)) {\n return Promise.resolve(clonedNode);\n }\n return Promise.resolve(clonedNode)\n .then(function (node) { return embedBackground(node, options); })\n .then(function (node) { return embedImageNode(node, options); })\n .then(function (node) { return embedChildren(node, options); });\n}\nexports.default = embedImages;\n","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"./utils\");\nvar embedResources_1 = __importStar(require(\"./embedResources\"));\nfunction parseCSS(source) {\n if (source === undefined) {\n return [];\n }\n var cssText = source;\n var css = [];\n var cssKeyframeRegex = '((@.*?keyframes [\\\\s\\\\S]*?){([\\\\s\\\\S]*?}\\\\s*?)})';\n var combinedCSSRegex = '((\\\\s*?(?:\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/)?\\\\s*?@media[\\\\s\\\\S]'\n + '*?){([\\\\s\\\\S]*?)}\\\\s*?})|(([\\\\s\\\\S]*?){([\\\\s\\\\S]*?)})'; // to match css & media queries together\n var cssCommentsRegex = new RegExp('(\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/)', 'gi');\n // strip out comments\n cssText = cssText.replace(cssCommentsRegex, '');\n var keyframesRegex = new RegExp(cssKeyframeRegex, 'gi');\n var arr;\n while (true) {\n arr = keyframesRegex.exec(cssText);\n if (arr === null) {\n break;\n }\n css.push(arr[0]);\n }\n cssText = cssText.replace(keyframesRegex, '');\n // unified regex\n var unified = new RegExp(combinedCSSRegex, 'gi');\n while (true) {\n arr = unified.exec(cssText);\n if (arr === null) {\n break;\n }\n css.push(arr[0]);\n }\n return css;\n}\nfunction fetchCSS(url, sheet) {\n return fetch(url).then(function (res) {\n return {\n url: url,\n cssText: res.text(),\n };\n }, function (e) {\n console.log('ERROR FETCHING CSS: ', e.toString());\n });\n}\nfunction embedFonts(data) {\n return data.cssText.then(function (resolved) {\n var cssText = resolved;\n var fontLocations = cssText.match(/url\\([^)]+\\)/g) || [];\n var fontLoadedPromises = fontLocations.map(function (location) {\n var url = location.replace(/url\\(([^]+)\\)/g, '$1');\n if (!url.startsWith('https://')) {\n var source = data.url;\n url = new URL(url, source).href;\n }\n return new Promise(function (resolve, reject) {\n fetch(url)\n .then(function (res) { return res.blob(); })\n .then(function (blob) {\n var reader = new FileReader();\n reader.addEventListener('load', function (res) {\n // Side Effect\n cssText = cssText.replace(location, \"url(\" + reader.result + \")\");\n resolve([location, reader.result]);\n });\n reader.readAsDataURL(blob);\n })\n .catch(reject);\n });\n });\n return Promise.all(fontLoadedPromises).then(function () { return cssText; });\n });\n}\nfunction getCssRules(styleSheets) {\n var ret = [];\n var promises = [];\n // First loop inlines imports\n styleSheets.forEach(function (sheet) {\n if ('cssRules' in sheet) {\n try {\n utils_1.toArray(sheet.cssRules).forEach(function (item) {\n if (item.type === CSSRule.IMPORT_RULE) {\n promises.push(fetchCSS(item.href, sheet)\n .then(embedFonts)\n .then(function (cssText) {\n var parsed = parseCSS(cssText);\n parsed.forEach(function (rule) {\n sheet.insertRule(rule, sheet.cssRules.length);\n });\n })\n .catch(function (e) {\n console.log('Error loading remote css', e.toString());\n }));\n }\n });\n }\n catch (e) {\n var inline_1 = styleSheets.find(function (a) { return a.href === null; }) || document.styleSheets[0];\n if (sheet.href != null) {\n promises.push(fetchCSS(sheet.href, inline_1)\n .then(embedFonts)\n .then(function (cssText) {\n var parsed = parseCSS(cssText);\n parsed.forEach(function (rule) {\n inline_1.insertRule(rule, sheet.cssRules.length);\n });\n })\n .catch(function (e) {\n console.log('Error loading remote stylesheet', e.toString());\n }));\n }\n console.log('Error inlining remote css file', e.toString());\n }\n }\n });\n return Promise\n .all(promises)\n .then(function () {\n // Second loop parses rules\n styleSheets.forEach(function (sheet) {\n if ('cssRules' in sheet) {\n try {\n utils_1.toArray(sheet.cssRules).forEach(function (item) {\n ret.push(item);\n });\n }\n catch (e) {\n console.log(\"Error while reading CSS rules from \" + sheet.href, e.toString());\n }\n }\n });\n return ret;\n });\n}\nfunction getWebFontRules(cssRules) {\n return cssRules\n .filter(function (rule) { return rule.type === CSSRule.FONT_FACE_RULE; })\n .filter(function (rule) { return embedResources_1.shouldEmbed(rule.style.getPropertyValue('src')); });\n}\nfunction parseWebFontRules(clonedNode) {\n return new Promise(function (resolve, reject) {\n if (!clonedNode.ownerDocument) {\n reject(new Error('Provided element is not within a Document'));\n }\n resolve(utils_1.toArray(clonedNode.ownerDocument.styleSheets));\n })\n .then(getCssRules)\n .then(getWebFontRules);\n}\nexports.parseWebFontRules = parseWebFontRules;\nfunction embedWebFonts(clonedNode, options) {\n return parseWebFontRules(clonedNode)\n .then(function (rules) { return Promise.all(rules.map(function (rule) {\n var baseUrl = rule.parentStyleSheet ? rule.parentStyleSheet.href : null;\n return embedResources_1.default(rule.cssText, baseUrl, options);\n })); })\n .then(function (cssStrings) { return cssStrings.join('\\n'); })\n .then(function (cssString) {\n var styleNode = document.createElement('style');\n var sytleContent = document.createTextNode(cssString);\n styleNode.appendChild(sytleContent);\n if (clonedNode.firstChild) {\n clonedNode.insertBefore(styleNode, clonedNode.firstChild);\n }\n else {\n clonedNode.appendChild(styleNode);\n }\n return clonedNode;\n });\n}\nexports.default = embedWebFonts;\n","/**\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/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/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","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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Geometry\n */\nimport { abstract } from '../util.js';\nimport BaseObject from '../Object.js';\nimport { createEmpty, getHeight, returnOrUpdate } from '../extent.js';\nimport { transform2D } from './flat/transform.js';\nimport { get as getProjection, getTransform } from '../proj.js';\nimport Units from '../proj/Units.js';\nimport { create as createTransform, compose as composeTransform } from '../transform.js';\nimport { memoizeOne } from '../functions.js';\n/**\n * @type {import(\"../transform.js\").Transform}\n */\nvar tmpTransform = createTransform();\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for vector geometries.\n *\n * To get notified of changes to the geometry, register a listener for the\n * generic `change` event on your geometry instance.\n *\n * @abstract\n * @api\n */\nvar Geometry = /** @class */ (function (_super) {\n __extends(Geometry, _super);\n function Geometry() {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n _this.extent_ = createEmpty();\n /**\n * @private\n * @type {number}\n */\n _this.extentRevision_ = -1;\n /**\n * @protected\n * @type {number}\n */\n _this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n /**\n * @protected\n * @type {number}\n */\n _this.simplifiedGeometryRevision = 0;\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} revision The geometry revision.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n _this.simplifyTransformedInternal = memoizeOne(function (revision, squaredTolerance, opt_transform) {\n if (!opt_transform) {\n return this.getSimplifiedGeometry(squaredTolerance);\n }\n var clone = this.clone();\n clone.applyTransform(opt_transform);\n return clone.getSimplifiedGeometry(squaredTolerance);\n });\n return _this;\n }\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n Geometry.prototype.simplifyTransformed = function (squaredTolerance, opt_transform) {\n return this.simplifyTransformedInternal(this.getRevision(), squaredTolerance, opt_transform);\n };\n /**\n * Make a complete copy of the geometry.\n * @abstract\n * @return {!Geometry} Clone.\n */\n Geometry.prototype.clone = function () {\n return abstract();\n };\n /**\n * @abstract\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n Geometry.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n return abstract();\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n Geometry.prototype.containsXY = function (x, y) {\n var coord = this.getClosestPoint([x, y]);\n return coord[0] === x && coord[1] === y;\n };\n /**\n * Return the closest point of the geometry to the passed point as\n * {@link module:ol/coordinate~Coordinate coordinate}.\n * @param {import(\"../coordinate.js\").Coordinate} point Point.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_closestPoint Closest point.\n * @return {import(\"../coordinate.js\").Coordinate} Closest point.\n * @api\n */\n Geometry.prototype.getClosestPoint = function (point, opt_closestPoint) {\n var closestPoint = opt_closestPoint ? opt_closestPoint : [NaN, NaN];\n this.closestPointXY(point[0], point[1], closestPoint, Infinity);\n return closestPoint;\n };\n /**\n * Returns true if this geometry includes the specified coordinate. If the\n * coordinate is on the boundary of the geometry, returns false.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains coordinate.\n * @api\n */\n Geometry.prototype.intersectsCoordinate = function (coordinate) {\n return this.containsXY(coordinate[0], coordinate[1]);\n };\n /**\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n Geometry.prototype.computeExtent = function (extent) {\n return abstract();\n };\n /**\n * Get the extent of the geometry.\n * @param {import(\"../extent.js\").Extent=} opt_extent Extent.\n * @return {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n Geometry.prototype.getExtent = function (opt_extent) {\n if (this.extentRevision_ != this.getRevision()) {\n this.extent_ = this.computeExtent(this.extent_);\n this.extentRevision_ = this.getRevision();\n }\n return returnOrUpdate(this.extent_, opt_extent);\n };\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n Geometry.prototype.rotate = function (angle, anchor) {\n abstract();\n };\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number=} opt_sy The scaling factor in the y-direction (defaults to\n * sx).\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n Geometry.prototype.scale = function (sx, opt_sy, opt_anchor) {\n abstract();\n };\n /**\n * Create a simplified version of this geometry. For linestrings, this uses\n * the [Douglas Peucker](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm)\n * algorithm. For polygons, a quantization-based\n * simplification is used to preserve topology.\n * @param {number} tolerance The tolerance distance for simplification.\n * @return {Geometry} A new, simplified version of the original geometry.\n * @api\n */\n Geometry.prototype.simplify = function (tolerance) {\n return this.getSimplifiedGeometry(tolerance * tolerance);\n };\n /**\n * Create a simplified version of this geometry using the Douglas Peucker\n * algorithm.\n * See https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Geometry} Simplified geometry.\n */\n Geometry.prototype.getSimplifiedGeometry = function (squaredTolerance) {\n return abstract();\n };\n /**\n * Get the type of this geometry.\n * @abstract\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n */\n Geometry.prototype.getType = function () {\n return abstract();\n };\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @abstract\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n */\n Geometry.prototype.applyTransform = function (transformFn) {\n abstract();\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n */\n Geometry.prototype.intersectsExtent = function (extent) {\n return abstract();\n };\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @abstract\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n Geometry.prototype.translate = function (deltaX, deltaY) {\n abstract();\n };\n /**\n * Transform each coordinate of the geometry from one coordinate reference\n * system to another. The geometry is modified in place.\n * For example, a line will be transformed to a line and a circle to a circle.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n *\n * @param {import(\"../proj.js\").ProjectionLike} source The current projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @param {import(\"../proj.js\").ProjectionLike} destination The desired projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @return {Geometry} This geometry. Note that original geometry is\n * modified in place.\n * @api\n */\n Geometry.prototype.transform = function (source, destination) {\n /** @type {import(\"../proj/Projection.js\").default} */\n var sourceProj = getProjection(source);\n var transformFn = sourceProj.getUnits() == Units.TILE_PIXELS ?\n function (inCoordinates, outCoordinates, stride) {\n var pixelExtent = sourceProj.getExtent();\n var projectedExtent = sourceProj.getWorldExtent();\n var scale = getHeight(projectedExtent) / getHeight(pixelExtent);\n composeTransform(tmpTransform, projectedExtent[0], projectedExtent[3], scale, -scale, 0, 0, 0);\n transform2D(inCoordinates, 0, inCoordinates.length, stride, tmpTransform, outCoordinates);\n return getTransform(sourceProj, destination)(inCoordinates, outCoordinates, stride);\n } :\n getTransform(sourceProj, destination);\n this.applyTransform(transformFn);\n return this;\n };\n return Geometry;\n}(BaseObject));\nexport default Geometry;\n//# sourceMappingURL=Geometry.js.map","/**\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","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cloneNode_1 = __importDefault(require(\"./cloneNode\"));\nvar embedWebFonts_1 = __importDefault(require(\"./embedWebFonts\"));\nvar embedImages_1 = __importDefault(require(\"./embedImages\"));\nvar createSvgDataURL_1 = __importDefault(require(\"./createSvgDataURL\"));\nvar applyStyleWithOptions_1 = __importDefault(require(\"./applyStyleWithOptions\"));\nvar utils_1 = require(\"./utils\");\nfunction getImageSize(domNode, options) {\n if (options === void 0) { options = {}; }\n var width = options.width || utils_1.getNodeWidth(domNode);\n var height = options.height || utils_1.getNodeHeight(domNode);\n return { width: width, height: height };\n}\nfunction toSvgDataURL(domNode, options) {\n if (options === void 0) { options = {}; }\n var _a = getImageSize(domNode, options), width = _a.width, height = _a.height;\n return cloneNode_1.default(domNode, options.filter, true)\n .then(function (clonedNode) { return embedWebFonts_1.default(clonedNode, options); })\n .then(function (clonedNode) { return embedImages_1.default(clonedNode, options); })\n .then(function (clonedNode) { return applyStyleWithOptions_1.default(clonedNode, options); })\n .then(function (clonedNode) { return createSvgDataURL_1.default(clonedNode, width, height); });\n}\nexports.toSvgDataURL = toSvgDataURL;\nfunction toCanvas(domNode, options) {\n if (options === void 0) { options = {}; }\n return toSvgDataURL(domNode, options)\n .then(utils_1.createImage)\n .then(utils_1.delay(100))\n .then(function (image) {\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n var ratio = utils_1.getPixelRatio();\n var _a = getImageSize(domNode, options), width = _a.width, height = _a.height;\n canvas.width = width * ratio;\n canvas.height = height * ratio;\n canvas.style.width = \"\" + width;\n canvas.style.height = \"\" + height;\n context.scale(ratio, ratio);\n if (options.backgroundColor) {\n context.fillStyle = options.backgroundColor;\n context.fillRect(0, 0, canvas.width, canvas.height);\n }\n context.drawImage(image, 0, 0);\n return canvas;\n });\n}\nexports.toCanvas = toCanvas;\nfunction toPixelData(domNode, options) {\n if (options === void 0) { options = {}; }\n var _a = getImageSize(domNode, options), width = _a.width, height = _a.height;\n return toCanvas(domNode, options)\n .then(function (canvas) { return (canvas.getContext('2d').getImageData(0, 0, width, height).data); });\n}\nexports.toPixelData = toPixelData;\nfunction toPng(domNode, options) {\n if (options === void 0) { options = {}; }\n return toCanvas(domNode, options).then(function (canvas) { return (canvas.toDataURL()); });\n}\nexports.toPng = toPng;\nfunction toJpeg(domNode, options) {\n if (options === void 0) { options = {}; }\n return toCanvas(domNode, options).then(function (canvas) { return (canvas.toDataURL('image/jpeg', options.quality || 1)); });\n}\nexports.toJpeg = toJpeg;\nfunction toBlob(domNode, options) {\n if (options === void 0) { options = {}; }\n return toCanvas(domNode, options).then(utils_1.canvasToBlob);\n}\nexports.toBlob = toBlob;\nexports.default = {\n toSvgDataURL: toSvgDataURL,\n toCanvas: toCanvas,\n toPixelData: toPixelData,\n toPng: toPng,\n toJpeg: toJpeg,\n toBlob: toBlob,\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/SimpleGeometry\n */\nimport { abstract } from '../util.js';\nimport { createOrUpdateFromFlatCoordinates, getCenter } from '../extent.js';\nimport Geometry from './Geometry.js';\nimport GeometryLayout from './GeometryLayout.js';\nimport { rotate, scale, translate, transform2D } from './flat/transform.js';\n/**\n * @classdesc\n * Abstract base class; only used for creating subclasses; do not instantiate\n * in apps, as cannot be rendered.\n *\n * @abstract\n * @api\n */\nvar SimpleGeometry = /** @class */ (function (_super) {\n __extends(SimpleGeometry, _super);\n function SimpleGeometry() {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {GeometryLayout}\n */\n _this.layout = GeometryLayout.XY;\n /**\n * @protected\n * @type {number}\n */\n _this.stride = 2;\n /**\n * @protected\n * @type {Array}\n */\n _this.flatCoordinates = null;\n return _this;\n }\n /**\n * @inheritDoc\n */\n SimpleGeometry.prototype.computeExtent = function (extent) {\n return createOrUpdateFromFlatCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, extent);\n };\n /**\n * @abstract\n * @return {Array<*>} Coordinates.\n */\n SimpleGeometry.prototype.getCoordinates = function () {\n return abstract();\n };\n /**\n * Return the first coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} First coordinate.\n * @api\n */\n SimpleGeometry.prototype.getFirstCoordinate = function () {\n return this.flatCoordinates.slice(0, this.stride);\n };\n /**\n * @return {Array} Flat coordinates.\n */\n SimpleGeometry.prototype.getFlatCoordinates = function () {\n return this.flatCoordinates;\n };\n /**\n * Return the last coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} Last point.\n * @api\n */\n SimpleGeometry.prototype.getLastCoordinate = function () {\n return this.flatCoordinates.slice(this.flatCoordinates.length - this.stride);\n };\n /**\n * Return the {@link module:ol/geom/GeometryLayout layout} of the geometry.\n * @return {GeometryLayout} Layout.\n * @api\n */\n SimpleGeometry.prototype.getLayout = function () {\n return this.layout;\n };\n /**\n * @inheritDoc\n */\n SimpleGeometry.prototype.getSimplifiedGeometry = function (squaredTolerance) {\n if (this.simplifiedGeometryRevision !== this.getRevision()) {\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n this.simplifiedGeometryRevision = this.getRevision();\n }\n // If squaredTolerance is negative or if we know that simplification will not\n // have any effect then just return this.\n if (squaredTolerance < 0 ||\n (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n squaredTolerance <= this.simplifiedGeometryMaxMinSquaredTolerance)) {\n return this;\n }\n var simplifiedGeometry = this.getSimplifiedGeometryInternal(squaredTolerance);\n var simplifiedFlatCoordinates = simplifiedGeometry.getFlatCoordinates();\n if (simplifiedFlatCoordinates.length < this.flatCoordinates.length) {\n return simplifiedGeometry;\n }\n else {\n // Simplification did not actually remove any coordinates. We now know\n // that any calls to getSimplifiedGeometry with a squaredTolerance less\n // than or equal to the current squaredTolerance will also not have any\n // effect. This allows us to short circuit simplification (saving CPU\n // cycles) and prevents the cache of simplified geometries from filling\n // up with useless identical copies of this geometry (saving memory).\n this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;\n return this;\n }\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n * @protected\n */\n SimpleGeometry.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n return this;\n };\n /**\n * @return {number} Stride.\n */\n SimpleGeometry.prototype.getStride = function () {\n return this.stride;\n };\n /**\n * @param {GeometryLayout} layout Layout.\n * @param {Array} flatCoordinates Flat coordinates.\n */\n SimpleGeometry.prototype.setFlatCoordinates = function (layout, flatCoordinates) {\n this.stride = getStrideForLayout(layout);\n this.layout = layout;\n this.flatCoordinates = flatCoordinates;\n };\n /**\n * @abstract\n * @param {!Array<*>} coordinates Coordinates.\n * @param {GeometryLayout=} opt_layout Layout.\n */\n SimpleGeometry.prototype.setCoordinates = function (coordinates, opt_layout) {\n abstract();\n };\n /**\n * @param {GeometryLayout|undefined} layout Layout.\n * @param {Array<*>} coordinates Coordinates.\n * @param {number} nesting Nesting.\n * @protected\n */\n SimpleGeometry.prototype.setLayout = function (layout, coordinates, nesting) {\n /** @type {number} */\n var stride;\n if (layout) {\n stride = getStrideForLayout(layout);\n }\n else {\n for (var i = 0; i < nesting; ++i) {\n if (coordinates.length === 0) {\n this.layout = GeometryLayout.XY;\n this.stride = 2;\n return;\n }\n else {\n coordinates = /** @type {Array} */ (coordinates[0]);\n }\n }\n stride = coordinates.length;\n layout = getLayoutForStride(stride);\n }\n this.layout = layout;\n this.stride = stride;\n };\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n * @api\n */\n SimpleGeometry.prototype.applyTransform = function (transformFn) {\n if (this.flatCoordinates) {\n transformFn(this.flatCoordinates, this.flatCoordinates, this.stride);\n this.changed();\n }\n };\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n SimpleGeometry.prototype.rotate = function (angle, anchor) {\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n rotate(flatCoordinates, 0, flatCoordinates.length, stride, angle, anchor, flatCoordinates);\n this.changed();\n }\n };\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number=} opt_sy The scaling factor in the y-direction (defaults to\n * sx).\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n SimpleGeometry.prototype.scale = function (sx, opt_sy, opt_anchor) {\n var sy = opt_sy;\n if (sy === undefined) {\n sy = sx;\n }\n var anchor = opt_anchor;\n if (!anchor) {\n anchor = getCenter(this.getExtent());\n }\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n scale(flatCoordinates, 0, flatCoordinates.length, stride, sx, sy, anchor, flatCoordinates);\n this.changed();\n }\n };\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n SimpleGeometry.prototype.translate = function (deltaX, deltaY) {\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n translate(flatCoordinates, 0, flatCoordinates.length, stride, deltaX, deltaY, flatCoordinates);\n this.changed();\n }\n };\n return SimpleGeometry;\n}(Geometry));\n/**\n * @param {number} stride Stride.\n * @return {GeometryLayout} layout Layout.\n */\nfunction getLayoutForStride(stride) {\n var layout;\n if (stride == 2) {\n layout = GeometryLayout.XY;\n }\n else if (stride == 3) {\n layout = GeometryLayout.XYZ;\n }\n else if (stride == 4) {\n layout = GeometryLayout.XYZM;\n }\n return (\n /** @type {GeometryLayout} */ (layout));\n}\n/**\n * @param {GeometryLayout} layout Layout.\n * @return {number} Stride.\n */\nexport function getStrideForLayout(layout) {\n var stride;\n if (layout == GeometryLayout.XY) {\n stride = 2;\n }\n else if (layout == GeometryLayout.XYZ || layout == GeometryLayout.XYM) {\n stride = 3;\n }\n else if (layout == GeometryLayout.XYZM) {\n stride = 4;\n }\n return /** @type {number} */ (stride);\n}\n/**\n * @param {SimpleGeometry} simpleGeometry Simple geometry.\n * @param {import(\"../transform.js\").Transform} transform Transform.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed flat coordinates.\n */\nexport function transformGeom2D(simpleGeometry, transform, opt_dest) {\n var flatCoordinates = simpleGeometry.getFlatCoordinates();\n if (!flatCoordinates) {\n return null;\n }\n else {\n var stride = simpleGeometry.getStride();\n return transform2D(flatCoordinates, 0, flatCoordinates.length, stride, transform, opt_dest);\n }\n}\nexport default SimpleGeometry;\n//# sourceMappingURL=SimpleGeometry.js.map","/**\n * @module ol/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/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","/**\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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction applyStyleWithOptions(clonedNode, options) {\n var style = clonedNode.style;\n if (options.backgroundColor) {\n style.backgroundColor = options.backgroundColor;\n }\n if (options.width) {\n style.width = options.width + \"px\";\n }\n if (options.height) {\n style.height = options.height + \"px\";\n }\n if (options.style) {\n Object.assign(style, options.style);\n }\n return clonedNode;\n}\nexports.default = applyStyleWithOptions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"./utils\");\nfunction formatCssText(style) {\n var content = style.getPropertyValue('content');\n return style.cssText + \" content: \" + content + \";\";\n}\nfunction formatCssProperties(style) {\n return utils_1.toArray(style).map(function (name) {\n var value = style.getPropertyValue(name);\n var priority = style.getPropertyPriority(name);\n return name + \": \" + value + (priority ? ' !important' : '') + \";\";\n }).join(' ');\n}\nfunction getPseudoElementStyle(className, pseudo, style) {\n var selector = \".\" + className + \":\" + pseudo;\n var cssText = style.cssText ? formatCssText(style) : formatCssProperties(style);\n return document.createTextNode(selector + \"{\" + cssText + \"}\");\n}\nfunction clonePseudoElement(nativeNode, clonedNode, pseudo) {\n var style = window.getComputedStyle(nativeNode, pseudo);\n var content = style.getPropertyValue('content');\n if (content === '' || content === 'none') {\n return;\n }\n var className = utils_1.uuid();\n var styleElement = document.createElement('style');\n styleElement.appendChild(getPseudoElementStyle(className, pseudo, style));\n clonedNode.className = clonedNode.className + \" \" + className;\n clonedNode.appendChild(styleElement);\n}\nfunction clonePseudoElements(nativeNode, clonedNode) {\n [\n ':before',\n ':after',\n ].forEach(function (pseudo) { return clonePseudoElement(nativeNode, clonedNode, pseudo); });\n}\nexports.default = clonePseudoElements;\n","/**\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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"./utils\");\nfunction createSvgDataURL(clonedNode, width, height) {\n var xmlns = 'http://www.w3.org/2000/svg';\n var svg = document.createElementNS(xmlns, 'svg');\n var foreignObject = document.createElementNS(xmlns, 'foreignObject');\n svg.setAttributeNS('', 'width', \"\" + width);\n svg.setAttributeNS('', 'height', \"\" + height);\n foreignObject.setAttributeNS('', 'width', '100%');\n foreignObject.setAttributeNS('', 'height', '100%');\n foreignObject.setAttributeNS('', 'x', '0');\n foreignObject.setAttributeNS('', 'y', '0');\n foreignObject.setAttributeNS('', 'externalResourcesRequired', 'true');\n svg.appendChild(foreignObject);\n foreignObject.appendChild(clonedNode);\n return utils_1.svgToDataURL(svg);\n}\nexports.default = createSvgDataURL;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"./utils\");\nvar clonePseudoElements_1 = __importDefault(require(\"./clonePseudoElements\"));\nfunction cloneSingleNode(nativeNode) {\n if (nativeNode instanceof HTMLCanvasElement) {\n return utils_1.createImage(nativeNode.toDataURL());\n }\n if (nativeNode.tagName && nativeNode.tagName.toLowerCase() === 'svg') {\n return Promise.resolve(nativeNode)\n .then(function (svg) { return utils_1.svgToDataURL(svg); })\n .then(utils_1.createImage);\n }\n return Promise.resolve(nativeNode.cloneNode(false));\n}\nfunction cloneChildren(nativeNode, clonedNode, filter) {\n var children = utils_1.toArray(nativeNode.childNodes);\n if (children.length === 0) {\n return Promise.resolve(clonedNode);\n }\n // clone children in order\n return children.reduce(function (done, child) { return done\n .then(function () { return cloneNode(child, filter); })\n .then(function (clonedChild) {\n if (clonedChild) {\n clonedNode.appendChild(clonedChild);\n }\n }); }, Promise.resolve())\n .then(function () { return clonedNode; });\n}\nfunction cloneCssStyle(nativeNode, clonedNode) {\n var source = window.getComputedStyle(nativeNode);\n var target = clonedNode.style;\n if (source.cssText) {\n target.cssText = source.cssText;\n }\n else {\n utils_1.toArray(source).forEach(function (name) {\n target.setProperty(name, source.getPropertyValue(name), source.getPropertyPriority(name));\n });\n }\n}\nfunction cloneInputValue(nativeNode, clonedNode) {\n if (nativeNode instanceof HTMLTextAreaElement) {\n clonedNode.innerHTML = nativeNode.value;\n }\n if (nativeNode instanceof HTMLInputElement) {\n clonedNode.setAttribute('value', nativeNode.value);\n }\n}\nfunction decorate(nativeNode, clonedNode) {\n if (!(clonedNode instanceof Element)) {\n return clonedNode;\n }\n return Promise.resolve()\n .then(function () { return cloneCssStyle(nativeNode, clonedNode); })\n .then(function () { return clonePseudoElements_1.default(nativeNode, clonedNode); })\n .then(function () { return cloneInputValue(nativeNode, clonedNode); })\n .then(function () { return clonedNode; });\n}\nfunction cloneNode(domNode, filter, isRoot) {\n if (!isRoot && filter && !filter(domNode)) {\n return Promise.resolve(null);\n }\n return Promise.resolve(domNode)\n .then(cloneSingleNode)\n .then(function (clonedNode) { return cloneChildren(domNode, clonedNode, filter); })\n .then(function (clonedNode) { return decorate(domNode, clonedNode); });\n}\nexports.default = cloneNode;\n","/**\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","/**\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","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/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/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","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/Circle\n */\nimport { createOrUpdate, forEachCorner, intersects } from '../extent.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { deflateCoordinate } from './flat/deflate.js';\nimport { rotate, translate } from './flat/transform.js';\n/**\n * @classdesc\n * Circle geometry.\n *\n * @api\n */\nvar Circle = /** @class */ (function (_super) {\n __extends(Circle, _super);\n /**\n * @param {!import(\"../coordinate.js\").Coordinate} center Center.\n * For internal use, flat coordinates in combination with `opt_layout` and no\n * `opt_radius` are also accepted.\n * @param {number=} opt_radius Radius.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n function Circle(center, opt_radius, opt_layout) {\n var _this = _super.call(this) || this;\n if (opt_layout !== undefined && opt_radius === undefined) {\n _this.setFlatCoordinates(opt_layout, center);\n }\n else {\n var radius = opt_radius ? opt_radius : 0;\n _this.setCenterAndRadius(center, radius, opt_layout);\n }\n return _this;\n }\n /**\n * Make a complete copy of the geometry.\n * @return {!Circle} Clone.\n * @override\n * @api\n */\n Circle.prototype.clone = function () {\n return new Circle(this.flatCoordinates.slice(), undefined, this.layout);\n };\n /**\n * @inheritDoc\n */\n Circle.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n var flatCoordinates = this.flatCoordinates;\n var dx = x - flatCoordinates[0];\n var dy = y - flatCoordinates[1];\n var squaredDistance = dx * dx + dy * dy;\n if (squaredDistance < minSquaredDistance) {\n if (squaredDistance === 0) {\n for (var i = 0; i < this.stride; ++i) {\n closestPoint[i] = flatCoordinates[i];\n }\n }\n else {\n var delta = this.getRadius() / Math.sqrt(squaredDistance);\n closestPoint[0] = flatCoordinates[0] + delta * dx;\n closestPoint[1] = flatCoordinates[1] + delta * dy;\n for (var i = 2; i < this.stride; ++i) {\n closestPoint[i] = flatCoordinates[i];\n }\n }\n closestPoint.length = this.stride;\n return squaredDistance;\n }\n else {\n return minSquaredDistance;\n }\n };\n /**\n * @inheritDoc\n */\n Circle.prototype.containsXY = function (x, y) {\n var flatCoordinates = this.flatCoordinates;\n var dx = x - flatCoordinates[0];\n var dy = y - flatCoordinates[1];\n return dx * dx + dy * dy <= this.getRadiusSquared_();\n };\n /**\n * Return the center of the circle as {@link module:ol/coordinate~Coordinate coordinate}.\n * @return {import(\"../coordinate.js\").Coordinate} Center.\n * @api\n */\n Circle.prototype.getCenter = function () {\n return this.flatCoordinates.slice(0, this.stride);\n };\n /**\n * @inheritDoc\n */\n Circle.prototype.computeExtent = function (extent) {\n var flatCoordinates = this.flatCoordinates;\n var radius = flatCoordinates[this.stride] - flatCoordinates[0];\n return createOrUpdate(flatCoordinates[0] - radius, flatCoordinates[1] - radius, flatCoordinates[0] + radius, flatCoordinates[1] + radius, extent);\n };\n /**\n * Return the radius of the circle.\n * @return {number} Radius.\n * @api\n */\n Circle.prototype.getRadius = function () {\n return Math.sqrt(this.getRadiusSquared_());\n };\n /**\n * @private\n * @return {number} Radius squared.\n */\n Circle.prototype.getRadiusSquared_ = function () {\n var dx = this.flatCoordinates[this.stride] - this.flatCoordinates[0];\n var dy = this.flatCoordinates[this.stride + 1] - this.flatCoordinates[1];\n return dx * dx + dy * dy;\n };\n /**\n * @inheritDoc\n * @api\n */\n Circle.prototype.getType = function () {\n return GeometryType.CIRCLE;\n };\n /**\n * @inheritDoc\n * @api\n */\n Circle.prototype.intersectsExtent = function (extent) {\n var circleExtent = this.getExtent();\n if (intersects(extent, circleExtent)) {\n var center = this.getCenter();\n if (extent[0] <= center[0] && extent[2] >= center[0]) {\n return true;\n }\n if (extent[1] <= center[1] && extent[3] >= center[1]) {\n return true;\n }\n return forEachCorner(extent, this.intersectsCoordinate.bind(this));\n }\n return false;\n };\n /**\n * Set the center of the circle as {@link module:ol/coordinate~Coordinate coordinate}.\n * @param {import(\"../coordinate.js\").Coordinate} center Center.\n * @api\n */\n Circle.prototype.setCenter = function (center) {\n var stride = this.stride;\n var radius = this.flatCoordinates[stride] - this.flatCoordinates[0];\n var flatCoordinates = center.slice();\n flatCoordinates[stride] = flatCoordinates[0] + radius;\n for (var i = 1; i < stride; ++i) {\n flatCoordinates[stride + i] = center[i];\n }\n this.setFlatCoordinates(this.layout, flatCoordinates);\n this.changed();\n };\n /**\n * Set the center (as {@link module:ol/coordinate~Coordinate coordinate}) and the radius (as\n * number) of the circle.\n * @param {!import(\"../coordinate.js\").Coordinate} center Center.\n * @param {number} radius Radius.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @api\n */\n Circle.prototype.setCenterAndRadius = function (center, radius, opt_layout) {\n this.setLayout(opt_layout, center, 0);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n /** @type {Array} */\n var flatCoordinates = this.flatCoordinates;\n var offset = deflateCoordinate(flatCoordinates, 0, center, this.stride);\n flatCoordinates[offset++] = flatCoordinates[0] + radius;\n for (var i = 1, ii = this.stride; i < ii; ++i) {\n flatCoordinates[offset++] = flatCoordinates[i];\n }\n flatCoordinates.length = offset;\n this.changed();\n };\n /**\n * @inheritDoc\n */\n Circle.prototype.getCoordinates = function () {\n return null;\n };\n /**\n * @inheritDoc\n */\n Circle.prototype.setCoordinates = function (coordinates, opt_layout) { };\n /**\n * Set the radius of the circle. The radius is in the units of the projection.\n * @param {number} radius Radius.\n * @api\n */\n Circle.prototype.setRadius = function (radius) {\n this.flatCoordinates[this.stride] = this.flatCoordinates[0] + radius;\n this.changed();\n };\n /**\n * @inheritDoc\n * @api\n */\n Circle.prototype.rotate = function (angle, anchor) {\n var center = this.getCenter();\n var stride = this.getStride();\n this.setCenter(rotate(center, 0, center.length, stride, angle, anchor, center));\n this.changed();\n };\n /**\n * @inheritDoc\n * @api\n */\n Circle.prototype.translate = function (deltaX, deltaY) {\n var center = this.getCenter();\n var stride = this.getStride();\n this.setCenter(translate(center, 0, center.length, stride, deltaX, deltaY, center));\n this.changed();\n };\n return Circle;\n}(SimpleGeometry));\n/**\n * Transform each coordinate of the circle from one coordinate reference system\n * to another. 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 *\n * Internally a circle is currently represented by two points: the center of\n * the circle `[cx, cy]`, and the point to the right of the circle\n * `[cx + r, cy]`. This `transform` function just transforms these two points.\n * So the resulting geometry is also a circle, and that circle does not\n * correspond to the shape that would be obtained by transforming every point\n * of the original circle.\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 {Circle} This geometry. Note that original geometry is\n * modified in place.\n * @function\n * @api\n */\nCircle.prototype.transform;\nexport default Circle;\n//# sourceMappingURL=Circle.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","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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/MapEvent\n */\nimport Event from './events/Event.js';\n/**\n * @classdesc\n * Events emitted as map events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map event.\n */\nvar MapEvent = /** @class */ (function (_super) {\n __extends(MapEvent, _super);\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n function MapEvent(type, map, opt_frameState) {\n var _this = _super.call(this, type) || this;\n /**\n * The map where the event occurred.\n * @type {import(\"./PluggableMap.js\").default}\n * @api\n */\n _this.map = map;\n /**\n * The frame state at the time of the event.\n * @type {?import(\"./PluggableMap.js\").FrameState}\n * @api\n */\n _this.frameState = opt_frameState !== undefined ? opt_frameState : null;\n return _this;\n }\n return MapEvent;\n}(Event));\nexport default MapEvent;\n//# sourceMappingURL=MapEvent.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/MapBrowserEvent\n */\nimport MapEvent from './MapEvent.js';\n/**\n * @classdesc\n * Events emitted as map browser events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map browser event.\n */\nvar MapBrowserEvent = /** @class */ (function (_super) {\n __extends(MapBrowserEvent, _super);\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {Event} browserEvent Browser event.\n * @param {boolean=} opt_dragging Is the map currently being dragged?\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n function MapBrowserEvent(type, map, browserEvent, opt_dragging, opt_frameState) {\n var _this = _super.call(this, type, map, opt_frameState) || this;\n /**\n * The original browser event.\n * @const\n * @type {Event}\n * @api\n */\n _this.originalEvent = browserEvent;\n /**\n * The map pixel relative to the viewport corresponding to the original browser event.\n * @type {?import(\"./pixel.js\").Pixel}\n */\n _this.pixel_ = null;\n /**\n * The coordinate in the user projection corresponding to the original browser event.\n * @type {?import(\"./coordinate.js\").Coordinate}\n */\n _this.coordinate_ = null;\n /**\n * Indicates if the map is currently being dragged. Only set for\n * `POINTERDRAG` and `POINTERMOVE` events. Default is `false`.\n *\n * @type {boolean}\n * @api\n */\n _this.dragging = opt_dragging !== undefined ? opt_dragging : false;\n return _this;\n }\n Object.defineProperty(MapBrowserEvent.prototype, \"pixel\", {\n /**\n * The map pixel relative to the viewport corresponding to the original browser event.\n * @type {import(\"./pixel.js\").Pixel}\n * @api\n */\n get: function () {\n if (!this.pixel_) {\n this.pixel_ = this.map.getEventPixel(this.originalEvent);\n }\n return this.pixel_;\n },\n set: function (pixel) {\n this.pixel_ = pixel;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MapBrowserEvent.prototype, \"coordinate\", {\n /**\n * The coordinate corresponding to the original browser event. This will be in the user\n * projection if one is set. Otherwise it will be in the view projection.\n * @type {import(\"./coordinate.js\").Coordinate}\n * @api\n */\n get: function () {\n if (!this.coordinate_) {\n this.coordinate_ = this.map.getCoordinateFromPixel(this.pixel);\n }\n return this.coordinate_;\n },\n set: function (coordinate) {\n this.coordinate_ = coordinate;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Prevents the default browser action.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault.\n * @override\n * @api\n */\n MapBrowserEvent.prototype.preventDefault = function () {\n _super.prototype.preventDefault.call(this);\n this.originalEvent.preventDefault();\n };\n /**\n * Prevents further propagation of the current event.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation.\n * @override\n * @api\n */\n MapBrowserEvent.prototype.stopPropagation = function () {\n _super.prototype.stopPropagation.call(this);\n this.originalEvent.stopPropagation();\n };\n return MapBrowserEvent;\n}(MapEvent));\nexport default MapBrowserEvent;\n//# sourceMappingURL=MapBrowserEvent.js.map","/**\n * @module ol/has\n */\nvar ua = typeof navigator !== 'undefined' ?\n navigator.userAgent.toLowerCase() : '';\n/**\n * User agent string says we are dealing with Firefox as browser.\n * @type {boolean}\n */\nexport var FIREFOX = ua.indexOf('firefox') !== -1;\n/**\n * User agent string says we are dealing with Safari as browser.\n * @type {boolean}\n */\nexport var SAFARI = ua.indexOf('safari') !== -1 && ua.indexOf('chrom') == -1;\n/**\n * User agent string says we are dealing with a WebKit engine.\n * @type {boolean}\n */\nexport var WEBKIT = ua.indexOf('webkit') !== -1 && ua.indexOf('edge') == -1;\n/**\n * User agent string says we are dealing with a Mac as platform.\n * @type {boolean}\n */\nexport var MAC = ua.indexOf('macintosh') !== -1;\n/**\n * The ratio between physical pixels and device-independent pixels\n * (dips) on the device (`window.devicePixelRatio`).\n * @const\n * @type {number}\n * @api\n */\nexport var DEVICE_PIXEL_RATIO = window.devicePixelRatio || 1;\n/**\n * Image.prototype.decode() is supported.\n * @type {boolean}\n */\nexport var IMAGE_DECODE = typeof Image !== 'undefined' && Image.prototype.decode;\n//# sourceMappingURL=has.js.map","/**\n * @module ol/MapBrowserEventType\n */\nimport EventType from './events/EventType.js';\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n /**\n * A true single click with no dragging and no double click. Note that this\n * event is delayed by 250 ms to ensure that it is not a double click.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#singleclick\n * @api\n */\n SINGLECLICK: 'singleclick',\n /**\n * A click with no dragging. A double click will fire two of this.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#click\n * @api\n */\n CLICK: EventType.CLICK,\n /**\n * A true double click, with no dragging.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#dblclick\n * @api\n */\n DBLCLICK: EventType.DBLCLICK,\n /**\n * Triggered when a pointer is dragged.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointerdrag\n * @api\n */\n POINTERDRAG: 'pointerdrag',\n /**\n * Triggered when a pointer is moved. Note that on touch devices this is\n * triggered when the map is panned, so is not the same as mousemove.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointermove\n * @api\n */\n POINTERMOVE: 'pointermove',\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel'\n};\n//# sourceMappingURL=MapBrowserEventType.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/MapBrowserPointerEvent\n */\nimport MapBrowserEvent from './MapBrowserEvent.js';\nvar MapBrowserPointerEvent = /** @class */ (function (_super) {\n __extends(MapBrowserPointerEvent, _super);\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {PointerEvent} pointerEvent Pointer event.\n * @param {boolean=} opt_dragging Is the map currently being dragged?\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n function MapBrowserPointerEvent(type, map, pointerEvent, opt_dragging, opt_frameState) {\n var _this = _super.call(this, type, map, pointerEvent, opt_dragging, opt_frameState) || this;\n /**\n * @const\n * @type {PointerEvent}\n */\n _this.pointerEvent = pointerEvent;\n return _this;\n }\n return MapBrowserPointerEvent;\n}(MapBrowserEvent));\nexport default MapBrowserPointerEvent;\n//# sourceMappingURL=MapBrowserPointerEvent.js.map","/**\n * @module ol/pointer/EventType\n */\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n POINTERMOVE: 'pointermove',\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel'\n};\n//# sourceMappingURL=EventType.js.map","/**\n * @module ol/MapBrowserEventHandler\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport '@openlayers/pepjs';\nimport { DEVICE_PIXEL_RATIO } from './has.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapBrowserPointerEvent from './MapBrowserPointerEvent.js';\nimport { listen, unlistenByKey } from './events.js';\nimport EventTarget from './events/Target.js';\nimport PointerEventType from './pointer/EventType.js';\nvar MapBrowserEventHandler = /** @class */ (function (_super) {\n __extends(MapBrowserEventHandler, _super);\n /**\n * @param {import(\"./PluggableMap.js\").default} map The map with the viewport to listen to events on.\n * @param {number=} moveTolerance The minimal distance the pointer must travel to trigger a move.\n */\n function MapBrowserEventHandler(map, moveTolerance) {\n var _this = _super.call(this, map) || this;\n /**\n * This is the element that we will listen to the real events on.\n * @type {import(\"./PluggableMap.js\").default}\n * @private\n */\n _this.map_ = map;\n /**\n * @type {any}\n * @private\n */\n _this.clickTimeoutId_;\n /**\n * @type {boolean}\n * @private\n */\n _this.dragging_ = false;\n /**\n * @type {!Array}\n * @private\n */\n _this.dragListenerKeys_ = [];\n /**\n * @type {number}\n * @private\n */\n _this.moveTolerance_ = moveTolerance ?\n moveTolerance * DEVICE_PIXEL_RATIO : DEVICE_PIXEL_RATIO;\n /**\n * The most recent \"down\" type event (or null if none have occurred).\n * Set on pointerdown.\n * @type {PointerEvent}\n * @private\n */\n _this.down_ = null;\n var element = _this.map_.getViewport();\n /**\n * @type {number}\n * @private\n */\n _this.activePointers_ = 0;\n /**\n * @type {!Object}\n * @private\n */\n _this.trackedTouches_ = {};\n _this.element_ = element;\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.pointerdownListenerKey_ = listen(element, PointerEventType.POINTERDOWN, _this.handlePointerDown_, _this);\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.relayedListenerKey_ = listen(element, PointerEventType.POINTERMOVE, _this.relayEvent_, _this);\n return _this;\n }\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.emulateClick_ = function (pointerEvent) {\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.CLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n if (this.clickTimeoutId_ !== undefined) {\n // double-click\n clearTimeout(this.clickTimeoutId_);\n this.clickTimeoutId_ = undefined;\n newEvent = new MapBrowserPointerEvent(MapBrowserEventType.DBLCLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }\n else {\n // click\n this.clickTimeoutId_ = setTimeout(function () {\n this.clickTimeoutId_ = undefined;\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.SINGLECLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }.bind(this), 250);\n }\n };\n /**\n * Keeps track on how many pointers are currently active.\n *\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.updateActivePointers_ = function (pointerEvent) {\n var event = pointerEvent;\n if (event.type == MapBrowserEventType.POINTERUP ||\n event.type == MapBrowserEventType.POINTERCANCEL) {\n delete this.trackedTouches_[event.pointerId];\n }\n else if (event.type == MapBrowserEventType.POINTERDOWN) {\n this.trackedTouches_[event.pointerId] = true;\n }\n this.activePointers_ = Object.keys(this.trackedTouches_).length;\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerUp_ = function (pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.POINTERUP, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n // We emulate click events on left mouse button click, touch contact, and pen\n // contact. isMouseActionButton returns true in these cases (evt.button is set\n // to 0).\n // See http://www.w3.org/TR/pointerevents/#button-states\n // We only fire click, singleclick, and doubleclick if nobody has called\n // event.stopPropagation() or event.preventDefault().\n if (!newEvent.propagationStopped && !this.dragging_ && this.isMouseActionButton_(pointerEvent)) {\n this.emulateClick_(this.down_);\n }\n if (this.activePointers_ === 0) {\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.dragging_ = false;\n this.down_ = null;\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} If the left mouse button was pressed.\n * @private\n */\n MapBrowserEventHandler.prototype.isMouseActionButton_ = function (pointerEvent) {\n return pointerEvent.button === 0;\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerDown_ = function (pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.POINTERDOWN, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n this.down_ = pointerEvent;\n if (this.dragListenerKeys_.length === 0) {\n this.dragListenerKeys_.push(listen(document, MapBrowserEventType.POINTERMOVE, this.handlePointerMove_, this), listen(document, MapBrowserEventType.POINTERUP, this.handlePointerUp_, this), \n /* Note that the listener for `pointercancel is set up on\n * `pointerEventHandler_` and not `documentPointerEventHandler_` like\n * the `pointerup` and `pointermove` listeners.\n *\n * The reason for this is the following: `TouchSource.vacuumTouches_()`\n * issues `pointercancel` events, when there was no `touchend` for a\n * `touchstart`. Now, let's say a first `touchstart` is registered on\n * `pointerEventHandler_`. The `documentPointerEventHandler_` is set up.\n * But `documentPointerEventHandler_` doesn't know about the first\n * `touchstart`. If there is no `touchend` for the `touchstart`, we can\n * only receive a `touchcancel` from `pointerEventHandler_`, because it is\n * only registered there.\n */\n listen(this.element_, MapBrowserEventType.POINTERCANCEL, this.handlePointerUp_, this));\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerMove_ = function (pointerEvent) {\n // Between pointerdown and pointerup, pointermove events are triggered.\n // To avoid a 'false' touchmove event to be dispatched, we test if the pointer\n // moved a significant distance.\n if (this.isMoving_(pointerEvent)) {\n this.dragging_ = true;\n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.POINTERDRAG, this.map_, pointerEvent, this.dragging_);\n this.dispatchEvent(newEvent);\n }\n };\n /**\n * Wrap and relay a pointer event. Note that this requires that the type\n * string for the MapBrowserPointerEvent matches the PointerEvent type.\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.relayEvent_ = function (pointerEvent) {\n var dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n this.dispatchEvent(new MapBrowserPointerEvent(pointerEvent.type, this.map_, pointerEvent, dragging));\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} Is moving.\n * @private\n */\n MapBrowserEventHandler.prototype.isMoving_ = function (pointerEvent) {\n return this.dragging_ ||\n Math.abs(pointerEvent.clientX - this.down_.clientX) > this.moveTolerance_ ||\n Math.abs(pointerEvent.clientY - this.down_.clientY) > this.moveTolerance_;\n };\n /**\n * @inheritDoc\n */\n MapBrowserEventHandler.prototype.disposeInternal = function () {\n if (this.relayedListenerKey_) {\n unlistenByKey(this.relayedListenerKey_);\n this.relayedListenerKey_ = null;\n }\n if (this.pointerdownListenerKey_) {\n unlistenByKey(this.pointerdownListenerKey_);\n this.pointerdownListenerKey_ = null;\n }\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.element_ = null;\n _super.prototype.disposeInternal.call(this);\n };\n return MapBrowserEventHandler;\n}(EventTarget));\nexport default MapBrowserEventHandler;\n//# sourceMappingURL=MapBrowserEventHandler.js.map","/**\n * @module ol/MapEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered after a map frame is rendered.\n * @event module:ol/MapEvent~MapEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n /**\n * Triggered when the map starts moving.\n * @event module:ol/MapEvent~MapEvent#movestart\n * @api\n */\n MOVESTART: 'movestart',\n /**\n * Triggered after the map is moved.\n * @event module:ol/MapEvent~MapEvent#moveend\n * @api\n */\n MOVEEND: 'moveend'\n};\n//# sourceMappingURL=MapEventType.js.map","/**\n * @module ol/MapProperty\n */\n/**\n * @enum {string}\n */\nexport default {\n LAYERGROUP: 'layergroup',\n SIZE: 'size',\n TARGET: 'target',\n VIEW: 'view'\n};\n//# sourceMappingURL=MapProperty.js.map","/**\n * @module ol/render/EventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered before a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#prerender\n * @api\n */\n PRERENDER: 'prerender',\n /**\n * Triggered after a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n /**\n * Triggered before layers are rendered.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#precompose\n * @api\n */\n PRECOMPOSE: 'precompose',\n /**\n * Triggered after all layers are rendered.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#postcompose\n * @api\n */\n POSTCOMPOSE: 'postcompose',\n /**\n * Triggered when rendering is complete, i.e. all sources and tiles have\n * finished loading for the current viewport, and all tiles are faded in.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#rendercomplete\n * @api\n */\n RENDERCOMPLETE: 'rendercomplete'\n};\n//# sourceMappingURL=EventType.js.map","/**\n * @module ol/TileState\n */\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n /**\n * Indicates that tile loading failed\n * @type {number}\n */\n ERROR: 3,\n EMPTY: 4,\n ABORT: 5\n};\n//# sourceMappingURL=TileState.js.map","/**\n * @module ol/structs/PriorityQueue\n */\nimport { assert } from '../asserts.js';\nimport { clear } from '../obj.js';\n/**\n * @type {number}\n */\nexport var DROP = Infinity;\n/**\n * @classdesc\n * Priority queue.\n *\n * The implementation is inspired from the Closure Library's Heap class and\n * Python's heapq module.\n *\n * See http://closure-library.googlecode.com/svn/docs/closure_goog_structs_heap.js.source.html\n * and http://hg.python.org/cpython/file/2.7/Lib/heapq.py.\n *\n * @template T\n */\nvar PriorityQueue = /** @class */ (function () {\n /**\n * @param {function(T): number} priorityFunction Priority function.\n * @param {function(T): string} keyFunction Key function.\n */\n function PriorityQueue(priorityFunction, keyFunction) {\n /**\n * @type {function(T): number}\n * @private\n */\n this.priorityFunction_ = priorityFunction;\n /**\n * @type {function(T): string}\n * @private\n */\n this.keyFunction_ = keyFunction;\n /**\n * @type {Array}\n * @private\n */\n this.elements_ = [];\n /**\n * @type {Array}\n * @private\n */\n this.priorities_ = [];\n /**\n * @type {!Object}\n * @private\n */\n this.queuedElements_ = {};\n }\n /**\n * FIXME empty description for jsdoc\n */\n PriorityQueue.prototype.clear = function () {\n this.elements_.length = 0;\n this.priorities_.length = 0;\n clear(this.queuedElements_);\n };\n /**\n * Remove and return the highest-priority element. O(log N).\n * @return {T} Element.\n */\n PriorityQueue.prototype.dequeue = function () {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var element = elements[0];\n if (elements.length == 1) {\n elements.length = 0;\n priorities.length = 0;\n }\n else {\n elements[0] = elements.pop();\n priorities[0] = priorities.pop();\n this.siftUp_(0);\n }\n var elementKey = this.keyFunction_(element);\n delete this.queuedElements_[elementKey];\n return element;\n };\n /**\n * Enqueue an element. O(log N).\n * @param {T} element Element.\n * @return {boolean} The element was added to the queue.\n */\n PriorityQueue.prototype.enqueue = function (element) {\n assert(!(this.keyFunction_(element) in this.queuedElements_), 31); // Tried to enqueue an `element` that was already added to the queue\n var priority = this.priorityFunction_(element);\n if (priority != DROP) {\n this.elements_.push(element);\n this.priorities_.push(priority);\n this.queuedElements_[this.keyFunction_(element)] = true;\n this.siftDown_(0, this.elements_.length - 1);\n return true;\n }\n return false;\n };\n /**\n * @return {number} Count.\n */\n PriorityQueue.prototype.getCount = function () {\n return this.elements_.length;\n };\n /**\n * Gets the index of the left child of the node at the given index.\n * @param {number} index The index of the node to get the left child for.\n * @return {number} The index of the left child.\n * @private\n */\n PriorityQueue.prototype.getLeftChildIndex_ = function (index) {\n return index * 2 + 1;\n };\n /**\n * Gets the index of the right child of the node at the given index.\n * @param {number} index The index of the node to get the right child for.\n * @return {number} The index of the right child.\n * @private\n */\n PriorityQueue.prototype.getRightChildIndex_ = function (index) {\n return index * 2 + 2;\n };\n /**\n * Gets the index of the parent of the node at the given index.\n * @param {number} index The index of the node to get the parent for.\n * @return {number} The index of the parent.\n * @private\n */\n PriorityQueue.prototype.getParentIndex_ = function (index) {\n return (index - 1) >> 1;\n };\n /**\n * Make this a heap. O(N).\n * @private\n */\n PriorityQueue.prototype.heapify_ = function () {\n var i;\n for (i = (this.elements_.length >> 1) - 1; i >= 0; i--) {\n this.siftUp_(i);\n }\n };\n /**\n * @return {boolean} Is empty.\n */\n PriorityQueue.prototype.isEmpty = function () {\n return this.elements_.length === 0;\n };\n /**\n * @param {string} key Key.\n * @return {boolean} Is key queued.\n */\n PriorityQueue.prototype.isKeyQueued = function (key) {\n return key in this.queuedElements_;\n };\n /**\n * @param {T} element Element.\n * @return {boolean} Is queued.\n */\n PriorityQueue.prototype.isQueued = function (element) {\n return this.isKeyQueued(this.keyFunction_(element));\n };\n /**\n * @param {number} index The index of the node to move down.\n * @private\n */\n PriorityQueue.prototype.siftUp_ = function (index) {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var count = elements.length;\n var element = elements[index];\n var priority = priorities[index];\n var startIndex = index;\n while (index < (count >> 1)) {\n var lIndex = this.getLeftChildIndex_(index);\n var rIndex = this.getRightChildIndex_(index);\n var smallerChildIndex = rIndex < count &&\n priorities[rIndex] < priorities[lIndex] ?\n rIndex : lIndex;\n elements[index] = elements[smallerChildIndex];\n priorities[index] = priorities[smallerChildIndex];\n index = smallerChildIndex;\n }\n elements[index] = element;\n priorities[index] = priority;\n this.siftDown_(startIndex, index);\n };\n /**\n * @param {number} startIndex The index of the root.\n * @param {number} index The index of the node to move up.\n * @private\n */\n PriorityQueue.prototype.siftDown_ = function (startIndex, index) {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var element = elements[index];\n var priority = priorities[index];\n while (index > startIndex) {\n var parentIndex = this.getParentIndex_(index);\n if (priorities[parentIndex] > priority) {\n elements[index] = elements[parentIndex];\n priorities[index] = priorities[parentIndex];\n index = parentIndex;\n }\n else {\n break;\n }\n }\n elements[index] = element;\n priorities[index] = priority;\n };\n /**\n * FIXME empty description for jsdoc\n */\n PriorityQueue.prototype.reprioritize = function () {\n var priorityFunction = this.priorityFunction_;\n var elements = this.elements_;\n var priorities = this.priorities_;\n var index = 0;\n var n = elements.length;\n var element, i, priority;\n for (i = 0; i < n; ++i) {\n element = elements[i];\n priority = priorityFunction(element);\n if (priority == DROP) {\n delete this.queuedElements_[this.keyFunction_(element)];\n }\n else {\n priorities[index] = priority;\n elements[index++] = element;\n }\n }\n elements.length = index;\n priorities.length = index;\n this.heapify_();\n };\n return PriorityQueue;\n}());\nexport default PriorityQueue;\n//# sourceMappingURL=PriorityQueue.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/TileQueue\n */\nimport TileState from './TileState.js';\nimport EventType from './events/EventType.js';\nimport PriorityQueue from './structs/PriorityQueue.js';\n/**\n * @typedef {function(import(\"./Tile.js\").default, string, import(\"./coordinate.js\").Coordinate, number): number} PriorityFunction\n */\nvar TileQueue = /** @class */ (function (_super) {\n __extends(TileQueue, _super);\n /**\n * @param {PriorityFunction} tilePriorityFunction Tile priority function.\n * @param {function(): ?} tileChangeCallback Function called on each tile change event.\n */\n function TileQueue(tilePriorityFunction, tileChangeCallback) {\n var _this = _super.call(this, \n /**\n * @param {Array} element Element.\n * @return {number} Priority.\n */\n function (element) {\n return tilePriorityFunction.apply(null, element);\n }, \n /**\n * @param {Array} element Element.\n * @return {string} Key.\n */\n function (element) {\n return ( /** @type {import(\"./Tile.js\").default} */(element[0]).getKey());\n }) || this;\n /** @private */\n _this.boundHandleTileChange_ = _this.handleTileChange.bind(_this);\n /**\n * @private\n * @type {function(): ?}\n */\n _this.tileChangeCallback_ = tileChangeCallback;\n /**\n * @private\n * @type {number}\n */\n _this.tilesLoading_ = 0;\n /**\n * @private\n * @type {!Object}\n */\n _this.tilesLoadingKeys_ = {};\n return _this;\n }\n /**\n * @inheritDoc\n */\n TileQueue.prototype.enqueue = function (element) {\n var added = _super.prototype.enqueue.call(this, element);\n if (added) {\n var tile = element[0];\n tile.addEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n }\n return added;\n };\n /**\n * @return {number} Number of tiles loading.\n */\n TileQueue.prototype.getTilesLoading = function () {\n return this.tilesLoading_;\n };\n /**\n * @param {import(\"./events/Event.js\").default} event Event.\n * @protected\n */\n TileQueue.prototype.handleTileChange = function (event) {\n var tile = /** @type {import(\"./Tile.js\").default} */ (event.target);\n var state = tile.getState();\n if (tile.hifi && state === TileState.LOADED || state === TileState.ERROR ||\n state === TileState.EMPTY || state === TileState.ABORT) {\n tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n var tileKey = tile.getKey();\n if (tileKey in this.tilesLoadingKeys_) {\n delete this.tilesLoadingKeys_[tileKey];\n --this.tilesLoading_;\n }\n this.tileChangeCallback_();\n }\n };\n /**\n * @param {number} maxTotalLoading Maximum number tiles to load simultaneously.\n * @param {number} maxNewLoads Maximum number of new tiles to load.\n */\n TileQueue.prototype.loadMoreTiles = function (maxTotalLoading, maxNewLoads) {\n var newLoads = 0;\n var abortedTiles = false;\n var state, tile, tileKey;\n while (this.tilesLoading_ < maxTotalLoading && newLoads < maxNewLoads &&\n this.getCount() > 0) {\n tile = /** @type {import(\"./Tile.js\").default} */ (this.dequeue()[0]);\n tileKey = tile.getKey();\n state = tile.getState();\n if (state === TileState.ABORT) {\n abortedTiles = true;\n }\n else if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {\n this.tilesLoadingKeys_[tileKey] = true;\n ++this.tilesLoading_;\n ++newLoads;\n tile.load();\n }\n }\n if (newLoads === 0 && abortedTiles) {\n // Do not stop the render loop when all wanted tiles were aborted due to\n // a small, saturated tile cache.\n this.tileChangeCallback_();\n }\n };\n return TileQueue;\n}(PriorityQueue));\nexport default TileQueue;\n//# sourceMappingURL=TileQueue.js.map","/**\n * @module ol/tilegrid/common\n */\n/**\n * Default maximum zoom for default tile grids.\n * @type {number}\n */\nexport var DEFAULT_MAX_ZOOM = 42;\n/**\n * Default tile size.\n * @type {number}\n */\nexport var DEFAULT_TILE_SIZE = 256;\n//# sourceMappingURL=common.js.map","/**\n * @module ol/centerconstraint\n */\nimport { clamp } from './math.js';\n/**\n * @typedef {function((import(\"./coordinate.js\").Coordinate|undefined), number, import(\"./size.js\").Size, boolean=): (import(\"./coordinate.js\").Coordinate|undefined)} Type\n */\n/**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {boolean} onlyCenter If true, the constraint will only apply to the view center.\n * @param {boolean} smooth If true, the view will be able to go slightly out of the given extent\n * (only during interaction and animation).\n * @return {Type} The constraint.\n */\nexport function createExtent(extent, onlyCenter, smooth) {\n return (\n /**\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center Center.\n * @param {number} resolution Resolution.\n * @param {import(\"./size.js\").Size} size Viewport size; unused if `onlyCenter` was specified.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\n function (center, resolution, size, opt_isMoving) {\n if (center) {\n var viewWidth = onlyCenter ? 0 : size[0] * resolution;\n var viewHeight = onlyCenter ? 0 : size[1] * resolution;\n var minX = extent[0] + viewWidth / 2;\n var maxX = extent[2] - viewWidth / 2;\n var minY = extent[1] + viewHeight / 2;\n var maxY = extent[3] - viewHeight / 2;\n // note: when zooming out of bounds, min and max values for x and y may\n // end up inverted (min > max); this has to be accounted for\n if (minX > maxX) {\n minX = (maxX + minX) / 2;\n maxX = minX;\n }\n if (minY > maxY) {\n minY = (maxY + minY) / 2;\n maxY = minY;\n }\n var x = clamp(center[0], minX, maxX);\n var y = clamp(center[1], minY, maxY);\n var ratio = 30 * resolution;\n // during an interaction, allow some overscroll\n if (opt_isMoving && smooth) {\n x += -ratio * Math.log(1 + Math.max(0, minX - center[0]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[0] - maxX) / ratio);\n y += -ratio * Math.log(1 + Math.max(0, minY - center[1]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[1] - maxY) / ratio);\n }\n return [x, y];\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate=} center Center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\nexport function none(center) {\n return center;\n}\n//# sourceMappingURL=centerconstraint.js.map","/**\n * @module ol/resolutionconstraint\n */\nimport { linearFindNearest } from './array.js';\nimport { getHeight, getWidth } from './extent.js';\nimport { clamp } from './math.js';\n/**\n * @typedef {function((number|undefined), number, import(\"./size.js\").Size, boolean=): (number|undefined)} Type\n */\n/**\n * Returns a modified resolution taking into acocunt the viewport size and maximum\n * allowed extent.\n * @param {number} resolution Resolution\n * @param {import(\"./extent.js\").Extent=} maxExtent Maximum allowed extent.\n * @param {import(\"./size.js\").Size} viewportSize Viewport size.\n * @return {number} Capped resolution.\n */\nfunction getViewportClampedResolution(resolution, maxExtent, viewportSize) {\n var xResolution = getWidth(maxExtent) / viewportSize[0];\n var yResolution = getHeight(maxExtent) / viewportSize[1];\n return Math.min(resolution, Math.min(xResolution, yResolution));\n}\n/**\n * Returns a modified resolution to be between maxResolution and minResolution while\n * still allowing the value to be slightly out of bounds.\n * Note: the computation is based on the logarithm function (ln):\n * - at 1, ln(x) is 0\n * - above 1, ln(x) keeps increasing but at a much slower pace than x\n * The final result is clamped to prevent getting too far away from bounds.\n * @param {number} resolution Resolution.\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @return {number} Smoothed resolution.\n */\nfunction getSmoothClampedResolution(resolution, maxResolution, minResolution) {\n var result = Math.min(resolution, maxResolution);\n var ratio = 50;\n result *= Math.log(1 + ratio * Math.max(0, resolution / maxResolution - 1)) / ratio + 1;\n if (minResolution) {\n result = Math.max(result, minResolution);\n result /= Math.log(1 + ratio * Math.max(0, minResolution / resolution - 1)) / ratio + 1;\n }\n return clamp(result, minResolution / 2, maxResolution * 2);\n}\n/**\n * @param {Array} resolutions Resolutions.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @return {Type} Zoom function.\n */\nexport function createSnapToResolutions(resolutions, opt_smooth, opt_maxExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var maxResolution = resolutions[0];\n var minResolution = resolutions[resolutions.length - 1];\n var cappedMaxRes = opt_maxExtent ?\n getViewportClampedResolution(maxResolution, opt_maxExtent, size) :\n maxResolution;\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n var capped = Math.min(cappedMaxRes, resolution);\n var z = Math.floor(linearFindNearest(resolutions, capped, direction));\n if (resolutions[z] > cappedMaxRes && z < resolutions.length - 1) {\n return resolutions[z + 1];\n }\n return resolutions[z];\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number} power Power.\n * @param {number} maxResolution Maximum resolution.\n * @param {number=} opt_minResolution Minimum resolution.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @return {Type} Zoom function.\n */\nexport function createSnapToPower(power, maxResolution, opt_minResolution, opt_smooth, opt_maxExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var cappedMaxRes = opt_maxExtent ?\n getViewportClampedResolution(maxResolution, opt_maxExtent, size) :\n maxResolution;\n var minResolution = opt_minResolution !== undefined ? opt_minResolution : 0;\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n var tolerance = 1e-9;\n var minZoomLevel = Math.ceil(Math.log(maxResolution / cappedMaxRes) / Math.log(power) - tolerance);\n var offset = -direction * (0.5 - tolerance) + 0.5;\n var capped = Math.min(cappedMaxRes, resolution);\n var cappedZoomLevel = Math.floor(Math.log(maxResolution / capped) / Math.log(power) + offset);\n var zoomLevel = Math.max(minZoomLevel, cappedZoomLevel);\n var newResolution = maxResolution / Math.pow(power, zoomLevel);\n return clamp(newResolution, minResolution, cappedMaxRes);\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @return {Type} Zoom function.\n */\nexport function createMinMaxResolution(maxResolution, minResolution, opt_smooth, opt_maxExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var cappedMaxRes = opt_maxExtent ?\n getViewportClampedResolution(maxResolution, opt_maxExtent, size) :\n maxResolution;\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth || !opt_isMoving) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n else {\n return undefined;\n }\n });\n}\n//# sourceMappingURL=resolutionconstraint.js.map","/**\n * @module ol/rotationconstraint\n */\nimport { toRadians } from './math.js';\n/**\n * @typedef {function((number|undefined), boolean=): (number|undefined)} Type\n */\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function disable(rotation) {\n if (rotation !== undefined) {\n return 0;\n }\n else {\n return undefined;\n }\n}\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function none(rotation) {\n if (rotation !== undefined) {\n return rotation;\n }\n else {\n return undefined;\n }\n}\n/**\n * @param {number} n N.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToN(n) {\n var theta = 2 * Math.PI / n;\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function (rotation, opt_isMoving) {\n if (opt_isMoving) {\n return rotation;\n }\n if (rotation !== undefined) {\n rotation = Math.floor(rotation / theta + 0.5) * theta;\n return rotation;\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number=} opt_tolerance Tolerance.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToZero(opt_tolerance) {\n var tolerance = opt_tolerance || toRadians(5);\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function (rotation, opt_isMoving) {\n if (opt_isMoving) {\n return rotation;\n }\n if (rotation !== undefined) {\n if (Math.abs(rotation) <= tolerance) {\n return 0;\n }\n else {\n return rotation;\n }\n }\n else {\n return undefined;\n }\n });\n}\n//# sourceMappingURL=rotationconstraint.js.map","/**\n * @module ol/ViewHint\n */\n/**\n * @enum {number}\n */\nexport default {\n ANIMATING: 0,\n INTERACTING: 1\n};\n//# sourceMappingURL=ViewHint.js.map","/**\n * @module ol/ViewProperty\n */\n/**\n * @enum {string}\n */\nexport default {\n CENTER: 'center',\n RESOLUTION: 'resolution',\n ROTATION: 'rotation'\n};\n//# sourceMappingURL=ViewProperty.js.map","/**\n * @module ol/string\n */\n/**\n * @param {number} number Number to be formatted\n * @param {number} width The desired width\n * @param {number=} opt_precision Precision of the output string (i.e. number of decimal places)\n * @returns {string} Formatted string\n */\nexport function padNumber(number, width, opt_precision) {\n var numberString = opt_precision !== undefined ? number.toFixed(opt_precision) : '' + number;\n var decimal = numberString.indexOf('.');\n decimal = decimal === -1 ? numberString.length : decimal;\n return decimal > width ? numberString : new Array(1 + width - decimal).join('0') + numberString;\n}\n/**\n * Adapted from https://github.com/omichelsen/compare-versions/blob/master/index.js\n * @param {string|number} v1 First version\n * @param {string|number} v2 Second version\n * @returns {number} Value\n */\nexport function compareVersions(v1, v2) {\n var s1 = ('' + v1).split('.');\n var s2 = ('' + v2).split('.');\n for (var i = 0; i < Math.max(s1.length, s2.length); i++) {\n var n1 = parseInt(s1[i] || '0', 10);\n var n2 = parseInt(s2[i] || '0', 10);\n if (n1 > n2) {\n return 1;\n }\n if (n2 > n1) {\n return -1;\n }\n }\n return 0;\n}\n//# sourceMappingURL=string.js.map","/**\n * @module ol/coordinate\n */\nimport { modulo } from './math.js';\nimport { padNumber } from './string.js';\n/**\n * An array of numbers representing an xy coordinate. Example: `[16, 48]`.\n * @typedef {Array} Coordinate\n * @api\n */\n/**\n * A function that takes a {@link module:ol/coordinate~Coordinate} and\n * transforms it into a `{string}`.\n *\n * @typedef {function((Coordinate|undefined)): string} CoordinateFormat\n * @api\n */\n/**\n * Add `delta` to `coordinate`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {add} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * add(coord, [-2, 4]);\n * // coord is now [5.85, 51.983333]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {Coordinate} delta Delta.\n * @return {Coordinate} The input coordinate adjusted by\n * the given delta.\n * @api\n */\nexport function add(coordinate, delta) {\n coordinate[0] += +delta[0];\n coordinate[1] += +delta[1];\n return coordinate;\n}\n/**\n * Calculates the point closest to the passed coordinate on the passed circle.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {import(\"./geom/Circle.js\").default} circle The circle.\n * @return {Coordinate} Closest point on the circumference.\n */\nexport function closestOnCircle(coordinate, circle) {\n var r = circle.getRadius();\n var center = circle.getCenter();\n var x0 = center[0];\n var y0 = center[1];\n var x1 = coordinate[0];\n var y1 = coordinate[1];\n var dx = x1 - x0;\n var dy = y1 - y0;\n if (dx === 0 && dy === 0) {\n dx = 1;\n }\n var d = Math.sqrt(dx * dx + dy * dy);\n var x = x0 + r * dx / d;\n var y = y0 + r * dy / d;\n return [x, y];\n}\n/**\n * Calculates the point closest to the passed coordinate on the passed segment.\n * This is the foot of the perpendicular of the coordinate to the segment when\n * the foot is on the segment, or the closest segment coordinate when the foot\n * is outside the segment.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {Array} segment The two coordinates\n * of the segment.\n * @return {Coordinate} The foot of the perpendicular of\n * the coordinate to the segment.\n */\nexport function closestOnSegment(coordinate, segment) {\n var x0 = coordinate[0];\n var y0 = coordinate[1];\n var start = segment[0];\n var end = segment[1];\n var x1 = start[0];\n var y1 = start[1];\n var x2 = end[0];\n var y2 = end[1];\n var dx = x2 - x1;\n var dy = y2 - y1;\n var along = (dx === 0 && dy === 0) ? 0 :\n ((dx * (x0 - x1)) + (dy * (y0 - y1))) / ((dx * dx + dy * dy) || 0);\n var x, y;\n if (along <= 0) {\n x = x1;\n y = y1;\n }\n else if (along >= 1) {\n x = x2;\n y = y2;\n }\n else {\n x = x1 + along * dx;\n y = y1 + along * dy;\n }\n return [x, y];\n}\n/**\n * Returns a {@link module:ol/coordinate~CoordinateFormat} function that can be\n * used to format\n * a {Coordinate} to a string.\n *\n * Example without specifying the fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY();\n * var out = stringifyFunc(coord);\n * // out is now '8, 48'\n *\n * Example with explicitly specifying 2 fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY(2);\n * var out = stringifyFunc(coord);\n * // out is now '7.85, 47.98'\n *\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {CoordinateFormat} Coordinate format.\n * @api\n */\nexport function createStringXY(opt_fractionDigits) {\n return (\n /**\n * @param {Coordinate} coordinate Coordinate.\n * @return {string} String XY.\n */\n function (coordinate) {\n return toStringXY(coordinate, opt_fractionDigits);\n });\n}\n/**\n * @param {string} hemispheres Hemispheres.\n * @param {number} degrees Degrees.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} String.\n */\nexport function degreesToStringHDMS(hemispheres, degrees, opt_fractionDigits) {\n var normalizedDegrees = modulo(degrees + 180, 360) - 180;\n var x = Math.abs(3600 * normalizedDegrees);\n var dflPrecision = opt_fractionDigits || 0;\n var precision = Math.pow(10, dflPrecision);\n var deg = Math.floor(x / 3600);\n var min = Math.floor((x - deg * 3600) / 60);\n var sec = x - (deg * 3600) - (min * 60);\n sec = Math.ceil(sec * precision) / precision;\n if (sec >= 60) {\n sec = 0;\n min += 1;\n }\n if (min >= 60) {\n min = 0;\n deg += 1;\n }\n return deg + '\\u00b0 ' + padNumber(min, 2) + '\\u2032 ' +\n padNumber(sec, 2, dflPrecision) + '\\u2033' +\n (normalizedDegrees == 0 ? '' : ' ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0));\n}\n/**\n * Transforms the given {@link module:ol/coordinate~Coordinate} to a string\n * using the given string template. The strings `{x}` and `{y}` in the template\n * will be replaced with the first and second coordinate values respectively.\n *\n * Example without specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var out = format(coord, template);\n * // out is now 'Coordinate is (8|48).'\n *\n * Example explicitly specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var out = format(coord, template, 2);\n * // out is now 'Coordinate is (7.85|47.98).'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {string} template A template string with `{x}` and `{y}` placeholders\n * that will be replaced by first and second coordinate values.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Formatted coordinate.\n * @api\n */\nexport function format(coordinate, template, opt_fractionDigits) {\n if (coordinate) {\n return template\n .replace('{x}', coordinate[0].toFixed(opt_fractionDigits))\n .replace('{y}', coordinate[1].toFixed(opt_fractionDigits));\n }\n else {\n return '';\n }\n}\n/**\n * @param {Coordinate} coordinate1 First coordinate.\n * @param {Coordinate} coordinate2 Second coordinate.\n * @return {boolean} The two coordinates are equal.\n */\nexport function equals(coordinate1, coordinate2) {\n var equals = true;\n for (var i = coordinate1.length - 1; i >= 0; --i) {\n if (coordinate1[i] != coordinate2[i]) {\n equals = false;\n break;\n }\n }\n return equals;\n}\n/**\n * Rotate `coordinate` by `angle`. `coordinate` is modified in place and\n * returned by the function.\n *\n * Example:\n *\n * import {rotate} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var rotateRadians = Math.PI / 2; // 90 degrees\n * rotate(coord, rotateRadians);\n * // coord is now [-47.983333, 7.85]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} angle Angle in radian.\n * @return {Coordinate} Coordinate.\n * @api\n */\nexport function rotate(coordinate, angle) {\n var cosAngle = Math.cos(angle);\n var sinAngle = Math.sin(angle);\n var x = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n var y = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n coordinate[0] = x;\n coordinate[1] = y;\n return coordinate;\n}\n/**\n * Scale `coordinate` by `scale`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {scale as scaleCoordinate} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var scale = 1.2;\n * scaleCoordinate(coord, scale);\n * // coord is now [9.42, 57.5799996]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} scale Scale factor.\n * @return {Coordinate} Coordinate.\n */\nexport function scale(coordinate, scale) {\n coordinate[0] *= scale;\n coordinate[1] *= scale;\n return coordinate;\n}\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Squared distance between coord1 and coord2.\n */\nexport function squaredDistance(coord1, coord2) {\n var dx = coord1[0] - coord2[0];\n var dy = coord1[1] - coord2[1];\n return dx * dx + dy * dy;\n}\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Distance between coord1 and coord2.\n */\nexport function distance(coord1, coord2) {\n return Math.sqrt(squaredDistance(coord1, coord2));\n}\n/**\n * Calculate the squared distance from a coordinate to a line segment.\n *\n * @param {Coordinate} coordinate Coordinate of the point.\n * @param {Array} segment Line segment (2\n * coordinates).\n * @return {number} Squared distance from the point to the line segment.\n */\nexport function squaredDistanceToSegment(coordinate, segment) {\n return squaredDistance(coordinate, closestOnSegment(coordinate, segment));\n}\n/**\n * Format a geographic coordinate with the hemisphere, degrees, minutes, and\n * seconds.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringHDMS} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringHDMS(coord);\n * // out is now '47° 58′ 60″ N 7° 50′ 60″ E'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringHDMS} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringHDMS(coord, 1);\n * // out is now '47° 58′ 60.0″ N 7° 50′ 60.0″ E'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Hemisphere, degrees, minutes and seconds.\n * @api\n */\nexport function toStringHDMS(coordinate, opt_fractionDigits) {\n if (coordinate) {\n return degreesToStringHDMS('NS', coordinate[1], opt_fractionDigits) + ' ' +\n degreesToStringHDMS('EW', coordinate[0], opt_fractionDigits);\n }\n else {\n return '';\n }\n}\n/**\n * Format a coordinate as a comma delimited string.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord);\n * // out is now '8, 48'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord, 1);\n * // out is now '7.8, 48.0'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} XY.\n * @api\n */\nexport function toStringXY(coordinate, opt_fractionDigits) {\n return format(coordinate, '{x}, {y}', opt_fractionDigits);\n}\n//# sourceMappingURL=coordinate.js.map","/**\n * @module ol/easing\n */\n/**\n * Start slow and speed up.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeIn(t) {\n return Math.pow(t, 3);\n}\n/**\n * Start fast and slow down.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeOut(t) {\n return 1 - easeIn(1 - t);\n}\n/**\n * Start slow, speed up, and then slow down again.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function inAndOut(t) {\n return 3 * t * t - 2 * t * t * t;\n}\n/**\n * Maintain a constant speed over time.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function linear(t) {\n return t;\n}\n/**\n * Start slow, speed up, and at the very end slow down again. This has the\n * same general behavior as {@link module:ol/easing~inAndOut}, but the final\n * slowdown is delayed.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function upAndDown(t) {\n if (t < 0.5) {\n return inAndOut(2 * t);\n }\n else {\n return 1 - inAndOut(2 * (t - 0.5));\n }\n}\n//# sourceMappingURL=easing.js.map","/**\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/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","/**\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/View\n */\nimport { DEFAULT_TILE_SIZE } from './tilegrid/common.js';\nimport { getUid } from './util.js';\nimport { VOID } from './functions.js';\nimport { createExtent, none as centerNone } from './centerconstraint.js';\nimport BaseObject from './Object.js';\nimport { createSnapToResolutions, createSnapToPower } from './resolutionconstraint.js';\nimport { createSnapToZero, createSnapToN, none as rotationNone, disable } from './rotationconstraint.js';\nimport ViewHint from './ViewHint.js';\nimport ViewProperty from './ViewProperty.js';\nimport { linearFindNearest } from './array.js';\nimport { assert } from './asserts.js';\nimport { add as addCoordinate, rotate as rotateCoordinate, equals as coordinatesEqual } from './coordinate.js';\nimport { inAndOut } from './easing.js';\nimport { getForViewAndSize, getCenter, getHeight, getWidth, isEmpty } from './extent.js';\nimport GeometryType from './geom/GeometryType.js';\nimport { fromExtent as polygonFromExtent } from './geom/Polygon.js';\nimport { clamp, modulo } from './math.js';\nimport { assign } from './obj.js';\nimport { createProjection, METERS_PER_UNIT, toUserCoordinate, toUserExtent, fromUserCoordinate, fromUserExtent, getUserProjection } from './proj.js';\nimport Units from './proj/Units.js';\nimport { equals } from './coordinate.js';\nimport { easeOut } from './easing.js';\nimport { createMinMaxResolution } from './resolutionconstraint.js';\n/**\n * An animation configuration\n *\n * @typedef {Object} Animation\n * @property {import(\"./coordinate.js\").Coordinate} [sourceCenter]\n * @property {import(\"./coordinate.js\").Coordinate} [targetCenter]\n * @property {number} [sourceResolution]\n * @property {number} [targetResolution]\n * @property {number} [sourceRotation]\n * @property {number} [targetRotation]\n * @property {import(\"./coordinate.js\").Coordinate} [anchor]\n * @property {number} start\n * @property {number} duration\n * @property {boolean} complete\n * @property {function(number):number} easing\n * @property {function(boolean)} callback\n */\n/**\n * @typedef {Object} Constraints\n * @property {import(\"./centerconstraint.js\").Type} center\n * @property {import(\"./resolutionconstraint.js\").Type} resolution\n * @property {import(\"./rotationconstraint.js\").Type} rotation\n */\n/**\n * @typedef {Object} FitOptions\n * @property {import(\"./size.js\").Size} [size] The size in pixels of the box to fit\n * the extent into. Default is the current size of the first map in the DOM that\n * uses this view, or `[100, 100]` if no such map is found.\n * @property {!Array} [padding=[0, 0, 0, 0]] Padding (in pixels) to be\n * cleared inside the view. Values in the array are top, right, bottom and left\n * padding.\n * @property {boolean} [nearest=false] If the view `constrainResolution` option is `true`,\n * get the nearest extent instead of the closest that actually fits the view.\n * @property {number} [minResolution=0] Minimum resolution that we zoom to.\n * @property {number} [maxZoom] Maximum zoom level that we zoom to. If\n * `minResolution` is given, this property is ignored.\n * @property {number} [duration] The duration of the animation in milliseconds.\n * By default, there is no animation to the target extent.\n * @property {function(number):number} [easing] The easing function used during\n * the animation (defaults to {@link module:ol/easing~inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n * @property {function(boolean)} [callback] Function called when the view is in\n * its final position. The callback will be called with `true` if the animation\n * series completed on its own or `false` if it was cancelled.\n */\n/**\n * @typedef {Object} ViewOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The initial center for\n * the view. If a user projection is not set, the coordinate system for the center is\n * specified with the `projection` option. Layer sources will not be fetched if this\n * is not set, but the center can be set later with {@link #setCenter}.\n * @property {boolean|number} [constrainRotation=true] Rotation constraint.\n * `false` means no constraint. `true` means no constraint, but snap to zero\n * near zero. A number constrains the rotation to that number of values. For\n * example, `4` will constrain the rotation to 0, 90, 180, and 270 degrees.\n * @property {boolean} [enableRotation=true] Enable rotation.\n * If `false`, a rotation constraint that always sets the rotation to zero is\n * used. The `constrainRotation` option has no effect if `enableRotation` is\n * `false`.\n * @property {import(\"./extent.js\").Extent} [extent] The extent that constrains the\n * view, in other words, nothing outside of this extent can be visible on the map.\n * @property {boolean} [constrainOnlyCenter=false] If true, the extent\n * constraint will only apply to the view center and not the whole extent.\n * @property {boolean} [smoothExtentConstraint=true] If true, the extent\n * constraint will be applied smoothly, i.e. allow the view to go slightly outside\n * of the given `extent`.\n * @property {number} [maxResolution] The maximum resolution used to determine\n * the resolution constraint. It is used together with `minResolution` (or\n * `maxZoom`) and `zoomFactor`. If unspecified it is calculated in such a way\n * that the projection's validity extent fits in a 256x256 px tile. If the\n * projection is Spherical Mercator (the default) then `maxResolution` defaults\n * to `40075016.68557849 / 256 = 156543.03392804097`.\n * @property {number} [minResolution] The minimum resolution used to determine\n * the resolution constraint. It is used together with `maxResolution` (or\n * `minZoom`) and `zoomFactor`. If unspecified it is calculated assuming 29\n * zoom levels (with a factor of 2). If the projection is Spherical Mercator\n * (the default) then `minResolution` defaults to\n * `40075016.68557849 / 256 / Math.pow(2, 28) = 0.0005831682455839253`.\n * @property {number} [maxZoom=28] The maximum zoom level used to determine the\n * resolution constraint. It is used together with `minZoom` (or\n * `maxResolution`) and `zoomFactor`. Note that if `minResolution` is also\n * provided, it is given precedence over `maxZoom`.\n * @property {number} [minZoom=0] The minimum zoom level used to determine the\n * resolution constraint. It is used together with `maxZoom` (or\n * `minResolution`) and `zoomFactor`. Note that if `maxResolution` is also\n * provided, it is given precedence over `minZoom`.\n * @property {boolean} [multiWorld=false] If `false` the view is constrained so\n * only one world is visible, and you cannot pan off the edge. If `true` the map\n * may show multiple worlds at low zoom levels. Only used if the `projection` is\n * global. Note that if `extent` is also provided it is given precedence.\n * @property {boolean} [constrainResolution=false] If true, the view will always\n * animate to the closest zoom level after an interaction; false means\n * intermediary zoom levels are allowed.\n * @property {boolean} [smoothResolutionConstraint=true] If true, the resolution\n * min/max values will be applied smoothly, i. e. allow the view to exceed slightly\n * the given resolution or zoom bounds.\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857'] The\n * projection. The default is Spherical Mercator.\n * @property {number} [resolution] The initial resolution for the view. The\n * units are `projection` units per pixel (e.g. meters per pixel). An\n * alternative to setting this is to set `zoom`. Layer sources will not be\n * fetched if neither this nor `zoom` are defined, but they can be set later\n * with {@link #setZoom} or {@link #setResolution}.\n * @property {Array} [resolutions] Resolutions to determine the\n * resolution constraint. If set the `maxResolution`, `minResolution`,\n * `minZoom`, `maxZoom`, and `zoomFactor` options are ignored.\n * @property {number} [rotation=0] The initial rotation for the view in radians\n * (positive rotation clockwise, 0 means North).\n * @property {number} [zoom] Only used if `resolution` is not defined. Zoom\n * level used to calculate the initial resolution for the view.\n * @property {number} [zoomFactor=2] The zoom factor used to compute the\n * corresponding resolution.\n */\n/**\n * @typedef {Object} AnimationOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The center of the view at the end of\n * the animation.\n * @property {number} [zoom] The zoom level of the view at the end of the\n * animation. This takes precedence over `resolution`.\n * @property {number} [resolution] The resolution of the view at the end\n * of the animation. If `zoom` is also provided, this option will be ignored.\n * @property {number} [rotation] The rotation of the view at the end of\n * the animation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Optional anchor to remain fixed\n * during a rotation or resolution animation.\n * @property {number} [duration=1000] The duration of the animation in milliseconds.\n * @property {function(number):number} [easing] The easing function used\n * during the animation (defaults to {@link module:ol/easing~inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n */\n/**\n * @typedef {Object} State\n * @property {import(\"./coordinate.js\").Coordinate} center\n * @property {import(\"./proj/Projection.js\").default} projection\n * @property {number} resolution\n * @property {number} rotation\n * @property {number} zoom\n */\n/**\n * Default min zoom level for the map view.\n * @type {number}\n */\nvar DEFAULT_MIN_ZOOM = 0;\n/**\n * @classdesc\n * A View object represents a simple 2D view of the map.\n *\n * This is the object to act upon to change the center, resolution,\n * and rotation of the map.\n *\n * A View has a `projection`. The projection determines the\n * coordinate system of the center, and its units determine the units of the\n * resolution (projection units per pixel). The default projection is\n * Spherical Mercator (EPSG:3857).\n *\n * ### The view states\n *\n * A View is determined by three states: `center`, `resolution`,\n * and `rotation`. Each state has a corresponding getter and setter, e.g.\n * `getCenter` and `setCenter` for the `center` state.\n *\n * The `zoom` state is actually not saved on the view: all computations\n * internally use the `resolution` state. Still, the `setZoom` and `getZoom`\n * methods are available, as well as `getResolutionForZoom` and\n * `getZoomForResolution` to switch from one system to the other.\n *\n * ### The constraints\n *\n * `setCenter`, `setResolution` and `setRotation` can be used to change the\n * states of the view, but any constraint defined in the constructor will\n * be applied along the way.\n *\n * A View object can have a *resolution constraint*, a *rotation constraint*\n * and a *center constraint*.\n *\n * The *resolution constraint* typically restricts min/max values and\n * snaps to specific resolutions. It is determined by the following\n * options: `resolutions`, `maxResolution`, `maxZoom` and `zoomFactor`.\n * If `resolutions` is set, the other three options are ignored. See\n * documentation for each option for more information. By default, the view\n * only has a min/max restriction and allow intermediary zoom levels when\n * pinch-zooming for example.\n *\n * The *rotation constraint* snaps to specific angles. It is determined\n * by the following options: `enableRotation` and `constrainRotation`.\n * By default rotation is allowed and its value is snapped to zero when approaching the\n * horizontal.\n *\n * The *center constraint* is determined by the `extent` option. By\n * default the view center is not constrained at all.\n *\n * ### Changing the view state\n *\n * It is important to note that `setZoom`, `setResolution`, `setCenter` and\n * `setRotation` are subject to the above mentioned constraints. As such, it\n * may sometimes not be possible to know in advance the resulting state of the\n * View. For example, calling `setResolution(10)` does not guarantee that\n * `getResolution()` will return `10`.\n *\n * A consequence of this is that, when applying a delta on the view state, one\n * should use `adjustCenter`, `adjustRotation`, `adjustZoom` and `adjustResolution`\n * rather than the corresponding setters. This will let view do its internal\n * computations. Besides, the `adjust*` methods also take an `opt_anchor`\n * argument which allows specifying an origin for the transformation.\n *\n * ### Interacting with the view\n *\n * View constraints are usually only applied when the view is *at rest*, meaning that\n * no interaction or animation is ongoing. As such, if the user puts the view in a\n * state that is not equivalent to a constrained one (e.g. rotating the view when\n * the snap angle is 0), an animation will be triggered at the interaction end to\n * put back the view to a stable state;\n *\n * @api\n */\nvar View = /** @class */ (function (_super) {\n __extends(View, _super);\n /**\n * @param {ViewOptions=} opt_options View options.\n */\n function View(opt_options) {\n var _this = _super.call(this) || this;\n var options = assign({}, opt_options);\n /**\n * @private\n * @type {Array}\n */\n _this.hints_ = [0, 0];\n /**\n * @private\n * @type {Array>}\n */\n _this.animations_ = [];\n /**\n * @private\n * @type {number|undefined}\n */\n _this.updateAnimationKey_;\n /**\n * @private\n * @const\n * @type {import(\"./proj/Projection.js\").default}\n */\n _this.projection_ = createProjection(options.projection, 'EPSG:3857');\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n _this.targetCenter_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.targetResolution_;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.targetRotation_;\n if (options.center) {\n options.center = fromUserCoordinate(options.center, _this.projection_);\n }\n if (options.extent) {\n options.extent = fromUserExtent(options.extent, _this.projection_);\n }\n _this.applyOptions_(options);\n return _this;\n }\n /**\n * Set up the view with the given options.\n * @param {ViewOptions} options View options.\n */\n View.prototype.applyOptions_ = function (options) {\n /**\n * @type {Object}\n */\n var properties = {};\n var resolutionConstraintInfo = createResolutionConstraint(options);\n /**\n * @private\n * @type {number}\n */\n this.maxResolution_ = resolutionConstraintInfo.maxResolution;\n /**\n * @private\n * @type {number}\n */\n this.minResolution_ = resolutionConstraintInfo.minResolution;\n /**\n * @private\n * @type {number}\n */\n this.zoomFactor_ = resolutionConstraintInfo.zoomFactor;\n /**\n * @private\n * @type {Array|undefined}\n */\n this.resolutions_ = options.resolutions;\n /**\n * @private\n * @type {number}\n */\n this.minZoom_ = resolutionConstraintInfo.minZoom;\n var centerConstraint = createCenterConstraint(options);\n var resolutionConstraint = resolutionConstraintInfo.constraint;\n var rotationConstraint = createRotationConstraint(options);\n /**\n * @private\n * @type {Constraints}\n */\n this.constraints_ = {\n center: centerConstraint,\n resolution: resolutionConstraint,\n rotation: rotationConstraint\n };\n this.setRotation(options.rotation !== undefined ? options.rotation : 0);\n this.setCenterInternal(options.center !== undefined ? options.center : null);\n if (options.resolution !== undefined) {\n this.setResolution(options.resolution);\n }\n else if (options.zoom !== undefined) {\n this.setZoom(options.zoom);\n }\n this.resolveConstraints(0);\n this.setProperties(properties);\n /**\n * @private\n * @type {ViewOptions}\n */\n this.options_ = options;\n };\n /**\n * Get an updated version of the view options used to construct the view. The\n * current resolution (or zoom), center, and rotation are applied to any stored\n * options. The provided options can be used to apply new min/max zoom or\n * resolution limits.\n * @param {ViewOptions} newOptions New options to be applied.\n * @return {ViewOptions} New options updated with the current view state.\n */\n View.prototype.getUpdatedOptions_ = function (newOptions) {\n var options = assign({}, this.options_);\n // preserve resolution (or zoom)\n if (options.resolution !== undefined) {\n options.resolution = this.getResolution();\n }\n else {\n options.zoom = this.getZoom();\n }\n // preserve center\n options.center = this.getCenterInternal();\n // preserve rotation\n options.rotation = this.getRotation();\n return assign({}, options, newOptions);\n };\n /**\n * Animate the view. The view's center, zoom (or resolution), and rotation\n * can be animated for smooth transitions between view states. For example,\n * to animate the view to a new zoom level:\n *\n * view.animate({zoom: view.getZoom() + 1});\n *\n * By default, the animation lasts one second and uses in-and-out easing. You\n * can customize this behavior by including `duration` (in milliseconds) and\n * `easing` options (see {@link module:ol/easing}).\n *\n * To chain together multiple animations, call the method with multiple\n * animation objects. For example, to first zoom and then pan:\n *\n * view.animate({zoom: 10}, {center: [0, 0]});\n *\n * If you provide a function as the last argument to the animate method, it\n * will get called at the end of an animation series. The callback will be\n * called with `true` if the animation series completed on its own or `false`\n * if it was cancelled.\n *\n * Animations are cancelled by user interactions (e.g. dragging the map) or by\n * calling `view.setCenter()`, `view.setResolution()`, or `view.setRotation()`\n * (or another method that calls one of these).\n *\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation\n * options. Multiple animations can be run in series by passing multiple\n * options objects. To run multiple animations in parallel, call the method\n * multiple times. An optional callback can be provided as a final\n * argument. The callback will be called with a boolean indicating whether\n * the animation completed without being cancelled.\n * @api\n */\n View.prototype.animate = function (var_args) {\n if (this.isDef() && !this.getAnimating()) {\n this.resolveConstraints(0);\n }\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n var options = arguments[i];\n if (options.center) {\n options = assign({}, options);\n options.center = fromUserCoordinate(options.center, this.getProjection());\n }\n if (options.anchor) {\n options = assign({}, options);\n options.anchor = fromUserCoordinate(options.anchor, this.getProjection());\n }\n args[i] = options;\n }\n this.animateInternal.apply(this, args);\n };\n /**\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation options.\n */\n View.prototype.animateInternal = function (var_args) {\n var animationCount = arguments.length;\n var callback;\n if (animationCount > 1 && typeof arguments[animationCount - 1] === 'function') {\n callback = arguments[animationCount - 1];\n --animationCount;\n }\n if (!this.isDef()) {\n // if view properties are not yet set, shortcut to the final state\n var state = arguments[animationCount - 1];\n if (state.center) {\n this.setCenterInternal(state.center);\n }\n if (state.zoom !== undefined) {\n this.setZoom(state.zoom);\n }\n if (state.rotation !== undefined) {\n this.setRotation(state.rotation);\n }\n if (callback) {\n animationCallback(callback, true);\n }\n return;\n }\n var start = Date.now();\n var center = this.targetCenter_.slice();\n var resolution = this.targetResolution_;\n var rotation = this.targetRotation_;\n var series = [];\n for (var i = 0; i < animationCount; ++i) {\n var options = /** @type {AnimationOptions} */ (arguments[i]);\n var animation = {\n start: start,\n complete: false,\n anchor: options.anchor,\n duration: options.duration !== undefined ? options.duration : 1000,\n easing: options.easing || inAndOut,\n callback: callback\n };\n if (options.center) {\n animation.sourceCenter = center;\n animation.targetCenter = options.center.slice();\n center = animation.targetCenter;\n }\n if (options.zoom !== undefined) {\n animation.sourceResolution = resolution;\n animation.targetResolution = this.getResolutionForZoom(options.zoom);\n resolution = animation.targetResolution;\n }\n else if (options.resolution) {\n animation.sourceResolution = resolution;\n animation.targetResolution = options.resolution;\n resolution = animation.targetResolution;\n }\n if (options.rotation !== undefined) {\n animation.sourceRotation = rotation;\n var delta = modulo(options.rotation - rotation + Math.PI, 2 * Math.PI) - Math.PI;\n animation.targetRotation = rotation + delta;\n rotation = animation.targetRotation;\n }\n // check if animation is a no-op\n if (isNoopAnimation(animation)) {\n animation.complete = true;\n // we still push it onto the series for callback handling\n }\n else {\n start += animation.duration;\n }\n series.push(animation);\n }\n this.animations_.push(series);\n this.setHint(ViewHint.ANIMATING, 1);\n this.updateAnimations_();\n };\n /**\n * Determine if the view is being animated.\n * @return {boolean} The view is being animated.\n * @api\n */\n View.prototype.getAnimating = function () {\n return this.hints_[ViewHint.ANIMATING] > 0;\n };\n /**\n * Determine if the user is interacting with the view, such as panning or zooming.\n * @return {boolean} The view is being interacted with.\n * @api\n */\n View.prototype.getInteracting = function () {\n return this.hints_[ViewHint.INTERACTING] > 0;\n };\n /**\n * Cancel any ongoing animations.\n * @api\n */\n View.prototype.cancelAnimations = function () {\n this.setHint(ViewHint.ANIMATING, -this.hints_[ViewHint.ANIMATING]);\n for (var i = 0, ii = this.animations_.length; i < ii; ++i) {\n var series = this.animations_[i];\n if (series[0].callback) {\n animationCallback(series[0].callback, false);\n }\n }\n this.animations_.length = 0;\n };\n /**\n * Update all animations.\n */\n View.prototype.updateAnimations_ = function () {\n if (this.updateAnimationKey_ !== undefined) {\n cancelAnimationFrame(this.updateAnimationKey_);\n this.updateAnimationKey_ = undefined;\n }\n if (!this.getAnimating()) {\n return;\n }\n var now = Date.now();\n var more = false;\n for (var i = this.animations_.length - 1; i >= 0; --i) {\n var series = this.animations_[i];\n var seriesComplete = true;\n for (var j = 0, jj = series.length; j < jj; ++j) {\n var animation = series[j];\n if (animation.complete) {\n continue;\n }\n var elapsed = now - animation.start;\n var fraction = animation.duration > 0 ? elapsed / animation.duration : 1;\n if (fraction >= 1) {\n animation.complete = true;\n fraction = 1;\n }\n else {\n seriesComplete = false;\n }\n var progress = animation.easing(fraction);\n if (animation.sourceCenter) {\n var x0 = animation.sourceCenter[0];\n var y0 = animation.sourceCenter[1];\n var x1 = animation.targetCenter[0];\n var y1 = animation.targetCenter[1];\n var x = x0 + progress * (x1 - x0);\n var y = y0 + progress * (y1 - y0);\n this.targetCenter_ = [x, y];\n }\n if (animation.sourceResolution && animation.targetResolution) {\n var resolution = progress === 1 ?\n animation.targetResolution :\n animation.sourceResolution + progress * (animation.targetResolution - animation.sourceResolution);\n if (animation.anchor) {\n var size = this.getSizeFromViewport_(this.getRotation());\n var constrainedResolution = this.constraints_.resolution(resolution, 0, size, true);\n this.targetCenter_ = this.calculateCenterZoom(constrainedResolution, animation.anchor);\n }\n this.targetResolution_ = resolution;\n this.applyTargetState_(true);\n }\n if (animation.sourceRotation !== undefined && animation.targetRotation !== undefined) {\n var rotation = progress === 1 ?\n modulo(animation.targetRotation + Math.PI, 2 * Math.PI) - Math.PI :\n animation.sourceRotation + progress * (animation.targetRotation - animation.sourceRotation);\n if (animation.anchor) {\n var constrainedRotation = this.constraints_.rotation(rotation, true);\n this.targetCenter_ = this.calculateCenterRotate(constrainedRotation, animation.anchor);\n }\n this.targetRotation_ = rotation;\n }\n this.applyTargetState_(true);\n more = true;\n if (!animation.complete) {\n break;\n }\n }\n if (seriesComplete) {\n this.animations_[i] = null;\n this.setHint(ViewHint.ANIMATING, -1);\n var callback = series[0].callback;\n if (callback) {\n animationCallback(callback, true);\n }\n }\n }\n // prune completed series\n this.animations_ = this.animations_.filter(Boolean);\n if (more && this.updateAnimationKey_ === undefined) {\n this.updateAnimationKey_ = requestAnimationFrame(this.updateAnimations_.bind(this));\n }\n };\n /**\n * @param {number} rotation Target rotation.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Rotation anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for rotation and anchor.\n */\n View.prototype.calculateCenterRotate = function (rotation, anchor) {\n var center;\n var currentCenter = this.getCenterInternal();\n if (currentCenter !== undefined) {\n center = [currentCenter[0] - anchor[0], currentCenter[1] - anchor[1]];\n rotateCoordinate(center, rotation - this.getRotation());\n addCoordinate(center, anchor);\n }\n return center;\n };\n /**\n * @param {number} resolution Target resolution.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Zoom anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for resolution and anchor.\n */\n View.prototype.calculateCenterZoom = function (resolution, anchor) {\n var center;\n var currentCenter = this.getCenterInternal();\n var currentResolution = this.getResolution();\n if (currentCenter !== undefined && currentResolution !== undefined) {\n var x = anchor[0] - resolution * (anchor[0] - currentCenter[0]) / currentResolution;\n var y = anchor[1] - resolution * (anchor[1] - currentCenter[1]) / currentResolution;\n center = [x, y];\n }\n return center;\n };\n /**\n * @private\n * @param {number=} opt_rotation Take into account the rotation of the viewport when giving the size\n * @return {import(\"./size.js\").Size} Viewport size or `[100, 100]` when no viewport is found.\n */\n View.prototype.getSizeFromViewport_ = function (opt_rotation) {\n var size = [100, 100];\n var selector = '.ol-viewport[data-view=\"' + getUid(this) + '\"]';\n var element = document.querySelector(selector);\n if (element) {\n var metrics = getComputedStyle(element);\n size[0] = parseInt(metrics.width, 10);\n size[1] = parseInt(metrics.height, 10);\n }\n if (opt_rotation) {\n var w = size[0];\n var h = size[1];\n size[0] = Math.abs(w * Math.cos(opt_rotation)) + Math.abs(h * Math.sin(opt_rotation));\n size[1] = Math.abs(w * Math.sin(opt_rotation)) + Math.abs(h * Math.cos(opt_rotation));\n }\n return size;\n };\n /**\n * Get the view center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n * @observable\n * @api\n */\n View.prototype.getCenter = function () {\n var center = this.getCenterInternal();\n if (!center) {\n return center;\n }\n return toUserCoordinate(center, this.getProjection());\n };\n /**\n * Get the view center without transforming to user projection.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n */\n View.prototype.getCenterInternal = function () {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (this.get(ViewProperty.CENTER));\n };\n /**\n * @return {Constraints} Constraints.\n */\n View.prototype.getConstraints = function () {\n return this.constraints_;\n };\n /**\n * @param {Array=} opt_hints Destination array.\n * @return {Array} Hint.\n */\n View.prototype.getHints = function (opt_hints) {\n if (opt_hints !== undefined) {\n opt_hints[0] = this.hints_[0];\n opt_hints[1] = this.hints_[1];\n return opt_hints;\n }\n else {\n return this.hints_.slice();\n }\n };\n /**\n * Calculate the extent for the current view state and the passed size.\n * The size is the pixel dimensions of the box into which the calculated extent\n * should fit. In most cases you want to get the extent of the entire map,\n * that is `map.getSize()`.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size. If not provided, the size of the\n * first map that uses this view will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n * @api\n */\n View.prototype.calculateExtent = function (opt_size) {\n var extent = this.calculateExtentInternal(opt_size);\n return toUserExtent(extent, this.getProjection());\n };\n /**\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size. If not provided, the size of the\n * first map that uses this view will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n View.prototype.calculateExtentInternal = function (opt_size) {\n var size = opt_size || this.getSizeFromViewport_();\n var center = /** @type {!import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n assert(center, 1); // The view center is not defined\n var resolution = /** @type {!number} */ (this.getResolution());\n assert(resolution !== undefined, 2); // The view resolution is not defined\n var rotation = /** @type {!number} */ (this.getRotation());\n assert(rotation !== undefined, 3); // The view rotation is not defined\n return getForViewAndSize(center, resolution, rotation, size);\n };\n /**\n * Get the maximum resolution of the view.\n * @return {number} The maximum resolution of the view.\n * @api\n */\n View.prototype.getMaxResolution = function () {\n return this.maxResolution_;\n };\n /**\n * Get the minimum resolution of the view.\n * @return {number} The minimum resolution of the view.\n * @api\n */\n View.prototype.getMinResolution = function () {\n return this.minResolution_;\n };\n /**\n * Get the maximum zoom level for the view.\n * @return {number} The maximum zoom level.\n * @api\n */\n View.prototype.getMaxZoom = function () {\n return /** @type {number} */ (this.getZoomForResolution(this.minResolution_));\n };\n /**\n * Set a new maximum zoom level for the view.\n * @param {number} zoom The maximum zoom level.\n * @api\n */\n View.prototype.setMaxZoom = function (zoom) {\n this.applyOptions_(this.getUpdatedOptions_({ maxZoom: zoom }));\n };\n /**\n * Get the minimum zoom level for the view.\n * @return {number} The minimum zoom level.\n * @api\n */\n View.prototype.getMinZoom = function () {\n return /** @type {number} */ (this.getZoomForResolution(this.maxResolution_));\n };\n /**\n * Set a new minimum zoom level for the view.\n * @param {number} zoom The minimum zoom level.\n * @api\n */\n View.prototype.setMinZoom = function (zoom) {\n this.applyOptions_(this.getUpdatedOptions_({ minZoom: zoom }));\n };\n /**\n * Set whether the view shoud allow intermediary zoom levels.\n * @param {boolean} enabled Whether the resolution is constrained.\n * @api\n */\n View.prototype.setConstrainResolution = function (enabled) {\n this.applyOptions_(this.getUpdatedOptions_({ constrainResolution: enabled }));\n };\n /**\n * Get the view projection.\n * @return {import(\"./proj/Projection.js\").default} The projection of the view.\n * @api\n */\n View.prototype.getProjection = function () {\n return this.projection_;\n };\n /**\n * Get the view resolution.\n * @return {number|undefined} The resolution of the view.\n * @observable\n * @api\n */\n View.prototype.getResolution = function () {\n return /** @type {number|undefined} */ (this.get(ViewProperty.RESOLUTION));\n };\n /**\n * Get the resolutions for the view. This returns the array of resolutions\n * passed to the constructor of the View, or undefined if none were given.\n * @return {Array|undefined} The resolutions of the view.\n * @api\n */\n View.prototype.getResolutions = function () {\n return this.resolutions_;\n };\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n * @api\n */\n View.prototype.getResolutionForExtent = function (extent, opt_size) {\n return this.getResolutionForExtentInternal(fromUserExtent(extent, this.getProjection()), opt_size);\n };\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n */\n View.prototype.getResolutionForExtentInternal = function (extent, opt_size) {\n var size = opt_size || this.getSizeFromViewport_();\n var xResolution = getWidth(extent) / size[0];\n var yResolution = getHeight(extent) / size[1];\n return Math.max(xResolution, yResolution);\n };\n /**\n * Return a function that returns a value between 0 and 1 for a\n * resolution. Exponential scaling is assumed.\n * @param {number=} opt_power Power.\n * @return {function(number): number} Resolution for value function.\n */\n View.prototype.getResolutionForValueFunction = function (opt_power) {\n var power = opt_power || 2;\n var maxResolution = this.maxResolution_;\n var minResolution = this.minResolution_;\n var max = Math.log(maxResolution / minResolution) / Math.log(power);\n return (\n /**\n * @param {number} value Value.\n * @return {number} Resolution.\n */\n function (value) {\n var resolution = maxResolution / Math.pow(power, value * max);\n return resolution;\n });\n };\n /**\n * Get the view rotation.\n * @return {number} The rotation of the view in radians.\n * @observable\n * @api\n */\n View.prototype.getRotation = function () {\n return /** @type {number} */ (this.get(ViewProperty.ROTATION));\n };\n /**\n * Return a function that returns a resolution for a value between\n * 0 and 1. Exponential scaling is assumed.\n * @param {number=} opt_power Power.\n * @return {function(number): number} Value for resolution function.\n */\n View.prototype.getValueForResolutionFunction = function (opt_power) {\n var power = opt_power || 2;\n var maxResolution = this.maxResolution_;\n var minResolution = this.minResolution_;\n var max = Math.log(maxResolution / minResolution) / Math.log(power);\n return (\n /**\n * @param {number} resolution Resolution.\n * @return {number} Value.\n */\n function (resolution) {\n var value = (Math.log(maxResolution / resolution) / Math.log(power)) / max;\n return value;\n });\n };\n /**\n * @return {State} View state.\n */\n View.prototype.getState = function () {\n var center = /** @type {import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n var projection = this.getProjection();\n var resolution = /** @type {number} */ (this.getResolution());\n var rotation = this.getRotation();\n return {\n center: center.slice(0),\n projection: projection !== undefined ? projection : null,\n resolution: resolution,\n rotation: rotation,\n zoom: this.getZoom()\n };\n };\n /**\n * Get the current zoom level. This method may return non-integer zoom levels\n * if the view does not constrain the resolution, or if an interaction or\n * animation is underway.\n * @return {number|undefined} Zoom.\n * @api\n */\n View.prototype.getZoom = function () {\n var zoom;\n var resolution = this.getResolution();\n if (resolution !== undefined) {\n zoom = this.getZoomForResolution(resolution);\n }\n return zoom;\n };\n /**\n * Get the zoom level for a resolution.\n * @param {number} resolution The resolution.\n * @return {number|undefined} The zoom level for the provided resolution.\n * @api\n */\n View.prototype.getZoomForResolution = function (resolution) {\n var offset = this.minZoom_ || 0;\n var max, zoomFactor;\n if (this.resolutions_) {\n var nearest = linearFindNearest(this.resolutions_, resolution, 1);\n offset = nearest;\n max = this.resolutions_[nearest];\n if (nearest == this.resolutions_.length - 1) {\n zoomFactor = 2;\n }\n else {\n zoomFactor = max / this.resolutions_[nearest + 1];\n }\n }\n else {\n max = this.maxResolution_;\n zoomFactor = this.zoomFactor_;\n }\n return offset + Math.log(max / resolution) / Math.log(zoomFactor);\n };\n /**\n * Get the resolution for a zoom level.\n * @param {number} zoom Zoom level.\n * @return {number} The view resolution for the provided zoom level.\n * @api\n */\n View.prototype.getResolutionForZoom = function (zoom) {\n if (this.resolutions_) {\n if (this.resolutions_.length <= 1) {\n return 0;\n }\n var baseLevel = clamp(Math.floor(zoom), 0, this.resolutions_.length - 2);\n var zoomFactor = this.resolutions_[baseLevel] / this.resolutions_[baseLevel + 1];\n return this.resolutions_[baseLevel] / Math.pow(zoomFactor, clamp(zoom - baseLevel, 0, 1));\n }\n else {\n return this.maxResolution_ / Math.pow(this.zoomFactor_, zoom - this.minZoom_);\n }\n };\n /**\n * Fit the given geometry or extent based on the given map size and border.\n * The size is pixel dimensions of the box to fit the extent into.\n * In most cases you will want to use the map size, that is `map.getSize()`.\n * Takes care of the map angle.\n * @param {import(\"./geom/SimpleGeometry.js\").default|import(\"./extent.js\").Extent} geometryOrExtent The geometry or\n * extent to fit the view to.\n * @param {FitOptions=} opt_options Options.\n * @api\n */\n View.prototype.fit = function (geometryOrExtent, opt_options) {\n var options = assign({ size: this.getSizeFromViewport_() }, opt_options || {});\n /** @type {import(\"./geom/SimpleGeometry.js\").default} */\n var geometry;\n assert(Array.isArray(geometryOrExtent) || typeof /** @type {?} */ (geometryOrExtent).getSimplifiedGeometry === 'function', 24); // Invalid extent or geometry provided as `geometry`\n if (Array.isArray(geometryOrExtent)) {\n assert(!isEmpty(geometryOrExtent), 25); // Cannot fit empty extent provided as `geometry`\n var extent = fromUserExtent(geometryOrExtent, this.getProjection());\n geometry = polygonFromExtent(extent);\n }\n else if (geometryOrExtent.getType() === GeometryType.CIRCLE) {\n var extent = fromUserExtent(geometryOrExtent.getExtent(), this.getProjection());\n geometry = polygonFromExtent(extent);\n geometry.rotate(this.getRotation(), getCenter(extent));\n }\n else {\n var userProjection = getUserProjection();\n if (userProjection) {\n geometry = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry.clone().transform(userProjection, this.getProjection()));\n }\n else {\n geometry = geometryOrExtent;\n }\n }\n this.fitInternal(geometry, options);\n };\n /**\n * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n * @param {FitOptions=} opt_options Options.\n */\n View.prototype.fitInternal = function (geometry, opt_options) {\n var options = opt_options || {};\n var size = options.size;\n if (!size) {\n size = this.getSizeFromViewport_();\n }\n var padding = options.padding !== undefined ? options.padding : [0, 0, 0, 0];\n var nearest = options.nearest !== undefined ? options.nearest : false;\n var minResolution;\n if (options.minResolution !== undefined) {\n minResolution = options.minResolution;\n }\n else if (options.maxZoom !== undefined) {\n minResolution = this.getResolutionForZoom(options.maxZoom);\n }\n else {\n minResolution = 0;\n }\n var coords = geometry.getFlatCoordinates();\n // calculate rotated extent\n var rotation = this.getRotation();\n var cosAngle = Math.cos(-rotation);\n var sinAngle = Math.sin(-rotation);\n var minRotX = +Infinity;\n var minRotY = +Infinity;\n var maxRotX = -Infinity;\n var maxRotY = -Infinity;\n var stride = geometry.getStride();\n for (var i = 0, ii = coords.length; i < ii; i += stride) {\n var rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle;\n var rotY = coords[i] * sinAngle + coords[i + 1] * cosAngle;\n minRotX = Math.min(minRotX, rotX);\n minRotY = Math.min(minRotY, rotY);\n maxRotX = Math.max(maxRotX, rotX);\n maxRotY = Math.max(maxRotY, rotY);\n }\n // calculate resolution\n var resolution = this.getResolutionForExtentInternal([minRotX, minRotY, maxRotX, maxRotY], [size[0] - padding[1] - padding[3], size[1] - padding[0] - padding[2]]);\n resolution = isNaN(resolution) ? minResolution :\n Math.max(resolution, minResolution);\n resolution = this.getConstrainedResolution(resolution, nearest ? 0 : 1);\n // calculate center\n sinAngle = -sinAngle; // go back to original rotation\n var centerRotX = (minRotX + maxRotX) / 2;\n var centerRotY = (minRotY + maxRotY) / 2;\n centerRotX += (padding[1] - padding[3]) / 2 * resolution;\n centerRotY += (padding[0] - padding[2]) / 2 * resolution;\n var centerX = centerRotX * cosAngle - centerRotY * sinAngle;\n var centerY = centerRotY * cosAngle + centerRotX * sinAngle;\n var center = [centerX, centerY];\n var callback = options.callback ? options.callback : VOID;\n if (options.duration !== undefined) {\n this.animateInternal({\n resolution: resolution,\n center: this.getConstrainedCenter(center, resolution),\n duration: options.duration,\n easing: options.easing\n }, callback);\n }\n else {\n this.targetResolution_ = resolution;\n this.targetCenter_ = center;\n this.applyTargetState_(false, true);\n animationCallback(callback, true);\n }\n };\n /**\n * Center on coordinate and view position.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n * @api\n */\n View.prototype.centerOn = function (coordinate, size, position) {\n this.centerOnInternal(fromUserCoordinate(coordinate, this.getProjection()), size, position);\n };\n /**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n */\n View.prototype.centerOnInternal = function (coordinate, size, position) {\n // calculate rotated position\n var rotation = this.getRotation();\n var cosAngle = Math.cos(-rotation);\n var sinAngle = Math.sin(-rotation);\n var rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n var rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n var resolution = this.getResolution();\n rotX += (size[0] / 2 - position[0]) * resolution;\n rotY += (position[1] - size[1] / 2) * resolution;\n // go back to original angle\n sinAngle = -sinAngle; // go back to original rotation\n var centerX = rotX * cosAngle - rotY * sinAngle;\n var centerY = rotY * cosAngle + rotX * sinAngle;\n this.setCenterInternal([centerX, centerY]);\n };\n /**\n * @return {boolean} Is defined.\n */\n View.prototype.isDef = function () {\n return !!this.getCenterInternal() && this.getResolution() !== undefined;\n };\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n * @api\n */\n View.prototype.adjustCenter = function (deltaCoordinates) {\n var center = toUserCoordinate(this.targetCenter_, this.getProjection());\n this.setCenter([center[0] + deltaCoordinates[0], center[1] + deltaCoordinates[1]]);\n };\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n */\n View.prototype.adjustCenterInternal = function (deltaCoordinates) {\n var center = this.targetCenter_;\n this.setCenterInternal([center[0] + deltaCoordinates[0], center[1] + deltaCoordinates[1]]);\n };\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.adjustResolution = function (ratio, opt_anchor) {\n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.adjustResolutionInternal(ratio, anchor);\n };\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.adjustResolutionInternal = function (ratio, opt_anchor) {\n var isMoving = this.getAnimating() || this.getInteracting();\n var size = this.getSizeFromViewport_(this.getRotation());\n var newResolution = this.constraints_.resolution(this.targetResolution_ * ratio, 0, size, isMoving);\n if (opt_anchor !== undefined) {\n this.targetCenter_ = this.calculateCenterZoom(newResolution, opt_anchor);\n }\n this.targetResolution_ *= ratio;\n this.applyTargetState_();\n };\n /**\n * Adds a value to the view zoom level, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom level.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.adjustZoom = function (delta, opt_anchor) {\n this.adjustResolution(Math.pow(this.zoomFactor_, -delta), opt_anchor);\n };\n /**\n * Adds a value to the view rotation, optionally using an anchor. Any rotation\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The rotation center.\n * @api\n */\n View.prototype.adjustRotation = function (delta, opt_anchor) {\n if (opt_anchor) {\n opt_anchor = fromUserCoordinate(opt_anchor, this.getProjection());\n }\n this.adjustRotationInternal(delta, opt_anchor);\n };\n /**\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The rotation center.\n */\n View.prototype.adjustRotationInternal = function (delta, opt_anchor) {\n var isMoving = this.getAnimating() || this.getInteracting();\n var newRotation = this.constraints_.rotation(this.targetRotation_ + delta, isMoving);\n if (opt_anchor !== undefined) {\n this.targetCenter_ = this.calculateCenterRotate(newRotation, opt_anchor);\n }\n this.targetRotation_ += delta;\n this.applyTargetState_();\n };\n /**\n * Set the center of the current view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n * @observable\n * @api\n */\n View.prototype.setCenter = function (center) {\n this.setCenterInternal(fromUserCoordinate(center, this.getProjection()));\n };\n /**\n * Set the center using the view projection (not the user projection).\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n */\n View.prototype.setCenterInternal = function (center) {\n this.targetCenter_ = center;\n this.applyTargetState_();\n };\n /**\n * @param {ViewHint} hint Hint.\n * @param {number} delta Delta.\n * @return {number} New value.\n */\n View.prototype.setHint = function (hint, delta) {\n this.hints_[hint] += delta;\n this.changed();\n return this.hints_[hint];\n };\n /**\n * Set the resolution for this view. Any resolution constraint will apply.\n * @param {number|undefined} resolution The resolution of the view.\n * @observable\n * @api\n */\n View.prototype.setResolution = function (resolution) {\n this.targetResolution_ = resolution;\n this.applyTargetState_();\n };\n /**\n * Set the rotation for this view. Any rotation constraint will apply.\n * @param {number} rotation The rotation of the view in radians.\n * @observable\n * @api\n */\n View.prototype.setRotation = function (rotation) {\n this.targetRotation_ = rotation;\n this.applyTargetState_();\n };\n /**\n * Zoom to a specific zoom level. Any resolution constrain will apply.\n * @param {number} zoom Zoom level.\n * @api\n */\n View.prototype.setZoom = function (zoom) {\n this.setResolution(this.getResolutionForZoom(zoom));\n };\n /**\n * Recompute rotation/resolution/center based on target values.\n * Note: we have to compute rotation first, then resolution and center considering that\n * parameters can influence one another in case a view extent constraint is present.\n * @param {boolean=} opt_doNotCancelAnims Do not cancel animations.\n * @param {boolean=} opt_forceMoving Apply constraints as if the view is moving.\n * @private\n */\n View.prototype.applyTargetState_ = function (opt_doNotCancelAnims, opt_forceMoving) {\n var isMoving = this.getAnimating() || this.getInteracting() || opt_forceMoving;\n // compute rotation\n var newRotation = this.constraints_.rotation(this.targetRotation_, isMoving);\n var size = this.getSizeFromViewport_(newRotation);\n var newResolution = this.constraints_.resolution(this.targetResolution_, 0, size, isMoving);\n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size, isMoving);\n if (this.get(ViewProperty.ROTATION) !== newRotation) {\n this.set(ViewProperty.ROTATION, newRotation);\n }\n if (this.get(ViewProperty.RESOLUTION) !== newResolution) {\n this.set(ViewProperty.RESOLUTION, newResolution);\n }\n if (!this.get(ViewProperty.CENTER) || !equals(this.get(ViewProperty.CENTER), newCenter)) {\n this.set(ViewProperty.CENTER, newCenter);\n }\n if (this.getAnimating() && !opt_doNotCancelAnims) {\n this.cancelAnimations();\n }\n };\n /**\n * If any constraints need to be applied, an animation will be triggered.\n * This is typically done on interaction end.\n * Note: calling this with a duration of 0 will apply the constrained values straight away,\n * without animation.\n * @param {number=} opt_duration The animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.resolveConstraints = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n var duration = opt_duration !== undefined ? opt_duration : 200;\n var direction = opt_resolutionDirection || 0;\n var newRotation = this.constraints_.rotation(this.targetRotation_);\n var size = this.getSizeFromViewport_(newRotation);\n var newResolution = this.constraints_.resolution(this.targetResolution_, direction, size);\n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size);\n if (duration === 0) {\n this.targetResolution_ = newResolution;\n this.targetRotation_ = newRotation;\n this.targetCenter_ = newCenter;\n this.applyTargetState_();\n return;\n }\n if (this.getResolution() !== newResolution ||\n this.getRotation() !== newRotation ||\n !this.getCenterInternal() ||\n !equals(this.getCenterInternal(), newCenter)) {\n if (this.getAnimating()) {\n this.cancelAnimations();\n }\n this.animateInternal({\n rotation: newRotation,\n center: newCenter,\n resolution: newResolution,\n duration: duration,\n easing: easeOut,\n anchor: opt_anchor\n });\n }\n };\n /**\n * Notify the View that an interaction has started.\n * The view state will be resolved to a stable one if needed\n * (depending on its constraints).\n * @api\n */\n View.prototype.beginInteraction = function () {\n this.resolveConstraints(0);\n this.setHint(ViewHint.INTERACTING, 1);\n };\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number=} opt_duration Animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.endInteraction = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.endInteractionInternal(opt_duration, opt_resolutionDirection, anchor);\n };\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number=} opt_duration Animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.endInteractionInternal = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n this.setHint(ViewHint.INTERACTING, -1);\n this.resolveConstraints(opt_duration, opt_resolutionDirection, opt_anchor);\n };\n /**\n * Get a valid position for the view center according to the current constraints.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} targetCenter Target center position.\n * @param {number=} opt_targetResolution Target resolution. If not supplied, the current one will be used.\n * This is useful to guess a valid center position at a different zoom level.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Valid center position.\n */\n View.prototype.getConstrainedCenter = function (targetCenter, opt_targetResolution) {\n var size = this.getSizeFromViewport_(this.getRotation());\n return this.constraints_.center(targetCenter, opt_targetResolution || this.getResolution(), size);\n };\n /**\n * Get a valid zoom level according to the current view constraints.\n * @param {number|undefined} targetZoom Target zoom.\n * @param {number=} [opt_direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid zoom level.\n */\n View.prototype.getConstrainedZoom = function (targetZoom, opt_direction) {\n var targetRes = this.getResolutionForZoom(targetZoom);\n return this.getZoomForResolution(this.getConstrainedResolution(targetRes, opt_direction));\n };\n /**\n * Get a valid resolution according to the current view constraints.\n * @param {number|undefined} targetResolution Target resolution.\n * @param {number=} [opt_direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid resolution.\n */\n View.prototype.getConstrainedResolution = function (targetResolution, opt_direction) {\n var direction = opt_direction || 0;\n var size = this.getSizeFromViewport_(this.getRotation());\n return this.constraints_.resolution(targetResolution, direction, size);\n };\n return View;\n}(BaseObject));\n/**\n * @param {Function} callback Callback.\n * @param {*} returnValue Return value.\n */\nfunction animationCallback(callback, returnValue) {\n setTimeout(function () {\n callback(returnValue);\n }, 0);\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./centerconstraint.js\").Type} The constraint.\n */\nexport function createCenterConstraint(options) {\n if (options.extent !== undefined) {\n var smooth = options.smoothExtentConstraint !== undefined ? options.smoothExtentConstraint : true;\n return createExtent(options.extent, options.constrainOnlyCenter, smooth);\n }\n var projection = createProjection(options.projection, 'EPSG:3857');\n if (options.multiWorld !== true && projection.isGlobal()) {\n var extent = projection.getExtent().slice();\n extent[0] = -Infinity;\n extent[2] = Infinity;\n return createExtent(extent, false, false);\n }\n return centerNone;\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {{constraint: import(\"./resolutionconstraint.js\").Type, maxResolution: number,\n * minResolution: number, minZoom: number, zoomFactor: number}} The constraint.\n */\nexport function createResolutionConstraint(options) {\n var resolutionConstraint;\n var maxResolution;\n var minResolution;\n // TODO: move these to be ol constants\n // see https://github.com/openlayers/openlayers/issues/2076\n var defaultMaxZoom = 28;\n var defaultZoomFactor = 2;\n var minZoom = options.minZoom !== undefined ?\n options.minZoom : DEFAULT_MIN_ZOOM;\n var maxZoom = options.maxZoom !== undefined ?\n options.maxZoom : defaultMaxZoom;\n var zoomFactor = options.zoomFactor !== undefined ?\n options.zoomFactor : defaultZoomFactor;\n var multiWorld = options.multiWorld !== undefined ?\n options.multiWorld : false;\n var smooth = options.smoothResolutionConstraint !== undefined ? options.smoothResolutionConstraint : true;\n var projection = createProjection(options.projection, 'EPSG:3857');\n var projExtent = projection.getExtent();\n var constrainOnlyCenter = options.constrainOnlyCenter;\n var extent = options.extent;\n if (!multiWorld && !extent && projection.isGlobal()) {\n constrainOnlyCenter = false;\n extent = projExtent;\n }\n if (options.resolutions !== undefined) {\n var resolutions = options.resolutions;\n maxResolution = resolutions[minZoom];\n minResolution = resolutions[maxZoom] !== undefined ?\n resolutions[maxZoom] : resolutions[resolutions.length - 1];\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToResolutions(resolutions, smooth, !constrainOnlyCenter && extent);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent);\n }\n }\n else {\n // calculate the default min and max resolution\n var size = !projExtent ?\n // use an extent that can fit the whole world if need be\n 360 * METERS_PER_UNIT[Units.DEGREES] /\n projection.getMetersPerUnit() :\n Math.max(getWidth(projExtent), getHeight(projExtent));\n var defaultMaxResolution = size / DEFAULT_TILE_SIZE / Math.pow(defaultZoomFactor, DEFAULT_MIN_ZOOM);\n var defaultMinResolution = defaultMaxResolution / Math.pow(defaultZoomFactor, defaultMaxZoom - DEFAULT_MIN_ZOOM);\n // user provided maxResolution takes precedence\n maxResolution = options.maxResolution;\n if (maxResolution !== undefined) {\n minZoom = 0;\n }\n else {\n maxResolution = defaultMaxResolution / Math.pow(zoomFactor, minZoom);\n }\n // user provided minResolution takes precedence\n minResolution = options.minResolution;\n if (minResolution === undefined) {\n if (options.maxZoom !== undefined) {\n if (options.maxResolution !== undefined) {\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom);\n }\n else {\n minResolution = defaultMaxResolution / Math.pow(zoomFactor, maxZoom);\n }\n }\n else {\n minResolution = defaultMinResolution;\n }\n }\n // given discrete zoom levels, minResolution may be different than provided\n maxZoom = minZoom + Math.floor(Math.log(maxResolution / minResolution) / Math.log(zoomFactor));\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToPower(zoomFactor, maxResolution, minResolution, smooth, !constrainOnlyCenter && extent);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent);\n }\n }\n return { constraint: resolutionConstraint, maxResolution: maxResolution,\n minResolution: minResolution, minZoom: minZoom, zoomFactor: zoomFactor };\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./rotationconstraint.js\").Type} Rotation constraint.\n */\nexport function createRotationConstraint(options) {\n var enableRotation = options.enableRotation !== undefined ?\n options.enableRotation : true;\n if (enableRotation) {\n var constrainRotation = options.constrainRotation;\n if (constrainRotation === undefined || constrainRotation === true) {\n return createSnapToZero();\n }\n else if (constrainRotation === false) {\n return rotationNone;\n }\n else if (typeof constrainRotation === 'number') {\n return createSnapToN(constrainRotation);\n }\n else {\n return rotationNone;\n }\n }\n else {\n return disable;\n }\n}\n/**\n * Determine if an animation involves no view change.\n * @param {Animation} animation The animation.\n * @return {boolean} The animation involves no view change.\n */\nexport function isNoopAnimation(animation) {\n if (animation.sourceCenter && animation.targetCenter) {\n if (!coordinatesEqual(animation.sourceCenter, animation.targetCenter)) {\n return false;\n }\n }\n if (animation.sourceResolution !== animation.targetResolution) {\n return false;\n }\n if (animation.sourceRotation !== animation.targetRotation) {\n return false;\n }\n return true;\n}\nexport default View;\n//# sourceMappingURL=View.js.map","/**\n * @module ol/dom\n */\n/**\n * Create an html canvas element and returns its 2d context.\n * @param {number=} opt_width Canvas width.\n * @param {number=} opt_height Canvas height.\n * @return {CanvasRenderingContext2D} The context.\n */\nexport function createCanvasContext2D(opt_width, opt_height) {\n var canvas = document.createElement('canvas');\n if (opt_width) {\n canvas.width = opt_width;\n }\n if (opt_height) {\n canvas.height = opt_height;\n }\n return canvas.getContext('2d');\n}\n/**\n * Get the current computed width for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerWidth(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The width.\n */\nexport function outerWidth(element) {\n var width = element.offsetWidth;\n var style = getComputedStyle(element);\n width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);\n return width;\n}\n/**\n * Get the current computed height for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerHeight(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The height.\n */\nexport function outerHeight(element) {\n var height = element.offsetHeight;\n var style = getComputedStyle(element);\n height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);\n return height;\n}\n/**\n * @param {Node} newNode Node to replace old node\n * @param {Node} oldNode The node to be replaced\n */\nexport function replaceNode(newNode, oldNode) {\n var parent = oldNode.parentNode;\n if (parent) {\n parent.replaceChild(newNode, oldNode);\n }\n}\n/**\n * @param {Node} node The node to remove.\n * @returns {Node} The node that was removed or null.\n */\nexport function removeNode(node) {\n return node && node.parentNode ? node.parentNode.removeChild(node) : null;\n}\n/**\n * @param {Node} node The node to remove the children from.\n */\nexport function removeChildren(node) {\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n}\n/**\n * Transform the children of a parent node so they match the\n * provided list of children. This function aims to efficiently\n * remove, add, and reorder child nodes while maintaining a simple\n * implementation (it is not guaranteed to minimize DOM operations).\n * @param {Node} node The parent node whose children need reworking.\n * @param {Array} children The desired children.\n */\nexport function replaceChildren(node, children) {\n var oldChildren = node.childNodes;\n for (var i = 0; true; ++i) {\n var oldChild = oldChildren[i];\n var newChild = children[i];\n // check if our work is done\n if (!oldChild && !newChild) {\n break;\n }\n // check if children match\n if (oldChild === newChild) {\n continue;\n }\n // check if a new child needs to be added\n if (!oldChild) {\n node.appendChild(newChild);\n continue;\n }\n // check if an old child needs to be removed\n if (!newChild) {\n node.removeChild(oldChild);\n --i;\n continue;\n }\n // reorder\n node.insertBefore(newChild, oldChild);\n }\n}\n//# sourceMappingURL=dom.js.map","/**\n * @module ol/layer/Property\n */\n/**\n * @enum {string}\n */\nexport default {\n OPACITY: 'opacity',\n VISIBLE: 'visible',\n EXTENT: 'extent',\n Z_INDEX: 'zIndex',\n MAX_RESOLUTION: 'maxResolution',\n MIN_RESOLUTION: 'minResolution',\n MAX_ZOOM: 'maxZoom',\n MIN_ZOOM: 'minZoom',\n SOURCE: 'source'\n};\n//# sourceMappingURL=Property.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Base\n */\nimport { abstract } from '../util.js';\nimport BaseObject from '../Object.js';\nimport LayerProperty from './Property.js';\nimport { clamp } from '../math.js';\nimport { assign } from '../obj.js';\nimport { assert } from '../asserts.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Note that with {@link module:ol/layer/Base} and all its subclasses, any property set in\n * the options is set as a {@link module:ol/Object} property on the layer object, so\n * is observable, and has get/set accessors.\n *\n * @api\n */\nvar BaseLayer = /** @class */ (function (_super) {\n __extends(BaseLayer, _super);\n /**\n * @param {Options} options Layer options.\n */\n function BaseLayer(options) {\n var _this = _super.call(this) || this;\n /**\n * @type {Object}\n */\n var properties = assign({}, options);\n properties[LayerProperty.OPACITY] =\n options.opacity !== undefined ? options.opacity : 1;\n assert(typeof properties[LayerProperty.OPACITY] === 'number', 64); // Layer opacity must be a number\n properties[LayerProperty.VISIBLE] =\n options.visible !== undefined ? options.visible : true;\n properties[LayerProperty.Z_INDEX] = options.zIndex;\n properties[LayerProperty.MAX_RESOLUTION] =\n options.maxResolution !== undefined ? options.maxResolution : Infinity;\n properties[LayerProperty.MIN_RESOLUTION] =\n options.minResolution !== undefined ? options.minResolution : 0;\n properties[LayerProperty.MIN_ZOOM] =\n options.minZoom !== undefined ? options.minZoom : -Infinity;\n properties[LayerProperty.MAX_ZOOM] =\n options.maxZoom !== undefined ? options.maxZoom : Infinity;\n /**\n * @type {string}\n * @private\n */\n _this.className_ = properties.className !== undefined ? options.className : 'ol-layer';\n delete properties.className;\n _this.setProperties(properties);\n /**\n * @type {import(\"./Layer.js\").State}\n * @private\n */\n _this.state_ = null;\n return _this;\n }\n /**\n * @return {string} CSS class name.\n */\n BaseLayer.prototype.getClassName = function () {\n return this.className_;\n };\n /**\n * This method is not meant to be called by layers or layer renderers because the state\n * is incorrect if the layer is included in a layer group.\n *\n * @param {boolean=} opt_managed Layer is managed.\n * @return {import(\"./Layer.js\").State} Layer state.\n */\n BaseLayer.prototype.getLayerState = function (opt_managed) {\n /** @type {import(\"./Layer.js\").State} */\n var state = this.state_ || /** @type {?} */ ({\n layer: this,\n managed: opt_managed === undefined ? true : opt_managed\n });\n var zIndex = this.getZIndex();\n state.opacity = clamp(Math.round(this.getOpacity() * 100) / 100, 0, 1);\n state.sourceState = this.getSourceState();\n state.visible = this.getVisible();\n state.extent = this.getExtent();\n state.zIndex = zIndex !== undefined ? zIndex : (state.managed === false ? Infinity : 0);\n state.maxResolution = this.getMaxResolution();\n state.minResolution = Math.max(this.getMinResolution(), 0);\n state.minZoom = this.getMinZoom();\n state.maxZoom = this.getMaxZoom();\n this.state_ = state;\n return state;\n };\n /**\n * @abstract\n * @param {Array=} opt_array Array of layers (to be\n * modified in place).\n * @return {Array} Array of layers.\n */\n BaseLayer.prototype.getLayersArray = function (opt_array) {\n return abstract();\n };\n /**\n * @abstract\n * @param {Array=} opt_states Optional list of layer\n * states (to be modified in place).\n * @return {Array} List of layer states.\n */\n BaseLayer.prototype.getLayerStatesArray = function (opt_states) {\n return abstract();\n };\n /**\n * Return the {@link module:ol/extent~Extent extent} of the layer or `undefined` if it\n * will be visible regardless of extent.\n * @return {import(\"../extent.js\").Extent|undefined} The layer extent.\n * @observable\n * @api\n */\n BaseLayer.prototype.getExtent = function () {\n return (\n /** @type {import(\"../extent.js\").Extent|undefined} */ (this.get(LayerProperty.EXTENT)));\n };\n /**\n * Return the maximum resolution of the layer.\n * @return {number} The maximum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMaxResolution = function () {\n return /** @type {number} */ (this.get(LayerProperty.MAX_RESOLUTION));\n };\n /**\n * Return the minimum resolution of the layer.\n * @return {number} The minimum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMinResolution = function () {\n return /** @type {number} */ (this.get(LayerProperty.MIN_RESOLUTION));\n };\n /**\n * Return the minimum zoom level of the layer.\n * @return {number} The minimum zoom level of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMinZoom = function () {\n return /** @type {number} */ (this.get(LayerProperty.MIN_ZOOM));\n };\n /**\n * Return the maximum zoom level of the layer.\n * @return {number} The maximum zoom level of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMaxZoom = function () {\n return /** @type {number} */ (this.get(LayerProperty.MAX_ZOOM));\n };\n /**\n * Return the opacity of the layer (between 0 and 1).\n * @return {number} The opacity of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getOpacity = function () {\n return /** @type {number} */ (this.get(LayerProperty.OPACITY));\n };\n /**\n * @abstract\n * @return {import(\"../source/State.js\").default} Source state.\n */\n BaseLayer.prototype.getSourceState = function () {\n return abstract();\n };\n /**\n * Return the visibility of the layer (`true` or `false`).\n * @return {boolean} The visibility of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getVisible = function () {\n return /** @type {boolean} */ (this.get(LayerProperty.VISIBLE));\n };\n /**\n * Return the Z-index of the layer, which is used to order layers before\n * rendering. The default Z-index is 0.\n * @return {number} The Z-index of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getZIndex = function () {\n return /** @type {number} */ (this.get(LayerProperty.Z_INDEX));\n };\n /**\n * Set the extent at which the layer is visible. If `undefined`, the layer\n * will be visible at all extents.\n * @param {import(\"../extent.js\").Extent|undefined} extent The extent of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setExtent = function (extent) {\n this.set(LayerProperty.EXTENT, extent);\n };\n /**\n * Set the maximum resolution at which the layer is visible.\n * @param {number} maxResolution The maximum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMaxResolution = function (maxResolution) {\n this.set(LayerProperty.MAX_RESOLUTION, maxResolution);\n };\n /**\n * Set the minimum resolution at which the layer is visible.\n * @param {number} minResolution The minimum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMinResolution = function (minResolution) {\n this.set(LayerProperty.MIN_RESOLUTION, minResolution);\n };\n /**\n * Set the maximum zoom (exclusive) at which the layer is visible.\n * Note that the zoom levels for layer visibility are based on the\n * view zoom level, which may be different from a tile source zoom level.\n * @param {number} maxZoom The maximum zoom of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMaxZoom = function (maxZoom) {\n this.set(LayerProperty.MAX_ZOOM, maxZoom);\n };\n /**\n * Set the minimum zoom (inclusive) at which the layer is visible.\n * Note that the zoom levels for layer visibility are based on the\n * view zoom level, which may be different from a tile source zoom level.\n * @param {number} minZoom The minimum zoom of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMinZoom = function (minZoom) {\n this.set(LayerProperty.MIN_ZOOM, minZoom);\n };\n /**\n * Set the opacity of the layer, allowed values range from 0 to 1.\n * @param {number} opacity The opacity of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setOpacity = function (opacity) {\n assert(typeof opacity === 'number', 64); // Layer opacity must be a number\n this.set(LayerProperty.OPACITY, opacity);\n };\n /**\n * Set the visibility of the layer (`true` or `false`).\n * @param {boolean} visible The visibility of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setVisible = function (visible) {\n this.set(LayerProperty.VISIBLE, visible);\n };\n /**\n * Set Z-index of the layer, which is used to order layers before rendering.\n * The default Z-index is 0.\n * @param {number} zindex The z-index of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setZIndex = function (zindex) {\n this.set(LayerProperty.Z_INDEX, zindex);\n };\n /**\n * @inheritDoc\n */\n BaseLayer.prototype.disposeInternal = function () {\n if (this.state_) {\n this.state_.layer = null;\n this.state_ = null;\n }\n _super.prototype.disposeInternal.call(this);\n };\n return BaseLayer;\n}(BaseObject));\nexport default BaseLayer;\n//# sourceMappingURL=Base.js.map","/**\n * @module ol/source/State\n */\n/**\n * @enum {string}\n * State of the source, one of 'undefined', 'loading', 'ready' or 'error'.\n */\nexport default {\n UNDEFINED: 'undefined',\n LOADING: 'loading',\n READY: 'ready',\n ERROR: 'error'\n};\n//# sourceMappingURL=State.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Group\n */\nimport { getUid } from '../util.js';\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport { getChangeEventType } from '../Object.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport { assert } from '../asserts.js';\nimport { listen, unlistenByKey } from '../events.js';\nimport EventType from '../events/EventType.js';\nimport { getIntersection } from '../extent.js';\nimport BaseLayer from './Base.js';\nimport { assign, clear } from '../obj.js';\nimport SourceState from '../source/State.js';\n/**\n * @typedef {Object} Options\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {Array|import(\"../Collection.js\").default} [layers] Child layers.\n */\n/**\n * @enum {string}\n * @private\n */\nvar Property = {\n LAYERS: 'layers'\n};\n/**\n * @classdesc\n * A {@link module:ol/Collection~Collection} of layers that are handled together.\n *\n * A generic `change` event is triggered when the group/Collection changes.\n *\n * @api\n */\nvar LayerGroup = /** @class */ (function (_super) {\n __extends(LayerGroup, _super);\n /**\n * @param {Options=} opt_options Layer options.\n */\n function LayerGroup(opt_options) {\n var _this = this;\n var options = opt_options || {};\n var baseOptions = /** @type {Options} */ (assign({}, options));\n delete baseOptions.layers;\n var layers = options.layers;\n _this = _super.call(this, baseOptions) || this;\n /**\n * @private\n * @type {Array}\n */\n _this.layersListenerKeys_ = [];\n /**\n * @private\n * @type {Object>}\n */\n _this.listenerKeys_ = {};\n _this.addEventListener(getChangeEventType(Property.LAYERS), _this.handleLayersChanged_);\n if (layers) {\n if (Array.isArray(layers)) {\n layers = new Collection(layers.slice(), { unique: true });\n }\n else {\n assert(typeof /** @type {?} */ (layers).getArray === 'function', 43); // Expected `layers` to be an array or a `Collection`\n }\n }\n else {\n layers = new Collection(undefined, { unique: true });\n }\n _this.setLayers(layers);\n return _this;\n }\n /**\n * @private\n */\n LayerGroup.prototype.handleLayerChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n LayerGroup.prototype.handleLayersChanged_ = function () {\n this.layersListenerKeys_.forEach(unlistenByKey);\n this.layersListenerKeys_.length = 0;\n var layers = this.getLayers();\n this.layersListenerKeys_.push(listen(layers, CollectionEventType.ADD, this.handleLayersAdd_, this), listen(layers, CollectionEventType.REMOVE, this.handleLayersRemove_, this));\n for (var id in this.listenerKeys_) {\n this.listenerKeys_[id].forEach(unlistenByKey);\n }\n clear(this.listenerKeys_);\n var layersArray = layers.getArray();\n for (var i = 0, ii = layersArray.length; i < ii; i++) {\n var layer = layersArray[i];\n this.listenerKeys_[getUid(layer)] = [\n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this)\n ];\n }\n this.changed();\n };\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n LayerGroup.prototype.handleLayersAdd_ = function (collectionEvent) {\n var layer = /** @type {import(\"./Base.js\").default} */ (collectionEvent.element);\n this.listenerKeys_[getUid(layer)] = [\n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this)\n ];\n this.changed();\n };\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n LayerGroup.prototype.handleLayersRemove_ = function (collectionEvent) {\n var layer = /** @type {import(\"./Base.js\").default} */ (collectionEvent.element);\n var key = getUid(layer);\n this.listenerKeys_[key].forEach(unlistenByKey);\n delete this.listenerKeys_[key];\n this.changed();\n };\n /**\n * Returns the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @return {!import(\"../Collection.js\").default} Collection of\n * {@link module:ol/layer/Base layers} that are part of this group.\n * @observable\n * @api\n */\n LayerGroup.prototype.getLayers = function () {\n return (\n /** @type {!import(\"../Collection.js\").default} */ (this.get(Property.LAYERS)));\n };\n /**\n * Set the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @param {!import(\"../Collection.js\").default} layers Collection of\n * {@link module:ol/layer/Base layers} that are part of this group.\n * @observable\n * @api\n */\n LayerGroup.prototype.setLayers = function (layers) {\n this.set(Property.LAYERS, layers);\n };\n /**\n * @inheritDoc\n */\n LayerGroup.prototype.getLayersArray = function (opt_array) {\n var array = opt_array !== undefined ? opt_array : [];\n this.getLayers().forEach(function (layer) {\n layer.getLayersArray(array);\n });\n return array;\n };\n /**\n * @inheritDoc\n */\n LayerGroup.prototype.getLayerStatesArray = function (opt_states) {\n var states = opt_states !== undefined ? opt_states : [];\n var pos = states.length;\n this.getLayers().forEach(function (layer) {\n layer.getLayerStatesArray(states);\n });\n var ownLayerState = this.getLayerState();\n for (var i = pos, ii = states.length; i < ii; i++) {\n var layerState = states[i];\n layerState.opacity *= ownLayerState.opacity;\n layerState.visible = layerState.visible && ownLayerState.visible;\n layerState.maxResolution = Math.min(layerState.maxResolution, ownLayerState.maxResolution);\n layerState.minResolution = Math.max(layerState.minResolution, ownLayerState.minResolution);\n layerState.minZoom = Math.max(layerState.minZoom, ownLayerState.minZoom);\n layerState.maxZoom = Math.min(layerState.maxZoom, ownLayerState.maxZoom);\n if (ownLayerState.extent !== undefined) {\n if (layerState.extent !== undefined) {\n layerState.extent = getIntersection(layerState.extent, ownLayerState.extent);\n }\n else {\n layerState.extent = ownLayerState.extent;\n }\n }\n }\n return states;\n };\n /**\n * @inheritDoc\n */\n LayerGroup.prototype.getSourceState = function () {\n return SourceState.READY;\n };\n return LayerGroup;\n}(BaseLayer));\nexport default LayerGroup;\n//# sourceMappingURL=Group.js.map","/**\n * @module ol/size\n */\n/**\n * An array of numbers representing a size: `[width, height]`.\n * @typedef {Array} Size\n * @api\n */\n/**\n * Returns a buffered size.\n * @param {Size} size Size.\n * @param {number} num The amount by which to buffer.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} The buffered size.\n */\nexport function buffer(size, num, opt_size) {\n if (opt_size === undefined) {\n opt_size = [0, 0];\n }\n opt_size[0] = size[0] + 2 * num;\n opt_size[1] = size[1] + 2 * num;\n return opt_size;\n}\n/**\n * Determines if a size has a positive area.\n * @param {Size} size The size to test.\n * @return {boolean} The size has a positive area.\n */\nexport function hasArea(size) {\n return size[0] > 0 && size[1] > 0;\n}\n/**\n * Returns a size scaled by a ratio. The result will be an array of integers.\n * @param {Size} size Size.\n * @param {number} ratio Ratio.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} The scaled size.\n */\nexport function scale(size, ratio, opt_size) {\n if (opt_size === undefined) {\n opt_size = [0, 0];\n }\n opt_size[0] = (size[0] * ratio + 0.5) | 0;\n opt_size[1] = (size[1] * ratio + 0.5) | 0;\n return opt_size;\n}\n/**\n * Returns an `Size` array for the passed in number (meaning: square) or\n * `Size` array.\n * (meaning: non-square),\n * @param {number|Size} size Width and height.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} Size.\n * @api\n */\nexport function toSize(size, opt_size) {\n if (Array.isArray(size)) {\n return size;\n }\n else {\n if (opt_size === undefined) {\n opt_size = [size, size];\n }\n else {\n opt_size[0] = size;\n opt_size[1] = size;\n }\n return opt_size;\n }\n}\n//# sourceMappingURL=size.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/PluggableMap\n */\nimport { getUid } from './util.js';\nimport Collection from './Collection.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventHandler from './MapBrowserEventHandler.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapEvent from './MapEvent.js';\nimport MapEventType from './MapEventType.js';\nimport MapProperty from './MapProperty.js';\nimport RenderEventType from './render/EventType.js';\nimport BaseObject, { getChangeEventType } from './Object.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport TileQueue from './TileQueue.js';\nimport View from './View.js';\nimport ViewHint from './ViewHint.js';\nimport { assert } from './asserts.js';\nimport { removeNode } from './dom.js';\nimport { listen, unlistenByKey } from './events.js';\nimport EventType from './events/EventType.js';\nimport { clone, createOrUpdateEmpty, equals, getForViewAndSize, isEmpty } from './extent.js';\nimport { TRUE } from './functions.js';\nimport { DEVICE_PIXEL_RATIO, IMAGE_DECODE } from './has.js';\nimport LayerGroup from './layer/Group.js';\nimport { hasArea } from './size.js';\nimport { DROP } from './structs/PriorityQueue.js';\nimport { create as createTransform, apply as applyTransform } from './transform.js';\nimport { toUserCoordinate, fromUserCoordinate } from './proj.js';\n/**\n * State of the current frame. Only `pixelRatio`, `time` and `viewState` should\n * be used in applications.\n * @typedef {Object} FrameState\n * @property {number} pixelRatio The pixel ratio of the frame.\n * @property {number} time The time when rendering of the frame was requested.\n * @property {import(\"./View.js\").State} viewState The state of the current view.\n * @property {boolean} animate\n * @property {import(\"./transform.js\").Transform} coordinateToPixelTransform\n * @property {null|import(\"./extent.js\").Extent} extent\n * @property {Array} declutterItems\n * @property {number} index\n * @property {Array} layerStatesArray\n * @property {number} layerIndex\n * @property {import(\"./transform.js\").Transform} pixelToCoordinateTransform\n * @property {Array} postRenderFunctions\n * @property {import(\"./size.js\").Size} size\n * @property {TileQueue} tileQueue\n * @property {!Object>} usedTiles\n * @property {Array} viewHints\n * @property {!Object>} wantedTiles\n */\n/**\n * @typedef {Object} DeclutterItems\n * @property {Array<*>} items Declutter items of an executor.\n * @property {number} opacity Layer opacity.\n */\n/**\n * @typedef {function(PluggableMap, ?FrameState): any} PostRenderFunction\n */\n/**\n * @typedef {Object} AtPixelOptions\n * @property {undefined|function(import(\"./layer/Layer.js\").default): boolean} [layerFilter] Layer filter\n * function. The filter function will receive one argument, the\n * {@link module:ol/layer/Layer layer-candidate} and it should return a boolean value.\n * Only layers which are visible and for which this function returns `true`\n * will be tested for features. By default, all visible layers will be tested.\n * @property {number} [hitTolerance=0] Hit-detection tolerance in pixels. Pixels\n * inside the radius around the given position will be checked for features.\n * @property {boolean} [checkWrapped=true] Check-Wrapped Will check for for wrapped geometries inside the range of\n * +/- 1 world width. Works only if a projection is used that can be wrapped.\n */\n/**\n * @typedef {Object} MapOptionsInternal\n * @property {Collection} [controls]\n * @property {Collection} [interactions]\n * @property {HTMLElement|Document} keyboardEventTarget\n * @property {Collection} overlays\n * @property {Object} values\n */\n/**\n * Object literal with config options for the map.\n * @typedef {Object} MapOptions\n * @property {Collection|Array} [controls]\n * Controls initially added to the map. If not specified,\n * {@link module:ol/control~defaults} is used.\n * @property {number} [pixelRatio=window.devicePixelRatio] The ratio between\n * physical pixels and device-independent pixels (dips) on the device.\n * @property {Collection|Array} [interactions]\n * Interactions that are initially added to the map. If not specified,\n * {@link module:ol/interaction~defaults} is used.\n * @property {HTMLElement|Document|string} [keyboardEventTarget] The element to\n * listen to keyboard events on. This determines when the `KeyboardPan` and\n * `KeyboardZoom` interactions trigger. For example, if this option is set to\n * `document` the keyboard interactions will always trigger. If this option is\n * not specified, the element the library listens to keyboard events on is the\n * map target (i.e. the user-provided div for the map). If this is not\n * `document`, the target element needs to be focused for key events to be\n * emitted, requiring that the target element has a `tabindex` attribute.\n * @property {Array|Collection|LayerGroup} [layers]\n * Layers. If this is not defined, a map with no layers will be rendered. Note\n * that layers are rendered in the order supplied, so if you want, for example,\n * a vector layer to appear on top of a tile layer, it must come after the tile\n * layer.\n * @property {number} [maxTilesLoading=16] Maximum number tiles to load\n * simultaneously.\n * @property {number} [moveTolerance=1] The minimum distance in pixels the\n * cursor must move to be detected as a map move event instead of a click.\n * Increasing this value can make it easier to click on the map.\n * @property {Collection|Array} [overlays]\n * Overlays initially added to the map. By default, no overlays are added.\n * @property {HTMLElement|string} [target] The container for the map, either the\n * element itself or the `id` of the element. If not specified at construction\n * time, {@link module:ol/Map~Map#setTarget} must be called for the map to be\n * rendered.\n * @property {View} [view] The map's view. No layer sources will be\n * fetched unless this is specified at construction time or through\n * {@link module:ol/Map~Map#setView}.\n */\n/**\n * @param {HTMLElement} element Element.\n * @param {string} touchAction Value for `touch-action'.\n */\nfunction setTouchAction(element, touchAction) {\n element.style.msTouchAction = touchAction;\n element.style.touchAction = touchAction;\n element.setAttribute('touch-action', touchAction);\n}\n/**\n * @fires import(\"./MapBrowserEvent.js\").MapBrowserEvent\n * @fires import(\"./MapEvent.js\").MapEvent\n * @fires import(\"./render/Event.js\").default#precompose\n * @fires import(\"./render/Event.js\").default#postcompose\n * @fires import(\"./render/Event.js\").default#rendercomplete\n * @api\n */\nvar PluggableMap = /** @class */ (function (_super) {\n __extends(PluggableMap, _super);\n /**\n * @param {MapOptions} options Map options.\n */\n function PluggableMap(options) {\n var _this = _super.call(this) || this;\n var optionsInternal = createOptionsInternal(options);\n /** @private */\n _this.boundHandleBrowserEvent_ = _this.handleBrowserEvent.bind(_this);\n /**\n * @type {number}\n * @private\n */\n _this.maxTilesLoading_ = options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;\n /**\n * @private\n * @type {number}\n */\n _this.pixelRatio_ = options.pixelRatio !== undefined ?\n options.pixelRatio : DEVICE_PIXEL_RATIO;\n /**\n * @private\n * @type {*}\n */\n _this.postRenderTimeoutHandle_;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.animationDelayKey_;\n /**\n * @private\n */\n _this.animationDelay_ = function () {\n this.animationDelayKey_ = undefined;\n this.renderFrame_(Date.now());\n }.bind(_this);\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n _this.coordinateToPixelTransform_ = createTransform();\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n _this.pixelToCoordinateTransform_ = createTransform();\n /**\n * @private\n * @type {number}\n */\n _this.frameIndex_ = 0;\n /**\n * @private\n * @type {?FrameState}\n */\n _this.frameState_ = null;\n /**\n * The extent at the previous 'moveend' event.\n * @private\n * @type {import(\"./extent.js\").Extent}\n */\n _this.previousExtent_ = null;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.viewPropertyListenerKey_ = null;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.viewChangeListenerKey_ = null;\n /**\n * @private\n * @type {?Array}\n */\n _this.layerGroupPropertyListenerKeys_ = null;\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.viewport_ = document.createElement('div');\n _this.viewport_.className = 'ol-viewport' + ('ontouchstart' in window ? ' ol-touch' : '');\n _this.viewport_.style.position = 'relative';\n _this.viewport_.style.overflow = 'hidden';\n _this.viewport_.style.width = '100%';\n _this.viewport_.style.height = '100%';\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.overlayContainer_ = document.createElement('div');\n _this.overlayContainer_.style.position = 'absolute';\n _this.overlayContainer_.style.zIndex = '0';\n _this.overlayContainer_.style.width = '100%';\n _this.overlayContainer_.style.height = '100%';\n _this.overlayContainer_.className = 'ol-overlaycontainer';\n _this.viewport_.appendChild(_this.overlayContainer_);\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.overlayContainerStopEvent_ = document.createElement('div');\n _this.overlayContainerStopEvent_.style.position = 'absolute';\n _this.overlayContainerStopEvent_.style.zIndex = '0';\n _this.overlayContainerStopEvent_.style.width = '100%';\n _this.overlayContainerStopEvent_.style.height = '100%';\n _this.overlayContainerStopEvent_.className = 'ol-overlaycontainer-stopevent';\n _this.viewport_.appendChild(_this.overlayContainerStopEvent_);\n /**\n * @private\n * @type {MapBrowserEventHandler}\n */\n _this.mapBrowserEventHandler_ = new MapBrowserEventHandler(_this, options.moveTolerance);\n var handleMapBrowserEvent = _this.handleMapBrowserEvent.bind(_this);\n for (var key in MapBrowserEventType) {\n _this.mapBrowserEventHandler_.addEventListener(MapBrowserEventType[key], handleMapBrowserEvent);\n }\n /**\n * @private\n * @type {HTMLElement|Document}\n */\n _this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n /**\n * @private\n * @type {?Array}\n */\n _this.keyHandlerKeys_ = null;\n /**\n * @private\n * @type {?Array}\n */\n _this.focusHandlerKeys_ = null;\n var handleBrowserEvent = _this.handleBrowserEvent.bind(_this);\n _this.viewport_.addEventListener(EventType.CONTEXTMENU, handleBrowserEvent, false);\n _this.viewport_.addEventListener(EventType.WHEEL, handleBrowserEvent, false);\n /**\n * @type {Collection}\n * @protected\n */\n _this.controls = optionsInternal.controls || new Collection();\n /**\n * @type {Collection}\n * @protected\n */\n _this.interactions = optionsInternal.interactions || new Collection();\n /**\n * @type {Collection}\n * @private\n */\n _this.overlays_ = optionsInternal.overlays;\n /**\n * A lookup of overlays by id.\n * @private\n * @type {Object}\n */\n _this.overlayIdIndex_ = {};\n /**\n * @type {import(\"./renderer/Map.js\").default}\n * @private\n */\n _this.renderer_ = null;\n /**\n * @type {undefined|function(Event): void}\n * @private\n */\n _this.handleResize_;\n /**\n * @private\n * @type {!Array}\n */\n _this.postRenderFunctions_ = [];\n /**\n * @private\n * @type {TileQueue}\n */\n _this.tileQueue_ = new TileQueue(_this.getTilePriority.bind(_this), _this.handleTileChange_.bind(_this));\n _this.addEventListener(getChangeEventType(MapProperty.LAYERGROUP), _this.handleLayerGroupChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.VIEW), _this.handleViewChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.SIZE), _this.handleSizeChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.TARGET), _this.handleTargetChanged_);\n // setProperties will trigger the rendering of the map if the map\n // is \"defined\" already.\n _this.setProperties(optionsInternal.values);\n _this.controls.forEach(\n /**\n * @param {import(\"./control/Control.js\").default} control Control.\n * @this {PluggableMap}\n */\n function (control) {\n control.setMap(this);\n }.bind(_this));\n _this.controls.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(_this));\n _this.controls.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(_this));\n _this.interactions.forEach(\n /**\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction.\n * @this {PluggableMap}\n */\n function (interaction) {\n interaction.setMap(this);\n }.bind(_this));\n _this.interactions.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(_this));\n _this.interactions.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(_this));\n _this.overlays_.forEach(_this.addOverlayInternal_.bind(_this));\n _this.overlays_.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n this.addOverlayInternal_(/** @type {import(\"./Overlay.js\").default} */ (event.element));\n }.bind(_this));\n _this.overlays_.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n var overlay = /** @type {import(\"./Overlay.js\").default} */ (event.element);\n var id = overlay.getId();\n if (id !== undefined) {\n delete this.overlayIdIndex_[id.toString()];\n }\n event.element.setMap(null);\n }.bind(_this));\n return _this;\n }\n /**\n * @abstract\n * @return {import(\"./renderer/Map.js\").default} The map renderer\n */\n PluggableMap.prototype.createRenderer = function () {\n throw new Error('Use a map type that has a createRenderer method');\n };\n /**\n * Add the given control to the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @api\n */\n PluggableMap.prototype.addControl = function (control) {\n this.getControls().push(control);\n };\n /**\n * Add the given interaction to the map. If you want to add an interaction\n * at another point of the collection use `getInteraction()` and the methods\n * available on {@link module:ol/Collection~Collection}. This can be used to\n * stop the event propagation from the handleEvent function. The interactions\n * get to handle the events in the reverse order of this collection.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to add.\n * @api\n */\n PluggableMap.prototype.addInteraction = function (interaction) {\n this.getInteractions().push(interaction);\n };\n /**\n * Adds the given layer to the top of this map. If you want to add a layer\n * elsewhere in the stack, use `getLayers()` and the methods available on\n * {@link module:ol/Collection~Collection}.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @api\n */\n PluggableMap.prototype.addLayer = function (layer) {\n var layers = this.getLayerGroup().getLayers();\n layers.push(layer);\n };\n /**\n * Add the given overlay to the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @api\n */\n PluggableMap.prototype.addOverlay = function (overlay) {\n this.getOverlays().push(overlay);\n };\n /**\n * This deals with map's overlay collection changes.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @private\n */\n PluggableMap.prototype.addOverlayInternal_ = function (overlay) {\n var id = overlay.getId();\n if (id !== undefined) {\n this.overlayIdIndex_[id.toString()] = overlay;\n }\n overlay.setMap(this);\n };\n /**\n *\n * @inheritDoc\n */\n PluggableMap.prototype.disposeInternal = function () {\n this.mapBrowserEventHandler_.dispose();\n this.viewport_.removeEventListener(EventType.CONTEXTMENU, this.boundHandleBrowserEvent_);\n this.viewport_.removeEventListener(EventType.WHEEL, this.boundHandleBrowserEvent_);\n if (this.handleResize_ !== undefined) {\n removeEventListener(EventType.RESIZE, this.handleResize_, false);\n this.handleResize_ = undefined;\n }\n this.setTarget(null);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Detect features that intersect a pixel on the viewport, and execute a\n * callback with each intersecting feature. Layers included in the detection can\n * be configured through the `layerFilter` option in `opt_options`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(this: S, import(\"./Feature.js\").FeatureLike,\n * import(\"./layer/Layer.js\").default): T} callback Feature callback. The callback will be\n * called with two arguments. The first argument is one\n * {@link module:ol/Feature feature} or\n * {@link module:ol/render/Feature render feature} at the pixel, the second is\n * the {@link module:ol/layer/Layer layer} of the feature and will be null for\n * unmanaged layers. To stop detection, callback functions can return a\n * truthy value.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template S,T\n * @api\n */\n PluggableMap.prototype.forEachFeatureAtPixel = function (pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n var coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n var hitTolerance = opt_options.hitTolerance !== undefined ?\n opt_options.hitTolerance * this.frameState_.pixelRatio : 0;\n var layerFilter = opt_options.layerFilter !== undefined ?\n opt_options.layerFilter : TRUE;\n var checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.forEachFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, callback, null, layerFilter, null);\n };\n /**\n * Get all features that intersect a pixel on the viewport.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {Array} The detected features or\n * an empty array if none were found.\n * @api\n */\n PluggableMap.prototype.getFeaturesAtPixel = function (pixel, opt_options) {\n var features = [];\n this.forEachFeatureAtPixel(pixel, function (feature) {\n features.push(feature);\n }, opt_options);\n return features;\n };\n /**\n * Detect layers that have a color value at a pixel on the viewport, and\n * execute a callback with each matching layer. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n *\n * Note: this may give false positives unless the map layers have had different `className`\n * properties assigned to them.\n *\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(this: S, import(\"./layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback\n * Layer callback. This callback will receive two arguments: first is the\n * {@link module:ol/layer/Layer layer}, second argument is an array representing\n * [R, G, B, A] pixel values (0 - 255) and will be `null` for layer types\n * that do not currently support this argument. To stop detection, callback\n * functions can return a truthy value.\n * @param {AtPixelOptions=} opt_options Configuration options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template S,T\n * @api\n */\n PluggableMap.prototype.forEachLayerAtPixel = function (pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n var options = opt_options || {};\n var hitTolerance = options.hitTolerance !== undefined ?\n options.hitTolerance * this.frameState_.pixelRatio : 0;\n var layerFilter = options.layerFilter || TRUE;\n return this.renderer_.forEachLayerAtPixel(pixel, this.frameState_, hitTolerance, callback, layerFilter);\n };\n /**\n * Detect if features intersect a pixel on the viewport. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {boolean} Is there a feature at the given pixel?\n * @api\n */\n PluggableMap.prototype.hasFeatureAtPixel = function (pixel, opt_options) {\n if (!this.frameState_) {\n return false;\n }\n var coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n var layerFilter = opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE;\n var hitTolerance = opt_options.hitTolerance !== undefined ?\n opt_options.hitTolerance * this.frameState_.pixelRatio : 0;\n var checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.hasFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, layerFilter, null);\n };\n /**\n * Returns the coordinate in user projection for a browser event.\n * @param {Event} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n PluggableMap.prototype.getEventCoordinate = function (event) {\n return this.getCoordinateFromPixel(this.getEventPixel(event));\n };\n /**\n * Returns the coordinate in view projection for a browser event.\n * @param {Event} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n */\n PluggableMap.prototype.getEventCoordinateInternal = function (event) {\n return this.getCoordinateFromPixelInternal(this.getEventPixel(event));\n };\n /**\n * Returns the map pixel position for a browser event relative to the viewport.\n * @param {Event|TouchEvent} event Event.\n * @return {import(\"./pixel.js\").Pixel} Pixel.\n * @api\n */\n PluggableMap.prototype.getEventPixel = function (event) {\n var viewportPosition = this.viewport_.getBoundingClientRect();\n var eventPosition = 'changedTouches' in event ?\n /** @type {TouchEvent} */ (event).changedTouches[0] :\n /** @type {MouseEvent} */ (event);\n return [\n eventPosition.clientX - viewportPosition.left,\n eventPosition.clientY - viewportPosition.top\n ];\n };\n /**\n * Get the target in which this map is rendered.\n * Note that this returns what is entered as an option or in setTarget:\n * if that was an element, it returns an element; if a string, it returns that.\n * @return {HTMLElement|string|undefined} The Element or id of the Element that the\n * map is rendered in.\n * @observable\n * @api\n */\n PluggableMap.prototype.getTarget = function () {\n return /** @type {HTMLElement|string|undefined} */ (this.get(MapProperty.TARGET));\n };\n /**\n * Get the DOM element into which this map is rendered. In contrast to\n * `getTarget` this method always return an `Element`, or `null` if the\n * map has no target.\n * @return {HTMLElement} The element that the map is rendered in.\n * @api\n */\n PluggableMap.prototype.getTargetElement = function () {\n var target = this.getTarget();\n if (target !== undefined) {\n return typeof target === 'string' ? document.getElementById(target) : target;\n }\n else {\n return null;\n }\n };\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * user projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n * @api\n */\n PluggableMap.prototype.getCoordinateFromPixel = function (pixel) {\n return toUserCoordinate(this.getCoordinateFromPixelInternal(pixel), this.getView().getProjection());\n };\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * map view projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n */\n PluggableMap.prototype.getCoordinateFromPixelInternal = function (pixel) {\n var frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n else {\n return applyTransform(frameState.pixelToCoordinateTransform, pixel.slice());\n }\n };\n /**\n * Get the map controls. Modifying this collection changes the controls\n * associated with the map.\n * @return {Collection} Controls.\n * @api\n */\n PluggableMap.prototype.getControls = function () {\n return this.controls;\n };\n /**\n * Get the map overlays. Modifying this collection changes the overlays\n * associated with the map.\n * @return {Collection} Overlays.\n * @api\n */\n PluggableMap.prototype.getOverlays = function () {\n return this.overlays_;\n };\n /**\n * Get an overlay by its identifier (the value returned by overlay.getId()).\n * Note that the index treats string and numeric identifiers as the same. So\n * `map.getOverlayById(2)` will return an overlay with id `'2'` or `2`.\n * @param {string|number} id Overlay identifier.\n * @return {import(\"./Overlay.js\").default} Overlay.\n * @api\n */\n PluggableMap.prototype.getOverlayById = function (id) {\n var overlay = this.overlayIdIndex_[id.toString()];\n return overlay !== undefined ? overlay : null;\n };\n /**\n * Get the map interactions. Modifying this collection changes the interactions\n * associated with the map.\n *\n * Interactions are used for e.g. pan, zoom and rotate.\n * @return {Collection} Interactions.\n * @api\n */\n PluggableMap.prototype.getInteractions = function () {\n return this.interactions;\n };\n /**\n * Get the layergroup associated with this map.\n * @return {LayerGroup} A layer group containing the layers in this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.getLayerGroup = function () {\n return (\n /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP)));\n };\n /**\n * Get the collection of layers associated with this map.\n * @return {!Collection} Layers.\n * @api\n */\n PluggableMap.prototype.getLayers = function () {\n var layers = this.getLayerGroup().getLayers();\n return layers;\n };\n /**\n * @return {boolean} Layers have sources that are still loading.\n */\n PluggableMap.prototype.getLoading = function () {\n var layerStatesArray = this.getLayerGroup().getLayerStatesArray();\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layer = layerStatesArray[i].layer;\n var source = /** @type {import(\"./layer/Layer.js\").default} */ (layer).getSource();\n if (source && source.loading) {\n return true;\n }\n }\n return false;\n };\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the user\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n * @api\n */\n PluggableMap.prototype.getPixelFromCoordinate = function (coordinate) {\n var viewCoordinate = fromUserCoordinate(coordinate, this.getView().getProjection());\n return this.getPixelFromCoordinateInternal(viewCoordinate);\n };\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the map view\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n */\n PluggableMap.prototype.getPixelFromCoordinateInternal = function (coordinate) {\n var frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n else {\n return applyTransform(frameState.coordinateToPixelTransform, coordinate.slice(0, 2));\n }\n };\n /**\n * Get the map renderer.\n * @return {import(\"./renderer/Map.js\").default} Renderer\n */\n PluggableMap.prototype.getRenderer = function () {\n return this.renderer_;\n };\n /**\n * Get the size of this map.\n * @return {import(\"./size.js\").Size|undefined} The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n PluggableMap.prototype.getSize = function () {\n return (\n /** @type {import(\"./size.js\").Size|undefined} */ (this.get(MapProperty.SIZE)));\n };\n /**\n * Get the view associated with this map. A view manages properties such as\n * center and resolution.\n * @return {View} The view that controls this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.getView = function () {\n return (\n /** @type {View} */ (this.get(MapProperty.VIEW)));\n };\n /**\n * Get the element that serves as the map viewport.\n * @return {HTMLElement} Viewport.\n * @api\n */\n PluggableMap.prototype.getViewport = function () {\n return this.viewport_;\n };\n /**\n * Get the element that serves as the container for overlays. Elements added to\n * this container will let mousedown and touchstart events through to the map,\n * so clicks and gestures on an overlay will trigger {@link module:ol/MapBrowserEvent~MapBrowserEvent}\n * events.\n * @return {!HTMLElement} The map's overlay container.\n */\n PluggableMap.prototype.getOverlayContainer = function () {\n return this.overlayContainer_;\n };\n /**\n * Get the element that serves as a container for overlays that don't allow\n * event propagation. Elements added to this container won't let mousedown and\n * touchstart events through to the map, so clicks and gestures on an overlay\n * don't trigger any {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n * @return {!HTMLElement} The map's overlay container that stops events.\n */\n PluggableMap.prototype.getOverlayContainerStopEvent = function () {\n return this.overlayContainerStopEvent_;\n };\n /**\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\n PluggableMap.prototype.getTilePriority = function (tile, tileSourceKey, tileCenter, tileResolution) {\n // Filter out tiles at higher zoom levels than the current zoom level, or that\n // are outside the visible extent.\n var frameState = this.frameState_;\n if (!frameState || !(tileSourceKey in frameState.wantedTiles)) {\n return DROP;\n }\n if (!frameState.wantedTiles[tileSourceKey][tile.getKey()]) {\n return DROP;\n }\n // Prioritize the highest zoom level tiles closest to the focus.\n // Tiles at higher zoom levels are prioritized using Math.log(tileResolution).\n // Within a zoom level, tiles are prioritized by the distance in pixels between\n // the center of the tile and the center of the viewport. The factor of 65536\n // means that the prioritization should behave as desired for tiles up to\n // 65536 * Math.log(2) = 45426 pixels from the focus.\n var center = frameState.viewState.center;\n var deltaX = tileCenter[0] - center[0];\n var deltaY = tileCenter[1] - center[1];\n return 65536 * Math.log(tileResolution) +\n Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution;\n };\n /**\n * @param {Event} browserEvent Browser event.\n * @param {string=} opt_type Type.\n */\n PluggableMap.prototype.handleBrowserEvent = function (browserEvent, opt_type) {\n var type = opt_type || browserEvent.type;\n var mapBrowserEvent = new MapBrowserEvent(type, this, browserEvent);\n this.handleMapBrowserEvent(mapBrowserEvent);\n };\n /**\n * @param {MapBrowserEvent} mapBrowserEvent The event to handle.\n */\n PluggableMap.prototype.handleMapBrowserEvent = function (mapBrowserEvent) {\n if (!this.frameState_) {\n // With no view defined, we cannot translate pixels into geographical\n // coordinates so interactions cannot be used.\n return;\n }\n var target = mapBrowserEvent.originalEvent.target;\n while (target instanceof HTMLElement) {\n if (target.parentElement === this.overlayContainerStopEvent_) {\n return;\n }\n target = target.parentElement;\n }\n mapBrowserEvent.frameState = this.frameState_;\n var interactionsArray = this.getInteractions().getArray();\n if (this.dispatchEvent(mapBrowserEvent) !== false) {\n for (var i = interactionsArray.length - 1; i >= 0; i--) {\n var interaction = interactionsArray[i];\n if (!interaction.getActive()) {\n continue;\n }\n var cont = interaction.handleEvent(mapBrowserEvent);\n if (!cont) {\n break;\n }\n }\n }\n };\n /**\n * @protected\n */\n PluggableMap.prototype.handlePostRender = function () {\n var frameState = this.frameState_;\n // Manage the tile queue\n // Image loads are expensive and a limited resource, so try to use them\n // efficiently:\n // * When the view is static we allow a large number of parallel tile loads\n // to complete the frame as quickly as possible.\n // * When animating or interacting, image loads can cause janks, so we reduce\n // the maximum number of loads per frame and limit the number of parallel\n // tile loads to remain reactive to view changes and to reduce the chance of\n // loading tiles that will quickly disappear from view.\n var tileQueue = this.tileQueue_;\n if (!tileQueue.isEmpty()) {\n var maxTotalLoading = this.maxTilesLoading_;\n var maxNewLoads = maxTotalLoading;\n if (frameState) {\n var hints = frameState.viewHints;\n if (hints[ViewHint.ANIMATING] || hints[ViewHint.INTERACTING]) {\n var lowOnFrameBudget = !IMAGE_DECODE && Date.now() - frameState.time > 8;\n maxTotalLoading = lowOnFrameBudget ? 0 : 8;\n maxNewLoads = lowOnFrameBudget ? 0 : 2;\n }\n }\n if (tileQueue.getTilesLoading() < maxTotalLoading) {\n tileQueue.reprioritize(); // FIXME only call if view has changed\n tileQueue.loadMoreTiles(maxTotalLoading, maxNewLoads);\n }\n }\n if (frameState && this.hasListener(RenderEventType.RENDERCOMPLETE) && !frameState.animate &&\n !this.tileQueue_.getTilesLoading() && !this.getLoading()) {\n this.renderer_.dispatchRenderEvent(RenderEventType.RENDERCOMPLETE, frameState);\n }\n var postRenderFunctions = this.postRenderFunctions_;\n for (var i = 0, ii = postRenderFunctions.length; i < ii; ++i) {\n postRenderFunctions[i](this, frameState);\n }\n postRenderFunctions.length = 0;\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleSizeChanged_ = function () {\n if (this.getView()) {\n this.getView().resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTargetChanged_ = function () {\n // target may be undefined, null, a string or an Element.\n // If it's a string we convert it to an Element before proceeding.\n // If it's not now an Element we remove the viewport from the DOM.\n // If it's an Element we append the viewport element to it.\n var targetElement;\n if (this.getTarget()) {\n targetElement = this.getTargetElement();\n }\n if (this.focusHandlerKeys_) {\n for (var i = 0, ii = this.focusHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.focusHandlerKeys_[i]);\n }\n this.focusHandlerKeys_ = null;\n }\n if (this.keyHandlerKeys_) {\n for (var i = 0, ii = this.keyHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.keyHandlerKeys_[i]);\n }\n this.keyHandlerKeys_ = null;\n }\n if (!targetElement) {\n if (this.renderer_) {\n clearTimeout(this.postRenderTimeoutHandle_);\n this.postRenderFunctions_.length = 0;\n this.renderer_.dispose();\n this.renderer_ = null;\n }\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n this.animationDelayKey_ = undefined;\n }\n removeNode(this.viewport_);\n if (this.handleResize_ !== undefined) {\n removeEventListener(EventType.RESIZE, this.handleResize_, false);\n this.handleResize_ = undefined;\n }\n }\n else {\n targetElement.appendChild(this.viewport_);\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n var hasFocus = true;\n if (targetElement.hasAttribute('tabindex')) {\n hasFocus = document.activeElement === targetElement;\n this.focusHandlerKeys_ = [\n listen(targetElement, EventType.FOCUS, setTouchAction.bind(this, this.viewport_, 'none')),\n listen(targetElement, EventType.BLUR, setTouchAction.bind(this, this.viewport_, 'auto'))\n ];\n }\n setTouchAction(this.viewport_, hasFocus ? 'none' : 'auto');\n var keyboardEventTarget = !this.keyboardEventTarget_ ?\n targetElement : this.keyboardEventTarget_;\n this.keyHandlerKeys_ = [\n listen(keyboardEventTarget, EventType.KEYDOWN, this.handleBrowserEvent, this),\n listen(keyboardEventTarget, EventType.KEYPRESS, this.handleBrowserEvent, this)\n ];\n if (!this.handleResize_) {\n this.handleResize_ = this.updateSize.bind(this);\n window.addEventListener(EventType.RESIZE, this.handleResize_, false);\n }\n }\n this.updateSize();\n // updateSize calls setSize, so no need to call this.render\n // ourselves here.\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTileChange_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewPropertyChanged_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewChanged_ = function () {\n if (this.viewPropertyListenerKey_) {\n unlistenByKey(this.viewPropertyListenerKey_);\n this.viewPropertyListenerKey_ = null;\n }\n if (this.viewChangeListenerKey_) {\n unlistenByKey(this.viewChangeListenerKey_);\n this.viewChangeListenerKey_ = null;\n }\n var view = this.getView();\n if (view) {\n this.viewport_.setAttribute('data-view', getUid(view));\n this.viewPropertyListenerKey_ = listen(view, ObjectEventType.PROPERTYCHANGE, this.handleViewPropertyChanged_, this);\n this.viewChangeListenerKey_ = listen(view, EventType.CHANGE, this.handleViewPropertyChanged_, this);\n view.resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleLayerGroupChanged_ = function () {\n if (this.layerGroupPropertyListenerKeys_) {\n this.layerGroupPropertyListenerKeys_.forEach(unlistenByKey);\n this.layerGroupPropertyListenerKeys_ = null;\n }\n var layerGroup = this.getLayerGroup();\n if (layerGroup) {\n this.layerGroupPropertyListenerKeys_ = [\n listen(layerGroup, ObjectEventType.PROPERTYCHANGE, this.render, this),\n listen(layerGroup, EventType.CHANGE, this.render, this)\n ];\n }\n this.render();\n };\n /**\n * @return {boolean} Is rendered.\n */\n PluggableMap.prototype.isRendered = function () {\n return !!this.frameState_;\n };\n /**\n * Requests an immediate render in a synchronous manner.\n * @api\n */\n PluggableMap.prototype.renderSync = function () {\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n }\n this.animationDelay_();\n };\n /**\n * Redraws all text after new fonts have loaded\n */\n PluggableMap.prototype.redrawText = function () {\n var layerStates = this.getLayerGroup().getLayerStatesArray();\n for (var i = 0, ii = layerStates.length; i < ii; ++i) {\n var layer = layerStates[i].layer;\n if (layer.hasRenderer()) {\n layer.getRenderer().handleFontsChanged();\n }\n }\n };\n /**\n * Request a map rendering (at the next animation frame).\n * @api\n */\n PluggableMap.prototype.render = function () {\n if (this.renderer_ && this.animationDelayKey_ === undefined) {\n this.animationDelayKey_ = requestAnimationFrame(this.animationDelay_);\n }\n };\n /**\n * Remove the given control from the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @return {import(\"./control/Control.js\").default|undefined} The removed control (or undefined\n * if the control was not found).\n * @api\n */\n PluggableMap.prototype.removeControl = function (control) {\n return this.getControls().remove(control);\n };\n /**\n * Remove the given interaction from the map.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to remove.\n * @return {import(\"./interaction/Interaction.js\").default|undefined} The removed interaction (or\n * undefined if the interaction was not found).\n * @api\n */\n PluggableMap.prototype.removeInteraction = function (interaction) {\n return this.getInteractions().remove(interaction);\n };\n /**\n * Removes the given layer from the map.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @return {import(\"./layer/Base.js\").default|undefined} The removed layer (or undefined if the\n * layer was not found).\n * @api\n */\n PluggableMap.prototype.removeLayer = function (layer) {\n var layers = this.getLayerGroup().getLayers();\n return layers.remove(layer);\n };\n /**\n * Remove the given overlay from the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @return {import(\"./Overlay.js\").default|undefined} The removed overlay (or undefined\n * if the overlay was not found).\n * @api\n */\n PluggableMap.prototype.removeOverlay = function (overlay) {\n return this.getOverlays().remove(overlay);\n };\n /**\n * @param {number} time Time.\n * @private\n */\n PluggableMap.prototype.renderFrame_ = function (time) {\n var size = this.getSize();\n var view = this.getView();\n var previousFrameState = this.frameState_;\n /** @type {?FrameState} */\n var frameState = null;\n if (size !== undefined && hasArea(size) && view && view.isDef()) {\n var viewHints = view.getHints(this.frameState_ ? this.frameState_.viewHints : undefined);\n var viewState = view.getState();\n frameState = {\n animate: false,\n coordinateToPixelTransform: this.coordinateToPixelTransform_,\n declutterItems: previousFrameState ? previousFrameState.declutterItems : [],\n extent: getForViewAndSize(viewState.center, viewState.resolution, viewState.rotation, size),\n index: this.frameIndex_++,\n layerIndex: 0,\n layerStatesArray: this.getLayerGroup().getLayerStatesArray(),\n pixelRatio: this.pixelRatio_,\n pixelToCoordinateTransform: this.pixelToCoordinateTransform_,\n postRenderFunctions: [],\n size: size,\n tileQueue: this.tileQueue_,\n time: time,\n usedTiles: {},\n viewState: viewState,\n viewHints: viewHints,\n wantedTiles: {}\n };\n }\n this.frameState_ = frameState;\n this.renderer_.renderFrame(frameState);\n if (frameState) {\n if (frameState.animate) {\n this.render();\n }\n Array.prototype.push.apply(this.postRenderFunctions_, frameState.postRenderFunctions);\n if (previousFrameState) {\n var moveStart = !this.previousExtent_ ||\n (!isEmpty(this.previousExtent_) &&\n !equals(frameState.extent, this.previousExtent_));\n if (moveStart) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVESTART, this, previousFrameState));\n this.previousExtent_ = createOrUpdateEmpty(this.previousExtent_);\n }\n }\n var idle = this.previousExtent_ &&\n !frameState.viewHints[ViewHint.ANIMATING] &&\n !frameState.viewHints[ViewHint.INTERACTING] &&\n !equals(frameState.extent, this.previousExtent_);\n if (idle) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVEEND, this, frameState));\n clone(frameState.extent, this.previousExtent_);\n }\n }\n this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState));\n this.postRenderTimeoutHandle_ = setTimeout(this.handlePostRender.bind(this), 0);\n };\n /**\n * Sets the layergroup of this map.\n * @param {LayerGroup} layerGroup A layer group containing the layers in this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.setLayerGroup = function (layerGroup) {\n this.set(MapProperty.LAYERGROUP, layerGroup);\n };\n /**\n * Set the size of this map.\n * @param {import(\"./size.js\").Size|undefined} size The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n PluggableMap.prototype.setSize = function (size) {\n this.set(MapProperty.SIZE, size);\n };\n /**\n * Set the target element to render this map into.\n * @param {HTMLElement|string|undefined} target The Element or id of the Element\n * that the map is rendered in.\n * @observable\n * @api\n */\n PluggableMap.prototype.setTarget = function (target) {\n this.set(MapProperty.TARGET, target);\n };\n /**\n * Set the view for this map.\n * @param {View} view The view that controls this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.setView = function (view) {\n this.set(MapProperty.VIEW, view);\n };\n /**\n * Force a recalculation of the map viewport size. This should be called when\n * third-party code changes the size of the map viewport.\n * @api\n */\n PluggableMap.prototype.updateSize = function () {\n var targetElement = this.getTargetElement();\n if (!targetElement) {\n this.setSize(undefined);\n }\n else {\n var computedStyle = getComputedStyle(targetElement);\n this.setSize([\n targetElement.offsetWidth -\n parseFloat(computedStyle['borderLeftWidth']) -\n parseFloat(computedStyle['paddingLeft']) -\n parseFloat(computedStyle['paddingRight']) -\n parseFloat(computedStyle['borderRightWidth']),\n targetElement.offsetHeight -\n parseFloat(computedStyle['borderTopWidth']) -\n parseFloat(computedStyle['paddingTop']) -\n parseFloat(computedStyle['paddingBottom']) -\n parseFloat(computedStyle['borderBottomWidth'])\n ]);\n }\n };\n return PluggableMap;\n}(BaseObject));\n/**\n * @param {MapOptions} options Map options.\n * @return {MapOptionsInternal} Internal map options.\n */\nfunction createOptionsInternal(options) {\n /**\n * @type {HTMLElement|Document}\n */\n var keyboardEventTarget = null;\n if (options.keyboardEventTarget !== undefined) {\n keyboardEventTarget = typeof options.keyboardEventTarget === 'string' ?\n document.getElementById(options.keyboardEventTarget) :\n options.keyboardEventTarget;\n }\n /**\n * @type {Object}\n */\n var values = {};\n var layerGroup = options.layers && typeof /** @type {?} */ (options.layers).getLayers === 'function' ?\n /** @type {LayerGroup} */ (options.layers) : new LayerGroup({ layers: /** @type {Collection} */ (options.layers) });\n values[MapProperty.LAYERGROUP] = layerGroup;\n values[MapProperty.TARGET] = options.target;\n values[MapProperty.VIEW] = options.view !== undefined ?\n options.view : new View();\n var controls;\n if (options.controls !== undefined) {\n if (Array.isArray(options.controls)) {\n controls = new Collection(options.controls.slice());\n }\n else {\n assert(typeof /** @type {?} */ (options.controls).getArray === 'function', 47); // Expected `controls` to be an array or an `import(\"./Collection.js\").Collection`\n controls = /** @type {Collection} */ (options.controls);\n }\n }\n var interactions;\n if (options.interactions !== undefined) {\n if (Array.isArray(options.interactions)) {\n interactions = new Collection(options.interactions.slice());\n }\n else {\n assert(typeof /** @type {?} */ (options.interactions).getArray === 'function', 48); // Expected `interactions` to be an array or an `import(\"./Collection.js\").Collection`\n interactions = /** @type {Collection} */ (options.interactions);\n }\n }\n var overlays;\n if (options.overlays !== undefined) {\n if (Array.isArray(options.overlays)) {\n overlays = new Collection(options.overlays.slice());\n }\n else {\n assert(typeof /** @type {?} */ (options.overlays).getArray === 'function', 49); // Expected `overlays` to be an array or an `import(\"./Collection.js\").Collection`\n overlays = options.overlays;\n }\n }\n else {\n overlays = new Collection();\n }\n return {\n controls: controls,\n interactions: interactions,\n keyboardEventTarget: keyboardEventTarget,\n overlays: overlays,\n values: values\n };\n}\nexport default PluggableMap;\n//# sourceMappingURL=PluggableMap.js.map","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","/**\n * @module ol/css\n */\n/**\n * @typedef {Object} FontParameters\n * @property {Array} families\n * @property {string} style\n * @property {string} weight\n */\n/**\n * The CSS class for hidden feature.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_HIDDEN = 'ol-hidden';\n/**\n * The CSS class that we'll give the DOM elements to have them selectable.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_SELECTABLE = 'ol-selectable';\n/**\n * The CSS class that we'll give the DOM elements to have them unselectable.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_UNSELECTABLE = 'ol-unselectable';\n/**\n * The CSS class for unsupported feature.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_UNSUPPORTED = 'ol-unsupported';\n/**\n * The CSS class for controls.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_CONTROL = 'ol-control';\n/**\n * The CSS class that we'll give the DOM elements that are collapsed, i.e.\n * to those elements which usually can be expanded.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_COLLAPSED = 'ol-collapsed';\n/**\n * Get the list of font families from a font spec. Note that this doesn't work\n * for font families that have commas in them.\n * @param {string} The CSS font property.\n * @return {FontParameters} The font families (or null if the input spec is invalid).\n */\nexport var getFontParameters = (function () {\n /**\n * @type {CSSStyleDeclaration}\n */\n var style;\n /**\n * @type {Object}\n */\n var cache = {};\n return function (font) {\n if (!style) {\n style = document.createElement('div').style;\n }\n if (!(font in cache)) {\n style.font = font;\n var family = style.fontFamily;\n var fontWeight = style.fontWeight;\n var fontStyle = style.fontStyle;\n style.font = '';\n if (!family) {\n return null;\n }\n var families = family.split(/,\\s?/);\n cache[font] = {\n families: families,\n weight: fontWeight,\n style: fontStyle\n };\n }\n return cache[font];\n };\n})();\n//# sourceMappingURL=css.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Layer\n */\nimport { listen, unlistenByKey } from '../events.js';\nimport EventType from '../events/EventType.js';\nimport { getChangeEventType } from '../Object.js';\nimport BaseLayer from './Base.js';\nimport LayerProperty from './Property.js';\nimport { assign } from '../obj.js';\nimport RenderEventType from '../render/EventType.js';\nimport SourceState from '../source/State.js';\n/**\n * @typedef {function(import(\"../PluggableMap.js\").FrameState):HTMLElement} RenderFunction\n */\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {import(\"../source/Source.js\").default} [source] Source for this layer. If not provided to the constructor,\n * the source can be set by calling {@link module:ol/layer/Layer#setSource layer.setSource(source)} after\n * construction.\n * @property {import(\"../PluggableMap.js\").default} [map] Map.\n * @property {RenderFunction} [render] Render function. Takes the frame state as input and is expected to return an\n * HTML element. Will overwrite the default rendering for the layer.\n */\n/**\n * @typedef {Object} State\n * @property {import(\"./Base.js\").default} layer\n * @property {number} opacity Opacity, the value is rounded to two digits to appear after the decimal point.\n * @property {SourceState} sourceState\n * @property {boolean} visible\n * @property {boolean} managed\n * @property {import(\"../extent.js\").Extent} [extent]\n * @property {number} zIndex\n * @property {number} maxResolution\n * @property {number} minResolution\n * @property {number} minZoom\n * @property {number} maxZoom\n */\n/**\n * @classdesc\n * Base class from which all layer types are derived. This should only be instantiated\n * in the case where a custom layer is be added to the map with a custom `render` function.\n * Such a function can be specified in the `options` object, and is expected to return an HTML element.\n *\n * A visual representation of raster or vector map data.\n * Layers group together those properties that pertain to how the data is to be\n * displayed, irrespective of the source of that data.\n *\n * Layers are usually added to a map with {@link module:ol/Map#addLayer}. Components\n * like {@link module:ol/interaction/Select~Select} use unmanaged layers\n * internally. These unmanaged layers are associated with the map using\n * {@link module:ol/layer/Layer~Layer#setMap} instead.\n *\n * A generic `change` event is fired when the state of the source changes.\n *\n * Please note that for performance reasons several layers might get rendered to\n * the same HTML element, which will cause {@link module:ol/Map~Map#forEachLayerAtPixel} to\n * give false positives. To avoid this, apply different `className` properties to the\n * layers at creation time.\n *\n * @fires import(\"../render/Event.js\").RenderEvent#prerender\n * @fires import(\"../render/Event.js\").RenderEvent#postrender\n *\n * @template {import(\"../source/Source.js\").default} SourceType\n * @api\n */\nvar Layer = /** @class */ (function (_super) {\n __extends(Layer, _super);\n /**\n * @param {Options} options Layer options.\n */\n function Layer(options) {\n var _this = this;\n var baseOptions = assign({}, options);\n delete baseOptions.source;\n _this = _super.call(this, baseOptions) || this;\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n _this.mapPrecomposeKey_ = null;\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n _this.mapRenderKey_ = null;\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n _this.sourceChangeKey_ = null;\n /**\n * @private\n * @type {import(\"../renderer/Layer.js\").default}\n */\n _this.renderer_ = null;\n // Overwrite default render method with a custom one\n if (options.render) {\n _this.render = options.render;\n }\n if (options.map) {\n _this.setMap(options.map);\n }\n _this.addEventListener(getChangeEventType(LayerProperty.SOURCE), _this.handleSourcePropertyChange_);\n var source = options.source ? /** @type {SourceType} */ (options.source) : null;\n _this.setSource(source);\n return _this;\n }\n /**\n * @inheritDoc\n */\n Layer.prototype.getLayersArray = function (opt_array) {\n var array = opt_array ? opt_array : [];\n array.push(this);\n return array;\n };\n /**\n * @inheritDoc\n */\n Layer.prototype.getLayerStatesArray = function (opt_states) {\n var states = opt_states ? opt_states : [];\n states.push(this.getLayerState());\n return states;\n };\n /**\n * Get the layer source.\n * @return {SourceType} The layer source (or `null` if not yet set).\n * @observable\n * @api\n */\n Layer.prototype.getSource = function () {\n return /** @type {SourceType} */ (this.get(LayerProperty.SOURCE)) || null;\n };\n /**\n * @inheritDoc\n */\n Layer.prototype.getSourceState = function () {\n var source = this.getSource();\n return !source ? SourceState.UNDEFINED : source.getState();\n };\n /**\n * @private\n */\n Layer.prototype.handleSourceChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n Layer.prototype.handleSourcePropertyChange_ = function () {\n if (this.sourceChangeKey_) {\n unlistenByKey(this.sourceChangeKey_);\n this.sourceChangeKey_ = null;\n }\n var source = this.getSource();\n if (source) {\n this.sourceChangeKey_ = listen(source, EventType.CHANGE, this.handleSourceChange_, this);\n }\n this.changed();\n };\n /**\n * @param {import(\"../pixel\").Pixel} pixel Pixel.\n * @return {Promise>} Promise that resolves with\n * an array of features.\n */\n Layer.prototype.getFeatures = function (pixel) {\n return this.renderer_.getFeatures(pixel);\n };\n /**\n * In charge to manage the rendering of the layer. One layer type is\n * bounded with one layer renderer.\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @param {HTMLElement} target Target which the renderer may (but need not) use\n * for rendering its content.\n * @return {HTMLElement} The rendered element.\n */\n Layer.prototype.render = function (frameState, target) {\n var layerRenderer = this.getRenderer();\n if (layerRenderer.prepareFrame(frameState)) {\n return layerRenderer.renderFrame(frameState, target);\n }\n };\n /**\n * Sets the layer to be rendered on top of other layers on a map. The map will\n * not manage this layer in its layers collection, and the callback in\n * {@link module:ol/Map#forEachLayerAtPixel} will receive `null` as layer. This\n * is useful for temporary layers. To remove an unmanaged layer from the map,\n * use `#setMap(null)`.\n *\n * To add the layer to a map and have it managed by the map, use\n * {@link module:ol/Map#addLayer} instead.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n Layer.prototype.setMap = function (map) {\n if (this.mapPrecomposeKey_) {\n unlistenByKey(this.mapPrecomposeKey_);\n this.mapPrecomposeKey_ = null;\n }\n if (!map) {\n this.changed();\n }\n if (this.mapRenderKey_) {\n unlistenByKey(this.mapRenderKey_);\n this.mapRenderKey_ = null;\n }\n if (map) {\n this.mapPrecomposeKey_ = listen(map, RenderEventType.PRECOMPOSE, function (evt) {\n var renderEvent = /** @type {import(\"../render/Event.js\").default} */ (evt);\n renderEvent.frameState.layerStatesArray.push(this.getLayerState(false));\n }, this);\n this.mapRenderKey_ = listen(this, EventType.CHANGE, map.render, map);\n this.changed();\n }\n };\n /**\n * Set the layer source.\n * @param {SourceType} source The layer source.\n * @observable\n * @api\n */\n Layer.prototype.setSource = function (source) {\n this.set(LayerProperty.SOURCE, source);\n };\n /**\n * Get the renderer for this layer.\n * @return {import(\"../renderer/Layer.js\").default} The layer renderer.\n */\n Layer.prototype.getRenderer = function () {\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n return this.renderer_;\n };\n /**\n * @return {boolean} The layer has a renderer.\n */\n Layer.prototype.hasRenderer = function () {\n return !!this.renderer_;\n };\n /**\n * Create a renderer for this layer.\n * @return {import(\"../renderer/Layer.js\").default} A layer renderer.\n * @protected\n */\n Layer.prototype.createRenderer = function () {\n return null;\n };\n /**\n * @inheritDoc\n */\n Layer.prototype.disposeInternal = function () {\n this.setSource(null);\n _super.prototype.disposeInternal.call(this);\n };\n return Layer;\n}(BaseLayer));\n/**\n * Return `true` if the layer is visible and if the provided view state\n * has resolution and zoom levels that are in range of the layer's min/max.\n * @param {State} layerState Layer state.\n * @param {import(\"../View.js\").State} viewState View state.\n * @return {boolean} The layer is visible at the given view state.\n */\nexport function inView(layerState, viewState) {\n if (!layerState.visible) {\n return false;\n }\n var resolution = viewState.resolution;\n if (resolution < layerState.minResolution || resolution >= layerState.maxResolution) {\n return false;\n }\n var zoom = viewState.zoom;\n return zoom > layerState.minZoom && zoom <= layerState.maxZoom;\n}\nexport default Layer;\n//# sourceMappingURL=Layer.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Attribution\n */\nimport { equals } from '../array.js';\nimport Control from './Control.js';\nimport { CLASS_CONTROL, CLASS_UNSELECTABLE, CLASS_COLLAPSED } from '../css.js';\nimport { removeChildren, replaceNode } from '../dom.js';\nimport EventType from '../events/EventType.js';\nimport { inView } from '../layer/Layer.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-attribution'] CSS class name.\n * @property {HTMLElement|string} [target] Specify a target if you\n * want the control to be rendered outside of the map's\n * viewport.\n * @property {boolean} [collapsible] Specify if attributions can\n * be collapsed. If not specified, sources control this behavior with their\n * `attributionsCollapsible` setting.\n * @property {boolean} [collapsed=true] Specify if attributions should\n * be collapsed at startup.\n * @property {string} [tipLabel='Attributions'] Text label to use for the button tip.\n * @property {string} [label='i'] Text label to use for the\n * collapsed attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [collapseLabel='»'] Text label to use\n * for the expanded attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {function(import(\"../MapEvent.js\").default)} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n */\n/**\n * @classdesc\n * Control to show all the attributions associated with the layer sources\n * in the map. This control is one of the default controls included in maps.\n * By default it will show in the bottom right portion of the map, but this can\n * be changed by using a css selector for `.ol-attribution`.\n *\n * @api\n */\nvar Attribution = /** @class */ (function (_super) {\n __extends(Attribution, _super);\n /**\n * @param {Options=} opt_options Attribution options.\n */\n function Attribution(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render || render,\n target: options.target\n }) || this;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.ulElement_ = document.createElement('ul');\n /**\n * @private\n * @type {boolean}\n */\n _this.collapsed_ = options.collapsed !== undefined ? options.collapsed : true;\n /**\n * @private\n * @type {boolean}\n */\n _this.overrideCollapsible_ = options.collapsible !== undefined;\n /**\n * @private\n * @type {boolean}\n */\n _this.collapsible_ = options.collapsible !== undefined ?\n options.collapsible : true;\n if (!_this.collapsible_) {\n _this.collapsed_ = false;\n }\n var className = options.className !== undefined ? options.className : 'ol-attribution';\n var tipLabel = options.tipLabel !== undefined ? options.tipLabel : 'Attributions';\n var collapseLabel = options.collapseLabel !== undefined ? options.collapseLabel : '\\u00BB';\n if (typeof collapseLabel === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.collapseLabel_ = document.createElement('span');\n _this.collapseLabel_.textContent = collapseLabel;\n }\n else {\n _this.collapseLabel_ = collapseLabel;\n }\n var label = options.label !== undefined ? options.label : 'i';\n if (typeof label === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.label_ = document.createElement('span');\n _this.label_.textContent = label;\n }\n else {\n _this.label_ = label;\n }\n var activeLabel = (_this.collapsible_ && !_this.collapsed_) ?\n _this.collapseLabel_ : _this.label_;\n var button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(activeLabel);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL +\n (_this.collapsed_ && _this.collapsible_ ? ' ' + CLASS_COLLAPSED : '') +\n (_this.collapsible_ ? '' : ' ol-uncollapsible');\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(_this.ulElement_);\n element.appendChild(button);\n /**\n * A list of currently rendered resolutions.\n * @type {Array}\n * @private\n */\n _this.renderedAttributions_ = [];\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = true;\n return _this;\n }\n /**\n * Collect a list of visible attributions and set the collapsible state.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @return {Array} Attributions.\n * @private\n */\n Attribution.prototype.collectSourceAttributions_ = function (frameState) {\n /**\n * Used to determine if an attribution already exists.\n * @type {!Object}\n */\n var lookup = {};\n /**\n * A list of visible attributions.\n * @type {Array}\n */\n var visibleAttributions = [];\n var layerStatesArray = frameState.layerStatesArray;\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layerState = layerStatesArray[i];\n if (!inView(layerState, frameState.viewState)) {\n continue;\n }\n var source = /** @type {import(\"../layer/Layer.js\").default} */ (layerState.layer).getSource();\n if (!source) {\n continue;\n }\n var attributionGetter = source.getAttributions();\n if (!attributionGetter) {\n continue;\n }\n var attributions = attributionGetter(frameState);\n if (!attributions) {\n continue;\n }\n if (!this.overrideCollapsible_ && source.getAttributionsCollapsible() === false) {\n this.setCollapsible(false);\n }\n if (Array.isArray(attributions)) {\n for (var j = 0, jj = attributions.length; j < jj; ++j) {\n if (!(attributions[j] in lookup)) {\n visibleAttributions.push(attributions[j]);\n lookup[attributions[j]] = true;\n }\n }\n }\n else {\n if (!(attributions in lookup)) {\n visibleAttributions.push(attributions);\n lookup[attributions] = true;\n }\n }\n }\n return visibleAttributions;\n };\n /**\n * @private\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n Attribution.prototype.updateElement_ = function (frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n var attributions = this.collectSourceAttributions_(frameState);\n var visible = attributions.length > 0;\n if (this.renderedVisible_ != visible) {\n this.element.style.display = visible ? '' : 'none';\n this.renderedVisible_ = visible;\n }\n if (equals(attributions, this.renderedAttributions_)) {\n return;\n }\n removeChildren(this.ulElement_);\n // append the attributions\n for (var i = 0, ii = attributions.length; i < ii; ++i) {\n var element = document.createElement('li');\n element.innerHTML = attributions[i];\n this.ulElement_.appendChild(element);\n }\n this.renderedAttributions_ = attributions;\n };\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Attribution.prototype.handleClick_ = function (event) {\n event.preventDefault();\n this.handleToggle_();\n };\n /**\n * @private\n */\n Attribution.prototype.handleToggle_ = function () {\n this.element.classList.toggle(CLASS_COLLAPSED);\n if (this.collapsed_) {\n replaceNode(this.collapseLabel_, this.label_);\n }\n else {\n replaceNode(this.label_, this.collapseLabel_);\n }\n this.collapsed_ = !this.collapsed_;\n };\n /**\n * Return `true` if the attribution is collapsible, `false` otherwise.\n * @return {boolean} True if the widget is collapsible.\n * @api\n */\n Attribution.prototype.getCollapsible = function () {\n return this.collapsible_;\n };\n /**\n * Set whether the attribution should be collapsible.\n * @param {boolean} collapsible True if the widget is collapsible.\n * @api\n */\n Attribution.prototype.setCollapsible = function (collapsible) {\n if (this.collapsible_ === collapsible) {\n return;\n }\n this.collapsible_ = collapsible;\n this.element.classList.toggle('ol-uncollapsible');\n if (!collapsible && this.collapsed_) {\n this.handleToggle_();\n }\n };\n /**\n * Collapse or expand the attribution according to the passed parameter. Will\n * not do anything if the attribution isn't collapsible or if the current\n * collapsed state is already the one requested.\n * @param {boolean} collapsed True if the widget is collapsed.\n * @api\n */\n Attribution.prototype.setCollapsed = function (collapsed) {\n if (!this.collapsible_ || this.collapsed_ === collapsed) {\n return;\n }\n this.handleToggle_();\n };\n /**\n * Return `true` when the attribution is currently collapsed or `false`\n * otherwise.\n * @return {boolean} True if the widget is collapsed.\n * @api\n */\n Attribution.prototype.getCollapsed = function () {\n return this.collapsed_;\n };\n return Attribution;\n}(Control));\n/**\n * Update the attribution element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @this {Attribution}\n * @api\n */\nexport function render(mapEvent) {\n this.updateElement_(mapEvent.frameState);\n}\nexport default Attribution;\n//# sourceMappingURL=Attribution.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Rotate\n */\nimport Control from './Control.js';\nimport { CLASS_CONTROL, CLASS_HIDDEN, CLASS_UNSELECTABLE } from '../css.js';\nimport { easeOut } from '../easing.js';\nimport EventType from '../events/EventType.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-rotate'] CSS class name.\n * @property {string|HTMLElement} [label='⇧'] Text label to use for the rotate button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Reset rotation'] Text label to use for the rotate tip.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {boolean} [autoHide=true] Hide the control when rotation is 0.\n * @property {function(import(\"../MapEvent.js\").default)} [render] Function called when the control should\n * be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {function()} [resetNorth] Function called when the control is clicked.\n * This will override the default `resetNorth`.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A button control to reset rotation to 0.\n * To style this control use css selector `.ol-rotate`. A `.ol-hidden` css\n * selector is added to the button when the rotation is 0.\n *\n * @api\n */\nvar Rotate = /** @class */ (function (_super) {\n __extends(Rotate, _super);\n /**\n * @param {Options=} opt_options Rotate options.\n */\n function Rotate(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render || render,\n target: options.target\n }) || this;\n var className = options.className !== undefined ? options.className : 'ol-rotate';\n var label = options.label !== undefined ? options.label : '\\u21E7';\n /**\n * @type {HTMLElement}\n * @private\n */\n _this.label_ = null;\n if (typeof label === 'string') {\n _this.label_ = document.createElement('span');\n _this.label_.className = 'ol-compass';\n _this.label_.textContent = label;\n }\n else {\n _this.label_ = label;\n _this.label_.classList.add('ol-compass');\n }\n var tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';\n var button = document.createElement('button');\n button.className = className + '-reset';\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(_this.label_);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(button);\n _this.callResetNorth_ = options.resetNorth ? options.resetNorth : undefined;\n /**\n * @type {number}\n * @private\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n /**\n * @type {boolean}\n * @private\n */\n _this.autoHide_ = options.autoHide !== undefined ? options.autoHide : true;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.rotation_ = undefined;\n if (_this.autoHide_) {\n _this.element.classList.add(CLASS_HIDDEN);\n }\n return _this;\n }\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Rotate.prototype.handleClick_ = function (event) {\n event.preventDefault();\n if (this.callResetNorth_ !== undefined) {\n this.callResetNorth_();\n }\n else {\n this.resetNorth_();\n }\n };\n /**\n * @private\n */\n Rotate.prototype.resetNorth_ = function () {\n var map = this.getMap();\n var view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n if (view.getRotation() !== undefined) {\n if (this.duration_ > 0) {\n view.animate({\n rotation: 0,\n duration: this.duration_,\n easing: easeOut\n });\n }\n else {\n view.setRotation(0);\n }\n }\n };\n return Rotate;\n}(Control));\n/**\n * Update the rotate control element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @this {Rotate}\n * @api\n */\nexport function render(mapEvent) {\n var frameState = mapEvent.frameState;\n if (!frameState) {\n return;\n }\n var rotation = frameState.viewState.rotation;\n if (rotation != this.rotation_) {\n var transform = 'rotate(' + rotation + 'rad)';\n if (this.autoHide_) {\n var contains = this.element.classList.contains(CLASS_HIDDEN);\n if (!contains && rotation === 0) {\n this.element.classList.add(CLASS_HIDDEN);\n }\n else if (contains && rotation !== 0) {\n this.element.classList.remove(CLASS_HIDDEN);\n }\n }\n this.label_.style.transform = transform;\n }\n this.rotation_ = rotation;\n}\nexport default Rotate;\n//# sourceMappingURL=Rotate.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Zoom\n */\nimport EventType from '../events/EventType.js';\nimport Control from './Control.js';\nimport { CLASS_CONTROL, CLASS_UNSELECTABLE } from '../css.js';\nimport { easeOut } from '../easing.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {string} [className='ol-zoom'] CSS class name.\n * @property {string|HTMLElement} [zoomInLabel='+'] Text label to use for the zoom-in\n * button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [zoomOutLabel='-'] Text label to use for the zoom-out button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [zoomInTipLabel='Zoom in'] Text label to use for the button tip.\n * @property {string} [zoomOutTipLabel='Zoom out'] Text label to use for the button tip.\n * @property {number} [delta=1] The zoom delta applied on each click.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A control with 2 buttons, one for zoom in and one for zoom out.\n * This control is one of the default controls of a map. To style this control\n * use css selectors `.ol-zoom-in` and `.ol-zoom-out`.\n *\n * @api\n */\nvar Zoom = /** @class */ (function (_super) {\n __extends(Zoom, _super);\n /**\n * @param {Options=} opt_options Zoom options.\n */\n function Zoom(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n target: options.target\n }) || this;\n var className = options.className !== undefined ? options.className : 'ol-zoom';\n var delta = options.delta !== undefined ? options.delta : 1;\n var zoomInLabel = options.zoomInLabel !== undefined ? options.zoomInLabel : '+';\n var zoomOutLabel = options.zoomOutLabel !== undefined ? options.zoomOutLabel : '\\u2212';\n var zoomInTipLabel = options.zoomInTipLabel !== undefined ?\n options.zoomInTipLabel : 'Zoom in';\n var zoomOutTipLabel = options.zoomOutTipLabel !== undefined ?\n options.zoomOutTipLabel : 'Zoom out';\n var inElement = document.createElement('button');\n inElement.className = className + '-in';\n inElement.setAttribute('type', 'button');\n inElement.title = zoomInTipLabel;\n inElement.appendChild(typeof zoomInLabel === 'string' ? document.createTextNode(zoomInLabel) : zoomInLabel);\n inElement.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this, delta), false);\n var outElement = document.createElement('button');\n outElement.className = className + '-out';\n outElement.setAttribute('type', 'button');\n outElement.title = zoomOutTipLabel;\n outElement.appendChild(typeof zoomOutLabel === 'string' ? document.createTextNode(zoomOutLabel) : zoomOutLabel);\n outElement.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this, -delta), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(inElement);\n element.appendChild(outElement);\n /**\n * @type {number}\n * @private\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n /**\n * @param {number} delta Zoom delta.\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Zoom.prototype.handleClick_ = function (delta, event) {\n event.preventDefault();\n this.zoomByDelta_(delta);\n };\n /**\n * @param {number} delta Zoom delta.\n * @private\n */\n Zoom.prototype.zoomByDelta_ = function (delta) {\n var map = this.getMap();\n var view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n var currentZoom = view.getZoom();\n if (currentZoom !== undefined) {\n var newZoom = view.getConstrainedZoom(currentZoom + delta);\n if (this.duration_ > 0) {\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n zoom: newZoom,\n duration: this.duration_,\n easing: easeOut\n });\n }\n else {\n view.setZoom(newZoom);\n }\n }\n };\n return Zoom;\n}(Control));\nexport default Zoom;\n//# sourceMappingURL=Zoom.js.map","/**\n * @module ol/control\n */\nimport Collection from './Collection.js';\nimport Attribution from './control/Attribution.js';\nimport Rotate from './control/Rotate.js';\nimport Zoom from './control/Zoom.js';\nexport { default as Attribution } from './control/Attribution.js';\nexport { default as Control } from './control/Control.js';\nexport { default as FullScreen } from './control/FullScreen.js';\nexport { default as MousePosition } from './control/MousePosition.js';\nexport { default as OverviewMap } from './control/OverviewMap.js';\nexport { default as Rotate } from './control/Rotate.js';\nexport { default as ScaleLine } from './control/ScaleLine.js';\nexport { default as Zoom } from './control/Zoom.js';\nexport { default as ZoomSlider } from './control/ZoomSlider.js';\nexport { default as ZoomToExtent } from './control/ZoomToExtent.js';\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [attribution=true] Include\n * {@link module:ol/control/Attribution~Attribution}.\n * @property {import(\"./control/Attribution.js\").Options} [attributionOptions]\n * Options for {@link module:ol/control/Attribution~Attribution}.\n * @property {boolean} [rotate=true] Include\n * {@link module:ol/control/Rotate~Rotate}.\n * @property {import(\"./control/Rotate.js\").Options} [rotateOptions] Options\n * for {@link module:ol/control/Rotate~Rotate}.\n * @property {boolean} [zoom] Include {@link module:ol/control/Zoom~Zoom}.\n * @property {import(\"./control/Zoom.js\").Options} [zoomOptions] Options for\n * {@link module:ol/control/Zoom~Zoom}.\n * @api\n */\n/**\n * Set of controls included in maps by default. Unless configured otherwise,\n * this returns a collection containing an instance of each of the following\n * controls:\n * * {@link module:ol/control/Zoom~Zoom}\n * * {@link module:ol/control/Rotate~Rotate}\n * * {@link module:ol/control/Attribution~Attribution}\n *\n * @param {DefaultsOptions=} opt_options\n * Defaults options.\n * @return {Collection}\n * Controls.\n * @api\n */\nexport function defaults(opt_options) {\n var options = opt_options ? opt_options : {};\n var controls = new Collection();\n var zoomControl = options.zoom !== undefined ? options.zoom : true;\n if (zoomControl) {\n controls.push(new Zoom(options.zoomOptions));\n }\n var rotateControl = options.rotate !== undefined ? options.rotate : true;\n if (rotateControl) {\n controls.push(new Rotate(options.rotateOptions));\n }\n var attributionControl = options.attribution !== undefined ?\n options.attribution : true;\n if (attributionControl) {\n controls.push(new Attribution(options.attributionOptions));\n }\n return controls;\n}\n//# sourceMappingURL=control.js.map","/**\n * @module ol/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","/**\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 * `