{"version":3,"sources":["webpack:///./node_modules/ol/events/EventType.js","webpack:///./node_modules/ol/tilegrid/common.js","webpack:///./node_modules/ol/extent/Relationship.js","webpack:///./node_modules/uuid/dist/esm-browser/regex.js","webpack:///./node_modules/uuid/dist/esm-browser/validate.js","webpack:///./node_modules/ol/render/EventType.js","webpack:///./node_modules/ol/dom.js","webpack:///./node_modules/ol/extent.js","webpack:///./node_modules/ol/renderer/canvas/common.js","webpack:///./src/views/admin/jobs/Jobs.vue","webpack:///./src/views/admin/jobs/Jobs.vue?a473","webpack:///./node_modules/ol/events/Target.js","webpack:///./node_modules/ol/util.js","webpack:///./node_modules/ol/renderer/Layer.js","webpack:///./node_modules/ol/renderer/canvas/Layer.js","webpack:///./src/components/Pagination.vue","webpack:///./src/components/Pagination.vue?9d62","webpack:///./node_modules/ol/CollectionEventType.js","webpack:///./node_modules/@vueform/multiselect/themes/default.css?cd19","webpack:///./node_modules/ol/layer/Layer.js","webpack:///./node_modules/ol/geom/flat/simplify.js","webpack:///./node_modules/ol/events.js","webpack:///./node_modules/file-saver/dist/FileSaver.min.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/proj/Projection.js","webpack:///./node_modules/ol/proj/epsg3857.js","webpack:///./node_modules/ol/proj/epsg4326.js","webpack:///./node_modules/ol/proj/projections.js","webpack:///./node_modules/ol/proj/transforms.js","webpack:///./node_modules/ol/proj.js","webpack:///./node_modules/rbush/rbush.min.js","webpack:///./src/views/admin/sites/SiteMaintenance.vue?dcac","webpack:///./node_modules/ol/style/TextPlacement.js","webpack:///./node_modules/ol/Tile.js","webpack:///./node_modules/ol/ImageTile.js","webpack:///./node_modules/ol/reproj.js","webpack:///./node_modules/ol/reproj/common.js","webpack:///./node_modules/ol/reproj/Triangulation.js","webpack:///./node_modules/ol/reproj/Tile.js","webpack:///./node_modules/ol/structs/LRUCache.js","webpack:///./node_modules/ol/tilecoord.js","webpack:///./node_modules/ol/TileCache.js","webpack:///./node_modules/ol/source/TileEventType.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/tileurlfunction.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/render/Event.js","webpack:///./node_modules/ol/size.js","webpack:///./node_modules/ol/Observable.js","webpack:///./node_modules/ol/extent/Corner.js","webpack:///./node_modules/ol/obj.js","webpack:///./node_modules/ol/control/Control.js","webpack:///./src/views/admin/sites/Site.vue","webpack:///./src/views/admin/sites/SiteAttributes.vue","webpack:///./src/views/admin/sites/SiteAttributes.vue?0772","webpack:///./src/views/admin/sites/SiteNodes.vue","webpack:///./src/views/admin/sites/SiteNodes.vue?f133","webpack:///./src/components/SiteMap.vue","webpack:///./src/components/SiteMap.vue?dc5a","webpack:///./src/views/admin/sites/SiteStats.vue","webpack:///./src/views/admin/sites/SiteStats.vue?9e62","webpack:///./src/views/admin/sites/SiteFileManager.vue","webpack:///./src/views/admin/sites/SiteFileManager.vue?4efb","webpack:///./src/views/admin/sites/SiteNotes.vue","webpack:///./src/views/admin/sites/SiteNotes.vue?1043","webpack:///./src/views/admin/sites/SiteMaintenance.vue","webpack:///./src/views/admin/sites/SiteMaintenance.vue?c59d","webpack:///./src/views/admin/sites/Site.vue?4c1b","webpack:///./node_modules/ol/style/IconImageCache.js","webpack:///./node_modules/ol/layer/BaseVector.js","webpack:///./node_modules/ol/render/canvas/Instruction.js","webpack:///./node_modules/ol/render/VectorContext.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/render/canvas/TextBuilder.js","webpack:///./node_modules/ol/render/canvas/BuilderGroup.js","webpack:///./node_modules/ol/render/canvas/BuilderType.js","webpack:///./node_modules/ol/geom/flat/textpath.js","webpack:///./node_modules/ol/geom/flat/length.js","webpack:///./node_modules/ol/render/canvas/Executor.js","webpack:///./node_modules/ol/render/canvas/ExecutorGroup.js","webpack:///./node_modules/ol/render/canvas/Immediate.js","webpack:///./node_modules/ol/style/IconAnchorUnits.js","webpack:///./node_modules/ol/style/IconOrigin.js","webpack:///./node_modules/ol/style/IconImage.js","webpack:///./node_modules/ol/style/Icon.js","webpack:///./node_modules/ol/render/canvas/hitdetect.js","webpack:///./node_modules/ol/renderer/vector.js","webpack:///./node_modules/ol/renderer/canvas/VectorLayer.js","webpack:///./node_modules/ol/layer/Vector.js","webpack:///./src/views/admin/sites/SiteNodes.vue?a5eb","webpack:///./node_modules/ol/layer/TileProperty.js","webpack:///./node_modules/ol/layer/BaseTile.js","webpack:///./node_modules/ol/renderer/canvas/TileLayer.js","webpack:///./node_modules/ol/layer/Tile.js","webpack:///./node_modules/ol/ViewHint.js","webpack:///./node_modules/ol/Feature.js","webpack:///./src/views/admin/jobs/NewJobForm.vue","webpack:///./src/views/admin/jobs/NewJobForm.vue?8b8c","webpack:///./node_modules/ol/geom/GeometryLayout.js","webpack:///./node_modules/ol/layer/Base.js","webpack:///./node_modules/ol/functions.js","webpack:///./node_modules/ol/structs/RBush.js","webpack:///./node_modules/ol/source/VectorEventType.js","webpack:///./node_modules/ol/loadingstrategy.js","webpack:///./node_modules/ol/format/FormatType.js","webpack:///./node_modules/ol/featureloader.js","webpack:///./node_modules/ol/source/Vector.js","webpack:///./node_modules/uuid/dist/esm-browser/stringify.js","webpack:///./node_modules/ol/MapEventType.js","webpack:///./node_modules/ol/geom/flat/closest.js","webpack:///./node_modules/ol/geom/flat/area.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/color.js","webpack:///./node_modules/ol/renderer/Map.js","webpack:///./node_modules/ol/renderer/Composite.js","webpack:///./node_modules/ol/layer/Group.js","webpack:///./node_modules/ol/MapEvent.js","webpack:///./node_modules/ol/MapBrowserEvent.js","webpack:///./node_modules/ol/MapBrowserEventType.js","webpack:///./node_modules/ol/pointer/EventType.js","webpack:///./node_modules/ol/MapBrowserEventHandler.js","webpack:///./node_modules/ol/structs/PriorityQueue.js","webpack:///./node_modules/ol/TileQueue.js","webpack:///./node_modules/ol/PluggableMap.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/interaction/Pointer.js","webpack:///./node_modules/ol/events/condition.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/Kinetic.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/Map.js","webpack:///./node_modules/ol/has.js","webpack:///./node_modules/ol/ImageBase.js","webpack:///./node_modules/ol/Image.js","webpack:///./src/views/customer/jobs/Jobs.vue","webpack:///./src/views/customer/jobs/Jobs.vue?1d5f","webpack:///./node_modules/ol/style/Style.js","webpack:///./node_modules/ol/source/State.js","webpack:///./src/views/customer/jobs/Jobs.vue?9f68","webpack:///./node_modules/ol/sphere.js","webpack:///./node_modules/ol/ObjectEventType.js","webpack:///./src/components/SecureImage.vue","webpack:///./src/components/SecureImage.vue?5883","webpack:///./node_modules/ol/math.js","webpack:///./node_modules/ol/style/Text.js","webpack:///./node_modules/ol/AssertionError.js","webpack:///./node_modules/ol/style/Fill.js","webpack:///./node_modules/ol/style/Stroke.js","webpack:///./node_modules/ol/ImageState.js","webpack:///./node_modules/ol/rotationconstraint.js","webpack:///./node_modules/ol/asserts.js","webpack:///./node_modules/ol/geom/Geometry.js","webpack:///./node_modules/ol/geom/SimpleGeometry.js","webpack:///./node_modules/ol/array.js","webpack:///./node_modules/ol/ViewProperty.js","webpack:///./node_modules/ol/centerconstraint.js","webpack:///./node_modules/ol/resolutionconstraint.js","webpack:///./node_modules/ol/View.js","webpack:///./node_modules/ol/coordinate.js","webpack:///./src/components/Time.vue","webpack:///./src/components/Time.vue?5dfe","webpack:///./node_modules/ol/transform.js","webpack:///./node_modules/ol/style/Image.js","webpack:///./node_modules/ol/geom/flat/deflate.js","webpack:///./node_modules/ol/TileState.js","webpack:///./node_modules/ol/geom/flat/inflate.js","webpack:///./node_modules/ol/geom/flat/transform.js","webpack:///./node_modules/ol/control/FullScreen.js","webpack:///./node_modules/ol/easing.js","webpack:///./node_modules/ol/css.js","webpack:///./node_modules/ol/style/RegularShape.js","webpack:///./node_modules/ol/style/Circle.js","webpack:///./node_modules/ol/events/Event.js","webpack:///./src/views/admin/jobs/Jobs.vue?7ee6","webpack:///./node_modules/uuid/dist/esm-browser/rng.js","webpack:///./node_modules/ol/Disposable.js","webpack:///./node_modules/ol/TileRange.js","webpack:///./node_modules/ol/render/canvas.js","webpack:///./node_modules/ol/layer/Property.js","webpack:///./node_modules/ol/Object.js","webpack:///./node_modules/ol/Collection.js","webpack:///./node_modules/ol/MapProperty.js","webpack:///./node_modules/ol/colorlike.js","webpack:///./node_modules/uuid/dist/esm-browser/v4.js","webpack:///./src/views/admin/sites/Site.vue?3e46","webpack:///./node_modules/ol/geom/Point.js","webpack:///./node_modules/ol/geom/GeometryType.js","webpack:///./node_modules/ol/proj/Units.js","webpack:///./node_modules/ol/source/Source.js"],"names":["CHANGE","ERROR","BLUR","CLEAR","CONTEXTMENU","CLICK","DBLCLICK","DRAGENTER","DRAGOVER","DROP","FOCUS","KEYDOWN","KEYPRESS","LOAD","RESIZE","TOUCHMOVE","WHEEL","DEFAULT_MAX_ZOOM","DEFAULT_TILE_SIZE","UNKNOWN","INTERSECTING","ABOVE","RIGHT","BELOW","LEFT","validate","uuid","test","PRERENDER","POSTRENDER","PRECOMPOSE","POSTCOMPOSE","RENDERCOMPLETE","createCanvasContext2D","opt_width","opt_height","opt_canvasPool","opt_Context2DSettings","canvas","length","shift","OffscreenCanvas","document","createElement","width","height","getContext","replaceNode","newNode","oldNode","parent","parentNode","replaceChild","removeNode","node","removeChild","removeChildren","lastChild","replaceChildren","children","oldChildren","childNodes","i","oldChild","newChild","insertBefore","appendChild","boundingExtent","coordinates","extent","createEmpty","ii","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","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","intersectsSegment","start","startRel","endRel","startX","startY","endX","endY","slope","applyTransform","transformFn","opt_stops","push","l","wrapX","projection","projectionExtent","getExtent","canWrapX","worldWidth","worldsAway","floor","IMAGE_SMOOTHING_DISABLED","imageSmoothingEnabled","msImageSmoothingEnabled","IMAGE_SMOOTHING_ENABLED","class","style","type","title","data-bs-toggle","data-bs-target","id","format","aria-label","colspan","tabindex","aria-hidden","data-bs-dismiss","for","loadJobs","filters","search","placeholder","clearFilters","text","clicked","loading","lockClientID","lockSiteID","downloadOpenJobsReport","$refs","newjobform","show","status","sort_by","parseInt","data","pagination","columns","created_at","description","town","postcode","invoiced","users","site","client","completed_at","completed_by","jobs","job","key","downloadJobSheet","$router","datetime","site_town","site_postcode","not_completed_notes","user","fname","lname","date","site_name","client_name","completed_user","$hasRole","page","site_id","client_id","ref","updateColumnSettings","components","NewJobForm","Pagination","SubmitButton","Time","name","props","Number","required","lastPage","showing","total","showCompleted","counter","fromDate","toDate","creating","availableUsers","this","loadFilters","loadColumnSettings","methods","undefined","savedFilters","localStorage","getItem","JSON","parse","getElementById","setItem","stringify","saveFilters","console","log","encodeURIComponent","a","get","trim","then","response","forEach","fromSeconds","toFormat","realStatus","$emit","catch","error","$error","finally","responseType","savedColumns","__exports__","render","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","TypeError","String","__","constructor","create","Target","_super","opt_target","_this","eventTarget_","pendingRemovals_","dispatching_","listeners_","addEventListener","listener","listeners","listenersForType","indexOf","dispatchEvent","event","evt","target","propagate","dispatching","pendingRemovals","handleEvent","propagationStopped","pr","removeEventListener","disposeInternal","getListeners","hasListener","opt_type","keys","index","splice","abstract","Error","uidCounter_","getUid","obj","ol_uid","VERSION","LayerRenderer","layer","boundHandleImageChange_","handleImageChange_","bind","layer_","declutterExecutorGroup","getFeatures","pixel","prepareFrame","frameState","renderFrame","loadedTileCallback","tiles","zoom","tile","tileCoord","toString","createLoadedTileFinder","source","tileRange","forEachLoadedTile","forEachFeatureAtCoordinate","hitTolerance","matches","getDataAtPixel","getLayer","handleFontsChanged","image","getState","ImageState","LOADED","renderIfReadyAndVisible","loadImage","imageState","EventType","IDLE","load","getVisible","getSourceState","READY","changed","Observable","Layer","CanvasLayerRenderer","container","renderedResolution","tempTransform","pixelTransform","inversePixelTransform","context","containerReused","pixelContext_","getBackground","background","viewState","useContainer","transform","opacity","opt_backgroundColor","layerClassName","getClassName","className","backgroundColor","firstElementChild","HTMLCanvasElement","position","left","transformOrigin","clipUnrotated","topLeft","topRight","bottomRight","bottomLeft","coordinateToPixelTransform","inverted","save","beginPath","moveTo","round","lineTo","clip","dispatchRenderEvent_","event_1","preRender","postRender","getRenderTransform","pixelRatio","offsetX","dx1","dy1","sx","sy","dx2","dy2","renderPixel","layerExtent","renderCoordinate","pixelToCoordinateTransform","pixelContext","pixelCanvas","clearRect","drawImage","getImageData","err","Uint8Array","href","toLocaleString","computed","ADD","REMOVE","options","baseOptions","on","once","un","mapPrecomposeKey_","mapRenderKey_","sourceChangeKey_","renderer_","map","setMap","addChangeListener","SOURCE","handleSourcePropertyChange_","setSource","getLayersArray","opt_array","array","getLayerStatesArray","opt_states","states","getLayerState","getSource","UNDEFINED","handleSourceChange_","Promise","resolve","layerRenderer","getRenderer","setMapInternal","set","MAP","getMapInternal","renderEvent","layerStatesArray","layerState","some","arrayLayerState","createRenderer","hasRenderer","dispose","inView","visible","minResolution","maxResolution","minZoom","maxZoom","douglasPeucker","squaredTolerance","simplifiedFlatCoordinates","simplifiedOffset","n","markers","stack","last","pop","first","maxSquaredDistance","squaredDistance_1","snap","tolerance","quantize","quantizeArray","ends","simplifiedEnds","listen","opt_this","opt_once","originalListener_1","arguments","eventsKey","listenOnce","unlistenByKey","autoBom","warn","Blob","c","XMLHttpRequest","open","onload","g","onerror","send","e","MouseEvent","createEvent","initMouseEvent","window","f","self","global","navigator","userAgent","saveAs","HTMLAnchorElement","h","URL","webkitURL","j","download","rel","origin","location","createObjectURL","setTimeout","revokeObjectURL","msSaveOrOpenBlob","body","innerText","HTMLElement","safari","FileReader","k","onloadend","result","replace","readAsDataURL","m","module","exports","Attribution","opt_options","element","ulElement_","collapsed_","collapsed","userCollapsed_","overrideCollapsible_","collapsible","collapsible_","tipLabel","expandClassName","collapseLabel","collapseClassName","collapseLabel_","textContent","label","label_","activeLabel","toggleButton_","setAttribute","handleClick_","cssClasses","renderedAttributions_","renderedVisible_","collectSourceAttributions_","lookup","visibleAttributions","attributionGetter","getAttributions","attributions","getAttributionsCollapsible","isArray","jj","setCollapsible","updateElement_","display","innerHTML","preventDefault","handleToggle_","classList","toggle","getCollapsible","setCollapsed","getCollapsed","mapEvent","Control","Rotate","compassClassName","add","button","callResetNorth_","resetNorth","duration_","duration","autoHide_","autoHide","rotation_","resetNorth_","getMap","view","getView","getRotation","PI","animate","easing","setRotation","contains","remove","Zoom","delta","zoomInClassName","zoomOutClassName","zoomInLabel","zoomOutLabel","zoomInTipLabel","zoomOutTipLabel","inElement","createTextNode","outElement","zoomByDelta_","currentZoom","getZoom","newZoom","getConstrainedZoom","getAnimating","cancelAnimations","setZoom","defaults","controls","Collection","zoomControl","zoomOptions","rotateControl","rotate","rotateOptions","attributionControl","attribution","attributionOptions","Projection","code_","code","units_","extent_","worldExtent_","worldExtent","axisOrientation_","axisOrientation","global_","canWrapX_","getPointResolutionFunc_","getPointResolution","defaultTileGrid_","metersPerUnit_","metersPerUnit","getCode","getUnits","getMetersPerUnit","getWorldExtent","getAxisOrientation","isGlobal","setGlobal","getDefaultTileGrid","setDefaultTileGrid","tileGrid","setExtent","setWorldExtent","setGetPointResolution","func","getPointResolutionFunc","RADIUS","HALF_SIZE","EXTENT","WORLD_EXTENT","MAX_SAFE_Y","tan","EPSG3857Projection","units","Units","METERS","point","PROJECTIONS","fromEPSG4326","input","opt_output","opt_dimension","dimension","output","toEPSG4326","atan","exp","METERS_PER_UNIT","EPSG4326Projection","opt_axisOrientation","DEGREES","cache","transforms","destination","sourceCode","destinationCode","cloneTransform","identityTransform","addProjection","addProjections","projections","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","toUserResolution","sourceUnits","userUnits","fromUserResolution","addCommon","t","r","o","s","u","sqrt","_maxEntries","_minEntries","ceil","clear","leaf","all","_all","toBBox","collides","insert","_build","_splitRoot","_insert","_condense","compareMinX","compareMinY","toJSON","fromJSON","pow","_chooseSubtree","_split","_adjustParentBBoxes","_chooseSplitAxis","_chooseSplitIndex","v","M","_allDistMargin","sort","POINT","LINE","Tile","state","interimTile","transition_","transition","transitionStarts_","interpolate","release","getKey","getInterimTile","TileState","refreshInterimChain","prev","LOADING","getTileCoord","setState","getAlpha","time","inTransition","endTransition","ImageTile","src","crossOrigin","tileLoadFunction","crossOrigin_","src_","image_","Image","unlisten_","tileLoadFunction_","getImage","setImage","unlistenImage_","handleImageError_","getBlankImage","handleImageLoad_","naturalWidth","naturalHeight","EMPTY","ctx","fillStyle","fillRect","brokenDiagonalRendering_","ERROR_THRESHOLD","ENABLE_RASTER_REPROJECTION","MAX_SUBDIVISION","MAX_TRIANGLE_WIDTH","Triangulation","sourceProj","targetProj","targetExtent","maxSourceExtent","errorThreshold","opt_destinationResolution","sourceProj_","targetProj_","transformInvCache","transformInv","transformInv_","maxSourceExtent_","errorThresholdSquared_","triangles_","wrapsXInSource_","canWrapXInSource_","sourceWorldWidth_","targetWorldWidth_","destinationTopLeft","destinationTopRight","destinationBottomRight","destinationBottomLeft","sourceTopLeft","sourceTopRight","sourceBottomRight","sourceBottomLeft","maxSubdivision","addQuad_","leftBound_1","triangle","arr","newTriangle","addTriangle_","aSrc","bSrc","cSrc","dSrc","sourceQuadExtent","sourceCoverageX","sourceWorldWidth","wrapsX","needsSubdivision","targetQuadExtent","targetCoverageX","isFinite","isNotFinite","centerSrc","centerSrcEstimX","centerSrcErrorSquared","abs","bc","bcSrc","da","daSrc","ab","abSrc","cd","cdSrc","calculateSourceExtent","getTriangles","drawTestTriangle","u1","v1","u2","v2","closePath","restore","verifyBrokenDiagonalRendering","isBrokenDiagonalRendering","globalCompositeOperation","calculateSourceResolution","targetCenter","targetResolution","sourceCenter","sourceResolution","targetMetersPerUnit","sourceMetersPerUnit","sourceExtent","compensationFactor","calculateSourceExtentResolution","triangulation","sources","gutter","opt_renderEdges","opt_interpolate","pixelRound","scale","sourceDataExtent","canvasWidthInUnits","canvasHeightInUnits","stitchContext","stitchScale","xPos","yPos","srcWidth","srcHeight","targetTopLeft","u0","v0","sourceNumericalShiftX","sourceNumericalShiftY","augmentedMatrix","affineCoefs","steps","ud","vd","step","translate","strokeStyle","lineWidth","stroke","ReprojTile","sourceTileGrid","targetTileGrid","wrappedTileCoord","getTileFunction","opt_errorThreshold","renderEdges_","pixelRatio_","gutter_","canvas_","sourceTileGrid_","targetTileGrid_","wrappedTileCoord_","sourceTiles_","sourcesListenerKeys_","sourceZ_","getTileCoordExtent","maxTargetExtent","limitedTargetExtent","sourceProjExtent","getResolution","errorThresholdInPixels","triangulation_","getZForResolution","sourceRange","getTileRangeForExtentAndZ","srcX","srcY","reproject_","z","getTileSize","leftToLoad_1","sourceListenKey_1","unlistenSources_","LRUCache","opt_highWaterMark","highWaterMark","count_","entries_","oldest_","newest_","canExpireCache","getCount","containsKey","entry","value_","key_","newer","older","getKeys","getValues","values","peekLast","peekLastKey","peekFirstKey","setSize","opt_tileCoord","getKeyZXY","fromKey","split","hash","withinExtentAndZ","getMinZoom","getMaxZoom","getFullTileRange","TileCache","expireCache","usedTiles","pruneExceptNewestZ","TILELOADSTART","TILELOADEND","TILELOADERROR","tmpTileCoord","DECIMALS","TileGrid","zoomFactor","resolutions_","resolutions","origins","zoomFactor_","origin_","origins_","tileSizes_","tileSizes","tileSize_","tileSize","fullTileRanges_","tmpSize_","tmpExtent_","sizes","TileRange","restrictedTileRange","calculateTileRanges_","forEachTileCoord","forEachTileCoordParentTileRange","opt_tileRange","tileCoordExtent","getOrigin","getResolutions","getTileCoordChildTileRange","getTileRangeForTileCoordAndZ","tileCoordZ","tileCoordX","tileCoordY","factor","getTileRangeExtent","getTileCoordForXYAndZ_","getTileCoordCenter","getTileCoordForCoordAndResolution","getTileCoordForXYAndResolution_","reverseIntersectionPolicy","getTileCoordForCoordAndZ","getTileCoordResolution","opt_direction","fullTileRanges","getForProjection","createForProjection","extentFromProjection","createForExtent","opt_maxZoom","opt_tileSize","opt_corner","Corner","resolutionsFromExtent","createXYZ","xyzOptions","gridOptions","opt_maxResolution","half","TileSource","attributionsCollapsible","opaque_","opaque","tilePixelRatio_","tilePixelRatio","tileCache","cacheSize","tmpSize","tileOptions","zDirection","getTileCacheForProjection","tileCoordKey","loaded","covered","getGutterForProjection","setKey","getOpaque","getTile","getTileGrid","getTileGridForProjection","getProjection","getTilePixelRatio","getTilePixelSize","getTileCoordForTileUrlFunction","getWrapX","refresh","updateCacheSize","tileCount","useTile","Source","TileSourceEvent","Event","createFromTemplate","template","zRegEx","xRegEx","yRegEx","dashYRegEx","range","createFromTemplates","templates","len","tileUrlFunctions","createFromTileUrlFunctions","expandUrl","url","urls","match","exec","startCharCode","charCodeAt","stopCharCode","charCode","fromCharCode","stop_1","UrlTile","generateTileUrlFunction_","tileUrlFunction","setUrls","setUrl","tileLoadingKeys_","getTileLoadFunction","getTileUrlFunction","getPrototypeOf","getUrls","handleTileChange","uid","tileState","TileEventType","setTileLoadFunction","setTileUrlFunction","join","TileImage","imageSmoothing","defaultTileLoadFunction","tileClass","tileCacheForProjection","tileGridForProjection","reprojectionErrorThreshold_","reprojectionErrorThreshold","renderReprojectionEdges_","usedTileCache","getGutter","getInterpolate","thisProj","projKey","createTile_","urlTileCoord","tileUrl","newTile","getTileInternal","setRenderReprojectionEdges","setTileGridForProjection","tilegrid","proj","imageTile","XYZ","RenderEvent","opt_inversePixelTransform","opt_frameState","opt_context","hasArea","ratio","opt_size","toSize","revision_","getRevision","onInternal","onceInternal","ol_key","unInternal","unByKey","assign","var_sources","object","property","pointerEvents","target_","map_","listenerKeys","setTarget","getOverlayContainerStopEvent","role","aria-selected","$hasOneOfRoles","jobsCounter","brands","brand","logo","endpoint","edit","maxlength","street","county","latitude","longitude","telephone","telephone_verified","email","statuses","updating","saveChanges","copyAddress","openDeleteModal","range_and_subnet","subnets","sn","cidr_block","gateway","client_assigned_id","install_date","formattedInstallDate","editBrands","brand_site_id","deleteBrand","updatingBrands","updateBrands","active","count","notesCounter","updateJobsCounter","clients","migrateSite","identifier","addBrand","deleteSite","checking","canDelete","actions","documents","nodes","nodeLogins","nodePings","reasons","reason","handleDeleteSite","deleting","attributes","at","encrypt","reminder","saveAttribute","deleteAttribute","addAttribute","loadAttributes","attribute","delete","success","$success","filter","patch","put","scope","link-col","autocomplete","disabled","list","includes","$store","auth","config","downloading","downloadConfig","savePendingUpdates","deleteSelected","accept","selectFile","products","product","toggleSelectAll","allClicked","address","mac","serial_number","firmware","client_asset_id","credentials","link-id","credential_count","data-bs-placement","data-bs-original-title","tooltip","typeFromProduct","errorName","node_model","unit_id","details","templateUuid","currentDevice","notDeletedCredentials","credential","username","password","deleteCredential","updatingCredentials","updateCredentials","bulkCredentials","deleteBulkCredential","getUUID","updatingBulk","updateBulkCredentials","bulk","product_id","updateBulkProduct","fileHeaders","header","confirmFileMatches","nodeMigration","valueProp","searchable","sites","processing","migrateNodes","configCopy","copyConfig","Multiselect","templateRow","editableContainers","pendingUpdates","originalValues","fileData","dragFill","loadProducts","loadSites","handleSave","ctrlKey","octetsA","octetsB","checked","errored","message","last_ping","last_successful_ping","$nextTick","$","prepareInteractiveMode","post","modal","go","loadNodes","nodeTable","find","deleteButtons","showCredentialsButtons","each","row","parents","next","nextAll","inputName","attr","nextInput","focus","select","newValue","originalValue","hasClass","brandNewRow","removeClass","append","toUpperCase","changesCount","getOwnPropertyNames","css","trigger","inputElement","selectionStart","selectionEnd","shiftKey","lastOctet","lastPart","lastPartInt","isNaN","prevAll","cell","nodeId","linkId","addClass","loadCredentials","payload","errors","$warning","erroredNode","removeAttr","click","selectedNodes","selectedInputs","nodeIds","prop","productInput","fire","icon","showCancelButton","confirmButtonColor","cancelButtonColor","confirmButtonText","isConfirmed","file","configfile","files","FormData","headers","json","headerDictionary","matchedFields","fh","productSearch","tableRows","rowModel","toLowerCase","rowAddress","payloadModel","payloadAddress","firstNode","firstAddress","selected","enabledColumns","cnt","notDeletedNodes","initMap","Map","FullScreen","layers","View","vectorSource","Vector","markersLayer","addLayer","addMarker","lat","long","point1","Point","newMarker","Feature","geometry","color","Style","Circle","radius","fill","Fill","Stroke","Text","offsetY","setStyle","addFeature","uptime","chart","loadUptime","labels","health","day","hour","Ats","fromFormat","toSeconds","Bts","parseFloat","online_pings","offline_pings","toFixed","Chart","datasets","borderColor","pointRadius","borderWidth","responsive","maintainAspectRatio","legend","fontColor","boxWidth","tooltips","displayColors","scales","xAxes","ticks","beginAtZero","yAxes","aria-current","aria-expanded","currentPath","setPath","hasParentNode","upOneNode","currentFolders","folder","downOneNode","deleteFolder","currentFiles","properties","mime","alt","job_id","image_id","filetype","createdBy","uploaded_by","lastModified","downloadFile","deleteFile","newFolder","creatingFolder","createFolder","multiple","upload","completed","creatingFile","uploadFiles","SecureImage","folders","last_modified","rootPath","newFile","currentFile","loadFiles","path","createFile","formData","deleted","allowedPreview","notes","note","deleteNote","createNote","VTime","getNotes","local","note_id","item","token","schedules","schedule","contract_type","frequency","renewal_date","call_out_timeframe","next_due","current_job","openCurrentJob","saveMaintenance","deleteMaintenance","maintenance","getMaintenance","SiteStats","SiteMap","SiteNodes","SiteAttributes","AdminJobs","SiteFileManager","CustomerJobs","SiteNotes","SiteMaintenance","handleKeyDown","loadSite","loadSiteStatuses","loadClients","loadBrands","clipboard","writeText","brand_id","$warn","remaining","deleteDocuments","deleteNodePings","res","deleteSubnets","deleteNodeLogins","deleteNodes","IconImageCache","cache_","cacheSize_","maxCacheSize_","expire","iconImage","maxCacheSize","colorString","shared","Property","RENDER_ORDER","BaseVectorLayer","renderBuffer","updateWhileAnimating","updateWhileInteracting","declutter_","declutter","renderBuffer_","style_","styleFunction_","updateWhileAnimating_","updateWhileInteracting_","getDeclutter","getRenderBuffer","getRenderOrder","getStyle","getStyleFunction","getUpdateWhileAnimating","getUpdateWhileInteracting","renderDeclutter","declutterTree","setRenderOrder","renderOrder","opt_style","BaseVector","Instruction","BEGIN_GEOMETRY","BEGIN_PATH","CIRCLE","CLOSE_PATH","CUSTOM","DRAW_CHARS","DRAW_IMAGE","END_GEOMETRY","FILL","MOVE_TO_LINE_TO","SET_FILL_STYLE","SET_STROKE_STYLE","STROKE","beginPathInstruction","closePathInstruction","VectorContext","drawCustom","feature","renderer","hitDetectionRenderer","drawGeometry","drawCircle","circleGeometry","drawFeature","drawGeometryCollection","geometryCollectionGeometry","drawLineString","lineStringGeometry","drawMultiLineString","multiLineStringGeometry","drawMultiPoint","multiPointGeometry","drawMultiPolygon","multiPolygonGeometry","drawPoint","pointGeometry","drawPolygon","polygonGeometry","drawText","setFillStrokeStyle","setImageStyle","imageStyle","opt_declutterImageWithText","setTextStyle","textStyle","CanvasBuilder","maxExtent","maxLineWidth","beginGeometryInstruction1_","beginGeometryInstruction2_","bufferedMaxExtent_","instructions","tmpCoordinate_","hitDetectionInstructions","applyPixelRatio","dashArray","dash","appendFlatPointCoordinates","getBufferedMaxExtent","tmpCoord","myEnd","appendFlatLineCoordinates","closed","skipFirst","lastRel","nextRel","lastXCoord","lastYCoord","nextCoord","skipped","Relationship","drawCustomCoordinates_","builderEnds","builderEnd","beginGeometry","builderEndss","getType","getStride","builderBegin","GeometryType","MULTI_POLYGON","getOrientedFlatCoordinates","endss","getEndss","myEnds","inflate","POLYGON","MULTI_LINE_STRING","getFlatCoordinates","getEnds","LINE_STRING","MULTI_POINT","endGeometry","finish","reverseHitDetectionInstructions","reverse","instruction","begin","fillStyleColor","getColor","strokeStyleColor","strokeStyleLineCap","getLineCap","lineCap","strokeStyleLineDash","getLineDash","lineDash","strokeStyleLineDashOffset","getLineDashOffset","lineDashOffset","strokeStyleLineJoin","getLineJoin","lineJoin","strokeStyleWidth","strokeStyleMiterLimit","getMiterLimit","miterLimit","createFill","fillInstruction","applyStroke","createStroke","updateFillStyle","currentFillStyle","updateStrokeStyle","currentStrokeStyle","currentLineCap","currentLineDash","currentLineDashOffset","currentLineJoin","currentLineWidth","currentMiterLimit","endGeometryInstruction","CanvasImageBuilder","hitDetectionImage_","imagePixelRatio_","anchorX_","anchorY_","height_","opacity_","originX_","originY_","rotateWithView_","scale_","width_","declutterImageWithText_","myBegin","opt_sharedData","anchor","getAnchor","getSize","hitDetectionImage","getHitDetectionImage","getPixelRatio","getOpacity","getRotateWithView","getScaleArray","CanvasLineStringBuilder","drawFlatCoordinates_","moveToLineToInstruction","lastStroke","CanvasPolygonBuilder","drawFlatCoordinatess_","numEnds","setFillStrokeStyles_","circleInstruction","matchingChunk","maxAngle","acos","m12","m23","x12","y12","x23","y23","chunkStart","chunkEnd","chunkM","TEXT_ALIGN","CanvasTextBuilder","labels_","text_","textOffsetX_","textOffsetY_","textRotateWithView_","textRotation_","textFillState_","fillStates","textStrokeState_","strokeStates","textState_","textStates","textKey_","fillKey_","strokeKey_","fillState","strokeState","textState","geometryType","placement","TextPlacement","geometryWidths","overflow","getFlatMidpoint","getFlatMidpoints","getFlatInteriorPoint","interiorPoints","getFlatInteriorPoints","beg_1","w","keep","saveTextStates_","backgroundFill","backgroundStroke","padding","p0","p1","p2","p3","pixelRatio_1","NaN","textAlign","flatOffset","flatEnd","oo","drawChars_","strokeKey","textKey","font","textBaseline","fillKey","baseline","strokeWidth","textFillStyle","getFill","textStrokeStyle","getStroke","getFont","textScale","getOverflow","getMaxAngle","getPlacement","getTextAlign","getTextBaseline","getBackgroundFill","getBackgroundStroke","getPadding","textOffsetX","getOffsetX","textOffsetY","getOffsetY","textRotateWithView","textRotation","getText","BATCH_CONSTRUCTORS","PolygonBuilder","Builder","ImageBuilder","LineStringBuilder","TextBuilder","BuilderGroup","tolerance_","maxExtent_","resolution_","buildersByZIndex_","builderInstructions","zKey","builders","builderKey","builderInstruction","getBuilder","zIndex","builderType","zIndexKey","replays","replay","Constructor","DEFAULT","IMAGE","TEXT","drawTextOnPath","startM","measureAndCacheTextWidth","segmentLength","segmentM","advance","beginX","beginY","startOffset","startLength","endM","flat","previousAngle","singleSegment","atan2","angle","iStart","charLength","chars","substring","lineStringLength","tmpExtent","p4","getDeclutterBox","replayImageOrLabelArgs","declutterBox","rtlRegEx","RegExp","horizontalTextAlign","align","Executor","overlaps","alignFill_","coordinateCache_","renderedTransform_","pixelCoordinates_","viewRotation_","widths_","createLabel","lines","numLines","widths","lineHeight","renderWidth","contextInstructions","Context","OffscreenCanvasRenderingContext2D","CanvasRenderingContext2D","setLineDash","leftRight","replayTextBackground_","strokeInstruction","fill_","setStrokeStyle_","calculateImageOrLabelDimensions_","sheetWidth","sheetHeight","centerX","centerY","anchorX","anchorY","originX","originY","snapToPixel","fillStroke","boxW","boxH","boxX","boxY","drawImageX","drawImageY","drawImageW","drawImageH","canvasTransform","replayImageOrLabel_","contextScale","imageOrLabel","dimensions","box","strokePadding","origin_1","repeatSize","drawLabelWithPointPlacement_","execute_","opt_featureCallback","opt_hitExtent","opt_declutterTree","pixelCoordinates","dd","prevX","prevY","roundX","roundY","currentGeometry","pendingFill","pendingStroke","lastFillInstruction","lastStrokeInstruction","coordinateCache","viewRotation","viewRotationFromTransform","batchSize","getGeometry","arc","fn","coords","rotateWithView","declutterImageWithText","labelWithAnchor","widthIndex","args","imageArgs","imageDeclutterBox","measurePixelRatio","pixelRatioScale","cachedWidths","pathLength","textLength","parts","drawChars","cc","part","i_1","ii_1","execute","executeHitDetection","ORDER","BuilderType","ExecutorGroup","allInstructions","opt_renderBuffer","overlaps_","executorsByZIndex_","hitDetectionContext_","hitDetectionTransform_","createExecutors_","flatClipCoords","getClipCoords","executors","instructionByZindex","hasExecutors","candidates","declutteredFeatures","contextSize","newContext","hitExtent","indexes","getPixelIndexArray","featureCallback","imageData","idx","result_1","executor","zs","opt_builderTypes","builderTypes","circlePixelIndexArrayCache","maxDistanceSq","distances","distanceSq","distance","pixelIndex","CanvasImmediateRenderer","opt_squaredTolerance","opt_userTransform","context_","transform_","squaredTolerance_","userTransform_","contextFillState_","contextStrokeState_","contextTextState_","fillState_","strokeState_","imageAnchorX_","imageAnchorY_","imageHeight_","imageOpacity_","imageOriginX_","imageOriginY_","imageRotateWithView_","imageRotation_","imageScale_","imageWidth_","textScale_","tmpLocalTransform_","drawImages_","localTransform","alpha","globalAlpha","setTransform","drawText_","setContextFillState_","setContextStrokeState_","setContextTextState_","strokeText","fillText","moveToLineTo_","close","drawRings_","GEOMETRY_COLLECTION","getGeometryFunction","geometries","getGeometriesArray","simplifyTransformed","flatMidpoint","geometryExtent","flatMidpoints","flatInteriorPoint","flatInteriorPoints","contextFillState","contextStrokeState","contextTextState","imageSize","imageAnchor","imageOrigin","textFillStyleColor","textStrokeStyleColor","textStrokeStyleLineCap","textStrokeStyleLineDash","textStrokeStyleLineDashOffset","textStrokeStyleLineJoin","textStrokeStyleWidth","textStrokeStyleMiterLimit","textFont","textText","textTextAlign","textTextBaseline","FRACTION","PIXELS","taintedTestContext","IconImage","color_","imageState_","size_","tainted_","isTainted_","dispatchChangeEvent_","replaceColor_","getImageState","getSrc","imgData","putImageData","Icon","displacement","anchor_","normalizedAnchor_","anchorOrigin_","anchorOrigin","IconOrigin","anchorXUnits_","anchorXUnits","IconAnchorUnits","anchorYUnits_","anchorYUnits","img","imgSize","iconImage_","offset_","offsetOrigin_","offsetOrigin","getScale","getDisplacement","setAnchor","getImageSize","iconImageSize","listenImageChange","unlistenImageChange","HIT_DETECT_RESOLUTION","createHitDetectionImageData","features","styleFunction","featureCount","indexFactor","featuresByZIndex","featureStyleFunction","styles","originalStyle","setColor","setText","imgContext","getZIndex","byGeometryType","zIndexKeys","geomAndStyle","kk","hitDetect","resultFeatures","SIMPLIFY_TOLERANCE","GEOMETRY_RENDERERS","renderPointGeometry","renderLineStringGeometry","renderPolygonGeometry","renderMultiPointGeometry","renderMultiLineStringGeometry","renderMultiPolygonGeometry","renderGeometryCollectionGeometry","renderCircleGeometry","defaultOrder","feature1","feature2","getSquaredTolerance","getTolerance","builderGroup","opt_declutterBuilderGroup","circleReplay","textReplay","renderFeature","replayGroup","opt_transform","renderFeatureInternal","simplifiedGeometry","renderGeometry","geometryRenderer","getHitDetectionRenderer","getGeometries","lineStringReplay","polygonReplay","imageReplay","CanvasVectorLayerRenderer","vectorLayer","boundHandleStyleImageChange_","handleStyleImageChange_","animatingOrInteracting_","dirty_","hitDetectionImageData_","renderedFeatures_","renderedRevision_","renderedResolution_","renderedExtent_","wrappedRenderedExtent_","renderedRotation_","renderedCenter_","renderedProjection_","renderedRenderOrder_","replayGroup_","replayGroupChanged","clipping","renderWorlds","executorGroup","viewHints","ViewHint","ANIMATING","INTERACTING","multiWorld","endWorld","world","layerIndex","clipped","lastIndexOf","executorGroups","animating","interacting","frameStateExtent","vectorLayerRevision","vectorLayerRenderBuffer","vectorLayerRenderOrder","renderedExtent","loadExtents","loadExtent","declutterBuilderGroup","userTransform","extent_1","userExtent_1","loadFeatures","dirty","userExtent","getFeaturesInExtent","replayGroupInstructions","getOverlaps","VectorLayer","PRELOAD","USE_INTERIM_TILES_ON_ERROR","BaseTileLayer","preload","useInterimTilesOnError","setPreload","setUseInterimTilesOnError","getPreload","TileProperty","getUseInterimTilesOnError","BaseTile","CanvasTileLayerRenderer","tileLayer","extentChanged","renderedPixelRatio","renderedProjection","renderedRevision","renderedTiles","newTiles_","tmpTileRange_","isDrawableTile","tileSource","viewResolution","viewCenter","sourceRevision","tileResolution","canvasExtent","tilesToDrawByZ","findLoadedTiles","tmpTileRange","childTileRange","canvasScale","clips","clipZs","currentClip","currentZ","currentTilePixelSize","currentResolution","currentScale","dx_1","dy_1","originTileCoord","originTileExtent","tileGutter","tilesToDraw","xIndex","nextX","yIndex","nextY","drawTileImage","unshift","updateUsedTiles","manageTilePyramid","scheduleExpireCache","getTileImage","alphaChanged","postRenderFunction","tileSourceKey","postRenderFunctions","opt_tileCallback","wantedTiles","tileQueue","isKeyQueued","enqueue","TileLayer","opt_geometryOrProperties","id_","geometryName_","geometryChangeKey_","handleGeometryChanged_","setGeometry","setProperties","hasProperties","getProperties","setGeometryName","getGeometryName","getId","handleGeometryChange_","createStyleFunction","setId","removeChangeListener","styles_1","showSteve","loadSiteBrands","newJob","openExistingJobs","existingJobs","openNewSite","siteBrands","reported_by","quote_number","focusUserFilter","removeUser","createJob","goTo","closeExistingJobs","userFilter","filteredUsers","addUser","emits","NewSiteForm","steveAudio","showAndy","loadUsers","realUser","reminders","rm","html","newsiteform","params","checkForJobs","XY","XYM","XYZM","BaseLayer","background_","OPACITY","VISIBLE","Z_INDEX","MAX_RESOLUTION","MIN_RESOLUTION","MIN_ZOOM","MAX_ZOOM","className_","state_","opt_managed","managed","sourceState","getMaxResolution","getMinResolution","setBackground","opt_background","setMaxResolution","setMinResolution","setMaxZoom","setMinZoom","setOpacity","setVisible","setZIndex","zindex","TRUE","FALSE","VOID","memoizeOne","lastResult","lastArgs","lastThis","called","nextArgs","RBush","opt_maxEntries","rbush_","items_","extents","items","update","bbox","getAll","getInExtent","forEach_","forEachInExtent","concat","rbush","ADDFEATURE","CHANGEFEATURE","REMOVEFEATURE","FEATURESLOADSTART","FEATURESLOADEND","FEATURESLOADERROR","ARRAY_BUFFER","XML","withCredentials","loadFeaturesXhr","failure","xhr","FormatType","responseText","responseXML","DOMParser","parseFromString","readFeatures","featureProjection","readProjection","dataProjection","addFeatures","VectorSourceEvent","opt_feature","opt_features","VectorSource","loader_","format_","url_","loader","strategy_","strategy","collection","useSpatialIndex","featuresRtree_","loadedExtentsRtree_","loadingExtentsCount_","nullGeometryFeatures_","idIndex_","uidIndex_","featureChangeKeys_","featuresCollection_","getArray","addFeaturesInternal","bindFeaturesCollection_","addFeatureInternal","featureKey","addToIndex_","setupChangeEvents_","VectorEventType","handleFeatureChange_","ObjectEventType","PROPERTYCHANGE","valid","newFeatures","geometryFeatures","length_1","length_2","length_3","modifyingCollection","CollectionEventType","removeFeature","opt_fast","featureId","removeAndIgnoreReturn","removeFeatureInternal","clearEvent","forEachFeature","forEachFeatureAtCoordinateDirect","forEachFeatureInExtent","intersectsCoordinate","forEachFeatureIntersectingExtent","intersectsExtent","getFeaturesCollection","getFeaturesAtCoordinate","getClosestFeatureToCoordinate","opt_filter","closestFeature","closestPoint","minSquaredDistance","previousMinSquaredDistance","closestPointXY","minDistance","getFeatureById","getFeatureByUid","getFormat","getUrl","sid","removeFromIdIndex_","hasFeature","loadedExtentsRtree","extentsToLoad","_loop_1","extentToLoad","alreadyLoaded","this_1","removeLoadedExtent","featureChangeKeys","removed","setLoader","byteToHex","substr","MOVESTART","MOVEEND","assignClosest","offset1","offset2","maxSquaredDelta","squaredDelta","arrayMaxSquaredDelta","assignClosestPoint","maxDelta","isRing","opt_tmpPoint","squaredDistance","tmpPoint","assignClosestArrayPoint","twiceArea","LinearRing","opt_layout","maxDelta_","maxDeltaRevision_","setCoordinates","setFlatCoordinates","layout","getCoordinates","getSimplifiedGeometryInternal","GeometryLayout","LINEAR_RING","setLayout","deflate","SimpleGeometry","linearRingContainsExtent","outside","linearRingContainsXY","wn","linearRingsContainsXY","getInteriorPointOfArray","flatCenters","flatCentersOffset","opt_dest","intersections","rr","pointX","maxSegmentLength","ret","intersectsLineString","coordinatesExtent","point2","intersectsLinearRing","intersectsLinearRingArray","tmp","linearRingIsClockwise","edge","linearRingsAreOriented","opt_right","right","isClockwise","orientLinearRings","Polygon","opt_ends","ends_","flatInteriorPointRevision_","flatInteriorPoint_","orientedRevision_","orientedFlatCoordinates_","appendLinearRing","linearRing","polygon","applyProperties","flatCenter","getInteriorPoint","getLinearRingCount","getLinearRing","getLinearRings","linearRings","fromExtent","HEX_COLOR_RE_","NAMED_COLOR_RE_","asString","fromNamed","el","rgb","getComputedStyle","fromString","MAX_CACHE_SIZE","fromStringInternal_","asArray","hasAlpha","normalize","MapRenderer","dispatchRenderEvent","calculateMatrices2D","checkWrapped","thisArg","layerFilter","thisArg2","translatedCoordinate","offsets","layerStates","numLayers","callback_1","order","forEachLayerAtPixel","hasFeatureAtCoordinate","scheduleExpireIconCache","expireIconCache","Disposable","CompositeMapRenderer","fontChangeListenerKey_","redrawText","element_","getViewport","firstChild","children_","declutterLayers","previousElement","Composite","GroupEvent","LAYERS","LayerGroup","layersListenerKeys_","listenerKeys_","handleLayersChanged_","unique","setLayers","handleLayerChange_","getLayers","handleLayersAdd_","handleLayersRemove_","layersArray","registerLayerListeners_","handleLayerGroupAdd_","handleLayerGroupRemove_","collectionEvent","currentLayers","pos","ownLayerState","defaultZIndex","Base","MapEvent","MapBrowserEvent","originalEvent","opt_dragging","pixel_","coordinate_","dragging","defineProperty","getEventPixel","enumerable","configurable","getCoordinateFromPixel","stopPropagation","SINGLECLICK","POINTERDRAG","POINTERMOVE","POINTERDOWN","POINTERUP","POINTEROVER","POINTEROUT","POINTERENTER","POINTERLEAVE","POINTERCANCEL","MapBrowserEventHandler","moveTolerance","clickTimeoutId_","emulateClicks_","dragging_","dragListenerKeys_","moveTolerance_","down_","activePointers_","trackedTouches_","pointerdownListenerKey_","handlePointerDown_","originalPointerMoveEvent_","relayedListenerKey_","relayEvent_","boundHandleTouchMove_","handleTouchMove_","passive","emulateClick_","pointerEvent","newEvent","MapBrowserEventType","clearTimeout","updateActivePointers_","pointerId","handlePointerUp_","defaultPrevented","isMouseActionButton_","doc","getOwnerDocument","handlePointerMove_","getRootNode","isMoving_","cancelable","clientX","clientY","PriorityQueue","priorityFunction","keyFunction","priorityFunction_","keyFunction_","elements_","priorities_","queuedElements_","dequeue","elements","priorities","siftUp_","elementKey","priority","siftDown_","getLeftChildIndex_","getRightChildIndex_","getParentIndex_","heapify_","isQueued","startIndex","lIndex","rIndex","smallerChildIndex","parentIndex","reprioritize","TileQueue","tilePriorityFunction","tileChangeCallback","boundHandleTileChange_","tileChangeCallback_","tilesLoading_","tilesLoadingKeys_","added","getTilesLoading","tileKey","loadMoreTiles","maxTotalLoading","maxNewLoads","newLoads","getTilePriority","tileCenter","deltaX","deltaY","removeLayerMapProperty","setLayerMapProperty","PluggableMap","optionsInternal","createOptionsInternal","renderComplete_","boundHandleBrowserEvent_","handleBrowserEvent","maxTilesLoading_","maxTilesLoading","postRenderTimeoutHandle_","animationDelayKey_","animationDelay_","renderFrame_","Date","now","coordinateToPixelTransform_","pixelToCoordinateTransform_","frameIndex_","frameState_","previousExtent_","viewPropertyListenerKey_","viewChangeListenerKey_","layerGroupPropertyListenerKeys_","viewport_","overlayContainer_","overlayContainerStopEvent_","mapBrowserEventHandler_","keyboardEventTarget_","keyboardEventTarget","targetChangeHandlerKeys_","interactions","overlays_","overlays","overlayIdIndex_","postRenderFunctions_","tileQueue_","handleTileChange_","MapProperty","LAYERGROUP","handleLayerGroupChanged_","VIEW","handleViewChanged_","SIZE","handleSizeChanged_","TARGET","handleTargetChanged_","viewOptions","setView","addOverlayInternal_","overlay","control","interaction","addControl","getControls","addInteraction","getInteractions","getLayerGroup","handleLayerAdd_","addOverlay","getOverlays","forEachFeatureAtPixel","getCoordinateFromPixelInternal","getFeaturesAtPixel","getAllLayers","addLayersFrom","layerGroup","hasFeatureAtPixel","getEventCoordinate","getEventCoordinateInternal","viewportPosition","getBoundingClientRect","eventPosition","changedTouches","top","getTarget","getTargetElement","getOverlayById","group","getLoading","getPixelFromCoordinate","viewCoordinate","getPixelFromCoordinateInternal","getOverlayContainer","targetElement","ownerDocument","browserEvent","mapBrowserEvent","handleMapBrowserEvent","eventType","rootNode","documentElement","interactionsArray","getActive","cont","handlePostRender","hints","lowOnFrameBudget","resolveConstraints","defaultView","updateSize","cancelAnimationFrame","handleViewPropertyChanged_","updateViewportSize_","handleLayerRemove_","isRendered","renderSync","requestAnimationFrame","removeControl","removeInteraction","removeLayer","removeOverlay","previousFrameState","isDef","getHints","mapId","renderTargets","nextCenter","nextResolution","nextRotation","nextExtent","moveStart","MapEventType","idle","setLayerGroup","oldLayerGroup","computedStyle","offsetWidth","offsetHeight","getClientRects","setViewportSize","ACTIVE","Interaction","setActive","pan","opt_duration","currentCenter","getCenterInternal","animateInternal","getConstrainedCenter","zoomByDelta","opt_anchor","newResolution","getResolutionForZoom","DoubleClickZoom","delta_","stopEvent","PointerInteraction","handleDownEvent","handleDragEvent","handleMoveEvent","handleUpEvent","stopDown","handlingDownUpSequence","trackedPointers_","targetPointers","getPointerCount","updateTrackedPointers_","handledUp","handled","isPointerDraggingEvent","Pointer","var_args","conditions","pass","altShiftKeysOnly","altKey","metaKey","activeElement","focusWithTabindex","hasAttribute","always","mouseActionButton","noModifierKeys","shiftKeyOnly","targetNotEditable","tagName","mouseOnly","pointerType","primaryAction","isPrimary","DragPan","kinetic_","kinetic","lastCentroid","lastPointersCount_","panning_","condition","condition_","onFocusOnly","noKinetic_","beginInteraction","centroid","adjustCenterInternal","getDistance","getAngle","centerpx","dest","endInteraction","DragRotate","lastAngle_","getConstraints","theta","adjustRotationInternal","RenderBox","geometry_","startPixel_","endPixel_","render_","startPixel","endPixel","px","setPixels","createOrUpdateGeometry","pixels","DragBoxEventType","BOXSTART","BOXDRAG","BOXEND","BOXCANCEL","DragBoxEvent","DragBox","box_","minArea_","minArea","onBoxEnd","boxEndCondition_","boxEndCondition","defaultBoxEndCondition","completeBox","DragZoom","out_","out","rotatedExtent","rotatedExtentForGeometry","getResolutionForExtentInternal","fitInternal","UP","DOWN","KeyboardPan","defaultCondition_","pixelDelta_","pixelDelta","keyEvent","keyCode","KeyCode","mapUnitsDelta","KeyboardZoom","Kinetic","decay","minVelocity","delay","decay_","minVelocity_","delay_","points_","angle_","initialVelocity_","lastIndex","firstIndex","Mode","TRACKPAD","MouseWheelZoom","totalDelta_","lastDelta_","timeout_","timeout","useAnchor_","useAnchor","constrainResolution_","constrainResolution","lastAnchor_","startTime_","timeoutId_","mode_","trackpadEventGap_","trackpadTimeoutId_","deltaPerZoom_","endInteraction_","wheelEvent","deltaMode","WheelEvent","DOM_DELTA_PIXEL","DOM_DELTA_LINE","getConstrainResolution","adjustZoom","timeLeft","handleWheelZoom_","setMouseAnchor","PinchRotate","pointerOptions","rotating_","rotationDelta_","threshold_","threshold","rotationDelta","touch0","touch1","PinchZoom","lastDistance_","lastScaleDelta_","scaleDelta","adjustResolutionInternal","direction","altShiftDragRotate","doubleClickZoom","zoomDelta","zoomDuration","dragPan","pinchRotate","pinchZoom","keyboard","mouseWheelZoom","shiftDragZoom","ua","FIREFOX","WEBKIT","MAC","DEVICE_PIXEL_RATIO","devicePixelRatio","WORKER_OFFSCREEN_CANVAS","WorkerGlobalScope","IMAGE_DECODE","decode","PASSIVE_EVENT_LISTENERS","ImageBase","ImageWrapper","imageLoadFunction","imageLoadFunction_","listenImage","loadHandler","errorHandler","listening","decoding","geometryFunction_","defaultGeometryFunction","hitDetectionRenderer_","stroke_","zIndex_","setRenderer","setHitDetectionRenderer","setFill","setStroke","toFunction","defaultStyles","createDefaultStyle","DEFAULT_RADIUS","c1","c2","opt_radius","lat1","lat2","deltaLatBy2","deltaLonBy2","bearing","lon1","dByR","asin","lon","clamp","cosh","log2","LOG2E","squaredSegmentDistance","solveLinearSystem","mat","maxRow","maxEl","absValue","coef","toDegrees","angleInRadians","toRadians","angleInDegrees","modulo","lerp","decimals","DEFAULT_FILL_COLOR","font_","scaleArray_","textAlign_","textBaseline_","maxAngle_","placement_","overflow_","offsetX_","offsetY_","backgroundFill_","backgroundStroke_","padding_","setOverflow","setFont","setMaxAngle","setOffsetX","setOffsetY","setPlacement","setRotateWithView","setScale","setTextAlign","setTextBaseline","setBackgroundFill","setBackgroundStroke","setPadding","AssertionError","lineCap_","lineDash_","lineDashOffset_","lineJoin_","miterLimit_","setLineCap","setLineDashOffset","setLineJoin","setMiterLimit","setWidth","disable","none","createSnapToN","opt_isMoving","createSnapToZero","opt_tolerance","assert","assertion","errorCode","tmpTransform","Geometry","extentRevision_","simplifiedGeometryMaxMinSquaredTolerance","simplifiedGeometryRevision","simplifyTransformedInternal","revision","getSimplifiedGeometry","coord","getClosestPoint","opt_closestPoint","computeExtent","opt_sy","simplify","TILE_PIXELS","inCoordinates","outCoordinates","pixelExtent","projectedExtent","getFirstCoordinate","getLastCoordinate","getLayout","getStrideForLayout","nesting","getLayoutForStride","transformGeom2D","simpleGeometry","numberSafeCompareFunction","linearFindNearest","reverseSubArray","extension","arr1","arr2","len1","isSorted","opt_func","opt_strict","compare","every","currentVal","CENTER","RESOLUTION","ROTATION","createExtent","onlyCenter","smooth","opt_centerShift","viewWidth","viewHeight","shiftX","shiftY","getViewportClampedResolution","viewportSize","showFullExtent","xResolution","yResolution","getSmoothClampedResolution","createSnapToResolutions","opt_smooth","opt_maxExtent","opt_showFullExtent","cappedMaxRes","capped","createSnapToPower","power","opt_minResolution","minZoomLevel","cappedZoomLevel","zoomLevel","createMinMaxResolution","DEFAULT_MIN_ZOOM","hints_","animations_","updateAnimationKey_","projection_","viewportSize_","targetCenter_","targetResolution_","targetRotation_","nextCenter_","nextResolution_","nextRotation_","cancelAnchor_","applyOptions_","ViewProperty","resolutionConstraintInfo","createResolutionConstraint","maxResolution_","minResolution_","minZoom_","centerConstraint","createCenterConstraint","resolutionConstraint","constraint","rotationConstraint","createRotationConstraint","constraints_","setCenterInternal","setResolution","oldPadding","newPadding","getUpdatedOptions_","newOptions","animationCount","series","animation","complete","sourceRotation","targetRotation","isNoopAnimation","setHint","updateAnimations_","animationCallback","getInteracting","more","seriesComplete","elapsed","fraction","progress","getViewportSize_","constrainedResolution","calculateCenterZoom","applyTargetState_","constrainedRotation","calculateCenterRotate","Boolean","opt_rotation","opt_hints","calculateExtent","calculateExtentInternal","getViewportSizeMinusPadding_","getZoomForResolution","setConstrainResolution","enabled","getResolutionForExtent","getResolutionForValueFunction","opt_power","getConstrainedResolution","getValueForResolutionFunction","logPower","reducedSize","calculateCenterOn","nearest","baseLevel","fit","geometryOrExtent","cosAngle","sinAngle","minRotX","minRotY","maxRotX","maxRotY","rotX","rotY","centerRot","centerOn","centerOnInternal","calculateCenterShift","centerShift","shiftedCenter","adjustCenter","deltaCoordinates","setCenter","adjustResolution","isMoving","adjustRotation","newRotation","hint","opt_doNotCancelAnims","opt_forceMoving","newCenter","opt_resolutionDirection","endInteractionInternal","opt_targetResolution","targetZoom","targetRes","returnValue","smoothExtentConstraint","constrainOnlyCenter","defaultMaxZoom","defaultZoomFactor","smoothResolutionConstraint","projExtent","defaultMaxResolution","defaultMinResolution","enableRotation","constrainRotation","coordinate1","coordinate2","getWorldsAway","opt_sourceExtentWidth","sourceExtentWidth","formatted","zone","toLocal","transformStringDiv","setFromArray","transform1","transform2","makeScale","compose","makeInverse","det","determinant","transformString","ImageStyle","displacement_","setDisplacement","deflateCoordinate","deflateCoordinates","deflateCoordinatesArray","coordinatess","API_ENDPOINT","Buffer","from","filename","MIX_API_URL","watch","inflateCoordinates","opt_coordinates","inflateCoordinatesArray","opt_coordinatess","inflateMultiCoordinatesArray","opt_coordinatesss","coordinatesss","transform2D","events","FullScreenEventType","ENTERFULLSCREEN","LEAVEFULLSCREEN","cssClassName_","documentListeners_","activeClassName_","activeClassName","inactiveClassName_","inactiveClassName","labelNode_","labelActive","labelActiveNode_","button_","keys_","source_","isInFullscreen_","boundHandleMapTargetChange_","handleMapTargetChange_","handleFullScreen_","isFullScreenSupported","isFullScreen","exitFullScreen","requestFullScreenWithKeys","requestFullScreen","handleFullScreenChange_","wasInFullscreen","setClassName_","fullscreen","_a","_b","_c","nextClassName","oldMap","requestFullscreen","fullscreenEnabled","fullscreenElement","exitFullscreen","easeIn","easeOut","inAndOut","linear","CLASS_HIDDEN","CLASS_UNSELECTABLE","CLASS_UNSUPPORTED","CLASS_CONTROL","CLASS_COLLAPSED","fontRegEx","fontRegExMatchIndex","getFontParameters","fontSpec","weight","variant","families","family","cssOpacity","RegularShape","hitDetectionCanvas_","points","radius_","radius1","radius2_","radius2","renderOptions_","getPoints","getRadius","getRadius2","createHitDetectionCanvas_","renderOptions","draw_","calculateLineJoinSize_","r1","r2","miterRatio","maxr","bevelAdd","aa","bb","ee","innerMiterRatio","innerLength","createRenderOptions","maxRadius","createPath_","drawHitDetectionCanvas_","startAngle","angle0","radiusC","CircleStyle","setRadius","BaseEvent","getRandomValues","rnds8","rng","crypto","msCrypto","disposed","containsTileRange","defaultFont","defaultFillStyle","defaultLineCap","defaultLineDash","defaultLineDashOffset","defaultLineJoin","defaultMiterLimit","defaultStrokeStyle","defaultTextAlign","defaultTextBaseline","defaultPadding","defaultLineWidth","checkedFonts","labelCache","measureFont","measureContext","textHeights","registerFont","interval","referenceWidth","retries","referenceFonts","isAvailable","fontStyle","fontWeight","fontFamily","available","referenceFont","measureTextWidth","check","done","fonts","clearInterval","setInterval","measureTextHeight","measureElement","metrics","measureText","actualBoundingBoxAscent","actualBoundingBoxDescent","minHeight","maxHeight","border","measureTextWidths","currentWidth","drawImageOrLabel","labelOrImage","executeLabelInstructions","ObjectEvent","oldValue","BaseObject","opt_values","values_","notify","opt_silent","unset","LENGTH","CollectionEvent","opt_element","opt_index","unique_","array_","assertUnique_","updateLength_","getLength","insertAt","elem","removeAt","setAt","opt_except","asColorLike","v4","buf","rnds","random","RADIANS","FEET","USFEET","attributions_","adaptAttributions","attributionsCollapsible_","wrapX_","interpolate_","viewResolver","viewRejector","viewPromise_","reject","setAttributions","attributionLike"],"mappings":"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","file":"js/chunk-3f3856c2.8baf73ee.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 TOUCHMOVE: 'touchmove',\n WHEEL: 'wheel',\n};\n//# sourceMappingURL=EventType.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/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","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","/**\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 composed. When dispatched by the map, the event object will not have\n * a `context` set. When dispatched by a layer, the event object will have a `context` set. Only\n * WebGL layers currently dispatch this event.\n * @event module:ol/render/Event~RenderEvent#precompose\n * @api\n */\n PRECOMPOSE: 'precompose',\n /**\n * Triggered after layers are composed. When dispatched by the map, the event object will not have\n * a `context` set. When dispatched by a layer, the event object will have a `context` set. Only\n * WebGL layers currently dispatch this event.\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/**\n * @typedef {'postrender'|'precompose'|'postcompose'|'rendercomplete'} MapRenderEventTypes\n */\n/**\n * @typedef {'postrender'|'prerender'} LayerRenderEventTypes\n */\n//# sourceMappingURL=EventType.js.map","import { WORKER_OFFSCREEN_CANVAS } from './has.js';\n/**\n * @module ol/dom\n */\n//FIXME Move this function to the canvas module\n/**\n * Create an html canvas element and returns its 2d context.\n * @param {number} [opt_width] Canvas width.\n * @param {number} [opt_height] Canvas height.\n * @param {Array} [opt_canvasPool] Canvas pool to take existing canvas from.\n * @param {CanvasRenderingContext2DSettings} [opt_Context2DSettings] CanvasRenderingContext2DSettings\n * @return {CanvasRenderingContext2D} The context.\n */\nexport function createCanvasContext2D(opt_width, opt_height, opt_canvasPool, opt_Context2DSettings) {\n /** @type {HTMLCanvasElement|OffscreenCanvas} */\n var canvas;\n if (opt_canvasPool && opt_canvasPool.length) {\n canvas = opt_canvasPool.shift();\n }\n else if (WORKER_OFFSCREEN_CANVAS) {\n canvas = new OffscreenCanvas(opt_width || 300, opt_height || 300);\n }\n else {\n canvas = document.createElement('canvas');\n }\n if (opt_width) {\n canvas.width = opt_width;\n }\n if (opt_height) {\n canvas.height = opt_height;\n }\n //FIXME Allow OffscreenCanvasRenderingContext2D as return type\n return /** @type {CanvasRenderingContext2D} */ (canvas.getContext('2d', opt_Context2DSettings));\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 * @return {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/extent\n */\nimport Corner from './extent/Corner.js';\nimport Relationship from './extent/Relationship.js';\nimport { assert } from './asserts.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] &&\n extent2[2] <= extent1[2] &&\n extent1[1] <= extent2[1] &&\n 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 {import(\"./extent/Relationship.js\").default} 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] &&\n extent1[2] == extent2[2] &&\n extent1[1] == extent2[1] &&\n extent1[3] == extent2[3]);\n}\n/**\n * Determine if two extents are approximately equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {number} tolerance Tolerance in extent coordinate units.\n * @return {boolean} The two extents differ by less than the tolerance.\n */\nexport function approximatelyEquals(extent1, extent2, tolerance) {\n return (Math.abs(extent1[0] - extent2[0]) < tolerance &&\n Math.abs(extent1[2] - extent2[2]) < tolerance &&\n Math.abs(extent1[1] - extent2[1]) < tolerance &&\n Math.abs(extent1[3] - extent2[3]) < tolerance);\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 {import(\"./extent/Corner.js\").default} 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) && !(startRel & Relationship.ABOVE)) {\n // potentially intersects top\n x = endX - (endY - maxY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects &&\n !!(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 &&\n !!(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 &&\n !!(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 * @param {number} [opt_stops] Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {Extent} Extent.\n * @api\n */\nexport function applyTransform(extent, transformFn, opt_extent, opt_stops) {\n var coordinates = [];\n if (opt_stops > 1) {\n var width = extent[2] - extent[0];\n var height = extent[3] - extent[1];\n for (var i = 0; i < opt_stops; ++i) {\n coordinates.push(extent[0] + (width * i) / opt_stops, extent[1], extent[2], extent[1] + (height * i) / opt_stops, extent[2] - (width * i) / opt_stops, extent[3], extent[0], extent[3] - (height * i) / opt_stops);\n }\n }\n else {\n coordinates = [\n extent[0],\n extent[1],\n extent[2],\n extent[1],\n extent[2],\n extent[3],\n extent[0],\n extent[3],\n ];\n }\n transformFn(coordinates, coordinates, 2);\n var xs = [];\n var ys = [];\n for (var i = 0, l = coordinates.length; i < l; i += 2) {\n xs.push(coordinates[i]);\n ys.push(coordinates[i + 1]);\n }\n return _boundingExtentXYs(xs, ys, opt_extent);\n}\n/**\n * Modifies the provided extent in-place to be within the real world\n * extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Extent} The extent within the real world extent.\n */\nexport function wrapX(extent, projection) {\n var projectionExtent = projection.getExtent();\n var center = getCenter(extent);\n if (projection.canWrapX() &&\n (center[0] < projectionExtent[0] || center[0] >= projectionExtent[2])) {\n var worldWidth = getWidth(projectionExtent);\n var worldsAway = Math.floor((center[0] - projectionExtent[0]) / worldWidth);\n var offset = worldsAway * worldWidth;\n extent[0] -= offset;\n extent[2] -= offset;\n }\n return extent;\n}\n//# sourceMappingURL=extent.js.map","/**\n * @module ol/renderer/canvas/common\n */\n/**\n * Context options to disable image smoothing.\n * @type {Object}\n */\nexport var IMAGE_SMOOTHING_DISABLED = {\n imageSmoothingEnabled: false,\n msImageSmoothingEnabled: false,\n};\n/**\n * Context options to enable image smoothing.\n * @type {Object}\n */\nexport var IMAGE_SMOOTHING_ENABLED = {\n imageSmoothingEnabled: true,\n msImageSmoothingEnabled: true,\n};\n//# sourceMappingURL=common.js.map","\r\n\r\n\r\n\r\n\r\n\r\n","import { render } from \"./Jobs.vue?vue&type=template&id=6c76ac2f&scoped=true\"\nimport script from \"./Jobs.vue?vue&type=script&lang=js\"\nexport * from \"./Jobs.vue?vue&type=script&lang=js\"\n\nimport \"./Jobs.vue?vue&type=style&index=0&id=6c76ac2f&scoped=true&lang=css\"\nimport \"@vueform/multiselect/themes/default.css?vue&type=style&index=1&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\s.arshad\\\\Documents\\\\GitHub\\\\link-portal\\\\link\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6c76ac2f\"]])\n\nexport default __exports__","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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 Event from './Event.js';\nimport { VOID } from '../functions.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_ = null;\n /**\n * @private\n * @type {Object}\n */\n _this.dispatching_ = null;\n /**\n * @private\n * @type {Object>}\n */\n _this.listeners_ = null;\n return _this;\n }\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n Target.prototype.addEventListener = function (type, listener) {\n if (!type || !listener) {\n return;\n }\n var listeners = this.listeners_ || (this.listeners_ = {});\n var listenersForType = listeners[type] || (listeners[type] = []);\n if (listenersForType.indexOf(listener) === -1) {\n listenersForType.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 {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 /** @type {import(\"./Event.js\").default|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_ && this.listeners_[type];\n var propagate;\n if (listeners) {\n var dispatching = this.dispatching_ || (this.dispatching_ = {});\n var pendingRemovals = this.pendingRemovals_ || (this.pendingRemovals_ = {});\n if (!(type in dispatching)) {\n dispatching[type] = 0;\n pendingRemovals[type] = 0;\n }\n ++dispatching[type];\n for (var i = 0, ii = listeners.length; i < ii; ++i) {\n if ('handleEvent' in listeners[i]) {\n propagate = /** @type {import(\"../events.js\").ListenerObject} */ (listeners[i]).handleEvent(evt);\n }\n else {\n propagate = /** @type {import(\"../events.js\").ListenerFunction} */ (listeners[i]).call(this, evt);\n }\n if (propagate === false || evt.propagationStopped) {\n propagate = false;\n break;\n }\n }\n --dispatching[type];\n if (dispatching[type] === 0) {\n var pr = pendingRemovals[type];\n delete pendingRemovals[type];\n while (pr--) {\n this.removeEventListener(type, VOID);\n }\n delete dispatching[type];\n }\n return propagate;\n }\n };\n /**\n * Clean up.\n */\n Target.prototype.disposeInternal = function () {\n this.listeners_ && 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|undefined} Listeners.\n */\n Target.prototype.getListeners = function (type) {\n return (this.listeners_ && this.listeners_[type]) || undefined;\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 if (!this.listeners_) {\n return false;\n }\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\").Listener} listener Listener.\n */\n Target.prototype.removeEventListener = function (type, listener) {\n var listeners = this.listeners_ && this.listeners_[type];\n if (listeners) {\n var index = listeners.indexOf(listener);\n if (index !== -1) {\n if (this.pendingRemovals_ && type in this.pendingRemovals_) {\n // make listener a no-op, and remove later in #dispatchEvent()\n listeners[index] = VOID;\n ++this.pendingRemovals_[type];\n }\n else {\n listeners.splice(index, 1);\n if (listeners.length === 0) {\n delete this.listeners_[type];\n }\n }\n }\n }\n };\n return Target;\n}(Disposable));\nexport default Target;\n//# sourceMappingURL=Target.js.map","/**\n * @module ol/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.12.0';\n//# sourceMappingURL=util.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/renderer/Layer\n */\nimport EventType from '../events/EventType.js';\nimport ImageState from '../ImageState.js';\nimport Observable from '../Observable.js';\nimport SourceState from '../source/State.js';\nimport { abstract } from '../util.js';\n/**\n * @template {import(\"../layer/Layer.js\").default} LayerType\n */\nvar LayerRenderer = /** @class */ (function (_super) {\n __extends(LayerRenderer, _super);\n /**\n * @param {LayerType} layer Layer.\n */\n function LayerRenderer(layer) {\n var _this = _super.call(this) || this;\n /** @private */\n _this.boundHandleImageChange_ = _this.handleImageChange_.bind(_this);\n /**\n * @protected\n * @type {LayerType}\n */\n _this.layer_ = layer;\n /**\n * @type {import(\"../render/canvas/ExecutorGroup\").default}\n */\n _this.declutterExecutorGroup = null;\n return _this;\n }\n /**\n * Asynchronous layer level hit detection.\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @return {Promise>} Promise that resolves with\n * an array of features.\n */\n LayerRenderer.prototype.getFeatures = function (pixel) {\n return abstract();\n };\n /**\n * Determine whether render should be called.\n * @abstract\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @return {boolean} Layer is ready to be rendered.\n */\n LayerRenderer.prototype.prepareFrame = function (frameState) {\n return abstract();\n };\n /**\n * Render the layer.\n * @abstract\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @param {HTMLElement} target Target that may be used to render content to.\n * @return {HTMLElement} The rendered element.\n */\n LayerRenderer.prototype.renderFrame = function (frameState, target) {\n return abstract();\n };\n /**\n * @param {Object>} tiles Lookup of loaded tiles by zoom level.\n * @param {number} zoom Zoom level.\n * @param {import(\"../Tile.js\").default} tile Tile.\n * @return {boolean|void} If `false`, the tile will not be considered loaded.\n */\n LayerRenderer.prototype.loadedTileCallback = function (tiles, zoom, tile) {\n if (!tiles[zoom]) {\n tiles[zoom] = {};\n }\n tiles[zoom][tile.tileCoord.toString()] = tile;\n return undefined;\n };\n /**\n * Create a function that adds loaded tiles to the tile lookup.\n * @param {import(\"../source/Tile.js\").default} source Tile source.\n * @param {import(\"../proj/Projection.js\").default} projection Projection of the tiles.\n * @param {Object>} tiles Lookup of loaded tiles by zoom level.\n * @return {function(number, import(\"../TileRange.js\").default):boolean} A function that can be\n * called with a zoom level and a tile range to add loaded tiles to the lookup.\n * @protected\n */\n LayerRenderer.prototype.createLoadedTileFinder = function (source, projection, tiles) {\n return (\n /**\n * @param {number} zoom Zoom level.\n * @param {import(\"../TileRange.js\").default} tileRange Tile range.\n * @return {boolean} The tile range is fully loaded.\n * @this {LayerRenderer}\n */\n function (zoom, tileRange) {\n var callback = this.loadedTileCallback.bind(this, tiles, zoom);\n return source.forEachLoadedTile(projection, zoom, tileRange, callback);\n }.bind(this));\n };\n /**\n * @abstract\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {import(\"./vector.js\").FeatureCallback} callback Feature callback.\n * @param {Array>} matches The hit detected matches with tolerance.\n * @return {T|undefined} Callback result.\n * @template T\n */\n LayerRenderer.prototype.forEachFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, callback, matches) {\n return undefined;\n };\n /**\n * @abstract\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @return {Uint8ClampedArray|Uint8Array} The result. If there is no data at the pixel\n * location, null will be returned. If there is data, but pixel values cannot be\n * returned, and empty array will be returned.\n */\n LayerRenderer.prototype.getDataAtPixel = function (pixel, frameState, hitTolerance) {\n return null;\n };\n /**\n * @return {LayerType} Layer.\n */\n LayerRenderer.prototype.getLayer = function () {\n return this.layer_;\n };\n /**\n * Perform action necessary to get the layer rendered after new fonts have loaded\n * @abstract\n */\n LayerRenderer.prototype.handleFontsChanged = function () { };\n /**\n * Handle changes in image state.\n * @param {import(\"../events/Event.js\").default} event Image change event.\n * @private\n */\n LayerRenderer.prototype.handleImageChange_ = function (event) {\n var image = /** @type {import(\"../Image.js\").default} */ (event.target);\n if (image.getState() === ImageState.LOADED) {\n this.renderIfReadyAndVisible();\n }\n };\n /**\n * Load the image if not already loaded, and register the image change\n * listener if needed.\n * @param {import(\"../ImageBase.js\").default} image Image.\n * @return {boolean} `true` if the image is already loaded, `false` otherwise.\n * @protected\n */\n LayerRenderer.prototype.loadImage = function (image) {\n var imageState = image.getState();\n if (imageState != ImageState.LOADED && imageState != ImageState.ERROR) {\n image.addEventListener(EventType.CHANGE, this.boundHandleImageChange_);\n }\n if (imageState == ImageState.IDLE) {\n image.load();\n imageState = image.getState();\n }\n return imageState == ImageState.LOADED;\n };\n /**\n * @protected\n */\n LayerRenderer.prototype.renderIfReadyAndVisible = function () {\n var layer = this.getLayer();\n if (layer.getVisible() && layer.getSourceState() == SourceState.READY) {\n layer.changed();\n }\n };\n return LayerRenderer;\n}(Observable));\nexport default LayerRenderer;\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/renderer/canvas/Layer\n */\nimport LayerRenderer from '../Layer.js';\nimport RenderEvent from '../../render/Event.js';\nimport RenderEventType from '../../render/EventType.js';\nimport { apply as applyTransform, compose as composeTransform, create as createTransform, } from '../../transform.js';\nimport { asArray } from '../../color.js';\nimport { containsCoordinate, getBottomLeft, getBottomRight, getTopLeft, getTopRight, } from '../../extent.js';\nimport { createCanvasContext2D } from '../../dom.js';\nimport { equals } from '../../array.js';\n/**\n * @abstract\n * @template {import(\"../../layer/Layer.js\").default} LayerType\n * @extends {LayerRenderer}\n */\nvar CanvasLayerRenderer = /** @class */ (function (_super) {\n __extends(CanvasLayerRenderer, _super);\n /**\n * @param {LayerType} layer Layer.\n */\n function CanvasLayerRenderer(layer) {\n var _this = _super.call(this, layer) || this;\n /**\n * @protected\n * @type {HTMLElement}\n */\n _this.container = null;\n /**\n * @protected\n * @type {number}\n */\n _this.renderedResolution;\n /**\n * A temporary transform. The values in this transform should only be used in a\n * function that sets the values.\n * @protected\n * @type {import(\"../../transform.js\").Transform}\n */\n _this.tempTransform = createTransform();\n /**\n * The transform for rendered pixels to viewport CSS pixels. This transform must\n * be set when rendering a frame and may be used by other functions after rendering.\n * @protected\n * @type {import(\"../../transform.js\").Transform}\n */\n _this.pixelTransform = createTransform();\n /**\n * The transform for viewport CSS pixels to rendered pixels. This transform must\n * be set when rendering a frame and may be used by other functions after rendering.\n * @protected\n * @type {import(\"../../transform.js\").Transform}\n */\n _this.inversePixelTransform = createTransform();\n /**\n * @type {CanvasRenderingContext2D}\n */\n _this.context = null;\n /**\n * @type {boolean}\n */\n _this.containerReused = false;\n /**\n * @private\n * @type {CanvasRenderingContext2D}\n */\n _this.pixelContext_ = null;\n return _this;\n }\n /**\n * @param {import('../../PluggableMap.js').FrameState} frameState Frame state.\n * @return {string} Background color.\n */\n CanvasLayerRenderer.prototype.getBackground = function (frameState) {\n var layer = this.getLayer();\n var background = layer.getBackground();\n if (typeof background === 'function') {\n background = background(frameState.viewState.resolution);\n }\n return background || undefined;\n };\n /**\n * Get a rendering container from an existing target, if compatible.\n * @param {HTMLElement} target Potential render target.\n * @param {string} transform CSS Transform.\n * @param {number} opacity Opacity.\n * @param {string} [opt_backgroundColor] Background color.\n */\n CanvasLayerRenderer.prototype.useContainer = function (target, transform, opacity, opt_backgroundColor) {\n var layerClassName = this.getLayer().getClassName();\n var container, context;\n if (target &&\n target.className === layerClassName &&\n target.style.opacity === '' &&\n opacity === 1 &&\n (!opt_backgroundColor ||\n (target.style.backgroundColor &&\n equals(asArray(target.style.backgroundColor), asArray(opt_backgroundColor))))) {\n var canvas = target.firstElementChild;\n if (canvas instanceof HTMLCanvasElement) {\n context = canvas.getContext('2d');\n }\n }\n if (context && context.canvas.style.transform === transform) {\n // Container of the previous layer renderer can be used.\n this.container = target;\n this.context = context;\n this.containerReused = true;\n }\n else if (this.containerReused) {\n // Previously reused container cannot be used any more.\n this.container = null;\n this.context = null;\n this.containerReused = false;\n }\n if (!this.container) {\n container = document.createElement('div');\n container.className = layerClassName;\n var style = container.style;\n style.position = 'absolute';\n style.width = '100%';\n style.height = '100%';\n if (opt_backgroundColor) {\n style.backgroundColor = opt_backgroundColor;\n }\n context = createCanvasContext2D();\n var canvas = context.canvas;\n container.appendChild(canvas);\n style = canvas.style;\n style.position = 'absolute';\n style.left = '0';\n style.transformOrigin = 'top left';\n this.container = container;\n this.context = context;\n }\n };\n /**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n * @param {import(\"../../extent.js\").Extent} extent Clip extent.\n * @protected\n */\n CanvasLayerRenderer.prototype.clipUnrotated = function (context, frameState, extent) {\n var topLeft = getTopLeft(extent);\n var topRight = getTopRight(extent);\n var bottomRight = getBottomRight(extent);\n var bottomLeft = getBottomLeft(extent);\n applyTransform(frameState.coordinateToPixelTransform, topLeft);\n applyTransform(frameState.coordinateToPixelTransform, topRight);\n applyTransform(frameState.coordinateToPixelTransform, bottomRight);\n applyTransform(frameState.coordinateToPixelTransform, bottomLeft);\n var inverted = this.inversePixelTransform;\n applyTransform(inverted, topLeft);\n applyTransform(inverted, topRight);\n applyTransform(inverted, bottomRight);\n applyTransform(inverted, bottomLeft);\n context.save();\n context.beginPath();\n context.moveTo(Math.round(topLeft[0]), Math.round(topLeft[1]));\n context.lineTo(Math.round(topRight[0]), Math.round(topRight[1]));\n context.lineTo(Math.round(bottomRight[0]), Math.round(bottomRight[1]));\n context.lineTo(Math.round(bottomLeft[0]), Math.round(bottomLeft[1]));\n context.clip();\n };\n /**\n * @param {import(\"../../render/EventType.js\").default} type Event type.\n * @param {CanvasRenderingContext2D} context Context.\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n * @private\n */\n CanvasLayerRenderer.prototype.dispatchRenderEvent_ = function (type, context, frameState) {\n var layer = this.getLayer();\n if (layer.hasListener(type)) {\n var event_1 = new RenderEvent(type, this.inversePixelTransform, frameState, context);\n layer.dispatchEvent(event_1);\n }\n };\n /**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n * @protected\n */\n CanvasLayerRenderer.prototype.preRender = function (context, frameState) {\n this.dispatchRenderEvent_(RenderEventType.PRERENDER, context, frameState);\n };\n /**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n * @protected\n */\n CanvasLayerRenderer.prototype.postRender = function (context, frameState) {\n this.dispatchRenderEvent_(RenderEventType.POSTRENDER, context, frameState);\n };\n /**\n * Creates a transform for rendering to an element that will be rotated after rendering.\n * @param {import(\"../../coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {number} pixelRatio Pixel ratio.\n * @param {number} width Width of the rendered element (in pixels).\n * @param {number} height Height of the rendered element (in pixels).\n * @param {number} offsetX Offset on the x-axis in view coordinates.\n * @protected\n * @return {!import(\"../../transform.js\").Transform} Transform.\n */\n CanvasLayerRenderer.prototype.getRenderTransform = function (center, resolution, rotation, pixelRatio, width, height, offsetX) {\n var dx1 = width / 2;\n var dy1 = height / 2;\n var sx = pixelRatio / resolution;\n var sy = -sx;\n var dx2 = -center[0] + offsetX;\n var dy2 = -center[1];\n return composeTransform(this.tempTransform, dx1, dy1, sx, sy, -rotation, dx2, dy2);\n };\n /**\n * @param {import(\"../../pixel.js\").Pixel} pixel Pixel.\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @return {Uint8ClampedArray|Uint8Array} The result. If there is no data at the pixel\n * location, null will be returned. If there is data, but pixel values cannot be\n * returned, and empty array will be returned.\n */\n CanvasLayerRenderer.prototype.getDataAtPixel = function (pixel, frameState, hitTolerance) {\n var renderPixel = applyTransform(this.inversePixelTransform, pixel.slice());\n var context = this.context;\n var layer = this.getLayer();\n var layerExtent = layer.getExtent();\n if (layerExtent) {\n var renderCoordinate = applyTransform(frameState.pixelToCoordinateTransform, pixel.slice());\n /** get only data inside of the layer extent */\n if (!containsCoordinate(layerExtent, renderCoordinate)) {\n return null;\n }\n }\n var x = Math.round(renderPixel[0]);\n var y = Math.round(renderPixel[1]);\n var pixelContext = this.pixelContext_;\n if (!pixelContext) {\n var pixelCanvas = document.createElement('canvas');\n pixelCanvas.width = 1;\n pixelCanvas.height = 1;\n pixelContext = pixelCanvas.getContext('2d');\n this.pixelContext_ = pixelContext;\n }\n pixelContext.clearRect(0, 0, 1, 1);\n var data;\n try {\n pixelContext.drawImage(context.canvas, x, y, 1, 1, 0, 0, 1, 1);\n data = pixelContext.getImageData(0, 0, 1, 1).data;\n }\n catch (err) {\n if (err.name === 'SecurityError') {\n // tainted canvas, we assume there is data at the given pixel (although there might not be)\n this.pixelContext_ = null;\n return new Uint8Array();\n }\n return data;\n }\n if (data[3] === 0) {\n return null;\n }\n return data;\n };\n return CanvasLayerRenderer;\n}(LayerRenderer));\nexport default CanvasLayerRenderer;\n//# sourceMappingURL=Layer.js.map","\r\n\r\n\r\n\r\n\r\n","import { render } from \"./Pagination.vue?vue&type=template&id=4aceedef\"\nimport script from \"./Pagination.vue?vue&type=script&lang=js\"\nexport * from \"./Pagination.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"C:\\\\Users\\\\s.arshad\\\\Documents\\\\GitHub\\\\link-portal\\\\link\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","/**\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","export * from \"-!../../../mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--7-oneOf-1-2!./default.css?vue&type=style&index=1&lang=css\"","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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 BaseLayer from './Base.js';\nimport EventType from '../events/EventType.js';\nimport LayerProperty from './Property.js';\nimport RenderEventType from '../render/EventType.js';\nimport SourceState from '../source/State.js';\nimport { assert } from '../asserts.js';\nimport { assign } from '../obj.js';\nimport { listen, unlistenByKey } from '../events.js';\n/**\n * @typedef {function(import(\"../PluggableMap.js\").FrameState):HTMLElement} RenderFunction\n */\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} LayerOnSignature\n */\n/**\n * @template {import(\"../source/Source.js\").default} SourceType\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 * @property {SourceType} [source] Source for this layer. If not provided to the constructor,\n * the source can be set by calling {@link module:ol/layer/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 * @property {Object} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n/**\n * @typedef {Object} State\n * @property {import(\"./Layer.js\").default} layer Layer.\n * @property {number} opacity Opacity, the value is rounded to two digits to appear after the decimal point.\n * @property {import(\"../source/State.js\").default} sourceState SourceState.\n * @property {boolean} visible Visible.\n * @property {boolean} managed Managed.\n * @property {import(\"../extent.js\").Extent} [extent] Extent.\n * @property {number} zIndex ZIndex.\n * @property {number} maxResolution Maximum resolution.\n * @property {number} minResolution Minimum resolution.\n * @property {number} minZoom Minimum zoom.\n * @property {number} maxZoom Maximum zoom.\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 import(\"../PluggableMap.js\").default#addLayer map.addLayer()}. Components\n * like {@link module:ol/interaction/Draw~Draw} 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 import(\"../PluggableMap.js\").default#forEachLayerAtPixel 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 * @template {import(\"../renderer/Layer.js\").default} RendererType\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 * @type {LayerOnSignature}\n */\n _this.on;\n /***\n * @type {LayerOnSignature}\n */\n _this.once;\n /***\n * @type {LayerOnSignature}\n */\n _this.un;\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 {RendererType}\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.addChangeListener(LayerProperty.SOURCE, _this.handleSourcePropertyChange_);\n var source = options.source\n ? /** @type {SourceType} */ (options.source)\n : null;\n _this.setSource(source);\n return _this;\n }\n /**\n * @param {Array} [opt_array] Array of layers (to be modified in place).\n * @return {Array} Array of layers.\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 * @param {Array} [opt_states] Optional list of layer states (to be modified in place).\n * @return {Array} List of layer states.\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 * @return {import(\"../source/State.js\").default} Source state.\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 if (!this.renderer_) {\n return new Promise(function (resolve) { return resolve([]); });\n }\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 * For use inside the library only.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n Layer.prototype.setMapInternal = function (map) {\n this.set(LayerProperty.MAP, map);\n };\n /**\n * For use inside the library only.\n * @return {import(\"../PluggableMap.js\").default} Map.\n */\n Layer.prototype.getMapInternal = function () {\n return this.get(LayerProperty.MAP);\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~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~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 = \n /** @type {import(\"../render/Event.js\").default} */ (evt);\n var layerStatesArray = renderEvent.frameState.layerStatesArray;\n var layerState = this.getLayerState(false);\n // A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both.\n assert(!layerStatesArray.some(function (arrayLayerState) {\n return arrayLayerState.layer === layerState.layer;\n }), 67);\n layerStatesArray.push(layerState);\n }, this);\n this.mapRenderKey_ = listen(this, EventType.CHANGE, map.render, map);\n this.changed();\n }\n };\n /**\n * Set the layer source.\n * @param {SourceType} source The layer source.\n * @observable\n * @api\n */\n Layer.prototype.setSource = function (source) {\n this.set(LayerProperty.SOURCE, source);\n };\n /**\n * Get the renderer for this layer.\n * @return {RendererType} 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 {RendererType} A layer renderer.\n * @protected\n */\n Layer.prototype.createRenderer = function () {\n return null;\n };\n /**\n * Clean up.\n */\n Layer.prototype.disposeInternal = function () {\n if (this.renderer_) {\n this.renderer_.dispose();\n delete this.renderer_;\n }\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 ||\n 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","/**\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 { squaredDistance, squaredSegmentDistance } 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 : [];\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++] = 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","/**\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 Listener.\n * @property {import(\"./events/Target.js\").EventTargetLike} target Target.\n * @property {string} type 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 * @typedef {Object} ListenerObject\n * @property {ListenerFunction} handleEvent HandleEvent listener function.\n */\n/**\n * @typedef {ListenerFunction|ListenerObject} Listener\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","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,\"undefined\"!=typeof module&&(module.exports=g)});\n\n//# sourceMappingURL=FileSaver.min.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport { CLASS_COLLAPSED, CLASS_CONTROL, CLASS_UNSELECTABLE } from '../css.js';\nimport { equals } from '../array.js';\nimport { inView } from '../layer/Layer.js';\nimport { removeChildren, replaceNode } from '../dom.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|HTMLElement} [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} [expandClassName=className + '-expand'] CSS class name for the\n * collapsed attributions button.\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 {string} [collapseClassName=className + '-collapse'] CSS class name for the\n * expanded attributions button.\n * @property {function(import(\"../MapEvent.js\").default):void} [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,\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_ =\n options.collapsed !== undefined ? options.collapsed : true;\n /**\n * @private\n * @type {boolean}\n */\n _this.userCollapsed_ = _this.collapsed_;\n /**\n * @private\n * @type {boolean}\n */\n _this.overrideCollapsible_ = options.collapsible !== undefined;\n /**\n * @private\n * @type {boolean}\n */\n _this.collapsible_ =\n options.collapsible !== undefined ? 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 expandClassName = options.expandClassName !== undefined\n ? options.expandClassName\n : className + '-expand';\n var collapseLabel = options.collapseLabel !== undefined ? options.collapseLabel : '\\u203A';\n var collapseClassName = options.collapseClassName !== undefined\n ? options.collapseClassName\n : className + '-collpase';\n if (typeof collapseLabel === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.collapseLabel_ = document.createElement('span');\n _this.collapseLabel_.textContent = collapseLabel;\n _this.collapseLabel_.className = collapseClassName;\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 _this.label_.className = expandClassName;\n }\n else {\n _this.label_ = label;\n }\n var activeLabel = _this.collapsible_ && !_this.collapsed_ ? _this.collapseLabel_ : _this.label_;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.toggleButton_ = document.createElement('button');\n _this.toggleButton_.setAttribute('type', 'button');\n _this.toggleButton_.setAttribute('aria-expanded', String(!_this.collapsed_));\n _this.toggleButton_.title = tipLabel;\n _this.toggleButton_.appendChild(activeLabel);\n _this.toggleButton_.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className +\n ' ' +\n CLASS_UNSELECTABLE +\n ' ' +\n 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.toggleButton_);\n element.appendChild(_this.ulElement_);\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 collapsible = true;\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 collapsible =\n collapsible && source.getAttributionsCollapsible() !== false;\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 if (!this.overrideCollapsible_) {\n this.setCollapsible(collapsible);\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 this.userCollapsed_ = this.collapsed_;\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 this.toggleButton_.setAttribute('aria-expanded', String(!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 (this.userCollapsed_) {\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 this.userCollapsed_ = 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 /**\n * Update the attribution element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n Attribution.prototype.render = function (mapEvent) {\n this.updateElement_(mapEvent.frameState);\n };\n return Attribution;\n}(Control));\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 EventType from '../events/EventType.js';\nimport { CLASS_CONTROL, CLASS_HIDDEN, CLASS_UNSELECTABLE } from '../css.js';\nimport { easeOut } from '../easing.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 {string} [compassClassName='ol-compass'] CSS class name for the compass.\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):void} [render] Function called when the control should\n * be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {function():void} [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,\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 var compassClassName = options.compassClassName !== undefined\n ? options.compassClassName\n : 'ol-compass';\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 = compassClassName;\n _this.label_.textContent = label;\n }\n else {\n _this.label_ = label;\n _this.label_.classList.add(compassClassName);\n }\n var tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';\n var button = document.createElement('button');\n button.className = className + '-reset';\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(_this.label_);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(button);\n _this.callResetNorth_ = options.resetNorth ? options.resetNorth : undefined;\n /**\n * @type {number}\n * @private\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n /**\n * @type {boolean}\n * @private\n */\n _this.autoHide_ = options.autoHide !== undefined ? options.autoHide : true;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.rotation_ = undefined;\n if (_this.autoHide_) {\n _this.element.classList.add(CLASS_HIDDEN);\n }\n return _this;\n }\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Rotate.prototype.handleClick_ = function (event) {\n event.preventDefault();\n if (this.callResetNorth_ !== undefined) {\n this.callResetNorth_();\n }\n else {\n this.resetNorth_();\n }\n };\n /**\n * @private\n */\n Rotate.prototype.resetNorth_ = function () {\n var map = this.getMap();\n var view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n var rotation = view.getRotation();\n if (rotation !== undefined) {\n if (this.duration_ > 0 && rotation % (2 * Math.PI) !== 0) {\n view.animate({\n rotation: 0,\n duration: this.duration_,\n easing: easeOut,\n });\n }\n else {\n view.setRotation(0);\n }\n }\n };\n /**\n * Update the rotate control element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n Rotate.prototype.render = function (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 };\n return Rotate;\n}(Control));\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 Control from './Control.js';\nimport EventType from '../events/EventType.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} [zoomInClassName=className + '-in'] CSS class name for the zoom-in button.\n * @property {string} [zoomOutClassName=className + '-out'] CSS class name for the zoom-out button.\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 zoomInClassName = options.zoomInClassName !== undefined\n ? options.zoomInClassName\n : className + '-in';\n var zoomOutClassName = options.zoomOutClassName !== undefined\n ? options.zoomOutClassName\n : className + '-out';\n var zoomInLabel = options.zoomInLabel !== undefined ? options.zoomInLabel : '+';\n var zoomOutLabel = options.zoomOutLabel !== undefined ? options.zoomOutLabel : '\\u2013';\n var zoomInTipLabel = options.zoomInTipLabel !== undefined ? options.zoomInTipLabel : 'Zoom in';\n var zoomOutTipLabel = options.zoomOutTipLabel !== undefined\n ? options.zoomOutTipLabel\n : 'Zoom out';\n var inElement = document.createElement('button');\n inElement.className = zoomInClassName;\n inElement.setAttribute('type', 'button');\n inElement.title = zoomInTipLabel;\n inElement.appendChild(typeof zoomInLabel === 'string'\n ? document.createTextNode(zoomInLabel)\n : zoomInLabel);\n inElement.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this, delta), false);\n var outElement = document.createElement('button');\n outElement.className = zoomOutClassName;\n outElement.setAttribute('type', 'button');\n outElement.title = zoomOutTipLabel;\n outElement.appendChild(typeof zoomOutLabel === 'string'\n ? document.createTextNode(zoomOutLabel)\n : 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 Attribution from './control/Attribution.js';\nimport Collection from './Collection.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 ? 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/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 a {@link module:ol/coordinate~Coordinate 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 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_ =\n options.worldExtent !== undefined ? options.worldExtent : null;\n /**\n * @private\n * @type {string}\n */\n this.axisOrientation_ =\n options.axisOrientation !== undefined ? 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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 Projection from './Projection.js';\nimport Units from './Units.js';\nimport { cosh } from '../math.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 = [-HALF_SIZE, -HALF_SIZE, HALF_SIZE, HALF_SIZE];\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport var WORLD_EXTENT = [-180, -85, 180, 85];\n/**\n * Maximum safe value in y direction\n * @const\n * @type {number}\n */\nexport var MAX_SAFE_Y = RADIUS * Math.log(Math.tan(Math.PI / 2));\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('http://www.opengis.net/def/crs/EPSG/0/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 for (var i = 0; i < length; i += dimension) {\n output[i] = (HALF_SIZE * input[i]) / 180;\n var y = RADIUS * Math.log(Math.tan((Math.PI * (+input[i + 1] + 90)) / 360));\n if (y > MAX_SAFE_Y) {\n y = MAX_SAFE_Y;\n }\n else if (y < -MAX_SAFE_Y) {\n y = -MAX_SAFE_Y;\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] =\n (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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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:OGC:1.3:CRS84'),\n new EPSG4326Projection('urn:ogc:def:crs:OGC:2:84'),\n new EPSG4326Projection('http://www.opengis.net/def/crs/OGC/1.3/CRS84'),\n new EPSG4326Projection('http://www.opengis.net/gml/srs/epsg.xml#4326', 'neu'),\n new EPSG4326Projection('http://www.opengis.net/def/crs/EPSG/0/4326', 'neu'),\n];\n//# sourceMappingURL=epsg4326.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] ||\n cache[code.replace(/urn:(x-)?ogc:def:crs:EPSG:(.*:)?(\\w+)$/, 'EPSG:$3')] ||\n 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/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\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 Projection from './proj/Projection.js';\nimport Units, { METERS_PER_UNIT } from './proj/Units.js';\nimport { PROJECTIONS as EPSG3857_PROJECTIONS, fromEPSG4326, toEPSG4326, } from './proj/epsg3857.js';\nimport { PROJECTIONS as EPSG4326_PROJECTIONS } from './proj/epsg4326.js';\nimport { add as addProj, clear as clearProj, get as getProj, } from './proj/projections.js';\nimport { add as addTransformFunc, clear as clearTransformFuncs, get as getTransformFunc, } from './proj/transforms.js';\nimport { applyTransform, getWidth } from './extent.js';\nimport { clamp, modulo } from './math.js';\nimport { getDistance } from './sphere.js';\nimport { getWorldsAway } from './coordinate.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 {import(\"./proj/Units.js\").default} [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 =\n (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 if (toEPSG4326_1 === identityTransform && units !== Units.DEGREES) {\n // no transform is available\n pointResolution = resolution * projection.getMetersPerUnit();\n }\n else {\n var vertices = [\n point[0] - resolution / 2,\n point[1],\n point[0] + resolution / 2,\n point[1],\n point[0],\n point[1] - resolution / 2,\n point[0],\n 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 }\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 /** @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 * @param {number} [opt_stops] Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {import(\"./extent.js\").Extent} The transformed extent.\n * @api\n */\nexport function transformExtent(extent, source, destination, opt_stops) {\n var transformFunc = getTransform(source, destination);\n return applyTransform(extent, transformFunc, undefined, opt_stops);\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 * @return {?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 * @return {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 * @return {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 * @return {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 * @return {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 * Return the resolution in user projection units per pixel. If no user projection\n * is set, or source or user projection are missing units, the original resolution\n * is returned.\n * @param {number} resolution Resolution in input projection units per pixel.\n * @param {ProjectionLike} sourceProjection The input projection.\n * @return {number} Resolution in user projection units per pixel.\n */\nexport function toUserResolution(resolution, sourceProjection) {\n if (!userProjection) {\n return resolution;\n }\n var sourceUnits = get(sourceProjection).getUnits();\n var userUnits = userProjection.getUnits();\n return sourceUnits && userUnits\n ? (resolution * METERS_PER_UNIT[sourceUnits]) / METERS_PER_UNIT[userUnits]\n : resolution;\n}\n/**\n * Return the resolution in user projection units per pixel. If no user projection\n * is set, or source or user projection are missing units, the original resolution\n * is returned.\n * @param {number} resolution Resolution in user projection units per pixel.\n * @param {ProjectionLike} destProjection The destination projection.\n * @return {number} Resolution in destination projection units per pixel.\n */\nexport function fromUserResolution(resolution, destProjection) {\n if (!userProjection) {\n return resolution;\n }\n var sourceUnits = get(destProjection).getUnits();\n var userUnits = userProjection.getUnits();\n return sourceUnits && userUnits\n ? (resolution * METERS_PER_UNIT[userUnits]) / METERS_PER_UNIT[sourceUnits]\n : resolution;\n}\n/**\n * Creates a safe coordinate transform function from a coordinate transform function.\n * \"Safe\" means that it can handle wrapping of x-coordinates for global projections,\n * and that coordinates exceeding the source projection validity extent's range will be\n * clamped to the validity range.\n * @param {Projection} sourceProj Source projection.\n * @param {Projection} destProj Destination projection.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} transform Transform function (source to destiation).\n * @return {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} Safe transform function (source to destiation).\n */\nexport function createSafeCoordinateTransform(sourceProj, destProj, transform) {\n return function (coord) {\n var sourceX = coord[0];\n var sourceY = coord[1];\n var transformed, worldsAway;\n if (sourceProj.canWrapX()) {\n var sourceExtent = sourceProj.getExtent();\n var sourceExtentWidth = getWidth(sourceExtent);\n worldsAway = getWorldsAway(coord, sourceProj, sourceExtentWidth);\n if (worldsAway) {\n // Move x to the real world\n sourceX = sourceX - worldsAway * sourceExtentWidth;\n }\n sourceX = clamp(sourceX, sourceExtent[0], sourceExtent[2]);\n sourceY = clamp(sourceY, sourceExtent[1], sourceExtent[3]);\n transformed = transform([sourceX, sourceY]);\n }\n else {\n transformed = transform(coord);\n }\n if (worldsAway && destProj.canWrapX()) {\n // Move transformed coordinate back to the offset world\n transformed[0] += worldsAway * getWidth(destProj.getExtent());\n }\n return transformed;\n };\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","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./SiteMaintenance.vue?vue&type=style&index=0&id=34dae484&scoped=true&lang=css\"","/**\n * @module ol/style/TextPlacement\n */\n/**\n * Text placement. One of `'point'`, `'line'`. Default is `'point'`. Note that\n * `'line'` requires the underlying geometry to be a {@link module:ol/geom/LineString~LineString},\n * {@link module:ol/geom/Polygon~Polygon}, {@link module:ol/geom/MultiLineString~MultiLineString} or\n * {@link module:ol/geom/MultiPolygon~MultiPolygon}.\n * @enum {string}\n */\nexport default {\n POINT: 'point',\n LINE: 'line',\n};\n//# sourceMappingURL=TextPlacement.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/Tile\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport TileState from './TileState.js';\nimport { abstract } from './util.js';\nimport { easeIn } from './easing.js';\n/**\n * A function that takes an {@link module:ol/Tile} for the tile and a\n * `{string}` for the url as arguments. The default is\n * ```js\n * source.setTileLoadFunction(function(tile, src) {\n * tile.getImage().src = src;\n * });\n * ```\n * For more fine grained control, the load function can use fetch or XMLHttpRequest and involve\n * error handling:\n *\n * ```js\n * import TileState from 'ol/TileState';\n *\n * source.setTileLoadFunction(function(tile, src) {\n * var xhr = new XMLHttpRequest();\n * xhr.responseType = 'blob';\n * xhr.addEventListener('loadend', function (evt) {\n * var data = this.response;\n * if (data !== undefined) {\n * tile.getImage().src = URL.createObjectURL(data);\n * } else {\n * tile.setState(TileState.ERROR);\n * }\n * });\n * xhr.addEventListener('error', function () {\n * tile.setState(TileState.ERROR);\n * });\n * xhr.open('GET', src);\n * xhr.send();\n * });\n * ```\n *\n * @typedef {function(Tile, string): void} LoadFunction\n * @api\n */\n/**\n * {@link module:ol/source/Tile~Tile} sources use a function of this type to get\n * the url that provides a tile for a given tile coordinate.\n *\n * This function takes an {@link module:ol/tilecoord~TileCoord} for the tile\n * coordinate, a `{number}` representing the pixel ratio and a\n * {@link module:ol/proj/Projection} for the projection as arguments\n * and returns a `{string}` representing the tile URL, or undefined if no tile\n * should be requested for the passed tile coordinate.\n *\n * @typedef {function(import(\"./tilecoord.js\").TileCoord, number,\n * import(\"./proj/Projection.js\").default): (string|undefined)} UrlFunction\n * @api\n */\n/**\n * @typedef {Object} Options\n * @property {number} [transition=250] A duration for tile opacity\n * transitions in milliseconds. A duration of 0 disables the opacity transition.\n * @property {boolean} [interpolate=false] Use interpolated values when resampling. By default,\n * the nearest neighbor is used when resampling.\n * @api\n */\n/**\n * @classdesc\n * Base class for tiles.\n *\n * @abstract\n */\nvar Tile = /** @class */ (function (_super) {\n __extends(Tile, _super);\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {Options} [opt_options] Tile options.\n */\n function Tile(tileCoord, state, opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @type {import(\"./tilecoord.js\").TileCoord}\n */\n _this.tileCoord = tileCoord;\n /**\n * @protected\n * @type {import(\"./TileState.js\").default}\n */\n _this.state = state;\n /**\n * An \"interim\" tile for this tile. The interim tile may be used while this\n * one is loading, for \"smooth\" transitions when changing params/dimensions\n * on the source.\n * @type {Tile}\n */\n _this.interimTile = null;\n /**\n * A key assigned to the tile. This is used by the tile source to determine\n * if this tile can effectively be used, or if a new tile should be created\n * and this one be used as an interim tile for this new tile.\n * @type {string}\n */\n _this.key = '';\n /**\n * The duration for the opacity transition.\n * @type {number}\n */\n _this.transition_ =\n options.transition === undefined ? 250 : options.transition;\n /**\n * Lookup of start times for rendering transitions. If the start time is\n * equal to -1, the transition is complete.\n * @type {Object}\n */\n _this.transitionStarts_ = {};\n /**\n * @type {boolean}\n */\n _this.interpolate = !!options.interpolate;\n return _this;\n }\n /**\n * @protected\n */\n Tile.prototype.changed = function () {\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * Called by the tile cache when the tile is removed from the cache due to expiry\n */\n Tile.prototype.release = function () { };\n /**\n * @return {string} Key.\n */\n Tile.prototype.getKey = function () {\n return this.key + '/' + this.tileCoord;\n };\n /**\n * Get the interim tile most suitable for rendering using the chain of interim\n * tiles. This corresponds to the most recent tile that has been loaded, if no\n * such tile exists, the original tile is returned.\n * @return {!Tile} Best tile for rendering.\n */\n Tile.prototype.getInterimTile = function () {\n if (!this.interimTile) {\n //empty chain\n return this;\n }\n var tile = this.interimTile;\n // find the first loaded tile and return it. Since the chain is sorted in\n // decreasing order of creation time, there is no need to search the remainder\n // of the list (all those tiles correspond to older requests and will be\n // cleaned up by refreshInterimChain)\n do {\n if (tile.getState() == TileState.LOADED) {\n // Show tile immediately instead of fading it in after loading, because\n // the interim tile is in place already\n this.transition_ = 0;\n return tile;\n }\n tile = tile.interimTile;\n } while (tile);\n // we can not find a better tile\n return this;\n };\n /**\n * Goes through the chain of interim tiles and discards sections of the chain\n * that are no longer relevant.\n */\n Tile.prototype.refreshInterimChain = function () {\n if (!this.interimTile) {\n return;\n }\n var tile = this.interimTile;\n /**\n * @type {Tile}\n */\n var prev = this;\n do {\n if (tile.getState() == TileState.LOADED) {\n //we have a loaded tile, we can discard the rest of the list\n //we would could abort any LOADING tile request\n //older than this tile (i.e. any LOADING tile following this entry in the chain)\n tile.interimTile = null;\n break;\n }\n else if (tile.getState() == TileState.LOADING) {\n //keep this LOADING tile any loaded tiles later in the chain are\n //older than this tile, so we're still interested in the request\n prev = tile;\n }\n else if (tile.getState() == TileState.IDLE) {\n //the head of the list is the most current tile, we don't need\n //to start any other requests for this chain\n prev.interimTile = tile.interimTile;\n }\n else {\n prev = tile;\n }\n tile = prev.interimTile;\n } while (tile);\n };\n /**\n * Get the tile coordinate for this tile.\n * @return {import(\"./tilecoord.js\").TileCoord} The tile coordinate.\n * @api\n */\n Tile.prototype.getTileCoord = function () {\n return this.tileCoord;\n };\n /**\n * @return {import(\"./TileState.js\").default} State.\n */\n Tile.prototype.getState = function () {\n return this.state;\n };\n /**\n * Sets the state of this tile. If you write your own {@link module:ol/Tile~LoadFunction tileLoadFunction} ,\n * it is important to set the state correctly to {@link module:ol/TileState~ERROR}\n * when the tile cannot be loaded. Otherwise the tile cannot be removed from\n * the tile queue and will block other requests.\n * @param {import(\"./TileState.js\").default} state State.\n * @api\n */\n Tile.prototype.setState = function (state) {\n if (this.state !== TileState.ERROR && this.state > state) {\n throw new Error('Tile load sequence violation');\n }\n this.state = state;\n this.changed();\n };\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n * @abstract\n * @api\n */\n Tile.prototype.load = function () {\n abstract();\n };\n /**\n * Get the alpha value for rendering.\n * @param {string} id An id for the renderer.\n * @param {number} time The render frame time.\n * @return {number} A number between 0 and 1.\n */\n Tile.prototype.getAlpha = function (id, time) {\n if (!this.transition_) {\n return 1;\n }\n var start = this.transitionStarts_[id];\n if (!start) {\n start = time;\n this.transitionStarts_[id] = start;\n }\n else if (start === -1) {\n return 1;\n }\n var delta = time - start + 1000 / 60; // avoid rendering at 0\n if (delta >= this.transition_) {\n return 1;\n }\n return easeIn(delta / this.transition_);\n };\n /**\n * Determine if a tile is in an alpha transition. A tile is considered in\n * transition if tile.getAlpha() has not yet been called or has been called\n * and returned 1.\n * @param {string} id An id for the renderer.\n * @return {boolean} The tile is in transition.\n */\n Tile.prototype.inTransition = function (id) {\n if (!this.transition_) {\n return false;\n }\n return this.transitionStarts_[id] !== -1;\n };\n /**\n * Mark a transition as complete.\n * @param {string} id An id for the renderer.\n */\n Tile.prototype.endTransition = function (id) {\n if (this.transition_) {\n this.transitionStarts_[id] = -1;\n }\n };\n return Tile;\n}(EventTarget));\nexport default Tile;\n//# sourceMappingURL=Tile.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/ImageTile\n */\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\nimport { createCanvasContext2D } from './dom.js';\nimport { listenImage } from './Image.js';\nvar ImageTile = /** @class */ (function (_super) {\n __extends(ImageTile, _super);\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {string} src Image source URI.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"./Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n * @param {import(\"./Tile.js\").Options} [opt_options] Tile options.\n */\n function ImageTile(tileCoord, state, src, crossOrigin, tileLoadFunction, opt_options) {\n var _this = _super.call(this, tileCoord, state, opt_options) || this;\n /**\n * @private\n * @type {?string}\n */\n _this.crossOrigin_ = crossOrigin;\n /**\n * Image URI\n *\n * @private\n * @type {string}\n */\n _this.src_ = src;\n _this.key = src;\n /**\n * @private\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n _this.image_ = new Image();\n if (crossOrigin !== null) {\n _this.image_.crossOrigin = crossOrigin;\n }\n /**\n * @private\n * @type {?function():void}\n */\n _this.unlisten_ = null;\n /**\n * @private\n * @type {import(\"./Tile.js\").LoadFunction}\n */\n _this.tileLoadFunction_ = tileLoadFunction;\n return _this;\n }\n /**\n * Get the HTML image element for this tile (may be a Canvas, Image, or Video).\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @api\n */\n ImageTile.prototype.getImage = function () {\n return this.image_;\n };\n /**\n * Sets an HTML image element for this tile (may be a Canvas or preloaded Image).\n * @param {HTMLCanvasElement|HTMLImageElement} element Element.\n */\n ImageTile.prototype.setImage = function (element) {\n this.image_ = element;\n this.state = TileState.LOADED;\n this.unlistenImage_();\n this.changed();\n };\n /**\n * Tracks loading or read errors.\n *\n * @private\n */\n ImageTile.prototype.handleImageError_ = function () {\n this.state = TileState.ERROR;\n this.unlistenImage_();\n this.image_ = getBlankImage();\n this.changed();\n };\n /**\n * Tracks successful image load.\n *\n * @private\n */\n ImageTile.prototype.handleImageLoad_ = function () {\n var image = /** @type {HTMLImageElement} */ (this.image_);\n if (image.naturalWidth && image.naturalHeight) {\n this.state = TileState.LOADED;\n }\n else {\n this.state = TileState.EMPTY;\n }\n this.unlistenImage_();\n this.changed();\n };\n /**\n * Load not yet loaded URI.\n * @api\n */\n ImageTile.prototype.load = function () {\n if (this.state == TileState.ERROR) {\n this.state = TileState.IDLE;\n this.image_ = new Image();\n if (this.crossOrigin_ !== null) {\n this.image_.crossOrigin = this.crossOrigin_;\n }\n }\n if (this.state == TileState.IDLE) {\n this.state = TileState.LOADING;\n this.changed();\n this.tileLoadFunction_(this, this.src_);\n this.unlisten_ = listenImage(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this));\n }\n };\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n ImageTile.prototype.unlistenImage_ = function () {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n };\n return ImageTile;\n}(Tile));\n/**\n * Get a 1-pixel blank image.\n * @return {HTMLCanvasElement} Blank image.\n */\nfunction getBlankImage() {\n var ctx = createCanvasContext2D(1, 1);\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return ctx.canvas;\n}\nexport default ImageTile;\n//# sourceMappingURL=ImageTile.js.map","/**\n * @module ol/reproj\n */\nimport { IMAGE_SMOOTHING_DISABLED } from './renderer/canvas/common.js';\nimport { assign } from './obj.js';\nimport { containsCoordinate, createEmpty, extend, forEachCorner, getCenter, getHeight, getTopLeft, getWidth, } from './extent.js';\nimport { createCanvasContext2D } from './dom.js';\nimport { getPointResolution, transform } from './proj.js';\nimport { solveLinearSystem } from './math.js';\nvar brokenDiagonalRendering_;\n/**\n * This draws a small triangle into a canvas by setting the triangle as the clip region\n * and then drawing a (too large) rectangle\n *\n * @param {CanvasRenderingContext2D} ctx The context in which to draw the triangle\n * @param {number} u1 The x-coordinate of the second point. The first point is 0,0.\n * @param {number} v1 The y-coordinate of the second point.\n * @param {number} u2 The x-coordinate of the third point.\n * @param {number} v2 The y-coordinate of the third point.\n */\nfunction drawTestTriangle(ctx, u1, v1, u2, v2) {\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(u1, v1);\n ctx.lineTo(u2, v2);\n ctx.closePath();\n ctx.save();\n ctx.clip();\n ctx.fillRect(0, 0, Math.max(u1, u2) + 1, Math.max(v1, v2));\n ctx.restore();\n}\n/**\n * Given the data from getImageData, see if the right values appear at the provided offset.\n * Returns true if either the color or transparency is off\n *\n * @param {Uint8ClampedArray} data The data returned from getImageData\n * @param {number} offset The pixel offset from the start of data.\n * @return {boolean} true if the diagonal rendering is broken\n */\nfunction verifyBrokenDiagonalRendering(data, offset) {\n // the values ought to be close to the rgba(210, 0, 0, 0.75)\n return (Math.abs(data[offset * 4] - 210) > 2 ||\n Math.abs(data[offset * 4 + 3] - 0.75 * 255) > 2);\n}\n/**\n * Determines if the current browser configuration can render triangular clip regions correctly.\n * This value is cached so the function is only expensive the first time called.\n * Firefox on Windows (as of now) does not if HWA is enabled. See https://bugzilla.mozilla.org/show_bug.cgi?id=1606976\n * IE also doesn't. Chrome works, and everything seems to work on OSX and Android. This function caches the\n * result. I suppose that it is conceivably possible that a browser might flip modes while the app is\n * running, but lets hope not.\n *\n * @return {boolean} true if the Diagonal Rendering is broken.\n */\nfunction isBrokenDiagonalRendering() {\n if (brokenDiagonalRendering_ === undefined) {\n var ctx = document.createElement('canvas').getContext('2d');\n ctx.globalCompositeOperation = 'lighter';\n ctx.fillStyle = 'rgba(210, 0, 0, 0.75)';\n drawTestTriangle(ctx, 4, 5, 4, 0);\n drawTestTriangle(ctx, 4, 5, 0, 5);\n var data = ctx.getImageData(0, 0, 3, 3).data;\n brokenDiagonalRendering_ =\n verifyBrokenDiagonalRendering(data, 0) ||\n verifyBrokenDiagonalRendering(data, 4) ||\n verifyBrokenDiagonalRendering(data, 8);\n }\n return brokenDiagonalRendering_;\n}\n/**\n * Calculates ideal resolution to use from the source in order to achieve\n * pixel mapping as close as possible to 1:1 during reprojection.\n * The resolution is calculated regardless of what resolutions\n * are actually available in the dataset (TileGrid, Image, ...).\n *\n * @param {import(\"./proj/Projection.js\").default} sourceProj Source projection.\n * @param {import(\"./proj/Projection.js\").default} targetProj Target projection.\n * @param {import(\"./coordinate.js\").Coordinate} targetCenter Target center.\n * @param {number} targetResolution Target resolution.\n * @return {number} The best resolution to use. Can be +-Infinity, NaN or 0.\n */\nexport function calculateSourceResolution(sourceProj, targetProj, targetCenter, targetResolution) {\n var sourceCenter = transform(targetCenter, targetProj, sourceProj);\n // calculate the ideal resolution of the source data\n var sourceResolution = getPointResolution(targetProj, targetResolution, targetCenter);\n var targetMetersPerUnit = targetProj.getMetersPerUnit();\n if (targetMetersPerUnit !== undefined) {\n sourceResolution *= targetMetersPerUnit;\n }\n var sourceMetersPerUnit = sourceProj.getMetersPerUnit();\n if (sourceMetersPerUnit !== undefined) {\n sourceResolution /= sourceMetersPerUnit;\n }\n // Based on the projection properties, the point resolution at the specified\n // coordinates may be slightly different. We need to reverse-compensate this\n // in order to achieve optimal results.\n var sourceExtent = sourceProj.getExtent();\n if (!sourceExtent || containsCoordinate(sourceExtent, sourceCenter)) {\n var compensationFactor = getPointResolution(sourceProj, sourceResolution, sourceCenter) /\n sourceResolution;\n if (isFinite(compensationFactor) && compensationFactor > 0) {\n sourceResolution /= compensationFactor;\n }\n }\n return sourceResolution;\n}\n/**\n * Calculates ideal resolution to use from the source in order to achieve\n * pixel mapping as close as possible to 1:1 during reprojection.\n * The resolution is calculated regardless of what resolutions\n * are actually available in the dataset (TileGrid, Image, ...).\n *\n * @param {import(\"./proj/Projection.js\").default} sourceProj Source projection.\n * @param {import(\"./proj/Projection.js\").default} targetProj Target projection.\n * @param {import(\"./extent.js\").Extent} targetExtent Target extent\n * @param {number} targetResolution Target resolution.\n * @return {number} The best resolution to use. Can be +-Infinity, NaN or 0.\n */\nexport function calculateSourceExtentResolution(sourceProj, targetProj, targetExtent, targetResolution) {\n var targetCenter = getCenter(targetExtent);\n var sourceResolution = calculateSourceResolution(sourceProj, targetProj, targetCenter, targetResolution);\n if (!isFinite(sourceResolution) || sourceResolution <= 0) {\n forEachCorner(targetExtent, function (corner) {\n sourceResolution = calculateSourceResolution(sourceProj, targetProj, corner, targetResolution);\n return isFinite(sourceResolution) && sourceResolution > 0;\n });\n }\n return sourceResolution;\n}\n/**\n * @typedef {Object} ImageExtent\n * @property {import(\"./extent.js\").Extent} extent Extent.\n * @property {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image.\n */\n/**\n * Renders the source data into new canvas based on the triangulation.\n *\n * @param {number} width Width of the canvas.\n * @param {number} height Height of the canvas.\n * @param {number} pixelRatio Pixel ratio.\n * @param {number} sourceResolution Source resolution.\n * @param {import(\"./extent.js\").Extent} sourceExtent Extent of the data source.\n * @param {number} targetResolution Target resolution.\n * @param {import(\"./extent.js\").Extent} targetExtent Target extent.\n * @param {import(\"./reproj/Triangulation.js\").default} triangulation Calculated triangulation.\n * @param {Array} sources Array of sources.\n * @param {number} gutter Gutter of the sources.\n * @param {boolean} [opt_renderEdges] Render reprojection edges.\n * @param {object} [opt_interpolate] Use linear interpolation when resampling.\n * @return {HTMLCanvasElement} Canvas with reprojected data.\n */\nexport function render(width, height, pixelRatio, sourceResolution, sourceExtent, targetResolution, targetExtent, triangulation, sources, gutter, opt_renderEdges, opt_interpolate) {\n var context = createCanvasContext2D(Math.round(pixelRatio * width), Math.round(pixelRatio * height));\n if (!opt_interpolate) {\n assign(context, IMAGE_SMOOTHING_DISABLED);\n }\n if (sources.length === 0) {\n return context.canvas;\n }\n context.scale(pixelRatio, pixelRatio);\n function pixelRound(value) {\n return Math.round(value * pixelRatio) / pixelRatio;\n }\n context.globalCompositeOperation = 'lighter';\n var sourceDataExtent = createEmpty();\n sources.forEach(function (src, i, arr) {\n extend(sourceDataExtent, src.extent);\n });\n var canvasWidthInUnits = getWidth(sourceDataExtent);\n var canvasHeightInUnits = getHeight(sourceDataExtent);\n var stitchContext = createCanvasContext2D(Math.round((pixelRatio * canvasWidthInUnits) / sourceResolution), Math.round((pixelRatio * canvasHeightInUnits) / sourceResolution));\n if (!opt_interpolate) {\n assign(stitchContext, IMAGE_SMOOTHING_DISABLED);\n }\n var stitchScale = pixelRatio / sourceResolution;\n sources.forEach(function (src, i, arr) {\n var xPos = src.extent[0] - sourceDataExtent[0];\n var yPos = -(src.extent[3] - sourceDataExtent[3]);\n var srcWidth = getWidth(src.extent);\n var srcHeight = getHeight(src.extent);\n // This test should never fail -- but it does. Need to find a fix the upstream condition\n if (src.image.width > 0 && src.image.height > 0) {\n stitchContext.drawImage(src.image, gutter, gutter, src.image.width - 2 * gutter, src.image.height - 2 * gutter, xPos * stitchScale, yPos * stitchScale, srcWidth * stitchScale, srcHeight * stitchScale);\n }\n });\n var targetTopLeft = getTopLeft(targetExtent);\n triangulation.getTriangles().forEach(function (triangle, i, arr) {\n /* Calculate affine transform (src -> dst)\n * Resulting matrix can be used to transform coordinate\n * from `sourceProjection` to destination pixels.\n *\n * To optimize number of context calls and increase numerical stability,\n * we also do the following operations:\n * trans(-topLeftExtentCorner), scale(1 / targetResolution), scale(1, -1)\n * here before solving the linear system so [ui, vi] are pixel coordinates.\n *\n * Src points: xi, yi\n * Dst points: ui, vi\n * Affine coefficients: aij\n *\n * | x0 y0 1 0 0 0 | |a00| |u0|\n * | x1 y1 1 0 0 0 | |a01| |u1|\n * | x2 y2 1 0 0 0 | x |a02| = |u2|\n * | 0 0 0 x0 y0 1 | |a10| |v0|\n * | 0 0 0 x1 y1 1 | |a11| |v1|\n * | 0 0 0 x2 y2 1 | |a12| |v2|\n */\n var source = triangle.source;\n var target = triangle.target;\n var x0 = source[0][0], y0 = source[0][1];\n var x1 = source[1][0], y1 = source[1][1];\n var x2 = source[2][0], y2 = source[2][1];\n // Make sure that everything is on pixel boundaries\n var u0 = pixelRound((target[0][0] - targetTopLeft[0]) / targetResolution);\n var v0 = pixelRound(-(target[0][1] - targetTopLeft[1]) / targetResolution);\n var u1 = pixelRound((target[1][0] - targetTopLeft[0]) / targetResolution);\n var v1 = pixelRound(-(target[1][1] - targetTopLeft[1]) / targetResolution);\n var u2 = pixelRound((target[2][0] - targetTopLeft[0]) / targetResolution);\n var v2 = pixelRound(-(target[2][1] - targetTopLeft[1]) / targetResolution);\n // Shift all the source points to improve numerical stability\n // of all the subsequent calculations. The [x0, y0] is used here.\n // This is also used to simplify the linear system.\n var sourceNumericalShiftX = x0;\n var sourceNumericalShiftY = y0;\n x0 = 0;\n y0 = 0;\n x1 -= sourceNumericalShiftX;\n y1 -= sourceNumericalShiftY;\n x2 -= sourceNumericalShiftX;\n y2 -= sourceNumericalShiftY;\n var augmentedMatrix = [\n [x1, y1, 0, 0, u1 - u0],\n [x2, y2, 0, 0, u2 - u0],\n [0, 0, x1, y1, v1 - v0],\n [0, 0, x2, y2, v2 - v0],\n ];\n var affineCoefs = solveLinearSystem(augmentedMatrix);\n if (!affineCoefs) {\n return;\n }\n context.save();\n context.beginPath();\n if (isBrokenDiagonalRendering() || !opt_interpolate) {\n // Make sure that all lines are horizontal or vertical\n context.moveTo(u1, v1);\n // This is the diagonal line. Do it in 4 steps\n var steps = 4;\n var ud = u0 - u1;\n var vd = v0 - v1;\n for (var step = 0; step < steps; step++) {\n // Go horizontally\n context.lineTo(u1 + pixelRound(((step + 1) * ud) / steps), v1 + pixelRound((step * vd) / (steps - 1)));\n // Go vertically\n if (step != steps - 1) {\n context.lineTo(u1 + pixelRound(((step + 1) * ud) / steps), v1 + pixelRound(((step + 1) * vd) / (steps - 1)));\n }\n }\n // We are almost at u0r, v0r\n context.lineTo(u2, v2);\n }\n else {\n context.moveTo(u1, v1);\n context.lineTo(u0, v0);\n context.lineTo(u2, v2);\n }\n context.clip();\n context.transform(affineCoefs[0], affineCoefs[2], affineCoefs[1], affineCoefs[3], u0, v0);\n context.translate(sourceDataExtent[0] - sourceNumericalShiftX, sourceDataExtent[3] - sourceNumericalShiftY);\n context.scale(sourceResolution / pixelRatio, -sourceResolution / pixelRatio);\n context.drawImage(stitchContext.canvas, 0, 0);\n context.restore();\n });\n if (opt_renderEdges) {\n context.save();\n context.globalCompositeOperation = 'source-over';\n context.strokeStyle = 'black';\n context.lineWidth = 1;\n triangulation.getTriangles().forEach(function (triangle, i, arr) {\n var target = triangle.target;\n var u0 = (target[0][0] - targetTopLeft[0]) / targetResolution;\n var v0 = -(target[0][1] - targetTopLeft[1]) / targetResolution;\n var u1 = (target[1][0] - targetTopLeft[0]) / targetResolution;\n var v1 = -(target[1][1] - targetTopLeft[1]) / targetResolution;\n var u2 = (target[2][0] - targetTopLeft[0]) / targetResolution;\n var v2 = -(target[2][1] - targetTopLeft[1]) / targetResolution;\n context.beginPath();\n context.moveTo(u1, v1);\n context.lineTo(u0, v0);\n context.lineTo(u2, v2);\n context.closePath();\n context.stroke();\n });\n context.restore();\n }\n return context.canvas;\n}\n//# sourceMappingURL=reproj.js.map","/**\n * @module ol/reproj/common\n */\n/**\n * Default maximum allowed threshold (in pixels) for reprojection\n * triangulation.\n * @type {number}\n */\nexport var ERROR_THRESHOLD = 0.5;\n/**\n * Enable automatic reprojection of raster sources. Default is `true`.\n * TODO: decide if we want to expose this as a build flag or remove it\n * @type {boolean}\n */\nexport var ENABLE_RASTER_REPROJECTION = true;\n//# sourceMappingURL=common.js.map","/**\n * @module ol/reproj/Triangulation\n */\nimport { boundingExtent, createEmpty, extendCoordinate, getArea, getBottomLeft, getBottomRight, getTopLeft, getTopRight, getWidth, intersects, } from '../extent.js';\nimport { getTransform } from '../proj.js';\nimport { log2, modulo } from '../math.js';\n/**\n * Single triangle; consists of 3 source points and 3 target points.\n * @typedef {Object} Triangle\n * @property {Array} source Source.\n * @property {Array} target Target.\n */\n/**\n * Maximum number of subdivision steps during raster reprojection triangulation.\n * Prevents high memory usage and large number of proj4 calls (for certain\n * transformations and areas). At most `2*(2^this)` triangles are created for\n * each triangulated extent (tile/image).\n * @type {number}\n */\nvar MAX_SUBDIVISION = 10;\n/**\n * Maximum allowed size of triangle relative to world width. When transforming\n * corners of world extent between certain projections, the resulting\n * triangulation seems to have zero error and no subdivision is performed. If\n * the triangle width is more than this (relative to world width; 0-1),\n * subdivison is forced (up to `MAX_SUBDIVISION`). Default is `0.25`.\n * @type {number}\n */\nvar MAX_TRIANGLE_WIDTH = 0.25;\n/**\n * @classdesc\n * Class containing triangulation of the given target extent.\n * Used for determining source data and the reprojection itself.\n */\nvar Triangulation = /** @class */ (function () {\n /**\n * @param {import(\"../proj/Projection.js\").default} sourceProj Source projection.\n * @param {import(\"../proj/Projection.js\").default} targetProj Target projection.\n * @param {import(\"../extent.js\").Extent} targetExtent Target extent to triangulate.\n * @param {import(\"../extent.js\").Extent} maxSourceExtent Maximal source extent that can be used.\n * @param {number} errorThreshold Acceptable error (in source units).\n * @param {?number} opt_destinationResolution The (optional) resolution of the destination.\n */\n function Triangulation(sourceProj, targetProj, targetExtent, maxSourceExtent, errorThreshold, opt_destinationResolution) {\n /**\n * @type {import(\"../proj/Projection.js\").default}\n * @private\n */\n this.sourceProj_ = sourceProj;\n /**\n * @type {import(\"../proj/Projection.js\").default}\n * @private\n */\n this.targetProj_ = targetProj;\n /** @type {!Object} */\n var transformInvCache = {};\n var transformInv = getTransform(this.targetProj_, this.sourceProj_);\n /**\n * @param {import(\"../coordinate.js\").Coordinate} c A coordinate.\n * @return {import(\"../coordinate.js\").Coordinate} Transformed coordinate.\n * @private\n */\n this.transformInv_ = function (c) {\n var key = c[0] + '/' + c[1];\n if (!transformInvCache[key]) {\n transformInvCache[key] = transformInv(c);\n }\n return transformInvCache[key];\n };\n /**\n * @type {import(\"../extent.js\").Extent}\n * @private\n */\n this.maxSourceExtent_ = maxSourceExtent;\n /**\n * @type {number}\n * @private\n */\n this.errorThresholdSquared_ = errorThreshold * errorThreshold;\n /**\n * @type {Array}\n * @private\n */\n this.triangles_ = [];\n /**\n * Indicates that the triangulation crosses edge of the source projection.\n * @type {boolean}\n * @private\n */\n this.wrapsXInSource_ = false;\n /**\n * @type {boolean}\n * @private\n */\n this.canWrapXInSource_ =\n this.sourceProj_.canWrapX() &&\n !!maxSourceExtent &&\n !!this.sourceProj_.getExtent() &&\n getWidth(maxSourceExtent) == getWidth(this.sourceProj_.getExtent());\n /**\n * @type {?number}\n * @private\n */\n this.sourceWorldWidth_ = this.sourceProj_.getExtent()\n ? getWidth(this.sourceProj_.getExtent())\n : null;\n /**\n * @type {?number}\n * @private\n */\n this.targetWorldWidth_ = this.targetProj_.getExtent()\n ? getWidth(this.targetProj_.getExtent())\n : null;\n var destinationTopLeft = getTopLeft(targetExtent);\n var destinationTopRight = getTopRight(targetExtent);\n var destinationBottomRight = getBottomRight(targetExtent);\n var destinationBottomLeft = getBottomLeft(targetExtent);\n var sourceTopLeft = this.transformInv_(destinationTopLeft);\n var sourceTopRight = this.transformInv_(destinationTopRight);\n var sourceBottomRight = this.transformInv_(destinationBottomRight);\n var sourceBottomLeft = this.transformInv_(destinationBottomLeft);\n /*\n * The maxSubdivision controls how many splittings of the target area can\n * be done. The idea here is to do a linear mapping of the target areas\n * but the actual overal reprojection (can be) extremely non-linear. The\n * default value of MAX_SUBDIVISION was chosen based on mapping a 256x256\n * tile size. However this function is also called to remap canvas rendered\n * layers which can be much larger. This calculation increases the maxSubdivision\n * value by the right factor so that each 256x256 pixel area has\n * MAX_SUBDIVISION divisions.\n */\n var maxSubdivision = MAX_SUBDIVISION +\n (opt_destinationResolution\n ? Math.max(0, Math.ceil(log2(getArea(targetExtent) /\n (opt_destinationResolution *\n opt_destinationResolution *\n 256 *\n 256))))\n : 0);\n this.addQuad_(destinationTopLeft, destinationTopRight, destinationBottomRight, destinationBottomLeft, sourceTopLeft, sourceTopRight, sourceBottomRight, sourceBottomLeft, maxSubdivision);\n if (this.wrapsXInSource_) {\n var leftBound_1 = Infinity;\n this.triangles_.forEach(function (triangle, i, arr) {\n leftBound_1 = Math.min(leftBound_1, triangle.source[0][0], triangle.source[1][0], triangle.source[2][0]);\n });\n // Shift triangles to be as close to `leftBound` as possible\n // (if the distance is more than `worldWidth / 2` it can be closer.\n this.triangles_.forEach(function (triangle) {\n if (Math.max(triangle.source[0][0], triangle.source[1][0], triangle.source[2][0]) -\n leftBound_1 >\n this.sourceWorldWidth_ / 2) {\n var newTriangle = [\n [triangle.source[0][0], triangle.source[0][1]],\n [triangle.source[1][0], triangle.source[1][1]],\n [triangle.source[2][0], triangle.source[2][1]],\n ];\n if (newTriangle[0][0] - leftBound_1 > this.sourceWorldWidth_ / 2) {\n newTriangle[0][0] -= this.sourceWorldWidth_;\n }\n if (newTriangle[1][0] - leftBound_1 > this.sourceWorldWidth_ / 2) {\n newTriangle[1][0] -= this.sourceWorldWidth_;\n }\n if (newTriangle[2][0] - leftBound_1 > this.sourceWorldWidth_ / 2) {\n newTriangle[2][0] -= this.sourceWorldWidth_;\n }\n // Rarely (if the extent contains both the dateline and prime meridian)\n // the shift can in turn break some triangles.\n // Detect this here and don't shift in such cases.\n var minX = Math.min(newTriangle[0][0], newTriangle[1][0], newTriangle[2][0]);\n var maxX = Math.max(newTriangle[0][0], newTriangle[1][0], newTriangle[2][0]);\n if (maxX - minX < this.sourceWorldWidth_ / 2) {\n triangle.source = newTriangle;\n }\n }\n }.bind(this));\n }\n transformInvCache = {};\n }\n /**\n * Adds triangle to the triangulation.\n * @param {import(\"../coordinate.js\").Coordinate} a The target a coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} b The target b coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} c The target c coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} aSrc The source a coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} bSrc The source b coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} cSrc The source c coordinate.\n * @private\n */\n Triangulation.prototype.addTriangle_ = function (a, b, c, aSrc, bSrc, cSrc) {\n this.triangles_.push({\n source: [aSrc, bSrc, cSrc],\n target: [a, b, c],\n });\n };\n /**\n * Adds quad (points in clock-wise order) to the triangulation\n * (and reprojects the vertices) if valid.\n * Performs quad subdivision if needed to increase precision.\n *\n * @param {import(\"../coordinate.js\").Coordinate} a The target a coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} b The target b coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} c The target c coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} d The target d coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} aSrc The source a coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} bSrc The source b coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} cSrc The source c coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} dSrc The source d coordinate.\n * @param {number} maxSubdivision Maximal allowed subdivision of the quad.\n * @private\n */\n Triangulation.prototype.addQuad_ = function (a, b, c, d, aSrc, bSrc, cSrc, dSrc, maxSubdivision) {\n var sourceQuadExtent = boundingExtent([aSrc, bSrc, cSrc, dSrc]);\n var sourceCoverageX = this.sourceWorldWidth_\n ? getWidth(sourceQuadExtent) / this.sourceWorldWidth_\n : null;\n var sourceWorldWidth = /** @type {number} */ (this.sourceWorldWidth_);\n // when the quad is wrapped in the source projection\n // it covers most of the projection extent, but not fully\n var wrapsX = this.sourceProj_.canWrapX() &&\n sourceCoverageX > 0.5 &&\n sourceCoverageX < 1;\n var needsSubdivision = false;\n if (maxSubdivision > 0) {\n if (this.targetProj_.isGlobal() && this.targetWorldWidth_) {\n var targetQuadExtent = boundingExtent([a, b, c, d]);\n var targetCoverageX = getWidth(targetQuadExtent) / this.targetWorldWidth_;\n needsSubdivision =\n targetCoverageX > MAX_TRIANGLE_WIDTH || needsSubdivision;\n }\n if (!wrapsX && this.sourceProj_.isGlobal() && sourceCoverageX) {\n needsSubdivision =\n sourceCoverageX > MAX_TRIANGLE_WIDTH || needsSubdivision;\n }\n }\n if (!needsSubdivision && this.maxSourceExtent_) {\n if (isFinite(sourceQuadExtent[0]) &&\n isFinite(sourceQuadExtent[1]) &&\n isFinite(sourceQuadExtent[2]) &&\n isFinite(sourceQuadExtent[3])) {\n if (!intersects(sourceQuadExtent, this.maxSourceExtent_)) {\n // whole quad outside source projection extent -> ignore\n return;\n }\n }\n }\n var isNotFinite = 0;\n if (!needsSubdivision) {\n if (!isFinite(aSrc[0]) ||\n !isFinite(aSrc[1]) ||\n !isFinite(bSrc[0]) ||\n !isFinite(bSrc[1]) ||\n !isFinite(cSrc[0]) ||\n !isFinite(cSrc[1]) ||\n !isFinite(dSrc[0]) ||\n !isFinite(dSrc[1])) {\n if (maxSubdivision > 0) {\n needsSubdivision = true;\n }\n else {\n // It might be the case that only 1 of the points is infinite. In this case\n // we can draw a single triangle with the other three points\n isNotFinite =\n (!isFinite(aSrc[0]) || !isFinite(aSrc[1]) ? 8 : 0) +\n (!isFinite(bSrc[0]) || !isFinite(bSrc[1]) ? 4 : 0) +\n (!isFinite(cSrc[0]) || !isFinite(cSrc[1]) ? 2 : 0) +\n (!isFinite(dSrc[0]) || !isFinite(dSrc[1]) ? 1 : 0);\n if (isNotFinite != 1 &&\n isNotFinite != 2 &&\n isNotFinite != 4 &&\n isNotFinite != 8) {\n return;\n }\n }\n }\n }\n if (maxSubdivision > 0) {\n if (!needsSubdivision) {\n var center = [(a[0] + c[0]) / 2, (a[1] + c[1]) / 2];\n var centerSrc = this.transformInv_(center);\n var dx = void 0;\n if (wrapsX) {\n var centerSrcEstimX = (modulo(aSrc[0], sourceWorldWidth) +\n modulo(cSrc[0], sourceWorldWidth)) /\n 2;\n dx = centerSrcEstimX - modulo(centerSrc[0], sourceWorldWidth);\n }\n else {\n dx = (aSrc[0] + cSrc[0]) / 2 - centerSrc[0];\n }\n var dy = (aSrc[1] + cSrc[1]) / 2 - centerSrc[1];\n var centerSrcErrorSquared = dx * dx + dy * dy;\n needsSubdivision = centerSrcErrorSquared > this.errorThresholdSquared_;\n }\n if (needsSubdivision) {\n if (Math.abs(a[0] - c[0]) <= Math.abs(a[1] - c[1])) {\n // split horizontally (top & bottom)\n var bc = [(b[0] + c[0]) / 2, (b[1] + c[1]) / 2];\n var bcSrc = this.transformInv_(bc);\n var da = [(d[0] + a[0]) / 2, (d[1] + a[1]) / 2];\n var daSrc = this.transformInv_(da);\n this.addQuad_(a, b, bc, da, aSrc, bSrc, bcSrc, daSrc, maxSubdivision - 1);\n this.addQuad_(da, bc, c, d, daSrc, bcSrc, cSrc, dSrc, maxSubdivision - 1);\n }\n else {\n // split vertically (left & right)\n var ab = [(a[0] + b[0]) / 2, (a[1] + b[1]) / 2];\n var abSrc = this.transformInv_(ab);\n var cd = [(c[0] + d[0]) / 2, (c[1] + d[1]) / 2];\n var cdSrc = this.transformInv_(cd);\n this.addQuad_(a, ab, cd, d, aSrc, abSrc, cdSrc, dSrc, maxSubdivision - 1);\n this.addQuad_(ab, b, c, cd, abSrc, bSrc, cSrc, cdSrc, maxSubdivision - 1);\n }\n return;\n }\n }\n if (wrapsX) {\n if (!this.canWrapXInSource_) {\n return;\n }\n this.wrapsXInSource_ = true;\n }\n // Exactly zero or one of *Src is not finite\n // The triangles must have the diagonal line as the first side\n // This is to allow easy code in reproj.s to make it straight for broken\n // browsers that can't handle diagonal clipping\n if ((isNotFinite & 0xb) == 0) {\n this.addTriangle_(a, c, d, aSrc, cSrc, dSrc);\n }\n if ((isNotFinite & 0xe) == 0) {\n this.addTriangle_(a, c, b, aSrc, cSrc, bSrc);\n }\n if (isNotFinite) {\n // Try the other two triangles\n if ((isNotFinite & 0xd) == 0) {\n this.addTriangle_(b, d, a, bSrc, dSrc, aSrc);\n }\n if ((isNotFinite & 0x7) == 0) {\n this.addTriangle_(b, d, c, bSrc, dSrc, cSrc);\n }\n }\n };\n /**\n * Calculates extent of the 'source' coordinates from all the triangles.\n *\n * @return {import(\"../extent.js\").Extent} Calculated extent.\n */\n Triangulation.prototype.calculateSourceExtent = function () {\n var extent = createEmpty();\n this.triangles_.forEach(function (triangle, i, arr) {\n var src = triangle.source;\n extendCoordinate(extent, src[0]);\n extendCoordinate(extent, src[1]);\n extendCoordinate(extent, src[2]);\n });\n return extent;\n };\n /**\n * @return {Array} Array of the calculated triangles.\n */\n Triangulation.prototype.getTriangles = function () {\n return this.triangles_;\n };\n return Triangulation;\n}());\nexport default Triangulation;\n//# sourceMappingURL=Triangulation.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/reproj/Tile\n */\nimport { ERROR_THRESHOLD } from './common.js';\nimport EventType from '../events/EventType.js';\nimport Tile from '../Tile.js';\nimport TileState from '../TileState.js';\nimport Triangulation from './Triangulation.js';\nimport { calculateSourceExtentResolution, render as renderReprojected, } from '../reproj.js';\nimport { clamp } from '../math.js';\nimport { getArea, getIntersection } from '../extent.js';\nimport { listen, unlistenByKey } from '../events.js';\n/**\n * @typedef {function(number, number, number, number) : import(\"../Tile.js\").default} FunctionType\n */\n/**\n * @classdesc\n * Class encapsulating single reprojected tile.\n * See {@link module:ol/source/TileImage~TileImage}.\n *\n */\nvar ReprojTile = /** @class */ (function (_super) {\n __extends(ReprojTile, _super);\n /**\n * @param {import(\"../proj/Projection.js\").default} sourceProj Source projection.\n * @param {import(\"../tilegrid/TileGrid.js\").default} sourceTileGrid Source tile grid.\n * @param {import(\"../proj/Projection.js\").default} targetProj Target projection.\n * @param {import(\"../tilegrid/TileGrid.js\").default} targetTileGrid Target tile grid.\n * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Coordinate of the tile.\n * @param {import(\"../tilecoord.js\").TileCoord} wrappedTileCoord Coordinate of the tile wrapped in X.\n * @param {number} pixelRatio Pixel ratio.\n * @param {number} gutter Gutter of the source tiles.\n * @param {FunctionType} getTileFunction\n * Function returning source tiles (z, x, y, pixelRatio).\n * @param {number} [opt_errorThreshold] Acceptable reprojection error (in px).\n * @param {boolean} [opt_renderEdges] Render reprojection edges.\n * @param {boolean} [opt_interpolate] Use linear interpolation when resampling.\n */\n function ReprojTile(sourceProj, sourceTileGrid, targetProj, targetTileGrid, tileCoord, wrappedTileCoord, pixelRatio, gutter, getTileFunction, opt_errorThreshold, opt_renderEdges, opt_interpolate) {\n var _this = _super.call(this, tileCoord, TileState.IDLE, { interpolate: !!opt_interpolate }) || this;\n /**\n * @private\n * @type {boolean}\n */\n _this.renderEdges_ = opt_renderEdges !== undefined ? opt_renderEdges : false;\n /**\n * @private\n * @type {number}\n */\n _this.pixelRatio_ = pixelRatio;\n /**\n * @private\n * @type {number}\n */\n _this.gutter_ = gutter;\n /**\n * @private\n * @type {HTMLCanvasElement}\n */\n _this.canvas_ = null;\n /**\n * @private\n * @type {import(\"../tilegrid/TileGrid.js\").default}\n */\n _this.sourceTileGrid_ = sourceTileGrid;\n /**\n * @private\n * @type {import(\"../tilegrid/TileGrid.js\").default}\n */\n _this.targetTileGrid_ = targetTileGrid;\n /**\n * @private\n * @type {import(\"../tilecoord.js\").TileCoord}\n */\n _this.wrappedTileCoord_ = wrappedTileCoord ? wrappedTileCoord : tileCoord;\n /**\n * @private\n * @type {!Array}\n */\n _this.sourceTiles_ = [];\n /**\n * @private\n * @type {?Array}\n */\n _this.sourcesListenerKeys_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.sourceZ_ = 0;\n var targetExtent = targetTileGrid.getTileCoordExtent(_this.wrappedTileCoord_);\n var maxTargetExtent = _this.targetTileGrid_.getExtent();\n var maxSourceExtent = _this.sourceTileGrid_.getExtent();\n var limitedTargetExtent = maxTargetExtent\n ? getIntersection(targetExtent, maxTargetExtent)\n : targetExtent;\n if (getArea(limitedTargetExtent) === 0) {\n // Tile is completely outside range -> EMPTY\n // TODO: is it actually correct that the source even creates the tile ?\n _this.state = TileState.EMPTY;\n return _this;\n }\n var sourceProjExtent = sourceProj.getExtent();\n if (sourceProjExtent) {\n if (!maxSourceExtent) {\n maxSourceExtent = sourceProjExtent;\n }\n else {\n maxSourceExtent = getIntersection(maxSourceExtent, sourceProjExtent);\n }\n }\n var targetResolution = targetTileGrid.getResolution(_this.wrappedTileCoord_[0]);\n var sourceResolution = calculateSourceExtentResolution(sourceProj, targetProj, limitedTargetExtent, targetResolution);\n if (!isFinite(sourceResolution) || sourceResolution <= 0) {\n // invalid sourceResolution -> EMPTY\n // probably edges of the projections when no extent is defined\n _this.state = TileState.EMPTY;\n return _this;\n }\n var errorThresholdInPixels = opt_errorThreshold !== undefined ? opt_errorThreshold : ERROR_THRESHOLD;\n /**\n * @private\n * @type {!import(\"./Triangulation.js\").default}\n */\n _this.triangulation_ = new Triangulation(sourceProj, targetProj, limitedTargetExtent, maxSourceExtent, sourceResolution * errorThresholdInPixels, targetResolution);\n if (_this.triangulation_.getTriangles().length === 0) {\n // no valid triangles -> EMPTY\n _this.state = TileState.EMPTY;\n return _this;\n }\n _this.sourceZ_ = sourceTileGrid.getZForResolution(sourceResolution);\n var sourceExtent = _this.triangulation_.calculateSourceExtent();\n if (maxSourceExtent) {\n if (sourceProj.canWrapX()) {\n sourceExtent[1] = clamp(sourceExtent[1], maxSourceExtent[1], maxSourceExtent[3]);\n sourceExtent[3] = clamp(sourceExtent[3], maxSourceExtent[1], maxSourceExtent[3]);\n }\n else {\n sourceExtent = getIntersection(sourceExtent, maxSourceExtent);\n }\n }\n if (!getArea(sourceExtent)) {\n _this.state = TileState.EMPTY;\n }\n else {\n var sourceRange = sourceTileGrid.getTileRangeForExtentAndZ(sourceExtent, _this.sourceZ_);\n for (var srcX = sourceRange.minX; srcX <= sourceRange.maxX; srcX++) {\n for (var srcY = sourceRange.minY; srcY <= sourceRange.maxY; srcY++) {\n var tile = getTileFunction(_this.sourceZ_, srcX, srcY, pixelRatio);\n if (tile) {\n _this.sourceTiles_.push(tile);\n }\n }\n }\n if (_this.sourceTiles_.length === 0) {\n _this.state = TileState.EMPTY;\n }\n }\n return _this;\n }\n /**\n * Get the HTML Canvas element for this tile.\n * @return {HTMLCanvasElement} Canvas.\n */\n ReprojTile.prototype.getImage = function () {\n return this.canvas_;\n };\n /**\n * @private\n */\n ReprojTile.prototype.reproject_ = function () {\n var sources = [];\n this.sourceTiles_.forEach(function (tile, i, arr) {\n if (tile && tile.getState() == TileState.LOADED) {\n sources.push({\n extent: this.sourceTileGrid_.getTileCoordExtent(tile.tileCoord),\n image: tile.getImage(),\n });\n }\n }.bind(this));\n this.sourceTiles_.length = 0;\n if (sources.length === 0) {\n this.state = TileState.ERROR;\n }\n else {\n var z = this.wrappedTileCoord_[0];\n var size = this.targetTileGrid_.getTileSize(z);\n var width = typeof size === 'number' ? size : size[0];\n var height = typeof size === 'number' ? size : size[1];\n var targetResolution = this.targetTileGrid_.getResolution(z);\n var sourceResolution = this.sourceTileGrid_.getResolution(this.sourceZ_);\n var targetExtent = this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_);\n this.canvas_ = renderReprojected(width, height, this.pixelRatio_, sourceResolution, this.sourceTileGrid_.getExtent(), targetResolution, targetExtent, this.triangulation_, sources, this.gutter_, this.renderEdges_, this.interpolate);\n this.state = TileState.LOADED;\n }\n this.changed();\n };\n /**\n * Load not yet loaded URI.\n */\n ReprojTile.prototype.load = function () {\n if (this.state == TileState.IDLE) {\n this.state = TileState.LOADING;\n this.changed();\n var leftToLoad_1 = 0;\n this.sourcesListenerKeys_ = [];\n this.sourceTiles_.forEach(function (tile, i, arr) {\n var state = tile.getState();\n if (state == TileState.IDLE || state == TileState.LOADING) {\n leftToLoad_1++;\n var sourceListenKey_1 = listen(tile, EventType.CHANGE, function (e) {\n var state = tile.getState();\n if (state == TileState.LOADED ||\n state == TileState.ERROR ||\n state == TileState.EMPTY) {\n unlistenByKey(sourceListenKey_1);\n leftToLoad_1--;\n if (leftToLoad_1 === 0) {\n this.unlistenSources_();\n this.reproject_();\n }\n }\n }, this);\n this.sourcesListenerKeys_.push(sourceListenKey_1);\n }\n }.bind(this));\n if (leftToLoad_1 === 0) {\n setTimeout(this.reproject_.bind(this), 0);\n }\n else {\n this.sourceTiles_.forEach(function (tile, i, arr) {\n var state = tile.getState();\n if (state == TileState.IDLE) {\n tile.load();\n }\n });\n }\n }\n };\n /**\n * @private\n */\n ReprojTile.prototype.unlistenSources_ = function () {\n this.sourcesListenerKeys_.forEach(unlistenByKey);\n this.sourcesListenerKeys_ = null;\n };\n return ReprojTile;\n}(Tile));\nexport default ReprojTile;\n//# sourceMappingURL=Tile.js.map","/**\n * @module ol/structs/LRUCache\n */\nimport { assert } from '../asserts.js';\n/**\n * @typedef {Object} Entry\n * @property {string} key_ Key.\n * @property {Object} newer Newer.\n * @property {Object} older Older.\n * @property {*} value_ Value.\n */\n/**\n * @classdesc\n * Implements a Least-Recently-Used cache where the keys do not conflict with\n * Object's properties (e.g. 'hasOwnProperty' is not allowed as a key). Expiring\n * items from the cache is the responsibility of the user.\n *\n * @fires import(\"../events/Event.js\").default\n * @template T\n */\nvar LRUCache = /** @class */ (function () {\n /**\n * @param {number} [opt_highWaterMark] High water mark.\n */\n function LRUCache(opt_highWaterMark) {\n /**\n * Desired max cache size after expireCache(). If set to 0, no cache entries\n * will be pruned at all.\n * @type {number}\n */\n this.highWaterMark =\n opt_highWaterMark !== undefined ? opt_highWaterMark : 2048;\n /**\n * @private\n * @type {number}\n */\n this.count_ = 0;\n /**\n * @private\n * @type {!Object}\n */\n this.entries_ = {};\n /**\n * @private\n * @type {?Entry}\n */\n this.oldest_ = null;\n /**\n * @private\n * @type {?Entry}\n */\n this.newest_ = null;\n }\n /**\n * @return {boolean} Can expire cache.\n */\n LRUCache.prototype.canExpireCache = function () {\n return this.highWaterMark > 0 && this.getCount() > this.highWaterMark;\n };\n /**\n * FIXME empty description for jsdoc\n */\n LRUCache.prototype.clear = function () {\n this.count_ = 0;\n this.entries_ = {};\n this.oldest_ = null;\n this.newest_ = null;\n };\n /**\n * @param {string} key Key.\n * @return {boolean} Contains key.\n */\n LRUCache.prototype.containsKey = function (key) {\n return this.entries_.hasOwnProperty(key);\n };\n /**\n * @param {function(T, string, LRUCache): ?} f The function\n * to call for every entry from the oldest to the newer. This function takes\n * 3 arguments (the entry value, the entry key and the LRUCache object).\n * The return value is ignored.\n */\n LRUCache.prototype.forEach = function (f) {\n var entry = this.oldest_;\n while (entry) {\n f(entry.value_, entry.key_, this);\n entry = entry.newer;\n }\n };\n /**\n * @param {string} key Key.\n * @param {*} [opt_options] Options (reserved for subclasses).\n * @return {T} Value.\n */\n LRUCache.prototype.get = function (key, opt_options) {\n var entry = this.entries_[key];\n assert(entry !== undefined, 15); // Tried to get a value for a key that does not exist in the cache\n if (entry === this.newest_) {\n return entry.value_;\n }\n else if (entry === this.oldest_) {\n this.oldest_ = /** @type {Entry} */ (this.oldest_.newer);\n this.oldest_.older = null;\n }\n else {\n entry.newer.older = entry.older;\n entry.older.newer = entry.newer;\n }\n entry.newer = null;\n entry.older = this.newest_;\n this.newest_.newer = entry;\n this.newest_ = entry;\n return entry.value_;\n };\n /**\n * Remove an entry from the cache.\n * @param {string} key The entry key.\n * @return {T} The removed entry.\n */\n LRUCache.prototype.remove = function (key) {\n var entry = this.entries_[key];\n assert(entry !== undefined, 15); // Tried to get a value for a key that does not exist in the cache\n if (entry === this.newest_) {\n this.newest_ = /** @type {Entry} */ (entry.older);\n if (this.newest_) {\n this.newest_.newer = null;\n }\n }\n else if (entry === this.oldest_) {\n this.oldest_ = /** @type {Entry} */ (entry.newer);\n if (this.oldest_) {\n this.oldest_.older = null;\n }\n }\n else {\n entry.newer.older = entry.older;\n entry.older.newer = entry.newer;\n }\n delete this.entries_[key];\n --this.count_;\n return entry.value_;\n };\n /**\n * @return {number} Count.\n */\n LRUCache.prototype.getCount = function () {\n return this.count_;\n };\n /**\n * @return {Array} Keys.\n */\n LRUCache.prototype.getKeys = function () {\n var keys = new Array(this.count_);\n var i = 0;\n var entry;\n for (entry = this.newest_; entry; entry = entry.older) {\n keys[i++] = entry.key_;\n }\n return keys;\n };\n /**\n * @return {Array} Values.\n */\n LRUCache.prototype.getValues = function () {\n var values = new Array(this.count_);\n var i = 0;\n var entry;\n for (entry = this.newest_; entry; entry = entry.older) {\n values[i++] = entry.value_;\n }\n return values;\n };\n /**\n * @return {T} Last value.\n */\n LRUCache.prototype.peekLast = function () {\n return this.oldest_.value_;\n };\n /**\n * @return {string} Last key.\n */\n LRUCache.prototype.peekLastKey = function () {\n return this.oldest_.key_;\n };\n /**\n * Get the key of the newest item in the cache. Throws if the cache is empty.\n * @return {string} The newest key.\n */\n LRUCache.prototype.peekFirstKey = function () {\n return this.newest_.key_;\n };\n /**\n * @return {T} value Value.\n */\n LRUCache.prototype.pop = function () {\n var entry = this.oldest_;\n delete this.entries_[entry.key_];\n if (entry.newer) {\n entry.newer.older = null;\n }\n this.oldest_ = /** @type {Entry} */ (entry.newer);\n if (!this.oldest_) {\n this.newest_ = null;\n }\n --this.count_;\n return entry.value_;\n };\n /**\n * @param {string} key Key.\n * @param {T} value Value.\n */\n LRUCache.prototype.replace = function (key, value) {\n this.get(key); // update `newest_`\n this.entries_[key].value_ = value;\n };\n /**\n * @param {string} key Key.\n * @param {T} value Value.\n */\n LRUCache.prototype.set = function (key, value) {\n assert(!(key in this.entries_), 16); // Tried to set a value for a key that is used already\n var entry = {\n key_: key,\n newer: null,\n older: this.newest_,\n value_: value,\n };\n if (!this.newest_) {\n this.oldest_ = entry;\n }\n else {\n this.newest_.newer = entry;\n }\n this.newest_ = entry;\n this.entries_[key] = entry;\n ++this.count_;\n };\n /**\n * Set a maximum number of entries for the cache.\n * @param {number} size Cache size.\n * @api\n */\n LRUCache.prototype.setSize = function (size) {\n this.highWaterMark = size;\n };\n return LRUCache;\n}());\nexport default LRUCache;\n//# sourceMappingURL=LRUCache.js.map","/**\n * @module ol/tilecoord\n */\n/**\n * An array of three numbers representing the location of a tile in a tile\n * grid. The order is `z` (zoom level), `x` (column), and `y` (row).\n * @typedef {Array} TileCoord\n * @api\n */\n/**\n * @param {number} z Z.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {TileCoord} [opt_tileCoord] Tile coordinate.\n * @return {TileCoord} Tile coordinate.\n */\nexport function createOrUpdate(z, x, y, opt_tileCoord) {\n if (opt_tileCoord !== undefined) {\n opt_tileCoord[0] = z;\n opt_tileCoord[1] = x;\n opt_tileCoord[2] = y;\n return opt_tileCoord;\n }\n else {\n return [z, x, y];\n }\n}\n/**\n * @param {number} z Z.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {string} Key.\n */\nexport function getKeyZXY(z, x, y) {\n return z + '/' + x + '/' + y;\n}\n/**\n * Get the key for a tile coord.\n * @param {TileCoord} tileCoord The tile coord.\n * @return {string} Key.\n */\nexport function getKey(tileCoord) {\n return getKeyZXY(tileCoord[0], tileCoord[1], tileCoord[2]);\n}\n/**\n * Get the tile cache key for a tile key obtained through `tile.getKey()`.\n * @param {string} tileKey The tile key.\n * @return {string} The cache key.\n */\nexport function getCacheKeyForTileKey(tileKey) {\n var _a = tileKey\n .substring(tileKey.lastIndexOf('/') + 1, tileKey.length)\n .split(',')\n .map(Number), z = _a[0], x = _a[1], y = _a[2];\n return getKeyZXY(z, x, y);\n}\n/**\n * Get a tile coord given a key.\n * @param {string} key The tile coord key.\n * @return {TileCoord} The tile coord.\n */\nexport function fromKey(key) {\n return key.split('/').map(Number);\n}\n/**\n * @param {TileCoord} tileCoord Tile coord.\n * @return {number} Hash.\n */\nexport function hash(tileCoord) {\n return (tileCoord[1] << tileCoord[0]) + tileCoord[2];\n}\n/**\n * @param {TileCoord} tileCoord Tile coordinate.\n * @param {!import(\"./tilegrid/TileGrid.js\").default} tileGrid Tile grid.\n * @return {boolean} Tile coordinate is within extent and zoom level range.\n */\nexport function withinExtentAndZ(tileCoord, tileGrid) {\n var z = tileCoord[0];\n var x = tileCoord[1];\n var y = tileCoord[2];\n if (tileGrid.getMinZoom() > z || z > tileGrid.getMaxZoom()) {\n return false;\n }\n var tileRange = tileGrid.getFullTileRange(z);\n if (!tileRange) {\n return true;\n }\n else {\n return tileRange.containsXY(x, y);\n }\n}\n//# sourceMappingURL=tilecoord.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/TileCache\n */\nimport LRUCache from './structs/LRUCache.js';\nimport { fromKey, getKey } from './tilecoord.js';\nvar TileCache = /** @class */ (function (_super) {\n __extends(TileCache, _super);\n function TileCache() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {!Object} usedTiles Used tiles.\n */\n TileCache.prototype.expireCache = function (usedTiles) {\n while (this.canExpireCache()) {\n var tile = this.peekLast();\n if (tile.getKey() in usedTiles) {\n break;\n }\n else {\n this.pop().release();\n }\n }\n };\n /**\n * Prune all tiles from the cache that don't have the same z as the newest tile.\n */\n TileCache.prototype.pruneExceptNewestZ = function () {\n if (this.getCount() === 0) {\n return;\n }\n var key = this.peekFirstKey();\n var tileCoord = fromKey(key);\n var z = tileCoord[0];\n this.forEach(function (tile) {\n if (tile.tileCoord[0] !== z) {\n this.remove(getKey(tile.tileCoord));\n tile.release();\n }\n }.bind(this));\n };\n return TileCache;\n}(LRUCache));\nexport default TileCache;\n//# sourceMappingURL=TileCache.js.map","/**\n * @module ol/source/TileEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when a tile starts loading.\n * @event module:ol/source/Tile.TileSourceEvent#tileloadstart\n * @api\n */\n TILELOADSTART: 'tileloadstart',\n /**\n * Triggered when a tile finishes loading, either when its data is loaded,\n * or when loading was aborted because the tile is no longer needed.\n * @event module:ol/source/Tile.TileSourceEvent#tileloadend\n * @api\n */\n TILELOADEND: 'tileloadend',\n /**\n * Triggered if tile loading results in an error.\n * @event module:ol/source/Tile.TileSourceEvent#tileloaderror\n * @api\n */\n TILELOADERROR: 'tileloaderror',\n};\n/**\n * @typedef {'tileloadstart'|'tileloadend'|'tileloaderror'} TileSourceEventTypes\n */\n//# sourceMappingURL=TileEventType.js.map","/**\n * @module ol/tilegrid/TileGrid\n */\nimport TileRange, { createOrUpdate as createOrUpdateTileRange, } from '../TileRange.js';\nimport { DEFAULT_TILE_SIZE } from './common.js';\nimport { assert } from '../asserts.js';\nimport { ceil, clamp, floor } from '../math.js';\nimport { createOrUpdate, getTopLeft } from '../extent.js';\nimport { createOrUpdate as createOrUpdateTileCoord } from '../tilecoord.js';\nimport { isSorted, linearFindNearest } from '../array.js';\nimport { toSize } from '../size.js';\n/**\n * @private\n * @type {import(\"../tilecoord.js\").TileCoord}\n */\nvar tmpTileCoord = [0, 0, 0];\n/**\n * Number of decimal digits to consider in integer values when rounding.\n * @type {number}\n */\nvar DECIMALS = 5;\n/**\n * @typedef {Object} Options\n * @property {import(\"../extent.js\").Extent} [extent] Extent for the tile grid. No tiles outside this\n * extent will be requested by {@link module:ol/source/Tile} sources. When no `origin` or\n * `origins` are configured, the `origin` will be set to the top-left corner of the extent.\n * @property {number} [minZoom=0] Minimum zoom.\n * @property {import(\"../coordinate.js\").Coordinate} [origin] The tile grid origin, i.e. where the `x`\n * and `y` axes meet (`[z, 0, 0]`). Tile coordinates increase left to right and downwards. If not\n * specified, `extent` or `origins` must be provided.\n * @property {Array} [origins] Tile grid origins, i.e. where\n * the `x` and `y` axes meet (`[z, 0, 0]`), for each zoom level. If given, the array length\n * should match the length of the `resolutions` array, i.e. each resolution can have a different\n * origin. Tile coordinates increase left to right and downwards. If not specified, `extent` or\n * `origin` must be provided.\n * @property {!Array} resolutions Resolutions. The array index of each resolution needs\n * to match the zoom level. This means that even if a `minZoom` is configured, the resolutions\n * array will have a length of `maxZoom + 1`.\n * @property {Array} [sizes] Number of tile rows and columns\n * of the grid for each zoom level. If specified the values\n * define each zoom level's extent together with the `origin` or `origins`.\n * A grid `extent` can be configured in addition, and will further limit the extent\n * for which tile requests are made by sources. If the bottom-left corner of\n * an extent is used as `origin` or `origins`, then the `y` value must be\n * negative because OpenLayers tile coordinates use the top left as the origin.\n * @property {number|import(\"../size.js\").Size} [tileSize] Tile size.\n * Default is `[256, 256]`.\n * @property {Array} [tileSizes] Tile sizes. If given, the array length\n * should match the length of the `resolutions` array, i.e. each resolution can have a different\n * tile size.\n */\n/**\n * @classdesc\n * Base class for setting the grid pattern for sources accessing tiled-image\n * servers.\n * @api\n */\nvar TileGrid = /** @class */ (function () {\n /**\n * @param {Options} options Tile grid options.\n */\n function TileGrid(options) {\n /**\n * @protected\n * @type {number}\n */\n this.minZoom = options.minZoom !== undefined ? options.minZoom : 0;\n /**\n * @private\n * @type {!Array}\n */\n this.resolutions_ = options.resolutions;\n assert(isSorted(this.resolutions_, function (a, b) {\n return b - a;\n }, true), 17); // `resolutions` must be sorted in descending order\n // check if we've got a consistent zoom factor and origin\n var zoomFactor;\n if (!options.origins) {\n for (var i = 0, ii = this.resolutions_.length - 1; i < ii; ++i) {\n if (!zoomFactor) {\n zoomFactor = this.resolutions_[i] / this.resolutions_[i + 1];\n }\n else {\n if (this.resolutions_[i] / this.resolutions_[i + 1] !== zoomFactor) {\n zoomFactor = undefined;\n break;\n }\n }\n }\n }\n /**\n * @private\n * @type {number|undefined}\n */\n this.zoomFactor_ = zoomFactor;\n /**\n * @protected\n * @type {number}\n */\n this.maxZoom = this.resolutions_.length - 1;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n this.origin_ = options.origin !== undefined ? options.origin : null;\n /**\n * @private\n * @type {Array}\n */\n this.origins_ = null;\n if (options.origins !== undefined) {\n this.origins_ = options.origins;\n assert(this.origins_.length == this.resolutions_.length, 20); // Number of `origins` and `resolutions` must be equal\n }\n var extent = options.extent;\n if (extent !== undefined && !this.origin_ && !this.origins_) {\n this.origin_ = getTopLeft(extent);\n }\n assert((!this.origin_ && this.origins_) || (this.origin_ && !this.origins_), 18); // Either `origin` or `origins` must be configured, never both\n /**\n * @private\n * @type {Array}\n */\n this.tileSizes_ = null;\n if (options.tileSizes !== undefined) {\n this.tileSizes_ = options.tileSizes;\n assert(this.tileSizes_.length == this.resolutions_.length, 19); // Number of `tileSizes` and `resolutions` must be equal\n }\n /**\n * @private\n * @type {number|import(\"../size.js\").Size}\n */\n this.tileSize_ =\n options.tileSize !== undefined\n ? options.tileSize\n : !this.tileSizes_\n ? DEFAULT_TILE_SIZE\n : null;\n assert((!this.tileSize_ && this.tileSizes_) ||\n (this.tileSize_ && !this.tileSizes_), 22); // Either `tileSize` or `tileSizes` must be configured, never both\n /**\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.extent_ = extent !== undefined ? extent : null;\n /**\n * @private\n * @type {Array}\n */\n this.fullTileRanges_ = null;\n /**\n * @private\n * @type {import(\"../size.js\").Size}\n */\n this.tmpSize_ = [0, 0];\n /**\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.tmpExtent_ = [0, 0, 0, 0];\n if (options.sizes !== undefined) {\n this.fullTileRanges_ = options.sizes.map(function (size, z) {\n var tileRange = new TileRange(Math.min(0, size[0]), Math.max(size[0] - 1, -1), Math.min(0, size[1]), Math.max(size[1] - 1, -1));\n if (extent) {\n var restrictedTileRange = this.getTileRangeForExtentAndZ(extent, z);\n tileRange.minX = Math.max(restrictedTileRange.minX, tileRange.minX);\n tileRange.maxX = Math.min(restrictedTileRange.maxX, tileRange.maxX);\n tileRange.minY = Math.max(restrictedTileRange.minY, tileRange.minY);\n tileRange.maxY = Math.min(restrictedTileRange.maxY, tileRange.maxY);\n }\n return tileRange;\n }, this);\n }\n else if (extent) {\n this.calculateTileRanges_(extent);\n }\n }\n /**\n * Call a function with each tile coordinate for a given extent and zoom level.\n *\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {number} zoom Integer zoom level.\n * @param {function(import(\"../tilecoord.js\").TileCoord): void} callback Function called with each tile coordinate.\n * @api\n */\n TileGrid.prototype.forEachTileCoord = function (extent, zoom, callback) {\n var tileRange = this.getTileRangeForExtentAndZ(extent, zoom);\n for (var i = tileRange.minX, ii = tileRange.maxX; i <= ii; ++i) {\n for (var j = tileRange.minY, jj = tileRange.maxY; j <= jj; ++j) {\n callback([zoom, i, j]);\n }\n }\n };\n /**\n * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {function(number, import(\"../TileRange.js\").default): boolean} callback Callback.\n * @param {import(\"../TileRange.js\").default} [opt_tileRange] Temporary import(\"../TileRange.js\").default object.\n * @param {import(\"../extent.js\").Extent} [opt_extent] Temporary import(\"../extent.js\").Extent object.\n * @return {boolean} Callback succeeded.\n */\n TileGrid.prototype.forEachTileCoordParentTileRange = function (tileCoord, callback, opt_tileRange, opt_extent) {\n var tileRange, x, y;\n var tileCoordExtent = null;\n var z = tileCoord[0] - 1;\n if (this.zoomFactor_ === 2) {\n x = tileCoord[1];\n y = tileCoord[2];\n }\n else {\n tileCoordExtent = this.getTileCoordExtent(tileCoord, opt_extent);\n }\n while (z >= this.minZoom) {\n if (this.zoomFactor_ === 2) {\n x = Math.floor(x / 2);\n y = Math.floor(y / 2);\n tileRange = createOrUpdateTileRange(x, x, y, y, opt_tileRange);\n }\n else {\n tileRange = this.getTileRangeForExtentAndZ(tileCoordExtent, z, opt_tileRange);\n }\n if (callback(z, tileRange)) {\n return true;\n }\n --z;\n }\n return false;\n };\n /**\n * Get the extent for this tile grid, if it was configured.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n TileGrid.prototype.getExtent = function () {\n return this.extent_;\n };\n /**\n * Get the maximum zoom level for the grid.\n * @return {number} Max zoom.\n * @api\n */\n TileGrid.prototype.getMaxZoom = function () {\n return this.maxZoom;\n };\n /**\n * Get the minimum zoom level for the grid.\n * @return {number} Min zoom.\n * @api\n */\n TileGrid.prototype.getMinZoom = function () {\n return this.minZoom;\n };\n /**\n * Get the origin for the grid at the given zoom level.\n * @param {number} z Integer zoom level.\n * @return {import(\"../coordinate.js\").Coordinate} Origin.\n * @api\n */\n TileGrid.prototype.getOrigin = function (z) {\n if (this.origin_) {\n return this.origin_;\n }\n else {\n return this.origins_[z];\n }\n };\n /**\n * Get the resolution for the given zoom level.\n * @param {number} z Integer zoom level.\n * @return {number} Resolution.\n * @api\n */\n TileGrid.prototype.getResolution = function (z) {\n return this.resolutions_[z];\n };\n /**\n * Get the list of resolutions for the tile grid.\n * @return {Array} Resolutions.\n * @api\n */\n TileGrid.prototype.getResolutions = function () {\n return this.resolutions_;\n };\n /**\n * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"../TileRange.js\").default} [opt_tileRange] Temporary import(\"../TileRange.js\").default object.\n * @param {import(\"../extent.js\").Extent} [opt_extent] Temporary import(\"../extent.js\").Extent object.\n * @return {import(\"../TileRange.js\").default} Tile range.\n */\n TileGrid.prototype.getTileCoordChildTileRange = function (tileCoord, opt_tileRange, opt_extent) {\n if (tileCoord[0] < this.maxZoom) {\n if (this.zoomFactor_ === 2) {\n var minX = tileCoord[1] * 2;\n var minY = tileCoord[2] * 2;\n return createOrUpdateTileRange(minX, minX + 1, minY, minY + 1, opt_tileRange);\n }\n var tileCoordExtent = this.getTileCoordExtent(tileCoord, opt_extent || this.tmpExtent_);\n return this.getTileRangeForExtentAndZ(tileCoordExtent, tileCoord[0] + 1, opt_tileRange);\n }\n return null;\n };\n /**\n * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {number} z Integer zoom level.\n * @param {import(\"../TileRange.js\").default} [opt_tileRange] Temporary import(\"../TileRange.js\").default object.\n * @return {import(\"../TileRange.js\").default} Tile range.\n */\n TileGrid.prototype.getTileRangeForTileCoordAndZ = function (tileCoord, z, opt_tileRange) {\n if (z > this.maxZoom || z < this.minZoom) {\n return null;\n }\n var tileCoordZ = tileCoord[0];\n var tileCoordX = tileCoord[1];\n var tileCoordY = tileCoord[2];\n if (z === tileCoordZ) {\n return createOrUpdateTileRange(tileCoordX, tileCoordY, tileCoordX, tileCoordY, opt_tileRange);\n }\n if (this.zoomFactor_) {\n var factor = Math.pow(this.zoomFactor_, z - tileCoordZ);\n var minX = Math.floor(tileCoordX * factor);\n var minY = Math.floor(tileCoordY * factor);\n if (z < tileCoordZ) {\n return createOrUpdateTileRange(minX, minX, minY, minY, opt_tileRange);\n }\n var maxX = Math.floor(factor * (tileCoordX + 1)) - 1;\n var maxY = Math.floor(factor * (tileCoordY + 1)) - 1;\n return createOrUpdateTileRange(minX, maxX, minY, maxY, opt_tileRange);\n }\n var tileCoordExtent = this.getTileCoordExtent(tileCoord, this.tmpExtent_);\n return this.getTileRangeForExtentAndZ(tileCoordExtent, z, opt_tileRange);\n };\n /**\n * Get the extent for a tile range.\n * @param {number} z Integer zoom level.\n * @param {import(\"../TileRange.js\").default} tileRange Tile range.\n * @param {import(\"../extent.js\").Extent} [opt_extent] Temporary import(\"../extent.js\").Extent object.\n * @return {import(\"../extent.js\").Extent} Extent.\n */\n TileGrid.prototype.getTileRangeExtent = function (z, tileRange, opt_extent) {\n var origin = this.getOrigin(z);\n var resolution = this.getResolution(z);\n var tileSize = toSize(this.getTileSize(z), this.tmpSize_);\n var minX = origin[0] + tileRange.minX * tileSize[0] * resolution;\n var maxX = origin[0] + (tileRange.maxX + 1) * tileSize[0] * resolution;\n var minY = origin[1] + tileRange.minY * tileSize[1] * resolution;\n var maxY = origin[1] + (tileRange.maxY + 1) * tileSize[1] * resolution;\n return createOrUpdate(minX, minY, maxX, maxY, opt_extent);\n };\n /**\n * Get a tile range for the given extent and integer zoom level.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {number} z Integer zoom level.\n * @param {import(\"../TileRange.js\").default} [opt_tileRange] Temporary tile range object.\n * @return {import(\"../TileRange.js\").default} Tile range.\n */\n TileGrid.prototype.getTileRangeForExtentAndZ = function (extent, z, opt_tileRange) {\n var tileCoord = tmpTileCoord;\n this.getTileCoordForXYAndZ_(extent[0], extent[3], z, false, tileCoord);\n var minX = tileCoord[1];\n var minY = tileCoord[2];\n this.getTileCoordForXYAndZ_(extent[2], extent[1], z, true, tileCoord);\n return createOrUpdateTileRange(minX, tileCoord[1], minY, tileCoord[2], opt_tileRange);\n };\n /**\n * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @return {import(\"../coordinate.js\").Coordinate} Tile center.\n */\n TileGrid.prototype.getTileCoordCenter = function (tileCoord) {\n var origin = this.getOrigin(tileCoord[0]);\n var resolution = this.getResolution(tileCoord[0]);\n var tileSize = toSize(this.getTileSize(tileCoord[0]), this.tmpSize_);\n return [\n origin[0] + (tileCoord[1] + 0.5) * tileSize[0] * resolution,\n origin[1] - (tileCoord[2] + 0.5) * tileSize[1] * resolution,\n ];\n };\n /**\n * Get the extent of a tile coordinate.\n *\n * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"../extent.js\").Extent} [opt_extent] Temporary extent object.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n TileGrid.prototype.getTileCoordExtent = function (tileCoord, opt_extent) {\n var origin = this.getOrigin(tileCoord[0]);\n var resolution = this.getResolution(tileCoord[0]);\n var tileSize = toSize(this.getTileSize(tileCoord[0]), this.tmpSize_);\n var minX = origin[0] + tileCoord[1] * tileSize[0] * resolution;\n var minY = origin[1] - (tileCoord[2] + 1) * tileSize[1] * resolution;\n var maxX = minX + tileSize[0] * resolution;\n var maxY = minY + tileSize[1] * resolution;\n return createOrUpdate(minX, minY, maxX, maxY, opt_extent);\n };\n /**\n * Get the tile coordinate for the given map coordinate and resolution. This\n * method considers that coordinates that intersect tile boundaries should be\n * assigned the higher tile coordinate.\n *\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {number} resolution Resolution.\n * @param {import(\"../tilecoord.js\").TileCoord} [opt_tileCoord] Destination import(\"../tilecoord.js\").TileCoord object.\n * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate.\n * @api\n */\n TileGrid.prototype.getTileCoordForCoordAndResolution = function (coordinate, resolution, opt_tileCoord) {\n return this.getTileCoordForXYAndResolution_(coordinate[0], coordinate[1], resolution, false, opt_tileCoord);\n };\n /**\n * Note that this method should not be called for resolutions that correspond\n * to an integer zoom level. Instead call the `getTileCoordForXYAndZ_` method.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {number} resolution Resolution (for a non-integer zoom level).\n * @param {boolean} reverseIntersectionPolicy Instead of letting edge\n * intersections go to the higher tile coordinate, let edge intersections\n * go to the lower tile coordinate.\n * @param {import(\"../tilecoord.js\").TileCoord} [opt_tileCoord] Temporary import(\"../tilecoord.js\").TileCoord object.\n * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate.\n * @private\n */\n TileGrid.prototype.getTileCoordForXYAndResolution_ = function (x, y, resolution, reverseIntersectionPolicy, opt_tileCoord) {\n var z = this.getZForResolution(resolution);\n var scale = resolution / this.getResolution(z);\n var origin = this.getOrigin(z);\n var tileSize = toSize(this.getTileSize(z), this.tmpSize_);\n var tileCoordX = (scale * (x - origin[0])) / resolution / tileSize[0];\n var tileCoordY = (scale * (origin[1] - y)) / resolution / tileSize[1];\n if (reverseIntersectionPolicy) {\n tileCoordX = ceil(tileCoordX, DECIMALS) - 1;\n tileCoordY = ceil(tileCoordY, DECIMALS) - 1;\n }\n else {\n tileCoordX = floor(tileCoordX, DECIMALS);\n tileCoordY = floor(tileCoordY, DECIMALS);\n }\n return createOrUpdateTileCoord(z, tileCoordX, tileCoordY, opt_tileCoord);\n };\n /**\n * Although there is repetition between this method and `getTileCoordForXYAndResolution_`,\n * they should have separate implementations. This method is for integer zoom\n * levels. The other method should only be called for resolutions corresponding\n * to non-integer zoom levels.\n * @param {number} x Map x coordinate.\n * @param {number} y Map y coordinate.\n * @param {number} z Integer zoom level.\n * @param {boolean} reverseIntersectionPolicy Instead of letting edge\n * intersections go to the higher tile coordinate, let edge intersections\n * go to the lower tile coordinate.\n * @param {import(\"../tilecoord.js\").TileCoord} [opt_tileCoord] Temporary import(\"../tilecoord.js\").TileCoord object.\n * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate.\n * @private\n */\n TileGrid.prototype.getTileCoordForXYAndZ_ = function (x, y, z, reverseIntersectionPolicy, opt_tileCoord) {\n var origin = this.getOrigin(z);\n var resolution = this.getResolution(z);\n var tileSize = toSize(this.getTileSize(z), this.tmpSize_);\n var tileCoordX = (x - origin[0]) / resolution / tileSize[0];\n var tileCoordY = (origin[1] - y) / resolution / tileSize[1];\n if (reverseIntersectionPolicy) {\n tileCoordX = ceil(tileCoordX, DECIMALS) - 1;\n tileCoordY = ceil(tileCoordY, DECIMALS) - 1;\n }\n else {\n tileCoordX = floor(tileCoordX, DECIMALS);\n tileCoordY = floor(tileCoordY, DECIMALS);\n }\n return createOrUpdateTileCoord(z, tileCoordX, tileCoordY, opt_tileCoord);\n };\n /**\n * Get a tile coordinate given a map coordinate and zoom level.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {number} z Zoom level.\n * @param {import(\"../tilecoord.js\").TileCoord} [opt_tileCoord] Destination import(\"../tilecoord.js\").TileCoord object.\n * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate.\n * @api\n */\n TileGrid.prototype.getTileCoordForCoordAndZ = function (coordinate, z, opt_tileCoord) {\n return this.getTileCoordForXYAndZ_(coordinate[0], coordinate[1], z, false, opt_tileCoord);\n };\n /**\n * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @return {number} Tile resolution.\n */\n TileGrid.prototype.getTileCoordResolution = function (tileCoord) {\n return this.resolutions_[tileCoord[0]];\n };\n /**\n * Get the tile size for a zoom level. The type of the return value matches the\n * `tileSize` or `tileSizes` that the tile grid was configured with. To always\n * get an `import(\"../size.js\").Size`, run the result through `import(\"../size.js\").Size.toSize()`.\n * @param {number} z Z.\n * @return {number|import(\"../size.js\").Size} Tile size.\n * @api\n */\n TileGrid.prototype.getTileSize = function (z) {\n if (this.tileSize_) {\n return this.tileSize_;\n }\n else {\n return this.tileSizes_[z];\n }\n };\n /**\n * @param {number} z Zoom level.\n * @return {import(\"../TileRange.js\").default} Extent tile range for the specified zoom level.\n */\n TileGrid.prototype.getFullTileRange = function (z) {\n if (!this.fullTileRanges_) {\n return this.extent_\n ? this.getTileRangeForExtentAndZ(this.extent_, z)\n : null;\n }\n else {\n return this.fullTileRanges_[z];\n }\n };\n /**\n * @param {number} resolution Resolution.\n * @param {number|import(\"../array.js\").NearestDirectionFunction} [opt_direction]\n * If 0, the nearest resolution will be used.\n * If 1, the nearest higher resolution (lower Z) will be used. If -1, the\n * nearest lower resolution (higher Z) will be used. Default is 0.\n * Use a {@link module:ol/array~NearestDirectionFunction} for more precise control.\n *\n * For example to change tile Z at the midpoint of zoom levels\n * ```js\n * function(value, high, low) {\n * return value - low * Math.sqrt(high / low);\n * }\n * ```\n * @return {number} Z.\n * @api\n */\n TileGrid.prototype.getZForResolution = function (resolution, opt_direction) {\n var z = linearFindNearest(this.resolutions_, resolution, opt_direction || 0);\n return clamp(z, this.minZoom, this.maxZoom);\n };\n /**\n * @param {!import(\"../extent.js\").Extent} extent Extent for this tile grid.\n * @private\n */\n TileGrid.prototype.calculateTileRanges_ = function (extent) {\n var length = this.resolutions_.length;\n var fullTileRanges = new Array(length);\n for (var z = this.minZoom; z < length; ++z) {\n fullTileRanges[z] = this.getTileRangeForExtentAndZ(extent, z);\n }\n this.fullTileRanges_ = fullTileRanges;\n };\n return TileGrid;\n}());\nexport default TileGrid;\n//# sourceMappingURL=TileGrid.js.map","/**\n * @module ol/tilegrid\n */\nimport Corner from './extent/Corner.js';\nimport TileGrid from './tilegrid/TileGrid.js';\nimport Units from './proj/Units.js';\nimport { DEFAULT_MAX_ZOOM, DEFAULT_TILE_SIZE } from './tilegrid/common.js';\nimport { METERS_PER_UNIT, get as getProjection } from './proj.js';\nimport { containsCoordinate, createOrUpdate, getCorner, getHeight, getWidth, } from './extent.js';\nimport { toSize } from './size.js';\n/**\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {!TileGrid} Default tile grid for the\n * passed projection.\n */\nexport function getForProjection(projection) {\n var tileGrid = projection.getDefaultTileGrid();\n if (!tileGrid) {\n tileGrid = createForProjection(projection);\n projection.setDefaultTileGrid(tileGrid);\n }\n return tileGrid;\n}\n/**\n * @param {TileGrid} tileGrid Tile grid.\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {import(\"./tilecoord.js\").TileCoord} Tile coordinate.\n */\nexport function wrapX(tileGrid, tileCoord, projection) {\n var z = tileCoord[0];\n var center = tileGrid.getTileCoordCenter(tileCoord);\n var projectionExtent = extentFromProjection(projection);\n if (!containsCoordinate(projectionExtent, center)) {\n var worldWidth = getWidth(projectionExtent);\n var worldsAway = Math.ceil((projectionExtent[0] - center[0]) / worldWidth);\n center[0] += worldWidth * worldsAway;\n return tileGrid.getTileCoordForCoordAndZ(center, z);\n }\n else {\n return tileCoord;\n }\n}\n/**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} [opt_maxZoom] Maximum zoom level (default is\n * DEFAULT_MAX_ZOOM).\n * @param {number|import(\"./size.js\").Size} [opt_tileSize] Tile size (default uses\n * DEFAULT_TILE_SIZE).\n * @param {import(\"./extent/Corner.js\").default} [opt_corner] Extent corner (default is `'top-left'`).\n * @return {!TileGrid} TileGrid instance.\n */\nexport function createForExtent(extent, opt_maxZoom, opt_tileSize, opt_corner) {\n var corner = opt_corner !== undefined ? opt_corner : Corner.TOP_LEFT;\n var resolutions = resolutionsFromExtent(extent, opt_maxZoom, opt_tileSize);\n return new TileGrid({\n extent: extent,\n origin: getCorner(extent, corner),\n resolutions: resolutions,\n tileSize: opt_tileSize,\n });\n}\n/**\n * @typedef {Object} XYZOptions\n * @property {import(\"./extent.js\").Extent} [extent] Extent for the tile grid. The origin for an XYZ tile grid is the\n * top-left corner of the extent. If `maxResolution` is not provided the zero level of the grid is defined by the resolution\n * at which one tile fits in the provided extent. If not provided, the extent of the EPSG:3857 projection is used.\n * @property {number} [maxResolution] Resolution at level zero.\n * @property {number} [maxZoom] Maximum zoom. The default is `42`. This determines the number of levels\n * in the grid set. For example, a `maxZoom` of 21 means there are 22 levels in the grid set.\n * @property {number} [minZoom=0] Minimum zoom.\n * @property {number|import(\"./size.js\").Size} [tileSize=[256, 256]] Tile size in pixels.\n */\n/**\n * Creates a tile grid with a standard XYZ tiling scheme.\n * @param {XYZOptions} [opt_options] Tile grid options.\n * @return {!TileGrid} Tile grid instance.\n * @api\n */\nexport function createXYZ(opt_options) {\n var xyzOptions = opt_options || {};\n var extent = xyzOptions.extent || getProjection('EPSG:3857').getExtent();\n var gridOptions = {\n extent: extent,\n minZoom: xyzOptions.minZoom,\n tileSize: xyzOptions.tileSize,\n resolutions: resolutionsFromExtent(extent, xyzOptions.maxZoom, xyzOptions.tileSize, xyzOptions.maxResolution),\n };\n return new TileGrid(gridOptions);\n}\n/**\n * Create a resolutions array from an extent. A zoom factor of 2 is assumed.\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} [opt_maxZoom] Maximum zoom level (default is\n * DEFAULT_MAX_ZOOM).\n * @param {number|import(\"./size.js\").Size} [opt_tileSize] Tile size (default uses\n * DEFAULT_TILE_SIZE).\n * @param {number} [opt_maxResolution] Resolution at level zero.\n * @return {!Array} Resolutions array.\n */\nfunction resolutionsFromExtent(extent, opt_maxZoom, opt_tileSize, opt_maxResolution) {\n var maxZoom = opt_maxZoom !== undefined ? opt_maxZoom : DEFAULT_MAX_ZOOM;\n var height = getHeight(extent);\n var width = getWidth(extent);\n var tileSize = toSize(opt_tileSize !== undefined ? opt_tileSize : DEFAULT_TILE_SIZE);\n var maxResolution = opt_maxResolution > 0\n ? opt_maxResolution\n : Math.max(width / tileSize[0], height / tileSize[1]);\n var length = maxZoom + 1;\n var resolutions = new Array(length);\n for (var z = 0; z < length; ++z) {\n resolutions[z] = maxResolution / Math.pow(2, z);\n }\n return resolutions;\n}\n/**\n * @param {import(\"./proj.js\").ProjectionLike} projection Projection.\n * @param {number} [opt_maxZoom] Maximum zoom level (default is\n * DEFAULT_MAX_ZOOM).\n * @param {number|import(\"./size.js\").Size} [opt_tileSize] Tile size (default uses\n * DEFAULT_TILE_SIZE).\n * @param {import(\"./extent/Corner.js\").default} [opt_corner] Extent corner (default is `'top-left'`).\n * @return {!TileGrid} TileGrid instance.\n */\nexport function createForProjection(projection, opt_maxZoom, opt_tileSize, opt_corner) {\n var extent = extentFromProjection(projection);\n return createForExtent(extent, opt_maxZoom, opt_tileSize, opt_corner);\n}\n/**\n * Generate a tile grid extent from a projection. If the projection has an\n * extent, it is used. If not, a global extent is assumed.\n * @param {import(\"./proj.js\").ProjectionLike} projection Projection.\n * @return {import(\"./extent.js\").Extent} Extent.\n */\nexport function extentFromProjection(projection) {\n projection = getProjection(projection);\n var extent = projection.getExtent();\n if (!extent) {\n var half = (180 * METERS_PER_UNIT[Units.DEGREES]) / projection.getMetersPerUnit();\n extent = createOrUpdate(-half, -half, half, half);\n }\n return extent;\n}\n//# sourceMappingURL=tilegrid.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/source/Tile\n */\nimport Event from '../events/Event.js';\nimport Source from './Source.js';\nimport TileCache from '../TileCache.js';\nimport TileState from '../TileState.js';\nimport { abstract } from '../util.js';\nimport { assert } from '../asserts.js';\nimport { equivalent } from '../proj.js';\nimport { getKeyZXY, withinExtentAndZ } from '../tilecoord.js';\nimport { getForProjection as getTileGridForProjection, wrapX, } from '../tilegrid.js';\nimport { scale as scaleSize, toSize } from '../size.js';\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} TileSourceOnSignature\n */\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize] CacheSize.\n * @property {boolean} [opaque=false] Whether the layer is opaque.\n * @property {number} [tilePixelRatio] TilePixelRatio.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection.\n * @property {import(\"./State.js\").default} [state] State.\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid] TileGrid.\n * @property {boolean} [wrapX=false] WrapX.\n * @property {number} [transition] Transition.\n * @property {string} [key] Key.\n * @property {number|import(\"../array.js\").NearestDirectionFunction} [zDirection=0] ZDirection.\n * @property {boolean} [interpolate=false] Use interpolated values when resampling. By default,\n * the nearest neighbor is used when resampling.\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for sources providing images divided into a tile grid.\n * @abstract\n * @api\n */\nvar TileSource = /** @class */ (function (_super) {\n __extends(TileSource, _super);\n /**\n * @param {Options} options SourceTile source options.\n */\n function TileSource(options) {\n var _this = _super.call(this, {\n attributions: options.attributions,\n attributionsCollapsible: options.attributionsCollapsible,\n projection: options.projection,\n state: options.state,\n wrapX: options.wrapX,\n interpolate: options.interpolate,\n }) || this;\n /***\n * @type {TileSourceOnSignature}\n */\n _this.on;\n /***\n * @type {TileSourceOnSignature}\n */\n _this.once;\n /***\n * @type {TileSourceOnSignature}\n */\n _this.un;\n /**\n * @private\n * @type {boolean}\n */\n _this.opaque_ = options.opaque !== undefined ? options.opaque : false;\n /**\n * @private\n * @type {number}\n */\n _this.tilePixelRatio_ =\n options.tilePixelRatio !== undefined ? options.tilePixelRatio : 1;\n /**\n * @type {import(\"../tilegrid/TileGrid.js\").default}\n */\n _this.tileGrid = options.tileGrid !== undefined ? options.tileGrid : null;\n var tileSize = [256, 256];\n var tileGrid = options.tileGrid;\n if (tileGrid) {\n toSize(tileGrid.getTileSize(tileGrid.getMinZoom()), tileSize);\n }\n /**\n * @protected\n * @type {import(\"../TileCache.js\").default}\n */\n _this.tileCache = new TileCache(options.cacheSize || 0);\n /**\n * @protected\n * @type {import(\"../size.js\").Size}\n */\n _this.tmpSize = [0, 0];\n /**\n * @private\n * @type {string}\n */\n _this.key_ = options.key || '';\n /**\n * @protected\n * @type {import(\"../Tile.js\").Options}\n */\n _this.tileOptions = {\n transition: options.transition,\n interpolate: options.interpolate,\n };\n /**\n * zDirection hint, read by the renderer. Indicates which resolution should be used\n * by a renderer if the views 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 * @type {number|import(\"../array.js\").NearestDirectionFunction}\n */\n _this.zDirection = options.zDirection ? options.zDirection : 0;\n return _this;\n }\n /**\n * @return {boolean} Can expire cache.\n */\n TileSource.prototype.canExpireCache = function () {\n return this.tileCache.canExpireCache();\n };\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @param {!Object} usedTiles Used tiles.\n */\n TileSource.prototype.expireCache = function (projection, usedTiles) {\n var tileCache = this.getTileCacheForProjection(projection);\n if (tileCache) {\n tileCache.expireCache(usedTiles);\n }\n };\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @param {number} z Zoom level.\n * @param {import(\"../TileRange.js\").default} tileRange Tile range.\n * @param {function(import(\"../Tile.js\").default):(boolean|void)} callback Called with each\n * loaded tile. If the callback returns `false`, the tile will not be\n * considered loaded.\n * @return {boolean} The tile range is fully covered with loaded tiles.\n */\n TileSource.prototype.forEachLoadedTile = function (projection, z, tileRange, callback) {\n var tileCache = this.getTileCacheForProjection(projection);\n if (!tileCache) {\n return false;\n }\n var covered = true;\n var tile, tileCoordKey, loaded;\n for (var x = tileRange.minX; x <= tileRange.maxX; ++x) {\n for (var y = tileRange.minY; y <= tileRange.maxY; ++y) {\n tileCoordKey = getKeyZXY(z, x, y);\n loaded = false;\n if (tileCache.containsKey(tileCoordKey)) {\n tile = /** @type {!import(\"../Tile.js\").default} */ (tileCache.get(tileCoordKey));\n loaded = tile.getState() === TileState.LOADED;\n if (loaded) {\n loaded = callback(tile) !== false;\n }\n }\n if (!loaded) {\n covered = false;\n }\n }\n }\n return covered;\n };\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {number} Gutter.\n */\n TileSource.prototype.getGutterForProjection = function (projection) {\n return 0;\n };\n /**\n * Return the key to be used for all tiles in the source.\n * @return {string} The key for all tiles.\n */\n TileSource.prototype.getKey = function () {\n return this.key_;\n };\n /**\n * Set the value to be used as the key for all tiles in the source.\n * @param {string} key The key for tiles.\n * @protected\n */\n TileSource.prototype.setKey = function (key) {\n if (this.key_ !== key) {\n this.key_ = key;\n this.changed();\n }\n };\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {boolean} Opaque.\n */\n TileSource.prototype.getOpaque = function (projection) {\n return this.opaque_;\n };\n /**\n * @return {Array} Resolutions.\n */\n TileSource.prototype.getResolutions = function () {\n return this.tileGrid.getResolutions();\n };\n /**\n * @abstract\n * @param {number} z Tile coordinate z.\n * @param {number} x Tile coordinate x.\n * @param {number} y Tile coordinate y.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {!import(\"../Tile.js\").default} Tile.\n */\n TileSource.prototype.getTile = function (z, x, y, pixelRatio, projection) {\n return abstract();\n };\n /**\n * Return the tile grid of the tile source.\n * @return {import(\"../tilegrid/TileGrid.js\").default} Tile grid.\n * @api\n */\n TileSource.prototype.getTileGrid = function () {\n return this.tileGrid;\n };\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {!import(\"../tilegrid/TileGrid.js\").default} Tile grid.\n */\n TileSource.prototype.getTileGridForProjection = function (projection) {\n if (!this.tileGrid) {\n return getTileGridForProjection(projection);\n }\n else {\n return this.tileGrid;\n }\n };\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {import(\"../TileCache.js\").default} Tile cache.\n * @protected\n */\n TileSource.prototype.getTileCacheForProjection = function (projection) {\n assert(equivalent(this.getProjection(), projection), 68 // A VectorTile source can only be rendered if it has a projection compatible with the view projection.\n );\n return this.tileCache;\n };\n /**\n * Get the tile pixel ratio for this source. Subclasses may override this\n * method, which is meant to return a supported pixel ratio that matches the\n * provided `pixelRatio` as close as possible.\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} Tile pixel ratio.\n */\n TileSource.prototype.getTilePixelRatio = function (pixelRatio) {\n return this.tilePixelRatio_;\n };\n /**\n * @param {number} z Z.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {import(\"../size.js\").Size} Tile size.\n */\n TileSource.prototype.getTilePixelSize = function (z, pixelRatio, projection) {\n var tileGrid = this.getTileGridForProjection(projection);\n var tilePixelRatio = this.getTilePixelRatio(pixelRatio);\n var tileSize = toSize(tileGrid.getTileSize(z), this.tmpSize);\n if (tilePixelRatio == 1) {\n return tileSize;\n }\n else {\n return scaleSize(tileSize, tilePixelRatio, this.tmpSize);\n }\n };\n /**\n * Returns a tile coordinate wrapped around the x-axis. When the tile coordinate\n * is outside the resolution and extent range of the tile grid, `null` will be\n * returned.\n * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"../proj/Projection.js\").default} [opt_projection] Projection.\n * @return {import(\"../tilecoord.js\").TileCoord} Tile coordinate to be passed to the tileUrlFunction or\n * null if no tile URL should be created for the passed `tileCoord`.\n */\n TileSource.prototype.getTileCoordForTileUrlFunction = function (tileCoord, opt_projection) {\n var projection = opt_projection !== undefined ? opt_projection : this.getProjection();\n var tileGrid = this.getTileGridForProjection(projection);\n if (this.getWrapX() && projection.isGlobal()) {\n tileCoord = wrapX(tileGrid, tileCoord, projection);\n }\n return withinExtentAndZ(tileCoord, tileGrid) ? tileCoord : null;\n };\n /**\n * Remove all cached tiles from the source. The next render cycle will fetch new tiles.\n * @api\n */\n TileSource.prototype.clear = function () {\n this.tileCache.clear();\n };\n TileSource.prototype.refresh = function () {\n this.clear();\n _super.prototype.refresh.call(this);\n };\n /**\n * Increases the cache size if needed\n * @param {number} tileCount Minimum number of tiles needed.\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n */\n TileSource.prototype.updateCacheSize = function (tileCount, projection) {\n var tileCache = this.getTileCacheForProjection(projection);\n if (tileCount > tileCache.highWaterMark) {\n tileCache.highWaterMark = tileCount;\n }\n };\n /**\n * Marks a tile coord as being used, without triggering a load.\n * @abstract\n * @param {number} z Tile coordinate z.\n * @param {number} x Tile coordinate x.\n * @param {number} y Tile coordinate y.\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n */\n TileSource.prototype.useTile = function (z, x, y, projection) { };\n return TileSource;\n}(Source));\n/**\n * @classdesc\n * Events emitted by {@link module:ol/source/Tile~TileSource} instances are instances of this\n * type.\n */\nvar TileSourceEvent = /** @class */ (function (_super) {\n __extends(TileSourceEvent, _super);\n /**\n * @param {string} type Type.\n * @param {import(\"../Tile.js\").default} tile The tile.\n */\n function TileSourceEvent(type, tile) {\n var _this = _super.call(this, type) || this;\n /**\n * The tile related to the event.\n * @type {import(\"../Tile.js\").default}\n * @api\n */\n _this.tile = tile;\n return _this;\n }\n return TileSourceEvent;\n}(Event));\nexport { TileSourceEvent };\nexport default TileSource;\n//# sourceMappingURL=Tile.js.map","/**\n * @module ol/tileurlfunction\n */\nimport { assert } from './asserts.js';\nimport { modulo } from './math.js';\nimport { hash as tileCoordHash } from './tilecoord.js';\n/**\n * @param {string} template Template.\n * @param {import(\"./tilegrid/TileGrid.js\").default} tileGrid Tile grid.\n * @return {import(\"./Tile.js\").UrlFunction} Tile URL function.\n */\nexport function createFromTemplate(template, tileGrid) {\n var zRegEx = /\\{z\\}/g;\n var xRegEx = /\\{x\\}/g;\n var yRegEx = /\\{y\\}/g;\n var dashYRegEx = /\\{-y\\}/g;\n return (\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile Coordinate.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {string|undefined} Tile URL.\n */\n function (tileCoord, pixelRatio, projection) {\n if (!tileCoord) {\n return undefined;\n }\n else {\n return template\n .replace(zRegEx, tileCoord[0].toString())\n .replace(xRegEx, tileCoord[1].toString())\n .replace(yRegEx, tileCoord[2].toString())\n .replace(dashYRegEx, function () {\n var z = tileCoord[0];\n var range = tileGrid.getFullTileRange(z);\n assert(range, 55); // The {-y} placeholder requires a tile grid with extent\n var y = range.getHeight() - tileCoord[2] - 1;\n return y.toString();\n });\n }\n });\n}\n/**\n * @param {Array} templates Templates.\n * @param {import(\"./tilegrid/TileGrid.js\").default} tileGrid Tile grid.\n * @return {import(\"./Tile.js\").UrlFunction} Tile URL function.\n */\nexport function createFromTemplates(templates, tileGrid) {\n var len = templates.length;\n var tileUrlFunctions = new Array(len);\n for (var i = 0; i < len; ++i) {\n tileUrlFunctions[i] = createFromTemplate(templates[i], tileGrid);\n }\n return createFromTileUrlFunctions(tileUrlFunctions);\n}\n/**\n * @param {Array} tileUrlFunctions Tile URL Functions.\n * @return {import(\"./Tile.js\").UrlFunction} Tile URL function.\n */\nexport function createFromTileUrlFunctions(tileUrlFunctions) {\n if (tileUrlFunctions.length === 1) {\n return tileUrlFunctions[0];\n }\n return (\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile Coordinate.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {string|undefined} Tile URL.\n */\n function (tileCoord, pixelRatio, projection) {\n if (!tileCoord) {\n return undefined;\n }\n else {\n var h = tileCoordHash(tileCoord);\n var index = modulo(h, tileUrlFunctions.length);\n return tileUrlFunctions[index](tileCoord, pixelRatio, projection);\n }\n });\n}\n/**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {string|undefined} Tile URL.\n */\nexport function nullTileUrlFunction(tileCoord, pixelRatio, projection) {\n return undefined;\n}\n/**\n * @param {string} url URL.\n * @return {Array} Array of urls.\n */\nexport function expandUrl(url) {\n var urls = [];\n var match = /\\{([a-z])-([a-z])\\}/.exec(url);\n if (match) {\n // char range\n var startCharCode = match[1].charCodeAt(0);\n var stopCharCode = match[2].charCodeAt(0);\n var charCode = void 0;\n for (charCode = startCharCode; charCode <= stopCharCode; ++charCode) {\n urls.push(url.replace(match[0], String.fromCharCode(charCode)));\n }\n return urls;\n }\n match = /\\{(\\d+)-(\\d+)\\}/.exec(url);\n if (match) {\n // number range\n var stop_1 = parseInt(match[2], 10);\n for (var i = parseInt(match[1], 10); i <= stop_1; i++) {\n urls.push(url.replace(match[0], i.toString()));\n }\n return urls;\n }\n urls.push(url);\n return urls;\n}\n//# sourceMappingURL=tileurlfunction.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/source/UrlTile\n */\nimport TileEventType from './TileEventType.js';\nimport TileSource, { TileSourceEvent } from './Tile.js';\nimport TileState from '../TileState.js';\nimport { createFromTemplates, expandUrl } from '../tileurlfunction.js';\nimport { getKeyZXY } from '../tilecoord.js';\nimport { getUid } from '../util.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize] Cache size.\n * @property {boolean} [opaque=false] Whether the layer is opaque.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection.\n * @property {import(\"./State.js\").default} [state] State.\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid] TileGrid.\n * @property {import(\"../Tile.js\").LoadFunction} tileLoadFunction TileLoadFunction.\n * @property {number} [tilePixelRatio] TilePixelRatio.\n * @property {import(\"../Tile.js\").UrlFunction} [tileUrlFunction] TileUrlFunction.\n * @property {string} [url] Url.\n * @property {Array} [urls] Urls.\n * @property {boolean} [wrapX=true] WrapX.\n * @property {number} [transition] Transition.\n * @property {string} [key] Key.\n * @property {number|import(\"../array.js\").NearestDirectionFunction} [zDirection=0] ZDirection.\n * @property {boolean} [interpolate=false] Use interpolated values when resampling. By default,\n * the nearest neighbor is used when resampling.\n */\n/**\n * @classdesc\n * Base class for sources providing tiles divided into a tile grid over http.\n *\n * @fires import(\"./Tile.js\").TileSourceEvent\n */\nvar UrlTile = /** @class */ (function (_super) {\n __extends(UrlTile, _super);\n /**\n * @param {Options} options Image tile options.\n */\n function UrlTile(options) {\n var _this = _super.call(this, {\n attributions: options.attributions,\n cacheSize: options.cacheSize,\n opaque: options.opaque,\n projection: options.projection,\n state: options.state,\n tileGrid: options.tileGrid,\n tilePixelRatio: options.tilePixelRatio,\n wrapX: options.wrapX,\n transition: options.transition,\n interpolate: options.interpolate,\n key: options.key,\n attributionsCollapsible: options.attributionsCollapsible,\n zDirection: options.zDirection,\n }) || this;\n /**\n * @private\n * @type {boolean}\n */\n _this.generateTileUrlFunction_ =\n _this.tileUrlFunction === UrlTile.prototype.tileUrlFunction;\n /**\n * @protected\n * @type {import(\"../Tile.js\").LoadFunction}\n */\n _this.tileLoadFunction = options.tileLoadFunction;\n if (options.tileUrlFunction) {\n _this.tileUrlFunction = options.tileUrlFunction;\n }\n /**\n * @protected\n * @type {!Array|null}\n */\n _this.urls = null;\n if (options.urls) {\n _this.setUrls(options.urls);\n }\n else if (options.url) {\n _this.setUrl(options.url);\n }\n /**\n * @private\n * @type {!Object}\n */\n _this.tileLoadingKeys_ = {};\n return _this;\n }\n /**\n * Return the tile load function of the source.\n * @return {import(\"../Tile.js\").LoadFunction} TileLoadFunction\n * @api\n */\n UrlTile.prototype.getTileLoadFunction = function () {\n return this.tileLoadFunction;\n };\n /**\n * Return the tile URL function of the source.\n * @return {import(\"../Tile.js\").UrlFunction} TileUrlFunction\n * @api\n */\n UrlTile.prototype.getTileUrlFunction = function () {\n return Object.getPrototypeOf(this).tileUrlFunction === this.tileUrlFunction\n ? this.tileUrlFunction.bind(this)\n : this.tileUrlFunction;\n };\n /**\n * Return the URLs used for this source.\n * When a tileUrlFunction is used instead of url or urls,\n * null will be returned.\n * @return {!Array|null} URLs.\n * @api\n */\n UrlTile.prototype.getUrls = function () {\n return this.urls;\n };\n /**\n * Handle tile change events.\n * @param {import(\"../events/Event.js\").default} event Event.\n * @protected\n */\n UrlTile.prototype.handleTileChange = function (event) {\n var tile = /** @type {import(\"../Tile.js\").default} */ (event.target);\n var uid = getUid(tile);\n var tileState = tile.getState();\n var type;\n if (tileState == TileState.LOADING) {\n this.tileLoadingKeys_[uid] = true;\n type = TileEventType.TILELOADSTART;\n }\n else if (uid in this.tileLoadingKeys_) {\n delete this.tileLoadingKeys_[uid];\n type =\n tileState == TileState.ERROR\n ? TileEventType.TILELOADERROR\n : tileState == TileState.LOADED\n ? TileEventType.TILELOADEND\n : undefined;\n }\n if (type != undefined) {\n this.dispatchEvent(new TileSourceEvent(type, tile));\n }\n };\n /**\n * Set the tile load function of the source.\n * @param {import(\"../Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n * @api\n */\n UrlTile.prototype.setTileLoadFunction = function (tileLoadFunction) {\n this.tileCache.clear();\n this.tileLoadFunction = tileLoadFunction;\n this.changed();\n };\n /**\n * Set the tile URL function of the source.\n * @param {import(\"../Tile.js\").UrlFunction} tileUrlFunction Tile URL function.\n * @param {string} [key] Optional new tile key for the source.\n * @api\n */\n UrlTile.prototype.setTileUrlFunction = function (tileUrlFunction, key) {\n this.tileUrlFunction = tileUrlFunction;\n this.tileCache.pruneExceptNewestZ();\n if (typeof key !== 'undefined') {\n this.setKey(key);\n }\n else {\n this.changed();\n }\n };\n /**\n * Set the URL to use for requests.\n * @param {string} url URL.\n * @api\n */\n UrlTile.prototype.setUrl = function (url) {\n var urls = expandUrl(url);\n this.urls = urls;\n this.setUrls(urls);\n };\n /**\n * Set the URLs to use for requests.\n * @param {Array} urls URLs.\n * @api\n */\n UrlTile.prototype.setUrls = function (urls) {\n this.urls = urls;\n var key = urls.join('\\n');\n if (this.generateTileUrlFunction_) {\n this.setTileUrlFunction(createFromTemplates(urls, this.tileGrid), key);\n }\n else {\n this.setKey(key);\n }\n };\n /**\n * @param {import(\"../tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {string|undefined} Tile URL.\n */\n UrlTile.prototype.tileUrlFunction = function (tileCoord, pixelRatio, projection) {\n return undefined;\n };\n /**\n * Marks a tile coord as being used, without triggering a load.\n * @param {number} z Tile coordinate z.\n * @param {number} x Tile coordinate x.\n * @param {number} y Tile coordinate y.\n */\n UrlTile.prototype.useTile = function (z, x, y) {\n var tileCoordKey = getKeyZXY(z, x, y);\n if (this.tileCache.containsKey(tileCoordKey)) {\n this.tileCache.get(tileCoordKey);\n }\n };\n return UrlTile;\n}(TileSource));\nexport default UrlTile;\n//# sourceMappingURL=UrlTile.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/source/TileImage\n */\nimport EventType from '../events/EventType.js';\nimport ImageTile from '../ImageTile.js';\nimport ReprojTile from '../reproj/Tile.js';\nimport TileCache from '../TileCache.js';\nimport TileState from '../TileState.js';\nimport UrlTile from './UrlTile.js';\nimport { ENABLE_RASTER_REPROJECTION } from '../reproj/common.js';\nimport { equivalent, get as getProjection } from '../proj.js';\nimport { getKey, getKeyZXY } from '../tilecoord.js';\nimport { getForProjection as getTileGridForProjection } from '../tilegrid.js';\nimport { getUid } from '../util.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize] Initial tile cache size. Will auto-grow to hold at least the number of tiles in the viewport.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note that\n * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {boolean} [imageSmoothing=true] Deprecated. Use the `interpolate` option instead.\n * @property {boolean} [interpolate=true] Use interpolated values when resampling. By default,\n * linear interpolation is used when resampling. Set to false to use the nearest neighbor instead.\n * @property {boolean} [opaque=false] Whether the layer is opaque.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection. Default is the view projection.\n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).\n * Higher values can increase reprojection performance, but decrease precision.\n * @property {import(\"./State.js\").default} [state] Source state.\n * @property {typeof import(\"../ImageTile.js\").default} [tileClass] Class used to instantiate image tiles.\n * Default is {@link module:ol/ImageTile~ImageTile}.\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid] Tile grid.\n * @property {import(\"../Tile.js\").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default is\n * ```js\n * function(imageTile, src) {\n * imageTile.getImage().src = src;\n * };\n * ```\n * @property {number} [tilePixelRatio=1] The pixel ratio used by the tile service. For example, if the tile\n * service advertizes 256px by 256px tiles but actually sends 512px\n * by 512px images (for retina/hidpi devices) then `tilePixelRatio`\n * should be set to `2`.\n * @property {import(\"../Tile.js\").UrlFunction} [tileUrlFunction] Optional function to get tile URL given a tile coordinate and the projection.\n * @property {string} [url] URL template. Must include `{x}`, `{y}` or `{-y}`, and `{z}` placeholders.\n * A `{?-?}` template pattern, for example `subdomain{a-f}.domain.com`, may be\n * used instead of defining each one separately in the `urls` option.\n * @property {Array} [urls] An array of URL templates.\n * @property {boolean} [wrapX] Whether to wrap the world horizontally. The default, is to\n * request out-of-bounds tiles from the server. When set to `false`, only one\n * world will be rendered. When set to `true`, tiles will be requested for one\n * world only, but they will be wrapped horizontally to render multiple worlds.\n * @property {number} [transition] Duration of the opacity transition for rendering.\n * To disable the opacity transition, pass `transition: 0`.\n * @property {string} [key] Optional tile key for proper cache fetching\n * @property {number|import(\"../array.js\").NearestDirectionFunction} [zDirection=0]\n * Choose whether to use tiles with a higher or lower zoom level when between integer\n * zoom levels. See {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution}.\n */\n/**\n * @classdesc\n * Base class for sources providing images divided into a tile grid.\n *\n * @fires import(\"./Tile.js\").TileSourceEvent\n * @api\n */\nvar TileImage = /** @class */ (function (_super) {\n __extends(TileImage, _super);\n /**\n * @param {!Options} options Image tile options.\n */\n function TileImage(options) {\n var _this = this;\n var interpolate = options.imageSmoothing !== undefined ? options.imageSmoothing : true;\n if (options.interpolate !== undefined) {\n interpolate = options.interpolate;\n }\n _this = _super.call(this, {\n attributions: options.attributions,\n cacheSize: options.cacheSize,\n opaque: options.opaque,\n projection: options.projection,\n state: options.state,\n tileGrid: options.tileGrid,\n tileLoadFunction: options.tileLoadFunction\n ? options.tileLoadFunction\n : defaultTileLoadFunction,\n tilePixelRatio: options.tilePixelRatio,\n tileUrlFunction: options.tileUrlFunction,\n url: options.url,\n urls: options.urls,\n wrapX: options.wrapX,\n transition: options.transition,\n interpolate: interpolate,\n key: options.key,\n attributionsCollapsible: options.attributionsCollapsible,\n zDirection: options.zDirection,\n }) || this;\n /**\n * @protected\n * @type {?string}\n */\n _this.crossOrigin =\n options.crossOrigin !== undefined ? options.crossOrigin : null;\n /**\n * @protected\n * @type {typeof ImageTile}\n */\n _this.tileClass =\n options.tileClass !== undefined ? options.tileClass : ImageTile;\n /**\n * @protected\n * @type {!Object}\n */\n _this.tileCacheForProjection = {};\n /**\n * @protected\n * @type {!Object}\n */\n _this.tileGridForProjection = {};\n /**\n * @private\n * @type {number|undefined}\n */\n _this.reprojectionErrorThreshold_ = options.reprojectionErrorThreshold;\n /**\n * @private\n * @type {boolean}\n */\n _this.renderReprojectionEdges_ = false;\n return _this;\n }\n /**\n * @return {boolean} Can expire cache.\n */\n TileImage.prototype.canExpireCache = function () {\n if (!ENABLE_RASTER_REPROJECTION) {\n return _super.prototype.canExpireCache.call(this);\n }\n if (this.tileCache.canExpireCache()) {\n return true;\n }\n else {\n for (var key in this.tileCacheForProjection) {\n if (this.tileCacheForProjection[key].canExpireCache()) {\n return true;\n }\n }\n }\n return false;\n };\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @param {!Object} usedTiles Used tiles.\n */\n TileImage.prototype.expireCache = function (projection, usedTiles) {\n if (!ENABLE_RASTER_REPROJECTION) {\n _super.prototype.expireCache.call(this, projection, usedTiles);\n return;\n }\n var usedTileCache = this.getTileCacheForProjection(projection);\n this.tileCache.expireCache(this.tileCache == usedTileCache ? usedTiles : {});\n for (var id in this.tileCacheForProjection) {\n var tileCache = this.tileCacheForProjection[id];\n tileCache.expireCache(tileCache == usedTileCache ? usedTiles : {});\n }\n };\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {number} Gutter.\n */\n TileImage.prototype.getGutterForProjection = function (projection) {\n if (ENABLE_RASTER_REPROJECTION &&\n this.getProjection() &&\n projection &&\n !equivalent(this.getProjection(), projection)) {\n return 0;\n }\n else {\n return this.getGutter();\n }\n };\n /**\n * @return {number} Gutter.\n */\n TileImage.prototype.getGutter = function () {\n return 0;\n };\n /**\n * Return the key to be used for all tiles in the source.\n * @return {string} The key for all tiles.\n */\n TileImage.prototype.getKey = function () {\n var key = _super.prototype.getKey.call(this);\n if (!this.getInterpolate()) {\n key += ':disable-interpolation';\n }\n return key;\n };\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {boolean} Opaque.\n */\n TileImage.prototype.getOpaque = function (projection) {\n if (ENABLE_RASTER_REPROJECTION &&\n this.getProjection() &&\n projection &&\n !equivalent(this.getProjection(), projection)) {\n return false;\n }\n else {\n return _super.prototype.getOpaque.call(this, projection);\n }\n };\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {!import(\"../tilegrid/TileGrid.js\").default} Tile grid.\n */\n TileImage.prototype.getTileGridForProjection = function (projection) {\n if (!ENABLE_RASTER_REPROJECTION) {\n return _super.prototype.getTileGridForProjection.call(this, projection);\n }\n var thisProj = this.getProjection();\n if (this.tileGrid && (!thisProj || equivalent(thisProj, projection))) {\n return this.tileGrid;\n }\n else {\n var projKey = getUid(projection);\n if (!(projKey in this.tileGridForProjection)) {\n this.tileGridForProjection[projKey] =\n getTileGridForProjection(projection);\n }\n return this.tileGridForProjection[projKey];\n }\n };\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {import(\"../TileCache.js\").default} Tile cache.\n */\n TileImage.prototype.getTileCacheForProjection = function (projection) {\n if (!ENABLE_RASTER_REPROJECTION) {\n return _super.prototype.getTileCacheForProjection.call(this, projection);\n }\n var thisProj = this.getProjection();\n if (!thisProj || equivalent(thisProj, projection)) {\n return this.tileCache;\n }\n else {\n var projKey = getUid(projection);\n if (!(projKey in this.tileCacheForProjection)) {\n this.tileCacheForProjection[projKey] = new TileCache(this.tileCache.highWaterMark);\n }\n return this.tileCacheForProjection[projKey];\n }\n };\n /**\n * @param {number} z Tile coordinate z.\n * @param {number} x Tile coordinate x.\n * @param {number} y Tile coordinate y.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @param {string} key The key set on the tile.\n * @return {!ImageTile} Tile.\n * @private\n */\n TileImage.prototype.createTile_ = function (z, x, y, pixelRatio, projection, key) {\n var tileCoord = [z, x, y];\n var urlTileCoord = this.getTileCoordForTileUrlFunction(tileCoord, projection);\n var tileUrl = urlTileCoord\n ? this.tileUrlFunction(urlTileCoord, pixelRatio, projection)\n : undefined;\n var tile = new this.tileClass(tileCoord, tileUrl !== undefined ? TileState.IDLE : TileState.EMPTY, tileUrl !== undefined ? tileUrl : '', this.crossOrigin, this.tileLoadFunction, this.tileOptions);\n tile.key = key;\n tile.addEventListener(EventType.CHANGE, this.handleTileChange.bind(this));\n return tile;\n };\n /**\n * @param {number} z Tile coordinate z.\n * @param {number} x Tile coordinate x.\n * @param {number} y Tile coordinate y.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @return {!(ImageTile|ReprojTile)} Tile.\n */\n TileImage.prototype.getTile = function (z, x, y, pixelRatio, projection) {\n var sourceProjection = this.getProjection();\n if (!ENABLE_RASTER_REPROJECTION ||\n !sourceProjection ||\n !projection ||\n equivalent(sourceProjection, projection)) {\n return this.getTileInternal(z, x, y, pixelRatio, sourceProjection || projection);\n }\n else {\n var cache = this.getTileCacheForProjection(projection);\n var tileCoord = [z, x, y];\n var tile = void 0;\n var tileCoordKey = getKey(tileCoord);\n if (cache.containsKey(tileCoordKey)) {\n tile = cache.get(tileCoordKey);\n }\n var key = this.getKey();\n if (tile && tile.key == key) {\n return tile;\n }\n else {\n var sourceTileGrid = this.getTileGridForProjection(sourceProjection);\n var targetTileGrid = this.getTileGridForProjection(projection);\n var wrappedTileCoord = this.getTileCoordForTileUrlFunction(tileCoord, projection);\n var newTile = new ReprojTile(sourceProjection, sourceTileGrid, projection, targetTileGrid, tileCoord, wrappedTileCoord, this.getTilePixelRatio(pixelRatio), this.getGutter(), function (z, x, y, pixelRatio) {\n return this.getTileInternal(z, x, y, pixelRatio, sourceProjection);\n }.bind(this), this.reprojectionErrorThreshold_, this.renderReprojectionEdges_, this.getInterpolate());\n newTile.key = key;\n if (tile) {\n newTile.interimTile = tile;\n newTile.refreshInterimChain();\n cache.replace(tileCoordKey, newTile);\n }\n else {\n cache.set(tileCoordKey, newTile);\n }\n return newTile;\n }\n }\n };\n /**\n * @param {number} z Tile coordinate z.\n * @param {number} x Tile coordinate x.\n * @param {number} y Tile coordinate y.\n * @param {number} pixelRatio Pixel ratio.\n * @param {!import(\"../proj/Projection.js\").default} projection Projection.\n * @return {!(ImageTile|ReprojTile)} Tile.\n * @protected\n */\n TileImage.prototype.getTileInternal = function (z, x, y, pixelRatio, projection) {\n var tile = null;\n var tileCoordKey = getKeyZXY(z, x, y);\n var key = this.getKey();\n if (!this.tileCache.containsKey(tileCoordKey)) {\n tile = this.createTile_(z, x, y, pixelRatio, projection, key);\n this.tileCache.set(tileCoordKey, tile);\n }\n else {\n tile = this.tileCache.get(tileCoordKey);\n if (tile.key != key) {\n // The source's params changed. If the tile has an interim tile and if we\n // can use it then we use it. Otherwise we create a new tile. In both\n // cases we attempt to assign an interim tile to the new tile.\n var interimTile = tile;\n tile = this.createTile_(z, x, y, pixelRatio, projection, key);\n //make the new tile the head of the list,\n if (interimTile.getState() == TileState.IDLE) {\n //the old tile hasn't begun loading yet, and is now outdated, so we can simply discard it\n tile.interimTile = interimTile.interimTile;\n }\n else {\n tile.interimTile = interimTile;\n }\n tile.refreshInterimChain();\n this.tileCache.replace(tileCoordKey, tile);\n }\n }\n return tile;\n };\n /**\n * Sets whether to render reprojection edges or not (usually for debugging).\n * @param {boolean} render Render the edges.\n * @api\n */\n TileImage.prototype.setRenderReprojectionEdges = function (render) {\n if (!ENABLE_RASTER_REPROJECTION ||\n this.renderReprojectionEdges_ == render) {\n return;\n }\n this.renderReprojectionEdges_ = render;\n for (var id in this.tileCacheForProjection) {\n this.tileCacheForProjection[id].clear();\n }\n this.changed();\n };\n /**\n * Sets the tile grid to use when reprojecting the tiles to the given\n * projection instead of the default tile grid for the projection.\n *\n * This can be useful when the default tile grid cannot be created\n * (e.g. projection has no extent defined) or\n * for optimization reasons (custom tile size, resolutions, ...).\n *\n * @param {import(\"../proj.js\").ProjectionLike} projection Projection.\n * @param {import(\"../tilegrid/TileGrid.js\").default} tilegrid Tile grid to use for the projection.\n * @api\n */\n TileImage.prototype.setTileGridForProjection = function (projection, tilegrid) {\n if (ENABLE_RASTER_REPROJECTION) {\n var proj = getProjection(projection);\n if (proj) {\n var projKey = getUid(proj);\n if (!(projKey in this.tileGridForProjection)) {\n this.tileGridForProjection[projKey] = tilegrid;\n }\n }\n }\n };\n return TileImage;\n}(UrlTile));\n/**\n * @param {ImageTile} imageTile Image tile.\n * @param {string} src Source.\n */\nfunction defaultTileLoadFunction(imageTile, src) {\n /** @type {HTMLImageElement|HTMLVideoElement} */ (imageTile.getImage()).src =\n src;\n}\nexport default TileImage;\n//# sourceMappingURL=TileImage.js.map","/**\n * @module ol/source/XYZ\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport TileImage from './TileImage.js';\nimport { createXYZ, extentFromProjection } from '../tilegrid.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.\n * @property {number} [cacheSize] Initial tile cache size. Will auto-grow to hold at least the number of tiles in the viewport.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note that\n * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {boolean} [imageSmoothing=true] Deprecated. Use the `interpolate` option instead.\n * @property {boolean} [interpolate=true] Use interpolated values when resampling. By default,\n * linear interpolation is used when resampling. Set to false to use the nearest neighbor instead.\n * @property {boolean} [opaque=false] Whether the layer is opaque.\n * @property {import(\"../proj.js\").ProjectionLike} [projection='EPSG:3857'] Projection.\n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).\n * Higher values can increase reprojection performance, but decrease precision.\n * @property {number} [maxZoom=42] Optional max zoom level. Not used if `tileGrid` is provided.\n * @property {number} [minZoom=0] Optional min zoom level. Not used if `tileGrid` is provided.\n * @property {number} [maxResolution] Optional tile grid resolution at level zero. Not used if `tileGrid` is provided.\n * @property {import(\"../tilegrid/TileGrid.js\").default} [tileGrid] Tile grid.\n * @property {import(\"../Tile.js\").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default is\n * ```js\n * function(imageTile, src) {\n * imageTile.getImage().src = src;\n * };\n * ```\n * @property {number} [tilePixelRatio=1] The pixel ratio used by the tile service.\n * For example, if the tile service advertizes 256px by 256px tiles but actually sends 512px\n * by 512px images (for retina/hidpi devices) then `tilePixelRatio`\n * should be set to `2`.\n * @property {number|import(\"../size.js\").Size} [tileSize=[256, 256]] The tile size used by the tile service.\n * Not used if `tileGrid` is provided.\n * @property {import(\"../Tile.js\").UrlFunction} [tileUrlFunction] Optional function to get\n * tile URL given a tile coordinate and the projection.\n * Required if `url` or `urls` are not provided.\n * @property {string} [url] URL template. Must include `{x}`, `{y}` or `{-y}`,\n * and `{z}` placeholders. A `{?-?}` template pattern, for example `subdomain{a-f}.domain.com`,\n * may be used instead of defining each one separately in the `urls` option.\n * @property {Array} [urls] An array of URL templates.\n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.\n * @property {number} [transition=250] Duration of the opacity transition for rendering.\n * To disable the opacity transition, pass `transition: 0`.\n * @property {number|import(\"../array.js\").NearestDirectionFunction} [zDirection=0]\n * Choose whether to use tiles with a higher or lower zoom level when between integer\n * zoom levels. See {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution}.\n */\n/**\n * @classdesc\n * Layer source for tile data with URLs in a set XYZ format that are\n * defined in a URL template. By default, this follows the widely-used\n * Google grid where `x` 0 and `y` 0 are in the top left. Grids like\n * TMS where `x` 0 and `y` 0 are in the bottom left can be used by\n * using the `{-y}` placeholder in the URL template, so long as the\n * source does not have a custom tile grid. In this case\n * a `tileUrlFunction` can be used, such as:\n * ```js\n * tileUrlFunction: function(coordinate) {\n * return 'http://mapserver.com/' + coordinate[0] + '/' +\n * coordinate[1] + '/' + (-coordinate[2] - 1) + '.png';\n * }\n * ```\n * @api\n */\nvar XYZ = /** @class */ (function (_super) {\n __extends(XYZ, _super);\n /**\n * @param {Options} [opt_options] XYZ options.\n */\n function XYZ(opt_options) {\n var _this = this;\n var options = opt_options || {};\n var interpolate = options.imageSmoothing !== undefined ? options.imageSmoothing : true;\n if (options.interpolate !== undefined) {\n interpolate = options.interpolate;\n }\n var projection = options.projection !== undefined ? options.projection : 'EPSG:3857';\n var tileGrid = options.tileGrid !== undefined\n ? options.tileGrid\n : createXYZ({\n extent: extentFromProjection(projection),\n maxResolution: options.maxResolution,\n maxZoom: options.maxZoom,\n minZoom: options.minZoom,\n tileSize: options.tileSize,\n });\n _this = _super.call(this, {\n attributions: options.attributions,\n cacheSize: options.cacheSize,\n crossOrigin: options.crossOrigin,\n interpolate: interpolate,\n opaque: options.opaque,\n projection: projection,\n reprojectionErrorThreshold: options.reprojectionErrorThreshold,\n tileGrid: tileGrid,\n tileLoadFunction: options.tileLoadFunction,\n tilePixelRatio: options.tilePixelRatio,\n tileUrlFunction: options.tileUrlFunction,\n url: options.url,\n urls: options.urls,\n wrapX: options.wrapX !== undefined ? options.wrapX : true,\n transition: options.transition,\n attributionsCollapsible: options.attributionsCollapsible,\n zDirection: options.zDirection,\n }) || this;\n return _this;\n }\n return XYZ;\n}(TileImage));\nexport default XYZ;\n//# sourceMappingURL=XYZ.js.map","/**\n * @module ol/render/Event\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport Event from '../events/Event.js';\nvar RenderEvent = /** @class */ (function (_super) {\n __extends(RenderEvent, _super);\n /**\n * @param {import(\"./EventType.js\").default} type Type.\n * @param {import(\"../transform.js\").Transform} [opt_inversePixelTransform] Transform for\n * CSS pixels to rendered pixels.\n * @param {import(\"../PluggableMap.js\").FrameState} [opt_frameState] Frame state.\n * @param {?(CanvasRenderingContext2D|WebGLRenderingContext)} [opt_context] Context.\n */\n function RenderEvent(type, opt_inversePixelTransform, opt_frameState, opt_context) {\n var _this = _super.call(this, type) || this;\n /**\n * Transform from CSS pixels (relative to the top-left corner of the map viewport)\n * to rendered pixels on this event's `context`. Only available when a Canvas renderer is used, null otherwise.\n * @type {import(\"../transform.js\").Transform|undefined}\n * @api\n */\n _this.inversePixelTransform = opt_inversePixelTransform;\n /**\n * An object representing the current render frame state.\n * @type {import(\"../PluggableMap.js\").FrameState|undefined}\n * @api\n */\n _this.frameState = opt_frameState;\n /**\n * Canvas context. Not available when the event is dispatched by the map. For Canvas 2D layers,\n * the context will be the 2D rendering context. For WebGL layers, the context will be the WebGL\n * context.\n * @type {CanvasRenderingContext2D|WebGLRenderingContext|undefined}\n * @api\n */\n _this.context = opt_context;\n return _this;\n }\n return RenderEvent;\n}(Event));\nexport default RenderEvent;\n//# sourceMappingURL=Event.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport { listen, listenOnce, unlistenByKey } from './events.js';\n/***\n * @template {string} Type\n * @template {Event|import(\"./events/Event.js\").default} EventClass\n * @template Return\n * @typedef {(type: Type, listener: (event: EventClass) => ?) => Return} OnSignature\n */\n/***\n * @template {string} Type\n * @template Return\n * @typedef {(type: Type[], listener: (event: Event|import(\"./events/Event\").default) => ?) => Return extends void ? void : Return[]} CombinedOnSignature\n */\n/**\n * @typedef {'change'|'error'} EventTypes\n */\n/***\n * @template Return\n * @typedef {OnSignature & CombinedOnSignature} ObservableOnSignature\n */\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 _this.on =\n /** @type {ObservableOnSignature} */ (_this.onInternal);\n _this.once =\n /** @type {ObservableOnSignature} */ (_this.onceInternal);\n _this.un = /** @type {ObservableOnSignature} */ (_this.unInternal);\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 * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @return {import(\"./events.js\").EventsKey|Array} Event key.\n * @protected\n */\n Observable.prototype.onInternal = 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 * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @return {import(\"./events.js\").EventsKey|Array} Event key.\n * @protected\n */\n Observable.prototype.onceInternal = function (type, listener) {\n var key;\n if (Array.isArray(type)) {\n var len = type.length;\n key = new Array(len);\n for (var i = 0; i < len; ++i) {\n key[i] = listenOnce(this, type[i], listener);\n }\n }\n else {\n key = listenOnce(this, /** @type {string} */ (type), listener);\n }\n /** @type {Object} */ (listener).ol_key = key;\n return key;\n };\n /**\n * Unlisten for a certain type of event.\n * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @protected\n */\n Observable.prototype.unInternal = function (type, listener) {\n var key = /** @type {Object} */ (listener).ol_key;\n if (key) {\n unByKey(key);\n }\n else 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 * Listen for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} 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 */\nObservable.prototype.on;\n/**\n * Listen once for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} 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 */\nObservable.prototype.once;\n/**\n * Unlisten for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @api\n */\nObservable.prototype.un;\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'\n ? Object.assign\n : 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'\n ? Object.values\n : 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","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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 BaseObject from '../Object.js';\nimport MapEventType from '../MapEventType.js';\nimport { VOID } from '../functions.js';\nimport { listen, unlistenByKey } from '../events.js';\nimport { removeNode } from '../dom.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):void} [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 var element = options.element;\n if (element && !options.target && !element.style.pointerEvents) {\n element.style.pointerEvents = 'auto';\n }\n /**\n * @protected\n * @type {HTMLElement}\n */\n _this.element = element ? 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 if (options.render) {\n _this.render = options.render;\n }\n if (options.target) {\n _this.setTarget(options.target);\n }\n return _this;\n }\n /**\n * Clean up.\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|undefined} 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_\n : 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 * Renders the control.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @api\n */\n Control.prototype.render = function (mapEvent) { };\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_ =\n typeof target === 'string' ? document.getElementById(target) : target;\n };\n return Control;\n}(BaseObject));\nexport default Control;\n//# sourceMappingURL=Control.js.map","\r\n\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n","import { render } from \"./SiteAttributes.vue?vue&type=template&id=2480384a\"\nimport script from \"./SiteAttributes.vue?vue&type=script&lang=js\"\nexport * from \"./SiteAttributes.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"C:\\\\Users\\\\s.arshad\\\\Documents\\\\GitHub\\\\link-portal\\\\link\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n\r\n","import { render } from \"./SiteNodes.vue?vue&type=template&id=53047d6d&scoped=true\"\nimport script from \"./SiteNodes.vue?vue&type=script&lang=js\"\nexport * from \"./SiteNodes.vue?vue&type=script&lang=js\"\n\nimport \"./SiteNodes.vue?vue&type=style&index=0&id=53047d6d&scoped=true&lang=css\"\nimport \"@vueform/multiselect/themes/default.css?vue&type=style&index=1&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\s.arshad\\\\Documents\\\\GitHub\\\\link-portal\\\\link\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-53047d6d\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./SiteMap.vue?vue&type=template&id=4e5e3470\"\nimport script from \"./SiteMap.vue?vue&type=script&lang=js\"\nexport * from \"./SiteMap.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"C:\\\\Users\\\\s.arshad\\\\Documents\\\\GitHub\\\\link-portal\\\\link\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./SiteStats.vue?vue&type=template&id=d0577bec\"\nimport script from \"./SiteStats.vue?vue&type=script&lang=js\"\nexport * from \"./SiteStats.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"C:\\\\Users\\\\s.arshad\\\\Documents\\\\GitHub\\\\link-portal\\\\link\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./SiteFileManager.vue?vue&type=template&id=20a89f86\"\nimport script from \"./SiteFileManager.vue?vue&type=script&lang=js\"\nexport * from \"./SiteFileManager.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"C:\\\\Users\\\\s.arshad\\\\Documents\\\\GitHub\\\\link-portal\\\\link\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n","import { render } from \"./SiteNotes.vue?vue&type=template&id=da30a8c2\"\nimport script from \"./SiteNotes.vue?vue&type=script&lang=js\"\nexport * from \"./SiteNotes.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"C:\\\\Users\\\\s.arshad\\\\Documents\\\\GitHub\\\\link-portal\\\\link\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./SiteMaintenance.vue?vue&type=template&id=34dae484&scoped=true\"\nimport script from \"./SiteMaintenance.vue?vue&type=script&lang=js\"\nexport * from \"./SiteMaintenance.vue?vue&type=script&lang=js\"\n\nimport \"./SiteMaintenance.vue?vue&type=style&index=0&id=34dae484&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\s.arshad\\\\Documents\\\\GitHub\\\\link-portal\\\\link\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-34dae484\"]])\n\nexport default __exports__","import { render } from \"./Site.vue?vue&type=template&id=03627f1a&scoped=true\"\nimport script from \"./Site.vue?vue&type=script&lang=js\"\nexport * from \"./Site.vue?vue&type=script&lang=js\"\n\nimport \"./Site.vue?vue&type=style&index=0&id=03627f1a&scoped=true&lang=css\"\nimport \"@vueform/multiselect/themes/default.css?vue&type=style&index=1&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\s.arshad\\\\Documents\\\\GitHub\\\\link-portal\\\\link\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-03627f1a\"]])\n\nexport default __exports__","/**\n * @module ol/style/IconImageCache\n */\nimport { asString } from '../color.js';\n/**\n * @classdesc\n * Singleton class. Available through {@link module:ol/style/IconImageCache~shared}.\n */\nvar IconImageCache = /** @class */ (function () {\n function IconImageCache() {\n /**\n * @type {!Object}\n * @private\n */\n this.cache_ = {};\n /**\n * @type {number}\n * @private\n */\n this.cacheSize_ = 0;\n /**\n * @type {number}\n * @private\n */\n this.maxCacheSize_ = 32;\n }\n /**\n * FIXME empty description for jsdoc\n */\n IconImageCache.prototype.clear = function () {\n this.cache_ = {};\n this.cacheSize_ = 0;\n };\n /**\n * @return {boolean} Can expire cache.\n */\n IconImageCache.prototype.canExpireCache = function () {\n return this.cacheSize_ > this.maxCacheSize_;\n };\n /**\n * FIXME empty description for jsdoc\n */\n IconImageCache.prototype.expire = function () {\n if (this.canExpireCache()) {\n var i = 0;\n for (var key in this.cache_) {\n var iconImage = this.cache_[key];\n if ((i++ & 3) === 0 && !iconImage.hasListener()) {\n delete this.cache_[key];\n --this.cacheSize_;\n }\n }\n }\n };\n /**\n * @param {string} src Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../color.js\").Color} color Color.\n * @return {import(\"./IconImage.js\").default} Icon image.\n */\n IconImageCache.prototype.get = function (src, crossOrigin, color) {\n var key = getKey(src, crossOrigin, color);\n return key in this.cache_ ? this.cache_[key] : null;\n };\n /**\n * @param {string} src Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../color.js\").Color} color Color.\n * @param {import(\"./IconImage.js\").default} iconImage Icon image.\n */\n IconImageCache.prototype.set = function (src, crossOrigin, color, iconImage) {\n var key = getKey(src, crossOrigin, color);\n this.cache_[key] = iconImage;\n ++this.cacheSize_;\n };\n /**\n * Set the cache size of the icon cache. Default is `32`. Change this value when\n * your map uses more than 32 different icon images and you are not caching icon\n * styles on the application level.\n * @param {number} maxCacheSize Cache max size.\n * @api\n */\n IconImageCache.prototype.setSize = function (maxCacheSize) {\n this.maxCacheSize_ = maxCacheSize;\n this.expire();\n };\n return IconImageCache;\n}());\n/**\n * @param {string} src Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../color.js\").Color} color Color.\n * @return {string} Cache key.\n */\nfunction getKey(src, crossOrigin, color) {\n var colorString = color ? asString(color) : 'null';\n return crossOrigin + ':' + src + ':' + colorString;\n}\nexport default IconImageCache;\n/**\n * The {@link module:ol/style/IconImageCache~IconImageCache} for\n * {@link module:ol/style/Icon~Icon} images.\n * @api\n */\nexport var shared = new IconImageCache();\n//# sourceMappingURL=IconImageCache.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/BaseVector\n */\nimport Layer from './Layer.js';\nimport RBush from 'rbush';\nimport { assign } from '../obj.js';\nimport { createDefaultStyle, toFunction as toStyleFunction, } from '../style/Style.js';\n/**\n * @template {import(\"../source/Vector.js\").default|import(\"../source/VectorTile.js\").default} VectorSourceType\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 * @property {import(\"../render.js\").OrderFunction} [renderOrder] Render order. Function to be used when sorting\n * features before rendering. By default features are drawn in the order that they are created. Use\n * `null` to avoid the sort, but get an undefined draw order.\n * @property {number} [renderBuffer=100] The buffer in pixels around the viewport extent used by the\n * renderer when getting features from the vector source for the rendering or hit-detection.\n * Recommended value: the size of the largest symbol, line width or label.\n * @property {VectorSourceType} [source] Source.\n * @property {import(\"../PluggableMap.js\").default} [map] Sets the layer as overlay on a map. The map will not manage\n * this layer in its layers collection, and the layer will be rendered on top. This is useful for\n * temporary layers. The standard way to add a layer to a map and have it managed by the map is to\n * use {@link import(\"../PluggableMap.js\").default#addLayer map.addLayer()}.\n * @property {boolean} [declutter=false] Declutter images and text. Decluttering is applied to all\n * image and text styles of all Vector and VectorTile layers that have set this to `true`. The priority\n * is defined by the z-index of the layer, the `zIndex` of the style and the render order of features.\n * Higher z-index means higher priority. Within the same z-index, a feature rendered before another has\n * higher priority.\n *\n * As an optimization decluttered features from layers with the same `className` are rendered above\n * the fill and stroke styles of all of those layers regardless of z-index. To opt out of this\n * behavior and place declutterd features with their own layer configure the layer with a `className`\n * other than `ol-layer`.\n * @property {import(\"../style/Style.js\").StyleLike|null} [style] Layer style. When set to `null`, only\n * features that have their own style will be rendered. See {@link module:ol/style/Style~Style} for the default style\n * which will be used if this is not set.\n * @property {import(\"./Base.js\").BackgroundColor} [background] Background color for the layer. If not specified, no background\n * will be rendered.\n * @property {boolean} [updateWhileAnimating=false] When set to `true`, feature batches will\n * be recreated during animations. This means that no vectors will be shown clipped, but the\n * setting will have a performance impact for large amounts of vector data. When set to `false`,\n * batches will be recreated when no animation is active.\n * @property {boolean} [updateWhileInteracting=false] When set to `true`, feature batches will\n * be recreated during interactions. See also `updateWhileAnimating`.\n * @property {Object} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n/**\n * @enum {string}\n * @private\n */\nvar Property = {\n RENDER_ORDER: 'renderOrder',\n};\n/**\n * @classdesc\n * Vector data that is rendered client-side.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/Vector.js\").default|import(\"../source/VectorTile.js\").default} VectorSourceType\n * @template {import(\"../renderer/canvas/VectorLayer.js\").default|import(\"../renderer/canvas/VectorTileLayer.js\").default|import(\"../renderer/canvas/VectorImageLayer.js\").default|import(\"../renderer/webgl/PointsLayer.js\").default} RendererType\n * @extends {Layer}\n * @api\n */\nvar BaseVectorLayer = /** @class */ (function (_super) {\n __extends(BaseVectorLayer, _super);\n /**\n * @param {Options} [opt_options] Options.\n */\n function BaseVectorLayer(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var baseOptions = assign({}, options);\n delete baseOptions.style;\n delete baseOptions.renderBuffer;\n delete baseOptions.updateWhileAnimating;\n delete baseOptions.updateWhileInteracting;\n _this = _super.call(this, baseOptions) || this;\n /**\n * @private\n * @type {boolean}\n */\n _this.declutter_ =\n options.declutter !== undefined ? options.declutter : false;\n /**\n * @type {number}\n * @private\n */\n _this.renderBuffer_ =\n options.renderBuffer !== undefined ? options.renderBuffer : 100;\n /**\n * User provided style.\n * @type {import(\"../style/Style.js\").StyleLike}\n * @private\n */\n _this.style_ = null;\n /**\n * Style function for use within the library.\n * @type {import(\"../style/Style.js\").StyleFunction|undefined}\n * @private\n */\n _this.styleFunction_ = undefined;\n _this.setStyle(options.style);\n /**\n * @type {boolean}\n * @private\n */\n _this.updateWhileAnimating_ =\n options.updateWhileAnimating !== undefined\n ? options.updateWhileAnimating\n : false;\n /**\n * @type {boolean}\n * @private\n */\n _this.updateWhileInteracting_ =\n options.updateWhileInteracting !== undefined\n ? options.updateWhileInteracting\n : false;\n return _this;\n }\n /**\n * @return {boolean} Declutter.\n */\n BaseVectorLayer.prototype.getDeclutter = function () {\n return this.declutter_;\n };\n /**\n * Get the topmost feature that intersects the given pixel on the viewport. Returns a promise\n * that resolves with an array of features. The array will either contain the topmost feature\n * when a hit was detected, or it will be empty.\n *\n * The hit detection algorithm used for this method is optimized for performance, but is less\n * accurate than the one used in {@link import(\"../PluggableMap.js\").default#getFeaturesAtPixel}: Text\n * is not considered, and icons are only represented by their bounding box instead of the exact\n * image.\n *\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @return {Promise>} Promise that resolves with an array of features.\n * @api\n */\n BaseVectorLayer.prototype.getFeatures = function (pixel) {\n return _super.prototype.getFeatures.call(this, pixel);\n };\n /**\n * @return {number|undefined} Render buffer.\n */\n BaseVectorLayer.prototype.getRenderBuffer = function () {\n return this.renderBuffer_;\n };\n /**\n * @return {function(import(\"../Feature.js\").default, import(\"../Feature.js\").default): number|null|undefined} Render\n * order.\n */\n BaseVectorLayer.prototype.getRenderOrder = function () {\n return /** @type {import(\"../render.js\").OrderFunction|null|undefined} */ (this.get(Property.RENDER_ORDER));\n };\n /**\n * Get the style for features. This returns whatever was passed to the `style`\n * option at construction or to the `setStyle` method.\n * @return {import(\"../style/Style.js\").StyleLike|null|undefined} Layer style.\n * @api\n */\n BaseVectorLayer.prototype.getStyle = function () {\n return this.style_;\n };\n /**\n * Get the style function.\n * @return {import(\"../style/Style.js\").StyleFunction|undefined} Layer style function.\n * @api\n */\n BaseVectorLayer.prototype.getStyleFunction = function () {\n return this.styleFunction_;\n };\n /**\n * @return {boolean} Whether the rendered layer should be updated while\n * animating.\n */\n BaseVectorLayer.prototype.getUpdateWhileAnimating = function () {\n return this.updateWhileAnimating_;\n };\n /**\n * @return {boolean} Whether the rendered layer should be updated while\n * interacting.\n */\n BaseVectorLayer.prototype.getUpdateWhileInteracting = function () {\n return this.updateWhileInteracting_;\n };\n /**\n * Render declutter items for this layer\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n BaseVectorLayer.prototype.renderDeclutter = function (frameState) {\n if (!frameState.declutterTree) {\n frameState.declutterTree = new RBush(9);\n }\n /** @type {*} */ (this.getRenderer()).renderDeclutter(frameState);\n };\n /**\n * @param {import(\"../render.js\").OrderFunction|null|undefined} renderOrder\n * Render order.\n */\n BaseVectorLayer.prototype.setRenderOrder = function (renderOrder) {\n this.set(Property.RENDER_ORDER, renderOrder);\n };\n /**\n * Set the style for features. This can be a single style object, an array\n * of styles, or a function that takes a feature and resolution and returns\n * an array of styles. If set to `null`, the layer has no style (a `null` style),\n * so only features that have their own styles will be rendered in the layer. Call\n * `setStyle()` without arguments to reset to the default style. See\n * {@link module:ol/style/Style~Style} for information on the default style.\n * @param {import(\"../style/Style.js\").StyleLike|null} [opt_style] Layer style.\n * @api\n */\n BaseVectorLayer.prototype.setStyle = function (opt_style) {\n this.style_ = opt_style !== undefined ? opt_style : createDefaultStyle;\n this.styleFunction_ =\n opt_style === null ? undefined : toStyleFunction(this.style_);\n this.changed();\n };\n return BaseVectorLayer;\n}(Layer));\nexport default BaseVectorLayer;\n//# sourceMappingURL=BaseVector.js.map","/**\n * @module ol/render/canvas/Instruction\n */\n/**\n * @enum {number}\n */\nvar Instruction = {\n BEGIN_GEOMETRY: 0,\n BEGIN_PATH: 1,\n CIRCLE: 2,\n CLOSE_PATH: 3,\n CUSTOM: 4,\n DRAW_CHARS: 5,\n DRAW_IMAGE: 6,\n END_GEOMETRY: 7,\n FILL: 8,\n MOVE_TO_LINE_TO: 9,\n SET_FILL_STYLE: 10,\n SET_STROKE_STYLE: 11,\n STROKE: 12,\n};\n/**\n * @type {Array}\n */\nexport var fillInstruction = [Instruction.FILL];\n/**\n * @type {Array}\n */\nexport var strokeInstruction = [Instruction.STROKE];\n/**\n * @type {Array}\n */\nexport var beginPathInstruction = [Instruction.BEGIN_PATH];\n/**\n * @type {Array}\n */\nexport var closePathInstruction = [Instruction.CLOSE_PATH];\nexport default Instruction;\n//# sourceMappingURL=Instruction.js.map","/**\n * @module ol/render/VectorContext\n */\n/**\n * @classdesc\n * Context for drawing geometries. A vector context is available on render\n * events and does not need to be constructed directly.\n * @api\n */\nvar VectorContext = /** @class */ (function () {\n function VectorContext() {\n }\n /**\n * Render a geometry with a custom renderer.\n *\n * @param {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {Function} renderer Renderer.\n * @param {Function} hitDetectionRenderer Renderer.\n */\n VectorContext.prototype.drawCustom = function (geometry, feature, renderer, hitDetectionRenderer) { };\n /**\n * Render a geometry.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry The geometry to render.\n */\n VectorContext.prototype.drawGeometry = function (geometry) { };\n /**\n * Set the rendering style.\n *\n * @param {import(\"../style/Style.js\").default} style The rendering style.\n */\n VectorContext.prototype.setStyle = function (style) { };\n /**\n * @param {import(\"../geom/Circle.js\").default} circleGeometry Circle geometry.\n * @param {import(\"../Feature.js\").default} feature Feature.\n */\n VectorContext.prototype.drawCircle = function (circleGeometry, feature) { };\n /**\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"../style/Style.js\").default} style Style.\n */\n VectorContext.prototype.drawFeature = function (feature, style) { };\n /**\n * @param {import(\"../geom/GeometryCollection.js\").default} geometryCollectionGeometry Geometry collection.\n * @param {import(\"../Feature.js\").default} feature Feature.\n */\n VectorContext.prototype.drawGeometryCollection = function (geometryCollectionGeometry, feature) { };\n /**\n * @param {import(\"../geom/LineString.js\").default|import(\"./Feature.js\").default} lineStringGeometry Line string geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n VectorContext.prototype.drawLineString = function (lineStringGeometry, feature) { };\n /**\n * @param {import(\"../geom/MultiLineString.js\").default|import(\"./Feature.js\").default} multiLineStringGeometry MultiLineString geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n VectorContext.prototype.drawMultiLineString = function (multiLineStringGeometry, feature) { };\n /**\n * @param {import(\"../geom/MultiPoint.js\").default|import(\"./Feature.js\").default} multiPointGeometry MultiPoint geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n VectorContext.prototype.drawMultiPoint = function (multiPointGeometry, feature) { };\n /**\n * @param {import(\"../geom/MultiPolygon.js\").default} multiPolygonGeometry MultiPolygon geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n VectorContext.prototype.drawMultiPolygon = function (multiPolygonGeometry, feature) { };\n /**\n * @param {import(\"../geom/Point.js\").default|import(\"./Feature.js\").default} pointGeometry Point geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n VectorContext.prototype.drawPoint = function (pointGeometry, feature) { };\n /**\n * @param {import(\"../geom/Polygon.js\").default|import(\"./Feature.js\").default} polygonGeometry Polygon geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n VectorContext.prototype.drawPolygon = function (polygonGeometry, feature) { };\n /**\n * @param {import(\"../geom/SimpleGeometry.js\").default|import(\"./Feature.js\").default} geometry Geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n VectorContext.prototype.drawText = function (geometry, feature) { };\n /**\n * @param {import(\"../style/Fill.js\").default} fillStyle Fill style.\n * @param {import(\"../style/Stroke.js\").default} strokeStyle Stroke style.\n */\n VectorContext.prototype.setFillStrokeStyle = function (fillStyle, strokeStyle) { };\n /**\n * @param {import(\"../style/Image.js\").default} imageStyle Image style.\n * @param {import(\"../render/canvas.js\").DeclutterImageWithText} [opt_declutterImageWithText] Shared data for combined decluttering with a text style.\n */\n VectorContext.prototype.setImageStyle = function (imageStyle, opt_declutterImageWithText) { };\n /**\n * @param {import(\"../style/Text.js\").default} textStyle Text style.\n * @param {import(\"../render/canvas.js\").DeclutterImageWithText} [opt_declutterImageWithText] Shared data for combined decluttering with an image style.\n */\n VectorContext.prototype.setTextStyle = function (textStyle, opt_declutterImageWithText) { };\n return VectorContext;\n}());\nexport default VectorContext;\n//# sourceMappingURL=VectorContext.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/render/canvas/Builder\n */\nimport CanvasInstruction from './Instruction.js';\nimport GeometryType from '../../geom/GeometryType.js';\nimport Relationship from '../../extent/Relationship.js';\nimport VectorContext from '../VectorContext.js';\nimport { asColorLike } from '../../colorlike.js';\nimport { buffer, clone, containsCoordinate, coordinateRelationship, } from '../../extent.js';\nimport { defaultFillStyle, defaultLineCap, defaultLineDash, defaultLineDashOffset, defaultLineJoin, defaultLineWidth, defaultMiterLimit, defaultStrokeStyle, } from '../canvas.js';\nimport { equals, reverseSubArray } from '../../array.js';\nimport { inflateCoordinates, inflateCoordinatesArray, inflateMultiCoordinatesArray, } from '../../geom/flat/inflate.js';\nvar CanvasBuilder = /** @class */ (function (_super) {\n __extends(CanvasBuilder, _super);\n /**\n * @param {number} tolerance Tolerance.\n * @param {import(\"../../extent.js\").Extent} maxExtent Maximum extent.\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n */\n function CanvasBuilder(tolerance, maxExtent, resolution, pixelRatio) {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {number}\n */\n _this.tolerance = tolerance;\n /**\n * @protected\n * @const\n * @type {import(\"../../extent.js\").Extent}\n */\n _this.maxExtent = maxExtent;\n /**\n * @protected\n * @type {number}\n */\n _this.pixelRatio = pixelRatio;\n /**\n * @protected\n * @type {number}\n */\n _this.maxLineWidth = 0;\n /**\n * @protected\n * @const\n * @type {number}\n */\n _this.resolution = resolution;\n /**\n * @private\n * @type {Array<*>}\n */\n _this.beginGeometryInstruction1_ = null;\n /**\n * @private\n * @type {Array<*>}\n */\n _this.beginGeometryInstruction2_ = null;\n /**\n * @private\n * @type {import(\"../../extent.js\").Extent}\n */\n _this.bufferedMaxExtent_ = null;\n /**\n * @protected\n * @type {Array<*>}\n */\n _this.instructions = [];\n /**\n * @protected\n * @type {Array}\n */\n _this.coordinates = [];\n /**\n * @private\n * @type {import(\"../../coordinate.js\").Coordinate}\n */\n _this.tmpCoordinate_ = [];\n /**\n * @protected\n * @type {Array<*>}\n */\n _this.hitDetectionInstructions = [];\n /**\n * @protected\n * @type {import(\"../canvas.js\").FillStrokeState}\n */\n _this.state = /** @type {import(\"../canvas.js\").FillStrokeState} */ ({});\n return _this;\n }\n /**\n * @protected\n * @param {Array} dashArray Dash array.\n * @return {Array} Dash array with pixel ratio applied\n */\n CanvasBuilder.prototype.applyPixelRatio = function (dashArray) {\n var pixelRatio = this.pixelRatio;\n return pixelRatio == 1\n ? dashArray\n : dashArray.map(function (dash) {\n return dash * pixelRatio;\n });\n };\n /**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} stride Stride.\n * @protected\n * @return {number} My end\n */\n CanvasBuilder.prototype.appendFlatPointCoordinates = function (flatCoordinates, stride) {\n var extent = this.getBufferedMaxExtent();\n var tmpCoord = this.tmpCoordinate_;\n var coordinates = this.coordinates;\n var myEnd = coordinates.length;\n for (var i = 0, ii = flatCoordinates.length; i < ii; i += stride) {\n tmpCoord[0] = flatCoordinates[i];\n tmpCoord[1] = flatCoordinates[i + 1];\n if (containsCoordinate(extent, tmpCoord)) {\n coordinates[myEnd++] = tmpCoord[0];\n coordinates[myEnd++] = tmpCoord[1];\n }\n }\n return myEnd;\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 {boolean} closed Last input coordinate equals first.\n * @param {boolean} skipFirst Skip first coordinate.\n * @protected\n * @return {number} My end.\n */\n CanvasBuilder.prototype.appendFlatLineCoordinates = function (flatCoordinates, offset, end, stride, closed, skipFirst) {\n var coordinates = this.coordinates;\n var myEnd = coordinates.length;\n var extent = this.getBufferedMaxExtent();\n if (skipFirst) {\n offset += stride;\n }\n var lastXCoord = flatCoordinates[offset];\n var lastYCoord = flatCoordinates[offset + 1];\n var nextCoord = this.tmpCoordinate_;\n var skipped = true;\n var i, lastRel, nextRel;\n for (i = offset + stride; i < end; i += stride) {\n nextCoord[0] = flatCoordinates[i];\n nextCoord[1] = flatCoordinates[i + 1];\n nextRel = coordinateRelationship(extent, nextCoord);\n if (nextRel !== lastRel) {\n if (skipped) {\n coordinates[myEnd++] = lastXCoord;\n coordinates[myEnd++] = lastYCoord;\n skipped = false;\n }\n coordinates[myEnd++] = nextCoord[0];\n coordinates[myEnd++] = nextCoord[1];\n }\n else if (nextRel === Relationship.INTERSECTING) {\n coordinates[myEnd++] = nextCoord[0];\n coordinates[myEnd++] = nextCoord[1];\n skipped = false;\n }\n else {\n skipped = true;\n }\n lastXCoord = nextCoord[0];\n lastYCoord = nextCoord[1];\n lastRel = nextRel;\n }\n // Last coordinate equals first or only one point to append:\n if ((closed && skipped) || i === offset + stride) {\n coordinates[myEnd++] = lastXCoord;\n coordinates[myEnd++] = lastYCoord;\n }\n return myEnd;\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} builderEnds Builder ends.\n * @return {number} Offset.\n */\n CanvasBuilder.prototype.drawCustomCoordinates_ = function (flatCoordinates, offset, ends, stride, builderEnds) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var builderEnd = this.appendFlatLineCoordinates(flatCoordinates, offset, end, stride, false, false);\n builderEnds.push(builderEnd);\n offset = end;\n }\n return offset;\n };\n /**\n * @param {import(\"../../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n * @param {Function} renderer Renderer.\n * @param {Function} hitDetectionRenderer Renderer.\n */\n CanvasBuilder.prototype.drawCustom = function (geometry, feature, renderer, hitDetectionRenderer) {\n this.beginGeometry(geometry, feature);\n var type = geometry.getType();\n var stride = geometry.getStride();\n var builderBegin = this.coordinates.length;\n var flatCoordinates, builderEnd, builderEnds, builderEndss;\n var offset;\n switch (type) {\n case GeometryType.MULTI_POLYGON:\n flatCoordinates =\n /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (geometry).getOrientedFlatCoordinates();\n builderEndss = [];\n var endss = \n /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (geometry).getEndss();\n offset = 0;\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var myEnds = [];\n offset = this.drawCustomCoordinates_(flatCoordinates, offset, endss[i], stride, myEnds);\n builderEndss.push(myEnds);\n }\n this.instructions.push([\n CanvasInstruction.CUSTOM,\n builderBegin,\n builderEndss,\n geometry,\n renderer,\n inflateMultiCoordinatesArray,\n ]);\n this.hitDetectionInstructions.push([\n CanvasInstruction.CUSTOM,\n builderBegin,\n builderEndss,\n geometry,\n hitDetectionRenderer || renderer,\n inflateMultiCoordinatesArray,\n ]);\n break;\n case GeometryType.POLYGON:\n case GeometryType.MULTI_LINE_STRING:\n builderEnds = [];\n flatCoordinates =\n type == GeometryType.POLYGON\n ? /** @type {import(\"../../geom/Polygon.js\").default} */ (geometry).getOrientedFlatCoordinates()\n : geometry.getFlatCoordinates();\n offset = this.drawCustomCoordinates_(flatCoordinates, 0, \n /** @type {import(\"../../geom/Polygon.js\").default|import(\"../../geom/MultiLineString.js\").default} */ (geometry).getEnds(), stride, builderEnds);\n this.instructions.push([\n CanvasInstruction.CUSTOM,\n builderBegin,\n builderEnds,\n geometry,\n renderer,\n inflateCoordinatesArray,\n ]);\n this.hitDetectionInstructions.push([\n CanvasInstruction.CUSTOM,\n builderBegin,\n builderEnds,\n geometry,\n hitDetectionRenderer || renderer,\n inflateCoordinatesArray,\n ]);\n break;\n case GeometryType.LINE_STRING:\n case GeometryType.CIRCLE:\n flatCoordinates = geometry.getFlatCoordinates();\n builderEnd = this.appendFlatLineCoordinates(flatCoordinates, 0, flatCoordinates.length, stride, false, false);\n this.instructions.push([\n CanvasInstruction.CUSTOM,\n builderBegin,\n builderEnd,\n geometry,\n renderer,\n inflateCoordinates,\n ]);\n this.hitDetectionInstructions.push([\n CanvasInstruction.CUSTOM,\n builderBegin,\n builderEnd,\n geometry,\n hitDetectionRenderer || renderer,\n inflateCoordinates,\n ]);\n break;\n case GeometryType.MULTI_POINT:\n flatCoordinates = geometry.getFlatCoordinates();\n builderEnd = this.appendFlatPointCoordinates(flatCoordinates, stride);\n if (builderEnd > builderBegin) {\n this.instructions.push([\n CanvasInstruction.CUSTOM,\n builderBegin,\n builderEnd,\n geometry,\n renderer,\n inflateCoordinates,\n ]);\n this.hitDetectionInstructions.push([\n CanvasInstruction.CUSTOM,\n builderBegin,\n builderEnd,\n geometry,\n hitDetectionRenderer || renderer,\n inflateCoordinates,\n ]);\n }\n break;\n case GeometryType.POINT:\n flatCoordinates = geometry.getFlatCoordinates();\n this.coordinates.push(flatCoordinates[0], flatCoordinates[1]);\n builderEnd = this.coordinates.length;\n this.instructions.push([\n CanvasInstruction.CUSTOM,\n builderBegin,\n builderEnd,\n geometry,\n renderer,\n ]);\n this.hitDetectionInstructions.push([\n CanvasInstruction.CUSTOM,\n builderBegin,\n builderEnd,\n geometry,\n hitDetectionRenderer || renderer,\n ]);\n break;\n default:\n }\n this.endGeometry(feature);\n };\n /**\n * @protected\n * @param {import(\"../../geom/Geometry\").default|import(\"../Feature.js\").default} geometry The geometry.\n * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n */\n CanvasBuilder.prototype.beginGeometry = function (geometry, feature) {\n this.beginGeometryInstruction1_ = [\n CanvasInstruction.BEGIN_GEOMETRY,\n feature,\n 0,\n geometry,\n ];\n this.instructions.push(this.beginGeometryInstruction1_);\n this.beginGeometryInstruction2_ = [\n CanvasInstruction.BEGIN_GEOMETRY,\n feature,\n 0,\n geometry,\n ];\n this.hitDetectionInstructions.push(this.beginGeometryInstruction2_);\n };\n /**\n * @return {import(\"../canvas.js\").SerializableInstructions} the serializable instructions.\n */\n CanvasBuilder.prototype.finish = function () {\n return {\n instructions: this.instructions,\n hitDetectionInstructions: this.hitDetectionInstructions,\n coordinates: this.coordinates,\n };\n };\n /**\n * Reverse the hit detection instructions.\n */\n CanvasBuilder.prototype.reverseHitDetectionInstructions = function () {\n var hitDetectionInstructions = this.hitDetectionInstructions;\n // step 1 - reverse array\n hitDetectionInstructions.reverse();\n // step 2 - reverse instructions within geometry blocks\n var i;\n var n = hitDetectionInstructions.length;\n var instruction;\n var type;\n var begin = -1;\n for (i = 0; i < n; ++i) {\n instruction = hitDetectionInstructions[i];\n type = /** @type {import(\"./Instruction.js\").default} */ (instruction[0]);\n if (type == CanvasInstruction.END_GEOMETRY) {\n begin = i;\n }\n else if (type == CanvasInstruction.BEGIN_GEOMETRY) {\n instruction[2] = i;\n reverseSubArray(this.hitDetectionInstructions, begin, i);\n begin = -1;\n }\n }\n };\n /**\n * @param {import(\"../../style/Fill.js\").default} fillStyle Fill style.\n * @param {import(\"../../style/Stroke.js\").default} strokeStyle Stroke style.\n */\n CanvasBuilder.prototype.setFillStrokeStyle = function (fillStyle, strokeStyle) {\n var state = this.state;\n if (fillStyle) {\n var fillStyleColor = fillStyle.getColor();\n state.fillStyle = asColorLike(fillStyleColor ? fillStyleColor : defaultFillStyle);\n }\n else {\n state.fillStyle = undefined;\n }\n if (strokeStyle) {\n var strokeStyleColor = strokeStyle.getColor();\n state.strokeStyle = asColorLike(strokeStyleColor ? strokeStyleColor : defaultStrokeStyle);\n var strokeStyleLineCap = strokeStyle.getLineCap();\n state.lineCap =\n strokeStyleLineCap !== undefined ? strokeStyleLineCap : defaultLineCap;\n var strokeStyleLineDash = strokeStyle.getLineDash();\n state.lineDash = strokeStyleLineDash\n ? strokeStyleLineDash.slice()\n : defaultLineDash;\n var strokeStyleLineDashOffset = strokeStyle.getLineDashOffset();\n state.lineDashOffset = strokeStyleLineDashOffset\n ? strokeStyleLineDashOffset\n : defaultLineDashOffset;\n var strokeStyleLineJoin = strokeStyle.getLineJoin();\n state.lineJoin =\n strokeStyleLineJoin !== undefined\n ? strokeStyleLineJoin\n : defaultLineJoin;\n var strokeStyleWidth = strokeStyle.getWidth();\n state.lineWidth =\n strokeStyleWidth !== undefined ? strokeStyleWidth : defaultLineWidth;\n var strokeStyleMiterLimit = strokeStyle.getMiterLimit();\n state.miterLimit =\n strokeStyleMiterLimit !== undefined\n ? strokeStyleMiterLimit\n : defaultMiterLimit;\n if (state.lineWidth > this.maxLineWidth) {\n this.maxLineWidth = state.lineWidth;\n // invalidate the buffered max extent cache\n this.bufferedMaxExtent_ = null;\n }\n }\n else {\n state.strokeStyle = undefined;\n state.lineCap = undefined;\n state.lineDash = null;\n state.lineDashOffset = undefined;\n state.lineJoin = undefined;\n state.lineWidth = undefined;\n state.miterLimit = undefined;\n }\n };\n /**\n * @param {import(\"../canvas.js\").FillStrokeState} state State.\n * @return {Array<*>} Fill instruction.\n */\n CanvasBuilder.prototype.createFill = function (state) {\n var fillStyle = state.fillStyle;\n /** @type {Array<*>} */\n var fillInstruction = [CanvasInstruction.SET_FILL_STYLE, fillStyle];\n if (typeof fillStyle !== 'string') {\n // Fill is a pattern or gradient - align it!\n fillInstruction.push(true);\n }\n return fillInstruction;\n };\n /**\n * @param {import(\"../canvas.js\").FillStrokeState} state State.\n */\n CanvasBuilder.prototype.applyStroke = function (state) {\n this.instructions.push(this.createStroke(state));\n };\n /**\n * @param {import(\"../canvas.js\").FillStrokeState} state State.\n * @return {Array<*>} Stroke instruction.\n */\n CanvasBuilder.prototype.createStroke = function (state) {\n return [\n CanvasInstruction.SET_STROKE_STYLE,\n state.strokeStyle,\n state.lineWidth * this.pixelRatio,\n state.lineCap,\n state.lineJoin,\n state.miterLimit,\n this.applyPixelRatio(state.lineDash),\n state.lineDashOffset * this.pixelRatio,\n ];\n };\n /**\n * @param {import(\"../canvas.js\").FillStrokeState} state State.\n * @param {function(this:CanvasBuilder, import(\"../canvas.js\").FillStrokeState):Array<*>} createFill Create fill.\n */\n CanvasBuilder.prototype.updateFillStyle = function (state, createFill) {\n var fillStyle = state.fillStyle;\n if (typeof fillStyle !== 'string' || state.currentFillStyle != fillStyle) {\n if (fillStyle !== undefined) {\n this.instructions.push(createFill.call(this, state));\n }\n state.currentFillStyle = fillStyle;\n }\n };\n /**\n * @param {import(\"../canvas.js\").FillStrokeState} state State.\n * @param {function(this:CanvasBuilder, import(\"../canvas.js\").FillStrokeState): void} applyStroke Apply stroke.\n */\n CanvasBuilder.prototype.updateStrokeStyle = function (state, applyStroke) {\n var strokeStyle = state.strokeStyle;\n var lineCap = state.lineCap;\n var lineDash = state.lineDash;\n var lineDashOffset = state.lineDashOffset;\n var lineJoin = state.lineJoin;\n var lineWidth = state.lineWidth;\n var miterLimit = state.miterLimit;\n if (state.currentStrokeStyle != strokeStyle ||\n state.currentLineCap != lineCap ||\n (lineDash != state.currentLineDash &&\n !equals(state.currentLineDash, lineDash)) ||\n state.currentLineDashOffset != lineDashOffset ||\n state.currentLineJoin != lineJoin ||\n state.currentLineWidth != lineWidth ||\n state.currentMiterLimit != miterLimit) {\n if (strokeStyle !== undefined) {\n applyStroke.call(this, state);\n }\n state.currentStrokeStyle = strokeStyle;\n state.currentLineCap = lineCap;\n state.currentLineDash = lineDash;\n state.currentLineDashOffset = lineDashOffset;\n state.currentLineJoin = lineJoin;\n state.currentLineWidth = lineWidth;\n state.currentMiterLimit = miterLimit;\n }\n };\n /**\n * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n */\n CanvasBuilder.prototype.endGeometry = function (feature) {\n this.beginGeometryInstruction1_[2] = this.instructions.length;\n this.beginGeometryInstruction1_ = null;\n this.beginGeometryInstruction2_[2] = this.hitDetectionInstructions.length;\n this.beginGeometryInstruction2_ = null;\n var endGeometryInstruction = [CanvasInstruction.END_GEOMETRY, feature];\n this.instructions.push(endGeometryInstruction);\n this.hitDetectionInstructions.push(endGeometryInstruction);\n };\n /**\n * Get the buffered rendering extent. Rendering will be clipped to the extent\n * provided to the constructor. To account for symbolizers that may intersect\n * this extent, we calculate a buffered extent (e.g. based on stroke width).\n * @return {import(\"../../extent.js\").Extent} The buffered rendering extent.\n * @protected\n */\n CanvasBuilder.prototype.getBufferedMaxExtent = function () {\n if (!this.bufferedMaxExtent_) {\n this.bufferedMaxExtent_ = clone(this.maxExtent);\n if (this.maxLineWidth > 0) {\n var width = (this.resolution * (this.maxLineWidth + 1)) / 2;\n buffer(this.bufferedMaxExtent_, width, this.bufferedMaxExtent_);\n }\n }\n return this.bufferedMaxExtent_;\n };\n return CanvasBuilder;\n}(VectorContext));\nexport default CanvasBuilder;\n//# sourceMappingURL=Builder.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/render/canvas/ImageBuilder\n */\nimport CanvasBuilder from './Builder.js';\nimport CanvasInstruction from './Instruction.js';\nvar CanvasImageBuilder = /** @class */ (function (_super) {\n __extends(CanvasImageBuilder, _super);\n /**\n * @param {number} tolerance Tolerance.\n * @param {import(\"../../extent.js\").Extent} maxExtent Maximum extent.\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n */\n function CanvasImageBuilder(tolerance, maxExtent, resolution, pixelRatio) {\n var _this = _super.call(this, tolerance, maxExtent, resolution, pixelRatio) || this;\n /**\n * @private\n * @type {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement}\n */\n _this.hitDetectionImage_ = null;\n /**\n * @private\n * @type {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement}\n */\n _this.image_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.imagePixelRatio_ = undefined;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.anchorX_ = undefined;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.anchorY_ = undefined;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.height_ = undefined;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.opacity_ = undefined;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.originX_ = undefined;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.originY_ = undefined;\n /**\n * @private\n * @type {boolean|undefined}\n */\n _this.rotateWithView_ = undefined;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.rotation_ = undefined;\n /**\n * @private\n * @type {import(\"../../size.js\").Size|undefined}\n */\n _this.scale_ = undefined;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.width_ = undefined;\n /**\n * Data shared with a text builder for combined decluttering.\n * @private\n * @type {import(\"../canvas.js\").DeclutterImageWithText}\n */\n _this.declutterImageWithText_ = undefined;\n return _this;\n }\n /**\n * @param {import(\"../../geom/Point.js\").default|import(\"../Feature.js\").default} pointGeometry Point geometry.\n * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n */\n CanvasImageBuilder.prototype.drawPoint = function (pointGeometry, feature) {\n if (!this.image_) {\n return;\n }\n this.beginGeometry(pointGeometry, feature);\n var flatCoordinates = pointGeometry.getFlatCoordinates();\n var stride = pointGeometry.getStride();\n var myBegin = this.coordinates.length;\n var myEnd = this.appendFlatPointCoordinates(flatCoordinates, stride);\n this.instructions.push([\n CanvasInstruction.DRAW_IMAGE,\n myBegin,\n myEnd,\n this.image_,\n // Remaining arguments to DRAW_IMAGE are in alphabetical order\n this.anchorX_ * this.imagePixelRatio_,\n this.anchorY_ * this.imagePixelRatio_,\n Math.ceil(this.height_ * this.imagePixelRatio_),\n this.opacity_,\n this.originX_,\n this.originY_,\n this.rotateWithView_,\n this.rotation_,\n [\n (this.scale_[0] * this.pixelRatio) / this.imagePixelRatio_,\n (this.scale_[1] * this.pixelRatio) / this.imagePixelRatio_,\n ],\n Math.ceil(this.width_ * this.imagePixelRatio_),\n this.declutterImageWithText_,\n ]);\n this.hitDetectionInstructions.push([\n CanvasInstruction.DRAW_IMAGE,\n myBegin,\n myEnd,\n this.hitDetectionImage_,\n // Remaining arguments to DRAW_IMAGE are in alphabetical order\n this.anchorX_,\n this.anchorY_,\n this.height_,\n this.opacity_,\n this.originX_,\n this.originY_,\n this.rotateWithView_,\n this.rotation_,\n this.scale_,\n this.width_,\n this.declutterImageWithText_,\n ]);\n this.endGeometry(feature);\n };\n /**\n * @param {import(\"../../geom/MultiPoint.js\").default|import(\"../Feature.js\").default} multiPointGeometry MultiPoint geometry.\n * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n */\n CanvasImageBuilder.prototype.drawMultiPoint = function (multiPointGeometry, feature) {\n if (!this.image_) {\n return;\n }\n this.beginGeometry(multiPointGeometry, feature);\n var flatCoordinates = multiPointGeometry.getFlatCoordinates();\n var stride = multiPointGeometry.getStride();\n var myBegin = this.coordinates.length;\n var myEnd = this.appendFlatPointCoordinates(flatCoordinates, stride);\n this.instructions.push([\n CanvasInstruction.DRAW_IMAGE,\n myBegin,\n myEnd,\n this.image_,\n // Remaining arguments to DRAW_IMAGE are in alphabetical order\n this.anchorX_ * this.imagePixelRatio_,\n this.anchorY_ * this.imagePixelRatio_,\n Math.ceil(this.height_ * this.imagePixelRatio_),\n this.opacity_,\n this.originX_,\n this.originY_,\n this.rotateWithView_,\n this.rotation_,\n [\n (this.scale_[0] * this.pixelRatio) / this.imagePixelRatio_,\n (this.scale_[1] * this.pixelRatio) / this.imagePixelRatio_,\n ],\n Math.ceil(this.width_ * this.imagePixelRatio_),\n this.declutterImageWithText_,\n ]);\n this.hitDetectionInstructions.push([\n CanvasInstruction.DRAW_IMAGE,\n myBegin,\n myEnd,\n this.hitDetectionImage_,\n // Remaining arguments to DRAW_IMAGE are in alphabetical order\n this.anchorX_,\n this.anchorY_,\n this.height_,\n this.opacity_,\n this.originX_,\n this.originY_,\n this.rotateWithView_,\n this.rotation_,\n this.scale_,\n this.width_,\n this.declutterImageWithText_,\n ]);\n this.endGeometry(feature);\n };\n /**\n * @return {import(\"../canvas.js\").SerializableInstructions} the serializable instructions.\n */\n CanvasImageBuilder.prototype.finish = function () {\n this.reverseHitDetectionInstructions();\n // FIXME this doesn't really protect us against further calls to draw*Geometry\n this.anchorX_ = undefined;\n this.anchorY_ = undefined;\n this.hitDetectionImage_ = null;\n this.image_ = null;\n this.imagePixelRatio_ = undefined;\n this.height_ = undefined;\n this.scale_ = undefined;\n this.opacity_ = undefined;\n this.originX_ = undefined;\n this.originY_ = undefined;\n this.rotateWithView_ = undefined;\n this.rotation_ = undefined;\n this.width_ = undefined;\n return _super.prototype.finish.call(this);\n };\n /**\n * @param {import(\"../../style/Image.js\").default} imageStyle Image style.\n * @param {Object} [opt_sharedData] Shared data.\n */\n CanvasImageBuilder.prototype.setImageStyle = function (imageStyle, opt_sharedData) {\n var anchor = imageStyle.getAnchor();\n var size = imageStyle.getSize();\n var hitDetectionImage = imageStyle.getHitDetectionImage();\n var image = imageStyle.getImage(this.pixelRatio);\n var origin = imageStyle.getOrigin();\n this.imagePixelRatio_ = imageStyle.getPixelRatio(this.pixelRatio);\n this.anchorX_ = anchor[0];\n this.anchorY_ = anchor[1];\n this.hitDetectionImage_ = hitDetectionImage;\n this.image_ = image;\n this.height_ = size[1];\n this.opacity_ = imageStyle.getOpacity();\n this.originX_ = origin[0] * this.imagePixelRatio_;\n this.originY_ = origin[1] * this.imagePixelRatio_;\n this.rotateWithView_ = imageStyle.getRotateWithView();\n this.rotation_ = imageStyle.getRotation();\n this.scale_ = imageStyle.getScaleArray();\n this.width_ = size[0];\n this.declutterImageWithText_ = opt_sharedData;\n };\n return CanvasImageBuilder;\n}(CanvasBuilder));\nexport default CanvasImageBuilder;\n//# sourceMappingURL=ImageBuilder.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/render/canvas/LineStringBuilder\n */\nimport CanvasBuilder from './Builder.js';\nimport CanvasInstruction, { beginPathInstruction, strokeInstruction, } from './Instruction.js';\nimport { defaultLineDash, defaultLineDashOffset } from '../canvas.js';\nvar CanvasLineStringBuilder = /** @class */ (function (_super) {\n __extends(CanvasLineStringBuilder, _super);\n /**\n * @param {number} tolerance Tolerance.\n * @param {import(\"../../extent.js\").Extent} maxExtent Maximum extent.\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n */\n function CanvasLineStringBuilder(tolerance, maxExtent, resolution, pixelRatio) {\n return _super.call(this, tolerance, maxExtent, resolution, pixelRatio) || this;\n }\n /**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @private\n * @return {number} end.\n */\n CanvasLineStringBuilder.prototype.drawFlatCoordinates_ = function (flatCoordinates, offset, end, stride) {\n var myBegin = this.coordinates.length;\n var myEnd = this.appendFlatLineCoordinates(flatCoordinates, offset, end, stride, false, false);\n var moveToLineToInstruction = [\n CanvasInstruction.MOVE_TO_LINE_TO,\n myBegin,\n myEnd,\n ];\n this.instructions.push(moveToLineToInstruction);\n this.hitDetectionInstructions.push(moveToLineToInstruction);\n return end;\n };\n /**\n * @param {import(\"../../geom/LineString.js\").default|import(\"../Feature.js\").default} lineStringGeometry Line string geometry.\n * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n */\n CanvasLineStringBuilder.prototype.drawLineString = function (lineStringGeometry, feature) {\n var state = this.state;\n var strokeStyle = state.strokeStyle;\n var lineWidth = state.lineWidth;\n if (strokeStyle === undefined || lineWidth === undefined) {\n return;\n }\n this.updateStrokeStyle(state, this.applyStroke);\n this.beginGeometry(lineStringGeometry, feature);\n this.hitDetectionInstructions.push([\n CanvasInstruction.SET_STROKE_STYLE,\n state.strokeStyle,\n state.lineWidth,\n state.lineCap,\n state.lineJoin,\n state.miterLimit,\n defaultLineDash,\n defaultLineDashOffset,\n ], beginPathInstruction);\n var flatCoordinates = lineStringGeometry.getFlatCoordinates();\n var stride = lineStringGeometry.getStride();\n this.drawFlatCoordinates_(flatCoordinates, 0, flatCoordinates.length, stride);\n this.hitDetectionInstructions.push(strokeInstruction);\n this.endGeometry(feature);\n };\n /**\n * @param {import(\"../../geom/MultiLineString.js\").default|import(\"../Feature.js\").default} multiLineStringGeometry MultiLineString geometry.\n * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n */\n CanvasLineStringBuilder.prototype.drawMultiLineString = function (multiLineStringGeometry, feature) {\n var state = this.state;\n var strokeStyle = state.strokeStyle;\n var lineWidth = state.lineWidth;\n if (strokeStyle === undefined || lineWidth === undefined) {\n return;\n }\n this.updateStrokeStyle(state, this.applyStroke);\n this.beginGeometry(multiLineStringGeometry, feature);\n this.hitDetectionInstructions.push([\n CanvasInstruction.SET_STROKE_STYLE,\n state.strokeStyle,\n state.lineWidth,\n state.lineCap,\n state.lineJoin,\n state.miterLimit,\n state.lineDash,\n state.lineDashOffset,\n ], beginPathInstruction);\n var ends = multiLineStringGeometry.getEnds();\n var flatCoordinates = multiLineStringGeometry.getFlatCoordinates();\n var stride = multiLineStringGeometry.getStride();\n var offset = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n offset = this.drawFlatCoordinates_(flatCoordinates, offset, \n /** @type {number} */ (ends[i]), stride);\n }\n this.hitDetectionInstructions.push(strokeInstruction);\n this.endGeometry(feature);\n };\n /**\n * @return {import(\"../canvas.js\").SerializableInstructions} the serializable instructions.\n */\n CanvasLineStringBuilder.prototype.finish = function () {\n var state = this.state;\n if (state.lastStroke != undefined &&\n state.lastStroke != this.coordinates.length) {\n this.instructions.push(strokeInstruction);\n }\n this.reverseHitDetectionInstructions();\n this.state = null;\n return _super.prototype.finish.call(this);\n };\n /**\n * @param {import(\"../canvas.js\").FillStrokeState} state State.\n */\n CanvasLineStringBuilder.prototype.applyStroke = function (state) {\n if (state.lastStroke != undefined &&\n state.lastStroke != this.coordinates.length) {\n this.instructions.push(strokeInstruction);\n state.lastStroke = this.coordinates.length;\n }\n state.lastStroke = 0;\n _super.prototype.applyStroke.call(this, state);\n this.instructions.push(beginPathInstruction);\n };\n return CanvasLineStringBuilder;\n}(CanvasBuilder));\nexport default CanvasLineStringBuilder;\n//# sourceMappingURL=LineStringBuilder.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/render/canvas/PolygonBuilder\n */\nimport CanvasBuilder from './Builder.js';\nimport CanvasInstruction, { beginPathInstruction, closePathInstruction, fillInstruction, strokeInstruction, } from './Instruction.js';\nimport { defaultFillStyle } from '../canvas.js';\nimport { snap } from '../../geom/flat/simplify.js';\nvar CanvasPolygonBuilder = /** @class */ (function (_super) {\n __extends(CanvasPolygonBuilder, _super);\n /**\n * @param {number} tolerance Tolerance.\n * @param {import(\"../../extent.js\").Extent} maxExtent Maximum extent.\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n */\n function CanvasPolygonBuilder(tolerance, maxExtent, resolution, pixelRatio) {\n return _super.call(this, tolerance, maxExtent, resolution, pixelRatio) || this;\n }\n /**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @private\n * @return {number} End.\n */\n CanvasPolygonBuilder.prototype.drawFlatCoordinatess_ = function (flatCoordinates, offset, ends, stride) {\n var state = this.state;\n var fill = state.fillStyle !== undefined;\n var stroke = state.strokeStyle !== undefined;\n var numEnds = ends.length;\n this.instructions.push(beginPathInstruction);\n this.hitDetectionInstructions.push(beginPathInstruction);\n for (var i = 0; i < numEnds; ++i) {\n var end = ends[i];\n var myBegin = this.coordinates.length;\n var myEnd = this.appendFlatLineCoordinates(flatCoordinates, offset, end, stride, true, !stroke);\n var moveToLineToInstruction = [\n CanvasInstruction.MOVE_TO_LINE_TO,\n myBegin,\n myEnd,\n ];\n this.instructions.push(moveToLineToInstruction);\n this.hitDetectionInstructions.push(moveToLineToInstruction);\n if (stroke) {\n // Performance optimization: only call closePath() when we have a stroke.\n // Otherwise the ring is closed already (see appendFlatLineCoordinates above).\n this.instructions.push(closePathInstruction);\n this.hitDetectionInstructions.push(closePathInstruction);\n }\n offset = end;\n }\n if (fill) {\n this.instructions.push(fillInstruction);\n this.hitDetectionInstructions.push(fillInstruction);\n }\n if (stroke) {\n this.instructions.push(strokeInstruction);\n this.hitDetectionInstructions.push(strokeInstruction);\n }\n return offset;\n };\n /**\n * @param {import(\"../../geom/Circle.js\").default} circleGeometry Circle geometry.\n * @param {import(\"../../Feature.js\").default} feature Feature.\n */\n CanvasPolygonBuilder.prototype.drawCircle = function (circleGeometry, feature) {\n var state = this.state;\n var fillStyle = state.fillStyle;\n var strokeStyle = state.strokeStyle;\n if (fillStyle === undefined && strokeStyle === undefined) {\n return;\n }\n this.setFillStrokeStyles_();\n this.beginGeometry(circleGeometry, feature);\n if (state.fillStyle !== undefined) {\n this.hitDetectionInstructions.push([\n CanvasInstruction.SET_FILL_STYLE,\n defaultFillStyle,\n ]);\n }\n if (state.strokeStyle !== undefined) {\n this.hitDetectionInstructions.push([\n CanvasInstruction.SET_STROKE_STYLE,\n state.strokeStyle,\n state.lineWidth,\n state.lineCap,\n state.lineJoin,\n state.miterLimit,\n state.lineDash,\n state.lineDashOffset,\n ]);\n }\n var flatCoordinates = circleGeometry.getFlatCoordinates();\n var stride = circleGeometry.getStride();\n var myBegin = this.coordinates.length;\n this.appendFlatLineCoordinates(flatCoordinates, 0, flatCoordinates.length, stride, false, false);\n var circleInstruction = [CanvasInstruction.CIRCLE, myBegin];\n this.instructions.push(beginPathInstruction, circleInstruction);\n this.hitDetectionInstructions.push(beginPathInstruction, circleInstruction);\n if (state.fillStyle !== undefined) {\n this.instructions.push(fillInstruction);\n this.hitDetectionInstructions.push(fillInstruction);\n }\n if (state.strokeStyle !== undefined) {\n this.instructions.push(strokeInstruction);\n this.hitDetectionInstructions.push(strokeInstruction);\n }\n this.endGeometry(feature);\n };\n /**\n * @param {import(\"../../geom/Polygon.js\").default|import(\"../Feature.js\").default} polygonGeometry Polygon geometry.\n * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n */\n CanvasPolygonBuilder.prototype.drawPolygon = function (polygonGeometry, feature) {\n var state = this.state;\n var fillStyle = state.fillStyle;\n var strokeStyle = state.strokeStyle;\n if (fillStyle === undefined && strokeStyle === undefined) {\n return;\n }\n this.setFillStrokeStyles_();\n this.beginGeometry(polygonGeometry, feature);\n if (state.fillStyle !== undefined) {\n this.hitDetectionInstructions.push([\n CanvasInstruction.SET_FILL_STYLE,\n defaultFillStyle,\n ]);\n }\n if (state.strokeStyle !== undefined) {\n this.hitDetectionInstructions.push([\n CanvasInstruction.SET_STROKE_STYLE,\n state.strokeStyle,\n state.lineWidth,\n state.lineCap,\n state.lineJoin,\n state.miterLimit,\n state.lineDash,\n state.lineDashOffset,\n ]);\n }\n var ends = polygonGeometry.getEnds();\n var flatCoordinates = polygonGeometry.getOrientedFlatCoordinates();\n var stride = polygonGeometry.getStride();\n this.drawFlatCoordinatess_(flatCoordinates, 0, \n /** @type {Array} */ (ends), stride);\n this.endGeometry(feature);\n };\n /**\n * @param {import(\"../../geom/MultiPolygon.js\").default} multiPolygonGeometry MultiPolygon geometry.\n * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n */\n CanvasPolygonBuilder.prototype.drawMultiPolygon = function (multiPolygonGeometry, feature) {\n var state = this.state;\n var fillStyle = state.fillStyle;\n var strokeStyle = state.strokeStyle;\n if (fillStyle === undefined && strokeStyle === undefined) {\n return;\n }\n this.setFillStrokeStyles_();\n this.beginGeometry(multiPolygonGeometry, feature);\n if (state.fillStyle !== undefined) {\n this.hitDetectionInstructions.push([\n CanvasInstruction.SET_FILL_STYLE,\n defaultFillStyle,\n ]);\n }\n if (state.strokeStyle !== undefined) {\n this.hitDetectionInstructions.push([\n CanvasInstruction.SET_STROKE_STYLE,\n state.strokeStyle,\n state.lineWidth,\n state.lineCap,\n state.lineJoin,\n state.miterLimit,\n state.lineDash,\n state.lineDashOffset,\n ]);\n }\n var endss = multiPolygonGeometry.getEndss();\n var flatCoordinates = multiPolygonGeometry.getOrientedFlatCoordinates();\n var stride = multiPolygonGeometry.getStride();\n var offset = 0;\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n offset = this.drawFlatCoordinatess_(flatCoordinates, offset, endss[i], stride);\n }\n this.endGeometry(feature);\n };\n /**\n * @return {import(\"../canvas.js\").SerializableInstructions} the serializable instructions.\n */\n CanvasPolygonBuilder.prototype.finish = function () {\n this.reverseHitDetectionInstructions();\n this.state = null;\n // We want to preserve topology when drawing polygons. Polygons are\n // simplified using quantization and point elimination. However, we might\n // have received a mix of quantized and non-quantized geometries, so ensure\n // that all are quantized by quantizing all coordinates in the batch.\n var tolerance = this.tolerance;\n if (tolerance !== 0) {\n var coordinates = this.coordinates;\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n coordinates[i] = snap(coordinates[i], tolerance);\n }\n }\n return _super.prototype.finish.call(this);\n };\n /**\n * @private\n */\n CanvasPolygonBuilder.prototype.setFillStrokeStyles_ = function () {\n var state = this.state;\n var fillStyle = state.fillStyle;\n if (fillStyle !== undefined) {\n this.updateFillStyle(state, this.createFill);\n }\n if (state.strokeStyle !== undefined) {\n this.updateStrokeStyle(state, this.applyStroke);\n }\n };\n return CanvasPolygonBuilder;\n}(CanvasBuilder));\nexport default CanvasPolygonBuilder;\n//# sourceMappingURL=PolygonBuilder.js.map","/**\n * @module ol/geom/flat/straightchunk\n */\n/**\n * @param {number} maxAngle Maximum acceptable angle delta between segments.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {Array} Start and end of the first suitable chunk of the\n * given `flatCoordinates`.\n */\nexport function matchingChunk(maxAngle, flatCoordinates, offset, end, stride) {\n var chunkStart = offset;\n var chunkEnd = offset;\n var chunkM = 0;\n var m = 0;\n var start = offset;\n var acos, i, m12, m23, x1, y1, x12, y12, x23, y23;\n for (i = offset; i < end; i += stride) {\n var x2 = flatCoordinates[i];\n var y2 = flatCoordinates[i + 1];\n if (x1 !== undefined) {\n x23 = x2 - x1;\n y23 = y2 - y1;\n m23 = Math.sqrt(x23 * x23 + y23 * y23);\n if (x12 !== undefined) {\n m += m12;\n acos = Math.acos((x12 * x23 + y12 * y23) / (m12 * m23));\n if (acos > maxAngle) {\n if (m > chunkM) {\n chunkM = m;\n chunkStart = start;\n chunkEnd = i;\n }\n m = 0;\n start = i - stride;\n }\n }\n m12 = m23;\n x12 = x23;\n y12 = y23;\n }\n x1 = x2;\n y1 = y2;\n }\n m += m23;\n return m > chunkM ? [start, i] : [chunkStart, chunkEnd];\n}\n//# sourceMappingURL=straightchunk.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/render/canvas/TextBuilder\n */\nimport CanvasBuilder from './Builder.js';\nimport CanvasInstruction from './Instruction.js';\nimport GeometryType from '../../geom/GeometryType.js';\nimport TextPlacement from '../../style/TextPlacement.js';\nimport { asColorLike } from '../../colorlike.js';\nimport { defaultFillStyle, defaultFont, defaultLineCap, defaultLineDash, defaultLineDashOffset, defaultLineJoin, defaultLineWidth, defaultMiterLimit, defaultPadding, defaultStrokeStyle, defaultTextAlign, defaultTextBaseline, registerFont, } from '../canvas.js';\nimport { getUid } from '../../util.js';\nimport { intersects } from '../../extent.js';\nimport { matchingChunk } from '../../geom/flat/straightchunk.js';\n/**\n * @const\n * @enum {number}\n */\nexport var TEXT_ALIGN = {\n 'left': 0,\n 'end': 0,\n 'center': 0.5,\n 'right': 1,\n 'start': 1,\n 'top': 0,\n 'middle': 0.5,\n 'hanging': 0.2,\n 'alphabetic': 0.8,\n 'ideographic': 0.8,\n 'bottom': 1,\n};\nvar CanvasTextBuilder = /** @class */ (function (_super) {\n __extends(CanvasTextBuilder, _super);\n /**\n * @param {number} tolerance Tolerance.\n * @param {import(\"../../extent.js\").Extent} maxExtent Maximum extent.\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n */\n function CanvasTextBuilder(tolerance, maxExtent, resolution, pixelRatio) {\n var _this = _super.call(this, tolerance, maxExtent, resolution, pixelRatio) || this;\n /**\n * @private\n * @type {Array}\n */\n _this.labels_ = null;\n /**\n * @private\n * @type {string}\n */\n _this.text_ = '';\n /**\n * @private\n * @type {number}\n */\n _this.textOffsetX_ = 0;\n /**\n * @private\n * @type {number}\n */\n _this.textOffsetY_ = 0;\n /**\n * @private\n * @type {boolean|undefined}\n */\n _this.textRotateWithView_ = undefined;\n /**\n * @private\n * @type {number}\n */\n _this.textRotation_ = 0;\n /**\n * @private\n * @type {?import(\"../canvas.js\").FillState}\n */\n _this.textFillState_ = null;\n /**\n * @type {!Object}\n */\n _this.fillStates = {};\n /**\n * @private\n * @type {?import(\"../canvas.js\").StrokeState}\n */\n _this.textStrokeState_ = null;\n /**\n * @type {!Object}\n */\n _this.strokeStates = {};\n /**\n * @private\n * @type {import(\"../canvas.js\").TextState}\n */\n _this.textState_ = /** @type {import(\"../canvas.js\").TextState} */ ({});\n /**\n * @type {!Object}\n */\n _this.textStates = {};\n /**\n * @private\n * @type {string}\n */\n _this.textKey_ = '';\n /**\n * @private\n * @type {string}\n */\n _this.fillKey_ = '';\n /**\n * @private\n * @type {string}\n */\n _this.strokeKey_ = '';\n /**\n * Data shared with an image builder for combined decluttering.\n * @private\n * @type {import(\"../canvas.js\").DeclutterImageWithText}\n */\n _this.declutterImageWithText_ = undefined;\n return _this;\n }\n /**\n * @return {import(\"../canvas.js\").SerializableInstructions} the serializable instructions.\n */\n CanvasTextBuilder.prototype.finish = function () {\n var instructions = _super.prototype.finish.call(this);\n instructions.textStates = this.textStates;\n instructions.fillStates = this.fillStates;\n instructions.strokeStates = this.strokeStates;\n return instructions;\n };\n /**\n * @param {import(\"../../geom/SimpleGeometry.js\").default|import(\"../Feature.js\").default} geometry Geometry.\n * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n */\n CanvasTextBuilder.prototype.drawText = function (geometry, feature) {\n var fillState = this.textFillState_;\n var strokeState = this.textStrokeState_;\n var textState = this.textState_;\n if (this.text_ === '' || !textState || (!fillState && !strokeState)) {\n return;\n }\n var coordinates = this.coordinates;\n var begin = coordinates.length;\n var geometryType = geometry.getType();\n var flatCoordinates = null;\n var stride = geometry.getStride();\n if (textState.placement === TextPlacement.LINE &&\n (geometryType == GeometryType.LINE_STRING ||\n geometryType == GeometryType.MULTI_LINE_STRING ||\n geometryType == GeometryType.POLYGON ||\n geometryType == GeometryType.MULTI_POLYGON)) {\n if (!intersects(this.getBufferedMaxExtent(), geometry.getExtent())) {\n return;\n }\n var ends = void 0;\n flatCoordinates = geometry.getFlatCoordinates();\n if (geometryType == GeometryType.LINE_STRING) {\n ends = [flatCoordinates.length];\n }\n else if (geometryType == GeometryType.MULTI_LINE_STRING) {\n ends = /** @type {import(\"../../geom/MultiLineString.js\").default} */ (geometry).getEnds();\n }\n else if (geometryType == GeometryType.POLYGON) {\n ends = /** @type {import(\"../../geom/Polygon.js\").default} */ (geometry)\n .getEnds()\n .slice(0, 1);\n }\n else if (geometryType == GeometryType.MULTI_POLYGON) {\n var endss = \n /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (geometry).getEndss();\n ends = [];\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n ends.push(endss[i][0]);\n }\n }\n this.beginGeometry(geometry, feature);\n var textAlign = textState.textAlign;\n var flatOffset = 0;\n var flatEnd = void 0;\n for (var o = 0, oo = ends.length; o < oo; ++o) {\n if (textAlign == undefined) {\n var range = matchingChunk(textState.maxAngle, flatCoordinates, flatOffset, ends[o], stride);\n flatOffset = range[0];\n flatEnd = range[1];\n }\n else {\n flatEnd = ends[o];\n }\n for (var i = flatOffset; i < flatEnd; i += stride) {\n coordinates.push(flatCoordinates[i], flatCoordinates[i + 1]);\n }\n var end = coordinates.length;\n flatOffset = ends[o];\n this.drawChars_(begin, end);\n begin = end;\n }\n this.endGeometry(feature);\n }\n else {\n var geometryWidths = textState.overflow ? null : [];\n switch (geometryType) {\n case GeometryType.POINT:\n case GeometryType.MULTI_POINT:\n flatCoordinates =\n /** @type {import(\"../../geom/MultiPoint.js\").default} */ (geometry).getFlatCoordinates();\n break;\n case GeometryType.LINE_STRING:\n flatCoordinates =\n /** @type {import(\"../../geom/LineString.js\").default} */ (geometry).getFlatMidpoint();\n break;\n case GeometryType.CIRCLE:\n flatCoordinates =\n /** @type {import(\"../../geom/Circle.js\").default} */ (geometry).getCenter();\n break;\n case GeometryType.MULTI_LINE_STRING:\n flatCoordinates =\n /** @type {import(\"../../geom/MultiLineString.js\").default} */ (geometry).getFlatMidpoints();\n stride = 2;\n break;\n case GeometryType.POLYGON:\n flatCoordinates =\n /** @type {import(\"../../geom/Polygon.js\").default} */ (geometry).getFlatInteriorPoint();\n if (!textState.overflow) {\n geometryWidths.push(flatCoordinates[2] / this.resolution);\n }\n stride = 3;\n break;\n case GeometryType.MULTI_POLYGON:\n var interiorPoints = \n /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (geometry).getFlatInteriorPoints();\n flatCoordinates = [];\n for (var i = 0, ii = interiorPoints.length; i < ii; i += 3) {\n if (!textState.overflow) {\n geometryWidths.push(interiorPoints[i + 2] / this.resolution);\n }\n flatCoordinates.push(interiorPoints[i], interiorPoints[i + 1]);\n }\n if (flatCoordinates.length === 0) {\n return;\n }\n stride = 2;\n break;\n default:\n }\n var end = this.appendFlatPointCoordinates(flatCoordinates, stride);\n if (end === begin) {\n return;\n }\n if (geometryWidths &&\n (end - begin) / 2 !== flatCoordinates.length / stride) {\n var beg_1 = begin / 2;\n geometryWidths = geometryWidths.filter(function (w, i) {\n var keep = coordinates[(beg_1 + i) * 2] === flatCoordinates[i * stride] &&\n coordinates[(beg_1 + i) * 2 + 1] === flatCoordinates[i * stride + 1];\n if (!keep) {\n --beg_1;\n }\n return keep;\n });\n }\n this.saveTextStates_();\n if (textState.backgroundFill || textState.backgroundStroke) {\n this.setFillStrokeStyle(textState.backgroundFill, textState.backgroundStroke);\n if (textState.backgroundFill) {\n this.updateFillStyle(this.state, this.createFill);\n this.hitDetectionInstructions.push(this.createFill(this.state));\n }\n if (textState.backgroundStroke) {\n this.updateStrokeStyle(this.state, this.applyStroke);\n this.hitDetectionInstructions.push(this.createStroke(this.state));\n }\n }\n this.beginGeometry(geometry, feature);\n // adjust padding for negative scale\n var padding = textState.padding;\n if (padding != defaultPadding &&\n (textState.scale[0] < 0 || textState.scale[1] < 0)) {\n var p0 = textState.padding[0];\n var p1 = textState.padding[1];\n var p2 = textState.padding[2];\n var p3 = textState.padding[3];\n if (textState.scale[0] < 0) {\n p1 = -p1;\n p3 = -p3;\n }\n if (textState.scale[1] < 0) {\n p0 = -p0;\n p2 = -p2;\n }\n padding = [p0, p1, p2, p3];\n }\n // The image is unknown at this stage so we pass null; it will be computed at render time.\n // For clarity, we pass NaN for offsetX, offsetY, width and height, which will be computed at\n // render time.\n var pixelRatio_1 = this.pixelRatio;\n this.instructions.push([\n CanvasInstruction.DRAW_IMAGE,\n begin,\n end,\n null,\n NaN,\n NaN,\n NaN,\n 1,\n 0,\n 0,\n this.textRotateWithView_,\n this.textRotation_,\n [1, 1],\n NaN,\n this.declutterImageWithText_,\n padding == defaultPadding\n ? defaultPadding\n : padding.map(function (p) {\n return p * pixelRatio_1;\n }),\n !!textState.backgroundFill,\n !!textState.backgroundStroke,\n this.text_,\n this.textKey_,\n this.strokeKey_,\n this.fillKey_,\n this.textOffsetX_,\n this.textOffsetY_,\n geometryWidths,\n ]);\n var scale = 1 / pixelRatio_1;\n this.hitDetectionInstructions.push([\n CanvasInstruction.DRAW_IMAGE,\n begin,\n end,\n null,\n NaN,\n NaN,\n NaN,\n 1,\n 0,\n 0,\n this.textRotateWithView_,\n this.textRotation_,\n [scale, scale],\n NaN,\n this.declutterImageWithText_,\n padding,\n !!textState.backgroundFill,\n !!textState.backgroundStroke,\n this.text_,\n this.textKey_,\n this.strokeKey_,\n this.fillKey_,\n this.textOffsetX_,\n this.textOffsetY_,\n geometryWidths,\n ]);\n this.endGeometry(feature);\n }\n };\n /**\n * @private\n */\n CanvasTextBuilder.prototype.saveTextStates_ = function () {\n var strokeState = this.textStrokeState_;\n var textState = this.textState_;\n var fillState = this.textFillState_;\n var strokeKey = this.strokeKey_;\n if (strokeState) {\n if (!(strokeKey in this.strokeStates)) {\n this.strokeStates[strokeKey] = {\n strokeStyle: strokeState.strokeStyle,\n lineCap: strokeState.lineCap,\n lineDashOffset: strokeState.lineDashOffset,\n lineWidth: strokeState.lineWidth,\n lineJoin: strokeState.lineJoin,\n miterLimit: strokeState.miterLimit,\n lineDash: strokeState.lineDash,\n };\n }\n }\n var textKey = this.textKey_;\n if (!(textKey in this.textStates)) {\n this.textStates[textKey] = {\n font: textState.font,\n textAlign: textState.textAlign || defaultTextAlign,\n textBaseline: textState.textBaseline || defaultTextBaseline,\n scale: textState.scale,\n };\n }\n var fillKey = this.fillKey_;\n if (fillState) {\n if (!(fillKey in this.fillStates)) {\n this.fillStates[fillKey] = {\n fillStyle: fillState.fillStyle,\n };\n }\n }\n };\n /**\n * @private\n * @param {number} begin Begin.\n * @param {number} end End.\n */\n CanvasTextBuilder.prototype.drawChars_ = function (begin, end) {\n var strokeState = this.textStrokeState_;\n var textState = this.textState_;\n var strokeKey = this.strokeKey_;\n var textKey = this.textKey_;\n var fillKey = this.fillKey_;\n this.saveTextStates_();\n var pixelRatio = this.pixelRatio;\n var baseline = TEXT_ALIGN[textState.textBaseline];\n var offsetY = this.textOffsetY_ * pixelRatio;\n var text = this.text_;\n var strokeWidth = strokeState\n ? (strokeState.lineWidth * Math.abs(textState.scale[0])) / 2\n : 0;\n this.instructions.push([\n CanvasInstruction.DRAW_CHARS,\n begin,\n end,\n baseline,\n textState.overflow,\n fillKey,\n textState.maxAngle,\n pixelRatio,\n offsetY,\n strokeKey,\n strokeWidth * pixelRatio,\n text,\n textKey,\n 1,\n ]);\n this.hitDetectionInstructions.push([\n CanvasInstruction.DRAW_CHARS,\n begin,\n end,\n baseline,\n textState.overflow,\n fillKey,\n textState.maxAngle,\n 1,\n offsetY,\n strokeKey,\n strokeWidth,\n text,\n textKey,\n 1 / pixelRatio,\n ]);\n };\n /**\n * @param {import(\"../../style/Text.js\").default} textStyle Text style.\n * @param {Object} [opt_sharedData] Shared data.\n */\n CanvasTextBuilder.prototype.setTextStyle = function (textStyle, opt_sharedData) {\n var textState, fillState, strokeState;\n if (!textStyle) {\n this.text_ = '';\n }\n else {\n var textFillStyle = textStyle.getFill();\n if (!textFillStyle) {\n fillState = null;\n this.textFillState_ = fillState;\n }\n else {\n fillState = this.textFillState_;\n if (!fillState) {\n fillState = /** @type {import(\"../canvas.js\").FillState} */ ({});\n this.textFillState_ = fillState;\n }\n fillState.fillStyle = asColorLike(textFillStyle.getColor() || defaultFillStyle);\n }\n var textStrokeStyle = textStyle.getStroke();\n if (!textStrokeStyle) {\n strokeState = null;\n this.textStrokeState_ = strokeState;\n }\n else {\n strokeState = this.textStrokeState_;\n if (!strokeState) {\n strokeState = /** @type {import(\"../canvas.js\").StrokeState} */ ({});\n this.textStrokeState_ = strokeState;\n }\n var lineDash = textStrokeStyle.getLineDash();\n var lineDashOffset = textStrokeStyle.getLineDashOffset();\n var lineWidth = textStrokeStyle.getWidth();\n var miterLimit = textStrokeStyle.getMiterLimit();\n strokeState.lineCap = textStrokeStyle.getLineCap() || defaultLineCap;\n strokeState.lineDash = lineDash ? lineDash.slice() : defaultLineDash;\n strokeState.lineDashOffset =\n lineDashOffset === undefined ? defaultLineDashOffset : lineDashOffset;\n strokeState.lineJoin = textStrokeStyle.getLineJoin() || defaultLineJoin;\n strokeState.lineWidth =\n lineWidth === undefined ? defaultLineWidth : lineWidth;\n strokeState.miterLimit =\n miterLimit === undefined ? defaultMiterLimit : miterLimit;\n strokeState.strokeStyle = asColorLike(textStrokeStyle.getColor() || defaultStrokeStyle);\n }\n textState = this.textState_;\n var font = textStyle.getFont() || defaultFont;\n registerFont(font);\n var textScale = textStyle.getScaleArray();\n textState.overflow = textStyle.getOverflow();\n textState.font = font;\n textState.maxAngle = textStyle.getMaxAngle();\n textState.placement = textStyle.getPlacement();\n textState.textAlign = textStyle.getTextAlign();\n textState.textBaseline =\n textStyle.getTextBaseline() || defaultTextBaseline;\n textState.backgroundFill = textStyle.getBackgroundFill();\n textState.backgroundStroke = textStyle.getBackgroundStroke();\n textState.padding = textStyle.getPadding() || defaultPadding;\n textState.scale = textScale === undefined ? [1, 1] : textScale;\n var textOffsetX = textStyle.getOffsetX();\n var textOffsetY = textStyle.getOffsetY();\n var textRotateWithView = textStyle.getRotateWithView();\n var textRotation = textStyle.getRotation();\n this.text_ = textStyle.getText() || '';\n this.textOffsetX_ = textOffsetX === undefined ? 0 : textOffsetX;\n this.textOffsetY_ = textOffsetY === undefined ? 0 : textOffsetY;\n this.textRotateWithView_ =\n textRotateWithView === undefined ? false : textRotateWithView;\n this.textRotation_ = textRotation === undefined ? 0 : textRotation;\n this.strokeKey_ = strokeState\n ? (typeof strokeState.strokeStyle == 'string'\n ? strokeState.strokeStyle\n : getUid(strokeState.strokeStyle)) +\n strokeState.lineCap +\n strokeState.lineDashOffset +\n '|' +\n strokeState.lineWidth +\n strokeState.lineJoin +\n strokeState.miterLimit +\n '[' +\n strokeState.lineDash.join() +\n ']'\n : '';\n this.textKey_ =\n textState.font +\n textState.scale +\n (textState.textAlign || '?') +\n (textState.textBaseline || '?');\n this.fillKey_ = fillState\n ? typeof fillState.fillStyle == 'string'\n ? fillState.fillStyle\n : '|' + getUid(fillState.fillStyle)\n : '';\n }\n this.declutterImageWithText_ = opt_sharedData;\n };\n return CanvasTextBuilder;\n}(CanvasBuilder));\nexport default CanvasTextBuilder;\n//# sourceMappingURL=TextBuilder.js.map","/**\n * @module ol/render/canvas/BuilderGroup\n */\nimport Builder from './Builder.js';\nimport ImageBuilder from './ImageBuilder.js';\nimport LineStringBuilder from './LineStringBuilder.js';\nimport PolygonBuilder from './PolygonBuilder.js';\nimport TextBuilder from './TextBuilder.js';\n/**\n * @type {Object}\n */\nvar BATCH_CONSTRUCTORS = {\n 'Circle': PolygonBuilder,\n 'Default': Builder,\n 'Image': ImageBuilder,\n 'LineString': LineStringBuilder,\n 'Polygon': PolygonBuilder,\n 'Text': TextBuilder,\n};\nvar BuilderGroup = /** @class */ (function () {\n /**\n * @param {number} tolerance Tolerance.\n * @param {import(\"../../extent.js\").Extent} maxExtent Max extent.\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n */\n function BuilderGroup(tolerance, maxExtent, resolution, pixelRatio) {\n /**\n * @private\n * @type {number}\n */\n this.tolerance_ = tolerance;\n /**\n * @private\n * @type {import(\"../../extent.js\").Extent}\n */\n this.maxExtent_ = maxExtent;\n /**\n * @private\n * @type {number}\n */\n this.pixelRatio_ = pixelRatio;\n /**\n * @private\n * @type {number}\n */\n this.resolution_ = resolution;\n /**\n * @private\n * @type {!Object>}\n */\n this.buildersByZIndex_ = {};\n }\n /**\n * @return {!Object>} The serializable instructions\n */\n BuilderGroup.prototype.finish = function () {\n var builderInstructions = {};\n for (var zKey in this.buildersByZIndex_) {\n builderInstructions[zKey] = builderInstructions[zKey] || {};\n var builders = this.buildersByZIndex_[zKey];\n for (var builderKey in builders) {\n var builderInstruction = builders[builderKey].finish();\n builderInstructions[zKey][builderKey] = builderInstruction;\n }\n }\n return builderInstructions;\n };\n /**\n * @param {number|undefined} zIndex Z index.\n * @param {import(\"./BuilderType.js\").default} builderType Replay type.\n * @return {import(\"../VectorContext.js\").default} Replay.\n */\n BuilderGroup.prototype.getBuilder = function (zIndex, builderType) {\n var zIndexKey = zIndex !== undefined ? zIndex.toString() : '0';\n var replays = this.buildersByZIndex_[zIndexKey];\n if (replays === undefined) {\n replays = {};\n this.buildersByZIndex_[zIndexKey] = replays;\n }\n var replay = replays[builderType];\n if (replay === undefined) {\n var Constructor = BATCH_CONSTRUCTORS[builderType];\n replay = new Constructor(this.tolerance_, this.maxExtent_, this.resolution_, this.pixelRatio_);\n replays[builderType] = replay;\n }\n return replay;\n };\n return BuilderGroup;\n}());\nexport default BuilderGroup;\n//# sourceMappingURL=BuilderGroup.js.map","/**\n * @module ol/render/canvas/BuilderType\n */\n/**\n * @enum {string}\n */\nexport default {\n CIRCLE: 'Circle',\n DEFAULT: 'Default',\n IMAGE: 'Image',\n LINE_STRING: 'LineString',\n POLYGON: 'Polygon',\n TEXT: 'Text',\n};\n//# sourceMappingURL=BuilderType.js.map","/**\n * @module ol/geom/flat/textpath\n */\nimport { lerp } from '../../math.js';\nimport { rotate } from './transform.js';\n/**\n * @param {Array} flatCoordinates Path to put text on.\n * @param {number} offset Start offset of the `flatCoordinates`.\n * @param {number} end End offset of the `flatCoordinates`.\n * @param {number} stride Stride.\n * @param {string} text Text to place on the path.\n * @param {number} startM m along the path where the text starts.\n * @param {number} maxAngle Max angle between adjacent chars in radians.\n * @param {number} scale The product of the text scale and the device pixel ratio.\n * @param {function(string, string, Object):number} measureAndCacheTextWidth Measure and cache text width.\n * @param {string} font The font.\n * @param {Object} cache A cache of measured widths.\n * @param {number} rotation Rotation to apply to the flatCoordinates to determine whether text needs to be reversed.\n * @return {Array>} The result array (or null if `maxAngle` was\n * exceeded). Entries of the array are x, y, anchorX, angle, chunk.\n */\nexport function drawTextOnPath(flatCoordinates, offset, end, stride, text, startM, maxAngle, scale, measureAndCacheTextWidth, font, cache, rotation) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n var x1 = 0;\n var y1 = 0;\n var segmentLength = 0;\n var segmentM = 0;\n function advance() {\n x1 = x2;\n y1 = y2;\n offset += stride;\n x2 = flatCoordinates[offset];\n y2 = flatCoordinates[offset + 1];\n segmentM += segmentLength;\n segmentLength = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n do {\n advance();\n } while (offset < end - stride && segmentM + segmentLength < startM);\n var interpolate = segmentLength === 0 ? 0 : (startM - segmentM) / segmentLength;\n var beginX = lerp(x1, x2, interpolate);\n var beginY = lerp(y1, y2, interpolate);\n var startOffset = offset - stride;\n var startLength = segmentM;\n var endM = startM + scale * measureAndCacheTextWidth(font, text, cache);\n while (offset < end - stride && segmentM + segmentLength < endM) {\n advance();\n }\n interpolate = segmentLength === 0 ? 0 : (endM - segmentM) / segmentLength;\n var endX = lerp(x1, x2, interpolate);\n var endY = lerp(y1, y2, interpolate);\n // Keep text upright\n var reverse;\n if (rotation) {\n var flat = [beginX, beginY, endX, endY];\n rotate(flat, 0, 4, 2, rotation, flat, flat);\n reverse = flat[0] > flat[2];\n }\n else {\n reverse = beginX > endX;\n }\n var PI = Math.PI;\n var result = [];\n var singleSegment = startOffset + stride === offset;\n offset = startOffset;\n segmentLength = 0;\n segmentM = startLength;\n x2 = flatCoordinates[offset];\n y2 = flatCoordinates[offset + 1];\n var previousAngle;\n // All on the same segment\n if (singleSegment) {\n advance();\n previousAngle = Math.atan2(y2 - y1, x2 - x1);\n if (reverse) {\n previousAngle += previousAngle > 0 ? -PI : PI;\n }\n var x = (endX + beginX) / 2;\n var y = (endY + beginY) / 2;\n result[0] = [x, y, (endM - startM) / 2, previousAngle, text];\n return result;\n }\n for (var i = 0, ii = text.length; i < ii;) {\n advance();\n var angle = Math.atan2(y2 - y1, x2 - x1);\n if (reverse) {\n angle += angle > 0 ? -PI : PI;\n }\n if (previousAngle !== undefined) {\n var delta = angle - previousAngle;\n delta += delta > PI ? -2 * PI : delta < -PI ? 2 * PI : 0;\n if (Math.abs(delta) > maxAngle) {\n return null;\n }\n }\n previousAngle = angle;\n var iStart = i;\n var charLength = 0;\n for (; i < ii; ++i) {\n var index = reverse ? ii - i - 1 : i;\n var len = scale * measureAndCacheTextWidth(font, text[index], cache);\n if (offset + stride < end &&\n segmentM + segmentLength < startM + charLength + len / 2) {\n break;\n }\n charLength += len;\n }\n if (i === iStart) {\n continue;\n }\n var chars = reverse\n ? text.substring(ii - iStart, ii - i)\n : text.substring(iStart, i);\n interpolate =\n segmentLength === 0\n ? 0\n : (startM + charLength / 2 - segmentM) / segmentLength;\n var x = lerp(x1, x2, interpolate);\n var y = lerp(y1, y2, interpolate);\n result.push([x, y, charLength / 2, angle, chars]);\n startM += charLength;\n }\n return result;\n}\n//# sourceMappingURL=textpath.js.map","/**\n * @module ol/geom/flat/length\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} Length.\n */\nexport function lineStringLength(flatCoordinates, offset, end, stride) {\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n var length = 0;\n for (var i = offset + stride; i < end; i += stride) {\n var x2 = flatCoordinates[i];\n var y2 = flatCoordinates[i + 1];\n length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n x1 = x2;\n y1 = y2;\n }\n return length;\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} Perimeter.\n */\nexport function linearRingLength(flatCoordinates, offset, end, stride) {\n var perimeter = lineStringLength(flatCoordinates, offset, end, stride);\n var dx = flatCoordinates[end - stride] - flatCoordinates[offset];\n var dy = flatCoordinates[end - stride + 1] - flatCoordinates[offset + 1];\n perimeter += Math.sqrt(dx * dx + dy * dy);\n return perimeter;\n}\n//# sourceMappingURL=length.js.map","/**\n * @module ol/render/canvas/Executor\n */\nimport CanvasInstruction from './Instruction.js';\nimport { TEXT_ALIGN } from './TextBuilder.js';\nimport { WORKER_OFFSCREEN_CANVAS } from '../../has.js';\nimport { apply as applyTransform, compose as composeTransform, create as createTransform, setFromArray as transformSetFromArray, } from '../../transform.js';\nimport { createEmpty, createOrUpdate, intersects } from '../../extent.js';\nimport { defaultPadding, defaultTextBaseline, drawImageOrLabel, } from '../canvas.js';\nimport { defaultTextAlign, measureAndCacheTextWidth, measureTextHeight, measureTextWidths, } from '../canvas.js';\nimport { drawTextOnPath } from '../../geom/flat/textpath.js';\nimport { equals } from '../../array.js';\nimport { lineStringLength } from '../../geom/flat/length.js';\nimport { transform2D } from '../../geom/flat/transform.js';\n/**\n * @typedef {Object} BBox\n * @property {number} minX Minimal x.\n * @property {number} minY Minimal y.\n * @property {number} maxX Maximal x.\n * @property {number} maxY Maximal y\n * @property {*} value Value.\n */\n/**\n * @typedef {Object} ImageOrLabelDimensions\n * @property {number} drawImageX DrawImageX.\n * @property {number} drawImageY DrawImageY.\n * @property {number} drawImageW DrawImageW.\n * @property {number} drawImageH DrawImageH.\n * @property {number} originX OriginX.\n * @property {number} originY OriginY.\n * @property {Array} scale Scale.\n * @property {BBox} declutterBox DeclutterBox.\n * @property {import(\"../../transform.js\").Transform} canvasTransform CanvasTransform.\n */\n/**\n * @typedef {{0: CanvasRenderingContext2D, 1: number, 2: import(\"../canvas.js\").Label|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement, 3: ImageOrLabelDimensions, 4: number, 5: Array<*>, 6: Array<*>}} ReplayImageOrLabelArgs\n */\n/**\n * @template T\n * @typedef {function(import(\"../../Feature.js\").FeatureLike, import(\"../../geom/SimpleGeometry.js\").default): T} FeatureCallback\n */\n/**\n * @type {import(\"../../extent.js\").Extent}\n */\nvar tmpExtent = createEmpty();\n/** @type {import(\"../../coordinate.js\").Coordinate} */\nvar p1 = [];\n/** @type {import(\"../../coordinate.js\").Coordinate} */\nvar p2 = [];\n/** @type {import(\"../../coordinate.js\").Coordinate} */\nvar p3 = [];\n/** @type {import(\"../../coordinate.js\").Coordinate} */\nvar p4 = [];\n/**\n * @param {ReplayImageOrLabelArgs} replayImageOrLabelArgs Arguments to replayImageOrLabel\n * @return {BBox} Declutter bbox.\n */\nfunction getDeclutterBox(replayImageOrLabelArgs) {\n return replayImageOrLabelArgs[3].declutterBox;\n}\nvar rtlRegEx = new RegExp(\n/* eslint-disable prettier/prettier */\n'[' +\n String.fromCharCode(0x00591) + '-' + String.fromCharCode(0x008ff) +\n String.fromCharCode(0x0fb1d) + '-' + String.fromCharCode(0x0fdff) +\n String.fromCharCode(0x0fe70) + '-' + String.fromCharCode(0x0fefc) +\n String.fromCharCode(0x10800) + '-' + String.fromCharCode(0x10fff) +\n String.fromCharCode(0x1e800) + '-' + String.fromCharCode(0x1efff) +\n ']'\n/* eslint-enable prettier/prettier */\n);\n/**\n * @param {string} text Text.\n * @param {string} align Alignment.\n * @return {number} Text alignment.\n */\nfunction horizontalTextAlign(text, align) {\n if ((align === 'start' || align === 'end') && !rtlRegEx.test(text)) {\n align = align === 'start' ? 'left' : 'right';\n }\n return TEXT_ALIGN[align];\n}\nvar Executor = /** @class */ (function () {\n /**\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {boolean} overlaps The replay can have overlapping geometries.\n * @param {import(\"../canvas.js\").SerializableInstructions} instructions The serializable instructions\n */\n function Executor(resolution, pixelRatio, overlaps, instructions) {\n /**\n * @protected\n * @type {boolean}\n */\n this.overlaps = overlaps;\n /**\n * @protected\n * @type {number}\n */\n this.pixelRatio = pixelRatio;\n /**\n * @protected\n * @const\n * @type {number}\n */\n this.resolution = resolution;\n /**\n * @private\n * @type {boolean}\n */\n this.alignFill_;\n /**\n * @protected\n * @type {Array<*>}\n */\n this.instructions = instructions.instructions;\n /**\n * @protected\n * @type {Array}\n */\n this.coordinates = instructions.coordinates;\n /**\n * @private\n * @type {!Object|Array>>}\n */\n this.coordinateCache_ = {};\n /**\n * @private\n * @type {!import(\"../../transform.js\").Transform}\n */\n this.renderedTransform_ = createTransform();\n /**\n * @protected\n * @type {Array<*>}\n */\n this.hitDetectionInstructions = instructions.hitDetectionInstructions;\n /**\n * @private\n * @type {Array}\n */\n this.pixelCoordinates_ = null;\n /**\n * @private\n * @type {number}\n */\n this.viewRotation_ = 0;\n /**\n * @type {!Object}\n */\n this.fillStates = instructions.fillStates || {};\n /**\n * @type {!Object}\n */\n this.strokeStates = instructions.strokeStates || {};\n /**\n * @type {!Object}\n */\n this.textStates = instructions.textStates || {};\n /**\n * @private\n * @type {Object>}\n */\n this.widths_ = {};\n /**\n * @private\n * @type {Object}\n */\n this.labels_ = {};\n }\n /**\n * @param {string} text Text.\n * @param {string} textKey Text style key.\n * @param {string} fillKey Fill style key.\n * @param {string} strokeKey Stroke style key.\n * @return {import(\"../canvas.js\").Label} Label.\n */\n Executor.prototype.createLabel = function (text, textKey, fillKey, strokeKey) {\n var key = text + textKey + fillKey + strokeKey;\n if (this.labels_[key]) {\n return this.labels_[key];\n }\n var strokeState = strokeKey ? this.strokeStates[strokeKey] : null;\n var fillState = fillKey ? this.fillStates[fillKey] : null;\n var textState = this.textStates[textKey];\n var pixelRatio = this.pixelRatio;\n var scale = [\n textState.scale[0] * pixelRatio,\n textState.scale[1] * pixelRatio,\n ];\n var align = horizontalTextAlign(text, textState.textAlign || defaultTextAlign);\n var strokeWidth = strokeKey && strokeState.lineWidth ? strokeState.lineWidth : 0;\n var lines = text.split('\\n');\n var numLines = lines.length;\n var widths = [];\n var width = measureTextWidths(textState.font, lines, widths);\n var lineHeight = measureTextHeight(textState.font);\n var height = lineHeight * numLines;\n var renderWidth = width + strokeWidth;\n var contextInstructions = [];\n // make canvas 2 pixels wider to account for italic text width measurement errors\n var w = (renderWidth + 2) * scale[0];\n var h = (height + strokeWidth) * scale[1];\n /** @type {import(\"../canvas.js\").Label} */\n var label = {\n width: w < 0 ? Math.floor(w) : Math.ceil(w),\n height: h < 0 ? Math.floor(h) : Math.ceil(h),\n contextInstructions: contextInstructions,\n };\n if (scale[0] != 1 || scale[1] != 1) {\n contextInstructions.push('scale', scale);\n }\n contextInstructions.push('font', textState.font);\n if (strokeKey) {\n contextInstructions.push('strokeStyle', strokeState.strokeStyle);\n contextInstructions.push('lineWidth', strokeWidth);\n contextInstructions.push('lineCap', strokeState.lineCap);\n contextInstructions.push('lineJoin', strokeState.lineJoin);\n contextInstructions.push('miterLimit', strokeState.miterLimit);\n // eslint-disable-next-line\n var Context = WORKER_OFFSCREEN_CANVAS ? OffscreenCanvasRenderingContext2D : CanvasRenderingContext2D;\n if (Context.prototype.setLineDash) {\n contextInstructions.push('setLineDash', [strokeState.lineDash]);\n contextInstructions.push('lineDashOffset', strokeState.lineDashOffset);\n }\n }\n if (fillKey) {\n contextInstructions.push('fillStyle', fillState.fillStyle);\n }\n contextInstructions.push('textBaseline', 'middle');\n contextInstructions.push('textAlign', 'center');\n var leftRight = 0.5 - align;\n var x = align * renderWidth + leftRight * strokeWidth;\n var i;\n if (strokeKey) {\n for (i = 0; i < numLines; ++i) {\n contextInstructions.push('strokeText', [\n lines[i],\n x + leftRight * widths[i],\n 0.5 * (strokeWidth + lineHeight) + i * lineHeight,\n ]);\n }\n }\n if (fillKey) {\n for (i = 0; i < numLines; ++i) {\n contextInstructions.push('fillText', [\n lines[i],\n x + leftRight * widths[i],\n 0.5 * (strokeWidth + lineHeight) + i * lineHeight,\n ]);\n }\n }\n this.labels_[key] = label;\n return label;\n };\n /**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {import(\"../../coordinate.js\").Coordinate} p1 1st point of the background box.\n * @param {import(\"../../coordinate.js\").Coordinate} p2 2nd point of the background box.\n * @param {import(\"../../coordinate.js\").Coordinate} p3 3rd point of the background box.\n * @param {import(\"../../coordinate.js\").Coordinate} p4 4th point of the background box.\n * @param {Array<*>} fillInstruction Fill instruction.\n * @param {Array<*>} strokeInstruction Stroke instruction.\n */\n Executor.prototype.replayTextBackground_ = function (context, p1, p2, p3, p4, fillInstruction, strokeInstruction) {\n context.beginPath();\n context.moveTo.apply(context, p1);\n context.lineTo.apply(context, p2);\n context.lineTo.apply(context, p3);\n context.lineTo.apply(context, p4);\n context.lineTo.apply(context, p1);\n if (fillInstruction) {\n this.alignFill_ = /** @type {boolean} */ (fillInstruction[2]);\n this.fill_(context);\n }\n if (strokeInstruction) {\n this.setStrokeStyle_(context, \n /** @type {Array<*>} */ (strokeInstruction));\n context.stroke();\n }\n };\n /**\n * @private\n * @param {number} sheetWidth Width of the sprite sheet.\n * @param {number} sheetHeight Height of the sprite sheet.\n * @param {number} centerX X.\n * @param {number} centerY Y.\n * @param {number} width Width.\n * @param {number} height Height.\n * @param {number} anchorX Anchor X.\n * @param {number} anchorY Anchor Y.\n * @param {number} originX Origin X.\n * @param {number} originY Origin Y.\n * @param {number} rotation Rotation.\n * @param {import(\"../../size.js\").Size} scale Scale.\n * @param {boolean} snapToPixel Snap to pixel.\n * @param {Array} padding Padding.\n * @param {boolean} fillStroke Background fill or stroke.\n * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n * @return {ImageOrLabelDimensions} Dimensions for positioning and decluttering the image or label.\n */\n Executor.prototype.calculateImageOrLabelDimensions_ = function (sheetWidth, sheetHeight, centerX, centerY, width, height, anchorX, anchorY, originX, originY, rotation, scale, snapToPixel, padding, fillStroke, feature) {\n anchorX *= scale[0];\n anchorY *= scale[1];\n var x = centerX - anchorX;\n var y = centerY - anchorY;\n var w = width + originX > sheetWidth ? sheetWidth - originX : width;\n var h = height + originY > sheetHeight ? sheetHeight - originY : height;\n var boxW = padding[3] + w * scale[0] + padding[1];\n var boxH = padding[0] + h * scale[1] + padding[2];\n var boxX = x - padding[3];\n var boxY = y - padding[0];\n if (fillStroke || rotation !== 0) {\n p1[0] = boxX;\n p4[0] = boxX;\n p1[1] = boxY;\n p2[1] = boxY;\n p2[0] = boxX + boxW;\n p3[0] = p2[0];\n p3[1] = boxY + boxH;\n p4[1] = p3[1];\n }\n var transform;\n if (rotation !== 0) {\n transform = composeTransform(createTransform(), centerX, centerY, 1, 1, rotation, -centerX, -centerY);\n applyTransform(transform, p1);\n applyTransform(transform, p2);\n applyTransform(transform, p3);\n applyTransform(transform, p4);\n createOrUpdate(Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1]), tmpExtent);\n }\n else {\n createOrUpdate(Math.min(boxX, boxX + boxW), Math.min(boxY, boxY + boxH), Math.max(boxX, boxX + boxW), Math.max(boxY, boxY + boxH), tmpExtent);\n }\n if (snapToPixel) {\n x = Math.round(x);\n y = Math.round(y);\n }\n return {\n drawImageX: x,\n drawImageY: y,\n drawImageW: w,\n drawImageH: h,\n originX: originX,\n originY: originY,\n declutterBox: {\n minX: tmpExtent[0],\n minY: tmpExtent[1],\n maxX: tmpExtent[2],\n maxY: tmpExtent[3],\n value: feature,\n },\n canvasTransform: transform,\n scale: scale,\n };\n };\n /**\n * @private\n * @param {CanvasRenderingContext2D} context Context.\n * @param {number} contextScale Scale of the context.\n * @param {import(\"../canvas.js\").Label|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement} imageOrLabel Image.\n * @param {ImageOrLabelDimensions} dimensions Dimensions.\n * @param {number} opacity Opacity.\n * @param {Array<*>} fillInstruction Fill instruction.\n * @param {Array<*>} strokeInstruction Stroke instruction.\n * @return {boolean} The image or label was rendered.\n */\n Executor.prototype.replayImageOrLabel_ = function (context, contextScale, imageOrLabel, dimensions, opacity, fillInstruction, strokeInstruction) {\n var fillStroke = !!(fillInstruction || strokeInstruction);\n var box = dimensions.declutterBox;\n var canvas = context.canvas;\n var strokePadding = strokeInstruction\n ? (strokeInstruction[2] * dimensions.scale[0]) / 2\n : 0;\n var intersects = box.minX - strokePadding <= canvas.width / contextScale &&\n box.maxX + strokePadding >= 0 &&\n box.minY - strokePadding <= canvas.height / contextScale &&\n box.maxY + strokePadding >= 0;\n if (intersects) {\n if (fillStroke) {\n this.replayTextBackground_(context, p1, p2, p3, p4, \n /** @type {Array<*>} */ (fillInstruction), \n /** @type {Array<*>} */ (strokeInstruction));\n }\n drawImageOrLabel(context, dimensions.canvasTransform, opacity, imageOrLabel, dimensions.originX, dimensions.originY, dimensions.drawImageW, dimensions.drawImageH, dimensions.drawImageX, dimensions.drawImageY, dimensions.scale);\n }\n return true;\n };\n /**\n * @private\n * @param {CanvasRenderingContext2D} context Context.\n */\n Executor.prototype.fill_ = function (context) {\n if (this.alignFill_) {\n var origin_1 = applyTransform(this.renderedTransform_, [0, 0]);\n var repeatSize = 512 * this.pixelRatio;\n context.save();\n context.translate(origin_1[0] % repeatSize, origin_1[1] % repeatSize);\n context.rotate(this.viewRotation_);\n }\n context.fill();\n if (this.alignFill_) {\n context.restore();\n }\n };\n /**\n * @private\n * @param {CanvasRenderingContext2D} context Context.\n * @param {Array<*>} instruction Instruction.\n */\n Executor.prototype.setStrokeStyle_ = function (context, instruction) {\n context['strokeStyle'] =\n /** @type {import(\"../../colorlike.js\").ColorLike} */ (instruction[1]);\n context.lineWidth = /** @type {number} */ (instruction[2]);\n context.lineCap = /** @type {CanvasLineCap} */ (instruction[3]);\n context.lineJoin = /** @type {CanvasLineJoin} */ (instruction[4]);\n context.miterLimit = /** @type {number} */ (instruction[5]);\n if (context.setLineDash) {\n context.lineDashOffset = /** @type {number} */ (instruction[7]);\n context.setLineDash(/** @type {Array} */ (instruction[6]));\n }\n };\n /**\n * @private\n * @param {string} text The text to draw.\n * @param {string} textKey The key of the text state.\n * @param {string} strokeKey The key for the stroke state.\n * @param {string} fillKey The key for the fill state.\n * @return {{label: import(\"../canvas.js\").Label, anchorX: number, anchorY: number}} The text image and its anchor.\n */\n Executor.prototype.drawLabelWithPointPlacement_ = function (text, textKey, strokeKey, fillKey) {\n var textState = this.textStates[textKey];\n var label = this.createLabel(text, textKey, fillKey, strokeKey);\n var strokeState = this.strokeStates[strokeKey];\n var pixelRatio = this.pixelRatio;\n var align = horizontalTextAlign(text, textState.textAlign || defaultTextAlign);\n var baseline = TEXT_ALIGN[textState.textBaseline || defaultTextBaseline];\n var strokeWidth = strokeState && strokeState.lineWidth ? strokeState.lineWidth : 0;\n // Remove the 2 pixels we added in createLabel() for the anchor\n var width = label.width / pixelRatio - 2 * textState.scale[0];\n var anchorX = align * width + 2 * (0.5 - align) * strokeWidth;\n var anchorY = (baseline * label.height) / pixelRatio +\n 2 * (0.5 - baseline) * strokeWidth;\n return {\n label: label,\n anchorX: anchorX,\n anchorY: anchorY,\n };\n };\n /**\n * @private\n * @param {CanvasRenderingContext2D} context Context.\n * @param {number} contextScale Scale of the context.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @param {Array<*>} instructions Instructions array.\n * @param {boolean} snapToPixel Snap point symbols and text to integer pixels.\n * @param {FeatureCallback} [opt_featureCallback] Feature callback.\n * @param {import(\"../../extent.js\").Extent} [opt_hitExtent] Only check\n * features that intersect this extent.\n * @param {import(\"rbush\").default} [opt_declutterTree] Declutter tree.\n * @return {T|undefined} Callback result.\n * @template T\n */\n Executor.prototype.execute_ = function (context, contextScale, transform, instructions, snapToPixel, opt_featureCallback, opt_hitExtent, opt_declutterTree) {\n /** @type {Array} */\n var pixelCoordinates;\n if (this.pixelCoordinates_ && equals(transform, this.renderedTransform_)) {\n pixelCoordinates = this.pixelCoordinates_;\n }\n else {\n if (!this.pixelCoordinates_) {\n this.pixelCoordinates_ = [];\n }\n pixelCoordinates = transform2D(this.coordinates, 0, this.coordinates.length, 2, transform, this.pixelCoordinates_);\n transformSetFromArray(this.renderedTransform_, transform);\n }\n var i = 0; // instruction index\n var ii = instructions.length; // end of instructions\n var d = 0; // data index\n var dd; // end of per-instruction data\n var anchorX, anchorY, prevX, prevY, roundX, roundY, image, text, textKey, strokeKey, fillKey;\n var pendingFill = 0;\n var pendingStroke = 0;\n var lastFillInstruction = null;\n var lastStrokeInstruction = null;\n var coordinateCache = this.coordinateCache_;\n var viewRotation = this.viewRotation_;\n var viewRotationFromTransform = Math.round(Math.atan2(-transform[1], transform[0]) * 1e12) / 1e12;\n var state = /** @type {import(\"../../render.js\").State} */ ({\n context: context,\n pixelRatio: this.pixelRatio,\n resolution: this.resolution,\n rotation: viewRotation,\n });\n // When the batch size gets too big, performance decreases. 200 is a good\n // balance between batch size and number of fill/stroke instructions.\n var batchSize = this.instructions != instructions || this.overlaps ? 0 : 200;\n var /** @type {import(\"../../Feature.js\").FeatureLike} */ feature;\n var x, y, currentGeometry;\n while (i < ii) {\n var instruction = instructions[i];\n var type = /** @type {import(\"./Instruction.js\").default} */ (instruction[0]);\n switch (type) {\n case CanvasInstruction.BEGIN_GEOMETRY:\n feature = /** @type {import(\"../../Feature.js\").FeatureLike} */ (instruction[1]);\n currentGeometry = instruction[3];\n if (!feature.getGeometry()) {\n i = /** @type {number} */ (instruction[2]);\n }\n else if (opt_hitExtent !== undefined &&\n !intersects(opt_hitExtent, currentGeometry.getExtent())) {\n i = /** @type {number} */ (instruction[2]) + 1;\n }\n else {\n ++i;\n }\n break;\n case CanvasInstruction.BEGIN_PATH:\n if (pendingFill > batchSize) {\n this.fill_(context);\n pendingFill = 0;\n }\n if (pendingStroke > batchSize) {\n context.stroke();\n pendingStroke = 0;\n }\n if (!pendingFill && !pendingStroke) {\n context.beginPath();\n prevX = NaN;\n prevY = NaN;\n }\n ++i;\n break;\n case CanvasInstruction.CIRCLE:\n d = /** @type {number} */ (instruction[1]);\n var x1 = pixelCoordinates[d];\n var y1 = pixelCoordinates[d + 1];\n var x2 = pixelCoordinates[d + 2];\n var y2 = pixelCoordinates[d + 3];\n var dx = x2 - x1;\n var dy = y2 - y1;\n var r = Math.sqrt(dx * dx + dy * dy);\n context.moveTo(x1 + r, y1);\n context.arc(x1, y1, r, 0, 2 * Math.PI, true);\n ++i;\n break;\n case CanvasInstruction.CLOSE_PATH:\n context.closePath();\n ++i;\n break;\n case CanvasInstruction.CUSTOM:\n d = /** @type {number} */ (instruction[1]);\n dd = instruction[2];\n var geometry = \n /** @type {import(\"../../geom/SimpleGeometry.js\").default} */ (instruction[3]);\n var renderer = instruction[4];\n var fn = instruction.length == 6 ? instruction[5] : undefined;\n state.geometry = geometry;\n state.feature = feature;\n if (!(i in coordinateCache)) {\n coordinateCache[i] = [];\n }\n var coords = coordinateCache[i];\n if (fn) {\n fn(pixelCoordinates, d, dd, 2, coords);\n }\n else {\n coords[0] = pixelCoordinates[d];\n coords[1] = pixelCoordinates[d + 1];\n coords.length = 2;\n }\n renderer(coords, state);\n ++i;\n break;\n case CanvasInstruction.DRAW_IMAGE:\n d = /** @type {number} */ (instruction[1]);\n dd = /** @type {number} */ (instruction[2]);\n image =\n /** @type {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement} */ (instruction[3]);\n // Remaining arguments in DRAW_IMAGE are in alphabetical order\n anchorX = /** @type {number} */ (instruction[4]);\n anchorY = /** @type {number} */ (instruction[5]);\n var height = /** @type {number} */ (instruction[6]);\n var opacity = /** @type {number} */ (instruction[7]);\n var originX = /** @type {number} */ (instruction[8]);\n var originY = /** @type {number} */ (instruction[9]);\n var rotateWithView = /** @type {boolean} */ (instruction[10]);\n var rotation = /** @type {number} */ (instruction[11]);\n var scale = /** @type {import(\"../../size.js\").Size} */ (instruction[12]);\n var width = /** @type {number} */ (instruction[13]);\n var declutterImageWithText = \n /** @type {import(\"../canvas.js\").DeclutterImageWithText} */ (instruction[14]);\n if (!image && instruction.length >= 19) {\n // create label images\n text = /** @type {string} */ (instruction[18]);\n textKey = /** @type {string} */ (instruction[19]);\n strokeKey = /** @type {string} */ (instruction[20]);\n fillKey = /** @type {string} */ (instruction[21]);\n var labelWithAnchor = this.drawLabelWithPointPlacement_(text, textKey, strokeKey, fillKey);\n image = labelWithAnchor.label;\n instruction[3] = image;\n var textOffsetX = /** @type {number} */ (instruction[22]);\n anchorX = (labelWithAnchor.anchorX - textOffsetX) * this.pixelRatio;\n instruction[4] = anchorX;\n var textOffsetY = /** @type {number} */ (instruction[23]);\n anchorY = (labelWithAnchor.anchorY - textOffsetY) * this.pixelRatio;\n instruction[5] = anchorY;\n height = image.height;\n instruction[6] = height;\n width = image.width;\n instruction[13] = width;\n }\n var geometryWidths = void 0;\n if (instruction.length > 24) {\n geometryWidths = /** @type {number} */ (instruction[24]);\n }\n var padding = void 0, backgroundFill = void 0, backgroundStroke = void 0;\n if (instruction.length > 16) {\n padding = /** @type {Array} */ (instruction[15]);\n backgroundFill = /** @type {boolean} */ (instruction[16]);\n backgroundStroke = /** @type {boolean} */ (instruction[17]);\n }\n else {\n padding = defaultPadding;\n backgroundFill = false;\n backgroundStroke = false;\n }\n if (rotateWithView && viewRotationFromTransform) {\n // Canvas is expected to be rotated to reverse view rotation.\n rotation += viewRotation;\n }\n else if (!rotateWithView && !viewRotationFromTransform) {\n // Canvas is not rotated, images need to be rotated back to be north-up.\n rotation -= viewRotation;\n }\n var widthIndex = 0;\n for (; d < dd; d += 2) {\n if (geometryWidths &&\n geometryWidths[widthIndex++] < width / this.pixelRatio) {\n continue;\n }\n var dimensions = this.calculateImageOrLabelDimensions_(image.width, image.height, pixelCoordinates[d], pixelCoordinates[d + 1], width, height, anchorX, anchorY, originX, originY, rotation, scale, snapToPixel, padding, backgroundFill || backgroundStroke, feature);\n /** @type {ReplayImageOrLabelArgs} */\n var args = [\n context,\n contextScale,\n image,\n dimensions,\n opacity,\n backgroundFill\n ? /** @type {Array<*>} */ (lastFillInstruction)\n : null,\n backgroundStroke\n ? /** @type {Array<*>} */ (lastStrokeInstruction)\n : null,\n ];\n var imageArgs = void 0;\n var imageDeclutterBox = void 0;\n if (opt_declutterTree && declutterImageWithText) {\n var index = dd - d;\n if (!declutterImageWithText[index]) {\n // We now have the image for an image+text combination.\n declutterImageWithText[index] = args;\n // Don't render anything for now, wait for the text.\n continue;\n }\n imageArgs = declutterImageWithText[index];\n delete declutterImageWithText[index];\n imageDeclutterBox = getDeclutterBox(imageArgs);\n if (opt_declutterTree.collides(imageDeclutterBox)) {\n continue;\n }\n }\n if (opt_declutterTree &&\n opt_declutterTree.collides(dimensions.declutterBox)) {\n continue;\n }\n if (imageArgs) {\n // We now have image and text for an image+text combination.\n if (opt_declutterTree) {\n opt_declutterTree.insert(imageDeclutterBox);\n }\n // Render the image before we render the text.\n this.replayImageOrLabel_.apply(this, imageArgs);\n }\n if (opt_declutterTree) {\n opt_declutterTree.insert(dimensions.declutterBox);\n }\n this.replayImageOrLabel_.apply(this, args);\n }\n ++i;\n break;\n case CanvasInstruction.DRAW_CHARS:\n var begin = /** @type {number} */ (instruction[1]);\n var end = /** @type {number} */ (instruction[2]);\n var baseline = /** @type {number} */ (instruction[3]);\n var overflow = /** @type {number} */ (instruction[4]);\n fillKey = /** @type {string} */ (instruction[5]);\n var maxAngle = /** @type {number} */ (instruction[6]);\n var measurePixelRatio = /** @type {number} */ (instruction[7]);\n var offsetY = /** @type {number} */ (instruction[8]);\n strokeKey = /** @type {string} */ (instruction[9]);\n var strokeWidth = /** @type {number} */ (instruction[10]);\n text = /** @type {string} */ (instruction[11]);\n textKey = /** @type {string} */ (instruction[12]);\n var pixelRatioScale = [\n /** @type {number} */ (instruction[13]),\n /** @type {number} */ (instruction[13]),\n ];\n var textState = this.textStates[textKey];\n var font = textState.font;\n var textScale = [\n textState.scale[0] * measurePixelRatio,\n textState.scale[1] * measurePixelRatio,\n ];\n var cachedWidths = void 0;\n if (font in this.widths_) {\n cachedWidths = this.widths_[font];\n }\n else {\n cachedWidths = {};\n this.widths_[font] = cachedWidths;\n }\n var pathLength = lineStringLength(pixelCoordinates, begin, end, 2);\n var textLength = Math.abs(textScale[0]) *\n measureAndCacheTextWidth(font, text, cachedWidths);\n if (overflow || textLength <= pathLength) {\n var textAlign = this.textStates[textKey].textAlign;\n var startM = (pathLength - textLength) * TEXT_ALIGN[textAlign];\n var parts = drawTextOnPath(pixelCoordinates, begin, end, 2, text, startM, maxAngle, Math.abs(textScale[0]), measureAndCacheTextWidth, font, cachedWidths, viewRotationFromTransform ? 0 : this.viewRotation_);\n drawChars: if (parts) {\n /** @type {Array} */\n var replayImageOrLabelArgs = [];\n var c = void 0, cc = void 0, chars = void 0, label = void 0, part = void 0;\n if (strokeKey) {\n for (c = 0, cc = parts.length; c < cc; ++c) {\n part = parts[c]; // x, y, anchorX, rotation, chunk\n chars = /** @type {string} */ (part[4]);\n label = this.createLabel(chars, textKey, '', strokeKey);\n anchorX =\n /** @type {number} */ (part[2]) +\n (textScale[0] < 0 ? -strokeWidth : strokeWidth);\n anchorY =\n baseline * label.height +\n ((0.5 - baseline) * 2 * strokeWidth * textScale[1]) /\n textScale[0] -\n offsetY;\n var dimensions = this.calculateImageOrLabelDimensions_(label.width, label.height, part[0], part[1], label.width, label.height, anchorX, anchorY, 0, 0, part[3], pixelRatioScale, false, defaultPadding, false, feature);\n if (opt_declutterTree &&\n opt_declutterTree.collides(dimensions.declutterBox)) {\n break drawChars;\n }\n replayImageOrLabelArgs.push([\n context,\n contextScale,\n label,\n dimensions,\n 1,\n null,\n null,\n ]);\n }\n }\n if (fillKey) {\n for (c = 0, cc = parts.length; c < cc; ++c) {\n part = parts[c]; // x, y, anchorX, rotation, chunk\n chars = /** @type {string} */ (part[4]);\n label = this.createLabel(chars, textKey, fillKey, '');\n anchorX = /** @type {number} */ (part[2]);\n anchorY = baseline * label.height - offsetY;\n var dimensions = this.calculateImageOrLabelDimensions_(label.width, label.height, part[0], part[1], label.width, label.height, anchorX, anchorY, 0, 0, part[3], pixelRatioScale, false, defaultPadding, false, feature);\n if (opt_declutterTree &&\n opt_declutterTree.collides(dimensions.declutterBox)) {\n break drawChars;\n }\n replayImageOrLabelArgs.push([\n context,\n contextScale,\n label,\n dimensions,\n 1,\n null,\n null,\n ]);\n }\n }\n if (opt_declutterTree) {\n opt_declutterTree.load(replayImageOrLabelArgs.map(getDeclutterBox));\n }\n for (var i_1 = 0, ii_1 = replayImageOrLabelArgs.length; i_1 < ii_1; ++i_1) {\n this.replayImageOrLabel_.apply(this, replayImageOrLabelArgs[i_1]);\n }\n }\n }\n ++i;\n break;\n case CanvasInstruction.END_GEOMETRY:\n if (opt_featureCallback !== undefined) {\n feature = /** @type {import(\"../../Feature.js\").FeatureLike} */ (instruction[1]);\n var result = opt_featureCallback(feature, currentGeometry);\n if (result) {\n return result;\n }\n }\n ++i;\n break;\n case CanvasInstruction.FILL:\n if (batchSize) {\n pendingFill++;\n }\n else {\n this.fill_(context);\n }\n ++i;\n break;\n case CanvasInstruction.MOVE_TO_LINE_TO:\n d = /** @type {number} */ (instruction[1]);\n dd = /** @type {number} */ (instruction[2]);\n x = pixelCoordinates[d];\n y = pixelCoordinates[d + 1];\n roundX = (x + 0.5) | 0;\n roundY = (y + 0.5) | 0;\n if (roundX !== prevX || roundY !== prevY) {\n context.moveTo(x, y);\n prevX = roundX;\n prevY = roundY;\n }\n for (d += 2; d < dd; d += 2) {\n x = pixelCoordinates[d];\n y = pixelCoordinates[d + 1];\n roundX = (x + 0.5) | 0;\n roundY = (y + 0.5) | 0;\n if (d == dd - 2 || roundX !== prevX || roundY !== prevY) {\n context.lineTo(x, y);\n prevX = roundX;\n prevY = roundY;\n }\n }\n ++i;\n break;\n case CanvasInstruction.SET_FILL_STYLE:\n lastFillInstruction = instruction;\n this.alignFill_ = instruction[2];\n if (pendingFill) {\n this.fill_(context);\n pendingFill = 0;\n if (pendingStroke) {\n context.stroke();\n pendingStroke = 0;\n }\n }\n context.fillStyle =\n /** @type {import(\"../../colorlike.js\").ColorLike} */ (instruction[1]);\n ++i;\n break;\n case CanvasInstruction.SET_STROKE_STYLE:\n lastStrokeInstruction = instruction;\n if (pendingStroke) {\n context.stroke();\n pendingStroke = 0;\n }\n this.setStrokeStyle_(context, /** @type {Array<*>} */ (instruction));\n ++i;\n break;\n case CanvasInstruction.STROKE:\n if (batchSize) {\n pendingStroke++;\n }\n else {\n context.stroke();\n }\n ++i;\n break;\n default:\n ++i; // consume the instruction anyway, to avoid an infinite loop\n break;\n }\n }\n if (pendingFill) {\n this.fill_(context);\n }\n if (pendingStroke) {\n context.stroke();\n }\n return undefined;\n };\n /**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {number} contextScale Scale of the context.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @param {number} viewRotation View rotation.\n * @param {boolean} snapToPixel Snap point symbols and text to integer pixels.\n * @param {import(\"rbush\").default} [opt_declutterTree] Declutter tree.\n */\n Executor.prototype.execute = function (context, contextScale, transform, viewRotation, snapToPixel, opt_declutterTree) {\n this.viewRotation_ = viewRotation;\n this.execute_(context, contextScale, transform, this.instructions, snapToPixel, undefined, undefined, opt_declutterTree);\n };\n /**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @param {number} viewRotation View rotation.\n * @param {FeatureCallback} [opt_featureCallback] Feature callback.\n * @param {import(\"../../extent.js\").Extent} [opt_hitExtent] Only check\n * features that intersect this extent.\n * @return {T|undefined} Callback result.\n * @template T\n */\n Executor.prototype.executeHitDetection = function (context, transform, viewRotation, opt_featureCallback, opt_hitExtent) {\n this.viewRotation_ = viewRotation;\n return this.execute_(context, 1, transform, this.hitDetectionInstructions, true, opt_featureCallback, opt_hitExtent);\n };\n return Executor;\n}());\nexport default Executor;\n//# sourceMappingURL=Executor.js.map","/**\n * @module ol/render/canvas/ExecutorGroup\n */\nimport BuilderType from './BuilderType.js';\nimport Executor from './Executor.js';\nimport { buffer, createEmpty, extendCoordinate } from '../../extent.js';\nimport { compose as composeTransform, create as createTransform, } from '../../transform.js';\nimport { createCanvasContext2D } from '../../dom.js';\nimport { isEmpty } from '../../obj.js';\nimport { numberSafeCompareFunction } from '../../array.js';\nimport { transform2D } from '../../geom/flat/transform.js';\n/**\n * @const\n * @type {Array}\n */\nvar ORDER = [\n BuilderType.POLYGON,\n BuilderType.CIRCLE,\n BuilderType.LINE_STRING,\n BuilderType.IMAGE,\n BuilderType.TEXT,\n BuilderType.DEFAULT,\n];\nvar ExecutorGroup = /** @class */ (function () {\n /**\n * @param {import(\"../../extent.js\").Extent} maxExtent Max extent for clipping. When a\n * `maxExtent` was set on the Builder for this executor group, the same `maxExtent`\n * should be set here, unless the target context does not exceed that extent (which\n * can be the case when rendering to tiles).\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {boolean} overlaps The executor group can have overlapping geometries.\n * @param {!Object>} allInstructions\n * The serializable instructions.\n * @param {number} [opt_renderBuffer] Optional rendering buffer.\n */\n function ExecutorGroup(maxExtent, resolution, pixelRatio, overlaps, allInstructions, opt_renderBuffer) {\n /**\n * @private\n * @type {import(\"../../extent.js\").Extent}\n */\n this.maxExtent_ = maxExtent;\n /**\n * @private\n * @type {boolean}\n */\n this.overlaps_ = overlaps;\n /**\n * @private\n * @type {number}\n */\n this.pixelRatio_ = pixelRatio;\n /**\n * @private\n * @type {number}\n */\n this.resolution_ = resolution;\n /**\n * @private\n * @type {number|undefined}\n */\n this.renderBuffer_ = opt_renderBuffer;\n /**\n * @private\n * @type {!Object>}\n */\n this.executorsByZIndex_ = {};\n /**\n * @private\n * @type {CanvasRenderingContext2D}\n */\n this.hitDetectionContext_ = null;\n /**\n * @private\n * @type {import(\"../../transform.js\").Transform}\n */\n this.hitDetectionTransform_ = createTransform();\n this.createExecutors_(allInstructions);\n }\n /**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n */\n ExecutorGroup.prototype.clip = function (context, transform) {\n var flatClipCoords = this.getClipCoords(transform);\n context.beginPath();\n context.moveTo(flatClipCoords[0], flatClipCoords[1]);\n context.lineTo(flatClipCoords[2], flatClipCoords[3]);\n context.lineTo(flatClipCoords[4], flatClipCoords[5]);\n context.lineTo(flatClipCoords[6], flatClipCoords[7]);\n context.clip();\n };\n /**\n * Create executors and populate them using the provided instructions.\n * @private\n * @param {!Object>} allInstructions The serializable instructions\n */\n ExecutorGroup.prototype.createExecutors_ = function (allInstructions) {\n for (var zIndex in allInstructions) {\n var executors = this.executorsByZIndex_[zIndex];\n if (executors === undefined) {\n executors = {};\n this.executorsByZIndex_[zIndex] = executors;\n }\n var instructionByZindex = allInstructions[zIndex];\n for (var builderType in instructionByZindex) {\n var instructions = instructionByZindex[builderType];\n executors[builderType] = new Executor(this.resolution_, this.pixelRatio_, this.overlaps_, instructions);\n }\n }\n };\n /**\n * @param {Array} executors Executors.\n * @return {boolean} Has executors of the provided types.\n */\n ExecutorGroup.prototype.hasExecutors = function (executors) {\n for (var zIndex in this.executorsByZIndex_) {\n var candidates = this.executorsByZIndex_[zIndex];\n for (var i = 0, ii = executors.length; i < ii; ++i) {\n if (executors[i] in candidates) {\n return true;\n }\n }\n }\n return false;\n };\n /**\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {function(import(\"../../Feature.js\").FeatureLike, import(\"../../geom/SimpleGeometry.js\").default, number): T} callback Feature callback.\n * @param {Array} declutteredFeatures Decluttered features.\n * @return {T|undefined} Callback result.\n * @template T\n */\n ExecutorGroup.prototype.forEachFeatureAtCoordinate = function (coordinate, resolution, rotation, hitTolerance, callback, declutteredFeatures) {\n hitTolerance = Math.round(hitTolerance);\n var contextSize = hitTolerance * 2 + 1;\n var transform = composeTransform(this.hitDetectionTransform_, hitTolerance + 0.5, hitTolerance + 0.5, 1 / resolution, -1 / resolution, -rotation, -coordinate[0], -coordinate[1]);\n var newContext = !this.hitDetectionContext_;\n if (newContext) {\n this.hitDetectionContext_ = createCanvasContext2D(contextSize, contextSize);\n }\n var context = this.hitDetectionContext_;\n if (context.canvas.width !== contextSize ||\n context.canvas.height !== contextSize) {\n context.canvas.width = contextSize;\n context.canvas.height = contextSize;\n }\n else if (!newContext) {\n context.clearRect(0, 0, contextSize, contextSize);\n }\n /**\n * @type {import(\"../../extent.js\").Extent}\n */\n var hitExtent;\n if (this.renderBuffer_ !== undefined) {\n hitExtent = createEmpty();\n extendCoordinate(hitExtent, coordinate);\n buffer(hitExtent, resolution * (this.renderBuffer_ + hitTolerance), hitExtent);\n }\n var indexes = getPixelIndexArray(hitTolerance);\n var builderType;\n /**\n * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @return {T|undefined} Callback result.\n */\n function featureCallback(feature, geometry) {\n var imageData = context.getImageData(0, 0, contextSize, contextSize).data;\n for (var i_1 = 0, ii = indexes.length; i_1 < ii; i_1++) {\n if (imageData[indexes[i_1]] > 0) {\n if (!declutteredFeatures ||\n (builderType !== BuilderType.IMAGE &&\n builderType !== BuilderType.TEXT) ||\n declutteredFeatures.indexOf(feature) !== -1) {\n var idx = (indexes[i_1] - 3) / 4;\n var x = hitTolerance - (idx % contextSize);\n var y = hitTolerance - ((idx / contextSize) | 0);\n var result_1 = callback(feature, geometry, x * x + y * y);\n if (result_1) {\n return result_1;\n }\n }\n context.clearRect(0, 0, contextSize, contextSize);\n break;\n }\n }\n return undefined;\n }\n /** @type {Array} */\n var zs = Object.keys(this.executorsByZIndex_).map(Number);\n zs.sort(numberSafeCompareFunction);\n var i, j, executors, executor, result;\n for (i = zs.length - 1; i >= 0; --i) {\n var zIndexKey = zs[i].toString();\n executors = this.executorsByZIndex_[zIndexKey];\n for (j = ORDER.length - 1; j >= 0; --j) {\n builderType = ORDER[j];\n executor = executors[builderType];\n if (executor !== undefined) {\n result = executor.executeHitDetection(context, transform, rotation, featureCallback, hitExtent);\n if (result) {\n return result;\n }\n }\n }\n }\n return undefined;\n };\n /**\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @return {Array} Clip coordinates.\n */\n ExecutorGroup.prototype.getClipCoords = function (transform) {\n var maxExtent = this.maxExtent_;\n if (!maxExtent) {\n return null;\n }\n var minX = maxExtent[0];\n var minY = maxExtent[1];\n var maxX = maxExtent[2];\n var maxY = maxExtent[3];\n var flatClipCoords = [minX, minY, minX, maxY, maxX, maxY, maxX, minY];\n transform2D(flatClipCoords, 0, 8, 2, transform, flatClipCoords);\n return flatClipCoords;\n };\n /**\n * @return {boolean} Is empty.\n */\n ExecutorGroup.prototype.isEmpty = function () {\n return isEmpty(this.executorsByZIndex_);\n };\n /**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {number} contextScale Scale of the context.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @param {number} viewRotation View rotation.\n * @param {boolean} snapToPixel Snap point symbols and test to integer pixel.\n * @param {Array} [opt_builderTypes] Ordered replay types to replay.\n * Default is {@link module:ol/render/replay~ORDER}\n * @param {import(\"rbush\").default} [opt_declutterTree] Declutter tree.\n */\n ExecutorGroup.prototype.execute = function (context, contextScale, transform, viewRotation, snapToPixel, opt_builderTypes, opt_declutterTree) {\n /** @type {Array} */\n var zs = Object.keys(this.executorsByZIndex_).map(Number);\n zs.sort(numberSafeCompareFunction);\n // setup clipping so that the parts of over-simplified geometries are not\n // visible outside the current extent when panning\n if (this.maxExtent_) {\n context.save();\n this.clip(context, transform);\n }\n var builderTypes = opt_builderTypes ? opt_builderTypes : ORDER;\n var i, ii, j, jj, replays, replay;\n if (opt_declutterTree) {\n zs.reverse();\n }\n for (i = 0, ii = zs.length; i < ii; ++i) {\n var zIndexKey = zs[i].toString();\n replays = this.executorsByZIndex_[zIndexKey];\n for (j = 0, jj = builderTypes.length; j < jj; ++j) {\n var builderType = builderTypes[j];\n replay = replays[builderType];\n if (replay !== undefined) {\n replay.execute(context, contextScale, transform, viewRotation, snapToPixel, opt_declutterTree);\n }\n }\n }\n if (this.maxExtent_) {\n context.restore();\n }\n };\n return ExecutorGroup;\n}());\n/**\n * This cache is used to store arrays of indexes for calculated pixel circles\n * to increase performance.\n * It is a static property to allow each Replaygroup to access it.\n * @type {Object>}\n */\nvar circlePixelIndexArrayCache = {};\n/**\n * This methods creates an array with indexes of all pixels within a circle,\n * ordered by how close they are to the center.\n * A cache is used to increase performance.\n * @param {number} radius Radius.\n * @return {Array} An array with indexes within a circle.\n */\nexport function getPixelIndexArray(radius) {\n if (circlePixelIndexArrayCache[radius] !== undefined) {\n return circlePixelIndexArrayCache[radius];\n }\n var size = radius * 2 + 1;\n var maxDistanceSq = radius * radius;\n var distances = new Array(maxDistanceSq + 1);\n for (var i = 0; i <= radius; ++i) {\n for (var j = 0; j <= radius; ++j) {\n var distanceSq = i * i + j * j;\n if (distanceSq > maxDistanceSq) {\n break;\n }\n var distance = distances[distanceSq];\n if (!distance) {\n distance = [];\n distances[distanceSq] = distance;\n }\n distance.push(((radius + i) * size + (radius + j)) * 4 + 3);\n if (i > 0) {\n distance.push(((radius - i) * size + (radius + j)) * 4 + 3);\n }\n if (j > 0) {\n distance.push(((radius + i) * size + (radius - j)) * 4 + 3);\n if (i > 0) {\n distance.push(((radius - i) * size + (radius - j)) * 4 + 3);\n }\n }\n }\n }\n var pixelIndex = [];\n for (var i = 0, ii = distances.length; i < ii; ++i) {\n if (distances[i]) {\n pixelIndex.push.apply(pixelIndex, distances[i]);\n }\n }\n circlePixelIndexArrayCache[radius] = pixelIndex;\n return pixelIndex;\n}\nexport default ExecutorGroup;\n//# sourceMappingURL=ExecutorGroup.js.map","/**\n * @module ol/render/canvas/Immediate\n */\n// FIXME test, especially polygons with holes and multipolygons\n// FIXME need to handle large thick features (where pixel size matters)\n// FIXME add offset and end to ol/geom/flat/transform~transform2D?\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport GeometryType from '../../geom/GeometryType.js';\nimport VectorContext from '../VectorContext.js';\nimport { asColorLike } from '../../colorlike.js';\nimport { compose as composeTransform, create as createTransform, } from '../../transform.js';\nimport { defaultFillStyle, defaultFont, defaultLineCap, defaultLineDash, defaultLineDashOffset, defaultLineJoin, defaultLineWidth, defaultMiterLimit, defaultStrokeStyle, defaultTextAlign, defaultTextBaseline, } from '../canvas.js';\nimport { equals } from '../../array.js';\nimport { intersects } from '../../extent.js';\nimport { transform2D } from '../../geom/flat/transform.js';\nimport { transformGeom2D } from '../../geom/SimpleGeometry.js';\n/**\n * @classdesc\n * A concrete subclass of {@link module:ol/render/VectorContext VectorContext} that implements\n * direct rendering of features and geometries to an HTML5 Canvas context.\n * Instances of this class are created internally by the library and\n * provided to application code as vectorContext member of the\n * {@link module:ol/render/Event~RenderEvent RenderEvent} object associated with postcompose, precompose and\n * render events emitted by layers and maps.\n */\nvar CanvasImmediateRenderer = /** @class */ (function (_super) {\n __extends(CanvasImmediateRenderer, _super);\n /**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @param {number} viewRotation View rotation.\n * @param {number} [opt_squaredTolerance] Optional squared tolerance for simplification.\n * @param {import(\"../../proj.js\").TransformFunction} [opt_userTransform] Transform from user to view projection.\n */\n function CanvasImmediateRenderer(context, pixelRatio, extent, transform, viewRotation, opt_squaredTolerance, opt_userTransform) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {CanvasRenderingContext2D}\n */\n _this.context_ = context;\n /**\n * @private\n * @type {number}\n */\n _this.pixelRatio_ = pixelRatio;\n /**\n * @private\n * @type {import(\"../../extent.js\").Extent}\n */\n _this.extent_ = extent;\n /**\n * @private\n * @type {import(\"../../transform.js\").Transform}\n */\n _this.transform_ = transform;\n /**\n * @private\n * @type {number}\n */\n _this.viewRotation_ = viewRotation;\n /**\n * @private\n * @type {number}\n */\n _this.squaredTolerance_ = opt_squaredTolerance;\n /**\n * @private\n * @type {import(\"../../proj.js\").TransformFunction}\n */\n _this.userTransform_ = opt_userTransform;\n /**\n * @private\n * @type {?import(\"../canvas.js\").FillState}\n */\n _this.contextFillState_ = null;\n /**\n * @private\n * @type {?import(\"../canvas.js\").StrokeState}\n */\n _this.contextStrokeState_ = null;\n /**\n * @private\n * @type {?import(\"../canvas.js\").TextState}\n */\n _this.contextTextState_ = null;\n /**\n * @private\n * @type {?import(\"../canvas.js\").FillState}\n */\n _this.fillState_ = null;\n /**\n * @private\n * @type {?import(\"../canvas.js\").StrokeState}\n */\n _this.strokeState_ = null;\n /**\n * @private\n * @type {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement}\n */\n _this.image_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.imageAnchorX_ = 0;\n /**\n * @private\n * @type {number}\n */\n _this.imageAnchorY_ = 0;\n /**\n * @private\n * @type {number}\n */\n _this.imageHeight_ = 0;\n /**\n * @private\n * @type {number}\n */\n _this.imageOpacity_ = 0;\n /**\n * @private\n * @type {number}\n */\n _this.imageOriginX_ = 0;\n /**\n * @private\n * @type {number}\n */\n _this.imageOriginY_ = 0;\n /**\n * @private\n * @type {boolean}\n */\n _this.imageRotateWithView_ = false;\n /**\n * @private\n * @type {number}\n */\n _this.imageRotation_ = 0;\n /**\n * @private\n * @type {import(\"../../size.js\").Size}\n */\n _this.imageScale_ = [0, 0];\n /**\n * @private\n * @type {number}\n */\n _this.imageWidth_ = 0;\n /**\n * @private\n * @type {string}\n */\n _this.text_ = '';\n /**\n * @private\n * @type {number}\n */\n _this.textOffsetX_ = 0;\n /**\n * @private\n * @type {number}\n */\n _this.textOffsetY_ = 0;\n /**\n * @private\n * @type {boolean}\n */\n _this.textRotateWithView_ = false;\n /**\n * @private\n * @type {number}\n */\n _this.textRotation_ = 0;\n /**\n * @private\n * @type {import(\"../../size.js\").Size}\n */\n _this.textScale_ = [0, 0];\n /**\n * @private\n * @type {?import(\"../canvas.js\").FillState}\n */\n _this.textFillState_ = null;\n /**\n * @private\n * @type {?import(\"../canvas.js\").StrokeState}\n */\n _this.textStrokeState_ = null;\n /**\n * @private\n * @type {?import(\"../canvas.js\").TextState}\n */\n _this.textState_ = null;\n /**\n * @private\n * @type {Array}\n */\n _this.pixelCoordinates_ = [];\n /**\n * @private\n * @type {import(\"../../transform.js\").Transform}\n */\n _this.tmpLocalTransform_ = createTransform();\n return _this;\n }\n /**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @private\n */\n CanvasImmediateRenderer.prototype.drawImages_ = function (flatCoordinates, offset, end, stride) {\n if (!this.image_) {\n return;\n }\n var pixelCoordinates = transform2D(flatCoordinates, offset, end, stride, this.transform_, this.pixelCoordinates_);\n var context = this.context_;\n var localTransform = this.tmpLocalTransform_;\n var alpha = context.globalAlpha;\n if (this.imageOpacity_ != 1) {\n context.globalAlpha = alpha * this.imageOpacity_;\n }\n var rotation = this.imageRotation_;\n if (this.imageRotateWithView_) {\n rotation += this.viewRotation_;\n }\n for (var i = 0, ii = pixelCoordinates.length; i < ii; i += 2) {\n var x = pixelCoordinates[i] - this.imageAnchorX_;\n var y = pixelCoordinates[i + 1] - this.imageAnchorY_;\n if (rotation !== 0 ||\n this.imageScale_[0] != 1 ||\n this.imageScale_[1] != 1) {\n var centerX = x + this.imageAnchorX_;\n var centerY = y + this.imageAnchorY_;\n composeTransform(localTransform, centerX, centerY, 1, 1, rotation, -centerX, -centerY);\n context.setTransform.apply(context, localTransform);\n context.translate(centerX, centerY);\n context.scale(this.imageScale_[0], this.imageScale_[1]);\n context.drawImage(this.image_, this.imageOriginX_, this.imageOriginY_, this.imageWidth_, this.imageHeight_, -this.imageAnchorX_, -this.imageAnchorY_, this.imageWidth_, this.imageHeight_);\n context.setTransform(1, 0, 0, 1, 0, 0);\n }\n else {\n context.drawImage(this.image_, this.imageOriginX_, this.imageOriginY_, this.imageWidth_, this.imageHeight_, x, y, this.imageWidth_, this.imageHeight_);\n }\n }\n if (this.imageOpacity_ != 1) {\n context.globalAlpha = alpha;\n }\n };\n /**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @private\n */\n CanvasImmediateRenderer.prototype.drawText_ = function (flatCoordinates, offset, end, stride) {\n if (!this.textState_ || this.text_ === '') {\n return;\n }\n if (this.textFillState_) {\n this.setContextFillState_(this.textFillState_);\n }\n if (this.textStrokeState_) {\n this.setContextStrokeState_(this.textStrokeState_);\n }\n this.setContextTextState_(this.textState_);\n var pixelCoordinates = transform2D(flatCoordinates, offset, end, stride, this.transform_, this.pixelCoordinates_);\n var context = this.context_;\n var rotation = this.textRotation_;\n if (this.textRotateWithView_) {\n rotation += this.viewRotation_;\n }\n for (; offset < end; offset += stride) {\n var x = pixelCoordinates[offset] + this.textOffsetX_;\n var y = pixelCoordinates[offset + 1] + this.textOffsetY_;\n if (rotation !== 0 ||\n this.textScale_[0] != 1 ||\n this.textScale_[1] != 1) {\n var localTransform = composeTransform(this.tmpLocalTransform_, x, y, 1, 1, rotation, -x, -y);\n context.setTransform.apply(context, localTransform);\n context.translate(x, y);\n context.scale(this.textScale_[0], this.textScale_[1]);\n if (this.textStrokeState_) {\n context.strokeText(this.text_, 0, 0);\n }\n if (this.textFillState_) {\n context.fillText(this.text_, 0, 0);\n }\n context.setTransform(1, 0, 0, 1, 0, 0);\n }\n else {\n if (this.textStrokeState_) {\n context.strokeText(this.text_, x, y);\n }\n if (this.textFillState_) {\n context.fillText(this.text_, x, y);\n }\n }\n }\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 {boolean} close Close.\n * @private\n * @return {number} end End.\n */\n CanvasImmediateRenderer.prototype.moveToLineTo_ = function (flatCoordinates, offset, end, stride, close) {\n var context = this.context_;\n var pixelCoordinates = transform2D(flatCoordinates, offset, end, stride, this.transform_, this.pixelCoordinates_);\n context.moveTo(pixelCoordinates[0], pixelCoordinates[1]);\n var length = pixelCoordinates.length;\n if (close) {\n length -= 2;\n }\n for (var i = 2; i < length; i += 2) {\n context.lineTo(pixelCoordinates[i], pixelCoordinates[i + 1]);\n }\n if (close) {\n context.closePath();\n }\n return end;\n };\n /**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @private\n * @return {number} End.\n */\n CanvasImmediateRenderer.prototype.drawRings_ = function (flatCoordinates, offset, ends, stride) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n offset = this.moveToLineTo_(flatCoordinates, offset, ends[i], stride, true);\n }\n return offset;\n };\n /**\n * Render a circle geometry into the canvas. Rendering is immediate and uses\n * the current fill and stroke styles.\n *\n * @param {import(\"../../geom/Circle.js\").default} geometry Circle geometry.\n * @api\n */\n CanvasImmediateRenderer.prototype.drawCircle = function (geometry) {\n if (!intersects(this.extent_, geometry.getExtent())) {\n return;\n }\n if (this.fillState_ || this.strokeState_) {\n if (this.fillState_) {\n this.setContextFillState_(this.fillState_);\n }\n if (this.strokeState_) {\n this.setContextStrokeState_(this.strokeState_);\n }\n var pixelCoordinates = transformGeom2D(geometry, this.transform_, this.pixelCoordinates_);\n var dx = pixelCoordinates[2] - pixelCoordinates[0];\n var dy = pixelCoordinates[3] - pixelCoordinates[1];\n var radius = Math.sqrt(dx * dx + dy * dy);\n var context = this.context_;\n context.beginPath();\n context.arc(pixelCoordinates[0], pixelCoordinates[1], radius, 0, 2 * Math.PI);\n if (this.fillState_) {\n context.fill();\n }\n if (this.strokeState_) {\n context.stroke();\n }\n }\n if (this.text_ !== '') {\n this.drawText_(geometry.getCenter(), 0, 2, 2);\n }\n };\n /**\n * Set the rendering style. Note that since this is an immediate rendering API,\n * any `zIndex` on the provided style will be ignored.\n *\n * @param {import(\"../../style/Style.js\").default} style The rendering style.\n * @api\n */\n CanvasImmediateRenderer.prototype.setStyle = function (style) {\n this.setFillStrokeStyle(style.getFill(), style.getStroke());\n this.setImageStyle(style.getImage());\n this.setTextStyle(style.getText());\n };\n /**\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n */\n CanvasImmediateRenderer.prototype.setTransform = function (transform) {\n this.transform_ = transform;\n };\n /**\n * Render a geometry into the canvas. Call\n * {@link module:ol/render/canvas/Immediate~CanvasImmediateRenderer#setStyle renderer.setStyle()} first to set the rendering style.\n *\n * @param {import(\"../../geom/Geometry.js\").default|import(\"../Feature.js\").default} geometry The geometry to render.\n * @api\n */\n CanvasImmediateRenderer.prototype.drawGeometry = function (geometry) {\n var type = geometry.getType();\n switch (type) {\n case GeometryType.POINT:\n this.drawPoint(\n /** @type {import(\"../../geom/Point.js\").default} */ (geometry));\n break;\n case GeometryType.LINE_STRING:\n this.drawLineString(\n /** @type {import(\"../../geom/LineString.js\").default} */ (geometry));\n break;\n case GeometryType.POLYGON:\n this.drawPolygon(\n /** @type {import(\"../../geom/Polygon.js\").default} */ (geometry));\n break;\n case GeometryType.MULTI_POINT:\n this.drawMultiPoint(\n /** @type {import(\"../../geom/MultiPoint.js\").default} */ (geometry));\n break;\n case GeometryType.MULTI_LINE_STRING:\n this.drawMultiLineString(\n /** @type {import(\"../../geom/MultiLineString.js\").default} */ (geometry));\n break;\n case GeometryType.MULTI_POLYGON:\n this.drawMultiPolygon(\n /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (geometry));\n break;\n case GeometryType.GEOMETRY_COLLECTION:\n this.drawGeometryCollection(\n /** @type {import(\"../../geom/GeometryCollection.js\").default} */ (geometry));\n break;\n case GeometryType.CIRCLE:\n this.drawCircle(\n /** @type {import(\"../../geom/Circle.js\").default} */ (geometry));\n break;\n default:\n }\n };\n /**\n * Render a feature into the canvas. Note that any `zIndex` on the provided\n * style will be ignored - features are rendered immediately in the order that\n * this method is called. If you need `zIndex` support, you should be using an\n * {@link module:ol/layer/Vector~VectorLayer VectorLayer} instead.\n *\n * @param {import(\"../../Feature.js\").default} feature Feature.\n * @param {import(\"../../style/Style.js\").default} style Style.\n * @api\n */\n CanvasImmediateRenderer.prototype.drawFeature = function (feature, style) {\n var geometry = style.getGeometryFunction()(feature);\n if (!geometry || !intersects(this.extent_, geometry.getExtent())) {\n return;\n }\n this.setStyle(style);\n this.drawGeometry(geometry);\n };\n /**\n * Render a GeometryCollection to the canvas. Rendering is immediate and\n * uses the current styles appropriate for each geometry in the collection.\n *\n * @param {import(\"../../geom/GeometryCollection.js\").default} geometry Geometry collection.\n */\n CanvasImmediateRenderer.prototype.drawGeometryCollection = function (geometry) {\n var geometries = geometry.getGeometriesArray();\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n this.drawGeometry(geometries[i]);\n }\n };\n /**\n * Render a Point geometry into the canvas. Rendering is immediate and uses\n * the current style.\n *\n * @param {import(\"../../geom/Point.js\").default|import(\"../Feature.js\").default} geometry Point geometry.\n */\n CanvasImmediateRenderer.prototype.drawPoint = function (geometry) {\n if (this.squaredTolerance_) {\n geometry = /** @type {import(\"../../geom/Point.js\").default} */ (geometry.simplifyTransformed(this.squaredTolerance_, this.userTransform_));\n }\n var flatCoordinates = geometry.getFlatCoordinates();\n var stride = geometry.getStride();\n if (this.image_) {\n this.drawImages_(flatCoordinates, 0, flatCoordinates.length, stride);\n }\n if (this.text_ !== '') {\n this.drawText_(flatCoordinates, 0, flatCoordinates.length, stride);\n }\n };\n /**\n * Render a MultiPoint geometry into the canvas. Rendering is immediate and\n * uses the current style.\n *\n * @param {import(\"../../geom/MultiPoint.js\").default|import(\"../Feature.js\").default} geometry MultiPoint geometry.\n */\n CanvasImmediateRenderer.prototype.drawMultiPoint = function (geometry) {\n if (this.squaredTolerance_) {\n geometry = /** @type {import(\"../../geom/MultiPoint.js\").default} */ (geometry.simplifyTransformed(this.squaredTolerance_, this.userTransform_));\n }\n var flatCoordinates = geometry.getFlatCoordinates();\n var stride = geometry.getStride();\n if (this.image_) {\n this.drawImages_(flatCoordinates, 0, flatCoordinates.length, stride);\n }\n if (this.text_ !== '') {\n this.drawText_(flatCoordinates, 0, flatCoordinates.length, stride);\n }\n };\n /**\n * Render a LineString into the canvas. Rendering is immediate and uses\n * the current style.\n *\n * @param {import(\"../../geom/LineString.js\").default|import(\"../Feature.js\").default} geometry LineString geometry.\n */\n CanvasImmediateRenderer.prototype.drawLineString = function (geometry) {\n if (this.squaredTolerance_) {\n geometry = /** @type {import(\"../../geom/LineString.js\").default} */ (geometry.simplifyTransformed(this.squaredTolerance_, this.userTransform_));\n }\n if (!intersects(this.extent_, geometry.getExtent())) {\n return;\n }\n if (this.strokeState_) {\n this.setContextStrokeState_(this.strokeState_);\n var context = this.context_;\n var flatCoordinates = geometry.getFlatCoordinates();\n context.beginPath();\n this.moveToLineTo_(flatCoordinates, 0, flatCoordinates.length, geometry.getStride(), false);\n context.stroke();\n }\n if (this.text_ !== '') {\n var flatMidpoint = geometry.getFlatMidpoint();\n this.drawText_(flatMidpoint, 0, 2, 2);\n }\n };\n /**\n * Render a MultiLineString geometry into the canvas. Rendering is immediate\n * and uses the current style.\n *\n * @param {import(\"../../geom/MultiLineString.js\").default|import(\"../Feature.js\").default} geometry MultiLineString geometry.\n */\n CanvasImmediateRenderer.prototype.drawMultiLineString = function (geometry) {\n if (this.squaredTolerance_) {\n geometry =\n /** @type {import(\"../../geom/MultiLineString.js\").default} */ (geometry.simplifyTransformed(this.squaredTolerance_, this.userTransform_));\n }\n var geometryExtent = geometry.getExtent();\n if (!intersects(this.extent_, geometryExtent)) {\n return;\n }\n if (this.strokeState_) {\n this.setContextStrokeState_(this.strokeState_);\n var context = this.context_;\n var flatCoordinates = geometry.getFlatCoordinates();\n var offset = 0;\n var ends = /** @type {Array} */ (geometry.getEnds());\n var stride = geometry.getStride();\n context.beginPath();\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n offset = this.moveToLineTo_(flatCoordinates, offset, ends[i], stride, false);\n }\n context.stroke();\n }\n if (this.text_ !== '') {\n var flatMidpoints = geometry.getFlatMidpoints();\n this.drawText_(flatMidpoints, 0, flatMidpoints.length, 2);\n }\n };\n /**\n * Render a Polygon geometry into the canvas. Rendering is immediate and uses\n * the current style.\n *\n * @param {import(\"../../geom/Polygon.js\").default|import(\"../Feature.js\").default} geometry Polygon geometry.\n */\n CanvasImmediateRenderer.prototype.drawPolygon = function (geometry) {\n if (this.squaredTolerance_) {\n geometry = /** @type {import(\"../../geom/Polygon.js\").default} */ (geometry.simplifyTransformed(this.squaredTolerance_, this.userTransform_));\n }\n if (!intersects(this.extent_, geometry.getExtent())) {\n return;\n }\n if (this.strokeState_ || this.fillState_) {\n if (this.fillState_) {\n this.setContextFillState_(this.fillState_);\n }\n if (this.strokeState_) {\n this.setContextStrokeState_(this.strokeState_);\n }\n var context = this.context_;\n context.beginPath();\n this.drawRings_(geometry.getOrientedFlatCoordinates(), 0, \n /** @type {Array} */ (geometry.getEnds()), geometry.getStride());\n if (this.fillState_) {\n context.fill();\n }\n if (this.strokeState_) {\n context.stroke();\n }\n }\n if (this.text_ !== '') {\n var flatInteriorPoint = geometry.getFlatInteriorPoint();\n this.drawText_(flatInteriorPoint, 0, 2, 2);\n }\n };\n /**\n * Render MultiPolygon geometry into the canvas. Rendering is immediate and\n * uses the current style.\n * @param {import(\"../../geom/MultiPolygon.js\").default} geometry MultiPolygon geometry.\n */\n CanvasImmediateRenderer.prototype.drawMultiPolygon = function (geometry) {\n if (this.squaredTolerance_) {\n geometry = /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (geometry.simplifyTransformed(this.squaredTolerance_, this.userTransform_));\n }\n if (!intersects(this.extent_, geometry.getExtent())) {\n return;\n }\n if (this.strokeState_ || this.fillState_) {\n if (this.fillState_) {\n this.setContextFillState_(this.fillState_);\n }\n if (this.strokeState_) {\n this.setContextStrokeState_(this.strokeState_);\n }\n var context = this.context_;\n var flatCoordinates = geometry.getOrientedFlatCoordinates();\n var offset = 0;\n var endss = geometry.getEndss();\n var stride = geometry.getStride();\n context.beginPath();\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n offset = this.drawRings_(flatCoordinates, offset, ends, stride);\n }\n if (this.fillState_) {\n context.fill();\n }\n if (this.strokeState_) {\n context.stroke();\n }\n }\n if (this.text_ !== '') {\n var flatInteriorPoints = geometry.getFlatInteriorPoints();\n this.drawText_(flatInteriorPoints, 0, flatInteriorPoints.length, 2);\n }\n };\n /**\n * @param {import(\"../canvas.js\").FillState} fillState Fill state.\n * @private\n */\n CanvasImmediateRenderer.prototype.setContextFillState_ = function (fillState) {\n var context = this.context_;\n var contextFillState = this.contextFillState_;\n if (!contextFillState) {\n context.fillStyle = fillState.fillStyle;\n this.contextFillState_ = {\n fillStyle: fillState.fillStyle,\n };\n }\n else {\n if (contextFillState.fillStyle != fillState.fillStyle) {\n contextFillState.fillStyle = fillState.fillStyle;\n context.fillStyle = fillState.fillStyle;\n }\n }\n };\n /**\n * @param {import(\"../canvas.js\").StrokeState} strokeState Stroke state.\n * @private\n */\n CanvasImmediateRenderer.prototype.setContextStrokeState_ = function (strokeState) {\n var context = this.context_;\n var contextStrokeState = this.contextStrokeState_;\n if (!contextStrokeState) {\n context.lineCap = strokeState.lineCap;\n if (context.setLineDash) {\n context.setLineDash(strokeState.lineDash);\n context.lineDashOffset = strokeState.lineDashOffset;\n }\n context.lineJoin = strokeState.lineJoin;\n context.lineWidth = strokeState.lineWidth;\n context.miterLimit = strokeState.miterLimit;\n context.strokeStyle = strokeState.strokeStyle;\n this.contextStrokeState_ = {\n lineCap: strokeState.lineCap,\n lineDash: strokeState.lineDash,\n lineDashOffset: strokeState.lineDashOffset,\n lineJoin: strokeState.lineJoin,\n lineWidth: strokeState.lineWidth,\n miterLimit: strokeState.miterLimit,\n strokeStyle: strokeState.strokeStyle,\n };\n }\n else {\n if (contextStrokeState.lineCap != strokeState.lineCap) {\n contextStrokeState.lineCap = strokeState.lineCap;\n context.lineCap = strokeState.lineCap;\n }\n if (context.setLineDash) {\n if (!equals(contextStrokeState.lineDash, strokeState.lineDash)) {\n context.setLineDash((contextStrokeState.lineDash = strokeState.lineDash));\n }\n if (contextStrokeState.lineDashOffset != strokeState.lineDashOffset) {\n contextStrokeState.lineDashOffset = strokeState.lineDashOffset;\n context.lineDashOffset = strokeState.lineDashOffset;\n }\n }\n if (contextStrokeState.lineJoin != strokeState.lineJoin) {\n contextStrokeState.lineJoin = strokeState.lineJoin;\n context.lineJoin = strokeState.lineJoin;\n }\n if (contextStrokeState.lineWidth != strokeState.lineWidth) {\n contextStrokeState.lineWidth = strokeState.lineWidth;\n context.lineWidth = strokeState.lineWidth;\n }\n if (contextStrokeState.miterLimit != strokeState.miterLimit) {\n contextStrokeState.miterLimit = strokeState.miterLimit;\n context.miterLimit = strokeState.miterLimit;\n }\n if (contextStrokeState.strokeStyle != strokeState.strokeStyle) {\n contextStrokeState.strokeStyle = strokeState.strokeStyle;\n context.strokeStyle = strokeState.strokeStyle;\n }\n }\n };\n /**\n * @param {import(\"../canvas.js\").TextState} textState Text state.\n * @private\n */\n CanvasImmediateRenderer.prototype.setContextTextState_ = function (textState) {\n var context = this.context_;\n var contextTextState = this.contextTextState_;\n var textAlign = textState.textAlign\n ? textState.textAlign\n : defaultTextAlign;\n if (!contextTextState) {\n context.font = textState.font;\n context.textAlign = /** @type {CanvasTextAlign} */ (textAlign);\n context.textBaseline = /** @type {CanvasTextBaseline} */ (textState.textBaseline);\n this.contextTextState_ = {\n font: textState.font,\n textAlign: textAlign,\n textBaseline: textState.textBaseline,\n };\n }\n else {\n if (contextTextState.font != textState.font) {\n contextTextState.font = textState.font;\n context.font = textState.font;\n }\n if (contextTextState.textAlign != textAlign) {\n contextTextState.textAlign = /** @type {CanvasTextAlign} */ (textAlign);\n context.textAlign = /** @type {CanvasTextAlign} */ (textAlign);\n }\n if (contextTextState.textBaseline != textState.textBaseline) {\n contextTextState.textBaseline = /** @type {CanvasTextBaseline} */ (textState.textBaseline);\n context.textBaseline = /** @type {CanvasTextBaseline} */ (textState.textBaseline);\n }\n }\n };\n /**\n * Set the fill and stroke style for subsequent draw operations. To clear\n * either fill or stroke styles, pass null for the appropriate parameter.\n *\n * @param {import(\"../../style/Fill.js\").default} fillStyle Fill style.\n * @param {import(\"../../style/Stroke.js\").default} strokeStyle Stroke style.\n */\n CanvasImmediateRenderer.prototype.setFillStrokeStyle = function (fillStyle, strokeStyle) {\n var _this = this;\n if (!fillStyle) {\n this.fillState_ = null;\n }\n else {\n var fillStyleColor = fillStyle.getColor();\n this.fillState_ = {\n fillStyle: asColorLike(fillStyleColor ? fillStyleColor : defaultFillStyle),\n };\n }\n if (!strokeStyle) {\n this.strokeState_ = null;\n }\n else {\n var strokeStyleColor = strokeStyle.getColor();\n var strokeStyleLineCap = strokeStyle.getLineCap();\n var strokeStyleLineDash = strokeStyle.getLineDash();\n var strokeStyleLineDashOffset = strokeStyle.getLineDashOffset();\n var strokeStyleLineJoin = strokeStyle.getLineJoin();\n var strokeStyleWidth = strokeStyle.getWidth();\n var strokeStyleMiterLimit = strokeStyle.getMiterLimit();\n var lineDash = strokeStyleLineDash\n ? strokeStyleLineDash\n : defaultLineDash;\n this.strokeState_ = {\n lineCap: strokeStyleLineCap !== undefined\n ? strokeStyleLineCap\n : defaultLineCap,\n lineDash: this.pixelRatio_ === 1\n ? lineDash\n : lineDash.map(function (n) { return n * _this.pixelRatio_; }),\n lineDashOffset: (strokeStyleLineDashOffset\n ? strokeStyleLineDashOffset\n : defaultLineDashOffset) * this.pixelRatio_,\n lineJoin: strokeStyleLineJoin !== undefined\n ? strokeStyleLineJoin\n : defaultLineJoin,\n lineWidth: (strokeStyleWidth !== undefined\n ? strokeStyleWidth\n : defaultLineWidth) * this.pixelRatio_,\n miterLimit: strokeStyleMiterLimit !== undefined\n ? strokeStyleMiterLimit\n : defaultMiterLimit,\n strokeStyle: asColorLike(strokeStyleColor ? strokeStyleColor : defaultStrokeStyle),\n };\n }\n };\n /**\n * Set the image style for subsequent draw operations. Pass null to remove\n * the image style.\n *\n * @param {import(\"../../style/Image.js\").default} imageStyle Image style.\n */\n CanvasImmediateRenderer.prototype.setImageStyle = function (imageStyle) {\n var imageSize;\n if (!imageStyle || !(imageSize = imageStyle.getSize())) {\n this.image_ = null;\n return;\n }\n var imageAnchor = imageStyle.getAnchor();\n var imageOrigin = imageStyle.getOrigin();\n this.image_ = imageStyle.getImage(this.pixelRatio_);\n this.imageAnchorX_ = imageAnchor[0] * this.pixelRatio_;\n this.imageAnchorY_ = imageAnchor[1] * this.pixelRatio_;\n this.imageHeight_ = imageSize[1] * this.pixelRatio_;\n this.imageOpacity_ = imageStyle.getOpacity();\n this.imageOriginX_ = imageOrigin[0];\n this.imageOriginY_ = imageOrigin[1];\n this.imageRotateWithView_ = imageStyle.getRotateWithView();\n this.imageRotation_ = imageStyle.getRotation();\n this.imageScale_ = imageStyle.getScaleArray();\n this.imageWidth_ = imageSize[0] * this.pixelRatio_;\n };\n /**\n * Set the text style for subsequent draw operations. Pass null to\n * remove the text style.\n *\n * @param {import(\"../../style/Text.js\").default} textStyle Text style.\n */\n CanvasImmediateRenderer.prototype.setTextStyle = function (textStyle) {\n if (!textStyle) {\n this.text_ = '';\n }\n else {\n var textFillStyle = textStyle.getFill();\n if (!textFillStyle) {\n this.textFillState_ = null;\n }\n else {\n var textFillStyleColor = textFillStyle.getColor();\n this.textFillState_ = {\n fillStyle: asColorLike(textFillStyleColor ? textFillStyleColor : defaultFillStyle),\n };\n }\n var textStrokeStyle = textStyle.getStroke();\n if (!textStrokeStyle) {\n this.textStrokeState_ = null;\n }\n else {\n var textStrokeStyleColor = textStrokeStyle.getColor();\n var textStrokeStyleLineCap = textStrokeStyle.getLineCap();\n var textStrokeStyleLineDash = textStrokeStyle.getLineDash();\n var textStrokeStyleLineDashOffset = textStrokeStyle.getLineDashOffset();\n var textStrokeStyleLineJoin = textStrokeStyle.getLineJoin();\n var textStrokeStyleWidth = textStrokeStyle.getWidth();\n var textStrokeStyleMiterLimit = textStrokeStyle.getMiterLimit();\n this.textStrokeState_ = {\n lineCap: textStrokeStyleLineCap !== undefined\n ? textStrokeStyleLineCap\n : defaultLineCap,\n lineDash: textStrokeStyleLineDash\n ? textStrokeStyleLineDash\n : defaultLineDash,\n lineDashOffset: textStrokeStyleLineDashOffset\n ? textStrokeStyleLineDashOffset\n : defaultLineDashOffset,\n lineJoin: textStrokeStyleLineJoin !== undefined\n ? textStrokeStyleLineJoin\n : defaultLineJoin,\n lineWidth: textStrokeStyleWidth !== undefined\n ? textStrokeStyleWidth\n : defaultLineWidth,\n miterLimit: textStrokeStyleMiterLimit !== undefined\n ? textStrokeStyleMiterLimit\n : defaultMiterLimit,\n strokeStyle: asColorLike(textStrokeStyleColor ? textStrokeStyleColor : defaultStrokeStyle),\n };\n }\n var textFont = textStyle.getFont();\n var textOffsetX = textStyle.getOffsetX();\n var textOffsetY = textStyle.getOffsetY();\n var textRotateWithView = textStyle.getRotateWithView();\n var textRotation = textStyle.getRotation();\n var textScale = textStyle.getScaleArray();\n var textText = textStyle.getText();\n var textTextAlign = textStyle.getTextAlign();\n var textTextBaseline = textStyle.getTextBaseline();\n this.textState_ = {\n font: textFont !== undefined ? textFont : defaultFont,\n textAlign: textTextAlign !== undefined ? textTextAlign : defaultTextAlign,\n textBaseline: textTextBaseline !== undefined\n ? textTextBaseline\n : defaultTextBaseline,\n };\n this.text_ = textText !== undefined ? textText : '';\n this.textOffsetX_ =\n textOffsetX !== undefined ? this.pixelRatio_ * textOffsetX : 0;\n this.textOffsetY_ =\n textOffsetY !== undefined ? this.pixelRatio_ * textOffsetY : 0;\n this.textRotateWithView_ =\n textRotateWithView !== undefined ? textRotateWithView : false;\n this.textRotation_ = textRotation !== undefined ? textRotation : 0;\n this.textScale_ = [\n this.pixelRatio_ * textScale[0],\n this.pixelRatio_ * textScale[1],\n ];\n }\n };\n return CanvasImmediateRenderer;\n}(VectorContext));\nexport default CanvasImmediateRenderer;\n//# sourceMappingURL=Immediate.js.map","/**\n * @module ol/style/IconAnchorUnits\n */\n/**\n * Icon anchor units. One of 'fraction', 'pixels'.\n * @enum {string}\n */\nexport default {\n /**\n * Anchor is a fraction\n * @api\n */\n FRACTION: 'fraction',\n /**\n * Anchor is in pixels\n * @api\n */\n PIXELS: 'pixels',\n};\n//# sourceMappingURL=IconAnchorUnits.js.map","/**\n * @module ol/style/IconOrigin\n */\n/**\n * Icon origin. One of 'bottom-left', 'bottom-right', 'top-left', 'top-right'.\n * @enum {string}\n */\nexport default {\n /**\n * Origin is at bottom left\n * @api\n */\n BOTTOM_LEFT: 'bottom-left',\n /**\n * Origin is at bottom right\n * @api\n */\n BOTTOM_RIGHT: 'bottom-right',\n /**\n * Origin is at top left\n * @api\n */\n TOP_LEFT: 'top-left',\n /**\n * Origin is at top right\n * @api\n */\n TOP_RIGHT: 'top-right',\n};\n//# sourceMappingURL=IconOrigin.js.map","/**\n * @module ol/style/IconImage\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport EventTarget from '../events/Target.js';\nimport EventType from '../events/EventType.js';\nimport ImageState from '../ImageState.js';\nimport { asString } from '../color.js';\nimport { createCanvasContext2D } from '../dom.js';\nimport { shared as iconImageCache } from './IconImageCache.js';\nimport { listenImage } from '../Image.js';\n/**\n * @type {CanvasRenderingContext2D}\n */\nvar taintedTestContext = null;\nvar IconImage = /** @class */ (function (_super) {\n __extends(IconImage, _super);\n /**\n * @param {HTMLImageElement|HTMLCanvasElement} image Image.\n * @param {string|undefined} src Src.\n * @param {import(\"../size.js\").Size} size Size.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../ImageState.js\").default} imageState Image state.\n * @param {import(\"../color.js\").Color} color Color.\n */\n function IconImage(image, src, size, crossOrigin, imageState, color) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n _this.hitDetectionImage_ = null;\n /**\n * @private\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n _this.image_ = !image ? new Image() : image;\n if (crossOrigin !== null) {\n /** @type {HTMLImageElement} */ (_this.image_).crossOrigin = crossOrigin;\n }\n /**\n * @private\n * @type {Object}\n */\n _this.canvas_ = {};\n /**\n * @private\n * @type {import(\"../color.js\").Color}\n */\n _this.color_ = color;\n /**\n * @private\n * @type {?function():void}\n */\n _this.unlisten_ = null;\n /**\n * @private\n * @type {import(\"../ImageState.js\").default}\n */\n _this.imageState_ = imageState;\n /**\n * @private\n * @type {import(\"../size.js\").Size}\n */\n _this.size_ = size;\n /**\n * @private\n * @type {string|undefined}\n */\n _this.src_ = src;\n /**\n * @private\n */\n _this.tainted_;\n return _this;\n }\n /**\n * @private\n * @return {boolean} The image canvas is tainted.\n */\n IconImage.prototype.isTainted_ = function () {\n if (this.tainted_ === undefined && this.imageState_ === ImageState.LOADED) {\n if (!taintedTestContext) {\n taintedTestContext = createCanvasContext2D(1, 1);\n }\n taintedTestContext.drawImage(this.image_, 0, 0);\n try {\n taintedTestContext.getImageData(0, 0, 1, 1);\n this.tainted_ = false;\n }\n catch (e) {\n taintedTestContext = null;\n this.tainted_ = true;\n }\n }\n return this.tainted_ === true;\n };\n /**\n * @private\n */\n IconImage.prototype.dispatchChangeEvent_ = function () {\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * @private\n */\n IconImage.prototype.handleImageError_ = function () {\n this.imageState_ = ImageState.ERROR;\n this.unlistenImage_();\n this.dispatchChangeEvent_();\n };\n /**\n * @private\n */\n IconImage.prototype.handleImageLoad_ = function () {\n this.imageState_ = ImageState.LOADED;\n if (this.size_) {\n this.image_.width = this.size_[0];\n this.image_.height = this.size_[1];\n }\n else {\n this.size_ = [this.image_.width, this.image_.height];\n }\n this.unlistenImage_();\n this.dispatchChangeEvent_();\n };\n /**\n * @param {number} pixelRatio Pixel ratio.\n * @return {HTMLImageElement|HTMLCanvasElement} Image or Canvas element.\n */\n IconImage.prototype.getImage = function (pixelRatio) {\n this.replaceColor_(pixelRatio);\n return this.canvas_[pixelRatio] ? this.canvas_[pixelRatio] : this.image_;\n };\n /**\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} Image or Canvas element.\n */\n IconImage.prototype.getPixelRatio = function (pixelRatio) {\n this.replaceColor_(pixelRatio);\n return this.canvas_[pixelRatio] ? pixelRatio : 1;\n };\n /**\n * @return {import(\"../ImageState.js\").default} Image state.\n */\n IconImage.prototype.getImageState = function () {\n return this.imageState_;\n };\n /**\n * @return {HTMLImageElement|HTMLCanvasElement} Image element.\n */\n IconImage.prototype.getHitDetectionImage = function () {\n if (!this.hitDetectionImage_) {\n if (this.isTainted_()) {\n var width = this.size_[0];\n var height = this.size_[1];\n var context = createCanvasContext2D(width, height);\n context.fillRect(0, 0, width, height);\n this.hitDetectionImage_ = context.canvas;\n }\n else {\n this.hitDetectionImage_ = this.image_;\n }\n }\n return this.hitDetectionImage_;\n };\n /**\n * Get the size of the icon (in pixels).\n * @return {import(\"../size.js\").Size} Image size.\n */\n IconImage.prototype.getSize = function () {\n return this.size_;\n };\n /**\n * @return {string|undefined} Image src.\n */\n IconImage.prototype.getSrc = function () {\n return this.src_;\n };\n /**\n * Load not yet loaded URI.\n */\n IconImage.prototype.load = function () {\n if (this.imageState_ == ImageState.IDLE) {\n this.imageState_ = ImageState.LOADING;\n try {\n /** @type {HTMLImageElement} */ (this.image_).src = this.src_;\n }\n catch (e) {\n this.handleImageError_();\n }\n this.unlisten_ = listenImage(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this));\n }\n };\n /**\n * @param {number} pixelRatio Pixel ratio.\n * @private\n */\n IconImage.prototype.replaceColor_ = function (pixelRatio) {\n if (!this.color_ ||\n this.canvas_[pixelRatio] ||\n this.imageState_ !== ImageState.LOADED) {\n return;\n }\n var canvas = document.createElement('canvas');\n this.canvas_[pixelRatio] = canvas;\n canvas.width = Math.ceil(this.image_.width * pixelRatio);\n canvas.height = Math.ceil(this.image_.height * pixelRatio);\n var ctx = canvas.getContext('2d');\n ctx.scale(pixelRatio, pixelRatio);\n ctx.drawImage(this.image_, 0, 0);\n ctx.globalCompositeOperation = 'multiply';\n // Internet Explorer 11 does not support the multiply operation.\n // If the canvas is tainted in Internet Explorer this still produces\n // a solid color image with the shape of the icon.\n if (ctx.globalCompositeOperation === 'multiply' || this.isTainted_()) {\n ctx.fillStyle = asString(this.color_);\n ctx.fillRect(0, 0, canvas.width / pixelRatio, canvas.height / pixelRatio);\n ctx.globalCompositeOperation = 'destination-in';\n ctx.drawImage(this.image_, 0, 0);\n }\n else {\n var imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n var data = imgData.data;\n var r = this.color_[0] / 255.0;\n var g = this.color_[1] / 255.0;\n var b = this.color_[2] / 255.0;\n var a = this.color_[3];\n for (var i = 0, ii = data.length; i < ii; i += 4) {\n data[i] *= r;\n data[i + 1] *= g;\n data[i + 2] *= b;\n data[i + 3] *= a;\n }\n ctx.putImageData(imgData, 0, 0);\n }\n };\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n IconImage.prototype.unlistenImage_ = function () {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n };\n return IconImage;\n}(EventTarget));\n/**\n * @param {HTMLImageElement|HTMLCanvasElement} image Image.\n * @param {string} src Src.\n * @param {import(\"../size.js\").Size} size Size.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../ImageState.js\").default} imageState Image state.\n * @param {import(\"../color.js\").Color} color Color.\n * @return {IconImage} Icon image.\n */\nexport function get(image, src, size, crossOrigin, imageState, color) {\n var iconImage = iconImageCache.get(src, crossOrigin, color);\n if (!iconImage) {\n iconImage = new IconImage(image, src, size, crossOrigin, imageState, color);\n iconImageCache.set(src, crossOrigin, color, iconImage);\n }\n return iconImage;\n}\nexport default IconImage;\n//# sourceMappingURL=IconImage.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/style/Icon\n */\nimport EventType from '../events/EventType.js';\nimport IconAnchorUnits from './IconAnchorUnits.js';\nimport IconOrigin from './IconOrigin.js';\nimport ImageState from '../ImageState.js';\nimport ImageStyle from './Image.js';\nimport { asArray } from '../color.js';\nimport { assert } from '../asserts.js';\nimport { get as getIconImage } from './IconImage.js';\nimport { getUid } from '../util.js';\n/**\n * @typedef {Object} Options\n * @property {Array} [anchor=[0.5, 0.5]] Anchor. Default value is the icon center.\n * @property {import(\"./IconOrigin.js\").default} [anchorOrigin='top-left'] Origin of the anchor: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`.\n * @property {import(\"./IconAnchorUnits.js\").default} [anchorXUnits='fraction'] Units in which the anchor x value is\n * specified. A value of `'fraction'` indicates the x value is a fraction of the icon. A value of `'pixels'` indicates\n * the x value in pixels.\n * @property {import(\"./IconAnchorUnits.js\").default} [anchorYUnits='fraction'] Units in which the anchor y value is\n * specified. A value of `'fraction'` indicates the y value is a fraction of the icon. A value of `'pixels'` indicates\n * the y value in pixels.\n * @property {import(\"../color.js\").Color|string} [color] Color to tint the icon. If not specified,\n * the icon will be left as is.\n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note that you must provide a\n * `crossOrigin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {HTMLImageElement|HTMLCanvasElement} [img] Image object for the icon. If the `src` option is not provided then the\n * provided image must already be loaded. And in that case, it is required\n * to provide the size of the image, with the `imgSize` option.\n * @property {Array} [offset=[0, 0]] Offset, which, together with the size and the offset origin, define the\n * sub-rectangle to use from the original icon image.\n * @property {Array} [displacement=[0,0]] Displacement of the icon.\n * @property {import(\"./IconOrigin.js\").default} [offsetOrigin='top-left'] Origin of the offset: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`.\n * @property {number} [opacity=1] Opacity of the icon.\n * @property {number|import(\"../size.js\").Size} [scale=1] Scale.\n * @property {boolean} [rotateWithView=false] Whether to rotate the icon with the view.\n * @property {number} [rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {import(\"../size.js\").Size} [size] Icon size in pixel. Can be used together with `offset` to define the\n * sub-rectangle to use from the origin (sprite) icon image.\n * @property {import(\"../size.js\").Size} [imgSize] Image size in pixels. Only required if `img` is set and `src` is not, and\n * for SVG images in Internet Explorer 11. The provided `imgSize` needs to match the actual size of the image.\n * @property {string} [src] Image source URI.\n */\n/**\n * @classdesc\n * Set icon style for vector features.\n * @api\n */\nvar Icon = /** @class */ (function (_super) {\n __extends(Icon, _super);\n /**\n * @param {Options} [opt_options] Options.\n */\n function Icon(opt_options) {\n var _this = this;\n var options = opt_options || {};\n /**\n * @type {number}\n */\n var opacity = options.opacity !== undefined ? options.opacity : 1;\n /**\n * @type {number}\n */\n var rotation = options.rotation !== undefined ? options.rotation : 0;\n /**\n * @type {number|import(\"../size.js\").Size}\n */\n var scale = options.scale !== undefined ? options.scale : 1;\n /**\n * @type {boolean}\n */\n var rotateWithView = options.rotateWithView !== undefined ? options.rotateWithView : false;\n _this = _super.call(this, {\n opacity: opacity,\n rotation: rotation,\n scale: scale,\n displacement: options.displacement !== undefined ? options.displacement : [0, 0],\n rotateWithView: rotateWithView,\n }) || this;\n /**\n * @private\n * @type {Array}\n */\n _this.anchor_ = options.anchor !== undefined ? options.anchor : [0.5, 0.5];\n /**\n * @private\n * @type {Array}\n */\n _this.normalizedAnchor_ = null;\n /**\n * @private\n * @type {import(\"./IconOrigin.js\").default}\n */\n _this.anchorOrigin_ =\n options.anchorOrigin !== undefined\n ? options.anchorOrigin\n : IconOrigin.TOP_LEFT;\n /**\n * @private\n * @type {import(\"./IconAnchorUnits.js\").default}\n */\n _this.anchorXUnits_ =\n options.anchorXUnits !== undefined\n ? options.anchorXUnits\n : IconAnchorUnits.FRACTION;\n /**\n * @private\n * @type {import(\"./IconAnchorUnits.js\").default}\n */\n _this.anchorYUnits_ =\n options.anchorYUnits !== undefined\n ? options.anchorYUnits\n : IconAnchorUnits.FRACTION;\n /**\n * @private\n * @type {?string}\n */\n _this.crossOrigin_ =\n options.crossOrigin !== undefined ? options.crossOrigin : null;\n /**\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n var image = options.img !== undefined ? options.img : null;\n /**\n * @type {import(\"../size.js\").Size}\n */\n var imgSize = options.imgSize !== undefined ? options.imgSize : null;\n /**\n * @type {string|undefined}\n */\n var src = options.src;\n assert(!(src !== undefined && image), 4); // `image` and `src` cannot be provided at the same time\n assert(!image || (image && imgSize), 5); // `imgSize` must be set when `image` is provided\n if ((src === undefined || src.length === 0) && image) {\n src = /** @type {HTMLImageElement} */ (image).src || getUid(image);\n }\n assert(src !== undefined && src.length > 0, 6); // A defined and non-empty `src` or `image` must be provided\n /**\n * @type {import(\"../ImageState.js\").default}\n */\n var imageState = options.src !== undefined ? ImageState.IDLE : ImageState.LOADED;\n /**\n * @private\n * @type {import(\"../color.js\").Color}\n */\n _this.color_ = options.color !== undefined ? asArray(options.color) : null;\n /**\n * @private\n * @type {import(\"./IconImage.js\").default}\n */\n _this.iconImage_ = getIconImage(image, \n /** @type {string} */ (src), imgSize, _this.crossOrigin_, imageState, _this.color_);\n /**\n * @private\n * @type {Array}\n */\n _this.offset_ = options.offset !== undefined ? options.offset : [0, 0];\n /**\n * @private\n * @type {import(\"./IconOrigin.js\").default}\n */\n _this.offsetOrigin_ =\n options.offsetOrigin !== undefined\n ? options.offsetOrigin\n : IconOrigin.TOP_LEFT;\n /**\n * @private\n * @type {Array}\n */\n _this.origin_ = null;\n /**\n * @private\n * @type {import(\"../size.js\").Size}\n */\n _this.size_ = options.size !== undefined ? options.size : null;\n return _this;\n }\n /**\n * Clones the style. The underlying Image/HTMLCanvasElement is not cloned.\n * @return {Icon} The cloned style.\n * @api\n */\n Icon.prototype.clone = function () {\n var scale = this.getScale();\n return new Icon({\n anchor: this.anchor_.slice(),\n anchorOrigin: this.anchorOrigin_,\n anchorXUnits: this.anchorXUnits_,\n anchorYUnits: this.anchorYUnits_,\n crossOrigin: this.crossOrigin_,\n color: this.color_ && this.color_.slice\n ? this.color_.slice()\n : this.color_ || undefined,\n src: this.getSrc(),\n offset: this.offset_.slice(),\n offsetOrigin: this.offsetOrigin_,\n size: this.size_ !== null ? this.size_.slice() : undefined,\n opacity: this.getOpacity(),\n scale: Array.isArray(scale) ? scale.slice() : scale,\n rotation: this.getRotation(),\n rotateWithView: this.getRotateWithView(),\n });\n };\n /**\n * Get the anchor point in pixels. The anchor determines the center point for the\n * symbolizer.\n * @return {Array} Anchor.\n * @api\n */\n Icon.prototype.getAnchor = function () {\n var anchor = this.normalizedAnchor_;\n if (!anchor) {\n anchor = this.anchor_;\n var size = this.getSize();\n if (this.anchorXUnits_ == IconAnchorUnits.FRACTION ||\n this.anchorYUnits_ == IconAnchorUnits.FRACTION) {\n if (!size) {\n return null;\n }\n anchor = this.anchor_.slice();\n if (this.anchorXUnits_ == IconAnchorUnits.FRACTION) {\n anchor[0] *= size[0];\n }\n if (this.anchorYUnits_ == IconAnchorUnits.FRACTION) {\n anchor[1] *= size[1];\n }\n }\n if (this.anchorOrigin_ != IconOrigin.TOP_LEFT) {\n if (!size) {\n return null;\n }\n if (anchor === this.anchor_) {\n anchor = this.anchor_.slice();\n }\n if (this.anchorOrigin_ == IconOrigin.TOP_RIGHT ||\n this.anchorOrigin_ == IconOrigin.BOTTOM_RIGHT) {\n anchor[0] = -anchor[0] + size[0];\n }\n if (this.anchorOrigin_ == IconOrigin.BOTTOM_LEFT ||\n this.anchorOrigin_ == IconOrigin.BOTTOM_RIGHT) {\n anchor[1] = -anchor[1] + size[1];\n }\n }\n this.normalizedAnchor_ = anchor;\n }\n var displacement = this.getDisplacement();\n return [anchor[0] - displacement[0], anchor[1] + displacement[1]];\n };\n /**\n * Set the anchor point. The anchor determines the center point for the\n * symbolizer.\n *\n * @param {Array} anchor Anchor.\n * @api\n */\n Icon.prototype.setAnchor = function (anchor) {\n this.anchor_ = anchor;\n this.normalizedAnchor_ = null;\n };\n /**\n * Get the icon color.\n * @return {import(\"../color.js\").Color} Color.\n * @api\n */\n Icon.prototype.getColor = function () {\n return this.color_;\n };\n /**\n * Get the image icon.\n * @param {number} pixelRatio Pixel ratio.\n * @return {HTMLImageElement|HTMLCanvasElement} Image or Canvas element.\n * @api\n */\n Icon.prototype.getImage = function (pixelRatio) {\n return this.iconImage_.getImage(pixelRatio);\n };\n /**\n * Get the pixel ratio.\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} The pixel ratio of the image.\n * @api\n */\n Icon.prototype.getPixelRatio = function (pixelRatio) {\n return this.iconImage_.getPixelRatio(pixelRatio);\n };\n /**\n * @return {import(\"../size.js\").Size} Image size.\n */\n Icon.prototype.getImageSize = function () {\n return this.iconImage_.getSize();\n };\n /**\n * @return {import(\"../ImageState.js\").default} Image state.\n */\n Icon.prototype.getImageState = function () {\n return this.iconImage_.getImageState();\n };\n /**\n * @return {HTMLImageElement|HTMLCanvasElement} Image element.\n */\n Icon.prototype.getHitDetectionImage = function () {\n return this.iconImage_.getHitDetectionImage();\n };\n /**\n * Get the origin of the symbolizer.\n * @return {Array} Origin.\n * @api\n */\n Icon.prototype.getOrigin = function () {\n if (this.origin_) {\n return this.origin_;\n }\n var offset = this.offset_;\n if (this.offsetOrigin_ != IconOrigin.TOP_LEFT) {\n var size = this.getSize();\n var iconImageSize = this.iconImage_.getSize();\n if (!size || !iconImageSize) {\n return null;\n }\n offset = offset.slice();\n if (this.offsetOrigin_ == IconOrigin.TOP_RIGHT ||\n this.offsetOrigin_ == IconOrigin.BOTTOM_RIGHT) {\n offset[0] = iconImageSize[0] - size[0] - offset[0];\n }\n if (this.offsetOrigin_ == IconOrigin.BOTTOM_LEFT ||\n this.offsetOrigin_ == IconOrigin.BOTTOM_RIGHT) {\n offset[1] = iconImageSize[1] - size[1] - offset[1];\n }\n }\n this.origin_ = offset;\n return this.origin_;\n };\n /**\n * Get the image URL.\n * @return {string|undefined} Image src.\n * @api\n */\n Icon.prototype.getSrc = function () {\n return this.iconImage_.getSrc();\n };\n /**\n * Get the size of the icon (in pixels).\n * @return {import(\"../size.js\").Size} Image size.\n * @api\n */\n Icon.prototype.getSize = function () {\n return !this.size_ ? this.iconImage_.getSize() : this.size_;\n };\n /**\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n */\n Icon.prototype.listenImageChange = function (listener) {\n this.iconImage_.addEventListener(EventType.CHANGE, listener);\n };\n /**\n * Load not yet loaded URI.\n * When rendering a feature with an icon style, the vector renderer will\n * automatically call this method. However, you might want to call this\n * method yourself for preloading or other purposes.\n * @api\n */\n Icon.prototype.load = function () {\n this.iconImage_.load();\n };\n /**\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n */\n Icon.prototype.unlistenImageChange = function (listener) {\n this.iconImage_.removeEventListener(EventType.CHANGE, listener);\n };\n return Icon;\n}(ImageStyle));\nexport default Icon;\n//# sourceMappingURL=Icon.js.map","/**\n * @module ol/render/canvas/hitdetect\n */\nimport CanvasImmediateRenderer from './Immediate.js';\nimport GeometryType from '../../geom/GeometryType.js';\nimport IconAnchorUnits from '../../style/IconAnchorUnits.js';\nimport { Icon } from '../../style.js';\nimport { clamp } from '../../math.js';\nimport { createCanvasContext2D } from '../../dom.js';\nimport { intersects } from '../../extent.js';\nimport { numberSafeCompareFunction } from '../../array.js';\nexport var HIT_DETECT_RESOLUTION = 0.5;\n/**\n * @param {import(\"../../size.js\").Size} size Canvas size in css pixels.\n * @param {Array} transforms Transforms\n * for rendering features to all worlds of the viewport, from coordinates to css\n * pixels.\n * @param {Array} features\n * Features to consider for hit detection.\n * @param {import(\"../../style/Style.js\").StyleFunction|undefined} styleFunction\n * Layer style function.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @return {ImageData} Hit detection image data.\n */\nexport function createHitDetectionImageData(size, transforms, features, styleFunction, extent, resolution, rotation) {\n var width = size[0] * HIT_DETECT_RESOLUTION;\n var height = size[1] * HIT_DETECT_RESOLUTION;\n var context = createCanvasContext2D(width, height);\n context.imageSmoothingEnabled = false;\n var canvas = context.canvas;\n var renderer = new CanvasImmediateRenderer(context, HIT_DETECT_RESOLUTION, extent, null, rotation);\n var featureCount = features.length;\n // Stretch hit detection index to use the whole available color range\n var indexFactor = Math.floor((256 * 256 * 256 - 1) / featureCount);\n var featuresByZIndex = {};\n for (var i = 1; i <= featureCount; ++i) {\n var feature = features[i - 1];\n var featureStyleFunction = feature.getStyleFunction() || styleFunction;\n if (!styleFunction) {\n continue;\n }\n var styles = featureStyleFunction(feature, resolution);\n if (!styles) {\n continue;\n }\n if (!Array.isArray(styles)) {\n styles = [styles];\n }\n var index = i * indexFactor;\n var color = '#' + ('000000' + index.toString(16)).slice(-6);\n for (var j = 0, jj = styles.length; j < jj; ++j) {\n var originalStyle = styles[j];\n var geometry = originalStyle.getGeometryFunction()(feature);\n if (!geometry || !intersects(extent, geometry.getExtent())) {\n continue;\n }\n var style = originalStyle.clone();\n var fill = style.getFill();\n if (fill) {\n fill.setColor(color);\n }\n var stroke = style.getStroke();\n if (stroke) {\n stroke.setColor(color);\n stroke.setLineDash(null);\n }\n style.setText(undefined);\n var image = originalStyle.getImage();\n if (image && image.getOpacity() !== 0) {\n var imgSize = image.getImageSize();\n if (!imgSize) {\n continue;\n }\n var imgContext = createCanvasContext2D(imgSize[0], imgSize[1], undefined, { alpha: false });\n var img = imgContext.canvas;\n imgContext.fillStyle = color;\n imgContext.fillRect(0, 0, img.width, img.height);\n style.setImage(new Icon({\n img: img,\n imgSize: imgSize,\n anchor: image.getAnchor(),\n anchorXUnits: IconAnchorUnits.PIXELS,\n anchorYUnits: IconAnchorUnits.PIXELS,\n offset: image.getOrigin(),\n opacity: 1,\n size: image.getSize(),\n scale: image.getScale(),\n rotation: image.getRotation(),\n rotateWithView: image.getRotateWithView(),\n }));\n }\n var zIndex = style.getZIndex() || 0;\n var byGeometryType = featuresByZIndex[zIndex];\n if (!byGeometryType) {\n byGeometryType = {};\n featuresByZIndex[zIndex] = byGeometryType;\n byGeometryType[GeometryType.POLYGON] = [];\n byGeometryType[GeometryType.CIRCLE] = [];\n byGeometryType[GeometryType.LINE_STRING] = [];\n byGeometryType[GeometryType.POINT] = [];\n }\n byGeometryType[geometry.getType().replace('Multi', '')].push(geometry, style);\n }\n }\n var zIndexKeys = Object.keys(featuresByZIndex)\n .map(Number)\n .sort(numberSafeCompareFunction);\n for (var i = 0, ii = zIndexKeys.length; i < ii; ++i) {\n var byGeometryType = featuresByZIndex[zIndexKeys[i]];\n for (var type in byGeometryType) {\n var geomAndStyle = byGeometryType[type];\n for (var j = 0, jj = geomAndStyle.length; j < jj; j += 2) {\n renderer.setStyle(geomAndStyle[j + 1]);\n for (var k = 0, kk = transforms.length; k < kk; ++k) {\n renderer.setTransform(transforms[k]);\n renderer.drawGeometry(geomAndStyle[j]);\n }\n }\n }\n }\n return context.getImageData(0, 0, canvas.width, canvas.height);\n}\n/**\n * @param {import(\"../../pixel\").Pixel} pixel Pixel coordinate on the hit\n * detection canvas in css pixels.\n * @param {Array} features Features. Has to\n * match the `features` array that was passed to `createHitDetectionImageData()`.\n * @param {ImageData} imageData Hit detection image data generated by\n * `createHitDetectionImageData()`.\n * @return {Array} features Features.\n */\nexport function hitDetect(pixel, features, imageData) {\n var resultFeatures = [];\n if (imageData) {\n var x = Math.floor(Math.round(pixel[0]) * HIT_DETECT_RESOLUTION);\n var y = Math.floor(Math.round(pixel[1]) * HIT_DETECT_RESOLUTION);\n // The pixel coordinate is clamped down to the hit-detect canvas' size to account\n // for browsers returning coordinates slightly larger than the actual canvas size\n // due to a non-integer pixel ratio.\n var index = (clamp(x, 0, imageData.width - 1) +\n clamp(y, 0, imageData.height - 1) * imageData.width) *\n 4;\n var r = imageData.data[index];\n var g = imageData.data[index + 1];\n var b = imageData.data[index + 2];\n var i = b + 256 * (g + 256 * r);\n var indexFactor = Math.floor((256 * 256 * 256 - 1) / features.length);\n if (i && i % indexFactor === 0) {\n resultFeatures.push(features[i / indexFactor - 1]);\n }\n }\n return resultFeatures;\n}\n//# sourceMappingURL=hitdetect.js.map","/**\n * @module ol/renderer/vector\n */\nimport BuilderType from '../render/canvas/BuilderType.js';\nimport GeometryType from '../geom/GeometryType.js';\nimport ImageState from '../ImageState.js';\nimport { getUid } from '../util.js';\n/**\n * Feature callback. The callback will be called with three arguments. The first\n * argument is one {@link module:ol/Feature feature} or {@link module:ol/render/Feature render feature}\n * at the pixel, the second is the {@link module:ol/layer/Layer layer} of the feature and will be null for\n * unmanaged layers. The third is the {@link module:ol/geom/SimpleGeometry} of the feature. For features\n * with a GeometryCollection geometry, it will be the first detected geometry from the collection.\n * @template T\n * @typedef {function(import(\"../Feature.js\").FeatureLike, import(\"../layer/Layer.js\").default, import(\"../geom/SimpleGeometry.js\").default): T} FeatureCallback\n */\n/**\n * Tolerance for geometry simplification in device pixels.\n * @type {number}\n */\nvar SIMPLIFY_TOLERANCE = 0.5;\n/**\n * @const\n * @type {Object}\n */\nvar GEOMETRY_RENDERERS = {\n 'Point': renderPointGeometry,\n 'LineString': renderLineStringGeometry,\n 'Polygon': renderPolygonGeometry,\n 'MultiPoint': renderMultiPointGeometry,\n 'MultiLineString': renderMultiLineStringGeometry,\n 'MultiPolygon': renderMultiPolygonGeometry,\n 'GeometryCollection': renderGeometryCollectionGeometry,\n 'Circle': renderCircleGeometry,\n};\n/**\n * @param {import(\"../Feature.js\").FeatureLike} feature1 Feature 1.\n * @param {import(\"../Feature.js\").FeatureLike} feature2 Feature 2.\n * @return {number} Order.\n */\nexport function defaultOrder(feature1, feature2) {\n return parseInt(getUid(feature1), 10) - parseInt(getUid(feature2), 10);\n}\n/**\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} Squared pixel tolerance.\n */\nexport function getSquaredTolerance(resolution, pixelRatio) {\n var tolerance = getTolerance(resolution, pixelRatio);\n return tolerance * tolerance;\n}\n/**\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} Pixel tolerance.\n */\nexport function getTolerance(resolution, pixelRatio) {\n return (SIMPLIFY_TOLERANCE * resolution) / pixelRatio;\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Builder group.\n * @param {import(\"../geom/Circle.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} [opt_declutterBuilderGroup] Builder for decluttering.\n */\nfunction renderCircleGeometry(builderGroup, geometry, style, feature, opt_declutterBuilderGroup) {\n var fillStyle = style.getFill();\n var strokeStyle = style.getStroke();\n if (fillStyle || strokeStyle) {\n var circleReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.CIRCLE);\n circleReplay.setFillStrokeStyle(fillStyle, strokeStyle);\n circleReplay.drawCircle(geometry, feature);\n }\n var textStyle = style.getText();\n if (textStyle && textStyle.getText()) {\n var textReplay = (opt_declutterBuilderGroup || builderGroup).getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle);\n textReplay.drawText(geometry, feature);\n }\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} replayGroup Replay group.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Transform from user to view projection.\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} [opt_declutterBuilderGroup] Builder for decluttering.\n * @return {boolean} `true` if style is loading.\n */\nexport function renderFeature(replayGroup, feature, style, squaredTolerance, listener, opt_transform, opt_declutterBuilderGroup) {\n var loading = false;\n var imageStyle = style.getImage();\n if (imageStyle) {\n var imageState = imageStyle.getImageState();\n if (imageState == ImageState.LOADED || imageState == ImageState.ERROR) {\n imageStyle.unlistenImageChange(listener);\n }\n else {\n if (imageState == ImageState.IDLE) {\n imageStyle.load();\n }\n imageState = imageStyle.getImageState();\n imageStyle.listenImageChange(listener);\n loading = true;\n }\n }\n renderFeatureInternal(replayGroup, feature, style, squaredTolerance, opt_transform, opt_declutterBuilderGroup);\n return loading;\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} replayGroup Replay group.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} [opt_declutterBuilderGroup] Builder for decluttering.\n */\nfunction renderFeatureInternal(replayGroup, feature, style, squaredTolerance, opt_transform, opt_declutterBuilderGroup) {\n var geometry = style.getGeometryFunction()(feature);\n if (!geometry) {\n return;\n }\n var simplifiedGeometry = geometry.simplifyTransformed(squaredTolerance, opt_transform);\n var renderer = style.getRenderer();\n if (renderer) {\n renderGeometry(replayGroup, simplifiedGeometry, style, feature);\n }\n else {\n var geometryRenderer = GEOMETRY_RENDERERS[simplifiedGeometry.getType()];\n geometryRenderer(replayGroup, simplifiedGeometry, style, feature, opt_declutterBuilderGroup);\n }\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} replayGroup Replay group.\n * @param {import(\"../geom/Geometry.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\nfunction renderGeometry(replayGroup, geometry, style, feature) {\n if (geometry.getType() == GeometryType.GEOMETRY_COLLECTION) {\n var geometries = \n /** @type {import(\"../geom/GeometryCollection.js\").default} */ (geometry).getGeometries();\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n renderGeometry(replayGroup, geometries[i], style, feature);\n }\n return;\n }\n var replay = replayGroup.getBuilder(style.getZIndex(), BuilderType.DEFAULT);\n replay.drawCustom(\n /** @type {import(\"../geom/SimpleGeometry.js\").default} */ (geometry), feature, style.getRenderer(), style.getHitDetectionRenderer());\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} replayGroup Replay group.\n * @param {import(\"../geom/GeometryCollection.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} [opt_declutterBuilderGroup] Builder for decluttering.\n */\nfunction renderGeometryCollectionGeometry(replayGroup, geometry, style, feature, opt_declutterBuilderGroup) {\n var geometries = geometry.getGeometriesArray();\n var i, ii;\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n var geometryRenderer = GEOMETRY_RENDERERS[geometries[i].getType()];\n geometryRenderer(replayGroup, geometries[i], style, feature, opt_declutterBuilderGroup);\n }\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/LineString.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} [opt_declutterBuilderGroup] Builder for decluttering.\n */\nfunction renderLineStringGeometry(builderGroup, geometry, style, feature, opt_declutterBuilderGroup) {\n var strokeStyle = style.getStroke();\n if (strokeStyle) {\n var lineStringReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.LINE_STRING);\n lineStringReplay.setFillStrokeStyle(null, strokeStyle);\n lineStringReplay.drawLineString(geometry, feature);\n }\n var textStyle = style.getText();\n if (textStyle && textStyle.getText()) {\n var textReplay = (opt_declutterBuilderGroup || builderGroup).getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle);\n textReplay.drawText(geometry, feature);\n }\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/MultiLineString.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} [opt_declutterBuilderGroup] Builder for decluttering.\n */\nfunction renderMultiLineStringGeometry(builderGroup, geometry, style, feature, opt_declutterBuilderGroup) {\n var strokeStyle = style.getStroke();\n if (strokeStyle) {\n var lineStringReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.LINE_STRING);\n lineStringReplay.setFillStrokeStyle(null, strokeStyle);\n lineStringReplay.drawMultiLineString(geometry, feature);\n }\n var textStyle = style.getText();\n if (textStyle && textStyle.getText()) {\n var textReplay = (opt_declutterBuilderGroup || builderGroup).getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle);\n textReplay.drawText(geometry, feature);\n }\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/MultiPolygon.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} [opt_declutterBuilderGroup] Builder for decluttering.\n */\nfunction renderMultiPolygonGeometry(builderGroup, geometry, style, feature, opt_declutterBuilderGroup) {\n var fillStyle = style.getFill();\n var strokeStyle = style.getStroke();\n if (strokeStyle || fillStyle) {\n var polygonReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.POLYGON);\n polygonReplay.setFillStrokeStyle(fillStyle, strokeStyle);\n polygonReplay.drawMultiPolygon(geometry, feature);\n }\n var textStyle = style.getText();\n if (textStyle && textStyle.getText()) {\n var textReplay = (opt_declutterBuilderGroup || builderGroup).getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle);\n textReplay.drawText(geometry, feature);\n }\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/Point.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} [opt_declutterBuilderGroup] Builder for decluttering.\n */\nfunction renderPointGeometry(builderGroup, geometry, style, feature, opt_declutterBuilderGroup) {\n var imageStyle = style.getImage();\n var textStyle = style.getText();\n /** @type {import(\"../render/canvas.js\").DeclutterImageWithText} */\n var declutterImageWithText;\n if (opt_declutterBuilderGroup) {\n builderGroup = opt_declutterBuilderGroup;\n declutterImageWithText =\n imageStyle && textStyle && textStyle.getText() ? {} : undefined;\n }\n if (imageStyle) {\n if (imageStyle.getImageState() != ImageState.LOADED) {\n return;\n }\n var imageReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.IMAGE);\n imageReplay.setImageStyle(imageStyle, declutterImageWithText);\n imageReplay.drawPoint(geometry, feature);\n }\n if (textStyle && textStyle.getText()) {\n var textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle, declutterImageWithText);\n textReplay.drawText(geometry, feature);\n }\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/MultiPoint.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} [opt_declutterBuilderGroup] Builder for decluttering.\n */\nfunction renderMultiPointGeometry(builderGroup, geometry, style, feature, opt_declutterBuilderGroup) {\n var imageStyle = style.getImage();\n var textStyle = style.getText();\n /** @type {import(\"../render/canvas.js\").DeclutterImageWithText} */\n var declutterImageWithText;\n if (opt_declutterBuilderGroup) {\n builderGroup = opt_declutterBuilderGroup;\n declutterImageWithText =\n imageStyle && textStyle && textStyle.getText() ? {} : undefined;\n }\n if (imageStyle) {\n if (imageStyle.getImageState() != ImageState.LOADED) {\n return;\n }\n var imageReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.IMAGE);\n imageReplay.setImageStyle(imageStyle, declutterImageWithText);\n imageReplay.drawMultiPoint(geometry, feature);\n }\n if (textStyle && textStyle.getText()) {\n var textReplay = (opt_declutterBuilderGroup || builderGroup).getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle, declutterImageWithText);\n textReplay.drawText(geometry, feature);\n }\n}\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/Polygon.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} [opt_declutterBuilderGroup] Builder for decluttering.\n */\nfunction renderPolygonGeometry(builderGroup, geometry, style, feature, opt_declutterBuilderGroup) {\n var fillStyle = style.getFill();\n var strokeStyle = style.getStroke();\n if (fillStyle || strokeStyle) {\n var polygonReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.POLYGON);\n polygonReplay.setFillStrokeStyle(fillStyle, strokeStyle);\n polygonReplay.drawPolygon(geometry, feature);\n }\n var textStyle = style.getText();\n if (textStyle && textStyle.getText()) {\n var textReplay = (opt_declutterBuilderGroup || builderGroup).getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle);\n textReplay.drawText(geometry, feature);\n }\n}\n//# sourceMappingURL=vector.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/renderer/canvas/VectorLayer\n */\nimport CanvasBuilderGroup from '../../render/canvas/BuilderGroup.js';\nimport CanvasLayerRenderer from './Layer.js';\nimport ExecutorGroup from '../../render/canvas/ExecutorGroup.js';\nimport ViewHint from '../../ViewHint.js';\nimport { HIT_DETECT_RESOLUTION, createHitDetectionImageData, hitDetect, } from '../../render/canvas/hitdetect.js';\nimport { apply, makeInverse, makeScale, toString as transformToString, } from '../../transform.js';\nimport { buffer, containsExtent, createEmpty, getWidth, intersects as intersectsExtent, wrapX as wrapExtentX, } from '../../extent.js';\nimport { cssOpacity } from '../../css.js';\nimport { defaultOrder as defaultRenderOrder, getTolerance as getRenderTolerance, getSquaredTolerance as getSquaredRenderTolerance, renderFeature, } from '../vector.js';\nimport { equals } from '../../array.js';\nimport { fromUserExtent, getTransformFromProjections, getUserProjection, toUserExtent, toUserResolution, } from '../../proj.js';\nimport { getUid } from '../../util.js';\nimport { wrapX as wrapCoordinateX } from '../../coordinate.js';\n/**\n * @classdesc\n * Canvas renderer for vector layers.\n * @api\n */\nvar CanvasVectorLayerRenderer = /** @class */ (function (_super) {\n __extends(CanvasVectorLayerRenderer, _super);\n /**\n * @param {import(\"../../layer/BaseVector.js\").default} vectorLayer Vector layer.\n */\n function CanvasVectorLayerRenderer(vectorLayer) {\n var _this = _super.call(this, vectorLayer) || this;\n /** @private */\n _this.boundHandleStyleImageChange_ = _this.handleStyleImageChange_.bind(_this);\n /**\n * @type {boolean}\n */\n _this.animatingOrInteracting_;\n /**\n * @private\n * @type {boolean}\n */\n _this.dirty_ = false;\n /**\n * @type {ImageData}\n */\n _this.hitDetectionImageData_ = null;\n /**\n * @type {Array}\n */\n _this.renderedFeatures_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.renderedRevision_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.renderedResolution_ = NaN;\n /**\n * @private\n * @type {import(\"../../extent.js\").Extent}\n */\n _this.renderedExtent_ = createEmpty();\n /**\n * @private\n * @type {import(\"../../extent.js\").Extent}\n */\n _this.wrappedRenderedExtent_ = createEmpty();\n /**\n * @private\n * @type {number}\n */\n _this.renderedRotation_;\n /**\n * @private\n * @type {import(\"../../coordinate\").Coordinate}\n */\n _this.renderedCenter_ = null;\n /**\n * @private\n * @type {import(\"../../proj/Projection\").default}\n */\n _this.renderedProjection_ = null;\n /**\n * @private\n * @type {function(import(\"../../Feature.js\").default, import(\"../../Feature.js\").default): number|null}\n */\n _this.renderedRenderOrder_ = null;\n /**\n * @private\n * @type {import(\"../../render/canvas/ExecutorGroup\").default}\n */\n _this.replayGroup_ = null;\n /**\n * A new replay group had to be created by `prepareFrame()`\n * @type {boolean}\n */\n _this.replayGroupChanged = true;\n /**\n * @type {import(\"../../render/canvas/ExecutorGroup\").default}\n */\n _this.declutterExecutorGroup = null;\n /**\n * Clipping to be performed by `renderFrame()`\n * @type {boolean}\n */\n _this.clipping = true;\n return _this;\n }\n /**\n * @param {ExecutorGroup} executorGroup Executor group.\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n * @param {import(\"rbush\").default} [opt_declutterTree] Declutter tree.\n */\n CanvasVectorLayerRenderer.prototype.renderWorlds = function (executorGroup, frameState, opt_declutterTree) {\n var extent = frameState.extent;\n var viewState = frameState.viewState;\n var center = viewState.center;\n var resolution = viewState.resolution;\n var projection = viewState.projection;\n var rotation = viewState.rotation;\n var projectionExtent = projection.getExtent();\n var vectorSource = this.getLayer().getSource();\n var pixelRatio = frameState.pixelRatio;\n var viewHints = frameState.viewHints;\n var snapToPixel = !(viewHints[ViewHint.ANIMATING] || viewHints[ViewHint.INTERACTING]);\n var context = this.context;\n var width = Math.round(frameState.size[0] * pixelRatio);\n var height = Math.round(frameState.size[1] * pixelRatio);\n var multiWorld = vectorSource.getWrapX() && projection.canWrapX();\n var worldWidth = multiWorld ? getWidth(projectionExtent) : null;\n var endWorld = multiWorld\n ? Math.ceil((extent[2] - projectionExtent[2]) / worldWidth) + 1\n : 1;\n var world = multiWorld\n ? Math.floor((extent[0] - projectionExtent[0]) / worldWidth)\n : 0;\n do {\n var transform = this.getRenderTransform(center, resolution, rotation, pixelRatio, width, height, world * worldWidth);\n executorGroup.execute(context, 1, transform, rotation, snapToPixel, undefined, opt_declutterTree);\n } while (++world < endWorld);\n };\n /**\n * Render declutter items for this layer\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n */\n CanvasVectorLayerRenderer.prototype.renderDeclutter = function (frameState) {\n if (this.declutterExecutorGroup) {\n this.renderWorlds(this.declutterExecutorGroup, frameState, frameState.declutterTree);\n }\n };\n /**\n * Render the layer.\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n * @param {HTMLElement} target Target that may be used to render content to.\n * @return {HTMLElement} The rendered element.\n */\n CanvasVectorLayerRenderer.prototype.renderFrame = function (frameState, target) {\n var pixelRatio = frameState.pixelRatio;\n var layerState = frameState.layerStatesArray[frameState.layerIndex];\n // set forward and inverse pixel transforms\n makeScale(this.pixelTransform, 1 / pixelRatio, 1 / pixelRatio);\n makeInverse(this.inversePixelTransform, this.pixelTransform);\n var canvasTransform = transformToString(this.pixelTransform);\n this.useContainer(target, canvasTransform, layerState.opacity, this.getBackground(frameState));\n var context = this.context;\n var canvas = context.canvas;\n var replayGroup = this.replayGroup_;\n var declutterExecutorGroup = this.declutterExecutorGroup;\n if ((!replayGroup || replayGroup.isEmpty()) &&\n (!declutterExecutorGroup || declutterExecutorGroup.isEmpty())) {\n return null;\n }\n // resize and clear\n var width = Math.round(frameState.size[0] * pixelRatio);\n var height = Math.round(frameState.size[1] * pixelRatio);\n if (canvas.width != width || canvas.height != height) {\n canvas.width = width;\n canvas.height = height;\n if (canvas.style.transform !== canvasTransform) {\n canvas.style.transform = canvasTransform;\n }\n }\n else if (!this.containerReused) {\n context.clearRect(0, 0, width, height);\n }\n this.preRender(context, frameState);\n var viewState = frameState.viewState;\n var projection = viewState.projection;\n // clipped rendering if layer extent is set\n var clipped = false;\n var render = true;\n if (layerState.extent && this.clipping) {\n var layerExtent = fromUserExtent(layerState.extent, projection);\n render = intersectsExtent(layerExtent, frameState.extent);\n clipped = render && !containsExtent(layerExtent, frameState.extent);\n if (clipped) {\n this.clipUnrotated(context, frameState, layerExtent);\n }\n }\n if (render) {\n this.renderWorlds(replayGroup, frameState);\n }\n if (clipped) {\n context.restore();\n }\n this.postRender(context, frameState);\n var opacity = cssOpacity(layerState.opacity);\n var container = this.container;\n if (opacity !== container.style.opacity) {\n container.style.opacity = opacity;\n }\n if (this.renderedRotation_ !== viewState.rotation) {\n this.renderedRotation_ = viewState.rotation;\n this.hitDetectionImageData_ = null;\n }\n return this.container;\n };\n /**\n * Asynchronous layer level hit detection.\n * @param {import(\"../../pixel.js\").Pixel} pixel Pixel.\n * @return {Promise>} Promise that resolves with an array of features.\n */\n CanvasVectorLayerRenderer.prototype.getFeatures = function (pixel) {\n return new Promise(\n /**\n * @param {function(Array): void} resolve Resolver function.\n * @this {CanvasVectorLayerRenderer}\n */\n function (resolve) {\n if (!this.hitDetectionImageData_ && !this.animatingOrInteracting_) {\n var size = [this.context.canvas.width, this.context.canvas.height];\n apply(this.pixelTransform, size);\n var center = this.renderedCenter_;\n var resolution = this.renderedResolution_;\n var rotation = this.renderedRotation_;\n var projection = this.renderedProjection_;\n var extent = this.wrappedRenderedExtent_;\n var layer = this.getLayer();\n var transforms = [];\n var width = size[0] * HIT_DETECT_RESOLUTION;\n var height = size[1] * HIT_DETECT_RESOLUTION;\n transforms.push(this.getRenderTransform(center, resolution, rotation, HIT_DETECT_RESOLUTION, width, height, 0).slice());\n var source = layer.getSource();\n var projectionExtent = projection.getExtent();\n if (source.getWrapX() &&\n projection.canWrapX() &&\n !containsExtent(projectionExtent, extent)) {\n var startX = extent[0];\n var worldWidth = getWidth(projectionExtent);\n var world = 0;\n var offsetX = void 0;\n while (startX < projectionExtent[0]) {\n --world;\n offsetX = worldWidth * world;\n transforms.push(this.getRenderTransform(center, resolution, rotation, HIT_DETECT_RESOLUTION, width, height, offsetX).slice());\n startX += worldWidth;\n }\n world = 0;\n startX = extent[2];\n while (startX > projectionExtent[2]) {\n ++world;\n offsetX = worldWidth * world;\n transforms.push(this.getRenderTransform(center, resolution, rotation, HIT_DETECT_RESOLUTION, width, height, offsetX).slice());\n startX -= worldWidth;\n }\n }\n this.hitDetectionImageData_ = createHitDetectionImageData(size, transforms, this.renderedFeatures_, layer.getStyleFunction(), extent, resolution, rotation);\n }\n resolve(hitDetect(pixel, this.renderedFeatures_, this.hitDetectionImageData_));\n }.bind(this));\n };\n /**\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {import(\"../vector.js\").FeatureCallback} callback Feature callback.\n * @param {Array>} matches The hit detected matches with tolerance.\n * @return {T|undefined} Callback result.\n * @template T\n */\n CanvasVectorLayerRenderer.prototype.forEachFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, callback, matches) {\n var _this = this;\n if (!this.replayGroup_) {\n return undefined;\n }\n var resolution = frameState.viewState.resolution;\n var rotation = frameState.viewState.rotation;\n var layer = this.getLayer();\n /** @type {!Object|true>} */\n var features = {};\n /**\n * @param {import(\"../../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @param {number} distanceSq The squared distance to the click position\n * @return {T|undefined} Callback result.\n */\n var featureCallback = function (feature, geometry, distanceSq) {\n var key = getUid(feature);\n var match = features[key];\n if (!match) {\n if (distanceSq === 0) {\n features[key] = true;\n return callback(feature, layer, geometry);\n }\n matches.push((features[key] = {\n feature: feature,\n layer: layer,\n geometry: geometry,\n distanceSq: distanceSq,\n callback: callback,\n }));\n }\n else if (match !== true && distanceSq < match.distanceSq) {\n if (distanceSq === 0) {\n features[key] = true;\n matches.splice(matches.lastIndexOf(match), 1);\n return callback(feature, layer, geometry);\n }\n match.geometry = geometry;\n match.distanceSq = distanceSq;\n }\n return undefined;\n };\n var result;\n var executorGroups = [this.replayGroup_];\n if (this.declutterExecutorGroup) {\n executorGroups.push(this.declutterExecutorGroup);\n }\n executorGroups.some(function (executorGroup) {\n return (result = executorGroup.forEachFeatureAtCoordinate(coordinate, resolution, rotation, hitTolerance, featureCallback, executorGroup === _this.declutterExecutorGroup &&\n frameState.declutterTree\n ? frameState.declutterTree.all().map(function (item) { return item.value; })\n : null));\n });\n return result;\n };\n /**\n * Perform action necessary to get the layer rendered after new fonts have loaded\n */\n CanvasVectorLayerRenderer.prototype.handleFontsChanged = function () {\n var layer = this.getLayer();\n if (layer.getVisible() && this.replayGroup_) {\n layer.changed();\n }\n };\n /**\n * Handle changes in image style state.\n * @param {import(\"../../events/Event.js\").default} event Image style change event.\n * @private\n */\n CanvasVectorLayerRenderer.prototype.handleStyleImageChange_ = function (event) {\n this.renderIfReadyAndVisible();\n };\n /**\n * Determine whether render should be called.\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n * @return {boolean} Layer is ready to be rendered.\n */\n CanvasVectorLayerRenderer.prototype.prepareFrame = function (frameState) {\n var vectorLayer = this.getLayer();\n var vectorSource = vectorLayer.getSource();\n if (!vectorSource) {\n return false;\n }\n var animating = frameState.viewHints[ViewHint.ANIMATING];\n var interacting = frameState.viewHints[ViewHint.INTERACTING];\n var updateWhileAnimating = vectorLayer.getUpdateWhileAnimating();\n var updateWhileInteracting = vectorLayer.getUpdateWhileInteracting();\n if ((!this.dirty_ && !updateWhileAnimating && animating) ||\n (!updateWhileInteracting && interacting)) {\n this.animatingOrInteracting_ = true;\n return true;\n }\n this.animatingOrInteracting_ = false;\n var frameStateExtent = frameState.extent;\n var viewState = frameState.viewState;\n var projection = viewState.projection;\n var resolution = viewState.resolution;\n var pixelRatio = frameState.pixelRatio;\n var vectorLayerRevision = vectorLayer.getRevision();\n var vectorLayerRenderBuffer = vectorLayer.getRenderBuffer();\n var vectorLayerRenderOrder = vectorLayer.getRenderOrder();\n if (vectorLayerRenderOrder === undefined) {\n vectorLayerRenderOrder = defaultRenderOrder;\n }\n var center = viewState.center.slice();\n var extent = buffer(frameStateExtent, vectorLayerRenderBuffer * resolution);\n var renderedExtent = extent.slice();\n var loadExtents = [extent.slice()];\n var projectionExtent = projection.getExtent();\n if (vectorSource.getWrapX() &&\n projection.canWrapX() &&\n !containsExtent(projectionExtent, frameState.extent)) {\n // For the replay group, we need an extent that intersects the real world\n // (-180° to +180°). To support geometries in a coordinate range from -540°\n // to +540°, we add at least 1 world width on each side of the projection\n // extent. If the viewport is wider than the world, we need to add half of\n // the viewport width to make sure we cover the whole viewport.\n var worldWidth = getWidth(projectionExtent);\n var gutter = Math.max(getWidth(extent) / 2, worldWidth);\n extent[0] = projectionExtent[0] - gutter;\n extent[2] = projectionExtent[2] + gutter;\n wrapCoordinateX(center, projection);\n var loadExtent = wrapExtentX(loadExtents[0], projection);\n // If the extent crosses the date line, we load data for both edges of the worlds\n if (loadExtent[0] < projectionExtent[0] &&\n loadExtent[2] < projectionExtent[2]) {\n loadExtents.push([\n loadExtent[0] + worldWidth,\n loadExtent[1],\n loadExtent[2] + worldWidth,\n loadExtent[3],\n ]);\n }\n else if (loadExtent[0] > projectionExtent[0] &&\n loadExtent[2] > projectionExtent[2]) {\n loadExtents.push([\n loadExtent[0] - worldWidth,\n loadExtent[1],\n loadExtent[2] - worldWidth,\n loadExtent[3],\n ]);\n }\n }\n if (!this.dirty_ &&\n this.renderedResolution_ == resolution &&\n this.renderedRevision_ == vectorLayerRevision &&\n this.renderedRenderOrder_ == vectorLayerRenderOrder &&\n containsExtent(this.wrappedRenderedExtent_, extent)) {\n if (!equals(this.renderedExtent_, renderedExtent)) {\n this.hitDetectionImageData_ = null;\n this.renderedExtent_ = renderedExtent;\n }\n this.renderedCenter_ = center;\n this.replayGroupChanged = false;\n return true;\n }\n this.replayGroup_ = null;\n this.dirty_ = false;\n var replayGroup = new CanvasBuilderGroup(getRenderTolerance(resolution, pixelRatio), extent, resolution, pixelRatio);\n var declutterBuilderGroup;\n if (this.getLayer().getDeclutter()) {\n declutterBuilderGroup = new CanvasBuilderGroup(getRenderTolerance(resolution, pixelRatio), extent, resolution, pixelRatio);\n }\n var userProjection = getUserProjection();\n var userTransform;\n if (userProjection) {\n for (var i = 0, ii = loadExtents.length; i < ii; ++i) {\n var extent_1 = loadExtents[i];\n var userExtent_1 = toUserExtent(extent_1, projection);\n vectorSource.loadFeatures(userExtent_1, toUserResolution(resolution, projection), userProjection);\n }\n userTransform = getTransformFromProjections(userProjection, projection);\n }\n else {\n for (var i = 0, ii = loadExtents.length; i < ii; ++i) {\n vectorSource.loadFeatures(loadExtents[i], resolution, projection);\n }\n }\n var squaredTolerance = getSquaredRenderTolerance(resolution, pixelRatio);\n var render = \n /**\n * @param {import(\"../../Feature.js\").default} feature Feature.\n * @this {CanvasVectorLayerRenderer}\n */\n function (feature) {\n var styles;\n var styleFunction = feature.getStyleFunction() || vectorLayer.getStyleFunction();\n if (styleFunction) {\n styles = styleFunction(feature, resolution);\n }\n if (styles) {\n var dirty = this.renderFeature(feature, squaredTolerance, styles, replayGroup, userTransform, declutterBuilderGroup);\n this.dirty_ = this.dirty_ || dirty;\n }\n }.bind(this);\n var userExtent = toUserExtent(extent, projection);\n /** @type {Array} */\n var features = vectorSource.getFeaturesInExtent(userExtent);\n if (vectorLayerRenderOrder) {\n features.sort(vectorLayerRenderOrder);\n }\n for (var i = 0, ii = features.length; i < ii; ++i) {\n render(features[i]);\n }\n this.renderedFeatures_ = features;\n var replayGroupInstructions = replayGroup.finish();\n var executorGroup = new ExecutorGroup(extent, resolution, pixelRatio, vectorSource.getOverlaps(), replayGroupInstructions, vectorLayer.getRenderBuffer());\n if (declutterBuilderGroup) {\n this.declutterExecutorGroup = new ExecutorGroup(extent, resolution, pixelRatio, vectorSource.getOverlaps(), declutterBuilderGroup.finish(), vectorLayer.getRenderBuffer());\n }\n this.renderedResolution_ = resolution;\n this.renderedRevision_ = vectorLayerRevision;\n this.renderedRenderOrder_ = vectorLayerRenderOrder;\n this.renderedExtent_ = renderedExtent;\n this.wrappedRenderedExtent_ = extent;\n this.renderedCenter_ = center;\n this.renderedProjection_ = projection;\n this.replayGroup_ = executorGroup;\n this.hitDetectionImageData_ = null;\n this.replayGroupChanged = true;\n return true;\n };\n /**\n * @param {import(\"../../Feature.js\").default} feature Feature.\n * @param {number} squaredTolerance Squared render tolerance.\n * @param {import(\"../../style/Style.js\").default|Array} styles The style or array of styles.\n * @param {import(\"../../render/canvas/BuilderGroup.js\").default} builderGroup Builder group.\n * @param {import(\"../../proj.js\").TransformFunction} [opt_transform] Transform from user to view projection.\n * @param {import(\"../../render/canvas/BuilderGroup.js\").default} [opt_declutterBuilderGroup] Builder for decluttering.\n * @return {boolean} `true` if an image is loading.\n */\n CanvasVectorLayerRenderer.prototype.renderFeature = function (feature, squaredTolerance, styles, builderGroup, opt_transform, opt_declutterBuilderGroup) {\n if (!styles) {\n return false;\n }\n var loading = false;\n if (Array.isArray(styles)) {\n for (var i = 0, ii = styles.length; i < ii; ++i) {\n loading =\n renderFeature(builderGroup, feature, styles[i], squaredTolerance, this.boundHandleStyleImageChange_, opt_transform, opt_declutterBuilderGroup) || loading;\n }\n }\n else {\n loading = renderFeature(builderGroup, feature, styles, squaredTolerance, this.boundHandleStyleImageChange_, opt_transform, opt_declutterBuilderGroup);\n }\n return loading;\n };\n return CanvasVectorLayerRenderer;\n}(CanvasLayerRenderer));\nexport default CanvasVectorLayerRenderer;\n//# sourceMappingURL=VectorLayer.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/Vector\n */\nimport BaseVectorLayer from './BaseVector.js';\nimport CanvasVectorLayerRenderer from '../renderer/canvas/VectorLayer.js';\n/**\n * @classdesc\n * Vector data that is rendered client-side.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/Vector.js\").default} VectorSourceType\n * @extends {BaseVectorLayer}\n * @api\n */\nvar VectorLayer = /** @class */ (function (_super) {\n __extends(VectorLayer, _super);\n /**\n * @param {import(\"./BaseVector.js\").Options} [opt_options] Options.\n */\n function VectorLayer(opt_options) {\n return _super.call(this, opt_options) || this;\n }\n VectorLayer.prototype.createRenderer = function () {\n return new CanvasVectorLayerRenderer(this);\n };\n return VectorLayer;\n}(BaseVectorLayer));\nexport default VectorLayer;\n//# sourceMappingURL=Vector.js.map","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./SiteNodes.vue?vue&type=style&index=0&id=53047d6d&scoped=true&lang=css\"","/**\n * @module ol/layer/TileProperty\n */\n/**\n * @enum {string}\n */\nexport default {\n PRELOAD: 'preload',\n USE_INTERIM_TILES_ON_ERROR: 'useInterimTilesOnError',\n};\n//# sourceMappingURL=TileProperty.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/BaseTile\n */\nimport Layer from './Layer.js';\nimport TileProperty from './TileProperty.js';\nimport { assign } from '../obj.js';\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} BaseTileLayerOnSignature\n */\n/**\n * @template {import(\"../source/Tile.js\").default} TileSourceType\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 * @property {number} [preload=0] Preload. Load low-resolution tiles up to `preload` levels. `0`\n * means no preloading.\n * @property {TileSourceType} [source] Source for this layer.\n * @property {import(\"../PluggableMap.js\").default} [map] Sets the layer as overlay on a map. The map will not manage\n * this layer in its layers collection, and the layer will be rendered on top. This is useful for\n * temporary layers. The standard way to add a layer to a map and have it managed by the map is to\n * use {@link import(\"../PluggableMap.js\").default#addLayer map.addLayer()}.\n * @property {boolean} [useInterimTilesOnError=true] Use interim tiles on error.\n * @property {Object} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n/**\n * @classdesc\n * For layer sources that provide pre-rendered, tiled images in grids that are\n * organized by zoom levels for specific resolutions.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/Tile.js\").default} TileSourceType\n * @template {import(\"../renderer/Layer.js\").default} RendererType\n * @extends {Layer}\n * @api\n */\nvar BaseTileLayer = /** @class */ (function (_super) {\n __extends(BaseTileLayer, _super);\n /**\n * @param {Options} [opt_options] Tile layer options.\n */\n function BaseTileLayer(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var baseOptions = assign({}, options);\n delete baseOptions.preload;\n delete baseOptions.useInterimTilesOnError;\n _this = _super.call(this, baseOptions) || this;\n /***\n * @type {BaseTileLayerOnSignature}\n */\n _this.on;\n /***\n * @type {BaseTileLayerOnSignature}\n */\n _this.once;\n /***\n * @type {BaseTileLayerOnSignature}\n */\n _this.un;\n _this.setPreload(options.preload !== undefined ? options.preload : 0);\n _this.setUseInterimTilesOnError(options.useInterimTilesOnError !== undefined\n ? options.useInterimTilesOnError\n : true);\n return _this;\n }\n /**\n * Return the level as number to which we will preload tiles up to.\n * @return {number} The level to preload tiles up to.\n * @observable\n * @api\n */\n BaseTileLayer.prototype.getPreload = function () {\n return /** @type {number} */ (this.get(TileProperty.PRELOAD));\n };\n /**\n * Set the level as number to which we will preload tiles up to.\n * @param {number} preload The level to preload tiles up to.\n * @observable\n * @api\n */\n BaseTileLayer.prototype.setPreload = function (preload) {\n this.set(TileProperty.PRELOAD, preload);\n };\n /**\n * Whether we use interim tiles on error.\n * @return {boolean} Use interim tiles on error.\n * @observable\n * @api\n */\n BaseTileLayer.prototype.getUseInterimTilesOnError = function () {\n return /** @type {boolean} */ (this.get(TileProperty.USE_INTERIM_TILES_ON_ERROR));\n };\n /**\n * Set whether we use interim tiles on error.\n * @param {boolean} useInterimTilesOnError Use interim tiles on error.\n * @observable\n * @api\n */\n BaseTileLayer.prototype.setUseInterimTilesOnError = function (useInterimTilesOnError) {\n this.set(TileProperty.USE_INTERIM_TILES_ON_ERROR, useInterimTilesOnError);\n };\n return BaseTileLayer;\n}(Layer));\nexport default BaseTileLayer;\n//# sourceMappingURL=BaseTile.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/renderer/canvas/TileLayer\n */\nimport CanvasLayerRenderer from './Layer.js';\nimport TileRange from '../../TileRange.js';\nimport TileState from '../../TileState.js';\nimport { IMAGE_SMOOTHING_DISABLED, IMAGE_SMOOTHING_ENABLED } from './common.js';\nimport { apply as applyTransform, compose as composeTransform, makeInverse, } from '../../transform.js';\nimport { assign } from '../../obj.js';\nimport { createEmpty, equals, getIntersection, getTopLeft, } from '../../extent.js';\nimport { cssOpacity } from '../../css.js';\nimport { fromUserExtent } from '../../proj.js';\nimport { getUid } from '../../util.js';\nimport { numberSafeCompareFunction } from '../../array.js';\nimport { toString as toTransformString } from '../../transform.js';\n/**\n * @classdesc\n * Canvas renderer for tile layers.\n * @api\n */\nvar CanvasTileLayerRenderer = /** @class */ (function (_super) {\n __extends(CanvasTileLayerRenderer, _super);\n /**\n * @param {import(\"../../layer/Tile.js\").default|import(\"../../layer/VectorTile.js\").default} tileLayer Tile layer.\n */\n function CanvasTileLayerRenderer(tileLayer) {\n var _this = _super.call(this, tileLayer) || this;\n /**\n * Rendered extent has changed since the previous `renderFrame()` call\n * @type {boolean}\n */\n _this.extentChanged = true;\n /**\n * @private\n * @type {?import(\"../../extent.js\").Extent}\n */\n _this.renderedExtent_ = null;\n /**\n * @protected\n * @type {number}\n */\n _this.renderedPixelRatio;\n /**\n * @protected\n * @type {import(\"../../proj/Projection.js\").default}\n */\n _this.renderedProjection = null;\n /**\n * @protected\n * @type {number}\n */\n _this.renderedRevision;\n /**\n * @protected\n * @type {!Array}\n */\n _this.renderedTiles = [];\n /**\n * @private\n * @type {boolean}\n */\n _this.newTiles_ = false;\n /**\n * @protected\n * @type {import(\"../../extent.js\").Extent}\n */\n _this.tmpExtent = createEmpty();\n /**\n * @private\n * @type {import(\"../../TileRange.js\").default}\n */\n _this.tmpTileRange_ = new TileRange(0, 0, 0, 0);\n return _this;\n }\n /**\n * @protected\n * @param {import(\"../../Tile.js\").default} tile Tile.\n * @return {boolean} Tile is drawable.\n */\n CanvasTileLayerRenderer.prototype.isDrawableTile = function (tile) {\n var tileLayer = this.getLayer();\n var tileState = tile.getState();\n var useInterimTilesOnError = tileLayer.getUseInterimTilesOnError();\n return (tileState == TileState.LOADED ||\n tileState == TileState.EMPTY ||\n (tileState == TileState.ERROR && !useInterimTilesOnError));\n };\n /**\n * @param {number} z Tile coordinate z.\n * @param {number} x Tile coordinate x.\n * @param {number} y Tile coordinate y.\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n * @return {!import(\"../../Tile.js\").default} Tile.\n */\n CanvasTileLayerRenderer.prototype.getTile = function (z, x, y, frameState) {\n var pixelRatio = frameState.pixelRatio;\n var projection = frameState.viewState.projection;\n var tileLayer = this.getLayer();\n var tileSource = tileLayer.getSource();\n var tile = tileSource.getTile(z, x, y, pixelRatio, projection);\n if (tile.getState() == TileState.ERROR) {\n if (!tileLayer.getUseInterimTilesOnError()) {\n // When useInterimTilesOnError is false, we consider the error tile as loaded.\n tile.setState(TileState.LOADED);\n }\n else if (tileLayer.getPreload() > 0) {\n // Preloaded tiles for lower resolutions might have finished loading.\n this.newTiles_ = true;\n }\n }\n if (!this.isDrawableTile(tile)) {\n tile = tile.getInterimTile();\n }\n return tile;\n };\n /**\n * @param {Object>} tiles Lookup of loaded tiles by zoom level.\n * @param {number} zoom Zoom level.\n * @param {import(\"../../Tile.js\").default} tile Tile.\n * @return {boolean|void} If `false`, the tile will not be considered loaded.\n */\n CanvasTileLayerRenderer.prototype.loadedTileCallback = function (tiles, zoom, tile) {\n if (this.isDrawableTile(tile)) {\n return _super.prototype.loadedTileCallback.call(this, tiles, zoom, tile);\n }\n return false;\n };\n /**\n * Determine whether render should be called.\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n * @return {boolean} Layer is ready to be rendered.\n */\n CanvasTileLayerRenderer.prototype.prepareFrame = function (frameState) {\n return !!this.getLayer().getSource();\n };\n /**\n * Render the layer.\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n * @param {HTMLElement} target Target that may be used to render content to.\n * @return {HTMLElement} The rendered element.\n */\n CanvasTileLayerRenderer.prototype.renderFrame = function (frameState, target) {\n var layerState = frameState.layerStatesArray[frameState.layerIndex];\n var viewState = frameState.viewState;\n var projection = viewState.projection;\n var viewResolution = viewState.resolution;\n var viewCenter = viewState.center;\n var rotation = viewState.rotation;\n var pixelRatio = frameState.pixelRatio;\n var tileLayer = this.getLayer();\n var tileSource = tileLayer.getSource();\n var sourceRevision = tileSource.getRevision();\n var tileGrid = tileSource.getTileGridForProjection(projection);\n var z = tileGrid.getZForResolution(viewResolution, tileSource.zDirection);\n var tileResolution = tileGrid.getResolution(z);\n var extent = frameState.extent;\n var layerExtent = layerState.extent && fromUserExtent(layerState.extent, projection);\n if (layerExtent) {\n extent = getIntersection(extent, fromUserExtent(layerState.extent, projection));\n }\n var tilePixelRatio = tileSource.getTilePixelRatio(pixelRatio);\n // desired dimensions of the canvas in pixels\n var width = Math.round(frameState.size[0] * tilePixelRatio);\n var height = Math.round(frameState.size[1] * tilePixelRatio);\n if (rotation) {\n var size = Math.round(Math.sqrt(width * width + height * height));\n width = size;\n height = size;\n }\n var dx = (tileResolution * width) / 2 / tilePixelRatio;\n var dy = (tileResolution * height) / 2 / tilePixelRatio;\n var canvasExtent = [\n viewCenter[0] - dx,\n viewCenter[1] - dy,\n viewCenter[0] + dx,\n viewCenter[1] + dy,\n ];\n var tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z);\n /**\n * @type {Object>}\n */\n var tilesToDrawByZ = {};\n tilesToDrawByZ[z] = {};\n var findLoadedTiles = this.createLoadedTileFinder(tileSource, projection, tilesToDrawByZ);\n var tmpExtent = this.tmpExtent;\n var tmpTileRange = this.tmpTileRange_;\n this.newTiles_ = false;\n for (var x = tileRange.minX; x <= tileRange.maxX; ++x) {\n for (var y = tileRange.minY; y <= tileRange.maxY; ++y) {\n var tile = this.getTile(z, x, y, frameState);\n if (this.isDrawableTile(tile)) {\n var uid = getUid(this);\n if (tile.getState() == TileState.LOADED) {\n tilesToDrawByZ[z][tile.tileCoord.toString()] = tile;\n var inTransition = tile.inTransition(uid);\n if (!this.newTiles_ &&\n (inTransition || this.renderedTiles.indexOf(tile) === -1)) {\n this.newTiles_ = true;\n }\n }\n if (tile.getAlpha(uid, frameState.time) === 1) {\n // don't look for alt tiles if alpha is 1\n continue;\n }\n }\n var childTileRange = tileGrid.getTileCoordChildTileRange(tile.tileCoord, tmpTileRange, tmpExtent);\n var covered = false;\n if (childTileRange) {\n covered = findLoadedTiles(z + 1, childTileRange);\n }\n if (!covered) {\n tileGrid.forEachTileCoordParentTileRange(tile.tileCoord, findLoadedTiles, tmpTileRange, tmpExtent);\n }\n }\n }\n var canvasScale = tileResolution / viewResolution;\n // set forward and inverse pixel transforms\n composeTransform(this.pixelTransform, frameState.size[0] / 2, frameState.size[1] / 2, 1 / tilePixelRatio, 1 / tilePixelRatio, rotation, -width / 2, -height / 2);\n var canvasTransform = toTransformString(this.pixelTransform);\n this.useContainer(target, canvasTransform, layerState.opacity, this.getBackground(frameState));\n var context = this.context;\n var canvas = context.canvas;\n makeInverse(this.inversePixelTransform, this.pixelTransform);\n // set scale transform for calculating tile positions on the canvas\n composeTransform(this.tempTransform, width / 2, height / 2, canvasScale, canvasScale, 0, -width / 2, -height / 2);\n if (canvas.width != width || canvas.height != height) {\n canvas.width = width;\n canvas.height = height;\n }\n else if (!this.containerReused) {\n context.clearRect(0, 0, width, height);\n }\n if (layerExtent) {\n this.clipUnrotated(context, frameState, layerExtent);\n }\n if (!tileSource.getInterpolate()) {\n assign(context, IMAGE_SMOOTHING_DISABLED);\n }\n this.preRender(context, frameState);\n this.renderedTiles.length = 0;\n /** @type {Array} */\n var zs = Object.keys(tilesToDrawByZ).map(Number);\n zs.sort(numberSafeCompareFunction);\n var clips, clipZs, currentClip;\n if (layerState.opacity === 1 &&\n (!this.containerReused ||\n tileSource.getOpaque(frameState.viewState.projection))) {\n zs = zs.reverse();\n }\n else {\n clips = [];\n clipZs = [];\n }\n for (var i = zs.length - 1; i >= 0; --i) {\n var currentZ = zs[i];\n var currentTilePixelSize = tileSource.getTilePixelSize(currentZ, pixelRatio, projection);\n var currentResolution = tileGrid.getResolution(currentZ);\n var currentScale = currentResolution / tileResolution;\n var dx_1 = currentTilePixelSize[0] * currentScale * canvasScale;\n var dy_1 = currentTilePixelSize[1] * currentScale * canvasScale;\n var originTileCoord = tileGrid.getTileCoordForCoordAndZ(getTopLeft(canvasExtent), currentZ);\n var originTileExtent = tileGrid.getTileCoordExtent(originTileCoord);\n var origin_1 = applyTransform(this.tempTransform, [\n (tilePixelRatio * (originTileExtent[0] - canvasExtent[0])) /\n tileResolution,\n (tilePixelRatio * (canvasExtent[3] - originTileExtent[3])) /\n tileResolution,\n ]);\n var tileGutter = tilePixelRatio * tileSource.getGutterForProjection(projection);\n var tilesToDraw = tilesToDrawByZ[currentZ];\n for (var tileCoordKey in tilesToDraw) {\n var tile = /** @type {import(\"../../ImageTile.js\").default} */ (tilesToDraw[tileCoordKey]);\n var tileCoord = tile.tileCoord;\n // Calculate integer positions and sizes so that tiles align\n var xIndex = originTileCoord[1] - tileCoord[1];\n var nextX = Math.round(origin_1[0] - (xIndex - 1) * dx_1);\n var yIndex = originTileCoord[2] - tileCoord[2];\n var nextY = Math.round(origin_1[1] - (yIndex - 1) * dy_1);\n var x = Math.round(origin_1[0] - xIndex * dx_1);\n var y = Math.round(origin_1[1] - yIndex * dy_1);\n var w = nextX - x;\n var h = nextY - y;\n var transition = z === currentZ;\n var inTransition = transition && tile.getAlpha(getUid(this), frameState.time) !== 1;\n if (!inTransition) {\n if (clips) {\n // Clip mask for regions in this tile that already filled by a higher z tile\n context.save();\n currentClip = [x, y, x + w, y, x + w, y + h, x, y + h];\n for (var i_1 = 0, ii = clips.length; i_1 < ii; ++i_1) {\n if (z !== currentZ && currentZ < clipZs[i_1]) {\n var clip = clips[i_1];\n context.beginPath();\n // counter-clockwise (outer ring) for current tile\n context.moveTo(currentClip[0], currentClip[1]);\n context.lineTo(currentClip[2], currentClip[3]);\n context.lineTo(currentClip[4], currentClip[5]);\n context.lineTo(currentClip[6], currentClip[7]);\n // clockwise (inner ring) for higher z tile\n context.moveTo(clip[6], clip[7]);\n context.lineTo(clip[4], clip[5]);\n context.lineTo(clip[2], clip[3]);\n context.lineTo(clip[0], clip[1]);\n context.clip();\n }\n }\n clips.push(currentClip);\n clipZs.push(currentZ);\n }\n else {\n context.clearRect(x, y, w, h);\n }\n }\n this.drawTileImage(tile, frameState, x, y, w, h, tileGutter, transition);\n if (clips && !inTransition) {\n context.restore();\n this.renderedTiles.unshift(tile);\n }\n else {\n this.renderedTiles.push(tile);\n }\n this.updateUsedTiles(frameState.usedTiles, tileSource, tile);\n }\n }\n this.renderedRevision = sourceRevision;\n this.renderedResolution = tileResolution;\n this.extentChanged =\n !this.renderedExtent_ || !equals(this.renderedExtent_, canvasExtent);\n this.renderedExtent_ = canvasExtent;\n this.renderedPixelRatio = pixelRatio;\n this.renderedProjection = projection;\n this.manageTilePyramid(frameState, tileSource, tileGrid, pixelRatio, projection, extent, z, tileLayer.getPreload());\n this.scheduleExpireCache(frameState, tileSource);\n this.postRender(context, frameState);\n if (layerState.extent) {\n context.restore();\n }\n assign(context, IMAGE_SMOOTHING_ENABLED);\n if (canvasTransform !== canvas.style.transform) {\n canvas.style.transform = canvasTransform;\n }\n var opacity = cssOpacity(layerState.opacity);\n var container = this.container;\n if (opacity !== container.style.opacity) {\n container.style.opacity = opacity;\n }\n return this.container;\n };\n /**\n * @param {import(\"../../ImageTile.js\").default} tile Tile.\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n * @param {number} x Left of the tile.\n * @param {number} y Top of the tile.\n * @param {number} w Width of the tile.\n * @param {number} h Height of the tile.\n * @param {number} gutter Tile gutter.\n * @param {boolean} transition Apply an alpha transition.\n */\n CanvasTileLayerRenderer.prototype.drawTileImage = function (tile, frameState, x, y, w, h, gutter, transition) {\n var image = this.getTileImage(tile);\n if (!image) {\n return;\n }\n var uid = getUid(this);\n var alpha = transition ? tile.getAlpha(uid, frameState.time) : 1;\n var alphaChanged = alpha !== this.context.globalAlpha;\n if (alphaChanged) {\n this.context.save();\n this.context.globalAlpha = alpha;\n }\n this.context.drawImage(image, gutter, gutter, image.width - 2 * gutter, image.height - 2 * gutter, x, y, w, h);\n if (alphaChanged) {\n this.context.restore();\n }\n if (alpha !== 1) {\n frameState.animate = true;\n }\n else if (transition) {\n tile.endTransition(uid);\n }\n };\n /**\n * @return {HTMLCanvasElement} Image\n */\n CanvasTileLayerRenderer.prototype.getImage = function () {\n var context = this.context;\n return context ? context.canvas : null;\n };\n /**\n * Get the image from a tile.\n * @param {import(\"../../ImageTile.js\").default} tile Tile.\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @protected\n */\n CanvasTileLayerRenderer.prototype.getTileImage = function (tile) {\n return tile.getImage();\n };\n /**\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n * @param {import(\"../../source/Tile.js\").default} tileSource Tile source.\n * @protected\n */\n CanvasTileLayerRenderer.prototype.scheduleExpireCache = function (frameState, tileSource) {\n if (tileSource.canExpireCache()) {\n /**\n * @param {import(\"../../source/Tile.js\").default} tileSource Tile source.\n * @param {import(\"../../PluggableMap.js\").default} map Map.\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n */\n var postRenderFunction = function (tileSource, map, frameState) {\n var tileSourceKey = getUid(tileSource);\n if (tileSourceKey in frameState.usedTiles) {\n tileSource.expireCache(frameState.viewState.projection, frameState.usedTiles[tileSourceKey]);\n }\n }.bind(null, tileSource);\n frameState.postRenderFunctions.push(\n /** @type {import(\"../../PluggableMap.js\").PostRenderFunction} */ (postRenderFunction));\n }\n };\n /**\n * @param {!Object>} usedTiles Used tiles.\n * @param {import(\"../../source/Tile.js\").default} tileSource Tile source.\n * @param {import('../../Tile.js').default} tile Tile.\n * @protected\n */\n CanvasTileLayerRenderer.prototype.updateUsedTiles = function (usedTiles, tileSource, tile) {\n // FIXME should we use tilesToDrawByZ instead?\n var tileSourceKey = getUid(tileSource);\n if (!(tileSourceKey in usedTiles)) {\n usedTiles[tileSourceKey] = {};\n }\n usedTiles[tileSourceKey][tile.getKey()] = true;\n };\n /**\n * Manage tile pyramid.\n * This function performs a number of functions related to the tiles at the\n * current zoom and lower zoom levels:\n * - registers idle tiles in frameState.wantedTiles so that they are not\n * discarded by the tile queue\n * - enqueues missing tiles\n * @param {import(\"../../PluggableMap.js\").FrameState} frameState Frame state.\n * @param {import(\"../../source/Tile.js\").default} tileSource Tile source.\n * @param {import(\"../../tilegrid/TileGrid.js\").default} tileGrid Tile grid.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"../../proj/Projection.js\").default} projection Projection.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @param {number} currentZ Current Z.\n * @param {number} preload Load low resolution tiles up to 'preload' levels.\n * @param {function(import(\"../../Tile.js\").default):void} [opt_tileCallback] Tile callback.\n * @protected\n */\n CanvasTileLayerRenderer.prototype.manageTilePyramid = function (frameState, tileSource, tileGrid, pixelRatio, projection, extent, currentZ, preload, opt_tileCallback) {\n var tileSourceKey = getUid(tileSource);\n if (!(tileSourceKey in frameState.wantedTiles)) {\n frameState.wantedTiles[tileSourceKey] = {};\n }\n var wantedTiles = frameState.wantedTiles[tileSourceKey];\n var tileQueue = frameState.tileQueue;\n var minZoom = tileGrid.getMinZoom();\n var tileCount = 0;\n var tile, tileRange, tileResolution, x, y, z;\n for (z = minZoom; z <= currentZ; ++z) {\n tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z, tileRange);\n tileResolution = tileGrid.getResolution(z);\n for (x = tileRange.minX; x <= tileRange.maxX; ++x) {\n for (y = tileRange.minY; y <= tileRange.maxY; ++y) {\n if (currentZ - z <= preload) {\n ++tileCount;\n tile = tileSource.getTile(z, x, y, pixelRatio, projection);\n if (tile.getState() == TileState.IDLE) {\n wantedTiles[tile.getKey()] = true;\n if (!tileQueue.isKeyQueued(tile.getKey())) {\n tileQueue.enqueue([\n tile,\n tileSourceKey,\n tileGrid.getTileCoordCenter(tile.tileCoord),\n tileResolution,\n ]);\n }\n }\n if (opt_tileCallback !== undefined) {\n opt_tileCallback(tile);\n }\n }\n else {\n tileSource.useTile(z, x, y, projection);\n }\n }\n }\n }\n tileSource.updateCacheSize(tileCount, projection);\n };\n return CanvasTileLayerRenderer;\n}(CanvasLayerRenderer));\n/**\n * @function\n * @return {import(\"../../layer/Tile.js\").default|import(\"../../layer/VectorTile.js\").default}\n */\nCanvasTileLayerRenderer.prototype.getLayer;\nexport default CanvasTileLayerRenderer;\n//# sourceMappingURL=TileLayer.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/Tile\n */\nimport BaseTileLayer from './BaseTile.js';\nimport CanvasTileLayerRenderer from '../renderer/canvas/TileLayer.js';\n/**\n * @classdesc\n * For layer sources that provide pre-rendered, tiled images in grids that are\n * organized by zoom levels for specific resolutions.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/Tile.js\").default} TileSourceType\n * @extends BaseTileLayer\n * @api\n */\nvar TileLayer = /** @class */ (function (_super) {\n __extends(TileLayer, _super);\n /**\n * @param {import(\"./BaseTile.js\").Options} [opt_options] Tile layer options.\n */\n function TileLayer(opt_options) {\n return _super.call(this, opt_options) || this;\n }\n TileLayer.prototype.createRenderer = function () {\n return new CanvasTileLayerRenderer(this);\n };\n return TileLayer;\n}(BaseTileLayer));\nexport default TileLayer;\n//# sourceMappingURL=Tile.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","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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Feature\n */\nimport BaseObject from './Object.js';\nimport EventType from './events/EventType.js';\nimport { assert } from './asserts.js';\nimport { listen, unlistenByKey } from './events.js';\n/**\n * @typedef {typeof Feature|typeof import(\"./render/Feature.js\").default} FeatureClass\n */\n/**\n * @typedef {Feature|import(\"./render/Feature.js\").default} FeatureLike\n */\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} FeatureOnSignature\n */\n/***\n * @template Geometry\n * @typedef {Object & { geometry?: Geometry }} ObjectWithGeometry\n */\n/**\n * @classdesc\n * A vector object for geographic features with a geometry and other\n * attribute properties, similar to the features in vector file formats like\n * GeoJSON.\n *\n * Features can be styled individually with `setStyle`; otherwise they use the\n * style of their vector layer.\n *\n * Note that attribute properties are set as {@link module:ol/Object} properties on\n * the feature object, so they are observable, and have get/set accessors.\n *\n * Typically, a feature has a single geometry property. You can set the\n * geometry using the `setGeometry` method and get it with `getGeometry`.\n * It is possible to store more than one geometry on a feature using attribute\n * properties. By default, the geometry used for rendering is identified by\n * the property name `geometry`. If you want to use another geometry property\n * for rendering, use the `setGeometryName` method to change the attribute\n * property associated with the geometry for the feature. For example:\n *\n * ```js\n *\n * import Feature from 'ol/Feature';\n * import Polygon from 'ol/geom/Polygon';\n * import Point from 'ol/geom/Point';\n *\n * var feature = new Feature({\n * geometry: new Polygon(polyCoords),\n * labelPoint: new Point(labelCoords),\n * name: 'My Polygon'\n * });\n *\n * // get the polygon geometry\n * var poly = feature.getGeometry();\n *\n * // Render the feature as a point using the coordinates from labelPoint\n * feature.setGeometryName('labelPoint');\n *\n * // get the point geometry\n * var point = feature.getGeometry();\n * ```\n *\n * @api\n * @template {import(\"./geom/Geometry.js\").default} Geometry\n */\nvar Feature = /** @class */ (function (_super) {\n __extends(Feature, _super);\n /**\n * @param {Geometry|ObjectWithGeometry} [opt_geometryOrProperties]\n * You may pass a Geometry object directly, or an object literal containing\n * properties. If you pass an object literal, you may include a Geometry\n * associated with a `geometry` key.\n */\n function Feature(opt_geometryOrProperties) {\n var _this = _super.call(this) || this;\n /***\n * @type {FeatureOnSignature}\n */\n _this.on;\n /***\n * @type {FeatureOnSignature}\n */\n _this.once;\n /***\n * @type {FeatureOnSignature}\n */\n _this.un;\n /**\n * @private\n * @type {number|string|undefined}\n */\n _this.id_ = undefined;\n /**\n * @type {string}\n * @private\n */\n _this.geometryName_ = 'geometry';\n /**\n * User provided style.\n * @private\n * @type {import(\"./style/Style.js\").StyleLike}\n */\n _this.style_ = null;\n /**\n * @private\n * @type {import(\"./style/Style.js\").StyleFunction|undefined}\n */\n _this.styleFunction_ = undefined;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.geometryChangeKey_ = null;\n _this.addChangeListener(_this.geometryName_, _this.handleGeometryChanged_);\n if (opt_geometryOrProperties) {\n if (typeof (\n /** @type {?} */ (opt_geometryOrProperties).getSimplifiedGeometry) === 'function') {\n var geometry = /** @type {Geometry} */ (opt_geometryOrProperties);\n _this.setGeometry(geometry);\n }\n else {\n /** @type {Object} */\n var properties = opt_geometryOrProperties;\n _this.setProperties(properties);\n }\n }\n return _this;\n }\n /**\n * Clone this feature. If the original feature has a geometry it\n * is also cloned. The feature id is not set in the clone.\n * @return {Feature} The clone.\n * @api\n */\n Feature.prototype.clone = function () {\n var clone = /** @type {Feature} */ (new Feature(this.hasProperties() ? this.getProperties() : null));\n clone.setGeometryName(this.getGeometryName());\n var geometry = this.getGeometry();\n if (geometry) {\n clone.setGeometry(/** @type {Geometry} */ (geometry.clone()));\n }\n var style = this.getStyle();\n if (style) {\n clone.setStyle(style);\n }\n return clone;\n };\n /**\n * Get the feature's default geometry. A feature may have any number of named\n * geometries. The \"default\" geometry (the one that is rendered by default) is\n * set when calling {@link module:ol/Feature~Feature#setGeometry}.\n * @return {Geometry|undefined} The default geometry for the feature.\n * @api\n * @observable\n */\n Feature.prototype.getGeometry = function () {\n return /** @type {Geometry|undefined} */ (this.get(this.geometryName_));\n };\n /**\n * Get the feature identifier. This is a stable identifier for the feature and\n * is either set when reading data from a remote source or set explicitly by\n * calling {@link module:ol/Feature~Feature#setId}.\n * @return {number|string|undefined} Id.\n * @api\n */\n Feature.prototype.getId = function () {\n return this.id_;\n };\n /**\n * Get the name of the feature's default geometry. By default, the default\n * geometry is named `geometry`.\n * @return {string} Get the property name associated with the default geometry\n * for this feature.\n * @api\n */\n Feature.prototype.getGeometryName = function () {\n return this.geometryName_;\n };\n /**\n * Get the feature's style. Will return what was provided to the\n * {@link module:ol/Feature~Feature#setStyle} method.\n * @return {import(\"./style/Style.js\").StyleLike|undefined} The feature style.\n * @api\n */\n Feature.prototype.getStyle = function () {\n return this.style_;\n };\n /**\n * Get the feature's style function.\n * @return {import(\"./style/Style.js\").StyleFunction|undefined} Return a function\n * representing the current style of this feature.\n * @api\n */\n Feature.prototype.getStyleFunction = function () {\n return this.styleFunction_;\n };\n /**\n * @private\n */\n Feature.prototype.handleGeometryChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n Feature.prototype.handleGeometryChanged_ = function () {\n if (this.geometryChangeKey_) {\n unlistenByKey(this.geometryChangeKey_);\n this.geometryChangeKey_ = null;\n }\n var geometry = this.getGeometry();\n if (geometry) {\n this.geometryChangeKey_ = listen(geometry, EventType.CHANGE, this.handleGeometryChange_, this);\n }\n this.changed();\n };\n /**\n * Set the default geometry for the feature. This will update the property\n * with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.\n * @param {Geometry|undefined} geometry The new geometry.\n * @api\n * @observable\n */\n Feature.prototype.setGeometry = function (geometry) {\n this.set(this.geometryName_, geometry);\n };\n /**\n * Set the style for the feature to override the layer style. This can be a\n * single style object, an array of styles, or a function that takes a\n * resolution and returns an array of styles. To unset the feature style, call\n * `setStyle()` without arguments or a falsey value.\n * @param {import(\"./style/Style.js\").StyleLike} [opt_style] Style for this feature.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n Feature.prototype.setStyle = function (opt_style) {\n this.style_ = opt_style;\n this.styleFunction_ = !opt_style\n ? undefined\n : createStyleFunction(opt_style);\n this.changed();\n };\n /**\n * Set the feature id. The feature id is considered stable and may be used when\n * requesting features or comparing identifiers returned from a remote source.\n * The feature id can be used with the\n * {@link module:ol/source/Vector~VectorSource#getFeatureById} method.\n * @param {number|string|undefined} id The feature id.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n Feature.prototype.setId = function (id) {\n this.id_ = id;\n this.changed();\n };\n /**\n * Set the property name to be used when getting the feature's default geometry.\n * When calling {@link module:ol/Feature~Feature#getGeometry}, the value of the property with\n * this name will be returned.\n * @param {string} name The property name of the default geometry.\n * @api\n */\n Feature.prototype.setGeometryName = function (name) {\n this.removeChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.geometryName_ = name;\n this.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.handleGeometryChanged_();\n };\n return Feature;\n}(BaseObject));\n/**\n * Convert the provided object into a feature style function. Functions passed\n * through unchanged. Arrays of Style or single style objects wrapped\n * in a new feature style function.\n * @param {!import(\"./style/Style.js\").StyleFunction|!Array|!import(\"./style/Style.js\").default} obj\n * A feature style function, a single style, or an array of styles.\n * @return {import(\"./style/Style.js\").StyleFunction} A style function.\n */\nexport function createStyleFunction(obj) {\n if (typeof obj === 'function') {\n return obj;\n }\n else {\n /**\n * @type {Array}\n */\n var styles_1;\n if (Array.isArray(obj)) {\n styles_1 = obj;\n }\n else {\n assert(typeof ( /** @type {?} */(obj).getZIndex) === 'function', 41); // Expected an `import(\"./style/Style.js\").Style` or an array of `import(\"./style/Style.js\").Style`\n var style = /** @type {import(\"./style/Style.js\").default} */ (obj);\n styles_1 = [style];\n }\n return function () {\n return styles_1;\n };\n }\n}\nexport default Feature;\n//# sourceMappingURL=Feature.js.map","\r\n\r\n\r\n\r\n\r\n\r\n","import { render } from \"./NewJobForm.vue?vue&type=template&id=10adf5c6\"\nimport script from \"./NewJobForm.vue?vue&type=script&lang=js\"\nexport * from \"./NewJobForm.vue?vue&type=script&lang=js\"\n\nimport \"@vueform/multiselect/themes/default.css?vue&type=style&index=0&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\s.arshad\\\\Documents\\\\GitHub\\\\link-portal\\\\link\\\\node_modules\\\\@vue\\\\cli-service\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","/**\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","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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 BaseObject from '../Object.js';\nimport LayerProperty from './Property.js';\nimport { abstract } from '../util.js';\nimport { assert } from '../asserts.js';\nimport { assign } from '../obj.js';\nimport { clamp } from '../math.js';\n/**\n * A css color, or a function called with a view resolution returning a css color.\n *\n * @typedef {string|function(number):string} BackgroundColor\n * @api\n */\n/**\n * @typedef {import(\"../ObjectEventType\").Types|'change:extent'|'change:maxResolution'|'change:maxZoom'|\n * 'change:minResolution'|'change:minZoom'|'change:opacity'|'change:visible'|'change:zIndex'} BaseLayerObjectEventTypes\n */\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} BaseLayerOnSignature\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 {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 {BackgroundColor} [background] Background color for the layer. If not specified, no background\n * will be rendered.\n * @property {Object} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\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 {BaseLayerOnSignature}\n */\n _this.on;\n /***\n * @type {BaseLayerOnSignature}\n */\n _this.once;\n /***\n * @type {BaseLayerOnSignature}\n */\n _this.un;\n /**\n * @type {BackgroundColor|false}\n * @private\n */\n _this.background_ = options.background;\n /**\n * @type {Object}\n */\n var properties = assign({}, options);\n if (typeof options.properties === 'object') {\n delete properties.properties;\n assign(properties, options.properties);\n }\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_ =\n 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 * Get the background for this layer.\n * @return {BackgroundColor|false} Layer background.\n */\n BaseLayer.prototype.getBackground = function () {\n return this.background_;\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_ ||\n /** @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 && !state.managed ? Infinity : zIndex;\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 /** @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 * Sets the backgrlound color.\n * @param {BackgroundColor} [opt_background] Background color.\n */\n BaseLayer.prototype.setBackground = function (opt_background) {\n this.background_ = opt_background;\n this.changed();\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 * Clean up.\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/functions\n */\nimport { equals as arrayEquals } from './array.js';\n/**\n * Always returns true.\n * @return {boolean} true.\n */\nexport function TRUE() {\n return true;\n}\n/**\n * Always returns false.\n * @return {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/**\n * @template T\n * @param {function(): (T | Promise)} getter A function that returns a value or a promise for a value.\n * @return {Promise} A promise for the value.\n */\nexport function toPromise(getter) {\n function promiseGetter() {\n var value;\n try {\n value = getter();\n }\n catch (err) {\n return Promise.reject(err);\n }\n if (value instanceof Promise) {\n return value;\n }\n return Promise.resolve(value);\n }\n return promiseGetter();\n}\n//# sourceMappingURL=functions.js.map","/**\n * @module ol/structs/RBush\n */\nimport RBush_ from 'rbush';\nimport { createOrUpdate, equals } from '../extent.js';\nimport { getUid } from '../util.js';\nimport { isEmpty } from '../obj.js';\n/**\n * @typedef {Object} Entry\n * @property {number} minX MinX.\n * @property {number} minY MinY.\n * @property {number} maxX MaxX.\n * @property {number} maxY MaxY.\n * @property {Object} [value] Value.\n */\n/**\n * @classdesc\n * Wrapper around the RBush by Vladimir Agafonkin.\n * See https://github.com/mourner/rbush.\n *\n * @template T\n */\nvar RBush = /** @class */ (function () {\n /**\n * @param {number} [opt_maxEntries] Max entries.\n */\n function RBush(opt_maxEntries) {\n /**\n * @private\n */\n this.rbush_ = new RBush_(opt_maxEntries);\n /**\n * A mapping between the objects added to this rbush wrapper\n * and the objects that are actually added to the internal rbush.\n * @private\n * @type {Object}\n */\n this.items_ = {};\n }\n /**\n * Insert a value into the RBush.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {T} value Value.\n */\n RBush.prototype.insert = function (extent, value) {\n /** @type {Entry} */\n var item = {\n minX: extent[0],\n minY: extent[1],\n maxX: extent[2],\n maxY: extent[3],\n value: value,\n };\n this.rbush_.insert(item);\n this.items_[getUid(value)] = item;\n };\n /**\n * Bulk-insert values into the RBush.\n * @param {Array} extents Extents.\n * @param {Array} values Values.\n */\n RBush.prototype.load = function (extents, values) {\n var items = new Array(values.length);\n for (var i = 0, l = values.length; i < l; i++) {\n var extent = extents[i];\n var value = values[i];\n /** @type {Entry} */\n var item = {\n minX: extent[0],\n minY: extent[1],\n maxX: extent[2],\n maxY: extent[3],\n value: value,\n };\n items[i] = item;\n this.items_[getUid(value)] = item;\n }\n this.rbush_.load(items);\n };\n /**\n * Remove a value from the RBush.\n * @param {T} value Value.\n * @return {boolean} Removed.\n */\n RBush.prototype.remove = function (value) {\n var uid = getUid(value);\n // get the object in which the value was wrapped when adding to the\n // internal rbush. then use that object to do the removal.\n var item = this.items_[uid];\n delete this.items_[uid];\n return this.rbush_.remove(item) !== null;\n };\n /**\n * Update the extent of a value in the RBush.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {T} value Value.\n */\n RBush.prototype.update = function (extent, value) {\n var item = this.items_[getUid(value)];\n var bbox = [item.minX, item.minY, item.maxX, item.maxY];\n if (!equals(bbox, extent)) {\n this.remove(value);\n this.insert(extent, value);\n }\n };\n /**\n * Return all values in the RBush.\n * @return {Array} All.\n */\n RBush.prototype.getAll = function () {\n var items = this.rbush_.all();\n return items.map(function (item) {\n return item.value;\n });\n };\n /**\n * Return all values in the given extent.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {Array} All in extent.\n */\n RBush.prototype.getInExtent = function (extent) {\n /** @type {Entry} */\n var bbox = {\n minX: extent[0],\n minY: extent[1],\n maxX: extent[2],\n maxY: extent[3],\n };\n var items = this.rbush_.search(bbox);\n return items.map(function (item) {\n return item.value;\n });\n };\n /**\n * Calls a callback function with each value in the tree.\n * If the callback returns a truthy value, this value is returned without\n * checking the rest of the tree.\n * @param {function(T): *} callback Callback.\n * @return {*} Callback return value.\n */\n RBush.prototype.forEach = function (callback) {\n return this.forEach_(this.getAll(), callback);\n };\n /**\n * Calls a callback function with each value in the provided extent.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {function(T): *} callback Callback.\n * @return {*} Callback return value.\n */\n RBush.prototype.forEachInExtent = function (extent, callback) {\n return this.forEach_(this.getInExtent(extent), callback);\n };\n /**\n * @param {Array} values Values.\n * @param {function(T): *} callback Callback.\n * @private\n * @return {*} Callback return value.\n */\n RBush.prototype.forEach_ = function (values, callback) {\n var result;\n for (var i = 0, l = values.length; i < l; i++) {\n result = callback(values[i]);\n if (result) {\n return result;\n }\n }\n return result;\n };\n /**\n * @return {boolean} Is empty.\n */\n RBush.prototype.isEmpty = function () {\n return isEmpty(this.items_);\n };\n /**\n * Remove all values from the RBush.\n */\n RBush.prototype.clear = function () {\n this.rbush_.clear();\n this.items_ = {};\n };\n /**\n * @param {import(\"../extent.js\").Extent} [opt_extent] Extent.\n * @return {import(\"../extent.js\").Extent} Extent.\n */\n RBush.prototype.getExtent = function (opt_extent) {\n var data = this.rbush_.toJSON();\n return createOrUpdate(data.minX, data.minY, data.maxX, data.maxY, opt_extent);\n };\n /**\n * @param {RBush} rbush R-Tree.\n */\n RBush.prototype.concat = function (rbush) {\n this.rbush_.load(rbush.rbush_.all());\n for (var i in rbush.items_) {\n this.items_[i] = rbush.items_[i];\n }\n };\n return RBush;\n}());\nexport default RBush;\n//# sourceMappingURL=RBush.js.map","/**\n * @module ol/source/VectorEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when a feature is added to the source.\n * @event module:ol/source/Vector.VectorSourceEvent#addfeature\n * @api\n */\n ADDFEATURE: 'addfeature',\n /**\n * Triggered when a feature is updated.\n * @event module:ol/source/Vector.VectorSourceEvent#changefeature\n * @api\n */\n CHANGEFEATURE: 'changefeature',\n /**\n * Triggered when the clear method is called on the source.\n * @event module:ol/source/Vector.VectorSourceEvent#clear\n * @api\n */\n CLEAR: 'clear',\n /**\n * Triggered when a feature is removed from the source.\n * See {@link module:ol/source/Vector~VectorSource#clear source.clear()} for exceptions.\n * @event module:ol/source/Vector.VectorSourceEvent#removefeature\n * @api\n */\n REMOVEFEATURE: 'removefeature',\n /**\n * Triggered when features starts loading.\n * @event module:ol/source/Vector.VectorSourceEvent#featuresloadstart\n * @api\n */\n FEATURESLOADSTART: 'featuresloadstart',\n /**\n * Triggered when features finishes loading.\n * @event module:ol/source/Vector.VectorSourceEvent#featuresloadend\n * @api\n */\n FEATURESLOADEND: 'featuresloadend',\n /**\n * Triggered if feature loading results in an error.\n * @event module:ol/source/Vector.VectorSourceEvent#featuresloaderror\n * @api\n */\n FEATURESLOADERROR: 'featuresloaderror',\n};\n/**\n * @typedef {'addfeature'|'changefeature'|'clear'|'removefeature'|'featuresloadstart'|'featuresloadend'|'featuresloaderror'} VectorSourceEventTypes\n */\n//# sourceMappingURL=VectorEventType.js.map","/**\n * @module ol/loadingstrategy\n */\nimport { fromUserExtent, fromUserResolution, toUserExtent } from './proj.js';\n/**\n * Strategy function for loading all features with a single request.\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @return {Array} Extents.\n * @api\n */\nexport function all(extent, resolution) {\n return [[-Infinity, -Infinity, Infinity, Infinity]];\n}\n/**\n * Strategy function for loading features based on the view's extent and\n * resolution.\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @return {Array} Extents.\n * @api\n */\nexport function bbox(extent, resolution) {\n return [extent];\n}\n/**\n * Creates a strategy function for loading features based on a tile grid.\n * @param {import(\"./tilegrid/TileGrid.js\").default} tileGrid Tile grid.\n * @return {function(import(\"./extent.js\").Extent, number, import(\"./proj.js\").Projection): Array} Loading strategy.\n * @api\n */\nexport function tile(tileGrid) {\n return (\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @param {import(\"./proj.js\").Projection} projection Projection.\n * @return {Array} Extents.\n */\n function (extent, resolution, projection) {\n var z = tileGrid.getZForResolution(fromUserResolution(resolution, projection));\n var tileRange = tileGrid.getTileRangeForExtentAndZ(fromUserExtent(extent, projection), z);\n /** @type {Array} */\n var extents = [];\n /** @type {import(\"./tilecoord.js\").TileCoord} */\n var tileCoord = [z, 0, 0];\n for (tileCoord[1] = tileRange.minX; tileCoord[1] <= tileRange.maxX; ++tileCoord[1]) {\n for (tileCoord[2] = tileRange.minY; tileCoord[2] <= tileRange.maxY; ++tileCoord[2]) {\n extents.push(toUserExtent(tileGrid.getTileCoordExtent(tileCoord), projection));\n }\n }\n return extents;\n });\n}\n//# sourceMappingURL=loadingstrategy.js.map","/**\n * @module ol/format/FormatType\n */\n/**\n * @enum {string}\n */\nexport default {\n ARRAY_BUFFER: 'arraybuffer',\n JSON: 'json',\n TEXT: 'text',\n XML: 'xml',\n};\n//# sourceMappingURL=FormatType.js.map","/**\n * @module ol/featureloader\n */\nimport FormatType from './format/FormatType.js';\nimport { VOID } from './functions.js';\n/**\n *\n * @type {boolean}\n * @private\n */\nvar withCredentials = false;\n/**\n * {@link module:ol/source/Vector} sources use a function of this type to\n * load features.\n *\n * This function takes up to 5 arguments. These are an {@link module:ol/extent~Extent} representing\n * the area to be loaded, a `{number}` representing the resolution (map units per pixel), an\n * {@link module:ol/proj/Projection} for the projection, an optional success callback that should get\n * the loaded features passed as an argument and an optional failure callback with no arguments. If\n * the callbacks are not used, the corresponding vector source will not fire `'featuresloadend'` and\n * `'featuresloaderror'` events. `this` within the function is bound to the\n * {@link module:ol/source/Vector} it's called from.\n *\n * The function is responsible for loading the features and adding them to the\n * source.\n * @typedef {function(this:(import(\"./source/Vector\").default|import(\"./VectorTile.js\").default),\n * import(\"./extent.js\").Extent,\n * number,\n * import(\"./proj/Projection.js\").default,\n * function(Array): void=,\n * function(): void=): void} FeatureLoader\n * @api\n */\n/**\n * {@link module:ol/source/Vector} sources use a function of this type to\n * get the url to load features from.\n *\n * This function takes an {@link module:ol/extent~Extent} representing the area\n * to be loaded, a `{number}` representing the resolution (map units per pixel)\n * and an {@link module:ol/proj/Projection} for the projection as\n * arguments and returns a `{string}` representing the URL.\n * @typedef {function(import(\"./extent.js\").Extent, number, import(\"./proj/Projection.js\").default): string} FeatureUrlFunction\n * @api\n */\n/**\n * @param {string|FeatureUrlFunction} url Feature URL service.\n * @param {import(\"./format/Feature.js\").default} format Feature format.\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {function(Array, import(\"./proj/Projection.js\").default): void} success Success\n * Function called with the loaded features and optionally with the data projection.\n * @param {function(): void} failure Failure\n * Function called when loading failed.\n */\nexport function loadFeaturesXhr(url, format, extent, resolution, projection, success, failure) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', typeof url === 'function' ? url(extent, resolution, projection) : url, true);\n if (format.getType() == FormatType.ARRAY_BUFFER) {\n xhr.responseType = 'arraybuffer';\n }\n xhr.withCredentials = withCredentials;\n /**\n * @param {Event} event Event.\n * @private\n */\n xhr.onload = function (event) {\n // status will be 0 for file:// urls\n if (!xhr.status || (xhr.status >= 200 && xhr.status < 300)) {\n var type = format.getType();\n /** @type {Document|Node|Object|string|undefined} */\n var source = void 0;\n if (type == FormatType.JSON || type == FormatType.TEXT) {\n source = xhr.responseText;\n }\n else if (type == FormatType.XML) {\n source = xhr.responseXML;\n if (!source) {\n source = new DOMParser().parseFromString(xhr.responseText, 'application/xml');\n }\n }\n else if (type == FormatType.ARRAY_BUFFER) {\n source = /** @type {ArrayBuffer} */ (xhr.response);\n }\n if (source) {\n success(\n /** @type {Array} */\n (format.readFeatures(source, {\n extent: extent,\n featureProjection: projection,\n })), format.readProjection(source));\n }\n else {\n failure();\n }\n }\n else {\n failure();\n }\n };\n /**\n * @private\n */\n xhr.onerror = failure;\n xhr.send();\n}\n/**\n * Create an XHR feature loader for a `url` and `format`. The feature loader\n * loads features (with XHR), parses the features, and adds them to the\n * vector source.\n * @param {string|FeatureUrlFunction} url Feature URL service.\n * @param {import(\"./format/Feature.js\").default} format Feature format.\n * @return {FeatureLoader} The feature loader.\n * @api\n */\nexport function xhr(url, format) {\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {function(Array): void} [success] Success\n * Function called when loading succeeded.\n * @param {function(): void} [failure] Failure\n * Function called when loading failed.\n * @this {import(\"./source/Vector\").default}\n */\n return function (extent, resolution, projection, success, failure) {\n var source = /** @type {import(\"./source/Vector\").default} */ (this);\n loadFeaturesXhr(url, format, extent, resolution, projection, \n /**\n * @param {Array} features The loaded features.\n * @param {import(\"./proj/Projection.js\").default} dataProjection Data\n * projection.\n */\n function (features, dataProjection) {\n source.addFeatures(features);\n if (success !== undefined) {\n success(features);\n }\n }, \n /* FIXME handle error */ failure ? failure : VOID);\n };\n}\n/**\n * Setter for the withCredentials configuration for the XHR.\n *\n * @param {boolean} xhrWithCredentials The value of withCredentials to set.\n * Compare https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/\n * @api\n */\nexport function setWithCredentials(xhrWithCredentials) {\n withCredentials = xhrWithCredentials;\n}\n//# sourceMappingURL=featureloader.js.map","/**\n * @module ol/source/Vector\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport Event from '../events/Event.js';\nimport EventType from '../events/EventType.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport RBush from '../structs/RBush.js';\nimport Source from './Source.js';\nimport SourceState from './State.js';\nimport VectorEventType from './VectorEventType.js';\nimport { TRUE, VOID } from '../functions.js';\nimport { all as allStrategy } from '../loadingstrategy.js';\nimport { assert } from '../asserts.js';\nimport { containsExtent, equals } from '../extent.js';\nimport { extend } from '../array.js';\nimport { getUid } from '../util.js';\nimport { getValues, isEmpty } from '../obj.js';\nimport { listen, unlistenByKey } from '../events.js';\nimport { xhr } from '../featureloader.js';\n/**\n * A function that takes an {@link module:ol/extent~Extent} and a resolution as arguments, and\n * returns an array of {@link module:ol/extent~Extent} with the extents to load. Usually this\n * is one of the standard {@link module:ol/loadingstrategy} strategies.\n *\n * @typedef {function(import(\"../extent.js\").Extent, number, import(\"../proj/Projection.js\").default): Array} LoadingStrategy\n * @api\n */\n/**\n * @classdesc\n * Events emitted by {@link module:ol/source/Vector} instances are instances of this\n * type.\n * @template {import(\"../geom/Geometry.js\").default} Geometry\n */\nvar VectorSourceEvent = /** @class */ (function (_super) {\n __extends(VectorSourceEvent, _super);\n /**\n * @param {string} type Type.\n * @param {import(\"../Feature.js\").default} [opt_feature] Feature.\n * @param {Array>} [opt_features] Features.\n */\n function VectorSourceEvent(type, opt_feature, opt_features) {\n var _this = _super.call(this, type) || this;\n /**\n * The added or removed feature for the `ADDFEATURE` and `REMOVEFEATURE` events, `undefined` otherwise.\n * @type {import(\"../Feature.js\").default|undefined}\n * @api\n */\n _this.feature = opt_feature;\n /**\n * The loaded features for the `FEATURESLOADED` event, `undefined` otherwise.\n * @type {Array>|undefined}\n * @api\n */\n _this.features = opt_features;\n return _this;\n }\n return VectorSourceEvent;\n}(Event));\nexport { VectorSourceEvent };\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} VectorSourceOnSignature\n */\n/**\n * @typedef {Object} Options\n * @property {import(\"./Source.js\").AttributionLike} [attributions] Attributions.\n * @property {Array|Collection} [features]\n * Features. If provided as {@link module:ol/Collection}, the features in the source\n * and the collection will stay in sync.\n * @property {import(\"../format/Feature.js\").default} [format] The feature format used by the XHR\n * feature loader when `url` is set. Required if `url` is set, otherwise ignored.\n * @property {import(\"../featureloader.js\").FeatureLoader} [loader]\n * The loader function used to load features, from a remote source for example.\n * If this is not set and `url` is set, the source will create and use an XHR\n * feature loader. The `'featuresloadend'` and `'featuresloaderror'` events\n * will only fire if the `success` and `failure` callbacks are used.\n *\n * Example:\n *\n * ```js\n * import {Vector} from 'ol/source';\n * import {GeoJSON} from 'ol/format';\n * import {bbox} from 'ol/loadingstrategy';\n *\n * var vectorSource = new Vector({\n * format: new GeoJSON(),\n * loader: function(extent, resolution, projection, success, failure) {\n * var proj = projection.getCode();\n * var url = 'https://ahocevar.com/geoserver/wfs?service=WFS&' +\n * 'version=1.1.0&request=GetFeature&typename=osm:water_areas&' +\n * 'outputFormat=application/json&srsname=' + proj + '&' +\n * 'bbox=' + extent.join(',') + ',' + proj;\n * var xhr = new XMLHttpRequest();\n * xhr.open('GET', url);\n * var onError = function() {\n * vectorSource.removeLoadedExtent(extent);\n * failure();\n * }\n * xhr.onerror = onError;\n * xhr.onload = function() {\n * if (xhr.status == 200) {\n * var features = vectorSource.getFormat().readFeatures(xhr.responseText);\n * vectorSource.addFeatures(features);\n * success(features);\n * } else {\n * onError();\n * }\n * }\n * xhr.send();\n * },\n * strategy: bbox\n * });\n * ```\n * @property {boolean} [overlaps=true] This source may have overlapping geometries.\n * Setting this to `false` (e.g. for sources with polygons that represent administrative\n * boundaries or TopoJSON sources) allows the renderer to optimise fill and\n * stroke operations.\n * @property {LoadingStrategy} [strategy] The loading strategy to use.\n * By default an {@link module:ol/loadingstrategy.all}\n * strategy is used, a one-off strategy which loads all features at once.\n * @property {string|import(\"../featureloader.js\").FeatureUrlFunction} [url]\n * Setting this option instructs the source to load features using an XHR loader\n * (see {@link module:ol/featureloader.xhr}). Use a `string` and an\n * {@link module:ol/loadingstrategy.all} for a one-off download of all features from\n * the given URL. Use a {@link module:ol/featureloader~FeatureUrlFunction} to generate the url with\n * other loading strategies.\n * Requires `format` to be set as well.\n * When default XHR feature loader is provided, the features will\n * be transformed from the data projection to the view projection\n * during parsing. If your remote data source does not advertise its projection\n * properly, this transformation will be incorrect. For some formats, the\n * default projection (usually EPSG:4326) can be overridden by setting the\n * dataProjection constructor option on the format.\n * Note that if a source contains non-feature data, such as a GeoJSON geometry\n * or a KML NetworkLink, these will be ignored. Use a custom loader to load these.\n * @property {boolean} [useSpatialIndex=true]\n * By default, an RTree is used as spatial index. When features are removed and\n * added frequently, and the total number of features is low, setting this to\n * `false` may improve performance.\n *\n * Note that\n * {@link module:ol/source/Vector~VectorSource#getFeaturesInExtent},\n * {@link module:ol/source/Vector~VectorSource#getClosestFeatureToCoordinate} and\n * {@link module:ol/source/Vector~VectorSource#getExtent} cannot be used when `useSpatialIndex` is\n * set to `false`, and {@link module:ol/source/Vector~VectorSource#forEachFeatureInExtent} will loop\n * through all features.\n *\n * When set to `false`, the features will be maintained in an\n * {@link module:ol/Collection}, which can be retrieved through\n * {@link module:ol/source/Vector~VectorSource#getFeaturesCollection}.\n * @property {boolean} [wrapX=true] Wrap the world horizontally. For vector editing across the\n * -180° and 180° meridians to work properly, this should be set to `false`. The\n * resulting geometry coordinates will then exceed the world bounds.\n */\n/**\n * @classdesc\n * Provides a source of features for vector layers. Vector features provided\n * by this source are suitable for editing. See {@link module:ol/source/VectorTile~VectorTile} for\n * vector data that is optimized for rendering.\n *\n * @fires VectorSourceEvent\n * @api\n * @template {import(\"../geom/Geometry.js\").default} Geometry\n */\nvar VectorSource = /** @class */ (function (_super) {\n __extends(VectorSource, _super);\n /**\n * @param {Options} [opt_options] Vector source options.\n */\n function VectorSource(opt_options) {\n var _this = this;\n var options = opt_options || {};\n _this = _super.call(this, {\n attributions: options.attributions,\n interpolate: true,\n projection: undefined,\n state: SourceState.READY,\n wrapX: options.wrapX !== undefined ? options.wrapX : true,\n }) || this;\n /***\n * @type {VectorSourceOnSignature}\n */\n _this.on;\n /***\n * @type {VectorSourceOnSignature}\n */\n _this.once;\n /***\n * @type {VectorSourceOnSignature}\n */\n _this.un;\n /**\n * @private\n * @type {import(\"../featureloader.js\").FeatureLoader}\n */\n _this.loader_ = VOID;\n /**\n * @private\n * @type {import(\"../format/Feature.js\").default|undefined}\n */\n _this.format_ = options.format;\n /**\n * @private\n * @type {boolean}\n */\n _this.overlaps_ = options.overlaps === undefined ? true : options.overlaps;\n /**\n * @private\n * @type {string|import(\"../featureloader.js\").FeatureUrlFunction|undefined}\n */\n _this.url_ = options.url;\n if (options.loader !== undefined) {\n _this.loader_ = options.loader;\n }\n else if (_this.url_ !== undefined) {\n assert(_this.format_, 7); // `format` must be set when `url` is set\n // create a XHR feature loader for \"url\" and \"format\"\n _this.loader_ = xhr(_this.url_, \n /** @type {import(\"../format/Feature.js\").default} */ (_this.format_));\n }\n /**\n * @private\n * @type {LoadingStrategy}\n */\n _this.strategy_ =\n options.strategy !== undefined ? options.strategy : allStrategy;\n var useSpatialIndex = options.useSpatialIndex !== undefined ? options.useSpatialIndex : true;\n /**\n * @private\n * @type {RBush>}\n */\n _this.featuresRtree_ = useSpatialIndex ? new RBush() : null;\n /**\n * @private\n * @type {RBush<{extent: import(\"../extent.js\").Extent}>}\n */\n _this.loadedExtentsRtree_ = new RBush();\n /**\n * @type {number}\n * @private\n */\n _this.loadingExtentsCount_ = 0;\n /**\n * @private\n * @type {!Object>}\n */\n _this.nullGeometryFeatures_ = {};\n /**\n * A lookup of features by id (the return from feature.getId()).\n * @private\n * @type {!Object>}\n */\n _this.idIndex_ = {};\n /**\n * A lookup of features by uid (using getUid(feature)).\n * @private\n * @type {!Object>}\n */\n _this.uidIndex_ = {};\n /**\n * @private\n * @type {Object>}\n */\n _this.featureChangeKeys_ = {};\n /**\n * @private\n * @type {Collection>}\n */\n _this.featuresCollection_ = null;\n var collection, features;\n if (Array.isArray(options.features)) {\n features = options.features;\n }\n else if (options.features) {\n collection = options.features;\n features = collection.getArray();\n }\n if (!useSpatialIndex && collection === undefined) {\n collection = new Collection(features);\n }\n if (features !== undefined) {\n _this.addFeaturesInternal(features);\n }\n if (collection !== undefined) {\n _this.bindFeaturesCollection_(collection);\n }\n return _this;\n }\n /**\n * Add a single feature to the source. If you want to add a batch of features\n * at once, call {@link module:ol/source/Vector~VectorSource#addFeatures #addFeatures()}\n * instead. A feature will not be added to the source if feature with\n * the same id is already there. The reason for this behavior is to avoid\n * feature duplication when using bbox or tile loading strategies.\n * Note: this also applies if an {@link module:ol/Collection} is used for features,\n * meaning that if a feature with a duplicate id is added in the collection, it will\n * be removed from it right away.\n * @param {import(\"../Feature.js\").default} feature Feature to add.\n * @api\n */\n VectorSource.prototype.addFeature = function (feature) {\n this.addFeatureInternal(feature);\n this.changed();\n };\n /**\n * Add a feature without firing a `change` event.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @protected\n */\n VectorSource.prototype.addFeatureInternal = function (feature) {\n var featureKey = getUid(feature);\n if (!this.addToIndex_(featureKey, feature)) {\n if (this.featuresCollection_) {\n this.featuresCollection_.remove(feature);\n }\n return;\n }\n this.setupChangeEvents_(featureKey, feature);\n var geometry = feature.getGeometry();\n if (geometry) {\n var extent = geometry.getExtent();\n if (this.featuresRtree_) {\n this.featuresRtree_.insert(extent, feature);\n }\n }\n else {\n this.nullGeometryFeatures_[featureKey] = feature;\n }\n this.dispatchEvent(new VectorSourceEvent(VectorEventType.ADDFEATURE, feature));\n };\n /**\n * @param {string} featureKey Unique identifier for the feature.\n * @param {import(\"../Feature.js\").default} feature The feature.\n * @private\n */\n VectorSource.prototype.setupChangeEvents_ = function (featureKey, feature) {\n this.featureChangeKeys_[featureKey] = [\n listen(feature, EventType.CHANGE, this.handleFeatureChange_, this),\n listen(feature, ObjectEventType.PROPERTYCHANGE, this.handleFeatureChange_, this),\n ];\n };\n /**\n * @param {string} featureKey Unique identifier for the feature.\n * @param {import(\"../Feature.js\").default} feature The feature.\n * @return {boolean} The feature is \"valid\", in the sense that it is also a\n * candidate for insertion into the Rtree.\n * @private\n */\n VectorSource.prototype.addToIndex_ = function (featureKey, feature) {\n var valid = true;\n var id = feature.getId();\n if (id !== undefined) {\n if (!(id.toString() in this.idIndex_)) {\n this.idIndex_[id.toString()] = feature;\n }\n else {\n valid = false;\n }\n }\n if (valid) {\n assert(!(featureKey in this.uidIndex_), 30); // The passed `feature` was already added to the source\n this.uidIndex_[featureKey] = feature;\n }\n return valid;\n };\n /**\n * Add a batch of features to the source.\n * @param {Array>} features Features to add.\n * @api\n */\n VectorSource.prototype.addFeatures = function (features) {\n this.addFeaturesInternal(features);\n this.changed();\n };\n /**\n * Add features without firing a `change` event.\n * @param {Array>} features Features.\n * @protected\n */\n VectorSource.prototype.addFeaturesInternal = function (features) {\n var extents = [];\n var newFeatures = [];\n var geometryFeatures = [];\n for (var i = 0, length_1 = features.length; i < length_1; i++) {\n var feature = features[i];\n var featureKey = getUid(feature);\n if (this.addToIndex_(featureKey, feature)) {\n newFeatures.push(feature);\n }\n }\n for (var i = 0, length_2 = newFeatures.length; i < length_2; i++) {\n var feature = newFeatures[i];\n var featureKey = getUid(feature);\n this.setupChangeEvents_(featureKey, feature);\n var geometry = feature.getGeometry();\n if (geometry) {\n var extent = geometry.getExtent();\n extents.push(extent);\n geometryFeatures.push(feature);\n }\n else {\n this.nullGeometryFeatures_[featureKey] = feature;\n }\n }\n if (this.featuresRtree_) {\n this.featuresRtree_.load(extents, geometryFeatures);\n }\n for (var i = 0, length_3 = newFeatures.length; i < length_3; i++) {\n this.dispatchEvent(new VectorSourceEvent(VectorEventType.ADDFEATURE, newFeatures[i]));\n }\n };\n /**\n * @param {!Collection>} collection Collection.\n * @private\n */\n VectorSource.prototype.bindFeaturesCollection_ = function (collection) {\n var modifyingCollection = false;\n this.addEventListener(VectorEventType.ADDFEATURE, \n /**\n * @param {VectorSourceEvent} evt The vector source event\n */\n function (evt) {\n if (!modifyingCollection) {\n modifyingCollection = true;\n collection.push(evt.feature);\n modifyingCollection = false;\n }\n });\n this.addEventListener(VectorEventType.REMOVEFEATURE, \n /**\n * @param {VectorSourceEvent} evt The vector source event\n */\n function (evt) {\n if (!modifyingCollection) {\n modifyingCollection = true;\n collection.remove(evt.feature);\n modifyingCollection = false;\n }\n });\n collection.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"../Collection.js\").CollectionEvent} evt The collection event\n */\n function (evt) {\n if (!modifyingCollection) {\n modifyingCollection = true;\n this.addFeature(\n /** @type {import(\"../Feature.js\").default} */ (evt.element));\n modifyingCollection = false;\n }\n }.bind(this));\n collection.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"../Collection.js\").CollectionEvent} evt The collection event\n */\n function (evt) {\n if (!modifyingCollection) {\n modifyingCollection = true;\n this.removeFeature(\n /** @type {import(\"../Feature.js\").default} */ (evt.element));\n modifyingCollection = false;\n }\n }.bind(this));\n this.featuresCollection_ = collection;\n };\n /**\n * Remove all features from the source.\n * @param {boolean} [opt_fast] Skip dispatching of {@link module:ol/source/Vector.VectorSourceEvent#event:removefeature removefeature} events.\n * @api\n */\n VectorSource.prototype.clear = function (opt_fast) {\n if (opt_fast) {\n for (var featureId in this.featureChangeKeys_) {\n var keys = this.featureChangeKeys_[featureId];\n keys.forEach(unlistenByKey);\n }\n if (!this.featuresCollection_) {\n this.featureChangeKeys_ = {};\n this.idIndex_ = {};\n this.uidIndex_ = {};\n }\n }\n else {\n if (this.featuresRtree_) {\n var removeAndIgnoreReturn = function (feature) {\n this.removeFeatureInternal(feature);\n }.bind(this);\n this.featuresRtree_.forEach(removeAndIgnoreReturn);\n for (var id in this.nullGeometryFeatures_) {\n this.removeFeatureInternal(this.nullGeometryFeatures_[id]);\n }\n }\n }\n if (this.featuresCollection_) {\n this.featuresCollection_.clear();\n }\n if (this.featuresRtree_) {\n this.featuresRtree_.clear();\n }\n this.nullGeometryFeatures_ = {};\n var clearEvent = new VectorSourceEvent(VectorEventType.CLEAR);\n this.dispatchEvent(clearEvent);\n this.changed();\n };\n /**\n * Iterate through all features on the source, calling the provided callback\n * with each one. If the callback returns any \"truthy\" value, iteration will\n * stop and the function will return the same value.\n * Note: this function only iterate through the feature that have a defined geometry.\n *\n * @param {function(import(\"../Feature.js\").default): T} callback Called with each feature\n * on the source. Return a truthy value to stop iteration.\n * @return {T|undefined} The return value from the last call to the callback.\n * @template T\n * @api\n */\n VectorSource.prototype.forEachFeature = function (callback) {\n if (this.featuresRtree_) {\n return this.featuresRtree_.forEach(callback);\n }\n else if (this.featuresCollection_) {\n this.featuresCollection_.forEach(callback);\n }\n };\n /**\n * Iterate through all features whose geometries contain the provided\n * coordinate, calling the callback with each feature. If the callback returns\n * a \"truthy\" value, iteration will stop and the function will return the same\n * value.\n *\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {function(import(\"../Feature.js\").default): T} callback Called with each feature\n * whose goemetry contains the provided coordinate.\n * @return {T|undefined} The return value from the last call to the callback.\n * @template T\n */\n VectorSource.prototype.forEachFeatureAtCoordinateDirect = function (coordinate, callback) {\n var extent = [coordinate[0], coordinate[1], coordinate[0], coordinate[1]];\n return this.forEachFeatureInExtent(extent, function (feature) {\n var geometry = feature.getGeometry();\n if (geometry.intersectsCoordinate(coordinate)) {\n return callback(feature);\n }\n else {\n return undefined;\n }\n });\n };\n /**\n * Iterate through all features whose bounding box intersects the provided\n * extent (note that the feature's geometry may not intersect the extent),\n * calling the callback with each feature. If the callback returns a \"truthy\"\n * value, iteration will stop and the function will return the same value.\n *\n * If you are interested in features whose geometry intersects an extent, call\n * the {@link module:ol/source/Vector~VectorSource#forEachFeatureIntersectingExtent #forEachFeatureIntersectingExtent()} method instead.\n *\n * When `useSpatialIndex` is set to false, this method will loop through all\n * features, equivalent to {@link module:ol/source/Vector~VectorSource#forEachFeature #forEachFeature()}.\n *\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {function(import(\"../Feature.js\").default): T} callback Called with each feature\n * whose bounding box intersects the provided extent.\n * @return {T|undefined} The return value from the last call to the callback.\n * @template T\n * @api\n */\n VectorSource.prototype.forEachFeatureInExtent = function (extent, callback) {\n if (this.featuresRtree_) {\n return this.featuresRtree_.forEachInExtent(extent, callback);\n }\n else if (this.featuresCollection_) {\n this.featuresCollection_.forEach(callback);\n }\n };\n /**\n * Iterate through all features whose geometry intersects the provided extent,\n * calling the callback with each feature. If the callback returns a \"truthy\"\n * value, iteration will stop and the function will return the same value.\n *\n * If you only want to test for bounding box intersection, call the\n * {@link module:ol/source/Vector~VectorSource#forEachFeatureInExtent #forEachFeatureInExtent()} method instead.\n *\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {function(import(\"../Feature.js\").default): T} callback Called with each feature\n * whose geometry intersects the provided extent.\n * @return {T|undefined} The return value from the last call to the callback.\n * @template T\n * @api\n */\n VectorSource.prototype.forEachFeatureIntersectingExtent = function (extent, callback) {\n return this.forEachFeatureInExtent(extent, \n /**\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @return {T|undefined} The return value from the last call to the callback.\n */\n function (feature) {\n var geometry = feature.getGeometry();\n if (geometry.intersectsExtent(extent)) {\n var result = callback(feature);\n if (result) {\n return result;\n }\n }\n });\n };\n /**\n * Get the features collection associated with this source. Will be `null`\n * unless the source was configured with `useSpatialIndex` set to `false`, or\n * with an {@link module:ol/Collection} as `features`.\n * @return {Collection>} The collection of features.\n * @api\n */\n VectorSource.prototype.getFeaturesCollection = function () {\n return this.featuresCollection_;\n };\n /**\n * Get a snapshot of the features currently on the source in random order. The returned array\n * is a copy, the features are references to the features in the source.\n * @return {Array>} Features.\n * @api\n */\n VectorSource.prototype.getFeatures = function () {\n var features;\n if (this.featuresCollection_) {\n features = this.featuresCollection_.getArray().slice(0);\n }\n else if (this.featuresRtree_) {\n features = this.featuresRtree_.getAll();\n if (!isEmpty(this.nullGeometryFeatures_)) {\n extend(features, getValues(this.nullGeometryFeatures_));\n }\n }\n return /** @type {Array>} */ (features);\n };\n /**\n * Get all features whose geometry intersects the provided coordinate.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {Array>} Features.\n * @api\n */\n VectorSource.prototype.getFeaturesAtCoordinate = function (coordinate) {\n var features = [];\n this.forEachFeatureAtCoordinateDirect(coordinate, function (feature) {\n features.push(feature);\n });\n return features;\n };\n /**\n * Get all features whose bounding box intersects the provided extent. Note that this returns an array of\n * all features intersecting the given extent in random order (so it may include\n * features whose geometries do not intersect the extent).\n *\n * When `useSpatialIndex` is set to false, this method will return all\n * features.\n *\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {Array>} Features.\n * @api\n */\n VectorSource.prototype.getFeaturesInExtent = function (extent) {\n if (this.featuresRtree_) {\n return this.featuresRtree_.getInExtent(extent);\n }\n else if (this.featuresCollection_) {\n return this.featuresCollection_.getArray().slice(0);\n }\n else {\n return [];\n }\n };\n /**\n * Get the closest feature to the provided coordinate.\n *\n * This method is not available when the source is configured with\n * `useSpatialIndex` set to `false`.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {function(import(\"../Feature.js\").default):boolean} [opt_filter] Feature filter function.\n * The filter function will receive one argument, the {@link module:ol/Feature feature}\n * and it should return a boolean value. By default, no filtering is made.\n * @return {import(\"../Feature.js\").default} Closest feature.\n * @api\n */\n VectorSource.prototype.getClosestFeatureToCoordinate = function (coordinate, opt_filter) {\n // Find the closest feature using branch and bound. We start searching an\n // infinite extent, and find the distance from the first feature found. This\n // becomes the closest feature. We then compute a smaller extent which any\n // closer feature must intersect. We continue searching with this smaller\n // extent, trying to find a closer feature. Every time we find a closer\n // feature, we update the extent being searched so that any even closer\n // feature must intersect it. We continue until we run out of features.\n var x = coordinate[0];\n var y = coordinate[1];\n var closestFeature = null;\n var closestPoint = [NaN, NaN];\n var minSquaredDistance = Infinity;\n var extent = [-Infinity, -Infinity, Infinity, Infinity];\n var filter = opt_filter ? opt_filter : TRUE;\n this.featuresRtree_.forEachInExtent(extent, \n /**\n * @param {import(\"../Feature.js\").default} feature Feature.\n */\n function (feature) {\n if (filter(feature)) {\n var geometry = feature.getGeometry();\n var previousMinSquaredDistance = minSquaredDistance;\n minSquaredDistance = geometry.closestPointXY(x, y, closestPoint, minSquaredDistance);\n if (minSquaredDistance < previousMinSquaredDistance) {\n closestFeature = feature;\n // This is sneaky. Reduce the extent that it is currently being\n // searched while the R-Tree traversal using this same extent object\n // is still in progress. This is safe because the new extent is\n // strictly contained by the old extent.\n var minDistance = Math.sqrt(minSquaredDistance);\n extent[0] = x - minDistance;\n extent[1] = y - minDistance;\n extent[2] = x + minDistance;\n extent[3] = y + minDistance;\n }\n }\n });\n return closestFeature;\n };\n /**\n * Get the extent of the features currently in the source.\n *\n * This method is not available when the source is configured with\n * `useSpatialIndex` set to `false`.\n * @param {import(\"../extent.js\").Extent} [opt_extent] Destination extent. If provided, no new extent\n * will be created. Instead, that extent's coordinates will be overwritten.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n VectorSource.prototype.getExtent = function (opt_extent) {\n return this.featuresRtree_.getExtent(opt_extent);\n };\n /**\n * Get a feature by its identifier (the value returned by feature.getId()).\n * Note that the index treats string and numeric identifiers as the same. So\n * `source.getFeatureById(2)` will return a feature with id `'2'` or `2`.\n *\n * @param {string|number} id Feature identifier.\n * @return {import(\"../Feature.js\").default} The feature (or `null` if not found).\n * @api\n */\n VectorSource.prototype.getFeatureById = function (id) {\n var feature = this.idIndex_[id.toString()];\n return feature !== undefined ? feature : null;\n };\n /**\n * Get a feature by its internal unique identifier (using `getUid`).\n *\n * @param {string} uid Feature identifier.\n * @return {import(\"../Feature.js\").default} The feature (or `null` if not found).\n */\n VectorSource.prototype.getFeatureByUid = function (uid) {\n var feature = this.uidIndex_[uid];\n return feature !== undefined ? feature : null;\n };\n /**\n * Get the format associated with this source.\n *\n * @return {import(\"../format/Feature.js\").default|undefined} The feature format.\n * @api\n */\n VectorSource.prototype.getFormat = function () {\n return this.format_;\n };\n /**\n * @return {boolean} The source can have overlapping geometries.\n */\n VectorSource.prototype.getOverlaps = function () {\n return this.overlaps_;\n };\n /**\n * Get the url associated with this source.\n *\n * @return {string|import(\"../featureloader.js\").FeatureUrlFunction|undefined} The url.\n * @api\n */\n VectorSource.prototype.getUrl = function () {\n return this.url_;\n };\n /**\n * @param {Event} event Event.\n * @private\n */\n VectorSource.prototype.handleFeatureChange_ = function (event) {\n var feature = /** @type {import(\"../Feature.js\").default} */ (event.target);\n var featureKey = getUid(feature);\n var geometry = feature.getGeometry();\n if (!geometry) {\n if (!(featureKey in this.nullGeometryFeatures_)) {\n if (this.featuresRtree_) {\n this.featuresRtree_.remove(feature);\n }\n this.nullGeometryFeatures_[featureKey] = feature;\n }\n }\n else {\n var extent = geometry.getExtent();\n if (featureKey in this.nullGeometryFeatures_) {\n delete this.nullGeometryFeatures_[featureKey];\n if (this.featuresRtree_) {\n this.featuresRtree_.insert(extent, feature);\n }\n }\n else {\n if (this.featuresRtree_) {\n this.featuresRtree_.update(extent, feature);\n }\n }\n }\n var id = feature.getId();\n if (id !== undefined) {\n var sid = id.toString();\n if (this.idIndex_[sid] !== feature) {\n this.removeFromIdIndex_(feature);\n this.idIndex_[sid] = feature;\n }\n }\n else {\n this.removeFromIdIndex_(feature);\n this.uidIndex_[featureKey] = feature;\n }\n this.changed();\n this.dispatchEvent(new VectorSourceEvent(VectorEventType.CHANGEFEATURE, feature));\n };\n /**\n * Returns true if the feature is contained within the source.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @return {boolean} Has feature.\n * @api\n */\n VectorSource.prototype.hasFeature = function (feature) {\n var id = feature.getId();\n if (id !== undefined) {\n return id in this.idIndex_;\n }\n else {\n return getUid(feature) in this.uidIndex_;\n }\n };\n /**\n * @return {boolean} Is empty.\n */\n VectorSource.prototype.isEmpty = function () {\n return this.featuresRtree_.isEmpty() && isEmpty(this.nullGeometryFeatures_);\n };\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n */\n VectorSource.prototype.loadFeatures = function (extent, resolution, projection) {\n var loadedExtentsRtree = this.loadedExtentsRtree_;\n var extentsToLoad = this.strategy_(extent, resolution, projection);\n var _loop_1 = function (i, ii) {\n var extentToLoad = extentsToLoad[i];\n var alreadyLoaded = loadedExtentsRtree.forEachInExtent(extentToLoad, \n /**\n * @param {{extent: import(\"../extent.js\").Extent}} object Object.\n * @return {boolean} Contains.\n */\n function (object) {\n return containsExtent(object.extent, extentToLoad);\n });\n if (!alreadyLoaded) {\n ++this_1.loadingExtentsCount_;\n this_1.dispatchEvent(new VectorSourceEvent(VectorEventType.FEATURESLOADSTART));\n this_1.loader_.call(this_1, extentToLoad, resolution, projection, function (features) {\n --this.loadingExtentsCount_;\n this.dispatchEvent(new VectorSourceEvent(VectorEventType.FEATURESLOADEND, undefined, features));\n }.bind(this_1), function () {\n --this.loadingExtentsCount_;\n this.dispatchEvent(new VectorSourceEvent(VectorEventType.FEATURESLOADERROR));\n }.bind(this_1));\n loadedExtentsRtree.insert(extentToLoad, { extent: extentToLoad.slice() });\n }\n };\n var this_1 = this;\n for (var i = 0, ii = extentsToLoad.length; i < ii; ++i) {\n _loop_1(i, ii);\n }\n this.loading =\n this.loader_.length < 4 ? false : this.loadingExtentsCount_ > 0;\n };\n VectorSource.prototype.refresh = function () {\n this.clear(true);\n this.loadedExtentsRtree_.clear();\n _super.prototype.refresh.call(this);\n };\n /**\n * Remove an extent from the list of loaded extents.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n VectorSource.prototype.removeLoadedExtent = function (extent) {\n var loadedExtentsRtree = this.loadedExtentsRtree_;\n var obj;\n loadedExtentsRtree.forEachInExtent(extent, function (object) {\n if (equals(object.extent, extent)) {\n obj = object;\n return true;\n }\n });\n if (obj) {\n loadedExtentsRtree.remove(obj);\n }\n };\n /**\n * Remove a single feature from the source. If you want to remove all features\n * at once, use the {@link module:ol/source/Vector~VectorSource#clear #clear()} method\n * instead.\n * @param {import(\"../Feature.js\").default} feature Feature to remove.\n * @api\n */\n VectorSource.prototype.removeFeature = function (feature) {\n if (!feature) {\n return;\n }\n var featureKey = getUid(feature);\n if (featureKey in this.nullGeometryFeatures_) {\n delete this.nullGeometryFeatures_[featureKey];\n }\n else {\n if (this.featuresRtree_) {\n this.featuresRtree_.remove(feature);\n }\n }\n var result = this.removeFeatureInternal(feature);\n if (result) {\n this.changed();\n }\n };\n /**\n * Remove feature without firing a `change` event.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @return {import(\"../Feature.js\").default|undefined} The removed feature\n * (or undefined if the feature was not found).\n * @protected\n */\n VectorSource.prototype.removeFeatureInternal = function (feature) {\n var featureKey = getUid(feature);\n var featureChangeKeys = this.featureChangeKeys_[featureKey];\n if (!featureChangeKeys) {\n return;\n }\n featureChangeKeys.forEach(unlistenByKey);\n delete this.featureChangeKeys_[featureKey];\n var id = feature.getId();\n if (id !== undefined) {\n delete this.idIndex_[id.toString()];\n }\n delete this.uidIndex_[featureKey];\n this.dispatchEvent(new VectorSourceEvent(VectorEventType.REMOVEFEATURE, feature));\n return feature;\n };\n /**\n * Remove a feature from the id index. Called internally when the feature id\n * may have changed.\n * @param {import(\"../Feature.js\").default} feature The feature.\n * @return {boolean} Removed the feature from the index.\n * @private\n */\n VectorSource.prototype.removeFromIdIndex_ = function (feature) {\n var removed = false;\n for (var id in this.idIndex_) {\n if (this.idIndex_[id] === feature) {\n delete this.idIndex_[id];\n removed = true;\n break;\n }\n }\n return removed;\n };\n /**\n * Set the new loader of the source. The next render cycle will use the\n * new loader.\n * @param {import(\"../featureloader.js\").FeatureLoader} loader The loader to set.\n * @api\n */\n VectorSource.prototype.setLoader = function (loader) {\n this.loader_ = loader;\n };\n /**\n * Points the source to a new url. The next render cycle will use the new url.\n * @param {string|import(\"../featureloader.js\").FeatureUrlFunction} url Url.\n * @api\n */\n VectorSource.prototype.setUrl = function (url) {\n assert(this.format_, 7); // `format` must be set when `url` is set\n this.url_ = url;\n this.setLoader(xhr(url, this.format_));\n };\n return VectorSource;\n}(Source));\nexport default VectorSource;\n//# sourceMappingURL=Vector.js.map","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","/**\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/***\n * @typedef {'postrender'|'movestart'|'moveend'} Types\n */\n//# sourceMappingURL=MapEventType.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 +=\n stride *\n Math.max(((Math.sqrt(squaredDistance) - Math.sqrt(minSquaredDistance)) /\n maxDelta) |\n 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/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","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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { assignClosestPoint, maxSquaredDelta } from './flat/closest.js';\nimport { closestSquaredDistanceXY } from '../extent.js';\nimport { deflateCoordinates } from './flat/deflate.js';\nimport { douglasPeucker } from './flat/simplify.js';\nimport { inflateCoordinates } from './flat/inflate.js';\nimport { linearRing as linearRingArea } from './flat/area.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 {import(\"./GeometryLayout.js\").default} [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, \n /** @type {Array} */ (coordinates));\n }\n else {\n _this.setCoordinates(\n /** @type {Array} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Make a complete copy of the geometry.\n * @return {!LinearRing} Clone.\n * @api\n */\n LinearRing.prototype.clone = function () {\n return new LinearRing(this.flatCoordinates.slice(), this.layout);\n };\n /**\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 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 * @api\n */\n LinearRing.prototype.getCoordinates = function () {\n return inflateCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {LinearRing} Simplified LinearRing.\n * @protected\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 * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n LinearRing.prototype.getType = function () {\n return GeometryType.LINEAR_RING;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\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 {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\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 // https://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 { linearRingsContainsXY } from './contains.js';\nimport { numberSafeCompareFunction } from '../../array.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 ret;\n offset += stride;\n for (; offset < end; offset += stride) {\n ret = callback(flatCoordinates.slice(offset - stride, offset), flatCoordinates.slice(offset, offset + stride));\n if (ret) {\n return ret;\n }\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 { forEach as forEachSegment } from './segments.js';\nimport { linearRingContainsExtent, linearRingContainsXY } from './contains.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] && coordinatesExtent[2] <= extent[2]) {\n return true;\n }\n if (coordinatesExtent[1] >= extent[1] && 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 * Is the linear ring oriented clockwise in a coordinate system with a bottom-left\n * coordinate origin? For a coordinate system with a top-left coordinate origin,\n * the ring's orientation is clockwise when this 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 * @return {boolean} Is clockwise.\n */\nexport function linearRingIsClockwise(flatCoordinates, offset, end, stride) {\n // https://stackoverflow.com/q/1165647/clockwise-method#1165943\n // https://github.com/OSGeo/gdal/blob/master/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 ? undefined : 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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 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 { arrayMaxSquaredDelta, assignClosestArrayPoint } from './flat/closest.js';\nimport { closestSquaredDistanceXY, getCenter } from '../extent.js';\nimport { deflateCoordinatesArray } from './flat/deflate.js';\nimport { extend } from '../array.js';\nimport { getInteriorPointOfArray } from './flat/interiorpoint.js';\nimport { inflateCoordinatesArray } from './flat/inflate.js';\nimport { intersectsLinearRingArray } from './flat/intersectsextent.js';\nimport { linearRingsAreOriented, orientLinearRings } from './flat/orient.js';\nimport { linearRings as linearRingsArea } from './flat/area.js';\nimport { linearRingsContainsXY } from './flat/contains.js';\nimport { modulo } from '../math.js';\nimport { quantizeArray } from './flat/simplify.js';\nimport { offset as sphereOffset } from '../sphere.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 {import(\"./GeometryLayout.js\").default} [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, \n /** @type {Array} */ (coordinates));\n _this.ends_ = opt_ends;\n }\n else {\n _this.setCoordinates(\n /** @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 * @api\n */\n Polygon.prototype.clone = function () {\n var polygon = new Polygon(this.flatCoordinates.slice(), this.layout, this.ends_.slice());\n polygon.applyProperties(this);\n return polygon;\n };\n /**\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 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 * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\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 * @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 = orientLinearRings(this.orientedFlatCoordinates_, 0, this.ends_, this.stride);\n }\n this.orientedRevision_ = this.getRevision();\n }\n return this.orientedFlatCoordinates_;\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Polygon} Simplified Polygon.\n * @protected\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 * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n Polygon.prototype.getType = function () {\n return GeometryType.POLYGON;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\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 {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\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 in meters.\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, [\n flatCoordinates.length,\n ]);\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 = [\n minX,\n minY,\n minX,\n maxY,\n maxX,\n maxY,\n maxX,\n minY,\n minX,\n minY,\n ];\n return new Polygon(flatCoordinates, GeometryLayout.XY, [\n flatCoordinates.length,\n ]);\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 * counter-clockwise radians. 0 means East. 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 * counter-clockwise radians. 0 means East. 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","/**\n * @module ol/color\n */\nimport { assert } from './asserts.js';\nimport { clamp } from './math.js';\n/**\n * A color represented as a short array [red, green, blue, alpha].\n * red, green, and blue should be integers in the range 0..255 inclusive.\n * alpha should be a float in the range 0..1 inclusive. If no alpha value is\n * given then `1` will be used.\n * @typedef {Array} Color\n * @api\n */\n/**\n * This RegExp matches # followed by 3, 4, 6, or 8 hex digits.\n * @const\n * @type {RegExp}\n * @private\n */\nvar HEX_COLOR_RE_ = /^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i;\n/**\n * Regular expression for matching potential named color style strings.\n * @const\n * @type {RegExp}\n * @private\n */\nvar NAMED_COLOR_RE_ = /^([a-z]*)$|^hsla?\\(.*\\)$/i;\n/**\n * Return the color as an rgba string.\n * @param {Color|string} color Color.\n * @return {string} Rgba string.\n * @api\n */\nexport function asString(color) {\n if (typeof color === 'string') {\n return color;\n }\n else {\n return toString(color);\n }\n}\n/**\n * Return named color as an rgba string.\n * @param {string} color Named color.\n * @return {string} Rgb string.\n */\nfunction fromNamed(color) {\n var el = document.createElement('div');\n el.style.color = color;\n if (el.style.color !== '') {\n document.body.appendChild(el);\n var rgb = getComputedStyle(el).color;\n document.body.removeChild(el);\n return rgb;\n }\n else {\n return '';\n }\n}\n/**\n * @param {string} s String.\n * @return {Color} Color.\n */\nexport var fromString = (function () {\n // We maintain a small cache of parsed strings. To provide cheap LRU-like\n // semantics, whenever the cache grows too large we simply delete an\n // arbitrary 25% of the entries.\n /**\n * @const\n * @type {number}\n */\n var MAX_CACHE_SIZE = 1024;\n /**\n * @type {Object}\n */\n var cache = {};\n /**\n * @type {number}\n */\n var cacheSize = 0;\n return (\n /**\n * @param {string} s String.\n * @return {Color} Color.\n */\n function (s) {\n var color;\n if (cache.hasOwnProperty(s)) {\n color = cache[s];\n }\n else {\n if (cacheSize >= MAX_CACHE_SIZE) {\n var i = 0;\n for (var key in cache) {\n if ((i++ & 3) === 0) {\n delete cache[key];\n --cacheSize;\n }\n }\n }\n color = fromStringInternal_(s);\n cache[s] = color;\n ++cacheSize;\n }\n return color;\n });\n})();\n/**\n * Return the color as an array. This function maintains a cache of calculated\n * arrays which means the result should not be modified.\n * @param {Color|string} color Color.\n * @return {Color} Color.\n * @api\n */\nexport function asArray(color) {\n if (Array.isArray(color)) {\n return color;\n }\n else {\n return fromString(color);\n }\n}\n/**\n * @param {string} s String.\n * @private\n * @return {Color} Color.\n */\nfunction fromStringInternal_(s) {\n var r, g, b, a, color;\n if (NAMED_COLOR_RE_.exec(s)) {\n s = fromNamed(s);\n }\n if (HEX_COLOR_RE_.exec(s)) {\n // hex\n var n = s.length - 1; // number of hex digits\n var d = // number of digits per channel\n void 0; // number of digits per channel\n if (n <= 4) {\n d = 1;\n }\n else {\n d = 2;\n }\n var hasAlpha = n === 4 || n === 8;\n r = parseInt(s.substr(1 + 0 * d, d), 16);\n g = parseInt(s.substr(1 + 1 * d, d), 16);\n b = parseInt(s.substr(1 + 2 * d, d), 16);\n if (hasAlpha) {\n a = parseInt(s.substr(1 + 3 * d, d), 16);\n }\n else {\n a = 255;\n }\n if (d == 1) {\n r = (r << 4) + r;\n g = (g << 4) + g;\n b = (b << 4) + b;\n if (hasAlpha) {\n a = (a << 4) + a;\n }\n }\n color = [r, g, b, a / 255];\n }\n else if (s.indexOf('rgba(') == 0) {\n // rgba()\n color = s.slice(5, -1).split(',').map(Number);\n normalize(color);\n }\n else if (s.indexOf('rgb(') == 0) {\n // rgb()\n color = s.slice(4, -1).split(',').map(Number);\n color.push(1);\n normalize(color);\n }\n else {\n assert(false, 14); // Invalid color\n }\n return color;\n}\n/**\n * TODO this function is only used in the test, we probably shouldn't export it\n * @param {Color} color Color.\n * @return {Color} Clamped color.\n */\nexport function normalize(color) {\n color[0] = clamp((color[0] + 0.5) | 0, 0, 255);\n color[1] = clamp((color[1] + 0.5) | 0, 0, 255);\n color[2] = clamp((color[2] + 0.5) | 0, 0, 255);\n color[3] = clamp(color[3], 0, 1);\n return color;\n}\n/**\n * @param {Color} color Color.\n * @return {string} String.\n */\nexport function toString(color) {\n var r = color[0];\n if (r != (r | 0)) {\n r = (r + 0.5) | 0;\n }\n var g = color[1];\n if (g != (g | 0)) {\n g = (g + 0.5) | 0;\n }\n var b = color[2];\n if (b != (b | 0)) {\n b = (b + 0.5) | 0;\n }\n var a = color[3] === undefined ? 1 : Math.round(color[3] * 100) / 100;\n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n}\n/**\n * @param {string} s String.\n * @return {boolean} Whether the string is actually a valid color\n */\nexport function isStringColor(s) {\n if (NAMED_COLOR_RE_.test(s)) {\n s = fromNamed(s);\n }\n return (HEX_COLOR_RE_.test(s) || s.indexOf('rgba(') === 0 || s.indexOf('rgb(') === 0);\n}\n//# sourceMappingURL=color.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/renderer/Map\n */\nimport Disposable from '../Disposable.js';\nimport { TRUE } from '../functions.js';\nimport { abstract } from '../util.js';\nimport { compose as composeTransform, makeInverse } from '../transform.js';\nimport { getWidth } from '../extent.js';\nimport { shared as iconImageCache } from '../style/IconImageCache.js';\nimport { inView } from '../layer/Layer.js';\nimport { wrapX } from '../coordinate.js';\n/**\n * @typedef HitMatch\n * @property {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @property {import(\"../layer/Layer.js\").default} layer Layer.\n * @property {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @property {number} distanceSq Squared distance.\n * @property {import(\"./vector.js\").FeatureCallback} callback Callback.\n * @template T\n */\n/**\n * @abstract\n */\nvar MapRenderer = /** @class */ (function (_super) {\n __extends(MapRenderer, _super);\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n function MapRenderer(map) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = map;\n return _this;\n }\n /**\n * @abstract\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n MapRenderer.prototype.dispatchRenderEvent = function (type, frameState) {\n abstract();\n };\n /**\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @protected\n */\n MapRenderer.prototype.calculateMatrices2D = function (frameState) {\n var viewState = frameState.viewState;\n var coordinateToPixelTransform = frameState.coordinateToPixelTransform;\n var pixelToCoordinateTransform = frameState.pixelToCoordinateTransform;\n composeTransform(coordinateToPixelTransform, frameState.size[0] / 2, frameState.size[1] / 2, 1 / viewState.resolution, -1 / viewState.resolution, -viewState.rotation, -viewState.center[0], -viewState.center[1]);\n makeInverse(pixelToCoordinateTransform, coordinateToPixelTransform);\n };\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {import(\"./vector.js\").FeatureCallback} callback Feature callback.\n * @param {S} thisArg Value to use as `this` when executing `callback`.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg2 Value to use as `this` when executing `layerFilter`.\n * @return {T|undefined} Callback result.\n * @template S,T,U\n */\n MapRenderer.prototype.forEachFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, checkWrapped, callback, thisArg, layerFilter, thisArg2) {\n var result;\n var viewState = frameState.viewState;\n /**\n * @param {boolean} managed Managed layer.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../layer/Layer.js\").default} layer Layer.\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @return {T|undefined} Callback result.\n */\n function forEachFeatureAtCoordinate(managed, feature, layer, geometry) {\n return callback.call(thisArg, feature, managed ? layer : null, geometry);\n }\n var projection = viewState.projection;\n var translatedCoordinate = wrapX(coordinate.slice(), projection);\n var offsets = [[0, 0]];\n if (projection.canWrapX() && checkWrapped) {\n var projectionExtent = projection.getExtent();\n var worldWidth = getWidth(projectionExtent);\n offsets.push([-worldWidth, 0], [worldWidth, 0]);\n }\n var layerStates = frameState.layerStatesArray;\n var numLayers = layerStates.length;\n var matches = /** @type {Array>} */ ([]);\n var tmpCoord = [];\n for (var i = 0; i < offsets.length; i++) {\n for (var j = numLayers - 1; j >= 0; --j) {\n var layerState = layerStates[j];\n var layer = layerState.layer;\n if (layer.hasRenderer() &&\n inView(layerState, viewState) &&\n layerFilter.call(thisArg2, layer)) {\n var layerRenderer = layer.getRenderer();\n var source = layer.getSource();\n if (layerRenderer && source) {\n var coordinates = source.getWrapX()\n ? translatedCoordinate\n : coordinate;\n var callback_1 = forEachFeatureAtCoordinate.bind(null, layerState.managed);\n tmpCoord[0] = coordinates[0] + offsets[i][0];\n tmpCoord[1] = coordinates[1] + offsets[i][1];\n result = layerRenderer.forEachFeatureAtCoordinate(tmpCoord, frameState, hitTolerance, callback_1, matches);\n }\n if (result) {\n return result;\n }\n }\n }\n }\n if (matches.length === 0) {\n return undefined;\n }\n var order = 1 / matches.length;\n matches.forEach(function (m, i) { return (m.distanceSq += i * order); });\n matches.sort(function (a, b) { return a.distanceSq - b.distanceSq; });\n matches.some(function (m) {\n return (result = m.callback(m.feature, m.layer, m.geometry));\n });\n return result;\n };\n /**\n * @abstract\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {function(import(\"../layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback Layer\n * callback.\n * @param {function(import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @return {T|undefined} Callback result.\n * @template T\n */\n MapRenderer.prototype.forEachLayerAtPixel = function (pixel, frameState, hitTolerance, callback, layerFilter) {\n return abstract();\n };\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg Value to use as `this` when executing `layerFilter`.\n * @return {boolean} Is there a feature at the given coordinate?\n * @template U\n */\n MapRenderer.prototype.hasFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, checkWrapped, layerFilter, thisArg) {\n var hasFeature = this.forEachFeatureAtCoordinate(coordinate, frameState, hitTolerance, checkWrapped, TRUE, this, layerFilter, thisArg);\n return hasFeature !== undefined;\n };\n /**\n * @return {import(\"../PluggableMap.js\").default} Map.\n */\n MapRenderer.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Render.\n * @abstract\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n MapRenderer.prototype.renderFrame = function (frameState) {\n abstract();\n };\n /**\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @protected\n */\n MapRenderer.prototype.scheduleExpireIconCache = function (frameState) {\n if (iconImageCache.canExpireCache()) {\n frameState.postRenderFunctions.push(expireIconCache);\n }\n };\n return MapRenderer;\n}(Disposable));\n/**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\nfunction expireIconCache(map, frameState) {\n iconImageCache.expire();\n}\nexport default MapRenderer;\n//# sourceMappingURL=Map.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/renderer/Composite\n */\nimport MapRenderer from './Map.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport RenderEvent from '../render/Event.js';\nimport RenderEventType from '../render/EventType.js';\nimport SourceState from '../source/State.js';\nimport { CLASS_UNSELECTABLE } from '../css.js';\nimport { checkedFonts } from '../render/canvas.js';\nimport { inView } from '../layer/Layer.js';\nimport { listen, unlistenByKey } from '../events.js';\nimport { replaceChildren } from '../dom.js';\n/**\n * @classdesc\n * Canvas map renderer.\n * @api\n */\nvar CompositeMapRenderer = /** @class */ (function (_super) {\n __extends(CompositeMapRenderer, _super);\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n function CompositeMapRenderer(map) {\n var _this = _super.call(this, map) || this;\n /**\n * @type {import(\"../events.js\").EventsKey}\n */\n _this.fontChangeListenerKey_ = listen(checkedFonts, ObjectEventType.PROPERTYCHANGE, map.redrawText.bind(map));\n /**\n * @private\n * @type {HTMLDivElement}\n */\n _this.element_ = document.createElement('div');\n var style = _this.element_.style;\n style.position = 'absolute';\n style.width = '100%';\n style.height = '100%';\n style.zIndex = '0';\n _this.element_.className = CLASS_UNSELECTABLE + ' ol-layers';\n var container = map.getViewport();\n container.insertBefore(_this.element_, container.firstChild || null);\n /**\n * @private\n * @type {Array}\n */\n _this.children_ = [];\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = true;\n return _this;\n }\n /**\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n CompositeMapRenderer.prototype.dispatchRenderEvent = function (type, frameState) {\n var map = this.getMap();\n if (map.hasListener(type)) {\n var event_1 = new RenderEvent(type, undefined, frameState);\n map.dispatchEvent(event_1);\n }\n };\n CompositeMapRenderer.prototype.disposeInternal = function () {\n unlistenByKey(this.fontChangeListenerKey_);\n this.element_.parentNode.removeChild(this.element_);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Render.\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n CompositeMapRenderer.prototype.renderFrame = function (frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element_.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n this.calculateMatrices2D(frameState);\n this.dispatchRenderEvent(RenderEventType.PRECOMPOSE, frameState);\n var layerStatesArray = frameState.layerStatesArray.sort(function (a, b) {\n return a.zIndex - b.zIndex;\n });\n var viewState = frameState.viewState;\n this.children_.length = 0;\n /**\n * @type {Array}\n */\n var declutterLayers = [];\n var previousElement = null;\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layerState = layerStatesArray[i];\n frameState.layerIndex = i;\n if (!inView(layerState, viewState) ||\n (layerState.sourceState != SourceState.READY &&\n layerState.sourceState != SourceState.UNDEFINED)) {\n continue;\n }\n var layer = layerState.layer;\n var element = layer.render(frameState, previousElement);\n if (!element) {\n continue;\n }\n if (element !== previousElement) {\n this.children_.push(element);\n previousElement = element;\n }\n if ('getDeclutter' in layer) {\n declutterLayers.push(\n /** @type {import(\"../layer/BaseVector.js\").default} */ (layer));\n }\n }\n for (var i = declutterLayers.length - 1; i >= 0; --i) {\n declutterLayers[i].renderDeclutter(frameState);\n }\n replaceChildren(this.element_, this.children_);\n this.dispatchRenderEvent(RenderEventType.POSTCOMPOSE, frameState);\n if (!this.renderedVisible_) {\n this.element_.style.display = '';\n this.renderedVisible_ = true;\n }\n this.scheduleExpireIconCache(frameState);\n };\n /**\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {function(import(\"../layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback Layer\n * callback.\n * @param {function(import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @return {T|undefined} Callback result.\n * @template T\n */\n CompositeMapRenderer.prototype.forEachLayerAtPixel = function (pixel, frameState, hitTolerance, callback, layerFilter) {\n var viewState = frameState.viewState;\n var layerStates = frameState.layerStatesArray;\n var numLayers = layerStates.length;\n for (var i = numLayers - 1; i >= 0; --i) {\n var layerState = layerStates[i];\n var layer = layerState.layer;\n if (layer.hasRenderer() &&\n inView(layerState, viewState) &&\n layerFilter(layer)) {\n var layerRenderer = layer.getRenderer();\n var data = layerRenderer.getDataAtPixel(pixel, frameState, hitTolerance);\n if (data) {\n var result = callback(layer, data);\n if (result) {\n return result;\n }\n }\n }\n }\n return undefined;\n };\n return CompositeMapRenderer;\n}(MapRenderer));\nexport default CompositeMapRenderer;\n//# sourceMappingURL=Composite.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 BaseLayer from './Base.js';\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport Event from '../events/Event.js';\nimport EventType from '../events/EventType.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport SourceState from '../source/State.js';\nimport { assert } from '../asserts.js';\nimport { assign, clear } from '../obj.js';\nimport { getIntersection } from '../extent.js';\nimport { getUid } from '../util.js';\nimport { listen, unlistenByKey } from '../events.js';\n/**\n * @typedef {'addlayer'|'removelayer'} EventType\n */\n/**\n * @classdesc\n * A layer group triggers 'addlayer' and 'removelayer' events when layers are added to or removed from\n * the group or one of its child groups. When a layer group is added to or removed from another layer group,\n * a single event will be triggered (instead of one per layer in the group added or removed).\n */\nvar GroupEvent = /** @class */ (function (_super) {\n __extends(GroupEvent, _super);\n /**\n * @param {EventType} type The event type.\n * @param {BaseLayer} layer The layer.\n */\n function GroupEvent(type, layer) {\n var _this = _super.call(this, type) || this;\n /**\n * The added or removed layer.\n * @type {BaseLayer}\n * @api\n */\n _this.layer = layer;\n return _this;\n }\n return GroupEvent;\n}(Event));\nexport { GroupEvent };\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} GroupOnSignature\n */\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 * @property {Object} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\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 * @type {GroupOnSignature}\n */\n _this.on;\n /***\n * @type {GroupOnSignature}\n */\n _this.once;\n /***\n * @type {GroupOnSignature}\n */\n _this.un;\n /**\n * @private\n * @type {Array}\n */\n _this.layersListenerKeys_ = [];\n /**\n * @private\n * @type {Object>}\n */\n _this.listenerKeys_ = {};\n _this.addChangeListener(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.registerLayerListeners_(layer);\n this.dispatchEvent(new GroupEvent('addlayer', layer));\n }\n this.changed();\n };\n /**\n * @param {BaseLayer} layer The layer.\n */\n LayerGroup.prototype.registerLayerListeners_ = function (layer) {\n var listenerKeys = [\n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this),\n ];\n if (layer instanceof LayerGroup) {\n listenerKeys.push(listen(layer, 'addlayer', this.handleLayerGroupAdd_, this), listen(layer, 'removelayer', this.handleLayerGroupRemove_, this));\n }\n this.listenerKeys_[getUid(layer)] = listenerKeys;\n };\n /**\n * @param {GroupEvent} event The layer group event.\n */\n LayerGroup.prototype.handleLayerGroupAdd_ = function (event) {\n this.dispatchEvent(new GroupEvent('addlayer', event.layer));\n };\n /**\n * @param {GroupEvent} event The layer group event.\n */\n LayerGroup.prototype.handleLayerGroupRemove_ = function (event) {\n this.dispatchEvent(new GroupEvent('removelayer', event.layer));\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.registerLayerListeners_(layer);\n this.dispatchEvent(new GroupEvent('addlayer', layer));\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.dispatchEvent(new GroupEvent('removelayer', layer));\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 /** @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 var collection = this.getLayers();\n if (collection) {\n var currentLayers = collection.getArray();\n for (var i = 0, ii = currentLayers.length; i < ii; ++i) {\n this.dispatchEvent(new GroupEvent('removelayer', currentLayers[i]));\n }\n }\n this.set(Property.LAYERS, layers);\n };\n /**\n * @param {Array} [opt_array] Array of layers (to be modified in place).\n * @return {Array} Array of layers.\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 * Get the layer states list and use this groups z-index as the default\n * for all layers in this and nested groups, if it is unset at this point.\n * If opt_states is not provided and this group's z-index is undefined\n * 0 is used a the default z-index.\n * @param {Array} [opt_states] Optional list\n * of layer states (to be modified in place).\n * @return {Array} List of layer states.\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 var defaultZIndex = ownLayerState.zIndex;\n if (!opt_states && ownLayerState.zIndex === undefined) {\n defaultZIndex = 0;\n }\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 if (layerState.zIndex === undefined) {\n layerState.zIndex = defaultZIndex;\n }\n }\n return states;\n };\n /**\n * @return {import(\"../source/State.js\").default} Source state.\n */\n LayerGroup.prototype.getSourceState = function () {\n return SourceState.READY;\n };\n return LayerGroup;\n}(BaseLayer));\nexport default LayerGroup;\n//# sourceMappingURL=Group.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 * @template {UIEvent} 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} originalEvent Original 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, originalEvent, 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 = originalEvent;\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 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: false,\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: false,\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 * @api\n */\n MapBrowserEvent.prototype.preventDefault = function () {\n _super.prototype.preventDefault.call(this);\n if ('preventDefault' in this.originalEvent) {\n /** @type {UIEvent} */ (this.originalEvent).preventDefault();\n }\n };\n /**\n * Prevents further propagation of the current event.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation.\n * @api\n */\n MapBrowserEvent.prototype.stopPropagation = function () {\n _super.prototype.stopPropagation.call(this);\n if ('stopPropagation' in this.originalEvent) {\n /** @type {UIEvent} */ (this.originalEvent).stopPropagation();\n }\n };\n return MapBrowserEvent;\n}(MapEvent));\nexport default MapBrowserEvent;\n//# sourceMappingURL=MapBrowserEvent.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/***\n * @typedef {'singleclick'|'click'|'dblclick'|'pointerdrag'|'pointermove'} Types\n */\n//# sourceMappingURL=MapBrowserEventType.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport EventType from './events/EventType.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport Target from './events/Target.js';\nimport { PASSIVE_EVENT_LISTENERS } from './has.js';\nimport { VOID } from './functions.js';\nimport { listen, unlistenByKey } from './events.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 * Emulate dblclick and singleclick. Will be true when only one pointer is active.\n * @type {boolean}\n */\n _this.emulateClicks_ = false;\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 === undefined ? 1 : moveTolerance;\n /**\n * The most recent \"down\" type event (or null if none have occurred).\n * Set on pointerdown.\n * @type {PointerEvent}\n * @private\n */\n _this.down_ = null;\n var element = _this.map_.getViewport();\n /**\n * @type {number}\n * @private\n */\n _this.activePointers_ = 0;\n /**\n * @type {!Object}\n * @private\n */\n _this.trackedTouches_ = {};\n _this.element_ = element;\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.pointerdownListenerKey_ = listen(element, PointerEventType.POINTERDOWN, _this.handlePointerDown_, _this);\n /**\n * @type {PointerEvent}\n * @private\n */\n _this.originalPointerMoveEvent_;\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.relayedListenerKey_ = listen(element, PointerEventType.POINTERMOVE, _this.relayEvent_, _this);\n /**\n * @private\n */\n _this.boundHandleTouchMove_ = _this.handleTouchMove_.bind(_this);\n _this.element_.addEventListener(EventType.TOUCHMOVE, _this.boundHandleTouchMove_, PASSIVE_EVENT_LISTENERS ? { passive: false } : false);\n return _this;\n }\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.emulateClick_ = function (pointerEvent) {\n var newEvent = new MapBrowserEvent(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 MapBrowserEvent(MapBrowserEventType.DBLCLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }\n else {\n // click\n this.clickTimeoutId_ = setTimeout(\n /** @this {MapBrowserEventHandler} */\n function () {\n this.clickTimeoutId_ = undefined;\n var newEvent = new MapBrowserEvent(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 MapBrowserEvent(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.preventDefault().\n if (this.emulateClicks_ &&\n !newEvent.defaultPrevented &&\n !this.dragging_ &&\n 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.emulateClicks_ = this.activePointers_ === 0;\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserEvent(MapBrowserEventType.POINTERDOWN, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n // Store a copy of the down event\n this.down_ = /** @type {PointerEvent} */ ({});\n for (var property in pointerEvent) {\n var value = pointerEvent[property];\n this.down_[property] = typeof value === 'function' ? VOID : value;\n }\n if (this.dragListenerKeys_.length === 0) {\n var doc = this.map_.getOwnerDocument();\n this.dragListenerKeys_.push(listen(doc, MapBrowserEventType.POINTERMOVE, this.handlePointerMove_, this), listen(doc, 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 if (this.element_.getRootNode && this.element_.getRootNode() !== doc) {\n this.dragListenerKeys_.push(listen(this.element_.getRootNode(), MapBrowserEventType.POINTERUP, this.handlePointerUp_, this));\n }\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 MapBrowserEvent(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 MapBrowserEvent matches the PointerEvent type.\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.relayEvent_ = function (pointerEvent) {\n this.originalPointerMoveEvent_ = pointerEvent;\n var dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n this.dispatchEvent(new MapBrowserEvent(pointerEvent.type, this.map_, pointerEvent, dragging));\n };\n /**\n * Flexible handling of a `touch-action: none` css equivalent: because calling\n * `preventDefault()` on a `pointermove` event does not stop native page scrolling\n * and zooming, we also listen for `touchmove` and call `preventDefault()` on it\n * when an interaction (currently `DragPan` handles the event.\n * @param {TouchEvent} event Event.\n * @private\n */\n MapBrowserEventHandler.prototype.handleTouchMove_ = function (event) {\n // Due to https://github.com/mpizenberg/elm-pep/issues/2, `this.originalPointerMoveEvent_`\n // may not be initialized yet when we get here on a platform without native pointer events.\n var originalEvent = this.originalPointerMoveEvent_;\n if ((!originalEvent || originalEvent.defaultPrevented) &&\n (typeof event.cancelable !== 'boolean' || event.cancelable === true)) {\n event.preventDefault();\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} Is moving.\n * @private\n */\n MapBrowserEventHandler.prototype.isMoving_ = function (pointerEvent) {\n return (this.dragging_ ||\n Math.abs(pointerEvent.clientX - this.down_.clientX) >\n this.moveTolerance_ ||\n Math.abs(pointerEvent.clientY - this.down_.clientY) > this.moveTolerance_);\n };\n /**\n * Clean up.\n */\n MapBrowserEventHandler.prototype.disposeInternal = function () {\n if (this.relayedListenerKey_) {\n unlistenByKey(this.relayedListenerKey_);\n this.relayedListenerKey_ = null;\n }\n this.element_.removeEventListener(EventType.TOUCHMOVE, this.boundHandleTouchMove_);\n if (this.pointerdownListenerKey_) {\n unlistenByKey(this.pointerdownListenerKey_);\n this.pointerdownListenerKey_ = null;\n }\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.element_ = null;\n _super.prototype.disposeInternal.call(this);\n };\n return MapBrowserEventHandler;\n}(Target));\nexport default MapBrowserEventHandler;\n//# sourceMappingURL=MapBrowserEventHandler.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 https://github.com/google/closure-library/blob/master/closure/goog/structs/heap.js\n * and https://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 && priorities[rIndex] < priorities[lIndex]\n ? rIndex\n : 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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 EventType from './events/EventType.js';\nimport PriorityQueue, { DROP } from './structs/PriorityQueue.js';\nimport TileState from './TileState.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 * @param {Array} element Element.\n * @return {boolean} The element was added to the queue.\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 (state === TileState.LOADED ||\n state === TileState.ERROR ||\n state === TileState.EMPTY) {\n tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n var tileKey = tile.getKey();\n if (tileKey in this.tilesLoadingKeys_) {\n delete this.tilesLoadingKeys_[tileKey];\n --this.tilesLoading_;\n }\n this.tileChangeCallback_();\n }\n };\n /**\n * @param {number} maxTotalLoading Maximum number tiles to load simultaneously.\n * @param {number} maxNewLoads Maximum number of new tiles to load.\n */\n TileQueue.prototype.loadMoreTiles = function (maxTotalLoading, maxNewLoads) {\n var newLoads = 0;\n var state, tile, tileKey;\n while (this.tilesLoading_ < maxTotalLoading &&\n newLoads < maxNewLoads &&\n this.getCount() > 0) {\n tile = /** @type {import(\"./Tile.js\").default} */ (this.dequeue()[0]);\n tileKey = tile.getKey();\n state = tile.getState();\n if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {\n this.tilesLoadingKeys_[tileKey] = true;\n ++this.tilesLoading_;\n ++newLoads;\n tile.load();\n }\n }\n };\n return TileQueue;\n}(PriorityQueue));\nexport default TileQueue;\n/**\n * @param {import('./PluggableMap.js').FrameState} frameState Frame state.\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 */\nexport function getTilePriority(frameState, 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 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//# sourceMappingURL=TileQueue.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 BaseObject from './Object.js';\nimport Collection from './Collection.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport EventType from './events/EventType.js';\nimport Layer from './layer/Layer.js';\nimport LayerGroup, { GroupEvent } from './layer/Group.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 ObjectEventType from './ObjectEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport RenderEventType from './render/EventType.js';\nimport TileQueue, { getTilePriority } from './TileQueue.js';\nimport View from './View.js';\nimport ViewHint from './ViewHint.js';\nimport { DEVICE_PIXEL_RATIO, PASSIVE_EVENT_LISTENERS } from './has.js';\nimport { TRUE } from './functions.js';\nimport { apply as applyTransform, create as createTransform, } from './transform.js';\nimport { assert } from './asserts.js';\nimport { clone, createOrUpdateEmpty, equals, getForViewAndSize, isEmpty, } from './extent.js';\nimport { fromUserCoordinate, toUserCoordinate } from './proj.js';\nimport { getUid } from './util.js';\nimport { hasArea } from './size.js';\nimport { listen, unlistenByKey } from './events.js';\nimport { removeNode } from './dom.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 Animate.\n * @property {import(\"./transform.js\").Transform} coordinateToPixelTransform CoordinateToPixelTransform.\n * @property {import(\"rbush\").default} declutterTree DeclutterTree.\n * @property {null|import(\"./extent.js\").Extent} extent Extent.\n * @property {import(\"./extent.js\").Extent} [nextExtent] Next extent during an animation series.\n * @property {number} index Index.\n * @property {Array} layerStatesArray LayerStatesArray.\n * @property {number} layerIndex LayerIndex.\n * @property {import(\"./transform.js\").Transform} pixelToCoordinateTransform PixelToCoordinateTransform.\n * @property {Array} postRenderFunctions PostRenderFunctions.\n * @property {import(\"./size.js\").Size} size Size.\n * @property {TileQueue} tileQueue TileQueue.\n * @property {!Object>} usedTiles UsedTiles.\n * @property {Array} viewHints ViewHints.\n * @property {!Object>} wantedTiles WantedTiles.\n * @property {string} mapId The id of the map.\n * @property {Object} renderTargets Identifiers of previously rendered elements.\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 css 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] Controls.\n * @property {Collection} [interactions] Interactions.\n * @property {HTMLElement|Document} keyboardEventTarget KeyboardEventTarget.\n * @property {Collection} overlays Overlays.\n * @property {Object} values Values.\n */\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:layergroup'|'change:size'|'change:target'|'change:view'} MapObjectEventTypes\n */\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} PluggableMapOnSignature\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. If passed by element, the container can be in a secondary document.\n * @property {View|Promise} [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 {import(\"./layer/Base.js\").default} layer Layer.\n */\nfunction removeLayerMapProperty(layer) {\n if (layer instanceof Layer) {\n layer.setMapInternal(null);\n return;\n }\n if (layer instanceof LayerGroup) {\n layer.getLayers().forEach(removeLayerMapProperty);\n }\n}\n/**\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @param {PluggableMap} map Map.\n */\nfunction setLayerMapProperty(layer, map) {\n if (layer instanceof Layer) {\n layer.setMapInternal(map);\n return;\n }\n if (layer instanceof LayerGroup) {\n var layers = layer.getLayers().getArray();\n for (var i = 0, ii = layers.length; i < ii; ++i) {\n setLayerMapProperty(layers[i], map);\n }\n }\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 /***\n * @type {PluggableMapOnSignature}\n */\n _this.on;\n /***\n * @type {PluggableMapOnSignature}\n */\n _this.once;\n /***\n * @type {PluggableMapOnSignature}\n */\n _this.un;\n var optionsInternal = createOptionsInternal(options);\n /**\n * @private\n * @type {boolean}\n */\n _this.renderComplete_;\n /** @private */\n _this.boundHandleBrowserEvent_ = _this.handleBrowserEvent.bind(_this);\n /**\n * @type {number}\n * @private\n */\n _this.maxTilesLoading_ =\n options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;\n /**\n * @private\n * @type {number}\n */\n _this.pixelRatio_ =\n options.pixelRatio !== undefined\n ? options.pixelRatio\n : 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_ = /** @this {PluggableMap} */ 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 =\n '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_.style.pointerEvents = 'none';\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_.style.pointerEvents = 'none';\n _this.overlayContainerStopEvent_.className = 'ol-overlaycontainer-stopevent';\n _this.viewport_.appendChild(_this.overlayContainerStopEvent_);\n /**\n * @private\n * @type {MapBrowserEventHandler}\n */\n _this.mapBrowserEventHandler_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.moveTolerance_ = options.moveTolerance;\n /**\n * @private\n * @type {HTMLElement|Document}\n */\n _this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n /**\n * @private\n * @type {?Array}\n */\n _this.targetChangeHandlerKeys_ = null;\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 * @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.addChangeListener(MapProperty.LAYERGROUP, _this.handleLayerGroupChanged_);\n _this.addChangeListener(MapProperty.VIEW, _this.handleViewChanged_);\n _this.addChangeListener(MapProperty.SIZE, _this.handleSizeChanged_);\n _this.addChangeListener(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 var map = _this;\n if (options.view && !(options.view instanceof View)) {\n options.view.then(function (viewOptions) {\n map.setView(new View(viewOptions));\n });\n }\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.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_.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n this.addOverlayInternal_(\n /** @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 _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.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.overlays_.forEach(_this.addOverlayInternal_.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 * @param {import(\"./layer/Group.js\").GroupEvent} event The layer add event.\n * @private\n */\n PluggableMap.prototype.handleLayerAdd_ = function (event) {\n setLayerMapProperty(event.layer, this);\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 * Clean up.\n */\n PluggableMap.prototype.disposeInternal = function () {\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(import(\"./Feature.js\").FeatureLike, import(\"./layer/Layer.js\").default, import(\"./geom/SimpleGeometry.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 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 ? opt_options.hitTolerance : 0;\n var layerFilter = opt_options.layerFilter !== undefined ? 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 * Get all layers from all layer groups.\n * @return {Array} Layers.\n */\n PluggableMap.prototype.getAllLayers = function () {\n var layers = [];\n function addLayersFrom(layerGroup) {\n layerGroup.forEach(function (layer) {\n if (layer instanceof LayerGroup) {\n addLayersFrom(layer.getLayers());\n }\n else {\n layers.push(layer);\n }\n });\n }\n addLayersFrom(this.getLayers());\n return layers;\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: In maps with more than one layer, this method will typically return pixel data\n * representing the composed image of all layers visible at the given pixel – because layers\n * will generally share the same rendering context. To force layers to render separately, and\n * to get pixel data representing only one layer at a time, you can assign each layer a unique\n * `className` in its constructor.\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 ? options.hitTolerance : 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 ? opt_options.hitTolerance : 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 {MouseEvent} 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 {MouseEvent} 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 {UIEvent} 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 = \n //FIXME Are we really calling this with a TouchEvent anywhere?\n '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'\n ? document.getElementById(target)\n : 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 /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP));\n };\n /**\n * Clear any existing layers and add layers to the map.\n * @param {Array|Collection} layers The layers to be added to the map.\n * @api\n */\n PluggableMap.prototype.setLayers = function (layers) {\n var group = this.getLayerGroup();\n if (layers instanceof Collection) {\n group.setLayers(layers);\n return;\n }\n var collection = group.getLayers();\n collection.clear();\n collection.extend(layers);\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 /** @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 /** @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 * @return {!Document} The document where the map is displayed.\n */\n PluggableMap.prototype.getOwnerDocument = function () {\n var targetElement = this.getTargetElement();\n return targetElement ? targetElement.ownerDocument : document;\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 return getTilePriority(this.frameState_, tile, tileSourceKey, tileCenter, tileResolution);\n };\n /**\n * @param {UIEvent} 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 originalEvent = /** @type {PointerEvent} */ (mapBrowserEvent.originalEvent);\n var eventType = originalEvent.type;\n if (eventType === PointerEventType.POINTERDOWN ||\n eventType === EventType.WHEEL ||\n eventType === EventType.KEYDOWN) {\n var doc = this.getOwnerDocument();\n var rootNode = this.viewport_.getRootNode\n ? this.viewport_.getRootNode()\n : doc;\n var target = /** @type {Node} */ (originalEvent.target);\n if (\n // Abort if the target is a child of the container for elements whose events are not meant\n // to be handled by map interactions.\n this.overlayContainerStopEvent_.contains(target) ||\n // Abort if the event target is a child of the container that is no longer in the page.\n // It's possible for the target to no longer be in the page if it has been removed in an\n // event listener, this might happen in a Control that recreates it's content based on\n // user interaction either manually or via a render in something like https://reactjs.org/\n !(rootNode === doc ? doc.documentElement : rootNode).contains(target)) {\n return;\n }\n }\n mapBrowserEvent.frameState = this.frameState_;\n if (this.dispatchEvent(mapBrowserEvent) !== false) {\n var interactionsArray = this.getInteractions().getArray().slice();\n for (var i = interactionsArray.length - 1; i >= 0; i--) {\n var interaction = interactionsArray[i];\n if (interaction.getMap() !== this ||\n !interaction.getActive() ||\n !this.getTargetElement()) {\n continue;\n }\n var cont = interaction.handleEvent(mapBrowserEvent);\n if (!cont || mapBrowserEvent.propagationStopped) {\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 = 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 &&\n this.hasListener(RenderEventType.RENDERCOMPLETE) &&\n !frameState.animate &&\n this.renderComplete_) {\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() && !this.getView().getAnimating()) {\n this.getView().resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTargetChanged_ = function () {\n if (this.mapBrowserEventHandler_) {\n for (var i = 0, ii = this.targetChangeHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.targetChangeHandlerKeys_[i]);\n }\n this.targetChangeHandlerKeys_ = null;\n this.viewport_.removeEventListener(EventType.CONTEXTMENU, this.boundHandleBrowserEvent_);\n this.viewport_.removeEventListener(EventType.WHEEL, this.boundHandleBrowserEvent_);\n this.mapBrowserEventHandler_.dispose();\n this.mapBrowserEventHandler_ = null;\n removeNode(this.viewport_);\n }\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 = this.getTargetElement();\n if (!targetElement) {\n if (this.renderer_) {\n clearTimeout(this.postRenderTimeoutHandle_);\n this.postRenderTimeoutHandle_ = undefined;\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 }\n else {\n targetElement.appendChild(this.viewport_);\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n this.mapBrowserEventHandler_ = new MapBrowserEventHandler(this, this.moveTolerance_);\n for (var key in MapBrowserEventType) {\n this.mapBrowserEventHandler_.addEventListener(MapBrowserEventType[key], this.handleMapBrowserEvent.bind(this));\n }\n this.viewport_.addEventListener(EventType.CONTEXTMENU, this.boundHandleBrowserEvent_, false);\n this.viewport_.addEventListener(EventType.WHEEL, this.boundHandleBrowserEvent_, PASSIVE_EVENT_LISTENERS ? { passive: false } : false);\n var defaultView = this.getOwnerDocument().defaultView;\n var keyboardEventTarget = !this.keyboardEventTarget_\n ? targetElement\n : this.keyboardEventTarget_;\n this.targetChangeHandlerKeys_ = [\n listen(keyboardEventTarget, EventType.KEYDOWN, this.handleBrowserEvent, this),\n listen(keyboardEventTarget, EventType.KEYPRESS, this.handleBrowserEvent, this),\n listen(defaultView, EventType.RESIZE, this.updateSize, this),\n ];\n }\n this.updateSize();\n // updateSize calls setSize, so no need to call this.render\n // ourselves here.\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTileChange_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewPropertyChanged_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewChanged_ = function () {\n if (this.viewPropertyListenerKey_) {\n unlistenByKey(this.viewPropertyListenerKey_);\n this.viewPropertyListenerKey_ = null;\n }\n if (this.viewChangeListenerKey_) {\n unlistenByKey(this.viewChangeListenerKey_);\n this.viewChangeListenerKey_ = null;\n }\n var view = this.getView();\n if (view) {\n this.updateViewportSize_();\n this.viewPropertyListenerKey_ = listen(view, ObjectEventType.PROPERTYCHANGE, this.handleViewPropertyChanged_, this);\n this.viewChangeListenerKey_ = listen(view, EventType.CHANGE, this.handleViewPropertyChanged_, this);\n view.resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleLayerGroupChanged_ = function () {\n if (this.layerGroupPropertyListenerKeys_) {\n this.layerGroupPropertyListenerKeys_.forEach(unlistenByKey);\n this.layerGroupPropertyListenerKeys_ = null;\n }\n var layerGroup = this.getLayerGroup();\n if (layerGroup) {\n this.handleLayerAdd_(new GroupEvent('addlayer', layerGroup));\n this.layerGroupPropertyListenerKeys_ = [\n listen(layerGroup, ObjectEventType.PROPERTYCHANGE, this.render, this),\n listen(layerGroup, EventType.CHANGE, this.render, this),\n listen(layerGroup, 'addlayer', this.handleLayerAdd_, this),\n listen(layerGroup, 'removelayer', this.handleLayerRemove_, 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 * @param {import(\"./layer/Group.js\").GroupEvent} event The layer remove event.\n * @private\n */\n PluggableMap.prototype.handleLayerRemove_ = function (event) {\n removeLayerMapProperty(event.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 _this = this;\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 declutterTree: null,\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 mapId: getUid(this),\n renderTargets: {},\n };\n if (viewState.nextCenter && viewState.nextResolution) {\n var rotation = isNaN(viewState.nextRotation)\n ? viewState.rotation\n : viewState.nextRotation;\n frameState.nextExtent = getForViewAndSize(viewState.nextCenter, viewState.nextResolution, rotation, size);\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.renderComplete_ =\n !this.tileQueue_.getTilesLoading() &&\n !this.tileQueue_.getCount() &&\n !this.getLoading();\n if (!this.postRenderTimeoutHandle_) {\n this.postRenderTimeoutHandle_ = setTimeout(function () {\n _this.postRenderTimeoutHandle_ = undefined;\n _this.handlePostRender();\n }, 0);\n }\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 var oldLayerGroup = this.getLayerGroup();\n if (oldLayerGroup) {\n this.handleLayerRemove_(new GroupEvent('removelayer', oldLayerGroup));\n }\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} [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|Promise} view The view that controls this map.\n * It is also possible to pass a promise that resolves to options for constructing a view. This\n * alternative allows view properties to be resolved by sources or other components that load\n * view-related metadata.\n * @observable\n * @api\n */\n PluggableMap.prototype.setView = function (view) {\n if (!view || view instanceof View) {\n this.set(MapProperty.VIEW, view);\n return;\n }\n this.set(MapProperty.VIEW, new View());\n var map = this;\n view.then(function (viewOptions) {\n map.setView(new View(viewOptions));\n });\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 var size = undefined;\n if (targetElement) {\n var computedStyle = getComputedStyle(targetElement);\n var width = targetElement.offsetWidth -\n parseFloat(computedStyle['borderLeftWidth']) -\n parseFloat(computedStyle['paddingLeft']) -\n parseFloat(computedStyle['paddingRight']) -\n parseFloat(computedStyle['borderRightWidth']);\n var height = targetElement.offsetHeight -\n parseFloat(computedStyle['borderTopWidth']) -\n parseFloat(computedStyle['paddingTop']) -\n parseFloat(computedStyle['paddingBottom']) -\n parseFloat(computedStyle['borderBottomWidth']);\n if (!isNaN(width) && !isNaN(height)) {\n size = [width, height];\n if (!hasArea(size) &&\n !!(targetElement.offsetWidth ||\n targetElement.offsetHeight ||\n targetElement.getClientRects().length)) {\n // eslint-disable-next-line\n console.warn(\"No map visible because the map container's width or height are 0.\");\n }\n }\n }\n this.setSize(size);\n this.updateViewportSize_();\n };\n /**\n * Recomputes the viewport size and save it on the view object (if any)\n * @private\n */\n PluggableMap.prototype.updateViewportSize_ = function () {\n var view = this.getView();\n if (view) {\n var size = undefined;\n var computedStyle = getComputedStyle(this.viewport_);\n if (computedStyle.width && computedStyle.height) {\n size = [\n parseInt(computedStyle.width, 10),\n parseInt(computedStyle.height, 10),\n ];\n }\n view.setViewportSize(size);\n }\n };\n return PluggableMap;\n}(BaseObject));\n/**\n * @param {MapOptions} options Map options.\n * @return {MapOptionsInternal} Internal map options.\n */\nfunction createOptionsInternal(options) {\n /**\n * @type {HTMLElement|Document}\n */\n var keyboardEventTarget = null;\n if (options.keyboardEventTarget !== undefined) {\n keyboardEventTarget =\n 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 &&\n typeof ( /** @type {?} */(options.layers).getLayers) === 'function'\n ? /** @type {LayerGroup} */ (options.layers)\n : new LayerGroup({ layers: /** @type {Collection} */ (options.layers) });\n values[MapProperty.LAYERGROUP] = layerGroup;\n values[MapProperty.TARGET] = options.target;\n values[MapProperty.VIEW] =\n options.view instanceof View ? 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) ===\n 'function', 48); // Expected `interactions` to be an array or an `import(\"./Collection.js\").Collection`\n interactions = /** @type {Collection} */ (options.interactions);\n }\n }\n var overlays;\n if (options.overlays !== undefined) {\n if (Array.isArray(options.overlays)) {\n overlays = new Collection(options.overlays.slice());\n }\n else {\n assert(typeof ( /** @type {?} */(options.overlays).getArray) === 'function', 49); // Expected `overlays` to be an array or an `import(\"./Collection.js\").Collection`\n overlays = options.overlays;\n }\n }\n else {\n overlays = new Collection();\n }\n return {\n controls: controls,\n interactions: interactions,\n keyboardEventTarget: keyboardEventTarget,\n overlays: overlays,\n values: values,\n };\n}\nexport default PluggableMap;\n//# sourceMappingURL=PluggableMap.js.map","/**\n * @module ol/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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 InteractionProperty from './Property.js';\nimport { easeOut, linear } from '../easing.js';\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} InteractionOnSignature\n */\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} [opt_options] Options.\n */\n function Interaction(opt_options) {\n var _this = _super.call(this) || this;\n /***\n * @type {InteractionOnSignature}\n */\n _this.on;\n /***\n * @type {InteractionOnSignature}\n */\n _this.once;\n /***\n * @type {InteractionOnSignature}\n */\n _this.un;\n if (opt_options && opt_options.handleEvent) {\n _this.handleEvent = opt_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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 Interaction, { zoomByDelta } from './Interaction.js';\nimport MapBrowserEventType from '../MapBrowserEventType.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) || 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 /**\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 */\n DoubleClickZoom.prototype.handleEvent = function (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 browserEvent.preventDefault();\n stopEvent = true;\n }\n return !stopEvent;\n };\n return DoubleClickZoom;\n}(Interaction));\nexport default DoubleClickZoom;\n//# sourceMappingURL=DoubleClickZoom.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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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/Pointer\n */\nimport Interaction from './Interaction.js';\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport { getValues } from '../obj.js';\n/**\n * @typedef {Object} Options\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleDownEvent]\n * Function handling \"down\" events. If the function returns `true` then a drag\n * sequence is started.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleDragEvent]\n * Function handling \"drag\" events. This function is called on \"move\" events\n * during a drag sequence.\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. The function may return `false` to prevent the\n * propagation of the event to other interactions in the map's interactions\n * chain.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleMoveEvent]\n * Function handling \"move\" events. This function is called on \"move\" events.\n * This functions is also called during a drag sequence, so during a drag\n * sequence both the `handleDragEvent` function and this function are called.\n * If `handleDownEvent` is defined and it returns true this function will not\n * be called during a drag sequence.\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleUpEvent]\n * Function handling \"up\" events. If the function returns `false` then the\n * current drag sequence is stopped.\n * @property {function(boolean):boolean} [stopDown]\n * Should the down event be propagated to other interactions, or should be\n * stopped?\n */\n/**\n * @classdesc\n * Base class that calls user-defined functions on `down`, `move` and `up`\n * events. This class also manages \"drag sequences\".\n *\n * When the `handleDownEvent` user function returns `true` a drag sequence is\n * started. During a drag sequence the `handleDragEvent` user function is\n * called on `move` events. The drag sequence ends when the `handleUpEvent`\n * user function is called and returns `false`.\n * @api\n */\nvar PointerInteraction = /** @class */ (function (_super) {\n __extends(PointerInteraction, _super);\n /**\n * @param {Options} [opt_options] Options.\n */\n function PointerInteraction(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, \n /** @type {import(\"./Interaction.js\").InteractionOptions} */ (options)) || this;\n if (options.handleDownEvent) {\n _this.handleDownEvent = options.handleDownEvent;\n }\n if (options.handleDragEvent) {\n _this.handleDragEvent = options.handleDragEvent;\n }\n if (options.handleMoveEvent) {\n _this.handleMoveEvent = options.handleMoveEvent;\n }\n if (options.handleUpEvent) {\n _this.handleUpEvent = options.handleUpEvent;\n }\n if (options.stopDown) {\n _this.stopDown = options.stopDown;\n }\n /**\n * @type {boolean}\n * @protected\n */\n _this.handlingDownUpSequence = false;\n /**\n * @type {!Object}\n * @private\n */\n _this.trackedPointers_ = {};\n /**\n * @type {Array}\n * @protected\n */\n _this.targetPointers = [];\n return _this;\n }\n /**\n * Returns the current number of pointers involved in the interaction,\n * e.g. `2` when two fingers are used.\n * @return {number} The number of pointers.\n * @api\n */\n PointerInteraction.prototype.getPointerCount = function () {\n return this.targetPointers.length;\n };\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n * @protected\n */\n PointerInteraction.prototype.handleDownEvent = function (mapBrowserEvent) {\n return false;\n };\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @protected\n */\n PointerInteraction.prototype.handleDragEvent = function (mapBrowserEvent) { };\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} and may call into\n * other functions, if event sequences like e.g. 'drag' or 'down-up' etc. are\n * detected.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @api\n */\n PointerInteraction.prototype.handleEvent = function (mapBrowserEvent) {\n if (!mapBrowserEvent.originalEvent) {\n return true;\n }\n var stopEvent = false;\n this.updateTrackedPointers_(mapBrowserEvent);\n if (this.handlingDownUpSequence) {\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERDRAG) {\n this.handleDragEvent(mapBrowserEvent);\n // prevent page scrolling during dragging\n mapBrowserEvent.originalEvent.preventDefault();\n }\n else if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {\n var handledUp = this.handleUpEvent(mapBrowserEvent);\n this.handlingDownUpSequence =\n handledUp && this.targetPointers.length > 0;\n }\n }\n else {\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERDOWN) {\n var handled = this.handleDownEvent(mapBrowserEvent);\n this.handlingDownUpSequence = handled;\n stopEvent = this.stopDown(handled);\n }\n else if (mapBrowserEvent.type == MapBrowserEventType.POINTERMOVE) {\n this.handleMoveEvent(mapBrowserEvent);\n }\n }\n return !stopEvent;\n };\n /**\n * Handle pointer move events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @protected\n */\n PointerInteraction.prototype.handleMoveEvent = function (mapBrowserEvent) { };\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n * @protected\n */\n PointerInteraction.prototype.handleUpEvent = function (mapBrowserEvent) {\n return false;\n };\n /**\n * This function is used to determine if \"down\" events should be propagated\n * to other interactions or should be stopped.\n * @param {boolean} handled Was the event handled by the interaction?\n * @return {boolean} Should the `down` event be stopped?\n */\n PointerInteraction.prototype.stopDown = function (handled) {\n return handled;\n };\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @private\n */\n PointerInteraction.prototype.updateTrackedPointers_ = function (mapBrowserEvent) {\n if (isPointerDraggingEvent(mapBrowserEvent)) {\n var event_1 = mapBrowserEvent.originalEvent;\n var id = event_1.pointerId.toString();\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {\n delete this.trackedPointers_[id];\n }\n else if (mapBrowserEvent.type == MapBrowserEventType.POINTERDOWN) {\n this.trackedPointers_[id] = event_1;\n }\n else if (id in this.trackedPointers_) {\n // update only when there was a pointerdown event for this pointer\n this.trackedPointers_[id] = event_1;\n }\n this.targetPointers = getValues(this.trackedPointers_);\n }\n };\n return PointerInteraction;\n}(Interaction));\n/**\n * @param {Array} pointerEvents List of events.\n * @return {import(\"../pixel.js\").Pixel} Centroid pixel.\n */\nexport function centroid(pointerEvents) {\n var length = pointerEvents.length;\n var clientX = 0;\n var clientY = 0;\n for (var i = 0; i < length; i++) {\n clientX += pointerEvents[i].clientX;\n clientY += pointerEvents[i].clientY;\n }\n return [clientX / length, clientY / length];\n}\n/**\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} Whether the event is a pointerdown, pointerdrag\n * or pointerup event.\n */\nfunction isPointerDraggingEvent(mapBrowserEvent) {\n var type = mapBrowserEvent.type;\n return (type === MapBrowserEventType.POINTERDOWN ||\n type === MapBrowserEventType.POINTERDRAG ||\n type === MapBrowserEventType.POINTERUP);\n}\nexport default PointerInteraction;\n//# sourceMappingURL=Pointer.js.map","/**\n * @module ol/events/condition\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport { FALSE, TRUE } from '../functions.js';\nimport { MAC, WEBKIT } from '../has.js';\nimport { assert } from '../asserts.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 * Creates a condition function that passes when all provided conditions pass.\n * @param {...Condition} var_args Conditions to check.\n * @return {Condition} Condition function.\n */\nexport function all(var_args) {\n var conditions = arguments;\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n * @return {boolean} All conditions passed.\n */\n return function (event) {\n var pass = true;\n for (var i = 0, ii = conditions.length; i < ii; ++i) {\n pass = pass && conditions[i](event);\n if (!pass) {\n break;\n }\n }\n return pass;\n };\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 var targetElement = event.map.getTargetElement();\n var activeElement = event.map.getOwnerDocument().activeElement;\n return targetElement.contains(activeElement);\n};\n/**\n * Return `true` if the map has the focus or no 'tabindex' attribute set.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map container has the focus or no 'tabindex' attribute.\n */\nexport var focusWithTabindex = function (event) {\n return event.map.getTargetElement().hasAttribute('tabindex')\n ? focus(event)\n : true;\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 && !(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 * `