{"version":3,"sources":["webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSamplesInputContainer.vue?f099","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleBoxes.vue?dd0e","webpack:///./node_modules/ol/tilegrid/common.js","webpack:///./node_modules/ol/events/condition.js","webpack:///./node_modules/ol/render/EventType.js","webpack:///./node_modules/ol/tilegrid.js","webpack:///./node_modules/ol/dom.js","webpack:///./node_modules/ol/geom/flat/interiorpoint.js","webpack:///./node_modules/ol/renderer/canvas/common.js","webpack:///./node_modules/ol/MapBrowserEventType.js","webpack:///./node_modules/ol/renderer/Layer.js","webpack:///./node_modules/ol/renderer/canvas/Layer.js","webpack:///./src/views/SuggestAnalysisSamples.vue","webpack:///./src/components/suggest-analysis-sample/CreateAnalysisSampleModal.vue","webpack:///src/components/suggest-analysis-sample/CreateAnalysisSampleModal.vue","webpack:///./src/components/suggest-analysis-sample/CreateAnalysisSampleModal.vue?277b","webpack:///./src/components/suggest-analysis-sample/CreateAnalysisSampleModal.vue?54cc","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleCard.vue","webpack:///./src/components/panels/TiPanel.vue","webpack:///src/components/panels/TiPanel.vue","webpack:///./src/components/panels/TiPanel.vue?8d70","webpack:///./src/components/panels/TiPanel.vue?a810","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleJarCard.vue","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleBoxes.vue","webpack:///src/components/suggest-analysis-sample/SuggestAnalysisSampleBoxes.vue","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleBoxes.vue?e203","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleBoxes.vue?c2de","webpack:///src/components/suggest-analysis-sample/SuggestAnalysisSampleJarCard.vue","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleJarCard.vue?ed10","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleJarCard.vue?0b6d","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleMap.vue","webpack:///src/components/suggest-analysis-sample/SuggestAnalysisSampleMap.vue","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleMap.vue?d3ba","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleMap.vue?9728","webpack:///src/components/suggest-analysis-sample/SuggestAnalysisSampleCard.vue","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleCard.vue?6692","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleCard.vue?f4e8","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSamplesInputContainer.vue","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleDepthInputs.vue","webpack:///./src/components/suggest-analysis-sample/MinimumSoilDropdown.vue","webpack:///src/components/suggest-analysis-sample/MinimumSoilDropdown.vue","webpack:///./src/components/suggest-analysis-sample/MinimumSoilDropdown.vue?4434","webpack:///./src/components/suggest-analysis-sample/MinimumSoilDropdown.vue?3924","webpack:///src/components/suggest-analysis-sample/SuggestAnalysisSampleDepthInputs.vue","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleDepthInputs.vue?eb44","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleDepthInputs.vue?557f","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleMpTable.vue","webpack:///src/components/suggest-analysis-sample/SuggestAnalysisSampleMpTable.vue","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleMpTable.vue?ad12","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleMpTable.vue?189d","webpack:///src/components/suggest-analysis-sample/SuggestAnalysisSamplesInputContainer.vue","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSamplesInputContainer.vue?6131","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSamplesInputContainer.vue?26d0","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSamplesOutputContainer.vue","webpack:///src/components/suggest-analysis-sample/SuggestAnalysisSamplesOutputContainer.vue","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSamplesOutputContainer.vue?3d20","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSamplesOutputContainer.vue?245f","webpack:///src/views/SuggestAnalysisSamples.vue","webpack:///./src/views/SuggestAnalysisSamples.vue?fddf","webpack:///./src/views/SuggestAnalysisSamples.vue?67fb","webpack:///./node_modules/ol/CollectionEventType.js","webpack:///./src/components/modal/confirmModal.vue?aed0","webpack:///./node_modules/ol/layer/Layer.js","webpack:///./node_modules/ol/geom/flat/simplify.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:///./src/components/suggest-analysis-sample/MinimumSoilDropdown.vue?1add","webpack:///./node_modules/rbush/rbush.min.js","webpack:///./node_modules/ol/geom/flat/contains.js","webpack:///./node_modules/ol/style/TextPlacement.js","webpack:///./node_modules/ol/tilecoord.js","webpack:///./node_modules/ol/source/XYZ.js","webpack:///./node_modules/ol/reproj/Triangulation.js","webpack:///./node_modules/ol/reproj/Tile.js","webpack:///./node_modules/ol/render/Event.js","webpack:///./node_modules/ol/size.js","webpack:///./node_modules/ol/control/Control.js","webpack:///./node_modules/ol/interaction/DoubleClickZoom.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/style/IconImageCache.js","webpack:///./node_modules/ol/reproj.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/geom/flat/textpath.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/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:///./node_modules/ol/interaction/Pointer.js","webpack:///./node_modules/ol/interaction/Interaction.js","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:///./node_modules/ol/geom/flat/reverse.js","webpack:///./node_modules/ol/geom/flat/orient.js","webpack:///./src/components/modal/confirmModal.vue","webpack:///src/components/modal/confirmModal.vue","webpack:///./src/components/modal/confirmModal.vue?2e7f","webpack:///./src/components/modal/confirmModal.vue?96ee","webpack:///./node_modules/ol/MapBrowserEvent.js","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleMpTable.vue?b83d","webpack:///./node_modules/ol/layer/Base.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/featureloader.js","webpack:///./node_modules/ol/source/Vector.js","webpack:///./node_modules/ol/MapEventType.js","webpack:///./node_modules/ol/geom/flat/length.js","webpack:///./node_modules/ol/geom/LinearRing.js","webpack:///./node_modules/ol/geom/Polygon.js","webpack:///./node_modules/ol/color.js","webpack:///./node_modules/ol/Tile.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/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/Map.js","webpack:///./node_modules/ol/ImageBase.js","webpack:///./node_modules/ol/Image.js","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleCard.vue?94f0","webpack:///./node_modules/ol/style/RegularShape.js","webpack:///./node_modules/ol/style/Circle.js","webpack:///./node_modules/ol/style/Style.js","webpack:///./node_modules/ol/style/IconImage.js","webpack:///./node_modules/ol/style/Icon.js","webpack:///./node_modules/ol/MapEvent.js","webpack:///./src/views/SuggestAnalysisSamples.vue?6177","webpack:///./node_modules/ol/tilegrid/TileGrid.js","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSamplesOutputContainer.vue?e9df","webpack:///./node_modules/ol/ImageTile.js","webpack:///./node_modules/ol/style/Text.js","webpack:///./node_modules/ol/style/IconAnchorUnits.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:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleJarCard.vue?db82","webpack:///./node_modules/ol/structs/LRUCache.js","webpack:///./node_modules/ol/TileCache.js","webpack:///./node_modules/ol/source/TileEventType.js","webpack:///./node_modules/ol/source/Tile.js","webpack:///./node_modules/ol/source/UrlTile.js","webpack:///./node_modules/ol/source/TileImage.js","webpack:///./node_modules/ol/geom/flat/closest.js","webpack:///./node_modules/ol/tileurlfunction.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/reproj/common.js","webpack:///./node_modules/ol/style/Image.js","webpack:///./node_modules/ol/TileState.js","webpack:///./node_modules/ol/geom/flat/area.js","webpack:///./node_modules/ol/geom/flat/inflate.js","webpack:///./node_modules/ol/interaction/Property.js","webpack:///./node_modules/ol/control/FullScreen.js","webpack:///./node_modules/ol/geom/flat/intersectsextent.js","webpack:///./node_modules/ol/easing.js","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleDepthInputs.vue?d879","webpack:///./node_modules/ol/css.js","webpack:///./node_modules/ol/source/OSM.js","webpack:///./node_modules/ol/style/IconOrigin.js","webpack:///./node_modules/ol/TileRange.js","webpack:///./src/components/panels/TiPanel.vue?3070","webpack:///./node_modules/ol/render/canvas.js","webpack:///./node_modules/ol/layer/Property.js","webpack:///./node_modules/ol/Collection.js","webpack:///./node_modules/ol/MapProperty.js","webpack:///./node_modules/ol/colorlike.js","webpack:///./src/components/suggest-analysis-sample/SuggestAnalysisSampleMap.vue?5feb","webpack:///./src/components/suggest-analysis-sample/CreateAnalysisSampleModal.vue?2251","webpack:///./node_modules/ol/geom/flat/segments.js","webpack:///./node_modules/ol/source/Source.js"],"names":["DEFAULT_MAX_ZOOM","DEFAULT_TILE_SIZE","all","var_args","conditions","arguments","event","pass","i","ii","length","altShiftKeysOnly","mapBrowserEvent","originalEvent","altKey","metaKey","ctrlKey","shiftKey","focus","targetElement","map","getTargetElement","activeElement","getOwnerDocument","contains","focusWithTabindex","hasAttribute","always","click","type","CLICK","mouseActionButton","button","never","singleClick","SINGLECLICK","noModifierKeys","shiftKeyOnly","targetNotEditable","tagName","target","isContentEditable","mouseOnly","pointerEvent","undefined","pointerType","primaryAction","isPrimary","PRERENDER","POSTRENDER","PRECOMPOSE","POSTCOMPOSE","RENDERCOMPLETE","getForProjection","projection","tileGrid","getDefaultTileGrid","createForProjection","setDefaultTileGrid","wrapX","tileCoord","z","center","getTileCoordCenter","projectionExtent","extentFromProjection","worldWidth","worldsAway","Math","ceil","getTileCoordForCoordAndZ","createForExtent","extent","opt_maxZoom","opt_tileSize","opt_corner","corner","resolutions","resolutionsFromExtent","origin","tileSize","createXYZ","opt_options","xyzOptions","getExtent","gridOptions","minZoom","maxZoom","maxResolution","opt_maxResolution","height","width","max","Array","pow","half","DEGREES","getMetersPerUnit","createCanvasContext2D","opt_width","opt_height","opt_canvasPool","opt_Context2DSettings","canvas","shift","OffscreenCanvas","document","createElement","getContext","releaseCanvas","context","clearRect","replaceNode","newNode","oldNode","parent","parentNode","replaceChild","removeNode","node","removeChild","removeChildren","lastChild","replaceChildren","children","oldChildren","childNodes","oldChild","newChild","insertBefore","appendChild","getInteriorPointOfArray","flatCoordinates","offset","ends","stride","flatCenters","flatCentersOffset","opt_dest","x","x1","x2","y1","y2","y","intersections","r","rr","end","push","pointX","NaN","maxSegmentLength","Infinity","sort","segmentLength","abs","isNaN","getInteriorPointsOfMultiArray","endss","interiorPoints","IMAGE_SMOOTHING_DISABLED","imageSmoothingEnabled","msImageSmoothingEnabled","IMAGE_SMOOTHING_ENABLED","DBLCLICK","POINTERDRAG","POINTERMOVE","POINTERDOWN","POINTERUP","POINTEROVER","POINTEROUT","POINTERENTER","POINTERLEAVE","POINTERCANCEL","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","p","prototype","hasOwnProperty","call","TypeError","String","__","this","constructor","create","_super","LayerRenderer","layer","_this","ready","boundHandleImageChange_","handleImageChange_","bind","layer_","declutterExecutorGroup","getFeatures","pixel","getData","prepareFrame","frameState","renderFrame","loadedTileCallback","tiles","zoom","tile","toString","createLoadedTileFinder","source","tileRange","callback","forEachLoadedTile","forEachFeatureAtCoordinate","coordinate","hitTolerance","matches","getDataAtPixel","getLayer","handleFontsChanged","image","getState","ImageState","LOADED","renderIfReadyAndVisible","loadImage","imageState","ERROR","addEventListener","EventType","CHANGE","IDLE","load","getVisible","getSourceState","changed","disposeInternal","Observable","Layer","canvasPool","createPixelContext","CanvasLayerRenderer","container","renderedResolution","tempTransform","pixelTransform","inversePixelTransform","containerReused","pixelContext_","getImageData","col","row","data","drawImage","err","getBackground","background","viewState","resolution","useContainer","transform","opt_backgroundColor","layerClassName","getClassName","className","style","backgroundColor","firstElementChild","HTMLCanvasElement","position","left","transformOrigin","clipUnrotated","topLeft","topRight","bottomRight","bottomLeft","coordinateToPixelTransform","inverted","save","beginPath","moveTo","round","lineTo","clip","dispatchRenderEvent_","hasListener","event_1","dispatchEvent","preRender","postRender","getRenderTransform","rotation","pixelRatio","offsetX","dx1","dy1","sx","sy","dx2","dy2","renderPixel","slice","layerExtent","renderCoordinate","pixelToCoordinateTransform","pixelContext","pixelCanvas","name","Uint8Array","render","_vm$userIsAuthorized","_vm$userIsAuthorized2","_vm$userIsAuthorized3","_vm$userIsAuthorized4","_vm$userIsAuthorized5","_vm$userIsAuthorized6","_vm","_c","_self","staticClass","userIsAuthorized","userHasFeatureWord","userHasFunction","attrs","_v","_s","$t","_e","projectCode","initialized","parameterExcludeFieldSamplesOlderThenDays","on","getSuggestedAnalysisSamples","getProjectData","updateSelectedMpIds","showSampleOutputPanel","results","suggestedSamples","codeLists","project","VeldData","userHasDeveloperLicense","resultLog","_l","formattedSuggestedSamples","suggestedAnalysisSample","key","sampleNumber","measurementPointFeatures","selectedFormattedMeasurementPoints","startCreatingSample","switchJar","showCreateSampleModal","newAnalysisSample","sampleName","newAnalysisSampleNameExists","matrixCode","completeCreatingSample","cancelCreatingSample","creatingSampleNameChange","creatingSampleMatrixCodeChange","showSwitchJarModal","cancelJarSwitch","confirmJarSwitch","loading","staticRenderFns","directives","rawName","value","showModal","expression","closeModal","class","errorMessage","domProps","$event","composing","sampleMatrixCode","$$selectedVal","filter","options","o","selected","val","_value","multiple","createSample","props","defaultName","required","show","Boolean","sampleNameTaken","methods","$emit","computed","get","set","component","sampleIsCreated","nonSuggestedJarSelected","scopedSlots","_u","fn","suggestSampleProperties","sampleProperty","index","proxy","canCreate","disableButton","analysisSampleName","measurementPointsAvailable","mapKey","number","sampleMeasurementPointFeatures","otherMeasurementPointFeatures","jars","jar","jarIndex","excludedJarChanged","showOtherMeasurementPoints","unusedMeasurementPoints","showJarsInOtherMeasurementPoints","isArray","_i","$$a","$$el","$$c","checked","$$v","$$i","concat","setShowOtherMeasurementPoints","classColor","cursor","collapsible","toggleOpen","showCollapsedIcon","open","hasTitleSlot","title","_t","default","secondary","tertiary","$slots","showJars","includeInSample","fontSize","getTitleFontSize","sampleJar","measurementPoint","showCheckbox","checkboxId","excludeCheckboxIsReadonly","showScore","totalScore","showReasons","reasons","reason","label","scoreSummaries","generateReasonKey","layers","layerIndex","generateKey","selectedByUser","from","to","soilType","code","additives","admixture","admixIndex","getAdmixtureBackgroundClasses","top","calculateLayerTooltipPosition","getLayerTooltip","layerTooltip","isList","labelText","descriptionList","item","description","guid","hasBeenSuggested","canSwitchJars","barcode","getJarTooltip","jarTooltip","Number","toolTip","soilDepthType","additive","additiveIndex","_objectSpread","specialCompounds","specialCompound","specialCompoundIndex","oilWaterReaction","odour","pid","remark","layersCount","propertiesCount","isLastElement","isSecondToLastElement","tooltipItems","gradation","selectedLayerIndex","findIndex","selectedJarIndex","components","SuggestAnalysisSampleBoxes","sampleJarIndex","e","preventDefault","base","has","not","sammpleNumber","hasPID","hasOdour","hasOilWaterReaction","hasSpecialCompound","backgroundClass","sampleMeasurementPointMarkers","otherMeasurementPointMarkers","bufferBoundaryMeters","zoomLevel","localMarkerColor","otherMarkerColor","defaultStyleSVG","encodeURIComponent","gaugingTubeStyleSVG","otherStyleSVG","probingStyleSVG","holeStyleSVG","findingSiteStyleSVG","monitoringWellStyleSVG","holeBoreholeStyleSVG","mounted","initializeMap","initializeMarkers","centerMap","olMap","controls","defaultControls","extend","FullScreen","TileLayer","OSM","visible","view","olView","fromLonLat","bounds","boundingExtent","mp","X","Y","bufferedBound","buffer","getView","fit","localMarkers","createMarker","otherMarkers","allMarkers","_toConsumableArray","vectorLayer","olLayerVector","olSourceVector","features","declutter","addLayer","setMarkerSvg","measurementPointTypeCode","includes","local","markerColor","svgStyle","TypeCode","featureStyle","olStyleStyle","zIndex","olStyleIcon","src","scale","color","text","olStyleText","Name","fill","olStyleFill","offsetY","stroke","olStyleStroke","font","overflow","marker","olFeature","geometry","olGeomPoint","setStyle","setId","SuggestAnalysisSampleMap","SuggestAnalysisSampleJarCard","TiPanel","allMeasurementPoints","lang","Vue","config","generateMapKey","excludedJarIds","seperateMeasurementPoints","mpGuidArray","Guid","stopPropagation","selectedJars","floor","random","mpGuid","jarId","suggestedJars","find","indexOf","splice","sample","watch","handler","score","profile","subLocationName","reduce","selectedJar","mpName","usedMeasurementPointsGuid","sublocationId","suggestedJar","helpLinkHref","settings","numberOfSamples","$set","maximumNumberOfAdmixtures","excludeFieldSamplesOlderThenDays","isControlRun","validation","lowerDepthValid","maxDepthValid","upperSoilDepth","lowerSoilDepth","maxSoilDepth","topSoilMinimum","midSoilMinimum","lowerSoilMinimum","upperSoilDepthChanged","lowerSoilDepthChanged","maxSoilDepthChanged","topSoilMinimumChanged","midSoilMinimumChanged","lowerSoilMinimumChanged","depthErrorMessage","refresh","inputFormHasError","submit","_m","dashPositionTopSoil","topSoilMinimumValue","upperSoilDepthValue","dashPositionMidSoil","midSoilMinimumValue","lowerSoilDepthValue","dashPositionLowerSoil","lowerSoilMinimumValue","showMaxDepthOptionText","maxSoilDepthValue","hideOptionText","selectedValue","MinimumSoilDropdown","measurementPointTableData","rowsVisibleChanged","toolbarPreparing","formatCellValue","mpTypeCodeList","mpSurfaceTypeCodeList","subLocationTableData","DxColumn","DxDataGrid","DxSelection","DxFilterRow","DxSearchPanel","DxHeaderFilter","DxGroupPanel","DxGrouping","DxLookup","DxPaging","DxFilterPanel","newTableRows","created","language","loadMessages","nlDevExtremeLocale","frDevExtremeLocale","deDevExtremeLocale","esDevExtremeLocale","itDevExtremeLocale","locale","Cookie","$store","state","currentProject","tblMeasurementPoints","tblSublocations","MeasurementObjectType","MeasurementObjectSurfaceType","selectAll","selectedRowIds","getSelectedRowKeys","visibleRowIds","getVisibleRows","MpID","id","selectRows","toolbarOptions","items","unshift","location","template","formatDate","currentArray","previousArray","previousRowIds","currentRowIds","_regeneratorRuntime","exports","Op","hasOwn","defineProperty","obj","desc","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","Context","makeInvokeMethod","tryCatch","arg","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","_typeof","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","methodName","return","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","Promise","iter","keys","object","reverse","pop","skipTempReset","prev","charAt","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","apply","SuggestAnalysisSampleDepthInputs","SuggestAnalysisSampleMpTable","userManualFileName","root","deep","validateInputSoilDepth","upperDepth","lowerDepth","maxDepth","_callee","_context","getParsedInputSettings","_this2","_callee2","_context2","mpIdsArray","parseInt","totalSuggestSampleCount","topSoilCount","midSoilCount","lowerSoilCount","subLocationGroupedByNameList","subLocation","count","errorList","logErrorMessage","logDumpsWithDevelopLicense","dump","download","href","suggestedAnalysisSamplesResults","veldData","total","s","soilDepth","getSubLocationNamesWithCount","errors","formatErrorLogReduce","dumps","logFileHref","downloadProjectFileName","projectFileHref","codeListFileHref","suggestSampleResultsFileName","sampleResultFileHref","toLowerCase","sampleResults","unnamedSubLocationsCount","subLocations","_loop","sortedSubLocations","a","message","URL","createObjectURL","Blob","JSON","stringify","entries","c","TiPopup","Popup","Config","platform","AppHeader","AppFooter","nvLoading","SuggestAnalysisSampleCard","SuggestAnalysisSamplesInputContainer","SuggestAnalysisSamplesOutputContainer","CreateAnalysisSampleModal","ConfirmModal","developerLicenseNumbers","selectedMeasurementPointIds","formattedSampleJars","requiredCodeLists","SoilType","SandMedian","GravelMedian","SoilAdditive","AdditiveGradiation","SpecialCompound","SpecialCompoundGradiation","OdourType","OdourIntensity","OilWaterReaction","JarType","suggestedSampleNumber","previousUserInputtedName","isLatestProjectData","jarToSwitch","newSelectedJarIndex","newSelectedLayerIndex","sampleIndex","previouslyCreatedAnalysisSamples","resultData","tblProjects","PrCode","$route","params","AvailableSampleDays","parameterProjectId","ProjectID","licenseNumber","cookie","tblAnalysisSamples","analysisSampleNameExists","requeredKeyList","initialize","_this3","isAuthorizedForSampleSuggestion","validateRouteParameters","_this4","_callee3","featureWord","_context3","dispatch","functionName","_arguments","_this5","_callee4","getCodeList","promises","_context4","projectId","codeListKey","categoryId","codeList","GcDescription","stringUtils","capitalizeFirstLetter","popup","t0","tblJars","JrGuid","initMeasurementPointFeatures","_this6","_callee5","response","measurementPointsMemo","_context5","activityType","activityMessage","getProjecWithOnlySelectedMeasurementpointsData","records","formatErrorMessages","formatJarsFromResult","formatSuggestedAnalysisSamples","console","log","setSelectedMeasurementPoints","createAnalaysisSample","_this7","_callee6","_context6","projectData","_this8","measurementpoints","parseTableToArray","selectedMeasurementPoints","allMeasurementPointSamples","getMeasurementPointSampleData","_this9","parse","dataTableKeys","tableKey","tableItem","getCodeDescriptionByCodeValue","codeListName","codeListOptionValue","codeListItem","GcCode","recordIsError","toUpperCase","logRecords","_this10","parameters","paramValue","formatSoilDepthType","soilTypeDescription","_step","_iterator","_createForOfIteratorHelper","n","formattedJar","formatSampleJar","f","sugestedSamples","_this11","formattedSuggestSamples","_step2","_iterator2","soilTypeCode","measurementObjectName","mpMemo","layerGUID","presentationLayers","presentationJars","parseFormattedJarToPresentationJar","sampleGUID","formatCode","getSublocationName","subLocationId","sublocations","sublocation","SlID","SlName","soilDepthCode","sampleJars","getFormattedMeasurementPoint","formattedLayerIndexInMP","formatScoreSummaries","formattedSpecialCompounds","formattedPID","formattedOilAndWaterReaction","formattedOdour","scoreSummary","scoreType","specialCompoundInLayer","typeCode","gradientCode","cloneJarsAndMarkSuggestedJar","formattedlayer","jarGuid","_this12","MpGuid","measurementObjectGUID","tblLayers","allLayers","allJars","jarsInMP","layersInMP","formattedLayers","formattedLayersArray","sampleJarForLayer","LaGuid","formattedLayer","formatLayer","MpName","_this13","jarsInMeasurementPoint","layersInMeasurementPoint","mpFeaturesArray","MpPointGeometry","geometryString","substring","lastIndexOf","geometryArray","split","parseFloat","Id","MpTypeCode","_this14","LaFrom","LaTo","getLayerSpecialCompounds","LaPID","getLayerOilWaterReaction","getLayerOdour","LaID","LaRemark","LaSoilTypeCode","getLayerSoilTypeAndAdditives","jarsInLayer","getJarsInLayer","formatJar","sortFormattedJarsFunc","getSoilDepthType","depthMean","JrFrom","JrTo","JrID","JrName","JrRemark","JrBarcode","JrPackingTypeCode","creationDate","moment","JrDateTime","format","jarCenter","soilAndAdditives","notFoundValue","formattedCodeDescription","intensity","LaOdourTypeCode","LaOdourIntensityCode","LaOWTypeCode","table","tableData","getDefaultName","resetNewAnalysisSample","_this15","_callee7","newAnalysisSampleObject","projectWithNewAnalysisSample","sampleSuccessfulCreated","_context7","generateNewAnalaysisSampleObject","getProjectWithNewAnalysisSample","analaysisSampleTable","getAnalysisSamplesFromProjectData","samplePartsTable","tblSampleParts","samplePartsTableClone","analysisSampleTableClone","AnID","generateNewAnalysisSampleId","AnName","AnFrom","min","AnTo","AnSampleTaker","AnMatrix","AnDateLastChanged","AnGuid","guidUtils","newGuid","AnDatum","Date","sampleSuccessfullyCreated","proposedName","match","getNextIncreamentedAnalysisSampleNameByLetter","getNextIncreamentedAnalysisSampleNameByNumber","_ref","suggestedSampleJars","currentSelectedLayerIndex","currentSelectedLayer","currentSelectedJarIndex","currentSelectedJar","newSelectedLayer","newSelectedJar","formattedCurrentJar","presentationCurrentJar","formattedNewJar","presentationNewJar","resetJarToSwitch","_this16","proposedNameLower","removeTrailingNumbersExceptZeros","trailingProposedNumber","originalDigitCount","trailingNumbersOrdered","sortUtils","naturalSort","nameNoTrailingNumbers","replace","zeroCount","getTrailingZeroStringCountMinus1","zerosStringMinus1Zero","repeat","names","orderedLetters","letterAtEndOfProposedName","letterToNumCount","letterAtEndOfCurrentName","nextLetterAtEndOfSimilairName","completedName","numberToLetter","includeAlreadyCreatedSamples","analysisSamples","num","ret","fromCharCode","nameLowerCase","trailingNumbersString","ADD","REMOVE","baseOptions","once","un","mapPrecomposeKey_","mapRenderKey_","sourceChangeKey_","renderer_","rendered","setMap","addChangeListener","SOURCE","handleSourcePropertyChange_","setSource","getLayersArray","opt_array","array","getLayerStatesArray","opt_states","states","getLayerState","getSource","getRenderSource","handleSourceChange_","layerRenderer","getRenderer","unrender","setMapInternal","MAP","getMapInternal","evt","renderEvent","layerStatesArray","layerState","some","arrayLayerState","createRenderer","hasRenderer","dispose","inView","minResolution","douglasPeucker","squaredTolerance","simplifiedFlatCoordinates","simplifiedOffset","markers","stack","last","first","maxSquaredDistance","squaredDistance_1","douglasPeuckerArray","simplifiedEnds","snap","tolerance","quantize","x3","y3","quantizeArray","quantizeMultiArray","simplifiedEndss","Attribution","element","ulElement_","collapsed_","collapsed","userCollapsed_","overrideCollapsible_","collapsible_","tipLabel","expandClassName","collapseLabel","collapseClassName","collapseLabel_","textContent","label_","activeLabel","toggleButton_","setAttribute","handleClick_","cssClasses","renderedAttributions_","renderedVisible_","collectSourceAttributions_","lookup","visibleAttributions","attributionGetter","getAttributions","attributions","getAttributionsCollapsible","j","jj","setCollapsible","updateElement_","display","innerHTML","handleToggle_","classList","toggle","getCollapsible","setCollapsed","getCollapsed","mapEvent","Control","Rotate","compassClassName","add","callResetNorth_","resetNorth","duration_","duration","autoHide_","autoHide","rotation_","resetNorth_","getMap","getRotation","PI","animate","easing","setRotation","remove","Zoom","delta","zoomInClassName","zoomOutClassName","zoomInLabel","zoomOutLabel","zoomInTipLabel","zoomOutTipLabel","inElement","createTextNode","outElement","zoomByDelta_","currentZoom","getZoom","newZoom","getConstrainedZoom","getAnimating","cancelAnimations","setZoom","defaults","Collection","zoomControl","zoomOptions","rotateControl","rotate","rotateOptions","attributionControl","attribution","attributionOptions","t","module","h","l","exp","u","sqrt","m","_maxEntries","_minEntries","clear","minX","minY","maxX","maxY","leaf","_all","search","toBBox","collides","insert","_build","_splitRoot","_insert","_condense","compareMinX","compareMinY","toJSON","fromJSON","_chooseSubtree","_split","_adjustParentBBoxes","_chooseSplitAxis","_chooseSplitIndex","v","M","_allDistMargin","linearRingContainsExtent","outside","linearRingContainsXY","wn","linearRingsContainsXY","linearRingssContainsXY","POINT","LINE","createOrUpdate","opt_tileCoord","getKeyZXY","getKey","fromKey","hash","withinExtentAndZ","getMinZoom","getMaxZoom","getFullTileRange","containsXY","XYZ","interpolate","imageSmoothing","cacheSize","crossOrigin","opaque","reprojectionErrorThreshold","tileLoadFunction","tilePixelRatio","tileUrlFunction","url","urls","transition","attributionsCollapsible","zDirection","gutter_","gutter","getGutter","MAX_SUBDIVISION","MAX_TRIANGLE_WIDTH","Triangulation","sourceProj","targetProj","targetExtent","maxSourceExtent","errorThreshold","opt_destinationResolution","sourceProj_","targetProj_","transformInvCache","transformInv","transformInv_","maxSourceExtent_","errorThresholdSquared_","triangles_","wrapsXInSource_","canWrapXInSource_","canWrapX","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","isGlobal","targetQuadExtent","targetCoverageX","isFinite","isNotFinite","centerSrc","dx","centerSrcEstimX","dy","centerSrcErrorSquared","bc","bcSrc","da","daSrc","ab","abSrc","cd","cdSrc","calculateSourceExtent","getTriangles","ReprojTile","sourceTileGrid","targetTileGrid","wrappedTileCoord","getTileFunction","opt_errorThreshold","opt_renderEdges","opt_interpolate","TileState","renderEdges_","pixelRatio_","canvas_","sourceTileGrid_","targetTileGrid_","wrappedTileCoord_","sourceTiles_","sourcesListenerKeys_","sourceZ_","getTileCoordExtent","maxTargetExtent","limitedTargetExtent","EMPTY","sourceProjExtent","targetResolution","getResolution","sourceResolution","errorThresholdInPixels","triangulation_","getZForResolution","sourceExtent","sourceRange","getTileRangeForExtentAndZ","srcX","srcY","getImage","reproject_","sources","size","getTileSize","LOADING","leftToLoad_1","sourceListenKey_1","unlistenSources_","setTimeout","release","Tile","RenderEvent","opt_inversePixelTransform","opt_frameState","opt_context","opt_size","hasArea","ratio","toSize","pointerEvents","target_","map_","listenerKeys","setTarget","getOverlayContainerStopEvent","getElementById","DoubleClickZoom","delta_","handleEvent","stopEvent","MapBrowserEventType","browserEvent","anchor","Interaction","DragPan","stopDown","kinetic_","kinetic","lastCentroid","lastPointersCount_","panning_","condition","condition_","onFocusOnly","noKinetic_","handleDragEvent","beginInteraction","targetPointers","centroid","update","adjustCenterInternal","begin","handleUpEvent","distance","getDistance","angle","getAngle","getCenterInternal","centerpx","getPixelFromCoordinateInternal","dest","getCoordinateFromPixelInternal","cos","sin","animateInternal","getConstrainedCenter","endInteraction","handleDownEvent","Pointer","DragRotate","lastAngle_","getConstraints","getSize","theta","atan2","adjustRotationInternal","RenderBox","geometry_","element_","startPixel_","endPixel_","render_","startPixel","endPixel","px","getOverlayContainer","setPixels","createOrUpdateGeometry","pixels","coordinates","setCoordinates","Polygon","getGeometry","Disposable","DragBoxEventType","BOXSTART","BOXDRAG","BOXEND","BOXCANCEL","DragBoxEvent","Event","DragBox","box_","minArea_","minArea","onBoxEnd","boxEndCondition_","boxEndCondition","defaultBoxEndCondition","completeBox","DragZoom","out_","out","rotatedExtent","rotatedExtentForGeometry","getResolutionForExtentInternal","factor","clone","fitInternal","LEFT","UP","RIGHT","DOWN","KeyboardPan","defaultCondition_","pixelDelta_","pixelDelta","KEYDOWN","keyEvent","keyCode","KeyCode","mapUnitsDelta","deltaX","deltaY","KeyboardZoom","KEYPRESS","charCode","charCodeAt","Kinetic","decay","minVelocity","delay","decay_","minVelocity_","delay_","points_","angle_","initialVelocity_","now","lastIndex","firstIndex","Mode","TRACKPAD","WHEEL","MouseWheelZoom","totalDelta_","lastDelta_","maxDelta_","maxDelta","timeout_","timeout","useAnchor_","useAnchor","constrainResolution_","constrainResolution","lastAnchor_","startTime_","timeoutId_","mode_","trackpadEventGap_","trackpadTimeoutId_","deltaPerZoom_","endInteraction_","wheelEvent","deltaMode","WheelEvent","DOM_DELTA_PIXEL","DOM_DELTA_LINE","getConstrainResolution","clearTimeout","adjustZoom","timeLeft","handleWheelZoom_","setMouseAnchor","PinchRotate","pointerOptions","anchor_","rotating_","rotationDelta_","threshold_","threshold","rotationDelta","touch0","touch1","clientY","clientX","viewportPosition","getViewport","getBoundingClientRect","handlingDownUpSequence","PinchZoom","lastDistance_","lastScaleDelta_","scaleDelta","adjustResolutionInternal","direction","interactions","altShiftDragRotate","doubleClickZoom","zoomDelta","zoomDuration","dragPan","pinchRotate","pinchZoom","keyboard","mouseWheelZoom","shiftDragZoom","IconImageCache","cache_","cacheSize_","maxCacheSize_","canExpireCache","expire","iconImage","setSize","maxCacheSize","colorString","shared","brokenDiagonalRendering_","drawTestTriangle","ctx","u1","v1","u2","v2","closePath","fillRect","restore","verifyBrokenDiagonalRendering","isBrokenDiagonalRendering","globalCompositeOperation","fillStyle","calculateSourceResolution","targetCenter","sourceCenter","targetMetersPerUnit","sourceMetersPerUnit","compensationFactor","calculateSourceExtentResolution","triangulation","pixelRound","sourceDataExtent","canvasWidthInUnits","canvasHeightInUnits","stitchContext","stitchScale","xPos","yPos","srcWidth","srcHeight","targetTopLeft","x0","y0","u0","v0","sourceNumericalShiftX","sourceNumericalShiftY","augmentedMatrix","affineCoefs","steps","ud","vd","step","translate","strokeStyle","lineWidth","Property","RENDER_ORDER","BaseVectorLayer","renderBuffer","updateWhileAnimating","updateWhileInteracting","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","INTERSECTING","drawCustomCoordinates_","builderEnds","builderEnd","beginGeometry","builderEndss","getType","getStride","builderBegin","getOrientedFlatCoordinates","getEndss","myEnds","inflate","getFlatCoordinates","getEnds","endGeometry","reverseHitDetectionInstructions","instruction","fillStyleColor","getColor","strokeStyleColor","strokeStyleLineCap","getLineCap","lineCap","strokeStyleLineDash","getLineDash","lineDash","strokeStyleLineDashOffset","getLineDashOffset","lineDashOffset","strokeStyleLineJoin","getLineJoin","lineJoin","strokeStyleWidth","getWidth","strokeStyleMiterLimit","getMiterLimit","miterLimit","createFill","fillInstruction","applyStroke","createStroke","updateFillStyle","currentFillStyle","updateStrokeStyle","currentStrokeStyle","currentLineCap","currentLineDash","currentLineDashOffset","currentLineJoin","currentLineWidth","currentMiterLimit","endGeometryInstruction","CanvasImageBuilder","hitDetectionImage_","image_","imagePixelRatio_","anchorX_","anchorY_","height_","opacity_","originX_","originY_","rotateWithView_","scale_","width_","declutterMode_","declutterImageWithText_","myBegin","opt_sharedData","getAnchor","getOrigin","getPixelRatio","getHitDetectionImage","getOpacity","getRotateWithView","getScaleArray","getDeclutterMode","CanvasLineStringBuilder","drawFlatCoordinates_","moveToLineToInstruction","lastStroke","CanvasPolygonBuilder","drawFlatCoordinatess_","numEnds","setFillStrokeStyles_","circleInstruction","matchingChunk","maxAngle","acos","m12","m23","x12","y12","x23","y23","chunkStart","chunkEnd","chunkM","start","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","getFlatMidpoint","getCenter","getFlatMidpoints","getFlatInteriorPoint","getFlatInteriorPoints","beg_1","w","keep","saveTextStates_","backgroundFill","backgroundStroke","padding","p0","p1","p2","p3","pixelRatio_1","textAlign","flatOffset","flatEnd","oo","range","drawChars_","strokeKey","textKey","justify","textBaseline","fillKey","baseline","strokeWidth","textFillStyle","getFill","textStrokeStyle","getStroke","getFont","textScale","getOverflow","getMaxAngle","getPlacement","getTextAlign","getJustify","getTextBaseline","getBackgroundFill","getBackgroundStroke","getPadding","textOffsetX","getOffsetX","textOffsetY","getOffsetY","textRotateWithView","textRotation","getText","join","BATCH_CONSTRUCTORS","PolygonBuilder","Builder","ImageBuilder","LineStringBuilder","TextBuilder","BuilderGroup","tolerance_","maxExtent_","resolution_","buildersByZIndex_","builderInstructions","zKey","builders","builderKey","builderInstruction","getBuilder","builderType","zIndexKey","replays","replay","Constructor","drawTextOnPath","startM","measureAndCacheTextWidth","cache","segmentM","advance","beginX","beginY","startOffset","startLength","endM","endX","endY","flat","previousAngle","singleSegment","iStart","charLength","len","chars","tmpExtent","p4","getDeclutterBox","replayImageOrLabelArgs","declutterBox","rtlRegEx","RegExp","horizontalTextAlign","align","test","createTextChunks","acc","line","Executor","overlaps","alignFill_","coordinateCache_","renderedTransform_","pixelCoordinates_","viewRotation_","widths_","createLabel","textIsArray","chunks","_a","widths","heights","lineWidths","renderWidth","contextInstructions","OffscreenCanvasRenderingContext2D","CanvasRenderingContext2D","setLineDash","previousFont","leftRight","strokeInstructions","fillInstructions","lineHeight","lineOffset","widthHeightIndex","lineWidthIndex","text_1","fillStrokeArgs","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","opacity","box","strokePadding","intersects","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","arc","coords","rotateWithView","declutterMode","declutterImageWithText","labelWithAnchor","widthIndex","imageArgs","imageDeclutterBox","measurePixelRatio","pixelRatioScale","cachedWidths","pathLength","textLength","parts","drawChars","cc","part","i_1","ii_1","execute","executeHitDetection","ORDER","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","isEmpty","opt_builderTypes","builderTypes","circlePixelIndexArrayCache","radius","maxDistanceSq","distances","distanceSq","pixelIndex","CanvasImmediateRenderer","opt_squaredTolerance","opt_userTransform","context_","extent_","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_","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","HIT_DETECT_RESOLUTION","createHitDetectionImageData","transforms","styleFunction","featureCount","indexFactor","featuresByZIndex","featureStyleFunction","styles","originalStyle","setColor","setText","imgSize","getImageSize","imgContext","img","setImage","Icon","anchorXUnits","IconAnchorUnits","PIXELS","anchorYUnits","getScale","getZIndex","byGeometryType","zIndexKeys","geomAndStyle","k","kk","hitDetect","resultFeatures","g","SIMPLIFY_TOLERANCE","GEOMETRY_RENDERERS","renderPointGeometry","renderLineStringGeometry","renderPolygonGeometry","renderMultiPointGeometry","renderMultiLineStringGeometry","renderMultiPolygonGeometry","renderGeometryCollectionGeometry","renderCircleGeometry","defaultOrder","feature1","feature2","getSquaredTolerance","getTolerance","builderGroup","opt_declutterBuilderGroup","circleReplay","textReplay","renderFeature","replayGroup","listener","opt_transform","getImageState","unlistenImageChange","listenImageChange","renderFeatureInternal","simplifiedGeometry","renderGeometry","geometryRenderer","getHitDetectionRenderer","getGeometries","lineStringReplay","polygonReplay","imageBuilderGroup","imageReplay_1","imageReplay","textBuilderGroup","imageReplay_2","CanvasVectorLayerRenderer","boundHandleStyleImageChange_","handleStyleImageChange_","animatingOrInteracting_","hitDetectionImageData_","renderedFeatures_","renderedRevision_","renderedResolution_","renderedExtent_","wrappedRenderedExtent_","renderedRotation_","renderedCenter_","renderedProjection_","renderedRenderOrder_","replayGroup_","replayGroupChanged","clipping","compositionContext_","renderWorlds","executorGroup","vectorSource","viewHints","ViewHint","ANIMATING","INTERACTING","multiWorld","getWrapX","endWorld","world","setupCompositionContext_","compositionContext","releaseCompositionContext_","clipped","startX","executorGroups","animating","interacting","frameStateExtent","vectorLayerRevision","getRevision","vectorLayerRenderBuffer","vectorLayerRenderOrder","renderedExtent","loadExtents","loadExtent","declutterBuilderGroup","userTransform","userProjection","extent_1","userExtent_1","loadFeatures","dirty","userExtent","getFeaturesInExtent","replayGroupInstructions","getOverlaps","VectorLayer","PointerInteraction","handleMoveEvent","getPointerCount","updateTrackedPointers_","handledUp","handled","activePointers","setActive","getActive","ACTIVE","active","pan","opt_duration","currentCenter","zoomByDelta","opt_anchor","newResolution","getResolutionForZoom","PRELOAD","USE_INTERIM_TILES_ON_ERROR","BaseTileLayer","preload","useInterimTilesOnError","setPreload","setUseInterimTilesOnError","getPreload","TileProperty","getUseInterimTilesOnError","BaseTile","CanvasTileLayerRenderer","tileLayer","extentChanged","renderedPixelRatio","renderedProjection","renderedRevision","renderedTiles","newTiles_","tmpTileRange_","TileRange","isDrawableTile","tileState","getTile","tileSource","setState","getInterimTile","getTileGridForProjection","getTilePixelRatio","ImageTile","tileOrigin","tileResolution","getGutterForProjection","viewResolution","viewCenter","sourceRevision","canvasExtent","tilesToDrawByZ","findLoadedTiles","tmpTileRange","viewport","tileCoordIntersectsViewport","uid","inTransition","endTransition","getAlpha","time","childTileRange","getTileCoordChildTileRange","covered","forEachTileCoordParentTileRange","canvasScale","getInterpolate","clips","clipZs","currentClip","getOpaque","currentZ","currentTilePixelSize","getTilePixelSize","currentResolution","currentScale","dx_1","dy_1","originTileCoord","originTileExtent","tileGutter","tilesToDraw","tileCoordKey","xIndex","nextX","yIndex","nextY","contextSaved","drawTileImage","updateUsedTiles","usedTiles","manageTilePyramid","scheduleExpireCache","getTileImage","alphaChanged","postRenderFunction","tileSourceKey","expireCache","postRenderFunctions","opt_tileCallback","wantedTiles","tileQueue","tileCount","isKeyQueued","enqueue","useTile","updateCacheSize","Feature","opt_geometryOrProperties","id_","geometryName_","geometryChangeKey_","handleGeometryChanged_","setGeometry","properties","setProperties","hasProperties","getProperties","setGeometryName","getGeometryName","getId","handleGeometryChange_","createStyleFunction","removeChangeListener","styles_1","tmp","linearRingIsClockwise","edge","linearRingsAreOriented","opt_right","right","isClockwise","linearRingssAreOriented","orientLinearRings","orientLinearRingsArray","cancelButtonPress","titleLabel","cancelButtonLabel","confirmButtonPress","confirmButtonLabel","hideModal","MapBrowserEvent","opt_dragging","opt_activePointers","pixel_","coordinate_","dragging","getEventPixel","getCoordinateFromPixel","BaseLayer","background_","OPACITY","VISIBLE","Z_INDEX","MAX_RESOLUTION","MIN_RESOLUTION","MIN_ZOOM","MAX_ZOOM","className_","state_","opt_managed","managed","getMaxResolution","getMinResolution","EXTENT","setBackground","opt_background","setExtent","setMaxResolution","setMinResolution","setMaxZoom","setMinZoom","setOpacity","setVisible","setZIndex","zindex","RBush","opt_maxEntries","rbush_","items_","extents","bbox","getAll","getInExtent","forEach_","forEachInExtent","opt_extent","rbush","ADDFEATURE","CHANGEFEATURE","CLEAR","REMOVEFEATURE","FEATURESLOADSTART","FEATURESLOADEND","FEATURESLOADERROR","withCredentials","loadFeaturesXhr","success","failure","xhr","XMLHttpRequest","responseType","onload","status","responseText","responseXML","DOMParser","parseFromString","readFeatures","featureProjection","readProjection","onerror","send","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_","addFeature","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","opt_projection","anExtent","getClosestFeatureToCoordinate","opt_filter","closestFeature","closestPoint","minSquaredDistance","previousMinSquaredDistance","closestPointXY","minDistance","getFeatureById","getFeatureByUid","getFormat","getUrl","sid","removeFromIdIndex_","hasFeature","getLength","loadedExtentsRtree","extentsToLoad","_loop_1","extentToLoad","alreadyLoaded","this_1","removeLoadedExtent","featureChangeKeys","removed","setLoader","setUrl","Source","MOVESTART","MOVEEND","LOADSTART","LOADEND","lineStringLength","LinearRing","opt_layout","maxDeltaRevision_","setFlatCoordinates","layout","getArea","getCoordinates","getSimplifiedGeometryInternal","GeometryLayout","XY","setLayout","deflate","SimpleGeometry","opt_ends","ends_","flatInteriorPointRevision_","flatInteriorPoint_","orientedRevision_","orientedFlatCoordinates_","appendLinearRing","linearRing","polygon","applyProperties","orient","flatCenter","getInteriorPoint","Point","XYM","getLinearRingCount","getLinearRing","getLinearRings","linearRings","fromExtent","fromCircle","circle","opt_sides","opt_angle","sides","getLayout","arrayLength","makeRegular","getRadius","startAngle","HEX_COLOR_RE_","NAMED_COLOR_RE_","asString","fromNamed","el","body","rgb","getComputedStyle","fromString","MAX_CACHE_SIZE","fromStringInternal_","asArray","exec","hasAlpha","substr","normalize","interimTile","transition_","transitionStarts_","refreshInterimChain","getTileCoord","MapRenderer","dispatchRenderEvent","calculateMatrices2D","checkWrapped","thisArg","layerFilter","thisArg2","translatedCoordinate","offsets","layerStates","numLayers","callback_1","order","forEachLayerAtPixel","hasFeatureAtCoordinate","scheduleExpireIconCache","expireIconCache","CompositeMapRenderer","fontChangeListenerKey_","redrawText","firstChild","children_","declutterLayers","previousElement","sourceState","Composite","GroupEvent","LAYERS","LayerGroup","layersListenerKeys_","listenerKeys_","handleLayersChanged_","unique","setLayers","handleLayerChange_","getLayers","handleLayersAdd_","handleLayersRemove_","layersArray","registerLayerListeners_","handleLayerGroupAdd_","handleLayerGroupRemove_","collectionEvent","currentLayers","pos","ownLayerState","defaultZIndex","Base","MapBrowserEventHandler","moveTolerance","clickTimeoutId_","emulateClicks_","dragging_","dragListenerKeys_","moveTolerance_","down_","activePointers_","trackedTouches_","pointerdownListenerKey_","handlePointerDown_","originalPointerMoveEvent_","relayedListenerKey_","relayMoveEvent_","boundHandleTouchMove_","handleTouchMove_","TOUCHMOVE","passive","emulateClick_","newEvent","updateActivePointers_","pointerId","handlePointerUp_","defaultPrevented","isMouseActionButton_","property","doc","handlePointerMove_","getRootNode","isMoving_","cancelable","removeEventListener","Target","DROP","PriorityQueue","priorityFunction","keyFunction","priorityFunction_","keyFunction_","elements_","priorities_","queuedElements_","dequeue","elements","priorities","siftUp_","elementKey","priority","siftDown_","getCount","getLeftChildIndex_","getRightChildIndex_","getParentIndex_","heapify_","isQueued","startIndex","lIndex","rIndex","smallerChildIndex","parentIndex","reprioritize","TileQueue","tilePriorityFunction","tileChangeCallback","boundHandleTileChange_","handleTileChange","tileChangeCallback_","tilesLoading_","tilesLoadingKeys_","added","getTilesLoading","tileKey","loadMoreTiles","maxTotalLoading","maxNewLoads","newLoads","getTilePriority","tileCenter","removeLayerMapProperty","setLayerMapProperty","PluggableMap","optionsInternal","createOptionsInternal","renderComplete_","loaded_","boundHandleBrowserEvent_","handleBrowserEvent","maxTilesLoading_","maxTilesLoading","postRenderTimeoutHandle_","animationDelayKey_","animationDelay_","renderFrame_","coordinateToPixelTransform_","pixelToCoordinateTransform_","frameIndex_","frameState_","previousExtent_","viewPropertyListenerKey_","viewChangeListenerKey_","layerGroupPropertyListenerKeys_","viewport_","window","overlayContainer_","overlayContainerStopEvent_","mapBrowserEventHandler_","keyboardEventTarget_","keyboardEventTarget","targetChangeHandlerKeys_","overlays_","overlays","overlayIdIndex_","postRenderFunctions_","tileQueue_","handleTileChange_","MapProperty","LAYERGROUP","handleLayerGroupChanged_","VIEW","handleViewChanged_","SIZE","handleSizeChanged_","TARGET","handleTargetChanged_","View","viewOptions","setView","addOverlayInternal_","overlay","control","interaction","addControl","getControls","addInteraction","getInteractions","getLayerGroup","handleLayerAdd_","addOverlay","getOverlays","forEachFeatureAtPixel","getFeaturesAtPixel","getAllLayers","addLayersFrom","layerGroup","hasFeatureAtPixel","getEventCoordinate","getEventCoordinateInternal","eventPosition","changedTouches","getTarget","getProjection","getOverlayById","group","getLoadingOrNotReady","getPixelFromCoordinate","viewCoordinate","ownerDocument","opt_type","handleMapBrowserEvent","eventType","rootNode","documentElement","interactionsArray","cont","propagationStopped","handlePostRender","hints","lowOnFrameBudget","MapEvent","MapEventType","resolveConstraints","CONTEXTMENU","defaultView","RESIZE","updateSize","cancelAnimationFrame","handleViewPropertyChanged_","updateViewportSize_","handleLayerRemove_","isRendered","renderSync","requestAnimationFrame","removeControl","removeInteraction","removeLayer","removeOverlay","previousFrameState","isDef","getHints","mapId","renderTargets","nextCenter","nextResolution","nextRotation","nextExtent","moveStart","idle","setLayerGroup","oldLayerGroup","computedStyle","offsetWidth","offsetHeight","getClientRects","warn","setViewportSize","Map","ImageBase","ImageWrapper","imageLoadFunction","src_","Image","unlisten_","imageLoadFunction_","handleImageError_","unlistenImage_","handleImageLoad_","listenImage","loadHandler","errorHandler","listening","decoding","loaded","LOAD","decode","RegularShape","displacement","hitDetectionCanvas_","origin_","points","radius_","radius1","radius2_","radius2","stroke_","size_","renderOptions_","getPoints","getRadius2","getDisplacement","setFill","createHitDetectionCanvas_","renderOptions","draw_","setStroke","calculateLineJoinSize_","r1","r2","miterRatio","maxr","bevelAdd","aa","bb","ee","innerMiterRatio","innerLength","createRenderOptions","maxRadius","createPath_","drawHitDetectionCanvas_","angle0","radiusC","CircleStyle","setRadius","Circle","Style","geometryFunction_","defaultGeometryFunction","hitDetectionRenderer_","zIndex_","setRenderer","setHitDetectionRenderer","toFunction","defaultStyles","createDefaultStyle","Fill","Stroke","createEditingStyle","white","blue","taintedTestContext","IconImage","color_","imageState_","tainted_","isTainted_","dispatchChangeEvent_","replaceColor_","getSrc","imgData","putImageData","normalizedAnchor_","anchorOrigin_","anchorOrigin","IconOrigin","TOP_LEFT","anchorXUnits_","FRACTION","anchorYUnits_","crossOrigin_","imgSize_","iconImage_","offset_","offsetOrigin_","offsetOrigin","TOP_RIGHT","BOTTOM_RIGHT","BOTTOM_LEFT","setAnchor","iconImageSize","tmpTileCoord","DECIMALS","TileGrid","zoomFactor","resolutions_","origins","zoomFactor_","origins_","tileSizes_","tileSizes","tileSize_","fullTileRanges_","tmpSize_","tmpExtent_","sizes","restrictedTileRange","calculateTileRanges_","forEachTileCoord","opt_tileRange","tileCoordExtent","getResolutions","getTileRangeForTileCoordAndZ","tileCoordZ","tileCoordX","tileCoordY","getTileRangeExtent","getTileCoordForXYAndZ_","getTileCoordForCoordAndResolution","getTileCoordForXYAndResolution_","reverseIntersectionPolicy","getTileCoordResolution","opt_direction","fullTileRanges","tileLoadFunction_","getBlankImage","naturalWidth","naturalHeight","DEFAULT_FILL_COLOR","Text","font_","scaleArray_","textAlign_","justify_","textBaseline_","maxAngle_","placement_","overflow_","offsetX_","offsetY_","backgroundFill_","backgroundStroke_","padding_","setOverflow","setFont","setMaxAngle","setOffsetX","setOffsetY","setPlacement","setRotateWithView","setScale","setTextAlign","setJustify","setTextBaseline","setBackgroundFill","setBackgroundStroke","setPadding","lineCap_","lineDash_","lineDashOffset_","lineJoin_","miterLimit_","setLineCap","setLineDashOffset","setLineJoin","setMiterLimit","setWidth","disable","none","createSnapToN","opt_isMoving","createSnapToZero","opt_tolerance","LRUCache","opt_highWaterMark","highWaterMark","count_","entries_","oldest_","newest_","containsKey","value_","key_","newer","older","getKeys","getValues","peekLast","peekLastKey","peekFirstKey","peek","TileCache","pruneExceptNewestZ","TILELOADSTART","TILELOADEND","TILELOADERROR","TileSource","opaque_","tilePixelRatio_","tileCache","tmpSize","tileOptions","getTileCacheForProjection","setKey","getTileGrid","sourceProjection","getTileCoordForTileUrlFunction","TileSourceEvent","UrlTile","generateTileUrlFunction_","setUrls","tileLoadingKeys_","getTileLoadFunction","getTileUrlFunction","getUrls","TileEventType","setTileLoadFunction","setTileUrlFunction","TileImage","defaultTileLoadFunction","tileClass","tileCacheForProjection","tileGridForProjection","reprojectionErrorThreshold_","renderReprojectionEdges_","usedTileCache","thisProj","projKey","createTile_","urlTileCoord","tileUrl","newTile","getTileInternal","setRenderReprojectionEdges","setTileGridForProjection","tilegrid","proj","imageTile","assignClosest","offset1","offset2","maxSquaredDelta","squaredDelta","arrayMaxSquaredDelta","multiArrayMaxSquaredDelta","assignClosestPoint","isRing","opt_tmpPoint","squaredDistance","tmpPoint","assignClosestArrayPoint","assignClosestMultiArrayPoint","createFromTemplate","zRegEx","xRegEx","yRegEx","dashYRegEx","getHeight","createFromTemplates","templates","tileUrlFunctions","createFromTileUrlFunctions","expandUrl","startCharCode","stopCharCode","stop_1","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","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","sourceRotation","targetRotation","isNoopAnimation","setHint","updateAnimations_","animationCallback","getInteracting","more","seriesComplete","elapsed","fraction","progress","getViewportSize_","constrainedResolution","calculateCenterZoom","applyTargetState_","constrainedRotation","calculateCenterRotate","opt_rotation","opt_hints","calculateExtent","calculateExtentInternal","getViewportSizeMinusPadding_","getZoomForResolution","setConstrainResolution","enabled","getResolutionForExtent","getResolutionForValueFunction","opt_power","getConstrainedResolution","getValueForResolutionFunction","logPower","reducedSize","calculateCenterOn","nearest","baseLevel","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","Units","defaultMaxResolution","defaultMinResolution","enableRotation","constrainRotation","ERROR_THRESHOLD","ENABLE_RASTER_REPROJECTION","ImageStyle","displacement_","setDisplacement","twiceArea","area","linearRingss","inflateCoordinates","opt_coordinates","inflateCoordinatesArray","opt_coordinatess","coordinatess","inflateMultiCoordinatesArray","opt_coordinatesss","coordinatesss","events","FullScreenEventType","ENTERFULLSCREEN","LEAVEFULLSCREEN","keys_","source_","isInFullscreen_","boundHandleMapTargetChange_","handleMapTargetChange_","cssClassName_","documentListeners_","activeClassName_","activeClassName","inactiveClassName_","inactiveClassName","labelNode_","labelActive","labelActiveNode_","button_","setClassName_","handleFullScreen_","isFullScreenSupported","isFullScreen","exitFullScreen","requestFullScreenWithKeys","requestFullScreen","handleFullScreenChange_","wasInFullscreen","fullscreen","_b","_d","oldMap","listeners","requestFullscreen","fullscreenEnabled","fullscreenElement","exitFullscreen","intersectsLineString","coordinatesExtent","point1","point2","intersectsLineStringArray","intersectsLinearRing","intersectsLinearRingArray","intersectsLinearRingMultiArray","easeIn","easeOut","inAndOut","linear","CLASS_HIDDEN","CLASS_UNSELECTABLE","CLASS_UNSUPPORTED","CLASS_CONTROL","CLASS_COLLAPSED","fontRegEx","fontRegExMatchIndex","getFontParameters","fontSpec","weight","variant","families","family","ATTRIBUTION","containsTileRange","equals","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","fonts","clearInterval","setInterval","measureTextHeight","measureElement","metrics","measureText","actualBoundingBoxAscent","actualBoundingBoxDescent","minHeight","maxHeight","border","curr","getTextDimensions","baseStyle","currentWidth","currentHeight","drawImageOrLabel","labelOrImage","executeLabelInstructions","LENGTH","CollectionEvent","opt_element","opt_index","unique_","array_","assertUnique_","updateLength_","insertAt","elem","removeAt","setAt","opt_except","asColorLike","attributions_","adaptAttributions","attributionsCollapsible_","wrapX_","interpolate_","viewResolver","viewRejector","viewPromise_","setAttributions","attributionLike"],"mappings":"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","file":"js/SuggestAnalysisSamples.04231baf.js","sourcesContent":["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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSamplesInputContainer.vue?vue&type=style&index=0&id=352a9faa&prod&scoped=true&lang=css\"","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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSampleBoxes.vue?vue&type=style&index=0&id=50d0e642&prod&scoped=true&lang=css\"","/**\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/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~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 an `input`,\n * `select`, or `textarea` element and no `contenteditable` attribute is\n * set or inherited, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if the target element is not editable.\n * @api\n */\nexport var targetNotEditable = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n var tagName = /** @type {Element} */ (originalEvent.target).tagName;\n return (tagName !== 'INPUT' &&\n tagName !== 'SELECT' &&\n tagName !== 'TEXTAREA' &&\n // `isContentEditable` is only available on `HTMLElement`, but it may also be a\n // different type like `SVGElement`.\n // @ts-ignore\n !originalEvent.target.isContentEditable);\n};\n/**\n * Return `true` if the event originates from a mouse device.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a mouse device.\n * @api\n */\nexport var mouseOnly = function (mapBrowserEvent) {\n var pointerEvent = /** @type {import(\"../MapBrowserEvent\").default} */ (mapBrowserEvent).originalEvent;\n assert(pointerEvent !== undefined, 56); // mapBrowserEvent must originate from a pointer event\n // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n return pointerEvent.pointerType == 'mouse';\n};\n/**\n * Return `true` if the event originates from a touchable device.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a touchable device.\n * @api\n */\nexport var touchOnly = function (mapBrowserEvent) {\n var pointerEvt = /** @type {import(\"../MapBrowserEvent\").default} */ (mapBrowserEvent).originalEvent;\n assert(pointerEvt !== undefined, 56); // mapBrowserEvent must originate from a pointer event\n // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n return pointerEvt.pointerType === 'touch';\n};\n/**\n * Return `true` if the event originates from a digital pen.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a digital pen.\n * @api\n */\nexport var penOnly = function (mapBrowserEvent) {\n var pointerEvt = /** @type {import(\"../MapBrowserEvent\").default} */ (mapBrowserEvent).originalEvent;\n assert(pointerEvt !== undefined, 56); // mapBrowserEvent must originate from a pointer event\n // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n return pointerEvt.pointerType === 'pen';\n};\n/**\n * Return `true` if the event originates from a primary pointer in\n * contact with the surface or if the left mouse button is pressed.\n * See https://www.w3.org/TR/pointerevents/#button-states.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a primary pointer.\n * @api\n */\nexport var primaryAction = function (mapBrowserEvent) {\n var pointerEvent = /** @type {import(\"../MapBrowserEvent\").default} */ (mapBrowserEvent).originalEvent;\n assert(pointerEvent !== undefined, 56); // mapBrowserEvent must originate from a pointer event\n return pointerEvent.isPrimary && pointerEvent.button === 0;\n};\n//# sourceMappingURL=condition.js.map","/**\n * @module ol/render/EventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered before a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#prerender\n * @api\n */\n PRERENDER: 'prerender',\n /**\n * Triggered after a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n /**\n * Triggered before layers are 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","/**\n * @module ol/tilegrid\n */\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.js\").Corner} [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 : '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.js\").Corner} [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","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 * Releases canvas memory to avoid exceeding memory limits in Safari.\n * See https://pqina.nl/blog/total-canvas-memory-use-exceeds-the-maximum-limit/\n * @param {CanvasRenderingContext2D} context Context.\n */\nexport function releaseCanvas(context) {\n var canvas = context.canvas;\n canvas.width = 1;\n canvas.height = 1;\n context.clearRect(0, 0, 1, 1);\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|null} 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/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/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","/**\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","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 { 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 /**\n * The renderer is initialized and ready to render.\n * @type {boolean}\n */\n _this.ready = true;\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 * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @return {Uint8ClampedArray|Uint8Array|Float32Array|DataView|null} Pixel data.\n */\n LayerRenderer.prototype.getData = function (pixel) {\n return null;\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 && layer.getVisible() && layer.getSourceState() === 'ready') {\n layer.changed();\n }\n };\n /**\n * Clean up.\n */\n LayerRenderer.prototype.disposeInternal = function () {\n delete this.layer_;\n _super.prototype.disposeInternal.call(this);\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 * @type {Array}\n */\nexport var canvasPool = [];\n/**\n * @type {CanvasRenderingContext2D}\n */\nvar pixelContext = null;\nfunction createPixelContext() {\n var canvas = document.createElement('canvas');\n canvas.width = 1;\n canvas.height = 1;\n pixelContext = canvas.getContext('2d');\n}\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 /**\n * @protected\n * @type {import(\"../../PluggableMap.js\").FrameState|null}\n */\n _this.frameState = null;\n return _this;\n }\n /**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image.\n * @param {number} col The column index.\n * @param {number} row The row index.\n * @return {Uint8ClampedArray|null} The image data.\n */\n CanvasLayerRenderer.prototype.getImageData = function (image, col, row) {\n if (!pixelContext) {\n createPixelContext();\n }\n pixelContext.clearRect(0, 0, 1, 1);\n var data;\n try {\n pixelContext.drawImage(image, col, row, 1, 1, 0, 0, 1, 1);\n data = pixelContext.getImageData(0, 0, 1, 1).data;\n }\n catch (err) {\n pixelContext = null;\n return null;\n }\n return data;\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 {string} [opt_backgroundColor] Background color.\n */\n CanvasLayerRenderer.prototype.useContainer = function (target, transform, opt_backgroundColor) {\n var layerClassName = this.getLayer().getClassName();\n var container, context;\n if (target &&\n target.className === layerClassName &&\n (!opt_backgroundColor ||\n (target &&\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 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 if (!this.containerReused &&\n opt_backgroundColor &&\n !this.container.style.backgroundColor) {\n this.container.style.backgroundColor = opt_backgroundColor;\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.frameState = 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 /**\n * Clean up.\n */\n CanvasLayerRenderer.prototype.disposeInternal = function () {\n delete this.frameState;\n _super.prototype.disposeInternal.call(this);\n };\n return CanvasLayerRenderer;\n}(LayerRenderer));\nexport default CanvasLayerRenderer;\n//# sourceMappingURL=Layer.js.map","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"body\"},[_c('app-header'),_c('div',{staticClass:\"suggest-analysis-content-container\"},[(_vm.userIsAuthorized?.userHasFeatureWord === false && _vm.userIsAuthorized?.userHasFunction === false)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-4\"}),_c('div',{staticClass:\"col-sm-4 unauthorized\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.UnauthorizedNeedFeatureWord'))+\" \")])])])]):_vm._e(),(_vm.userIsAuthorized?.userHasFeatureWord === true && _vm.userIsAuthorized?.userHasFunction === false)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-4\"}),_c('div',{staticClass:\"col-sm-4 unauthorized\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.UnauthorizedNeedFunction'))+\" \")])])])]):_vm._e(),(_vm.userIsAuthorized?.userHasFeatureWord === true && _vm.userIsAuthorized?.userHasFunction === true)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-8 suggested-samples-input-output-column input-column\"},[_c('SuggestAnalysisSamplesInputContainer',{attrs:{\"projectCode\":_vm.projectCode,\"initialized\":_vm.initialized,\"excludeFieldSamplesOlderThenDays\":_vm.parameterExcludeFieldSamplesOlderThenDays},on:{\"submit\":_vm.getSuggestedAnalysisSamples,\"refresh\":_vm.getProjectData,\"updateSelectedMpIds\":_vm.updateSelectedMpIds}})],1),_c('div',{staticClass:\"col-sm-3 suggested-samples-input-output-column\"},[(_vm.showSampleOutputPanel)?_c('SuggestAnalysisSamplesOutputContainer',{attrs:{\"projectCode\":_vm.projectCode,\"suggestedAnalysisSamplesResults\":_vm.results.suggestedSamples,\"codeLists\":_vm.codeLists,\"veldData\":this.project.VeldData,\"userHasDeveloperLicense\":_vm.userHasDeveloperLicense,\"resultLog\":_vm.results.resultLog}}):_vm._e()],1),_c('div',{staticClass:\"col-sm-11 suggested-sample-column\"},_vm._l((_vm.results.formattedSuggestedSamples),function(suggestedAnalysisSample){return _c('SuggestAnalysisSampleCard',{key:suggestedAnalysisSample.sampleNumber,attrs:{\"measurementPointFeatures\":_vm.measurementPointFeatures,\"suggestedAnalysisSample\":suggestedAnalysisSample,\"allMeasurementPoints\":_vm.selectedFormattedMeasurementPoints},on:{\"createSample\":_vm.startCreatingSample,\"switchJar\":_vm.switchJar}})}),1),_c('div',{staticClass:\"modal-container\"},[_c('CreateAnalysisSampleModal',{attrs:{\"show\":_vm.showCreateSampleModal,\"defaultName\":_vm.newAnalysisSample.sampleName,\"sampleNameTaken\":_vm.newAnalysisSampleNameExists,\"matrixCode\":_vm.newAnalysisSample.matrixCode},on:{\"completeCreatingSample\":_vm.completeCreatingSample,\"cancelCreatingSample\":_vm.cancelCreatingSample,\"update:sampleName\":_vm.creatingSampleNameChange,\"update:sampleMatrixCode\":_vm.creatingSampleMatrixCodeChange}}),_c('confirm-modal',{attrs:{\"show\":_vm.showSwitchJarModal,\"title-label\":_vm.$t('SuggestedSamples.SwitchSelectJar'),\"confirm-button-label\":_vm.$t('SuggestedSamples.Switch'),\"cancel-button-label\":_vm.$t('button.cancel')},on:{\"close-modal\":_vm.cancelJarSwitch,\"confirm-button-pressed\":_vm.confirmJarSwitch}},[_vm._v(_vm._s(_vm.$t('SuggestedSamples.SwitchMessage')))])],1)]):_vm._e()]),_c('app-footer'),_c('nv-loading',{attrs:{\"show\":_vm.loading}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',{attrs:{\"name\":\"fade\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showModal),expression:\"showModal\"}],staticClass:\"backdrop\"},[_c('div',{staticClass:\"terraIndexModal\"},[_c('div',{staticClass:\"modal-dialog\"},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"modal-header\"},[_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.closeModal}},[_vm._v(\" × \")]),_c('h4',{staticClass:\"modal-title\"},[_vm._v(_vm._s(_vm.$t('SuggestedSamples.CreateAnalysisSample')))])]),_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"input-container\"},[_c('label',{attrs:{\"for\":\"new-analysis-sample-name\"}},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.CreateAnalysisSampleName'))+\" \")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.sampleName),expression:\"sampleName\"}],staticClass:\"form-control\",class:_vm.errorMessage === ''? '':'invalid',attrs:{\"id\":\"new-analysis-sample-name\"},domProps:{\"value\":(_vm.sampleName)},on:{\"input\":function($event){if($event.target.composing)return;_vm.sampleName=$event.target.value}}}),_c('p',{staticClass:\"error-message\"},[_vm._v(\" \"+_vm._s(_vm.errorMessage))])]),_c('div',{staticClass:\"input-container\"},[_c('label',{attrs:{\"for\":\"new-analysis-sample-select-matrix-type\"}},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.CreateAnalysisSampleMatrix'))+\" \")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.sampleMatrixCode),expression:\"sampleMatrixCode\"}],staticClass:\"form-control\",attrs:{\"id\":\"new-analysis-sample-select-matrix-type\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.sampleMatrixCode=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{domProps:{\"value\":'1'}},[_vm._v(_vm._s(_vm.$t('SuggestedSamples.MatrixGround')))]),_c('option',{domProps:{\"value\":'5'}},[_vm._v(_vm._s(_vm.$t('SuggestedSamples.MatrixWaterBed')))]),_c('option',{domProps:{\"value\":'6'}},[_vm._v(_vm._s(_vm.$t('SuggestedSamples.MatrixOther')))])])])]),_c('div',{staticClass:\"modal-footer\"},[_c('button',{staticClass:\"btn\",on:{\"click\":_vm.closeModal}},[_vm._v(\" \"+_vm._s(_vm.$t('other.close'))+\" \")]),_c('button',{staticClass:\"btn\",attrs:{\"disabled\":_vm.errorMessage !== ''},on:{\"click\":_vm.createSample}},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.CreateAnalysisSample'))+\" \")])])])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CreateAnalysisSampleModal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CreateAnalysisSampleModal.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CreateAnalysisSampleModal.vue?vue&type=template&id=0258beea&scoped=true\"\nimport script from \"./CreateAnalysisSampleModal.vue?vue&type=script&lang=js\"\nexport * from \"./CreateAnalysisSampleModal.vue?vue&type=script&lang=js\"\nimport style0 from \"./CreateAnalysisSampleModal.vue?vue&type=style&index=0&id=0258beea&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0258beea\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('TiPanel',{attrs:{\"secondary\":_vm.sampleIsCreated,\"tertiary\":_vm.nonSuggestedJarSelected,\"showCollapsedIcon\":true},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('div',{staticClass:\"property-container\"},_vm._l((_vm.suggestSampleProperties),function(sampleProperty,index){return _c('h4',{key:'suggest-sample-title' + index,staticClass:\"property-text\",style:({width: sampleProperty.width})},[_vm._v(_vm._s(sampleProperty.name)+\" \")])}),0)]},proxy:true},{key:\"contentEndHeader\",fn:function(){return [_c('transition',{attrs:{\"name\":\"fade\"}},[_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.suggestedAnalysisSample.canCreate),expression:\"suggestedAnalysisSample.canCreate\"}],staticClass:\"btn btn-default create-sample-button\",attrs:{\"type\":\"button\",\"disabled\":_vm.disableButton},on:{\"click\":_vm.createSample}},[_c('span',{staticClass:\"glyphicon glyphicon-plus btn-icon\"}),_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.CreateSample'))+\" \")])]),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.sampleIsCreated)?_c('div',{staticClass:\"created-sample-name-container\"},[_c('span',{staticClass:\"glyphicon glyphicon-ok\"}),_c('h4',[_vm._v(_vm._s(_vm.suggestedAnalysisSample.analysisSampleName))])]):_vm._e()])]},proxy:true},{key:\"content\",fn:function(){return [_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12\"},[_c('div',{staticClass:\"col-sm-2\"},[(_vm.measurementPointsAvailable)?_c('div',[_c('SuggestAnalysisSampleMap',{key:_vm.mapKey,attrs:{\"sampleNumber\":_vm.suggestedAnalysisSample.number,\"sampleMeasurementPointMarkers\":_vm.sampleMeasurementPointFeatures,\"otherMeasurementPointMarkers\":_vm.otherMeasurementPointFeatures}})],1):_c('div',{staticClass:\"no-markers-container\"},[_c('h5',[_vm._v(\" No coordinates \")])])]),_c('div',{staticClass:\"col-sm-10 sample-jars-container\"},_vm._l((_vm.suggestedAnalysisSample.jars),function(jar,jarIndex){return _c('SuggestAnalysisSampleJarCard',{key:_vm.suggestedAnalysisSample.number + '_JarCard_' + jarIndex,staticClass:\"sample-jar-card\",attrs:{\"sampleJar\":jar,\"sampleNumber\":_vm.suggestedAnalysisSample.number,\"excludeCheckboxIsReadonly\":!_vm.suggestedAnalysisSample.canCreate,\"sampleJarIndex\":jarIndex},on:{\"excludedJarChanged\":_vm.excludedJarChanged,\"switchJar\":_vm.switchJar}})}),1)])]),_c('div',{staticClass:\"all-measurement-object-container\"},[(_vm.showOtherMeasurementPoints)?_c('div',[(_vm.unusedMeasurementPoints.length < 1)?_c('div',{staticClass:\"no-result-container\"},[_c('p',[_vm._v(_vm._s(_vm.$t('SuggestedSamples.NoOtherMeasurementPoints ')))])]):_c('div',[_c('div',{staticClass:\"other-measurement-header-container\"},[_c('p',[_vm._v(_vm._s(_vm.$t('SuggestedSamples.OtherMeasurementPoints'))+\":\")]),_c('div',{staticClass:\"with-jars-checkbox\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.showJarsInOtherMeasurementPoints),expression:\"showJarsInOtherMeasurementPoints\"}],staticClass:\"with-jars-checkbox-input\",attrs:{\"id\":\"showJars\",\"type\":\"checkbox\",\"name\":\"showJars\"},domProps:{\"checked\":Array.isArray(_vm.showJarsInOtherMeasurementPoints)?_vm._i(_vm.showJarsInOtherMeasurementPoints,null)>-1:(_vm.showJarsInOtherMeasurementPoints)},on:{\"change\":function($event){var $$a=_vm.showJarsInOtherMeasurementPoints,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.showJarsInOtherMeasurementPoints=$$a.concat([$$v]))}else{$$i>-1&&(_vm.showJarsInOtherMeasurementPoints=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.showJarsInOtherMeasurementPoints=$$c}}}}),_c('label',{staticClass:\"with-jars-checkbox-label\",attrs:{\"for\":\"showJars\"}},[_vm._v(_vm._s(_vm.$t('SuggestedSamples.ShowJars')))])])]),_c('div',{staticClass:\"measurement-object-cards-container\"},_vm._l((_vm.unusedMeasurementPoints),function(jar,jarIndex){return _c('SuggestAnalysisSampleJarCard',{key:_vm.suggestedAnalysisSample.number + '_JarCard_' + jarIndex,staticClass:\"sample-jar-card\",attrs:{\"sampleJar\":jar,\"sampleNumber\":_vm.suggestedAnalysisSample.number,\"sampleJarIndex\":jarIndex,\"showReasons\":false,\"showScore\":false,\"showCheckbox\":false,\"showJars\":_vm.showJarsInOtherMeasurementPoints,\"excludeCheckboxIsReadonly\":false}})}),1)])]):_vm._e(),_c('div',{staticClass:\"collapsing-container\",on:{\"click\":_vm.setShowOtherMeasurementPoints}},[_c('p',{staticClass:\"collapsing-container-text\"},[_vm._v(_vm._s(_vm.$t('SuggestedSamples.OtherMeasurementPoints')))]),_c('font-awesome-icon',{staticClass:\"collapsing-container-icon\",attrs:{\"icon\":_vm.showOtherMeasurementPoints ? 'fa-solid fa-chevron-up' : 'fa-solid fa-chevron-down'}})],1)])])]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading title\",class:_vm.classColor,style:({cursor: _vm.collapsible ? 'pointer' : 'default' }),on:{\"click\":_vm.toggleOpen}},[_c('div',{staticClass:\"panel-title-container\"},[(_vm.collapsible && _vm.showCollapsedIcon)?_c('span',{staticClass:\"collapsible-icon glyphicon\",class:_vm.open ? 'glyphicon-menu-up' : 'glyphicon-menu-down'}):_vm._e(),(!_vm.hasTitleSlot || _vm.title !== '')?_c('h4',[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]):_vm._t(\"title\")],2),_c('div',{staticClass:\"content-end-header\"},[_vm._t(\"contentEndHeader\")],2)]),(!_vm.collapsible || _vm.open)?_c('div',{staticClass:\"panel-body\"},[_vm._t(\"content\")],2):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TiPanel.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TiPanel.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TiPanel.vue?vue&type=template&id=4c46224d&scoped=true\"\nimport script from \"./TiPanel.vue?vue&type=script&lang=js\"\nexport * from \"./TiPanel.vue?vue&type=script&lang=js\"\nimport style0 from \"./TiPanel.vue?vue&type=style&index=0&id=4c46224d&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c46224d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row sample-jar-container\",class:{ 'jars-size': _vm.showJars, 'background-enabled': _vm.includeInSample }},[_c('div',{staticClass:\"col-sm-12 header-container\"},[_c('div',{staticClass:\"title-container\"},[_c('h2',{staticClass:\"title\",style:({\n fontSize: _vm.getTitleFontSize(_vm.sampleJar.measurementPoint.name)\n })},[_vm._v(\" \"+_vm._s(_vm.sampleJar.measurementPoint.name)+\" \")]),(_vm.showCheckbox)?_c('div',{staticClass:\"checkbox-container\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.includeInSample),expression:\"includeInSample\"}],staticClass:\"form-check-input\",attrs:{\"id\":_vm.checkboxId,\"type\":\"checkbox\",\"disabled\":_vm.excludeCheckboxIsReadonly},domProps:{\"checked\":Array.isArray(_vm.includeInSample)?_vm._i(_vm.includeInSample,null)>-1:(_vm.includeInSample)},on:{\"click\":_vm.excludedJarChanged,\"change\":function($event){var $$a=_vm.includeInSample,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.includeInSample=$$a.concat([$$v]))}else{$$i>-1&&(_vm.includeInSample=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.includeInSample=$$c}}}})]):_vm._e()]),(_vm.showScore)?_c('div',{staticClass:\"score-text\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('SuggestedSamples.Score'))+\": \"+_vm._s(_vm.sampleJar.totalScore))])]):_vm._e()]),(_vm.showReasons)?_c('div',[_c('div',{staticClass:\"col-sm-12 reason-labels-container\"},_vm._l((_vm.reasons),function(reason){return _c('div',{key:reason.key,class:reason.class},[_c('label',[_vm._v(_vm._s(reason.label))])])}),0),_c('div',{staticClass:\"col-sm-12 reasons-description-container\"},_vm._l((_vm.sampleJar.scoreSummaries.reasons),function(reason,index){return _c('p',{key:_vm.generateReasonKey(index)},[_vm._v(\" \"+_vm._s(reason)+\" \")])}),0)]):_vm._e(),_c('div',{staticClass:\"col-sm-12 boxes-container\"},[_c('SuggestAnalysisSampleBoxes',{attrs:{\"measurementPoint\":_vm.sampleJar.measurementPoint,\"sampleNumber\":_vm.sampleNumber,\"canSwitchJars\":!_vm.excludeCheckboxIsReadonly && _vm.includeInSample,\"showJars\":_vm.showJars},on:{\"switchJar\":_vm.switchJar}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"tiles-container\"},_vm._l((_vm.measurementPoint.layers),function(layer,layerIndex){return _c('div',{key:_vm.generateKey(layer,'layer_row'),staticClass:\"layer-and-jars-container\"},[_c('div',{staticClass:\"layer-tile tile\",class:layer.selectedByUser ? 'red-border' : ''},[_c('p',{staticClass:\"tile-text\"},[_vm._v(_vm._s(layer.from)+\" - \"+_vm._s(layer.to))]),_c('div',{staticClass:\"layer-background-soil\",class:['bg', 'tex' + layer.soilType.code]},_vm._l((layer.additives),function(admixture,admixIndex){return _c('div',{key:_vm.generateKey(layer,`layer_admixture_${admixIndex}`),staticClass:\"layer-background-additives\",class:_vm.getAdmixtureBackgroundClasses(admixture)})}),0),_c('div',{staticClass:\"tooltip-container layer-tooltip-container\",style:({\n top: _vm.calculateLayerTooltipPosition(layer, layerIndex, _vm.measurementPoint.layers.length)\n })},[_c('h4',{staticClass:\"tooltip-header\"},[_vm._v(_vm._s(layer.from)+\" - \"+_vm._s(layer.to))]),_vm._l((_vm.getLayerTooltip(layer)),function(layerTooltip){return _c('div',{key:layerTooltip.key},[(layerTooltip.isList)?_c('div',[_c('p',{staticClass:\"tooltip-soiltype-title\"},[_vm._v(\" \"+_vm._s(layerTooltip.labelText)+\" \")]),_c('ul',_vm._l((layerTooltip.descriptionList),function(item){return _c('li',{key:item.key,staticClass:\"tooltip-soiltype-text\"},[_vm._v(\" \"+_vm._s(item.description)+\" \")])}),0)]):_c('div',{staticClass:\"tooltip-soiltype-row\"},[_c('p',{staticClass:\"tooltip-soiltype-title\"},[_vm._v(_vm._s(layerTooltip.labelText))]),_c('p',{staticClass:\"tooltip-soiltype-text\"},[_vm._v(\" \"+_vm._s(layerTooltip.description))])])])})],2)]),(_vm.showJars)?_c('div',{staticClass:\"jar-row-container\"},_vm._l((layer.jars),function(jar,jarIndex){return _c('div',{key:_vm.generateKey(jar, `jar${jarIndex}_${layer.guid}`),staticClass:\"jar-tile tile\",class:[{ 'red-border': jar.selectedByUser }, { 'orange-border': !jar.selectedByUser && jar.hasBeenSuggested }, { 'jarSelectable': _vm.canSwitchJars }],on:{\"click\":function($event){return _vm.switchJar(layerIndex, jarIndex, jar)}}},[(jar.barcode)?_c('p',{staticClass:\"tile-text barcode-text\"},[_vm._v(_vm._s(jar.barcode))]):_vm._e(),_c('p',{staticClass:\"tile-text\"},[_vm._v(_vm._s(jar.from)+\" - \"+_vm._s(jar.to))]),_c('div',{staticClass:\"tooltip-container jar-tooltip-container\"},[(jar.barcode)?_c('h4',{staticClass:\"tooltip-header\"},[_vm._v(_vm._s(jar.barcode))]):_vm._e(),_vm._l((_vm.getJarTooltip(jar)),function(jarTooltip){return _c('div',{key:jarTooltip.key,staticClass:\"tooltip-soiltype-row\"},[_c('p',{staticClass:\"tooltip-soiltype-title\"},[_vm._v(_vm._s(jarTooltip.labelText))]),_c('p',{staticClass:\"tooltip-soiltype-text\"},[_vm._v(\" \"+_vm._s(jarTooltip.description)+\" \")])])})],2)])}),0):_vm._e()])}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSampleBoxes.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSampleBoxes.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SuggestAnalysisSampleBoxes.vue?vue&type=template&id=50d0e642&scoped=true\"\nimport script from \"./SuggestAnalysisSampleBoxes.vue?vue&type=script&lang=js\"\nexport * from \"./SuggestAnalysisSampleBoxes.vue?vue&type=script&lang=js\"\nimport style0 from \"./SuggestAnalysisSampleBoxes.vue?vue&type=style&index=0&id=50d0e642&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"50d0e642\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSampleJarCard.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSampleJarCard.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SuggestAnalysisSampleJarCard.vue?vue&type=template&id=6d57dd4d&scoped=true\"\nimport script from \"./SuggestAnalysisSampleJarCard.vue?vue&type=script&lang=js\"\nexport * from \"./SuggestAnalysisSampleJarCard.vue?vue&type=script&lang=js\"\nimport style0 from \"./SuggestAnalysisSampleJarCard.vue?vue&type=style&index=0&id=6d57dd4d&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d57dd4d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"full-screen-suggested-sample-card-map\",attrs:{\"id\":'Fullscreen' + _vm.sampleNumber}},[_c('div',{staticClass:\"analysis-sample-map\",attrs:{\"id\":'SampleMap'+ _vm.sampleNumber}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSampleMap.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSampleMap.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SuggestAnalysisSampleMap.vue?vue&type=template&id=725daf61\"\nimport script from \"./SuggestAnalysisSampleMap.vue?vue&type=script&lang=js\"\nexport * from \"./SuggestAnalysisSampleMap.vue?vue&type=script&lang=js\"\nimport style0 from \"./SuggestAnalysisSampleMap.vue?vue&type=style&index=0&id=725daf61&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSampleCard.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSampleCard.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SuggestAnalysisSampleCard.vue?vue&type=template&id=675e8132&scoped=true\"\nimport script from \"./SuggestAnalysisSampleCard.vue?vue&type=script&lang=js\"\nexport * from \"./SuggestAnalysisSampleCard.vue?vue&type=script&lang=js\"\nimport style0 from \"./SuggestAnalysisSampleCard.vue?vue&type=style&index=0&id=675e8132&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"675e8132\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('TiPanel',{attrs:{\"title\":_vm.$t('SuggestedSamples.Input'),\"collapsible\":false,\"secondary\":\"\"},scopedSlots:_vm._u([{key:\"contentEndHeader\",fn:function(){return [_c('div',{staticClass:\"help-icon\"},[_c('a',{attrs:{\"title\":_vm.$t('SuggestedSamples.SuggestAnalysisSamplesHelp'),\"download\":\"\",\"href\":_vm.helpLinkHref}},[_c('span',{staticClass:\"glyphicons glyphicons-question-sign\"})])])]},proxy:true},{key:\"content\",fn:function(){return [_c('form',{staticClass:\"form-horizontal row\",attrs:{\"id\":\"suggested-analysis-sample-input\"}},[_c('div',{staticClass:\"input-controls-container col-sm-5\"},[_c('div',{staticClass:\"form-group row\"},[_c('label',{staticClass:\"control-label col-sm-6\",attrs:{\"for\":\"projectCode\"}},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.ProjectCode')))]),_c('div',{staticClass:\"col-sm-6\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.projectCode)+\" \")])])]),_c('div',{staticClass:\"form-group row\"},[_c('label',{staticClass:\"control-label col-sm-6\",attrs:{\"for\":\"numberOfSamples\"}},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.NumberOfSamples'))+\" \")]),_c('div',{staticClass:\"col-sm-5\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.settings.numberOfSamples),expression:\"settings.numberOfSamples\"}],staticClass:\"form-control settings-input\",attrs:{\"id\":\"number-of-samples\",\"type\":\"number\",\"min\":\"1\",\"max\":\"2147483647\"},domProps:{\"value\":(_vm.settings.numberOfSamples)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.settings, \"numberOfSamples\", $event.target.value)}}})])]),_c('div',{staticClass:\"form-group row\"},[_c('label',{staticClass:\"control-label col-sm-6\",attrs:{\"for\":\"maximumNumberOfAdmixtures\"}},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.MaximumAdmixtures'))+\" \")]),_c('div',{staticClass:\"col-sm-5\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.settings.maximumNumberOfAdmixtures),expression:\"settings.maximumNumberOfAdmixtures\"}],staticClass:\"form-control settings-input\",attrs:{\"id\":\"maximum-number-of-admixtures\",\"type\":\"number\",\"min\":\"1\",\"max\":\"2147483647\"},domProps:{\"value\":(_vm.settings.maximumNumberOfAdmixtures)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.settings, \"maximumNumberOfAdmixtures\", $event.target.value)}}})])]),(_vm.excludeFieldSamplesOlderThenDays > 0)?_c('div',{staticClass:\"form-group row\"},[_c('label',{staticClass:\"control-label col-sm-6\",attrs:{\"for\":\"excludeFieldSamplesOlderThenDays\"}},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.ExcludingJarsOlderThan'))+\" \")]),_c('div',{staticClass:\"col-sm-5\"},[_c('p',[_vm._v(_vm._s(_vm.excludeFieldSamplesOlderThenDays)+\" \"+_vm._s(_vm.$t('SuggestedSamples.days')))])])]):_vm._e(),_c('div',{staticClass:\"form-group row\"},[_c('div',{staticClass:\"col-sm-offset-6 col-sm-4\"},[_c('div',{staticClass:\"input-group\"},[_c('div',{staticClass:\"checkbox\"},[_c('label',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.settings.isControlRun),expression:\"settings.isControlRun\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.settings.isControlRun)?_vm._i(_vm.settings.isControlRun,null)>-1:(_vm.settings.isControlRun)},on:{\"change\":function($event){var $$a=_vm.settings.isControlRun,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.settings, \"isControlRun\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.settings, \"isControlRun\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.settings, \"isControlRun\", $$c)}}}}),_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.Controlrun'))+\" \")])])])])]),_c('SuggestAnalysisSampleDepthInputs',{attrs:{\"lowerDepthValid\":_vm.validation.lowerDepthValid,\"maxDepthValid\":_vm.validation.maxDepthValid,\"upperSoilDepth\":_vm.settings.upperSoilDepth,\"lowerSoilDepth\":_vm.settings.lowerSoilDepth,\"maxSoilDepth\":_vm.settings.maxSoilDepth,\"topSoilMinimum\":_vm.settings.topSoilMinimum,\"midSoilMinimum\":_vm.settings.midSoilMinimum,\"lowerSoilMinimum\":_vm.settings.lowerSoilMinimum},on:{\"update:upperSoilDepth\":_vm.upperSoilDepthChanged,\"update:lowerSoilDepth\":_vm.lowerSoilDepthChanged,\"update:maxSoilDepth\":_vm.maxSoilDepthChanged,\"update:topSoilMinimum\":_vm.topSoilMinimumChanged,\"update:midSoilMinimum\":_vm.midSoilMinimumChanged,\"update:lowerSoilMinimum\":_vm.lowerSoilMinimumChanged}})],1),_c('div',{staticClass:\"col-sm-7\"},[(_vm.initialized)?_c('SuggestAnalysisSampleMpTable',{on:{\"updateSelectedMpIds\":_vm.updateSelectedMpIds}}):_vm._e()],1)]),_c('div',{staticClass:\"pin-to-bottom-right-corner-container\",class:_vm.excludeFieldSamplesOlderThenDays > 0 ? 'compact-button-error-container': 'button-error-container'},[(_vm.validation.depthErrorMessage !== '')?_c('div',{staticClass:\"form-group row has-error\",class:_vm.excludeFieldSamplesOlderThenDays > 0 ? 'error-message-compact': 'error-message'},[_c('span',{staticClass:\"help-block\"},[_vm._v(\" \"+_vm._s(_vm.validation.depthErrorMessage)+\" \")])]):_vm._e(),_c('div',{staticClass:\"submit-reset-button-container\"},[_c('button',{staticClass:\"btn btn-default\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.refresh}},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.Refresh'))+\" \")]),_c('button',{staticClass:\"btn btn-submit\",attrs:{\"type\":\"button\",\"disabled\":_vm.inputFormHasError},on:{\"click\":_vm.submit}},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.SuggestAnalysisSamples'))+\" \")])])])]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"depth-input-container\"},[_vm._m(0),_c('div',{staticClass:\"row borelog-layer-row\"},[_c('div',{staticClass:\"col-sm-6 borelog-layer-container\"},[_c('div',{staticClass:\"borelog-dash-col\"},_vm._l((9),function(index){return _c('div',{key:'topsoil_lines' + index,staticClass:\"borelog-dash-text\",style:({top: _vm.dashPositionTopSoil(index)})},[_vm._v(\" - \")])}),0),_c('div',{staticClass:\"borelog-layer top-level-color\"}),_c('div',{staticClass:\"borelog-side-text-container\"},[_c('div',{staticClass:\"soil-type-dropdown\"},[_c('MinimumSoilDropdown',{attrs:{\"label\":_vm.$t('SuggestedSamples.Topsoil'),\"value\":_vm.topSoilMinimumValue},on:{\"update:value\":_vm.topSoilMinimumChanged}})],1),_c('div',{staticClass:\"soil-input-label\",attrs:{\"for\":\"upperSoilDepth\"}},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.UpperSoilDepth'))+\" \")])])])]),_c('div',{staticClass:\"row borelog-line-row\"},[_c('div',{staticClass:\"col-sm-6 borelog-line\"}),_c('div',{staticClass:\"col-sm-5 soil-depth-input-container\"},[_c('div',{staticClass:\"input-group soil-depth-input\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.upperSoilDepthValue),expression:\"upperSoilDepthValue\"}],staticClass:\"form-control\",attrs:{\"id\":\"upper-soil-depth\",\"type\":\"number\",\"min\":\"0\",\"max\":\"2147483647\"},domProps:{\"value\":(_vm.upperSoilDepthValue)},on:{\"input\":function($event){if($event.target.composing)return;_vm.upperSoilDepthValue=$event.target.value}}}),_c('div',{staticClass:\"input-group-addon\"},[_vm._v(\"cm\")])])])]),_c('div',{staticClass:\"row borelog-layer-row\"},[_c('div',{staticClass:\"col-sm-6 borelog-layer-container\"},[_c('div',{staticClass:\"borelog-dash-col\"},_vm._l((9),function(index){return _c('div',{key:'topsoil_lines' + index,staticClass:\"borelog-dash-text\",style:({top: _vm.dashPositionMidSoil(index) })},[_vm._v(\" - \")])}),0),_c('div',{staticClass:\"borelog-layer mid-level-color\"}),_c('div',{staticClass:\"borelog-side-text-container\"},[_c('div',{staticClass:\"soil-type-dropdown\"},[_c('MinimumSoilDropdown',{attrs:{\"label\":_vm.$t('SuggestedSamples.Midsoil'),\"value\":_vm.midSoilMinimumValue},on:{\"update:value\":_vm.midSoilMinimumChanged}})],1),_c('div',{staticClass:\"soil-input-label\",attrs:{\"for\":\"lowerSoilDepth\"}},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.LowerSoilDepth'))+\" \")])])])]),_c('div',{staticClass:\"row borelog-line-row\"},[_c('div',{staticClass:\"col-sm-6 borelog-line\"}),_c('div',{staticClass:\"col-sm-5 soil-depth-input-container\"},[_c('div',{staticClass:\"input-group soil-depth-input\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.lowerSoilDepthValue),expression:\"lowerSoilDepthValue\"}],staticClass:\"form-control\",class:_vm.lowerDepthValid\n ? ''\n : 'invalid',attrs:{\"id\":\"lower-soil-depth\",\"type\":\"number\",\"min\":\"0\",\"max\":\"2147483647\"},domProps:{\"value\":(_vm.lowerSoilDepthValue)},on:{\"input\":function($event){if($event.target.composing)return;_vm.lowerSoilDepthValue=$event.target.value}}}),_c('div',{staticClass:\"input-group-addon\"},[_vm._v(\"cm\")])])])]),_c('div',{staticClass:\"row lower-layer-row\"},[_c('div',{staticClass:\"col-sm-6 borelog-layer-container\"},[_c('div',{staticClass:\"borelog-dash-col\"},_vm._l((7),function(index){return _c('div',{key:'topsoil_lines' + index,staticClass:\"borelog-dash-text\",style:({top: _vm.dashPositionLowerSoil(index) })},[_vm._v(\" - \")])}),0),_c('div',{staticClass:\"borelog-layer lower-level-color\"}),_c('div',{staticClass:\"borelog-side-text-container\"},[_c('div',{staticClass:\"soil-type-dropdown lower-soil-dropdown\"},[_c('MinimumSoilDropdown',{attrs:{\"label\":_vm.$t('SuggestedSamples.Lowersoil'),\"value\":_vm.lowerSoilMinimumValue},on:{\"update:value\":_vm.lowerSoilMinimumChanged}}),_c('p',{staticClass:\"max-depth-text\"},[_vm._v(_vm._s(_vm.$t('SuggestedSamples.MaxDepth')))])],1)])])]),_c('div',{staticClass:\"row\"},[_vm._m(1),_c('div',{staticClass:\"col-sm-5 max-depth-input-container\"},[_c('div',{staticClass:\"input-group soil-depth-input\"},[(_vm.showMaxDepthOptionText)?_c('p',{staticClass:\"optional-text\"},[_vm._v(_vm._s(_vm.$t('SuggestedSamples.Optional')))]):_vm._e(),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.maxSoilDepthValue),expression:\"maxSoilDepthValue\"}],staticClass:\"form-control\",class:_vm.maxDepthValid\n ? ''\n : 'invalid',attrs:{\"id\":\"max-soil-depth\",\"type\":\"number\",\"min\":\"0\",\"max\":\"2147483647\"},domProps:{\"value\":(_vm.maxSoilDepthValue)},on:{\"change\":_vm.hideOptionText,\"input\":function($event){if($event.target.composing)return;_vm.maxSoilDepthValue=$event.target.value}}}),_c('div',{staticClass:\"input-group-addon\"},[_vm._v(\"cm\")])])])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row borelog-layer-row\"},[_c('div',{staticClass:\"col-sm-6 borelog-layer-container\"},[_c('div',{staticClass:\"borelog-dash-col\"},[_c('div',{staticClass:\"borelog-dash-text borelog-zero-text\"},[_vm._v(\" 0 \")]),_c('div',{staticClass:\"borelog-dash-text\"},[_vm._v(\" - \")])]),_c('div',{staticClass:\"borelog-layer surface-level-color\"})])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"col-sm-6 max-depth-line-container\"},[_c('div',{staticClass:\"max-depth-line\"})])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"dropdown-container\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedValue),expression:\"selectedValue\"}],staticClass:\"select\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selectedValue=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{staticClass:\"item\",domProps:{\"value\":1}},[_vm._v(_vm._s(_vm.$t('SuggestedSamples.MinimumOfOneSuggestedSamples')))]),_c('option',{staticClass:\"item\",domProps:{\"value\":0}},[_vm._v(_vm._s(_vm.$t('SuggestedSamples.MinimumOfZeroSuggestedSamples')))]),_c('option',{staticClass:\"item\",domProps:{\"value\":-1}},[_vm._v(_vm._s(_vm.$t('SuggestedSamples.NoSuggestSamples')))])]),_c('label',{staticClass:\"label\"},[_vm._v(_vm._s(_vm.label))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MinimumSoilDropdown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MinimumSoilDropdown.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./MinimumSoilDropdown.vue?vue&type=template&id=296f2dc4&scoped=true\"\nimport script from \"./MinimumSoilDropdown.vue?vue&type=script&lang=js\"\nexport * from \"./MinimumSoilDropdown.vue?vue&type=script&lang=js\"\nimport style0 from \"./MinimumSoilDropdown.vue?vue&type=style&index=0&id=296f2dc4&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"296f2dc4\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSampleDepthInputs.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSampleDepthInputs.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SuggestAnalysisSampleDepthInputs.vue?vue&type=template&id=44912c84&scoped=true\"\nimport script from \"./SuggestAnalysisSampleDepthInputs.vue?vue&type=script&lang=js\"\nexport * from \"./SuggestAnalysisSampleDepthInputs.vue?vue&type=script&lang=js\"\nimport style0 from \"./SuggestAnalysisSampleDepthInputs.vue?vue&type=style&index=0&id=44912c84&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"44912c84\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('DxDataGrid',{attrs:{\"id\":\"suggest-analysis-sample-mp-table\",\"data-source\":_vm.measurementPointTableData,\"show-borders\":true,\"show-row-lines\":true,\"key-expr\":\"MpID\",\"allow-column-resizing\":true,\"column-resizing-mode\":\"nextColumn\",\"column-min-width\":40},on:{\"selection-changed\":_vm.rowsVisibleChanged,\"content-ready\":_vm.rowsVisibleChanged,\"toolbar-preparing\":_vm.toolbarPreparing},scopedSlots:_vm._u([{key:\"suggest-mp-table-title\",fn:function(){return [_c('h4',{staticClass:\"table-title\"},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.MeasurementpointToInlcude'))+\" \")])]},proxy:true}])},[_c('DxPaging',{attrs:{\"enabled\":false}}),_c('DxGrouping',{attrs:{\"auto-expand-all\":false}}),_c('DxGroupPanel',{attrs:{\"visible\":true}}),_c('DxFilterRow',{attrs:{\"visible\":true}}),_c('DxHeaderFilter',{attrs:{\"visible\":true}}),_c('DxSearchPanel',{attrs:{\"visible\":true,\"width\":180,\"placeholder\":_vm.$t('SuggestedSamples.Search')}}),_c('DxFilterPanel',{attrs:{\"visible\":true}}),_c('DxSelection',{attrs:{\"mode\":\"multiple\",\"show-check-boxes-mode\":\"always\"}}),_c('DxColumn',{attrs:{\"data-field\":\"MpName\",\"allow-filtering\":true,\"caption\":_vm.$t(`SuggestedSamples.MpColumnName`)}}),_c('DxColumn',{attrs:{\"data-field\":\"MpDate\",\"allow-filtering\":true,\"data-type\":\"date\",\"caption\":_vm.$t(`SuggestedSamples.MpColumnDate`),\"format\":(value) => _vm.formatCellValue(value)}}),_c('DxColumn',{attrs:{\"data-field\":\"MpTypeCode\",\"allow-filtering\":true,\"caption\":_vm.$t(`SuggestedSamples.MpColumnType`)}},[_c('DxLookup',{attrs:{\"display-expr\":\"GcDescription\",\"value-expr\":\"GcCode\",\"data-source\":_vm.mpTypeCodeList}})],1),_c('DxColumn',{attrs:{\"data-field\":\"MpGroundLevelTypeCode\",\"allow-filtering\":true,\"caption\":_vm.$t(`SuggestedSamples.MpColumnSurfaceLevel`)}},[_c('DxLookup',{attrs:{\"display-expr\":\"GcDescription\",\"value-expr\":\"GcCode\",\"data-source\":_vm.mpSurfaceTypeCodeList}})],1),_c('DxColumn',{attrs:{\"data-field\":\"SlID\",\"allow-filtering\":true,\"caption\":_vm.$t(`SuggestedSamples.MpColumnSubLocationName`)}},[_c('DxLookup',{attrs:{\"display-expr\":\"SlName\",\"value-expr\":\"SlID\",\"data-source\":_vm.subLocationTableData}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSampleMpTable.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSampleMpTable.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SuggestAnalysisSampleMpTable.vue?vue&type=template&id=3d1f6ae0\"\nimport script from \"./SuggestAnalysisSampleMpTable.vue?vue&type=script&lang=js\"\nexport * from \"./SuggestAnalysisSampleMpTable.vue?vue&type=script&lang=js\"\nimport style0 from \"./SuggestAnalysisSampleMpTable.vue?vue&type=style&index=0&id=3d1f6ae0&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSamplesInputContainer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSamplesInputContainer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SuggestAnalysisSamplesInputContainer.vue?vue&type=template&id=352a9faa&scoped=true\"\nimport script from \"./SuggestAnalysisSamplesInputContainer.vue?vue&type=script&lang=js\"\nexport * from \"./SuggestAnalysisSamplesInputContainer.vue?vue&type=script&lang=js\"\nimport style0 from \"./SuggestAnalysisSamplesInputContainer.vue?vue&type=style&index=0&id=352a9faa&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"352a9faa\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('TiPanel',{attrs:{\"title\":_vm.$t('SuggestedSamples.OutputSummary'),\"collapsible\":false,\"secondary\":\"\"},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('form',{staticClass:\"form-horizontal row\",attrs:{\"id\":\"suggested-analysis-sample-output\"}},[_c('div',{staticClass:\"col-sm-offset-1 col-sm-10 output-summary-container\"},[_c('div',{staticClass:\"form-group row\"},[_c('label',{staticClass:\"control-label col-sm-9\",attrs:{\"for\":\"totalSamples\"}},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.TotalSuggestedSamples'))+\" \")]),_c('div',{staticClass:\"col-sm-3 total-count-value\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.totalSuggestSampleCount)+\" \")])])]),_c('div',{staticClass:\"form-group row\"},[_c('div',{staticClass:\"control-label col-sm-offset-4 col-sm-5 output-value-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.Topsoil'))+\" \")]),_c('div',{staticClass:\"col-sm-3 output-value-text\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.topSoilCount)+\" \")])])]),_c('div',{staticClass:\"form-group row\"},[_c('div',{staticClass:\"control-label col-sm-offset-4 col-sm-5 output-value-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.Midsoil'))+\" \")]),_c('div',{staticClass:\"col-sm-3 output-value-text\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.midSoilCount)+\" \")])])]),_c('div',{staticClass:\"form-group row\"},[_c('div',{staticClass:\"control-label col-sm-offset-4 col-sm-5 output-value-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.Lowersoil'))+\" \")]),_c('div',{staticClass:\"col-sm-3 output-value-text\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.lowerSoilCount)+\" \")])])])]),_c('div',{staticClass:\"col-sm-offset-1 col-sm-10 output-sublocation-container\"},[_c('div',{staticClass:\"form-group row\"},[_c('label',{staticClass:\"control-label col-sm-7 sublocation-title\",attrs:{\"for\":\"totalSamples\"}},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.SuggestedSamplesPerSubLocation'))+\" \")])]),_c('div',{staticClass:\"sublocationScrollableContainer\"},_vm._l((_vm.subLocationGroupedByNameList),function(subLocation,index){return _c('div',{key:'subLocation_item_' + index,staticClass:\"form-group row\"},[_c('div',{staticClass:\"control-label col-sm-offset-4 col-sm-5 output-value-label\"},[_vm._v(\" \"+_vm._s(subLocation.subLocationName)+\" \")]),_c('div',{staticClass:\"col-sm-3 output-value-text\"},[_c('p',[_vm._v(\" \"+_vm._s(subLocation.count)+\" \")])])])}),0)]),_c('div',{staticClass:\"control-label col-sm-offset-1 col-sm-10 error-container\"},[_c('div',{staticClass:\"form-group row\"},[_c('label',{staticClass:\"control-label col-sm-6\",attrs:{\"for\":\"error-list\"}},[_vm._v(\" \"+_vm._s(_vm.$t('SuggestedSamples.Errors'))+\" \")])]),_c('div',{staticClass:\"row error-messages-scrollable-container\"},_vm._l((_vm.errorList),function(logErrorMessage,index){return _c('div',{key:'error_item_' + index,staticClass:\"form-group row\"},[_c('div',{staticClass:\"col-sm-12 error-log-text\"},[_vm._v(\" \"+_vm._s(logErrorMessage)+\" \")])])}),0)]),_c('div',{staticClass:\"control-label col-sm-offset-1 col-sm-11 output-dumps-container\"},[(_vm.userHasDeveloperLicense)?_c('div',{staticClass:\"form-group row\"},[_c('label',{staticClass:\"control-label col-sm-6\",attrs:{\"for\":\"dump-label\"}},[_c('label',{attrs:{\"id\":\"dump-label\"}},[_vm._v(\"Dumps\")])])]):_vm._e(),_c('div',{staticClass:\"row col-sm-12 dump-btn-group\"},_vm._l((_vm.logDumpsWithDevelopLicense),function(dump){return _c('a',{key:'dump_' + dump.title,staticClass:\"btn btn-submit dump-btn\",attrs:{\"title\":dump.title,\"download\":dump.download,\"href\":dump.href}},[_vm._v(\" \"+_vm._s(dump.title)+\" \")])}),0)])])]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSamplesOutputContainer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSamplesOutputContainer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SuggestAnalysisSamplesOutputContainer.vue?vue&type=template&id=a4f42f30&scoped=true\"\nimport script from \"./SuggestAnalysisSamplesOutputContainer.vue?vue&type=script&lang=js\"\nexport * from \"./SuggestAnalysisSamplesOutputContainer.vue?vue&type=script&lang=js\"\nimport style0 from \"./SuggestAnalysisSamplesOutputContainer.vue?vue&type=style&index=0&id=a4f42f30&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a4f42f30\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSamples.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSamples.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SuggestAnalysisSamples.vue?vue&type=template&id=6f194e11\"\nimport script from \"./SuggestAnalysisSamples.vue?vue&type=script&lang=js\"\nexport * from \"./SuggestAnalysisSamples.vue?vue&type=script&lang=js\"\nimport style0 from \"./SuggestAnalysisSamples.vue?vue&type=style&index=0&id=6f194e11&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.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 \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirmModal.vue?vue&type=style&index=0&id=4eec4607&prod&lang=less&scoped=true\"","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 { 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=import(\"../source/Source.js\").default]\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|null} [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 {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 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=import(\"../source/Source.js\").default]\n * @template {import(\"../renderer/Layer.js\").default} [RendererType=import(\"../renderer/Layer.js\").default]\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 /**\n * @protected\n * @type {boolean}\n */\n _this.rendered = false;\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|null} 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 {SourceType|null} The source being rendered.\n */\n Layer.prototype.getRenderSource = function () {\n return this.getSource();\n };\n /**\n * @return {import(\"../source/Source.js\").State} Source state.\n */\n Layer.prototype.getSourceState = function () {\n var source = this.getSource();\n return !source ? '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 * @param {import(\"../pixel\").Pixel} pixel Pixel.\n * @return {Uint8ClampedArray|Uint8Array|Float32Array|DataView|null} Pixel data.\n */\n Layer.prototype.getData = function (pixel) {\n if (!this.renderer_ || !this.rendered) {\n return null;\n }\n return this.renderer_.getData(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 this.rendered = true;\n return layerRenderer.renderFrame(frameState, target);\n }\n };\n /**\n * Called when a layer is not visible during a map render.\n */\n Layer.prototype.unrender = function () {\n this.rendered = false;\n };\n /**\n * For use inside the library only.\n * @param {import(\"../PluggableMap.js\").default|null} map Map.\n */\n Layer.prototype.setMapInternal = function (map) {\n if (!map) {\n this.unrender();\n }\n this.set(LayerProperty.MAP, map);\n };\n /**\n * For use inside the library only.\n * @return {import(\"../PluggableMap.js\").default|null} 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|null} 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|null} 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|null} 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","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 + '-collapse';\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","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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./MinimumSoilDropdown.vue?vue&type=style&index=0&id=296f2dc4&prod&scoped=true&lang=css\"","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=t||self).RBush=i()}(this,function(){\"use strict\";function t(t,r,e,a,h){!function t(n,r,e,a,h){for(;a>e;){if(a-e>600){var o=a-e+1,s=r-e+1,l=Math.log(o),f=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*f*(o-f)/o)*(s-o/2<0?-1:1),m=Math.max(e,Math.floor(r-s*f/o+u)),c=Math.min(a,Math.floor(r+(o-s)*f/o+u));t(n,r,m,c,h)}var p=n[r],d=e,x=a;for(i(n,e,r),h(n[a],p)>0&&i(n,e,a);d0;)x--}0===h(n[e],p)?i(n,e,x):i(n,++x,a),x<=r&&(e=x+1),r<=x&&(a=x-1)}}(t,r,e||0,a||t.length-1,h||n)}function i(t,i,n){var r=t[i];t[i]=t[n],t[n]=r}function n(t,i){return ti?1:0}var r=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function e(t,i,n){if(!n)return i.indexOf(t);for(var r=0;r=t.minX&&i.maxY>=t.minY}function p(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function d(i,n,r,e,a){for(var h=[n,r];h.length;)if(!((r=h.pop())-(n=h.pop())<=e)){var o=n+Math.ceil((r-n)/e/2)*e;t(i,o,n,r,a),h.push(n,o,o,r)}}return r.prototype.all=function(){return this._all(this.data,[])},r.prototype.search=function(t){var i=this.data,n=[];if(!c(t,i))return n;for(var r=this.toBBox,e=[];i;){for(var a=0;a=0&&e[i].children.length>this._maxEntries;)this._split(e,i),i--;this._adjustParentBBoxes(r,e,i)},r.prototype._split=function(t,i){var n=t[i],r=n.children.length,e=this._minEntries;this._chooseSplitAxis(n,e,r);var h=this._chooseSplitIndex(n,e,r),o=p(n.children.splice(h,n.children.length-h));o.height=n.height,o.leaf=n.leaf,a(n,this.toBBox),a(o,this.toBBox),i?t[i-1].children.push(o):this._splitRoot(n,o)},r.prototype._splitRoot=function(t,i){this.data=p([t,i]),this.data.height=t.height+1,this.data.leaf=!1,a(this.data,this.toBBox)},r.prototype._chooseSplitIndex=function(t,i,n){for(var r,e,a,o,s,l,u,m=1/0,c=1/0,p=i;p<=n-i;p++){var d=h(t,0,p,this.toBBox),x=h(t,p,n,this.toBBox),v=(e=d,a=x,o=void 0,s=void 0,l=void 0,u=void 0,o=Math.max(e.minX,a.minX),s=Math.max(e.minY,a.minY),l=Math.min(e.maxX,a.maxX),u=Math.min(e.maxY,a.maxY),Math.max(0,l-o)*Math.max(0,u-s)),M=f(d)+f(x);v=i;c--){var p=t.children[c];o(s,t.leaf?e(p):p),l+=u(s)}return l},r.prototype._adjustParentBBoxes=function(t,i,n){for(var r=n;r>=0;r--)o(i[r],t)},r.prototype._condense=function(t){for(var i=t.length-1,n=void 0;i>=0;i--)0===t[i].children.length?i>0?(n=t[i-1].children).splice(n.indexOf(t[i]),1):this.clear():a(t[i],this.toBBox)},r});\n","/**\n * @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/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","/**\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","/**\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 {number} [gutter=0] The size in pixels of the gutter around image tiles to ignore.\n * This allows artifacts of rendering at tile edges to be ignored.\n * Supported images should be wider and taller than the tile size by a value of `2 x gutter`.\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 /**\n * @private\n * @type {number}\n */\n _this.gutter_ = options.gutter !== undefined ? options.gutter : 0;\n return _this;\n }\n /**\n * @return {number} Gutter.\n */\n XYZ.prototype.getGutter = function () {\n return this.gutter_;\n };\n return XYZ;\n}(TileImage));\nexport default XYZ;\n//# sourceMappingURL=XYZ.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, canvasPool, render as renderReprojected, } from '../reproj.js';\nimport { clamp } from '../math.js';\nimport { getArea, getIntersection } from '../extent.js';\nimport { listen, unlistenByKey } from '../events.js';\nimport { releaseCanvas } from '../dom.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 /**\n * Remove from the cache due to expiry\n */\n ReprojTile.prototype.release = function () {\n if (this.canvas_) {\n releaseCanvas(this.canvas_.getContext('2d'));\n canvasPool.push(this.canvas_);\n this.canvas_ = null;\n }\n _super.prototype.release.call(this);\n };\n return ReprojTile;\n}(Tile));\nexport default ReprojTile;\n//# sourceMappingURL=Tile.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/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|null}\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|null} 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 * Pass `null` to just remove the control from the current map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default|null} 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 (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","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~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/DragPan\n */\nimport PointerInteraction, { centroid as centroidFromPointers, } from './Pointer.js';\nimport { FALSE } from '../functions.js';\nimport { all, focusWithTabindex, noModifierKeys, primaryAction, } from '../events/condition.js';\nimport { easeOut } from '../easing.js';\nimport { rotate as rotateCoordinate, scale as scaleCoordinate, } from '../coordinate.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition.noModifierKeys} and {@link module:ol/events/condition.primaryAction}.\n * @property {boolean} [onFocusOnly=false] When the map's target has a `tabindex` attribute set,\n * the interaction will only handle events when the map has the focus.\n * @property {import(\"../Kinetic.js\").default} [kinetic] Kinetic inertia to apply to the pan.\n */\n/**\n * @classdesc\n * Allows the user to pan the map by dragging the map.\n * @api\n */\nvar DragPan = /** @class */ (function (_super) {\n __extends(DragPan, _super);\n /**\n * @param {Options} [opt_options] Options.\n */\n function DragPan(opt_options) {\n var _this = _super.call(this, {\n stopDown: FALSE,\n }) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @private\n * @type {import(\"../Kinetic.js\").default|undefined}\n */\n _this.kinetic_ = options.kinetic;\n /**\n * @type {import(\"../pixel.js\").Pixel}\n */\n _this.lastCentroid = null;\n /**\n * @type {number}\n */\n _this.lastPointersCount_;\n /**\n * @type {boolean}\n */\n _this.panning_ = false;\n var condition = options.condition\n ? options.condition\n : all(noModifierKeys, primaryAction);\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ = options.onFocusOnly\n ? all(focusWithTabindex, condition)\n : condition;\n /**\n * @private\n * @type {boolean}\n */\n _this.noKinetic_ = false;\n return _this;\n }\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n */\n DragPan.prototype.handleDragEvent = function (mapBrowserEvent) {\n if (!this.panning_) {\n this.panning_ = true;\n this.getMap().getView().beginInteraction();\n }\n var targetPointers = this.targetPointers;\n var centroid = centroidFromPointers(targetPointers);\n if (targetPointers.length == this.lastPointersCount_) {\n if (this.kinetic_) {\n this.kinetic_.update(centroid[0], centroid[1]);\n }\n if (this.lastCentroid) {\n var delta = [\n this.lastCentroid[0] - centroid[0],\n centroid[1] - this.lastCentroid[1],\n ];\n var map = mapBrowserEvent.map;\n var view = map.getView();\n scaleCoordinate(delta, view.getResolution());\n rotateCoordinate(delta, view.getRotation());\n view.adjustCenterInternal(delta);\n }\n }\n else if (this.kinetic_) {\n // reset so we don't overestimate the kinetic energy after\n // after one finger down, tiny drag, second finger down\n this.kinetic_.begin();\n }\n this.lastCentroid = centroid;\n this.lastPointersCount_ = targetPointers.length;\n mapBrowserEvent.originalEvent.preventDefault();\n };\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n DragPan.prototype.handleUpEvent = function (mapBrowserEvent) {\n var map = mapBrowserEvent.map;\n var view = map.getView();\n if (this.targetPointers.length === 0) {\n if (!this.noKinetic_ && this.kinetic_ && this.kinetic_.end()) {\n var distance = this.kinetic_.getDistance();\n var angle = this.kinetic_.getAngle();\n var center = view.getCenterInternal();\n var centerpx = map.getPixelFromCoordinateInternal(center);\n var dest = map.getCoordinateFromPixelInternal([\n centerpx[0] - distance * Math.cos(angle),\n centerpx[1] - distance * Math.sin(angle),\n ]);\n view.animateInternal({\n center: view.getConstrainedCenter(dest),\n duration: 500,\n easing: easeOut,\n });\n }\n if (this.panning_) {\n this.panning_ = false;\n view.endInteraction();\n }\n return false;\n }\n else {\n if (this.kinetic_) {\n // reset so we don't overestimate the kinetic energy after\n // after one finger up, tiny drag, second finger up\n this.kinetic_.begin();\n }\n this.lastCentroid = null;\n return true;\n }\n };\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n DragPan.prototype.handleDownEvent = function (mapBrowserEvent) {\n if (this.targetPointers.length > 0 && this.condition_(mapBrowserEvent)) {\n var map = mapBrowserEvent.map;\n var view = map.getView();\n this.lastCentroid = null;\n // stop any current animation\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n if (this.kinetic_) {\n this.kinetic_.begin();\n }\n // No kinetic as soon as more than one pointer on the screen is\n // detected. This is to prevent nasty pans after pinch.\n this.noKinetic_ = this.targetPointers.length > 1;\n return true;\n }\n else {\n return false;\n }\n };\n return DragPan;\n}(PointerInteraction));\nexport default DragPan;\n//# sourceMappingURL=DragPan.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/DragRotate\n */\nimport PointerInteraction from './Pointer.js';\nimport { FALSE } from '../functions.js';\nimport { altShiftKeysOnly, mouseActionButton, mouseOnly, } from '../events/condition.js';\nimport { disable } from '../rotationconstraint.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes an\n * {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition.altShiftKeysOnly}.\n * @property {number} [duration=250] Animation duration in milliseconds.\n */\n/**\n * @classdesc\n * Allows the user to rotate the map by clicking and dragging on the map,\n * normally combined with an {@link module:ol/events/condition} that limits\n * it to when the alt and shift keys are held down.\n *\n * This interaction is only supported for mouse devices.\n * @api\n */\nvar DragRotate = /** @class */ (function (_super) {\n __extends(DragRotate, _super);\n /**\n * @param {Options} [opt_options] Options.\n */\n function DragRotate(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n stopDown: FALSE,\n }) || this;\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ = options.condition ? options.condition : altShiftKeysOnly;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.lastAngle_ = undefined;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n */\n DragRotate.prototype.handleDragEvent = function (mapBrowserEvent) {\n if (!mouseOnly(mapBrowserEvent)) {\n return;\n }\n var map = mapBrowserEvent.map;\n var view = map.getView();\n if (view.getConstraints().rotation === disable) {\n return;\n }\n var size = map.getSize();\n var offset = mapBrowserEvent.pixel;\n var theta = Math.atan2(size[1] / 2 - offset[1], offset[0] - size[0] / 2);\n if (this.lastAngle_ !== undefined) {\n var delta = theta - this.lastAngle_;\n view.adjustRotationInternal(-delta);\n }\n this.lastAngle_ = theta;\n };\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n DragRotate.prototype.handleUpEvent = function (mapBrowserEvent) {\n if (!mouseOnly(mapBrowserEvent)) {\n return true;\n }\n var map = mapBrowserEvent.map;\n var view = map.getView();\n view.endInteraction(this.duration_);\n return false;\n };\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n DragRotate.prototype.handleDownEvent = function (mapBrowserEvent) {\n if (!mouseOnly(mapBrowserEvent)) {\n return false;\n }\n if (mouseActionButton(mapBrowserEvent) &&\n this.condition_(mapBrowserEvent)) {\n var map = mapBrowserEvent.map;\n map.getView().beginInteraction();\n this.lastAngle_ = undefined;\n return true;\n }\n else {\n return false;\n }\n };\n return DragRotate;\n}(PointerInteraction));\nexport default DragRotate;\n//# sourceMappingURL=DragRotate.js.map","/**\n * @module ol/render/Box\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 Disposable from '../Disposable.js';\nimport Polygon from '../geom/Polygon.js';\nvar RenderBox = /** @class */ (function (_super) {\n __extends(RenderBox, _super);\n /**\n * @param {string} className CSS class name.\n */\n function RenderBox(className) {\n var _this = _super.call(this) || this;\n /**\n * @type {import(\"../geom/Polygon.js\").default}\n * @private\n */\n _this.geometry_ = null;\n /**\n * @type {HTMLDivElement}\n * @private\n */\n _this.element_ = document.createElement('div');\n _this.element_.style.position = 'absolute';\n _this.element_.style.pointerEvents = 'auto';\n _this.element_.className = 'ol-box ' + className;\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default|null}\n */\n _this.map_ = null;\n /**\n * @private\n * @type {import(\"../pixel.js\").Pixel}\n */\n _this.startPixel_ = null;\n /**\n * @private\n * @type {import(\"../pixel.js\").Pixel}\n */\n _this.endPixel_ = null;\n return _this;\n }\n /**\n * Clean up.\n */\n RenderBox.prototype.disposeInternal = function () {\n this.setMap(null);\n };\n /**\n * @private\n */\n RenderBox.prototype.render_ = function () {\n var startPixel = this.startPixel_;\n var endPixel = this.endPixel_;\n var px = 'px';\n var style = this.element_.style;\n style.left = Math.min(startPixel[0], endPixel[0]) + px;\n style.top = Math.min(startPixel[1], endPixel[1]) + px;\n style.width = Math.abs(endPixel[0] - startPixel[0]) + px;\n style.height = Math.abs(endPixel[1] - startPixel[1]) + px;\n };\n /**\n * @param {import(\"../PluggableMap.js\").default|null} map Map.\n */\n RenderBox.prototype.setMap = function (map) {\n if (this.map_) {\n this.map_.getOverlayContainer().removeChild(this.element_);\n var style = this.element_.style;\n style.left = 'inherit';\n style.top = 'inherit';\n style.width = 'inherit';\n style.height = 'inherit';\n }\n this.map_ = map;\n if (this.map_) {\n this.map_.getOverlayContainer().appendChild(this.element_);\n }\n };\n /**\n * @param {import(\"../pixel.js\").Pixel} startPixel Start pixel.\n * @param {import(\"../pixel.js\").Pixel} endPixel End pixel.\n */\n RenderBox.prototype.setPixels = function (startPixel, endPixel) {\n this.startPixel_ = startPixel;\n this.endPixel_ = endPixel;\n this.createOrUpdateGeometry();\n this.render_();\n };\n /**\n * Creates or updates the cached geometry.\n */\n RenderBox.prototype.createOrUpdateGeometry = function () {\n var startPixel = this.startPixel_;\n var endPixel = this.endPixel_;\n var pixels = [\n startPixel,\n [startPixel[0], endPixel[1]],\n endPixel,\n [endPixel[0], startPixel[1]],\n ];\n var coordinates = pixels.map(this.map_.getCoordinateFromPixelInternal, this.map_);\n // close the polygon\n coordinates[4] = coordinates[0].slice();\n if (!this.geometry_) {\n this.geometry_ = new Polygon([coordinates]);\n }\n else {\n this.geometry_.setCoordinates([coordinates]);\n }\n };\n /**\n * @return {import(\"../geom/Polygon.js\").default} Geometry.\n */\n RenderBox.prototype.getGeometry = function () {\n return this.geometry_;\n };\n return RenderBox;\n}(Disposable));\nexport default RenderBox;\n//# sourceMappingURL=Box.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/DragBox\n */\n// FIXME draw drag box\nimport Event from '../events/Event.js';\nimport PointerInteraction from './Pointer.js';\nimport RenderBox from '../render/Box.js';\nimport { mouseActionButton } from '../events/condition.js';\n/**\n * A function that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and two\n * {@link module:ol/pixel~Pixel}s and returns a `{boolean}`. If the condition is met,\n * true should be returned.\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default, import(\"../pixel.js\").Pixel, import(\"../pixel.js\").Pixel):boolean} EndCondition\n */\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-dragbox'] CSS class name for styling the box.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link ol/events/condition~mouseActionButton}.\n * @property {number} [minArea=64] The minimum area of the box in pixel, this value is used by the default\n * `boxEndCondition` function.\n * @property {EndCondition} [boxEndCondition] A function that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and two\n * {@link module:ol/pixel~Pixel}s to indicate whether a `boxend` event should be fired.\n * Default is `true` if the area of the box is bigger than the `minArea` option.\n * @property {function(this:DragBox, import(\"../MapBrowserEvent.js\").default):void} [onBoxEnd] Code to execute just\n * before `boxend` is fired.\n */\n/**\n * @enum {string}\n */\nvar DragBoxEventType = {\n /**\n * Triggered upon drag box start.\n * @event DragBoxEvent#boxstart\n * @api\n */\n BOXSTART: 'boxstart',\n /**\n * Triggered on drag when box is active.\n * @event DragBoxEvent#boxdrag\n * @api\n */\n BOXDRAG: 'boxdrag',\n /**\n * Triggered upon drag box end.\n * @event DragBoxEvent#boxend\n * @api\n */\n BOXEND: 'boxend',\n /**\n * Triggered upon drag box canceled.\n * @event DragBoxEvent#boxcancel\n * @api\n */\n BOXCANCEL: 'boxcancel',\n};\n/**\n * @classdesc\n * Events emitted by {@link module:ol/interaction/DragBox~DragBox} instances are instances of\n * this type.\n */\nvar DragBoxEvent = /** @class */ (function (_super) {\n __extends(DragBoxEvent, _super);\n /**\n * @param {string} type The event type.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate The event coordinate.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Originating event.\n */\n function DragBoxEvent(type, coordinate, mapBrowserEvent) {\n var _this = _super.call(this, type) || this;\n /**\n * The coordinate of the drag event.\n * @const\n * @type {import(\"../coordinate.js\").Coordinate}\n * @api\n */\n _this.coordinate = coordinate;\n /**\n * @const\n * @type {import(\"../MapBrowserEvent.js\").default}\n * @api\n */\n _this.mapBrowserEvent = mapBrowserEvent;\n return _this;\n }\n return DragBoxEvent;\n}(Event));\nexport { DragBoxEvent };\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature<'boxcancel'|'boxdrag'|'boxend'|'boxstart', DragBoxEvent, Return> &\n * import(\"../Observable\").CombinedOnSignature} DragBoxOnSignature\n */\n/**\n * @classdesc\n * Allows the user to draw a vector box by clicking and dragging on the map,\n * normally combined with an {@link module:ol/events/condition} that limits\n * it to when the shift or other key is held down. This is used, for example,\n * for zooming to a specific area of the map\n * (see {@link module:ol/interaction/DragZoom~DragZoom} and\n * {@link module:ol/interaction/DragRotateAndZoom~DragRotateAndZoom}).\n *\n * @fires DragBoxEvent\n * @api\n */\nvar DragBox = /** @class */ (function (_super) {\n __extends(DragBox, _super);\n /**\n * @param {Options} [opt_options] Options.\n */\n function DragBox(opt_options) {\n var _this = _super.call(this) || this;\n /***\n * @type {DragBoxOnSignature}\n */\n _this.on;\n /***\n * @type {DragBoxOnSignature}\n */\n _this.once;\n /***\n * @type {DragBoxOnSignature}\n */\n _this.un;\n var options = opt_options ? opt_options : {};\n /**\n * @type {import(\"../render/Box.js\").default}\n * @private\n */\n _this.box_ = new RenderBox(options.className || 'ol-dragbox');\n /**\n * @type {number}\n * @private\n */\n _this.minArea_ = options.minArea !== undefined ? options.minArea : 64;\n if (options.onBoxEnd) {\n _this.onBoxEnd = options.onBoxEnd;\n }\n /**\n * @type {import(\"../pixel.js\").Pixel}\n * @private\n */\n _this.startPixel_ = null;\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ = options.condition ? options.condition : mouseActionButton;\n /**\n * @private\n * @type {EndCondition}\n */\n _this.boxEndCondition_ = options.boxEndCondition\n ? options.boxEndCondition\n : _this.defaultBoxEndCondition;\n return _this;\n }\n /**\n * The default condition for determining whether the boxend event\n * should fire.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent The originating MapBrowserEvent\n * leading to the box end.\n * @param {import(\"../pixel.js\").Pixel} startPixel The starting pixel of the box.\n * @param {import(\"../pixel.js\").Pixel} endPixel The end pixel of the box.\n * @return {boolean} Whether or not the boxend condition should be fired.\n */\n DragBox.prototype.defaultBoxEndCondition = function (mapBrowserEvent, startPixel, endPixel) {\n var width = endPixel[0] - startPixel[0];\n var height = endPixel[1] - startPixel[1];\n return width * width + height * height >= this.minArea_;\n };\n /**\n * Returns geometry of last drawn box.\n * @return {import(\"../geom/Polygon.js\").default} Geometry.\n * @api\n */\n DragBox.prototype.getGeometry = function () {\n return this.box_.getGeometry();\n };\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n */\n DragBox.prototype.handleDragEvent = function (mapBrowserEvent) {\n this.box_.setPixels(this.startPixel_, mapBrowserEvent.pixel);\n this.dispatchEvent(new DragBoxEvent(DragBoxEventType.BOXDRAG, mapBrowserEvent.coordinate, mapBrowserEvent));\n };\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n DragBox.prototype.handleUpEvent = function (mapBrowserEvent) {\n this.box_.setMap(null);\n var completeBox = this.boxEndCondition_(mapBrowserEvent, this.startPixel_, mapBrowserEvent.pixel);\n if (completeBox) {\n this.onBoxEnd(mapBrowserEvent);\n }\n this.dispatchEvent(new DragBoxEvent(completeBox ? DragBoxEventType.BOXEND : DragBoxEventType.BOXCANCEL, mapBrowserEvent.coordinate, mapBrowserEvent));\n return false;\n };\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n DragBox.prototype.handleDownEvent = function (mapBrowserEvent) {\n if (this.condition_(mapBrowserEvent)) {\n this.startPixel_ = mapBrowserEvent.pixel;\n this.box_.setMap(mapBrowserEvent.map);\n this.box_.setPixels(this.startPixel_, this.startPixel_);\n this.dispatchEvent(new DragBoxEvent(DragBoxEventType.BOXSTART, mapBrowserEvent.coordinate, mapBrowserEvent));\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Function to execute just before `onboxend` is fired\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n */\n DragBox.prototype.onBoxEnd = function (event) { };\n return DragBox;\n}(PointerInteraction));\nexport default DragBox;\n//# sourceMappingURL=DragBox.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/DragZoom\n */\nimport DragBox from './DragBox.js';\nimport { easeOut } from '../easing.js';\nimport { shiftKeyOnly } from '../events/condition.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-dragzoom'] CSS class name for styling the\n * box.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition.shiftKeyOnly}.\n * @property {number} [duration=200] Animation duration in milliseconds.\n * @property {boolean} [out=false] Use interaction for zooming out.\n * @property {number} [minArea=64] The minimum area of the box in pixel, this value is used by the parent default\n * `boxEndCondition` function.\n */\n/**\n * @classdesc\n * Allows the user to zoom the map by clicking and dragging on the map,\n * normally combined with an {@link module:ol/events/condition} that limits\n * it to when a key, shift by default, is held down.\n *\n * To change the style of the box, use CSS and the `.ol-dragzoom` selector, or\n * your custom one configured with `className`.\n * @api\n */\nvar DragZoom = /** @class */ (function (_super) {\n __extends(DragZoom, _super);\n /**\n * @param {Options} [opt_options] Options.\n */\n function DragZoom(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var condition = options.condition ? options.condition : shiftKeyOnly;\n _this = _super.call(this, {\n condition: condition,\n className: options.className || 'ol-dragzoom',\n minArea: options.minArea,\n }) || this;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 200;\n /**\n * @private\n * @type {boolean}\n */\n _this.out_ = options.out !== undefined ? options.out : false;\n return _this;\n }\n /**\n * Function to execute just before `onboxend` is fired\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n */\n DragZoom.prototype.onBoxEnd = function (event) {\n var map = this.getMap();\n var view = /** @type {!import(\"../View.js\").default} */ (map.getView());\n var geometry = this.getGeometry();\n if (this.out_) {\n var rotatedExtent = view.rotatedExtentForGeometry(geometry);\n var resolution = view.getResolutionForExtentInternal(rotatedExtent);\n var factor = view.getResolution() / resolution;\n geometry = geometry.clone();\n geometry.scale(factor * factor);\n }\n view.fitInternal(geometry, {\n duration: this.duration_,\n easing: easeOut,\n });\n };\n return DragZoom;\n}(DragBox));\nexport default DragZoom;\n//# sourceMappingURL=DragZoom.js.map","/**\n * @module ol/events/KeyCode\n */\n/**\n * @enum {number}\n * @const\n */\nexport default {\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n};\n//# sourceMappingURL=KeyCode.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/KeyboardPan\n */\nimport EventType from '../events/EventType.js';\nimport Interaction, { pan } from './Interaction.js';\nimport KeyCode from '../events/KeyCode.js';\nimport { noModifierKeys, targetNotEditable } from '../events/condition.js';\nimport { rotate as rotateCoordinate } from '../coordinate.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. Default is\n * {@link module:ol/events/condition.noModifierKeys} and\n * {@link module:ol/events/condition.targetNotEditable}.\n * @property {number} [duration=100] Animation duration in milliseconds.\n * @property {number} [pixelDelta=128] The amount of pixels to pan on each key\n * press.\n */\n/**\n * @classdesc\n * Allows the user to pan the map using keyboard arrows.\n * Note that, although this interaction is by default included in maps,\n * the keys can only be used when browser focus is on the element to which\n * the keyboard events are attached. By default, this is the map div,\n * though you can change this with the `keyboardEventTarget` in\n * {@link module:ol/Map~Map}. `document` never loses focus but, for any other\n * element, focus will have to be on, and returned to, this element if the keys\n * are to function.\n * See also {@link module:ol/interaction/KeyboardZoom~KeyboardZoom}.\n * @api\n */\nvar KeyboardPan = /** @class */ (function (_super) {\n __extends(KeyboardPan, _super);\n /**\n * @param {Options} [opt_options] Options.\n */\n function KeyboardPan(opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options || {};\n /**\n * @private\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Browser event.\n * @return {boolean} Combined condition result.\n */\n _this.defaultCondition_ = function (mapBrowserEvent) {\n return (noModifierKeys(mapBrowserEvent) && targetNotEditable(mapBrowserEvent));\n };\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ =\n options.condition !== undefined\n ? options.condition\n : _this.defaultCondition_;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 100;\n /**\n * @private\n * @type {number}\n */\n _this.pixelDelta_ =\n options.pixelDelta !== undefined ? options.pixelDelta : 128;\n return _this;\n }\n /**\n * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} if it was a\n * `KeyEvent`, and decides the direction to pan to (if an arrow key was\n * pressed).\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @this {KeyboardPan}\n */\n KeyboardPan.prototype.handleEvent = function (mapBrowserEvent) {\n var stopEvent = false;\n if (mapBrowserEvent.type == EventType.KEYDOWN) {\n var keyEvent = /** @type {KeyboardEvent} */ (mapBrowserEvent.originalEvent);\n var keyCode = keyEvent.keyCode;\n if (this.condition_(mapBrowserEvent) &&\n (keyCode == KeyCode.DOWN ||\n keyCode == KeyCode.LEFT ||\n keyCode == KeyCode.RIGHT ||\n keyCode == KeyCode.UP)) {\n var map = mapBrowserEvent.map;\n var view = map.getView();\n var mapUnitsDelta = view.getResolution() * this.pixelDelta_;\n var deltaX = 0, deltaY = 0;\n if (keyCode == KeyCode.DOWN) {\n deltaY = -mapUnitsDelta;\n }\n else if (keyCode == KeyCode.LEFT) {\n deltaX = -mapUnitsDelta;\n }\n else if (keyCode == KeyCode.RIGHT) {\n deltaX = mapUnitsDelta;\n }\n else {\n deltaY = mapUnitsDelta;\n }\n var delta = [deltaX, deltaY];\n rotateCoordinate(delta, view.getRotation());\n pan(view, delta, this.duration_);\n keyEvent.preventDefault();\n stopEvent = true;\n }\n }\n return !stopEvent;\n };\n return KeyboardPan;\n}(Interaction));\nexport default KeyboardPan;\n//# sourceMappingURL=KeyboardPan.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/KeyboardZoom\n */\nimport EventType from '../events/EventType.js';\nimport Interaction, { zoomByDelta } from './Interaction.js';\nimport { targetNotEditable } from '../events/condition.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=100] Animation duration in milliseconds.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. Default is\n * {@link module:ol/events/condition.targetNotEditable}.\n * @property {number} [delta=1] The zoom level delta on each key press.\n */\n/**\n * @classdesc\n * Allows the user to zoom the map using keyboard + and -.\n * Note that, although this interaction is by default included in maps,\n * the keys can only be used when browser focus is on the element to which\n * the keyboard events are attached. By default, this is the map div,\n * though you can change this with the `keyboardEventTarget` in\n * {@link module:ol/Map~Map}. `document` never loses focus but, for any other\n * element, focus will have to be on, and returned to, this element if the keys\n * are to function.\n * See also {@link module:ol/interaction/KeyboardPan~KeyboardPan}.\n * @api\n */\nvar KeyboardZoom = /** @class */ (function (_super) {\n __extends(KeyboardZoom, _super);\n /**\n * @param {Options} [opt_options] Options.\n */\n function KeyboardZoom(opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ = options.condition ? options.condition : targetNotEditable;\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 : 100;\n return _this;\n }\n /**\n * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} if it was a\n * `KeyEvent`, and decides whether to zoom in or out (depending on whether the\n * key pressed was '+' or '-').\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @this {KeyboardZoom}\n */\n KeyboardZoom.prototype.handleEvent = function (mapBrowserEvent) {\n var stopEvent = false;\n if (mapBrowserEvent.type == EventType.KEYDOWN ||\n mapBrowserEvent.type == EventType.KEYPRESS) {\n var keyEvent = /** @type {KeyboardEvent} */ (mapBrowserEvent.originalEvent);\n var charCode = keyEvent.charCode;\n if (this.condition_(mapBrowserEvent) &&\n (charCode == '+'.charCodeAt(0) || charCode == '-'.charCodeAt(0))) {\n var map = mapBrowserEvent.map;\n var delta = charCode == '+'.charCodeAt(0) ? this.delta_ : -this.delta_;\n var view = map.getView();\n zoomByDelta(view, delta, undefined, this.duration_);\n keyEvent.preventDefault();\n stopEvent = true;\n }\n }\n return !stopEvent;\n };\n return KeyboardZoom;\n}(Interaction));\nexport default KeyboardZoom;\n//# sourceMappingURL=KeyboardZoom.js.map","/**\n * @module ol/Kinetic\n */\n/**\n * @classdesc\n * Implementation of inertial deceleration for map movement.\n *\n * @api\n */\nvar Kinetic = /** @class */ (function () {\n /**\n * @param {number} decay Rate of decay (must be negative).\n * @param {number} minVelocity Minimum velocity (pixels/millisecond).\n * @param {number} delay Delay to consider to calculate the kinetic\n * initial values (milliseconds).\n */\n function Kinetic(decay, minVelocity, delay) {\n /**\n * @private\n * @type {number}\n */\n this.decay_ = decay;\n /**\n * @private\n * @type {number}\n */\n this.minVelocity_ = minVelocity;\n /**\n * @private\n * @type {number}\n */\n this.delay_ = delay;\n /**\n * @private\n * @type {Array}\n */\n this.points_ = [];\n /**\n * @private\n * @type {number}\n */\n this.angle_ = 0;\n /**\n * @private\n * @type {number}\n */\n this.initialVelocity_ = 0;\n }\n /**\n * FIXME empty description for jsdoc\n */\n Kinetic.prototype.begin = function () {\n this.points_.length = 0;\n this.angle_ = 0;\n this.initialVelocity_ = 0;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n */\n Kinetic.prototype.update = function (x, y) {\n this.points_.push(x, y, Date.now());\n };\n /**\n * @return {boolean} Whether we should do kinetic animation.\n */\n Kinetic.prototype.end = function () {\n if (this.points_.length < 6) {\n // at least 2 points are required (i.e. there must be at least 6 elements\n // in the array)\n return false;\n }\n var delay = Date.now() - this.delay_;\n var lastIndex = this.points_.length - 3;\n if (this.points_[lastIndex + 2] < delay) {\n // the last tracked point is too old, which means that the user stopped\n // panning before releasing the map\n return false;\n }\n // get the first point which still falls into the delay time\n var firstIndex = lastIndex - 3;\n while (firstIndex > 0 && this.points_[firstIndex + 2] > delay) {\n firstIndex -= 3;\n }\n var duration = this.points_[lastIndex + 2] - this.points_[firstIndex + 2];\n // we don't want a duration of 0 (divide by zero)\n // we also make sure the user panned for a duration of at least one frame\n // (1/60s) to compute sane displacement values\n if (duration < 1000 / 60) {\n return false;\n }\n var dx = this.points_[lastIndex] - this.points_[firstIndex];\n var dy = this.points_[lastIndex + 1] - this.points_[firstIndex + 1];\n this.angle_ = Math.atan2(dy, dx);\n this.initialVelocity_ = Math.sqrt(dx * dx + dy * dy) / duration;\n return this.initialVelocity_ > this.minVelocity_;\n };\n /**\n * @return {number} Total distance travelled (pixels).\n */\n Kinetic.prototype.getDistance = function () {\n return (this.minVelocity_ - this.initialVelocity_) / this.decay_;\n };\n /**\n * @return {number} Angle of the kinetic panning animation (radians).\n */\n Kinetic.prototype.getAngle = function () {\n return this.angle_;\n };\n return Kinetic;\n}());\nexport default Kinetic;\n//# sourceMappingURL=Kinetic.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (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/MouseWheelZoom\n */\nimport EventType from '../events/EventType.js';\nimport Interaction, { zoomByDelta } from './Interaction.js';\nimport { DEVICE_PIXEL_RATIO, FIREFOX } from '../has.js';\nimport { all, always, focusWithTabindex } from '../events/condition.js';\nimport { clamp } from '../math.js';\n/**\n * @enum {string}\n */\nexport var Mode = {\n TRACKPAD: 'trackpad',\n WHEEL: 'wheel',\n};\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. Default is\n * {@link module:ol/events/condition.always}.\n * @property {boolean} [onFocusOnly=false] When the map's target has a `tabindex` attribute set,\n * the interaction will only handle events when the map has the focus.\n * @property {number} [maxDelta=1] Maximum mouse wheel delta.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {number} [timeout=80] Mouse wheel timeout duration in milliseconds.\n * @property {boolean} [useAnchor=true] Enable zooming using the mouse's\n * location as the anchor. When set to `false`, zooming in and out will zoom to\n * the center of the screen instead of zooming on the mouse's location.\n * @property {boolean} [constrainResolution=false] If true, the mouse wheel zoom\n * event will always animate to the closest zoom level after an interaction;\n * false means intermediary zoom levels are allowed.\n */\n/**\n * @classdesc\n * Allows the user to zoom the map by scrolling the mouse wheel.\n * @api\n */\nvar MouseWheelZoom = /** @class */ (function (_super) {\n __extends(MouseWheelZoom, _super);\n /**\n * @param {Options} [opt_options] Options.\n */\n function MouseWheelZoom(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 /**\n * @private\n * @type {number}\n */\n _this.totalDelta_ = 0;\n /**\n * @private\n * @type {number}\n */\n _this.lastDelta_ = 0;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = options.maxDelta !== undefined ? options.maxDelta : 1;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n /**\n * @private\n * @type {number}\n */\n _this.timeout_ = options.timeout !== undefined ? options.timeout : 80;\n /**\n * @private\n * @type {boolean}\n */\n _this.useAnchor_ =\n options.useAnchor !== undefined ? options.useAnchor : true;\n /**\n * @private\n * @type {boolean}\n */\n _this.constrainResolution_ =\n options.constrainResolution !== undefined\n ? options.constrainResolution\n : false;\n var condition = options.condition ? options.condition : always;\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n _this.condition_ = options.onFocusOnly\n ? all(focusWithTabindex, condition)\n : condition;\n /**\n * @private\n * @type {?import(\"../coordinate.js\").Coordinate}\n */\n _this.lastAnchor_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.startTime_ = undefined;\n /**\n * @private\n * @type {?}\n */\n _this.timeoutId_;\n /**\n * @private\n * @type {Mode|undefined}\n */\n _this.mode_ = undefined;\n /**\n * Trackpad events separated by this delay will be considered separate\n * interactions.\n * @type {number}\n */\n _this.trackpadEventGap_ = 400;\n /**\n * @type {?}\n */\n _this.trackpadTimeoutId_;\n /**\n * The number of delta values per zoom level\n * @private\n * @type {number}\n */\n _this.deltaPerZoom_ = 300;\n return _this;\n }\n /**\n * @private\n */\n MouseWheelZoom.prototype.endInteraction_ = function () {\n this.trackpadTimeoutId_ = undefined;\n var map = this.getMap();\n if (!map) {\n return;\n }\n var view = map.getView();\n view.endInteraction(undefined, this.lastDelta_ ? (this.lastDelta_ > 0 ? 1 : -1) : 0, this.lastAnchor_);\n };\n /**\n * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} (if it was a mousewheel-event) and eventually\n * zooms the map.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n */\n MouseWheelZoom.prototype.handleEvent = function (mapBrowserEvent) {\n if (!this.condition_(mapBrowserEvent)) {\n return true;\n }\n var type = mapBrowserEvent.type;\n if (type !== EventType.WHEEL) {\n return true;\n }\n var map = mapBrowserEvent.map;\n var wheelEvent = /** @type {WheelEvent} */ (mapBrowserEvent.originalEvent);\n wheelEvent.preventDefault();\n if (this.useAnchor_) {\n this.lastAnchor_ = mapBrowserEvent.coordinate;\n }\n // Delta normalisation inspired by\n // https://github.com/mapbox/mapbox-gl-js/blob/001c7b9/js/ui/handler/scroll_zoom.js\n var delta;\n if (mapBrowserEvent.type == EventType.WHEEL) {\n delta = wheelEvent.deltaY;\n if (FIREFOX && wheelEvent.deltaMode === WheelEvent.DOM_DELTA_PIXEL) {\n delta /= DEVICE_PIXEL_RATIO;\n }\n if (wheelEvent.deltaMode === WheelEvent.DOM_DELTA_LINE) {\n delta *= 40;\n }\n }\n if (delta === 0) {\n return false;\n }\n else {\n this.lastDelta_ = delta;\n }\n var now = Date.now();\n if (this.startTime_ === undefined) {\n this.startTime_ = now;\n }\n if (!this.mode_ || now - this.startTime_ > this.trackpadEventGap_) {\n this.mode_ = Math.abs(delta) < 4 ? Mode.TRACKPAD : Mode.WHEEL;\n }\n var view = map.getView();\n if (this.mode_ === Mode.TRACKPAD &&\n !(view.getConstrainResolution() || this.constrainResolution_)) {\n if (this.trackpadTimeoutId_) {\n clearTimeout(this.trackpadTimeoutId_);\n }\n else {\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.beginInteraction();\n }\n this.trackpadTimeoutId_ = setTimeout(this.endInteraction_.bind(this), this.timeout_);\n view.adjustZoom(-delta / this.deltaPerZoom_, this.lastAnchor_);\n this.startTime_ = now;\n return false;\n }\n this.totalDelta_ += delta;\n var timeLeft = Math.max(this.timeout_ - (now - this.startTime_), 0);\n clearTimeout(this.timeoutId_);\n this.timeoutId_ = setTimeout(this.handleWheelZoom_.bind(this, map), timeLeft);\n return false;\n };\n /**\n * @private\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n MouseWheelZoom.prototype.handleWheelZoom_ = function (map) {\n var view = map.getView();\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n var delta = -clamp(this.totalDelta_, -this.maxDelta_ * this.deltaPerZoom_, this.maxDelta_ * this.deltaPerZoom_) / this.deltaPerZoom_;\n if (view.getConstrainResolution() || this.constrainResolution_) {\n // view has a zoom constraint, zoom by 1\n delta = delta ? (delta > 0 ? 1 : -1) : 0;\n }\n zoomByDelta(view, delta, this.lastAnchor_, this.duration_);\n this.mode_ = undefined;\n this.totalDelta_ = 0;\n this.lastAnchor_ = null;\n this.startTime_ = undefined;\n this.timeoutId_ = undefined;\n };\n /**\n * Enable or disable using the mouse's location as an anchor when zooming\n * @param {boolean} useAnchor true to zoom to the mouse's location, false\n * to zoom to the center of the map\n * @api\n */\n MouseWheelZoom.prototype.setMouseAnchor = function (useAnchor) {\n this.useAnchor_ = useAnchor;\n if (!useAnchor) {\n this.lastAnchor_ = null;\n }\n };\n return MouseWheelZoom;\n}(Interaction));\nexport default MouseWheelZoom;\n//# sourceMappingURL=MouseWheelZoom.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/PinchRotate\n */\nimport PointerInteraction, { centroid as centroidFromPointers, } from './Pointer.js';\nimport { FALSE } from '../functions.js';\nimport { disable } from '../rotationconstraint.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] The duration of the animation in\n * milliseconds.\n * @property {number} [threshold=0.3] Minimal angle in radians to start a rotation.\n */\n/**\n * @classdesc\n * Allows the user to rotate the map by twisting with two fingers\n * on a touch screen.\n * @api\n */\nvar PinchRotate = /** @class */ (function (_super) {\n __extends(PinchRotate, _super);\n /**\n * @param {Options} [opt_options] Options.\n */\n function PinchRotate(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var pointerOptions = /** @type {import(\"./Pointer.js\").Options} */ (options);\n if (!pointerOptions.stopDown) {\n pointerOptions.stopDown = FALSE;\n }\n _this = _super.call(this, pointerOptions) || this;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n _this.anchor_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.lastAngle_ = undefined;\n /**\n * @private\n * @type {boolean}\n */\n _this.rotating_ = false;\n /**\n * @private\n * @type {number}\n */\n _this.rotationDelta_ = 0.0;\n /**\n * @private\n * @type {number}\n */\n _this.threshold_ = options.threshold !== undefined ? options.threshold : 0.3;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n */\n PinchRotate.prototype.handleDragEvent = function (mapBrowserEvent) {\n var rotationDelta = 0.0;\n var touch0 = this.targetPointers[0];\n var touch1 = this.targetPointers[1];\n // angle between touches\n var angle = Math.atan2(touch1.clientY - touch0.clientY, touch1.clientX - touch0.clientX);\n if (this.lastAngle_ !== undefined) {\n var delta = angle - this.lastAngle_;\n this.rotationDelta_ += delta;\n if (!this.rotating_ && Math.abs(this.rotationDelta_) > this.threshold_) {\n this.rotating_ = true;\n }\n rotationDelta = delta;\n }\n this.lastAngle_ = angle;\n var map = mapBrowserEvent.map;\n var view = map.getView();\n if (view.getConstraints().rotation === disable) {\n return;\n }\n // rotate anchor point.\n // FIXME: should be the intersection point between the lines:\n // touch0,touch1 and previousTouch0,previousTouch1\n var viewportPosition = map.getViewport().getBoundingClientRect();\n var centroid = centroidFromPointers(this.targetPointers);\n centroid[0] -= viewportPosition.left;\n centroid[1] -= viewportPosition.top;\n this.anchor_ = map.getCoordinateFromPixelInternal(centroid);\n // rotate\n if (this.rotating_) {\n map.render();\n view.adjustRotationInternal(rotationDelta, this.anchor_);\n }\n };\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n PinchRotate.prototype.handleUpEvent = function (mapBrowserEvent) {\n if (this.targetPointers.length < 2) {\n var map = mapBrowserEvent.map;\n var view = map.getView();\n view.endInteraction(this.duration_);\n return false;\n }\n else {\n return true;\n }\n };\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n PinchRotate.prototype.handleDownEvent = function (mapBrowserEvent) {\n if (this.targetPointers.length >= 2) {\n var map = mapBrowserEvent.map;\n this.anchor_ = null;\n this.lastAngle_ = undefined;\n this.rotating_ = false;\n this.rotationDelta_ = 0.0;\n if (!this.handlingDownUpSequence) {\n map.getView().beginInteraction();\n }\n return true;\n }\n else {\n return false;\n }\n };\n return PinchRotate;\n}(PointerInteraction));\nexport default PinchRotate;\n//# sourceMappingURL=PinchRotate.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/PinchZoom\n */\nimport PointerInteraction, { centroid as centroidFromPointers, } from './Pointer.js';\nimport { FALSE } from '../functions.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=400] Animation duration in milliseconds.\n */\n/**\n * @classdesc\n * Allows the user to zoom the map by pinching with two fingers\n * on a touch screen.\n * @api\n */\nvar PinchZoom = /** @class */ (function (_super) {\n __extends(PinchZoom, _super);\n /**\n * @param {Options} [opt_options] Options.\n */\n function PinchZoom(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var pointerOptions = /** @type {import(\"./Pointer.js\").Options} */ (options);\n if (!pointerOptions.stopDown) {\n pointerOptions.stopDown = FALSE;\n }\n _this = _super.call(this, pointerOptions) || this;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n _this.anchor_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 400;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.lastDistance_ = undefined;\n /**\n * @private\n * @type {number}\n */\n _this.lastScaleDelta_ = 1;\n return _this;\n }\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n */\n PinchZoom.prototype.handleDragEvent = function (mapBrowserEvent) {\n var scaleDelta = 1.0;\n var touch0 = this.targetPointers[0];\n var touch1 = this.targetPointers[1];\n var dx = touch0.clientX - touch1.clientX;\n var dy = touch0.clientY - touch1.clientY;\n // distance between touches\n var distance = Math.sqrt(dx * dx + dy * dy);\n if (this.lastDistance_ !== undefined) {\n scaleDelta = this.lastDistance_ / distance;\n }\n this.lastDistance_ = distance;\n var map = mapBrowserEvent.map;\n var view = map.getView();\n if (scaleDelta != 1.0) {\n this.lastScaleDelta_ = scaleDelta;\n }\n // scale anchor point.\n var viewportPosition = map.getViewport().getBoundingClientRect();\n var centroid = centroidFromPointers(this.targetPointers);\n centroid[0] -= viewportPosition.left;\n centroid[1] -= viewportPosition.top;\n this.anchor_ = map.getCoordinateFromPixelInternal(centroid);\n // scale, bypass the resolution constraint\n map.render();\n view.adjustResolutionInternal(scaleDelta, this.anchor_);\n };\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n PinchZoom.prototype.handleUpEvent = function (mapBrowserEvent) {\n if (this.targetPointers.length < 2) {\n var map = mapBrowserEvent.map;\n var view = map.getView();\n var direction = this.lastScaleDelta_ > 1 ? 1 : -1;\n view.endInteraction(this.duration_, direction);\n return false;\n }\n else {\n return true;\n }\n };\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n PinchZoom.prototype.handleDownEvent = function (mapBrowserEvent) {\n if (this.targetPointers.length >= 2) {\n var map = mapBrowserEvent.map;\n this.anchor_ = null;\n this.lastDistance_ = undefined;\n this.lastScaleDelta_ = 1;\n if (!this.handlingDownUpSequence) {\n map.getView().beginInteraction();\n }\n return true;\n }\n else {\n return false;\n }\n };\n return PinchZoom;\n}(PointerInteraction));\nexport default PinchZoom;\n//# sourceMappingURL=PinchZoom.js.map","/**\n * @module ol/interaction\n */\nimport Collection from './Collection.js';\nimport DoubleClickZoom from './interaction/DoubleClickZoom.js';\nimport DragPan from './interaction/DragPan.js';\nimport DragRotate from './interaction/DragRotate.js';\nimport DragZoom from './interaction/DragZoom.js';\nimport KeyboardPan from './interaction/KeyboardPan.js';\nimport KeyboardZoom from './interaction/KeyboardZoom.js';\nimport Kinetic from './Kinetic.js';\nimport MouseWheelZoom from './interaction/MouseWheelZoom.js';\nimport PinchRotate from './interaction/PinchRotate.js';\nimport PinchZoom from './interaction/PinchZoom.js';\nexport { default as DoubleClickZoom } from './interaction/DoubleClickZoom.js';\nexport { default as DragAndDrop } from './interaction/DragAndDrop.js';\nexport { default as DragBox } from './interaction/DragBox.js';\nexport { default as DragPan } from './interaction/DragPan.js';\nexport { default as DragRotate } from './interaction/DragRotate.js';\nexport { default as DragRotateAndZoom } from './interaction/DragRotateAndZoom.js';\nexport { default as DragZoom } from './interaction/DragZoom.js';\nexport { default as Draw } from './interaction/Draw.js';\nexport { default as Extent } from './interaction/Extent.js';\nexport { default as Interaction } from './interaction/Interaction.js';\nexport { default as KeyboardPan } from './interaction/KeyboardPan.js';\nexport { default as KeyboardZoom } from './interaction/KeyboardZoom.js';\nexport { default as Modify } from './interaction/Modify.js';\nexport { default as MouseWheelZoom } from './interaction/MouseWheelZoom.js';\nexport { default as PinchRotate } from './interaction/PinchRotate.js';\nexport { default as PinchZoom } from './interaction/PinchZoom.js';\nexport { default as Pointer } from './interaction/Pointer.js';\nexport { default as Select } from './interaction/Select.js';\nexport { default as Snap } from './interaction/Snap.js';\nexport { default as Translate } from './interaction/Translate.js';\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [altShiftDragRotate=true] Whether Alt-Shift-drag rotate is\n * desired.\n * @property {boolean} [onFocusOnly=false] Interact only when the map has the\n * focus. This affects the `MouseWheelZoom` and `DragPan` interactions and is\n * useful when page scroll is desired for maps that do not have the browser's\n * focus.\n * @property {boolean} [doubleClickZoom=true] Whether double click zoom is\n * desired.\n * @property {boolean} [keyboard=true] Whether keyboard interaction is desired.\n * @property {boolean} [mouseWheelZoom=true] Whether mousewheel zoom is desired.\n * @property {boolean} [shiftDragZoom=true] Whether Shift-drag zoom is desired.\n * @property {boolean} [dragPan=true] Whether drag pan is desired.\n * @property {boolean} [pinchRotate=true] Whether pinch rotate is desired.\n * @property {boolean} [pinchZoom=true] Whether pinch zoom is desired.\n * @property {number} [zoomDelta] Zoom level delta when using keyboard or double click zoom.\n * @property {number} [zoomDuration] Duration of the zoom animation in\n * milliseconds.\n */\n/**\n * Set of interactions included in maps by default. Specific interactions can be\n * excluded by setting the appropriate option to false in the constructor\n * options, but the order of the interactions is fixed. If you want to specify\n * a different order for interactions, you will need to create your own\n * {@link module:ol/interaction/Interaction~Interaction} instances and insert\n * them into a {@link module:ol/Collection~Collection} in the order you want\n * before creating your {@link module:ol/Map~Map} instance. Changing the order can\n * be of interest if the event propagation needs to be stopped at a point.\n * The default set of interactions, in sequence, is:\n * * {@link module:ol/interaction/DragRotate~DragRotate}\n * * {@link module:ol/interaction/DoubleClickZoom~DoubleClickZoom}\n * * {@link module:ol/interaction/DragPan~DragPan}\n * * {@link module:ol/interaction/PinchRotate~PinchRotate}\n * * {@link module:ol/interaction/PinchZoom~PinchZoom}\n * * {@link module:ol/interaction/KeyboardPan~KeyboardPan}\n * * {@link module:ol/interaction/KeyboardZoom~KeyboardZoom}\n * * {@link module:ol/interaction/MouseWheelZoom~MouseWheelZoom}\n * * {@link module:ol/interaction/DragZoom~DragZoom}\n *\n * @param {DefaultsOptions} [opt_options] Defaults options.\n * @return {import(\"./Collection.js\").default}\n * A collection of interactions to be used with the {@link module:ol/Map~Map}\n * constructor's `interactions` option.\n * @api\n */\nexport function defaults(opt_options) {\n var options = opt_options ? opt_options : {};\n var interactions = new Collection();\n var kinetic = new Kinetic(-0.005, 0.05, 100);\n var altShiftDragRotate = options.altShiftDragRotate !== undefined\n ? options.altShiftDragRotate\n : true;\n if (altShiftDragRotate) {\n interactions.push(new DragRotate());\n }\n var doubleClickZoom = options.doubleClickZoom !== undefined ? options.doubleClickZoom : true;\n if (doubleClickZoom) {\n interactions.push(new DoubleClickZoom({\n delta: options.zoomDelta,\n duration: options.zoomDuration,\n }));\n }\n var dragPan = options.dragPan !== undefined ? options.dragPan : true;\n if (dragPan) {\n interactions.push(new DragPan({\n onFocusOnly: options.onFocusOnly,\n kinetic: kinetic,\n }));\n }\n var pinchRotate = options.pinchRotate !== undefined ? options.pinchRotate : true;\n if (pinchRotate) {\n interactions.push(new PinchRotate());\n }\n var pinchZoom = options.pinchZoom !== undefined ? options.pinchZoom : true;\n if (pinchZoom) {\n interactions.push(new PinchZoom({\n duration: options.zoomDuration,\n }));\n }\n var keyboard = options.keyboard !== undefined ? options.keyboard : true;\n if (keyboard) {\n interactions.push(new KeyboardPan());\n interactions.push(new KeyboardZoom({\n delta: options.zoomDelta,\n duration: options.zoomDuration,\n }));\n }\n var mouseWheelZoom = options.mouseWheelZoom !== undefined ? options.mouseWheelZoom : true;\n if (mouseWheelZoom) {\n interactions.push(new MouseWheelZoom({\n onFocusOnly: options.onFocusOnly,\n duration: options.zoomDuration,\n }));\n }\n var shiftDragZoom = options.shiftDragZoom !== undefined ? options.shiftDragZoom : true;\n if (shiftDragZoom) {\n interactions.push(new DragZoom({\n duration: options.zoomDuration,\n }));\n }\n return interactions;\n}\n//# sourceMappingURL=interaction.js.map","/**\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","/**\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 * @type {Array}\n */\nexport var canvasPool = [];\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 {boolean} [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), canvasPool);\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","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 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 'MultiPolygon':\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 'Polygon':\n case 'MultiLineString':\n builderEnds = [];\n flatCoordinates =\n type == '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 'LineString':\n case '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 'MultiPoint':\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 '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 * @private\n * @type {\"declutter\"|\"obstacle\"|\"none\"|undefined}\n */\n _this.declutterMode_ = 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_ * this.imagePixelRatio_,\n this.originY_ * this.imagePixelRatio_,\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.declutterMode_,\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.declutterMode_,\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_ * this.imagePixelRatio_,\n this.originY_ * this.imagePixelRatio_,\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.declutterMode_,\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.declutterMode_,\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 origin = imageStyle.getOrigin();\n this.imagePixelRatio_ = imageStyle.getPixelRatio(this.pixelRatio);\n this.anchorX_ = anchor[0];\n this.anchorY_ = anchor[1];\n this.hitDetectionImage_ = imageStyle.getHitDetectionImage();\n this.image_ = imageStyle.getImage(this.pixelRatio);\n this.height_ = size[1];\n this.opacity_ = imageStyle.getOpacity();\n this.originX_ = origin[0];\n this.originY_ = origin[1];\n this.rotateWithView_ = imageStyle.getRotateWithView();\n this.rotation_ = imageStyle.getRotation();\n this.scale_ = imageStyle.getScaleArray();\n this.width_ = size[0];\n this.declutterMode_ = imageStyle.getDeclutterMode();\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 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|Array}\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 == 'LineString' ||\n geometryType == 'MultiLineString' ||\n geometryType == 'Polygon' ||\n geometryType == 'MultiPolygon')) {\n if (!intersects(this.getBufferedMaxExtent(), geometry.getExtent())) {\n return;\n }\n var ends = void 0;\n flatCoordinates = geometry.getFlatCoordinates();\n if (geometryType == 'LineString') {\n ends = [flatCoordinates.length];\n }\n else if (geometryType == 'MultiLineString') {\n ends = /** @type {import(\"../../geom/MultiLineString.js\").default} */ (geometry).getEnds();\n }\n else if (geometryType == 'Polygon') {\n ends = /** @type {import(\"../../geom/Polygon.js\").default} */ (geometry)\n .getEnds()\n .slice(0, 1);\n }\n else if (geometryType == 'MultiPolygon') {\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 // No `justify` support for line placement.\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 'Point':\n case 'MultiPoint':\n flatCoordinates =\n /** @type {import(\"../../geom/MultiPoint.js\").default} */ (geometry).getFlatCoordinates();\n break;\n case 'LineString':\n flatCoordinates =\n /** @type {import(\"../../geom/LineString.js\").default} */ (geometry).getFlatMidpoint();\n break;\n case 'Circle':\n flatCoordinates =\n /** @type {import(\"../../geom/Circle.js\").default} */ (geometry).getCenter();\n break;\n case 'MultiLineString':\n flatCoordinates =\n /** @type {import(\"../../geom/MultiLineString.js\").default} */ (geometry).getFlatMidpoints();\n stride = 2;\n break;\n case '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 'MultiPolygon':\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 undefined,\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 undefined,\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 justify: textState.justify,\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.justify = textStyle.getJustify();\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.justify || '?') +\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(\"../canvas.js\").BuilderType} 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/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>|null} 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 // rendering across line segments\n text = text.replace(/\\n/g, ' '); // ensure rendering in single-line as all calculations below don't handle multi-lines\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/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, defaultTextAlign, defaultTextBaseline, drawImageOrLabel, getTextDimensions, measureAndCacheTextWidth, } 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}\n/**\n * @param {Array} acc Accumulator.\n * @param {string} line Line of text.\n * @param {number} i Index\n * @return {Array} Accumulator.\n */\nfunction createTextChunks(acc, line, i) {\n if (i > 0) {\n acc.push('\\n', '');\n }\n acc.push(line, '');\n return acc;\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|Array} 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 textIsArray = Array.isArray(text);\n var align = textState.justify\n ? TEXT_ALIGN[textState.justify]\n : horizontalTextAlign(Array.isArray(text) ? text[0] : text, textState.textAlign || defaultTextAlign);\n var strokeWidth = strokeKey && strokeState.lineWidth ? strokeState.lineWidth : 0;\n var chunks = textIsArray\n ? text\n : text.split('\\n').reduce(createTextChunks, []);\n var _a = getTextDimensions(textState, chunks), width = _a.width, height = _a.height, widths = _a.widths, heights = _a.heights, lineWidths = _a.lineWidths;\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 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 strokeInstructions = [];\n var fillInstructions = [];\n var lineHeight = 0;\n var lineOffset = 0;\n var widthHeightIndex = 0;\n var lineWidthIndex = 0;\n var previousFont;\n for (var i = 0, ii = chunks.length; i < ii; i += 2) {\n var text_1 = chunks[i];\n if (text_1 === '\\n') {\n lineOffset += lineHeight;\n lineHeight = 0;\n x = align * renderWidth + leftRight * strokeWidth;\n ++lineWidthIndex;\n continue;\n }\n var font = chunks[i + 1] || textState.font;\n if (font !== previousFont) {\n if (strokeKey) {\n strokeInstructions.push('font', font);\n }\n if (fillKey) {\n fillInstructions.push('font', font);\n }\n previousFont = font;\n }\n lineHeight = Math.max(lineHeight, heights[widthHeightIndex]);\n var fillStrokeArgs = [\n text_1,\n x +\n leftRight * widths[widthHeightIndex] +\n align * (widths[widthHeightIndex] - lineWidths[lineWidthIndex]),\n 0.5 * (strokeWidth + lineHeight) + lineOffset,\n ];\n x += widths[widthHeightIndex];\n if (strokeKey) {\n strokeInstructions.push('strokeText', fillStrokeArgs);\n }\n if (fillKey) {\n fillInstructions.push('fillText', fillStrokeArgs);\n }\n ++widthHeightIndex;\n }\n Array.prototype.push.apply(contextInstructions, strokeInstructions);\n Array.prototype.push.apply(contextInstructions, fillInstructions);\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|Array} 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(Array.isArray(text) ? text[0] : 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 declutterMode = \n /** @type {\"declutter\"|\"obstacle\"|\"none\"|undefined} */ (instruction[14]);\n var declutterImageWithText = \n /** @type {import(\"../canvas.js\").DeclutterImageWithText} */ (instruction[15]);\n if (!image && instruction.length >= 20) {\n // create label images\n text = /** @type {string} */ (instruction[19]);\n textKey = /** @type {string} */ (instruction[20]);\n strokeKey = /** @type {string} */ (instruction[21]);\n fillKey = /** @type {string} */ (instruction[22]);\n var labelWithAnchor = this.drawLabelWithPointPlacement_(text, textKey, strokeKey, fillKey);\n image = labelWithAnchor.label;\n instruction[3] = image;\n var textOffsetX = /** @type {number} */ (instruction[23]);\n anchorX = (labelWithAnchor.anchorX - textOffsetX) * this.pixelRatio;\n instruction[4] = anchorX;\n var textOffsetY = /** @type {number} */ (instruction[24]);\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 > 25) {\n geometryWidths = /** @type {number} */ (instruction[25]);\n }\n var padding = void 0, backgroundFill = void 0, backgroundStroke = void 0;\n if (instruction.length > 17) {\n padding = /** @type {Array} */ (instruction[16]);\n backgroundFill = /** @type {boolean} */ (instruction[17]);\n backgroundStroke = /** @type {boolean} */ (instruction[18]);\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 if (opt_declutterTree) {\n if (declutterMode === 'none') {\n // not rendered in declutter group\n continue;\n }\n else if (declutterMode === 'obstacle') {\n // will always be drawn, thus no collision detection, but insert as obstacle\n opt_declutterTree.insert(dimensions.declutterBox);\n continue;\n }\n else {\n var imageArgs = void 0;\n var imageDeclutterBox = void 0;\n if (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.collides(dimensions.declutterBox)) {\n continue;\n }\n if (imageArgs) {\n // We now have image and text for an image+text combination.\n opt_declutterTree.insert(imageDeclutterBox);\n // Render the image before we render the text.\n this.replayImageOrLabel_.apply(this, imageArgs);\n }\n opt_declutterTree.insert(dimensions.declutterBox);\n }\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: // consume the instruction anyway, to avoid an infinite loop\n ++i;\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 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 = ['Polygon', 'Circle', 'LineString', 'Image', 'Text', 'Default'];\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 !== 'Image' && 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|null} 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 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 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 'Point':\n this.drawPoint(\n /** @type {import(\"../../geom/Point.js\").default} */ (geometry));\n break;\n case 'LineString':\n this.drawLineString(\n /** @type {import(\"../../geom/LineString.js\").default} */ (geometry));\n break;\n case 'Polygon':\n this.drawPolygon(\n /** @type {import(\"../../geom/Polygon.js\").default} */ (geometry));\n break;\n case 'MultiPoint':\n this.drawMultiPoint(\n /** @type {import(\"../../geom/MultiPoint.js\").default} */ (geometry));\n break;\n case 'MultiLineString':\n this.drawMultiLineString(\n /** @type {import(\"../../geom/MultiLineString.js\").default} */ (geometry));\n break;\n case 'MultiPolygon':\n this.drawMultiPolygon(\n /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (geometry));\n break;\n case 'GeometryCollection':\n this.drawGeometryCollection(\n /** @type {import(\"../../geom/GeometryCollection.js\").default} */ (geometry));\n break;\n case '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_ =\n textText !== undefined\n ? Array.isArray(textText)\n ? textText.reduce(function (acc, t, i) { return (acc += i % 2 ? ' ' : t); }, '')\n : textText\n : '';\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/render/canvas/hitdetect\n */\nimport CanvasImmediateRenderer from './Immediate.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['Polygon'] = [];\n byGeometryType['Circle'] = [];\n byGeometryType['LineString'] = [];\n byGeometryType['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 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 feature} or {@link module:ol/render/Feature~RenderFeature render feature}\n * at the pixel, the second is the {@link module:ol/layer/Layer~Layer layer} of the feature and will be null for\n * unmanaged layers. The third is the {@link module:ol/geom/SimpleGeometry~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(), '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(), '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 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() == 'GeometryCollection') {\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(), '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(), 'LineString');\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(), '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(), 'LineString');\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(), '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(), '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(), '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 (imageStyle) {\n if (imageStyle.getImageState() != ImageState.LOADED) {\n return;\n }\n var imageBuilderGroup = builderGroup;\n if (opt_declutterBuilderGroup) {\n var declutterMode = imageStyle.getDeclutterMode();\n if (declutterMode !== 'none') {\n imageBuilderGroup = opt_declutterBuilderGroup;\n if (declutterMode === 'obstacle') {\n // draw in non-declutter group:\n var imageReplay_1 = builderGroup.getBuilder(style.getZIndex(), 'Image');\n imageReplay_1.setImageStyle(imageStyle, declutterImageWithText);\n imageReplay_1.drawPoint(geometry, feature);\n }\n else if (textStyle && textStyle.getText()) {\n declutterImageWithText = {};\n }\n }\n }\n var imageReplay = imageBuilderGroup.getBuilder(style.getZIndex(), 'Image');\n imageReplay.setImageStyle(imageStyle, declutterImageWithText);\n imageReplay.drawPoint(geometry, feature);\n }\n if (textStyle && textStyle.getText()) {\n var textBuilderGroup = builderGroup;\n if (opt_declutterBuilderGroup) {\n textBuilderGroup = opt_declutterBuilderGroup;\n }\n var textReplay = textBuilderGroup.getBuilder(style.getZIndex(), '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 (imageStyle) {\n if (imageStyle.getImageState() != ImageState.LOADED) {\n return;\n }\n var imageBuilderGroup = builderGroup;\n if (opt_declutterBuilderGroup) {\n var declutterMode = imageStyle.getDeclutterMode();\n if (declutterMode !== 'none') {\n imageBuilderGroup = opt_declutterBuilderGroup;\n if (declutterMode === 'obstacle') {\n // draw in non-declutter group:\n var imageReplay_2 = builderGroup.getBuilder(style.getZIndex(), 'Image');\n imageReplay_2.setImageStyle(imageStyle, declutterImageWithText);\n imageReplay_2.drawMultiPoint(geometry, feature);\n }\n else if (textStyle && textStyle.getText()) {\n declutterImageWithText = {};\n }\n }\n }\n var imageReplay = imageBuilderGroup.getBuilder(style.getZIndex(), 'Image');\n imageReplay.setImageStyle(imageStyle, declutterImageWithText);\n imageReplay.drawMultiPoint(geometry, feature);\n }\n if (textStyle && textStyle.getText()) {\n var textBuilderGroup = builderGroup;\n if (opt_declutterBuilderGroup) {\n textBuilderGroup = opt_declutterBuilderGroup;\n }\n var textReplay = textBuilderGroup.getBuilder(style.getZIndex(), '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(), '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(), '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, { canvasPool } 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 { createCanvasContext2D, releaseCanvas } from '../../dom.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 * @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 /**\n * @private\n * @type {CanvasRenderingContext2D}\n */\n _this.compositionContext_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.opacity_ = 1;\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.compositionContext_;\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 CanvasVectorLayerRenderer.prototype.setupCompositionContext_ = function () {\n if (this.opacity_ !== 1) {\n var compositionContext = createCanvasContext2D(this.context.canvas.width, this.context.canvas.height, canvasPool);\n this.compositionContext_ = compositionContext;\n }\n else {\n this.compositionContext_ = this.context;\n }\n };\n CanvasVectorLayerRenderer.prototype.releaseCompositionContext_ = function () {\n if (this.opacity_ !== 1) {\n var alpha = this.context.globalAlpha;\n this.context.globalAlpha = this.opacity_;\n this.context.drawImage(this.compositionContext_.canvas, 0, 0);\n this.context.globalAlpha = alpha;\n releaseCanvas(this.compositionContext_);\n canvasPool.push(this.compositionContext_.canvas);\n this.compositionContext_ = null;\n }\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.setupCompositionContext_();\n this.renderWorlds(this.declutterExecutorGroup, frameState, frameState.declutterTree);\n this.releaseCompositionContext_();\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, 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 this.opacity_ = layerState.opacity;\n this.setupCompositionContext_();\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(this.compositionContext_, frameState, layerExtent);\n }\n }\n if (render) {\n this.renderWorlds(replayGroup, frameState);\n }\n if (clipped) {\n this.compositionContext_.restore();\n }\n this.releaseCompositionContext_();\n this.postRender(context, frameState);\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.ready && !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.ready &&\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 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 ready = true;\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 ready = ready && !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 this.ready = ready;\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 is rendered client-side, as vectors. This layer type provides most accurate rendering\n * even during animations. Points and labels stay upright on rotated views. For very large\n * amounts of vector data, performance may suffer during pan and zoom animations. In this case,\n * try {@link module:ol/layer/VectorImage~VectorImageLayer}.\n *\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","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';\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 {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~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 (mapBrowserEvent.activePointers) {\n this.targetPointers = mapBrowserEvent.activePointers;\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}\nexport default PointerInteraction;\n//# sourceMappingURL=Pointer.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|null}\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|null} Map.\n * @api\n */\n Interaction.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Handles the {@link module:ol/MapBrowserEvent~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|null} 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","/**\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 /**\n * Get data for a pixel location. The return type depends on the source data. For image tiles,\n * a four element RGBA array will be returned. For data tiles, the array length will match the\n * number of bands in the dataset. For requests outside the layer extent, `null` will be returned.\n * Data for a image tiles can only be retrieved if the source's `crossOrigin` property is set.\n *\n * ```js\n * // display layer data on every pointer move\n * map.on('pointermove', (event) => {\n * console.log(layer.getData(event.pixel));\n * });\n * ```\n * @param {import(\"../pixel\").Pixel} pixel Pixel.\n * @return {Uint8ClampedArray|Uint8Array|Float32Array|DataView|null} Pixel data.\n * @api\n */\n BaseTileLayer.prototype.getData = function (pixel) {\n return _super.prototype.getData.call(this, pixel);\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 ImageTile from '../../ImageTile.js';\nimport ReprojTile from '../../reproj/Tile.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, toString as toTransformString, } from '../../transform.js';\nimport { assign } from '../../obj.js';\nimport { containsCoordinate, createEmpty, equals, getHeight, getIntersection, getRotatedViewport, getTopLeft, getWidth, intersects, } from '../../extent.js';\nimport { fromUserExtent } from '../../proj.js';\nimport { getUid } from '../../util.js';\nimport { numberSafeCompareFunction } from '../../array.js';\nimport { toSize } from '../../size.js';\n/**\n * @classdesc\n * Canvas renderer for tile layers.\n * @api\n * @template {import(\"../../layer/Tile.js\").default|import(\"../../layer/VectorTile.js\").default} [LayerType=import(\"../../layer/Tile.js\").default|import(\"../../layer/VectorTile.js\").default]\n * @extends {CanvasLayerRenderer}\n */\nvar CanvasTileLayerRenderer = /** @class */ (function (_super) {\n __extends(CanvasTileLayerRenderer, _super);\n /**\n * @param {LayerType} 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 {import(\"../../pixel.js\").Pixel} pixel Pixel.\n * @return {Uint8ClampedArray} Data at the pixel location.\n */\n CanvasTileLayerRenderer.prototype.getData = function (pixel) {\n var frameState = this.frameState;\n if (!frameState) {\n return null;\n }\n var layer = this.getLayer();\n var coordinate = applyTransform(frameState.pixelToCoordinateTransform, pixel.slice());\n var layerExtent = layer.getExtent();\n if (layerExtent) {\n if (!containsCoordinate(layerExtent, coordinate)) {\n return null;\n }\n }\n var pixelRatio = frameState.pixelRatio;\n var projection = frameState.viewState.projection;\n var viewState = frameState.viewState;\n var source = layer.getRenderSource();\n var tileGrid = source.getTileGridForProjection(viewState.projection);\n var tilePixelRatio = source.getTilePixelRatio(frameState.pixelRatio);\n for (var z = tileGrid.getZForResolution(viewState.resolution); z >= tileGrid.getMinZoom(); --z) {\n var tileCoord = tileGrid.getTileCoordForCoordAndZ(coordinate, z);\n var tile = source.getTile(z, tileCoord[1], tileCoord[2], pixelRatio, projection);\n if (!(tile instanceof ImageTile || tile instanceof ReprojTile)) {\n return null;\n }\n if (tile.getState() !== TileState.LOADED) {\n continue;\n }\n var tileOrigin = tileGrid.getOrigin(z);\n var tileSize = toSize(tileGrid.getTileSize(z));\n var tileResolution = tileGrid.getResolution(z);\n var col = Math.floor(tilePixelRatio *\n ((coordinate[0] - tileOrigin[0]) / tileResolution -\n tileCoord[1] * tileSize[0]));\n var row = Math.floor(tilePixelRatio *\n ((tileOrigin[1] - coordinate[1]) / tileResolution -\n tileCoord[2] * tileSize[1]));\n var gutter = Math.round(tilePixelRatio * source.getGutterForProjection(viewState.projection));\n return this.getImageData(tile.getImage(), col + gutter, row + gutter);\n }\n return null;\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 resolution = frameState.viewState.resolution;\n var tilePixelRatio = tileSource.getTilePixelRatio(pixelRatio);\n // desired dimensions of the canvas in pixels\n var width = Math.round((getWidth(extent) / resolution) * pixelRatio);\n var height = Math.round((getHeight(extent) / resolution) * pixelRatio);\n var layerExtent = layerState.extent && fromUserExtent(layerState.extent, projection);\n if (layerExtent) {\n extent = getIntersection(extent, fromUserExtent(layerState.extent, projection));\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 var viewport = rotation\n ? getRotatedViewport(viewState.center, resolution, rotation, frameState.size)\n : undefined;\n for (var x = tileRange.minX; x <= tileRange.maxX; ++x) {\n for (var y = tileRange.minY; y <= tileRange.maxY; ++y) {\n if (rotation &&\n !tileGrid.tileCoordIntersectsViewport([z, x, y], viewport)) {\n continue;\n }\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 (inTransition && layerState.opacity !== 1) {\n // Skipping transition when layer is not fully opaque avoids visual artifacts.\n tile.endTransition(uid);\n inTransition = false;\n }\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) * pixelRatio) / tilePixelRatio;\n // set forward and inverse pixel transforms\n composeTransform(this.pixelTransform, frameState.size[0] / 2, frameState.size[1] / 2, 1 / pixelRatio, 1 / pixelRatio, rotation, -width / 2, -height / 2);\n var canvasTransform = toTransformString(this.pixelTransform);\n this.useContainer(target, canvasTransform, 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 var contextSaved = false;\n if (!inTransition) {\n if (clips) {\n // Clip mask for regions in this tile that already filled by a higher z tile\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 if (intersects([x, y, x + w, y + h], [clip[0], clip[3], clip[4], clip[7]])) {\n if (!contextSaved) {\n context.save();\n contextSaved = true;\n }\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 }\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 if (contextSaved) {\n context.restore();\n }\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 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 layerState = frameState.layerStatesArray[frameState.layerIndex];\n var alpha = layerState.opacity *\n (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 !== layerState.opacity) {\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 rotation = frameState.viewState.rotation;\n var viewport = rotation\n ? getRotatedViewport(frameState.viewState.center, frameState.viewState.resolution, rotation, frameState.size)\n : undefined;\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 (rotation &&\n !tileGrid.tileCoordIntersectsViewport([z, x, y], viewport)) {\n continue;\n }\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));\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~BaseObject} 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=import(\"./geom/Geometry.js\").default]\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","/**\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/**\n * Return a two-dimensional endss\n * @param {Array} flatCoordinates Flat coordinates\n * @param {Array} ends Linear ring end indexes\n * @return {Array>} Two dimensional endss array that can\n * be used to contruct a MultiPolygon\n */\nexport function inflateEnds(flatCoordinates, ends) {\n var endss = [];\n var offset = 0;\n var prevEndIndex = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n // classifies an array of rings into polygons with outer rings and holes\n if (!linearRingIsClockwise(flatCoordinates, offset, end, 2)) {\n endss.push(ends.slice(prevEndIndex, i + 1));\n }\n else {\n if (endss.length === 0) {\n continue;\n }\n endss[endss.length - 1].push(ends[prevEndIndex]);\n }\n prevEndIndex = i + 1;\n offset = end;\n }\n return endss;\n}\n//# sourceMappingURL=orient.js.map","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',{attrs:{\"name\":\"fade\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.show),expression:\"show\"}],staticClass:\"backdrop\"},[_c('div',{staticClass:\"terraIndexModal\"},[_c('div',{staticClass:\"modal-dialog\"},[_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"modal-header\"},[_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.cancelButtonPress()}}},[_vm._v(\"×\")]),_c('h4',{staticClass:\"modal-title\"},[_vm._v(_vm._s(_vm.titleLabel))])]),_c('div',{staticClass:\"modal-body\"},[_vm._t(\"default\")],2),_c('div',{staticClass:\"modal-footer\"},[_c('button',{staticClass:\"btn\",on:{\"click\":function($event){return _vm.cancelButtonPress()}}},[_vm._v(_vm._s(_vm.cancelButtonLabel))]),_c('button',{staticClass:\"btn\",on:{\"click\":function($event){return _vm.confirmButtonPress()}}},[_vm._v(_vm._s(_vm.confirmButtonLabel))])])])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirmModal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirmModal.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./confirmModal.vue?vue&type=template&id=4eec4607&scoped=true\"\nimport script from \"./confirmModal.vue?vue&type=script&lang=js\"\nexport * from \"./confirmModal.vue?vue&type=script&lang=js\"\nimport style0 from \"./confirmModal.vue?vue&type=style&index=0&id=4eec4607&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4eec4607\",\n null\n \n)\n\nexport default component.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/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 * @param {Array} [opt_activePointers] Active pointers.\n */\n function MapBrowserEvent(type, map, originalEvent, opt_dragging, opt_frameState, opt_activePointers) {\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 /**\n * @type {Array|undefined}\n */\n _this.activePointers = opt_activePointers;\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","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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSampleMpTable.vue?vue&type=style&index=0&id=3d1f6ae0&prod&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/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~BaseLayer} and all its subclasses, any property set in\n * the options is set as a {@link module:ol/Object~BaseObject} 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 ? properties.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.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/Source.js\").State} 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 background 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/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/featureloader\n */\nimport { VOID } from './functions.js';\n/**\n *\n * @type {boolean}\n * @private\n */\nvar withCredentials = false;\n/**\n * {@link module:ol/source/Vector~VectorSource} 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~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~VectorSource} 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~VectorSource} 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~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() == 'arraybuffer') {\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 == 'json' || type == 'text') {\n source = xhr.responseText;\n }\n else if (type == 'xml') {\n source = xhr.responseXML;\n if (!source) {\n source = new DOMParser().parseFromString(xhr.responseText, 'application/xml');\n }\n }\n else if (type == 'arraybuffer') {\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 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, wrapAndSliceX } 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~VectorSource} instances are instances of this\n * type.\n * @template {import(\"../geom/Geometry.js\").default} [Geometry=import(\"../geom/Geometry.js\").default]\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~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~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=import(\"../geom/Geometry.js\").default]\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: '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>|null}\n */\n _this.featuresCollection_ = null;\n var collection, features;\n if (Array.isArray(options.features)) {\n features =\n /** @type {Array>} */ (options.features);\n }\n else if (options.features) {\n collection =\n /** @type {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~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 if (this.hasListener(VectorEventType.ADDFEATURE)) {\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 /**\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~Collection} as `features`.\n * @return {Collection>|null} 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 * @param {import(\"../proj/Projection.js\").default} [opt_projection] Include features\n * where `extent` exceeds the x-axis bounds of `projection` and wraps around the world.\n * @return {Array>} Features.\n * @api\n */\n VectorSource.prototype.getFeaturesInExtent = function (extent, opt_projection) {\n var _this = this;\n if (this.featuresRtree_) {\n var multiWorld = opt_projection && opt_projection.canWrapX() && this.getWrapX();\n if (!multiWorld) {\n return this.featuresRtree_.getInExtent(extent);\n }\n var extents = wrapAndSliceX(extent, opt_projection);\n return [].concat.apply([], extents.map(function (anExtent) { return _this.featuresRtree_.getInExtent(anExtent); }));\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 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|null} 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|null} 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 if (this.featuresRtree_) {\n return (this.featuresRtree_.isEmpty() && isEmpty(this.nullGeometryFeatures_));\n }\n if (this.featuresCollection_) {\n return this.featuresCollection_.getLength() === 0;\n }\n return true;\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","/**\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 * Triggered when loading of additional map data (tiles, images, features) starts.\n * @event module:ol/MapEvent~MapEvent#loadstart\n * @api\n */\n LOADSTART: 'loadstart',\n /**\n * Triggered when loading of additional map data has completed.\n * @event module:ol/MapEvent~MapEvent#loadend\n * @api\n */\n LOADEND: 'loadend',\n};\n/***\n * @typedef {'postrender'|'movestart'|'moveend'|'loadstart'|'loadend'} Types\n */\n//# sourceMappingURL=MapEventType.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","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 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(\"./Geometry.js\").Type} Geometry type.\n * @api\n */\n LinearRing.prototype.getType = function () {\n return 'LinearRing';\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","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 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|null} 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(\"./Geometry.js\").Type} Geometry type.\n * @api\n */\n Polygon.prototype.getType = function () {\n return '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/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~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~TileSource} 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~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/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 { 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 var layer = layerState.layer;\n var sourceState = layer.getSourceState();\n if (!inView(layerState, viewState) ||\n (sourceState != 'ready' && sourceState != 'undefined')) {\n layer.unrender();\n continue;\n }\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 { 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 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~BaseLayer 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 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~BaseLayer 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/Source.js\").State} Source state.\n */\n LayerGroup.prototype.getSourceState = function () {\n return 'ready';\n };\n return LayerGroup;\n}(BaseLayer));\nexport default LayerGroup;\n//# sourceMappingURL=Group.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 { getValues } from './obj.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|null}\n * @private\n */\n _this.down_ = null;\n var element = _this.map_.getViewport();\n /**\n * @type {Array}\n * @private\n */\n _this.activePointers_ = [];\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.relayMoveEvent_, _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 var id = event.pointerId;\n if (event.type == MapBrowserEventType.POINTERUP ||\n event.type == MapBrowserEventType.POINTERCANCEL) {\n delete this.trackedTouches_[id];\n for (var pointerId in this.trackedTouches_) {\n if (this.trackedTouches_[pointerId].target !== event.target) {\n // Some platforms assign a new pointerId when the target changes.\n // If this happens, delete one tracked pointer. If there is more\n // than one tracked pointer for the old target, it will be cleared\n // by subsequent POINTERUP events from other pointers.\n delete this.trackedTouches_[pointerId];\n break;\n }\n }\n }\n else if (event.type == MapBrowserEventType.POINTERDOWN ||\n event.type == MapBrowserEventType.POINTERMOVE) {\n this.trackedTouches_[id] = event;\n }\n this.activePointers_ = getValues(this.trackedTouches_);\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, undefined, undefined, this.activePointers_);\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_.length === 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_.length === 0;\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserEvent(MapBrowserEventType.POINTERDOWN, this.map_, pointerEvent, undefined, undefined, this.activePointers_);\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.updateActivePointers_(pointerEvent);\n this.dragging_ = true;\n var newEvent = new MapBrowserEvent(MapBrowserEventType.POINTERDRAG, this.map_, pointerEvent, this.dragging_, undefined, this.activePointers_);\n this.dispatchEvent(newEvent);\n }\n };\n /**\n * Wrap and relay a pointermove event.\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.relayMoveEvent_ = function (pointerEvent) {\n this.originalPointerMoveEvent_ = pointerEvent;\n var dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n this.dispatchEvent(new MapBrowserEvent(MapBrowserEventType.POINTERMOVE, 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 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|undefined}\n */\n _this.renderComplete_;\n /**\n * @private\n * @type {boolean}\n */\n _this.loaded_ = true;\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|null}\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 `getInteractions()` 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.controls.clear();\n this.interactions.clear();\n this.overlays_.clear();\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 feature} or\n * {@link module:ol/render/Feature~RenderFeature render feature} at the pixel, the second is\n * the {@link module:ol/layer/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_ || !this.renderer_) {\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 * @api\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 * Please the `layer.getData()` method for {@link module:ol/layer/Tile~TileLayer#getData tile layers} or\n * {@link module:ol/layer/Image~ImageLayer#getData image layers} instead of using this method.\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 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 * @deprecated\n */\n PluggableMap.prototype.forEachLayerAtPixel = function (pixel, callback, opt_options) {\n if (!this.frameState_ || !this.renderer_) {\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_ || !this.renderer_) {\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.getLoadingOrNotReady = function () {\n var layerStatesArray = this.getLayerGroup().getLayerStatesArray();\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var state = layerStatesArray[i];\n if (!state.visible) {\n continue;\n }\n var renderer = state.layer.getRenderer();\n if (renderer && !renderer.ready) {\n return true;\n }\n var source = /** @type {import(\"./layer/Layer.js\").default} */ (state.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|null} 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 && this.renderer_ && !frameState.animate) {\n if (this.renderComplete_ === true) {\n if (this.hasListener(RenderEventType.RENDERCOMPLETE)) {\n this.renderer_.dispatchRenderEvent(RenderEventType.RENDERCOMPLETE, frameState);\n }\n if (this.loaded_ === false) {\n this.loaded_ = true;\n this.dispatchEvent(new MapEvent(MapEventType.LOADEND, this, frameState));\n }\n }\n else if (this.loaded_ === true) {\n this.loaded_ = false;\n this.dispatchEvent(new MapEvent(MapEventType.LOADSTART, this, frameState));\n }\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 /** @type {import(\"./renderer/Map.js\").default} */ (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.hasListener(MapEventType.LOADSTART) ||\n this.hasListener(MapEventType.LOADEND) ||\n this.hasListener(RenderEventType.RENDERCOMPLETE)\n ? !this.tileQueue_.getTilesLoading() &&\n !this.tileQueue_.getCount() &&\n !this.getLoadingOrNotReady()\n : undefined;\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","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/Map\n */\nimport CompositeMapRenderer from './renderer/Composite.js';\nimport PluggableMap from './PluggableMap.js';\nimport { assign } from './obj.js';\nimport { defaults as defaultControls } from './control.js';\nimport { defaults as defaultInteractions } from './interaction.js';\n/**\n * @classdesc\n * The map is the core component of OpenLayers. For a map to render, a view,\n * one or more layers, and a target container are needed:\n *\n * import Map from 'ol/Map';\n * import View from 'ol/View';\n * import TileLayer from 'ol/layer/Tile';\n * import OSM from 'ol/source/OSM';\n *\n * var map = new Map({\n * view: new View({\n * center: [0, 0],\n * zoom: 1\n * }),\n * layers: [\n * new TileLayer({\n * source: new OSM()\n * })\n * ],\n * target: 'map'\n * });\n *\n * The above snippet creates a map using a {@link module:ol/layer/Tile~TileLayer} to\n * display {@link module:ol/source/OSM~OSM} OSM data and render it to a DOM\n * element with the id `map`.\n *\n * The constructor places a viewport container (with CSS class name\n * `ol-viewport`) in the target element (see `getViewport()`), and then two\n * further elements within the viewport: one with CSS class name\n * `ol-overlaycontainer-stopevent` for controls and some overlays, and one with\n * CSS class name `ol-overlaycontainer` for other overlays (see the `stopEvent`\n * option of {@link module:ol/Overlay~Overlay} for the difference). The map\n * itself is placed in a further element within the viewport.\n *\n * Layers are stored as a {@link module:ol/Collection~Collection} in\n * layerGroups. A top-level group is provided by the library. This is what is\n * accessed by `getLayerGroup` and `setLayerGroup`. Layers entered in the\n * options are added to this group, and `addLayer` and `removeLayer` change the\n * layer collection in the group. `getLayers` is a convenience function for\n * `getLayerGroup().getLayers()`. Note that {@link module:ol/layer/Group~LayerGroup}\n * is a subclass of {@link module:ol/layer/Base~BaseLayer}, so layers entered in the\n * options or added with `addLayer` can be groups, which can contain further\n * groups, and so on.\n *\n * @api\n */\nvar Map = /** @class */ (function (_super) {\n __extends(Map, _super);\n /**\n * @param {import(\"./PluggableMap.js\").MapOptions} options Map options.\n */\n function Map(options) {\n options = assign({}, options);\n if (!options.controls) {\n options.controls = defaultControls();\n }\n if (!options.interactions) {\n options.interactions = defaultInteractions({\n onFocusOnly: true,\n });\n }\n return _super.call(this, options) || this;\n }\n Map.prototype.createRenderer = function () {\n return new CompositeMapRenderer(this);\n };\n return Map;\n}(PluggableMap));\nexport default Map;\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/ImageBase\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport { abstract } from './util.js';\n/**\n * @abstract\n */\nvar ImageBase = /** @class */ (function (_super) {\n __extends(ImageBase, _super);\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number|undefined} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"./ImageState.js\").default} state State.\n */\n function ImageBase(extent, resolution, pixelRatio, state) {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {import(\"./extent.js\").Extent}\n */\n _this.extent = extent;\n /**\n * @private\n * @type {number}\n */\n _this.pixelRatio_ = pixelRatio;\n /**\n * @protected\n * @type {number|undefined}\n */\n _this.resolution = resolution;\n /**\n * @protected\n * @type {import(\"./ImageState.js\").default}\n */\n _this.state = state;\n return _this;\n }\n /**\n * @protected\n */\n ImageBase.prototype.changed = function () {\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n ImageBase.prototype.getExtent = function () {\n return this.extent;\n };\n /**\n * @abstract\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n */\n ImageBase.prototype.getImage = function () {\n return abstract();\n };\n /**\n * @return {number} PixelRatio.\n */\n ImageBase.prototype.getPixelRatio = function () {\n return this.pixelRatio_;\n };\n /**\n * @return {number} Resolution.\n */\n ImageBase.prototype.getResolution = function () {\n return /** @type {number} */ (this.resolution);\n };\n /**\n * @return {import(\"./ImageState.js\").default} State.\n */\n ImageBase.prototype.getState = function () {\n return this.state;\n };\n /**\n * Load not yet loaded URI.\n * @abstract\n */\n ImageBase.prototype.load = function () {\n abstract();\n };\n return ImageBase;\n}(EventTarget));\nexport default ImageBase;\n//# sourceMappingURL=ImageBase.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/Image\n */\nimport EventType from './events/EventType.js';\nimport ImageBase from './ImageBase.js';\nimport ImageState from './ImageState.js';\nimport { IMAGE_DECODE } from './has.js';\nimport { getHeight } from './extent.js';\nimport { listenOnce, unlistenByKey } from './events.js';\n/**\n * A function that takes an {@link module:ol/Image~ImageWrapper} for the image and a\n * `{string}` for the src as arguments. It is supposed to make it so the\n * underlying image {@link module:ol/Image~ImageWrapper#getImage} is assigned the\n * content specified by the src. If not specified, the default is\n *\n * function(image, src) {\n * image.getImage().src = src;\n * }\n *\n * Providing a custom `imageLoadFunction` can be useful to load images with\n * post requests or - in general - through XHR requests, where the src of the\n * image element would be set to a data URI when the content is loaded.\n *\n * @typedef {function(ImageWrapper, string): void} LoadFunction\n * @api\n */\nvar ImageWrapper = /** @class */ (function (_super) {\n __extends(ImageWrapper, _super);\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number|undefined} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {string} src Image source URI.\n * @param {?string} crossOrigin Cross origin.\n * @param {LoadFunction} imageLoadFunction Image load function.\n */\n function ImageWrapper(extent, resolution, pixelRatio, src, crossOrigin, imageLoadFunction) {\n var _this = _super.call(this, extent, resolution, pixelRatio, ImageState.IDLE) || this;\n /**\n * @private\n * @type {string}\n */\n _this.src_ = src;\n /**\n * @private\n * @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement}\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 * @protected\n * @type {import(\"./ImageState.js\").default}\n */\n _this.state = ImageState.IDLE;\n /**\n * @private\n * @type {LoadFunction}\n */\n _this.imageLoadFunction_ = imageLoadFunction;\n return _this;\n }\n /**\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @api\n */\n ImageWrapper.prototype.getImage = function () {\n return this.image_;\n };\n /**\n * Tracks loading or read errors.\n *\n * @private\n */\n ImageWrapper.prototype.handleImageError_ = function () {\n this.state = ImageState.ERROR;\n this.unlistenImage_();\n this.changed();\n };\n /**\n * Tracks successful image load.\n *\n * @private\n */\n ImageWrapper.prototype.handleImageLoad_ = function () {\n if (this.resolution === undefined) {\n this.resolution = getHeight(this.extent) / this.image_.height;\n }\n this.state = ImageState.LOADED;\n this.unlistenImage_();\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 * @api\n */\n ImageWrapper.prototype.load = function () {\n if (this.state == ImageState.IDLE || this.state == ImageState.ERROR) {\n this.state = ImageState.LOADING;\n this.changed();\n this.imageLoadFunction_(this, this.src_);\n this.unlisten_ = listenImage(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this));\n }\n };\n /**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image.\n */\n ImageWrapper.prototype.setImage = function (image) {\n this.image_ = image;\n this.resolution = getHeight(this.extent) / this.image_.height;\n };\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n ImageWrapper.prototype.unlistenImage_ = function () {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n };\n return ImageWrapper;\n}(ImageBase));\n/**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image element.\n * @param {function():any} loadHandler Load callback function.\n * @param {function():any} errorHandler Error callback function.\n * @return {function():void} Callback to stop listening.\n */\nexport function listenImage(image, loadHandler, errorHandler) {\n var img = /** @type {HTMLImageElement} */ (image);\n var listening = true;\n var decoding = false;\n var loaded = false;\n var listenerKeys = [\n listenOnce(img, EventType.LOAD, function () {\n loaded = true;\n if (!decoding) {\n loadHandler();\n }\n }),\n ];\n if (img.src && IMAGE_DECODE) {\n decoding = true;\n img\n .decode()\n .then(function () {\n if (listening) {\n loadHandler();\n }\n })\n .catch(function (error) {\n if (listening) {\n if (loaded) {\n loadHandler();\n }\n else {\n errorHandler();\n }\n }\n });\n }\n else {\n listenerKeys.push(listenOnce(img, EventType.ERROR, errorHandler));\n }\n return function unlisten() {\n listening = false;\n listenerKeys.forEach(unlistenByKey);\n };\n}\nexport default ImageWrapper;\n//# sourceMappingURL=Image.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-loader/lib/loaders/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-loader/lib/index.js??vue-loader-options!./SuggestAnalysisSampleCard.vue?vue&type=style&index=0&id=675e8132&prod&scoped=true&lang=css\"","/**\n * @module ol/style/RegularShape\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 ImageState from '../ImageState.js';\nimport ImageStyle from './Image.js';\nimport { asArray } from '../color.js';\nimport { asColorLike } from '../colorlike.js';\nimport { createCanvasContext2D } from '../dom.js';\nimport { defaultFillStyle, defaultLineJoin, defaultLineWidth, defaultMiterLimit, defaultStrokeStyle, } from '../render/canvas.js';\n/**\n * Specify radius for regular polygons, or radius1 and radius2 for stars.\n * @typedef {Object} Options\n * @property {import(\"./Fill.js\").default} [fill] Fill style.\n * @property {number} points Number of points for stars and regular polygons. In case of a polygon, the number of points\n * is the number of sides.\n * @property {number} [radius] Radius of a regular polygon.\n * @property {number} [radius1] First radius of a star. Ignored if radius is set.\n * @property {number} [radius2] Second radius of a star.\n * @property {number} [angle=0] Shape's angle in radians. A value of 0 will have one of the shape's point facing up.\n * @property {Array} [displacement=[0,0]] Displacement of the shape\n * @property {import(\"./Stroke.js\").default} [stroke] Stroke style.\n * @property {number} [rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {boolean} [rotateWithView=false] Whether to rotate the shape with the view.\n * @property {number|import(\"../size.js\").Size} [scale=1] Scale. Unless two dimensional scaling is required a better\n * result may be obtained with appropriate settings for `radius`, `radius1` and `radius2`.\n * @property {\"declutter\"|\"obstacle\"|\"none\"|undefined} [declutterMode] Declutter mode\n */\n/**\n * @typedef {Object} RenderOptions\n * @property {import(\"../colorlike.js\").ColorLike} [strokeStyle] StrokeStyle.\n * @property {number} strokeWidth StrokeWidth.\n * @property {number} size Size.\n * @property {Array} lineDash LineDash.\n * @property {number} lineDashOffset LineDashOffset.\n * @property {CanvasLineJoin} lineJoin LineJoin.\n * @property {number} miterLimit MiterLimit.\n */\n/**\n * @classdesc\n * Set regular shape style for vector features. The resulting shape will be\n * a regular polygon when `radius` is provided, or a star when `radius1` and\n * `radius2` are provided.\n * @api\n */\nvar RegularShape = /** @class */ (function (_super) {\n __extends(RegularShape, _super);\n /**\n * @param {Options} options Options.\n */\n function RegularShape(options) {\n var _this = this;\n /**\n * @type {boolean}\n */\n var rotateWithView = options.rotateWithView !== undefined ? options.rotateWithView : false;\n _this = _super.call(this, {\n opacity: 1,\n rotateWithView: rotateWithView,\n rotation: options.rotation !== undefined ? options.rotation : 0,\n scale: options.scale !== undefined ? options.scale : 1,\n displacement: options.displacement !== undefined ? options.displacement : [0, 0],\n declutterMode: options.declutterMode,\n }) || this;\n /**\n * @private\n * @type {Object}\n */\n _this.canvas_ = undefined;\n /**\n * @private\n * @type {HTMLCanvasElement}\n */\n _this.hitDetectionCanvas_ = null;\n /**\n * @private\n * @type {import(\"./Fill.js\").default}\n */\n _this.fill_ = options.fill !== undefined ? options.fill : null;\n /**\n * @private\n * @type {Array}\n */\n _this.origin_ = [0, 0];\n /**\n * @private\n * @type {number}\n */\n _this.points_ = options.points;\n /**\n * @protected\n * @type {number}\n */\n _this.radius_ =\n options.radius !== undefined ? options.radius : options.radius1;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.radius2_ = options.radius2;\n /**\n * @private\n * @type {number}\n */\n _this.angle_ = options.angle !== undefined ? options.angle : 0;\n /**\n * @private\n * @type {import(\"./Stroke.js\").default}\n */\n _this.stroke_ = options.stroke !== undefined ? options.stroke : null;\n /**\n * @private\n * @type {import(\"../size.js\").Size}\n */\n _this.size_ = null;\n /**\n * @private\n * @type {RenderOptions}\n */\n _this.renderOptions_ = null;\n _this.render();\n return _this;\n }\n /**\n * Clones the style.\n * @return {RegularShape} The cloned style.\n * @api\n */\n RegularShape.prototype.clone = function () {\n var scale = this.getScale();\n var style = new RegularShape({\n fill: this.getFill() ? this.getFill().clone() : undefined,\n points: this.getPoints(),\n radius: this.getRadius(),\n radius2: this.getRadius2(),\n angle: this.getAngle(),\n stroke: this.getStroke() ? this.getStroke().clone() : undefined,\n rotation: this.getRotation(),\n rotateWithView: this.getRotateWithView(),\n scale: Array.isArray(scale) ? scale.slice() : scale,\n displacement: this.getDisplacement().slice(),\n declutterMode: this.getDeclutterMode(),\n });\n style.setOpacity(this.getOpacity());\n return style;\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 RegularShape.prototype.getAnchor = function () {\n var size = this.size_;\n if (!size) {\n return null;\n }\n var displacement = this.getDisplacement();\n return [size[0] / 2 - displacement[0], size[1] / 2 + displacement[1]];\n };\n /**\n * Get the angle used in generating the shape.\n * @return {number} Shape's rotation in radians.\n * @api\n */\n RegularShape.prototype.getAngle = function () {\n return this.angle_;\n };\n /**\n * Get the fill style for the shape.\n * @return {import(\"./Fill.js\").default} Fill style.\n * @api\n */\n RegularShape.prototype.getFill = function () {\n return this.fill_;\n };\n /**\n * Set the fill style.\n * @param {import(\"./Fill.js\").default} fill Fill style.\n * @api\n */\n RegularShape.prototype.setFill = function (fill) {\n this.fill_ = fill;\n this.render();\n };\n /**\n * @return {HTMLCanvasElement} Image element.\n */\n RegularShape.prototype.getHitDetectionImage = function () {\n if (!this.hitDetectionCanvas_) {\n this.createHitDetectionCanvas_(this.renderOptions_);\n }\n return this.hitDetectionCanvas_;\n };\n /**\n * Get the image icon.\n * @param {number} pixelRatio Pixel ratio.\n * @return {HTMLCanvasElement} Image or Canvas element.\n * @api\n */\n RegularShape.prototype.getImage = function (pixelRatio) {\n var image = this.canvas_[pixelRatio];\n if (!image) {\n var renderOptions = this.renderOptions_;\n var context = createCanvasContext2D(renderOptions.size * pixelRatio, renderOptions.size * pixelRatio);\n this.draw_(renderOptions, context, pixelRatio);\n image = context.canvas;\n this.canvas_[pixelRatio] = image;\n }\n return image;\n };\n /**\n * Get the image pixel ratio.\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} Pixel ratio.\n */\n RegularShape.prototype.getPixelRatio = function (pixelRatio) {\n return pixelRatio;\n };\n /**\n * @return {import(\"../size.js\").Size} Image size.\n */\n RegularShape.prototype.getImageSize = function () {\n return this.size_;\n };\n /**\n * @return {import(\"../ImageState.js\").default} Image state.\n */\n RegularShape.prototype.getImageState = function () {\n return ImageState.LOADED;\n };\n /**\n * Get the origin of the symbolizer.\n * @return {Array} Origin.\n * @api\n */\n RegularShape.prototype.getOrigin = function () {\n return this.origin_;\n };\n /**\n * Get the number of points for generating the shape.\n * @return {number} Number of points for stars and regular polygons.\n * @api\n */\n RegularShape.prototype.getPoints = function () {\n return this.points_;\n };\n /**\n * Get the (primary) radius for the shape.\n * @return {number} Radius.\n * @api\n */\n RegularShape.prototype.getRadius = function () {\n return this.radius_;\n };\n /**\n * Get the secondary radius for the shape.\n * @return {number|undefined} Radius2.\n * @api\n */\n RegularShape.prototype.getRadius2 = function () {\n return this.radius2_;\n };\n /**\n * Get the size of the symbolizer (in pixels).\n * @return {import(\"../size.js\").Size} Size.\n * @api\n */\n RegularShape.prototype.getSize = function () {\n return this.size_;\n };\n /**\n * Get the stroke style for the shape.\n * @return {import(\"./Stroke.js\").default} Stroke style.\n * @api\n */\n RegularShape.prototype.getStroke = function () {\n return this.stroke_;\n };\n /**\n * Set the stroke style.\n * @param {import(\"./Stroke.js\").default} stroke Stroke style.\n * @api\n */\n RegularShape.prototype.setStroke = function (stroke) {\n this.stroke_ = stroke;\n this.render();\n };\n /**\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n */\n RegularShape.prototype.listenImageChange = function (listener) { };\n /**\n * Load not yet loaded URI.\n */\n RegularShape.prototype.load = function () { };\n /**\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n */\n RegularShape.prototype.unlistenImageChange = function (listener) { };\n /**\n * Calculate additional canvas size needed for the miter.\n * @param {string} lineJoin Line join\n * @param {number} strokeWidth Stroke width\n * @param {number} miterLimit Miter limit\n * @return {number} Additional canvas size needed\n * @private\n */\n RegularShape.prototype.calculateLineJoinSize_ = function (lineJoin, strokeWidth, miterLimit) {\n if (strokeWidth === 0 ||\n this.points_ === Infinity ||\n (lineJoin !== 'bevel' && lineJoin !== 'miter')) {\n return strokeWidth;\n }\n // m | ^\n // i | |\\ .\n // t >| #\\\n // e | |\\ \\ .\n // r \\s\\\n // | \\t\\ . .\n // \\r\\ . .\n // | \\o\\ . . . . .\n // e \\k\\ . . . .\n // | \\e\\ . . . . .\n // d \\ \\ . . . .\n // | _ _a_ _\\# . . .\n // r1 / ` . .\n // | . .\n // b / . .\n // | . .\n // / r2 . .\n // | . .\n // / . .\n // |α . .\n // / . .\n // ° center\n var r1 = this.radius_;\n var r2 = this.radius2_ === undefined ? r1 : this.radius2_;\n if (r1 < r2) {\n var tmp = r1;\n r1 = r2;\n r2 = tmp;\n }\n var points = this.radius2_ === undefined ? this.points_ : this.points_ * 2;\n var alpha = (2 * Math.PI) / points;\n var a = r2 * Math.sin(alpha);\n var b = Math.sqrt(r2 * r2 - a * a);\n var d = r1 - b;\n var e = Math.sqrt(a * a + d * d);\n var miterRatio = e / a;\n if (lineJoin === 'miter' && miterRatio <= miterLimit) {\n return miterRatio * strokeWidth;\n }\n // Calculate the distnce from center to the stroke corner where\n // it was cut short because of the miter limit.\n // l\n // ----+---- <= distance from center to here is maxr\n // /####|k ##\\\n // /#####^#####\\\n // /#### /+\\# s #\\\n // /### h/+++\\# t #\\\n // /### t/+++++\\# r #\\\n // /### a/+++++++\\# o #\\\n // /### p/++ fill +\\# k #\\\n ///#### /+++++^+++++\\# e #\\\n //#####/+++++/+\\+++++\\#####\\\n var k = strokeWidth / 2 / miterRatio;\n var l = (strokeWidth / 2) * (d / e);\n var maxr = Math.sqrt((r1 + k) * (r1 + k) + l * l);\n var bevelAdd = maxr - r1;\n if (this.radius2_ === undefined || lineJoin === 'bevel') {\n return bevelAdd * 2;\n }\n // If outer miter is over the miter limit the inner miter may reach through the\n // center and be longer than the bevel, same calculation as above but swap r1 / r2.\n var aa = r1 * Math.sin(alpha);\n var bb = Math.sqrt(r1 * r1 - aa * aa);\n var dd = r2 - bb;\n var ee = Math.sqrt(aa * aa + dd * dd);\n var innerMiterRatio = ee / aa;\n if (innerMiterRatio <= miterLimit) {\n var innerLength = (innerMiterRatio * strokeWidth) / 2 - r2 - r1;\n return 2 * Math.max(bevelAdd, innerLength);\n }\n return bevelAdd * 2;\n };\n /**\n * @return {RenderOptions} The render options\n * @protected\n */\n RegularShape.prototype.createRenderOptions = function () {\n var lineJoin = defaultLineJoin;\n var miterLimit = 0;\n var lineDash = null;\n var lineDashOffset = 0;\n var strokeStyle;\n var strokeWidth = 0;\n if (this.stroke_) {\n strokeStyle = this.stroke_.getColor();\n if (strokeStyle === null) {\n strokeStyle = defaultStrokeStyle;\n }\n strokeStyle = asColorLike(strokeStyle);\n strokeWidth = this.stroke_.getWidth();\n if (strokeWidth === undefined) {\n strokeWidth = defaultLineWidth;\n }\n lineDash = this.stroke_.getLineDash();\n lineDashOffset = this.stroke_.getLineDashOffset();\n lineJoin = this.stroke_.getLineJoin();\n if (lineJoin === undefined) {\n lineJoin = defaultLineJoin;\n }\n miterLimit = this.stroke_.getMiterLimit();\n if (miterLimit === undefined) {\n miterLimit = defaultMiterLimit;\n }\n }\n var add = this.calculateLineJoinSize_(lineJoin, strokeWidth, miterLimit);\n var maxRadius = Math.max(this.radius_, this.radius2_ || 0);\n var size = Math.ceil(2 * maxRadius + add);\n return {\n strokeStyle: strokeStyle,\n strokeWidth: strokeWidth,\n size: size,\n lineDash: lineDash,\n lineDashOffset: lineDashOffset,\n lineJoin: lineJoin,\n miterLimit: miterLimit,\n };\n };\n /**\n * @protected\n */\n RegularShape.prototype.render = function () {\n this.renderOptions_ = this.createRenderOptions();\n var size = this.renderOptions_.size;\n this.canvas_ = {};\n this.size_ = [size, size];\n };\n /**\n * @private\n * @param {RenderOptions} renderOptions Render options.\n * @param {CanvasRenderingContext2D} context The rendering context.\n * @param {number} pixelRatio The pixel ratio.\n */\n RegularShape.prototype.draw_ = function (renderOptions, context, pixelRatio) {\n context.scale(pixelRatio, pixelRatio);\n // set origin to canvas center\n context.translate(renderOptions.size / 2, renderOptions.size / 2);\n this.createPath_(context);\n if (this.fill_) {\n var color = this.fill_.getColor();\n if (color === null) {\n color = defaultFillStyle;\n }\n context.fillStyle = asColorLike(color);\n context.fill();\n }\n if (this.stroke_) {\n context.strokeStyle = renderOptions.strokeStyle;\n context.lineWidth = renderOptions.strokeWidth;\n if (context.setLineDash && renderOptions.lineDash) {\n context.setLineDash(renderOptions.lineDash);\n context.lineDashOffset = renderOptions.lineDashOffset;\n }\n context.lineJoin = renderOptions.lineJoin;\n context.miterLimit = renderOptions.miterLimit;\n context.stroke();\n }\n };\n /**\n * @private\n * @param {RenderOptions} renderOptions Render options.\n */\n RegularShape.prototype.createHitDetectionCanvas_ = function (renderOptions) {\n if (this.fill_) {\n var color = this.fill_.getColor();\n // determine if fill is transparent (or pattern or gradient)\n var opacity = 0;\n if (typeof color === 'string') {\n color = asArray(color);\n }\n if (color === null) {\n opacity = 1;\n }\n else if (Array.isArray(color)) {\n opacity = color.length === 4 ? color[3] : 1;\n }\n if (opacity === 0) {\n // if a transparent fill style is set, create an extra hit-detection image\n // with a default fill style\n var context = createCanvasContext2D(renderOptions.size, renderOptions.size);\n this.hitDetectionCanvas_ = context.canvas;\n this.drawHitDetectionCanvas_(renderOptions, context);\n }\n }\n if (!this.hitDetectionCanvas_) {\n this.hitDetectionCanvas_ = this.getImage(1);\n }\n };\n /**\n * @private\n * @param {CanvasRenderingContext2D} context The context to draw in.\n */\n RegularShape.prototype.createPath_ = function (context) {\n var points = this.points_;\n var radius = this.radius_;\n if (points === Infinity) {\n context.arc(0, 0, radius, 0, 2 * Math.PI);\n }\n else {\n var radius2 = this.radius2_ === undefined ? radius : this.radius2_;\n if (this.radius2_ !== undefined) {\n points *= 2;\n }\n var startAngle = this.angle_ - Math.PI / 2;\n var step = (2 * Math.PI) / points;\n for (var i = 0; i < points; i++) {\n var angle0 = startAngle + i * step;\n var radiusC = i % 2 === 0 ? radius : radius2;\n context.lineTo(radiusC * Math.cos(angle0), radiusC * Math.sin(angle0));\n }\n context.closePath();\n }\n };\n /**\n * @private\n * @param {RenderOptions} renderOptions Render options.\n * @param {CanvasRenderingContext2D} context The context.\n */\n RegularShape.prototype.drawHitDetectionCanvas_ = function (renderOptions, context) {\n // set origin to canvas center\n context.translate(renderOptions.size / 2, renderOptions.size / 2);\n this.createPath_(context);\n context.fillStyle = defaultFillStyle;\n context.fill();\n if (this.stroke_) {\n context.strokeStyle = renderOptions.strokeStyle;\n context.lineWidth = renderOptions.strokeWidth;\n if (renderOptions.lineDash) {\n context.setLineDash(renderOptions.lineDash);\n context.lineDashOffset = renderOptions.lineDashOffset;\n }\n context.lineJoin = renderOptions.lineJoin;\n context.miterLimit = renderOptions.miterLimit;\n context.stroke();\n }\n };\n return RegularShape;\n}(ImageStyle));\nexport default RegularShape;\n//# sourceMappingURL=RegularShape.js.map","/**\n * @module ol/style/Circle\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 RegularShape from './RegularShape.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"./Fill.js\").default} [fill] Fill style.\n * @property {number} radius Circle radius.\n * @property {import(\"./Stroke.js\").default} [stroke] Stroke style.\n * @property {Array} [displacement=[0,0]] displacement\n * @property {number|import(\"../size.js\").Size} [scale=1] Scale. A two dimensional scale will produce an ellipse.\n * Unless two dimensional scaling is required a better result may be obtained with an appropriate setting for `radius`.\n * @property {number} [rotation=0] Rotation in radians\n * (positive rotation clockwise, meaningful only when used in conjunction with a two dimensional scale).\n * @property {boolean} [rotateWithView=false] Whether to rotate the shape with the view\n * (meaningful only when used in conjunction with a two dimensional scale).\n * @property {\"declutter\"|\"obstacle\"|\"none\"|undefined} [declutterMode] Declutter mode\n */\n/**\n * @classdesc\n * Set circle style for vector features.\n * @api\n */\nvar CircleStyle = /** @class */ (function (_super) {\n __extends(CircleStyle, _super);\n /**\n * @param {Options} [opt_options] Options.\n */\n function CircleStyle(opt_options) {\n var options = opt_options ? opt_options : {};\n return _super.call(this, {\n points: Infinity,\n fill: options.fill,\n radius: options.radius,\n stroke: options.stroke,\n scale: options.scale !== undefined ? options.scale : 1,\n rotation: options.rotation !== undefined ? options.rotation : 0,\n rotateWithView: options.rotateWithView !== undefined ? options.rotateWithView : false,\n displacement: options.displacement !== undefined ? options.displacement : [0, 0],\n declutterMode: options.declutterMode,\n }) || this;\n }\n /**\n * Clones the style.\n * @return {CircleStyle} The cloned style.\n * @api\n */\n CircleStyle.prototype.clone = function () {\n var scale = this.getScale();\n var style = new CircleStyle({\n fill: this.getFill() ? this.getFill().clone() : undefined,\n stroke: this.getStroke() ? this.getStroke().clone() : undefined,\n radius: this.getRadius(),\n scale: Array.isArray(scale) ? scale.slice() : scale,\n rotation: this.getRotation(),\n rotateWithView: this.getRotateWithView(),\n displacement: this.getDisplacement().slice(),\n declutterMode: this.getDeclutterMode(),\n });\n style.setOpacity(this.getOpacity());\n return style;\n };\n /**\n * Set the circle radius.\n *\n * @param {number} radius Circle radius.\n * @api\n */\n CircleStyle.prototype.setRadius = function (radius) {\n this.radius_ = radius;\n this.render();\n };\n return CircleStyle;\n}(RegularShape));\nexport default CircleStyle;\n//# sourceMappingURL=Circle.js.map","/**\n * @module ol/style/Style\n */\nimport CircleStyle from './Circle.js';\nimport Fill from './Fill.js';\nimport Stroke from './Stroke.js';\nimport { assert } from '../asserts.js';\n/**\n * A function that takes an {@link module:ol/Feature~Feature} and a `{number}`\n * representing the view's resolution. The function should return a\n * {@link module:ol/style/Style~Style} or an array of them. This way e.g. a\n * vector layer can be styled. If the function returns `undefined`, the\n * feature will not be rendered.\n *\n * @typedef {function(import(\"../Feature.js\").FeatureLike, number):(Style|Array