{“version”:3,“sources”:,“names”:[“root”,“factory”,“exports”,“module”,“define”,“amd”,“window”,“installedModules”,“webpack_require”,“moduleId”,“i”,“l”,“modules”,“call”,“m”,“c”,“d”,“name”,“getter”,“o”,“Object”,“defineProperty”,“enumerable”,“get”,“r”,“Symbol”,“toStringTag”,“value”,“t”,“mode”,“__esModule”,“ns”,“create”,“key”,“bind”,“n”,“object”,“property”,“prototype”,“hasOwnProperty”,“p”,“s”,“e”,“a”,“h”,“Math”,“log”,“f”,“exp”,“u”,“sqrt”,“max”,“floor”,“min”,“x”,“length”,“this”,“_maxEntries”,“_minEntries”,“ceil”,“clear”,“indexOf”,“children”,“minX”,“minY”,“maxX”,“maxY”,“leaf”,“height”,“pop”,“push”,“all”,“_all”,“data”,“search”,“toBBox”,“collides”,“load”,“insert”,“_build”,“slice”,“_splitRoot”,“_insert”,“remove”,“splice”,“_condense”,“compareMinX”,“compareMinY”,“toJSON”,“fromJSON”,“apply”,“pow”,“_chooseSubtree”,“_split”,“_adjustParentBBoxes”,“_chooseSplitAxis”,“_chooseSplitIndex”,“v”,“M”,“_allDistMargin”,“sort”,“MOUSE_PROPS”,“MOUSE_DEFAULTS”,“PointerEvent”,“inType”,“inDict”,“document”,“createEvent”,“initEvent”,“bubbles”,“cancelable”,“buttons”,“pressure”,“undefined”,“clientX”,“y”,“clientY”,“pointerId”,“width”,“tiltX”,“tiltY”,“twist”,“tangentialPressure”,“pointerType”,“hwTimestamp”,“isPrimary”,“detail”,“PointerMap”,“Map”,“forEach”,“SparseArrayMap”,“array”,“size”,“set”,“k”,“delete”,“has”,“callback”,“thisArg”,“CLONE_PROPS”,“CLONE_DEFAULTS”,“BOUNDARY_EVENTS”,“HAS_SVG_INSTANCE”,“SVGElementInstance”,“dispatcher”,“pointermap”,“eventMap”,“captureInfo”,“eventSources”,“eventSourceList”,“registerSource”,“source”,“newEvents”,“events”,“register”,“element”,“es”,“unregister”,“contains”,“container”,“contained”,“ex”,“down”,“inEvent”,“fireEvent”,“move”,“up”,“enter”,“leave”,“over”,“out”,“cancel”,“leaveOut”,“event”,“propagate”,“enterOver”,“eventHandler”,“_handledByPE”,“type”,“fn”,“listen”,“target”,“addEvent”,“unlisten”,“removeEvent”,“eventName”,“addEventListener”,“boundHandler”,“removeEventListener”,“makeEvent”,“relatedTarget”,“preventDefault”,“_target”,“dispatchEvent”,“cloneEvent”,“eventCopy”,“correspondingUseElement”,“getTarget”,“capture”,“propagateDown”,“targets”,“parentNode”,“reverse”,“setCapture”,“inPointerId”,“inTarget”,“skipDispatch”,“releaseCapture”,“implicitRelease”,“asyncDispatchEvent”,“requestAnimationFrame”,“targeting”,“shadow”,“inEl”,“shadowRoot”,“webkitShadowRoot”,“canTarget”,“Boolean”,“elementFromPoint”,“targetingShadow”,“olderShadow”,“os”,“olderShadowRoot”,“se”,“querySelector”,“allShadows”,“shadows”,“searchRoot”,“inRoot”,“st”,“sr”,“ssr”,“owner”,“nodeType”,“Node”,“DOCUMENT_NODE”,“DOCUMENT_FRAGMENT_NODE”,“findTarget”,“Array”,“map”,“toArray”,“filter”,“MO”,“MutationObserver”,“WebKitMutationObserver”,“OBSERVER_INIT”,“subtree”,“childList”,“attributes”,“attributeOldValue”,“attributeFilter”,“Installer”,“add”,“changed”,“binder”,“addCallback”,“removeCallback”,“changedCallback”,“observer”,“mutationWatcher”,“rule”,“watchSubtree”,“observe”,“enableOnSubtree”,“readyState”,“installOnLoad”,“installNewSubtree”,“findElements”,“addElement”,“querySelectorAll”,“removeElement”,“el”,“elementChanged”,“oldValue”,“concatLists”,“accum”,“list”,“concat”,“isElement”,“ELEMENT_NODE”,“flattenMutationTree”,“inNodes”,“tree”,“reduce”,“mutations”,“mutationHandler”,“addedNodes”,“removedNodes”,“attrib2css”,“selector”,“styles”,“hasNativePE”,“MSPointerEvent”,“hasShadowRoot”,“ShadowDOMPolyfill”,“head”,“createShadowRoot”,“BUTTON_TO_BUTTONS”,“HAS_BUTTONS”,“MouseEvent”,“INSTALLER”,“mouseEvents”,“POINTER_ID”,“POINTER_TYPE”,“lastTouches”,“isEventSimulatedFromTouch”,“lts”,“dx”,“abs”,“dy”,“prepareEvent”,“pd”,“webkitForce”,“WEBKIT_FORCE_AT_MOUSE_DOWN”,“prepareButtonsForMove”,“which”,“mousedown”,“button”,“webkitmouseforcechanged”,“mousemove”,“mouseup”,“mouseover”,“mouseout”,“deactivateMouse”,“pointermap$1”,“touchEvents”,“elementAdded”,“getAttribute”,“touchActionToScrollType”,“_scrollType”,“elementRemoved”,“evts”,“oldSt”,“scrollTypes”,“UP”,“includes”,“DOWN”,“LEFT”,“RIGHT”,“touchAction”,“split”,“firstTouch”,“isPrimaryTouch”,“inTouch”,“identifier”,“setPrimaryTouch”,“firstXY”,“X”,“Y”,“scrolling”,“removePrimaryPointer”,“inPointer”,“typeToButtons”,“ret”,“touchToPointer”,“cte”,“currentTouchEvent”,“id”,“radiusX”,“webkitRadiusX”,“radiusY”,“webkitRadiusY”,“force”,“altitudeAngle”,“tan”,“radToDeg”,“PI”,“atan”,“cos”,“azimuthAngle”,“sin”,“touchType”,“altKey”,“ctrlKey”,“metaKey”,“shiftKey”,“self”,“processTouches”,“inFunction”,“tl”,“changedTouches”,“shouldScroll”,“currentTarget”,“dya”,“dxa”,“left”,“right”,“findTouch”,“inTL”,“inId”,“vacuumTouches”,“touches”,“cancelOut”,“touchstart”,“dedupSynthMouse”,“overDown”,“outTarget”,“touchforcechange”,“touchmove”,“touchcancel”,“moveOverOut”,“pointer”,“outEvent”,“touchend”,“upOut”,“cleanUpPointer”,“lt”,“setTimeout”,“pointermap$2”,“HAS_BITMAP_TYPE”,“MSPOINTER_TYPE_MOUSE”,“msEvents”,“POINTER_TYPES”,“cleanup”,“MSPointerDown”,“MSPointerMove”,“MSPointerUp”,“MSPointerOut”,“MSPointerOver”,“MSPointerCancel”,“MSLostPointerCapture”,“MSGotPointerCapture”,“assertActive”,“error”,“Error”,“assertConnected”,“elem”,“parent”,“ownerDocument”,“inActiveButtonState”,“navigator”,“msPointerEnabled”,“msSetPointerCapture”,“msReleasePointerCapture”,“shadowSelector”,“createElement”,“textContent”,“appendChild”,“applyAttributeStyles”,“tp”,“msMaxTouchPoints”,“ontouchstart”,“applyPolyfill”,“Element”,“setPointerCapture”,“defineProperties”,“targetFinding”,“Pbf”,“ieee754”,“buf”,“ArrayBuffer”,“isView”,“Uint8Array”,“pos”,“Varint”,“Fixed64”,“Bytes”,“Fixed32”,“utf8TextDecoder”,“TextDecoder”,“readPackedEnd”,“pbf”,“readVarint”,“toNum”,“low”,“high”,“isSigned”,“makeRoomForExtraLength”,“startPos”,“len”,“extraLen”,“LN2”,“realloc”,“writePackedVarint”,“arr”,“writeVarint”,“writePackedSVarint”,“writeSVarint”,“writePackedFloat”,“writeFloat”,“writePackedDouble”,“writeDouble”,“writePackedBoolean”,“writeBoolean”,“writePackedFixed32”,“writeFixed32”,“writePackedSFixed32”,“writeSFixed32”,“writePackedFixed64”,“writeFixed64”,“writePackedSFixed64”,“writeSFixed64”,“readUInt32”,“writeInt32”,“val”,“readInt32”,“destroy”,“readFields”,“readField”,“result”,“end”,“tag”,“skip”,“readMessage”,“readFixed32”,“readSFixed32”,“readFixed64”,“readSFixed64”,“readFloat”,“read”,“readDouble”,“b”,“readVarintRemainder”,“readVarint64”,“readSVarint”,“num”,“readBoolean”,“readString”,“decode”,“subarray”,“readUtf8TextDecoder”,“str”,“b1”,“b2”,“b3”,“b0”,“bytesPerSequence”,“String”,“fromCharCode”,“readUtf8”,“readBytes”,“buffer”,“readPackedVarint”,“readPackedSVarint”,“readPackedBoolean”,“readPackedFloat”,“readPackedDouble”,“readPackedFixed32”,“readPackedSFixed32”,“readPackedFixed64”,“readPackedSFixed64”,“writeTag”,“finish”,“writeBigVarintLow”,“lsb”,“writeBigVarintHigh”,“writeBigVarint”,“writeString”,“lead”,“charCodeAt”,“writeUtf8”,“write”,“writeBytes”,“writeRawMessage”,“obj”,“writeMessage”,“writeBytesField”,“writeFixed32Field”,“writeSFixed32Field”,“writeFixed64Field”,“writeSFixed64Field”,“writeVarintField”,“writeSVarintField”,“writeStringField”,“writeFloatField”,“writeDoubleField”,“writeBooleanField”,“Processor”,“offset”,“isLE”,“mLen”,“nBytes”,“eLen”,“eMax”,“eBias”,“nBits”,“NaN”,“Infinity”,“rt”,“isNaN”,“newImageData”,“createMinion”,“operation”,“workerHasImageData”,“ImageData”,“_”,“newWorkerImageData”,“output”,“buffers”,“meta”,“imageOps”,“numBuffers”,“numBytes”,“byteLength”,“images”,“Uint8ClampedArray”,“arrays”,“pixels”,“j”,“pixel”,“createWorker”,“config”,“onMessage”,“lines”,“keys”,“lib”,“toString”,“blob”,“Blob”,“URL”,“createObjectURL”,“worker”,“Worker”,“threads”,“_imageOps”,“workers”,“_onWorkerMessage”,“minion”,“postMessage”,“createFauxWorker”,“_workers”,“_queue”,“_maxQueueLength”,“queue”,“_running”,“_dataLookup”,“_job”,“process”,“inputs”,“_enqueue”,“_dispatch”,“_destroyed”,“job”,“shift”,“input”,“segmentLength”,“slices”,“jj”,“index”,“_resolveJob”,“hasImageData”,“context”,“getContext”,“imageData”,“createImageData”,“uidCounter_”,“getUid”,“ol_uid”,“extendStatics”,“VERSION”,“__extends”,“setPrototypeOf”,“__proto__”,“__”,“constructor”,“_super”,“AssertionError”,“code”,“_this”,“message”,“ADD”,“REMOVE”,“assign”,“var_sources”,“TypeError”,“ii”,“arguments”,“getValues”,“values”,“isEmpty”,“listener”,“opt_this”,“opt_once”,“originalListener_1”,“eventsKey”,“listenOnce”,“unlistenByKey”,“Disposable”,“disposed_”,“dispose”,“disposeInternal”,“numberSafeCompareFunction”,“linearFindNearest”,“direction”,“reverseSubArray”,“begin”,“tmp”,“extend”,“extension”,“isArray”,“find”,“func”,“equals”,“arr1”,“arr2”,“len1”,“findIndex”,“every”,“idx”,“TRUE”,“FALSE”,“VOID”,“stopPropagation”,“evt”,“BaseEvent”,“propagationStopped”,“Target”,“opt_target”,“eventTarget_”,“pendingRemovals_”,“dispatching_”,“listeners_”,“listeners”,“Event”,“pendingRemovals”,“getListeners”,“hasListener”,“opt_type”,“CHANGE”,“ERROR”,“BLUR”,“CLEAR”,“CONTEXTMENU”,“CLICK”,“DBLCLICK”,“DRAGENTER”,“DRAGOVER”,“DROP”,“FOCUS”,“KEYDOWN”,“KEYPRESS”,“LOAD”,“RESIZE”,“WHEEL”,“Observable”,“revision_”,“EventType”,“getRevision”,“on”,“once”,“un”,“ObjectEvent”,“BaseObject”,“opt_values”,“values_”,“setProperties”,“getKeys”,“getProperties”,“notify”,“eventType”,“getChangeEventType”,“ObjectEventType”,“opt_silent”,“unset”,“changeEventTypeCache”,“Property”,“CollectionEvent”,“opt_element”,“opt_index”,“Collection”,“opt_array”,“opt_options”,“options”,“unique_”,“unique”,“array_”,“assertUnique_”,“updateLength_”,“getLength”,“getArray”,“item”,“insertAt”,“CollectionEventType”,“removeAt”,“prev”,“setAt”,“opt_except”,“assert”,“assertion”,“errorCode”,“Feature”,“opt_geometryOrProperties”,“id_”,“geometryName_”,“style_”,“styleFunction_”,“geometryChangeKey_”,“handleGeometryChanged_”,“getSimplifiedGeometry”,“geometry”,“setGeometry”,“properties”,“clone”,“setGeometryName”,“getGeometryName”,“getGeometry”,“style”,“getStyle”,“setStyle”,“getId”,“getStyleFunction”,“handleGeometryChange_”,“styles_1”,“getZIndex”,“createStyleFunction”,“setId”,“BOTTOM_LEFT”,“BOTTOM_RIGHT”,“TOP_LEFT”,“TOP_RIGHT”,“UNKNOWN”,“INTERSECTING”,“ABOVE”,“BELOW”,“boundingExtent”,“coordinates”,“extent”,“createEmpty”,“extendCoordinate”,“opt_extent”,“closestSquaredDistanceXY”,“containsCoordinate”,“coordinate”,“containsXY”,“containsExtent”,“extent1”,“extent2”,“coordinateRelationship”,“relationship”,“Relationship”,“createOrUpdate”,“createOrUpdateEmpty”,“createOrUpdateFromCoordinate”,“createOrUpdateFromFlatCoordinates”,“flatCoordinates”,“stride”,“extendFlatCoordinates”,“extendCoordinates”,“extendXY”,“forEachCorner”,“getBottomLeft”,“getBottomRight”,“getTopRight”,“getTopLeft”,“getArea”,“area”,“getWidth”,“getHeight”,“getCenter”,“getCorner”,“corner”,“Corner”,“getForViewAndSize”,“center”,“resolution”,“rotation”,“cosRotation”,“sinRotation”,“xCos”,“xSin”,“yCos”,“ySin”,“x0”,“x1”,“x2”,“x3”,“y0”,“y1”,“y2”,“y3”,“getIntersection”,“intersection”,“scaleFromCenter”,“deltaX”,“deltaY”,“applyTransform”,“transformFn”,“xs”,“ys”,“_boundingExtentXYs”,“XY”,“XYZ”,“XYM”,“XYZM”,“POINT”,“LINE_STRING”,“LINEAR_RING”,“POLYGON”,“MULTI_POINT”,“MULTI_LINE_STRING”,“MULTI_POLYGON”,“GEOMETRY_COLLECTION”,“CIRCLE”,“transform2D”,“transform”,“opt_dest”,“dest”,“rotate”,“angle”,“anchor”,“anchorX”,“anchorY”,“clamp”,“cosh”,“squaredSegmentDistance”,“toDegrees”,“angleInRadians”,“toRadians”,“angleInDegrees”,“modulo”,“lerp”,“DEFAULT_RADIUS”,“getDistance”,“c1”,“c2”,“opt_radius”,“radius”,“lat1”,“lat2”,“deltaLatBy2”,“deltaLonBy2”,“atan2”,“getLengthInternal”,“getAreaInternal”,“distance”,“bearing”,“lon1”,“dByR”,“lat”,“asin”,“Units”,“DEGREES”,“FEET”,“METERS”,“PIXELS”,“TILE_PIXELS”,“USFEET”,“METERS_PER_UNIT”,“Projection”,“code_”,“units_”,“extent_”,“worldExtent_”,“worldExtent”,“axisOrientation_”,“axisOrientation”,“global_”,“global”,“canWrapX_”,“getPointResolutionFunc_”,“getPointResolution”,“defaultTileGrid_”,“metersPerUnit_”,“metersPerUnit”,“canWrapX”,“getCode”,“getExtent”,“getUnits”,“getMetersPerUnit”,“getWorldExtent”,“getAxisOrientation”,“isGlobal”,“setGlobal”,“getDefaultTileGrid”,“setDefaultTileGrid”,“tileGrid”,“setExtent”,“setWorldExtent”,“setGetPointResolution”,“getPointResolutionFunc”,“RADIUS”,“HALF_SIZE”,“EXTENT”,“WORLD_EXTENT”,“EPSG3857Projection”,“units”,“point”,“PROJECTIONS”,“fromEPSG4326”,“opt_output”,“opt_dimension”,“dimension”,“halfSize”,“toEPSG4326”,“EPSG4326Projection”,“opt_axisOrientation”,“destination”,“sourceCode”,“destinationCode”,“cloneTransform”,“identityTransform”,“addProjection”,“projection”,“projectionLike”,“opt_units”,“pointResolution”,“toEPSG4326_1”,“getTransformFromProjections”,“vertices”,“addEquivalentProjections”,“projections”,“addProjections”,“createProjection”,“defaultCode”,“createTransformFromCoordinateTransform”,“coordTransform”,“addCoordinateTransforms”,“forward”,“inverse”,“sourceProj”,“destProj”,“equivalent”,“projection1”,“projection2”,“equalUnits”,“sourceProjection”,“destinationProjection”,“transformFunc”,“getTransform”,“transformExtent”,“projections2”,“forwardTransform”,“inverseTransform”,“getUserProjection”,“toUserCoordinate”,“fromUserCoordinate”,“destProjection”,“toUserExtent”,“fromUserExtent”,“tmp_”,“multiply”,“transform1”,“transform2”,“a1”,“d1”,“e1”,“f1”,“a2”,“d2”,“e2”,“f2”,“compose”,“dx1”,“dy1”,“sx”,“sy”,“dx2”,“dy2”,“makeInverse”,“mat”,“det”,“join”,“tmpTransform”,“Geometry”,“lastResult”,“lastArgs”,“lastThis”,“called”,“extentRevision_”,“simplifiedGeometryMaxMinSquaredTolerance”,“simplifiedGeometryRevision”,“simplifyTransformedInternal”,“revision”,“squaredTolerance”,“opt_transform”,“nextArgs”,“simplifyTransformed”,“closestPointXY”,“closestPoint”,“minSquaredDistance”,“coord”,“getClosestPoint”,“opt_closestPoint”,“intersectsCoordinate”,“computeExtent”,“returnOrUpdate”,“scale”,“opt_sy”,“opt_anchor”,“simplify”,“tolerance”,“getType”,“intersectsExtent”,“translate”,“inCoordinates”,“outCoordinates”,“pixelExtent”,“projectedExtent”,“getStrideForLayout”,“layout”,“GeometryLayout”,“SimpleGeometry”,“getCoordinates”,“getFirstCoordinate”,“getFlatCoordinates”,“getLastCoordinate”,“getLayout”,“simplifiedGeometry”,“getSimplifiedGeometryInternal”,“getStride”,“setFlatCoordinates”,“setCoordinates”,“opt_layout”,“setLayout”,“nesting”,“getLayoutForStride”,“twiceArea”,“ends”,“assignClosest”,“offset1”,“offset2”,“maxSquaredDelta”,“squaredDelta”,“arrayMaxSquaredDelta”,“assignClosestPoint”,“maxDelta”,“isRing”,“opt_tmpPoint”,“squaredDistance”,“tmpPoint”,“assignClosestArrayPoint”,“deflateCoordinate”,“deflateCoordinates”,“deflateCoordinatesArray”,“coordinatess”,“opt_ends”,“inflateCoordinates”,“opt_coordinates”,“inflateCoordinatesArray”,“opt_coordinatess”,“inflateMultiCoordinatesArray”,“endss”,“opt_coordinatesss”,“coordinatesss”,“douglasPeucker”,“simplifiedFlatCoordinates”,“simplifiedOffset”,“markers”,“stack”,“last”,“first”,“maxSquaredDistance”,“squaredDistance_1”,“douglasPeuckerArray”,“simplifiedEnds”,“snap”,“round”,“quantize”,“quantizeArray”,“LinearRing”,“maxDelta_”,“maxDeltaRevision_”,“GeometryType”,“Point”,“linearRingContainsExtent”,“linearRingContainsXY”,“wn”,“linearRingsContainsXY”,“getInteriorPointOfArray”,“flatCenters”,“flatCentersOffset”,“intersections”,“rr”,“pointX”,“maxSegmentLength”,“getInteriorPointsOfMultiArray”,“interiorPoints”,“point1”,“point2”,“intersectsLineString”,“coordinatesExtent”,“start”,“intersects”,“startRel”,“endRel”,“startX”,“startY”,“endX”,“endY”,“slope”,“intersectsSegment”,“intersectsLinearRingArray”,“intersectsLinearRing”,“linearRingIsClockwise”,“edge”,“linearRingsAreOriented”,“opt_right”,“isClockwise”,“orientLinearRings”,“orientLinearRingsArray”,“Polygon”,“ends_”,“flatInteriorPointRevision_”,“flatInteriorPoint_”,“orientedRevision_”,“orientedFlatCoordinates_”,“appendLinearRing”,“linearRing”,“getOrientedFlatCoordinates”,“getEnds”,“getFlatInteriorPoint”,“flatCenter”,“getInteriorPoint”,“getLinearRingCount”,“getLinearRing”,“getLinearRings”,“linearRings”,“circular”,“opt_n”,“opt_sphereRadius”,“fromExtent”,“fromCircle”,“circle”,“opt_sides”,“opt_angle”,“sides”,“arrayLength”,“polygon”,“makeRegular”,“getRadius”,“startAngle”,“ACCURACY”,“ACCURACY_GEOMETRY”,“ALTITUDE”,“ALTITUDE_ACCURACY”,“HEADING”,“POSITION”,“PROJECTION”,“SPEED”,“TRACKING”,“TRACKING_OPTIONS”,“GeolocationError”,“Geolocation”,“position_”,“transform_”,“watchId_”,“handleProjectionChanged_”,“handleTrackingChanged_”,“setProjection”,“trackingOptions”,“setTrackingOptions”,“setTracking”,“tracking”,“getProjection”,“getTracking”,“geolocation”,“watchPosition”,“positionChange_”,“positionError_”,“getTrackingOptions”,“clearWatch”,“position”,“coords”,“accuracy”,“altitude”,“altitudeAccuracy”,“heading”,“longitude”,“latitude”,“projectedPosition”,“speed”,“getAccuracy”,“getAccuracyGeometry”,“getAltitude”,“getAltitudeAccuracy”,“getHeading”,“getPosition”,“getSpeed”,“Kinetic”,“decay”,“minVelocity”,“delay”,“decay_”,“minVelocity_”,“delay_”,“points_”,“angle_”,“initialVelocity_”,“update”,“Date”,“now”,“lastIndex”,“firstIndex”,“duration”,“getAngle”,“MapEvent”,“opt_frameState”,“frameState”,“MapBrowserEvent”,“browserEvent”,“opt_dragging”,“originalEvent”,“pixel_”,“coordinate_”,“dragging”,“getEventPixel”,“configurable”,“getCoordinateFromPixel”,“ua”,“userAgent”,“toLowerCase”,“FIREFOX”,“WEBKIT”,“MAC”,“DEVICE_PIXEL_RATIO”,“devicePixelRatio”,“IMAGE_DECODE”,“Image”,“SINGLECLICK”,“POINTERDRAG”,“POINTERMOVE”,“POINTERDOWN”,“POINTERUP”,“POINTEROVER”,“POINTEROUT”,“POINTERENTER”,“POINTERLEAVE”,“POINTERCANCEL”,“MapBrowserPointerEvent”,“pointerEvent”,“MapBrowserEventHandler”,“moveTolerance”,“map_”,“clickTimeoutId_”,“dragging_”,“dragListenerKeys_”,“moveTolerance_”,“down_”,“getViewport”,“activePointers_”,“trackedTouches_”,“element_”,“pointerdownListenerKey_”,“handlePointerDown_”,“relayedListenerKey_”,“relayEvent_”,“emulateClick_”,“newEvent”,“MapBrowserEventType”,“clearTimeout”,“updateActivePointers_”,“handlePointerUp_”,“isMouseActionButton_”,“handlePointerMove_”,“isMoving_”,“LAYERGROUP”,“SIZE”,“TARGET”,“VIEW”,“IDLE”,“LOADING”,“LOADED”,“EMPTY”,“ABORT”,“PriorityQueue”,“priorityFunction”,“keyFunction”,“priorityFunction_”,“keyFunction_”,“elements_”,“priorities_”,“queuedElements_”,“dequeue”,“elements”,“priorities”,“siftUp_”,“elementKey”,“enqueue”,“priority”,“siftDown_”,“getCount”,“getLeftChildIndex_”,“getRightChildIndex_”,“getParentIndex_”,“heapify_”,“isKeyQueued”,“isQueued”,“count”,“startIndex”,“lIndex”,“rIndex”,“smallerChildIndex”,“parentIndex”,“reprioritize”,“TileQueue”,“tilePriorityFunction”,“tileChangeCallback”,“getKey”,“boundHandleTileChange_”,“handleTileChange”,“tileChangeCallback_”,“tilesLoading_”,“tilesLoadingKeys_”,“added”,“getTilesLoading”,“tile”,“state”,“getState”,“hifi”,“TileState”,“tileKey”,“loadMoreTiles”,“maxTotalLoading”,“maxNewLoads”,“newLoads”,“abortedTiles”,“DEFAULT_MAX_ZOOM”,“DEFAULT_TILE_SIZE”,“createExtent”,“onlyCenter”,“smooth”,“opt_isMoving”,“viewWidth”,“viewHeight”,“ratio”,“none”,“getViewportClampedResolution”,“maxExtent”,“viewportSize”,“xResolution”,“yResolution”,“getSmoothClampedResolution”,“maxResolution”,“minResolution”,“createMinMaxResolution”,“opt_smooth”,“opt_maxExtent”,“cappedMaxRes”,“disable”,“padNumber”,“number”,“opt_precision”,“numberString”,“toFixed”,“decimal”,“compareVersions”,“v1”,“v2”,“s1”,“s2”,“n1”,“parseInt”,“n2”,“delta”,“closestOnSegment”,“segment”,“along”,“degreesToStringHDMS”,“hemispheres”,“degrees”,“opt_fractionDigits”,“normalizedDegrees”,“dflPrecision”,“precision”,“deg”,“sec”,“charAt”,“template”,“replace”,“coordinate1”,“coordinate2”,“cosAngle”,“sinAngle”,“coord1”,“coord2”,“squaredDistanceToSegment”,“toStringXY”,“easeIn”,“easeOut”,“inAndOut”,“linear”,“DEFAULT_MIN_ZOOM”,“animationCallback”,“returnValue”,“isNoopAnimation”,“animation”,“sourceCenter”,“targetCenter”,“sourceResolution”,“targetResolution”,“sourceRotation”,“targetRotation”,“View”,“hints_”,“animations_”,“updateAnimationKey_”,“projection_”,“targetCenter_”,“targetResolution_”,“targetRotation_”,“applyOptions_”,“resolutionConstraintInfo”,“resolutionConstraint”,“minZoom”,“maxZoom”,“zoomFactor”,“multiWorld”,“smoothResolutionConstraint”,“projExtent”,“constrainOnlyCenter”,“resolutions”,“constrainResolution”,“capped”,“z”,“createSnapToResolutions”,“defaultMaxResolution”,“defaultMinResolution”,“power”,“opt_minResolution”,“minZoomLevel”,“cappedZoomLevel”,“zoomLevel”,“createSnapToPower”,“constraint”,“createResolutionConstraint”,“maxResolution_”,“minResolution_”,“zoomFactor_”,“resolutions_”,“minZoom_”,“centerConstraint”,“smoothExtentConstraint”,“createCenterConstraint”,“rotationConstraint”,“enableRotation”,“constrainRotation”,“opt_tolerance”,“theta”,“createRotationConstraint”,“constraints_”,“setRotation”,“setCenterInternal”,“setResolution”,“zoom”,“setZoom”,“resolveConstraints”,“options_”,“getUpdatedOptions_”,“newOptions”,“getResolution”,“getZoom”,“getCenterInternal”,“getRotation”,“animate”,“var_args”,“isDef”,“getAnimating”,“args”,“animateInternal”,“animationCount”,“series”,“complete”,“easing”,“getResolutionForZoom”,“setHint”,“ViewHint”,“updateAnimations_”,“getInteracting”,“cancelAnimations”,“cancelAnimationFrame”,“more”,“seriesComplete”,“elapsed”,“fraction”,“progress”,“getSizeFromViewport_”,“constrainedResolution”,“calculateCenterZoom”,“applyTargetState_”,“constrainedRotation”,“calculateCenterRotate”,“currentCenter”,“currentResolution”,“opt_rotation”,“metrics”,“getComputedStyle”,“w”,“ViewProperty”,“getConstraints”,“getHints”,“opt_hints”,“calculateExtent”,“opt_size”,“calculateExtentInternal”,“getMaxResolution”,“getMinResolution”,“getMaxZoom”,“getZoomForResolution”,“setMaxZoom”,“getMinZoom”,“setMinZoom”,“setConstrainResolution”,“enabled”,“getResolutions”,“getResolutionForExtent”,“getResolutionForExtentInternal”,“getResolutionForValueFunction”,“opt_power”,“getValueForResolutionFunction”,“nearest”,“baseLevel”,“fit”,“geometryOrExtent”,“userProjection”,“fitInternal”,“padding”,“minRotX”,“minRotY”,“maxRotX”,“maxRotY”,“rotX”,“rotY”,“getConstrainedResolution”,“centerRotX”,“centerRotY”,“getConstrainedCenter”,“centerOn”,“centerOnInternal”,“centerX”,“centerY”,“adjustCenter”,“deltaCoordinates”,“setCenter”,“adjustCenterInternal”,“adjustResolution”,“adjustResolutionInternal”,“isMoving”,“newResolution”,“adjustZoom”,“adjustRotation”,“adjustRotationInternal”,“newRotation”,“hint”,“opt_doNotCancelAnims”,“opt_forceMoving”,“newCenter”,“opt_duration”,“opt_resolutionDirection”,“beginInteraction”,“endInteraction”,“endInteractionInternal”,“opt_targetResolution”,“getConstrainedZoom”,“targetZoom”,“opt_direction”,“targetRes”,“createCanvasContext2D”,“opt_width”,“opt_height”,“canvas”,“offsetWidth”,“marginLeft”,“marginRight”,“offsetHeight”,“marginTop”,“marginBottom”,“replaceNode”,“newNode”,“oldNode”,“replaceChild”,“removeNode”,“node”,“removeChild”,“removeChildren”,“lastChild”,“OPACITY”,“VISIBLE”,“Z_INDEX”,“MAX_RESOLUTION”,“MIN_RESOLUTION”,“MAX_ZOOM”,“MIN_ZOOM”,“SOURCE”,“Base”,“BaseLayer”,“opacity”,“visible”,“zIndex”,“className_”,“className”,“state_”,“getClassName”,“getLayerState”,“opt_managed”,“layer”,“managed”,“getOpacity”,“sourceState”,“getSourceState”,“getVisible”,“getLayersArray”,“getLayerStatesArray”,“opt_states”,“setMaxResolution”,“setMinResolution”,“setOpacity”,“setVisible”,“setZIndex”,“zindex”,“UNDEFINED”,“READY”,“LAYERS”,“LayerGroup”,“baseOptions”,“layers”,“layersListenerKeys_”,“listenerKeys_”,“handleLayersChanged_”,“setLayers”,“handleLayerChange_”,“getLayers”,“handleLayersAdd_”,“handleLayersRemove_”,“layersArray”,“collectionEvent”,“states”,“ownLayerState”,“layerState”,“toSize”,“setTouchAction”,“msTouchAction”,“setAttribute”,“cache”,“PluggableMap”,“optionsInternal”,“keyboardEventTarget”,“getElementById”,“controls”,“interactions”,“overlays”,“layerGroup”,“MapProperty”,“view”,“createOptionsInternal”,“boundHandleBrowserEvent_”,“handleBrowserEvent”,“maxTilesLoading_”,“maxTilesLoading”,“pixelRatio_”,“pixelRatio”,“postRenderTimeoutHandle_”,“animationDelayKey_”,“animationDelay_”,“renderFrame_”,“coordinateToPixelTransform_”,“pixelToCoordinateTransform_”,“frameIndex_”,“frameState_”,“previousExtent_”,“viewPropertyListenerKey_”,“viewChangeListenerKey_”,“layerGroupPropertyListenerKeys_”,“viewport_”,“overflow”,“overlayContainer_”,“overlayContainerStopEvent_”,“mapBrowserEventHandler_”,“handleMapBrowserEvent”,“keyboardEventTarget_”,“keyHandlerKeys_”,“focusHandlerKeys_”,“overlays_”,“overlayIdIndex_”,“renderer_”,“handleResize_”,“postRenderFunctions_”,“tileQueue_”,“getTilePriority”,“handleTileChange_”,“handleLayerGroupChanged_”,“handleViewChanged_”,“handleSizeChanged_”,“handleTargetChanged_”,“control”,“setMap”,“interaction”,“addOverlayInternal_”,“createRenderer”,“addControl”,“getControls”,“addInteraction”,“getInteractions”,“addLayer”,“getLayerGroup”,“addOverlay”,“overlay”,“getOverlays”,“setTarget”,“forEachFeatureAtPixel”,“getCoordinateFromPixelInternal”,“hitTolerance”,“layerFilter”,“checkWrapped”,“forEachFeatureAtCoordinate”,“getFeaturesAtPixel”,“features”,“feature”,“forEachLayerAtPixel”,“hasFeatureAtPixel”,“hasFeatureAtCoordinate”,“getEventCoordinate”,“getEventCoordinateInternal”,“viewportPosition”,“getBoundingClientRect”,“eventPosition”,“top”,“getTargetElement”,“getView”,“pixelToCoordinateTransform”,“getOverlayById”,“getLoading”,“layerStatesArray”,“getSource”,“loading”,“getPixelFromCoordinate”,“viewCoordinate”,“getPixelFromCoordinateInternal”,“coordinateToPixelTransform”,“getRenderer”,“getSize”,“getOverlayContainer”,“getOverlayContainerStopEvent”,“tileSourceKey”,“tileCenter”,“tileResolution”,“wantedTiles”,“viewState”,“mapBrowserEvent”,“HTMLElement”,“parentElement”,“interactionsArray”,“getActive”,“handleEvent”,“handlePostRender”,“tileQueue”,“hints”,“viewHints”,“lowOnFrameBudget”,“time”,“dispatchRenderEvent”,“postRenderFunctions”,“render”,“targetElement”,“hasFocus”,“hasAttribute”,“activeElement”,“updateSize”,“handleViewPropertyChanged_”,“isRendered”,“renderSync”,“redrawText”,“layerStates”,“hasRenderer”,“handleFontsChanged”,“removeControl”,“removeInteraction”,“removeLayer”,“removeOverlay”,“previousFrameState”,“hasArea”,“declutterItems”,“layerIndex”,“usedTiles”,“renderFrame”,“MapEventType”,“setLayerGroup”,“setSize”,“setView”,“computedStyle”,“parseFloat”,“Control”,“target_”,“listenerKeys”,“getMap”,“CLASS_HIDDEN”,“CLASS_SELECTABLE”,“CLASS_UNSELECTABLE”,“CLASS_UNSUPPORTED”,“CLASS_CONTROL”,“CLASS_COLLAPSED”,“getFontParameters”,“font”,“family”,“fontFamily”,“fontWeight”,“fontStyle”,“families”,“weight”,“inView”,“Layer”,“mapPrecomposeKey_”,“mapRenderKey_”,“sourceChangeKey_”,“handleSourcePropertyChange_”,“setSource”,“handleSourceChange_”,“getFeatures”,“layerRenderer”,“prepareFrame”,“mapEvent”,“updateElement_”,“Attribution”,“ulElement_”,“collapsed_”,“collapsed”,“overrideCollapsible_”,“collapsible”,“collapsible_”,“tipLabel”,“collapseLabel”,“collapseLabel_”,“label”,“label_”,“activeLabel”,“title”,“handleClick_”,“cssClasses”,“renderedAttributions_”,“renderedVisible_”,“collectSourceAttributions_”,“lookup”,“visibleAttributions”,“attributionGetter”,“getAttributions”,“attributions”,“getAttributionsCollapsible”,“setCollapsible”,“display”,“innerHTML”,“handleToggle_”,“classList”,“toggle”,“getCollapsible”,“setCollapsed”,“getCollapsed”,“rotation_”,“autoHide_”,“Rotate”,“callResetNorth_”,“resetNorth”,“duration_”,“autoHide”,“resetNorth_”,“Zoom”,“zoomInLabel”,“zoomOutLabel”,“zoomInTipLabel”,“zoomOutTipLabel”,“inElement”,“createTextNode”,“outElement”,“zoomByDelta_”,“currentZoom”,“newZoom”,“defaults”,“zoomOptions”,“rotateOptions”,“attribution”,“attributionOptions”,“ACTIVE”,“zoomByDelta”,“Interaction”,“setActive”,“active”,“stopEvent”,“delta_”,“DoubleClickZoom”,“altKeyOnly”,“altShiftKeysOnly”,“always”,“mouseActionButton”,“never”,“singleClick”,“noModifierKeys”,“shiftKeyOnly”,“targetNotEditable”,“tagName”,“mouseOnly”,“primaryAction”,“pointerEvents”,“Pointer”,“PointerInteraction”,“handleDownEvent”,“handleDragEvent”,“handleMoveEvent”,“handleUpEvent”,“stopDown”,“handlingDownUpSequence”,“trackedPointers_”,“targetPointers”,“updateTrackedPointers_”,“handledUp”,“handled”,“isPointerDraggingEvent”,“event_1”,“defaultCondition”,“DragPan”,“kinetic_”,“kinetic”,“lastCentroid”,“lastPointersCount_”,“panning_”,“condition_”,“condition”,“noKinetic_”,“centroid”,“centerpx”,“DragRotate”,“lastAngle_”,“RenderBox”,“geometry_”,“startPixel_”,“endPixel_”,“render_”,“startPixel”,“endPixel”,“setPixels”,“createOrUpdateGeometry”,“DragBoxEventType”,“DragBoxEvent”,“DragBox”,“box_”,“minArea_”,“minArea”,“onBoxEnd_”,“onBoxEnd”,“boxEndCondition_”,“boxEndCondition”,“defaultBoxEndCondition”,“out_”,“mapExtent”,“boxPixelExtent”,“DragZoom”,“keyCode”,“KeyCode”,“mapUnitsDelta”,“pixelDelta_”,“pan”,“KeyboardPan”,“defaultCondition_”,“pixelDelta”,“charCode”,“KeyboardZoom”,“Mode”,“MouseWheelZoom”,“totalDelta_”,“lastDelta_”,“timeout_”,“timeout”,“useAnchor_”,“useAnchor”,“lastAnchor_”,“startTime_”,“timeoutId_”,“mode_”,“trackpadEventGap_”,“trackpadTimeoutId_”,“trackpadDeltaPerZoom_”,“endInteraction_”,“sign”,“wheelEvent”,“deltaMode”,“WheelEvent”,“DOM_DELTA_PIXEL”,“DOM_DELTA_LINE”,“timeLeft”,“handleWheelZoom_”,“setMouseAnchor”,“PinchRotate”,“pointerOptions”,“anchor_”,“rotating_”,“rotationDelta_”,“threshold_”,“threshold”,“rotationDelta”,“touch0”,“touch1”,“PinchZoom”,“lastDistance_”,“lastScaleDelta_”,“scaleDelta”,“altShiftDragRotate”,“doubleClickZoom”,“zoomDelta”,“zoomDuration”,“dragPan”,“onFocusOnly”,“pinchRotate”,“pinchZoom”,“keyboard”,“mouseWheelZoom”,“shiftDragZoom”,“RenderEvent”,“opt_inversePixelTransform”,“opt_context”,“inversePixelTransform”,“HEX_COLOR_RE_”,“NAMED_COLOR_RE_”,“asString”,“color”,“fromNamed”,“body”,“rgb”,“fromString”,“cacheSize”,“g”,“exec”,“hasAlpha”,“substr”,“normalize”,“Number”,“fromStringInternal_”,“asArray”,“IconImageCache”,“cache_”,“cacheSize_”,“maxCacheSize_”,“canExpireCache”,“expire”,“iconImage”,“src”,“crossOrigin”,“maxCacheSize”,“shared”,“asColorLike”,“measureFont”,“VectorContext”,“drawCustom”,“renderer”,“drawGeometry”,“drawCircle”,“circleGeometry”,“drawFeature”,“drawGeometryCollection”,“geometryCollectionGeometry”,“drawLineString”,“lineStringGeometry”,“drawMultiLineString”,“multiLineStringGeometry”,“drawMultiPoint”,“multiPointGeometry”,“drawMultiPolygon”,“multiPolygonGeometry”,“drawPoint”,“pointGeometry”,“drawPolygon”,“polygonGeometry”,“drawText”,“setFillStrokeStyle”,“fillStyle”,“strokeStyle”,“setImageStyle”,“imageStyle”,“opt_declutterGroup”,“setTextStyle”,“textStyle”,“opt_declutterGroups”,“LRUCache”,“opt_highWaterMark”,“highWaterMark”,“count_”,“entries_”,“oldest_”,“newest_”,“containsKey”,“entry”,“value_”,“key_”,“newer”,“older”,“peekLast”,“peekLastKey”,“peekFirstKey”,“LabelCache”,“consumers”,“consumer”,“consumerId”,“prune”,“outer”,“release”,“defaultLineDash”,“defaultPadding”,“labelCache”,“checkedFonts”,“measureContext”,“textHeights”,“checkFont”,“interval”,“referenceWidth”,“retries”,“checked”,“referenceFonts”,“text”,“isAvailable”,“getMeasureContext”,“available”,“referenceFont”,“measureText”,“check”,“done”,“clearInterval”,“fontSpec”,“setInterval”,“div”,“heights”,“measureTextHeight”,“margin”,“measureTextWidth”,“rotateAtOffset”,“offsetX”,“offsetY”,“resetTransform”,“drawImage”,“image”,“originX”,“originY”,“alpha”,“globalAlpha”,“setTransform”,“CanvasImmediateRenderer”,“viewRotation”,“opt_squaredTolerance”,“opt_userTransform”,“context_”,“viewRotation_”,“squaredTolerance_”,“userTransform_”,“contextFillState_”,“contextStrokeState_”,“contextTextState_”,“fillState_”,“strokeState_”,“image_”,“imageAnchorX_”,“imageAnchorY_”,“imageHeight_”,“imageOpacity_”,“imageOriginX_”,“imageOriginY_”,“imageRotateWithView_”,“imageRotation_”,“imageScale_”,“imageWidth_”,“text_”,“textOffsetX_”,“textOffsetY_”,“textRotateWithView_”,“textRotation_”,“textScale_”,“textFillState_”,“textStrokeState_”,“textState_”,“pixelCoordinates_”,“tmpLocalTransform_”,“drawImages_”,“pixelCoordinates”,“localTransform”,“drawText_”,“setContextFillState_”,“setContextStrokeState_”,“setContextTextState_”,“strokeText”,“fillText”,“moveToLineTo_”,“close”,“moveTo”,“lineTo”,“closePath”,“drawRings_”,“simpleGeometry”,“transformGeom2D”,“beginPath”,“arc”,“fill”,“stroke”,“getFill”,“getStroke”,“getImage”,“getText”,“getGeometryFunction”,“geometries”,“getGeometriesArray”,“flatMidpoint”,“getFlatMidpoint”,“geometryExtent”,“flatMidpoints”,“getFlatMidpoints”,“flatInteriorPoint”,“getEndss”,“flatInteriorPoints”,“getFlatInteriorPoints”,“fillState”,“contextFillState”,“strokeState”,“contextStrokeState”,“lineCap”,“setLineDash”,“lineDash”,“lineDashOffset”,“lineJoin”,“lineWidth”,“miterLimit”,“textState”,“contextTextState”,“textAlign”,“textBaseline”,“fillStyleColor”,“getColor”,“strokeStyleColor”,“strokeStyleLineCap”,“getLineCap”,“strokeStyleLineDash”,“getLineDash”,“strokeStyleLineDashOffset”,“getLineDashOffset”,“strokeStyleLineJoin”,“getLineJoin”,“strokeStyleWidth”,“strokeStyleMiterLimit”,“getMiterLimit”,“imageAnchor”,“getAnchor”,“imageImage”,“imageOrigin”,“getOrigin”,“imageSize”,“getRotateWithView”,“getScale”,“textFillStyle”,“textFillStyleColor”,“textStrokeStyle”,“textStrokeStyleColor”,“textStrokeStyleLineCap”,“textStrokeStyleLineDash”,“textStrokeStyleLineDashOffset”,“textStrokeStyleLineJoin”,“textStrokeStyleWidth”,“textStrokeStyleMiterLimit”,“textFont”,“getFont”,“textOffsetX”,“getOffsetX”,“textOffsetY”,“getOffsetY”,“textRotateWithView”,“textRotation”,“textScale”,“textText”,“textTextAlign”,“getTextAlign”,“textTextBaseline”,“getTextBaseline”,“DEFAULT”,“IMAGE”,“TEXT”,“SIMPLIFY_TOLERANCE”,“GEOMETRY_RENDERERS”,“builderGroup”,“getImageState”,“ImageState”,“imageReplay”,“getBuilder”,“BuilderType”,“addDeclutter”,“textReplay”,“lineStringReplay”,“polygonReplay”,“replayGroup”,“geometryRenderer”,“circleReplay”,“defaultOrder”,“feature1”,“feature2”,“getSquaredTolerance”,“getTolerance”,“renderFeature”,“imageState”,“unlistenImageChange”,“listenImageChange”,“renderGeometry”,“getGeometries”,“replay”,“renderFeatureInternal”,“renderDeclutterItems”,“declutterTree”,“items”,“zIndexItems”,“renderDeclutter”,“expireIconCache”,“MapRenderer”,“declutterTree_”,“calculateMatrices2D”,“thisArg2”,“translatedCoordinate”,“offsets”,“projectionExtent”,“worldWidth”,“declutteredFeatures”,“numLayers”,“tmpCoord”,“getWrapX”,“callback_1”,“scheduleExpireIconCache”,“Composite”,“CompositeMapRenderer”,“labelCacheKey_”,“insertBefore”,“firstChild”,“children_”,“previousElement”,“oldChildren”,“childNodes”,“oldChild”,“newChild”,“replaceChildren”,“getDataAtPixel”,“BOTTOM_CENTER”,“CENTER_LEFT”,“CENTER_CENTER”,“CENTER_RIGHT”,“TOP_CENTER”,“ELEMENT”,“MAP”,“OFFSET”,“POSITIONING”,“Overlay”,“insertFirst”,“autoPan”,“autoPanAnimation”,“autoPanMargin”,“rendered”,“bottom_”,“left_”,“right_”,“top_”,“mapPostrenderListenerKey”,“handleElementChanged”,“handleMapChanged”,“handleOffsetChanged”,“handlePositionChanged”,“handlePositioningChanged”,“setElement”,“setOffset”,“setPositioning”,“positioning”,“OverlayPositioning”,“setPosition”,“getElement”,“getOffset”,“getPositioning”,“updatePixelPosition”,“panIntoView”,“mapRect”,“getRect”,“overlayRect”,“offsetLeft”,“offsetRight”,“offsetTop”,“offsetBottom”,“centerPx”,“newCenterPx”,“box”,“pageXOffset”,“pageYOffset”,“mapSize”,“updateRenderedPosition”,“bottom”,“top_1”,“getOptions”,“ARRAY_BUFFER”,“JSON”,“XML”,“withCredentials”,“loadFeaturesXhr”,“url”,“format”,“success”,“failure”,“xhr”,“XMLHttpRequest”,“open”,“FormatType”,“responseType”,“onload”,“status”,“responseText”,“responseXML”,“DOMParser”,“parseFromString”,“readFeatures”,“featureProjection”,“readProjection”,“onerror”,“send”,“dataProjection”,“addFeatures”,“TileRange”,“tileCoord”,“containsTileRange”,“tileRange”,“opt_tileCoord”,“getKeyZXY”,“hash”,“tmpTileCoord”,“TileGrid”,“opt_strict”,“compare”,“currentVal”,“res”,“origins”,“origin_”,“origin”,“origins_”,“tileSizes_”,“tileSizes”,“tileSize_”,“tileSize”,“fullTileRanges_”,“tmpSize_”,“sizes”,“calculateTileRanges_”,“forEachTileCoord”,“getTileRangeForExtentAndZ”,“forEachTileCoordParentTileRange”,“opt_tileRange”,“tileCoordExtent”,“getTileCoordExtent”,“getTileCoordChildTileRange”,“getTileRangeExtent”,“getTileSize”,“getTileCoordForXYAndZ_”,“getTileCoordCenter”,“getTileCoordForCoordAndResolution”,“getTileCoordForXYAndResolution_”,“reverseIntersectionPolicy”,“getZForResolution”,“adjustX”,“adjustY”,“xFromOrigin”,“yFromOrigin”,“tileCoordX”,“tileCoordY”,“getTileCoordForCoordAndZ”,“getTileCoordResolution”,“getFullTileRange”,“fullTileRanges”,“getForProjection”,“createForProjection”,“createXYZ”,“xyzOptions”,“gridOptions”,“resolutionsFromExtent”,“opt_maxZoom”,“opt_tileSize”,“opt_corner”,“createForExtent”,“extentFromProjection”,“half”,“supportedExtensions”,“ELEMENT_ARRAY_BUFFER”,“DYNAMIC_DRAW”,“CONTEXT_IDS”,“opt_attributes”,“DOCUMENT”,“implementation”,“createDocument”,“XML_SCHEMA_INSTANCE_URI”,“createElementNS”,“namespaceURI”,“qualifiedName”,“getAllTextContent”,“normalizeWhitespace”,“getAllTextContent_”,“accumulator”,“CDATA_SECTION_NODE”,“TEXT_NODE”,“nodeValue”,“nextSibling”,“isDocument”,“parse”,“xml”,“makeArrayExtender”,“valueReader”,“objectStack”,“makeArrayPusher”,“makeReplacer”,“makeObjectPropertyPusher”,“opt_property”,“localName”,“makeObjectPropertySetter”,“makeChildAppender”,“nodeWriter”,“makeArraySerializer”,“serializersNS”,“nodeFactory”,“serializers”,“makeSimpleNodeFactory”,“serialize”,“opt_nodeName”,“opt_namespaceURI”,“fixedNodeName”,“nodeName”,“OBJECT_PROPERTY_NODE_FACTORY”,“makeSequence”,“orderedKeys”,“sequence”,“makeStructureNS”,“namespaceURIs”,“structure”,“opt_structureNS”,“structureNS”,“parseNode”,“parsersNS”,“firstElementChild”,“nextElementSibling”,“parsers”,“parser”,“pushParseAndPop”,“opt_keys”,“pushSerializeAndPop”,“BufferUsage”,“STATIC_DRAW”,“STREAM_DRAW”,“getArrayClassForType”,“Float32Array”,“Uint32Array”,“WebGLArrayBuffer”,“opt_usage”,“usage”,“ofSize”,“fromArray”,“from”,“fromArrayBuffer”,“getUsage”,“LOST”,“RESTORED”,“fromTransform”,“mat4”,“DEFAULT_VERTEX_SHADER”,“DEFAULT_FRAGMENT_SHADER”,“WebGLPostProcessingPass”,“gl_”,“webGlContext”,“gl”,“scaleRatio_”,“scaleRatio”,“renderTargetTexture_”,“createTexture”,“renderTargetTextureSize_”,“frameBuffer_”,“createFramebuffer”,“vertexShader”,“createShader”,“VERTEX_SHADER”,“shaderSource”,“compileShader”,“fragmentShader”,“FRAGMENT_SHADER”,“renderTargetProgram_”,“createProgram”,“attachShader”,“linkProgram”,“renderTargetVerticesBuffer_”,“createBuffer”,“bindBuffer”,“bufferData”,“renderTargetAttribLocation_”,“getAttribLocation”,“renderTargetUniformLocation_”,“getUniformLocation”,“renderTargetTextureLocation_”,“uniforms_”,“uniforms”,“location”,“getGL”,“init”,“bindFramebuffer”,“FRAMEBUFFER”,“getFrameBuffer”,“viewport”,“internalFormat”,“RGBA”,“UNSIGNED_BYTE”,“bindTexture”,“TEXTURE_2D”,“texImage2D”,“texParameteri”,“TEXTURE_MIN_FILTER”,“LINEAR”,“TEXTURE_WRAP_S”,“CLAMP_TO_EDGE”,“TEXTURE_WRAP_T”,“framebufferTexture2D”,“COLOR_ATTACHMENT0”,“nextPass”,“activeTexture”,“TEXTURE0”,“clearColor”,“COLOR_BUFFER_BIT”,“enable”,“BLEND”,“blendFunc”,“ONE”,“ONE_MINUS_SRC_ALPHA”,“useProgram”,“enableVertexAttribArray”,“vertexAttribPointer”,“FLOAT”,“uniform2f”,“uniform1i”,“applyUniforms”,“drawArrays”,“TRIANGLES”,“textureSlot”,“uniform”,“HTMLCanvasElement”,“texture”,“uniform3f”,“uniform4f”,“uniform1f”,“DefaultUniform”,“PROJECTION_MATRIX”,“OFFSET_SCALE_MATRIX”,“OFFSET_ROTATION_MATRIX”,“TIME”,“ZOOM”,“RESOLUTION”,“AttributeType”,“UNSIGNED_SHORT”,“UNSIGNED_INT”,“computeAttributesStride”,“attr”,“getByteSizeFromType”,“BYTES_PER_ELEMENT”,“Uint16Array”,“WebGLHelper”,“boundHandleWebGLContextLost_”,“handleWebGLContextLost”,“boundHandleWebGLContextRestored_”,“handleWebGLContextRestored”,“canvas_”,“bufferCache_”,“currentProgram_”,“getSupportedExtensions”,“getExtension”,“ContextEventType”,“offsetRotateMatrix_”,“offsetScaleMatrix_”,“tmpMat4_”,“uniformLocations_”,“attribLocations_”,“name_1”,“postProcessPasses_”,“postProcesses”,“shaderCompileErrors_”,“bufferKey”,“bufferCache”,“webGlBuffer”,“flushBufferData”,“deleteBuffer”,“bufferCacheEntry”,“isContextLost”,“prepareDraw”,“getCanvas”,“applyFrameState”,“prepareDrawToRenderTarget”,“renderTarget”,“opt_disableAlphaBlend”,“getFramebuffer”,“getTexture”,“ZERO”,“drawElements”,“elementType”,“numItems”,“offsetInBytes”,“finalizeDraw”,“offsetScaleMatrix”,“offsetRotateMatrix”,“setUniformMatrixValue”,“setUniformFloatValue”,“HTMLImageElement”,“program”,“shader”,“getProgram”,“fragmentShaderSource”,“vertexShaderSource”,“getShaderInfoLog”,“getShaderCompileErrors”,“getAttributeLocation”,“makeProjectionTransform”,“uniformMatrix4fv”,“enableAttributeArray_”,“attribName”,“enableAttributes”,“opt_data”,“opt_texture”,“tmpArray4”,“WebGLRenderTarget”,“helper”,“helper_”,“texture_”,“framebuffer_”,“size_”,“data_”,“dataCacheDirty_”,“updateSize_”,“clearCachedData”,“readAll”,“readPixels”,“readPixel”,“WMTSTileGrid”,“matrixIds_”,“matrixIds”,“getMatrixId”,“getMatrixIds”,“createFromCapabilitiesMatrixSet”,“matrixSet”,“opt_matrixLimits”,“matrixLimits”,“switchOriginXY”,“elt”,“elt_ml”,“tileWidth”,“tileHeight”,“ImageStyle”,“opacity_”,“rotateWithView_”,“rotateWithView”,“scale_”,“getHitDetectionImage”,“getImageSize”,“getHitDetectionImageSize”,“setRotateWithView”,“setScale”,“RegularShape”,“hitDetectionCanvas_”,“fill_”,“points”,“radius_”,“radius1”,“radius2_”,“radius2”,“stroke_”,“imageSize_”,“hitDetectionImageSize_”,“getPoints”,“getRadius2”,“strokeWidth”,“renderOptions”,“draw_”,“createHitDetectionCanvas_”,“angle0”,“radiusC”,“drawHitDetectionCanvas_”,“CircleStyle”,“setRadius”,“Fill”,“color_”,“setColor”,“FRACTION”,“ImageBase”,“getPixelRatio”,“listenImage”,“loadHandler”,“errorHandler”,“img”,“promise”,“listening_1”,“then”,“catch”,“ImageWrapper”,“imageLoadFunction”,“src_”,“unlisten_”,“imageLoadFunction_”,“handleImageError_”,“unlistenImage_”,“handleImageLoad_”,“setImage”,“IconImage”,“hitDetectionImage_”,“imageState_”,“tainted_”,“isTainted_”,“getImageData”,“dispatchChangeEvent_”,“replaceColor_”,“fillRect”,“getSrc”,“ctx”,“imgData”,“putImageData”,“Icon”,“normalizedAnchor_”,“anchorOrigin_”,“anchorOrigin”,“IconOrigin”,“anchorXUnits_”,“anchorXUnits”,“IconAnchorUnits”,“anchorYUnits_”,“anchorYUnits”,“crossOrigin_”,“imgSize”,“iconImage_”,“offset_”,“offsetOrigin_”,“offsetOrigin”,“setAnchor”,“iconImageSize”,“Stroke”,“lineCap_”,“lineDash_”,“lineDashOffset_”,“lineJoin_”,“miterLimit_”,“width_”,“setLineCap”,“setLineDashOffset”,“setLineJoin”,“setMiterLimit”,“setWidth”,“Style”,“geometryFunction_”,“defaultGeometryFunction”,“zIndex_”,“setRenderer”,“setFill”,“setStroke”,“setText”,“defaultStyles”,“createDefaultStyle”,“createEditingStyle”,“white”,“blue”,“LINE”,“DEFAULT_FILL_COLOR”,“Text”,“font_”,“textAlign_”,“textBaseline_”,“maxAngle_”,“maxAngle”,“placement_”,“placement”,“TextPlacement”,“overflow_”,“offsetX_”,“offsetY_”,“backgroundFill_”,“backgroundFill”,“backgroundStroke_”,“backgroundStroke”,“padding_”,“getPlacement”,“getMaxAngle”,“getOverflow”,“getBackgroundFill”,“getBackgroundStroke”,“getPadding”,“setOverflow”,“setFont”,“setMaxAngle”,“setOffsetX”,“setOffsetY”,“setPlacement”,“setTextAlign”,“setTextBaseline”,“setBackgroundFill”,“setBackgroundStroke”,“setPadding”,“zRegEx”,“xRegEx”,“yRegEx”,“dashYRegEx”,“range”,“createFromTemplates”,“templates”,“tileUrlFunctions”,“createFromTileUrlFunctions”,“nullTileUrlFunction”,“expandUrl”,“urls”,“match”,“startCharCode”,“stopCharCode”,“stop_1”,“jsonp”,“opt_errback”,“opt_callbackParam”,“script”,“async”,“timer”,“getElementsByTagName”,“ERROR_THRESHOLD”,“Tile”,“interimTile”,“transition_”,“transition”,“transitionStarts_”,“setState”,“getInterimTile”,“refreshInterimChain”,“getTileCoord”,“getAlpha”,“inTransition”,“endTransition”,“getBlankImage”,“ImageTile”,“tileLoadFunction”,“tileLoadFunction_”,“naturalWidth”,“naturalHeight”,“TileCache”,“expireCache”,“pruneExceptNewestZ”,“fromKey”,“calculateSourceResolution”,“targetProj”,“targetMetersPerUnit”,“sourceMetersPerUnit”,“sourceExtent”,“compensationFactor”,“isFinite”,“enlargeClipPoint”,“centroidX”,“centroidY”,“dX”,“dY”,“targetExtent”,“triangulation”,“sources”,“gutter”,“opt_renderEdges”,“sourceDataExtent”,“canvasWidthInUnits”,“canvasHeightInUnits”,“stitchContext”,“stitchScale”,“xPos”,“yPos”,“srcWidth”,“srcHeight”,“targetTopLeft”,“getTriangles”,“triangle”,“u0”,“v0”,“u1”,“u2”,“sourceNumericalShiftX”,“sourceNumericalShiftY”,“affineCoefs”,“maxRow”,“maxEl”,“absValue”,“coef”,“solveLinearSystem”,“save”,“p0”,“p1”,“p2”,“clip”,“restore”,“MAX_SUBDIVISION”,“Triangulation”,“maxSourceExtent”,“errorThreshold”,“sourceProj_”,“targetProj_”,“transformInvCache”,“transformInv”,“transformInv_”,“maxSourceExtent_”,“errorThresholdSquared_”,“triangles_”,“wrapsXInSource_”,“canWrapXInSource_”,“sourceWorldWidth_”,“targetWorldWidth_”,“destinationTopLeft”,“destinationTopRight”,“destinationBottomRight”,“destinationBottomLeft”,“sourceTopLeft”,“sourceTopRight”,“sourceBottomRight”,“sourceBottomLeft”,“addQuad_”,“leftBound_1”,“newTriangle”,“addTriangle_”,“aSrc”,“bSrc”,“cSrc”,“dSrc”,“maxSubdivision”,“sourceQuadExtent”,“sourceCoverageX”,“sourceWorldWidth”,“wrapsX”,“needsSubdivision”,“centerSrc”,“bc”,“bcSrc”,“da”,“daSrc”,“ab”,“abSrc”,“cd”,“cdSrc”,“calculateSourceExtent”,“ReprojTile”,“sourceTileGrid”,“targetTileGrid”,“wrappedTileCoord”,“getTileFunction”,“opt_errorThreshold”,“renderEdges_”,“gutter_”,“sourceTileGrid_”,“targetTileGrid_”,“wrappedTileCoord_”,“sourceTiles_”,“sourcesListenerKeys_”,“sourceZ_”,“maxTargetExtent”,“limitedTargetExtent”,“sourceProjExtent”,“errorThresholdInPixels”,“triangulation_”,“sourceRange”,“srcX”,“srcY”,“unlistenSources_”,“reproject_”,“leftToLoad_1”,“sourceListenKey_1”,“adaptAttributions”,“attributionLike”,“Source”,“attributions_”,“attributionsCollapsible_”,“attributionsCollapsible”,“wrapX_”,“wrapX”,“refresh”,“setAttributions”,“TileSource”,“opaque_”,“opaque”,“tilePixelRatio_”,“tilePixelRatio”,“canUseScreen”,“screen”,“availWidth”,“availHeight”,“tileCache”,“tmpSize”,“tileOptions”,“zDirection”,“getTileCacheForProjection”,“forEachLoadedTile”,“tileCoordKey”,“loaded”,“covered”,“getGutterForProjection”,“setKey”,“getOpaque”,“getTile”,“getTileGrid”,“getTileGridForProjection”,“thisProj”,“getTilePixelRatio”,“getTilePixelSize”,“getTileCoordForTileUrlFunction”,“opt_projection”,“worldsAway”,“withinExtentAndZ”,“useTile”,“TileSourceEvent”,“UrlTile”,“generateTileUrlFunction_”,“tileUrlFunction”,“setUrls”,“setUrl”,“tileLoadingKeys_”,“getTileLoadFunction”,“getTileUrlFunction”,“getUrls”,“uid”,“tileState”,“TileEventType”,“setTileLoadFunction”,“setTileUrlFunction”,“defaultTileLoadFunction”,“imageTile”,“TileImage”,“tileClass”,“tileCacheForProjection”,“tileGridForProjection”,“reprojectionErrorThreshold_”,“reprojectionErrorThreshold”,“renderReprojectionEdges_”,“usedTileCache”,“getGutter”,“projKey”,“createTile_”,“urlTileCoord”,“tileUrl”,“newTile”,“getTileInternal”,“setRenderReprojectionEdges”,“setTileGridForProjection”,“tilegrid”,“proj”,“BingMaps”,“hidpi”,“hidpi_”,“culture_”,“culture”,“maxZoom_”,“apiKey_”,“imagerySet_”,“imagerySet”,“handleImageryMetadataResponse”,“getApiKey”,“getImagerySet”,“response”,“statusCode”,“statusDescription”,“authenticationResultCode”,“resourceSets”,“resources”,“resource”,“zoomMax”,“imageWidth”,“imageHeight”,“zoomMin”,“imageUrlSubdomains”,“subdomain”,“quadKeyTileCoord”,“imageUrl”,“digits”,“mask”,“quadKey”,“imageryProviders”,“transform_1”,“imageryProvider”,“intersecting”,“coverageAreas”,“coverageArea”,“bbox”,“CartoDB”,“account_”,“account”,“mapId_”,“config_”,“templateCache_”,“initializeMap_”,“getConfig”,“updateConfig”,“setConfig”,“paramHash”,“stringify”,“applyTemplate_”,“mapUrl”,“client”,“handleInitResponse_”,“handleInitError_”,“setRequestHeader”,“err”,“tilesUrl”,“cdn_url”,“https”,“layergroupid”,“ADDFEATURE”,“CHANGEFEATURE”,“REMOVEFEATURE”,“RBush”,“opt_maxEntries”,“rbush_”,“items_”,“extents”,“getAll”,“getInExtent”,“forEach_”,“forEachInExtent”,“rbush”,“VectorSourceEvent”,“opt_feature”,“Vector”,“VectorSource”,“loader_”,“format_”,“overlaps_”,“overlaps”,“url_”,“loader”,“strategy_”,“strategy”,“collection”,“useSpatialIndex”,“featuresRtree_”,“loadedExtentsRtree_”,“nullGeometryFeatures_”,“idIndex_”,“uidIndex_”,“featureChangeKeys_”,“featuresCollection_”,“addFeaturesInternal”,“bindFeaturesCollection_”,“addFeature”,“addFeatureInternal”,“featureKey”,“addToIndex_”,“setupChangeEvents_”,“VectorEventType”,“handleFeatureChange_”,“valid”,“newFeatures”,“geometryFeatures”,“length_1”,“length_2”,“length_3”,“modifyingCollection”,“removeFeature”,“opt_fast”,“featureId”,“removeFeatureInternal”,“clearEvent”,“forEachFeature”,“forEachFeatureAtCoordinateDirect”,“forEachFeatureInExtent”,“forEachFeatureIntersectingExtent”,“getFeaturesCollection”,“getFeaturesAtCoordinate”,“getFeaturesInExtent”,“getClosestFeatureToCoordinate”,“opt_filter”,“closestFeature”,“previousMinSquaredDistance”,“minDistance”,“getFeatureById”,“getFeatureByUid”,“getFormat”,“getOverlaps”,“getUrl”,“sid”,“removeFromIdIndex_”,“hasFeature”,“loadFeatures”,“loadedExtentsRtree”,“extentsToLoad”,“_loop_1”,“extentToLoad”,“this_1”,“removeLoadedExtent”,“removed”,“setLoader”,“Cluster”,“geometryFunction”,“cluster”,“setDistance”,“mapDistance”,“clustered”,“neighbors”,“neighbor”,“createCluster”,“TierSizeCalculation”,“TRUNCATED”,“CustomTile”,“zoomifyImage_”,“Zoomify”,“tierSizeCalculation”,“tierSizeInTiles”,“tileSizeForTierSizeCalculation”,“tileCountUpToTier”,“tileCoordZ”,“tileIndex”,“tileSize_1”,“localContext_1”,“ZoomifyTileClass”,“Versions”,“VERSION1”,“VERSION2”,“VERSION3”,“IIIF_PROFILE_VALUES”,“supports”,“formats”,“qualities”,“COMPLIANCE_VERSION1”,“RegExp”,“COMPLIANCE_VERSION2”,“COMPLIANCE_VERSION3”,“versionFunctions”,“iiifInfo”,“levelProfile”,“getComplianceLevelSupportedFeatures”,“imageInfo”,“scale_factors”,“tile_width”,“tile_height”,“additionalProfile”,“profile”,“profileSupports”,“profileFormats”,“profileQualities”,“tiles”,“scaleFactors”,“extraFormats”,“preferredFormat”,“preferredFormats”,“acc”,“extraFeatures”,“extraQualities”,“IIIFInfo”,“setImageInfo”,“getImageApiVersion”,“getComplianceLevelEntryFromProfile”,“version”,“test”,“getComplianceLevelFromProfile”,“complianceLevel”,“level”,“getTileSourceOptions”,“opt_preferredOptions”,“imageOptions”,“quality”,“formatPercentage”,“percentage”,“toLocaleString”,“maximumFractionDigits”,“IIIF”,“baseUrl”,“lastIndexOf”,“supportsListedSizes”,“supportsListedTiles”,“isInteger”,“supportsArbitraryTiling”,“maxScaleFactor”,“ignoredSizesIndex”,“IiifTileClass”,“regionParam”,“sizeParam”,“tileX”,“tileY”,“regionX”,“regionY”,“regionW”,“regionH”,“sizeW”,“sizeH”,“regionWidth”,“regionHeight”,“ReprojImage”,“getImageFunction”,“sourceImage”,“sourcePixelRatio”,“targetExtent_”,“sourceImage_”,“sourcePixelRatio_”,“sourceListenerKey_”,“unlistenSource_”,“ImageSourceEventType”,“ImageSourceEvent”,“defaultImageLoadFunction”,“ImageSource”,“reprojectedImage_”,“reprojectedRevision_”,“findNearestResolution”,“getImageInternal”,“handleImageChange”,“appendParams”,“uri”,“params”,“keyParams”,“encodeURIComponent”,“qs”,“ImageArcGISRest”,“params_”,“renderedRevision_”,“ratio_”,“getParams”,“halfWidth”,“halfHeight”,“imageResolution”,“getRequestUrl_”,“getImageLoadFunction”,“srid”,“modifiedUrl”,“setImageLoadFunction”,“updateParams”,“ImageCanvas”,“opt_loader”,“error_”,“getError”,“handleLoad_”,“ImageCanvasSource”,“canvasFunction_”,“canvasFunction”,“canvasElement”,“ImageMapGuide”,“displayDpi_”,“displayDpi”,“useOverlay_”,“useOverlay”,“dpi”,“mcsW”,“mcsH”,“devW”,“devH”,“mpp”,“baseParams”,“Static”,“imageExtent_”,“imageExtent”,“getImageExtent”,“targetWidth”,“DEFAULT_WMS_VERSION”,“GETFEATUREINFO_IMAGE_SIZE”,“ImageWMS”,“v13_”,“updateV13_”,“serverType_”,“getFeatureInfoUrl”,“projectionObj”,“sourceProjectionObj”,“getLegendUrl”,“mpu”,“viewExtent”,“requestExtent”,“WMSServerType”,“ATTRIBUTION”,“OSM”,“BaseImage”,“BaseImageLayer”,“LayerRenderer”,“boundHandleImageChange_”,“handleImageChange_”,“layer_”,“loadedTileCallback”,“createLoadedTileFinder”,“getLayer”,“renderIfReadyAndVisible”,“loadImage”,“CanvasLayerRenderer”,“renderedResolution”,“tempTransform_”,“pixelTransform”,“containerReused”,“createTransformStringCanvas_”,“useContainer”,“layerClassName”,“transformOrigin”,“topLeft”,“topRight”,“bottomRight”,“bottomLeft”,“clipUnrotated”,“inverted”,“dispatchRenderEvent_”,“preRender”,“postRender”,“getRenderTransform”,“renderPixel”,“createTransformString”,“CanvasImageLayerRenderer”,“imageLayer”,“viewResolution”,“imageSource”,“renderedExtent”,“imagePixelRatio”,“viewCenter”,“size_1”,“canvasTransform”,“clearRect”,“clipped”,“layerExtent”,“dw”,“dh”,“previousAlpha”,“ImageLayer”,“BaseTile”,“BaseTileLayer”,“preload”,“useInterimTilesOnError”,“setPreload”,“setUseInterimTilesOnError”,“getPreload”,“TileProperty”,“getUseInterimTilesOnError”,“CanvasTileLayerRenderer”,“tileLayer”,“extentChanged”,“renderedExtent_”,“renderedPixelRatio”,“renderedProjection”,“renderedRevision”,“renderedTiles”,“newTiles_”,“tmpExtent”,“tmpTileRange_”,“isDrawableTile”,“tileSource”,“sourceRevision”,“canvasExtent”,“tilesToDrawByZ”,“findLoadedTiles”,“tmpTileRange”,“childTileRange”,“canvasScale”,“clips”,“clipZs”,“currentClip”,“zs”,“currentZ”,“currentTilePixelSize”,“currentScale”,“dx_1”,“dy_1”,“originTileCoord”,“originTileExtent”,“origin_1”,“tileGutter”,“tilesToDraw”,“floatX”,“nextX”,“floatY”,“nextY”,“i_1”,“drawTileImage”,“updateUsedTiles”,“manageTilePyramid”,“updateCacheSize_”,“scheduleExpireCache”,“getTileImage”,“tileAlpha”,“alphaChanged”,“postRenderFunction”,“opt_tileCallback”,“TileLayer”,“RasterEventType”,“RasterOperationType”,“PIXEL”,“RasterSourceEvent”,“RasterSource”,“worker_”,“operationType_”,“operationType”,“threads_”,“layers_”,“createLayer”,“createLayers”,“requestedFrameState_”,“renderedImageCanvas_”,“iMax”,“sourceOrLayer”,“sourceAttribution”,“setOperation”,“opt_lib”,“updateFrameState_”,“allSourcesReady_”,“ready”,“processSources_”,“imageDatas”,“onWorkerComplete_”,“sharedContext”,“layerOrSource”,“Raster”,“ATTRIBUTIONS”,“LayerConfig”,“ProviderConfig”,“Stamen”,“provider”,“providerConfig”,“layerConfig”,“tileExtent”,“tmpExtent_”,“TileArcGISRest”,“getKeyForParams_”,“LabeledTile”,“strokeRect”,“TileDebug”,“textTileCoord”,“TileJSON”,“tileJSON_”,“handleTileJSONResponse”,“handleTileJSONError”,“onXHRLoad_”,“onXHRError_”,“tileJSON”,“getTileJSON”,“epsg4326Projection”,“attributionExtent_1”,“TileWMS”,“transparent”,“preemptive”,“preemptive_”,“grid_”,“keys_”,“jsonp_”,“getData”,“xRelative”,“yRelative”,“row”,“forDataAtCoordinate”,“opt_request”,“loadInternal_”,“handleError_”,“json”,“UTFGrid”,“tileUrlFunction_”,“template_”,“getTemplate”,“forDataAtCoordinateAndResolution”,“grids”,“VectorRenderTile”,“getSourceTiles”,“removeSourceTiles”,“executorGroups”,“loadingSourceTiles”,“errorSourceTileKeys”,“hitDetectionImageData”,“replayState_”,“wantedResolution”,“removeSourceTiles_”,“sourceTileListenerKeys”,“sourceZ”,“hasContext”,“getReplayState”,“dirty”,“renderedRenderOrder”,“renderedTileResolution”,“renderedTileRevision”,“renderedZ”,“renderedTileZ”,“VectorTile”,“features_”,“onLoad”,“setFeatures”,“onError”,“defaultLoadFunction”,“loadingTiles_”,“sourceTileByCoordKey_”,“sourceTilesByTileKey_”,“tileGrids_”,“sourceTiles”,“loadedZ”,“previousSourceTiles”,“sourceTileCoord”,“sourceTile”,“coordKey”,“key_1”,“sourceTileKey”,“errorTileCount”,“addSourceTiles”,“empty”,“KVP”,“REST”,“WMTS”,“requestEncoding”,“WMTSRequestEncoding”,“version_”,“dimensions_”,“dimensions”,“matrixSet_”,“requestEncoding_”,“getKeyForDimensions_”,“createFromWMTSTemplate”,“getDimensions”,“getMatrixSet”,“getRequestEncoding”,“getVersion”,“updateDimensions”,“WebGLWorkerMessageType”,“GENERATE_BUFFERS”,“WebGLLayerRenderer”,“BaseVector”,“BaseVectorLayer”,“renderBuffer”,“updateWhileAnimating”,“updateWhileInteracting”,“declutter_”,“declutter”,“renderBuffer_”,“updateWhileAnimating_”,“updateWhileInteracting_”,“getDeclutter”,“getRenderBuffer”,“getRenderOrder”,“getUpdateWhileAnimating”,“getUpdateWhileInteracting”,“setRenderOrder”,“renderOrder”,“styleFunction”,“WebGLPointsLayerRenderer”,“projectionMatrixTransform”,“sourceRevision_”,“verticesBuffer_”,“hitVerticesBuffer_”,“indicesBuffer_”,“program_”,“hitDetectionEnabled_”,“hitFragmentShader”,“hitVertexShader”,“hitProgram_”,“customAttributes”,“attribute”,“hitDetectionAttributes”,“currentTransform_”,“renderTransform_”,“invertRenderTransform_”,“renderInstructions_”,“hitRenderInstructions_”,“hitRenderTarget_”,“received”,“projectionTransform”,“hitDetection”,“vertexBuffer”,“indexBuffer”,“renderInstructions”,“featureCache_”,“featureCount_”,“sourceListenKeys_”,“handleSourceFeatureAdded_”,“handleSourceFeatureChanged_”,“handleSourceFeatureDelete_”,“renderCount”,“renderHitDetection”,“vectorSource”,“viewNotMoving”,“sourceChanged”,“rebuildBuffers_”,“featureCache”,“totalInstructionsCount”,“totalHitInstructionsCount”,“hitColor”,“tmpCoords”,“tmpColor”,“renderIndex”,“hitIndex”,“featureUid”,“radix”,“customAttributesCount”,“hitMessage”,“colorDecodeId”,“terminate”,“Instruction”,“BEGIN_GEOMETRY”,“BEGIN_PATH”,“CLOSE_PATH”,“CUSTOM”,“DRAW_CHARS”,“DRAW_IMAGE”,“END_GEOMETRY”,“FILL”,“MOVE_TO_LINE_TO”,“SET_FILL_STYLE”,“SET_STROKE_STYLE”,“STROKE”,“beginPathInstruction”,“closePathInstruction”,“CanvasBuilder”,“maxLineWidth”,“beginGeometryInstruction1_”,“beginGeometryInstruction2_”,“bufferedMaxExtent_”,“instructions”,“tmpCoordinate_”,“hitDetectionInstructions”,“applyPixelRatio”,“dashArray”,“dash”,“appendFlatCoordinates”,“closed”,“skipFirst”,“myEnd”,“getBufferedMaxExtent”,“lastRel”,“nextRel”,“lastXCoord”,“lastYCoord”,“nextCoord”,“skipped”,“drawCustomCoordinates_”,“builderEnds”,“builderEnd”,“beginGeometry”,“builderEndss”,“builderBegin”,“myEnds”,“endGeometry”,“reverseHitDetectionInstructions”,“instruction”,“createFill”,“fillInstruction”,“applyStroke”,“createStroke”,“updateFillStyle”,“currentFillStyle”,“updateStrokeStyle”,“currentStrokeStyle”,“currentLineCap”,“currentLineDash”,“currentLineDashOffset”,“currentLineJoin”,“currentLineWidth”,“currentMiterLimit”,“endGeometryInstruction”,“CanvasImageBuilder”,“declutterGroups_”,“anchorX_”,“anchorY_”,“height_”,“originX_”,“originY_”,“drawCoordinates_”,“myBegin”,“declutterGroups”,“hitDetectionImage”,“CanvasLineStringBuilder”,“drawFlatCoordinates_”,“moveToLineToInstruction”,“lastStroke”,“CanvasPolygonBuilder”,“drawFlatCoordinatess_”,“numEnds”,“setFillStrokeStyles_”,“circleInstruction”,“matchingChunk”,“m12”,“m23”,“x12”,“y12”,“x23”,“y23”,“chunkStart”,“chunkEnd”,“chunkM”,“acos”,“TEXT_ALIGN”,“BATCH_CONSTRUCTORS”,“PolygonBuilder”,“Builder”,“ImageBuilder”,“LineStringBuilder”,“CanvasTextBuilder”,“labels_”,“fillStates”,“strokeStates”,“textStates”,“textKey_”,“fillKey_”,“strokeKey_”,“geometryType”,“flatOffset”,“flatEnd”,“oo”,“declutterGroup”,“drawChars_”,“geometryWidths”,“saveTextStates_”,“pixelRatio_1”,“strokeKey”,“textKey”,“fillKey”,“baseline”,“BuilderGroup”,“tolerance_”,“maxExtent_”,“resolution_”,“buildersByZIndex_”,“group”,“builderInstructions”,“zKey”,“builders”,“builderKey”,“builderInstruction”,“builderType”,“zIndexKey”,“replays”,“Constructor”,“lineStringLength”,“drawTextOnPath”,“startM”,“measureAndCacheTextWidth”,“previousAngle”,“numChars”,“segmentM”,“angleChanged”,“char”,“charLength”,“charM”,“segmentPos”,“interpolate”,“p3”,“p4”,“Executor”,“alignFill_”,“coordinateCache_”,“renderedTransform_”,“widths_”,“getTextImage”,“align”,“numLines”,“widths”,“currentWidth”,“measureTextWidths”,“lineHeight”,“renderWidth”,“leftRight”,“replayTextBackground_”,“strokeInstruction”,“setStrokeStyle_”,“replayImage_”,“snapToPixel”,“fillStroke”,“boxW”,“boxH”,“boxX”,“boxY”,“strokePadding”,“declutterArgs”,“repeatSize”,“groupCount”,“declutterData”,“currentAlpha”,“drawTextImageWithPointPlacement_”,“execute_”,“featureCallback”,“opt_hitExtent”,“dd”,“prevX”,“prevY”,“roundX”,“roundY”,“pendingFill”,“pendingStroke”,“lastFillInstruction”,“lastStrokeInstruction”,“coordinateCache”,“viewRotationFromTransform”,“batchSize”,“labelWithAnchor”,“widthIndex”,“declutterGroupIndex”,“measurePixelRatio”,“pixelRatioScale”,“cachedWidths”,“pathLength”,“textLength”,“parts”,“cc”,“chars”,“part”,“execute”,“executeHitDetection”,“opt_featureCallback”,“ORDER”,“ExecutorGroup”,“allInstructions”,“opt_renderBuffer”,“executorsByZIndex_”,“hitDetectionContext_”,“hitDetectionTransform_”,“createExecutors_”,“flatClipCoords”,“getClipCoords”,“executors”,“instructionByZindex”,“hasExecutors”,“candidates”,“contextSize”,“hitExtent”,“circleArrayCache”,“arraySize”,“fillCircleArrayRowToMiddle”,“getCircleArray”,“j_1”,“result_1”,“executor”,“opt_builderTypes”,“opt_declutterReplays”,“builderTypes”,“0”,“replayDeclutter”,“declutterReplays”,“zz”,“executorData”,“currentExecutor”,“createHitDetectionImageData”,“transforms”,“imageSmoothingEnabled”,“featureCount”,“indexFactor”,“featuresByZIndex”,“featureStyleFunction”,“originalStyle”,“canvas_1”,“imgContext”,“byGeometryType”,“zIndexKeys”,“geomAndStyle”,“kk”,“hitDetect”,“resultFeatures”,“CanvasVectorLayerRenderer”,“vectorLayer”,“boundHandleStyleImageChange_”,“handleStyleImageChange_”,“animatingOrInteracting_”,“dirty_”,“hitDetectionImageData_”,“renderedFeatures_”,“renderedResolution_”,“renderedRotation_”,“renderedCenter_”,“renderedProjection_”,“renderedRenderOrder_”,“replayGroup_”,“replayGroupChanged”,“makeScale”,“world”,“transform_2”,“viewHints_1”,“Promise”,“resolve”,“reject”,“layer_1”,“features_1”,“animating”,“interacting”,“frameStateExtent”,“vectorLayerRevision”,“vectorLayerRenderBuffer”,“vectorLayerRenderOrder”,“userTransform”,“userExtent”,“replayGroupInstructions”,“executorGroup”,“CanvasVectorImageLayerRenderer”,“vectorRenderer_”,“layerImageRatio_”,“getImageRatio”,“coordinateToVectorPixelTransform_”,“renderedPixelToCoordinateTransform_”,“vectorPixel”,“vectorRenderer”,“imageFrameState_1”,“image_1”,“HYBRID”,“IMAGE_REPLAYS”,“VECTOR_REPLAYS”,“CanvasVectorTileLayerRenderer”,“renderedLayerRevision_”,“renderTileImageQueue_”,“tileListenerKeys_”,“tmpTransform_”,“prepareTile”,“tileUid”,“updateExecutorGroup_”,“tileImageNeedsRender_”,“listenerKey”,“renderTileImage_”,“layerRevision”,“builderState”,“layerUid”,“tt”,“sourceTileExtent”,“sharedExtent”,“bufferedExtent”,“executorGroupInstructions”,“replayExtent”,“renderingReplayGroup”,“found”,“_loop_2”,“tileContainsCoordinate”,“extent_1”,“tilePixel”,“rotation_1”,“transforms_1”,“renderQueuedTileImages_”,“renderMode”,“getRenderMode”,“VectorTileRenderType”,“replayTypes”,“worldOffset”,“replayState”,“renderPixelRatio”,“renderScale”,“pixelScale”,“VectorLayer”,“interpolatePoint”,“pointY”,“cumulativeLengths”,“haystack”,“needle”,“opt_comparator”,“mid”,“cmp”,“comparator”,“binarySearch”,“lineStringCoordinateAtM”,“extrapolate”,“lo”,“hi”,“m0”,“LineString”,“flatMidpoint_”,“flatMidpointRevision_”,“appendCoordinate”,“forEachSegment”,“getCoordinateAtM”,“opt_extrapolate”,“getCoordinateAt”,“geoM”,“fracA”,“fracB”,“fracM”,“geoA”,“geoB”,“geoStack”,“fractionStack”,“fractions”,“maxIterations”,“DEFAULT_STROKE_STYLE”,“INTERVALS”,“Graticule”,“maxLines”,“targetSize”,“showLabels”,“lonLabelFormatter”,“latLabelFormatter”,“lonLabelPosition”,“latLabelPosition”,“lonLabelStyle”,“latLabelStyle”,“intervals”,“maxLat_”,“maxLon_”,“minLat_”,“minLon_”,“maxLatP_”,“maxLonP_”,“minLatP_”,“minLonP_”,“targetSize_”,“maxLines_”,“meridians_”,“parallels_”,“strokeStyle_”,“fromLonLatTransform_”,“toLonLatTransform_”,“projectionCenterLonLat_”,“meridiansLabels_”,“parallelsLabels_”,“lonLabelFormatter_”,“latLabelFormatter_”,“lonLabelPosition_”,“latLabelPosition_”,“lonLabelStyleBase_”,“lonLabelStyle_”,“latLabelStyleBase_”,“latLabelStyle_”,“intervals_”,“loaderFunction”,“featurePool_”,“lineStyle_”,“renderExtent”,“updateProjectionInfo_”,“createGraticule_”,“featuresColl”,“labelData”,“poolIndex”,“geom”,“addMeridian_”,“lon”,“minLat”,“maxLat”,“lineString”,“getMeridian_”,“textPoint”,“getMeridianPoint_”,“addParallel_”,“minLon”,“maxLon”,“getParallel_”,“getParallelPoint_”,“getInterval_”,“cnt”,“centerLonLat”,“centerLon”,“centerLat”,“validExtent”,“frac”,“meridian”,“clampedBottom”,“clampedTop”,“getMeridians”,“lon2”,“parallel”,“clampedLeft”,“clampedRight”,“getParallels”,“worldExtentP”,“GRADIENT”,“DEFAULT_GRADIENT”,“Heatmap”,“gradient”,“blur”,“gradient_”,“handleGradientChanged_”,“setGradient”,“setBlur”,“weightFunction_”,“getBlur”,“getGradient”,“colors”,“createLinearGradient”,“step”,“addColorStop”,“createGradient”,“u_size”,“u_blurSlope”,“u_gradientTexture”,“VectorImage”,“VectorImageLayer”,“imageRatio”,“imageRatio_”,“VectorTileLayer”,“renderMode_”,“DragAndDropEventType”,“DragAndDropEvent”,“file”,“opt_features”,“handleDrop”,“files”,“dataTransfer”,“reader”,“FileReader”,“handleResult_”,“readAsText”,“handleStop”,“dropEffect”,“DragAndDrop”,“formatConstructors_”,“formatConstructors”,“dropListenKeys_”,“source_”,“tryReadFeatures_”,“registerListeners_”,“dropArea”,“unregisterListeners_”,“DragRotateAndZoom”,“lastMagnitude_”,“magnitude”,“angleDelta”,“Circle”,“setCenterAndRadius”,“getRadiusSquared_”,“MultiLineString”,“lineStrings”,“appendLineString”,“opt_interpolate”,“lineStringsCoordinateAtM”,“getLineString”,“getLineStrings”,“midpoints”,“intersectsLineStringArray”,“MultiPoint”,“appendPoint”,“getPoint”,“MultiPolygon”,“opt_endss”,“endss_”,“flatInteriorPointsRevision_”,“flatInteriorPoints_”,“polygons”,“appendPolygon”,“newEndss”,“multiArrayMaxSquaredDelta”,“assignClosestMultiArrayPoint”,“linearRingssContainsXY”,“linearRingss”,“getInteriorPoints”,“linearRingssAreOriented”,“simplifiedEndss”,“quantizeMultiArray”,“getPolygon”,“prevEnds”,“getPolygons”,“intersectsLinearRingMultiArray”,“deflateMultiCoordinatesArray”,“lastEnds”,“DrawEventType”,“DrawEvent”,“Draw”,“shouldHandle_”,“downPx_”,“downTimeout_”,“lastDragTime_”,“freehand_”,“snapTolerance_”,“snapTolerance”,“type_”,“getMode”,“stopClick_”,“stopClick”,“minPoints_”,“minPoints”,“maxPoints_”,“maxPoints”,“finishCondition_”,“finishCondition”,“opt_geometry”,“squaredLength”,“Constructor_1”,“mode_1”,“dragVertexDelay_”,“dragVertexDelay”,“finishCoordinate_”,“sketchFeature_”,“sketchPoint_”,“sketchCoords_”,“sketchLine_”,“sketchLineCoords_”,“squaredClickTolerance_”,“clickTolerance”,“overlay_”,“geometryName”,“freehandCondition_”,“freehand”,“freehandCondition”,“updateState_”,“getOverlay”,“pass”,“addToDrawing_”,“startDrawing_”,“circleMode”,“finishDrawing”,“atFinish_”,“abortDrawing_”,“downPx”,“clickPx”,“modifyDrawing_”,“createOrUpdateSketchPoint_”,“at”,“potentiallyDone”,“potentiallyFinishCoordinates”,“sketchCoords”,“finishCoordinate”,“finishPixel”,“updateSketchFeatures_”,“sketchLineGeom”,“ring”,“removeLastPoint”,“sketchFeature”,“sketchFeatures”,“overlaySource”,“ExtentEventType”,“EXTENTCHANGED”,“ExtentEvent”,“getDefaultExtentStyleFunction”,“getDefaultPointerStyleFunction”,“getPointHandler”,“fixedPoint”,“getEdgeHandler”,“fixedP1”,“fixedP2”,“Extent”,“pointerHandler_”,“pixelTolerance_”,“pixelTolerance”,“snappedToVertex_”,“extentFeature_”,“vertexFeature_”,“extentOverlay_”,“boxStyle”,“vertexOverlay_”,“pointerStyle”,“snapToVertex_”,“pixelCoordinate”,“getExtentInternal”,“segments”,“getSegments”,“closestSegment”,“vertex”,“vertexPixel”,“pixel1”,“pixel2”,“squaredDist1”,“squaredDist2”,“dist”,“createOrUpdatePointerFeature_”,“createOrUpdateExtentFeature_”,“extentFeature”,“vertexFeature”,“getOpposingPoint”,“x_”,“y_”,“CIRCLE_CIRCUMFERENCE_INDEX”,“tempExtent”,“tempSegment”,“ModifyEventType”,“ModifyEvent”,“mapBrowserPointerEvent”,“compareIndexes”,“projectedDistanceToSegmentDataSquared”,“pointCoordinates”,“segmentData”,“distanceToCenterSquared”,“distanceToCircumference”,“closestOnSegmentData”,“Modify”,“boundHandleFeatureChange_”,“defaultDeleteCondition_”,“deleteCondition_”,“deleteCondition”,“insertVertexCondition_”,“insertVertexCondition”,“vertexSegments_”,“lastPixel_”,“ignoreNextSingleClick_”,“modified_”,“rBush_”,“changingFeature_”,“dragSegments_”,“SEGMENT_WRITERS_”,“writePointGeometry_”,“writeLineStringGeometry_”,“writePolygonGeometry_”,“writeMultiPointGeometry_”,“writeMultiLineStringGeometry_”,“writeMultiPolygonGeometry_”,“writeCircleGeometry_”,“writeGeometryCollectionGeometry_”,“handleSourceAdd_”,“handleSourceRemove_”,“addFeature_”,“handleFeatureAdd_”,“handleFeatureRemove_”,“lastPointerEvent_”,“writer”,“handlePointerAtPixel_”,“willModifyFeatures_”,“removeFeature_”,“removeFeatureSegmentData_”,“rBush”,“nodesToRemove”,“nodeToRemove”,“depth”,“rings”,“centerSegmentData”,“circumferenceSegmentData”,“featureSegments”,“geometry_1”,“createOrUpdateVertexFeature_”,“removePoint”,“dragSegment”,“setGeometryCoordinates_”,“insertVertices”,“vertexExtent”,“segmentDataMatches”,“componentSegments”,“segmentDataMatch”,“insertVertex_”,“nodes”,“vertexSegments”,“rTree”,“updateSegmentIndices_”,“newSegmentData”,“newSegmentData2”,“removeVertex_”,“component”,“newIndex”,“dragSegments”,“segmentsByFeature”,“deleted”,“SelectEventType”,“SELECT”,“SelectEvent”,“selected”,“deselected”,“addCondition_”,“removeCondition_”,“toggleCondition_”,“featureLayerAssociation_”,“filter_”,“addFeatureLayerAssociation_”,“multi_”,“layerFilter_”,“hitTolerance_”,“removeFeatureLayerAssociation_”,“Select”,“addCondition”,“removeCondition”,“toggleCondition”,“multi”,“featureStyleAssociation_”,“layers_1”,“getHitTolerance”,“setHitTolerance”,“removeSelectedStyle_”,“giveSelectedStyle_”,“getFeatureFromEvent”,“Snap”,“vertex_”,“edge_”,“featuresListenerKeys_”,“featureChangeListenerKeys_”,“indexedFeaturesExtents_”,“pendingFeatures_”,“opt_listen”,“feature_uid”,“segmentWriter”,“forEachFeatureAdd_”,“forEachFeatureRemove_”,“getFeatures_”,“snapTo”,“snapped”,“updateFeature_”,“featuresToUpdate”,“opt_unlisten”,“nodesToRemove_1”,“currentMap”,“closestSegmentData”,“projectedCoordinate”,“isCircle”,“closestOnCircle”,“TranslateEventType”,“TranslateEvent”,“startCoordinate”,“Translate”,“lastCoordinate_”,“startCoordinate_”,“lastFeature_”,“handleActiveChanged_”,“featuresAtPixel_”,“newCoordinate”,“deltaX_1”,“deltaY_1”,“oldMap”,“cloneGeometries”,“clonedGeometries”,“GeometryCollection”,“opt_geometries”,“geometries_”,“changeEventsKeys_”,“listenGeometriesChange_”,“unlistenGeometriesChange_”,“geometryCollection”,“setGeometries”,“simplifiedGeometries”,“simplified”,“simplifiedGeometryCollection”,“setGeometriesArray”,“FeatureFormat”,“defaultFeatureProjection”,“getReadOptions”,“adaptOptions”,“readFeature”,“readGeometry”,“writeFeature”,“writeFeatures”,“writeGeometry”,“transformGeometryWithOptions”,“transformed”,“decimals”,“power_1”,“transformExtentWithOptions”,“getObject”,“JSONFeature”,“readFeatureFromObject”,“readFeaturesFromObject”,“readGeometryFromObject”,“readProjectionFromObject”,“writeFeatureObject”,“writeFeaturesObject”,“writeGeometryObject”,“GEOMETRY_READERS”,“getGeometryLayout”,“paths”,“GEOMETRY_WRITERS”,“_a”,“_b”,“esriJSONPolygon”,“flatRing”,“outerRings”,“holes”,“hole”,“matched”,“outerRing”,“convertRings”,“geometryReader”,“hasZ”,“hasM”,“getHasZM”,“geometryWriter”,“esriJSON”,“hasZM”,“multiPoint”,“multiLineString”,“EsriJSON”,“esriJSONFeature”,“idField”,“esriJSONFeatures”,“objectIdFieldName”,“wkid”,“objects”,“XMLFeature”,“xmlSerializer_”,“XMLSerializer”,“doc”,“readFeatureFromDocument”,“readFeatureFromNode”,“readFeaturesFromDocument”,“readFeaturesFromNode”,“readGeometryFromDocument”,“readGeometryFromNode”,“readProjectionFromDocument”,“readProjectionFromNode”,“writeFeatureNode”,“serializeToString”,“writeFeaturesNode”,“writeGeometryNode”,“GMLNS”,“ONLY_WHITESPACE_RE”,“GMLBase”,“featureType”,“featureNS”,“srsName”,“schemaLocation”,“FEATURE_COLLECTION_PARSERS”,“namespace”,“readFeaturesInternal”,“child”,“ft”,“candidate”,“featureTypes”,“readFeatureElement”,“readGeometryElement”,“GEOMETRY_PARSERS”,“readFeatureElementInternal”,“asFeature”,“content”,“attName”,“fid”,“getAttributeNS”,“readPoint”,“readFlatCoordinatesFromNode_”,“readMultiPoint”,“MULTIPOINT_PARSERS_”,“readMultiLineString”,“MULTILINESTRING_PARSERS_”,“readMultiPolygon”,“MULTIPOLYGON_PARSERS_”,“pointMemberParser_”,“POINTMEMBER_PARSERS_”,“lineStringMemberParser_”,“LINESTRINGMEMBER_PARSERS_”,“polygonMemberParser_”,“POLYGONMEMBER_PARSERS_”,“readLineString”,“readFlatLinearRing_”,“GEOMETRY_FLAT_COORDINATES_PARSERS”,“readLinearRing”,“readPolygon”,“flatLinearRings”,“FLAT_LINEAR_RINGS_PARSERS”,“RING_PARSERS”,“readBooleanString”,“string”,“readDateTime”,“dateTime”,“readDecimal”,“readDecimalString”,“readNonNegativeInteger”,“readNonNegativeIntegerString”,“trim”,“writeBooleanTextNode”,“bool”,“writeStringTextNode”,“writeDecimalTextNode”,“toPrecision”,“writeNonNegativeIntegerTextNode”,“nonNegativeInteger”,“MULTIGEOMETRY_TO_MEMBER_NODENAME”,“GML3”,“surface_”,“surface”,“curve_”,“curve”,“multiCurve_”,“multiCurve”,“multiSurface_”,“multiSurface”,“readMultiCurve_”,“MULTICURVE_PARSERS_”,“readMultiSurface_”,“MULTISURFACE_PARSERS_”,“curveMemberParser_”,“CURVEMEMBER_PARSERS_”,“surfaceMemberParser_”,“SURFACEMEMBER_PARSERS_”,“readPatch_”,“PATCHES_PARSERS_”,“readSegment_”,“SEGMENTS_PARSERS_”,“readPolygonPatch_”,“readLineStringSegment_”,“interiorParser_”,“flatLinearRing”,“exteriorParser_”,“readSurface_”,“SURFACE_PARSERS_”,“readCurve_”,“CURVE_PARSERS_”,“readEnvelope_”,“ENVELOPE_PARSERS_”,“readFlatPos_”,“re”,“containerSrs”,“readFlatPosList_”,“contextDimension”,“dim”,“writePos_”,“srsDimension”,“getCoords_”,“opt_srsName”,“opt_hasZ”,“writePosList_”,“writePoint_”,“writeEnvelope”,“ENVELOPE_SERIALIZERS_”,“writeLinearRing_”,“posList”,“RING_NODE_FACTORY_”,“exteriorWritten”,“writeSurfaceOrPolygon_”,“RING_SERIALIZERS_”,“patches”,“writeSurfacePatches_”,“writeCurveOrLineString_”,“writeCurveSegments_”,“writeMultiSurfaceOrPolygon_”,“SURFACEORPOLYGONMEMBER_SERIALIZERS_”,“MULTIGEOMETRY_MEMBER_NODE_FACTORY_”,“writeMultiPoint_”,“POINTMEMBER_SERIALIZERS_”,“writeMultiCurveOrLineString_”,“LINESTRINGORCURVEMEMBER_SERIALIZERS_”,“writeRing_”,“writeSurfaceOrPolygonMember_”,“GEOMETRY_NODE_FACTORY_”,“writePointMember_”,“writeLineStringOrCurveMember_”,“line”,“writeGeometryElement”,“GEOMETRY_SERIALIZERS_”,“writeFeatureElement”,“writeFeatureMembers_”,“setAttributeNS”,“GML”,“GML2”,“readFlatCoordinates_”,“coordsGroups”,“readBox_”,“BOX_PARSERS_”,“innerBoundaryIsParser_”,“outerBoundaryIsParser_”,“createCoordinatesNode_”,“writeCoordinates_”,“GML32”,“NAMESPACE_URIS”,“FEATURE_READER”,“readRte”,“readTrk”,“readWpt”,“GPX_PARSERS”,“LINK_PARSERS”,“GPX_SERIALIZERS”,“RTE_SEQUENCE”,“RTE_SERIALIZERS”,“TRK_SEQUENCE”,“TRK_SERIALIZERS”,“writeWptType”,“GPX”,“readExtensions_”,“readExtensions”,“handleReadExtensions_”,“extensionsNode”,“featureReader”,“gpx”,“GPX_NODE_FACTORY”,“RTE_PARSERS”,“parseLink”,“parseExtensions”,“RTEPT_PARSERS”,“rteValues”,“layoutOptions”,“TRK_PARSERS”,“TRKSEG_PARSERS”,“TRKPT_PARSERS”,“trkValues”,“WPT_PARSERS”,“LINK_SEQUENCE”,“LINK_SERIALIZERS”,“writeLink”,“RTEPT_TYPE_SEQUENCE”,“TRKSEG_SERIALIZERS”,“TRKSEG_NODE_FACTORY”,“WPT_TYPE_SEQUENCE”,“WPT_TYPE_SERIALIZERS”,“date”,“getUTCFullYear”,“getUTCMonth”,“getUTCDate”,“getUTCHours”,“getUTCMinutes”,“getUTCSeconds”,“GEOMETRY_TYPE_TO_NODENAME”,“applyLayoutOptions”,“href”,“link”,“readGeometryCollectionGeometry”,“geoJSON”,“rightHanded”,“writeGeometryCollectionGeometry”,“GeoJSON”,“extractGeometryName_”,“extractGeometryName”,“geoJSONFeature”,“geoJSONFeatures”,“crs”,“DEFAULT_COLOR”,“DEFAULT_IMAGE_STYLE_ANCHOR”,“DEFAULT_IMAGE_STYLE_ANCHOR_X_UNITS”,“DEFAULT_IMAGE_STYLE_ANCHOR_Y_UNITS”,“DEFAULT_IMAGE_STYLE_SIZE”,“DEFAULT_IMAGE_STYLE_SRC”,“DEFAULT_IMAGE_SCALE_MULTIPLIER”,“TextFeature”,“readFeatureFromText”,“readFeaturesFromText”,“readGeometryFromText”,“readProjectionFromText”,“writeFeatureText”,“writeFeaturesText”,“writeGeometryText”,“IGCZ”,“BAROMETRIC”,“GPS”,“NONE”,“B_RECORD_RE”,“H_RECORD_RE”,“HFDTE_RECORD_RE”,“NEWLINE_RE”,“IGC”,“altitudeMode_”,“altitudeMode”,“year”,“month”,“day”,“lastDateTime”,“hour”,“minute”,“second”,“UTC”,“GX_NAMESPACE_URIS”,“ICON_ANCHOR_UNITS_MAP”,“PLACEMARK_PARSERS”,“extendedDataParser”,“regionParser”,“readMultiGeometry”,“readStyle”,“styleMapValue”,“readStyleMapValue”,“placemarkObject”,“readURI”,“GX_MULTITRACK_GEOMETRY_PARSERS”,“readGxTrack”,“NETWORK_LINK_PARSERS”,“REGION_PARSERS”,“LAT_LON_ALT_BOX_PARSERS”,“regionObject”,“LOD_PARSERS”,“lodObject”,“KML_SEQUENCE”,“KML_SERIALIZERS”,“DOCUMENT_SERIALIZERS”,“DOCUMENT_NODE_FACTORY”,“writePlacemark”,“DEFAULT_FILL_STYLE”,“DEFAULT_NO_IMAGE_STYLE”,“DEFAULT_IMAGE_STYLE”,“DEFAULT_TEXT_STROKE_STYLE”,“DEFAULT_TEXT_STYLE”,“DEFAULT_STYLE”,“DEFAULT_STYLE_ARRAY”,“KML”,“defaultStyle_”,“defaultStyle”,“extractStyles_”,“extractStyles”,“writeStyles_”,“writeStyles”,“sharedStyles_”,“showPointNames_”,“showPointNames”,“readDocumentOrFolder_”,“readPlacemark_”,“readSharedStyle_”,“readSharedStyleMap_”,“styleUrl”,“sharedStyles”,“nameStyle”,“drawName”,“createNameStyleFunction”,“foundStyle”,“findStyle”,“styleValue”,“createFeatureStyleFunction”,“styleUri”,“baseURI”,“fs”,“readName”,“readNameFromDocument”,“readNameFromNode”,“name_2”,“readNetworkLinks”,“networkLinks”,“readNetworkLinksFromDocument”,“readNetworkLinksFromNode”,“readRegion”,“regions”,“readRegionFromDocument”,“readRegionFromNode”,“kml”,“xmlnsUri”,“textOffset”,“imageScale”,“foundText”,“readColor”,“hexColor”,“readFlatCoordinates”,“readScale”,“STYLE_MAP_PARSERS”,“pairObject”,“PAIR_PARSERS”,“ICON_STYLE_PARSERS”,“iconObject”,“ICON_PARSERS”,“xunits”,“yunits”,“LABEL_STYLE_PARSERS”,“LINE_STYLE_PARSERS”,“POLY_STYLE_PARSERS”,“FLAT_LINEAR_RING_PARSERS”,“readFlatLinearRing”,“GX_TRACK_PARSERS”,“whens”,“when”,“gxTrackObject”,“readFlatCoordinatesFromNode”,“EXTRUDE_AND_ALTITUDE_MODE_PARSERS”,“MULTI_GEOMETRY_PARSERS”,“multiGeometry”,“homogeneous”,“setCommonGeometryProperties”,“INNER_BOUNDARY_IS_PARSERS”,“OUTER_BOUNDARY_IS_PARSERS”,“STYLE_PARSERS”,“styleObject”,“IconObject”,“drawIcon”,“hotSpot”,“outline”,“hasExtrude”,“hasTessellate”,“hasAltitudeMode”,“extrudes”,“tessellates”,“altitudeModes”,“DATA_PARSERS”,“EXTENDED_DATA_PARSERS”,“featureObject”,“displayName”,“SCHEMA_DATA_PARSERS”,“writeColorTextNode”,“rgba”,“abgr”,“hex”,“EXTENDEDDATA_NODE_SERIALIZERS”,“pair”,“createCDATASection”,“writeCDATASection”,“DATA_NODE_FACTORY”,“ICON_SEQUENCE”,“ICON_SERIALIZERS”,“GX_NODE_FACTORY”,“ICON_STYLE_SEQUENCE”,“ICON_STYLE_SERIALIZERS”,“icon”,“vec2”,“writeScaleTextNode”,“LABEL_STYLE_SEQUENCE”,“LABEL_STYLE_SERIALIZERS”,“LINE_STYLE_SEQUENCE”,“LINE_STYLE_SERIALIZERS”,“GEOMETRY_NODE_FACTORY”,“POINT_NODE_FACTORY”,“LINE_STRING_NODE_FACTORY”,“LINEAR_RING_NODE_FACTORY”,“POLYGON_NODE_FACTORY”,“MULTI_GEOMETRY_SERIALIZERS”,“writePrimitiveGeometry”,“writePolygon”,“writeMultiGeometry”,“BOUNDARY_IS_SERIALIZERS”,“writeBoundaryIs”,“PLACEMARK_SERIALIZERS”,“namesAndValues”,“names”,“STYLE_SEQUENCE”,“STYLE_SERIALIZERS”,“PLACEMARK_SEQUENCE”,“EXTENDEDDATA_NODE_FACTORY”,“PRIMITIVE_GEOMETRY_SEQUENCE”,“PRIMITIVE_GEOMETRY_SERIALIZERS”,“POLYGON_SERIALIZERS”,“INNER_BOUNDARY_NODE_FACTORY”,“OUTER_BOUNDARY_NODE_FACTORY”,“POLY_STYLE_SERIALIZERS”,“COLOR_NODE_FACTORY”,“iconProperties”,“RenderFeature”,“flatCoordinates_”,“flatMidpoints_”,“properties_”,“midpoint”,“layersPBFReader”,“layerPBFReader”,“featurePBFReader”,“readRawFeature”,“MVT”,“featureClass_”,“featureClass”,“layerName_”,“layerName”,“idProperty_”,“idProperty”,“readRawGeometry_”,“cmd”,“coordsLen”,“currentEnd”,“cmdLen”,“createFeature_”,“rawFeature”,“getGeometryType”,“prevEndIndex”,“ctor”,“pbfLayers”,“pbfLayer”,“WAY_PARSERS”,“ndrefs”,“readTag”,“PARSERS”,“tags”,“NODE_PARSERS”,“ways”,“OSMXML”,“flipXY”,“opt_destOffset”,“destOffset”,“encodeDeltas”,“numbers”,“opt_factor”,“factor”,“lastNumbers”,“encodeFloats”,“decodeDeltas”,“encoded”,“decodeFloats”,“encodeUnsignedInteger”,“encodeUnsignedIntegers”,“encodeSignedIntegers”,“current”,“decodeUnsignedIntegers”,“decodeSignedIntegers”,“Polyline”,“factor_”,“geometryLayout_”,“geometryLayout”,“TopoJSON”,“topoJSONTopology”,“arcs”,“transformArc”,“transformArcs”,“topoJSONFeatures”,“objectName”,“readFeaturesFromGeometryCollection”,“readFeatureFromGeometry”,“transformVertex”,“concatenateArcs”,“polyArray”,“ringCoords”,“indices”,“Filter”,“tagName_”,“getTagName”,“LogicalNary”,“conditions”,“And”,“Bbox”,“Spatial”,“Contains”,“Comparison”,“propertyName”,“During”,“ComparisonBinary”,“expression”,“opt_matchCase”,“matchCase”,“EqualTo”,“GreaterThan”,“GreaterThanOrEqualTo”,“Intersects”,“IsBetween”,“lowerBoundary”,“upperBoundary”,“IsLike”,“pattern”,“opt_wildCard”,“opt_singleChar”,“opt_escapeChar”,“wildCard”,“singleChar”,“escapeChar”,“IsNull”,“LessThan”,“LessThanOrEqualTo”,“Not”,“NotEqualTo”,“Or”,“Within”,“and”,“Function”,“TRANSACTION_SUMMARY_PARSERS”,“TRANSACTION_RESPONSE_PARSERS”,“INSERT_RESULTS_PARSERS”,“QUERY_SERIALIZERS”,“TRANSACTION_SERIALIZERS”,“gmlVersion”,“featurePrefix”,“typeName”,“getTypeName”,“XMLNS”,“writeOgcFidFilter”,“WFSNS”,“nativeElement”,“vendorId”,“safeToIgnore”,“FEATURE_PREFIX”,“OGCNS”,“FESNS”,“SCHEMA_LOCATIONS”,“DEFAULT_VERSION”,“WFS”,“featureType_”,“featureNS_”,“gmlFormat_”,“gmlFormat”,“schemaLocation_”,“getFeatureType”,“setFeatureType”,“readTransactionResponse”,“readTransactionResponseFromDocument”,“readTransactionResponseFromNode”,“readFeatureCollectionMetadata”,“readFeatureCollectionMetadataFromDocument”,“readFeatureCollectionMetadataFromNode”,“writeGetFeature”,“handle”,“outputFormat”,“maxFeatures”,“resultType”,“viewParams”,“propertyNames”,“GETFEATURE_SERIALIZERS”,“writeTransaction”,“inserts”,“updates”,“deletes”,“baseObj”,“gmlOptions”,“nativeElements”,“OGC_FID_PARSERS”,“prefix”,“writeFilterCondition”,“valueReference”,“timePeriod”,“writeTimeInstant”,“writeLogicalFilter”,“writeOgcPropertyName”,“writeComparisonFilter”,“writeOgcLiteral”,“writeOgcExpression”,“timeInstant”,“timePosition”,“GeometryConstructor”,“Z”,“TokenType”,“WKTGeometryType”,“toUpperCase”,“Lexer”,“wkt”,“index_”,“isAlpha_”,“isNumeric_”,“opt_decimal”,“isWhiteSpace_”,“nextChar_”,“nextToken”,“readNumber_”,“readText_”,“scientificNotation”,“substring”,“Parser”,“lexer”,“lexer_”,“token_”,“layout_”,“consume_”,“isTokenType”,“isMatch”,“parseGeometry_”,“parseGeometryLayout_”,“dimToken”,“dimInfo”,“parseGeometryCollectionText_”,“isEmptyGeometry_”,“formatErrorMessage_”,“parsePointText_”,“parsePoint_”,“parseLineStringText_”,“parsePointList_”,“parsePolygonText_”,“parseLineStringTextList_”,“parseMultiPointText_”,“parsePointTextList_”,“parseMultiLineStringText_”,“parseMultiPolygonText_”,“parsePolygonTextList_”,“token”,“geomType”,“WKT”,“splitCollection_”,“splitCollection”,“parse_”,“encode”,“encodePointGeometry”,“encodeLineStringGeometry”,“encodePolygonGeometry”,“GeometryEncoder”,“components”,“geoms”,“enc”,“geometryEncoder”,“encodeGeometryLayout”,“NAMESPACE_URI”,“readHref”,“readFromDocument”,“readFromNode”,“SERVICE_PARSERS”,“CAPABILITY_PARSERS”,“REQUEST_PARSERS”,“EXCEPTION_PARSERS”,“LAYER_PARSERS”,“WMSCapabilities”,“wmsCapabilityObject”,“readKeywordList”,“CONTACT_INFORMATION_PARSERS”,“CONTACT_PERSON_PARSERS”,“CONTACT_ADDRESS_PARSERS”,“geographicBoundingBox”,“EX_GEOGRAPHIC_BOUNDING_BOX_PARSERS”,“westBoundLongitude”,“southBoundLatitude”,“eastBoundLongitude”,“northBoundLatitude”,“ATTRIBUTION_PARSERS”,“authorityObject”,“readFormatOnlineresource”,“metadataObject”,“parentLayerObject”,“layerObject”,“queryable”,“cascaded”,“noSubsets”,“fixedWidth”,“fixedHeight”,“childValue”,“parentValue”,“readSizedFormatOnlineresource”,“readOperationType”,“OPERATIONTYPE_PARSERS”,“DCPTYPE_PARSERS”,“HTTP_PARSERS”,“FORMAT_ONLINERESOURCE_PARSERS”,“KEYWORDLIST_PARSERS”,“formatOnlineresource”,“WMSGetFeatureInfo”,“readFeatures_”,“layerElement”,“layerFeatures”,“gmlFeatures”,“SERVICE_IDENTIFICATION_PARSERS”,“SERVICE_PROVIDER_PARSERS”,“OPERATIONS_METADATA_PARSERS”,“OWS”,“owsObject”,“ADDRESS_PARSERS”,“ALLOWED_VALUES_PARSERS”,“CONSTRAINT_PARSERS”,“CONTACT_INFO_PARSERS”,“PHONE_PARSERS”,“DCP_PARSERS”,“REQUEST_METHOD_PARSERS”,“OPERATION_PARSERS”,“SERVICE_CONTACT_PARSERS”,“CONTENTS_PARSERS”,“WMTSCapabilities”,“owsParser_”,“WMTSCapabilityObject”,“TMS_PARSERS”,“isDefault”,“TMS_LINKS_PARSERS”,“DIMENSION_PARSERS”,“resourceType”,“WGS84_BBOX_READERS”,“legend”,“TMS_LIMITS_LIST_PARSERS”,“TMS_LIMITS_PARSERS”,“readCoordinates”,“TM_PARSERS”,“isFullScreenSupported”,“webkitRequestFullscreen”,“msRequestFullscreen”,“msFullscreenEnabled”,“requestFullscreen”,“fullscreenEnabled”,“isFullScreen”,“webkitIsFullScreen”,“msFullscreenElement”,“fullscreenElement”,“requestFullScreen”,“FullScreen”,“cssClassName_”,“labelNode_”,“labelActive”,“labelActiveNode_”,“button_”,“setClassName_”,“handleFullScreen_”,“exitFullscreen”,“msExitFullscreen”,“webkitExitFullscreen”,“requestFullScreenWithKeys”,“handleFullScreenChange_”,“fullscreen”,“activeClassName”,“inactiveClassName”,“nextClassName”,“mapProjection_”,“MousePosition”,“coordinateFormat”,“setCoordinateFormat”,“undefinedHTML_”,“undefinedHTML”,“renderOnMouseOut_”,“renderedHTML_”,“getCoordinateFormat”,“handleMouseMove”,“updateHTML_”,“handleMouseOut”,“html”,“ControlledMap”,“validateExtent_”,“updateBox_”,“OverviewMap”,“boundHandleRotationChanged_”,“handleRotationChanged_”,“viewExtent_”,“ovmapDiv_”,“ovmap_”,“ovmap”,“boxSizing”,“boxOverlay_”,“scope”,“overlayBox”,“mousePosition”,“endMoving”,“oldView”,“unbindView_”,“handleMapPropertyChange_”,“bindView_”,“resetExtent_”,“newView”,“ovmapSize”,“ovextent”,“topLeftPixel”,“bottomRightPixel”,“boxWidth”,“boxHeight”,“ovmapWidth”,“ovmapHeight”,“recenter_”,“ovview”,“steps”,“MAX_RATIO”,“ovresolution”,“getOverviewMap”,“UNITS_PROP”,“IMPERIAL”,“NAUTICAL”,“METRIC”,“US”,“LEADING_DIGITS”,“viewState_”,“ScaleLine”,“bar”,“innerElement_”,“minWidth_”,“minWidth”,“renderedWidth_”,“handleUnitsChanged_”,“setUnits”,“scaleBar_”,“scaleBarSteps_”,“scaleBarText_”,“pointResolutionUnits”,“nominalCount”,“suffix”,“metersPerDegree”,“decimalCount”,“createScaleBar”,“mapScale”,“getScaleForResolution”,“scaleSteps”,“stepWidth”,“backgroundColor”,“createMarker”,“createStepText”,“isLast”,“lengthString”,“Direction”,“VERTICAL”,“HORIZONTAL”,“sliderInitialized_”,“initSlider_”,“currentResolution_”,“setThumbPosition_”,“ZoomSlider”,“direction_”,“heightLimit_”,“widthLimit_”,“startX_”,“startY_”,“thumbSize_”,“thumbElement”,“containerElement”,“handleDraggerStart_”,“handleDraggerDrag_”,“handleDraggerEnd_”,“handleContainerClick_”,“containerSize”,“thumb”,“thumbWidth”,“thumbHeight”,“relativePosition”,“getRelativePosition_”,“getResolutionForPosition_”,“drag”,“getPositionForResolution_”,“ZoomToExtent”,“handleZoomToExtent”,“ol”,“featureloader”,“loadingstrategy”,“proj4”,“webgl”,“sphere”,“util”,“unByKey”,“stableSort”,“compareFnc”,“colorlike”,“createStringXY”,“toStringHDMS”,“upAndDown”,“click”,“doubleClick”,“focus”,“penOnly”,“pointerEvt”,“platformModifierKeyOnly”,“pointerMove”,“touchOnly”,“setWithCredentials”,“xhrWithCredentials”,“writeFilter”,“between”,“during”,“equalTo”,“greaterThan”,“greaterThanOrEqualTo”,“isNull”,“lessThan”,“lessThanOrEqualTo”,“like”,“not”,“notEqualTo”,“or”,“within”,“createBox”,“boxCoordinates”,“createRegularPolygon”,“Group”,“fromLonLat”,“projCodes”,“defs”,“def”,“axis”,“to_meter”,“code1”,“proj1”,“code2”,“proj2”,“toLonLat”,“lonLat”,“getRenderPixel”,“getVectorContext”,“toContext”,“PointsLayer”,“ImageStatic”,“optionsFromCapabilities”,“wmtsCap”,“tileMatrixSets”,“supportedCRS”,“matrixSetObj”,“projConfig”,“wgs84BoundingBox”,“wgs84ProjectionExtent”,“gets”,“encodings”,“Buffer”,“Helper”,“PostProcessingPass”,“RenderTarget”],“mappings”:“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”,“file”:“ol.js”,“sourcesContent”:[“(function webpackUniversalModuleDefinition(root, factory) {ntif(typeof exports === 'object' && typeof module === 'object')nttmodule.exports = factory();ntelse if(typeof define === 'function' && define.amd)nttdefine([], factory);ntelse if(typeof exports === 'object’)nttexports = factory();ntelsenttroot = factory();n})(window, function() {nreturn ”,“ t// The module cachen tvar installedModules = {};nn t// The require functionn tfunction webpack_require(moduleId) {nn tt// Check if module is in cachen ttif(installedModules[moduleId]) {n tttreturn installedModules.exports;n tt}n tt// Create a new module (and put it into the cache)n ttvar module = installedModules = {n ttti: moduleId,n tttl: false,n tttexports: {}n tt};nn tt// Execute the module functionn ttmodules[moduleId].call(module.exports, module, module.exports, webpack_require);nn tt// Flag the module as loadedn ttmodule.l = true;nn tt// Return the exports of the modulen ttreturn module.exports;n t}nnn t// expose the modules object (webpack_modules)n t_webpack_require_.m = modules;nn t// expose the module cachen t_webpack_require_.c = installedModules;nn t// define getter function for harmony exportsn t_webpack_require_.d = function(exports, name, getter) {n ttif(!webpack_require.o(exports, name)) {n tttObject.defineProperty(exports, name, { enumerable: true, get: getter });n tt}n t};nn t// define __esModule on exportsn t_webpack_require_.r = function(exports) {n ttif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {n tttObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });n tt}n ttObject.defineProperty(exports, '__esModule', { value: true });n t};nn t// create a fake namespace objectn t// mode & 1: value is a module id, require itn t// mode & 2: merge all properties of value into the nsn t// mode & 4: return value when already ns objectn t// mode & 8|1: behave like requiren t_webpack_require_.t = function(value, mode) {n ttif(mode & 1) value = webpack_require(value);n ttif(mode & 8) return value;n ttif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;n ttvar ns = Object.create(null);n tt_webpack_require_.r(ns);n ttObject.defineProperty(ns, 'default', { enumerable: true, value: value });n ttif(mode & 2 && typeof value != 'string') for(var key in value) webpack_require.d(ns, key, function(key) { return value; }.bind(null, key));n ttreturn ns;n t};nn t// getDefaultExport function for compatibility with non-harmony modulesn t_webpack_require_.n = function(module) {n ttvar getter = module && module.__esModule ?n tttfunction getDefault() { return module; } :n tttfunction getModuleExports() { return module; };n tt_webpack_require_.d(getter, 'a', getter);n ttreturn getter;n t};nn t// Object.prototype.hasOwnProperty.calln t_webpack_require_.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };nn t// webpack_public_pathn t_webpack_require_.p = "";nnn t// Load entry module and return exportsn treturn webpack_require(_webpack_require_.s = 7);n”,“!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(t=t||self).RBush=i()}(this,function(){"use strict";function t(t,r,e,a,h){!function t(n,r,e,a,h){for(;a>e;){if(a-e>600){var o=a-e+1,s=r-e+1,l=Math.log(o),f=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*f*(o-f)/o)*(s-o/2<0?-1:1),m=Math.max(e,Math.floor(r-s*f/o+u)),c=Math.min(a,Math.floor(r+(o-s)*f/o+u));t(n,r,m,c,h)}var p=n,d=e,x=a;for(i(n,e,r),h(n,p)>0&&i(n,e,a);d<x;){for(i(n,d,x),d++,x–;h(n,p)<0;)d++;for(;h(n,p)>0;)x–}0===h(n,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;t=t,t=r}function n(t,i){return t<i?-1:t>i?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))return r;return-1}function a(t,i){h(t,0,t.children.length,i,t)}function h(t,i,n,r,e){e||(e=p(null)),e.minX=1/0,e.minY=1/0,e.maxX=-1/0,e.maxY=-1/0;for(var a=i;a<n;a++){var h=t.children;o(e,t.leaf?r(h):h)}return e}function o(t,i){return t.minX=Math.min(t.minX,i.minX),t.minY=Math.min(t.minY,i.minY),t.maxX=Math.max(t.maxX,i.maxX),t.maxY=Math.max(t.maxY,i.maxY),t}function s(t,i){return t.minX-i.minX}function l(t,i){return t.minY-i.minY}function f(t){return(t.maxX-t.minX)*(t.maxY-t.minY)}function u(t){return t.maxX-t.minX+(t.maxY-t.minY)}function m(t,i){return t.minX<=i.minX&&t.minY<=i.minY&&i.maxX<=t.maxX&&i.maxY<=t.maxY}function c(t,i){return i.minX<=t.maxX&&i.minY<=t.maxY&&i.maxX>=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=;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<i.children.length;a++){var h=i.children,o=i.leaf?r(h):h;c(t,o)&&(i.leaf?n.push(h):m(t,o)?this._all(h,n):e.push(h))}i=e.pop()}return n},r.prototype.collides=function(t){var i=this.data;if(!c(t,i))return!1;for(var n=[];i;){for(var r=0;r<i.children.length;r++){var e=i.children,a=i.leaf?this.toBBox(e):e;if(c(t,a)){if(i.leaf||m(t,a))return!0;n.push(e)}}i=n.pop()}return!1},r.prototype.load=function(t){if(!t||!t.length)return this;if(t.length<this._minEntries){for(var i=0;i);return this}var n=this._build(t.slice(),0,t.length-1,0);if(this.data.children.length)if(this.data.height===n.height)this._splitRoot(this.data,n);else{if(this.data.height<n.height){var r=this.data;this.data=n,n=r}this._insert(n,this.data.height-n.height-1,!0)}else this.data=n;return this},r.prototype.insert=function(t){return t&&this._insert(t,this.data.height-1),this},r.prototype.clear=function(){return this.data=p([]),this},r.prototype.remove=function(t,i){if(!t)return this;for(var n,r,a,h=this.data,o=this.toBBox(t),s=[],l=;h||s.length;){if(h||(h=s.pop(),r=s,n=l.pop(),a=!0),h.leaf){var f=e(t,h.children,i);if(-1!==f)return h.children.splice(f,1),s.push(h),this._condense(s),this}a||h.leaf||!m(h,o)?r?(n++,h=r.children,a=!1):h=null:(s.push(h),l.push(n),n=0,r=h,h=h.children)}return this},r.prototype.toBBox=function(t){return t},r.prototype.compareMinX=function(t,i){return t.minX-i.minX},r.prototype.compareMinY=function(t,i){return t.minY-i.minY},r.prototype.toJSON=function(){return this.data},r.prototype.fromJSON=function(t){return this.data=t,this},r.prototype._all=function(t,i){for(var n=[];t;)t.leaf?i.push.apply(i,t.children):n.push.apply(n,t.children),t=n.pop();return i},r.prototype._build=function(t,i,n,r){var e,h=n-i+1,o=this._maxEntries;if(h<=o)return a(e=p(t.slice(i,n+1)),this.toBBox),e;r||(r=Math.ceil(Math.log(h)/Math.log(o)),o=Math.ceil(h/Math.pow(o,r-1))),(e=p([])).leaf=!1,e.height=r;var s=Math.ceil(h/o),l=s*Math.ceil(Math.sqrt(o));d(t,i,n,l,this.compareMinX);for(var f=i;f<=n;f+=l){var u=Math.min(f+l-1,n);d(t,f,u,s,this.compareMinY);for(var m=f;m<=u;m+=s){var c=Math.min(m+s-1,u);e.children.push(this._build(t,m,c,r-1))}}return a(e,this.toBBox),e},r.prototype._chooseSubtree=function(t,i,n,r){for(;r.push(i),!i.leaf&&r.length-1!==n;){for(var e=1/0,a=1/0,h=void 0,o=0;o<i.children.length;o++){var s=i.children,l=f(s),u=(m=t,c=s,(Math.max(c.maxX,m.maxX)-Math.min(c.minX,m.minX))*(Math.max(c.maxY,m.maxY)-Math.min(c.minY,m.minY))-l);u<a?(a=u,e=l<e?l:e,h=s):u===a&&l<e&&(e=l,h=s)}i=h||i.children}var m,c;return i},r.prototype._insert=function(t,i,n){var r=n?t:this.toBBox(t),e=[],a=this._chooseSubtree(r,this.data,i,e);for(a.children.push(t),o(a,r);i>=0&&e.children.length>this._maxEntries;)this._split(e,i),i–;this._adjustParentBBoxes(r,e,i)},r.prototype._split=function(t,i){var n=t,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.children.push(o):this._splitRoot(n,o)},r.prototype._splitRoot=function(t,i){this.data=p(),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<m?(m=v,r=p,c=M<c?M:c):v===m&&M<c&&(c=M,r=p)}return r||n-i},r.prototype._chooseSplitAxis=function(t,i,n){var r=t.leaf?this.compareMinX:s,e=t.leaf?this.compareMinY:l;this._allDistMargin(t,i,n,r)<this._allDistMargin(t,i,n,e)&&t.children.sort®},r.prototype._allDistMargin=function(t,i,n,r){t.children.sort®;for(var e=this.toBBox,a=h(t,0,i,e),s=h(t,n-i,n,e),l=u(a)+u(s),f=i;f<n-i;f++){var m=t.children;o(a,t.leaf?e(m):m),l+=u(a)}for(var c=n-i-1;c>=i;c–){var p=t.children;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,t)},r.prototype._condense=function(t){for(var i=t.length-1,n=void 0;i>=0;i–)0===t.children.length?i>0?(n=t.children).splice(n.indexOf(t),1):this.clear():a(t,this.toBBox)},r});n”,“/*!n * PEP v0.5.3 | github.com/jquery/PEPn * Copyright jQuery Foundation and other contributors | jquery.org/licensen */nn(function (global, factory) {n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :n typeof define === 'function' && define.amd ? define(factory) :n (global.PointerEventsPolyfill = factory());n}(this, function () { 'use strict';nn /**n * This is the constructor for new PointerEvents.n *n * New Pointer Events must be given a type, and an optional dictionary ofn * initialization properties.n *n * Due to certain platform requirements, events returned from the constructorn * identify as MouseEvents.n *n * @constructorn * @param {String} inType The type of the event to create.n * @param {Object} [inDict] An optional dictionary of initial event properties.n * @return {Event} A new PointerEvent of type `inType`, initialized with properties from `inDict`.n */n var MOUSE_PROPS = [n 'bubbles',n 'cancelable',n 'view',n 'screenX',n 'screenY',n 'clientX',n 'clientY',n 'ctrlKey',n 'altKey',n 'shiftKey',n 'metaKey',n 'button',n 'relatedTarget',n 'pageX',n 'pageY'n ];nn var MOUSE_DEFAULTS = [n false,n false,n null,n 0,n 0,n 0,n 0,n false,n false,n false,n false,n 0,n null,n 0,n 0n ];nn function PointerEvent(inType, inDict) {n inDict = inDict || Object.create(null);nn var e = document.createEvent('Event');n e.initEvent(inType, inDict.bubbles || false, inDict.cancelable || false);nn // define inherited MouseEvent propertiesn // skip bubbles and cancelable since they're set above in initEvent()n for (var i = 2, p; i < MOUSE_PROPS.length; i++) {n p = MOUSE_PROPS;n e = inDict || MOUSE_DEFAULTS;n }n e.buttons = inDict.buttons || 0;nn // Spec requires that pointers without pressure specified use 0.5 for downn // state and 0 for up state.n var pressure = 0;nn if (inDict.pressure !== undefined && e.buttons) {n pressure = inDict.pressure;n } else {n pressure = e.buttons ? 0.5 : 0;n }nn // add x/y properties aliased to clientX/Yn e.x = e.clientX;n e.y = e.clientY;nn // define the properties of the PointerEvent interfacen e.pointerId = inDict.pointerId || 0;n e.width = inDict.width || 1;n e.height = inDict.height || 1;n e.pressure = pressure;n e.tiltX = inDict.tiltX || 0;n e.tiltY = inDict.tiltY || 0;n e.twist = inDict.twist || 0;n e.tangentialPressure = inDict.tangentialPressure || 0;n e.pointerType = inDict.pointerType || '';n e.hwTimestamp = inDict.hwTimestamp || 0;n e.isPrimary = inDict.isPrimary || false;n e.detail = 0;n return e;n }nn /**n * This module implements a map of pointer statesn */n var USE_MAP = window.Map && window.Map.prototype.forEach;n var PointerMap = USE_MAP ? Map : SparseArrayMap;nn function SparseArrayMap() {n this.array = [];n this.size = 0;n }nn SparseArrayMap.prototype = {n set: function(k, v) {n if (v === undefined) {n return this.delete(k);n }n if (!this.has(k)) {n this.size++;n }n this.array = v;n },n has: function(k) {n return this.array !== undefined;n },n delete: function(k) {n if (this.has(k)) {n delete this.array;n this.size–;n }n },n get: function(k) {n return this.array;n },n clear: function() {n this.array.length = 0;n this.size = 0;n },nn // return value, key, mapn forEach: function(callback, thisArg) {n return this.array.forEach(function(v, k) {n callback.call(thisArg, v, k, this);n }, this);n }n };nn var CLONE_PROPS = [nn // MouseEventn 'bubbles',n 'cancelable',n 'view',n 'detail',n 'screenX',n 'screenY',n 'clientX',n 'clientY',n 'ctrlKey',n 'altKey',n 'shiftKey',n 'metaKey',n 'button',n 'relatedTarget',nn // DOM Level 3n 'buttons',nn // PointerEventn 'pointerId',n 'width',n 'height',n 'pressure',n 'tiltX',n 'tiltY',n 'pointerType',n 'hwTimestamp',n 'isPrimary',nn // event instancen 'type',n 'target',n 'currentTarget',n 'which',n 'pageX',n 'pageY',n 'timeStamp'n ];nn var CLONE_DEFAULTS = [nn // MouseEventn false,n false,n null,n null,n 0,n 0,n 0,n 0,n false,n false,n false,n false,n 0,n null,nn // DOM Level 3n 0,nn // PointerEventn 0,n 0,n 0,n 0,n 0,n 0,n '',n 0,n false,nn // event instancen '',n null,n null,n 0,n 0,n 0,n 0n ];nn var BOUNDARY_EVENTS = {n 'pointerover': 1,n 'pointerout': 1,n 'pointerenter': 1,n 'pointerleave': 1n };nn var HAS_SVG_INSTANCE = (typeof SVGElementInstance !== 'undefined');nn /**n * This module is for normalizing events. Mouse and Touch events will ben * collected here, and fire PointerEvents that have the same semantics, non * matter the source.n * Events fired:n * - pointerdown: a pointing is addedn * - pointerup: a pointer is removedn * - pointermove: a pointer is movedn * - pointerover: a pointer crosses into an elementn * - pointerout: a pointer leaves an elementn * - pointercancel: a pointer will no longer generate eventsn */n var dispatcher = {n pointermap: new PointerMap(),n eventMap: Object.create(null),n captureInfo: Object.create(null),nn // Scope objects for native events.n // This exists for ease of testing.n eventSources: Object.create(null),n eventSourceList: [],n /**n * Add a new event source that will generate pointer events.n *n * `inSource` must contain an array of event names named `events`, andn * functions with the names specified in the `events` array.n * @param {string} name A name for the event sourcen * @param {Object} source A new source of platform events.n */n registerSource: function(name, source) {n var s = source;n var newEvents = s.events;n if (newEvents) {n newEvents.forEach(function(e) {n if (s) {n this.eventMap = s.bind(s);n }n }, this);n this.eventSources = s;n this.eventSourceList.push(s);n }n },n register: function(element) {n var l = this.eventSourceList.length;n for (var i = 0, es; (i < l) && (es = this.eventSourceList); i++) {nn // call eventsource registern es.register.call(es, element);n }n },n unregister: function(element) {n var l = this.eventSourceList.length;n for (var i = 0, es; (i < l) && (es = this.eventSourceList); i++) {nn // call eventsource registern es.unregister.call(es, element);n }n },n contains: /*scope.external.contains || */function(container, contained) {n try {n return container.contains(contained);n } catch (ex) {nn // most likely: bugzilla.mozilla.org/show_bug.cgi?id=208427n return false;n }n },nn // EVENTSn down: function(inEvent) {n inEvent.bubbles = true;n this.fireEvent('pointerdown', inEvent);n },n move: function(inEvent) {n inEvent.bubbles = true;n this.fireEvent('pointermove', inEvent);n },n up: function(inEvent) {n inEvent.bubbles = true;n this.fireEvent('pointerup', inEvent);n },n enter: function(inEvent) {n inEvent.bubbles = false;n this.fireEvent('pointerenter', inEvent);n },n leave: function(inEvent) {n inEvent.bubbles = false;n this.fireEvent('pointerleave', inEvent);n },n over: function(inEvent) {n inEvent.bubbles = true;n this.fireEvent('pointerover', inEvent);n },n out: function(inEvent) {n inEvent.bubbles = true;n this.fireEvent('pointerout', inEvent);n },n cancel: function(inEvent) {n inEvent.bubbles = true;n this.fireEvent('pointercancel', inEvent);n },n leaveOut: function(event) {n this.out(event);n this.propagate(event, this.leave, false);n },n enterOver: function(event) {n this.over(event);n this.propagate(event, this.enter, true);n },nn // LISTENER LOGICn eventHandler: function(inEvent) {nn // This is used to prevent multiple dispatch of pointerevents fromn // platform events. This can happen when two elements in different scopesn // are set up to create pointer events, which is relevant to Shadow DOM.n if (inEvent._handledByPE) {n return;n }n var type = inEvent.type;n var fn = this.eventMap && this.eventMap;n if (fn) {n fn(inEvent);n }n inEvent._handledByPE = true;n },nn // set up event listenersn listen: function(target, events) {n events.forEach(function(e) {n this.addEvent(target, e);n }, this);n },nn // remove event listenersn unlisten: function(target, events) {n events.forEach(function(e) {n this.removeEvent(target, e);n }, this);n },n addEvent: /*scope.external.addEvent || */function(target, eventName) {n target.addEventListener(eventName, this.boundHandler);n },n removeEvent: /*scope.external.removeEvent || */function(target, eventName) {n target.removeEventListener(eventName, this.boundHandler);n },nn // EVENT CREATION AND TRACKINGn /**n * Creates a new Event of type `inType`, based on the information inn * `inEvent`.n *n * @param {string} inType A string representing the type of event to createn * @param {Event} inEvent A platform event with a targetn * @return {Event} A PointerEvent of type `inType`n */n makeEvent: function(inType, inEvent) {nn // relatedTarget must be null if pointer is capturedn if (this.captureInfo) {n inEvent.relatedTarget = null;n }n var e = new PointerEvent(inType, inEvent);n if (inEvent.preventDefault) {n e.preventDefault = inEvent.preventDefault;n }n e._target = e._target || inEvent.target;n return e;n },nn // make and dispatch an event in one calln fireEvent: function(inType, inEvent) {n var e = this.makeEvent(inType, inEvent);n return this.dispatchEvent(e);n },n /**n * Returns a snapshot of inEvent, with writable properties.n *n * @param {Event} inEvent An event that contains properties to copy.n * @return {Object} An object containing shallow copies of `inEvent`'sn * properties.n */n cloneEvent: function(inEvent) {n var eventCopy = Object.create(null);n var p;n for (var i = 0; i < CLONE_PROPS.length; i++) {n p = CLONE_PROPS;n eventCopy = inEvent || CLONE_DEFAULTS;nn // Work around SVGInstanceElement shadow treen // Return the <use> element that is represented by the instance for Safari, Chrome, IE.n // This is the behavior implemented by Firefox.n if (HAS_SVG_INSTANCE && (p === 'target' || p === 'relatedTarget')) {n if (eventCopy instanceof SVGElementInstance) {n eventCopy = eventCopy.correspondingUseElement;n }n }n }nn // keep the semantics of preventDefaultn if (inEvent.preventDefault) {n eventCopy.preventDefault = function() {n inEvent.preventDefault();n };n }n return eventCopy;n },n getTarget: function(inEvent) {n var capture = this.captureInfo;n if (!capture) {n return inEvent._target;n }n if (inEvent._target === capture || !(inEvent.type in BOUNDARY_EVENTS)) {n return capture;n }n },n propagate: function(event, fn, propagateDown) {n var target = event.target;n var targets = [];nn // Order of conditions due to document.contains() missing in IE.n while (target != null && target !== document && !target.contains(event.relatedTarget)) {n targets.push(target);n target = target.parentNode;nn // Touch: Do not propagate if node is detached.n if (!target) {n return;n }n }n if (propagateDown) {n targets.reverse();n }n targets.forEach(function(target) {n event.target = target;n fn.call(this, event);n }, this);n },n setCapture: function(inPointerId, inTarget, skipDispatch) {n if (this.captureInfo) {n this.releaseCapture(inPointerId, skipDispatch);n }nn this.captureInfo = inTarget;n this.implicitRelease = this.releaseCapture.bind(this, inPointerId, skipDispatch);n document.addEventListener('pointerup', this.implicitRelease);n document.addEventListener('pointercancel', this.implicitRelease);nn var e = new PointerEvent('gotpointercapture', { bubbles: true });n e.pointerId = inPointerId;n e._target = inTarget;nn if (!skipDispatch) {n this.asyncDispatchEvent(e);n }n },n releaseCapture: function(inPointerId, skipDispatch) {n var t = this.captureInfo;n if (!t) {n return;n }nn this.captureInfo = undefined;n document.removeEventListener('pointerup', this.implicitRelease);n document.removeEventListener('pointercancel', this.implicitRelease);nn var e = new PointerEvent('lostpointercapture', { bubbles: true });n e.pointerId = inPointerId;n e._target = t;nn if (!skipDispatch) {n this.asyncDispatchEvent(e);n }n },n /**n * Dispatches the event to its target.n *n * @param {Event} inEvent The event to be dispatched.n * @return {Boolean} True if an event handler returns true, false otherwise.n */n dispatchEvent: /*scope.external.dispatchEvent || */function(inEvent) {n var t = this.getTarget(inEvent);n if (t) {n return t.dispatchEvent(inEvent);n }n },n asyncDispatchEvent: function(inEvent) {n requestAnimationFrame(this.dispatchEvent.bind(this, inEvent));n }n };n dispatcher.boundHandler = dispatcher.eventHandler.bind(dispatcher);nn var targeting = {n shadow: function(inEl) {n if (inEl) {n return inEl.shadowRoot || inEl.webkitShadowRoot;n }n },n canTarget: function(shadow) {n return shadow && Boolean(shadow.elementFromPoint);n },n targetingShadow: function(inEl) {n var s = this.shadow(inEl);n if (this.canTarget(s)) {n return s;n }n },n olderShadow: function(shadow) {n var os = shadow.olderShadowRoot;n if (!os) {n var se = shadow.querySelector('shadow');n if (se) {n os = se.olderShadowRoot;n }n }n return os;n },n allShadows: function(element) {n var shadows = [];n var s = this.shadow(element);n while (s) {n shadows.push(s);n s = this.olderShadow(s);n }n return shadows;n },n searchRoot: function(inRoot, x, y) {n if (inRoot) {n var t = inRoot.elementFromPoint(x, y);n var st, sr;nn // is element a shadow host?n sr = this.targetingShadow(t);n while (sr) {nn // find the the element inside the shadow rootn st = sr.elementFromPoint(x, y);n if (!st) {nn // check for older shadowsn sr = this.olderShadow(sr);n } else {nn // shadowed element may contain a shadow rootn var ssr = this.targetingShadow(st);n return this.searchRoot(ssr, x, y) || st;n }n }nn // light dom element is the targetn return t;n }n },n owner: function(element) {n var s = element;nn // walk up until you hit the shadow root or documentn while (s.parentNode) {n s = s.parentNode;n }nn // the owner element is expected to be a Document or ShadowRootn if (s.nodeType !== Node.DOCUMENT_NODE && s.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) {n s = document;n }n return s;n },n findTarget: function(inEvent) {n var x = inEvent.clientX;n var y = inEvent.clientY;nn // if the listener is in the shadow root, it is much faster to start theren var s = this.owner(inEvent.target);nn // if x, y is not in this root, fall back to document searchn if (!s.elementFromPoint(x, y)) {n s = document;n }n return this.searchRoot(s, x, y);n }n };nn var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);n var map = Array.prototype.map.call.bind(Array.prototype.map);n var toArray = Array.prototype.slice.call.bind(Array.prototype.slice);n var filter = Array.prototype.filter.call.bind(Array.prototype.filter);n var MO = window.MutationObserver || window.WebKitMutationObserver;n var SELECTOR = '[touch-action]';n var OBSERVER_INIT = {n subtree: true,n childList: true,n attributes: true,n attributeOldValue: true,n attributeFilter: ['touch-action']n };nn function Installer(add, remove, changed, binder) {n this.addCallback = add.bind(binder);n this.removeCallback = remove.bind(binder);n this.changedCallback = changed.bind(binder);n if (MO) {n this.observer = new MO(this.mutationWatcher.bind(this));n }n }nn Installer.prototype = {n watchSubtree: function(target) {nn // Only watch scopes that can target find, as these are top-level.n // Otherwise we can see duplicate additions and removals that add noise.n //n // TODO(dfreedman): For some instances with ShadowDOMPolyfill, we can seen // a removal without an insertion when a node is redistributed amongn // shadows. Since it all ends up correct in the document, watching onlyn // the document will yield the correct mutations to watch.n if (this.observer && targeting.canTarget(target)) {n this.observer.observe(target, OBSERVER_INIT);n }n },n enableOnSubtree: function(target) {n this.watchSubtree(target);n if (target === document && document.readyState !== 'complete') {n this.installOnLoad();n } else {n this.installNewSubtree(target);n }n },n installNewSubtree: function(target) {n forEach(this.findElements(target), this.addElement, this);n },n findElements: function(target) {n if (target.querySelectorAll) {n return target.querySelectorAll(SELECTOR);n }n return [];n },n removeElement: function(el) {n this.removeCallback(el);n },n addElement: function(el) {n this.addCallback(el);n },n elementChanged: function(el, oldValue) {n this.changedCallback(el, oldValue);n },n concatLists: function(accum, list) {n return accum.concat(toArray(list));n },nn // register all touch-action = none nodes on document loadn installOnLoad: function() {n document.addEventListener('readystatechange', function() {n if (document.readyState === 'complete') {n this.installNewSubtree(document);n }n }.bind(this));n },n isElement: function(n) {n return n.nodeType === Node.ELEMENT_NODE;n },n flattenMutationTree: function(inNodes) {nn // find children with touch-actionn var tree = map(inNodes, this.findElements, this);nn // make sure the added nodes are accounted forn tree.push(filter(inNodes, this.isElement));nn // flatten the listn return tree.reduce(this.concatLists, []);n },n mutationWatcher: function(mutations) {n mutations.forEach(this.mutationHandler, this);n },n mutationHandler: function(m) {n if (m.type === 'childList') {n var added = this.flattenMutationTree(m.addedNodes);n added.forEach(this.addElement, this);n var removed = this.flattenMutationTree(m.removedNodes);n removed.forEach(this.removeElement, this);n } else if (m.type === 'attributes') {n this.elementChanged(m.target, m.oldValue);n }n }n };nn function shadowSelector(s) {n return 'body /shadow-deep/ ' + s;n }n function rule(v) {n return '{ -ms-touch-action: ' + v + '; touch-action: ' + v + '; }';n }n var attrib2css = [n { selector: '[touch-action="none"]', value: 'none' },n { selector: '[touch-action="auto"]', value: 'auto' },n { selector: '[touch-action~="pan-x"]', value: 'pan-x' },n { selector: '[touch-action~="pan-y"]', value: 'pan-y' },n { selector: '[touch-action~="pan-up"]', value: 'pan-up' },n { selector: '[touch-action~="pan-down"]', value: 'pan-down' },n { selector: '[touch-action~="pan-left"]', value: 'pan-left' },n { selector: '[touch-action~="pan-right"]', value: 'pan-right' }n ];n var styles = '';nn // only install stylesheet if the browser has touch action supportn var hasNativePE = window.PointerEvent || window.MSPointerEvent;nn // only add shadow selectors if shadowdom is supportedn var hasShadowRoot = !window.ShadowDOMPolyfill && document.head.createShadowRoot;nn function applyAttributeStyles() {n if (hasNativePE) {n attrib2css.forEach(function® {n styles += r.selector + rule(r.value) + '\n';n if (hasShadowRoot) {n styles += shadowSelector(r.selector) + rule(r.value) + '\n';n }n });nn var el = document.createElement('style');n el.textContent = styles;n document.head.appendChild(el);n }n }nn var pointermap = dispatcher.pointermap;nn // radius around touchend that swallows mouse eventsn var DEDUP_DIST = 25;nn // left, middle, right, back, forwardn var BUTTON_TO_BUTTONS = [1, 4, 2, 8, 16];nn var HAS_BUTTONS = false;n try {n HAS_BUTTONS = new MouseEvent('test', { buttons: 1 }).buttons === 1;n } catch (e) {}nn // handler block for native mouse eventsn var mouseEvents = {n POINTER_ID: 1,n POINTER_TYPE: 'mouse',n events: [n 'mousedown',n 'webkitmouseforcechanged',n 'mousemove',n 'mouseup',n 'mouseover',n 'mouseout'n ],n register: function(target) {n dispatcher.listen(target, this.events);n },n unregister: function(target) {n dispatcher.unlisten(target, this.events);n },n lastTouches: [],nn // collide with the global mouse listenern isEventSimulatedFromTouch: function(inEvent) {n var lts = this.lastTouches;n var x = inEvent.clientX;n var y = inEvent.clientY;n for (var i = 0, l = lts.length, t; i < l && (t = lts); i++) {nn // simulated mouse events will be swallowed near a primary touchendn var dx = Math.abs(x - t.x);n var dy = Math.abs(y - t.y);n if (dx <= DEDUP_DIST && dy <= DEDUP_DIST) {n return true;n }n }n },n prepareEvent: function(inEvent) {n var e = dispatcher.cloneEvent(inEvent);nn // forward mouse preventDefaultn var pd = e.preventDefault;n e.preventDefault = function() {n inEvent.preventDefault();n pd();n };n e.pointerId = this.POINTER_ID;n e.isPrimary = true;n e.pointerType = this.POINTER_TYPE;n if ('webkitForce' in inEvent) {n e.pressure = inEvent.webkitForce - MouseEvent.WEBKIT_FORCE_AT_MOUSE_DOWN;n }n return e;n },n prepareButtonsForMove: function(e, inEvent) {n var p = pointermap.get(this.POINTER_ID);nn // Update buttons state after possible out-of-document mouseup.n if (inEvent.which === 0 || !p) {n e.buttons = 0;n } else {n e.buttons = p.buttons;n }n inEvent.buttons = e.buttons;n },n mousedown: function(inEvent) {n if (!this.isEventSimulatedFromTouch(inEvent)) {n var p = pointermap.get(this.POINTER_ID);n var e = this.prepareEvent(inEvent);n if (!HAS_BUTTONS) {n e.buttons = BUTTON_TO_BUTTONS;n if (p) { e.buttons |= p.buttons; }n inEvent.buttons = e.buttons;n }n pointermap.set(this.POINTER_ID, inEvent);n if (!p || p.buttons === 0) {n dispatcher.down(e);n } else {n dispatcher.move(e);n }n }n },nn // This is called when the user force presses without moving x/yn webkitmouseforcechanged: function(inEvent) {n this.mousemove(inEvent);n },n mousemove: function(inEvent) {n if (!this.isEventSimulatedFromTouch(inEvent)) {n var e = this.prepareEvent(inEvent);n if (!HAS_BUTTONS) { this.prepareButtonsForMove(e, inEvent); }n e.button = -1;n pointermap.set(this.POINTER_ID, inEvent);n dispatcher.move(e);n }n },n mouseup: function(inEvent) {n if (!this.isEventSimulatedFromTouch(inEvent)) {n var p = pointermap.get(this.POINTER_ID);n var e = this.prepareEvent(inEvent);n if (!HAS_BUTTONS) {n var up = BUTTON_TO_BUTTONS;nn // Produces wrong state of buttons in Browsers without `buttons` supportn // when a mouse button that was pressed outside the document is releasedn // inside and other buttons are still pressed down.n e.buttons = p ? p.buttons & ~up : 0;n inEvent.buttons = e.buttons;n }n pointermap.set(this.POINTER_ID, inEvent);nn // Support: Firefox <=44 onlyn // FF Ubuntu includes the lifted button in the `buttons` property onn // mouseup.n // bugzilla.mozilla.org/show_bug.cgi?id=1223366n e.buttons &= ~BUTTON_TO_BUTTONS;n if (e.buttons === 0) {n dispatcher.up(e);n } else {n dispatcher.move(e);n }n }n },n mouseover: function(inEvent) {n if (!this.isEventSimulatedFromTouch(inEvent)) {n var e = this.prepareEvent(inEvent);n if (!HAS_BUTTONS) { this.prepareButtonsForMove(e, inEvent); }n e.button = -1;n pointermap.set(this.POINTER_ID, inEvent);n dispatcher.enterOver(e);n }n },n mouseout: function(inEvent) {n if (!this.isEventSimulatedFromTouch(inEvent)) {n var e = this.prepareEvent(inEvent);n if (!HAS_BUTTONS) { this.prepareButtonsForMove(e, inEvent); }n e.button = -1;n dispatcher.leaveOut(e);n }n },n cancel: function(inEvent) {n var e = this.prepareEvent(inEvent);n dispatcher.cancel(e);n this.deactivateMouse();n },n deactivateMouse: function() {n pointermap.delete(this.POINTER_ID);n }n };nn var captureInfo = dispatcher.captureInfo;n var findTarget = targeting.findTarget.bind(targeting);n var allShadows = targeting.allShadows.bind(targeting);n var pointermap$1 = dispatcher.pointermap;nn // this should be long enough to ignore compat mouse events made by touchn var DEDUP_TIMEOUT = 2500;n var ATTRIB = 'touch-action';n var INSTALLER;nn // bitmask for _scrollTypen var UP = 1;n var DOWN = 2;n var LEFT = 4;n var RIGHT = 8;n var AUTO = UP | DOWN | LEFT | RIGHT;nn // handler block for native touch eventsn var touchEvents = {n events: [n 'touchstart',n 'touchmove',n 'touchforcechange',n 'touchend',n 'touchcancel'n ],n register: function(target) {n INSTALLER.enableOnSubtree(target);n },n unregister: function() {nn // TODO(dfreedman): is it worth it to disconnect the MO?n },n elementAdded: function(el) {n var a = el.getAttribute(ATTRIB);n var st = this.touchActionToScrollType(a);n if (typeof st === "number") {n el._scrollType = st;n dispatcher.listen(el, this.events);nn // set touch-action on shadows as welln allShadows(el).forEach(function(s) {n s._scrollType = st;n dispatcher.listen(s, this.events);n }, this);n }n },n elementRemoved: function(el) {nn // In some cases, an element is removed before a touchend.n // When this is the case, we should wait for the touchend before unlistening,n // because we still want pointer events to bubble up after removing from DOM.n if (pointermap$1.size > 0) {n var evts = this.events;n el.addEventListener('touchend', function() {n el._scrollType = undefined;n dispatcher.unlisten(el, evts);n });n } else {n el._scrollType = undefined;n dispatcher.unlisten(el, this.events);n }nn // remove touch-action from shadown allShadows(el).forEach(function(s) {n s._scrollType = undefined;n dispatcher.unlisten(s, this.events);n }, this);n },n elementChanged: function(el, oldValue) {n var a = el.getAttribute(ATTRIB);n var st = this.touchActionToScrollType(a);n var oldSt = this.touchActionToScrollType(oldValue);nn // simply update scrollType if listeners are already establishedn if (typeof st === "number" && typeof oldSt === "number") {n el._scrollType = st;n allShadows(el).forEach(function(s) {n s._scrollType = st;n }, this);n } else if (typeof oldSt === "number") {n this.elementRemoved(el);n } else if (typeof st === "number") {n this.elementAdded(el);n }n },n scrollTypes: {n UP: function(s) {n return s.includes('pan-y') || s.includes('pan-up') ? UP : 0;n },n DOWN: function(s) {n return s.includes('pan-y') || s.includes('pan-down') ? DOWN : 0;n },n LEFT: function(s) {n return s.includes('pan-x') || s.includes('pan-left') ? LEFT : 0;n },n RIGHT: function(s) {n return s.includes('pan-x') || s.includes('pan-right') ? RIGHT : 0;n }n },n touchActionToScrollType: function(touchAction) {n if (!touchAction) {n return;n }nn if (touchAction === "auto") {n return AUTO;n }nn if (touchAction === "none") {n return 0;n }nn var s = touchAction.split(' ');n var st = this.scrollTypes;nn // construct a bitmask of allowed scroll directionsn return st.UP(s) | st.DOWN(s) | st.LEFT(s) | st.RIGHT(s);n },n POINTER_TYPE: 'touch',n firstTouch: null,n isPrimaryTouch: function(inTouch) {n return this.firstTouch === inTouch.identifier;n },n setPrimaryTouch: function(inTouch) {nn // set primary touch if there no pointers, or the only pointer is the mousen if (pointermap$1.size === 0 || (pointermap$1.size === 1 && pointermap$1.has(1))) {n this.firstTouch = inTouch.identifier;n this.firstXY = { X: inTouch.clientX, Y: inTouch.clientY };n this.scrolling = false;n }n },n removePrimaryPointer: function(inPointer) {n if (inPointer.isPrimary) {n this.firstTouch = null;n this.firstXY = null;n }n },n typeToButtons: function(type) {n var ret = 0;n if (type === 'touchstart' || type === 'touchmove' || type === 'touchforcechange') {n ret = 1;n }n return ret;n },n touchToPointer: function(inTouch) {n var cte = this.currentTouchEvent;n var e = dispatcher.cloneEvent(inTouch);nn // We reserve pointerId 1 for Mouse.n // Touch identifiers can start at 0.n // Add 2 to the touch identifier for compatibility.n var id = e.pointerId = inTouch.identifier + 2;n e.target = captureInfo || findTarget(e);n e.bubbles = true;n e.cancelable = true;n e.button = 0;n e.buttons = this.typeToButtons(cte.type);n e.width = (inTouch.radiusX || inTouch.webkitRadiusX || 0) * 2;n e.height = (inTouch.radiusY || inTouch.webkitRadiusY || 0) * 2;n e.pressure = inTouch.force !== undefined ?n inTouch.force :n inTouch.webkitForce !== undefined ?n inTouch.webkitForce : undefined;n e.isPrimary = this.isPrimaryTouch(inTouch);n if (inTouch.altitudeAngle) {n var tan = Math.tan(inTouch.altitudeAngle);n var radToDeg = 180 / Math.PI;n e.tiltX = Math.atan(Math.cos(inTouch.azimuthAngle) / tan) * radToDeg;n e.tiltY = Math.atan(Math.sin(inTouch.azimuthAngle) / tan) * radToDeg;n } else {n e.tiltX = 0;n e.tiltY = 0;n }n if (inTouch.touchType === 'stylus') {n e.pointerType = 'pen';n } else {n e.pointerType = this.POINTER_TYPE;n }nn // forward modifier keysn e.altKey = cte.altKey;n e.ctrlKey = cte.ctrlKey;n e.metaKey = cte.metaKey;n e.shiftKey = cte.shiftKey;nn // forward touch preventDefaultsn var self = this;n e.preventDefault = function() {n self.scrolling = false;n self.firstXY = null;n cte.preventDefault();n };n return e;n },n processTouches: function(inEvent, inFunction) {n var tl = inEvent.changedTouches;n this.currentTouchEvent = inEvent;n for (var i = 0, t; i < tl.length; i++) {n t = tl;n inFunction.call(this, this.touchToPointer(t));n }n },nn // For single axis scrollers, determines whether the element should emitn // pointer events or behave as a scrollern shouldScroll: function(inEvent) {n if (this.firstXY) {n var ret;n var st = inEvent.currentTarget._scrollType;n if (st === 0) {nn // this element is a `touch-action: none`, should never scrolln ret = false;n } else if (st === AUTO) {nn // this element is a `touch-action: auto`, should always scrolln ret = true;n } else {n var t = inEvent.changedTouches;nn var dy = t.clientY - this.firstXY.Y;n var dya = Math.abs(dy);n var dx = t.clientX - this.firstXY.X;n var dxa = Math.abs(dx);nn var up = st & UP;n var down = st & DOWN;n var left = st & LEFT;n var right = st & RIGHT;nn if (left && right) {nn // should scroll on the x axisn ret = dxa > dya;n } else if (left) {nn // should scroll leftn ret = dxa > dya && dx > 0;n } else if (right) {nn // should scroll rightn ret = dxa > dya && dx < 0;n }nn if (!ret) {n if (up && down) {nn // should scroll on the y axisn ret = dxa < dya;n } else if (up) {nn // should scroll upn ret = dxa < dya && dy > 0;n } else if (down) {nn // should scroll downn ret = dxa < dya && dy < 0;n }n }nn }n this.firstXY = null;n return ret;n }n },n findTouch: function(inTL, inId) {n for (var i = 0, l = inTL.length, t; i < l && (t = inTL); i++) {n if (t.identifier === inId) {n return true;n }n }n },nn // In some instances, a touchstart can happen without a touchend. Thisn // leaves the pointermap in a broken state.n // Therefore, on every touchstart, we remove the touches that did not fire an // touchend event.n // To keep state globally consistent, we fire an // pointercancel for this "abandoned" touchn vacuumTouches: function(inEvent) {n var tl = inEvent.touches;nn // pointermap.size should be < tl.length here, as the touchstart has notn // been processed yet.n if (pointermap$1.size >= tl.length) {n var d = [];n pointermap$1.forEach(function(value, key) {nn // Never remove pointerId == 1, which is mouse.n // Touch identifiers are 2 smaller than their pointerId, which is then // index in pointermap.n if (key !== 1 && !this.findTouch(tl, key - 2)) {n var p = value.out;n d.push(p);n }n }, this);n d.forEach(this.cancelOut, this);n }n },n touchstart: function(inEvent) {n this.vacuumTouches(inEvent);n this.setPrimaryTouch(inEvent.changedTouches);n this.dedupSynthMouse(inEvent);n if (!this.scrolling) {n this.processTouches(inEvent, this.overDown);n }n },n overDown: function(inPointer) {n pointermap$1.set(inPointer.pointerId, {n target: inPointer.target,n out: inPointer,n outTarget: inPointer.targetn });n dispatcher.enterOver(inPointer);n dispatcher.down(inPointer);n },nn // Called when pressure or tilt changes without the x/y changingn touchforcechange: function(inEvent) {n this.touchmove(inEvent);n },n touchmove: function(inEvent) {n if (!this.scrolling) {n if (this.shouldScroll(inEvent)) {n this.scrolling = true;n this.touchcancel(inEvent);n } else {n if (inEvent.type !== 'touchforcechange') {n inEvent.preventDefault();n }n this.processTouches(inEvent, this.moveOverOut);n }n }n },n moveOverOut: function(inPointer) {n var event = inPointer;n var pointer = pointermap$1.get(event.pointerId);nn // a finger drifted off the screen, ignore itn if (!pointer) {n return;n }n var outEvent = pointer.out;n var outTarget = pointer.outTarget;n dispatcher.move(event);n if (outEvent && outTarget !== event.target) {n outEvent.relatedTarget = event.target;n event.relatedTarget = outTarget;nn // recover from retargeting by shadown outEvent.target = outTarget;n if (event.target) {n dispatcher.leaveOut(outEvent);n dispatcher.enterOver(event);n } else {nn // clean up case when finger leaves the screenn event.target = outTarget;n event.relatedTarget = null;n this.cancelOut(event);n }n }n pointer.out = event;n pointer.outTarget = event.target;n },n touchend: function(inEvent) {n this.dedupSynthMouse(inEvent);n this.processTouches(inEvent, this.upOut);n },n upOut: function(inPointer) {n if (!this.scrolling) {n dispatcher.up(inPointer);n dispatcher.leaveOut(inPointer);n }n this.cleanUpPointer(inPointer);n },n touchcancel: function(inEvent) {n this.processTouches(inEvent, this.cancelOut);n },n cancelOut: function(inPointer) {n dispatcher.cancel(inPointer);n dispatcher.leaveOut(inPointer);n this.cleanUpPointer(inPointer);n },n cleanUpPointer: function(inPointer) {n pointermap$1.delete(inPointer.pointerId);n this.removePrimaryPointer(inPointer);n },nn // prevent synth mouse events from creating pointer eventsn dedupSynthMouse: function(inEvent) {n var lts = mouseEvents.lastTouches;n var t = inEvent.changedTouches;nn // only the primary finger will synth mouse eventsn if (this.isPrimaryTouch(t)) {nn // remember x/y of last touchn var lt = { x: t.clientX, y: t.clientY };n lts.push(lt);n var fn = (function(lts, lt) {n var i = lts.indexOf(lt);n if (i > -1) {n lts.splice(i, 1);n }n }).bind(null, lts, lt);n setTimeout(fn, DEDUP_TIMEOUT);n }n }n };nn INSTALLER = new Installer(touchEvents.elementAdded, touchEvents.elementRemoved,n touchEvents.elementChanged, touchEvents);nn var pointermap$2 = dispatcher.pointermap;n var HAS_BITMAP_TYPE = window.MSPointerEvent &&n typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE === 'number';n var msEvents = {n events: [n 'MSPointerDown',n 'MSPointerMove',n 'MSPointerUp',n 'MSPointerOut',n 'MSPointerOver',n 'MSPointerCancel',n 'MSGotPointerCapture',n 'MSLostPointerCapture'n ],n register: function(target) {n dispatcher.listen(target, this.events);n },n unregister: function(target) {n dispatcher.unlisten(target, this.events);n },n POINTER_TYPES: [n '',n 'unavailable',n 'touch',n 'pen',n 'mouse'n ],n prepareEvent: function(inEvent) {n var e = inEvent;n if (HAS_BITMAP_TYPE) {n e = dispatcher.cloneEvent(inEvent);n e.pointerType = this.POINTER_TYPES;n }n return e;n },n cleanup: function(id) {n pointermap$2.delete(id);n },n MSPointerDown: function(inEvent) {n pointermap$2.set(inEvent.pointerId, inEvent);n var e = this.prepareEvent(inEvent);n dispatcher.down(e);n },n MSPointerMove: function(inEvent) {n var e = this.prepareEvent(inEvent);n dispatcher.move(e);n },n MSPointerUp: function(inEvent) {n var e = this.prepareEvent(inEvent);n dispatcher.up(e);n this.cleanup(inEvent.pointerId);n },n MSPointerOut: function(inEvent) {n var e = this.prepareEvent(inEvent);n dispatcher.leaveOut(e);n },n MSPointerOver: function(inEvent) {n var e = this.prepareEvent(inEvent);n dispatcher.enterOver(e);n },n MSPointerCancel: function(inEvent) {n var e = this.prepareEvent(inEvent);n dispatcher.cancel(e);n this.cleanup(inEvent.pointerId);n },n MSLostPointerCapture: function(inEvent) {n var e = dispatcher.makeEvent('lostpointercapture', inEvent);n dispatcher.dispatchEvent(e);n },n MSGotPointerCapture: function(inEvent) {n var e = dispatcher.makeEvent('gotpointercapture', inEvent);n dispatcher.dispatchEvent(e);n }n };nn function applyPolyfill() {nn // only activate if this platform does not have pointer eventsn if (!window.PointerEvent) {n window.PointerEvent = PointerEvent;nn if (window.navigator.msPointerEnabled) {n var tp = window.navigator.msMaxTouchPoints;n Object.defineProperty(window.navigator, 'maxTouchPoints', {n value: tp,n enumerable: truen });n dispatcher.registerSource('ms', msEvents);n } else {n Object.defineProperty(window.navigator, 'maxTouchPoints', {n value: 0,n enumerable: truen });n dispatcher.registerSource('mouse', mouseEvents);n if (window.ontouchstart !== undefined) {n dispatcher.registerSource('touch', touchEvents);n }n }nn dispatcher.register(document);n }n }nn var n = window.navigator;n var s;n var r;n var h;n function assertActive(id) {n if (!dispatcher.pointermap.has(id)) {n var error = new Error('NotFoundError');n error.name = 'NotFoundError';n throw error;n }n }n function assertConnected(elem) {n var parent = elem.parentNode;n while (parent && parent !== elem.ownerDocument) {n parent = parent.parentNode;n }n if (!parent) {n var error = new Error('InvalidStateError');n error.name = 'InvalidStateError';n throw error;n }n }n function inActiveButtonState(id) {n var p = dispatcher.pointermap.get(id);n return p.buttons !== 0;n }n if (n.msPointerEnabled) {n s = function(pointerId) {n assertActive(pointerId);n assertConnected(this);n if (inActiveButtonState(pointerId)) {n dispatcher.setCapture(pointerId, this, true);n this.msSetPointerCapture(pointerId);n }n };n r = function(pointerId) {n assertActive(pointerId);n dispatcher.releaseCapture(pointerId, true);n this.msReleasePointerCapture(pointerId);n };n } else {n s = function setPointerCapture(pointerId) {n assertActive(pointerId);n assertConnected(this);n if (inActiveButtonState(pointerId)) {n dispatcher.setCapture(pointerId, this);n }n };n r = function releasePointerCapture(pointerId) {n assertActive(pointerId);n dispatcher.releaseCapture(pointerId);n };n }n h = function hasPointerCapture(pointerId) {n return !!dispatcher.captureInfo;n };nn function applyPolyfill$1() {n if (window.Element && !Element.prototype.setPointerCapture) {n Object.defineProperties(Element.prototype, {n 'setPointerCapture': {n value: sn },n 'releasePointerCapture': {n value: rn },n 'hasPointerCapture': {n value: hn }n });n }n }nn applyAttributeStyles();n applyPolyfill();n applyPolyfill$1();nn var pointerevents = {n dispatcher: dispatcher,n Installer: Installer,n PointerEvent: PointerEvent,n PointerMap: PointerMap,n targetFinding: targetingn };nn return pointerevents;nn}));”,“'use strict';nnmodule.exports = Pbf;nnvar ieee754 = require('ieee754');nnfunction Pbf(buf) {n this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0);n this.pos = 0;n this.type = 0;n this.length = this.buf.length;n}nnPbf.Varint = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enumnPbf.Fixed64 = 1; // 64-bit: double, fixed64, sfixed64nPbf.Bytes = 2; // length-delimited: string, bytes, embedded messages, packed repeated fieldsnPbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32nnvar SHIFT_LEFT_32 = (1 << 16) * (1 << 16),n SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;nn// Threshold chosen based on both benchmarking and knowledge about browser stringn// data structures (which currently switch structure types at 12 bytes or more)nvar TEXT_DECODER_MIN_LENGTH = 12;nvar utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf8');nnPbf.prototype = {nn destroy: function() {n this.buf = null;n },nn // === READING =================================================================nn readFields: function(readField, result, end) {n end = end || this.length;nn while (this.pos < end) {n var val = this.readVarint(),n tag = val >> 3,n startPos = this.pos;nn this.type = val & 0x7;n readField(tag, result, this);nn if (this.pos === startPos) this.skip(val);n }n return result;n },nn readMessage: function(readField, result) {n return this.readFields(readField, result, this.readVarint() + this.pos);n },nn readFixed32: function() {n var val = readUInt32(this.buf, this.pos);n this.pos += 4;n return val;n },nn readSFixed32: function() {n var val = readInt32(this.buf, this.pos);n this.pos += 4;n return val;n },nn // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)nn readFixed64: function() {n var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;n this.pos += 8;n return val;n },nn readSFixed64: function() {n var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;n this.pos += 8;n return val;n },nn readFloat: function() {n var val = ieee754.read(this.buf, this.pos, true, 23, 4);n this.pos += 4;n return val;n },nn readDouble: function() {n var val = ieee754.read(this.buf, this.pos, true, 52, 8);n this.pos += 8;n return val;n },nn readVarint: function(isSigned) {n var buf = this.buf,n val, b;nn b = buf; val = b & 0x7f; if (b < 0x80) return val;n b = buf; val |= (b & 0x7f) << 7; if (b < 0x80) return val;n b = buf; val |= (b & 0x7f) << 14; if (b < 0x80) return val;n b = buf; val |= (b & 0x7f) << 21; if (b < 0x80) return val;n b = buf; val |= (b & 0x0f) << 28;nn return readVarintRemainder(val, isSigned, this);n },nn readVarint64: function() { // for compatibility with v2.0.1n return this.readVarint(true);n },nn readSVarint: function() {n var num = this.readVarint();n return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encodingn },nn readBoolean: function() {n return Boolean(this.readVarint());n },nn readString: function() {n var end = this.readVarint() + this.pos;n var pos = this.pos;n this.pos = end;nn if (end - pos >= TEXT_DECODER_MIN_LENGTH && utf8TextDecoder) {n // longer strings are fast with the built-in browser TextDecoder APIn return readUtf8TextDecoder(this.buf, pos, end);n }n // short strings are fast with our custom implementationn return readUtf8(this.buf, pos, end);n },nn readBytes: function() {n var end = this.readVarint() + this.pos,n buffer = this.buf.subarray(this.pos, end);n this.pos = end;n return buffer;n },nn // verbose for performance reasons; doesn't affect gzipped sizenn readPackedVarint: function(arr, isSigned) {n if (this.type !== Pbf.Bytes) return arr.push(this.readVarint(isSigned));n var end = readPackedEnd(this);n arr = arr || [];n while (this.pos < end) arr.push(this.readVarint(isSigned));n return arr;n },n readPackedSVarint: function(arr) {n if (this.type !== Pbf.Bytes) return arr.push(this.readSVarint());n var end = readPackedEnd(this);n arr = arr || [];n while (this.pos < end) arr.push(this.readSVarint());n return arr;n },n readPackedBoolean: function(arr) {n if (this.type !== Pbf.Bytes) return arr.push(this.readBoolean());n var end = readPackedEnd(this);n arr = arr || [];n while (this.pos < end) arr.push(this.readBoolean());n return arr;n },n readPackedFloat: function(arr) {n if (this.type !== Pbf.Bytes) return arr.push(this.readFloat());n var end = readPackedEnd(this);n arr = arr || [];n while (this.pos < end) arr.push(this.readFloat());n return arr;n },n readPackedDouble: function(arr) {n if (this.type !== Pbf.Bytes) return arr.push(this.readDouble());n var end = readPackedEnd(this);n arr = arr || [];n while (this.pos < end) arr.push(this.readDouble());n return arr;n },n readPackedFixed32: function(arr) {n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed32());n var end = readPackedEnd(this);n arr = arr || [];n while (this.pos < end) arr.push(this.readFixed32());n return arr;n },n readPackedSFixed32: function(arr) {n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed32());n var end = readPackedEnd(this);n arr = arr || [];n while (this.pos < end) arr.push(this.readSFixed32());n return arr;n },n readPackedFixed64: function(arr) {n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed64());n var end = readPackedEnd(this);n arr = arr || [];n while (this.pos < end) arr.push(this.readFixed64());n return arr;n },n readPackedSFixed64: function(arr) {n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed64());n var end = readPackedEnd(this);n arr = arr || [];n while (this.pos < end) arr.push(this.readSFixed64());n return arr;n },nn skip: function(val) {n var type = val & 0x7;n if (type === Pbf.Varint) while (this.buf > 0x7f) {}n else if (type === Pbf.Bytes) this.pos = this.readVarint() + this.pos;n else if (type === Pbf.Fixed32) this.pos += 4;n else if (type === Pbf.Fixed64) this.pos += 8;n else throw new Error('Unimplemented type: ' + type);n },nn // === WRITING =================================================================nn writeTag: function(tag, type) {n this.writeVarint((tag << 3) | type);n },nn realloc: function(min) {n var length = this.length || 16;nn while (length < this.pos + min) length *= 2;nn if (length !== this.length) {n var buf = new Uint8Array(length);n buf.set(this.buf);n this.buf = buf;n this.length = length;n }n },nn finish: function() {n this.length = this.pos;n this.pos = 0;n return this.buf.subarray(0, this.length);n },nn writeFixed32: function(val) {n this.realloc(4);n writeInt32(this.buf, val, this.pos);n this.pos += 4;n },nn writeSFixed32: function(val) {n this.realloc(4);n writeInt32(this.buf, val, this.pos);n this.pos += 4;n },nn writeFixed64: function(val) {n this.realloc(8);n writeInt32(this.buf, val & -1, this.pos);n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);n this.pos += 8;n },nn writeSFixed64: function(val) {n this.realloc(8);n writeInt32(this.buf, val & -1, this.pos);n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);n this.pos += 8;n },nn writeVarint: function(val) {n val = +val || 0;nn if (val > 0xfffffff || val < 0) {n writeBigVarint(val, this);n return;n }nn this.realloc(4);nn this.buf = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;n this.buf = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;n this.buf = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;n this.buf = (val >>> 7) & 0x7f;n },nn writeSVarint: function(val) {n this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);n },nn writeBoolean: function(val) {n this.writeVarint(Boolean(val));n },nn writeString: function(str) {n str = String(str);n this.realloc(str.length * 4);nn this.pos++; // reserve 1 byte for short string lengthnn var startPos = this.pos;n // write the string directly to the buffer and see how much was writtenn this.pos = writeUtf8(this.buf, str, this.pos);n var len = this.pos - startPos;nn if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);nn // finally, write the message length in the reserved place and restore the positionn this.pos = startPos - 1;n this.writeVarint(len);n this.pos += len;n },nn writeFloat: function(val) {n this.realloc(4);n ieee754.write(this.buf, val, this.pos, true, 23, 4);n this.pos += 4;n },nn writeDouble: function(val) {n this.realloc(8);n ieee754.write(this.buf, val, this.pos, true, 52, 8);n this.pos += 8;n },nn writeBytes: function(buffer) {n var len = buffer.length;n this.writeVarint(len);n this.realloc(len);n for (var i = 0; i < len; i++) this.buf = buffer;n },nn writeRawMessage: function(fn, obj) {n this.pos++; // reserve 1 byte for short message lengthnn // write the message directly to the buffer and see how much was writtenn var startPos = this.pos;n fn(obj, this);n var len = this.pos - startPos;nn if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);nn // finally, write the message length in the reserved place and restore the positionn this.pos = startPos - 1;n this.writeVarint(len);n this.pos += len;n },nn writeMessage: function(tag, fn, obj) {n this.writeTag(tag, Pbf.Bytes);n this.writeRawMessage(fn, obj);n },nn writePackedVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedVarint, arr); },n writePackedSVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSVarint, arr); },n writePackedBoolean: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedBoolean, arr); },n writePackedFloat: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFloat, arr); },n writePackedDouble: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedDouble, arr); },n writePackedFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed32, arr); },n writePackedSFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed32, arr); },n writePackedFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed64, arr); },n writePackedSFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed64, arr); },nn writeBytesField: function(tag, buffer) {n this.writeTag(tag, Pbf.Bytes);n this.writeBytes(buffer);n },n writeFixed32Field: function(tag, val) {n this.writeTag(tag, Pbf.Fixed32);n this.writeFixed32(val);n },n writeSFixed32Field: function(tag, val) {n this.writeTag(tag, Pbf.Fixed32);n this.writeSFixed32(val);n },n writeFixed64Field: function(tag, val) {n this.writeTag(tag, Pbf.Fixed64);n this.writeFixed64(val);n },n writeSFixed64Field: function(tag, val) {n this.writeTag(tag, Pbf.Fixed64);n this.writeSFixed64(val);n },n writeVarintField: function(tag, val) {n this.writeTag(tag, Pbf.Varint);n this.writeVarint(val);n },n writeSVarintField: function(tag, val) {n this.writeTag(tag, Pbf.Varint);n this.writeSVarint(val);n },n writeStringField: function(tag, str) {n this.writeTag(tag, Pbf.Bytes);n this.writeString(str);n },n writeFloatField: function(tag, val) {n this.writeTag(tag, Pbf.Fixed32);n this.writeFloat(val);n },n writeDoubleField: function(tag, val) {n this.writeTag(tag, Pbf.Fixed64);n this.writeDouble(val);n },n writeBooleanField: function(tag, val) {n this.writeVarintField(tag, Boolean(val));n }n};nnfunction readVarintRemainder(l, s, p) {n var buf = p.buf,n h, b;nn b = buf; h = (b & 0x70) >> 4; if (b < 0x80) return toNum(l, h, s);n b = buf; h |= (b & 0x7f) << 3; if (b < 0x80) return toNum(l, h, s);n b = buf; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);n b = buf; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);n b = buf; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);n b = buf; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);nn throw new Error('Expected varint not more than 10 bytes');n}nnfunction readPackedEnd(pbf) {n return pbf.type === Pbf.Bytes ?n pbf.readVarint() + pbf.pos : pbf.pos + 1;n}nnfunction toNum(low, high, isSigned) {n if (isSigned) {n return high * 0x100000000 + (low >>> 0);n }nn return ((high >>> 0) * 0x100000000) + (low >>> 0);n}nnfunction writeBigVarint(val, pbf) {n var low, high;nn if (val >= 0) {n low = (val % 0x100000000) | 0;n high = (val / 0x100000000) | 0;n } else {n low = ~(-val % 0x100000000);n high = ~(-val / 0x100000000);nn if (low ^ 0xffffffff) {n low = (low + 1) | 0;n } else {n low = 0;n high = (high + 1) | 0;n }n }nn if (val >= 0x10000000000000000 || val < -0x10000000000000000) {n throw new Error('Given varint doesn\'t fit into 10 bytes');n }nn pbf.realloc(10);nn writeBigVarintLow(low, high, pbf);n writeBigVarintHigh(high, pbf);n}nnfunction writeBigVarintLow(low, high, pbf) {n pbf.buf = low & 0x7f | 0x80; low >>>= 7;n pbf.buf = low & 0x7f | 0x80; low >>>= 7;n pbf.buf = low & 0x7f | 0x80; low >>>= 7;n pbf.buf = low & 0x7f | 0x80; low >>>= 7;n pbf.buf = low & 0x7f;n}nnfunction writeBigVarintHigh(high, pbf) {n var lsb = (high & 0x07) << 4;nn pbf.buf |= lsb | ((high >>>= 3) ? 0x80 : 0); if (!high) return;n pbf.buf = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;n pbf.buf = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;n pbf.buf = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;n pbf.buf = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;n pbf.buf = high & 0x7f;n}nnfunction makeRoomForExtraLength(startPos, len, pbf) {n var extraLen =n len <= 0x3fff ? 1 :n len <= 0x1fffff ? 2 :n len <= 0xfffffff ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7));nn // if 1 byte isn't enough for encoding message length, shift the data to the rightn pbf.realloc(extraLen);n for (var i = pbf.pos - 1; i >= startPos; i–) pbf.buf[i + extraLen] = pbf.buf;n}nnfunction writePackedVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr); }nfunction writePackedSVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr); }nfunction writePackedFloat(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr); }nfunction writePackedDouble(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeDouble(arr); }nfunction writePackedBoolean(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeBoolean(arr); }nfunction writePackedFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed32(arr); }nfunction writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed32(arr); }nfunction writePackedFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr); }nfunction writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr); }nn// Buffer code below from github.com/feross/buffer, MIT-licensednnfunction readUInt32(buf, pos) {n return ((buf) |n (buf[pos + 1] << 8) |n (buf[pos + 2] << 16)) +n (buf[pos + 3] * 0x1000000);n}nnfunction writeInt32(buf, val, pos) {n buf = val;n buf[pos + 1] = (val >>> 8);n buf[pos + 2] = (val >>> 16);n buf[pos + 3] = (val >>> 24);n}nnfunction readInt32(buf, pos) {n return ((buf) |n (buf[pos + 1] << 8) |n (buf[pos + 2] << 16)) +n (buf[pos + 3] << 24);n}nnfunction readUtf8(buf, pos, end) {n var str = '';n var i = pos;nn while (i < end) {n var b0 = buf;n var c = null; // codepointn var bytesPerSequence =n b0 > 0xEF ? 4 :n b0 > 0xDF ? 3 :n b0 > 0xBF ? 2 : 1;nn if (i + bytesPerSequence > end) break;nn var b1, b2, b3;nn if (bytesPerSequence === 1) {n if (b0 < 0x80) {n c = b0;n }n } else if (bytesPerSequence === 2) {n b1 = buf[i + 1];n if ((b1 & 0xC0) === 0x80) {n c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);n if (c <= 0x7F) {n c = null;n }n }n } else if (bytesPerSequence === 3) {n b1 = buf[i + 1];n b2 = buf[i + 2];n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {n c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);n if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {n c = null;n }n }n } else if (bytesPerSequence === 4) {n b1 = buf[i + 1];n b2 = buf[i + 2];n b3 = buf[i + 3];n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {n c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);n if (c <= 0xFFFF || c >= 0x110000) {n c = null;n }n }n }nn if (c === null) {n c = 0xFFFD;n bytesPerSequence = 1;nn } else if (c > 0xFFFF) {n c -= 0x10000;n str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);n c = 0xDC00 | c & 0x3FF;n }nn str += String.fromCharCode©;n i += bytesPerSequence;n }nn return str;n}nnfunction readUtf8TextDecoder(buf, pos, end) {n return utf8TextDecoder.decode(buf.subarray(pos, end));n}nnfunction writeUtf8(buf, str, pos) {n for (var i = 0, c, lead; i < str.length; i++) {n c = str.charCodeAt(i); // code pointnn if (c > 0xD7FF && c < 0xE000) {n if (lead) {n if (c < 0xDC00) {n buf = 0xEF;n buf = 0xBF;n buf = 0xBD;n lead = c;n continue;n } else {n c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;n lead = null;n }n } else {n if (c > 0xDBFF || (i + 1 === str.length)) {n buf = 0xEF;n buf = 0xBF;n buf = 0xBD;n } else {n lead = c;n }n continue;n }n } else if (lead) {n buf = 0xEF;n buf = 0xBF;n buf = 0xBD;n lead = null;n }nn if (c < 0x80) {n buf = c;n } else {n if (c < 0x800) {n buf = c >> 0x6 | 0xC0;n } else {n if (c < 0x10000) {n buf = c >> 0xC | 0xE0;n } else {n buf = c >> 0x12 | 0xF0;n buf = c >> 0xC & 0x3F | 0x80;n }n buf = c >> 0x6 & 0x3F | 0x80;n }n buf = c & 0x3F | 0x80;n }n }n return pos;n}n”,“var Processor = require('./processor');nnexports.Processor = Processor;n”,“exports.read = function (buffer, offset, isLE, mLen, nBytes) {n var e, mn var eLen = (nBytes * 8) - mLen - 1n var eMax = (1 << eLen) - 1n var eBias = eMax >> 1n var nBits = -7n var i = isLE ? (nBytes - 1) : 0n var d = isLE ? -1 : 1n var s = buffer[offset + i]nn i += dnn e = s & ((1 << (-nBits)) - 1)n s >>= (-nBits)n nBits += eLenn for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}nn m = e & ((1 << (-nBits)) - 1)n e >>= (-nBits)n nBits += mLenn for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}nn if (e === 0) {n e = 1 - eBiasn } else if (e === eMax) {n return m ? NaN : ((s ? -1 : 1) * Infinity)n } else {n m = m + Math.pow(2, mLen)n e = e - eBiasn }n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)n}nnexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {n var e, m, cn var eLen = (nBytes * 8) - mLen - 1n var eMax = (1 << eLen) - 1n var eBias = eMax >> 1n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)n var i = isLE ? 0 : (nBytes - 1)n var d = isLE ? 1 : -1n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0nn value = Math.abs(value)nn if (isNaN(value) || value === Infinity) {n m = isNaN(value) ? 1 : 0n e = eMaxn } else {n e = Math.floor(Math.log(value) / Math.LN2)n if (value * (c = Math.pow(2, -e)) < 1) {n e–n c *= 2n }n if (e + eBias >= 1) {n value += rt / cn } else {n value += rt * Math.pow(2, 1 - eBias)n }n if (value * c >= 2) {n e++n c /= 2n }nn if (e + eBias >= eMax) {n m = 0n e = eMaxn } else if (e + eBias >= 1) {n m = ((value * c) - 1) * Math.pow(2, mLen)n e = e + eBiasn } else {n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)n e = 0n }n }nn for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}nn e = (e << mLen) | mn eLen += mLenn for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}nn buffer[offset + i - d] |= s * 128n}n”,“var newImageData = require('./util').newImageData;nn/**n * Create a function for running operations. This function is serialized forn * use in a worker.n * @param {function(Array, Object):*} operation The operation.n * @return {function(Object):ArrayBuffer} A function that takes an object withn * buffers, meta, imageOps, width, and height properties and returns an arrayn * buffer.n */nfunction createMinion(operation) {n var workerHasImageData = true;n try {n new ImageData(10, 10);n } catch (_) {n workerHasImageData = false;n }nn function newWorkerImageData(data, width, height) {n if (workerHasImageData) {n return new ImageData(data, width, height);n } else {n return {data: data, width: width, height: height};n }n }nn return function(data) {n // bracket notation for minification supportn var buffers = data;n var meta = data;n var imageOps = data;n var width = data;n var height = data;nn var numBuffers = buffers.length;n var numBytes = buffers.byteLength;n var output, b;nn if (imageOps) {n var images = new Array(numBuffers);n for (b = 0; b < numBuffers; ++b) {n images = newWorkerImageData(n new Uint8ClampedArray(buffers), width, height);n }n output = operation(images, meta).data;n } else {n output = new Uint8ClampedArray(numBytes);n var arrays = new Array(numBuffers);n var pixels = new Array(numBuffers);n for (b = 0; b < numBuffers; ++b) {n arrays = new Uint8ClampedArray(buffers);n pixels = [0, 0, 0, 0];n }n for (var i = 0; i < numBytes; i += 4) {n for (var j = 0; j < numBuffers; ++j) {n var array = arrays;n pixels[0] = array;n pixels[1] = array[i + 1];n pixels[2] = array[i + 2];n pixels[3] = array[i + 3];n }n var pixel = operation(pixels, meta);n output = pixel;n output[i + 1] = pixel;n output[i + 2] = pixel;n output[i + 3] = pixel;n }n }n return output.buffer;n };n}nn/**n * Create a worker for running operations.n * @param {Object} config Configuration.n * @param {function(MessageEvent)} onMessage Called with a message event.n * @return {Worker} The worker.n */nfunction createWorker(config, onMessage) {n var lib = Object.keys(config.lib || {}).map(function(name) {n return 'var ' + name + ' = ' + config.lib.toString() + ';';n });nn var lines = lib.concat([n 'var __minion__ = (' + createMinion.toString() + ')(', config.operation.toString(), ');',n 'self.addEventListener("message", function(event) {',n ' var buffer = __minion__(event.data);',n ' self.postMessage({buffer: buffer, meta: event.data.meta}, [buffer]);',n '});'n ]);nn var blob = new Blob(lines, {type: 'text/javascript'});n var source = URL.createObjectURL(blob);n var worker = new Worker(source);n worker.addEventListener('message', onMessage);n return worker;n}nn/**n * Create a faux worker for running operations.n * @param {Object} config Configuration.n * @param {function(MessageEvent)} onMessage Called with a message event.n * @return {Object} The faux worker.n */nfunction createFauxWorker(config, onMessage) {n var minion = createMinion(config.operation);n return {n postMessage: function(data) {n setTimeout(function() {n onMessage({'data': {'buffer': minion(data), 'meta': data}});n }, 0);n }n };n}nn/**n * A processor runs pixel or image operations in workers.n * @param {Object} config Configuration.n */nfunction Processor(config) {n this._imageOps = !!config.imageOps;n var threads;n if (config.threads === 0) {n threads = 0;n } else if (this._imageOps) {n threads = 1;n } else {n threads = config.threads || 1;n }n var workers = [];n if (threads) {n for (var i = 0; i < threads; ++i) {n workers = createWorker(config, this._onWorkerMessage.bind(this, i));n }n } else {n workers = createFauxWorker(config, this._onWorkerMessage.bind(this, 0));n }n this._workers = workers;n this._queue = [];n this._maxQueueLength = config.queue || Infinity;n this._running = 0;n this._dataLookup = {};n this._job = null;n}nn/**n * Run operation on input data.n * @param {Array.<Array|ImageData>} inputs Array of pixels or image datan * (depending on the operation type).n * @param {Object} meta A user data object. This is passed to all operationsn * and must be serializable.n * @param {function(Error, ImageData, Object)} callback Called when workn * completes. The first argument is any error. The second is the ImageDatan * generated by operations. The third is the user data object.n */nProcessor.prototype.process = function(inputs, meta, callback) {n this._enqueue({n inputs: inputs,n meta: meta,n callback: callbackn });n this._dispatch();n};nn/**n * Stop responding to any completed work and destroy the processor.n */nProcessor.prototype.destroy = function() {n for (var key in this) {n this = null;n }n this._destroyed = true;n};nn/**n * Add a job to the queue.n * @param {Object} job The job.n */nProcessor.prototype._enqueue = function(job) {n this._queue.push(job);n while (this._queue.length > this._maxQueueLength) {n this._queue.shift().callback(null, null);n }n};nn/**n * Dispatch a job.n */nProcessor.prototype._dispatch = function() {n if (this._running === 0 && this._queue.length > 0) {n var job = this._job = this._queue.shift();n var width = job.inputs.width;n var height = job.inputs.height;n var buffers = job.inputs.map(function(input) {n return input.data.buffer;n });n var threads = this._workers.length;n this._running = threads;n if (threads === 1) {n this._workers.postMessage({n 'buffers': buffers,n 'meta': job.meta,n 'imageOps': this._imageOps,n 'width': width,n 'height': heightn }, buffers);n } else {n var length = job.inputs.data.length;n var segmentLength = 4 * Math.ceil(length / 4 / threads);n for (var i = 0; i < threads; ++i) {n var offset = i * segmentLength;n var slices = [];n for (var j = 0, jj = buffers.length; j < jj; ++j) {n slices.push(buffers.slice(offset, offset + segmentLength));n }n this._workers.postMessage({n 'buffers': slices,n 'meta': job.meta,n 'imageOps': this._imageOps,n 'width': width,n 'height': heightn }, slices);n }n }n }n};nn/**n * Handle messages from the worker.n * @param {number} index The worker index.n * @param {MessageEvent} event The message event.n */nProcessor.prototype._onWorkerMessage = function(index, event) {n if (this._destroyed) {n return;n }n this._dataLookup = event.data;n –this._running;n if (this._running === 0) {n this._resolveJob();n }n};nn/**n * Resolve a job. If there are no more worker threads, the processor callbackn * will be called.n */nProcessor.prototype._resolveJob = function() {n var job = this._job;n var threads = this._workers.length;n var data, meta;n if (threads === 1) {n data = new Uint8ClampedArray(this._dataLookup['buffer']);n meta = this._dataLookup['meta'];n } else {n var length = job.inputs.data.length;n data = new Uint8ClampedArray(length);n meta = new Array(length);n var segmentLength = 4 * Math.ceil(length / 4 / threads);n for (var i = 0; i < threads; ++i) {n var buffer = this._dataLookup['buffer'];n var offset = i * segmentLength;n data.set(new Uint8ClampedArray(buffer), offset);n meta = this._dataLookup['meta'];n }n }n this._job = null;n this._dataLookup = {};n job.callback(null,n newImageData(data, job.inputs.width, job.inputs.height), meta);n this._dispatch();n};nnmodule.exports = Processor;n”,“var hasImageData = true;ntry {n new ImageData(10, 10);n} catch (_) {n hasImageData = false;n}nnvar context = document.createElement('canvas').getContext('2d');nnfunction newImageData(data, width, height) {n if (hasImageData) {n return new ImageData(data, width, height);n } else {n var imageData = context.createImageData(width, height);n imageData.data.set(data);n return imageData;n }n}nnexports.newImageData = newImageData;n”,“/**n * @module ol/utiln */n/**n * @return {?} Any return.n */nexport function abstract() {n return /** @type {?} */ ((function () {n throw new Error('Unimplemented abstract method.');n })());n}n/**n * Counter for getUid.n * @type {number}n * @privaten */nvar uidCounter_ = 0;n/**n * Gets a unique ID for an object. This mutates the object so that further callsn * with the same object as a parameter returns the same value. Unique IDs are generatedn * as a strictly increasing sequence. Adapted from goog.getUid.n *n * @param {Object} obj The object to get the unique ID for.n * @return {string} The unique ID for the object.n * @apin */nexport function getUid(obj) {n return obj.ol_uid || (obj.ol_uid = String(++uidCounter_));n}n/**n * OpenLayers version.n * @type {string}n */nexport var VERSION = '6.1.1';n//# sourceMappingURL=util.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/AssertionErrorn */nimport { VERSION } from './util.js';n/**n * Error object thrown when an assertion failed. This is an ECMA-262 Error,n * extended with a `code` property.n * See developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error.n */nvar AssertionError = /** @class */ (function (_super) {n __extends(AssertionError, _super);n /**n * @param {number} code Error code.n */n function AssertionError(code) {n var _this = this;n var path = VERSION === 'latest' ? VERSION : 'v' + VERSION.split(‘-’);n var message = 'Assertion failed. See openlayers.org/en/' + path +n '/doc/errors/#' + code + ' for details.';n _this = _super.call(this, message) || this;n /**n * Error code. The meaning of the code can be found onn * openlayers.org/en/latest/doc/errors/ (replace `latest` withn * the version found in the OpenLayers script's header comment if a versionn * other than the latest is used).n * @type {number}n * @apin */n _this.code = code;n /**n * @type {string}n */n _this.name = 'AssertionError';n // Re-assign message, see github.com/Rich-Harris/buble/issues/40n _this.message = message;n return _this;n }n return AssertionError;n}(Error));nexport default AssertionError;n//# sourceMappingURL=AssertionError.js.map”,“/**n * @module ol/CollectionEventTypen */n/**n * @enum {string}n */nexport default {n /**n * Triggered when an item is added to the collection.n * @event module:ol/Collection.CollectionEvent#addn * @apin */n ADD: 'add',n /**n * Triggered when an item is removed from the collection.n * @event module:ol/Collection.CollectionEvent#removen * @apin */n REMOVE: 'remove'n};n//# sourceMappingURL=CollectionEventType.js.map”,“/**n * @module ol/ObjectEventTypen */n/**n * @enum {string}n */nexport default {n /**n * Triggered when a property is changed.n * @event module:ol/Object.ObjectEvent#propertychangen * @apin */n PROPERTYCHANGE: 'propertychange'n};n//# sourceMappingURL=ObjectEventType.js.map”,“/**n * @module ol/objn */n/**n * Polyfill for Object.assign(). Assigns enumerable and own properties fromn * one or more source objects to a target object.n * See developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign.n *n * @param {!Object} target The target object.n * @param {…Object} var_sources The source object(s).n * @return {!Object} The modified target object.n */nexport var assign = (typeof Object.assign === 'function') ? Object.assign : function (target, var_sources) {n if (target === undefined || target === null) {n throw new TypeError('Cannot convert undefined or null to object');n }n var output = Object(target);n for (var i = 1, ii = arguments.length; i < ii; ++i) {n var source = arguments;n if (source !== undefined && source !== null) {n for (var key in source) {n if (source.hasOwnProperty(key)) {n output = source;n }n }n }n }n return output;n};n/**n * Removes all properties from an object.n * @param {Object} object The object to clear.n */nexport function clear(object) {n for (var property in object) {n delete object;n }n}n/**n * Polyfill for Object.values(). Get an array of property values from an object.n * See developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valuesn *n * @param {!Object<K,V>} object The object from which to get the values.n * @return {!Array<V>} The property values.n * @template K,Vn */nexport var getValues = (typeof Object.values === 'function') ? Object.values : function (object) {n var values = [];n for (var property in object) {n values.push(object);n }n return values;n};n/**n * Determine if an object has any properties.n * @param {Object} object The object to check.n * @return {boolean} The object is empty.n */nexport function isEmpty(object) {n var property;n for (property in object) {n return false;n }n return !property;n}n//# sourceMappingURL=obj.js.map”,“/**n * @module ol/eventsn */nimport { clear } from './obj.js';n/**n * Key to use with {@link module:ol/Observable~Observable#unByKey}.n * @typedef {Object} EventsKeyn * @property {ListenerFunction} listenern * @property {import("./events/Target.js").EventTargetLike} targetn * @property {string} typen * @apin */n/**n * Listener function. This function is called with an event object as argument.n * When the function returns `false`, event propagation will stop.n *n * @typedef {function((Event|import("./events/Event.js").default)): (void|boolean)} ListenerFunctionn * @apin */n/**n * Registers an event listener on an event target. Inspired byn * google.github.io/closure-library/api/source/closure/goog/events/events.js.src.htmln *n * This function efficiently binds a `listener` to a `this` object, and returnsn * a key for use with {@link module:ol/events~unlistenByKey}.n *n * @param {import("./events/Target.js").EventTargetLike} target Event target.n * @param {string} type Event type.n * @param {ListenerFunction} listener Listener.n * @param {Object=} opt_this Object referenced by the `this` keyword in then * listener. Default is the `target`.n * @param {boolean=} opt_once If true, add the listener as one-off listener.n * @return {EventsKey} Unique key for the listener.n */nexport function listen(target, type, listener, opt_this, opt_once) {n if (opt_this && opt_this !== target) {n listener = listener.bind(opt_this);n }n if (opt_once) {n var originalListener_1 = listener;n listener = function () {n target.removeEventListener(type, listener);n originalListener_1.apply(this, arguments);n };n }n var eventsKey = {n target: target,n type: type,n listener: listenern };n target.addEventListener(type, listener);n return eventsKey;n}n/**n * Registers a one-off event listener on an event target. Inspired byn * google.github.io/closure-library/api/source/closure/goog/events/events.js.src.htmln *n * This function efficiently binds a `listener` as self-unregistering listenern * to a `this` object, and returns a key for use withn * {@link module:ol/events~unlistenByKey} in case the listener needs to ben * unregistered before it is called.n *n * When {@link module:ol/events~listen} is called with the same arguments after thisn * function, the self-unregistering listener will be turned into a permanentn * listener.n *n * @param {import("./events/Target.js").EventTargetLike} target Event target.n * @param {string} type Event type.n * @param {ListenerFunction} listener Listener.n * @param {Object=} opt_this Object referenced by the `this` keyword in then * listener. Default is the `target`.n * @return {EventsKey} Key for unlistenByKey.n */nexport function listenOnce(target, type, listener, opt_this) {n return listen(target, type, listener, opt_this, true);n}n/**n * Unregisters event listeners on an event target. Inspired byn * google.github.io/closure-library/api/source/closure/goog/events/events.js.src.htmln *n * The argument passed to this function is the key returned fromn * {@link module:ol/events~listen} or {@link module:ol/events~listenOnce}.n *n * @param {EventsKey} key The key.n */nexport function unlistenByKey(key) {n if (key && key.target) {n key.target.removeEventListener(key.type, key.listener);n clear(key);n }n}n//# sourceMappingURL=events.js.map”,“/**n * @module ol/Disposablen */n/**n * @classdescn * Objects that need to clean up after themselves.n */nvar Disposable = /** @class */ (function () {n function Disposable() {n /**n * The object has already been disposed.n * @type {boolean}n * @privaten */n this.disposed_ = false;n }n /**n * Clean up.n */n Disposable.prototype.dispose = function () {n if (!this.disposed_) {n this.disposed_ = true;n this.disposeInternal();n }n };n /**n * Extension point for disposable objects.n * @protectedn */n Disposable.prototype.disposeInternal = function () { };n return Disposable;n}());nexport default Disposable;n//# sourceMappingURL=Disposable.js.map”,“/**n * @module ol/arrayn */n/**n * Performs a binary search on the provided sorted list and returns the index of the item if found. If it can't be found it'll return -1.n * github.com/darkskyapp/binary-searchn *n * @param {Array<*>} haystack Items to search through.n * @param {*} needle The item to look for.n * @param {Function=} opt_comparator Comparator function.n * @return {number} The index of the item if found, -1 if not.n */nexport function binarySearch(haystack, needle, opt_comparator) {n var mid, cmp;n var comparator = opt_comparator || numberSafeCompareFunction;n var low = 0;n var high = haystack.length;n var found = false;n while (low < high) {n /* Note that "(low + high) >>> 1" may overflow, and results in a typecastn * to double (which gives the wrong results). */n mid = low + (high - low >> 1);n cmp = +comparator(haystack, needle);n if (cmp < 0.0) { /* Too low. */n low = mid + 1;n }n else { /* Key found or too high */n high = mid;n found = !cmp;n }n }n /* Key not found. */n return found ? low : ~low;n}n/**n * Compare function for array sort that is safe for numbers.n * @param {*} a The first object to be compared.n * @param {*} b The second object to be compared.n * @return {number} A negative number, zero, or a positive number as the firstn * argument is less than, equal to, or greater than the second.n */nexport function numberSafeCompareFunction(a, b) {n return a > b ? 1 : a < b ? -1 : 0;n}n/**n * Whether the array contains the given object.n * @param {Array<*>} arr The array to test for the presence of the element.n * @param {*} obj The object for which to test.n * @return {boolean} The object is in the array.n */nexport function includes(arr, obj) {n return arr.indexOf(obj) >= 0;n}n/**n * @param {Array<number>} arr Array.n * @param {number} target Target.n * @param {number} direction 0 means return the nearest, > 0n * means return the largest nearest, < 0 means return then * smallest nearest.n * @return {number} Index.n */nexport function linearFindNearest(arr, target, direction) {n var n = arr.length;n if (arr <= target) {n return 0;n }n else if (target <= arr[n - 1]) {n return n - 1;n }n else {n var i = void 0;n if (direction > 0) {n for (i = 1; i < n; ++i) {n if (arr < target) {n return i - 1;n }n }n }n else if (direction < 0) {n for (i = 1; i < n; ++i) {n if (arr <= target) {n return i;n }n }n }n else {n for (i = 1; i < n; ++i) {n if (arr == target) {n return i;n }n else if (arr < target) {n if (arr[i - 1] - target < target - arr) {n return i - 1;n }n else {n return i;n }n }n }n }n return n - 1;n }n}n/**n * @param {Array<*>} arr Array.n * @param {number} begin Begin index.n * @param {number} end End index.n */nexport function reverseSubArray(arr, begin, end) {n while (begin < end) {n var tmp = arr;n arr = arr;n arr = tmp;n ++begin;n –end;n }n}n/**n * @param {Array<VALUE>} arr The array to modify.n * @param {!Array<VALUE>|VALUE} data The elements or arrays of elements to add to arr.n * @template VALUEn */nexport function extend(arr, data) {n var extension = Array.isArray(data) ? data : [data];n var length = extension.length;n for (var i = 0; i < length; i++) {n arr = extension;n }n}n/**n * @param {Array<VALUE>} arr The array to modify.n * @param {VALUE} obj The element to remove.n * @template VALUEn * @return {boolean} If the element was removed.n */nexport function remove(arr, obj) {n var i = arr.indexOf(obj);n var found = i > -1;n if (found) {n arr.splice(i, 1);n }n return found;n}n/**n * @param {Array<VALUE>} arr The array to search in.n * @param {function(VALUE, number, ?) : boolean} func The function to compare.n * @template VALUEn * @return {VALUE|null} The element found or null.n */nexport function find(arr, func) {n var length = arr.length >>> 0;n var value;n for (var i = 0; i < length; i++) {n value = arr;n if (func(value, i, arr)) {n return value;n }n }n return null;n}n/**n * @param {Array|Uint8ClampedArray} arr1 The first array to compare.n * @param {Array|Uint8ClampedArray} arr2 The second array to compare.n * @return {boolean} Whether the two arrays are equal.n */nexport function equals(arr1, arr2) {n var len1 = arr1.length;n if (len1 !== arr2.length) {n return false;n }n for (var i = 0; i < len1; i++) {n if (arr1 !== arr2) {n return false;n }n }n return true;n}n/**n * Sort the passed array such that the relative order of equal elements is preverved.n * See en.wikipedia.org/wiki/Sorting_algorithm#Stability for details.n * @param {Array<*>} arr The array to sort (modifies original).n * @param {!function(*, *): number} compareFnc Comparison function.n * @apin */nexport function stableSort(arr, compareFnc) {n var length = arr.length;n var tmp = Array(arr.length);n var i;n for (i = 0; i < length; i++) {n tmp = { index: i, value: arr };n }n tmp.sort(function (a, b) {n return compareFnc(a.value, b.value) || a.index - b.index;n });n for (i = 0; i < arr.length; i++) {n arr = tmp.value;n }n}n/**n * @param {Array<*>} arr The array to search in.n * @param {Function} func Comparison function.n * @return {number} Return index.n */nexport function findIndex(arr, func) {n var index;n var found = !arr.every(function (el, idx) {n index = idx;n return !func(el, idx, arr);n });n return found ? index : -1;n}n/**n * @param {Array<*>} arr The array to test.n * @param {Function=} opt_func Comparison function.n * @param {boolean=} opt_strict Strictly sorted (default false).n * @return {boolean} Return index.n */nexport function isSorted(arr, opt_func, opt_strict) {n var compare = opt_func || numberSafeCompareFunction;n return arr.every(function (currentVal, index) {n if (index === 0) {n return true;n }n var res = compare(arr[index - 1], currentVal);n return !(res > 0 || opt_strict && res === 0);n });n}n//# sourceMappingURL=array.js.map”,“/**n * @module ol/functionsn */nimport { equals as arrayEquals } from './array.js';n/**n * Always returns true.n * @returns {boolean} true.n */nexport function TRUE() {n return true;n}n/**n * Always returns false.n * @returns {boolean} false.n */nexport function FALSE() {n return false;n}n/**n * A reusable function, used e.g. as a default for callbacks.n *n * @return {void} Nothing.n */nexport function VOID() { }n/**n * Wrap a function in another function that remembers the last return. If then * returned function is called twice in a row with the same arguments and the samen * this object, it will return the value from the first call in the second call.n *n * @param {function(…any): ReturnType} fn The function to memoize.n * @return {function(…any): ReturnType} The memoized function.n * @template ReturnTypen */nexport function memoizeOne(fn) {n var called = false;n /** @type {ReturnType} */n var lastResult;n /** @type {Array<any>} */n var lastArgs;n var lastThis;n return function () {n var nextArgs = Array.prototype.slice.call(arguments);n if (!called || this !== lastThis || !arrayEquals(nextArgs, lastArgs)) {n called = true;n lastThis = this;n lastArgs = nextArgs;n lastResult = fn.apply(this, arguments);n }n return lastResult;n };n}n//# sourceMappingURL=functions.js.map”,“/**n * @module ol/events/Eventn */n/**n * @classdescn * Stripped down implementation of the W3C DOM Level 2 Event interface.n * See www.w3.org/TR/DOM-Level-2-Events/events.html#Events-interface.n *n * This implementation only provides `type` and `target` properties, andn * `stopPropagation` and `preventDefault` methods. It is meant as base classn * for higher level events defined in the library, and works withn * {@link module:ol/events/Target~Target}.n */nvar BaseEvent = /** @class */ (function () {n /**n * @param {string} type Type.n */n function BaseEvent(type) {n /**n * @type {boolean}n */n this.propagationStopped;n /**n * The event type.n * @type {string}n * @apin */n this.type = type;n /**n * The event target.n * @type {Object}n * @apin */n this.target = null;n }n /**n * Stop event propagation.n * @apin */n BaseEvent.prototype.preventDefault = function () {n this.propagationStopped = true;n };n /**n * Stop event propagation.n * @apin */n BaseEvent.prototype.stopPropagation = function () {n this.propagationStopped = true;n };n return BaseEvent;n}());n/**n * @param {Event|import("./Event.js").default} evt Eventn */nexport function stopPropagation(evt) {n evt.stopPropagation();n}n/**n * @param {Event|import("./Event.js").default} evt Eventn */nexport function preventDefault(evt) {n evt.preventDefault();n}nexport default BaseEvent;n//# sourceMappingURL=Event.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/events/Targetn */nimport Disposable from '../Disposable.js';nimport { VOID } from '../functions.js';nimport Event from './Event.js';nimport { clear } from '../obj.js';n/**n * @typedef {EventTarget|Target} EventTargetLiken */n/**n * @classdescn * A simplified implementation of the W3C DOM Level 2 EventTarget interface.n * See www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.n *n * There are two important simplifications compared to the specification:n *n * 1. The handling of `useCapture` in `addEventListener` andn * `removeEventListener`. There is no real capture model.n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.n * There is no event target hierarchy. When a listener callsn * `stopPropagation` or `preventDefault` on an event object, it means that non * more listeners after this one will be called. Same as when the listenern * returns false.n */nvar Target = /** @class */ (function (_super) {n __extends(Target, _super);n /**n * @param {*=} opt_target Default event target for dispatched events.n */n function Target(opt_target) {n var _this = _super.call(this) || this;n /**n * @privaten * @type {*}n */n this.eventTarget = opt_target;n /**n * @privaten * @type {!Object<string, number>}n */n this.pendingRemovals = {};n /**n * @privaten * @type {!Object<string, number>}n */n this.dispatching = {};n /**n * @privaten * @type {!Object<string, Array<import("../events.js").ListenerFunction>>}n */n this.listeners = {};n return _this;n }n /**n * @param {string} type Type.n * @param {import("../events.js").ListenerFunction} listener Listener.n */n Target.prototype.addEventListener = function (type, listener) {n if (!type || !listener) {n return;n }n var listeners = this.listeners_;n if (!listeners) {n listeners = [];n this.listeners_ = listeners;n }n if (listeners.indexOf(listener) === -1) {n listeners.push(listener);n }n };n /**n * Dispatches an event and calls all listeners listening for eventsn * of this type. The event parameter can either be a string or ann * Object with a `type` property.n *n * @param {{type: string,n * target: (EventTargetLike|undefined),n * propagationStopped: (boolean|undefined)}|n * import("./Event.js").default|string} event Event object.n * @return {boolean|undefined} `false` if anyone called preventDefault on then * event object or if any of the listeners returned false.n * @apin */n Target.prototype.dispatchEvent = function (event) {n var evt = typeof event === 'string' ? new Event(event) : event;n var type = evt.type;n if (!evt.target) {n evt.target = this.eventTarget_ || this;n }n var listeners = this.listeners_;n var propagate;n if (listeners) {n if (!(type in this.dispatching_)) {n this.dispatching_ = 0;n this.pendingRemovals_ = 0;n }n ++this.dispatching_;n for (var i = 0, ii = listeners.length; i < ii; ++i) {n if (listeners.call(this, evt) === false || evt.propagationStopped) {n propagate = false;n break;n }n }n –this.dispatching_[type];n if (this.dispatching_ === 0) {n var pendingRemovals = this.pendingRemovals_;n delete this.pendingRemovals_;n while (pendingRemovals–) {n this.removeEventListener(type, VOID);n }n delete this.dispatching_;n }n return propagate;n }n };n /**n * @inheritDocn */n Target.prototype.disposeInternal = function () {n clear(this.listeners_);n };n /**n * Get the listeners for a specified event type. Listeners are returned in then * order that they will be called in.n *n * @param {string} type Type.n * @return {Array<import("../events.js").ListenerFunction>} Listeners.n */n Target.prototype.getListeners = function (type) {n return this.listeners_;n };n /**n * @param {string=} opt_type Type. If not provided,n * `true` will be returned if this event target has any listeners.n * @return {boolean} Has listeners.n */n Target.prototype.hasListener = function (opt_type) {n return opt_type ?n opt_type in this.listeners_ :n Object.keys(this.listeners_).length > 0;n };n /**n * @param {string} type Type.n * @param {import("../events.js").ListenerFunction} listener Listener.n */n Target.prototype.removeEventListener = function (type, listener) {n var listeners = this.listeners_;n if (listeners) {n var index = listeners.indexOf(listener);n if (index !== -1) {n if (type in this.pendingRemovals_) {n // make listener a no-op, and remove later in dispatchEvent()n listeners = VOID;n ++this.pendingRemovals_;n }n else {n listeners.splice(index, 1);n if (listeners.length === 0) {n delete this.listeners_;n }n }n }n }n };n return Target;n}(Disposable));nexport default Target;n//# sourceMappingURL=Target.js.map”,“/**n * @module ol/events/EventTypen */n/**n * @enum {string}n * @constn */nexport default {n /**n * Generic change event. Triggered when the revision counter is increased.n * @event module:ol/events/Event~BaseEvent#changen * @apin */n CHANGE: 'change',n /**n * Generic error event. Triggered when an error occurs.n * @event module:ol/events/Event~BaseEvent#errorn * @apin */n ERROR: 'error',n BLUR: 'blur',n CLEAR: 'clear',n CONTEXTMENU: 'contextmenu',n CLICK: 'click',n DBLCLICK: 'dblclick',n DRAGENTER: 'dragenter',n DRAGOVER: 'dragover',n DROP: 'drop',n FOCUS: 'focus',n KEYDOWN: 'keydown',n KEYPRESS: 'keypress',n LOAD: 'load',n RESIZE: 'resize',n WHEEL: 'wheel'n};n//# sourceMappingURL=EventType.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/Observablen */nimport { listen, unlistenByKey, listenOnce } from './events.js';nimport EventTarget from './events/Target.js';nimport EventType from './events/EventType.js';n/**n * @classdescn * Abstract base class; normally only used for creating subclasses and notn * instantiated in apps.n * An event target providing convenient methods for listener registrationn * and unregistration. A generic `change` event is always available throughn * {@link module:ol/Observable~Observable#changed}.n *n * @fires import("./events/Event.js").defaultn * @apin */nvar Observable = /** @class */ (function (_super) {n __extends(Observable, _super);n function Observable() {n var _this = _super.call(this) || this;n /**n * @privaten * @type {number}n */n this.revision = 0;n return _this;n }n /**n * Increases the revision counter and dispatches a 'change' event.n * @apin */n Observable.prototype.changed = function () {n ++this.revision_;n this.dispatchEvent(EventType.CHANGE);n };n /**n * Get the version number for this object. Each time the object is modified,n * its version number will be incremented.n * @return {number} Revision.n * @apin */n Observable.prototype.getRevision = function () {n return this.revision_;n };n /**n * Listen for a certain type of event.n * @param {string|Array<string>} type The event type or array of event types.n * @param {function(?): ?} listener The listener function.n * @return {import("./events.js").EventsKey|Array<import("./events.js").EventsKey>} Unique key for the listener. Ifn * called with an array of event types as the first argument, the returnn * will be an array of keys.n * @apin */n Observable.prototype.on = function (type, listener) {n if (Array.isArray(type)) {n var len = type.length;n var keys = new Array(len);n for (var i = 0; i < len; ++i) {n keys = listen(this, type, listener);n }n return keys;n }n else {n return listen(this, /** @type {string} */ (type), listener);n }n };n /**n * Listen once for a certain type of event.n * @param {string|Array<string>} type The event type or array of event types.n * @param {function(?): ?} listener The listener function.n * @return {import("./events.js").EventsKey|Array<import("./events.js").EventsKey>} Unique key for the listener. Ifn * called with an array of event types as the first argument, the returnn * will be an array of keys.n * @apin */n Observable.prototype.once = function (type, listener) {n if (Array.isArray(type)) {n var len = type.length;n var keys = new Array(len);n for (var i = 0; i < len; ++i) {n keys = listenOnce(this, type, listener);n }n return keys;n }n else {n return listenOnce(this, /** @type {string} */ (type), listener);n }n };n /**n * Unlisten for a certain type of event.n * @param {string|Array<string>} type The event type or array of event types.n * @param {function(?): ?} listener The listener function.n * @apin */n Observable.prototype.un = function (type, listener) {n if (Array.isArray(type)) {n for (var i = 0, ii = type.length; i < ii; ++i) {n this.removeEventListener(type, listener);n }n }n else {n this.removeEventListener(type, listener);n }n };n return Observable;n}(EventTarget));n/**n * Removes an event listener using the key returned by `on()` or `once()`.n * @param {import("./events.js").EventsKey|Array<import("./events.js").EventsKey>} key The key returned by `on()`n * or `once()` (or an array of keys).n * @apin */nexport function unByKey(key) {n if (Array.isArray(key)) {n for (var i = 0, ii = key.length; i < ii; ++i) {n unlistenByKey(key);n }n }n else {n unlistenByKey(/** @type {import("./events.js").EventsKey} */ (key));n }n}nexport default Observable;n//# sourceMappingURL=Observable.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/Objectn */nimport { getUid } from './util.js';nimport ObjectEventType from './ObjectEventType.js';nimport Observable from './Observable.js';nimport Event from './events/Event.js';nimport { assign } from './obj.js';n/**n * @classdescn * Events emitted by {@link module:ol/Object~BaseObject} instances are instances of this type.n */nvar ObjectEvent = /** @class */ (function (_super) {n __extends(ObjectEvent, _super);n /**n * @param {string} type The event type.n * @param {string} key The property name.n * @param {*} oldValue The old value for `key`.n */n function ObjectEvent(type, key, oldValue) {n var _this = _super.call(this, type) || this;n /**n * The name of the property whose value is changing.n * @type {string}n * @apin */n _this.key = key;n /**n * The old value. To get the new value use `e.target.get(e.key)` wheren * `e` is the event object.n * @type {*}n * @apin */n _this.oldValue = oldValue;n return _this;n }n return ObjectEvent;n}(Event));nexport { ObjectEvent };n/**n * @classdescn * Abstract base class; normally only used for creating subclasses and notn * instantiated in apps.n * Most non-trivial classes inherit from this.n *n * This extends {@link module:ol/Observable} with observablen * properties, where each property is observable as well as the object as an * whole.n *n * Classes that inherit from this have pre-defined properties, to which you cann * add your owns. The pre-defined properties are listed in this documentation asn * 'Observable Properties', and have their own accessors; for example,n * {@link module:ol/Map~Map} has a `target` property, accessed withn * `getTarget()` and changed with `setTarget()`. Not all properties are howevern * settable. There are also general-purpose accessors `get()` and `set()`. Forn * example, `get('target')` is equivalent to `getTarget()`.n *n * The `set` accessors trigger a change event, and you can monitor this byn * registering a listener. For example, {@link module:ol/View~View} has an * `center` property, so `view.on('change:center', function(evt) {…});` wouldn * call the function whenever the value of the center property changes. Withinn * the function, `evt.target` would be the view, so `evt.target.getCenter()`n * would return the new center.n *n * You can add your own observable properties withn * `object.set('prop', 'value')`, and retrieve that with `object.get('prop')`.n * You can listen for changes on that property value withn * `object.on('change:prop', listener)`. You can get a list of alln * properties with {@link module:ol/Object~BaseObject#getProperties}.n *n * Note that the observable properties are separate from standard JS properties.n * You can, for example, give your map object a title withn * `map.title='New title'` and with `map.set('title', 'Another title')`. Then * first will be a `hasOwnProperty`; the second will appear inn * `getProperties()`. Only the second is observable.n *n * Properties can be deleted by using the unset method. E.g.n * object.unset('foo').n *n * @fires ObjectEventn * @apin */nvar BaseObject = /** @class */ (function (_super) {n __extends(BaseObject, _super);n /**n * @param {Object<string, *>=} opt_values An object with key-value pairs.n */n function BaseObject(opt_values) {n var _this = _super.call(this) || this;n // Call {@link module:ol/util~getUid} to ensure that the order of objects' ids isn // the same as the order in which they were created. This also helps ton // ensure that object properties are always added in the same order, whichn // helps many JavaScript engines generate faster code.n getUid(_this);n /**n * @privaten * @type {!Object<string, *>}n */n this.values = {};n if (opt_values !== undefined) {n _this.setProperties(opt_values);n }n return _this;n }n /**n * Gets a value.n * @param {string} key Key name.n * @return {*} Value.n * @apin */n BaseObject.prototype.get = function (key) {n var value;n if (this.values_.hasOwnProperty(key)) {n value = this.values_;n }n return value;n };n /**n * Get a list of object property names.n * @return {Array<string>} List of property names.n * @apin */n BaseObject.prototype.getKeys = function () {n return Object.keys(this.values_);n };n /**n * Get an object of all property names and values.n * @return {Object<string, *>} Object.n * @apin */n BaseObject.prototype.getProperties = function () {n return assign({}, this.values_);n };n /**n * @param {string} key Key name.n * @param {*} oldValue Old value.n */n BaseObject.prototype.notify = function (key, oldValue) {n var eventType;n eventType = getChangeEventType(key);n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));n eventType = ObjectEventType.PROPERTYCHANGE;n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));n };n /**n * Sets a value.n * @param {string} key Key name.n * @param {*} value Value.n * @param {boolean=} opt_silent Update without triggering an event.n * @apin */n BaseObject.prototype.set = function (key, value, opt_silent) {n if (opt_silent) {n this.values_ = value;n }n else {n var oldValue = this.values_;n this.values_ = value;n if (oldValue !== value) {n this.notify(key, oldValue);n }n }n };n /**n * Sets a collection of key-value pairs. Note that this changes any existingn * properties and adds new ones (it does not remove any existing properties).n * @param {Object<string, *>} values Values.n * @param {boolean=} opt_silent Update without triggering an event.n * @apin */n BaseObject.prototype.setProperties = function (values, opt_silent) {n for (var key in values) {n this.set(key, values, opt_silent);n }n };n /**n * Unsets a property.n * @param {string} key Key name.n * @param {boolean=} opt_silent Unset without triggering an event.n * @apin */n BaseObject.prototype.unset = function (key, opt_silent) {n if (key in this.values_) {n var oldValue = this.values_;n delete this.values_;n if (!opt_silent) {n this.notify(key, oldValue);n }n }n };n return BaseObject;n}(Observable));n/**n * @type {Object<string, string>}n */nvar changeEventTypeCache = {};n/**n * @param {string} key Key name.n * @return {string} Change name.n */nexport function getChangeEventType(key) {n return changeEventTypeCache.hasOwnProperty(key) ?n changeEventTypeCache :n (changeEventTypeCache = 'change:' + key);n}nexport default BaseObject;n//# sourceMappingURL=Object.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/Collectionn */nimport AssertionError from './AssertionError.js';nimport CollectionEventType from './CollectionEventType.js';nimport BaseObject from './Object.js';nimport Event from './events/Event.js';n/**n * @enum {string}n * @privaten */nvar Property = {n LENGTH: 'length'n};n/**n * @classdescn * Events emitted by {@link module:ol/Collection~Collection} instances are instances of thisn * type.n */nvar CollectionEvent = /** @class */ (function (_super) {n __extends(CollectionEvent, _super);n /**n * @param {CollectionEventType} type Type.n * @param {*=} opt_element Element.n * @param {number} opt_index The index of the added or removed element.n */n function CollectionEvent(type, opt_element, opt_index) {n var _this = _super.call(this, type) || this;n /**n * The element that is added to or removed from the collection.n * @type {*}n * @apin */n _this.element = opt_element;n /**n * The index of the added or removed element.n * @type {number}n * @apin */n _this.index = opt_index;n return _this;n }n return CollectionEvent;n}(Event));nexport { CollectionEvent };n/**n * @typedef {Object} Optionsn * @property {boolean} [unique=false] Disallow the same item from being added ton * the collection twice.n */n/**n * @classdescn * An expanded version of standard JS Array, adding convenience methods forn * manipulation. Add and remove changes to the Collection trigger a Collectionn * event. Note that this does not cover changes to the objects within then * Collection; they trigger events on the appropriate object, not on then * Collection as a whole.n *n * @fires CollectionEventn *n * @template Tn * @apin */nvar Collection = /** @class */ (function (_super) {n __extends(Collection, _super);n /**n * @param {Array<T>=} opt_array Array.n * @param {Options=} opt_options Collection options.n */n function Collection(opt_array, opt_options) {n var _this = _super.call(this) || this;n var options = opt_options || {};n /**n * @privaten * @type {boolean}n */n this.unique = !!options.unique;n /**n * @privaten * @type {!Array<T>}n */n this.array = opt_array ? opt_array : [];n if (this.unique) {n for (var i = 0, ii = this.array.length; i < ii; ++i) {n this.assertUnique(this.array[i], i);n }n }n this.updateLength();n return _this;n }n /**n * Remove all elements from the collection.n * @apin */n Collection.prototype.clear = function () {n while (this.getLength() > 0) {n this.pop();n }n };n /**n * Add elements to the collection. This pushes each item in the provided arrayn * to the end of the collection.n * @param {!Array<T>} arr Array.n * @return {Collection<T>} This collection.n * @apin */n Collection.prototype.extend = function (arr) {n for (var i = 0, ii = arr.length; i < ii; ++i) {n this.push(arr);n }n return this;n };n /**n * Iterate over each element, calling the provided callback.n * @param {function(T, number, Array<T>): *} f The function to calln * for every element. This function takes 3 arguments (the element, then * index and the array). The return value is ignored.n * @apin */n Collection.prototype.forEach = function (f) {n var array = this.array_;n for (var i = 0, ii = array.length; i < ii; ++i) {n f(array, i, array);n }n };n /**n * Get a reference to the underlying Array object. Warning: if the arrayn * is mutated, no events will be dispatched by the collection, and then * collection's "length" property won't be in sync with the actual lengthn * of the array.n * @return {!Array<T>} Array.n * @apin */n Collection.prototype.getArray = function () {n return this.array_;n };n /**n * Get the element at the provided index.n * @param {number} index Index.n * @return {T} Element.n * @apin */n Collection.prototype.item = function (index) {n return this.array_;n };n /**n * Get the length of this collection.n * @return {number} The length of the array.n * @observablen * @apin */n Collection.prototype.getLength = function () {n return this.get(Property.LENGTH);n };n /**n * Insert an element at the provided index.n * @param {number} index Index.n * @param {T} elem Element.n * @apin */n Collection.prototype.insertAt = function (index, elem) {n if (this.unique_) {n this.assertUnique_(elem);n }n this.array_.splice(index, 0, elem);n this.updateLength_();n this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD, elem, index));n };n /**n * Remove the last element of the collection and return it.n * Return `undefined` if the collection is empty.n * @return {T|undefined} Element.n * @apin */n Collection.prototype.pop = function () {n return this.removeAt(this.getLength() - 1);n };n /**n * Insert the provided element at the end of the collection.n * @param {T} elem Element.n * @return {number} New length of the collection.n * @apin */n Collection.prototype.push = function (elem) {n if (this.unique_) {n this.assertUnique_(elem);n }n var n = this.getLength();n this.insertAt(n, elem);n return this.getLength();n };n /**n * Remove the first occurrence of an element from the collection.n * @param {T} elem Element.n * @return {T|undefined} The removed element or undefined if none found.n * @apin */n Collection.prototype.remove = function (elem) {n var arr = this.array_;n for (var i = 0, ii = arr.length; i < ii; ++i) {n if (arr === elem) {n return this.removeAt(i);n }n }n return undefined;n };n /**n * Remove the element at the provided index and return it.n * Return `undefined` if the collection does not contain this index.n * @param {number} index Index.n * @return {T|undefined} Value.n * @apin */n Collection.prototype.removeAt = function (index) {n var prev = this.array_;n this.array_.splice(index, 1);n this.updateLength_();n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev, index));n return prev;n };n /**n * Set the element at the provided index.n * @param {number} index Index.n * @param {T} elem Element.n * @apin */n Collection.prototype.setAt = function (index, elem) {n var n = this.getLength();n if (index < n) {n if (this.unique_) {n this.assertUnique_(elem, index);n }n var prev = this.array_;n this.array_ = elem;n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev, index));n this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD, elem, index));n }n else {n for (var j = n; j < index; ++j) {n this.insertAt(j, undefined);n }n this.insertAt(index, elem);n }n };n /**n * @privaten */n Collection.prototype.updateLength_ = function () {n this.set(Property.LENGTH, this.array_.length);n };n /**n * @privaten * @param {T} elem Element.n * @param {number=} opt_except Optional index to ignore.n */n Collection.prototype.assertUnique_ = function (elem, opt_except) {n for (var i = 0, ii = this.array_.length; i < ii; ++i) {n if (this.array_ === elem && i !== opt_except) {n throw new AssertionError(58);n }n }n };n return Collection;n}(BaseObject));nexport default Collection;n//# sourceMappingURL=Collection.js.map”,“/**n * @module ol/assertsn */nimport AssertionError from './AssertionError.js';n/**n * @param {*} assertion Assertion we expected to be truthy.n * @param {number} errorCode Error code.n */nexport function assert(assertion, errorCode) {n if (!assertion) {n throw new AssertionError(errorCode);n }n}n//# sourceMappingURL=asserts.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/Featuren */nimport { assert } from './asserts.js';nimport { listen, unlistenByKey } from './events.js';nimport EventType from './events/EventType.js';nimport BaseObject, { getChangeEventType } from './Object.js';n/**n * @typedef {typeof Feature|typeof import("./render/Feature.js").default} FeatureClassn */n/**n * @typedef {Feature|import("./render/Feature.js").default} FeatureLiken */n/**n * @classdescn * A vector object for geographic features with a geometry and othern * attribute properties, similar to the features in vector file formats liken * GeoJSON.n *n * Features can be styled individually with `setStyle`; otherwise they use then * style of their vector layer.n *n * Note that attribute properties are set as {@link module:ol/Object} properties onn * 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 then * geometry using the `setGeometry` method and get it with `getGeometry`.n * It is possible to store more than one geometry on a feature using attributen * properties. By default, the geometry used for rendering is identified byn * the property name `geometry`. If you want to use another geometry propertyn * for rendering, use the `setGeometryName` method to change the attributen * property associated with the geometry for the feature. For example:n *n * “`jsn *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 geometryn * var poly = feature.getGeometry();n *n * // Render the feature as a point using the coordinates from labelPointn * feature.setGeometryName('labelPoint');n *n * // get the point geometryn * var point = feature.getGeometry();n * “`n *n * @apin * @template {import("./geom/Geometry.js").default} Geometryn */nvar Feature = /** @class */ (function (_super) {n __extends(Feature, _super);n /**n * @param {Geometry|Object<string, *>=} opt_geometryOrPropertiesn * You may pass a Geometry object directly, or an object literal containingn * properties. If you pass an object literal, you may include a Geometryn * associated with a `geometry` key.n */n function Feature(opt_geometryOrProperties) {n var _this = _super.call(this) || this;n /**n * @privaten * @type {number|string|undefined}n */n this.id = undefined;n /**n * @type {string}n * @privaten */n this.geometryName = 'geometry';n /**n * User provided style.n * @privaten * @type {import("./style/Style.js").StyleLike}n */n this.style = null;n /**n * @privaten * @type {import("./style/Style.js").StyleFunction|undefined}n */n this.styleFunction = undefined;n /**n * @privaten * @type {?import("./events.js").EventsKey}n */n this.geometryChangeKey = null;n _this.addEventListener(getChangeEventType(this.geometryName), this.handleGeometryChanged);n if (opt_geometryOrProperties) {n if (typeof /** @type {?} */ (opt_geometryOrProperties).getSimplifiedGeometry === 'function') {n var geometry = /** @type {Geometry} */ (opt_geometryOrProperties);n _this.setGeometry(geometry);n }n else {n /** @type {Object<string, *>} */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 itn * is also cloned. The feature id is not set in the clone.n * @return {Feature} The clone.n * @apin */n Feature.prototype.clone = function () {n var clone = new Feature(this.getProperties());n clone.setGeometryName(this.getGeometryName());n var geometry = this.getGeometry();n if (geometry) {n clone.setGeometry(geometry.clone());n }n var style = this.getStyle();n if (style) {n clone.setStyle(style);n }n return clone;n };n /**n * Get the feature's default geometry. A feature may have any number of namedn * geometries. The "default" geometry (the one that is rendered by default) isn * set when calling {@link module:ol/Feature~Feature#setGeometry}.n * @return {Geometry|undefined} The default geometry for the feature.n * @apin * @observablen */n Feature.prototype.getGeometry = function () {n return (n /** @type {Geometry|undefined} */ (this.get(this.geometryName_)));n };n /**n * Get the feature identifier. This is a stable identifier for the feature andn * is either set when reading data from a remote source or set explicitly byn * calling {@link module:ol/Feature~Feature#setId}.n * @return {number|string|undefined} Id.n * @apin */n Feature.prototype.getId = function () {n return this.id_;n };n /**n * Get the name of the feature's default geometry. By default, the defaultn * geometry is named `geometry`.n * @return {string} Get the property name associated with the default geometryn * for this feature.n * @apin */n Feature.prototype.getGeometryName = function () {n return this.geometryName_;n };n /**n * Get the feature's style. Will return what was provided to then * {@link module:ol/Feature~Feature#setStyle} method.n * @return {import("./style/Style.js").StyleLike} The feature style.n * @apin */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 functionn * representing the current style of this feature.n * @apin */n Feature.prototype.getStyleFunction = function () {n return this.styleFunction_;n };n /**n * @privaten */n Feature.prototype.handleGeometryChange_ = function () {n this.changed();n };n /**n * @privaten */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 propertyn * with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.n * @param {Geometry|undefined} geometry The new geometry.n * @apin * @observablen */n Feature.prototype.setGeometry = function (geometry) {n this.set(this.geometryName_, geometry);n };n /**n * Set the style for the feature. This can be a single style object, an arrayn * of styles, or a function that takes a resolution and returns an array ofn * styles. If it is `null` the feature has no style (a `null` style).n * @param {import("./style/Style.js").StyleLike} style Style for this feature.n * @apin * @fires module:ol/events/Event~BaseEvent#event:changen */n Feature.prototype.setStyle = function (style) {n this.style_ = style;n this.styleFunction_ = !style ? undefined : createStyleFunction(style);n this.changed();n };n /**n * Set the feature id. The feature id is considered stable and may be used whenn * requesting features or comparing identifiers returned from a remote source.n * The feature id can be used with then * {@link module:ol/source/Vector~VectorSource#getFeatureById} method.n * @param {number|string|undefined} id The feature id.n * @apin * @fires module:ol/events/Event~BaseEvent#event:changen */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 withn * this name will be returned.n * @param {string} name The property name of the default geometry.n * @apin */n Feature.prototype.setGeometryName = function (name) {n this.removeEventListener(getChangeEventType(this.geometryName_), this.handleGeometryChanged_);n this.geometryName_ = name;n this.addEventListener(getChangeEventType(this.geometryName_), this.handleGeometryChanged_);n this.handleGeometryChanged_();n };n return Feature;n}(BaseObject));n/**n * Convert the provided object into a feature style function. Functions passedn * through unchanged. Arrays of Style or single style objects wrappedn * in a new feature style function.n * @param {!import("./style/Style.js").StyleFunction|!Array<import("./style/Style.js").default>|!import("./style/Style.js").default} objn * 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<import("./style/Style.js").default>}n */n var styles_1;n if (Array.isArray(obj)) {n styles_1 = obj;n }n else {n assert(typeof /** @type {?} */ (obj).getZIndex === 'function', 41); // Expected an `import("./style/Style.js").Style` or an array of `import("./style/Style.js").Style`n var style = /** @type {import("./style/Style.js").default} */ (obj);n styles_1 = [style];n }n return function () {n return styles_1;n };n }n}nexport default Feature;n//# sourceMappingURL=Feature.js.map”,“/**n * @module ol/extent/Cornern */n/**n * Extent corner.n * @enum {string}n */nexport default {n BOTTOM_LEFT: 'bottom-left',n BOTTOM_RIGHT: 'bottom-right',n TOP_LEFT: 'top-left',n TOP_RIGHT: 'top-right'n};n//# sourceMappingURL=Corner.js.map”,“/**n * @module ol/extent/Relationshipn */n/**n * Relationship to an extent.n * @enum {number}n */nexport default {n UNKNOWN: 0,n INTERSECTING: 1,n ABOVE: 2,n RIGHT: 4,n BELOW: 8,n LEFT: 16n};n//# sourceMappingURL=Relationship.js.map”,“/**n * @module ol/extentn */nimport { assert } from './asserts.js';nimport Corner from './extent/Corner.js';nimport Relationship from './extent/Relationship.js';n/**n * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.n * @typedef {Array<number>} Extentn * @apin */n/**n * Build an extent that includes all given coordinates.n *n * @param {Array<import("./coordinate.js").Coordinate>} coordinates Coordinates.n * @return {Extent} Bounding extent.n * @apin */nexport function boundingExtent(coordinates) {n var extent = createEmpty();n for (var i = 0, ii = coordinates.length; i < ii; ++i) {n extendCoordinate(extent, coordinates);n }n return extent;n}n/**n * @param {Array<number>} xs Xs.n * @param {Array<number>} ys Ys.n * @param {Extent=} opt_extent Destination extent.n * @privaten * @return {Extent} Extent.n */nfunction _boundingExtentXYs(xs, ys, opt_extent) {n var minX = Math.min.apply(null, xs);n var minY = Math.min.apply(null, ys);n var maxX = Math.max.apply(null, xs);n var maxY = Math.max.apply(null, ys);n return createOrUpdate(minX, minY, maxX, maxY, opt_extent);n}n/**n * Return extent increased by the provided value.n * @param {Extent} extent Extent.n * @param {number} value The amount by which the extent should be buffered.n * @param {Extent=} opt_extent Extent.n * @return {Extent} Extent.n * @apin */nexport function buffer(extent, value, opt_extent) {n if (opt_extent) {n opt_extent = extent - value;n opt_extent = extent - value;n opt_extent = extent + value;n opt_extent = extent + value;n return opt_extent;n }n else {n return [n extent - value,n extent - value,n extent + value,n extent + valuen ];n }n}n/**n * Creates a clone of an extent.n *n * @param {Extent} extent Extent to clone.n * @param {Extent=} opt_extent Extent.n * @return {Extent} The clone.n */nexport function clone(extent, opt_extent) {n if (opt_extent) {n opt_extent = extent;n opt_extent = extent;n opt_extent = extent;n opt_extent = extent;n return opt_extent;n }n else {n return extent.slice();n }n}n/**n * @param {Extent} extent Extent.n * @param {number} x X.n * @param {number} y Y.n * @return {number} Closest squared distance.n */nexport function closestSquaredDistanceXY(extent, x, y) {n var dx, dy;n if (x < extent) {n dx = extent - x;n }n else if (extent < x) {n dx = x - extent;n }n else {n dx = 0;n }n if (y < extent) {n dy = extent - y;n }n else if (extent < y) {n dy = y - extent;n }n else {n dy = 0;n }n return dx * dx + dy * dy;n}n/**n * Check if the passed coordinate is contained or on the edge of the extent.n *n * @param {Extent} extent Extent.n * @param {import("./coordinate.js").Coordinate} coordinate Coordinate.n * @return {boolean} The coordinate is contained in the extent.n * @apin */nexport function containsCoordinate(extent, coordinate) {n return containsXY(extent, coordinate, coordinate);n}n/**n * Check if one extent contains another.n *n * An extent is deemed contained if it lies completely within the other extent,n * including if they share one or more edges.n *n * @param {Extent} extent1 Extent 1.n * @param {Extent} extent2 Extent 2.n * @return {boolean} The second extent is contained by or on the edge of then * first.n * @apin */nexport function containsExtent(extent1, extent2) {n return extent1 <= extent2 && extent2 <= extent1 &&n extent1 <= extent2 && extent2 <= extent1;n}n/**n * Check if the passed coordinate is contained or on the edge of the extent.n *n * @param {Extent} extent Extent.n * @param {number} x X coordinate.n * @param {number} y Y coordinate.n * @return {boolean} The x, y values are contained in the extent.n * @apin */nexport function containsXY(extent, x, y) {n return extent <= x && x <= extent && extent <= y && y <= extent;n}n/**n * Get the relationship between a coordinate and extent.n * @param {Extent} extent The extent.n * @param {import("./coordinate.js").Coordinate} coordinate The coordinate.n * @return {Relationship} The relationship (bitwise compare withn * import("./extent/Relationship.js").Relationship).n */nexport function coordinateRelationship(extent, coordinate) {n var minX = extent;n var minY = extent;n var maxX = extent;n var maxY = extent;n var x = coordinate;n var y = coordinate;n var relationship = Relationship.UNKNOWN;n if (x < minX) {n relationship = relationship | Relationship.LEFT;n }n else if (x > maxX) {n relationship = relationship | Relationship.RIGHT;n }n if (y < minY) {n relationship = relationship | Relationship.BELOW;n }n else if (y > maxY) {n relationship = relationship | Relationship.ABOVE;n }n if (relationship === Relationship.UNKNOWN) {n relationship = Relationship.INTERSECTING;n }n return relationship;n}n/**n * Create an empty extent.n * @return {Extent} Empty extent.n * @apin */nexport function createEmpty() {n return [Infinity, Infinity, -Infinity, -Infinity];n}n/**n * Create a new extent or update the provided extent.n * @param {number} minX Minimum X.n * @param {number} minY Minimum Y.n * @param {number} maxX Maximum X.n * @param {number} maxY Maximum Y.n * @param {Extent=} opt_extent Destination extent.n * @return {Extent} Extent.n */nexport function createOrUpdate(minX, minY, maxX, maxY, opt_extent) {n if (opt_extent) {n opt_extent = minX;n opt_extent = minY;n opt_extent = maxX;n opt_extent = maxY;n return opt_extent;n }n else {n return [minX, minY, maxX, maxY];n }n}n/**n * Create a new empty extent or make the provided one empty.n * @param {Extent=} opt_extent Extent.n * @return {Extent} Extent.n */nexport function createOrUpdateEmpty(opt_extent) {n return createOrUpdate(Infinity, Infinity, -Infinity, -Infinity, opt_extent);n}n/**n * @param {import("./coordinate.js").Coordinate} coordinate Coordinate.n * @param {Extent=} opt_extent Extent.n * @return {Extent} Extent.n */nexport function createOrUpdateFromCoordinate(coordinate, opt_extent) {n var x = coordinate;n var y = coordinate;n return createOrUpdate(x, y, x, y, opt_extent);n}n/**n * @param {Array<import("./coordinate.js").Coordinate>} coordinates Coordinates.n * @param {Extent=} opt_extent Extent.n * @return {Extent} Extent.n */nexport function createOrUpdateFromCoordinates(coordinates, opt_extent) {n var extent = createOrUpdateEmpty(opt_extent);n return extendCoordinates(extent, coordinates);n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @param {Extent=} opt_extent Extent.n * @return {Extent} Extent.n */nexport function createOrUpdateFromFlatCoordinates(flatCoordinates, offset, end, stride, opt_extent) {n var extent = createOrUpdateEmpty(opt_extent);n return extendFlatCoordinates(extent, flatCoordinates, offset, end, stride);n}n/**n * @param {Array<Array<import("./coordinate.js").Coordinate>>} rings Rings.n * @param {Extent=} opt_extent Extent.n * @return {Extent} Extent.n */nexport function createOrUpdateFromRings(rings, opt_extent) {n var extent = createOrUpdateEmpty(opt_extent);n return extendRings(extent, rings);n}n/**n * Determine if two extents are equivalent.n * @param {Extent} extent1 Extent 1.n * @param {Extent} extent2 Extent 2.n * @return {boolean} The two extents are equivalent.n * @apin */nexport function equals(extent1, extent2) {n return extent1 == extent2 && extent1 == extent2 &&n extent1 == extent2 && extent1 == extent2;n}n/**n * Modify an extent to include another extent.n * @param {Extent} extent1 The extent to be modified.n * @param {Extent} extent2 The extent that will be included in the first.n * @return {Extent} A reference to the first (extended) extent.n * @apin */nexport function extend(extent1, extent2) {n if (extent2 < extent1) {n extent1 = extent2;n }n if (extent2 > extent1) {n extent1 = extent2;n }n if (extent2 < extent1) {n extent1 = extent2;n }n if (extent2 > extent1) {n extent1 = extent2;n }n return extent1;n}n/**n * @param {Extent} extent Extent.n * @param {import("./coordinate.js").Coordinate} coordinate Coordinate.n */nexport function extendCoordinate(extent, coordinate) {n if (coordinate < extent) {n extent = coordinate;n }n if (coordinate > extent) {n extent = coordinate;n }n if (coordinate < extent) {n extent = coordinate;n }n if (coordinate > extent) {n extent = coordinate;n }n}n/**n * @param {Extent} extent Extent.n * @param {Array<import("./coordinate.js").Coordinate>} coordinates Coordinates.n * @return {Extent} Extent.n */nexport function extendCoordinates(extent, coordinates) {n for (var i = 0, ii = coordinates.length; i < ii; ++i) {n extendCoordinate(extent, coordinates);n }n return extent;n}n/**n * @param {Extent} extent Extent.n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @return {Extent} Extent.n */nexport function extendFlatCoordinates(extent, flatCoordinates, offset, end, stride) {n for (; offset < end; offset += stride) {n extendXY(extent, flatCoordinates, flatCoordinates[offset + 1]);n }n return extent;n}n/**n * @param {Extent} extent Extent.n * @param {Array<Array<import("./coordinate.js").Coordinate>>} rings Rings.n * @return {Extent} Extent.n */nexport function extendRings(extent, rings) {n for (var i = 0, ii = rings.length; i < ii; ++i) {n extendCoordinates(extent, rings);n }n return extent;n}n/**n * @param {Extent} extent Extent.n * @param {number} x X.n * @param {number} y Y.n */nexport function extendXY(extent, x, y) {n extent = Math.min(extent, x);n extent = Math.min(extent, y);n extent = Math.max(extent, x);n extent = Math.max(extent, y);n}n/**n * This function calls `callback` for each corner of the extent. If then * callback returns a truthy value the function returns that valuen * immediately. Otherwise the function returns `false`.n * @param {Extent} extent Extent.n * @param {function(import("./coordinate.js").Coordinate): S} callback Callback.n * @return {S|boolean} Value.n * @template Sn */nexport function forEachCorner(extent, callback) {n var val;n val = callback(getBottomLeft(extent));n if (val) {n return val;n }n val = callback(getBottomRight(extent));n if (val) {n return val;n }n val = callback(getTopRight(extent));n if (val) {n return val;n }n val = callback(getTopLeft(extent));n if (val) {n return val;n }n return false;n}n/**n * Get the size of an extent.n * @param {Extent} extent Extent.n * @return {number} Area.n * @apin */nexport function getArea(extent) {n var area = 0;n if (!isEmpty(extent)) {n area = getWidth(extent) * getHeight(extent);n }n return area;n}n/**n * Get the bottom left coordinate of an extent.n * @param {Extent} extent Extent.n * @return {import("./coordinate.js").Coordinate} Bottom left coordinate.n * @apin */nexport function getBottomLeft(extent) {n return [extent, extent];n}n/**n * Get the bottom right coordinate of an extent.n * @param {Extent} extent Extent.n * @return {import("./coordinate.js").Coordinate} Bottom right coordinate.n * @apin */nexport function getBottomRight(extent) {n return [extent, extent];n}n/**n * Get the center coordinate of an extent.n * @param {Extent} extent Extent.n * @return {import("./coordinate.js").Coordinate} Center.n * @apin */nexport function getCenter(extent) {n return [(extent + extent) / 2, (extent + extent) / 2];n}n/**n * Get a corner coordinate of an extent.n * @param {Extent} extent Extent.n * @param {Corner} corner Corner.n * @return {import("./coordinate.js").Coordinate} Corner coordinate.n */nexport function getCorner(extent, corner) {n var coordinate;n if (corner === Corner.BOTTOM_LEFT) {n coordinate = getBottomLeft(extent);n }n else if (corner === Corner.BOTTOM_RIGHT) {n coordinate = getBottomRight(extent);n }n else if (corner === Corner.TOP_LEFT) {n coordinate = getTopLeft(extent);n }n else if (corner === Corner.TOP_RIGHT) {n coordinate = getTopRight(extent);n }n else {n assert(false, 13); // Invalid cornern }n return coordinate;n}n/**n * @param {Extent} extent1 Extent 1.n * @param {Extent} extent2 Extent 2.n * @return {number} Enlarged area.n */nexport function getEnlargedArea(extent1, extent2) {n var minX = Math.min(extent1, extent2);n var minY = Math.min(extent1, extent2);n var maxX = Math.max(extent1, extent2);n var maxY = Math.max(extent1, extent2);n return (maxX - minX) * (maxY - minY);n}n/**n * @param {import("./coordinate.js").Coordinate} center Center.n * @param {number} resolution Resolution.n * @param {number} rotation Rotation.n * @param {import("./size.js").Size} size Size.n * @param {Extent=} opt_extent Destination extent.n * @return {Extent} Extent.n */nexport function getForViewAndSize(center, resolution, rotation, size, opt_extent) {n var dx = resolution * size / 2;n var dy = resolution * size / 2;n var cosRotation = Math.cos(rotation);n var sinRotation = Math.sin(rotation);n var xCos = dx * cosRotation;n var xSin = dx * sinRotation;n var yCos = dy * cosRotation;n var ySin = dy * sinRotation;n var x = center;n var y = center;n var x0 = x - xCos + ySin;n var x1 = x - xCos - ySin;n var x2 = x + xCos - ySin;n var x3 = x + xCos + ySin;n var y0 = y - xSin - yCos;n var y1 = y - xSin + yCos;n var y2 = y + xSin + yCos;n var y3 = y + xSin - yCos;n return createOrUpdate(Math.min(x0, x1, x2, x3), Math.min(y0, y1, y2, y3), Math.max(x0, x1, x2, x3), Math.max(y0, y1, y2, y3), opt_extent);n}n/**n * Get the height of an extent.n * @param {Extent} extent Extent.n * @return {number} Height.n * @apin */nexport function getHeight(extent) {n return extent - extent;n}n/**n * @param {Extent} extent1 Extent 1.n * @param {Extent} extent2 Extent 2.n * @return {number} Intersection area.n */nexport function getIntersectionArea(extent1, extent2) {n var intersection = getIntersection(extent1, extent2);n return getArea(intersection);n}n/**n * Get the intersection of two extents.n * @param {Extent} extent1 Extent 1.n * @param {Extent} extent2 Extent 2.n * @param {Extent=} opt_extent Optional extent to populate with intersection.n * @return {Extent} Intersecting extent.n * @apin */nexport function getIntersection(extent1, extent2, opt_extent) {n var intersection = opt_extent ? opt_extent : createEmpty();n if (intersects(extent1, extent2)) {n if (extent1 > extent2) {n intersection = extent1;n }n else {n intersection = extent2;n }n if (extent1 > extent2) {n intersection = extent1;n }n else {n intersection = extent2;n }n if (extent1 < extent2) {n intersection = extent1;n }n else {n intersection = extent2;n }n if (extent1 < extent2) {n intersection = extent1;n }n else {n intersection = extent2;n }n }n else {n createOrUpdateEmpty(intersection);n }n return intersection;n}n/**n * @param {Extent} extent Extent.n * @return {number} Margin.n */nexport function getMargin(extent) {n return getWidth(extent) + getHeight(extent);n}n/**n * Get the size (width, height) of an extent.n * @param {Extent} extent The extent.n * @return {import("./size.js").Size} The extent size.n * @apin */nexport function getSize(extent) {n return [extent - extent, extent - extent];n}n/**n * Get the top left coordinate of an extent.n * @param {Extent} extent Extent.n * @return {import("./coordinate.js").Coordinate} Top left coordinate.n * @apin */nexport function getTopLeft(extent) {n return [extent, extent];n}n/**n * Get the top right coordinate of an extent.n * @param {Extent} extent Extent.n * @return {import("./coordinate.js").Coordinate} Top right coordinate.n * @apin */nexport function getTopRight(extent) {n return [extent, extent];n}n/**n * Get the width of an extent.n * @param {Extent} extent Extent.n * @return {number} Width.n * @apin */nexport function getWidth(extent) {n return extent - extent;n}n/**n * Determine if one extent intersects another.n * @param {Extent} extent1 Extent 1.n * @param {Extent} extent2 Extent.n * @return {boolean} The two extents intersect.n * @apin */nexport function intersects(extent1, extent2) {n return extent1 <= extent2 &&n extent1 >= extent2 &&n extent1 <= extent2 &&n extent1 >= extent2;n}n/**n * Determine if an extent is empty.n * @param {Extent} extent Extent.n * @return {boolean} Is empty.n * @apin */nexport function isEmpty(extent) {n return extent < extent || extent < extent;n}n/**n * @param {Extent} extent Extent.n * @param {Extent=} opt_extent Extent.n * @return {Extent} Extent.n */nexport function returnOrUpdate(extent, opt_extent) {n if (opt_extent) {n opt_extent = extent;n opt_extent = extent;n opt_extent = extent;n opt_extent = extent;n return opt_extent;n }n else {n return extent;n }n}n/**n * @param {Extent} extent Extent.n * @param {number} value Value.n */nexport function scaleFromCenter(extent, value) {n var deltaX = ((extent - extent) / 2) * (value - 1);n var deltaY = ((extent - extent) / 2) * (value - 1);n extent -= deltaX;n extent += deltaX;n extent -= deltaY;n extent += deltaY;n}n/**n * Determine if the segment between two coordinates intersects (crosses,n * touches, or is contained by) the provided extent.n * @param {Extent} extent The extent.n * @param {import("./coordinate.js").Coordinate} start Segment start coordinate.n * @param {import("./coordinate.js").Coordinate} end Segment end coordinate.n * @return {boolean} The segment intersects the extent.n */nexport function intersectsSegment(extent, start, end) {n var intersects = false;n var startRel = coordinateRelationship(extent, start);n var endRel = coordinateRelationship(extent, end);n if (startRel === Relationship.INTERSECTING ||n endRel === Relationship.INTERSECTING) {n intersects = true;n }n else {n var minX = extent;n var minY = extent;n var maxX = extent;n var maxY = extent;n var startX = start;n var startY = start;n var endX = end;n var endY = end;n var slope = (endY - startY) / (endX - startX);n var x = void 0, y = void 0;n if (!!(endRel & Relationship.ABOVE) &&n !(startRel & Relationship.ABOVE)) {n // potentially intersects topn x = endX - ((endY - maxY) / slope);n intersects = x >= minX && x <= maxX;n }n if (!intersects && !!(endRel & Relationship.RIGHT) &&n !(startRel & Relationship.RIGHT)) {n // potentially intersects rightn y = endY - ((endX - maxX) * slope);n intersects = y >= minY && y <= maxY;n }n if (!intersects && !!(endRel & Relationship.BELOW) &&n !(startRel & Relationship.BELOW)) {n // potentially intersects bottomn x = endX - ((endY - minY) / slope);n intersects = x >= minX && x <= maxX;n }n if (!intersects && !!(endRel & Relationship.LEFT) &&n !(startRel & Relationship.LEFT)) {n // potentially intersects leftn y = endY - ((endX - minX) * slope);n intersects = y >= minY && y <= maxY;n }n }n return intersects;n}n/**n * Apply a transform function to the extent.n * @param {Extent} extent Extent.n * @param {import("./proj.js").TransformFunction} transformFn Transform function.n * Called with `[minX, minY, maxX, maxY]` extent coordinates.n * @param {Extent=} opt_extent Destination extent.n * @return {Extent} Extent.n * @apin */nexport function applyTransform(extent, transformFn, opt_extent) {n var coordinates = [n extent, extent,n extent, extent,n extent, extent,n extent, extentn ];n transformFn(coordinates, coordinates, 2);n var xs = [coordinates, coordinates, coordinates, coordinates];n var ys = [coordinates, coordinates, coordinates, coordinates];n return _boundingExtentXYs(xs, ys, opt_extent);n}n//# sourceMappingURL=extent.js.map”,“/**n * @module ol/geom/GeometryLayoutn */n/**n * The coordinate layout for geometries, indicating whether a 3rd or 4th z ('Z')n * or measure ('M') coordinate is available. Supported values are `'XY'`,n * `'XYZ'`, `'XYM'`, `'XYZM'`.n * @enum {string}n */nexport default {n XY: 'XY',n XYZ: 'XYZ',n XYM: 'XYM',n XYZM: 'XYZM'n};n//# sourceMappingURL=GeometryLayout.js.map”,“/**n * @module ol/geom/GeometryTypen */n/**n * The geometry type. One of `'Point'`, `'LineString'`, `'LinearRing'`,n * `'Polygon'`, `'MultiPoint'`, `'MultiLineString'`, `'MultiPolygon'`,n * `'GeometryCollection'`, `'Circle'`.n * @enum {string}n */nexport default {n POINT: 'Point',n LINE_STRING: 'LineString',n LINEAR_RING: 'LinearRing',n POLYGON: 'Polygon',n MULTI_POINT: 'MultiPoint',n MULTI_LINE_STRING: 'MultiLineString',n MULTI_POLYGON: 'MultiPolygon',n GEOMETRY_COLLECTION: 'GeometryCollection',n CIRCLE: 'Circle'n};n//# sourceMappingURL=GeometryType.js.map”,“/**n * @module ol/geom/flat/transformn */n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @param {import("../../transform.js").Transform} transform Transform.n * @param {Array<number>=} opt_dest Destination.n * @return {Array<number>} Transformed coordinates.n */nexport function transform2D(flatCoordinates, offset, end, stride, transform, opt_dest) {n var dest = opt_dest ? opt_dest : [];n var i = 0;n for (var j = offset; j < end; j += stride) {n var x = flatCoordinates;n var y = flatCoordinates[j + 1];n dest = transform * x + transform * y + transform;n dest = transform * x + transform * y + transform;n }n if (opt_dest && dest.length != i) {n dest.length = i;n }n return dest;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @param {number} angle Angle.n * @param {Array<number>} anchor Rotation anchor point.n * @param {Array<number>=} opt_dest Destination.n * @return {Array<number>} Transformed coordinates.n */nexport function rotate(flatCoordinates, offset, end, stride, angle, anchor, opt_dest) {n var dest = opt_dest ? opt_dest : [];n var cos = Math.cos(angle);n var sin = Math.sin(angle);n var anchorX = anchor;n var anchorY = anchor;n var i = 0;n for (var j = offset; j < end; j += stride) {n var deltaX = flatCoordinates - anchorX;n var deltaY = flatCoordinates[j + 1] - anchorY;n dest = anchorX + deltaX * cos - deltaY * sin;n dest = anchorY + deltaX * sin + deltaY * cos;n for (var k = j + 2; k < j + stride; ++k) {n dest = flatCoordinates;n }n }n if (opt_dest && dest.length != i) {n dest.length = i;n }n return dest;n}n/**n * Scale the coordinates.n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @param {number} sx Scale factor in the x-direction.n * @param {number} sy Scale factor in the y-direction.n * @param {Array<number>} anchor Scale anchor point.n * @param {Array<number>=} opt_dest Destination.n * @return {Array<number>} Transformed coordinates.n */nexport function scale(flatCoordinates, offset, end, stride, sx, sy, anchor, opt_dest) {n var dest = opt_dest ? opt_dest : [];n var anchorX = anchor;n var anchorY = anchor;n var i = 0;n for (var j = offset; j < end; j += stride) {n var deltaX = flatCoordinates - anchorX;n var deltaY = flatCoordinates[j + 1] - anchorY;n dest = anchorX + sx * deltaX;n dest = anchorY + sy * deltaY;n for (var k = j + 2; k < j + stride; ++k) {n dest = flatCoordinates;n }n }n if (opt_dest && dest.length != i) {n dest.length = i;n }n return dest;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @param {number} deltaX Delta X.n * @param {number} deltaY Delta Y.n * @param {Array<number>=} opt_dest Destination.n * @return {Array<number>} Transformed coordinates.n */nexport function translate(flatCoordinates, offset, end, stride, deltaX, deltaY, opt_dest) {n var dest = opt_dest ? opt_dest : [];n var i = 0;n for (var j = offset; j < end; j += stride) {n dest = flatCoordinates + deltaX;n dest = flatCoordinates[j + 1] + deltaY;n for (var k = j + 2; k < j + stride; ++k) {n dest = flatCoordinates;n }n }n if (opt_dest && dest.length != i) {n dest.length = i;n }n return dest;n}n//# sourceMappingURL=transform.js.map”,“/**n * @module ol/mathn */n/**n * Takes a number and clamps it to within the provided bounds.n * @param {number} value The input number.n * @param {number} min The minimum value to return.n * @param {number} max The maximum value to return.n * @return {number} The input number if it is within bounds, or the nearestn * number within the bounds.n */nexport function clamp(value, min, max) {n return Math.min(Math.max(value, min), max);n}n/**n * Return the hyperbolic cosine of a given number. The method will use then * native `Math.cosh` function if it is available, otherwise the hyperbolicn * cosine will be calculated via the reference implementation of the Mozillan * developer network.n *n * @param {number} x X.n * @return {number} Hyperbolic cosine of x.n */nexport var cosh = (function () {n // Wrapped in a iife, to save the overhead of checking for the nativen // implementation on every invocation.n var cosh;n if ('cosh' in Math) {n // The environment supports the native Math.cosh function, use it…n cosh = Math.cosh;n }n else {n // … else, use the reference implementation of MDN:n cosh = function (x) {n var y = /** @type {Math} */ (Math).exp(x);n return (y + 1 / y) / 2;n };n }n return cosh;n}());n/**n * Returns the square of the closest distance between the point (x, y) and then * line segment (x1, y1) to (x2, y2).n * @param {number} x X.n * @param {number} y Y.n * @param {number} x1 X1.n * @param {number} y1 Y1.n * @param {number} x2 X2.n * @param {number} y2 Y2.n * @return {number} Squared distance.n */nexport function squaredSegmentDistance(x, y, x1, y1, x2, y2) {n var dx = x2 - x1;n var dy = y2 - y1;n if (dx !== 0 || dy !== 0) {n var t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);n if (t > 1) {n x1 = x2;n y1 = y2;n }n else if (t > 0) {n x1 += dx * t;n y1 += dy * t;n }n }n return squaredDistance(x, y, x1, y1);n}n/**n * Returns the square of the distance between the points (x1, y1) and (x2, y2).n * @param {number} x1 X1.n * @param {number} y1 Y1.n * @param {number} x2 X2.n * @param {number} y2 Y2.n * @return {number} Squared distance.n */nexport function squaredDistance(x1, y1, x2, y2) {n var dx = x2 - x1;n var dy = y2 - y1;n return dx * dx + dy * dy;n}n/**n * Solves system of linear equations using Gaussian elimination method.n *n * @param {Array<Array<number>>} mat Augmented matrix (n x n + 1 column)n * in row-major order.n * @return {Array<number>} The resulting vector.n */nexport function solveLinearSystem(mat) {n var n = mat.length;n for (var i = 0; i < n; i++) {n // Find max in the i-th column (ignoring i - 1 first rows)n var maxRow = i;n var maxEl = Math.abs(mat[i]);n for (var r = i + 1; r < n; r++) {n var absValue = Math.abs(mat[i]);n if (absValue > maxEl) {n maxEl = absValue;n maxRow = r;n }n }n if (maxEl === 0) {n return null; // matrix is singularn }n // Swap max row with i-th (current) rown var tmp = mat;n mat = mat;n mat = tmp;n // Subtract the i-th row to make all the remaining rows 0 in the i-th columnn for (var j = i + 1; j < n; j++) {n var coef = -mat[i] / mat[i];n for (var k = i; k < n + 1; k++) {n if (i == k) {n mat[k] = 0;n }n else {n mat[k] += coef * mat[k];n }n }n }n }n // Solve Ax=b for upper triangular matrix A (mat)n var x = new Array(n);n for (var l = n - 1; l >= 0; l–) {n x = mat[n] / mat[l];n for (var m = l - 1; m >= 0; m–) {n mat[n] -= mat[l] * x;n }n }n return x;n}n/**n * Converts radians to to degrees.n *n * @param {number} angleInRadians Angle in radians.n * @return {number} Angle in degrees.n */nexport function toDegrees(angleInRadians) {n return angleInRadians * 180 / Math.PI;n}n/**n * Converts degrees to radians.n *n * @param {number} angleInDegrees Angle in degrees.n * @return {number} Angle in radians.n */nexport function toRadians(angleInDegrees) {n return angleInDegrees * Math.PI / 180;n}n/**n * Returns the modulo of a / b, depending on the sign of b.n *n * @param {number} a Dividend.n * @param {number} b Divisor.n * @return {number} Modulo.n */nexport function modulo(a, b) {n var r = a % b;n return r * b < 0 ? r + b : r;n}n/**n * Calculates the linearly interpolated value of x between a and b.n *n * @param {number} a Numbern * @param {number} b Numbern * @param {number} x Value to be interpolated.n * @return {number} Interpolated value.n */nexport function lerp(a, b, x) {n return a + x * (b - a);n}n//# sourceMappingURL=math.js.map”,“/**n * @licensen * Latitude/longitude spherical geodesy formulae taken fromn * www.movable-type.co.uk/scripts/latlong.htmln * Licensed under CC-BY-3.0.n */n/**n * @module ol/spheren */nimport { toRadians, toDegrees } from './math.js';nimport GeometryType from './geom/GeometryType.js';n/**n * Object literal with options for the {@link getLength} or {@link getArea}n * functions.n * @typedef {Object} SphereMetricOptionsn * @property {import("./proj.js").ProjectionLike} [projection='EPSG:3857']n * Projection of the geometry. By default, the geometry is assumed to be inn * Web Mercator.n * @property {number} [radius=6371008.8] Sphere radius. By default, then * [mean Earth radius](en.wikipedia.org/wiki/Earth_radius#Mean_radius)n * for the WGS84 ellipsoid is used.n */n/**n * The mean Earth radius (1/3 * (2a + b)) for the WGS84 ellipsoid.n * en.wikipedia.org/wiki/Earth_radius#Mean_radiusn * @type {number}n */nexport var DEFAULT_RADIUS = 6371008.8;n/**n * Get the great circle distance (in meters) between two geographic coordinates.n * @param {Array} c1 Starting coordinate.n * @param {Array} c2 Ending coordinate.n * @param {number=} opt_radius The sphere radius to use. Defaults to the Earth'sn * mean radius using the WGS84 ellipsoid.n * @return {number} The great circle distance between the points (in meters).n * @apin */nexport function getDistance(c1, c2, opt_radius) {n var radius = opt_radius || DEFAULT_RADIUS;n var lat1 = toRadians(c1);n var lat2 = toRadians(c2);n var deltaLatBy2 = (lat2 - lat1) / 2;n var deltaLonBy2 = toRadians(c2 - c1) / 2;n var a = Math.sin(deltaLatBy2) * Math.sin(deltaLatBy2) +n Math.sin(deltaLonBy2) * Math.sin(deltaLonBy2) *n Math.cos(lat1) * Math.cos(lat2);n return 2 * radius * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));n}n/**n * Get the cumulative great circle length of linestring coordinates (geographic).n * @param {Array} coordinates Linestring coordinates.n * @param {number} radius The sphere radius to use.n * @return {number} The length (in meters).n */nfunction getLengthInternal(coordinates, radius) {n var length = 0;n for (var i = 0, ii = coordinates.length; i < ii - 1; ++i) {n length += getDistance(coordinates, coordinates[i + 1], radius);n }n return length;n}n/**n * Get the spherical length of a geometry. This length is the sum of then * great circle distances between coordinates. For polygons, the length isn * the sum of all rings. For points, the length is zero. For multi-partn * geometries, the length is the sum of the length of each part.n * @param {import("./geom/Geometry.js").default} geometry A geometry.n * @param {SphereMetricOptions=} opt_options Options for then * length calculation. By default, geometries are assumed to be in 'EPSG:3857'.n * You can change this by providing a `projection` option.n * @return {number} The spherical length (in meters).n * @apin */nexport function getLength(geometry, opt_options) {n var options = opt_options || {};n var radius = options.radius || DEFAULT_RADIUS;n var projection = options.projection || 'EPSG:3857';n var type = geometry.getType();n if (type !== GeometryType.GEOMETRY_COLLECTION) {n geometry = geometry.clone().transform(projection, 'EPSG:4326');n }n var length = 0;n var coordinates, coords, i, ii, j, jj;n switch (type) {n case GeometryType.POINT:n case GeometryType.MULTI_POINT: {n break;n }n case GeometryType.LINE_STRING:n case GeometryType.LINEAR_RING: {n coordinates = /** @type {import("./geom/SimpleGeometry.js").default} */ (geometry).getCoordinates();n length = getLengthInternal(coordinates, radius);n break;n }n case GeometryType.MULTI_LINE_STRING:n case GeometryType.POLYGON: {n coordinates = /** @type {import("./geom/SimpleGeometry.js").default} */ (geometry).getCoordinates();n for (i = 0, ii = coordinates.length; i < ii; ++i) {n length += getLengthInternal(coordinates, radius);n }n break;n }n case GeometryType.MULTI_POLYGON: {n coordinates = /** @type {import("./geom/SimpleGeometry.js").default} */ (geometry).getCoordinates();n for (i = 0, ii = coordinates.length; i < ii; ++i) {n coords = coordinates;n for (j = 0, jj = coords.length; j < jj; ++j) {n length += getLengthInternal(coords, radius);n }n }n break;n }n case GeometryType.GEOMETRY_COLLECTION: {n var geometries = /** @type {import("./geom/GeometryCollection.js").default} */ (geometry).getGeometries();n for (i = 0, ii = geometries.length; i < ii; ++i) {n length += getLength(geometries, opt_options);n }n break;n }n default: {n throw new Error('Unsupported geometry type: ' + type);n }n }n return length;n}n/**n * Returns the spherical area for a list of coordinates.n *n * [Reference](trs-new.jpl.nasa.gov/handle/2014/40409)n * Robert. G. Chamberlain and William H. Duquette, "Some Algorithms forn * Polygons on a Sphere", JPL Publication 07-03, Jet Propulsionn * Laboratory, Pasadena, CA, June 2007n *n * @param {Array<import("./coordinate.js").Coordinate>} coordinates List of coordinates of a linearn * ring. If the ring is oriented clockwise, the area will be positive,n * otherwise it will be negative.n * @param {number} radius The sphere radius.n * @return {number} Area (in square meters).n */nfunction getAreaInternal(coordinates, radius) {n var area = 0;n var len = coordinates.length;n var x1 = coordinates[len - 1];n var y1 = coordinates[len - 1];n for (var i = 0; i < len; i++) {n var x2 = coordinates[0];n var y2 = coordinates[1];n area += toRadians(x2 - x1) *n (2 + Math.sin(toRadians(y1)) +n Math.sin(toRadians(y2)));n x1 = x2;n y1 = y2;n }n return area * radius * radius / 2.0;n}n/**n * Get the spherical area of a geometry. This is the area (in meters) assumingn * that polygon edges are segments of great circles on a sphere.n * @param {import("./geom/Geometry.js").default} geometry A geometry.n * @param {SphereMetricOptions=} opt_options Options for the arean * calculation. By default, geometries are assumed to be in 'EPSG:3857'.n * You can change this by providing a `projection` option.n * @return {number} The spherical area (in square meters).n * @apin */nexport function getArea(geometry, opt_options) {n var options = opt_options || {};n var radius = options.radius || DEFAULT_RADIUS;n var projection = options.projection || 'EPSG:3857';n var type = geometry.getType();n if (type !== GeometryType.GEOMETRY_COLLECTION) {n geometry = geometry.clone().transform(projection, 'EPSG:4326');n }n var area = 0;n var coordinates, coords, i, ii, j, jj;n switch (type) {n case GeometryType.POINT:n case GeometryType.MULTI_POINT:n case GeometryType.LINE_STRING:n case GeometryType.MULTI_LINE_STRING:n case GeometryType.LINEAR_RING: {n break;n }n case GeometryType.POLYGON: {n coordinates = /** @type {import("./geom/Polygon.js").default} */ (geometry).getCoordinates();n area = Math.abs(getAreaInternal(coordinates, radius));n for (i = 1, ii = coordinates.length; i < ii; ++i) {n area -= Math.abs(getAreaInternal(coordinates, radius));n }n break;n }n case GeometryType.MULTI_POLYGON: {n coordinates = /** @type {import("./geom/SimpleGeometry.js").default} */ (geometry).getCoordinates();n for (i = 0, ii = coordinates.length; i < ii; ++i) {n coords = coordinates;n area += Math.abs(getAreaInternal(coords, radius));n for (j = 1, jj = coords.length; j < jj; ++j) {n area -= Math.abs(getAreaInternal(coords, radius));n }n }n break;n }n case GeometryType.GEOMETRY_COLLECTION: {n var geometries = /** @type {import("./geom/GeometryCollection.js").default} */ (geometry).getGeometries();n for (i = 0, ii = geometries.length; i < ii; ++i) {n area += getArea(geometries, opt_options);n }n break;n }n default: {n throw new Error('Unsupported geometry type: ' + type);n }n }n return area;n}n/**n * Returns the coordinate at the given distance and bearing from `c1`.n *n * @param {import("./coordinate.js").Coordinate} c1 The origin point (`[lon, lat]` in degrees).n * @param {number} distance The great-circle distance between the originn * point and the target point.n * @param {number} bearing The bearing (in radians).n * @param {number=} opt_radius The sphere radius to use. Defaults to the Earth'sn * mean radius using the WGS84 ellipsoid.n * @return {import("./coordinate.js").Coordinate} The target point.n */nexport function offset(c1, distance, bearing, opt_radius) {n var radius = opt_radius || DEFAULT_RADIUS;n var lat1 = toRadians(c1);n var lon1 = toRadians(c1);n var dByR = distance / radius;n var lat = Math.asin(Math.sin(lat1) * Math.cos(dByR) +n Math.cos(lat1) * Math.sin(dByR) * Math.cos(bearing));n var lon = lon1 + Math.atan2(Math.sin(bearing) * Math.sin(dByR) * Math.cos(lat1), Math.cos(dByR) - Math.sin(lat1) * Math.sin(lat));n return [toDegrees(lon), toDegrees(lat)];n}n//# sourceMappingURL=sphere.js.map”,“/**n * @module ol/proj/Unitsn */n/**n * Projection units: `'degrees'`, `'ft'`, `'m'`, `'pixels'`, `'tile-pixels'` orn * `'us-ft'`.n * @enum {string}n */nvar Units = {n DEGREES: 'degrees',n FEET: 'ft',n METERS: 'm',n PIXELS: 'pixels',n TILE_PIXELS: 'tile-pixels',n USFEET: 'us-ft'n};n/**n * Meters per unit lookup table.n * @constn * @type {Object<Units, number>}n * @apin */nexport var METERS_PER_UNIT = {};n// use the radius of the Normal spherenMETERS_PER_UNIT = 2 * Math.PI * 6370997 / 360;nMETERS_PER_UNIT = 0.3048;nMETERS_PER_UNIT = 1;nMETERS_PER_UNIT = 1200 / 3937;nexport default Units;n//# sourceMappingURL=Units.js.map”,“/**n * @module ol/proj/Projectionn */nimport { METERS_PER_UNIT } from './Units.js';n/**n * @typedef {Object} Optionsn * @property {string} code The SRS identifier code, e.g. `EPSG:4326`.n * @property {import("./Units.js").default|string} [units] Units. Required unless an * proj4 projection is defined for `code`.n * @property {import("../extent.js").Extent} [extent] The validity extent for the SRS.n * @property {string} [axisOrientation='enu'] The axis orientation as specified in Proj4.n * @property {boolean} [global=false] Whether the projection is valid for the whole globe.n * @property {number} [metersPerUnit] The meters per unit for the SRS.n * If not provided, the `units` are used to get the meters per unit from the {@link module:ol/proj/Units~METERS_PER_UNIT}n * lookup table.n * @property {import("../extent.js").Extent} [worldExtent] The world extent for the SRS.n * @property {function(number, import("../coordinate.js").Coordinate):number} [getPointResolution]n * Function to determine resolution at a point. The function is called with an * `{number}` view resolution and an `{import("../coordinate.js").Coordinate}` as arguments, and returnsn * the `{number}` resolution in projection units at the passed coordinate. If this is `undefined`,n * the default {@link module:ol/proj#getPointResolution} function will be used.n */n/**n * @classdescn * Projection definition class. One of these is created for each projectionn * supported in the application and stored in the {@link module:ol/proj} namespace.n * You can use these in applications, but this is not required, as API paramsn * and options use {@link module:ol/proj~ProjectionLike} which means the simple stringn * code will suffice.n *n * You can use {@link module:ol/proj~get} to retrieve the object for a particularn * projection.n *n * The library includes definitions for `EPSG:4326` and `EPSG:3857`, togethern * with the following aliases:n * * `EPSG:4326`: CRS:84, urn:ogc:def:crs:EPSG:6.6:4326,n * urn:ogc:def:crs:OGC:1.3:CRS84, urn:ogc:def:crs:OGC:2:84,n * www.opengis.net/gml/srs/epsg.xml#4326,n * urn:x-ogc:def:crs:EPSG:4326n * * `EPSG:3857`: EPSG:102100, EPSG:102113, EPSG:900913,n * urn:ogc:def:crs:EPSG:6.18:3:3857,n * www.opengis.net/gml/srs/epsg.xml#3857n *n * If you use [proj4js](github.com/proj4js/proj4js), aliases cann * be added using `proj4.defs()`. After all required projection definitions aren * added, call the {@link module:ol/proj/proj4~register} function.n *n * @apin */nvar Projection = /** @class */ (function () {n /**n * @param {Options} options Projection options.n */n function Projection(options) {n /**n * @privaten * @type {string}n */n this.code_ = options.code;n /**n * Units of projected coordinates. When set to `TILE_PIXELS`, an * `this.extent_` and `this.worldExtent_` must be configured properly for eachn * tile.n * @privaten * @type {import("./Units.js").default}n */n this.units_ = /** @type {import("./Units.js").default} */ (options.units);n /**n * Validity extent of the projection in projected coordinates. For projectionsn * with `TILE_PIXELS` units, this is the extent of the tile inn * tile pixel space.n * @privaten * @type {import("../extent.js").Extent}n */n this.extent_ = options.extent !== undefined ? options.extent : null;n /**n * Extent of the world in EPSG:4326. For projections withn * `TILE_PIXELS` units, this is the extent of the tile inn * projected coordinate space.n * @privaten * @type {import("../extent.js").Extent}n */n this.worldExtent_ = options.worldExtent !== undefined ?n options.worldExtent : null;n /**n * @privaten * @type {string}n */n this.axisOrientation_ = options.axisOrientation !== undefined ?n options.axisOrientation : 'enu';n /**n * @privaten * @type {boolean}n */n this.global_ = options.global !== undefined ? options.global : false;n /**n * @privaten * @type {boolean}n */n this.canWrapX_ = !!(this.global_ && this.extent_);n /**n * @privaten * @type {function(number, import("../coordinate.js").Coordinate):number|undefined}n */n this.getPointResolutionFunc_ = options.getPointResolution;n /**n * @privaten * @type {import("../tilegrid/TileGrid.js").default}n */n this.defaultTileGrid_ = null;n /**n * @privaten * @type {number|undefined}n */n this.metersPerUnit_ = options.metersPerUnit;n }n /**n * @return {boolean} The projection is suitable for wrapping the x-axisn */n Projection.prototype.canWrapX = function () {n return this.canWrapX_;n };n /**n * Get the code for this projection, e.g. 'EPSG:4326'.n * @return {string} Code.n * @apin */n Projection.prototype.getCode = function () {n return this.code_;n };n /**n * Get the validity extent for this projection.n * @return {import("../extent.js").Extent} Extent.n * @apin */n Projection.prototype.getExtent = function () {n return this.extent_;n };n /**n * Get the units of this projection.n * @return {import("./Units.js").default} Units.n * @apin */n Projection.prototype.getUnits = function () {n return this.units_;n };n /**n * Get the amount of meters per unit of this projection. If the projection isn * not configured with `metersPerUnit` or a units identifier, the return isn * `undefined`.n * @return {number|undefined} Meters.n * @apin */n Projection.prototype.getMetersPerUnit = function () {n return this.metersPerUnit_ || METERS_PER_UNIT;n };n /**n * Get the world extent for this projection.n * @return {import("../extent.js").Extent} Extent.n * @apin */n Projection.prototype.getWorldExtent = function () {n return this.worldExtent_;n };n /**n * Get the axis orientation of this projection.n * Example values are:n * enu - the default easting, northing, elevation.n * neu - northing, easting, up - useful for "lat/long" geographic coordinates,n * or south orientated transverse mercator.n * wnu - westing, northing, up - some planetary coordinate systems haven * "west positive" coordinate systemsn * @return {string} Axis orientation.n * @apin */n Projection.prototype.getAxisOrientation = function () {n return this.axisOrientation_;n };n /**n * Is this projection a global projection which spans the whole world?n * @return {boolean} Whether the projection is global.n * @apin */n Projection.prototype.isGlobal = function () {n return this.global_;n };n /**n * Set if the projection is a global projection which spans the whole worldn * @param {boolean} global Whether the projection is global.n * @apin */n Projection.prototype.setGlobal = function (global) {n this.global_ = global;n this.canWrapX_ = !!(global && this.extent_);n };n /**n * @return {import("../tilegrid/TileGrid.js").default} The default tile grid.n */n Projection.prototype.getDefaultTileGrid = function () {n return this.defaultTileGrid_;n };n /**n * @param {import("../tilegrid/TileGrid.js").default} tileGrid The default tile grid.n */n Projection.prototype.setDefaultTileGrid = function (tileGrid) {n this.defaultTileGrid_ = tileGrid;n };n /**n * Set the validity extent for this projection.n * @param {import("../extent.js").Extent} extent Extent.n * @apin */n Projection.prototype.setExtent = function (extent) {n this.extent_ = extent;n this.canWrapX_ = !!(this.global_ && extent);n };n /**n * Set the world extent for this projection.n * @param {import("../extent.js").Extent} worldExtent World extentn * [minlon, minlat, maxlon, maxlat].n * @apin */n Projection.prototype.setWorldExtent = function (worldExtent) {n this.worldExtent_ = worldExtent;n };n /**n * Set the getPointResolution function (see {@link module:ol/proj~getPointResolution}n * for this projection.n * @param {function(number, import("../coordinate.js").Coordinate):number} func Functionn * @apin */n Projection.prototype.setGetPointResolution = function (func) {n this.getPointResolutionFunc_ = func;n };n /**n * Get the custom point resolution function for this projection (if set).n * @return {function(number, import("../coordinate.js").Coordinate):number|undefined} The custom pointn * resolution function (if set).n */n Projection.prototype.getPointResolutionFunc = function () {n return this.getPointResolutionFunc_;n };n return Projection;n}());nexport default Projection;n//# sourceMappingURL=Projection.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/proj/epsg3857n */nimport { cosh } from '../math.js';nimport Projection from './Projection.js';nimport Units from './Units.js';n/**n * Radius of WGS84 spheren *n * @constn * @type {number}n */nexport var RADIUS = 6378137;n/**n * @constn * @type {number}n */nexport var HALF_SIZE = Math.PI * RADIUS;n/**n * @constn * @type {import("../extent.js").Extent}n */nexport var EXTENT = [n -HALF_SIZE, -HALF_SIZE,n HALF_SIZE, HALF_SIZEn];n/**n * @constn * @type {import("../extent.js").Extent}n */nexport var WORLD_EXTENT = [-180, -85, 180, 85];n/**n * @classdescn * Projection object for web/spherical Mercator (EPSG:3857).n */nvar EPSG3857Projection = /** @class */ (function (_super) {n __extends(EPSG3857Projection, _super);n /**n * @param {string} code Code.n */n function EPSG3857Projection(code) {n return _super.call(this, {n code: code,n units: Units.METERS,n extent: EXTENT,n global: true,n worldExtent: WORLD_EXTENT,n getPointResolution: function (resolution, point) {n return resolution / cosh(point / RADIUS);n }n }) || this;n }n return EPSG3857Projection;n}(Projection));n/**n * Projections equal to EPSG:3857.n *n * @constn * @type {Array<import("./Projection.js").default>}n */nexport var PROJECTIONS = [n new EPSG3857Projection('EPSG:3857'),n new EPSG3857Projection('EPSG:102100'),n new EPSG3857Projection('EPSG:102113'),n new EPSG3857Projection('EPSG:900913'),n new EPSG3857Projection('urn:ogc:def:crs:EPSG:6.18:3:3857'),n new EPSG3857Projection('urn:ogc:def:crs:EPSG::3857'),n new EPSG3857Projection('www.opengis.net/gml/srs/epsg.xml#3857’)n];n/**n * Transformation from EPSG:4326 to EPSG:3857.n *n * @param {Array<number>} input Input array of coordinate values.n * @param {Array<number>=} opt_output Output array of coordinate values.n * @param {number=} opt_dimension Dimension (default is `2`).n * @return {Array<number>} Output array of coordinate values.n */nexport function fromEPSG4326(input, opt_output, opt_dimension) {n var length = input.length;n var dimension = opt_dimension > 1 ? opt_dimension : 2;n var output = opt_output;n if (output === undefined) {n if (dimension > 2) {n // preserve values beyond second dimensionn output = input.slice();n }n else {n output = new Array(length);n }n }n var halfSize = HALF_SIZE;n for (var i = 0; i < length; i += dimension) {n output = halfSize * input / 180;n var y = RADIUS *n Math.log(Math.tan(Math.PI * (+input[i + 1] + 90) / 360));n if (y > halfSize) {n y = halfSize;n }n else if (y < -halfSize) {n y = -halfSize;n }n output[i + 1] = y;n }n return output;n}n/**n * Transformation from EPSG:3857 to EPSG:4326.n *n * @param {Array<number>} input Input array of coordinate values.n * @param {Array<number>=} opt_output Output array of coordinate values.n * @param {number=} opt_dimension Dimension (default is `2`).n * @return {Array<number>} Output array of coordinate values.n */nexport function toEPSG4326(input, opt_output, opt_dimension) {n var length = input.length;n var dimension = opt_dimension > 1 ? opt_dimension : 2;n var output = opt_output;n if (output === undefined) {n if (dimension > 2) {n // preserve values beyond second dimensionn output = input.slice();n }n else {n output = new Array(length);n }n }n for (var i = 0; i < length; i += dimension) {n output = 180 * input / HALF_SIZE;n output[i + 1] = 360 * Math.atan(Math.exp(input[i + 1] / RADIUS)) / Math.PI - 90;n }n return output;n}n//# sourceMappingURL=epsg3857.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/proj/epsg4326n */nimport Projection from './Projection.js';nimport Units from './Units.js';n/**n * Semi-major radius of the WGS84 ellipsoid.n *n * @constn * @type {number}n */nexport var RADIUS = 6378137;n/**n * Extent of the EPSG:4326 projection which is the whole world.n *n * @constn * @type {import("../extent.js").Extent}n */nexport var EXTENT = [-180, -90, 180, 90];n/**n * @constn * @type {number}n */nexport var METERS_PER_UNIT = Math.PI * RADIUS / 180;n/**n * @classdescn * Projection object for WGS84 geographic coordinates (EPSG:4326).n *n * Note that OpenLayers does not strictly comply with the EPSG definition.n * The EPSG registry defines 4326 as a CRS for Latitude,Longitude (y,x).n * OpenLayers treats EPSG:4326 as a pseudo-projection, with x,y coordinates.n */nvar EPSG4326Projection = /** @class */ (function (_super) {n __extends(EPSG4326Projection, _super);n /**n * @param {string} code Code.n * @param {string=} opt_axisOrientation Axis orientation.n */n function EPSG4326Projection(code, opt_axisOrientation) {n return _super.call(this, {n code: code,n units: Units.DEGREES,n extent: EXTENT,n axisOrientation: opt_axisOrientation,n global: true,n metersPerUnit: METERS_PER_UNIT,n worldExtent: EXTENTn }) || this;n }n return EPSG4326Projection;n}(Projection));n/**n * Projections equal to EPSG:4326.n *n * @constn * @type {Array<import("./Projection.js").default>}n */nexport var PROJECTIONS = [n new EPSG4326Projection('CRS:84'),n new EPSG4326Projection('EPSG:4326', 'neu'),n new EPSG4326Projection('urn:ogc:def:crs:EPSG::4326', 'neu'),n new EPSG4326Projection('urn:ogc:def:crs:EPSG:6.6:4326', 'neu'),n new EPSG4326Projection('urn:ogc:def:crs:OGC:1.3:CRS84'),n new EPSG4326Projection('urn:ogc:def:crs:OGC:2:84'),n new EPSG4326Projection('www.opengis.net/gml/srs/epsg.xml#4326', 'neu'),n new EPSG4326Projection('urn:x-ogc:def:crs:EPSG:4326', 'neu')n];n//# sourceMappingURL=epsg4326.js.map”,“/**n * @module ol/proj/transformsn */nimport { isEmpty } from '../obj.js';n/**n * @privaten * @type {!Object<string, Object<string, import("../proj.js").TransformFunction>>}n */nvar transforms = {};n/**n * Clear the transform cache.n */nexport function clear() {n transforms = {};n}n/**n * Registers a conversion function to convert coordinates from the sourcen * projection to the destination projection.n *n * @param {import("./Projection.js").default} source Source.n * @param {import("./Projection.js").default} destination Destination.n * @param {import("../proj.js").TransformFunction} transformFn Transform.n */nexport function add(source, destination, transformFn) {n var sourceCode = source.getCode();n var destinationCode = destination.getCode();n if (!(sourceCode in transforms)) {n transforms = {};n }n transforms[destinationCode] = transformFn;n}n/**n * Unregisters the conversion function to convert coordinates from the sourcen * projection to the destination projection. This method is used to clean upn * cached transforms during testing.n *n * @param {import("./Projection.js").default} source Source projection.n * @param {import("./Projection.js").default} destination Destination projection.n * @return {import("../proj.js").TransformFunction} transformFn The unregistered transform.n */nexport function remove(source, destination) {n var sourceCode = source.getCode();n var destinationCode = destination.getCode();n var transform = transforms[destinationCode];n delete transforms[destinationCode];n if (isEmpty(transforms)) {n delete transforms;n }n return transform;n}n/**n * Get a transform given a source code and a destination code.n * @param {string} sourceCode The code for the source projection.n * @param {string} destinationCode The code for the destination projection.n * @return {import("../proj.js").TransformFunction|undefined} The transform function (if found).n */nexport function get(sourceCode, destinationCode) {n var transform;n if (sourceCode in transforms && destinationCode in transforms) {n transform = transforms[destinationCode];n }n return transform;n}n//# sourceMappingURL=transforms.js.map”,“/**n * @module ol/proj/projectionsn */n/**n * @type {Object<string, import("./Projection.js").default>}n */nvar cache = {};n/**n * Clear the projections cache.n */nexport function clear() {n cache = {};n}n/**n * Get a cached projection by code.n * @param {string} code The code for the projection.n * @return {import("./Projection.js").default} The projection (if cached).n */nexport function get(code) {n return cache || null;n}n/**n * Add a projection to the cache.n * @param {string} code The projection code.n * @param {import("./Projection.js").default} projection The projection to cache.n */nexport function add(code, projection) {n cache = projection;n}n//# sourceMappingURL=projections.js.map”,“/**n * @module ol/projn */n/**n * The ol/proj module stores:n * * a list of {@link module:ol/proj/Projection}n * objects, one for each projection supported by the applicationn * * a list of transform functions needed to convert coordinates in one projectionn * into another.n *n * The static functions are the methods used to maintain these.n * Each transform function can handle not only simple coordinate pairs, but alson * large arrays of coordinates such as vector geometries.n *n * When loaded, the library adds projection objects for EPSG:4326 (WGS84n * geographic coordinates) and EPSG:3857 (Web or Spherical Mercator, as usedn * for example by Bing Maps or OpenStreetMap), together with the relevantn * transform functions.n *n * Additional transforms may be added by using the proj4js.org/n * library (version 2.2 or later). You can use the full build supplied byn * Proj4js, or create a custom build to support those projections you need; seen * the Proj4js website for how to do this. You also need the Proj4js definitionsn * for the required projections. These definitions can be obtained fromn * epsg.io/, and are a JS function, so can be loaded in a scriptn * tag (as in the examples) or pasted into your application.n *n * After all required projection definitions are added to proj4's registry (byn * using `proj4.defs()`), simply call `register(proj4)` from the `ol/proj/proj4`n * package. Existing transforms are not changed by this function. Seen * examples/wms-image-custom-proj for an example of this.n *n * Additional projection definitions can be registered with `proj4.defs()` anyn * time. Just make sure to call `register(proj4)` again; for example, with user-supplied data where you don'tn * know in advance what projections are needed, you can initially load minimaln * support and then load whichever are requested.n *n * Note that Proj4js does not support projection extents. If you want to addn * one for creating default tile grids, you can add it after the Projectionn * object has been created with `setExtent`, for example,n * `get('EPSG:1234').setExtent(extent)`.n *n * In addition to Proj4js support, any transform functions can be added withn * {@link module:ol/proj~addCoordinateTransforms}. To use this, you must first createn * a {@link module:ol/proj/Projection} object for the new projection and add it withn * {@link module:ol/proj~addProjection}. You can then add the forward and inversen * functions with {@link module:ol/proj~addCoordinateTransforms}. Seen * examples/wms-custom-proj for an example of this.n *n * Note that if no transforms are needed and you only need to define then * projection, just add a {@link module:ol/proj/Projection} withn * {@link module:ol/proj~addProjection}. See examples/wms-no-proj for an example ofn * this.n */nimport { getDistance } from './sphere.js';nimport { applyTransform } from './extent.js';nimport { modulo } from './math.js';nimport { toEPSG4326, fromEPSG4326, PROJECTIONS as EPSG3857_PROJECTIONS } from './proj/epsg3857.js';nimport { PROJECTIONS as EPSG4326_PROJECTIONS } from './proj/epsg4326.js';nimport Projection from './proj/Projection.js';nimport Units, { METERS_PER_UNIT } from './proj/Units.js';nimport { add as addTransformFunc, clear as clearTransformFuncs, get as getTransformFunc } from './proj/transforms.js';nimport { add as addProj, clear as clearProj, get as getProj } from './proj/projections.js';n/**n * A projection as {@link module:ol/proj/Projection}, SRS identifiern * string or undefined.n * @typedef {Projection|string|undefined} ProjectionLiken * @apin */n/**n * A transform function accepts an array of input coordinate values, an optionaln * output array, and an optional dimension (default should be 2). The functionn * transforms the input coordinate values, populates the output array, andn * returns the output array.n *n * @typedef {function(Array<number>, Array<number>=, number=): Array<number>} TransformFunctionn * @apin */nexport { METERS_PER_UNIT };nexport { Projection };n/**n * @param {Array<number>} input Input coordinate array.n * @param {Array<number>=} opt_output Output array of coordinate values.n * @param {number=} opt_dimension Dimension.n * @return {Array<number>} Output coordinate array (new array, same coordinaten * values).n */nexport function cloneTransform(input, opt_output, opt_dimension) {n var output;n if (opt_output !== undefined) {n for (var i = 0, ii = input.length; i < ii; ++i) {n opt_output = input;n }n output = opt_output;n }n else {n output = input.slice();n }n return output;n}n/**n * @param {Array<number>} input Input coordinate array.n * @param {Array<number>=} opt_output Output array of coordinate values.n * @param {number=} opt_dimension Dimension.n * @return {Array<number>} Input coordinate array (same array as input).n */nexport function identityTransform(input, opt_output, opt_dimension) {n if (opt_output !== undefined && input !== opt_output) {n for (var i = 0, ii = input.length; i < ii; ++i) {n opt_output = input;n }n input = opt_output;n }n return input;n}n/**n * Add a Projection object to the list of supported projections that can ben * looked up by their code.n *n * @param {Projection} projection Projection instance.n * @apin */nexport function addProjection(projection) {n addProj(projection.getCode(), projection);n addTransformFunc(projection, projection, cloneTransform);n}n/**n * @param {Array<Projection>} projections Projections.n */nexport function addProjections(projections) {n projections.forEach(addProjection);n}n/**n * Fetches a Projection object for the code specified.n *n * @param {ProjectionLike} projectionLike Either a code string which isn * a combination of authority and identifier such as "EPSG:4326", or ann * existing projection object, or undefined.n * @return {Projection} Projection object, or null if not in list.n * @apin */nexport function get(projectionLike) {n return typeof projectionLike === 'string' ?n getProj(/** @type {string} */ (projectionLike)) :n ( /** @type {Projection} */(projectionLike) || null);n}n/**n * Get the resolution of the point in degrees or distance units.n * For projections with degrees as the unit this will simply return then * provided resolution. For other projections the point resolution isn * by default estimated by transforming the 'point' pixel to EPSG:4326,n * measuring its width and height on the normal sphere,n * and taking the average of the width and height.n * A custom function can be provided for a specific projection, eithern * by setting the `getPointResolution` option in then * {@link module:ol/proj/Projection~Projection} constructor or by usingn * {@link module:ol/proj/Projection~Projection#setGetPointResolution} to change an existingn * projection object.n * @param {ProjectionLike} projection The projection.n * @param {number} resolution Nominal resolution in projection units.n * @param {import("./coordinate.js").Coordinate} point Point to find adjusted resolution at.n * @param {Units=} opt_units Units to get the point resolution in.n * Default is the projection's units.n * @return {number} Point resolution.n * @apin */nexport function getPointResolution(projection, resolution, point, opt_units) {n projection = get(projection);n var pointResolution;n var getter = projection.getPointResolutionFunc();n if (getter) {n pointResolution = getter(resolution, point);n if (opt_units && opt_units !== projection.getUnits()) {n var metersPerUnit = projection.getMetersPerUnit();n if (metersPerUnit) {n pointResolution = pointResolution * metersPerUnit / METERS_PER_UNIT;n }n }n }n else {n var units = projection.getUnits();n if (units == Units.DEGREES && !opt_units || opt_units == Units.DEGREES) {n pointResolution = resolution;n }n else {n // Estimate point resolution by transforming the center pixel to EPSG:4326,n // measuring its width and height on the normal sphere, and taking then // average of the width and height.n var toEPSG4326_1 = getTransformFromProjections(projection, get('EPSG:4326'));n var vertices = [n point - resolution / 2, point,n point + resolution / 2, point,n point, point - resolution / 2,n point, point + resolution / 2n ];n vertices = toEPSG4326_1(vertices, vertices, 2);n var width = getDistance(vertices.slice(0, 2), vertices.slice(2, 4));n var height = getDistance(vertices.slice(4, 6), vertices.slice(6, 8));n pointResolution = (width + height) / 2;n var metersPerUnit = opt_units ?n METERS_PER_UNIT :n projection.getMetersPerUnit();n if (metersPerUnit !== undefined) {n pointResolution /= metersPerUnit;n }n }n }n return pointResolution;n}n/**n * Registers transformation functions that don't alter coordinates. Those allown * to transform between projections with equal meaning.n *n * @param {Array<Projection>} projections Projections.n * @apin */nexport function addEquivalentProjections(projections) {n addProjections(projections);n projections.forEach(function (source) {n projections.forEach(function (destination) {n if (source !== destination) {n addTransformFunc(source, destination, cloneTransform);n }n });n });n}n/**n * Registers transformation functions to convert coordinates in any projectionn * in projection1 to any projection in projection2.n *n * @param {Array<Projection>} projections1 Projections with equaln * meaning.n * @param {Array<Projection>} projections2 Projections with equaln * meaning.n * @param {TransformFunction} forwardTransform Transformation from anyn * projection in projection1 to any projection in projection2.n * @param {TransformFunction} inverseTransform Transform from any projectionn * in projection2 to any projection in projection1..n */nexport function addEquivalentTransforms(projections1, projections2, forwardTransform, inverseTransform) {n projections1.forEach(function (projection1) {n projections2.forEach(function (projection2) {n addTransformFunc(projection1, projection2, forwardTransform);n addTransformFunc(projection2, projection1, inverseTransform);n });n });n}n/**n * Clear all cached projections and transforms.n */nexport function clearAllProjections() {n clearProj();n clearTransformFuncs();n}n/**n * @param {Projection|string|undefined} projection Projection.n * @param {string} defaultCode Default code.n * @return {Projection} Projection.n */nexport function createProjection(projection, defaultCode) {n if (!projection) {n return get(defaultCode);n }n else if (typeof projection === 'string') {n return get(projection);n }n else {n return (n /** @type {Projection} */ (projection));n }n}n/**n * Creates a {@link module:ol/proj~TransformFunction} from a simple 2D coordinate transformn * function.n * @param {function(import("./coordinate.js").Coordinate): import("./coordinate.js").Coordinate} coordTransform Coordinaten * transform.n * @return {TransformFunction} Transform function.n */nexport function createTransformFromCoordinateTransform(coordTransform) {n return (n /**n * @param {Array<number>} input Input.n * @param {Array<number>=} opt_output Output.n * @param {number=} opt_dimension Dimension.n * @return {Array<number>} Output.n */n function (input, opt_output, opt_dimension) {n var length = input.length;n var dimension = opt_dimension !== undefined ? opt_dimension : 2;n var output = opt_output !== undefined ? opt_output : new Array(length);n for (var i = 0; i < length; i += dimension) {n var point = coordTransform([input, input[i + 1]]);n output = point;n output[i + 1] = point;n for (var j = dimension - 1; j >= 2; –j) {n output[i + j] = input[i + j];n }n }n return output;n });n}n/**n * Registers coordinate transform functions to convert coordinates between then * source projection and the destination projection.n * The forward and inverse functions convert coordinate pairs; this functionn * converts these into the functions used internally which also handlen * extents and coordinate arrays.n *n * @param {ProjectionLike} source Source projection.n * @param {ProjectionLike} destination Destination projection.n * @param {function(import("./coordinate.js").Coordinate): import("./coordinate.js").Coordinate} forward The forward transformn * function (that is, from the source projection to the destinationn * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returnsn * the transformed {@link module:ol/coordinate~Coordinate}.n * @param {function(import("./coordinate.js").Coordinate): import("./coordinate.js").Coordinate} inverse The inverse transformn * function (that is, from the destination projection to the sourcen * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returnsn * the transformed {@link module:ol/coordinate~Coordinate}.n * @apin */nexport function addCoordinateTransforms(source, destination, forward, inverse) {n var sourceProj = get(source);n var destProj = get(destination);n addTransformFunc(sourceProj, destProj, createTransformFromCoordinateTransform(forward));n addTransformFunc(destProj, sourceProj, createTransformFromCoordinateTransform(inverse));n}n/**n * Transforms a coordinate from longitude/latitude to a different projection.n * @param {import("./coordinate.js").Coordinate} coordinate Coordinate as longitude and latitude, i.e.n * an array with longitude as 1st and latitude as 2nd element.n * @param {ProjectionLike=} opt_projection Target projection. Then * default is Web Mercator, i.e. 'EPSG:3857'.n * @return {import("./coordinate.js").Coordinate} Coordinate projected to the target projection.n * @apin */nexport function fromLonLat(coordinate, opt_projection) {n return transform(coordinate, 'EPSG:4326', opt_projection !== undefined ? opt_projection : 'EPSG:3857');n}n/**n * Transforms a coordinate to longitude/latitude.n * @param {import("./coordinate.js").Coordinate} coordinate Projected coordinate.n * @param {ProjectionLike=} opt_projection Projection of the coordinate.n * The default is Web Mercator, i.e. 'EPSG:3857'.n * @return {import("./coordinate.js").Coordinate} Coordinate as longitude and latitude, i.e. an arrayn * with longitude as 1st and latitude as 2nd element.n * @apin */nexport function toLonLat(coordinate, opt_projection) {n var lonLat = transform(coordinate, opt_projection !== undefined ? opt_projection : 'EPSG:3857', 'EPSG:4326');n var lon = lonLat;n if (lon < -180 || lon > 180) {n lonLat = modulo(lon + 180, 360) - 180;n }n return lonLat;n}n/**n * Checks if two projections are the same, that is every coordinate in onen * projection does represent the same geographic point as the same coordinate inn * the other projection.n *n * @param {Projection} projection1 Projection 1.n * @param {Projection} projection2 Projection 2.n * @return {boolean} Equivalent.n * @apin */nexport function equivalent(projection1, projection2) {n if (projection1 === projection2) {n return true;n }n var equalUnits = projection1.getUnits() === projection2.getUnits();n if (projection1.getCode() === projection2.getCode()) {n return equalUnits;n }n else {n var transformFunc = getTransformFromProjections(projection1, projection2);n return transformFunc === cloneTransform && equalUnits;n }n}n/**n * Searches in the list of transform functions for the function for convertingn * coordinates from the source projection to the destination projection.n *n * @param {Projection} sourceProjection Source Projection object.n * @param {Projection} destinationProjection Destination Projectionn * object.n * @return {TransformFunction} Transform function.n */nexport function getTransformFromProjections(sourceProjection, destinationProjection) {n var sourceCode = sourceProjection.getCode();n var destinationCode = destinationProjection.getCode();n var transformFunc = getTransformFunc(sourceCode, destinationCode);n if (!transformFunc) {n transformFunc = identityTransform;n }n return transformFunc;n}n/**n * Given the projection-like objects, searches for a transformationn * function to convert a coordinates array from the source projection to then * destination projection.n *n * @param {ProjectionLike} source Source.n * @param {ProjectionLike} destination Destination.n * @return {TransformFunction} Transform function.n * @apin */nexport function getTransform(source, destination) {n var sourceProjection = get(source);n var destinationProjection = get(destination);n return getTransformFromProjections(sourceProjection, destinationProjection);n}n/**n * Transforms a coordinate from source projection to destination projection.n * This returns a new coordinate (and does not modify the original).n *n * See {@link module:ol/proj~transformExtent} for extent transformation.n * See the transform method of {@link module:ol/geom/Geometry~Geometry} and itsn * subclasses for geometry transforms.n *n * @param {import("./coordinate.js").Coordinate} coordinate Coordinate.n * @param {ProjectionLike} source Source projection-like.n * @param {ProjectionLike} destination Destination projection-like.n * @return {import("./coordinate.js").Coordinate} Coordinate.n * @apin */nexport function transform(coordinate, source, destination) {n var transformFunc = getTransform(source, destination);n return transformFunc(coordinate, undefined, coordinate.length);n}n/**n * Transforms an extent from source projection to destination projection. Thisn * returns a new extent (and does not modify the original).n *n * @param {import("./extent.js").Extent} extent The extent to transform.n * @param {ProjectionLike} source Source projection-like.n * @param {ProjectionLike} destination Destination projection-like.n * @return {import("./extent.js").Extent} The transformed extent.n * @apin */nexport function transformExtent(extent, source, destination) {n var transformFunc = getTransform(source, destination);n return applyTransform(extent, transformFunc);n}n/**n * Transforms the given point to the destination projection.n *n * @param {import("./coordinate.js").Coordinate} point Point.n * @param {Projection} sourceProjection Source projection.n * @param {Projection} destinationProjection Destination projection.n * @return {import("./coordinate.js").Coordinate} Point.n */nexport function transformWithProjections(point, sourceProjection, destinationProjection) {n var transformFunc = getTransformFromProjections(sourceProjection, destinationProjection);n return transformFunc(point);n}n/**n * @type {?Projection}n */nvar userProjection = null;n/**n * Set the projection for coordinates supplied from and returned by API methods.n * Note that this method is not yet a part of the stable API. Support for usern * projections is not yet complete and should be considered experimental.n * @param {ProjectionLike} projection The user projection.n */nexport function setUserProjection(projection) {n userProjection = get(projection);n}n/**n * Clear the user projection if set. Note that this method is not yet a part ofn * the stable API. Support for user projections is not yet complete and shouldn * be considered experimental.n */nexport function clearUserProjection() {n userProjection = null;n}n/**n * Get the projection for coordinates supplied from and returned by API methods.n * Note that this method is not yet a part of the stable API. Support for usern * projections is not yet complete and should be considered experimental.n * @returns {?Projection} The user projection (or null if not set).n */nexport function getUserProjection() {n return userProjection;n}n/**n * Use geographic coordinates (WGS-84 datum) in API methods. Note that thisn * method is not yet a part of the stable API. Support for user projections isn * not yet complete and should be considered experimental.n */nexport function useGeographic() {n setUserProjection('EPSG:4326');n}n/**n * Return a coordinate transformed into the user projection. If no user projectionn * is set, the original coordinate is returned.n * @param {Array<number>} coordinate Input coordinate.n * @param {ProjectionLike} sourceProjection The input coordinate projection.n * @returns {Array<number>} The input coordinate in the user projection.n */nexport function toUserCoordinate(coordinate, sourceProjection) {n if (!userProjection) {n return coordinate;n }n return transform(coordinate, sourceProjection, userProjection);n}n/**n * Return a coordinate transformed from the user projection. If no user projectionn * is set, the original coordinate is returned.n * @param {Array<number>} coordinate Input coordinate.n * @param {ProjectionLike} destProjection The destination projection.n * @returns {Array<number>} The input coordinate transformed.n */nexport function fromUserCoordinate(coordinate, destProjection) {n if (!userProjection) {n return coordinate;n }n return transform(coordinate, userProjection, destProjection);n}n/**n * Return an extent transformed into the user projection. If no user projectionn * is set, the original extent is returned.n * @param {import("./extent.js").Extent} extent Input extent.n * @param {ProjectionLike} sourceProjection The input extent projection.n * @returns {import("./extent.js").Extent} The input extent in the user projection.n */nexport function toUserExtent(extent, sourceProjection) {n if (!userProjection) {n return extent;n }n return transformExtent(extent, sourceProjection, userProjection);n}n/**n * Return an extent transformed from the user projection. If no user projectionn * is set, the original extent is returned.n * @param {import("./extent.js").Extent} extent Input extent.n * @param {ProjectionLike} destProjection The destination projection.n * @returns {import("./extent.js").Extent} The input extent transformed.n */nexport function fromUserExtent(extent, destProjection) {n if (!userProjection) {n return extent;n }n return transformExtent(extent, userProjection, destProjection);n}n/**n * Add transforms to and from EPSG:4326 and EPSG:3857. This function is calledn * by when this module is executed and should only need to be called again aftern * `clearAllProjections()` is called (e.g. in tests).n */nexport function addCommon() {n // Add transformations that don't alter coordinates to convert within set ofn // projections with equal meaning.n addEquivalentProjections(EPSG3857_PROJECTIONS);n addEquivalentProjections(EPSG4326_PROJECTIONS);n // Add transformations to convert EPSG:4326 like coordinates to EPSG:3857 liken // coordinates and back.n addEquivalentTransforms(EPSG4326_PROJECTIONS, EPSG3857_PROJECTIONS, fromEPSG4326, toEPSG4326);n}naddCommon();n//# sourceMappingURL=proj.js.map”,“/**n * @module ol/transformn */nimport { assert } from './asserts.js';n/**n * An array representing an affine 2d transformation for use withn * {@link module:ol/transform} functions. The array has 6 elements.n * @typedef {!Array<number>} Transformn */n/**n * Collection of affine 2d transformation functions. The functions work on ann * array of 6 elements. The element order is compatible with the [SVGMatrixn * interface](developer.mozilla.org/en-US/docs/Web/API/SVGMatrix) and isn * a subset (elements a to f) of a 3×3 matrix:n * “`n * [ a c e ]n * [ b d f ]n * [ 0 0 1 ]n * “`n */n/**n * @privaten * @type {Transform}n */nvar tmp_ = new Array(6);n/**n * Create an identity transform.n * @return {!Transform} Identity transform.n */nexport function create() {n return [1, 0, 0, 1, 0, 0];n}n/**n * Resets the given transform to an identity transform.n * @param {!Transform} transform Transform.n * @return {!Transform} Transform.n */nexport function reset(transform) {n return set(transform, 1, 0, 0, 1, 0, 0);n}n/**n * Multiply the underlying matrices of two transforms and return the result inn * the first transform.n * @param {!Transform} transform1 Transform parameters of matrix 1.n * @param {!Transform} transform2 Transform parameters of matrix 2.n * @return {!Transform} transform1 multiplied with transform2.n */nexport function multiply(transform1, transform2) {n var a1 = transform1;n var b1 = transform1;n var c1 = transform1;n var d1 = transform1;n var e1 = transform1;n var f1 = transform1;n var a2 = transform2;n var b2 = transform2;n var c2 = transform2;n var d2 = transform2;n var e2 = transform2;n var f2 = transform2;n transform1 = a1 * a2 + c1 * b2;n transform1 = b1 * a2 + d1 * b2;n transform1 = a1 * c2 + c1 * d2;n transform1 = b1 * c2 + d1 * d2;n transform1 = a1 * e2 + c1 * f2 + e1;n transform1 = b1 * e2 + d1 * f2 + f1;n return transform1;n}n/**n * Set the transform components a-f on a given transform.n * @param {!Transform} transform Transform.n * @param {number} a The a component of the transform.n * @param {number} b The b component of the transform.n * @param {number} c The c component of the transform.n * @param {number} d The d component of the transform.n * @param {number} e The e component of the transform.n * @param {number} f The f component of the transform.n * @return {!Transform} Matrix with transform applied.n */nexport function set(transform, a, b, c, d, e, f) {n transform = a;n transform = b;n transform = c;n transform = d;n transform = e;n transform = f;n return transform;n}n/**n * Set transform on one matrix from another matrix.n * @param {!Transform} transform1 Matrix to set transform to.n * @param {!Transform} transform2 Matrix to set transform from.n * @return {!Transform} transform1 with transform from transform2 applied.n */nexport function setFromArray(transform1, transform2) {n transform1 = transform2;n transform1 = transform2;n transform1 = transform2;n transform1 = transform2;n transform1 = transform2;n transform1 = transform2;n return transform1;n}n/**n * Transforms the given coordinate with the given transform returning then * resulting, transformed coordinate. The coordinate will be modified in-place.n *n * @param {Transform} transform The transformation.n * @param {import("./coordinate.js").Coordinate|import("./pixel.js").Pixel} coordinate The coordinate to transform.n * @return {import("./coordinate.js").Coordinate|import("./pixel.js").Pixel} return coordinate so that operations can ben * chained together.n */nexport function apply(transform, coordinate) {n var x = coordinate;n var y = coordinate;n coordinate = transform * x + transform * y + transform;n coordinate = transform * x + transform * y + transform;n return coordinate;n}n/**n * Applies rotation to the given transform.n * @param {!Transform} transform Transform.n * @param {number} angle Angle in radians.n * @return {!Transform} The rotated transform.n */nexport function rotate(transform, angle) {n var cos = Math.cos(angle);n var sin = Math.sin(angle);n return multiply(transform, set(tmp_, cos, sin, -sin, cos, 0, 0));n}n/**n * Applies scale to a given transform.n * @param {!Transform} transform Transform.n * @param {number} x Scale factor x.n * @param {number} y Scale factor y.n * @return {!Transform} The scaled transform.n */nexport function scale(transform, x, y) {n return multiply(transform, set(tmp_, x, 0, 0, y, 0, 0));n}n/**n * Creates a scale transform.n * @param {!Transform} target Transform to overwrite.n * @param {number} x Scale factor x.n * @param {number} y Scale factor y.n * @return {!Transform} The scale transform.n */nexport function makeScale(target, x, y) {n return set(target, x, 0, 0, y, 0, 0);n}n/**n * Applies translation to the given transform.n * @param {!Transform} transform Transform.n * @param {number} dx Translation x.n * @param {number} dy Translation y.n * @return {!Transform} The translated transform.n */nexport function translate(transform, dx, dy) {n return multiply(transform, set(tmp_, 1, 0, 0, 1, dx, dy));n}n/**n * Creates a composite transform given an initial translation, scale, rotation, andn * final translation (in that order only, not commutative).n * @param {!Transform} transform The transform (will be modified in place).n * @param {number} dx1 Initial translation x.n * @param {number} dy1 Initial translation y.n * @param {number} sx Scale factor x.n * @param {number} sy Scale factor y.n * @param {number} angle Rotation (in counter-clockwise radians).n * @param {number} dx2 Final translation x.n * @param {number} dy2 Final translation y.n * @return {!Transform} The composite transform.n */nexport function compose(transform, dx1, dy1, sx, sy, angle, dx2, dy2) {n var sin = Math.sin(angle);n var cos = Math.cos(angle);n transform = sx * cos;n transform = sy * sin;n transform = -sx * sin;n transform = sy * cos;n transform = dx2 * sx * cos - dy2 * sx * sin + dx1;n transform = dx2 * sy * sin + dy2 * sy * cos + dy1;n return transform;n}n/**n * Invert the given transform.n * @param {!Transform} source The source transform to invert.n * @return {!Transform} The inverted (source) transform.n */nexport function invert(source) {n return makeInverse(source, source);n}n/**n * Invert the given transform.n * @param {!Transform} target Transform to be set as the inverse ofn * the source transform.n * @param {!Transform} source The source transform to invert.n * @return {!Transform} The inverted (target) transform.n */nexport function makeInverse(target, source) {n var det = determinant(source);n assert(det !== 0, 32); // Transformation matrix cannot be invertedn var a = source;n var b = source;n var c = source;n var d = source;n var e = source;n var f = source;n target = d / det;n target = -b / det;n target = -c / det;n target = a / det;n target = (c * f - d * e) / det;n target = -(a * f - b * e) / det;n return target;n}n/**n * Returns the determinant of the given matrix.n * @param {!Transform} mat Matrix.n * @return {number} Determinant.n */nexport function determinant(mat) {n return mat * mat - mat * mat;n}n/**n * A string version of the transform. This can be usedn * for CSS transforms.n * @param {!Transform} mat Matrix.n * @return {string} The transform as a string.n */nexport function toString(mat) {n return 'matrix(' + mat.join(', ') + ')';n}n//# sourceMappingURL=transform.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/geom/Geometryn */nimport { abstract } from '../util.js';nimport BaseObject from '../Object.js';nimport { createEmpty, getHeight, returnOrUpdate } from '../extent.js';nimport { transform2D } from './flat/transform.js';nimport { get as getProjection, getTransform } from '../proj.js';nimport Units from '../proj/Units.js';nimport { create as createTransform, compose as composeTransform } from '../transform.js';nimport { memoizeOne } from '../functions.js';n/**n * @type {import("../transform.js").Transform}n */nvar tmpTransform = createTransform();n/**n * @classdescn * Abstract base class; normally only used for creating subclasses and notn * instantiated in apps.n * Base class for vector geometries.n *n * To get notified of changes to the geometry, register a listener for then * generic `change` event on your geometry instance.n *n * @abstractn * @apin */nvar Geometry = /** @class */ (function (_super) {n __extends(Geometry, _super);n function Geometry() {n var _this = _super.call(this) || this;n /**n * @privaten * @type {import("../extent.js").Extent}n */n this.extent = createEmpty();n /**n * @privaten * @type {number}n */n this.extentRevision = -1;n /**n * @protectedn * @type {number}n */n _this.simplifiedGeometryMaxMinSquaredTolerance = 0;n /**n * @protectedn * @type {number}n */n _this.simplifiedGeometryRevision = 0;n /**n * Get a transformed and simplified version of the geometry.n * @abstractn * @param {number} revision The geometry revision.n * @param {number} squaredTolerance Squared tolerance.n * @param {import("../proj.js").TransformFunction} [opt_transform] Optional transform function.n * @return {Geometry} Simplified geometry.n */n _this.simplifyTransformedInternal = memoizeOne(function (revision, squaredTolerance, opt_transform) {n if (!opt_transform) {n return this.getSimplifiedGeometry(squaredTolerance);n }n var clone = this.clone();n clone.applyTransform(opt_transform);n return clone.getSimplifiedGeometry(squaredTolerance);n });n return _this;n }n /**n * Get a transformed and simplified version of the geometry.n * @abstractn * @param {number} squaredTolerance Squared tolerance.n * @param {import("../proj.js").TransformFunction} [opt_transform] Optional transform function.n * @return {Geometry} Simplified geometry.n */n Geometry.prototype.simplifyTransformed = function (squaredTolerance, opt_transform) {n return this.simplifyTransformedInternal(this.getRevision(), squaredTolerance, opt_transform);n };n /**n * Make a complete copy of the geometry.n * @abstractn * @return {!Geometry} Clone.n */n Geometry.prototype.clone = function () {n return abstract();n };n /**n * @abstractn * @param {number} x X.n * @param {number} y Y.n * @param {import("../coordinate.js").Coordinate} closestPoint Closest point.n * @param {number} minSquaredDistance Minimum squared distance.n * @return {number} Minimum squared distance.n */n Geometry.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {n return abstract();n };n /**n * @param {number} x X.n * @param {number} y Y.n * @return {boolean} Contains (x, y).n */n Geometry.prototype.containsXY = function (x, y) {n var coord = this.getClosestPoint([x, y]);n return coord === x && coord === y;n };n /**n * Return the closest point of the geometry to the passed point asn * {@link module:ol/coordinate~Coordinate coordinate}.n * @param {import("../coordinate.js").Coordinate} point Point.n * @param {import("../coordinate.js").Coordinate=} opt_closestPoint Closest point.n * @return {import("../coordinate.js").Coordinate} Closest point.n * @apin */n Geometry.prototype.getClosestPoint = function (point, opt_closestPoint) {n var closestPoint = opt_closestPoint ? opt_closestPoint : [NaN, NaN];n this.closestPointXY(point, point, closestPoint, Infinity);n return closestPoint;n };n /**n * Returns true if this geometry includes the specified coordinate. If then * coordinate is on the boundary of the geometry, returns false.n * @param {import("../coordinate.js").Coordinate} coordinate Coordinate.n * @return {boolean} Contains coordinate.n * @apin */n Geometry.prototype.intersectsCoordinate = function (coordinate) {n return this.containsXY(coordinate, coordinate);n };n /**n * @abstractn * @param {import("../extent.js").Extent} extent Extent.n * @protectedn * @return {import("../extent.js").Extent} extent Extent.n */n Geometry.prototype.computeExtent = function (extent) {n return abstract();n };n /**n * Get the extent of the geometry.n * @param {import("../extent.js").Extent=} opt_extent Extent.n * @return {import("../extent.js").Extent} extent Extent.n * @apin */n Geometry.prototype.getExtent = function (opt_extent) {n if (this.extentRevision_ != this.getRevision()) {n this.extent_ = this.computeExtent(this.extent_);n this.extentRevision_ = this.getRevision();n }n return returnOrUpdate(this.extent_, opt_extent);n };n /**n * Rotate the geometry around a given coordinate. This modifies the geometryn * coordinates in place.n * @abstractn * @param {number} angle Rotation angle in radians.n * @param {import("../coordinate.js").Coordinate} anchor The rotation center.n * @apin */n Geometry.prototype.rotate = function (angle, anchor) {n abstract();n };n /**n * Scale the geometry (with an optional origin). This modifies the geometryn * coordinates in place.n * @abstractn * @param {number} sx The scaling factor in the x-direction.n * @param {number=} opt_sy The scaling factor in the y-direction (defaults ton * sx).n * @param {import("../coordinate.js").Coordinate=} opt_anchor The scale origin (defaults to the centern * of the geometry extent).n * @apin */n Geometry.prototype.scale = function (sx, opt_sy, opt_anchor) {n abstract();n };n /**n * Create a simplified version of this geometry. For linestrings, this usesn * the [Douglas Peucker](en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm)n * algorithm. For polygons, a quantization-basedn * simplification is used to preserve topology.n * @param {number} tolerance The tolerance distance for simplification.n * @return {Geometry} A new, simplified version of the original geometry.n * @apin */n Geometry.prototype.simplify = function (tolerance) {n return this.getSimplifiedGeometry(tolerance * tolerance);n };n /**n * Create a simplified version of this geometry using the Douglas Peuckern * algorithm.n * See en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm.n * @abstractn * @param {number} squaredTolerance Squared tolerance.n * @return {Geometry} Simplified geometry.n */n Geometry.prototype.getSimplifiedGeometry = function (squaredTolerance) {n return abstract();n };n /**n * Get the type of this geometry.n * @abstractn * @return {import("./GeometryType.js").default} Geometry type.n */n Geometry.prototype.getType = function () {n return abstract();n };n /**n * Apply a transform function to the coordinates of the geometry.n * The geometry is modified in place.n * If you do not want the geometry modified in place, first `clone()` it andn * then use this function on the clone.n * @abstractn * @param {import("../proj.js").TransformFunction} transformFn Transform function.n * Called with a flat array of geometry coordinates.n */n Geometry.prototype.applyTransform = function (transformFn) {n abstract();n };n /**n * Test if the geometry and the passed extent intersect.n * @abstractn * @param {import("../extent.js").Extent} extent Extent.n * @return {boolean} `true` if the geometry and the extent intersect.n */n Geometry.prototype.intersectsExtent = function (extent) {n return abstract();n };n /**n * Translate the geometry. This modifies the geometry coordinates in place. Ifn * instead you want a new geometry, first `clone()` this geometry.n * @abstractn * @param {number} deltaX Delta X.n * @param {number} deltaY Delta Y.n * @apin */n Geometry.prototype.translate = function (deltaX, deltaY) {n abstract();n };n /**n * Transform each coordinate of the geometry from one coordinate referencen * system to another. The geometry is modified in place.n * For example, a line will be transformed to a line and a circle to a circle.n * If you do not want the geometry modified in place, first `clone()` it andn * then use this function on the clone.n *n * @param {import("../proj.js").ProjectionLike} source The current projection. Can be an * string identifier or a {@link module:ol/proj/Projection~Projection} object.n * @param {import("../proj.js").ProjectionLike} destination The desired projection. Can be an * string identifier or a {@link module:ol/proj/Projection~Projection} object.n * @return {Geometry} This geometry. Note that original geometry isn * modified in place.n * @apin */n Geometry.prototype.transform = function (source, destination) {n /** @type {import("../proj/Projection.js").default} */n var sourceProj = getProjection(source);n var transformFn = sourceProj.getUnits() == Units.TILE_PIXELS ?n function (inCoordinates, outCoordinates, stride) {n var pixelExtent = sourceProj.getExtent();n var projectedExtent = sourceProj.getWorldExtent();n var scale = getHeight(projectedExtent) / getHeight(pixelExtent);n composeTransform(tmpTransform, projectedExtent, projectedExtent, scale, -scale, 0, 0, 0);n transform2D(inCoordinates, 0, inCoordinates.length, stride, tmpTransform, outCoordinates);n return getTransform(sourceProj, destination)(inCoordinates, outCoordinates, stride);n } :n getTransform(sourceProj, destination);n this.applyTransform(transformFn);n return this;n };n return Geometry;n}(BaseObject));nexport default Geometry;n//# sourceMappingURL=Geometry.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/geom/SimpleGeometryn */nimport { abstract } from '../util.js';nimport { createOrUpdateFromFlatCoordinates, getCenter } from '../extent.js';nimport Geometry from './Geometry.js';nimport GeometryLayout from './GeometryLayout.js';nimport { rotate, scale, translate, transform2D } from './flat/transform.js';n/**n * @classdescn * Abstract base class; only used for creating subclasses; do not instantiaten * in apps, as cannot be rendered.n *n * @abstractn * @apin */nvar SimpleGeometry = /** @class */ (function (_super) {n __extends(SimpleGeometry, _super);n function SimpleGeometry() {n var _this = _super.call(this) || this;n /**n * @protectedn * @type {GeometryLayout}n */n _this.layout = GeometryLayout.XY;n /**n * @protectedn * @type {number}n */n _this.stride = 2;n /**n * @protectedn * @type {Array<number>}n */n _this.flatCoordinates = null;n return _this;n }n /**n * @inheritDocn */n SimpleGeometry.prototype.computeExtent = function (extent) {n return createOrUpdateFromFlatCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, extent);n };n /**n * @abstractn * @return {Array<*>} Coordinates.n */n SimpleGeometry.prototype.getCoordinates = function () {n return abstract();n };n /**n * Return the first coordinate of the geometry.n * @return {import("../coordinate.js").Coordinate} First coordinate.n * @apin */n SimpleGeometry.prototype.getFirstCoordinate = function () {n return this.flatCoordinates.slice(0, this.stride);n };n /**n * @return {Array<number>} Flat coordinates.n */n SimpleGeometry.prototype.getFlatCoordinates = function () {n return this.flatCoordinates;n };n /**n * Return the last coordinate of the geometry.n * @return {import("../coordinate.js").Coordinate} Last point.n * @apin */n SimpleGeometry.prototype.getLastCoordinate = function () {n return this.flatCoordinates.slice(this.flatCoordinates.length - this.stride);n };n /**n * Return the {@link module:ol/geom/GeometryLayout layout} of the geometry.n * @return {GeometryLayout} Layout.n * @apin */n SimpleGeometry.prototype.getLayout = function () {n return this.layout;n };n /**n * @inheritDocn */n SimpleGeometry.prototype.getSimplifiedGeometry = function (squaredTolerance) {n if (this.simplifiedGeometryRevision !== this.getRevision()) {n this.simplifiedGeometryMaxMinSquaredTolerance = 0;n this.simplifiedGeometryRevision = this.getRevision();n }n // If squaredTolerance is negative or if we know that simplification will notn // have any effect then just return this.n if (squaredTolerance < 0 ||n (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&n squaredTolerance <= this.simplifiedGeometryMaxMinSquaredTolerance)) {n return this;n }n var simplifiedGeometry = this.getSimplifiedGeometryInternal(squaredTolerance);n var simplifiedFlatCoordinates = simplifiedGeometry.getFlatCoordinates();n if (simplifiedFlatCoordinates.length < this.flatCoordinates.length) {n return simplifiedGeometry;n }n else {n // Simplification did not actually remove any coordinates. We now known // that any calls to getSimplifiedGeometry with a squaredTolerance lessn // than or equal to the current squaredTolerance will also not have anyn // effect. This allows us to short circuit simplification (saving CPUn // cycles) and prevents the cache of simplified geometries from fillingn // up with useless identical copies of this geometry (saving memory).n this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;n return this;n }n };n /**n * @param {number} squaredTolerance Squared tolerance.n * @return {SimpleGeometry} Simplified geometry.n * @protectedn */n SimpleGeometry.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {n return this;n };n /**n * @return {number} Stride.n */n SimpleGeometry.prototype.getStride = function () {n return this.stride;n };n /**n * @param {GeometryLayout} layout Layout.n * @param {Array<number>} flatCoordinates Flat coordinates.n */n SimpleGeometry.prototype.setFlatCoordinates = function (layout, flatCoordinates) {n this.stride = getStrideForLayout(layout);n this.layout = layout;n this.flatCoordinates = flatCoordinates;n };n /**n * @abstractn * @param {!Array<*>} coordinates Coordinates.n * @param {GeometryLayout=} opt_layout Layout.n */n SimpleGeometry.prototype.setCoordinates = function (coordinates, opt_layout) {n abstract();n };n /**n * @param {GeometryLayout|undefined} layout Layout.n * @param {Array<*>} coordinates Coordinates.n * @param {number} nesting Nesting.n * @protectedn */n SimpleGeometry.prototype.setLayout = function (layout, coordinates, nesting) {n /** @type {number} */n var stride;n if (layout) {n stride = getStrideForLayout(layout);n }n else {n for (var i = 0; i < nesting; ++i) {n if (coordinates.length === 0) {n this.layout = GeometryLayout.XY;n this.stride = 2;n return;n }n else {n coordinates = /** @type {Array} */ (coordinates);n }n }n stride = coordinates.length;n layout = getLayoutForStride(stride);n }n this.layout = layout;n this.stride = stride;n };n /**n * Apply a transform function to the coordinates of the geometry.n * The geometry is modified in place.n * If you do not want the geometry modified in place, first `clone()` it andn * then use this function on the clone.n * @param {import("../proj.js").TransformFunction} transformFn Transform function.n * Called with a flat array of geometry coordinates.n * @apin */n SimpleGeometry.prototype.applyTransform = function (transformFn) {n if (this.flatCoordinates) {n transformFn(this.flatCoordinates, this.flatCoordinates, this.stride);n this.changed();n }n };n /**n * Rotate the geometry around a given coordinate. This modifies the geometryn * coordinates in place.n * @param {number} angle Rotation angle in radians.n * @param {import("../coordinate.js").Coordinate} anchor The rotation center.n * @apin */n SimpleGeometry.prototype.rotate = function (angle, anchor) {n var flatCoordinates = this.getFlatCoordinates();n if (flatCoordinates) {n var stride = this.getStride();n rotate(flatCoordinates, 0, flatCoordinates.length, stride, angle, anchor, flatCoordinates);n this.changed();n }n };n /**n * Scale the geometry (with an optional origin). This modifies the geometryn * coordinates in place.n * @param {number} sx The scaling factor in the x-direction.n * @param {number=} opt_sy The scaling factor in the y-direction (defaults ton * sx).n * @param {import("../coordinate.js").Coordinate=} opt_anchor The scale origin (defaults to the centern * of the geometry extent).n * @apin */n SimpleGeometry.prototype.scale = function (sx, opt_sy, opt_anchor) {n var sy = opt_sy;n if (sy === undefined) {n sy = sx;n }n var anchor = opt_anchor;n if (!anchor) {n anchor = getCenter(this.getExtent());n }n var flatCoordinates = this.getFlatCoordinates();n if (flatCoordinates) {n var stride = this.getStride();n scale(flatCoordinates, 0, flatCoordinates.length, stride, sx, sy, anchor, flatCoordinates);n this.changed();n }n };n /**n * Translate the geometry. This modifies the geometry coordinates in place. Ifn * instead you want a new geometry, first `clone()` this geometry.n * @param {number} deltaX Delta X.n * @param {number} deltaY Delta Y.n * @apin */n SimpleGeometry.prototype.translate = function (deltaX, deltaY) {n var flatCoordinates = this.getFlatCoordinates();n if (flatCoordinates) {n var stride = this.getStride();n translate(flatCoordinates, 0, flatCoordinates.length, stride, deltaX, deltaY, flatCoordinates);n this.changed();n }n };n return SimpleGeometry;n}(Geometry));n/**n * @param {number} stride Stride.n * @return {GeometryLayout} layout Layout.n */nfunction getLayoutForStride(stride) {n var layout;n if (stride == 2) {n layout = GeometryLayout.XY;n }n else if (stride == 3) {n layout = GeometryLayout.XYZ;n }n else if (stride == 4) {n layout = GeometryLayout.XYZM;n }n return (n /** @type {GeometryLayout} */ (layout));n}n/**n * @param {GeometryLayout} layout Layout.n * @return {number} Stride.n */nexport function getStrideForLayout(layout) {n var stride;n if (layout == GeometryLayout.XY) {n stride = 2;n }n else if (layout == GeometryLayout.XYZ || layout == GeometryLayout.XYM) {n stride = 3;n }n else if (layout == GeometryLayout.XYZM) {n stride = 4;n }n return /** @type {number} */ (stride);n}n/**n * @param {SimpleGeometry} simpleGeometry Simple geometry.n * @param {import("../transform.js").Transform} transform Transform.n * @param {Array<number>=} opt_dest Destination.n * @return {Array<number>} Transformed flat coordinates.n */nexport function transformGeom2D(simpleGeometry, transform, opt_dest) {n var flatCoordinates = simpleGeometry.getFlatCoordinates();n if (!flatCoordinates) {n return null;n }n else {n var stride = simpleGeometry.getStride();n return transform2D(flatCoordinates, 0, flatCoordinates.length, stride, transform, opt_dest);n }n}nexport default SimpleGeometry;n//# sourceMappingURL=SimpleGeometry.js.map”,“/**n * @module ol/geom/flat/arean */n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @return {number} Area.n */nexport function linearRing(flatCoordinates, offset, end, stride) {n var twiceArea = 0;n var x1 = flatCoordinates[end - stride];n var y1 = flatCoordinates[end - stride + 1];n for (; offset < end; offset += stride) {n var x2 = flatCoordinates;n var y2 = flatCoordinates[offset + 1];n twiceArea += y1 * x2 - x1 * y2;n x1 = x2;n y1 = y2;n }n return twiceArea / 2;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<number>} ends Ends.n * @param {number} stride Stride.n * @return {number} Area.n */nexport function linearRings(flatCoordinates, offset, ends, stride) {n var area = 0;n for (var i = 0, ii = ends.length; i < ii; ++i) {n var end = ends;n area += linearRing(flatCoordinates, offset, end, stride);n offset = end;n }n return area;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<Array<number>>} endss Endss.n * @param {number} stride Stride.n * @return {number} Area.n */nexport function linearRingss(flatCoordinates, offset, endss, stride) {n var area = 0;n for (var i = 0, ii = endss.length; i < ii; ++i) {n var ends = endss;n area += linearRings(flatCoordinates, offset, ends, stride);n offset = ends[ends.length - 1];n }n return area;n}n//# sourceMappingURL=area.js.map”,“/**n * @module ol/geom/flat/closestn */nimport { lerp, squaredDistance as squaredDx } from '../../math.js';n/**n * Returns the point on the 2D line segment flatCoordinates ton * flatCoordinates that is closest to the point (x, y). Extran * dimensions are linearly interpolated.n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset1 Offset 1.n * @param {number} offset2 Offset 2.n * @param {number} stride Stride.n * @param {number} x X.n * @param {number} y Y.n * @param {Array<number>} closestPoint Closest point.n */nfunction assignClosest(flatCoordinates, offset1, offset2, stride, x, y, closestPoint) {n var x1 = flatCoordinates;n var y1 = flatCoordinates[offset1 + 1];n var dx = flatCoordinates - x1;n var dy = flatCoordinates[offset2 + 1] - y1;n var offset;n if (dx === 0 && dy === 0) {n offset = offset1;n }n else {n var t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);n if (t > 1) {n offset = offset2;n }n else if (t > 0) {n for (var i = 0; i < stride; ++i) {n closestPoint = lerp(flatCoordinates[offset1 + i], flatCoordinates[offset2 + i], t);n }n closestPoint.length = stride;n return;n }n else {n offset = offset1;n }n }n for (var i = 0; i < stride; ++i) {n closestPoint = flatCoordinates[offset + i];n }n closestPoint.length = stride;n}n/**n * Return the squared of the largest distance between any pair of consecutiven * coordinates.n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @param {number} max Max squared delta.n * @return {number} Max squared delta.n */nexport function maxSquaredDelta(flatCoordinates, offset, end, stride, max) {n var x1 = flatCoordinates;n var y1 = flatCoordinates[offset + 1];n for (offset += stride; offset < end; offset += stride) {n var x2 = flatCoordinates;n var y2 = flatCoordinates[offset + 1];n var squaredDelta = squaredDx(x1, y1, x2, y2);n if (squaredDelta > max) {n max = squaredDelta;n }n x1 = x2;n y1 = y2;n }n return max;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<number>} ends Ends.n * @param {number} stride Stride.n * @param {number} max Max squared delta.n * @return {number} Max squared delta.n */nexport function arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max) {n for (var i = 0, ii = ends.length; i < ii; ++i) {n var end = ends;n max = maxSquaredDelta(flatCoordinates, offset, end, stride, max);n offset = end;n }n return max;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<Array<number>>} endss Endss.n * @param {number} stride Stride.n * @param {number} max Max squared delta.n * @return {number} Max squared delta.n */nexport function multiArrayMaxSquaredDelta(flatCoordinates, offset, endss, stride, max) {n for (var i = 0, ii = endss.length; i < ii; ++i) {n var ends = endss;n max = arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max);n offset = ends[ends.length - 1];n }n return max;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @param {number} maxDelta Max delta.n * @param {boolean} isRing Is ring.n * @param {number} x X.n * @param {number} y Y.n * @param {Array<number>} closestPoint Closest point.n * @param {number} minSquaredDistance Minimum squared distance.n * @param {Array<number>=} opt_tmpPoint Temporary point object.n * @return {number} Minimum squared distance.n */nexport function assignClosestPoint(flatCoordinates, offset, end, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {n if (offset == end) {n return minSquaredDistance;n }n var i, squaredDistance;n if (maxDelta === 0) {n // All points are identical, so just test the first point.n squaredDistance = squaredDx(x, y, flatCoordinates, flatCoordinates[offset + 1]);n if (squaredDistance < minSquaredDistance) {n for (i = 0; i < stride; ++i) {n closestPoint = flatCoordinates[offset + i];n }n closestPoint.length = stride;n return squaredDistance;n }n else {n return minSquaredDistance;n }n }n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];n var index = offset + stride;n while (index < end) {n assignClosest(flatCoordinates, index - stride, index, stride, x, y, tmpPoint);n squaredDistance = squaredDx(x, y, tmpPoint, tmpPoint);n if (squaredDistance < minSquaredDistance) {n minSquaredDistance = squaredDistance;n for (i = 0; i < stride; ++i) {n closestPoint = tmpPoint;n }n closestPoint.length = stride;n index += stride;n }n else {n // Skip ahead multiple points, because we know that all the skippedn // points cannot be any closer than the closest point we have found son // far. We know this because we know how close the current point is, hown // close the closest point we have found so far is, and the maximumn // distance between consecutive points. For example, if we're currentlyn // at distance 10, the best we've found so far is 3, and that the maximumn // distance between consecutive points is 2, then we'll need to skip atn // least (10 - 3) / 2 == 3 (rounded down) points to have any chance ofn // finding a closer point. We use Math.max(…, 1) to ensure that wen // always advance at least one point, to avoid an infinite loop.n index += stride * Math.max(((Math.sqrt(squaredDistance) -n Math.sqrt(minSquaredDistance)) / maxDelta) | 0, 1);n }n }n if (isRing) {n // Check the closing segment.n assignClosest(flatCoordinates, end - stride, offset, stride, x, y, tmpPoint);n squaredDistance = squaredDx(x, y, tmpPoint, tmpPoint);n if (squaredDistance < minSquaredDistance) {n minSquaredDistance = squaredDistance;n for (i = 0; i < stride; ++i) {n closestPoint = tmpPoint;n }n closestPoint.length = stride;n }n }n return minSquaredDistance;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<number>} ends Ends.n * @param {number} stride Stride.n * @param {number} maxDelta Max delta.n * @param {boolean} isRing Is ring.n * @param {number} x X.n * @param {number} y Y.n * @param {Array<number>} closestPoint Closest point.n * @param {number} minSquaredDistance Minimum squared distance.n * @param {Array<number>=} opt_tmpPoint Temporary point object.n * @return {number} Minimum squared distance.n */nexport function assignClosestArrayPoint(flatCoordinates, offset, ends, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];n for (var i = 0, ii = ends.length; i < ii; ++i) {n var end = ends;n minSquaredDistance = assignClosestPoint(flatCoordinates, offset, end, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);n offset = end;n }n return minSquaredDistance;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<Array<number>>} endss Endss.n * @param {number} stride Stride.n * @param {number} maxDelta Max delta.n * @param {boolean} isRing Is ring.n * @param {number} x X.n * @param {number} y Y.n * @param {Array<number>} closestPoint Closest point.n * @param {number} minSquaredDistance Minimum squared distance.n * @param {Array<number>=} opt_tmpPoint Temporary point object.n * @return {number} Minimum squared distance.n */nexport function assignClosestMultiArrayPoint(flatCoordinates, offset, endss, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];n for (var i = 0, ii = endss.length; i < ii; ++i) {n var ends = endss;n minSquaredDistance = assignClosestArrayPoint(flatCoordinates, offset, ends, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);n offset = ends[ends.length - 1];n }n return minSquaredDistance;n}n//# sourceMappingURL=closest.js.map”,“/**n * @module ol/geom/flat/deflaten */n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {import("../../coordinate.js").Coordinate} coordinate Coordinate.n * @param {number} stride Stride.n * @return {number} offset Offset.n */nexport function deflateCoordinate(flatCoordinates, offset, coordinate, stride) {n for (var i = 0, ii = coordinate.length; i < ii; ++i) {n flatCoordinates = coordinate;n }n return offset;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<import("../../coordinate.js").Coordinate>} coordinates Coordinates.n * @param {number} stride Stride.n * @return {number} offset Offset.n */nexport function deflateCoordinates(flatCoordinates, offset, coordinates, stride) {n for (var i = 0, ii = coordinates.length; i < ii; ++i) {n var coordinate = coordinates;n for (var j = 0; j < stride; ++j) {n flatCoordinates = coordinate;n }n }n return offset;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<Array<import("../../coordinate.js").Coordinate>>} coordinatess Coordinatess.n * @param {number} stride Stride.n * @param {Array<number>=} opt_ends Ends.n * @return {Array<number>} Ends.n */nexport function deflateCoordinatesArray(flatCoordinates, offset, coordinatess, stride, opt_ends) {n var ends = opt_ends ? opt_ends : [];n var i = 0;n for (var j = 0, jj = coordinatess.length; j < jj; ++j) {n var end = deflateCoordinates(flatCoordinates, offset, coordinatess, stride);n ends = end;n offset = end;n }n ends.length = i;n return ends;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<Array<Array<import("../../coordinate.js").Coordinate>>>} coordinatesss Coordinatesss.n * @param {number} stride Stride.n * @param {Array<Array<number>>=} opt_endss Endss.n * @return {Array<Array<number>>} Endss.n */nexport function deflateMultiCoordinatesArray(flatCoordinates, offset, coordinatesss, stride, opt_endss) {n var endss = opt_endss ? opt_endss : [];n var i = 0;n for (var j = 0, jj = coordinatesss.length; j < jj; ++j) {n var ends = deflateCoordinatesArray(flatCoordinates, offset, coordinatesss, stride, endss);n endss = ends;n offset = ends[ends.length - 1];n }n endss.length = i;n return endss;n}n//# sourceMappingURL=deflate.js.map”,“/**n * @module ol/geom/flat/inflaten */n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @param {Array<import("../../coordinate.js").Coordinate>=} opt_coordinates Coordinates.n * @return {Array<import("../../coordinate.js").Coordinate>} Coordinates.n */nexport function inflateCoordinates(flatCoordinates, offset, end, stride, opt_coordinates) {n var coordinates = opt_coordinates !== undefined ? opt_coordinates : [];n var i = 0;n for (var j = offset; j < end; j += stride) {n coordinates = flatCoordinates.slice(j, j + stride);n }n coordinates.length = i;n return coordinates;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<number>} ends Ends.n * @param {number} stride Stride.n * @param {Array<Array<import("../../coordinate.js").Coordinate>>=} opt_coordinatess Coordinatess.n * @return {Array<Array<import("../../coordinate.js").Coordinate>>} Coordinatess.n */nexport function inflateCoordinatesArray(flatCoordinates, offset, ends, stride, opt_coordinatess) {n var coordinatess = opt_coordinatess !== undefined ? opt_coordinatess : [];n var i = 0;n for (var j = 0, jj = ends.length; j < jj; ++j) {n var end = ends;n coordinatess = inflateCoordinates(flatCoordinates, offset, end, stride, coordinatess);n offset = end;n }n coordinatess.length = i;n return coordinatess;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<Array<number>>} endss Endss.n * @param {number} stride Stride.n * @param {Array<Array<Array<import("../../coordinate.js").Coordinate>>>=} opt_coordinatesssn * Coordinatesss.n * @return {Array<Array<Array<import("../../coordinate.js").Coordinate>>>} Coordinatesss.n */nexport function inflateMultiCoordinatesArray(flatCoordinates, offset, endss, stride, opt_coordinatesss) {n var coordinatesss = opt_coordinatesss !== undefined ? opt_coordinatesss : [];n var i = 0;n for (var j = 0, jj = endss.length; j < jj; ++j) {n var ends = endss;n coordinatesss = inflateCoordinatesArray(flatCoordinates, offset, ends, stride, coordinatesss);n offset = ends[ends.length - 1];n }n coordinatesss.length = i;n return coordinatesss;n}n//# sourceMappingURL=inflate.js.map”,“/**n * @module ol/geom/flat/simplifyn */n// Based on simplify-js github.com/mourner/simplify-jsn// Copyright © 2012, Vladimir Agafonkinn// All rights reserved.n//n// Redistribution and use in source and binary forms, with or withoutn// 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 copyrightn// notice, this list of conditions and the following disclaimer in then// 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, THEn// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSEn// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BEn// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, ORn// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OFn// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESSn// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER INn// 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 THEn// POSSIBILITY OF SUCH DAMAGE.nimport { squaredSegmentDistance, squaredDistance } from '../../math.js';n/**n * @param {Array<number>} 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<number>=} opt_simplifiedFlatCoordinates Simplified flatn * coordinates.n * @return {Array<number>} Simplified line string.n */nexport function simplifyLineString(flatCoordinates, offset, end, stride, squaredTolerance, highQuality, opt_simplifiedFlatCoordinates) {n var simplifiedFlatCoordinates = opt_simplifiedFlatCoordinates !== undefined ?n opt_simplifiedFlatCoordinates : [];n if (!highQuality) {n end = radialDistance(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, 0);n flatCoordinates = simplifiedFlatCoordinates;n offset = 0;n stride = 2;n }n simplifiedFlatCoordinates.length = douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, 0);n return simplifiedFlatCoordinates;n}n/**n * @param {Array<number>} 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<number>} simplifiedFlatCoordinates Simplified flatn * 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 =n flatCoordinates;n simplifiedFlatCoordinates =n flatCoordinates[offset + 1];n }n return simplifiedOffset;n }n /** @type {Array<number>} */n var markers = new Array(n);n markers = 1;n markers[n - 1] = 1;n /** @type {Array<number>} */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;n var y1 = flatCoordinates[first + 1];n var x2 = flatCoordinates;n var y2 = flatCoordinates[last + 1];n for (var i = first + stride; i < last; i += stride) {n var x = flatCoordinates;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) {n simplifiedFlatCoordinates =n flatCoordinates[offset + i * stride];n simplifiedFlatCoordinates =n flatCoordinates[offset + i * stride + 1];n }n }n return simplifiedOffset;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<number>} ends Ends.n * @param {number} stride Stride.n * @param {number} squaredTolerance Squared tolerance.n * @param {Array<number>} simplifiedFlatCoordinates Simplified flatn * coordinates.n * @param {number} simplifiedOffset Simplified offset.n * @param {Array<number>} 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;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<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<Array<number>>} endss Endss.n * @param {number} stride Stride.n * @param {number} squaredTolerance Squared tolerance.n * @param {Array<number>} simplifiedFlatCoordinates Simplified flatn * coordinates.n * @param {number} simplifiedOffset Simplified offset.n * @param {Array<Array<number>>} 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;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<number>} 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<number>} simplifiedFlatCoordinates Simplified flatn * 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 returnn for (; offset < end; offset += stride) {n simplifiedFlatCoordinates = flatCoordinates;n simplifiedFlatCoordinates =n flatCoordinates[offset + 1];n }n return simplifiedOffset;n }n var x1 = flatCoordinates;n var y1 = flatCoordinates[offset + 1];n // copy first pointn simplifiedFlatCoordinates = x1;n simplifiedFlatCoordinates = y1;n var x2 = x1;n var y2 = y1;n for (offset += stride; offset < end; offset += stride) {n x2 = flatCoordinates;n y2 = flatCoordinates[offset + 1];n if (squaredDistance(x1, y1, x2, y2) > squaredTolerance) {n // copy point at offsetn simplifiedFlatCoordinates = x2;n simplifiedFlatCoordinates = y2;n x1 = x2;n y1 = y2;n }n }n if (x2 != x1 || y2 != y1) {n // copy last pointn simplifiedFlatCoordinates = x2;n simplifiedFlatCoordinates = 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 andn * consecutive duplicate coordinates are discarded. This effectively preservesn * topology as the simplification of any subsection of a line string isn * 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 linen * string independently in both polygons. This implementation uses a singlen * pass over the coordinates and eliminates intermediate collinear points.n * @param {Array<number>} 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<number>} simplifiedFlatCoordinates Simplified flatn * 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 emptyn if (offset == end) {n return simplifiedOffset;n }n // snap the first coordinate (P1)n var x1 = snap(flatCoordinates, tolerance);n var y1 = snap(flatCoordinates[offset + 1], tolerance);n offset += stride;n // add the first coordinate to the outputn simplifiedFlatCoordinates = x1;n simplifiedFlatCoordinates = y1;n // find the next coordinate that does not snap to the same value as the firstn // coordinate (P2)n var x2, y2;n do {n x2 = snap(flatCoordinates, 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 pointn // push the last snapped value anyway to ensure that the output containsn // at least two pointsn // FIXME should we really return at least two points anyway?n simplifiedFlatCoordinates = x2;n simplifiedFlatCoordinates = 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, tolerance);n var y3 = snap(flatCoordinates[offset + 1], tolerance);n offset += stride;n // skip P3 if it is equal to P2n if (x3 == x2 && y3 == y2) {n continue;n }n // calculate the delta between P1 and P2n var dx1 = x2 - x1;n var dy1 = y2 - y1;n // calculate the delta between P3 and P1n 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 fromn // P1 in the same direction then P2 is on the straight line between P1 andn // P3n 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 = P3n x2 = x3;n y2 = y3;n continue;n }n // either P1, P2, and P3 are not colinear, or they are colinear but P3 isn // between P3 and P1 or on the opposite half of the line to P2. add P2,n // and continue with P1 = P2 and P2 = P3n simplifiedFlatCoordinates = x2;n simplifiedFlatCoordinates = y2;n x1 = x2;n y1 = y2;n x2 = x3;n y2 = y3;n }n // add the last point (P2)n simplifiedFlatCoordinates = x2;n simplifiedFlatCoordinates = y2;n return simplifiedOffset;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<number>} ends Ends.n * @param {number} stride Stride.n * @param {number} tolerance Tolerance.n * @param {Array<number>} simplifiedFlatCoordinates Simplified flatn * coordinates.n * @param {number} simplifiedOffset Simplified offset.n * @param {Array<number>} 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;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<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<Array<number>>} endss Endss.n * @param {number} stride Stride.n * @param {number} tolerance Tolerance.n * @param {Array<number>} simplifiedFlatCoordinates Simplified flatn * coordinates.n * @param {number} simplifiedOffset Simplified offset.n * @param {Array<Array<number>>} 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;n var simplifiedEnds = [];n simplifiedOffset = quantizeArray(flatCoordinates, offset, ends, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds);n simplifiedEndss.push(simplifiedEnds);n offset = ends[ends.length - 1];n }n return simplifiedOffset;n}n//# sourceMappingURL=simplify.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/geom/LinearRingn */nimport { closestSquaredDistanceXY } from '../extent.js';nimport GeometryLayout from './GeometryLayout.js';nimport GeometryType from './GeometryType.js';nimport SimpleGeometry from './SimpleGeometry.js';nimport { linearRing as linearRingArea } from './flat/area.js';nimport { assignClosestPoint, maxSquaredDelta } from './flat/closest.js';nimport { deflateCoordinates } from './flat/deflate.js';nimport { inflateCoordinates } from './flat/inflate.js';nimport { douglasPeucker } from './flat/simplify.js';n/**n * @classdescn * Linear ring geometry. Only used as part of polygon; cannot be renderedn * on its own.n *n * @apin */nvar LinearRing = /** @class */ (function (_super) {n __extends(LinearRing, _super);n /**n * @param {Array<import("../coordinate.js").Coordinate>|Array<number>} coordinates Coordinates.n * For internal use, flat coordinates in combination with `opt_layout` are also accepted.n * @param {GeometryLayout=} opt_layout Layout.n */n function LinearRing(coordinates, opt_layout) {n var _this = _super.call(this) || this;n /**n * @privaten * @type {number}n */n this.maxDelta = -1;n /**n * @privaten * @type {number}n */n this.maxDeltaRevision = -1;n if (opt_layout !== undefined && !Array.isArray(coordinates)) {n _this.setFlatCoordinates(opt_layout, /** @type {Array<number>} */ (coordinates));n }n else {n _this.setCoordinates(/** @type {Array<import("../coordinate.js").Coordinate>} */ (coordinates), opt_layout);n }n return _this;n }n /**n * Make a complete copy of the geometry.n * @return {!LinearRing} Clone.n * @overriden * @apin */n LinearRing.prototype.clone = function () {n return new LinearRing(this.flatCoordinates.slice(), this.layout);n };n /**n * @inheritDocn */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 * @apin */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<import("../coordinate.js").Coordinate>} Coordinates.n * @overriden * @apin */n LinearRing.prototype.getCoordinates = function () {n return inflateCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);n };n /**n * @inheritDocn */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 * @inheritDocn * @apin */n LinearRing.prototype.getType = function () {n return GeometryType.LINEAR_RING;n };n /**n * @inheritDocn */n LinearRing.prototype.intersectsExtent = function (extent) {n return false;n };n /**n * Set the coordinates of the linear ring.n * @param {!Array<import("../coordinate.js").Coordinate>} coordinates Coordinates.n * @param {GeometryLayout=} opt_layout Layout.n * @overriden * @apin */n LinearRing.prototype.setCoordinates = function (coordinates, opt_layout) {n this.setLayout(opt_layout, coordinates, 1);n if (!this.flatCoordinates) {n this.flatCoordinates = [];n }n this.flatCoordinates.length = deflateCoordinates(this.flatCoordinates, 0, coordinates, this.stride);n this.changed();n };n return LinearRing;n}(SimpleGeometry));nexport default LinearRing;n//# sourceMappingURL=LinearRing.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/geom/Pointn */nimport { createOrUpdateFromCoordinate, containsXY } from '../extent.js';nimport GeometryType from './GeometryType.js';nimport SimpleGeometry from './SimpleGeometry.js';nimport { deflateCoordinate } from './flat/deflate.js';nimport { squaredDistance as squaredDx } from '../math.js';n/**n * @classdescn * Point geometry.n *n * @apin */nvar Point = /** @class */ (function (_super) {n __extends(Point, _super);n /**n * @param {import("../coordinate.js").Coordinate} coordinates Coordinates.n * @param {import("./GeometryLayout.js").default=} opt_layout Layout.n */n function Point(coordinates, opt_layout) {n var _this = _super.call(this) || this;n _this.setCoordinates(coordinates, opt_layout);n return _this;n }n /**n * Make a complete copy of the geometry.n * @return {!Point} Clone.n * @overriden * @apin */n Point.prototype.clone = function () {n var point = new Point(this.flatCoordinates.slice(), this.layout);n return point;n };n /**n * @inheritDocn */n Point.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {n var flatCoordinates = this.flatCoordinates;n var squaredDistance = squaredDx(x, y, flatCoordinates, flatCoordinates);n if (squaredDistance < minSquaredDistance) {n var stride = this.stride;n for (var i = 0; i < stride; ++i) {n closestPoint = flatCoordinates;n }n closestPoint.length = stride;n return squaredDistance;n }n else {n return minSquaredDistance;n }n };n /**n * Return the coordinate of the point.n * @return {import("../coordinate.js").Coordinate} Coordinates.n * @overriden * @apin */n Point.prototype.getCoordinates = function () {n return !this.flatCoordinates ? [] : this.flatCoordinates.slice();n };n /**n * @inheritDocn */n Point.prototype.computeExtent = function (extent) {n return createOrUpdateFromCoordinate(this.flatCoordinates, extent);n };n /**n * @inheritDocn * @apin */n Point.prototype.getType = function () {n return GeometryType.POINT;n };n /**n * @inheritDocn * @apin */n Point.prototype.intersectsExtent = function (extent) {n return containsXY(extent, this.flatCoordinates, this.flatCoordinates);n };n /**n * @inheritDocn * @apin */n Point.prototype.setCoordinates = function (coordinates, opt_layout) {n this.setLayout(opt_layout, coordinates, 0);n if (!this.flatCoordinates) {n this.flatCoordinates = [];n }n this.flatCoordinates.length = deflateCoordinate(this.flatCoordinates, 0, coordinates, this.stride);n this.changed();n };n return Point;n}(SimpleGeometry));nexport default Point;n//# sourceMappingURL=Point.js.map”,“/**n * @module ol/geom/flat/containsn */nimport { forEachCorner } from '../../extent.js';n/**n * @param {Array<number>} 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, coordinate);n });n return !outside;n}n/**n * @param {Array<number>} 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 // geomalgorithms.com/a03-_inclusion.htmln // Copyright 2000 softSurfer, 2012 Dan Sundayn // This code may be freely used and modified for any purposen // providing that this copyright notice is included with it.n // SoftSurfer makes no warranty for this code, and cannot be heldn // 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;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<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<number>} 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, 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, stride, x, y)) {n return false;n }n }n return true;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<Array<number>>} 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;n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {n return true;n }n offset = ends[ends.length - 1];n }n return false;n}n//# sourceMappingURL=contains.js.map”,“/**n * @module ol/geom/flat/interiorpointn */nimport { numberSafeCompareFunction } from '../../array.js';nimport { linearRingsContainsXY } from './contains.js';n/**n * Calculates a point that is likely to lie in the interior of the linear rings.n * Inspired by JTS's com.vividsolutions.jts.geom.Geometry#getInteriorPoint.n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<number>} ends Ends.n * @param {number} stride Stride.n * @param {Array<number>} flatCenters Flat centers.n * @param {number} flatCentersOffset Flat center offset.n * @param {Array<number>=} opt_dest Destination.n * @return {Array<number>} Destination point as XYM coordinate, where M is then * 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<number>} */n var intersections = [];n // Calculate intersections with the horizontal linen for (var r = 0, rr = ends.length; r < rr; ++r) {n var end = ends;n x1 = flatCoordinates[end - stride];n y1 = flatCoordinates[end - stride + 1];n for (i = offset; i < end; i += stride) {n x2 = flatCoordinates;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 pointn // inside the linear ring.n var pointX = NaN;n var maxSegmentLength = -Infinity;n intersections.sort(numberSafeCompareFunction);n x1 = intersections;n for (i = 1, ii = intersections.length; i < ii; ++i) {n x2 = intersections;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 linearn // ring. Use the center of the the linear ring's extent.n pointX = flatCenters;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<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<Array<number>>} endss Endss.n * @param {number} stride Stride.n * @param {Array<number>} flatCenters Flat centers.n * @return {Array<number>} Interior points as XYM coordinates, where M is then * 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;n interiorPoints = getInteriorPointOfArray(flatCoordinates, offset, ends, stride, flatCenters, 2 * i, interiorPoints);n offset = ends[ends.length - 1];n }n return interiorPoints;n}n//# sourceMappingURL=interiorpoint.js.map”,“/**n * @module ol/geom/flat/segmentsn */n/**n * This function calls `callback` for each segment of the flat coordinatesn * array. If the callback returns a truthy value the function returns thatn * value immediately. Otherwise the function returns `false`.n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @param {function(import("../../coordinate.js").Coordinate, import("../../coordinate.js").Coordinate): T} callback Functionn * called for each segment.n * @return {T|boolean} Value.n * @template Tn */nexport function forEach(flatCoordinates, offset, end, stride, callback) {n var point1 = [flatCoordinates, flatCoordinates[offset + 1]];n var point2 = [];n var ret;n for (; (offset + stride) < end; offset += stride) {n point2 = flatCoordinates[offset + stride];n point2 = flatCoordinates[offset + stride + 1];n ret = callback(point1, point2);n if (ret) {n return ret;n }n point1 = point2;n point1 = point2;n }n return false;n}n//# sourceMappingURL=segments.js.map”,“/**n * @module ol/geom/flat/intersectsextentn */nimport { containsExtent, createEmpty, extendFlatCoordinates, intersects, intersectsSegment } from '../../extent.js';nimport { linearRingContainsXY, linearRingContainsExtent } from './contains.js';nimport { forEach as forEachSegment } from './segments.js';n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @param {import("../../extent.js").Extent} extent Extent.n * @return {boolean} True if the geometry and the extent intersect.n */nexport function intersectsLineString(flatCoordinates, offset, end, stride, extent) {n var coordinatesExtent = extendFlatCoordinates(createEmpty(), flatCoordinates, offset, end, stride);n if (!intersects(extent, coordinatesExtent)) {n return false;n }n if (containsExtent(extent, coordinatesExtent)) {n return true;n }n if (coordinatesExtent >= extent &&n coordinatesExtent <= extent) {n return true;n }n if (coordinatesExtent >= extent &&n coordinatesExtent <= extent) {n return true;n }n return forEachSegment(flatCoordinates, offset, end, stride, n /**n * @param {import("../../coordinate.js").Coordinate} point1 Start point.n * @param {import("../../coordinate.js").Coordinate} point2 End point.n * @return {boolean} `true` if the segment and the extent intersect,n * `false` otherwise.n */n function (point1, point2) {n return intersectsSegment(extent, point1, point2);n });n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<number>} ends Ends.n * @param {number} stride Stride.n * @param {import("../../extent.js").Extent} extent Extent.n * @return {boolean} True if the geometry and the extent intersect.n */nexport function intersectsLineStringArray(flatCoordinates, offset, ends, stride, extent) {n for (var i = 0, ii = ends.length; i < ii; ++i) {n if (intersectsLineString(flatCoordinates, offset, ends, stride, extent)) {n return true;n }n offset = ends;n }n return false;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @param {import("../../extent.js").Extent} extent Extent.n * @return {boolean} True if the geometry and the extent intersect.n */nexport function intersectsLinearRing(flatCoordinates, offset, end, stride, extent) {n if (intersectsLineString(flatCoordinates, offset, end, stride, extent)) {n return true;n }n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent, extent)) {n return true;n }n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent, extent)) {n return true;n }n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent, extent)) {n return true;n }n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent, extent)) {n return true;n }n return false;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<number>} ends Ends.n * @param {number} stride Stride.n * @param {import("../../extent.js").Extent} extent Extent.n * @return {boolean} True if the geometry and the extent intersect.n */nexport function intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent) {n if (!intersectsLinearRing(flatCoordinates, offset, ends, stride, extent)) {n return false;n }n if (ends.length === 1) {n return true;n }n for (var i = 1, ii = ends.length; i < ii; ++i) {n if (linearRingContainsExtent(flatCoordinates, ends[i - 1], ends, stride, extent)) {n if (!intersectsLineString(flatCoordinates, ends[i - 1], ends, stride, extent)) {n return false;n }n }n }n return true;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<Array<number>>} endss Endss.n * @param {number} stride Stride.n * @param {import("../../extent.js").Extent} extent Extent.n * @return {boolean} True if the geometry and the extent intersect.n */nexport function intersectsLinearRingMultiArray(flatCoordinates, offset, endss, stride, extent) {n for (var i = 0, ii = endss.length; i < ii; ++i) {n var ends = endss;n if (intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent)) {n return true;n }n offset = ends[ends.length - 1];n }n return false;n}n//# sourceMappingURL=intersectsextent.js.map”,“/**n * @module ol/geom/flat/reversen */n/**n * @param {Array<number>} 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/orientn */nimport { coordinates as reverseCoordinates } from './reverse.js';n/**n * @param {Array<number>} 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 // tinyurl.com/clockwise-methodn // github.com/OSGeo/gdal/blob/trunk/gdal/ogr/ogrlinearring.cppn 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;n var y2 = flatCoordinates[offset + 1];n edge += (x2 - x1) * (y2 + y1);n x1 = x2;n y1 = y2;n }n return edge > 0;n}n/**n * Determines if linear rings are oriented. By default, left-hand orientationn * 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<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<number>} ends Array of end indexes.n * @param {number} stride Stride.n * @param {boolean=} opt_right Test for right-hand orientationn * (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;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 orientationn * 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<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<Array<number>>} endss Array of array of end indexes.n * @param {number} stride Stride.n * @param {boolean=} opt_right Test for right-hand orientationn * (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;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, ringsn * are oriented following the left-hand rule (clockwise for exterior andn * counter-clockwise for interior rings). To orient according to then * right-hand rule, use the `opt_right` argument.n *n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<number>} 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;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, ringsn * are oriented following the left-hand rule (clockwise for exterior andn * counter-clockwise for interior rings). To orient according to then * right-hand rule, use the `opt_right` argument.n *n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<Array<number>>} 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, stride, opt_right);n }n return offset;n}n//# sourceMappingURL=orient.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/geom/Polygonn */nimport { extend } from '../array.js';nimport { closestSquaredDistanceXY, getCenter } from '../extent.js';nimport GeometryLayout from './GeometryLayout.js';nimport GeometryType from './GeometryType.js';nimport LinearRing from './LinearRing.js';nimport Point from './Point.js';nimport SimpleGeometry from './SimpleGeometry.js';nimport { offset as sphereOffset } from '../sphere.js';nimport { linearRings as linearRingsArea } from './flat/area.js';nimport { assignClosestArrayPoint, arrayMaxSquaredDelta } from './flat/closest.js';nimport { linearRingsContainsXY } from './flat/contains.js';nimport { deflateCoordinatesArray } from './flat/deflate.js';nimport { inflateCoordinatesArray } from './flat/inflate.js';nimport { getInteriorPointOfArray } from './flat/interiorpoint.js';nimport { intersectsLinearRingArray } from './flat/intersectsextent.js';nimport { linearRingsAreOriented, orientLinearRings } from './flat/orient.js';nimport { quantizeArray } from './flat/simplify.js';nimport { modulo } from '../math.js';n/**n * @classdescn * Polygon geometry.n *n * @apin */nvar Polygon = /** @class */ (function (_super) {n __extends(Polygon, _super);n /**n * @param {!Array<Array<import("../coordinate.js").Coordinate>>|!Array<number>} coordinatesn * Array of linear rings that define the polygon. The first linear ring of then * array defines the outer-boundary or surface of the polygon. Each subsequentn * linear ring defines a hole in the surface of the polygon. A linear ring isn * an array of vertices' coordinates where the first coordinate and the last aren * equivalent. (For internal use, flat coordinates in combination withn * `opt_layout` and `opt_ends` are also accepted.)n * @param {GeometryLayout=} opt_layout Layout.n * @param {Array<number>=} 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<number>}n * @privaten */n this.ends = [];n /**n * @privaten * @type {number}n */n this.flatInteriorPointRevision = -1;n /**n * @privaten * @type {import("../coordinate.js").Coordinate}n */n this.flatInteriorPoint = null;n /**n * @privaten * @type {number}n */n this.maxDelta = -1;n /**n * @privaten * @type {number}n */n this.maxDeltaRevision = -1;n /**n * @privaten * @type {number}n */n this.orientedRevision = -1;n /**n * @privaten * @type {Array<number>}n */n this.orientedFlatCoordinates = null;n if (opt_layout !== undefined && opt_ends) {n _this.setFlatCoordinates(opt_layout, /** @type {Array<number>} */ (coordinates));n this.ends = opt_ends;n }n else {n _this.setCoordinates(/** @type {Array<Array<import("../coordinate.js").Coordinate>>} */ (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 * @apin */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 * @overriden * @apin */n Polygon.prototype.clone = function () {n return new Polygon(this.flatCoordinates.slice(), this.layout, this.ends_.slice());n };n /**n * @inheritDocn */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 * @inheritDocn */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 * @apin */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 structuren * of a GeoJSON coordinate array for polygons.n *n * @param {boolean=} opt_right Orient coordinates according to the right-handn * rule (counter-clockwise for exterior and clockwise for interior rings).n * If `false`, coordinates will be oriented according to the left-hand rulen * (clockwise for exterior and counter-clockwise for interior rings).n * By default, coordinate orientation will depend on how the geometry wasn * constructed.n * @return {Array<Array<import("../coordinate.js").Coordinate>>} Coordinates.n * @overriden * @apin */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<number>} Ends.n */n Polygon.prototype.getEnds = function () {n return this.ends_;n };n /**n * @return {Array<number>} 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 then * length of the horizontal intersection that the point belongs to.n * @apin */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 exteriorn * ring and any interior rings.n *n * @return {number} Number of rings.n * @apin */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 then * given index is out of range.n * The exterior linear ring is available at index `0` and the interior ringsn * at index `1` and beyond.n *n * @param {number} index Index.n * @return {LinearRing} Linear ring.n * @apin */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_), this.layout);n };n /**n * Return the linear rings of the polygon.n * @return {Array<LinearRing>} Linear rings.n * @apin */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;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<number>} Oriented flat coordinates.n */n Polygon.prototype.getOrientedFlatCoordinates = function () {n if (this.orientedRevision_ != this.getRevision()) {n var flatCoordinates = this.flatCoordinates;n if (linearRingsAreOriented(flatCoordinates, 0, this.ends_, this.stride)) {n this.orientedFlatCoordinates_ = flatCoordinates;n }n else {n this.orientedFlatCoordinates_ = flatCoordinates.slice();n this.orientedFlatCoordinates_.length =n orientLinearRings(this.orientedFlatCoordinates_, 0, this.ends_, this.stride);n }n this.orientedRevision_ = this.getRevision();n }n return this.orientedFlatCoordinates_;n };n /**n * @inheritDocn */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 * @inheritDocn * @apin */n Polygon.prototype.getType = function () {n return GeometryType.POLYGON;n };n /**n * @inheritDocn * @apin */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<Array<import("../coordinate.js").Coordinate>>} coordinates Coordinates.n * @param {GeometryLayout=} opt_layout Layout.n * @overriden * @apin */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 ton * the polygon vertices.n * @param {number=} opt_n Optional number of vertices for the resultingn * polygon. Default is `32`.n * @param {number=} opt_sphereRadius Optional radius for the sphere (defaults ton * the Earth's mean radius using the WGS84 ellipsoid).n * @return {Polygon} The "circular" polygon.n * @apin */nexport function circular(center, radius, opt_n, opt_sphereRadius) {n var n = opt_n ? opt_n : 32;n /** @type {Array<number>} */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, flatCoordinates);n return new Polygon(flatCoordinates, GeometryLayout.XY, [flatCoordinates.length]);n}n/**n * Create a polygon from an extent. The layout used is `XY`.n * @param {import("../extent.js").Extent} extent The extent.n * @return {Polygon} The polygon.n * @apin */nexport function fromExtent(extent) {n var minX = extent;n var minY = extent;n var maxX = extent;n var maxY = extent;n var flatCoordinates = [minX, minY, minX, maxY, maxX, maxY, maxX, minY, minX, minY];n return new Polygon(flatCoordinates, GeometryLayout.XY, [flatCoordinates.length]);n}n/**n * Create a regular polygon from a circle.n * @param {import("./Circle.js").default} circle Circle geometry.n * @param {number=} opt_sides Number of sides of the polygon. Default is 32.n * @param {number=} opt_angle Start angle for the first vertex of the polygon inn * radians. Default is 0.n * @return {Polygon} Polygon geometry.n * @apin */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 = 0;n flatCoordinates[i + 1] = 0;n for (var j = 2; j < stride; j++) {n flatCoordinates[i + j] = center;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 inn * radians. Default is 0.n */nexport function makeRegular(polygon, center, radius, opt_angle) {n var flatCoordinates = polygon.getFlatCoordinates();n var stride = polygon.getStride();n var sides = flatCoordinates.length / stride - 1;n var startAngle = opt_angle ? opt_angle : 0;n for (var i = 0; i <= sides; ++i) {n var offset = i * stride;n var angle = startAngle + (modulo(i, sides) * 2 * Math.PI / sides);n flatCoordinates = center + (radius * Math.cos(angle));n flatCoordinates[offset + 1] = center + (radius * Math.sin(angle));n }n polygon.changed();n}n//# sourceMappingURL=Polygon.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/Geolocationn */nimport BaseObject, { getChangeEventType } from './Object.js';nimport BaseEvent from './events/Event.js';nimport EventType from './events/EventType.js';nimport { circular as circularPolygon } from './geom/Polygon.js';nimport { toRadians } from './math.js';nimport { get as getProjection, getTransformFromProjections, identityTransform } from './proj.js';n/**n * @enum {string}n */nvar Property = {n ACCURACY: 'accuracy',n ACCURACY_GEOMETRY: 'accuracyGeometry',n ALTITUDE: 'altitude',n ALTITUDE_ACCURACY: 'altitudeAccuracy',n HEADING: 'heading',n POSITION: 'position',n PROJECTION: 'projection',n SPEED: 'speed',n TRACKING: 'tracking',n TRACKING_OPTIONS: 'trackingOptions'n};n/**n * @classdescn * Events emitted on Geolocation error.n */nvar GeolocationError = /** @class */ (function (_super) {n __extends(GeolocationError, _super);n /**n * @param {PositionError} error error object.n */n function GeolocationError(error) {n var _this = _super.call(this, EventType.ERROR) || this;n /**n * @type {number}n */n _this.code = error.code;n /**n * @type {string}n */n _this.message = error.message;n return _this;n }n return GeolocationError;n}(BaseEvent));n/**n * @typedef {Object} Optionsn * @property {boolean} [tracking=false] Start Tracking right aftern * instantiation.n * @property {PositionOptions} [trackingOptions] Tracking options.n * See www.w3.org/TR/geolocation-API/#position_options_interface.n * @property {import("./proj.js").ProjectionLike} [projection] The projection the positionn * is reported in.n */n/**n * @classdescn * Helper class for providing HTML5 Geolocation capabilities.n * The [Geolocation API](www.w3.org/TR/geolocation-API/)n * is used to locate a user's position.n *n * To get notified of position changes, register a listener for the genericn * `change` event on your instance of {@link module:ol/Geolocation~Geolocation}.n *n * Example:n *n * var geolocation = new Geolocation({n * // take the projection to use from the map's viewn * projection: view.getProjection()n * });n * // listen to changes in positionn * geolocation.on('change', function(evt) {n * window.console.log(geolocation.getPosition());n * });n *n * @fires module:ol/events/Event~BaseEvent#event:errorn * @apin */nvar Geolocation = /** @class */ (function (_super) {n __extends(Geolocation, _super);n /**n * @param {Options=} opt_options Options.n */n function Geolocation(opt_options) {n var _this = _super.call(this) || this;n var options = opt_options || {};n /**n * The unprojected (EPSG:4326) device position.n * @privaten * @type {?import("./coordinate.js").Coordinate}n */n this.position = null;n /**n * @privaten * @type {import("./proj.js").TransformFunction}n */n this.transform = identityTransform;n /**n * @privaten * @type {number|undefined}n */n this.watchId = undefined;n _this.addEventListener(getChangeEventType(Property.PROJECTION), this.handleProjectionChanged);n _this.addEventListener(getChangeEventType(Property.TRACKING), this.handleTrackingChanged);n if (options.projection !== undefined) {n _this.setProjection(options.projection);n }n if (options.trackingOptions !== undefined) {n _this.setTrackingOptions(options.trackingOptions);n }n _this.setTracking(options.tracking !== undefined ? options.tracking : false);n return _this;n }n /**n * @inheritDocn */n Geolocation.prototype.disposeInternal = function () {n this.setTracking(false);n _super.prototype.disposeInternal.call(this);n };n /**n * @privaten */n Geolocation.prototype.handleProjectionChanged_ = function () {n var projection = this.getProjection();n if (projection) {n this.transform_ = getTransformFromProjections(getProjection('EPSG:4326'), projection);n if (this.position_) {n this.set(Property.POSITION, this.transform_(this.position_));n }n }n };n /**n * @privaten */n Geolocation.prototype.handleTrackingChanged_ = function () {n if ('geolocation' in navigator) {n var tracking = this.getTracking();n if (tracking && this.watchId_ === undefined) {n this.watchId_ = navigator.geolocation.watchPosition(this.positionChange_.bind(this), this.positionError_.bind(this), this.getTrackingOptions());n }n else if (!tracking && this.watchId_ !== undefined) {n navigator.geolocation.clearWatch(this.watchId_);n this.watchId_ = undefined;n }n }n };n /**n * @privaten * @param {Position} position position event.n */n Geolocation.prototype.positionChange_ = function (position) {n var coords = position.coords;n this.set(Property.ACCURACY, coords.accuracy);n this.set(Property.ALTITUDE, coords.altitude === null ? undefined : coords.altitude);n this.set(Property.ALTITUDE_ACCURACY, coords.altitudeAccuracy === null ?n undefined : coords.altitudeAccuracy);n this.set(Property.HEADING, coords.heading === null ?n undefined : toRadians(coords.heading));n if (!this.position_) {n this.position_ = [coords.longitude, coords.latitude];n }n else {n this.position_ = coords.longitude;n this.position_ = coords.latitude;n }n var projectedPosition = this.transform_(this.position_);n this.set(Property.POSITION, projectedPosition);n this.set(Property.SPEED, coords.speed === null ? undefined : coords.speed);n var geometry = circularPolygon(this.position_, coords.accuracy);n geometry.applyTransform(this.transform_);n this.set(Property.ACCURACY_GEOMETRY, geometry);n this.changed();n };n /**n * @privaten * @param {PositionError} error error object.n */n Geolocation.prototype.positionError_ = function (error) {n this.setTracking(false);n this.dispatchEvent(new GeolocationError(error));n };n /**n * Get the accuracy of the position in meters.n * @return {number|undefined} The accuracy of the position measurement inn * meters.n * @observablen * @apin */n Geolocation.prototype.getAccuracy = function () {n return /** @type {number|undefined} */ (this.get(Property.ACCURACY));n };n /**n * Get a geometry of the position accuracy.n * @return {?import("./geom/Polygon.js").default} A geometry of the position accuracy.n * @observablen * @apin */n Geolocation.prototype.getAccuracyGeometry = function () {n return (n /** @type {?import("./geom/Polygon.js").default} */ (this.get(Property.ACCURACY_GEOMETRY) || null));n };n /**n * Get the altitude associated with the position.n * @return {number|undefined} The altitude of the position in meters above meann * sea level.n * @observablen * @apin */n Geolocation.prototype.getAltitude = function () {n return /** @type {number|undefined} */ (this.get(Property.ALTITUDE));n };n /**n * Get the altitude accuracy of the position.n * @return {number|undefined} The accuracy of the altitude measurement inn * meters.n * @observablen * @apin */n Geolocation.prototype.getAltitudeAccuracy = function () {n return /** @type {number|undefined} */ (this.get(Property.ALTITUDE_ACCURACY));n };n /**n * Get the heading as radians clockwise from North.n * Note: depending on the browser, the heading is only defined if the `enableHighAccuracy`n * is set to `true` in the tracking options.n * @return {number|undefined} The heading of the device in radians from north.n * @observablen * @apin */n Geolocation.prototype.getHeading = function () {n return /** @type {number|undefined} */ (this.get(Property.HEADING));n };n /**n * Get the position of the device.n * @return {import("./coordinate.js").Coordinate|undefined} The current position of the device reportedn * in the current projection.n * @observablen * @apin */n Geolocation.prototype.getPosition = function () {n return (n /** @type {import("./coordinate.js").Coordinate|undefined} */ (this.get(Property.POSITION)));n };n /**n * Get the projection associated with the position.n * @return {import("./proj/Projection.js").default|undefined} The projection the position isn * reported in.n * @observablen * @apin */n Geolocation.prototype.getProjection = function () {n return (n /** @type {import("./proj/Projection.js").default|undefined} */ (this.get(Property.PROJECTION)));n };n /**n * Get the speed in meters per second.n * @return {number|undefined} The instantaneous speed of the device in metersn * per second.n * @observablen * @apin */n Geolocation.prototype.getSpeed = function () {n return /** @type {number|undefined} */ (this.get(Property.SPEED));n };n /**n * Determine if the device location is being tracked.n * @return {boolean} The device location is being tracked.n * @observablen * @apin */n Geolocation.prototype.getTracking = function () {n return /** @type {boolean} */ (this.get(Property.TRACKING));n };n /**n * Get the tracking options.n * See www.w3.org/TR/geolocation-API/#position-options.n * @return {PositionOptions|undefined} PositionOptions as defined byn * the [HTML5 Geolocation specn * ](www.w3.org/TR/geolocation-API/#position_options_interface).n * @observablen * @apin */n Geolocation.prototype.getTrackingOptions = function () {n return /** @type {PositionOptions|undefined} */ (this.get(Property.TRACKING_OPTIONS));n };n /**n * Set the projection to use for transforming the coordinates.n * @param {import("./proj.js").ProjectionLike} projection The projection the position isn * reported in.n * @observablen * @apin */n Geolocation.prototype.setProjection = function (projection) {n this.set(Property.PROJECTION, getProjection(projection));n };n /**n * Enable or disable tracking.n * @param {boolean} tracking Enable tracking.n * @observablen * @apin */n Geolocation.prototype.setTracking = function (tracking) {n this.set(Property.TRACKING, tracking);n };n /**n * Set the tracking options.n * See www.w3.org/TR/geolocation-API/#position-options.n * @param {PositionOptions} options PositionOptions as defined by then * [HTML5 Geolocation specn * ](www.w3.org/TR/geolocation-API/#position_options_interface).n * @observablen * @apin */n Geolocation.prototype.setTrackingOptions = function (options) {n this.set(Property.TRACKING_OPTIONS, options);n };n return Geolocation;n}(BaseObject));nexport default Geolocation;n//# sourceMappingURL=Geolocation.js.map”,“/**n * @module ol/Kineticn */n/**n * @classdescn * Implementation of inertial deceleration for map movement.n *n * @apin */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 kineticn * initial values (milliseconds).n */n function Kinetic(decay, minVelocity, delay) {n /**n * @privaten * @type {number}n */n this.decay_ = decay;n /**n * @privaten * @type {number}n */n this.minVelocity_ = minVelocity;n /**n * @privaten * @type {number}n */n this.delay_ = delay;n /**n * @privaten * @type {Array<number>}n */n this.points_ = [];n /**n * @privaten * @type {number}n */n this.angle_ = 0;n /**n * @privaten * @type {number}n */n this.initialVelocity_ = 0;n }n /**n * FIXME empty description for jsdocn */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 elementsn // 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 stoppedn // panning before releasing the mapn return false;n }n // get the first point which still falls into the delay timen 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 framen // (1/60s) to compute sane displacement valuesn if (duration < 1000 / 60) {n return false;n }n var dx = this.points_ - this.points_;n var dy = this.points_[lastIndex + 1] - this.points_[firstIndex + 1];n this.angle_ = Math.atan2(dy, dx);n this.initialVelocity_ = Math.sqrt(dx * dx + dy * dy) / duration;n return this.initialVelocity_ > this.minVelocity_;n };n /**n * @return {number} Total distance travelled (pixels).n */n Kinetic.prototype.getDistance = function () {n return (this.minVelocity_ - this.initialVelocity_) / this.decay_;n };n /**n * @return {number} Angle of the kinetic panning animation (radians).n */n Kinetic.prototype.getAngle = function () {n return this.angle_;n };n return Kinetic;n}());nexport default Kinetic;n//# sourceMappingURL=Kinetic.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/MapEventn */nimport Event from './events/Event.js';n/**n * @classdescn * Events emitted as map events are instances of this type.n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map event.n */nvar MapEvent = /** @class */ (function (_super) {n __extends(MapEvent, _super);n /**n * @param {string} type Event type.n * @param {import("./PluggableMap.js").default} map Map.n * @param {?import("./PluggableMap.js").FrameState=} opt_frameState Frame state.n */n function MapEvent(type, map, opt_frameState) {n var _this = _super.call(this, type) || this;n /**n * The map where the event occurred.n * @type {import("./PluggableMap.js").default}n * @apin */n _this.map = map;n /**n * The frame state at the time of the event.n * @type {?import("./PluggableMap.js").FrameState}n * @apin */n _this.frameState = opt_frameState !== undefined ? opt_frameState : null;n return _this;n }n return MapEvent;n}(Event));nexport default MapEvent;n//# sourceMappingURL=MapEvent.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/MapBrowserEventn */nimport MapEvent from './MapEvent.js';n/**n * @classdescn * Events emitted as map browser events are instances of this type.n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map browser event.n */nvar MapBrowserEvent = /** @class */ (function (_super) {n __extends(MapBrowserEvent, _super);n /**n * @param {string} type Event type.n * @param {import("./PluggableMap.js").default} map Map.n * @param {Event} browserEvent Browser event.n * @param {boolean=} opt_dragging Is the map currently being dragged?n * @param {?import("./PluggableMap.js").FrameState=} opt_frameState Frame state.n */n function MapBrowserEvent(type, map, browserEvent, opt_dragging, opt_frameState) {n var _this = _super.call(this, type, map, opt_frameState) || this;n /**n * The original browser event.n * @constn * @type {Event}n * @apin */n _this.originalEvent = browserEvent;n /**n * The map pixel relative to the viewport corresponding to the original browser event.n * @type {?import("./pixel.js").Pixel}n */n this.pixel = null;n /**n * The coordinate in the user projection corresponding to the original browser event.n * @type {?import("./coordinate.js").Coordinate}n */n this.coordinate = null;n /**n * Indicates if the map is currently being dragged. Only set forn * `POINTERDRAG` and `POINTERMOVE` events. Default is `false`.n *n * @type {boolean}n * @apin */n _this.dragging = opt_dragging !== undefined ? opt_dragging : false;n return _this;n }n Object.defineProperty(MapBrowserEvent.prototype, "pixel", {n /**n * The map pixel relative to the viewport corresponding to the original browser event.n * @type {import("./pixel.js").Pixel}n * @apin */n get: function () {n if (!this.pixel_) {n this.pixel_ = this.map.getEventPixel(this.originalEvent);n }n return this.pixel_;n },n set: function (pixel) {n this.pixel_ = pixel;n },n enumerable: true,n configurable: truen });n Object.defineProperty(MapBrowserEvent.prototype, "coordinate", {n /**n * The coordinate corresponding to the original browser event. This will be in the usern * projection if one is set. Otherwise it will be in the view projection.n * @type {import("./coordinate.js").Coordinate}n * @apin */n get: function () {n if (!this.coordinate_) {n this.coordinate_ = this.map.getCoordinateFromPixel(this.pixel);n }n return this.coordinate_;n },n set: function (coordinate) {n this.coordinate_ = coordinate;n },n enumerable: true,n configurable: truen });n /**n * Prevents the default browser action.n * See developer.mozilla.org/en-US/docs/Web/API/event.preventDefault.n * @overriden * @apin */n MapBrowserEvent.prototype.preventDefault = function () {n _super.prototype.preventDefault.call(this);n this.originalEvent.preventDefault();n };n /**n * Prevents further propagation of the current event.n * See developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation.n * @overriden * @apin */n MapBrowserEvent.prototype.stopPropagation = function () {n _super.prototype.stopPropagation.call(this);n this.originalEvent.stopPropagation();n };n return MapBrowserEvent;n}(MapEvent));nexport default MapBrowserEvent;n//# sourceMappingURL=MapBrowserEvent.js.map”,“/**n * @module ol/hasn */nvar ua = typeof navigator !== 'undefined' ?n navigator.userAgent.toLowerCase() : '';n/**n * User agent string says we are dealing with Firefox as browser.n * @type {boolean}n */nexport var FIREFOX = ua.indexOf('firefox') !== -1;n/**n * User agent string says we are dealing with Safari as browser.n * @type {boolean}n */nexport var SAFARI = ua.indexOf('safari') !== -1 && ua.indexOf('chrom') == -1;n/**n * User agent string says we are dealing with a WebKit engine.n * @type {boolean}n */nexport var WEBKIT = ua.indexOf('webkit') !== -1 && ua.indexOf('edge') == -1;n/**n * User agent string says we are dealing with a Mac as platform.n * @type {boolean}n */nexport var MAC = ua.indexOf('macintosh') !== -1;n/**n * The ratio between physical pixels and device-independent pixelsn * (dips) on the device (`window.devicePixelRatio`).n * @constn * @type {number}n * @apin */nexport var DEVICE_PIXEL_RATIO = window.devicePixelRatio || 1;n/**n * Image.prototype.decode() is supported.n * @type {boolean}n */nexport var IMAGE_DECODE = typeof Image !== 'undefined' && Image.prototype.decode;n//# sourceMappingURL=has.js.map”,“/**n * @module ol/MapBrowserEventTypen */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 thisn * event is delayed by 250 ms to ensure that it is not a double click.n * @event module:ol/MapBrowserEvent~MapBrowserEvent#singleclickn * @apin */n SINGLECLICK: 'singleclick',n /**n * A click with no dragging. A double click will fire two of this.n * @event module:ol/MapBrowserEvent~MapBrowserEvent#clickn * @apin */n CLICK: EventType.CLICK,n /**n * A true double click, with no dragging.n * @event module:ol/MapBrowserEvent~MapBrowserEvent#dblclickn * @apin */n DBLCLICK: EventType.DBLCLICK,n /**n * Triggered when a pointer is dragged.n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointerdragn * @apin */n POINTERDRAG: 'pointerdrag',n /**n * Triggered when a pointer is moved. Note that on touch devices this isn * triggered when the map is panned, so is not the same as mousemove.n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointermoven * @apin */n POINTERMOVE: 'pointermove',n POINTERDOWN: 'pointerdown',n POINTERUP: 'pointerup',n POINTEROVER: 'pointerover',n POINTEROUT: 'pointerout',n POINTERENTER: 'pointerenter',n POINTERLEAVE: 'pointerleave',n POINTERCANCEL: 'pointercancel'n};n//# sourceMappingURL=MapBrowserEventType.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/MapBrowserPointerEventn */nimport MapBrowserEvent from './MapBrowserEvent.js';nvar MapBrowserPointerEvent = /** @class */ (function (_super) {n __extends(MapBrowserPointerEvent, _super);n /**n * @param {string} type Event type.n * @param {import("./PluggableMap.js").default} map Map.n * @param {PointerEvent} pointerEvent Pointer event.n * @param {boolean=} opt_dragging Is the map currently being dragged?n * @param {?import("./PluggableMap.js").FrameState=} opt_frameState Frame state.n */n function MapBrowserPointerEvent(type, map, pointerEvent, opt_dragging, opt_frameState) {n var _this = _super.call(this, type, map, pointerEvent, opt_dragging, opt_frameState) || this;n /**n * @constn * @type {PointerEvent}n */n _this.pointerEvent = pointerEvent;n return _this;n }n return MapBrowserPointerEvent;n}(MapBrowserEvent));nexport default MapBrowserPointerEvent;n//# sourceMappingURL=MapBrowserPointerEvent.js.map”,“/**n * @module ol/pointer/EventTypen */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/MapBrowserEventHandlern */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport '@openlayers/pepjs';nimport { DEVICE_PIXEL_RATIO } from './has.js';nimport MapBrowserEventType from './MapBrowserEventType.js';nimport MapBrowserPointerEvent from './MapBrowserPointerEvent.js';nimport { listen, unlistenByKey } from './events.js';nimport EventTarget from './events/Target.js';nimport PointerEventType from './pointer/EventType.js';nvar MapBrowserEventHandler = /** @class */ (function (_super) {n __extends(MapBrowserEventHandler, _super);n /**n * @param {import("./PluggableMap.js").default} map The map with the viewport to listen to events on.n * @param {number=} moveTolerance The minimal distance the pointer must travel to trigger a move.n */n function MapBrowserEventHandler(map, moveTolerance) {n var _this = _super.call(this, map) || this;n /**n * This is the element that we will listen to the real events on.n * @type {import("./PluggableMap.js").default}n * @privaten */n this.map = map;n /**n * @type {any}n * @privaten */n this.clickTimeoutId;n /**n * @type {boolean}n * @privaten */n this.dragging = false;n /**n * @type {!Array<import("./events.js").EventsKey>}n * @privaten */n this.dragListenerKeys = [];n /**n * @type {number}n * @privaten */n this.moveTolerance = moveTolerance ?n moveTolerance * DEVICE_PIXEL_RATIO : DEVICE_PIXEL_RATIO;n /**n * The most recent "down" type event (or null if none have occurred).n * Set on pointerdown.n * @type {PointerEvent}n * @privaten */n this.down = null;n var element = this.map.getViewport();n /**n * @type {number}n * @privaten */n this.activePointers = 0;n /**n * @type {!Object<number, boolean>}n * @privaten */n this.trackedTouches = {};n this.element = element;n /**n * @type {?import("./events.js").EventsKey}n * @privaten */n this.pointerdownListenerKey = listen(element, PointerEventType.POINTERDOWN, this.handlePointerDown, _this);n /**n * @type {?import("./events.js").EventsKey}n * @privaten */n this.relayedListenerKey = listen(element, PointerEventType.POINTERMOVE, this.relayEvent, _this);n return _this;n }n /**n * @param {PointerEvent} pointerEvent Pointern * event.n * @privaten */n MapBrowserEventHandler.prototype.emulateClick_ = function (pointerEvent) {n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.CLICK, this.map_, pointerEvent);n this.dispatchEvent(newEvent);n if (this.clickTimeoutId_ !== undefined) {n // double-clickn clearTimeout(this.clickTimeoutId_);n this.clickTimeoutId_ = undefined;n newEvent = new MapBrowserPointerEvent(MapBrowserEventType.DBLCLICK, this.map_, pointerEvent);n this.dispatchEvent(newEvent);n }n else {n // clickn this.clickTimeoutId_ = setTimeout(function () {n this.clickTimeoutId_ = undefined;n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.SINGLECLICK, this.map_, pointerEvent);n this.dispatchEvent(newEvent);n }.bind(this), 250);n }n };n /**n * Keeps track on how many pointers are currently active.n *n * @param {PointerEvent} pointerEvent Pointern * event.n * @privaten */n MapBrowserEventHandler.prototype.updateActivePointers_ = function (pointerEvent) {n var event = pointerEvent;n if (event.type == MapBrowserEventType.POINTERUP ||n event.type == MapBrowserEventType.POINTERCANCEL) {n delete this.trackedTouches_;n }n else if (event.type == MapBrowserEventType.POINTERDOWN) {n this.trackedTouches_ = true;n }n this.activePointers_ = Object.keys(this.trackedTouches_).length;n };n /**n * @param {PointerEvent} pointerEvent Pointern * event.n * @privaten */n MapBrowserEventHandler.prototype.handlePointerUp_ = function (pointerEvent) {n this.updateActivePointers_(pointerEvent);n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.POINTERUP, this.map_, pointerEvent);n this.dispatchEvent(newEvent);n // We emulate click events on left mouse button click, touch contact, and penn // contact. isMouseActionButton returns true in these cases (evt.button is setn // to 0).n // See www.w3.org/TR/pointerevents/#button-statesn // We only fire click, singleclick, and doubleclick if nobody has calledn // event.stopPropagation() or event.preventDefault().n if (!newEvent.propagationStopped && !this.dragging_ && this.isMouseActionButton_(pointerEvent)) {n this.emulateClick_(this.down_);n }n if (this.activePointers_ === 0) {n this.dragListenerKeys_.forEach(unlistenByKey);n this.dragListenerKeys_.length = 0;n this.dragging_ = false;n this.down_ = null;n }n };n /**n * @param {PointerEvent} pointerEvent Pointern * event.n * @return {boolean} If the left mouse button was pressed.n * @privaten */n MapBrowserEventHandler.prototype.isMouseActionButton_ = function (pointerEvent) {n return pointerEvent.button === 0;n };n /**n * @param {PointerEvent} pointerEvent Pointern * event.n * @privaten */n MapBrowserEventHandler.prototype.handlePointerDown_ = function (pointerEvent) {n this.updateActivePointers_(pointerEvent);n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.POINTERDOWN, this.map_, pointerEvent);n this.dispatchEvent(newEvent);n this.down_ = pointerEvent;n if (this.dragListenerKeys_.length === 0) {n this.dragListenerKeys_.push(listen(document, MapBrowserEventType.POINTERMOVE, this.handlePointerMove_, this), listen(document, MapBrowserEventType.POINTERUP, this.handlePointerUp_, this), n /* Note that the listener for `pointercancel is set up onn * `pointerEventHandler_` and not `documentPointerEventHandler_` liken * 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 an * `touchstart`. Now, let's say a first `touchstart` is registered onn * `pointerEventHandler_`. The `documentPointerEventHandler_` is set up.n * But `documentPointerEventHandler_` doesn't know about the firstn * `touchstart`. If there is no `touchend` for the `touchstart`, we cann * only receive a `touchcancel` from `pointerEventHandler_`, because it isn * only registered there.n */n listen(this.element_, MapBrowserEventType.POINTERCANCEL, this.handlePointerUp_, this));n }n };n /**n * @param {PointerEvent} pointerEvent Pointern * event.n * @privaten */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 pointern // moved a significant distance.n if (this.isMoving_(pointerEvent)) {n this.dragging_ = true;n var newEvent = new MapBrowserPointerEvent(MapBrowserEventType.POINTERDRAG, this.map_, pointerEvent, this.dragging_);n this.dispatchEvent(newEvent);n }n };n /**n * Wrap and relay a pointer event. Note that this requires that the typen * string for the MapBrowserPointerEvent matches the PointerEvent type.n * @param {PointerEvent} pointerEvent Pointern * event.n * @privaten */n MapBrowserEventHandler.prototype.relayEvent_ = function (pointerEvent) {n var dragging = !!(this.down_ && this.isMoving_(pointerEvent));n this.dispatchEvent(new MapBrowserPointerEvent(pointerEvent.type, this.map_, pointerEvent, dragging));n };n /**n * @param {PointerEvent} pointerEvent Pointern * event.n * @return {boolean} Is moving.n * @privaten */n MapBrowserEventHandler.prototype.isMoving_ = function (pointerEvent) {n return this.dragging_ ||n Math.abs(pointerEvent.clientX - this.down_.clientX) > this.moveTolerance_ ||n Math.abs(pointerEvent.clientY - this.down_.clientY) > this.moveTolerance_;n };n /**n * @inheritDocn */n MapBrowserEventHandler.prototype.disposeInternal = function () {n if (this.relayedListenerKey_) {n unlistenByKey(this.relayedListenerKey_);n this.relayedListenerKey_ = null;n }n if (this.pointerdownListenerKey_) {n unlistenByKey(this.pointerdownListenerKey_);n this.pointerdownListenerKey_ = null;n }n this.dragListenerKeys_.forEach(unlistenByKey);n this.dragListenerKeys_.length = 0;n this.element_ = null;n _super.prototype.disposeInternal.call(this);n };n return MapBrowserEventHandler;n}(EventTarget));nexport default MapBrowserEventHandler;n//# sourceMappingURL=MapBrowserEventHandler.js.map”,“/**n * @module ol/MapEventTypen */n/**n * @enum {string}n */nexport default {n /**n * Triggered after a map frame is rendered.n * @event module:ol/MapEvent~MapEvent#postrendern * @apin */n POSTRENDER: 'postrender',n /**n * Triggered when the map starts moving.n * @event module:ol/MapEvent~MapEvent#movestartn * @apin */n MOVESTART: 'movestart',n /**n * Triggered after the map is moved.n * @event module:ol/MapEvent~MapEvent#moveendn * @apin */n MOVEEND: 'moveend'n};n//# sourceMappingURL=MapEventType.js.map”,“/**n * @module ol/MapPropertyn */n/**n * @enum {string}n */nexport default {n LAYERGROUP: 'layergroup',n SIZE: 'size',n TARGET: 'target',n VIEW: 'view'n};n//# sourceMappingURL=MapProperty.js.map”,“/**n * @module ol/render/EventTypen */n/**n * @enum {string}n */nexport default {n /**n * Triggered before a layer is rendered.n * @event module:ol/render/Event~RenderEvent#prerendern * @apin */n PRERENDER: 'prerender',n /**n * Triggered after a layer is rendered.n * @event module:ol/render/Event~RenderEvent#postrendern * @apin */n POSTRENDER: 'postrender',n /**n * Triggered before layers are rendered.n * The event object will not have a `context` set.n * @event module:ol/render/Event~RenderEvent#precomposen * @apin */n PRECOMPOSE: 'precompose',n /**n * Triggered after all layers are rendered.n * The event object will not have a `context` set.n * @event module:ol/render/Event~RenderEvent#postcomposen * @apin */n POSTCOMPOSE: 'postcompose',n /**n * Triggered when rendering is complete, i.e. all sources and tiles haven * 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#rendercompleten * @apin */n RENDERCOMPLETE: 'rendercomplete'n};n//# sourceMappingURL=EventType.js.map”,“/**n * @module ol/TileStaten */n/**n * @enum {number}n */nexport default {n IDLE: 0,n LOADING: 1,n LOADED: 2,n /**n * Indicates that tile loading failedn * @type {number}n */n ERROR: 3,n EMPTY: 4,n ABORT: 5n};n//# sourceMappingURL=TileState.js.map”,“/**n * @module ol/structs/PriorityQueuen */nimport { assert } from '../asserts.js';nimport { clear } from '../obj.js';n/**n * @type {number}n */nexport var DROP = Infinity;n/**n * @classdescn * Priority queue.n *n * The implementation is inspired from the Closure Library's Heap class andn * Python's heapq module.n *n * See closure-library.googlecode.com/svn/docs/closure_goog_structs_heap.js.source.htmln * and hg.python.org/cpython/file/2.7/Lib/heapq.py.n *n * @template Tn */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 * @privaten */n this.priorityFunction_ = priorityFunction;n /**n * @type {function(T): string}n * @privaten */n this.keyFunction_ = keyFunction;n /**n * @type {Array<T>}n * @privaten */n this.elements_ = [];n /**n * @type {Array<number>}n * @privaten */n this.priorities_ = [];n /**n * @type {!Object<string, boolean>}n * @privaten */n this.queuedElements_ = {};n }n /**n * FIXME empty description for jsdocn */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;n if (elements.length == 1) {n elements.length = 0;n priorities.length = 0;n }n else {n elements = elements.pop();n priorities = priorities.pop();n this.siftUp_(0);n }n var elementKey = this.keyFunction_(element);n delete this.queuedElements_;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 queuen var priority = this.priorityFunction_(element);n if (priority != DROP) {n this.elements_.push(element);n this.priorities_.push(priority);n this.queuedElements_ = 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 * @privaten */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 * @privaten */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 * @privaten */n PriorityQueue.prototype.getParentIndex_ = function (index) {n return (index - 1) >> 1;n };n /**n * Make this a heap. O(N).n * @privaten */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 * @privaten */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;n var priority = priorities;n var startIndex = index;n while (index < (count >> 1)) {n var lIndex = this.getLeftChildIndex_(index);n var rIndex = this.getRightChildIndex_(index);n var smallerChildIndex = rIndex < count &&n priorities < priorities ?n rIndex : lIndex;n elements = elements;n priorities = priorities;n index = smallerChildIndex;n }n elements = element;n priorities = 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 * @privaten */n PriorityQueue.prototype.siftDown_ = function (startIndex, index) {n var elements = this.elements_;n var priorities = this.priorities_;n var element = elements;n var priority = priorities;n while (index > startIndex) {n var parentIndex = this.getParentIndex_(index);n if (priorities > priority) {n elements = elements;n priorities = priorities;n index = parentIndex;n }n else {n break;n }n }n elements = element;n priorities = priority;n };n /**n * FIXME empty description for jsdocn */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;n priority = priorityFunction(element);n if (priority == DROP) {n delete this.queuedElements_;n }n else {n priorities = priority;n elements = element;n }n }n elements.length = index;n priorities.length = index;n this.heapify_();n };n return PriorityQueue;n}());nexport default PriorityQueue;n//# sourceMappingURL=PriorityQueue.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/TileQueuen */nimport TileState from './TileState.js';nimport EventType from './events/EventType.js';nimport PriorityQueue from './structs/PriorityQueue.js';n/**n * @typedef {function(import("./Tile.js").default, string, import("./coordinate.js").Coordinate, number): number} PriorityFunctionn */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).getKey());n }) || this;n /** @private */n this.boundHandleTileChange = _this.handleTileChange.bind(_this);n /**n * @privaten * @type {function(): ?}n */n this.tileChangeCallback = tileChangeCallback;n /**n * @privaten * @type {number}n */n this.tilesLoading = 0;n /**n * @privaten * @type {!Object<string,boolean>}n */n this.tilesLoadingKeys = {};n return _this;n }n /**n * @inheritDocn */n TileQueue.prototype.enqueue = function (element) {n var added = _super.prototype.enqueue.call(this, element);n if (added) {n var tile = element;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 * @protectedn */n TileQueue.prototype.handleTileChange = function (event) {n var tile = /** @type {import("./Tile.js").default} */ (event.target);n var state = tile.getState();n if (tile.hifi && state === TileState.LOADED || state === TileState.ERROR ||n state === TileState.EMPTY || state === TileState.ABORT) {n tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);n var tileKey = tile.getKey();n if (tileKey in this.tilesLoadingKeys_) {n delete this.tilesLoadingKeys_;n –this.tilesLoading_;n }n this.tileChangeCallback_();n }n };n /**n * @param {number} maxTotalLoading Maximum number tiles to load simultaneously.n * @param {number} maxNewLoads Maximum number of new tiles to load.n */n TileQueue.prototype.loadMoreTiles = function (maxTotalLoading, maxNewLoads) {n var newLoads = 0;n var abortedTiles = false;n var state, tile, tileKey;n while (this.tilesLoading_ < maxTotalLoading && newLoads < maxNewLoads &&n this.getCount() > 0) {n tile = /** @type {import("./Tile.js").default} */ (this.dequeue());n tileKey = tile.getKey();n state = tile.getState();n if (state === TileState.ABORT) {n abortedTiles = true;n }n else if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {n this.tilesLoadingKeys_ = true;n ++this.tilesLoading_;n ++newLoads;n tile.load();n }n }n if (newLoads === 0 && abortedTiles) {n // Do not stop the render loop when all wanted tiles were aborted due ton // a small, saturated tile cache.n this.tileChangeCallback_();n }n };n return TileQueue;n}(PriorityQueue));nexport default TileQueue;n//# sourceMappingURL=TileQueue.js.map”,“/**n * @module ol/tilegrid/commonn */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/centerconstraintn */nimport { clamp } from './math.js';n/**n * @typedef {function((import("./coordinate.js").Coordinate|undefined), number, import("./size.js").Size, boolean=): (import("./coordinate.js").Coordinate|undefined)} Typen */n/**n * @param {import("./extent.js").Extent} extent Extent.n * @param {boolean} onlyCenter If true, the constraint will only apply to the view center.n * @param {boolean} smooth If true, the view will be able to go slightly out of the given extentn * (only during interaction and animation).n * @return {Type} The constraint.n */nexport function createExtent(extent, onlyCenter, smooth) {n return (n /**n * @param {import("./coordinate.js").Coordinate|undefined} center Center.n * @param {number} resolution Resolution.n * @param {import("./size.js").Size} size Viewport size; unused if `onlyCenter` was specified.n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.n * @return {import("./coordinate.js").Coordinate|undefined} Center.n */n function (center, resolution, size, opt_isMoving) {n if (center) {n var viewWidth = onlyCenter ? 0 : size * resolution;n var viewHeight = onlyCenter ? 0 : size * resolution;n var minX = extent + viewWidth / 2;n var maxX = extent - viewWidth / 2;n var minY = extent + viewHeight / 2;n var maxY = extent - viewHeight / 2;n // note: when zooming out of bounds, min and max values for x and y mayn // end up inverted (min > max); this has to be accounted forn if (minX > maxX) {n minX = (maxX + minX) / 2;n maxX = minX;n }n if (minY > maxY) {n minY = (maxY + minY) / 2;n maxY = minY;n }n var x = clamp(center, minX, maxX);n var y = clamp(center, minY, maxY);n var ratio = 30 * resolution;n // during an interaction, allow some overscrolln if (opt_isMoving && smooth) {n x += -ratio * Math.log(1 + Math.max(0, minX - center) / ratio) +n ratio * Math.log(1 + Math.max(0, center - maxX) / ratio);n y += -ratio * Math.log(1 + Math.max(0, minY - center) / ratio) +n ratio * Math.log(1 + Math.max(0, center - maxY) / ratio);n }n return [x, y];n }n else {n return undefined;n }n });n}n/**n * @param {import("./coordinate.js").Coordinate=} center Center.n * @return {import("./coordinate.js").Coordinate|undefined} Center.n */nexport function none(center) {n return center;n}n//# sourceMappingURL=centerconstraint.js.map”,“/**n * @module ol/resolutionconstraintn */nimport { linearFindNearest } from './array.js';nimport { getHeight, getWidth } from './extent.js';nimport { clamp } from './math.js';n/**n * @typedef {function((number|undefined), number, import("./size.js").Size, boolean=): (number|undefined)} Typen */n/**n * Returns a modified resolution taking into acocunt the viewport size and maximumn * allowed extent.n * @param {number} resolution Resolutionn * @param {import("./extent.js").Extent=} maxExtent Maximum allowed extent.n * @param {import("./size.js").Size} viewportSize Viewport size.n * @return {number} Capped resolution.n */nfunction getViewportClampedResolution(resolution, maxExtent, viewportSize) {n var xResolution = getWidth(maxExtent) / viewportSize;n var yResolution = getHeight(maxExtent) / viewportSize;n return Math.min(resolution, Math.min(xResolution, yResolution));n}n/**n * Returns a modified resolution to be between maxResolution and minResolution whilen * still allowing the value to be slightly out of bounds.n * Note: the computation is based on the logarithm function (ln):n * - at 1, ln(x) is 0n * - above 1, ln(x) keeps increasing but at a much slower pace than xn * The final result is clamped to prevent getting too far away from bounds.n * @param {number} resolution Resolution.n * @param {number} maxResolution Max resolution.n * @param {number} minResolution Min resolution.n * @return {number} Smoothed resolution.n */nfunction getSmoothClampedResolution(resolution, maxResolution, minResolution) {n var result = Math.min(resolution, maxResolution);n var ratio = 50;n result *= Math.log(1 + ratio * Math.max(0, resolution / maxResolution - 1)) / ratio + 1;n if (minResolution) {n result = Math.max(result, minResolution);n result /= Math.log(1 + ratio * Math.max(0, minResolution / resolution - 1)) / ratio + 1;n }n return clamp(result, minResolution / 2, maxResolution * 2);n}n/**n * @param {Array<number>} resolutions Resolutions.n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.n * @param {import("./extent.js").Extent=} opt_maxExtent Maximum allowed extent.n * @return {Type} Zoom function.n */nexport function createSnapToResolutions(resolutions, opt_smooth, opt_maxExtent) {n return (n /**n * @param {number|undefined} resolution Resolution.n * @param {number} direction Direction.n * @param {import("./size.js").Size} size Viewport size.n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.n * @return {number|undefined} Resolution.n */n function (resolution, direction, size, opt_isMoving) {n if (resolution !== undefined) {n var maxResolution = resolutions;n var minResolution = resolutions[resolutions.length - 1];n var cappedMaxRes = opt_maxExtent ?n getViewportClampedResolution(maxResolution, opt_maxExtent, size) :n maxResolution;n // during interacting or animating, allow intermediary valuesn if (opt_isMoving) {n var smooth = opt_smooth !== undefined ? opt_smooth : true;n if (!smooth) {n return clamp(resolution, minResolution, cappedMaxRes);n }n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);n }n var capped = Math.min(cappedMaxRes, resolution);n var z = Math.floor(linearFindNearest(resolutions, capped, direction));n if (resolutions > cappedMaxRes && z < resolutions.length - 1) {n return resolutions[z + 1];n }n return resolutions;n }n else {n return undefined;n }n });n}n/**n * @param {number} power Power.n * @param {number} maxResolution Maximum resolution.n * @param {number=} opt_minResolution Minimum resolution.n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.n * @param {import("./extent.js").Extent=} opt_maxExtent Maximum allowed extent.n * @return {Type} Zoom function.n */nexport function createSnapToPower(power, maxResolution, opt_minResolution, opt_smooth, opt_maxExtent) {n return (n /**n * @param {number|undefined} resolution Resolution.n * @param {number} direction Direction.n * @param {import("./size.js").Size} size Viewport size.n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.n * @return {number|undefined} Resolution.n */n function (resolution, direction, size, opt_isMoving) {n if (resolution !== undefined) {n var cappedMaxRes = opt_maxExtent ?n getViewportClampedResolution(maxResolution, opt_maxExtent, size) :n maxResolution;n var minResolution = opt_minResolution !== undefined ? opt_minResolution : 0;n // during interacting or animating, allow intermediary valuesn if (opt_isMoving) {n var smooth = opt_smooth !== undefined ? opt_smooth : true;n if (!smooth) {n return clamp(resolution, minResolution, cappedMaxRes);n }n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);n }n var tolerance = 1e-9;n var minZoomLevel = Math.ceil(Math.log(maxResolution / cappedMaxRes) / Math.log(power) - tolerance);n var offset = -direction * (0.5 - tolerance) + 0.5;n var capped = Math.min(cappedMaxRes, resolution);n var cappedZoomLevel = Math.floor(Math.log(maxResolution / capped) / Math.log(power) + offset);n var zoomLevel = Math.max(minZoomLevel, cappedZoomLevel);n var newResolution = maxResolution / Math.pow(power, zoomLevel);n return clamp(newResolution, minResolution, cappedMaxRes);n }n else {n return undefined;n }n });n}n/**n * @param {number} maxResolution Max resolution.n * @param {number} minResolution Min resolution.n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.n * @param {import("./extent.js").Extent=} opt_maxExtent Maximum allowed extent.n * @return {Type} Zoom function.n */nexport function createMinMaxResolution(maxResolution, minResolution, opt_smooth, opt_maxExtent) {n return (n /**n * @param {number|undefined} resolution Resolution.n * @param {number} direction Direction.n * @param {import("./size.js").Size} size Viewport size.n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.n * @return {number|undefined} Resolution.n */n function (resolution, direction, size, opt_isMoving) {n if (resolution !== undefined) {n var cappedMaxRes = opt_maxExtent ?n getViewportClampedResolution(maxResolution, opt_maxExtent, size) :n maxResolution;n var smooth = opt_smooth !== undefined ? opt_smooth : true;n if (!smooth || !opt_isMoving) {n return clamp(resolution, minResolution, cappedMaxRes);n }n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);n }n else {n return undefined;n }n });n}n//# sourceMappingURL=resolutionconstraint.js.map”,“/**n * @module ol/rotationconstraintn */nimport { toRadians } from './math.js';n/**n * @typedef {function((number|undefined), boolean=): (number|undefined)} Typen */n/**n * @param {number|undefined} rotation Rotation.n * @return {number|undefined} Rotation.n */nexport function disable(rotation) {n if (rotation !== undefined) {n return 0;n }n else {n return undefined;n }n}n/**n * @param {number|undefined} rotation Rotation.n * @return {number|undefined} Rotation.n */nexport function none(rotation) {n if (rotation !== undefined) {n return rotation;n }n else {n return undefined;n }n}n/**n * @param {number} n N.n * @return {Type} Rotation constraint.n */nexport function createSnapToN(n) {n var theta = 2 * Math.PI / n;n return (n /**n * @param {number|undefined} rotation Rotation.n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.n * @return {number|undefined} Rotation.n */n function (rotation, opt_isMoving) {n if (opt_isMoving) {n return rotation;n }n if (rotation !== undefined) {n rotation = Math.floor(rotation / theta + 0.5) * theta;n return rotation;n }n else {n return undefined;n }n });n}n/**n * @param {number=} opt_tolerance Tolerance.n * @return {Type} Rotation constraint.n */nexport function createSnapToZero(opt_tolerance) {n var tolerance = opt_tolerance || toRadians(5);n return (n /**n * @param {number|undefined} rotation Rotation.n * @param {boolean} opt_isMoving True if an interaction or animation is in progress.n * @return {number|undefined} Rotation.n */n function (rotation, opt_isMoving) {n if (opt_isMoving) {n return rotation;n }n if (rotation !== undefined) {n if (Math.abs(rotation) <= tolerance) {n return 0;n }n else {n return rotation;n }n }n else {n return undefined;n }n });n}n//# sourceMappingURL=rotationconstraint.js.map”,“/**n * @module ol/ViewHintn */n/**n * @enum {number}n */nexport default {n ANIMATING: 0,n INTERACTING: 1n};n//# sourceMappingURL=ViewHint.js.map”,“/**n * @module ol/ViewPropertyn */n/**n * @enum {string}n */nexport default {n CENTER: 'center',n RESOLUTION: 'resolution',n ROTATION: 'rotation'n};n//# sourceMappingURL=ViewProperty.js.map”,“/**n * @module ol/stringn */n/**n * @param {number} number Number to be formattedn * @param {number} width The desired widthn * @param {number=} opt_precision Precision of the output string (i.e. number of decimal places)n * @returns {string} Formatted stringn */nexport function padNumber(number, width, opt_precision) {n var numberString = opt_precision !== undefined ? number.toFixed(opt_precision) : '' + number;n var decimal = numberString.indexOf('.');n decimal = decimal === -1 ? numberString.length : decimal;n return decimal > width ? numberString : new Array(1 + width - decimal).join('0') + numberString;n}n/**n * Adapted from github.com/omichelsen/compare-versions/blob/master/index.jsn * @param {string|number} v1 First versionn * @param {string|number} v2 Second versionn * @returns {number} Valuen */nexport function compareVersions(v1, v2) {n var s1 = ('' + v1).split('.');n var s2 = ('' + v2).split('.');n for (var i = 0; i < Math.max(s1.length, s2.length); i++) {n var n1 = parseInt(s1 || '0', 10);n var n2 = parseInt(s2 || '0', 10);n if (n1 > n2) {n return 1;n }n if (n2 > n1) {n return -1;n }n }n return 0;n}n//# sourceMappingURL=string.js.map”,“/**n * @module ol/coordinaten */nimport { modulo } from './math.js';nimport { padNumber } from './string.js';n/**n * An array of numbers representing an xy coordinate. Example: `[16, 48]`.n * @typedef {Array<number>} Coordinaten * @apin */n/**n * A function that takes a {@link module:ol/coordinate~Coordinate} andn * transforms it into a `{string}`.n *n * @typedef {function((Coordinate|undefined)): string} CoordinateFormatn * @apin */n/**n * Add `delta` to `coordinate`. `coordinate` is modified in place and returnedn * by the function.n *n * Example:n *n * import {add} from 'ol/coordinate';n *n * var coord = [7.85, 47.983333];n * add(coord, [-2, 4]);n * // coord is now [5.85, 51.983333]n *n * @param {Coordinate} coordinate Coordinate.n * @param {Coordinate} delta Delta.n * @return {Coordinate} The input coordinate adjusted byn * the given delta.n * @apin */nexport function add(coordinate, delta) {n coordinate += +delta;n coordinate += +delta;n return coordinate;n}n/**n * Calculates the point closest to the passed coordinate on the passed circle.n *n * @param {Coordinate} coordinate The coordinate.n * @param {import("./geom/Circle.js").default} circle The circle.n * @return {Coordinate} Closest point on the circumference.n */nexport function closestOnCircle(coordinate, circle) {n var r = circle.getRadius();n var center = circle.getCenter();n var x0 = center;n var y0 = center;n var x1 = coordinate;n var y1 = coordinate;n var dx = x1 - x0;n var dy = y1 - y0;n if (dx === 0 && dy === 0) {n dx = 1;n }n var d = Math.sqrt(dx * dx + dy * dy);n var x = x0 + r * dx / d;n var y = y0 + r * dy / d;n return [x, y];n}n/**n * Calculates the point closest to the passed coordinate on the passed segment.n * This is the foot of the perpendicular of the coordinate to the segment whenn * the foot is on the segment, or the closest segment coordinate when the footn * is outside the segment.n *n * @param {Coordinate} coordinate The coordinate.n * @param {Array<Coordinate>} segment The two coordinatesn * of the segment.n * @return {Coordinate} The foot of the perpendicular ofn * the coordinate to the segment.n */nexport function closestOnSegment(coordinate, segment) {n var x0 = coordinate;n var y0 = coordinate;n var start = segment;n var end = segment;n var x1 = start;n var y1 = start;n var x2 = end;n var y2 = end;n var dx = x2 - x1;n var dy = y2 - y1;n var along = (dx === 0 && dy === 0) ? 0 :n ((dx * (x0 - x1)) + (dy * (y0 - y1))) / ((dx * dx + dy * dy) || 0);n var x, y;n if (along <= 0) {n x = x1;n y = y1;n }n else if (along >= 1) {n x = x2;n y = y2;n }n else {n x = x1 + along * dx;n y = y1 + along * dy;n }n return [x, y];n}n/**n * Returns a {@link module:ol/coordinate~CoordinateFormat} function that can ben * used to formatn * a {Coordinate} to a string.n *n * Example without specifying the fractional digits:n *n * import {createStringXY} from 'ol/coordinate';n *n * var coord = [7.85, 47.983333];n * var stringifyFunc = createStringXY();n * var out = stringifyFunc(coord);n * // out is now '8, 48'n *n * Example with explicitly specifying 2 fractional digits:n *n * import {createStringXY} from 'ol/coordinate';n *n * var coord = [7.85, 47.983333];n * var stringifyFunc = createStringXY(2);n * var out = stringifyFunc(coord);n * // out is now '7.85, 47.98'n *n * @param {number=} opt_fractionDigits The number of digits to includen * after the decimal point. Default is `0`.n * @return {CoordinateFormat} Coordinate format.n * @apin */nexport function createStringXY(opt_fractionDigits) {n return (n /**n * @param {Coordinate} coordinate Coordinate.n * @return {string} String XY.n */n function (coordinate) {n return toStringXY(coordinate, opt_fractionDigits);n });n}n/**n * @param {string} hemispheres Hemispheres.n * @param {number} degrees Degrees.n * @param {number=} opt_fractionDigits The number of digits to includen * after the decimal point. Default is `0`.n * @return {string} String.n */nexport function degreesToStringHDMS(hemispheres, degrees, opt_fractionDigits) {n var normalizedDegrees = modulo(degrees + 180, 360) - 180;n var x = Math.abs(3600 * normalizedDegrees);n var dflPrecision = opt_fractionDigits || 0;n var precision = Math.pow(10, dflPrecision);n var deg = Math.floor(x / 3600);n var min = Math.floor((x - deg * 3600) / 60);n var sec = x - (deg * 3600) - (min * 60);n sec = Math.ceil(sec * precision) / precision;n if (sec >= 60) {n sec = 0;n min += 1;n }n if (min >= 60) {n min = 0;n deg += 1;n }n return deg + '\u00b0 ' + padNumber(min, 2) + '\u2032 ' +n padNumber(sec, 2, dflPrecision) + '\u2033' +n (normalizedDegrees == 0 ? '' : ' ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0));n}n/**n * Transforms the given {@link module:ol/coordinate~Coordinate} to a stringn * using the given string template. The strings `{x}` and `{y}` in the templaten * will be replaced with the first and second coordinate values respectively.n *n * Example without specifying the fractional digits:n *n * import {format} from 'ol/coordinate';n *n * var coord = [7.85, 47.983333];n * var template = 'Coordinate is ({x}|{y}).';n * var out = format(coord, template);n * // out is now 'Coordinate is (8|48).'n *n * Example explicitly specifying the fractional digits:n *n * import {format} from 'ol/coordinate';n *n * var coord = [7.85, 47.983333];n * var template = 'Coordinate is ({x}|{y}).';n * var out = format(coord, template, 2);n * // out is now 'Coordinate is (7.85|47.98).'n *n * @param {Coordinate} coordinate Coordinate.n * @param {string} template A template string with `{x}` and `{y}` placeholdersn * that will be replaced by first and second coordinate values.n * @param {number=} opt_fractionDigits The number of digits to includen * after the decimal point. Default is `0`.n * @return {string} Formatted coordinate.n * @apin */nexport function format(coordinate, template, opt_fractionDigits) {n if (coordinate) {n return templaten .replace('{x}', coordinate.toFixed(opt_fractionDigits))n .replace('{y}', coordinate.toFixed(opt_fractionDigits));n }n else {n return '';n }n}n/**n * @param {Coordinate} coordinate1 First coordinate.n * @param {Coordinate} coordinate2 Second coordinate.n * @return {boolean} The two coordinates are equal.n */nexport function equals(coordinate1, coordinate2) {n var equals = true;n for (var i = coordinate1.length - 1; i >= 0; –i) {n if (coordinate1 != coordinate2) {n equals = false;n break;n }n }n return equals;n}n/**n * Rotate `coordinate` by `angle`. `coordinate` is modified in place andn * returned by the function.n *n * Example:n *n * import {rotate} from 'ol/coordinate';n *n * var coord = [7.85, 47.983333];n * var rotateRadians = Math.PI / 2; // 90 degreesn * rotate(coord, rotateRadians);n * // coord is now [-47.983333, 7.85]n *n * @param {Coordinate} coordinate Coordinate.n * @param {number} angle Angle in radian.n * @return {Coordinate} Coordinate.n * @apin */nexport function rotate(coordinate, angle) {n var cosAngle = Math.cos(angle);n var sinAngle = Math.sin(angle);n var x = coordinate * cosAngle - coordinate * sinAngle;n var y = coordinate * cosAngle + coordinate * sinAngle;n coordinate = x;n coordinate = y;n return coordinate;n}n/**n * Scale `coordinate` by `scale`. `coordinate` is modified in place and returnedn * by the function.n *n * Example:n *n * import {scale as scaleCoordinate} from 'ol/coordinate';n *n * var coord = [7.85, 47.983333];n * var scale = 1.2;n * scaleCoordinate(coord, scale);n * // coord is now [9.42, 57.5799996]n *n * @param {Coordinate} coordinate Coordinate.n * @param {number} scale Scale factor.n * @return {Coordinate} Coordinate.n */nexport function scale(coordinate, scale) {n coordinate *= scale;n coordinate *= scale;n return coordinate;n}n/**n * @param {Coordinate} coord1 First coordinate.n * @param {Coordinate} coord2 Second coordinate.n * @return {number} Squared distance between coord1 and coord2.n */nexport function squaredDistance(coord1, coord2) {n var dx = coord1 - coord2;n var dy = coord1 - coord2;n return dx * dx + dy * dy;n}n/**n * @param {Coordinate} coord1 First coordinate.n * @param {Coordinate} coord2 Second coordinate.n * @return {number} Distance between coord1 and coord2.n */nexport function distance(coord1, coord2) {n return Math.sqrt(squaredDistance(coord1, coord2));n}n/**n * Calculate the squared distance from a coordinate to a line segment.n *n * @param {Coordinate} coordinate Coordinate of the point.n * @param {Array<Coordinate>} segment Line segment (2n * coordinates).n * @return {number} Squared distance from the point to the line segment.n */nexport function squaredDistanceToSegment(coordinate, segment) {n return squaredDistance(coordinate, closestOnSegment(coordinate, segment));n}n/**n * Format a geographic coordinate with the hemisphere, degrees, minutes, andn * seconds.n *n * Example without specifying fractional digits:n *n * import {toStringHDMS} from 'ol/coordinate';n *n * var coord = [7.85, 47.983333];n * var out = toStringHDMS(coord);n * // out is now '47° 58′ 60″ N 7° 50′ 60″ E'n *n * Example explicitly specifying 1 fractional digit:n *n * import {toStringHDMS} from 'ol/coordinate';n *n * var coord = [7.85, 47.983333];n * var out = toStringHDMS(coord, 1);n * // out is now '47° 58′ 60.0″ N 7° 50′ 60.0″ E'n *n * @param {Coordinate} coordinate Coordinate.n * @param {number=} opt_fractionDigits The number of digits to includen * after the decimal point. Default is `0`.n * @return {string} Hemisphere, degrees, minutes and seconds.n * @apin */nexport function toStringHDMS(coordinate, opt_fractionDigits) {n if (coordinate) {n return degreesToStringHDMS('NS', coordinate, opt_fractionDigits) + ' ' +n degreesToStringHDMS('EW', coordinate, opt_fractionDigits);n }n else {n return '';n }n}n/**n * Format a coordinate as a comma delimited string.n *n * Example without specifying fractional digits:n *n * import {toStringXY} from 'ol/coordinate';n *n * var coord = [7.85, 47.983333];n * var out = toStringXY(coord);n * // out is now '8, 48'n *n * Example explicitly specifying 1 fractional digit:n *n * import {toStringXY} from 'ol/coordinate';n *n * var coord = [7.85, 47.983333];n * var out = toStringXY(coord, 1);n * // out is now '7.8, 48.0'n *n * @param {Coordinate} coordinate Coordinate.n * @param {number=} opt_fractionDigits The number of digits to includen * after the decimal point. Default is `0`.n * @return {string} XY.n * @apin */nexport function toStringXY(coordinate, opt_fractionDigits) {n return format(coordinate, '{x}, {y}', opt_fractionDigits);n}n//# sourceMappingURL=coordinate.js.map”,“/**n * @module ol/easingn */n/**n * Start slow and speed up.n * @param {number} t Input between 0 and 1.n * @return {number} Output between 0 and 1.n * @apin */nexport function easeIn(t) {n return Math.pow(t, 3);n}n/**n * Start fast and slow down.n * @param {number} t Input between 0 and 1.n * @return {number} Output between 0 and 1.n * @apin */nexport function easeOut(t) {n return 1 - easeIn(1 - t);n}n/**n * Start slow, speed up, and then slow down again.n * @param {number} t Input between 0 and 1.n * @return {number} Output between 0 and 1.n * @apin */nexport function inAndOut(t) {n return 3 * t * t - 2 * t * t * t;n}n/**n * Maintain a constant speed over time.n * @param {number} t Input between 0 and 1.n * @return {number} Output between 0 and 1.n * @apin */nexport function linear(t) {n return t;n}n/**n * Start slow, speed up, and at the very end slow down again. This has then * same general behavior as {@link module:ol/easing~inAndOut}, but the finaln * slowdown is delayed.n * @param {number} t Input between 0 and 1.n * @return {number} Output between 0 and 1.n * @apin */nexport function upAndDown(t) {n if (t < 0.5) {n return inAndOut(2 * t);n }n else {n return 1 - inAndOut(2 * (t - 0.5));n }n}n//# sourceMappingURL=easing.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/Viewn */nimport { DEFAULT_TILE_SIZE } from './tilegrid/common.js';nimport { getUid } from './util.js';nimport { VOID } from './functions.js';nimport { createExtent, none as centerNone } from './centerconstraint.js';nimport BaseObject from './Object.js';nimport { createSnapToResolutions, createSnapToPower } from './resolutionconstraint.js';nimport { createSnapToZero, createSnapToN, none as rotationNone, disable } from './rotationconstraint.js';nimport ViewHint from './ViewHint.js';nimport ViewProperty from './ViewProperty.js';nimport { linearFindNearest } from './array.js';nimport { assert } from './asserts.js';nimport { add as addCoordinate, rotate as rotateCoordinate, equals as coordinatesEqual } from './coordinate.js';nimport { inAndOut } from './easing.js';nimport { getForViewAndSize, getCenter, getHeight, getWidth, isEmpty } from './extent.js';nimport GeometryType from './geom/GeometryType.js';nimport { fromExtent as polygonFromExtent } from './geom/Polygon.js';nimport { clamp, modulo } from './math.js';nimport { assign } from './obj.js';nimport { createProjection, METERS_PER_UNIT, toUserCoordinate, toUserExtent, fromUserCoordinate, fromUserExtent, getUserProjection } from './proj.js';nimport Units from './proj/Units.js';nimport { equals } from './coordinate.js';nimport { easeOut } from './easing.js';nimport { createMinMaxResolution } from './resolutionconstraint.js';n/**n * An animation configurationn *n * @typedef {Object} Animationn * @property {import("./coordinate.js").Coordinate} [sourceCenter]n * @property {import("./coordinate.js").Coordinate} [targetCenter]n * @property {number} [sourceResolution]n * @property {number} [targetResolution]n * @property {number} [sourceRotation]n * @property {number} [targetRotation]n * @property {import("./coordinate.js").Coordinate} [anchor]n * @property {number} startn * @property {number} durationn * @property {boolean} completen * @property {function(number):number} easingn * @property {function(boolean)} callbackn */n/**n * @typedef {Object} Constraintsn * @property {import("./centerconstraint.js").Type} centern * @property {import("./resolutionconstraint.js").Type} resolutionn * @property {import("./rotationconstraint.js").Type} rotationn */n/**n * @typedef {Object} FitOptionsn * @property {import("./size.js").Size} [size] The size in pixels of the box to fitn * the extent into. Default is the current size of the first map in the DOM thatn * uses this view, or `[100, 100]` if no such map is found.n * @property {!Array<number>} [padding=[0, 0, 0, 0]] Padding (in pixels) to ben * cleared inside the view. Values in the array are top, right, bottom and leftn * padding.n * @property {boolean} [nearest=false] If the view `constrainResolution` option is `true`,n * get the nearest extent instead of the closest that actually fits the view.n * @property {number} [minResolution=0] Minimum resolution that we zoom to.n * @property {number} [maxZoom] Maximum zoom level that we zoom to. Ifn * `minResolution` is given, this property is ignored.n * @property {number} [duration] The duration of the animation in milliseconds.n * By default, there is no animation to the target extent.n * @property {function(number):number} [easing] The easing function used duringn * the animation (defaults to {@link module:ol/easing~inAndOut}).n * The function will be called for each frame with a number representing an * fraction of the animation's duration. The function should return a numbern * between 0 and 1 representing the progress toward the destination state.n * @property {function(boolean)} [callback] Function called when the view is inn * its final position. The callback will be called with `true` if the animationn * series completed on its own or `false` if it was cancelled.n */n/**n * @typedef {Object} ViewOptionsn * @property {import("./coordinate.js").Coordinate} [center] The initial center forn * the view. If a user projection is not set, the coordinate system for the center isn * specified with the `projection` option. Layer sources will not be fetched if thisn * is not set, but the center can be set later with {@link setCenter}.n * @property {boolean|number} [constrainRotation=true] Rotation constraint.n * `false` means no constraint. `true` means no constraint, but snap to zeron * near zero. A number constrains the rotation to that number of values. Forn * example, `4` will constrain the rotation to 0, 90, 180, and 270 degrees.n * @property {boolean} [enableRotation=true] Enable rotation.n * If `false`, a rotation constraint that always sets the rotation to zero isn * used. The `constrainRotation` option has no effect if `enableRotation` isn * `false`.n * @property {import("./extent.js").Extent} [extent] The extent that constrains then * view, in other words, nothing outside of this extent can be visible on the map.n * @property {boolean} [constrainOnlyCenter=false] If true, the extentn * constraint will only apply to the view center and not the whole extent.n * @property {boolean} [smoothExtentConstraint=true] If true, the extentn * constraint will be applied smoothly, i.e. allow the view to go slightly outsiden * of the given `extent`.n * @property {number} [maxResolution] The maximum resolution used to determinen * the resolution constraint. It is used together with `minResolution` (orn * `maxZoom`) and `zoomFactor`. If unspecified it is calculated in such a wayn * that the projection's validity extent fits in a 256x256 px tile. If then * projection is Spherical Mercator (the default) then `maxResolution` defaultsn * to `40075016.68557849 / 256 = 156543.03392804097`.n * @property {number} [minResolution] The minimum resolution used to determinen * the resolution constraint. It is used together with `maxResolution` (orn * `minZoom`) and `zoomFactor`. If unspecified it is calculated assuming 29n * zoom levels (with a factor of 2). If the projection is Spherical Mercatorn * (the default) then `minResolution` defaults ton * `40075016.68557849 / 256 / Math.pow(2, 28) = 0.0005831682455839253`.n * @property {number} [maxZoom=28] The maximum zoom level used to determine then * resolution constraint. It is used together with `minZoom` (orn * `maxResolution`) and `zoomFactor`. Note that if `minResolution` is alson * provided, it is given precedence over `maxZoom`.n * @property {number} [minZoom=0] The minimum zoom level used to determine then * resolution constraint. It is used together with `maxZoom` (orn * `minResolution`) and `zoomFactor`. Note that if `maxResolution` is alson * provided, it is given precedence over `minZoom`.n * @property {boolean} [multiWorld=false] If `false` the view is constrained son * only one world is visible, and you cannot pan off the edge. If `true` the mapn * may show multiple worlds at low zoom levels. Only used if the `projection` isn * global. Note that if `extent` is also provided it is given precedence.n * @property {boolean} [constrainResolution=false] If true, the view will alwaysn * animate to the closest zoom level after an interaction; false meansn * intermediary zoom levels are allowed.n * @property {boolean} [smoothResolutionConstraint=true] If true, the resolutionn * min/max values will be applied smoothly, i. e. allow the view to exceed slightlyn * the given resolution or zoom bounds.n * @property {import("./proj.js").ProjectionLike} [projection='EPSG:3857'] Then * projection. The default is Spherical Mercator.n * @property {number} [resolution] The initial resolution for the view. Then * units are `projection` units per pixel (e.g. meters per pixel). Ann * alternative to setting this is to set `zoom`. Layer sources will not ben * fetched if neither this nor `zoom` are defined, but they can be set latern * with {@link setZoom} or {@link setResolution}.n * @property {Array<number>} [resolutions] Resolutions to determine then * resolution constraint. If set the `maxResolution`, `minResolution`,n * `minZoom`, `maxZoom`, and `zoomFactor` options are ignored.n * @property {number} [rotation=0] The initial rotation for the view in radiansn * (positive rotation clockwise, 0 means North).n * @property {number} [zoom] Only used if `resolution` is not defined. Zoomn * level used to calculate the initial resolution for the view.n * @property {number} [zoomFactor=2] The zoom factor used to compute then * corresponding resolution.n */n/**n * @typedef {Object} AnimationOptionsn * @property {import("./coordinate.js").Coordinate} [center] The center of the view at the end ofn * the animation.n * @property {number} [zoom] The zoom level of the view at the end of then * animation. This takes precedence over `resolution`.n * @property {number} [resolution] The resolution of the view at the endn * of the animation. If `zoom` is also provided, this option will be ignored.n * @property {number} [rotation] The rotation of the view at the end ofn * the animation.n * @property {import("./coordinate.js").Coordinate} [anchor] Optional anchor to remain fixedn * during a rotation or resolution animation.n * @property {number} [duration=1000] The duration of the animation in milliseconds.n * @property {function(number):number} [easing] The easing function usedn * during the animation (defaults to {@link module:ol/easing~inAndOut}).n * The function will be called for each frame with a number representing an * fraction of the animation's duration. The function should return a numbern * between 0 and 1 representing the progress toward the destination state.n */n/**n * @typedef {Object} Staten * @property {import("./coordinate.js").Coordinate} centern * @property {import("./proj/Projection.js").default} projectionn * @property {number} resolutionn * @property {number} rotationn * @property {number} zoomn */n/**n * Default min zoom level for the map view.n * @type {number}n */nvar DEFAULT_MIN_ZOOM = 0;n/**n * @classdescn * A View object represents a simple 2D view of the map.n *n * This is the object to act upon to change the center, resolution,n * and rotation of the map.n *n * A View has a `projection`. The projection determines then * coordinate system of the center, and its units determine the units of then * resolution (projection units per pixel). The default projection isn * Spherical Mercator (EPSG:3857).n *n * ### The view statesn *n * A View is determined by three states: `center`, `resolution`,n * and `rotation`. Each state has a corresponding getter and setter, e.g.n * `getCenter` and `setCenter` for the `center` state.n *n * The `zoom` state is actually not saved on the view: all computationsn * internally use the `resolution` state. Still, the `setZoom` and `getZoom`n * methods are available, as well as `getResolutionForZoom` andn * `getZoomForResolution` to switch from one system to the other.n *n * ### The constraintsn *n * `setCenter`, `setResolution` and `setRotation` can be used to change then * states of the view, but any constraint defined in the constructor willn * be applied along the way.n *n * A View object can have a *resolution constraint*, a *rotation constraint*n * and a *center constraint*.n *n * The *resolution constraint* typically restricts min/max values andn * snaps to specific resolutions. It is determined by the followingn * options: `resolutions`, `maxResolution`, `maxZoom` and `zoomFactor`.n * If `resolutions` is set, the other three options are ignored. Seen * documentation for each option for more information. By default, the viewn * only has a min/max restriction and allow intermediary zoom levels whenn * pinch-zooming for example.n *n * The *rotation constraint* snaps to specific angles. It is determinedn * by the following options: `enableRotation` and `constrainRotation`.n * By default rotation is allowed and its value is snapped to zero when approaching then * horizontal.n *n * The *center constraint* is determined by the `extent` option. Byn * default the view center is not constrained at all.n *n * ### Changing the view staten *n * It is important to note that `setZoom`, `setResolution`, `setCenter` andn * `setRotation` are subject to the above mentioned constraints. As such, itn * may sometimes not be possible to know in advance the resulting state of then * View. For example, calling `setResolution(10)` does not guarantee thatn * `getResolution()` will return `10`.n *n * A consequence of this is that, when applying a delta on the view state, onen * should use `adjustCenter`, `adjustRotation`, `adjustZoom` and `adjustResolution`n * rather than the corresponding setters. This will let view do its internaln * computations. Besides, the `adjust*` methods also take an `opt_anchor`n * argument which allows specifying an origin for the transformation.n *n * ### Interacting with the viewn *n * View constraints are usually only applied when the view is *at rest*, meaning thatn * no interaction or animation is ongoing. As such, if the user puts the view in an * state that is not equivalent to a constrained one (e.g. rotating the view whenn * the snap angle is 0), an animation will be triggered at the interaction end ton * put back the view to a stable state;n *n * @apin */nvar View = /** @class */ (function (_super) {n __extends(View, _super);n /**n * @param {ViewOptions=} opt_options View options.n */n function View(opt_options) {n var _this = _super.call(this) || this;n var options = assign({}, opt_options);n /**n * @privaten * @type {Array<number>}n */n this.hints = [0, 0];n /**n * @privaten * @type {Array<Array<Animation>>}n */n this.animations = [];n /**n * @privaten * @type {number|undefined}n */n this.updateAnimationKey;n /**n * @privaten * @constn * @type {import("./proj/Projection.js").default}n */n this.projection = createProjection(options.projection, 'EPSG:3857');n /**n * @privaten * @type {import("./coordinate.js").Coordinate|undefined}n */n this.targetCenter = null;n /**n * @privaten * @type {number|undefined}n */n this.targetResolution;n /**n * @privaten * @type {number|undefined}n */n this.targetRotation;n if (options.center) {n options.center = fromUserCoordinate(options.center, this.projection);n }n if (options.extent) {n options.extent = fromUserExtent(options.extent, this.projection);n }n this.applyOptions(options);n return _this;n }n /**n * Set up the view with the given options.n * @param {ViewOptions} options View options.n */n View.prototype.applyOptions_ = function (options) {n /**n * @type {Object<string, *>}n */n var properties = {};n var resolutionConstraintInfo = createResolutionConstraint(options);n /**n * @privaten * @type {number}n */n this.maxResolution_ = resolutionConstraintInfo.maxResolution;n /**n * @privaten * @type {number}n */n this.minResolution_ = resolutionConstraintInfo.minResolution;n /**n * @privaten * @type {number}n */n this.zoomFactor_ = resolutionConstraintInfo.zoomFactor;n /**n * @privaten * @type {Array<number>|undefined}n */n this.resolutions_ = options.resolutions;n /**n * @privaten * @type {number}n */n this.minZoom_ = resolutionConstraintInfo.minZoom;n var centerConstraint = createCenterConstraint(options);n var resolutionConstraint = resolutionConstraintInfo.constraint;n var rotationConstraint = createRotationConstraint(options);n /**n * @privaten * @type {Constraints}n */n this.constraints_ = {n center: centerConstraint,n resolution: resolutionConstraint,n rotation: rotationConstraintn };n this.setRotation(options.rotation !== undefined ? options.rotation : 0);n this.setCenterInternal(options.center !== undefined ? options.center : null);n if (options.resolution !== undefined) {n this.setResolution(options.resolution);n }n else if (options.zoom !== undefined) {n this.setZoom(options.zoom);n }n this.resolveConstraints(0);n this.setProperties(properties);n /**n * @privaten * @type {ViewOptions}n */n this.options_ = options;n };n /**n * Get an updated version of the view options used to construct the view. Then * current resolution (or zoom), center, and rotation are applied to any storedn * options. The provided options can be used to apply new min/max zoom orn * resolution limits.n * @param {ViewOptions} newOptions New options to be applied.n * @return {ViewOptions} New options updated with the current view state.n */n View.prototype.getUpdatedOptions_ = function (newOptions) {n var options = assign({}, this.options_);n // preserve resolution (or zoom)n if (options.resolution !== undefined) {n options.resolution = this.getResolution();n }n else {n options.zoom = this.getZoom();n }n // preserve centern options.center = this.getCenterInternal();n // preserve rotationn options.rotation = this.getRotation();n return assign({}, options, newOptions);n };n /**n * Animate the view. The view's center, zoom (or resolution), and rotationn * can be animated for smooth transitions between view states. For example,n * to animate the view to a new zoom level:n *n * view.animate({zoom: view.getZoom() + 1});n *n * By default, the animation lasts one second and uses in-and-out easing. Youn * can customize this behavior by including `duration` (in milliseconds) andn * `easing` options (see {@link module:ol/easing}).n *n * To chain together multiple animations, call the method with multiplen * animation objects. For example, to first zoom and then pan:n *n * view.animate({zoom: 10}, {center: [0, 0]});n *n * If you provide a function as the last argument to the animate method, itn * will get called at the end of an animation series. The callback will ben * called with `true` if the animation series completed on its own or `false`n * if it was cancelled.n *n * Animations are cancelled by user interactions (e.g. dragging the map) or byn * calling `view.setCenter()`, `view.setResolution()`, or `view.setRotation()`n * (or another method that calls one of these).n *n * @param {…(AnimationOptions|function(boolean): void)} var_args Animationn * options. Multiple animations can be run in series by passing multiplen * options objects. To run multiple animations in parallel, call the methodn * multiple times. An optional callback can be provided as a finaln * argument. The callback will be called with a boolean indicating whethern * the animation completed without being cancelled.n * @apin */n View.prototype.animate = function (var_args) {n if (this.isDef() && !this.getAnimating()) {n this.resolveConstraints(0);n }n var args = new Array(arguments.length);n for (var i = 0; i < args.length; ++i) {n var options = arguments;n if (options.center) {n options = assign({}, options);n options.center = fromUserCoordinate(options.center, this.getProjection());n }n if (options.anchor) {n options = assign({}, options);n options.anchor = fromUserCoordinate(options.anchor, this.getProjection());n }n args = options;n }n this.animateInternal.apply(this, args);n };n /**n * @param {…(AnimationOptions|function(boolean): void)} var_args Animation options.n */n View.prototype.animateInternal = function (var_args) {n var animationCount = arguments.length;n var callback;n if (animationCount > 1 && typeof arguments[animationCount - 1] === 'function') {n callback = arguments[animationCount - 1];n –animationCount;n }n if (!this.isDef()) {n // if view properties are not yet set, shortcut to the final staten var state = arguments[animationCount - 1];n if (state.center) {n this.setCenterInternal(state.center);n }n if (state.zoom !== undefined) {n this.setZoom(state.zoom);n }n if (state.rotation !== undefined) {n this.setRotation(state.rotation);n }n if (callback) {n animationCallback(callback, true);n }n return;n }n var start = Date.now();n var center = this.targetCenter_.slice();n var resolution = this.targetResolution_;n var rotation = this.targetRotation_;n var series = [];n for (var i = 0; i < animationCount; ++i) {n var options = /** @type {AnimationOptions} */ (arguments);n var animation = {n start: start,n complete: false,n anchor: options.anchor,n duration: options.duration !== undefined ? options.duration : 1000,n easing: options.easing || inAndOut,n callback: callbackn };n if (options.center) {n animation.sourceCenter = center;n animation.targetCenter = options.center.slice();n center = animation.targetCenter;n }n if (options.zoom !== undefined) {n animation.sourceResolution = resolution;n animation.targetResolution = this.getResolutionForZoom(options.zoom);n resolution = animation.targetResolution;n }n else if (options.resolution) {n animation.sourceResolution = resolution;n animation.targetResolution = options.resolution;n resolution = animation.targetResolution;n }n if (options.rotation !== undefined) {n animation.sourceRotation = rotation;n var delta = modulo(options.rotation - rotation + Math.PI, 2 * Math.PI) - Math.PI;n animation.targetRotation = rotation + delta;n rotation = animation.targetRotation;n }n // check if animation is a no-opn if (isNoopAnimation(animation)) {n animation.complete = true;n // we still push it onto the series for callback handlingn }n else {n start += animation.duration;n }n series.push(animation);n }n this.animations_.push(series);n this.setHint(ViewHint.ANIMATING, 1);n this.updateAnimations_();n };n /**n * Determine if the view is being animated.n * @return {boolean} The view is being animated.n * @apin */n View.prototype.getAnimating = function () {n return this.hints_ > 0;n };n /**n * Determine if the user is interacting with the view, such as panning or zooming.n * @return {boolean} The view is being interacted with.n * @apin */n View.prototype.getInteracting = function () {n return this.hints_ > 0;n };n /**n * Cancel any ongoing animations.n * @apin */n View.prototype.cancelAnimations = function () {n this.setHint(ViewHint.ANIMATING, -this.hints_[ViewHint.ANIMATING]);n for (var i = 0, ii = this.animations_.length; i < ii; ++i) {n var series = this.animations_;n if (series.callback) {n animationCallback(series.callback, false);n }n }n this.animations_.length = 0;n };n /**n * Update all animations.n */n View.prototype.updateAnimations_ = function () {n if (this.updateAnimationKey_ !== undefined) {n cancelAnimationFrame(this.updateAnimationKey_);n this.updateAnimationKey_ = undefined;n }n if (!this.getAnimating()) {n return;n }n var now = Date.now();n var more = false;n for (var i = this.animations_.length - 1; i >= 0; –i) {n var series = this.animations_;n var seriesComplete = true;n for (var j = 0, jj = series.length; j < jj; ++j) {n var animation = series;n if (animation.complete) {n continue;n }n var elapsed = now - animation.start;n var fraction = animation.duration > 0 ? elapsed / animation.duration : 1;n if (fraction >= 1) {n animation.complete = true;n fraction = 1;n }n else {n seriesComplete = false;n }n var progress = animation.easing(fraction);n if (animation.sourceCenter) {n var x0 = animation.sourceCenter;n var y0 = animation.sourceCenter;n var x1 = animation.targetCenter;n var y1 = animation.targetCenter;n var x = x0 + progress * (x1 - x0);n var y = y0 + progress * (y1 - y0);n this.targetCenter_ = [x, y];n }n if (animation.sourceResolution && animation.targetResolution) {n var resolution = progress === 1 ?n animation.targetResolution :n animation.sourceResolution + progress * (animation.targetResolution - animation.sourceResolution);n if (animation.anchor) {n var size = this.getSizeFromViewport_(this.getRotation());n var constrainedResolution = this.constraints_.resolution(resolution, 0, size, true);n this.targetCenter_ = this.calculateCenterZoom(constrainedResolution, animation.anchor);n }n this.targetResolution_ = resolution;n this.applyTargetState_(true);n }n if (animation.sourceRotation !== undefined && animation.targetRotation !== undefined) {n var rotation = progress === 1 ?n modulo(animation.targetRotation + Math.PI, 2 * Math.PI) - Math.PI :n animation.sourceRotation + progress * (animation.targetRotation - animation.sourceRotation);n if (animation.anchor) {n var constrainedRotation = this.constraints_.rotation(rotation, true);n this.targetCenter_ = this.calculateCenterRotate(constrainedRotation, animation.anchor);n }n this.targetRotation_ = rotation;n }n this.applyTargetState_(true);n more = true;n if (!animation.complete) {n break;n }n }n if (seriesComplete) {n this.animations_ = null;n this.setHint(ViewHint.ANIMATING, -1);n var callback = series.callback;n if (callback) {n animationCallback(callback, true);n }n }n }n // prune completed seriesn this.animations_ = this.animations_.filter(Boolean);n if (more && this.updateAnimationKey_ === undefined) {n this.updateAnimationKey_ = requestAnimationFrame(this.updateAnimations_.bind(this));n }n };n /**n * @param {number} rotation Target rotation.n * @param {import("./coordinate.js").Coordinate} anchor Rotation anchor.n * @return {import("./coordinate.js").Coordinate|undefined} Center for rotation and anchor.n */n View.prototype.calculateCenterRotate = function (rotation, anchor) {n var center;n var currentCenter = this.getCenterInternal();n if (currentCenter !== undefined) {n center = [currentCenter - anchor, currentCenter - anchor];n rotateCoordinate(center, rotation - this.getRotation());n addCoordinate(center, anchor);n }n return center;n };n /**n * @param {number} resolution Target resolution.n * @param {import("./coordinate.js").Coordinate} anchor Zoom anchor.n * @return {import("./coordinate.js").Coordinate|undefined} Center for resolution and anchor.n */n View.prototype.calculateCenterZoom = function (resolution, anchor) {n var center;n var currentCenter = this.getCenterInternal();n var currentResolution = this.getResolution();n if (currentCenter !== undefined && currentResolution !== undefined) {n var x = anchor - resolution * (anchor - currentCenter) / currentResolution;n var y = anchor - resolution * (anchor - currentCenter) / currentResolution;n center = [x, y];n }n return center;n };n /**n * @privaten * @param {number=} opt_rotation Take into account the rotation of the viewport when giving the sizen * @return {import("./size.js").Size} Viewport size or `[100, 100]` when no viewport is found.n */n View.prototype.getSizeFromViewport_ = function (opt_rotation) {n var size = [100, 100];n var selector = '.ol-viewport[data-view="' + getUid(this) + '"]';n var element = document.querySelector(selector);n if (element) {n var metrics = getComputedStyle(element);n size = parseInt(metrics.width, 10);n size = parseInt(metrics.height, 10);n }n if (opt_rotation) {n var w = size;n var h = size;n size = Math.abs(w * Math.cos(opt_rotation)) + Math.abs(h * Math.sin(opt_rotation));n size = Math.abs(w * Math.sin(opt_rotation)) + Math.abs(h * Math.cos(opt_rotation));n }n return size;n };n /**n * Get the view center.n * @return {import("./coordinate.js").Coordinate|undefined} The center of the view.n * @observablen * @apin */n View.prototype.getCenter = function () {n var center = this.getCenterInternal();n if (!center) {n return center;n }n return toUserCoordinate(center, this.getProjection());n };n /**n * Get the view center without transforming to user projection.n * @return {import("./coordinate.js").Coordinate|undefined} The center of the view.n */n View.prototype.getCenterInternal = function () {n return /** @type {import("./coordinate.js").Coordinate|undefined} */ (this.get(ViewProperty.CENTER));n };n /**n * @return {Constraints} Constraints.n */n View.prototype.getConstraints = function () {n return this.constraints_;n };n /**n * @param {Array<number>=} opt_hints Destination array.n * @return {Array<number>} Hint.n */n View.prototype.getHints = function (opt_hints) {n if (opt_hints !== undefined) {n opt_hints = this.hints_;n opt_hints = this.hints_;n return opt_hints;n }n else {n return this.hints_.slice();n }n };n /**n * Calculate the extent for the current view state and the passed size.n * The size is the pixel dimensions of the box into which the calculated extentn * should fit. In most cases you want to get the extent of the entire map,n * that is `map.getSize()`.n * @param {import("./size.js").Size=} opt_size Box pixel size. If not provided, the size of then * first map that uses this view will be used.n * @return {import("./extent.js").Extent} Extent.n * @apin */n View.prototype.calculateExtent = function (opt_size) {n var extent = this.calculateExtentInternal(opt_size);n return toUserExtent(extent, this.getProjection());n };n /**n * @param {import("./size.js").Size=} opt_size Box pixel size. If not provided, the size of then * first map that uses this view will be used.n * @return {import("./extent.js").Extent} Extent.n */n View.prototype.calculateExtentInternal = function (opt_size) {n var size = opt_size || this.getSizeFromViewport_();n var center = /** @type {!import("./coordinate.js").Coordinate} */ (this.getCenterInternal());n assert(center, 1); // The view center is not definedn var resolution = /** @type {!number} */ (this.getResolution());n assert(resolution !== undefined, 2); // The view resolution is not definedn var rotation = /** @type {!number} */ (this.getRotation());n assert(rotation !== undefined, 3); // The view rotation is not definedn return getForViewAndSize(center, resolution, rotation, size);n };n /**n * Get the maximum resolution of the view.n * @return {number} The maximum resolution of the view.n * @apin */n View.prototype.getMaxResolution = function () {n return this.maxResolution_;n };n /**n * Get the minimum resolution of the view.n * @return {number} The minimum resolution of the view.n * @apin */n View.prototype.getMinResolution = function () {n return this.minResolution_;n };n /**n * Get the maximum zoom level for the view.n * @return {number} The maximum zoom level.n * @apin */n View.prototype.getMaxZoom = function () {n return /** @type {number} */ (this.getZoomForResolution(this.minResolution_));n };n /**n * Set a new maximum zoom level for the view.n * @param {number} zoom The maximum zoom level.n * @apin */n View.prototype.setMaxZoom = function (zoom) {n this.applyOptions_(this.getUpdatedOptions_({ maxZoom: zoom }));n };n /**n * Get the minimum zoom level for the view.n * @return {number} The minimum zoom level.n * @apin */n View.prototype.getMinZoom = function () {n return /** @type {number} */ (this.getZoomForResolution(this.maxResolution_));n };n /**n * Set a new minimum zoom level for the view.n * @param {number} zoom The minimum zoom level.n * @apin */n View.prototype.setMinZoom = function (zoom) {n this.applyOptions_(this.getUpdatedOptions_({ minZoom: zoom }));n };n /**n * Set whether the view shoud allow intermediary zoom levels.n * @param {boolean} enabled Whether the resolution is constrained.n * @apin */n View.prototype.setConstrainResolution = function (enabled) {n this.applyOptions_(this.getUpdatedOptions_({ constrainResolution: enabled }));n };n /**n * Get the view projection.n * @return {import("./proj/Projection.js").default} The projection of the view.n * @apin */n View.prototype.getProjection = function () {n return this.projection_;n };n /**n * Get the view resolution.n * @return {number|undefined} The resolution of the view.n * @observablen * @apin */n View.prototype.getResolution = function () {n return /** @type {number|undefined} */ (this.get(ViewProperty.RESOLUTION));n };n /**n * Get the resolutions for the view. This returns the array of resolutionsn * passed to the constructor of the View, or undefined if none were given.n * @return {Array<number>|undefined} The resolutions of the view.n * @apin */n View.prototype.getResolutions = function () {n return this.resolutions_;n };n /**n * Get the resolution for a provided extent (in map units) and size (in pixels).n * @param {import("./extent.js").Extent} extent Extent.n * @param {import("./size.js").Size=} opt_size Box pixel size.n * @return {number} The resolution at which the provided extent will render atn * the given size.n * @apin */n View.prototype.getResolutionForExtent = function (extent, opt_size) {n return this.getResolutionForExtentInternal(fromUserExtent(extent, this.getProjection()), opt_size);n };n /**n * Get the resolution for a provided extent (in map units) and size (in pixels).n * @param {import("./extent.js").Extent} extent Extent.n * @param {import("./size.js").Size=} opt_size Box pixel size.n * @return {number} The resolution at which the provided extent will render atn * the given size.n */n View.prototype.getResolutionForExtentInternal = function (extent, opt_size) {n var size = opt_size || this.getSizeFromViewport_();n var xResolution = getWidth(extent) / size;n var yResolution = getHeight(extent) / size;n return Math.max(xResolution, yResolution);n };n /**n * Return a function that returns a value between 0 and 1 for an * resolution. Exponential scaling is assumed.n * @param {number=} opt_power Power.n * @return {function(number): number} Resolution for value function.n */n View.prototype.getResolutionForValueFunction = function (opt_power) {n var power = opt_power || 2;n var maxResolution = this.maxResolution_;n var minResolution = this.minResolution_;n var max = Math.log(maxResolution / minResolution) / Math.log(power);n return (n /**n * @param {number} value Value.n * @return {number} Resolution.n */n function (value) {n var resolution = maxResolution / Math.pow(power, value * max);n return resolution;n });n };n /**n * Get the view rotation.n * @return {number} The rotation of the view in radians.n * @observablen * @apin */n View.prototype.getRotation = function () {n return /** @type {number} */ (this.get(ViewProperty.ROTATION));n };n /**n * Return a function that returns a resolution for a value betweenn * 0 and 1. Exponential scaling is assumed.n * @param {number=} opt_power Power.n * @return {function(number): number} Value for resolution function.n */n View.prototype.getValueForResolutionFunction = function (opt_power) {n var power = opt_power || 2;n var maxResolution = this.maxResolution_;n var minResolution = this.minResolution_;n var max = Math.log(maxResolution / minResolution) / Math.log(power);n return (n /**n * @param {number} resolution Resolution.n * @return {number} Value.n */n function (resolution) {n var value = (Math.log(maxResolution / resolution) / Math.log(power)) / max;n return value;n });n };n /**n * @return {State} View state.n */n View.prototype.getState = function () {n var center = /** @type {import("./coordinate.js").Coordinate} */ (this.getCenterInternal());n var projection = this.getProjection();n var resolution = /** @type {number} */ (this.getResolution());n var rotation = this.getRotation();n return {n center: center.slice(0),n projection: projection !== undefined ? projection : null,n resolution: resolution,n rotation: rotation,n zoom: this.getZoom()n };n };n /**n * Get the current zoom level. This method may return non-integer zoom levelsn * if the view does not constrain the resolution, or if an interaction orn * animation is underway.n * @return {number|undefined} Zoom.n * @apin */n View.prototype.getZoom = function () {n var zoom;n var resolution = this.getResolution();n if (resolution !== undefined) {n zoom = this.getZoomForResolution(resolution);n }n return zoom;n };n /**n * Get the zoom level for a resolution.n * @param {number} resolution The resolution.n * @return {number|undefined} The zoom level for the provided resolution.n * @apin */n View.prototype.getZoomForResolution = function (resolution) {n var offset = this.minZoom_ || 0;n var max, zoomFactor;n if (this.resolutions_) {n var nearest = linearFindNearest(this.resolutions_, resolution, 1);n offset = nearest;n max = this.resolutions_;n if (nearest == this.resolutions_.length - 1) {n zoomFactor = 2;n }n else {n zoomFactor = max / this.resolutions_[nearest + 1];n }n }n else {n max = this.maxResolution_;n zoomFactor = this.zoomFactor_;n }n return offset + Math.log(max / resolution) / Math.log(zoomFactor);n };n /**n * Get the resolution for a zoom level.n * @param {number} zoom Zoom level.n * @return {number} The view resolution for the provided zoom level.n * @apin */n View.prototype.getResolutionForZoom = function (zoom) {n if (this.resolutions_) {n if (this.resolutions_.length <= 1) {n return 0;n }n var baseLevel = clamp(Math.floor(zoom), 0, this.resolutions_.length - 2);n var zoomFactor = this.resolutions_ / this.resolutions_[baseLevel + 1];n return this.resolutions_ / Math.pow(zoomFactor, clamp(zoom - baseLevel, 0, 1));n }n else {n return this.maxResolution_ / Math.pow(this.zoomFactor_, zoom - this.minZoom_);n }n };n /**n * Fit the given geometry or extent based on the given map size and border.n * The size is pixel dimensions of the box to fit the extent into.n * In most cases you will want to use the map size, that is `map.getSize()`.n * Takes care of the map angle.n * @param {import("./geom/SimpleGeometry.js").default|import("./extent.js").Extent} geometryOrExtent The geometry orn * extent to fit the view to.n * @param {FitOptions=} opt_options Options.n * @apin */n View.prototype.fit = function (geometryOrExtent, opt_options) {n var options = assign({ size: this.getSizeFromViewport_() }, opt_options || {});n /** @type {import("./geom/SimpleGeometry.js").default} */n var geometry;n assert(Array.isArray(geometryOrExtent) || typeof /** @type {?} */ (geometryOrExtent).getSimplifiedGeometry === 'function', 24); // Invalid extent or geometry provided as `geometry`n if (Array.isArray(geometryOrExtent)) {n assert(!isEmpty(geometryOrExtent), 25); // Cannot fit empty extent provided as `geometry`n var extent = fromUserExtent(geometryOrExtent, this.getProjection());n geometry = polygonFromExtent(extent);n }n else if (geometryOrExtent.getType() === GeometryType.CIRCLE) {n var extent = fromUserExtent(geometryOrExtent.getExtent(), this.getProjection());n geometry = polygonFromExtent(extent);n geometry.rotate(this.getRotation(), getCenter(extent));n }n else {n var userProjection = getUserProjection();n if (userProjection) {n geometry = /** @type {import("./geom/SimpleGeometry.js").default} */ (geometry.clone().transform(userProjection, this.getProjection()));n }n else {n geometry = geometryOrExtent;n }n }n this.fitInternal(geometry, options);n };n /**n * @param {import("./geom/SimpleGeometry.js").default} geometry The geometry.n * @param {FitOptions=} opt_options Options.n */n View.prototype.fitInternal = function (geometry, opt_options) {n var options = opt_options || {};n var size = options.size;n if (!size) {n size = this.getSizeFromViewport_();n }n var padding = options.padding !== undefined ? options.padding : [0, 0, 0, 0];n var nearest = options.nearest !== undefined ? options.nearest : false;n var minResolution;n if (options.minResolution !== undefined) {n minResolution = options.minResolution;n }n else if (options.maxZoom !== undefined) {n minResolution = this.getResolutionForZoom(options.maxZoom);n }n else {n minResolution = 0;n }n var coords = geometry.getFlatCoordinates();n // calculate rotated extentn var rotation = this.getRotation();n var cosAngle = Math.cos(-rotation);n var sinAngle = Math.sin(-rotation);n var minRotX = +Infinity;n var minRotY = +Infinity;n var maxRotX = -Infinity;n var maxRotY = -Infinity;n var stride = geometry.getStride();n for (var i = 0, ii = coords.length; i < ii; i += stride) {n var rotX = coords * cosAngle - coords[i + 1] * sinAngle;n var rotY = coords * sinAngle + coords[i + 1] * cosAngle;n minRotX = Math.min(minRotX, rotX);n minRotY = Math.min(minRotY, rotY);n maxRotX = Math.max(maxRotX, rotX);n maxRotY = Math.max(maxRotY, rotY);n }n // calculate resolutionn var resolution = this.getResolutionForExtentInternal([minRotX, minRotY, maxRotX, maxRotY], [size - padding - padding, size - padding - padding]);n resolution = isNaN(resolution) ? minResolution :n Math.max(resolution, minResolution);n resolution = this.getConstrainedResolution(resolution, nearest ? 0 : 1);n // calculate centern sinAngle = -sinAngle; // go back to original rotationn var centerRotX = (minRotX + maxRotX) / 2;n var centerRotY = (minRotY + maxRotY) / 2;n centerRotX += (padding - padding) / 2 * resolution;n centerRotY += (padding - padding) / 2 * resolution;n var centerX = centerRotX * cosAngle - centerRotY * sinAngle;n var centerY = centerRotY * cosAngle + centerRotX * sinAngle;n var center = [centerX, centerY];n var callback = options.callback ? options.callback : VOID;n if (options.duration !== undefined) {n this.animateInternal({n resolution: resolution,n center: this.getConstrainedCenter(center, resolution),n duration: options.duration,n easing: options.easingn }, callback);n }n else {n this.targetResolution_ = resolution;n this.targetCenter_ = center;n this.applyTargetState_(false, true);n animationCallback(callback, true);n }n };n /**n * Center on coordinate and view position.n * @param {import("./coordinate.js").Coordinate} coordinate Coordinate.n * @param {import("./size.js").Size} size Box pixel size.n * @param {import("./pixel.js").Pixel} position Position on the view to center on.n * @apin */n View.prototype.centerOn = function (coordinate, size, position) {n this.centerOnInternal(fromUserCoordinate(coordinate, this.getProjection()), size, position);n };n /**n * @param {import("./coordinate.js").Coordinate} coordinate Coordinate.n * @param {import("./size.js").Size} size Box pixel size.n * @param {import("./pixel.js").Pixel} position Position on the view to center on.n */n View.prototype.centerOnInternal = function (coordinate, size, position) {n // calculate rotated positionn var rotation = this.getRotation();n var cosAngle = Math.cos(-rotation);n var sinAngle = Math.sin(-rotation);n var rotX = coordinate * cosAngle - coordinate * sinAngle;n var rotY = coordinate * cosAngle + coordinate * sinAngle;n var resolution = this.getResolution();n rotX += (size / 2 - position) * resolution;n rotY += (position - size / 2) * resolution;n // go back to original anglen sinAngle = -sinAngle; // go back to original rotationn var centerX = rotX * cosAngle - rotY * sinAngle;n var centerY = rotY * cosAngle + rotX * sinAngle;n this.setCenterInternal([centerX, centerY]);n };n /**n * @return {boolean} Is defined.n */n View.prototype.isDef = function () {n return !!this.getCenterInternal() && this.getResolution() !== undefined;n };n /**n * Adds relative coordinates to the center of the view. Any extent constraint will apply.n * @param {import("./coordinate.js").Coordinate} deltaCoordinates Relative value to add.n * @apin */n View.prototype.adjustCenter = function (deltaCoordinates) {n var center = toUserCoordinate(this.targetCenter_, this.getProjection());n this.setCenter([center + deltaCoordinates, center + deltaCoordinates]);n };n /**n * Adds relative coordinates to the center of the view. Any extent constraint will apply.n * @param {import("./coordinate.js").Coordinate} deltaCoordinates Relative value to add.n */n View.prototype.adjustCenterInternal = function (deltaCoordinates) {n var center = this.targetCenter_;n this.setCenterInternal([center + deltaCoordinates, center + deltaCoordinates]);n };n /**n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolutionn * constraint will apply.n * @param {number} ratio The ratio to apply on the view resolution.n * @param {import("./coordinate.js").Coordinate=} opt_anchor The origin of the transformation.n * @apin */n View.prototype.adjustResolution = function (ratio, opt_anchor) {n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());n this.adjustResolutionInternal(ratio, anchor);n };n /**n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolutionn * constraint will apply.n * @param {number} ratio The ratio to apply on the view resolution.n * @param {import("./coordinate.js").Coordinate=} opt_anchor The origin of the transformation.n */n View.prototype.adjustResolutionInternal = function (ratio, opt_anchor) {n var isMoving = this.getAnimating() || this.getInteracting();n var size = this.getSizeFromViewport_(this.getRotation());n var newResolution = this.constraints_.resolution(this.targetResolution_ * ratio, 0, size, isMoving);n if (opt_anchor !== undefined) {n this.targetCenter_ = this.calculateCenterZoom(newResolution, opt_anchor);n }n this.targetResolution_ *= ratio;n this.applyTargetState_();n };n /**n * Adds a value to the view zoom level, optionally using an anchor. Any resolutionn * constraint will apply.n * @param {number} delta Relative value to add to the zoom level.n * @param {import("./coordinate.js").Coordinate=} opt_anchor The origin of the transformation.n * @apin */n View.prototype.adjustZoom = function (delta, opt_anchor) {n this.adjustResolution(Math.pow(this.zoomFactor_, -delta), opt_anchor);n };n /**n * Adds a value to the view rotation, optionally using an anchor. Any rotationn * constraint will apply.n * @param {number} delta Relative value to add to the zoom rotation, in radians.n * @param {import("./coordinate.js").Coordinate=} opt_anchor The rotation center.n * @apin */n View.prototype.adjustRotation = function (delta, opt_anchor) {n if (opt_anchor) {n opt_anchor = fromUserCoordinate(opt_anchor, this.getProjection());n }n this.adjustRotationInternal(delta, opt_anchor);n };n /**n * @param {number} delta Relative value to add to the zoom rotation, in radians.n * @param {import("./coordinate.js").Coordinate=} opt_anchor The rotation center.n */n View.prototype.adjustRotationInternal = function (delta, opt_anchor) {n var isMoving = this.getAnimating() || this.getInteracting();n var newRotation = this.constraints_.rotation(this.targetRotation_ + delta, isMoving);n if (opt_anchor !== undefined) {n this.targetCenter_ = this.calculateCenterRotate(newRotation, opt_anchor);n }n this.targetRotation_ += delta;n this.applyTargetState_();n };n /**n * Set the center of the current view. Any extent constraint will apply.n * @param {import("./coordinate.js").Coordinate|undefined} center The center of the view.n * @observablen * @apin */n View.prototype.setCenter = function (center) {n this.setCenterInternal(fromUserCoordinate(center, this.getProjection()));n };n /**n * Set the center using the view projection (not the user projection).n * @param {import("./coordinate.js").Coordinate|undefined} center The center of the view.n */n View.prototype.setCenterInternal = function (center) {n this.targetCenter_ = center;n this.applyTargetState_();n };n /**n * @param {ViewHint} hint Hint.n * @param {number} delta Delta.n * @return {number} New value.n */n View.prototype.setHint = function (hint, delta) {n this.hints_ += delta;n this.changed();n return this.hints_;n };n /**n * Set the resolution for this view. Any resolution constraint will apply.n * @param {number|undefined} resolution The resolution of the view.n * @observablen * @apin */n View.prototype.setResolution = function (resolution) {n this.targetResolution_ = resolution;n this.applyTargetState_();n };n /**n * Set the rotation for this view. Any rotation constraint will apply.n * @param {number} rotation The rotation of the view in radians.n * @observablen * @apin */n View.prototype.setRotation = function (rotation) {n this.targetRotation_ = rotation;n this.applyTargetState_();n };n /**n * Zoom to a specific zoom level. Any resolution constrain will apply.n * @param {number} zoom Zoom level.n * @apin */n View.prototype.setZoom = function (zoom) {n this.setResolution(this.getResolutionForZoom(zoom));n };n /**n * Recompute rotation/resolution/center based on target values.n * Note: we have to compute rotation first, then resolution and center considering thatn * parameters can influence one another in case a view extent constraint is present.n * @param {boolean=} opt_doNotCancelAnims Do not cancel animations.n * @param {boolean=} opt_forceMoving Apply constraints as if the view is moving.n * @privaten */n View.prototype.applyTargetState_ = function (opt_doNotCancelAnims, opt_forceMoving) {n var isMoving = this.getAnimating() || this.getInteracting() || opt_forceMoving;n // compute rotationn var newRotation = this.constraints_.rotation(this.targetRotation_, isMoving);n var size = this.getSizeFromViewport_(newRotation);n var newResolution = this.constraints_.resolution(this.targetResolution_, 0, size, isMoving);n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size, isMoving);n if (this.get(ViewProperty.ROTATION) !== newRotation) {n this.set(ViewProperty.ROTATION, newRotation);n }n if (this.get(ViewProperty.RESOLUTION) !== newResolution) {n this.set(ViewProperty.RESOLUTION, newResolution);n }n if (!this.get(ViewProperty.CENTER) || !equals(this.get(ViewProperty.CENTER), newCenter)) {n this.set(ViewProperty.CENTER, newCenter);n }n if (this.getAnimating() && !opt_doNotCancelAnims) {n this.cancelAnimations();n }n };n /**n * If any constraints need to be applied, an animation will be triggered.n * This is typically done on interaction end.n * Note: calling this with a duration of 0 will apply the constrained values straight away,n * without animation.n * @param {number=} opt_duration The animation duration in ms.n * @param {number=} opt_resolutionDirection Which direction to zoom.n * @param {import("./coordinate.js").Coordinate=} opt_anchor The origin of the transformation.n */n View.prototype.resolveConstraints = function (opt_duration, opt_resolutionDirection, opt_anchor) {n var duration = opt_duration !== undefined ? opt_duration : 200;n var direction = opt_resolutionDirection || 0;n var newRotation = this.constraints_.rotation(this.targetRotation_);n var size = this.getSizeFromViewport_(newRotation);n var newResolution = this.constraints_.resolution(this.targetResolution_, direction, size);n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size);n if (duration === 0) {n this.targetResolution_ = newResolution;n this.targetRotation_ = newRotation;n this.targetCenter_ = newCenter;n this.applyTargetState_();n return;n }n if (this.getResolution() !== newResolution ||n this.getRotation() !== newRotation ||n !this.getCenterInternal() ||n !equals(this.getCenterInternal(), newCenter)) {n if (this.getAnimating()) {n this.cancelAnimations();n }n this.animateInternal({n rotation: newRotation,n center: newCenter,n resolution: newResolution,n duration: duration,n easing: easeOut,n anchor: opt_anchorn });n }n };n /**n * Notify the View that an interaction has started.n * The view state will be resolved to a stable one if neededn * (depending on its constraints).n * @apin */n View.prototype.beginInteraction = function () {n this.resolveConstraints(0);n this.setHint(ViewHint.INTERACTING, 1);n };n /**n * Notify the View that an interaction has ended. The view state will be resolvedn * to a stable one if needed (depending on its constraints).n * @param {number=} opt_duration Animation duration in ms.n * @param {number=} opt_resolutionDirection Which direction to zoom.n * @param {import("./coordinate.js").Coordinate=} opt_anchor The origin of the transformation.n * @apin */n View.prototype.endInteraction = function (opt_duration, opt_resolutionDirection, opt_anchor) {n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());n this.endInteractionInternal(opt_duration, opt_resolutionDirection, anchor);n };n /**n * Notify the View that an interaction has ended. The view state will be resolvedn * to a stable one if needed (depending on its constraints).n * @param {number=} opt_duration Animation duration in ms.n * @param {number=} opt_resolutionDirection Which direction to zoom.n * @param {import("./coordinate.js").Coordinate=} opt_anchor The origin of the transformation.n */n View.prototype.endInteractionInternal = function (opt_duration, opt_resolutionDirection, opt_anchor) {n this.setHint(ViewHint.INTERACTING, -1);n this.resolveConstraints(opt_duration, opt_resolutionDirection, opt_anchor);n };n /**n * Get a valid position for the view center according to the current constraints.n * @param {import("./coordinate.js").Coordinate|undefined} targetCenter Target center position.n * @param {number=} opt_targetResolution Target resolution. If not supplied, the current one will be used.n * This is useful to guess a valid center position at a different zoom level.n * @return {import("./coordinate.js").Coordinate|undefined} Valid center position.n */n View.prototype.getConstrainedCenter = function (targetCenter, opt_targetResolution) {n var size = this.getSizeFromViewport_(this.getRotation());n return this.constraints_.center(targetCenter, opt_targetResolution || this.getResolution(), size);n };n /**n * Get a valid zoom level according to the current view constraints.n * @param {number|undefined} targetZoom Target zoom.n * @param {number=} [opt_direction=0] Indicate which resolution should be usedn * by a renderer if the view resolution does not match any resolution of the tile source.n * If 0, the nearest resolution will be used. If 1, the nearest lower resolutionn * will be used. If -1, the nearest higher resolution will be used.n * @return {number|undefined} Valid zoom level.n */n View.prototype.getConstrainedZoom = function (targetZoom, opt_direction) {n var targetRes = this.getResolutionForZoom(targetZoom);n return this.getZoomForResolution(this.getConstrainedResolution(targetRes, opt_direction));n };n /**n * Get a valid resolution according to the current view constraints.n * @param {number|undefined} targetResolution Target resolution.n * @param {number=} [opt_direction=0] Indicate which resolution should be usedn * by a renderer if the view resolution does not match any resolution of the tile source.n * If 0, the nearest resolution will be used. If 1, the nearest lower resolutionn * will be used. If -1, the nearest higher resolution will be used.n * @return {number|undefined} Valid resolution.n */n View.prototype.getConstrainedResolution = function (targetResolution, opt_direction) {n var direction = opt_direction || 0;n var size = this.getSizeFromViewport_(this.getRotation());n return this.constraints_.resolution(targetResolution, direction, size);n };n return View;n}(BaseObject));n/**n * @param {Function} callback Callback.n * @param {*} returnValue Return value.n */nfunction animationCallback(callback, returnValue) {n setTimeout(function () {n callback(returnValue);n }, 0);n}n/**n * @param {ViewOptions} options View options.n * @return {import("./centerconstraint.js").Type} The constraint.n */nexport function createCenterConstraint(options) {n if (options.extent !== undefined) {n var smooth = options.smoothExtentConstraint !== undefined ? options.smoothExtentConstraint : true;n return createExtent(options.extent, options.constrainOnlyCenter, smooth);n }n var projection = createProjection(options.projection, 'EPSG:3857');n if (options.multiWorld !== true && projection.isGlobal()) {n var extent = projection.getExtent().slice();n extent = -Infinity;n extent = Infinity;n return createExtent(extent, false, false);n }n return centerNone;n}n/**n * @param {ViewOptions} options View options.n * @return {{constraint: import("./resolutionconstraint.js").Type, maxResolution: number,n * minResolution: number, minZoom: number, zoomFactor: number}} The constraint.n */nexport function createResolutionConstraint(options) {n var resolutionConstraint;n var maxResolution;n var minResolution;n // TODO: move these to be ol constantsn // see github.com/openlayers/openlayers/issues/2076n var defaultMaxZoom = 28;n var defaultZoomFactor = 2;n var minZoom = options.minZoom !== undefined ?n options.minZoom : DEFAULT_MIN_ZOOM;n var maxZoom = options.maxZoom !== undefined ?n options.maxZoom : defaultMaxZoom;n var zoomFactor = options.zoomFactor !== undefined ?n options.zoomFactor : defaultZoomFactor;n var multiWorld = options.multiWorld !== undefined ?n options.multiWorld : false;n var smooth = options.smoothResolutionConstraint !== undefined ? options.smoothResolutionConstraint : true;n var projection = createProjection(options.projection, 'EPSG:3857');n var projExtent = projection.getExtent();n var constrainOnlyCenter = options.constrainOnlyCenter;n var extent = options.extent;n if (!multiWorld && !extent && projection.isGlobal()) {n constrainOnlyCenter = false;n extent = projExtent;n }n if (options.resolutions !== undefined) {n var resolutions = options.resolutions;n maxResolution = resolutions;n minResolution = resolutions !== undefined ?n resolutions : resolutions[resolutions.length - 1];n if (options.constrainResolution) {n resolutionConstraint = createSnapToResolutions(resolutions, smooth, !constrainOnlyCenter && extent);n }n else {n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent);n }n }n else {n // calculate the default min and max resolutionn var size = !projExtent ?n // use an extent that can fit the whole world if need ben 360 * METERS_PER_UNIT /n projection.getMetersPerUnit() :n Math.max(getWidth(projExtent), getHeight(projExtent));n var defaultMaxResolution = size / DEFAULT_TILE_SIZE / Math.pow(defaultZoomFactor, DEFAULT_MIN_ZOOM);n var defaultMinResolution = defaultMaxResolution / Math.pow(defaultZoomFactor, defaultMaxZoom - DEFAULT_MIN_ZOOM);n // user provided maxResolution takes precedencen maxResolution = options.maxResolution;n if (maxResolution !== undefined) {n minZoom = 0;n }n else {n maxResolution = defaultMaxResolution / Math.pow(zoomFactor, minZoom);n }n // user provided minResolution takes precedencen minResolution = options.minResolution;n if (minResolution === undefined) {n if (options.maxZoom !== undefined) {n if (options.maxResolution !== undefined) {n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom);n }n else {n minResolution = defaultMaxResolution / Math.pow(zoomFactor, maxZoom);n }n }n else {n minResolution = defaultMinResolution;n }n }n // given discrete zoom levels, minResolution may be different than providedn maxZoom = minZoom + Math.floor(Math.log(maxResolution / minResolution) / Math.log(zoomFactor));n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);n if (options.constrainResolution) {n resolutionConstraint = createSnapToPower(zoomFactor, maxResolution, minResolution, smooth, !constrainOnlyCenter && extent);n }n else {n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent);n }n }n return { constraint: resolutionConstraint, maxResolution: maxResolution,n minResolution: minResolution, minZoom: minZoom, zoomFactor: zoomFactor };n}n/**n * @param {ViewOptions} options View options.n * @return {import("./rotationconstraint.js").Type} Rotation constraint.n */nexport function createRotationConstraint(options) {n var enableRotation = options.enableRotation !== undefined ?n options.enableRotation : true;n if (enableRotation) {n var constrainRotation = options.constrainRotation;n if (constrainRotation === undefined || constrainRotation === true) {n return createSnapToZero();n }n else if (constrainRotation === false) {n return rotationNone;n }n else if (typeof constrainRotation === 'number') {n return createSnapToN(constrainRotation);n }n else {n return rotationNone;n }n }n else {n return disable;n }n}n/**n * Determine if an animation involves no view change.n * @param {Animation} animation The animation.n * @return {boolean} The animation involves no view change.n */nexport function isNoopAnimation(animation) {n if (animation.sourceCenter && animation.targetCenter) {n if (!coordinatesEqual(animation.sourceCenter, animation.targetCenter)) {n return false;n }n }n if (animation.sourceResolution !== animation.targetResolution) {n return false;n }n if (animation.sourceRotation !== animation.targetRotation) {n return false;n }n return true;n}nexport default View;n//# sourceMappingURL=View.js.map”,“/**n * @module ol/domn */n/**n * Create an html canvas element and returns its 2d context.n * @param {number=} opt_width Canvas width.n * @param {number=} opt_height Canvas height.n * @return {CanvasRenderingContext2D} The context.n */nexport function createCanvasContext2D(opt_width, opt_height) {n var canvas = document.createElement('canvas');n if (opt_width) {n canvas.width = opt_width;n }n if (opt_height) {n canvas.height = opt_height;n }n return canvas.getContext('2d');n}n/**n * Get the current computed width for the given element including margin,n * padding and border.n * Equivalent to jQuery's `$(el).outerWidth(true)`.n * @param {!HTMLElement} element Element.n * @return {number} The width.n */nexport function outerWidth(element) {n var width = element.offsetWidth;n var style = getComputedStyle(element);n width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);n return width;n}n/**n * Get the current computed height for the given element including margin,n * padding and border.n * Equivalent to jQuery's `$(el).outerHeight(true)`.n * @param {!HTMLElement} element Element.n * @return {number} The height.n */nexport function outerHeight(element) {n var height = element.offsetHeight;n var style = getComputedStyle(element);n height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);n return height;n}n/**n * @param {Node} newNode Node to replace old noden * @param {Node} oldNode The node to be replacedn */nexport function replaceNode(newNode, oldNode) {n var parent = oldNode.parentNode;n if (parent) {n parent.replaceChild(newNode, oldNode);n }n}n/**n * @param {Node} node The node to remove.n * @returns {Node} The node that was removed or null.n */nexport function removeNode(node) {n return node && node.parentNode ? node.parentNode.removeChild(node) : null;n}n/**n * @param {Node} node The node to remove the children from.n */nexport function removeChildren(node) {n while (node.lastChild) {n node.removeChild(node.lastChild);n }n}n/**n * Transform the children of a parent node so they match then * provided list of children. This function aims to efficientlyn * remove, add, and reorder child nodes while maintaining a simplen * implementation (it is not guaranteed to minimize DOM operations).n * @param {Node} node The parent node whose children need reworking.n * @param {Array<Node>} 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;n var newChild = children;n // check if our work is donen if (!oldChild && !newChild) {n break;n }n // check if children matchn if (oldChild === newChild) {n continue;n }n // check if a new child needs to be addedn if (!oldChild) {n node.appendChild(newChild);n continue;n }n // check if an old child needs to be removedn if (!newChild) {n node.removeChild(oldChild);n –i;n continue;n }n // reordern node.insertBefore(newChild, oldChild);n }n}n//# sourceMappingURL=dom.js.map”,“/**n * @module ol/layer/Propertyn */n/**n * @enum {string}n */nexport default {n OPACITY: 'opacity',n VISIBLE: 'visible',n EXTENT: 'extent',n Z_INDEX: 'zIndex',n MAX_RESOLUTION: 'maxResolution',n MIN_RESOLUTION: 'minResolution',n MAX_ZOOM: 'maxZoom',n MIN_ZOOM: 'minZoom',n SOURCE: 'source'n};n//# sourceMappingURL=Property.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/layer/Basen */nimport { abstract } from '../util.js';nimport BaseObject from '../Object.js';nimport LayerProperty from './Property.js';nimport { clamp } from '../math.js';nimport { assign } from '../obj.js';nimport { assert } from '../asserts.js';n/**n * @typedef {Object} Optionsn * @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 ben * rendered outside of this extent.n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layersn * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumedn * 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 ben * visible.n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer willn * be visible.n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will ben * visible.n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer willn * be visible.n */n/**n * @classdescn * Abstract base class; normally only used for creating subclasses and notn * instantiated in apps.n * Note that with {@link module:ol/layer/Base} and all its subclasses, any property set inn * the options is set as a {@link module:ol/Object} property on the layer object, son * is observable, and has get/set accessors.n *n * @apin */nvar BaseLayer = /** @class */ (function (_super) {n __extends(BaseLayer, _super);n /**n * @param {Options} options Layer options.n */n function BaseLayer(options) {n var _this = _super.call(this) || this;n /**n * @type {Object<string, *>}n */n var properties = assign({}, options);n properties =n options.opacity !== undefined ? options.opacity : 1;n assert(typeof properties === 'number', 64); // Layer opacity must be a numbern properties =n options.visible !== undefined ? options.visible : true;n properties = options.zIndex;n properties =n options.maxResolution !== undefined ? options.maxResolution : Infinity;n properties =n options.minResolution !== undefined ? options.minResolution : 0;n properties =n options.minZoom !== undefined ? options.minZoom : -Infinity;n properties =n options.maxZoom !== undefined ? options.maxZoom : Infinity;n /**n * @type {string}n * @privaten */n this.className = properties.className !== undefined ? options.className : 'ol-layer';n delete properties.className;n _this.setProperties(properties);n /**n * @type {import("./Layer.js").State}n * @privaten */n this.state = null;n return _this;n }n /**n * @return {string} CSS class name.n */n BaseLayer.prototype.getClassName = function () {n return this.className_;n };n /**n * This method is not meant to be called by layers or layer renderers because the staten * is incorrect if the layer is included in a layer group.n *n * @param {boolean=} opt_managed Layer is managed.n * @return {import("./Layer.js").State} Layer state.n */n BaseLayer.prototype.getLayerState = function (opt_managed) {n /** @type {import("./Layer.js").State} */n var state = this.state_ || /** @type {?} */ ({n layer: this,n managed: opt_managed === undefined ? true : opt_managedn });n var zIndex = this.getZIndex();n state.opacity = clamp(Math.round(this.getOpacity() * 100) / 100, 0, 1);n state.sourceState = this.getSourceState();n state.visible = this.getVisible();n state.extent = this.getExtent();n state.zIndex = zIndex !== undefined ? zIndex : (state.managed === false ? Infinity : 0);n state.maxResolution = this.getMaxResolution();n state.minResolution = Math.max(this.getMinResolution(), 0);n state.minZoom = this.getMinZoom();n state.maxZoom = this.getMaxZoom();n this.state_ = state;n return state;n };n /**n * @abstractn * @param {Array<import("./Layer.js").default>=} opt_array Array of layers (to ben * modified in place).n * @return {Array<import("./Layer.js").default>} Array of layers.n */n BaseLayer.prototype.getLayersArray = function (opt_array) {n return abstract();n };n /**n * @abstractn * @param {Array<import("./Layer.js").State>=} opt_states Optional list of layern * states (to be modified in place).n * @return {Array<import("./Layer.js").State>} 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 itn * will be visible regardless of extent.n * @return {import("../extent.js").Extent|undefined} The layer extent.n * @observablen * @apin */n BaseLayer.prototype.getExtent = function () {n return (n /** @type {import("../extent.js").Extent|undefined} */ (this.get(LayerProperty.EXTENT)));n };n /**n * Return the maximum resolution of the layer.n * @return {number} The maximum resolution of the layer.n * @observablen * @apin */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 * @observablen * @apin */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 * @observablen * @apin */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 * @observablen * @apin */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 * @observablen * @apin */n BaseLayer.prototype.getOpacity = function () {n return /** @type {number} */ (this.get(LayerProperty.OPACITY));n };n /**n * @abstractn * @return {import("../source/State.js").default} Source state.n */n BaseLayer.prototype.getSourceState = function () {n return abstract();n };n /**n * Return the visibility of the layer (`true` or `false`).n * @return {boolean} The visibility of the layer.n * @observablen * @apin */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 beforen * rendering. The default Z-index is 0.n * @return {number} The Z-index of the layer.n * @observablen * @apin */n BaseLayer.prototype.getZIndex = function () {n return /** @type {number} */ (this.get(LayerProperty.Z_INDEX));n };n /**n * Set the extent at which the layer is visible. If `undefined`, the layern * will be visible at all extents.n * @param {import("../extent.js").Extent|undefined} extent The extent of the layer.n * @observablen * @apin */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 * @observablen * @apin */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 * @observablen * @apin */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 then * view zoom level, which may be different from a tile source zoom level.n * @param {number} maxZoom The maximum zoom of the layer.n * @observablen * @apin */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 then * view zoom level, which may be different from a tile source zoom level.n * @param {number} minZoom The minimum zoom of the layer.n * @observablen * @apin */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 * @observablen * @apin */n BaseLayer.prototype.setOpacity = function (opacity) {n assert(typeof opacity === 'number', 64); // Layer opacity must be a numbern 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 * @observablen * @apin */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 * @observablen * @apin */n BaseLayer.prototype.setZIndex = function (zindex) {n this.set(LayerProperty.Z_INDEX, zindex);n };n /**n * @inheritDocn */n BaseLayer.prototype.disposeInternal = function () {n if (this.state_) {n this.state_.layer = null;n this.state_ = null;n }n _super.prototype.disposeInternal.call(this);n };n return BaseLayer;n}(BaseObject));nexport default BaseLayer;n//# sourceMappingURL=Base.js.map”,“/**n * @module ol/source/Staten */n/**n * @enum {string}n * State of the source, one of 'undefined', 'loading', 'ready' or 'error'.n */nexport default {n UNDEFINED: 'undefined',n LOADING: 'loading',n READY: 'ready',n ERROR: 'error'n};n//# sourceMappingURL=State.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/layer/Groupn */nimport { getUid } from '../util.js';nimport Collection from '../Collection.js';nimport CollectionEventType from '../CollectionEventType.js';nimport { getChangeEventType } from '../Object.js';nimport ObjectEventType from '../ObjectEventType.js';nimport { assert } from '../asserts.js';nimport { listen, unlistenByKey } from '../events.js';nimport EventType from '../events/EventType.js';nimport { getIntersection } from '../extent.js';nimport BaseLayer from './Base.js';nimport { assign, clear } from '../obj.js';nimport SourceState from '../source/State.js';n/**n * @typedef {Object} Optionsn * @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 ben * rendered outside of this extent.n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layersn * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumedn * 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 ben * visible.n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer willn * be visible.n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will ben * visible.n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer willn * be visible.n * @property {Array<import("./Base.js").default>|import("../Collection.js").default<import("./Base.js").default>} [layers] Child layers.n */n/**n * @enum {string}n * @privaten */nvar Property = {n LAYERS: 'layers'n};n/**n * @classdescn * 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 * @apin */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 * @privaten * @type {Array<import("../events.js").EventsKey>}n */n this.layersListenerKeys = [];n /**n * @privaten * @type {Object<string, Array<import("../events.js").EventsKey>>}n */n this.listenerKeys = {};n _this.addEventListener(getChangeEventType(Property.LAYERS), this.handleLayersChanged);n if (layers) {n if (Array.isArray(layers)) {n layers = new Collection(layers.slice(), { unique: true });n }n else {n assert(typeof /** @type {?} */ (layers).getArray === 'function', 43); // Expected `layers` to be an array or a `Collection`n }n }n else {n layers = new Collection(undefined, { unique: true });n }n _this.setLayers(layers);n return _this;n }n /**n * @privaten */n LayerGroup.prototype.handleLayerChange_ = function () {n this.changed();n };n /**n * @privaten */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_.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;n this.listenerKeys_ = [n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),n listen(layer, EventType.CHANGE, this.handleLayerChange_, this)n ];n }n this.changed();n };n /**n * @param {import("../Collection.js").CollectionEvent} collectionEvent CollectionEvent.n * @privaten */n LayerGroup.prototype.handleLayersAdd_ = function (collectionEvent) {n var layer = /** @type {import("./Base.js").default} */ (collectionEvent.element);n this.listenerKeys_ = [n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),n listen(layer, EventType.CHANGE, this.handleLayerChange_, this)n ];n this.changed();n };n /**n * @param {import("../Collection.js").CollectionEvent} collectionEvent CollectionEvent.n * @privaten */n LayerGroup.prototype.handleLayersRemove_ = function (collectionEvent) {n var layer = /** @type {import("./Base.js").default} */ (collectionEvent.element);n var key = getUid(layer);n this.listenerKeys_.forEach(unlistenByKey);n delete this.listenerKeys_;n this.changed();n };n /**n * Returns the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}n * in this group.n * @return {!import("../Collection.js").default<import("./Base.js").default>} Collection ofn * {@link module:ol/layer/Base layers} that are part of this group.n * @observablen * @apin */n LayerGroup.prototype.getLayers = function () {n return (n /** @type {!import("../Collection.js").default<import("./Base.js").default>} */ (this.get(Property.LAYERS)));n };n /**n * Set the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}n * in this group.n * @param {!import("../Collection.js").default<import("./Base.js").default>} layers Collection ofn * {@link module:ol/layer/Base layers} that are part of this group.n * @observablen * @apin */n LayerGroup.prototype.setLayers = function (layers) {n this.set(Property.LAYERS, layers);n };n /**n * @inheritDocn */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 * @inheritDocn */n LayerGroup.prototype.getLayerStatesArray = function (opt_states) {n var states = opt_states !== undefined ? opt_states : [];n var pos = states.length;n this.getLayers().forEach(function (layer) {n layer.getLayerStatesArray(states);n });n var ownLayerState = this.getLayerState();n for (var i = pos, ii = states.length; i < ii; i++) {n var layerState = states;n layerState.opacity *= ownLayerState.opacity;n layerState.visible = layerState.visible && ownLayerState.visible;n layerState.maxResolution = Math.min(layerState.maxResolution, ownLayerState.maxResolution);n layerState.minResolution = Math.max(layerState.minResolution, ownLayerState.minResolution);n layerState.minZoom = Math.max(layerState.minZoom, ownLayerState.minZoom);n layerState.maxZoom = Math.min(layerState.maxZoom, ownLayerState.maxZoom);n if (ownLayerState.extent !== undefined) {n if (layerState.extent !== undefined) {n layerState.extent = getIntersection(layerState.extent, ownLayerState.extent);n }n else {n layerState.extent = ownLayerState.extent;n }n }n }n return states;n };n /**n * @inheritDocn */n LayerGroup.prototype.getSourceState = function () {n return SourceState.READY;n };n return LayerGroup;n}(BaseLayer));nexport default LayerGroup;n//# sourceMappingURL=Group.js.map”,“/**n * @module ol/sizen */n/**n * An array of numbers representing a size: `[width, height]`.n * @typedef {Array<number>} Sizen * @apin */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 = size + 2 * num;n opt_size = size + 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 && size > 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 = (size * ratio + 0.5) | 0;n opt_size = (size * ratio + 0.5) | 0;n return opt_size;n}n/**n * Returns an `Size` array for the passed in number (meaning: square) orn * `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 * @apin */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 = size;n opt_size = size;n }n return opt_size;n }n}n//# sourceMappingURL=size.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/PluggableMapn */nimport { getUid } from './util.js';nimport Collection from './Collection.js';nimport CollectionEventType from './CollectionEventType.js';nimport MapBrowserEvent from './MapBrowserEvent.js';nimport MapBrowserEventHandler from './MapBrowserEventHandler.js';nimport MapBrowserEventType from './MapBrowserEventType.js';nimport MapEvent from './MapEvent.js';nimport MapEventType from './MapEventType.js';nimport MapProperty from './MapProperty.js';nimport RenderEventType from './render/EventType.js';nimport BaseObject, { getChangeEventType } from './Object.js';nimport ObjectEventType from './ObjectEventType.js';nimport TileQueue from './TileQueue.js';nimport View from './View.js';nimport ViewHint from './ViewHint.js';nimport { assert } from './asserts.js';nimport { removeNode } from './dom.js';nimport { listen, unlistenByKey } from './events.js';nimport EventType from './events/EventType.js';nimport { clone, createOrUpdateEmpty, equals, getForViewAndSize, isEmpty } from './extent.js';nimport { TRUE } from './functions.js';nimport { DEVICE_PIXEL_RATIO, IMAGE_DECODE } from './has.js';nimport LayerGroup from './layer/Group.js';nimport { hasArea } from './size.js';nimport { DROP } from './structs/PriorityQueue.js';nimport { create as createTransform, apply as applyTransform } from './transform.js';nimport { toUserCoordinate, fromUserCoordinate } from './proj.js';n/**n * State of the current frame. Only `pixelRatio`, `time` and `viewState` shouldn * be used in applications.n * @typedef {Object} FrameStaten * @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} animaten * @property {import("./transform.js").Transform} coordinateToPixelTransformn * @property {null|import("./extent.js").Extent} extentn * @property {Array<DeclutterItems>} declutterItemsn * @property {number} indexn * @property {Array<import("./layer/Layer.js").State>} layerStatesArrayn * @property {number} layerIndexn * @property {import("./transform.js").Transform} pixelToCoordinateTransformn * @property {Array<PostRenderFunction>} postRenderFunctionsn * @property {import("./size.js").Size} sizen * @property {TileQueue} tileQueuen * @property {!Object<string, Object<string, boolean>>} usedTilesn * @property {Array<number>} viewHintsn * @property {!Object<string, Object<string, boolean>>} wantedTilesn */n/**n * @typedef {Object} DeclutterItemsn * @property {Array<*>} items Declutter items of an executor.n * @property {number} opacity Layer opacity.n */n/**n * @typedef {function(PluggableMap, ?FrameState): any} PostRenderFunctionn */n/**n * @typedef {Object} AtPixelOptionsn * @property {undefined|function(import("./layer/Layer.js").default): boolean} [layerFilter] Layer filtern * function. The filter function will receive one argument, then * {@link module:ol/layer/Layer layer-candidate} and it should return a boolean value.n * Only layers which are visible and for which this function returns `true`n * will be tested for features. By default, all visible layers will be tested.n * @property {number} [hitTolerance=0] Hit-detection tolerance in pixels. Pixelsn * 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 ofn * +/- 1 world width. Works only if a projection is used that can be wrapped.n */n/**n * @typedef {Object} MapOptionsInternaln * @property {Collection<import("./control/Control.js").default>} [controls]n * @property {Collection<import("./interaction/Interaction.js").default>} [interactions]n * @property {HTMLElement|Document} keyboardEventTargetn * @property {Collection<import("./Overlay.js").default>} overlaysn * @property {Object<string, *>} valuesn */n/**n * Object literal with config options for the map.n * @typedef {Object} MapOptionsn * @property {Collection<import("./control/Control.js").default>|Array<import("./control/Control.js").default>} [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 betweenn * physical pixels and device-independent pixels (dips) on the device.n * @property {Collection<import("./interaction/Interaction.js").default>|Array<import("./interaction/Interaction.js").default>} [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 ton * listen to keyboard events on. This determines when the `KeyboardPan` andn * `KeyboardZoom` interactions trigger. For example, if this option is set ton * `document` the keyboard interactions will always trigger. If this option isn * not specified, the element the library listens to keyboard events on is then * map target (i.e. the user-provided div for the map). If this is notn * `document`, the target element needs to be focused for key events to ben * emitted, requiring that the target element has a `tabindex` attribute.n * @property {Array<import("./layer/Base.js").default>|Collection<import("./layer/Base.js").default>|LayerGroup} [layers]n * Layers. If this is not defined, a map with no layers will be rendered. Noten * 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 tilen * layer.n * @property {number} [maxTilesLoading=16] Maximum number tiles to loadn * simultaneously.n * @property {number} [moveTolerance=1] The minimum distance in pixels then * 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<import("./Overlay.js").default>|Array<import("./Overlay.js").default>} [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 then * element itself or the `id` of the element. If not specified at constructionn * time, {@link module:ol/Map~Map#setTarget} must be called for the map to ben * rendered.n * @property {View} [view] The map's view. No layer sources will ben * fetched unless this is specified at construction time or throughn * {@link module:ol/Map~Map#setView}.n */n/**n * @param {HTMLElement} element Element.n * @param {string} touchAction Value for `touch-action'.n */nfunction setTouchAction(element, touchAction) {n element.style.msTouchAction = touchAction;n element.style.touchAction = touchAction;n element.setAttribute('touch-action', touchAction);n}n/**n * @fires import("./MapBrowserEvent.js").MapBrowserEventn * @fires import("./MapEvent.js").MapEventn * @fires import("./render/Event.js").default#precomposen * @fires import("./render/Event.js").default#postcomposen * @fires import("./render/Event.js").default#rendercompleten * @apin */nvar PluggableMap = /** @class */ (function (_super) {n __extends(PluggableMap, _super);n /**n * @param {MapOptions} options Map options.n */n function PluggableMap(options) {n var _this = _super.call(this) || this;n var optionsInternal = createOptionsInternal(options);n /** @private */n this.boundHandleBrowserEvent = _this.handleBrowserEvent.bind(_this);n /**n * @type {number}n * @privaten */n this.maxTilesLoading = options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;n /**n * @privaten * @type {number}n */n this.pixelRatio = options.pixelRatio !== undefined ?n options.pixelRatio : DEVICE_PIXEL_RATIO;n /**n * @privaten * @type {*}n */n this.postRenderTimeoutHandle;n /**n * @privaten * @type {number|undefined}n */n this.animationDelayKey;n /**n * @privaten */n this.animationDelay = function () {n this.animationDelayKey_ = undefined;n this.renderFrame_(Date.now());n }.bind(_this);n /**n * @privaten * @type {import("./transform.js").Transform}n */n this.coordinateToPixelTransform = createTransform();n /**n * @privaten * @type {import("./transform.js").Transform}n */n this.pixelToCoordinateTransform = createTransform();n /**n * @privaten * @type {number}n */n this.frameIndex = 0;n /**n * @privaten * @type {?FrameState}n */n this.frameState = null;n /**n * The extent at the previous 'moveend' event.n * @privaten * @type {import("./extent.js").Extent}n */n this.previousExtent = null;n /**n * @privaten * @type {?import("./events.js").EventsKey}n */n this.viewPropertyListenerKey = null;n /**n * @privaten * @type {?import("./events.js").EventsKey}n */n this.viewChangeListenerKey = null;n /**n * @privaten * @type {?Array<import("./events.js").EventsKey>}n */n this.layerGroupPropertyListenerKeys = null;n /**n * @privaten * @type {!HTMLElement}n */n this.viewport = document.createElement('div');n this.viewport.className = 'ol-viewport' + ('ontouchstart' in window ? ' ol-touch' : '');n this.viewport.style.position = 'relative';n this.viewport.style.overflow = 'hidden';n this.viewport.style.width = '100%';n this.viewport.style.height = '100%';n /**n * @privaten * @type {!HTMLElement}n */n this.overlayContainer = document.createElement('div');n this.overlayContainer.style.position = 'absolute';n this.overlayContainer.style.zIndex = '0';n this.overlayContainer.style.width = '100%';n this.overlayContainer.style.height = '100%';n this.overlayContainer.className = 'ol-overlaycontainer';n this.viewport.appendChild(this.overlayContainer);n /**n * @privaten * @type {!HTMLElement}n */n this.overlayContainerStopEvent = document.createElement('div');n this.overlayContainerStopEvent.style.position = 'absolute';n this.overlayContainerStopEvent.style.zIndex = '0';n this.overlayContainerStopEvent.style.width = '100%';n this.overlayContainerStopEvent.style.height = '100%';n this.overlayContainerStopEvent.className = 'ol-overlaycontainer-stopevent';n this.viewport.appendChild(this.overlayContainerStopEvent);n /**n * @privaten * @type {MapBrowserEventHandler}n */n this.mapBrowserEventHandler = new MapBrowserEventHandler(_this, options.moveTolerance);n var handleMapBrowserEvent = _this.handleMapBrowserEvent.bind(_this);n for (var key in MapBrowserEventType) {n this.mapBrowserEventHandler.addEventListener(MapBrowserEventType, handleMapBrowserEvent);n }n /**n * @privaten * @type {HTMLElement|Document}n */n this.keyboardEventTarget = optionsInternal.keyboardEventTarget;n /**n * @privaten * @type {?Array<import("./events.js").EventsKey>}n */n this.keyHandlerKeys = null;n /**n * @privaten * @type {?Array<import("./events.js").EventsKey>}n */n this.focusHandlerKeys = null;n var handleBrowserEvent = _this.handleBrowserEvent.bind(_this);n this.viewport.addEventListener(EventType.CONTEXTMENU, handleBrowserEvent, false);n this.viewport.addEventListener(EventType.WHEEL, handleBrowserEvent, false);n /**n * @type {Collection<import("./control/Control.js").default>}n * @protectedn */n _this.controls = optionsInternal.controls || new Collection();n /**n * @type {Collection<import("./interaction/Interaction.js").default>}n * @protectedn */n _this.interactions = optionsInternal.interactions || new Collection();n /**n * @type {Collection<import("./Overlay.js").default>}n * @privaten */n this.overlays = optionsInternal.overlays;n /**n * A lookup of overlays by id.n * @privaten * @type {Object<string, import("./Overlay.js").default>}n */n this.overlayIdIndex = {};n /**n * @type {import("./renderer/Map.js").default}n * @privaten */n this.renderer = null;n /**n * @type {undefined|function(Event): void}n * @privaten */n this.handleResize;n /**n * @privaten * @type {!Array<PostRenderFunction>}n */n this.postRenderFunctions = [];n /**n * @privaten * @type {TileQueue}n */n this.tileQueue = new TileQueue(_this.getTilePriority.bind(_this), this.handleTileChange.bind(_this));n _this.addEventListener(getChangeEventType(MapProperty.LAYERGROUP), this.handleLayerGroupChanged);n _this.addEventListener(getChangeEventType(MapProperty.VIEW), this.handleViewChanged);n _this.addEventListener(getChangeEventType(MapProperty.SIZE), this.handleSizeChanged);n _this.addEventListener(getChangeEventType(MapProperty.TARGET), this.handleTargetChanged);n // setProperties will trigger the rendering of the map if the mapn // is "defined" already.n _this.setProperties(optionsInternal.values);n _this.controls.forEach(n /**n * @param {import("./control/Control.js").default} control Control.n * @this {PluggableMap}n */n function (control) {n control.setMap(this);n }.bind(_this));n _this.controls.addEventListener(CollectionEventType.ADD, n /**n * @param {import("./Collection.js").CollectionEvent} event CollectionEvent.n */n function (event) {n event.element.setMap(this);n }.bind(_this));n _this.controls.addEventListener(CollectionEventType.REMOVE, n /**n * @param {import("./Collection.js").CollectionEvent} event CollectionEvent.n */n function (event) {n event.element.setMap(null);n }.bind(_this));n _this.interactions.forEach(n /**n * @param {import("./interaction/Interaction.js").default} interaction Interaction.n * @this {PluggableMap}n */n function (interaction) {n interaction.setMap(this);n }.bind(_this));n _this.interactions.addEventListener(CollectionEventType.ADD, n /**n * @param {import("./Collection.js").CollectionEvent} event CollectionEvent.n */n function (event) {n event.element.setMap(this);n }.bind(_this));n _this.interactions.addEventListener(CollectionEventType.REMOVE, n /**n * @param {import("./Collection.js").CollectionEvent} event CollectionEvent.n */n function (event) {n event.element.setMap(null);n }.bind(_this));n this.overlays.forEach(this.addOverlayInternal.bind(_this));n this.overlays.addEventListener(CollectionEventType.ADD, n /**n * @param {import("./Collection.js").CollectionEvent} event CollectionEvent.n */n function (event) {n this.addOverlayInternal_(/** @type {import("./Overlay.js").default} */ (event.element));n }.bind(_this));n this.overlays.addEventListener(CollectionEventType.REMOVE, n /**n * @param {import("./Collection.js").CollectionEvent} event CollectionEvent.n */n function (event) {n var overlay = /** @type {import("./Overlay.js").default} */ (event.element);n var id = overlay.getId();n if (id !== undefined) {n delete this.overlayIdIndex_;n }n event.element.setMap(null);n }.bind(_this));n return _this;n }n /**n * @abstractn * @return {import("./renderer/Map.js").default} The map renderern */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 * @apin */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 interactionn * at another point of the collection use `getInteraction()` and the methodsn * available on {@link module:ol/Collection~Collection}. This can be used ton * stop the event propagation from the handleEvent function. The interactionsn * get to handle the events in the reverse order of this collection.n * @param {import("./interaction/Interaction.js").default} interaction Interaction to add.n * @apin */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 layern * elsewhere in the stack, use `getLayers()` and the methods available onn * {@link module:ol/Collection~Collection}.n * @param {import("./layer/Base.js").default} layer Layer.n * @apin */n PluggableMap.prototype.addLayer = function (layer) {n var layers = this.getLayerGroup().getLayers();n layers.push(layer);n };n /**n * Add the given overlay to the map.n * @param {import("./Overlay.js").default} overlay Overlay.n * @apin */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 * @privaten */n PluggableMap.prototype.addOverlayInternal_ = function (overlay) {n var id = overlay.getId();n if (id !== undefined) {n this.overlayIdIndex_ = overlay;n }n overlay.setMap(this);n };n /**n *n * @inheritDocn */n PluggableMap.prototype.disposeInternal = function () {n this.mapBrowserEventHandler_.dispose();n this.viewport_.removeEventListener(EventType.CONTEXTMENU, this.boundHandleBrowserEvent_);n this.viewport_.removeEventListener(EventType.WHEEL, this.boundHandleBrowserEvent_);n if (this.handleResize_ !== undefined) {n removeEventListener(EventType.RESIZE, this.handleResize_, false);n this.handleResize_ = undefined;n }n this.setTarget(null);n _super.prototype.disposeInternal.call(this);n };n /**n * Detect features that intersect a pixel on the viewport, and execute an * callback with each intersecting feature. Layers included in the detection cann * be configured through the `layerFilter` option in `opt_options`.n * @param {import("./pixel.js").Pixel} pixel Pixel.n * @param {function(this: S, import("./Feature.js").FeatureLike,n * import("./layer/Layer.js").default): T} callback Feature callback. The callback will ben * called with two arguments. The first argument is onen * {@link module:ol/Feature feature} orn * {@link module:ol/render/Feature render feature} at the pixel, the second isn * the {@link module:ol/layer/Layer layer} of the feature and will be null forn * unmanaged layers. To stop detection, callback functions can return an * truthy value.n * @param {AtPixelOptions=} opt_options Optional options.n * @return {T|undefined} Callback result, i.e. the return value of lastn * callback execution, or the first truthy callback return value.n * @template S,Tn * @apin */n PluggableMap.prototype.forEachFeatureAtPixel = function (pixel, callback, opt_options) {n if (!this.frameState_) {n return;n }n var coordinate = this.getCoordinateFromPixelInternal(pixel);n opt_options = opt_options !== undefined ? opt_options : {};n var hitTolerance = opt_options.hitTolerance !== undefined ?n opt_options.hitTolerance * this.frameState_.pixelRatio : 0;n var layerFilter = opt_options.layerFilter !== undefined ?n opt_options.layerFilter : TRUE;n var checkWrapped = opt_options.checkWrapped !== false;n return this.renderer_.forEachFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, callback, null, layerFilter, null);n };n /**n * Get all features that intersect a pixel on the viewport.n * @param {import("./pixel.js").Pixel} pixel Pixel.n * @param {AtPixelOptions=} opt_options Optional options.n * @return {Array<import("./Feature.js").FeatureLike>} The detected features orn * an empty array if none were found.n * @apin */n PluggableMap.prototype.getFeaturesAtPixel = function (pixel, opt_options) {n var features = [];n this.forEachFeatureAtPixel(pixel, function (feature) {n features.push(feature);n }, opt_options);n return features;n };n /**n * Detect layers that have a color value at a pixel on the viewport, andn * execute a callback with each matching layer. Layers included in then * detection can be configured through `opt_layerFilter`.n *n * Note: this may give false positives unless the map layers have had different `className`n * properties assigned to them.n *n * @param {import("./pixel.js").Pixel} pixel Pixel.n * @param {function(this: S, import("./layer/Layer.js").default, (Uint8ClampedArray|Uint8Array)): T} callbackn * Layer callback. This callback will receive two arguments: first is then * {@link module:ol/layer/Layer layer}, second argument is an array representingn * [R, G, B, A] pixel values (0 - 255) and will be `null` for layer typesn * that do not currently support this argument. To stop detection, callbackn * 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 lastn * callback execution, or the first truthy callback return value.n * @template S,Tn * @apin */n PluggableMap.prototype.forEachLayerAtPixel = function (pixel, callback, opt_options) {n if (!this.frameState_) {n return;n }n var options = opt_options || {};n var hitTolerance = options.hitTolerance !== undefined ?n options.hitTolerance * this.frameState_.pixelRatio : 0;n var layerFilter = options.layerFilter || TRUE;n return this.renderer_.forEachLayerAtPixel(pixel, this.frameState_, hitTolerance, callback, layerFilter);n };n /**n * Detect if features intersect a pixel on the viewport. Layers included in then * 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 * @apin */n PluggableMap.prototype.hasFeatureAtPixel = function (pixel, opt_options) {n if (!this.frameState_) {n return false;n }n var coordinate = this.getCoordinateFromPixelInternal(pixel);n opt_options = opt_options !== undefined ? opt_options : {};n var layerFilter = opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE;n var hitTolerance = opt_options.hitTolerance !== undefined ?n opt_options.hitTolerance * this.frameState_.pixelRatio : 0;n var checkWrapped = opt_options.checkWrapped !== false;n return this.renderer_.hasFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, layerFilter, null);n };n /**n * Returns the coordinate in user projection for a browser event.n * @param {Event} event Event.n * @return {import("./coordinate.js").Coordinate} Coordinate.n * @apin */n PluggableMap.prototype.getEventCoordinate = function (event) {n return this.getCoordinateFromPixel(this.getEventPixel(event));n };n /**n * Returns the coordinate in view projection for a browser event.n * @param {Event} event Event.n * @return {import("./coordinate.js").Coordinate} Coordinate.n */n PluggableMap.prototype.getEventCoordinateInternal = function (event) {n return this.getCoordinateFromPixelInternal(this.getEventPixel(event));n };n /**n * Returns the map pixel position for a browser event relative to the viewport.n * @param {Event|TouchEvent} event Event.n * @return {import("./pixel.js").Pixel} Pixel.n * @apin */n PluggableMap.prototype.getEventPixel = function (event) {n var viewportPosition = this.viewport_.getBoundingClientRect();n var eventPosition = 'changedTouches' in event ?n /** @type {TouchEvent} */ (event).changedTouches :n /** @type {MouseEvent} */ (event);n return [n eventPosition.clientX - viewportPosition.left,n eventPosition.clientY - viewportPosition.topn ];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 then * map is rendered in.n * @observablen * @apin */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 ton * `getTarget` this method always return an `Element`, or `null` if then * map has no target.n * @return {HTMLElement} The element that the map is rendered in.n * @apin */n PluggableMap.prototype.getTargetElement = function () {n var target = this.getTarget();n if (target !== undefined) {n return typeof target === 'string' ? document.getElementById(target) : target;n }n else {n return null;n }n };n /**n * Get the coordinate for a given pixel. This returns a coordinate in then * 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 * @apin */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 then * 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 controlsn * associated with the map.n * @return {Collection<import("./control/Control.js").default>} Controls.n * @apin */n PluggableMap.prototype.getControls = function () {n return this.controls;n };n /**n * Get the map overlays. Modifying this collection changes the overlaysn * associated with the map.n * @return {Collection<import("./Overlay.js").default>} Overlays.n * @apin */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. Son * `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 * @apin */n PluggableMap.prototype.getOverlayById = function (id) {n var overlay = this.overlayIdIndex_;n return overlay !== undefined ? overlay : null;n };n /**n * Get the map interactions. Modifying this collection changes the interactionsn * associated with the map.n *n * Interactions are used for e.g. pan, zoom and rotate.n * @return {Collection<import("./interaction/Interaction.js").default>} Interactions.n * @apin */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 * @observablen * @apin */n PluggableMap.prototype.getLayerGroup = function () {n return (n /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP)));n };n /**n * Get the collection of layers associated with this map.n * @return {!Collection<import("./layer/Base.js").default>} Layers.n * @apin */n PluggableMap.prototype.getLayers = function () {n var layers = this.getLayerGroup().getLayers();n return layers;n };n /**n * @return {boolean} Layers have sources that are still loading.n */n PluggableMap.prototype.getLoading = function () {n var layerStatesArray = this.getLayerGroup().getLayerStatesArray();n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {n var layer = layerStatesArray.layer;n var source = /** @type {import("./layer/Layer.js").default} */ (layer).getSource();n if (source && source.loading) {n return true;n }n }n return false;n };n /**n * Get the pixel for a coordinate. This takes a coordinate in the usern * 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 * @apin */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 viewn * 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} Renderern */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 * @observablen * @apin */n PluggableMap.prototype.getSize = function () {n return (n /** @type {import("./size.js").Size|undefined} */ (this.get(MapProperty.SIZE)));n };n /**n * Get the view associated with this map. A view manages properties such asn * center and resolution.n * @return {View} The view that controls this map.n * @observablen * @apin */n PluggableMap.prototype.getView = function () {n return (n /** @type {View} */ (this.get(MapProperty.VIEW)));n };n /**n * Get the element that serves as the map viewport.n * @return {HTMLElement} Viewport.n * @apin */n PluggableMap.prototype.getViewport = function () {n return this.viewport_;n };n /**n * Get the element that serves as the container for overlays. Elements added ton * 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 allown * event propagation. Elements added to this container won't let mousedown andn * touchstart events through to the map, so clicks and gestures on an overlayn * don't trigger any {@link module:ol/MapBrowserEvent~MapBrowserEvent}.n * @return {!HTMLElement} The map's overlay container that stops events.n */n PluggableMap.prototype.getOverlayContainerStopEvent = function () {n return this.overlayContainerStopEvent_;n };n /**n * @param {import("./Tile.js").default} tile Tile.n * @param {string} tileSourceKey Tile source key.n * @param {import("./coordinate.js").Coordinate} tileCenter Tile center.n * @param {number} tileResolution Tile resolution.n * @return {number} Tile priority.n */n PluggableMap.prototype.getTilePriority = function (tile, tileSourceKey, tileCenter, tileResolution) {n // Filter out tiles at higher zoom levels than the current zoom level, or thatn // are outside the visible extent.n var frameState = this.frameState_;n if (!frameState || !(tileSourceKey in frameState.wantedTiles)) {n return DROP;n }n if (!frameState.wantedTiles[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 betweenn // the center of the tile and the center of the viewport. The factor of 65536n // means that the prioritization should behave as desired for tiles up ton // 65536 * Math.log(2) = 45426 pixels from the focus.n var center = frameState.viewState.center;n var deltaX = tileCenter - center;n var deltaY = tileCenter - center;n return 65536 * Math.log(tileResolution) +n Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution;n };n /**n * @param {Event} browserEvent Browser event.n * @param {string=} opt_type Type.n */n PluggableMap.prototype.handleBrowserEvent = function (browserEvent, opt_type) {n var type = opt_type || browserEvent.type;n var mapBrowserEvent = new MapBrowserEvent(type, this, browserEvent);n this.handleMapBrowserEvent(mapBrowserEvent);n };n /**n * @param {MapBrowserEvent} mapBrowserEvent The event to handle.n */n PluggableMap.prototype.handleMapBrowserEvent = function (mapBrowserEvent) {n if (!this.frameState_) {n // With no view defined, we cannot translate pixels into geographicaln // coordinates so interactions cannot be used.n return;n }n var target = mapBrowserEvent.originalEvent.target;n while (target instanceof HTMLElement) {n if (target.parentElement === this.overlayContainerStopEvent_) {n return;n }n target = target.parentElement;n }n mapBrowserEvent.frameState = this.frameState_;n var interactionsArray = this.getInteractions().getArray();n if (this.dispatchEvent(mapBrowserEvent) !== false) {n for (var i = interactionsArray.length - 1; i >= 0; i–) {n var interaction = interactionsArray;n if (!interaction.getActive()) {n continue;n }n var cont = interaction.handleEvent(mapBrowserEvent);n if (!cont) {n break;n }n }n }n };n /**n * @protectedn */n PluggableMap.prototype.handlePostRender = function () {n var frameState = this.frameState_;n // Manage the tile queuen // Image loads are expensive and a limited resource, so try to use themn // efficiently:n // * When the view is static we allow a large number of parallel tile loadsn // to complete the frame as quickly as possible.n // * When animating or interacting, image loads can cause janks, so we reducen // the maximum number of loads per frame and limit the number of paralleln // tile loads to remain reactive to view changes and to reduce the chance ofn // 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 || hints) {n var lowOnFrameBudget = !IMAGE_DECODE && Date.now() - frameState.time > 8;n maxTotalLoading = lowOnFrameBudget ? 0 : 8;n maxNewLoads = lowOnFrameBudget ? 0 : 2;n }n }n if (tileQueue.getTilesLoading() < maxTotalLoading) {n tileQueue.reprioritize(); // FIXME only call if view has changedn tileQueue.loadMoreTiles(maxTotalLoading, maxNewLoads);n }n }n if (frameState && this.hasListener(RenderEventType.RENDERCOMPLETE) && !frameState.animate &&n !this.tileQueue_.getTilesLoading() && !this.getLoading()) {n this.renderer_.dispatchRenderEvent(RenderEventType.RENDERCOMPLETE, frameState);n }n var postRenderFunctions = this.postRenderFunctions_;n for (var i = 0, ii = postRenderFunctions.length; i < ii; ++i) {n postRenderFunctions(this, frameState);n }n postRenderFunctions.length = 0;n };n /**n * @privaten */n PluggableMap.prototype.handleSizeChanged_ = function () {n if (this.getView()) {n this.getView().resolveConstraints(0);n }n this.render();n };n /**n * @privaten */n PluggableMap.prototype.handleTargetChanged_ = function () {n // target may be undefined, null, a string or an Element.n // If it's a string we convert it to an Element before proceeding.n // If it's not now an Element we remove the viewport from the DOM.n // If it's an Element we append the viewport element to it.n var targetElement;n if (this.getTarget()) {n targetElement = this.getTargetElement();n }n if (this.focusHandlerKeys_) {n for (var i = 0, ii = this.focusHandlerKeys_.length; i < ii; ++i) {n unlistenByKey(this.focusHandlerKeys_);n }n this.focusHandlerKeys_ = null;n }n if (this.keyHandlerKeys_) {n for (var i = 0, ii = this.keyHandlerKeys_.length; i < ii; ++i) {n unlistenByKey(this.keyHandlerKeys_);n }n this.keyHandlerKeys_ = null;n }n if (!targetElement) {n if (this.renderer_) {n clearTimeout(this.postRenderTimeoutHandle_);n this.postRenderFunctions_.length = 0;n this.renderer_.dispose();n this.renderer_ = null;n }n if (this.animationDelayKey_) {n cancelAnimationFrame(this.animationDelayKey_);n this.animationDelayKey_ = undefined;n }n removeNode(this.viewport_);n if (this.handleResize_ !== undefined) {n removeEventListener(EventType.RESIZE, this.handleResize_, false);n this.handleResize_ = undefined;n }n }n else {n targetElement.appendChild(this.viewport_);n if (!this.renderer_) {n this.renderer_ = this.createRenderer();n }n var hasFocus = true;n if (targetElement.hasAttribute('tabindex')) {n hasFocus = document.activeElement === targetElement;n this.focusHandlerKeys_ = [n listen(targetElement, EventType.FOCUS, setTouchAction.bind(this, this.viewport_, 'none')),n listen(targetElement, EventType.BLUR, setTouchAction.bind(this, this.viewport_, 'auto'))n ];n }n setTouchAction(this.viewport_, hasFocus ? 'none' : 'auto');n var keyboardEventTarget = !this.keyboardEventTarget_ ?n targetElement : this.keyboardEventTarget_;n this.keyHandlerKeys_ = [n listen(keyboardEventTarget, EventType.KEYDOWN, this.handleBrowserEvent, this),n listen(keyboardEventTarget, EventType.KEYPRESS, this.handleBrowserEvent, this)n ];n if (!this.handleResize_) {n this.handleResize_ = this.updateSize.bind(this);n window.addEventListener(EventType.RESIZE, this.handleResize_, false);n }n }n this.updateSize();n // updateSize calls setSize, so no need to call this.rendern // ourselves here.n };n /**n * @privaten */n PluggableMap.prototype.handleTileChange_ = function () {n this.render();n };n /**n * @privaten */n PluggableMap.prototype.handleViewPropertyChanged_ = function () {n this.render();n };n /**n * @privaten */n PluggableMap.prototype.handleViewChanged_ = function () {n if (this.viewPropertyListenerKey_) {n unlistenByKey(this.viewPropertyListenerKey_);n this.viewPropertyListenerKey_ = null;n }n if (this.viewChangeListenerKey_) {n unlistenByKey(this.viewChangeListenerKey_);n this.viewChangeListenerKey_ = null;n }n var view = this.getView();n if (view) {n this.viewport_.setAttribute('data-view', getUid(view));n this.viewPropertyListenerKey_ = listen(view, ObjectEventType.PROPERTYCHANGE, this.handleViewPropertyChanged_, this);n this.viewChangeListenerKey_ = listen(view, EventType.CHANGE, this.handleViewPropertyChanged_, this);n view.resolveConstraints(0);n }n this.render();n };n /**n * @privaten */n PluggableMap.prototype.handleLayerGroupChanged_ = function () {n if (this.layerGroupPropertyListenerKeys_) {n this.layerGroupPropertyListenerKeys_.forEach(unlistenByKey);n this.layerGroupPropertyListenerKeys_ = null;n }n var layerGroup = this.getLayerGroup();n if (layerGroup) {n this.layerGroupPropertyListenerKeys_ = [n listen(layerGroup, ObjectEventType.PROPERTYCHANGE, this.render, this),n listen(layerGroup, EventType.CHANGE, this.render, this)n ];n }n this.render();n };n /**n * @return {boolean} Is rendered.n */n PluggableMap.prototype.isRendered = function () {n return !!this.frameState_;n };n /**n * Requests an immediate render in a synchronous manner.n * @apin */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 loadedn */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.layer;n if (layer.hasRenderer()) {n layer.getRenderer().handleFontsChanged();n }n }n };n /**n * Request a map rendering (at the next animation frame).n * @apin */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 undefinedn * if the control was not found).n * @apin */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 (orn * undefined if the interaction was not found).n * @apin */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 then * layer was not found).n * @apin */n PluggableMap.prototype.removeLayer = function (layer) {n var layers = this.getLayerGroup().getLayers();n return layers.remove(layer);n };n /**n * Remove the given overlay from the map.n * @param {import("./Overlay.js").default} overlay Overlay.n * @return {import("./Overlay.js").default|undefined} The removed overlay (or undefinedn * if the overlay was not found).n * @apin */n PluggableMap.prototype.removeOverlay = function (overlay) {n return this.getOverlays().remove(overlay);n };n /**n * @param {number} time Time.n * @privaten */n PluggableMap.prototype.renderFrame_ = function (time) {n var size = this.getSize();n var view = this.getView();n var previousFrameState = this.frameState_;n /** @type {?FrameState} */n var frameState = null;n if (size !== undefined && hasArea(size) && view && view.isDef()) {n var viewHints = view.getHints(this.frameState_ ? this.frameState_.viewHints : undefined);n var viewState = view.getState();n frameState = {n animate: false,n coordinateToPixelTransform: this.coordinateToPixelTransform_,n declutterItems: previousFrameState ? previousFrameState.declutterItems : [],n extent: getForViewAndSize(viewState.center, viewState.resolution, viewState.rotation, size),n index: this.frameIndex_++,n layerIndex: 0,n layerStatesArray: this.getLayerGroup().getLayerStatesArray(),n pixelRatio: this.pixelRatio_,n pixelToCoordinateTransform: this.pixelToCoordinateTransform_,n postRenderFunctions: [],n size: size,n tileQueue: this.tileQueue_,n time: time,n usedTiles: {},n viewState: viewState,n viewHints: viewHints,n wantedTiles: {}n };n }n this.frameState_ = frameState;n this.renderer_.renderFrame(frameState);n if (frameState) {n if (frameState.animate) {n this.render();n }n Array.prototype.push.apply(this.postRenderFunctions_, frameState.postRenderFunctions);n if (previousFrameState) {n var moveStart = !this.previousExtent_ ||n (!isEmpty(this.previousExtent_) &&n !equals(frameState.extent, this.previousExtent_));n if (moveStart) {n this.dispatchEvent(new MapEvent(MapEventType.MOVESTART, this, previousFrameState));n this.previousExtent_ = createOrUpdateEmpty(this.previousExtent_);n }n }n var idle = this.previousExtent_ &&n !frameState.viewHints &&n !frameState.viewHints &&n !equals(frameState.extent, this.previousExtent_);n if (idle) {n this.dispatchEvent(new MapEvent(MapEventType.MOVEEND, this, frameState));n clone(frameState.extent, this.previousExtent_);n }n }n this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState));n this.postRenderTimeoutHandle_ = setTimeout(this.handlePostRender.bind(this), 0);n };n /**n * Sets the layergroup of this map.n * @param {LayerGroup} layerGroup A layer group containing the layers in this map.n * @observablen * @apin */n PluggableMap.prototype.setLayerGroup = function (layerGroup) {n this.set(MapProperty.LAYERGROUP, layerGroup);n };n /**n * Set the size of this map.n * @param {import("./size.js").Size|undefined} size The size in pixels of the map in the DOM.n * @observablen * @apin */n PluggableMap.prototype.setSize = function (size) {n this.set(MapProperty.SIZE, size);n };n /**n * Set the target element to render this map into.n * @param {HTMLElement|string|undefined} target The Element or id of the Elementn * that the map is rendered in.n * @observablen * @apin */n PluggableMap.prototype.setTarget = function (target) {n this.set(MapProperty.TARGET, target);n };n /**n * Set the view for this map.n * @param {View} view The view that controls this map.n * @observablen * @apin */n PluggableMap.prototype.setView = function (view) {n this.set(MapProperty.VIEW, view);n };n /**n * Force a recalculation of the map viewport size. This should be called whenn * third-party code changes the size of the map viewport.n * @apin */n PluggableMap.prototype.updateSize = function () {n var targetElement = this.getTargetElement();n if (!targetElement) {n this.setSize(undefined);n }n else {n var computedStyle = getComputedStyle(targetElement);n this.setSize([n targetElement.offsetWidth -n parseFloat(computedStyle) -n parseFloat(computedStyle) -n parseFloat(computedStyle) -n parseFloat(computedStyle),n targetElement.offsetHeight -n parseFloat(computedStyle) -n parseFloat(computedStyle) -n parseFloat(computedStyle) -n parseFloat(computedStyle)n ]);n }n };n return PluggableMap;n}(BaseObject));n/**n * @param {MapOptions} options Map options.n * @return {MapOptionsInternal} Internal map options.n */nfunction createOptionsInternal(options) {n /**n * @type {HTMLElement|Document}n */n var keyboardEventTarget = null;n if (options.keyboardEventTarget !== undefined) {n keyboardEventTarget = typeof options.keyboardEventTarget === 'string' ?n document.getElementById(options.keyboardEventTarget) :n options.keyboardEventTarget;n }n /**n * @type {Object<string, *>}n */n var values = {};n var layerGroup = options.layers && typeof /** @type {?} */ (options.layers).getLayers === 'function' ?n /** @type {LayerGroup} */ (options.layers) : new LayerGroup({ layers: /** @type {Collection} */ (options.layers) });n values = layerGroup;n values = options.target;n values = options.view !== undefined ?n options.view : new View();n var controls;n if (options.controls !== undefined) {n if (Array.isArray(options.controls)) {n controls = new Collection(options.controls.slice());n }n else {n assert(typeof /** @type {?} */ (options.controls).getArray === 'function', 47); // Expected `controls` to be an array or an `import("./Collection.js").Collection`n controls = /** @type {Collection} */ (options.controls);n }n }n var interactions;n if (options.interactions !== undefined) {n if (Array.isArray(options.interactions)) {n interactions = new Collection(options.interactions.slice());n }n else {n assert(typeof /** @type {?} */ (options.interactions).getArray === 'function', 48); // Expected `interactions` to be an array or an `import("./Collection.js").Collection`n interactions = /** @type {Collection} */ (options.interactions);n }n }n var overlays;n if (options.overlays !== undefined) {n if (Array.isArray(options.overlays)) {n overlays = new Collection(options.overlays.slice());n }n else {n assert(typeof /** @type {?} */ (options.overlays).getArray === 'function', 49); // Expected `overlays` to be an array or an `import("./Collection.js").Collection`n overlays = options.overlays;n }n }n else {n overlays = new Collection();n }n return {n controls: controls,n interactions: interactions,n keyboardEventTarget: keyboardEventTarget,n overlays: overlays,n values: valuesn };n}nexport default PluggableMap;n//# sourceMappingURL=PluggableMap.js.map”,“/**n * @module ol/cssn */n/**n * @typedef {Object} FontParametersn * @property {Array<string>} familiesn * @property {string} stylen * @property {string} weightn */n/**n * The CSS class for hidden feature.n *n * @constn * @type {string}n */nexport var CLASS_HIDDEN = 'ol-hidden';n/**n * The CSS class that we'll give the DOM elements to have them selectable.n *n * @constn * @type {string}n */nexport var CLASS_SELECTABLE = 'ol-selectable';n/**n * The CSS class that we'll give the DOM elements to have them unselectable.n *n * @constn * @type {string}n */nexport var CLASS_UNSELECTABLE = 'ol-unselectable';n/**n * The CSS class for unsupported feature.n *n * @constn * @type {string}n */nexport var CLASS_UNSUPPORTED = 'ol-unsupported';n/**n * The CSS class for controls.n *n * @constn * @type {string}n */nexport var CLASS_CONTROL = 'ol-control';n/**n * The CSS class that we'll give the DOM elements that are collapsed, i.e.n * to those elements which usually can be expanded.n *n * @constn * @type {string}n */nexport var CLASS_COLLAPSED = 'ol-collapsed';n/**n * Get the list of font families from a font spec. Note that this doesn't workn * for font families that have commas in them.n * @param {string} The CSS font property.n * @return {FontParameters} The font families (or null if the input spec is invalid).n */nexport var getFontParameters = (function () {n /**n * @type {CSSStyleDeclaration}n */n var style;n /**n * @type {Object<string, FontParameters>}n */n var cache = {};n return function (font) {n if (!style) {n style = document.createElement('div').style;n }n if (!(font in cache)) {n style.font = font;n var family = style.fontFamily;n var fontWeight = style.fontWeight;n var fontStyle = style.fontStyle;n style.font = '';n if (!family) {n return null;n }n var families = family.split(/,\s?/);n cache = {n families: families,n weight: fontWeight,n style: fontStylen };n }n return cache;n };n})();n//# sourceMappingURL=css.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/control/Controln */nimport { VOID } from '../functions.js';nimport MapEventType from '../MapEventType.js';nimport BaseObject from '../Object.js';nimport { removeNode } from '../dom.js';nimport { listen, unlistenByKey } from '../events.js';n/**n * @typedef {Object} Optionsn * @property {HTMLElement} [element] The element is the control'sn * container element. This only needs to be specified if you're developingn * a custom control.n * @property {function(import("../MapEvent.js").default)} [render] Function called whenn * the control should be re-rendered. This is called in a `requestAnimationFrame`n * callback.n * @property {HTMLElement|string} [target] Specify a target if you wantn * the control to be rendered outside of the map's viewport.n */n/**n * @classdescn * A control is a visible widget with a DOM element in a fixed position on then * screen. They can involve user input (buttons), or be informational only;n * the position is determined using CSS. By default these are placed in then * container with CSS class name `ol-overlaycontainer-stopevent`, but can usen * any outside DOM element.n *n * This is the base class for controls. You can use it for simple customn * controls by creating the element with listeners, creating an instance:n * “`jsn * 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 separaten * DOM element is that preventing propagation is handled for you. Controlsn * 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. Seen * examples/custom-controls for an example of how to do this.n *n * @apin */nvar Control = /** @class */ (function (_super) {n __extends(Control, _super);n /**n * @param {Options} options Control options.n */n function Control(options) {n var _this = _super.call(this) || this;n /**n * @protectedn * @type {HTMLElement}n */n _this.element = options.element ? options.element : null;n /**n * @privaten * @type {HTMLElement}n */n this.target = null;n /**n * @privaten * @type {import("../PluggableMap.js").default}n */n this.map = null;n /**n * @protectedn * @type {!Array<import("../events.js").EventsKey>}n */n _this.listenerKeys = [];n /**n * @type {function(import("../MapEvent.js").default): void}n */n _this.render = options.render ? options.render : VOID;n if (options.target) {n _this.setTarget(options.target);n }n return _this;n }n /**n * @inheritDocn */n Control.prototype.disposeInternal = function () {n removeNode(this.element);n _super.prototype.disposeInternal.call(this);n };n /**n * Get the map associated with this control.n * @return {import("../PluggableMap.js").default} Map.n * @apin */n Control.prototype.getMap = function () {n return this.map_;n };n /**n * Remove the control from its current map and attach it to the new map.n * Subclasses may set up event handlers to get notified about changes ton * the map here.n * @param {import("../PluggableMap.js").default} map Map.n * @apin */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);n }n this.listenerKeys.length = 0;n this.map_ = map;n if (this.map_) {n var target = this.target_ ?n this.target_ : map.getOverlayContainerStopEvent();n target.appendChild(this.element);n if (this.render !== VOID) {n this.listenerKeys.push(listen(map, MapEventType.POSTRENDER, this.render, this));n }n map.render();n }n };n /**n * This function is used to set a target element for the control. It has non * 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 then * options passed to the control constructor and if `setTarget` is not calledn * then the control is added to the map's overlay container.n * @param {HTMLElement|string} target Target.n * @apin */n Control.prototype.setTarget = function (target) {n this.target_ = typeof target === 'string' ?n document.getElementById(target) :n target;n };n return Control;n}(BaseObject));nexport default Control;n//# sourceMappingURL=Control.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/layer/Layern */nimport { listen, unlistenByKey } from '../events.js';nimport EventType from '../events/EventType.js';nimport { getChangeEventType } from '../Object.js';nimport BaseLayer from './Base.js';nimport LayerProperty from './Property.js';nimport { assign } from '../obj.js';nimport RenderEventType from '../render/EventType.js';nimport SourceState from '../source/State.js';n/**n * @typedef {function(import("../PluggableMap.js").FrameState):HTMLElement} RenderFunctionn */n/**n * @typedef {Object} Optionsn * @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 ben * rendered outside of this extent.n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layersn * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumedn * 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 ben * visible.n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer willn * be visible.n * @property {import("../source/Source.js").default} [source] Source for this layer. If not provided to the constructor,n * the source can be set by calling {@link module:ol/layer/Layer#setSource layer.setSource(source)} aftern * construction.n * @property {import("../PluggableMap.js").default} [map] Map.n * @property {RenderFunction} [render] Render function. Takes the frame state as input and is expected to return ann * HTML element. Will overwrite the default rendering for the layer.n */n/**n * @typedef {Object} Staten * @property {import("./Base.js").default} layern * @property {number} opacity Opacity, the value is rounded to two digits to appear after the decimal point.n * @property {SourceState} sourceStaten * @property {boolean} visiblen * @property {boolean} managedn * @property {import("../extent.js").Extent} [extent]n * @property {number} zIndexn * @property {number} maxResolutionn * @property {number} minResolutionn * @property {number} minZoomn * @property {number} maxZoomn */n/**n * @classdescn * Base class from which all layer types are derived. This should only be instantiatedn * in the case where a custom layer is be added to the map with a custom `render` function.n * Such a function can be specified in the `options` object, and is expected to return an HTML element.n *n * A visual representation of raster or vector map data.n * Layers group together those properties that pertain to how the data is to ben * displayed, irrespective of the source of that data.n *n * Layers are usually added to a map with {@link module:ol/Map#addLayer}. Componentsn * like {@link module:ol/interaction/Select~Select} use unmanaged layersn * internally. These unmanaged layers are associated with the map usingn * {@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 ton * the same HTML element, which will cause {@link module:ol/Map~Map#forEachLayerAtPixel} ton * give false positives. To avoid this, apply different `className` properties to then * layers at creation time.n *n * @fires import("../render/Event.js").RenderEvent#prerendern * @fires import("../render/Event.js").RenderEvent#postrendern *n * @template {import("../source/Source.js").default} SourceTypen * @apin */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 * @privaten * @type {?import("../events.js").EventsKey}n */n this.mapPrecomposeKey = null;n /**n * @privaten * @type {?import("../events.js").EventsKey}n */n this.mapRenderKey = null;n /**n * @privaten * @type {?import("../events.js").EventsKey}n */n this.sourceChangeKey = null;n /**n * @privaten * @type {import("../renderer/Layer.js").default}n */n this.renderer = null;n // Overwrite default render method with a custom onen if (options.render) {n _this.render = options.render;n }n if (options.map) {n _this.setMap(options.map);n }n _this.addEventListener(getChangeEventType(LayerProperty.SOURCE), this.handleSourcePropertyChange);n var source = options.source ? /** @type {SourceType} */ (options.source) : null;n _this.setSource(source);n return _this;n }n /**n * @inheritDocn */n Layer.prototype.getLayersArray = function (opt_array) {n var array = opt_array ? opt_array : [];n array.push(this);n return array;n };n /**n * @inheritDocn */n Layer.prototype.getLayerStatesArray = function (opt_states) {n var states = opt_states ? opt_states : [];n states.push(this.getLayerState());n return states;n };n /**n * Get the layer source.n * @return {SourceType} The layer source (or `null` if not yet set).n * @observablen * @apin */n Layer.prototype.getSource = function () {n return /** @type {SourceType} */ (this.get(LayerProperty.SOURCE)) || null;n };n /**n * @inheritDocn */n Layer.prototype.getSourceState = function () {n var source = this.getSource();n return !source ? SourceState.UNDEFINED : source.getState();n };n /**n * @privaten */n Layer.prototype.handleSourceChange_ = function () {n this.changed();n };n /**n * @privaten */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<Array<import("../Feature").default>>} Promise that resolves withn * an array of features.n */n Layer.prototype.getFeatures = function (pixel) {n return this.renderer_.getFeatures(pixel);n };n /**n * In charge to manage the rendering of the layer. One layer type isn * 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) usen * for rendering its content.n * @return {HTMLElement} The rendered element.n */n Layer.prototype.render = function (frameState, target) {n var layerRenderer = this.getRenderer();n if (layerRenderer.prepareFrame(frameState)) {n return layerRenderer.renderFrame(frameState, target);n }n };n /**n * Sets the layer to be rendered on top of other layers on a map. The map willn * not manage this layer in its layers collection, and the callback inn * {@link module:ol/Map#forEachLayerAtPixel} will receive `null` as layer. Thisn * 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, usen * {@link module:ol/Map#addLayer} instead.n * @param {import("../PluggableMap.js").default} map Map.n * @apin */n Layer.prototype.setMap = function (map) {n if (this.mapPrecomposeKey_) {n unlistenByKey(this.mapPrecomposeKey_);n this.mapPrecomposeKey_ = null;n }n if (!map) {n this.changed();n }n if (this.mapRenderKey_) {n unlistenByKey(this.mapRenderKey_);n this.mapRenderKey_ = null;n }n if (map) {n this.mapPrecomposeKey_ = listen(map, RenderEventType.PRECOMPOSE, function (evt) {n var renderEvent = /** @type {import("../render/Event.js").default} */ (evt);n renderEvent.frameState.layerStatesArray.push(this.getLayerState(false));n }, this);n this.mapRenderKey_ = listen(this, EventType.CHANGE, map.render, map);n this.changed();n }n };n /**n * Set the layer source.n * @param {SourceType} source The layer source.n * @observablen * @apin */n Layer.prototype.setSource = function (source) {n this.set(LayerProperty.SOURCE, source);n };n /**n * Get the renderer for this layer.n * @return {import("../renderer/Layer.js").default} The layer renderer.n */n Layer.prototype.getRenderer = function () {n if (!this.renderer_) {n this.renderer_ = this.createRenderer();n }n return this.renderer_;n };n /**n * @return {boolean} The layer has a renderer.n */n Layer.prototype.hasRenderer = function () {n return !!this.renderer_;n };n /**n * Create a renderer for this layer.n * @return {import("../renderer/Layer.js").default} A layer renderer.n * @protectedn */n Layer.prototype.createRenderer = function () {n return null;n };n /**n * @inheritDocn */n Layer.prototype.disposeInternal = function () {n this.setSource(null);n _super.prototype.disposeInternal.call(this);n };n return Layer;n}(BaseLayer));n/**n * Return `true` if the layer is visible and if the provided view staten * has resolution and zoom levels that are in range of the layer's min/max.n * @param {State} layerState Layer state.n * @param {import("../View.js").State} viewState View state.n * @return {boolean} The layer is visible at the given view state.n */nexport function inView(layerState, viewState) {n if (!layerState.visible) {n return false;n }n var resolution = viewState.resolution;n if (resolution < layerState.minResolution || resolution >= layerState.maxResolution) {n return false;n }n var zoom = viewState.zoom;n return zoom > layerState.minZoom && zoom <= layerState.maxZoom;n}nexport default Layer;n//# sourceMappingURL=Layer.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/control/Attributionn */nimport { equals } from '../array.js';nimport Control from './Control.js';nimport { CLASS_CONTROL, CLASS_UNSELECTABLE, CLASS_COLLAPSED } from '../css.js';nimport { removeChildren, replaceNode } from '../dom.js';nimport EventType from '../events/EventType.js';nimport { inView } from '../layer/Layer.js';n/**n * @typedef {Object} Optionsn * @property {string} [className='ol-attribution'] CSS class name.n * @property {HTMLElement|string} [target] Specify a target if youn * want the control to be rendered outside of the map'sn * viewport.n * @property {boolean} [collapsible] Specify if attributions cann * be collapsed. If not specified, sources control this behavior with theirn * `attributionsCollapsible` setting.n * @property {boolean} [collapsed=true] Specify if attributions shouldn * be collapsed at startup.n * @property {string} [tipLabel='Attributions'] Text label to use for the button tip.n * @property {string} [label='i'] Text label to use for then * collapsed attributions button.n * Instead of text, also an element (e.g. a `span` element) can be used.n * @property {string|HTMLElement} [collapseLabel='»'] Text label to usen * for the expanded attributions button.n * Instead of text, also an element (e.g. a `span` element) can be used.n * @property {function(import("../MapEvent.js").default)} [render] Function called whenn * the control should be re-rendered. This is called in a `requestAnimationFrame`n * callback.n */n/**n * @classdescn * Control to show all the attributions associated with the layer sourcesn * 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 cann * be changed by using a css selector for `.ol-attribution`.n *n * @apin */nvar Attribution = /** @class */ (function (_super) {n __extends(Attribution, _super);n /**n * @param {Options=} opt_options Attribution options.n */n function Attribution(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n _this = _super.call(this, {n element: document.createElement('div'),n render: options.render || render,n target: options.targetn }) || this;n /**n * @privaten * @type {HTMLElement}n */n this.ulElement = document.createElement('ul');n /**n * @privaten * @type {boolean}n */n this.collapsed = options.collapsed !== undefined ? options.collapsed : true;n /**n * @privaten * @type {boolean}n */n this.overrideCollapsible = options.collapsible !== undefined;n /**n * @privaten * @type {boolean}n */n this.collapsible = options.collapsible !== undefined ?n options.collapsible : true;n if (!this.collapsible) {n this.collapsed = false;n }n var className = options.className !== undefined ? options.className : 'ol-attribution';n var tipLabel = options.tipLabel !== undefined ? options.tipLabel : 'Attributions';n var collapseLabel = options.collapseLabel !== undefined ? options.collapseLabel : '\u00BB';n if (typeof collapseLabel === 'string') {n /**n * @privaten * @type {HTMLElement}n */n this.collapseLabel = document.createElement('span');n this.collapseLabel.textContent = collapseLabel;n }n else {n this.collapseLabel = collapseLabel;n }n var label = options.label !== undefined ? options.label : 'i';n if (typeof label === 'string') {n /**n * @privaten * @type {HTMLElement}n */n this.label = document.createElement('span');n this.label.textContent = label;n }n else {n this.label = label;n }n var activeLabel = (this.collapsible && !this.collapsed) ?n this.collapseLabel : this.label;n var button = document.createElement('button');n button.setAttribute('type', 'button');n button.title = tipLabel;n button.appendChild(activeLabel);n button.addEventListener(EventType.CLICK, this.handleClick.bind(_this), false);n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL +n (this.collapsed && this.collapsible ? ' ' + CLASS_COLLAPSED : '') +n (this.collapsible ? '' : ' ol-uncollapsible');n var element = _this.element;n element.className = cssClasses;n element.appendChild(this.ulElement);n element.appendChild(button);n /**n * A list of currently rendered resolutions.n * @type {Array<string>}n * @privaten */n this.renderedAttributions = [];n /**n * @privaten * @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<string>} Attributions.n * @privaten */n Attribution.prototype.collectSourceAttributions_ = function (frameState) {n /**n * Used to determine if an attribution already exists.n * @type {!Object<string, boolean>}n */n var lookup = {};n /**n * A list of visible attributions.n * @type {Array<string>}n */n var visibleAttributions = [];n var layerStatesArray = frameState.layerStatesArray;n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {n var layerState = layerStatesArray;n if (!inView(layerState, frameState.viewState)) {n continue;n }n var source = /** @type {import("../layer/Layer.js").default} */ (layerState.layer).getSource();n if (!source) {n continue;n }n var attributionGetter = source.getAttributions();n if (!attributionGetter) {n continue;n }n var attributions = attributionGetter(frameState);n if (!attributions) {n continue;n }n if (!this.overrideCollapsible_ && source.getAttributionsCollapsible() === false) {n this.setCollapsible(false);n }n if (Array.isArray(attributions)) {n for (var j = 0, jj = attributions.length; j < jj; ++j) {n if (!(attributions in lookup)) {n visibleAttributions.push(attributions);n lookup[attributions] = true;n }n }n }n else {n if (!(attributions in lookup)) {n visibleAttributions.push(attributions);n lookup = true;n }n }n }n return visibleAttributions;n };n /**n * @privaten * @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 attributionsn for (var i = 0, ii = attributions.length; i < ii; ++i) {n var element = document.createElement('li');n element.innerHTML = attributions;n this.ulElement_.appendChild(element);n }n this.renderedAttributions_ = attributions;n };n /**n * @param {MouseEvent} event The event to handlen * @privaten */n Attribution.prototype.handleClick_ = function (event) {n event.preventDefault();n this.handleToggle_();n };n /**n * @privaten */n Attribution.prototype.handleToggle_ = function () {n this.element.classList.toggle(CLASS_COLLAPSED);n if (this.collapsed_) {n replaceNode(this.collapseLabel_, this.label_);n }n else {n replaceNode(this.label_, this.collapseLabel_);n }n this.collapsed_ = !this.collapsed_;n };n /**n * Return `true` if the attribution is collapsible, `false` otherwise.n * @return {boolean} True if the widget is collapsible.n * @apin */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 * @apin */n Attribution.prototype.setCollapsible = function (collapsible) {n if (this.collapsible_ === collapsible) {n return;n }n this.collapsible_ = collapsible;n this.element.classList.toggle('ol-uncollapsible');n if (!collapsible && this.collapsed_) {n this.handleToggle_();n }n };n /**n * Collapse or expand the attribution according to the passed parameter. Willn * not do anything if the attribution isn't collapsible or if the currentn * collapsed state is already the one requested.n * @param {boolean} collapsed True if the widget is collapsed.n * @apin */n Attribution.prototype.setCollapsed = function (collapsed) {n if (!this.collapsible_ || this.collapsed_ === collapsed) {n return;n }n this.handleToggle_();n };n /**n * Return `true` when the attribution is currently collapsed or `false`n * otherwise.n * @return {boolean} True if the widget is collapsed.n * @apin */n Attribution.prototype.getCollapsed = function () {n return this.collapsed_;n };n return Attribution;n}(Control));n/**n * Update the attribution element.n * @param {import("../MapEvent.js").default} mapEvent Map event.n * @this {Attribution}n * @apin */nexport function render(mapEvent) {n this.updateElement_(mapEvent.frameState);n}nexport default Attribution;n//# sourceMappingURL=Attribution.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/control/Rotaten */nimport Control from './Control.js';nimport { CLASS_CONTROL, CLASS_HIDDEN, CLASS_UNSELECTABLE } from '../css.js';nimport { easeOut } from '../easing.js';nimport EventType from '../events/EventType.js';n/**n * @typedef {Object} Optionsn * @property {string} [className='ol-rotate'] CSS class name.n * @property {string|HTMLElement} [label='⇧'] Text label to use for the rotate button.n * Instead of text, also an element (e.g. a `span` element) can be used.n * @property {string} [tipLabel='Reset rotation'] Text label to use for the rotate tip.n * @property {number} [duration=250] Animation duration in milliseconds.n * @property {boolean} [autoHide=true] Hide the control when rotation is 0.n * @property {function(import("../MapEvent.js").default)} [render] Function called when the control shouldn * be re-rendered. This is called in a `requestAnimationFrame` callback.n * @property {function()} [resetNorth] Function called when the control is clicked.n * This will override the default `resetNorth`.n * @property {HTMLElement|string} [target] Specify a target if you want the control to ben * rendered outside of the map's viewport.n */n/**n * @classdescn * A button control to reset rotation to 0.n * To style this control use css selector `.ol-rotate`. A `.ol-hidden` cssn * selector is added to the button when the rotation is 0.n *n * @apin */nvar Rotate = /** @class */ (function (_super) {n __extends(Rotate, _super);n /**n * @param {Options=} opt_options Rotate options.n */n function Rotate(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n _this = _super.call(this, {n element: document.createElement('div'),n render: options.render || render,n target: options.targetn }) || this;n var className = options.className !== undefined ? options.className : 'ol-rotate';n var label = options.label !== undefined ? options.label : '\u21E7';n /**n * @type {HTMLElement}n * @privaten */n this.label = null;n if (typeof label === 'string') {n this.label = document.createElement('span');n this.label.className = 'ol-compass';n this.label.textContent = label;n }n else {n this.label = label;n this.label.classList.add('ol-compass');n }n var tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';n var button = document.createElement('button');n button.className = className + '-reset';n button.setAttribute('type', 'button');n button.title = tipLabel;n button.appendChild(this.label);n button.addEventListener(EventType.CLICK, this.handleClick.bind(_this), false);n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;n var element = _this.element;n element.className = cssClasses;n element.appendChild(button);n this.callResetNorth = options.resetNorth ? options.resetNorth : undefined;n /**n * @type {number}n * @privaten */n this.duration = options.duration !== undefined ? options.duration : 250;n /**n * @type {boolean}n * @privaten */n this.autoHide = options.autoHide !== undefined ? options.autoHide : true;n /**n * @privaten * @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 handlen * @privaten */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 * @privaten */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 actn // upon itn return;n }n if (view.getRotation() !== undefined) {n if (this.duration_ > 0) {n view.animate({n rotation: 0,n duration: this.duration_,n easing: easeOutn });n }n else {n view.setRotation(0);n }n }n };n return Rotate;n}(Control));n/**n * Update the rotate control element.n * @param {import("../MapEvent.js").default} mapEvent Map event.n * @this {Rotate}n * @apin */nexport function render(mapEvent) {n var frameState = mapEvent.frameState;n if (!frameState) {n return;n }n var rotation = frameState.viewState.rotation;n if (rotation != this.rotation_) {n var transform = 'rotate(' + rotation + 'rad)';n if (this.autoHide_) {n var contains = this.element.classList.contains(CLASS_HIDDEN);n if (!contains && rotation === 0) {n this.element.classList.add(CLASS_HIDDEN);n }n else if (contains && rotation !== 0) {n this.element.classList.remove(CLASS_HIDDEN);n }n }n this.label_.style.transform = transform;n }n this.rotation_ = rotation;n}nexport default Rotate;n//# sourceMappingURL=Rotate.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/control/Zoomn */nimport EventType from '../events/EventType.js';nimport Control from './Control.js';nimport { CLASS_CONTROL, CLASS_UNSELECTABLE } from '../css.js';nimport { easeOut } from '../easing.js';n/**n * @typedef {Object} Optionsn * @property {number} [duration=250] Animation duration in milliseconds.n * @property {string} [className='ol-zoom'] CSS class name.n * @property {string|HTMLElement} [zoomInLabel='+'] Text label to use for the zoom-inn * 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 ben * rendered outside of the map's viewport.n */n/**n * @classdescn * 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 controln * use css selectors `.ol-zoom-in` and `.ol-zoom-out`.n *n * @apin */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.targetn }) || this;n var className = options.className !== undefined ? options.className : 'ol-zoom';n var delta = options.delta !== undefined ? options.delta : 1;n var zoomInLabel = options.zoomInLabel !== undefined ? options.zoomInLabel : '+';n var zoomOutLabel = options.zoomOutLabel !== undefined ? options.zoomOutLabel : '\u2212';n var zoomInTipLabel = options.zoomInTipLabel !== undefined ?n options.zoomInTipLabel : 'Zoom in';n var zoomOutTipLabel = options.zoomOutTipLabel !== undefined ?n options.zoomOutTipLabel : 'Zoom out';n var inElement = document.createElement('button');n inElement.className = className + '-in';n inElement.setAttribute('type', 'button');n inElement.title = zoomInTipLabel;n inElement.appendChild(typeof zoomInLabel === 'string' ? document.createTextNode(zoomInLabel) : zoomInLabel);n inElement.addEventListener(EventType.CLICK, this.handleClick.bind(_this, delta), false);n var outElement = document.createElement('button');n outElement.className = className + '-out';n outElement.setAttribute('type', 'button');n outElement.title = zoomOutTipLabel;n outElement.appendChild(typeof zoomOutLabel === 'string' ? document.createTextNode(zoomOutLabel) : zoomOutLabel);n outElement.addEventListener(EventType.CLICK, this.handleClick.bind(_this, -delta), false);n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;n var element = _this.element;n element.className = cssClasses;n element.appendChild(inElement);n element.appendChild(outElement);n /**n * @type {number}n * @privaten */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 handlen * @privaten */n Zoom.prototype.handleClick_ = function (delta, event) {n event.preventDefault();n this.zoomByDelta_(delta);n };n /**n * @param {number} delta Zoom delta.n * @privaten */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 actn // upon itn 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: easeOutn });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/controln */nimport Collection from './Collection.js';nimport Attribution from './control/Attribution.js';nimport Rotate from './control/Rotate.js';nimport Zoom from './control/Zoom.js';nexport { default as Attribution } from './control/Attribution.js';nexport { default as Control } from './control/Control.js';nexport { default as FullScreen } from './control/FullScreen.js';nexport { default as MousePosition } from './control/MousePosition.js';nexport { default as OverviewMap } from './control/OverviewMap.js';nexport { default as Rotate } from './control/Rotate.js';nexport { default as ScaleLine } from './control/ScaleLine.js';nexport { default as Zoom } from './control/Zoom.js';nexport { default as ZoomSlider } from './control/ZoomSlider.js';nexport { default as ZoomToExtent } from './control/ZoomToExtent.js';n/**n * @typedef {Object} DefaultsOptionsn * @property {boolean} [attribution=true] Includen * {@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] Includen * {@link module:ol/control/Rotate~Rotate}.n * @property {import("./control/Rotate.js").Options} [rotateOptions] Optionsn * 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 forn * {@link module:ol/control/Zoom~Zoom}.n * @apin */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 followingn * 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_optionsn * Defaults options.n * @return {Collection<import("./control/Control.js").default>}n * Controls.n * @apin */nexport function defaults(opt_options) {n var options = opt_options ? opt_options : {};n var controls = new Collection();n var zoomControl = options.zoom !== undefined ? options.zoom : true;n if (zoomControl) {n controls.push(new Zoom(options.zoomOptions));n }n var rotateControl = options.rotate !== undefined ? options.rotate : true;n if (rotateControl) {n controls.push(new Rotate(options.rotateOptions));n }n var attributionControl = options.attribution !== undefined ?n options.attribution : true;n if (attributionControl) {n controls.push(new Attribution(options.attributionOptions));n }n return controls;n}n//# sourceMappingURL=control.js.map”,“/**n * @module ol/interaction/Propertyn */n/**n * @enum {string}n */nexport default {n ACTIVE: 'active'n};n//# sourceMappingURL=Property.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/interaction/Interactionn */nimport BaseObject from '../Object.js';nimport { easeOut, linear } from '../easing.js';nimport InteractionProperty from './Property.js';n/**n * Object literal with config options for interactions.n * @typedef {Object} InteractionOptionsn * @property {function(import("../MapBrowserEvent.js").default):boolean} handleEventn * Method called by the map to notify the interaction that a browser event wasn * dispatched to the map. If the function returns a falsy value, propagation ofn * the event to other interactions in the map's interactions chain will ben * prevented (this includes functions with no explicit return). The interactionsn * are traversed in reverse order of the interactions collection of the map.n */n/**n * @classdescn * Abstract base class; normally only used for creating subclasses and notn * 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} isn * functionally the same as {@link module:ol/control/Zoom~Zoom}, but triggeredn * by a keyboard event not a button element event.n * Although interactions do not have a DOM element, some of them do rendern * vectors and so are visible on the screen.n * @apin */nvar Interaction = /** @class */ (function (_super) {n __extends(Interaction, _super);n /**n * @param {InteractionOptions} options Options.n */n function Interaction(options) {n var _this = _super.call(this) || this;n if (options.handleEvent) {n _this.handleEvent = options.handleEvent;n }n /**n * @privaten * @type {import("../PluggableMap.js").default}n */n this.map = null;n _this.setActive(true);n return _this;n }n /**n * Return whether the interaction is currently active.n * @return {boolean} `true` if the interaction is active, `false` otherwise.n * @observablen * @apin */n Interaction.prototype.getActive = function () {n return /** @type {boolean} */ (this.get(InteractionProperty.ACTIVE));n };n /**n * Get the map associated with this interaction.n * @return {import("../PluggableMap.js").default} Map.n * @apin */n Interaction.prototype.getMap = function () {n return this.map_;n };n /**n * Handles the {@link module:ol/MapBrowserEvent map browser event}.n * @param {import("../MapBrowserEvent.js").default} mapBrowserEvent Map browser event.n * @return {boolean} `false` to stop event propagation.n * @apin */n Interaction.prototype.handleEvent = function (mapBrowserEvent) {n return true;n };n /**n * Activate or deactivate the interaction.n * @param {boolean} active Active.n * @observablen * @apin */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 ton * the map here.n * @param {import("../PluggableMap.js").default} map Map.n */n Interaction.prototype.setMap = function (map) {n this.map_ = map;n };n return Interaction;n}(BaseObject));n/**n * @param {import("../View.js").default} view View.n * @param {import("../coordinate.js").Coordinate} delta Delta.n * @param {number=} opt_duration Duration.n */nexport function pan(view, delta, opt_duration) {n var currentCenter = view.getCenterInternal();n if (currentCenter) {n var center = [currentCenter + delta, currentCenter + delta];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: easeOutn });n}nexport default Interaction;n//# sourceMappingURL=Interaction.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/interaction/DoubleClickZoomn */nimport MapBrowserEventType from '../MapBrowserEventType.js';nimport Interaction, { zoomByDelta } from './Interaction.js';n/**n * @typedef {Object} Optionsn * @property {number} [duration=250] Animation duration in milliseconds.n * @property {number} [delta=1] The zoom delta applied on each double click.n */n/**n * @classdescn * Allows the user to zoom by double-clicking on the map.n * @apin */nvar DoubleClickZoom = /** @class */ (function (_super) {n __extends(DoubleClickZoom, _super);n /**n * @param {Options=} opt_options Options.n */n function DoubleClickZoom(opt_options) {n var _this = _super.call(this, {n handleEvent: handleEventn }) || this;n var options = opt_options ? opt_options : {};n /**n * @privaten * @type {number}n */n this.delta = options.delta ? options.delta : 1;n /**n * @privaten * @type {number}n */n this.duration = options.duration !== undefined ? options.duration : 250;n return _this;n }n return DoubleClickZoom;n}(Interaction));n/**n * Handles the {@link module:ol/MapBrowserEvent map browser event} (if it was an * doubleclick) and eventually zooms the map.n * @param {import("../MapBrowserEvent.js").default} mapBrowserEvent Map browser event.n * @return {boolean} `false` to stop event propagation.n * @this {DoubleClickZoom}n */nfunction handleEvent(mapBrowserEvent) {n var stopEvent = false;n if (mapBrowserEvent.type == MapBrowserEventType.DBLCLICK) {n var browserEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);n var map = mapBrowserEvent.map;n var anchor = mapBrowserEvent.coordinate;n var delta = browserEvent.shiftKey ? -this.delta_ : this.delta_;n var view = map.getView();n zoomByDelta(view, delta, anchor, this.duration_);n mapBrowserEvent.preventDefault();n stopEvent = true;n }n return !stopEvent;n}nexport default DoubleClickZoom;n//# sourceMappingURL=DoubleClickZoom.js.map”,“/**n * @module ol/events/conditionn */nimport MapBrowserEventType from '../MapBrowserEventType.js';nimport { assert } from '../asserts.js';nimport { TRUE, FALSE } from '../functions.js';nimport { WEBKIT, MAC } from '../has.js';n/**n * A function that takes an {@link module:ol/MapBrowserEvent} and returns an * `{boolean}`. If the condition is met, true should be returned.n *n * @typedef {function(this: ?, import("../MapBrowserEvent.js").default): boolean} Conditionn */n/**n * Return `true` if only the alt-key is pressed, `false` otherwise (e.g. whenn * 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 * @apin */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` otherwisen * (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 * @apin */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 targetn * element with a `tabindex` attribute, e.g. `<div id="map" tabindex="1">`.n *n * @param {import("../MapBrowserEvent.js").default} event Map browser event.n * @return {boolean} The map has the focus.n * @apin */nexport var focus = function (event) {n return event.target.getTargetElement() === document.activeElement;n};n/**n * Return always true.n *n * @param {import("../MapBrowserEvent.js").default} mapBrowserEvent Map browser event.n * @return {boolean} True.n * @apin */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 * @apin */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-clickn * without the ctrl key on Macs.n *n * @param {import("../MapBrowserEvent.js").default} mapBrowserEvent Map browser event.n * @return {boolean} The result.n */nexport var mouseActionButton = function (mapBrowserEvent) {n var originalEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);n return originalEvent.button == 0 &&n !(WEBKIT && MAC && originalEvent.ctrlKey);n};n/**n * Return always false.n *n * @param {import("../MapBrowserEvent.js").default} mapBrowserEvent Map browser event.n * @return {boolean} False.n * @apin */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 * @apin */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 * @apin */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 * @apin */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) isn * 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 * @apin */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 additionallyn * 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 * @apin */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. whenn * 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 * @apin */nexport var shiftKeyOnly = function (mapBrowserEvent) {n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);n return (!originalEvent.altKey &&n !(originalEvent.metaKey || originalEvent.ctrlKey) &&n originalEvent.shiftKey);n};n/**n * Return `true` if the target element is not editable, i.e. not a `<input>`-,n * `<select>`- or `<textarea>`-element, `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 * @apin */nexport var targetNotEditable = function (mapBrowserEvent) {n var target = mapBrowserEvent.target;n var tagName = /** @type {Element} */ (target).tagName;n return (tagName !== 'INPUT' &&n tagName !== 'SELECT' &&n tagName !== 'TEXTAREA');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 * @apin */nexport var mouseOnly = function (mapBrowserEvent) {n var pointerEvent = /** @type {import("../MapBrowserPointerEvent").default} */ (mapBrowserEvent).pointerEvent;n assert(pointerEvent !== undefined, 56); // mapBrowserEvent must originate from a pointer eventn // see www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerTypen 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 * @apin */nexport var touchOnly = function (mapBrowserEvent) {n var pointerEvt = /** @type {import("../MapBrowserPointerEvent").default} */ (mapBrowserEvent).pointerEvent;n assert(pointerEvt !== undefined, 56); // mapBrowserEvent must originate from a pointer eventn // see www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerTypen 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 * @apin */nexport var penOnly = function (mapBrowserEvent) {n var pointerEvt = /** @type {import("../MapBrowserPointerEvent").default} */ (mapBrowserEvent).pointerEvent;n assert(pointerEvt !== undefined, 56); // mapBrowserEvent must originate from a pointer eventn // see www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerTypen return pointerEvt.pointerType === 'pen';n};n/**n * Return `true` if the event originates from a primary pointer inn * contact with the surface or if the left mouse button is pressed.n * See 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 * @apin */nexport var primaryAction = function (mapBrowserEvent) {n var pointerEvent = /** @type {import("../MapBrowserPointerEvent").default} */ (mapBrowserEvent).pointerEvent;n assert(pointerEvent !== undefined, 56); // mapBrowserEvent must originate from a pointer eventn return pointerEvent.isPrimary && pointerEvent.button === 0;n};n//# sourceMappingURL=condition.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/interaction/Pointern */nimport MapBrowserEventType from '../MapBrowserEventType.js';nimport Interaction from './Interaction.js';nimport { getValues } from '../obj.js';n/**n * @typedef {Object} Optionsn * @property {function(import("../MapBrowserPointerEvent.js").default):boolean} [handleDownEvent]n * Function handling "down" events. If the function returns `true` then a dragn * sequence is started.n * @property {function(import("../MapBrowserPointerEvent.js").default)} [handleDragEvent]n * Function handling "drag" events. This function is called on "move" eventsn * 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 wasn * dispatched to the map. The function may return `false` to prevent then * propagation of the event to other interactions in the map's interactionsn * chain.n * @property {function(import("../MapBrowserPointerEvent.js").default)} [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 dragn * sequence both the `handleDragEvent` function and this function are called.n * If `handleDownEvent` is defined and it returns true this function will notn * be called during a drag sequence.n * @property {function(import("../MapBrowserPointerEvent.js").default):boolean} [handleUpEvent]n * Function handling "up" events. If the function returns `false` then then * current drag sequence is stopped.n * @property {function(boolean):boolean} [stopDown]n * Should the down event be propagated to other interactions, or should ben * stopped?n */n/**n * @classdescn * 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 isn * started. During a drag sequence the `handleDragEvent` user function isn * called on `move` events. The drag sequence ends when the `handleUpEvent`n * user function is called and returns `false`.n * @apin */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, /** @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 * @protectedn */n _this.handlingDownUpSequence = false;n /**n * @type {!Object<string, PointerEvent>}n * @privaten */n this.trackedPointers = {};n /**n * @type {Array<PointerEvent>}n * @protectedn */n _this.targetPointers = [];n return _this;n }n /**n * Handle pointer down events.n * @param {import("../MapBrowserPointerEvent.js").default} mapBrowserEvent Event.n * @return {boolean} If the event was consumed.n * @protectedn */n PointerInteraction.prototype.handleDownEvent = function (mapBrowserEvent) {n return false;n };n /**n * Handle pointer drag events.n * @param {import("../MapBrowserPointerEvent.js").default} mapBrowserEvent Event.n * @protectedn */n PointerInteraction.prototype.handleDragEvent = function (mapBrowserEvent) { };n /**n * Handles the {@link module:ol/MapBrowserEvent map browser event} and may call inton * other functions, if event sequences like e.g. 'drag' or 'down-up' etc. aren * detected.n * @overriden * @apin */n PointerInteraction.prototype.handleEvent = function (mapBrowserEvent) {n if (!( /** @type {import("../MapBrowserPointerEvent.js").default} */(mapBrowserEvent).pointerEvent)) {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 }n else if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {n var handledUp = this.handleUpEvent(mapBrowserEvent);n this.handlingDownUpSequence = handledUp && this.targetPointers.length > 0;n }n }n else {n if (mapBrowserEvent.type == MapBrowserEventType.POINTERDOWN) {n var handled = this.handleDownEvent(mapBrowserEvent);n if (handled) {n mapBrowserEvent.preventDefault();n }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("../MapBrowserPointerEvent.js").default} mapBrowserEvent Event.n * @protectedn */n PointerInteraction.prototype.handleMoveEvent = function (mapBrowserEvent) { };n /**n * Handle pointer up events.n * @param {import("../MapBrowserPointerEvent.js").default} mapBrowserEvent Event.n * @return {boolean} If the event was consumed.n * @protectedn */n PointerInteraction.prototype.handleUpEvent = function (mapBrowserEvent) {n return false;n };n /**n * This function is used to determine if "down" events should be propagatedn * 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("../MapBrowserPointerEvent.js").default} mapBrowserEvent Event.n * @privaten */n PointerInteraction.prototype.updateTrackedPointers_ = function (mapBrowserEvent) {n if (isPointerDraggingEvent(mapBrowserEvent)) {n var event_1 = mapBrowserEvent.pointerEvent;n var id = event_1.pointerId.toString();n if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {n delete this.trackedPointers_;n }n else if (mapBrowserEvent.type ==n MapBrowserEventType.POINTERDOWN) {n this.trackedPointers_ = event_1;n }n else if (id in this.trackedPointers_) {n // update only when there was a pointerdown event for this pointern this.trackedPointers_ = event_1;n }n this.targetPointers = getValues(this.trackedPointers_);n }n };n return PointerInteraction;n}(Interaction));n/**n * @param {Array<PointerEvent>} 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.clientX;n clientY += pointerEvents.clientY;n }n return [clientX / length, clientY / length];n}n/**n * @param {import("../MapBrowserPointerEvent.js").default} mapBrowserEvent Event.n * @return {boolean} Whether the event is a pointerdown, pointerdragn * or pointerup event.n */nfunction isPointerDraggingEvent(mapBrowserEvent) {n var type = mapBrowserEvent.type;n return type === MapBrowserEventType.POINTERDOWN ||n type === MapBrowserEventType.POINTERDRAG ||n type === MapBrowserEventType.POINTERUP;n}nexport default PointerInteraction;n//# sourceMappingURL=Pointer.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/interaction/DragPann */nimport { scale as scaleCoordinate, rotate as rotateCoordinate } from '../coordinate.js';nimport { easeOut } from '../easing.js';nimport { noModifierKeys, primaryAction } from '../events/condition.js';nimport { FALSE } from '../functions.js';nimport PointerInteraction, { centroid as centroidFromPointers } from './Pointer.js';n/**n * @typedef {Object} Optionsn * @property {import("../events/condition.js").Condition} [condition] A function that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a booleann * 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 {import("../Kinetic.js").default} [kinetic] Kinetic inertia to apply to the pan.n */n/**n * @classdescn * Allows the user to pan the map by dragging the map.n * @apin */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: FALSEn }) || this;n var options = opt_options ? opt_options : {};n /**n * @privaten * @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 /**n * @privaten * @type {import("../events/condition.js").Condition}n */n this.condition = options.condition ? options.condition : defaultCondition;n /**n * @privaten * @type {boolean}n */n this.noKinetic = false;n return _this;n }n /**n * @inheritDocn */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, centroid);n }n if (this.lastCentroid) {n var delta = [n this.lastCentroid - centroid,n centroid - this.lastCentroidn ];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 aftern // after one finger down, tiny drag, second finger downn this.kinetic_.begin();n }n this.lastCentroid = centroid;n this.lastPointersCount_ = targetPointers.length;n };n /**n * @inheritDocn */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 - distance * Math.cos(angle),n centerpx - distance * Math.sin(angle)n ]);n view.animateInternal({n center: view.getConstrainedCenter(dest),n duration: 500,n easing: easeOutn });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 aftern // after one finger up, tiny drag, second finger upn this.kinetic_.begin();n }n this.lastCentroid = null;n return true;n }n };n /**n * @inheritDocn */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 animationn 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 isn // 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));n/**n * @param {import("../MapBrowserPointerEvent.js").default} mapBrowserEvent Browser event.n * @return {boolean} Combined condition result.n */nfunction defaultCondition(mapBrowserEvent) {n return noModifierKeys(mapBrowserEvent) && primaryAction(mapBrowserEvent);n}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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/interaction/DragRotaten */nimport { disable } from '../rotationconstraint.js';nimport { altShiftKeysOnly, mouseOnly, mouseActionButton } from '../events/condition.js';nimport { FALSE } from '../functions.js';nimport PointerInteraction from './Pointer.js';n/**n * @typedef {Object} Optionsn * @property {import("../events/condition.js").Condition} [condition] A function that takes ann * {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a booleann * 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 * @classdescn * 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 limitsn * it to when the alt and shift keys are held down.n *n * This interaction is only supported for mouse devices.n * @apin */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: FALSEn }) || this;n /**n * @privaten * @type {import("../events/condition.js").Condition}n */n this.condition = options.condition ? options.condition : altShiftKeysOnly;n /**n * @privaten * @type {number|undefined}n */n this.lastAngle = undefined;n /**n * @privaten * @type {number}n */n this.duration = options.duration !== undefined ? options.duration : 250;n return _this;n }n /**n * @inheritDocn */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 / 2 - offset, offset - size / 2);n if (this.lastAngle_ !== undefined) {n var delta = theta - this.lastAngle_;n view.adjustRotationInternal(-delta);n }n this.lastAngle_ = theta;n };n /**n * @inheritDocn */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 * @inheritDocn */n DragRotate.prototype.handleDownEvent = function (mapBrowserEvent) {n if (!mouseOnly(mapBrowserEvent)) {n return false;n }n if (mouseActionButton(mapBrowserEvent) && 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/Boxn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport 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 * @privaten */n this.geometry = null;n /**n * @type {HTMLDivElement}n * @privaten */n this.element = document.createElement('div');n this.element.style.position = 'absolute';n this.element.className = 'ol-box ' + className;n /**n * @privaten * @type {import("../PluggableMap.js").default}n */n this.map = null;n /**n * @privaten * @type {import("../pixel.js").Pixel}n */n this.startPixel = null;n /**n * @privaten * @type {import("../pixel.js").Pixel}n */n this.endPixel = null;n return _this;n }n /**n * @inheritDocn */n RenderBox.prototype.disposeInternal = function () {n this.setMap(null);n };n /**n * @privaten */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, endPixel) + px;n style.top = Math.min(startPixel, endPixel) + px;n style.width = Math.abs(endPixel - startPixel) + px;n style.height = Math.abs(endPixel - startPixel) + px;n };n /**n * @param {import("../PluggableMap.js").default} 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, endPixel],n endPixel,n [endPixel, startPixel]n ];n var coordinates = pixels.map(this.map_.getCoordinateFromPixelInternal, this.map_);n // close the polygonn coordinates = coordinates.slice();n if (!this.geometry_) {n this.geometry_ = new Polygon();n }n else {n this.geometry_.setCoordinates();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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/interaction/DragBoxn */n// FIXME draw drag boxnimport Event from '../events/Event.js';nimport { always, mouseOnly, mouseActionButton } from '../events/condition.js';nimport { VOID } from '../functions.js';nimport PointerInteraction from './Pointer.js';nimport RenderBox from '../render/Box.js';n/**n * A function that takes a {@link module:ol/MapBrowserEvent} and twon * {@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} EndConditionn */n/**n * @typedef {Object} Optionsn * @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 booleann * to indicate whether that event should be handled.n * Default is {@link ol/events/condition~always}.n * @property {number} [minArea=64] The minimum area of the box in pixel, this value is used by the defaultn * `boxEndCondition` function.n * @property {EndCondition} [boxEndCondition] A function that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and twon * {@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)} [onBoxEnd] Code to execute justn * before `boxend` is fired.n */n/**n * @enum {string}n */nvar DragBoxEventType = {n /**n * Triggered upon drag box start.n * @event DragBoxEvent#boxstartn * @apin */n BOXSTART: 'boxstart',n /**n * Triggered on drag when box is active.n * @event DragBoxEvent#boxdragn * @apin */n BOXDRAG: 'boxdrag',n /**n * Triggered upon drag box end.n * @event DragBoxEvent#boxendn * @apin */n BOXEND: 'boxend'n};n/**n * @classdescn * Events emitted by {@link module:ol/interaction/DragBox~DragBox} instances are instances ofn * 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 * @constn * @type {import("../coordinate.js").Coordinate}n * @apin */n _this.coordinate = coordinate;n /**n * @constn * @type {import("../MapBrowserEvent.js").default}n * @apin */n _this.mapBrowserEvent = mapBrowserEvent;n return _this;n }n return DragBoxEvent;n}(Event));n/**n * @classdescn * 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 limitsn * 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 mapn * (see {@link module:ol/interaction/DragZoom~DragZoom} andn * {@link module:ol/interaction/DragRotateAndZoom}).n *n * This interaction is only supported for mouse devices.n *n * @fires DragBoxEventn * @apin */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 var options = opt_options ? opt_options : {};n /**n * @type {import("../render/Box.js").default}n * @privaten */n this.box = new RenderBox(options.className || 'ol-dragbox');n /**n * @type {number}n * @privaten */n this.minArea = options.minArea !== undefined ? options.minArea : 64;n /**n * Function to execute just before `onboxend` is firedn * @type {function(this:DragBox, import("../MapBrowserEvent.js").default): void}n * @privaten */n this.onBoxEnd = options.onBoxEnd ? options.onBoxEnd : VOID;n /**n * @type {import("../pixel.js").Pixel}n * @privaten */n this.startPixel = null;n /**n * @privaten * @type {import("../events/condition.js").Condition}n */n this.condition = options.condition ? options.condition : always;n /**n * @privaten * @type {EndCondition}n */n this.boxEndCondition = options.boxEndCondition ?n options.boxEndCondition : _this.defaultBoxEndCondition;n return _this;n }n /**n * The default condition for determining whether the boxend eventn * should fire.n * @param {import("../MapBrowserEvent.js").default} mapBrowserEvent The originating MapBrowserEventn * 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 - startPixel;n var height = endPixel - startPixel;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 * @apin */n DragBox.prototype.getGeometry = function () {n return this.box_.getGeometry();n };n /**n * @inheritDocn */n DragBox.prototype.handleDragEvent = function (mapBrowserEvent) {n if (!mouseOnly(mapBrowserEvent)) {n return;n }n this.box_.setPixels(this.startPixel_, mapBrowserEvent.pixel);n this.dispatchEvent(new DragBoxEvent(DragBoxEventType.BOXDRAG, mapBrowserEvent.coordinate, mapBrowserEvent));n };n /**n * @inheritDocn */n DragBox.prototype.handleUpEvent = function (mapBrowserEvent) {n if (!mouseOnly(mapBrowserEvent)) {n return true;n }n this.box_.setMap(null);n if (this.boxEndCondition_(mapBrowserEvent, this.startPixel_, mapBrowserEvent.pixel)) {n this.onBoxEnd_(mapBrowserEvent);n this.dispatchEvent(new DragBoxEvent(DragBoxEventType.BOXEND, mapBrowserEvent.coordinate, mapBrowserEvent));n }n return false;n };n /**n * @inheritDocn */n DragBox.prototype.handleDownEvent = function (mapBrowserEvent) {n if (!mouseOnly(mapBrowserEvent)) {n return false;n }n if (mouseActionButton(mapBrowserEvent) &&n 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 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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/interaction/DragZoomn */nimport { easeOut } from '../easing.js';nimport { shiftKeyOnly } from '../events/condition.js';nimport { createOrUpdateFromCoordinates, getBottomLeft, getCenter, getTopRight, scaleFromCenter } from '../extent.js';nimport DragBox from './DragBox.js';n/**n * @typedef {Object} Optionsn * @property {string} [className='ol-dragzoom'] CSS class name for styling then * box.n * @property {import("../events/condition.js").Condition} [condition] A function thatn * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns an * 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 defaultn * `boxEndCondition` function.n */n/**n * @classdescn * 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 limitsn * 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, orn * your custom one configured with `className`.n * @apin */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 onBoxEnd: onBoxEndn }) || this;n /**n * @privaten * @type {number}n */n this.duration = options.duration !== undefined ? options.duration : 200;n /**n * @privaten * @type {boolean}n */n this.out = options.out !== undefined ? options.out : false;n return _this;n }n return DragZoom;n}(DragBox));n/**n * @this {DragZoom}n */nfunction onBoxEnd() {n var map = this.getMap();n var view = /** @type {!import("../View.js").default} */ (map.getView());n var size = /** @type {!import("../size.js").Size} */ (map.getSize());n var extent = this.getGeometry().getExtent();n if (this.out_) {n var mapExtent = view.calculateExtentInternal(size);n var boxPixelExtent = createOrUpdateFromCoordinates([n map.getPixelFromCoordinateInternal(getBottomLeft(extent)),n map.getPixelFromCoordinateInternal(getTopRight(extent))n ]);n var factor = view.getResolutionForExtentInternal(boxPixelExtent, size);n scaleFromCenter(mapExtent, 1 / factor);n extent = mapExtent;n }n var resolution = view.getConstrainedResolution(view.getResolutionForExtentInternal(extent, size));n var center = view.getConstrainedCenter(getCenter(extent), resolution);n view.animateInternal({n resolution: resolution,n center: center,n duration: this.duration_,n easing: easeOutn });n}nexport default DragZoom;n//# sourceMappingURL=DragZoom.js.map”,“/**n * @module ol/events/KeyCoden */n/**n * @enum {number}n * @constn */nexport default {n LEFT: 37,n UP: 38,n RIGHT: 39,n DOWN: 40n};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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/interaction/KeyboardPann */nimport { rotate as rotateCoordinate } from '../coordinate.js';nimport EventType from '../events/EventType.js';nimport KeyCode from '../events/KeyCode.js';nimport { noModifierKeys, targetNotEditable } from '../events/condition.js';nimport Interaction, { pan } from './Interaction.js';n/**n * @typedef {Object} Optionsn * @property {import("../events/condition.js").Condition} [condition] A function thatn * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns an * boolean to indicate whether that event should be handled. Default isn * {@link module:ol/events/condition~noModifierKeys} andn * {@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 keyn * press.n */n/**n * @classdescn * 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 whichn * the keyboard events are attached. By default, this is the map div,n * though you can change this with the `keyboardEventTarget` inn * {@link module:ol/Map~Map}. `document` never loses focus but, for any othern * element, focus will have to be on, and returned to, this element if the keysn * are to function.n * See also {@link module:ol/interaction/KeyboardZoom~KeyboardZoom}.n * @apin */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, {n handleEvent: handleEventn }) || this;n var options = opt_options || {};n /**n * @privaten * @param {import("../MapBrowserEvent.js").default} mapBrowserEvent Browser event.n * @return {boolean} Combined condition result.n */n this.defaultCondition = function (mapBrowserEvent) {n return noModifierKeys(mapBrowserEvent) &&n targetNotEditable(mapBrowserEvent);n };n /**n * @privaten * @type {import("../events/condition.js").Condition}n */n this.condition = options.condition !== undefined ?n options.condition : this.defaultCondition;n /**n * @privaten * @type {number}n */n this.duration = options.duration !== undefined ? options.duration : 100;n /**n * @privaten * @type {number}n */n this.pixelDelta = options.pixelDelta !== undefined ?n options.pixelDelta : 128;n return _this;n }n return KeyboardPan;n}(Interaction));n/**n * Handles the {@link module:ol/MapBrowserEvent map browser event} if it was an * `KeyEvent`, and decides the direction to pan to (if an arrow key wasn * pressed).n * @param {import("../MapBrowserEvent.js").default} mapBrowserEvent Map browser event.n * @return {boolean} `false` to stop event propagation.n * @this {KeyboardPan}n */nfunction handleEvent(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 mapBrowserEvent.preventDefault();n stopEvent = true;n }n }n return !stopEvent;n}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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/interaction/KeyboardZoomn */nimport EventType from '../events/EventType.js';nimport { targetNotEditable } from '../events/condition.js';nimport Interaction, { zoomByDelta } from './Interaction.js';n/**n * @typedef {Object} Optionsn * @property {number} [duration=100] Animation duration in milliseconds.n * @property {import("../events/condition.js").Condition} [condition] A function thatn * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns an * boolean to indicate whether that event should be handled. Default isn * {@link module:ol/events/condition~targetNotEditable}.n * @property {number} [delta=1] The zoom level delta on each key press.n */n/**n * @classdescn * 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 whichn * the keyboard events are attached. By default, this is the map div,n * though you can change this with the `keyboardEventTarget` inn * {@link module:ol/Map~Map}. `document` never loses focus but, for any othern * element, focus will have to be on, and returned to, this element if the keysn * are to function.n * See also {@link module:ol/interaction/KeyboardPan~KeyboardPan}.n * @apin */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, {n handleEvent: handleEventn }) || this;n var options = opt_options ? opt_options : {};n /**n * @privaten * @type {import("../events/condition.js").Condition}n */n this.condition = options.condition ? options.condition : targetNotEditable;n /**n * @privaten * @type {number}n */n this.delta = options.delta ? options.delta : 1;n /**n * @privaten * @type {number}n */n this.duration = options.duration !== undefined ? options.duration : 100;n return _this;n }n return KeyboardZoom;n}(Interaction));n/**n * Handles the {@link module:ol/MapBrowserEvent map browser event} if it was an * `KeyEvent`, and decides whether to zoom in or out (depending on whether then * 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 */nfunction handleEvent(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 mapBrowserEvent.preventDefault();n stopEvent = true;n }n }n return !stopEvent;n}nexport default KeyboardZoom;n//# sourceMappingURL=KeyboardZoom.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/interaction/MouseWheelZoomn */nimport { always } from '../events/condition.js';nimport EventType from '../events/EventType.js';nimport { DEVICE_PIXEL_RATIO, FIREFOX } from '../has.js';nimport Interaction, { zoomByDelta } from './Interaction.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} Optionsn * @property {import("../events/condition.js").Condition} [condition] A function thatn * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns an * boolean to indicate whether that event should be handled. Default isn * {@link module:ol/events/condition~always}.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'sn * location as the anchor. When set to `false`, zooming in and out will zoom ton * the center of the screen instead of zooming on the mouse's location.n */n/**n * @classdescn * Allows the user to zoom the map by scrolling the mouse wheel.n * @apin */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, /** @type {import("./Interaction.js").InteractionOptions} */ (options)) || this;n /**n * @privaten * @type {number}n */n this.totalDelta = 0;n /**n * @privaten * @type {number}n */n this.lastDelta = 0;n /**n * @privaten * @type {number}n */n this.maxDelta = options.maxDelta !== undefined ? options.maxDelta : 1;n /**n * @privaten * @type {number}n */n this.duration = options.duration !== undefined ? options.duration : 250;n /**n * @privaten * @type {number}n */n this.timeout = options.timeout !== undefined ? options.timeout : 80;n /**n * @privaten * @type {boolean}n */n this.useAnchor = options.useAnchor !== undefined ? options.useAnchor : true;n /**n * @privaten * @type {import("../events/condition.js").Condition}n */n this.condition = options.condition ? options.condition : always;n /**n * @privaten * @type {?import("../coordinate.js").Coordinate}n */n this.lastAnchor = null;n /**n * @privaten * @type {number|undefined}n */n this.startTime = undefined;n /**n * @privaten * @type {?}n */n this.timeoutId;n /**n * @privaten * @type {Mode|undefined}n */n this.mode = undefined;n /**n * Trackpad events separated by this delay will be considered separaten * 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 leveln * @privaten * @type {number}n */n this.trackpadDeltaPerZoom = 300;n return _this;n }n /**n * @privaten */n MouseWheelZoom.prototype.endInteraction_ = function () {n this.trackpadTimeoutId_ = undefined;n var view = this.getMap().getView();n view.endInteraction(undefined, Math.sign(this.lastDelta_), this.lastAnchor_);n };n /**n * Handles the {@link module:ol/MapBrowserEvent map browser event} (if it was a mousewheel-event) and eventuallyn * zooms the map.n * @overriden */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 mapBrowserEvent.preventDefault();n var map = mapBrowserEvent.map;n var wheelEvent = /** @type {WheelEvent} */ (mapBrowserEvent.originalEvent);n if (this.useAnchor_) {n this.lastAnchor_ = mapBrowserEvent.coordinate;n }n // Delta normalisation inspired byn // github.com/mapbox/mapbox-gl-js/blob/001c7b9/js/ui/handler/scroll_zoom.jsn var delta;n if (mapBrowserEvent.type == EventType.WHEEL) {n delta = wheelEvent.deltaY;n if (FIREFOX &&n 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 ?n Mode.TRACKPAD :n Mode.WHEEL;n }n if (this.mode_ === Mode.TRACKPAD) {n var view = map.getView();n if (this.trackpadTimeoutId_) {n clearTimeout(this.trackpadTimeoutId_);n }n else {n view.beginInteraction();n }n this.trackpadTimeoutId_ = setTimeout(this.endInteraction_.bind(this), this.trackpadEventGap_);n view.adjustZoom(-delta / this.trackpadDeltaPerZoom_, 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 * @privaten * @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.maxDelta_);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 zoomingn * @param {boolean} useAnchor true to zoom to the mouse's location, falsen * to zoom to the center of the mapn * @apin */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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/interaction/PinchRotaten */nimport { FALSE } from '../functions.js';nimport PointerInteraction, { centroid as centroidFromPointers } from './Pointer.js';nimport { disable } from '../rotationconstraint.js';n/**n * @typedef {Object} Optionsn * @property {number} [duration=250] The duration of the animation inn * milliseconds.n * @property {number} [threshold=0.3] Minimal angle in radians to start a rotation.n */n/**n * @classdescn * Allows the user to rotate the map by twisting with two fingersn * on a touch screen.n * @apin */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 * @privaten * @type {import("../coordinate.js").Coordinate}n */n this.anchor = null;n /**n * @privaten * @type {number|undefined}n */n this.lastAngle = undefined;n /**n * @privaten * @type {boolean}n */n this.rotating = false;n /**n * @privaten * @type {number}n */n this.rotationDelta = 0.0;n /**n * @privaten * @type {number}n */n this.threshold = options.threshold !== undefined ? options.threshold : 0.3;n /**n * @privaten * @type {number}n */n this.duration = options.duration !== undefined ? options.duration : 250;n return _this;n }n /**n * @inheritDocn */n PinchRotate.prototype.handleDragEvent = function (mapBrowserEvent) {n var rotationDelta = 0.0;n var touch0 = this.targetPointers;n var touch1 = this.targetPointers;n // angle between touchesn 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_ &&n 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,previousTouch1n var viewportPosition = map.getViewport().getBoundingClientRect();n var centroid = centroidFromPointers(this.targetPointers);n centroid -= viewportPosition.left;n centroid -= viewportPosition.top;n this.anchor_ = map.getCoordinateFromPixelInternal(centroid);n // rotaten if (this.rotating_) {n map.render();n view.adjustRotationInternal(rotationDelta, this.anchor_);n }n };n /**n * @inheritDocn */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 * @inheritDocn */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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/interaction/PinchZoomn */nimport { FALSE } from '../functions.js';nimport PointerInteraction, { centroid as centroidFromPointers } from './Pointer.js';n/**n * @typedef {Object} Optionsn * @property {number} [duration=400] Animation duration in milliseconds.n */n/**n * @classdescn * Allows the user to zoom the map by pinching with two fingersn * on a touch screen.n * @apin */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 * @privaten * @type {import("../coordinate.js").Coordinate}n */n this.anchor = null;n /**n * @privaten * @type {number}n */n this.duration = options.duration !== undefined ? options.duration : 400;n /**n * @privaten * @type {number|undefined}n */n this.lastDistance = undefined;n /**n * @privaten * @type {number}n */n this.lastScaleDelta = 1;n return _this;n }n /**n * @inheritDocn */n PinchZoom.prototype.handleDragEvent = function (mapBrowserEvent) {n var scaleDelta = 1.0;n var touch0 = this.targetPointers;n var touch1 = this.targetPointers;n var dx = touch0.clientX - touch1.clientX;n var dy = touch0.clientY - touch1.clientY;n // distance between touchesn 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 -= viewportPosition.left;n centroid -= viewportPosition.top;n this.anchor_ = map.getCoordinateFromPixelInternal(centroid);n // scale, bypass the resolution constraintn map.render();n view.adjustResolutionInternal(scaleDelta, this.anchor_);n };n /**n * @inheritDocn */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 * @inheritDocn */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/interactionn */nimport Collection from './Collection.js';nimport Kinetic from './Kinetic.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 MouseWheelZoom from './interaction/MouseWheelZoom.js';nimport PinchRotate from './interaction/PinchRotate.js';nimport PinchZoom from './interaction/PinchZoom.js';nimport { focus } from './events/condition.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} DefaultsOptionsn * @property {boolean} [altShiftDragRotate=true] Whether Alt-Shift-drag rotate isn * desired.n * @property {boolean} [onFocusOnly=false] Interact only when the map has then * focus. This affects the `MouseWheelZoom` and `DragPan` interactions and isn * useful when page scroll is desired for maps that do not have the browser'sn * focus.n * @property {boolean} [doubleClickZoom=true] Whether double click zoom isn * 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 inn * milliseconds.n */n/**n * Set of interactions included in maps by default. Specific interactions can ben * excluded by setting the appropriate option to false in the constructorn * options, but the order of the interactions is fixed. If you want to specifyn * a different order for interactions, you will need to create your ownn * {@link module:ol/interaction/Interaction} instances and insertn * them into a {@link module:ol/Collection} in the order you wantn * before creating your {@link module:ol/Map~Map} instance. Changing the order cann * 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<import("./interaction/Interaction.js").default>}n * A collection of interactions to be used with the {@link module:ol/Map~Map}n * constructor's `interactions` option.n * @apin */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 : true;n if (altShiftDragRotate) {n interactions.push(new DragRotate());n }n var doubleClickZoom = options.doubleClickZoom !== undefined ?n options.doubleClickZoom : true;n if (doubleClickZoom) {n interactions.push(new DoubleClickZoom({n delta: options.zoomDelta,n duration: options.zoomDurationn }));n }n var dragPan = options.dragPan !== undefined ? options.dragPan : true;n if (dragPan) {n interactions.push(new DragPan({n condition: options.onFocusOnly ? focus : undefined,n kinetic: kineticn }));n }n var pinchRotate = options.pinchRotate !== undefined ? options.pinchRotate :n 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.zoomDurationn }));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.zoomDurationn }));n }n var mouseWheelZoom = options.mouseWheelZoom !== undefined ?n options.mouseWheelZoom : true;n if (mouseWheelZoom) {n interactions.push(new MouseWheelZoom({n condition: options.onFocusOnly ? focus : undefined,n duration: options.zoomDurationn }));n }n var shiftDragZoom = options.shiftDragZoom !== undefined ?n options.shiftDragZoom : true;n if (shiftDragZoom) {n interactions.push(new DragZoom({n duration: options.zoomDurationn }));n }n return interactions;n}n//# sourceMappingURL=interaction.js.map”,“/**n * @module ol/render/Eventn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport 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 forn * CSS pixels to rendered pixels.n * @param {import("../PluggableMap.js").FrameState=} opt_frameState Frame state.n * @param {?CanvasRenderingContext2D=} 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`.n * @type {import("../transform.js").Transform|undefined}n * @apin */n _this.inversePixelTransform = opt_inversePixelTransform;n /**n * An object representing the current render frame state.n * @type {import("../PluggableMap.js").FrameState|undefined}n * @apin */n _this.frameState = opt_frameState;n /**n * Canvas context. Not available when the event is dispatched by the map. Only availablen * when a Canvas renderer is used, null otherwise.n * @type {CanvasRenderingContext2D|null|undefined}n * @apin */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/colorn */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 isn * given then `1` will be used.n * @typedef {Array<number>} Colorn * @apin */n/**n * This RegExp matches # followed by 3, 4, 6, or 8 hex digits.n * @constn * @type {RegExp}n * @privaten */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 * @constn * @type {RegExp}n * @privaten */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 * @apin */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-liken // semantics, whenever the cache grows too large we simply delete ann // arbitrary 25% of the entries.n /**n * @constn * @type {number}n */n var MAX_CACHE_SIZE = 1024;n /**n * @type {Object<string, Color>}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;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;n –cacheSize;n }n }n }n color = fromStringInternal_(s);n cache = color;n ++cacheSize;n }n return color;n });n})();n/**n * Return the color as an array. This function maintains a cache of calculatedn * arrays which means the result should not be modified.n * @param {Color|string} color Color.n * @return {Color} Color.n * @apin */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 * @privaten * @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)) { // hexn var n = s.length - 1; // number of hex digitsn var d = // number of digits per channeln void 0; // number of digits per channeln 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) { // rgba()n color = s.slice(5, -1).split(',').map(Number);n normalize(color);n }n else if (s.indexOf('rgb(') == 0) { // 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 colorn }n return color;n}n/**n * TODO this function is only used in the test, we probably shouldn't export itn * @param {Color} color Color.n * @return {Color} Clamped color.n */nexport function normalize(color) {n color = clamp((color + 0.5) | 0, 0, 255);n color = clamp((color + 0.5) | 0, 0, 255);n color = clamp((color + 0.5) | 0, 0, 255);n color = clamp(color, 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;n if (r != (r | 0)) {n r = (r + 0.5) | 0;n }n var g = color;n if (g != (g | 0)) {n g = (g + 0.5) | 0;n }n var b = color;n if (b != (b | 0)) {n b = (b + 0.5) | 0;n }n var a = color === undefined ? 1 : color;n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';n}n/**n * @param {string} s String.n * @return {boolean} Whether the string is actually a valid colorn */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”,“/**n * @module ol/style/IconImageCachen */nimport { asString } from '../color.js';n/**n * @classdescn * Singleton class. Available through {@link module:ol/style/IconImageCache~shared}.n */nvar IconImageCache = /** @class */ (function () {n function IconImageCache() {n /**n * @type {!Object<string, import("./IconImage.js").default>}n * @privaten */n this.cache_ = {};n /**n * @type {number}n * @privaten */n this.cacheSize_ = 0;n /**n * @type {number}n * @privaten */n this.maxCacheSize_ = 32;n }n /**n * FIXME empty description for jsdocn */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 jsdocn */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_;n if ((i++ & 3) === 0 && !iconImage.hasListener()) {n delete this.cache_;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_ : 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_ = iconImage;n ++this.cacheSize_;n };n /**n * Set the cache size of the icon cache. Default is `32`. Change this value whenn * your map uses more than 32 different icon images and you are not caching iconn * styles on the application level.n * @param {number} maxCacheSize Cache max size.n * @apin */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} forn * {@link module:ol/style/Icon~Icon} images.n * @apin */nexport var shared = new IconImageCache();n//# sourceMappingURL=IconImageCache.js.map”,“/**n * @module ol/colorliken */nimport { toString } from './color.js';n/**n * A type accepted by CanvasRenderingContext2D.fillStylen * or CanvasRenderingContext2D.strokeStyle.n * Represents a color, pattern, or gradient. The origin for patterns andn * gradients as fill style is an increment of 512 css pixels from map coordinaten * `[0, 0]`. For seamless repeat patterns, width and height of the pattern imagen * must be a factor of two (2, 4, 8, …, 512).n *n * @typedef {string|CanvasPattern|CanvasGradient} ColorLiken * @apin */n/**n * @param {import("./color.js").Color|ColorLike} color Color.n * @return {ColorLike} The color as an {@link ol/colorlike~ColorLike}.n * @apin */nexport function asColorLike(color) {n if (Array.isArray(color)) {n return toString(color);n }n else {n return color;n }n}n//# sourceMappingURL=colorlike.js.map”,“/**n * @module ol/render/VectorContextn */n/**n * @classdescn * Context for drawing geometries. A vector context is available on rendern * events and does not need to be constructed directly.n * @apin */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 */n VectorContext.prototype.drawCustom = function (geometry, feature, renderer) { };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/Geometry.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("./canvas.js").DeclutterGroup=} opt_declutterGroup Declutter.n */n VectorContext.prototype.setImageStyle = function (imageStyle, opt_declutterGroup) { };n /**n * @param {import("../style/Text.js").default} textStyle Text style.n * @param {import("./canvas.js").DeclutterGroups=} opt_declutterGroups Declutter.n */n VectorContext.prototype.setTextStyle = function (textStyle, opt_declutterGroups) { };n return VectorContext;n}());nexport default VectorContext;n//# sourceMappingURL=VectorContext.js.map”,“/**n * @module ol/render/canvasn */nimport { getFontParameters } from '../css.js';nimport { createCanvasContext2D } from '../dom.js';nimport { clear } from '../obj.js';nimport { create as createTransform } from '../transform.js';nimport LabelCache from './canvas/LabelCache.js';n/**n * @typedef {Object} FillStaten * @property {import("../colorlike.js").ColorLike} fillStylen */n/**n * @typedef {Object} FillStrokeStaten * @property {import("../colorlike.js").ColorLike} [currentFillStyle]n * @property {import("../colorlike.js").ColorLike} [currentStrokeStyle]n * @property {CanvasLineCap} [currentLineCap]n * @property {Array<number>} currentLineDashn * @property {number} [currentLineDashOffset]n * @property {CanvasLineJoin} [currentLineJoin]n * @property {number} [currentLineWidth]n * @property {number} [currentMiterLimit]n * @property {number} [lastStroke]n * @property {import("../colorlike.js").ColorLike} [fillStyle]n * @property {import("../colorlike.js").ColorLike} [strokeStyle]n * @property {CanvasLineCap} [lineCap]n * @property {Array<number>} lineDashn * @property {number} [lineDashOffset]n * @property {CanvasLineJoin} [lineJoin]n * @property {number} [lineWidth]n * @property {number} [miterLimit]n */n/**n * @typedef {Object} StrokeStaten * @property {CanvasLineCap} lineCapn * @property {Array<number>} lineDashn * @property {number} lineDashOffsetn * @property {CanvasLineJoin} lineJoinn * @property {number} lineWidthn * @property {number} miterLimitn * @property {import("../colorlike.js").ColorLike} strokeStylen */n/**n * @typedef {Object} TextStaten * @property {string} fontn * @property {string} [textAlign]n * @property {string} textBaselinen * @property {string} [placement]n * @property {number} [maxAngle]n * @property {boolean} [overflow]n * @property {import("../style/Fill.js").default} [backgroundFill]n * @property {import("../style/Stroke.js").default} [backgroundStroke]n * @property {number} [scale]n * @property {Array<number>} [padding]n */n/**n * Container for decluttered replay instructions that need to be rendered orn * omitted together, i.e. when styles render both an image and text, or for then * characters that form text along lines. The basic elements of this array aren * `[minX, minY, maxX, maxY, count]`, where the first four entries are then * rendered extent of the group in pixel space. `count` is the number of stylesn * in the group, i.e. 2 when an image and a text are grouped, or 1 otherwise.n * In addition to these four elements, declutter instruction arrays (i.e. then * arguments to {@link module:ol/render/canvas~drawImage} are appended to the array.n * @typedef {Array<*>} DeclutterGroupn */n/**n * Declutter groups for support of multi geometries.n * @typedef {Array<DeclutterGroup>} DeclutterGroupsn */n/**n * @constn * @type {string}n */nexport var defaultFont = '10px sans-serif';n/**n * @constn * @type {import("../colorlike.js").ColorLike}n */nexport var defaultFillStyle = '#000';n/**n * @constn * @type {CanvasLineCap}n */nexport var defaultLineCap = 'round';n/**n * @constn * @type {Array<number>}n */nexport var defaultLineDash = [];n/**n * @constn * @type {number}n */nexport var defaultLineDashOffset = 0;n/**n * @constn * @type {CanvasLineJoin}n */nexport var defaultLineJoin = 'round';n/**n * @constn * @type {number}n */nexport var defaultMiterLimit = 10;n/**n * @constn * @type {import("../colorlike.js").ColorLike}n */nexport var defaultStrokeStyle = '#000';n/**n * @constn * @type {string}n */nexport var defaultTextAlign = 'center';n/**n * @constn * @type {string}n */nexport var defaultTextBaseline = 'middle';n/**n * @constn * @type {Array<number>}n */nexport var defaultPadding = [0, 0, 0, 0];n/**n * @constn * @type {number}n */nexport var defaultLineWidth = 1;n/**n * The label cache for text rendering. To change the default cache size of 2048n * entries, use {@link module:ol/structs/LRUCache#setSize}.n * @type {LabelCache}n * @apin */nexport var labelCache = new LabelCache();n/**n * @type {!Object<string, number>}n */nexport var checkedFonts = {};n/**n * @type {CanvasRenderingContext2D}n */nvar measureContext = null;n/**n * @type {string}n */nvar measureFont;n/**n * @type {!Object<string, number>}n */nexport var textHeights = {};n/**n * Clears the label cache when a font becomes available.n * @param {string} fontSpec CSS font spec.n */nexport var checkFont = (function () {n var retries = 100;n var checked = checkedFonts;n var size = '32px ';n var referenceFonts = ['monospace', 'serif'];n var len = referenceFonts.length;n var text = 'wmytzilWMYTZIL@#/&?$%10\uF013';n var interval, referenceWidth;n /**n * @param {string} fontStyle Css font-stylen * @param {string} fontWeight Css font-weightn * @param {*} fontFamily Css font-familyn * @return {boolean} Font with style and weight is availablen */n function isAvailable(fontStyle, fontWeight, fontFamily) {n var context = getMeasureContext();n var available = true;n for (var i = 0; i < len; ++i) {n var referenceFont = referenceFonts;n context.font = fontStyle + ' ' + fontWeight + ' ' + size + referenceFont;n referenceWidth = context.measureText(text).width;n if (fontFamily != referenceFont) {n context.font = fontStyle + ' ' + fontWeight + ' ' + size + fontFamily + ',' + referenceFont;n var width = context.measureText(text).width;n // If width and referenceWidth are the same, then the fallback was usedn // instead of the font we wanted, so the font is not available.n available = available && width != referenceWidth;n }n }n if (available) {n return true;n }n return false;n }n function check() {n var done = true;n for (var font in checked) {n if (checked < retries) {n if (isAvailable.apply(this, font.split('\n'))) {n checked = retries;n clear(textHeights);n // Make sure that loaded fonts are picked up by Safarin measureContext = null;n measureFont = undefined;n if (labelCache.getCount()) {n labelCache.clear();n }n }n else {n ++checked;n done = false;n }n }n }n if (done) {n clearInterval(interval);n interval = undefined;n }n }n return function (fontSpec) {n var font = getFontParameters(fontSpec);n if (!font) {n return;n }n var families = font.families;n for (var i = 0, ii = families.length; i < ii; ++i) {n var family = families;n var key = font.style + '\n' + font.weight + '\n' + family;n if (!(key in checked)) {n checked = retries;n if (!isAvailable(font.style, font.weight, family)) {n checked = 0;n if (interval === undefined) {n interval = setInterval(check, 32);n }n }n }n }n };n})();n/**n * @return {CanvasRenderingContext2D} Measure context.n */nfunction getMeasureContext() {n if (!measureContext) {n measureContext = createCanvasContext2D(1, 1);n }n return measureContext;n}n/**n * @param {string} font Font to use for measuring.n * @return {import("../size.js").Size} Measurement.n */nexport var measureTextHeight = (function () {n /**n * @type {HTMLDivElement}n */n var div;n var heights = textHeights;n return function (font) {n var height = heights;n if (height == undefined) {n if (!div) {n div = document.createElement('div');n div.innerHTML = 'M';n div.style.margin = '0 !important';n div.style.padding = '0 !important';n div.style.position = 'absolute !important';n div.style.left = '-99999px !important';n }n div.style.font = font;n document.body.appendChild(div);n height = div.offsetHeight;n heights = height;n document.body.removeChild(div);n }n return height;n };n})();n/**n * @param {string} font Font.n * @param {string} text Text.n * @return {number} Width.n */nexport function measureTextWidth(font, text) {n var measureContext = getMeasureContext();n if (font != measureFont) {n measureContext.font = font;n measureFont = measureContext.font;n }n return measureContext.measureText(text).width;n}n/**n * Measure text width using a cache.n * @param {string} font The font.n * @param {string} text The text to measure.n * @param {Object<string, number>} cache A lookup of cached widths by text.n * @returns {number} The text width.n */nexport function measureAndCacheTextWidth(font, text, cache) {n if (text in cache) {n return cache;n }n var width = measureTextWidth(font, text);n cache = width;n return width;n}n/**n * @param {string} font Font to use for measuring.n * @param {Array<string>} lines Lines to measure.n * @param {Array<number>} widths Array will be populated with the widths ofn * each line.n * @return {number} Width of the whole text.n */nexport function measureTextWidths(font, lines, widths) {n var numLines = lines.length;n var width = 0;n for (var i = 0; i < numLines; ++i) {n var currentWidth = measureTextWidth(font, lines);n width = Math.max(width, currentWidth);n widths.push(currentWidth);n }n return width;n}n/**n * @param {CanvasRenderingContext2D} context Context.n * @param {number} rotation Rotation.n * @param {number} offsetX X offset.n * @param {number} offsetY Y offset.n */nexport function rotateAtOffset(context, rotation, offsetX, offsetY) {n if (rotation !== 0) {n context.translate(offsetX, offsetY);n context.rotate(rotation);n context.translate(-offsetX, -offsetY);n }n}nexport var resetTransform = createTransform();n/**n * @param {CanvasRenderingContext2D} context Context.n * @param {import("../transform.js").Transform|null} transform Transform.n * @param {number} opacity Opacity.n * @param {HTMLImageElement|HTMLCanvasElement|HTMLVideoElement} image Image.n * @param {number} originX Origin X.n * @param {number} originY Origin Y.n * @param {number} w Width.n * @param {number} h Height.n * @param {number} x X.n * @param {number} y Y.n * @param {number} scale Scale.n */nexport function drawImage(context, transform, opacity, image, originX, originY, w, h, x, y, scale) {n var alpha;n if (opacity != 1) {n alpha = context.globalAlpha;n context.globalAlpha = alpha * opacity;n }n if (transform) {n context.setTransform.apply(context, transform);n }n context.drawImage(image, originX, originY, w, h, x, y, w * scale, h * scale);n if (opacity != 1) {n context.globalAlpha = alpha;n }n if (transform) {n context.setTransform.apply(context, resetTransform);n }n}n//# sourceMappingURL=canvas.js.map”,“/**n * @module ol/structs/LRUCachen */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { assert } from '../asserts.js';nimport EventTarget from '../events/Target.js';nimport EventType from '../events/EventType.js';n/**n * @typedef {Object} Entryn * @property {string} key_n * @property {Object} newern * @property {Object} oldern * @property {*} value_n */n/**n * @classdescn * Implements a Least-Recently-Used cache where the keys do not conflict withn * Object's properties (e.g. 'hasOwnProperty' is not allowed as a key). Expiringn * items from the cache is the responsibility of the user.n *n * @fires import("../events/Event.js").defaultn * @template Tn */nvar LRUCache = /** @class */ (function (_super) {n __extends(LRUCache, _super);n /**n * @param {number=} opt_highWaterMark High water mark.n */n function LRUCache(opt_highWaterMark) {n var _this = _super.call(this) || this;n /**n * @type {number}n */n _this.highWaterMark = opt_highWaterMark !== undefined ? opt_highWaterMark : 2048;n /**n * @privaten * @type {number}n */n this.count = 0;n /**n * @privaten * @type {!Object<string, Entry>}n */n this.entries = {};n /**n * @privaten * @type {?Entry}n */n this.oldest = null;n /**n * @privaten * @type {?Entry}n */n this.newest = null;n return _this;n }n /**n * @return {boolean} Can expire cache.n */n LRUCache.prototype.canExpireCache = function () {n return this.getCount() > this.highWaterMark;n };n /**n * FIXME empty description for jsdocn */n LRUCache.prototype.clear = function () {n this.count_ = 0;n this.entries_ = {};n this.oldest_ = null;n this.newest_ = null;n this.dispatchEvent(EventType.CLEAR);n };n /**n * @param {string} key Key.n * @return {boolean} Contains key.n */n LRUCache.prototype.containsKey = function (key) {n return this.entries_.hasOwnProperty(key);n };n /**n * @param {function(T, string, LRUCache<T>): ?} f The functionn * to call for every entry from the oldest to the newer. This function takesn * 3 arguments (the entry value, the entry key and the LRUCache object).n * The return value is ignored.n */n LRUCache.prototype.forEach = function (f) {n var entry = this.oldest_;n while (entry) {n f(entry.value_, entry.key_, this);n entry = entry.newer;n }n };n /**n * @param {string} key Key.n * @param {*=} opt_options Options (reserverd for subclasses).n * @return {T} Value.n */n LRUCache.prototype.get = function (key, opt_options) {n var entry = this.entries_;n assert(entry !== undefined, 15); // Tried to get a value for a key that does not exist in the cachen if (entry === this.newest_) {n return entry.value_;n }n else if (entry === this.oldest_) {n this.oldest_ = /** @type {Entry} */ (this.oldest_.newer);n this.oldest_.older = null;n }n else {n entry.newer.older = entry.older;n entry.older.newer = entry.newer;n }n entry.newer = null;n entry.older = this.newest_;n this.newest_.newer = entry;n this.newest_ = entry;n return entry.value_;n };n /**n * Remove an entry from the cache.n * @param {string} key The entry key.n * @return {T} The removed entry.n */n LRUCache.prototype.remove = function (key) {n var entry = this.entries_;n assert(entry !== undefined, 15); // Tried to get a value for a key that does not exist in the cachen if (entry === this.newest_) {n this.newest_ = /** @type {Entry} */ (entry.older);n if (this.newest_) {n this.newest_.newer = null;n }n }n else if (entry === this.oldest_) {n this.oldest_ = /** @type {Entry} */ (entry.newer);n if (this.oldest_) {n this.oldest_.older = null;n }n }n else {n entry.newer.older = entry.older;n entry.older.newer = entry.newer;n }n delete this.entries_;n –this.count_;n return entry.value_;n };n /**n * @return {number} Count.n */n LRUCache.prototype.getCount = function () {n return this.count_;n };n /**n * @return {Array<string>} Keys.n */n LRUCache.prototype.getKeys = function () {n var keys = new Array(this.count_);n var i = 0;n var entry;n for (entry = this.newest_; entry; entry = entry.older) {n keys = entry.key_;n }n return keys;n };n /**n * @return {Array<T>} Values.n */n LRUCache.prototype.getValues = function () {n var values = new Array(this.count_);n var i = 0;n var entry;n for (entry = this.newest_; entry; entry = entry.older) {n values = entry.value_;n }n return values;n };n /**n * @return {T} Last value.n */n LRUCache.prototype.peekLast = function () {n return this.oldest_.value_;n };n /**n * @return {string} Last key.n */n LRUCache.prototype.peekLastKey = function () {n return this.oldest_.key_;n };n /**n * Get the key of the newest item in the cache. Throws if the cache is empty.n * @return {string} The newest key.n */n LRUCache.prototype.peekFirstKey = function () {n return this.newest_.key_;n };n /**n * @return {T} value Value.n */n LRUCache.prototype.pop = function () {n var entry = this.oldest_;n delete this.entries_;n if (entry.newer) {n entry.newer.older = null;n }n this.oldest_ = /** @type {Entry} */ (entry.newer);n if (!this.oldest_) {n this.newest_ = null;n }n –this.count_;n return entry.value_;n };n /**n * @param {string} key Key.n * @param {T} value Value.n */n LRUCache.prototype.replace = function (key, value) {n this.get(key); // update `newest_`n this.entries_.value_ = value;n };n /**n * @param {string} key Key.n * @param {T} value Value.n */n LRUCache.prototype.set = function (key, value) {n assert(!(key in this.entries_), 16); // Tried to set a value for a key that is used alreadyn var entry = {n key_: key,n newer: null,n older: this.newest_,n value_: valuen };n if (!this.newest_) {n this.oldest_ = entry;n }n else {n this.newest_.newer = entry;n }n this.newest_ = entry;n this.entries_ = entry;n ++this.count_;n };n /**n * Set a maximum number of entries for the cache.n * @param {number} size Cache size.n * @apin */n LRUCache.prototype.setSize = function (size) {n this.highWaterMark = size;n };n return LRUCache;n}(EventTarget));nexport default LRUCache;n//# sourceMappingURL=LRUCache.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { getUid } from '../../util.js';nimport LRUCache from '../../structs/LRUCache.js';n/**n * @module ol/render/canvas/LabelCachen */n/**n * @classdescn * Cache of pre-rendered labels.n */nvar LabelCache = /** @class */ (function (_super) {n __extends(LabelCache, _super);n /**n * @inheritDocn */n function LabelCache(opt_highWaterMark) {n var _this = _super.call(this, opt_highWaterMark) || this;n _this.consumers = {};n return _this;n }n LabelCache.prototype.clear = function () {n this.consumers = {};n _super.prototype.clear.call(this);n };n /**n * @overriden * @param {string} key Label key.n * @param {import("./Executor.js").default} consumer Label consumer.n * @return {HTMLCanvasElement} Label.n */n LabelCache.prototype.get = function (key, consumer) {n var canvas = _super.prototype.get.call(this, key);n var consumerId = getUid(consumer);n if (!(consumerId in this.consumers)) {n this.consumers = {};n }n this.consumers[key] = true;n return canvas;n };n LabelCache.prototype.prune = function () {n outer: while (this.canExpireCache()) {n var key = this.peekLastKey();n for (var consumerId in this.consumers) {n if (key in this.consumers) {n break outer;n }n }n var canvas = this.pop();n canvas.width = 0;n canvas.height = 0;n for (var consumerId in this.consumers) {n delete this.consumers[key];n }n }n };n /**n * @param {import("./Executor.js").default} consumer Label consumer.n */n LabelCache.prototype.release = function (consumer) {n delete this.consumers;n };n return LabelCache;n}(LRUCache));nexport default LabelCache;n//# sourceMappingURL=LabelCache.js.map”,“/**n * @module ol/render/canvas/Immediaten */n// FIXME test, especially polygons with holes and multipolygonsn// 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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { equals } from '../../array.js';nimport { asColorLike } from '../../colorlike.js';nimport { intersects } from '../../extent.js';nimport GeometryType from '../../geom/GeometryType.js';nimport { transformGeom2D } from '../../geom/SimpleGeometry.js';nimport { transform2D } from '../../geom/flat/transform.js';nimport VectorContext from '../VectorContext.js';nimport { defaultTextAlign, defaultFillStyle, defaultLineCap, defaultLineDash, defaultLineDashOffset, defaultLineJoin, defaultLineWidth, defaultMiterLimit, defaultStrokeStyle, defaultTextBaseline, defaultFont } from '../canvas.js';nimport { create as createTransform, compose as composeTransform } from '../../transform.js';n/**n * @classdescn * A concrete subclass of {@link module:ol/render/VectorContext} that implementsn * direct rendering of features and geometries to an HTML5 Canvas context.n * Instances of this class are created internally by the library andn * provided to application code as vectorContext member of then * {@link module:ol/render/Event~RenderEvent} object associated with postcompose, precompose andn * 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 * @privaten * @type {CanvasRenderingContext2D}n */n this.context = context;n /**n * @privaten * @type {number}n */n this.pixelRatio = pixelRatio;n /**n * @privaten * @type {import("../../extent.js").Extent}n */n this.extent = extent;n /**n * @privaten * @type {import("../../transform.js").Transform}n */n this.transform = transform;n /**n * @privaten * @type {number}n */n this.viewRotation = viewRotation;n /**n * @privaten * @type {number}n */n this.squaredTolerance = opt_squaredTolerance;n /**n * @privaten * @type {import("../../proj.js").TransformFunction}n */n this.userTransform = opt_userTransform;n /**n * @privaten * @type {?import("../canvas.js").FillState}n */n this.contextFillState = null;n /**n * @privaten * @type {?import("../canvas.js").StrokeState}n */n this.contextStrokeState = null;n /**n * @privaten * @type {?import("../canvas.js").TextState}n */n this.contextTextState = null;n /**n * @privaten * @type {?import("../canvas.js").FillState}n */n this.fillState = null;n /**n * @privaten * @type {?import("../canvas.js").StrokeState}n */n this.strokeState = null;n /**n * @privaten * @type {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement}n */n this.image = null;n /**n * @privaten * @type {number}n */n this.imageAnchorX = 0;n /**n * @privaten * @type {number}n */n this.imageAnchorY = 0;n /**n * @privaten * @type {number}n */n this.imageHeight = 0;n /**n * @privaten * @type {number}n */n this.imageOpacity = 0;n /**n * @privaten * @type {number}n */n this.imageOriginX = 0;n /**n * @privaten * @type {number}n */n this.imageOriginY = 0;n /**n * @privaten * @type {boolean}n */n this.imageRotateWithView = false;n /**n * @privaten * @type {number}n */n this.imageRotation = 0;n /**n * @privaten * @type {number}n */n this.imageScale = 0;n /**n * @privaten * @type {number}n */n this.imageWidth = 0;n /**n * @privaten * @type {string}n */n this.text = '';n /**n * @privaten * @type {number}n */n this.textOffsetX = 0;n /**n * @privaten * @type {number}n */n this.textOffsetY = 0;n /**n * @privaten * @type {boolean}n */n this.textRotateWithView = false;n /**n * @privaten * @type {number}n */n this.textRotation = 0;n /**n * @privaten * @type {number}n */n this.textScale = 0;n /**n * @privaten * @type {?import("../canvas.js").FillState}n */n this.textFillState = null;n /**n * @privaten * @type {?import("../canvas.js").StrokeState}n */n this.textStrokeState = null;n /**n * @privaten * @type {?import("../canvas.js").TextState}n */n this.textState = null;n /**n * @privaten * @type {Array<number>}n */n this.pixelCoordinates = [];n /**n * @privaten * @type {import("../../transform.js").Transform}n */n this.tmpLocalTransform = createTransform();n return _this;n }n /**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @privaten */n CanvasImmediateRenderer.prototype.drawImages_ = function (flatCoordinates, offset, end, stride) {n if (!this.image_) {n return;n }n var pixelCoordinates = transform2D(flatCoordinates, offset, end, 2, 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 - this.imageAnchorX_;n var y = pixelCoordinates[i + 1] - this.imageAnchorY_;n if (rotation !== 0 || this.imageScale_ != 1) {n var centerX = x + this.imageAnchorX_;n var centerY = y + this.imageAnchorY_;n composeTransform(localTransform, centerX, centerY, this.imageScale_, this.imageScale_, rotation, -centerX, -centerY);n context.setTransform.apply(context, localTransform);n }n context.drawImage(this.image_, this.imageOriginX_, this.imageOriginY_, this.imageWidth_, this.imageHeight_, x, y, this.imageWidth_, this.imageHeight_);n }n if (rotation !== 0 || this.imageScale_ != 1) {n context.setTransform(1, 0, 0, 1, 0, 0);n }n if (this.imageOpacity_ != 1) {n context.globalAlpha = alpha;n }n };n /**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @privaten */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 + this.textOffsetX_;n var y = pixelCoordinates[offset + 1] + this.textOffsetY_;n if (rotation !== 0 || this.textScale_ != 1) {n var localTransform = composeTransform(this.tmpLocalTransform_, x, y, this.textScale_, this.textScale_, rotation, -x, -y);n context.setTransform.apply(context, localTransform);n }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 if (rotation !== 0 || this.textScale_ != 1) {n context.setTransform(1, 0, 0, 1, 0, 0);n }n };n /**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @param {boolean} close Close.n * @privaten * @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, pixelCoordinates);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, pixelCoordinates[i + 1]);n }n if (close) {n context.closePath();n }n return end;n };n /**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<number>} ends Ends.n * @param {number} stride Stride.n * @privaten * @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, stride, true);n }n return offset;n };n /**n * Render a circle geometry into the canvas. Rendering is immediate and usesn * the current fill and stroke styles.n *n * @param {import("../../geom/Circle.js").default} geometry Circle geometry.n * @overriden * @apin */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 - pixelCoordinates;n var dy = pixelCoordinates - pixelCoordinates;n var radius = Math.sqrt(dx * dx + dy * dy);n var context = this.context_;n context.beginPath();n context.arc(pixelCoordinates, pixelCoordinates, 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 * @overriden * @apin */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. Calln * {@link module:ol/render/canvas/Immediate#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 * @overriden * @apin */n CanvasImmediateRenderer.prototype.drawGeometry = function (geometry) {n var type = geometry.getType();n switch (type) {n case GeometryType.POINT:n this.drawPoint(/** @type {import("../../geom/Point.js").default} */ (geometry));n break;n case GeometryType.LINE_STRING:n this.drawLineString(/** @type {import("../../geom/LineString.js").default} */ (geometry));n break;n case GeometryType.POLYGON:n this.drawPolygon(/** @type {import("../../geom/Polygon.js").default} */ (geometry));n break;n case GeometryType.MULTI_POINT:n this.drawMultiPoint(/** @type {import("../../geom/MultiPoint.js").default} */ (geometry));n break;n case GeometryType.MULTI_LINE_STRING:n this.drawMultiLineString(/** @type {import("../../geom/MultiLineString.js").default} */ (geometry));n break;n case GeometryType.MULTI_POLYGON:n this.drawMultiPolygon(/** @type {import("../../geom/MultiPolygon.js").default} */ (geometry));n break;n case GeometryType.GEOMETRY_COLLECTION:n this.drawGeometryCollection(/** @type {import("../../geom/GeometryCollection.js").default} */ (geometry));n break;n case GeometryType.CIRCLE:n this.drawCircle(/** @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 providedn * style will be ignored - features are rendered immediately in the order thatn * this method is called. If you need `zIndex` support, you should be using ann * {@link module:ol/layer/Vector~VectorLayer} instead.n *n * @param {import("../../Feature.js").default} feature Feature.n * @param {import("../../style/Style.js").default} style Style.n * @overriden * @apin */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 andn * uses the current styles appropriate for each geometry in the collection.n *n * @param {import("../../geom/GeometryCollection.js").default} geometry Geometry collection.n * @overriden */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);n }n };n /**n * Render a Point geometry into the canvas. Rendering is immediate and usesn * the current style.n *n * @param {import("../../geom/Point.js").default|import("../Feature.js").default} geometry Point geometry.n * @overriden */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 andn * uses the current style.n *n * @param {import("../../geom/MultiPoint.js").default|import("../Feature.js").default} geometry MultiPoint geometry.n * @overriden */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 usesn * the current style.n *n * @param {import("../../geom/LineString.js").default|import("../Feature.js").default} geometry LineString geometry.n * @overriden */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 immediaten * and uses the current style.n *n * @param {import("../../geom/MultiLineString.js").default|import("../Feature.js").default} geometry MultiLineString geometry.n * @overriden */n CanvasImmediateRenderer.prototype.drawMultiLineString = function (geometry) {n if (this.squaredTolerance_) {n geometry = /** @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<number>} */ (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, 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 usesn * the current style.n *n * @param {import("../../geom/Polygon.js").default|import("../Feature.js").default} geometry Polygon geometry.n * @overriden */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, /** @type {Array<number>} */ (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 andn * uses the current style.n * @param {import("../../geom/MultiPolygon.js").default} geometry MultiPolygon geometry.n * @overriden */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;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 * @privaten */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.fillStylen };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 * @privaten */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.strokeStylen };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 * @privaten */n CanvasImmediateRenderer.prototype.setContextTextState_ = function (textState) {n var context = this.context_;n var contextTextState = this.contextTextState_;n var textAlign = textState.textAlign ?n textState.textAlign : 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.textBaselinen };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 clearn * 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 * @overriden */n CanvasImmediateRenderer.prototype.setFillStrokeStyle = function (fillStyle, strokeStyle) {n if (!fillStyle) {n this.fillState_ = null;n }n else {n var fillStyleColor = fillStyle.getColor();n this.fillState_ = {n fillStyle: asColorLike(fillStyleColor ?n 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 this.strokeState_ = {n lineCap: strokeStyleLineCap !== undefined ?n strokeStyleLineCap : defaultLineCap,n lineDash: strokeStyleLineDash ?n strokeStyleLineDash : defaultLineDash,n lineDashOffset: strokeStyleLineDashOffset ?n strokeStyleLineDashOffset : defaultLineDashOffset,n lineJoin: strokeStyleLineJoin !== undefined ?n strokeStyleLineJoin : defaultLineJoin,n lineWidth: this.pixelRatio_ * (strokeStyleWidth !== undefined ?n strokeStyleWidth : defaultLineWidth),n miterLimit: strokeStyleMiterLimit !== undefined ?n strokeStyleMiterLimit : defaultMiterLimit,n strokeStyle: asColorLike(strokeStyleColor ?n strokeStyleColor : defaultStrokeStyle)n };n }n };n /**n * Set the image style for subsequent draw operations. Pass null to removen * the image style.n *n * @param {import("../../style/Image.js").default} imageStyle Image style.n * @overriden */n CanvasImmediateRenderer.prototype.setImageStyle = function (imageStyle) {n if (!imageStyle) {n this.image_ = null;n }n else {n var imageAnchor = imageStyle.getAnchor();n // FIXME pixel ration var imageImage = imageStyle.getImage(1);n var imageOrigin = imageStyle.getOrigin();n var imageSize = imageStyle.getSize();n this.imageAnchorX_ = imageAnchor;n this.imageAnchorY_ = imageAnchor;n this.imageHeight_ = imageSize;n this.image_ = imageImage;n this.imageOpacity_ = imageStyle.getOpacity();n this.imageOriginX_ = imageOrigin;n this.imageOriginY_ = imageOrigin;n this.imageRotateWithView_ = imageStyle.getRotateWithView();n this.imageRotation_ = imageStyle.getRotation();n this.imageScale_ = imageStyle.getScale() * this.pixelRatio_;n this.imageWidth_ = imageSize;n }n };n /**n * Set the text style for subsequent draw operations. Pass null ton * remove the text style.n *n * @param {import("../../style/Text.js").default} textStyle Text style.n * @overriden */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 ?n 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 : defaultLineCap,n lineDash: textStrokeStyleLineDash ?n textStrokeStyleLineDash : defaultLineDash,n lineDashOffset: textStrokeStyleLineDashOffset ?n textStrokeStyleLineDashOffset : defaultLineDashOffset,n lineJoin: textStrokeStyleLineJoin !== undefined ?n textStrokeStyleLineJoin : defaultLineJoin,n lineWidth: textStrokeStyleWidth !== undefined ?n textStrokeStyleWidth : defaultLineWidth,n miterLimit: textStrokeStyleMiterLimit !== undefined ?n textStrokeStyleMiterLimit : defaultMiterLimit,n strokeStyle: asColorLike(textStrokeStyleColor ?n 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.getScale();n var textText = textStyle.getText();n var textTextAlign = textStyle.getTextAlign();n var textTextBaseline = textStyle.getTextBaseline();n this.textState_ = {n font: textFont !== undefined ?n textFont : defaultFont,n textAlign: textTextAlign !== undefined ?n textTextAlign : defaultTextAlign,n textBaseline: textTextBaseline !== undefined ?n textTextBaseline : defaultTextBaselinen };n this.text_ = textText !== undefined ? textText : '';n this.textOffsetX_ =n textOffsetX !== undefined ? (this.pixelRatio_ * textOffsetX) : 0;n this.textOffsetY_ =n textOffsetY !== undefined ? (this.pixelRatio_ * textOffsetY) : 0;n this.textRotateWithView_ = textRotateWithView !== undefined ? textRotateWithView : false;n this.textRotation_ = textRotation !== undefined ? textRotation : 0;n this.textScale_ = this.pixelRatio_ * (textScale !== undefined ?n textScale : 1);n }n };n return CanvasImmediateRenderer;n}(VectorContext));nexport default CanvasImmediateRenderer;n//# sourceMappingURL=Immediate.js.map”,“/**n * @module ol/ImageStaten */n/**n * @enum {number}n */nexport default {n IDLE: 0,n LOADING: 1,n LOADED: 2,n ERROR: 3,n EMPTY: 4n};n//# sourceMappingURL=ImageState.js.map”,“/**n * @module ol/render/canvas/BuilderTypen */n/**n * @enum {string}n */nexport default {n CIRCLE: 'Circle',n DEFAULT: 'Default',n IMAGE: 'Image',n LINE_STRING: 'LineString',n POLYGON: 'Polygon',n TEXT: 'Text'n};n//# sourceMappingURL=BuilderType.js.map”,“/**n * @module ol/renderer/vectorn */nimport { getUid } from '../util.js';nimport ImageState from '../ImageState.js';nimport GeometryType from '../geom/GeometryType.js';nimport BuilderType from '../render/canvas/BuilderType.js';n/**n * Tolerance for geometry simplification in device pixels.n * @type {number}n */nvar SIMPLIFY_TOLERANCE = 0.5;n/**n * @constn * @type {Object<import("../geom/GeometryType.js").default,n * function(import("../render/canvas/BuilderGroup.js").default, import("../geom/Geometry.js").default,n * import("../style/Style.js").default, Object): void>}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': renderCircleGeometryn};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 */nfunction renderCircleGeometry(builderGroup, geometry, style, feature) {n var fillStyle = style.getFill();n var strokeStyle = style.getStroke();n if (fillStyle || strokeStyle) {n var circleReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.CIRCLE);n circleReplay.setFillStrokeStyle(fillStyle, strokeStyle);n circleReplay.drawCircle(geometry, feature);n }n var textStyle = style.getText();n if (textStyle) {n var textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(false));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 * @return {boolean} `true` if style is loading.n * @template Tn */nexport function renderFeature(replayGroup, feature, style, squaredTolerance, listener, opt_transform) {n var loading = false;n var imageStyle = style.getImage();n if (imageStyle) {n var imageState = imageStyle.getImageState();n if (imageState == ImageState.LOADED || imageState == ImageState.ERROR) {n imageStyle.unlistenImageChange(listener);n }n else {n if (imageState == ImageState.IDLE) {n imageStyle.load();n }n imageState = imageStyle.getImageState();n imageStyle.listenImageChange(listener);n loading = true;n }n }n renderFeatureInternal(replayGroup, feature, style, squaredTolerance, opt_transform);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 */nfunction renderFeatureInternal(replayGroup, feature, style, squaredTolerance, opt_transform) {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;n geometryRenderer(replayGroup, simplifiedGeometry, style, feature);n }n}n/**n * @param {import("../render/canvas/BuilderGroup.js").default} replayGroup Replay group.n * @param {import("../geom/Geometry.js").default|import("../render/Feature.js").default} geometry Geometry.n * @param {import("../style/Style.js").default} style Style.n * @param {import("../Feature.js").FeatureLike} feature Feature.n */nfunction renderGeometry(replayGroup, geometry, style, feature) {n if (geometry.getType() == GeometryType.GEOMETRY_COLLECTION) {n var geometries = /** @type {import("../geom/GeometryCollection.js").default} */ (geometry).getGeometries();n for (var i = 0, ii = geometries.length; i < ii; ++i) {n renderGeometry(replayGroup, geometries, style, feature);n }n return;n }n var replay = replayGroup.getBuilder(style.getZIndex(), BuilderType.DEFAULT);n replay.drawCustom(/** @type {import("../geom/SimpleGeometry.js").default} */ (geometry), feature, style.getRenderer());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 */nfunction renderGeometryCollectionGeometry(replayGroup, geometry, style, feature) {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.getType()];n geometryRenderer(replayGroup, geometries, style, feature);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 */nfunction renderLineStringGeometry(builderGroup, geometry, style, feature) {n var strokeStyle = style.getStroke();n if (strokeStyle) {n var lineStringReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.LINE_STRING);n lineStringReplay.setFillStrokeStyle(null, strokeStyle);n lineStringReplay.drawLineString(geometry, feature);n }n var textStyle = style.getText();n if (textStyle) {n var textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(false));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 */nfunction renderMultiLineStringGeometry(builderGroup, geometry, style, feature) {n var strokeStyle = style.getStroke();n if (strokeStyle) {n var lineStringReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.LINE_STRING);n lineStringReplay.setFillStrokeStyle(null, strokeStyle);n lineStringReplay.drawMultiLineString(geometry, feature);n }n var textStyle = style.getText();n if (textStyle) {n var textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(false));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 */nfunction renderMultiPolygonGeometry(builderGroup, geometry, style, feature) {n var fillStyle = style.getFill();n var strokeStyle = style.getStroke();n if (strokeStyle || fillStyle) {n var polygonReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.POLYGON);n polygonReplay.setFillStrokeStyle(fillStyle, strokeStyle);n polygonReplay.drawMultiPolygon(geometry, feature);n }n var textStyle = style.getText();n if (textStyle) {n var textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(false));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 */nfunction renderPointGeometry(builderGroup, geometry, style, feature) {n var imageStyle = style.getImage();n if (imageStyle) {n if (imageStyle.getImageState() != ImageState.LOADED) {n return;n }n var imageReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.IMAGE);n imageReplay.setImageStyle(imageStyle, builderGroup.addDeclutter(false));n imageReplay.drawPoint(geometry, feature);n }n var textStyle = style.getText();n if (textStyle) {n var textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(!!imageStyle));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 */nfunction renderMultiPointGeometry(builderGroup, geometry, style, feature) {n var imageStyle = style.getImage();n if (imageStyle) {n if (imageStyle.getImageState() != ImageState.LOADED) {n return;n }n var imageReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.IMAGE);n imageReplay.setImageStyle(imageStyle, builderGroup.addDeclutter(false));n imageReplay.drawMultiPoint(geometry, feature);n }n var textStyle = style.getText();n if (textStyle) {n var textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(!!imageStyle));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 */nfunction renderPolygonGeometry(builderGroup, geometry, style, feature) {n var fillStyle = style.getFill();n var strokeStyle = style.getStroke();n if (fillStyle || strokeStyle) {n var polygonReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.POLYGON);n polygonReplay.setFillStrokeStyle(fillStyle, strokeStyle);n polygonReplay.drawPolygon(geometry, feature);n }n var textStyle = style.getText();n if (textStyle) {n var textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(false));n textReplay.drawText(geometry, feature);n }n}n//# sourceMappingURL=vector.js.map”,“/**n * @module ol/rendern */nimport { DEVICE_PIXEL_RATIO } from './has.js';nimport { apply as applyTransform, create as createTransform, multiply as multiplyTransform, scale as scaleTransform } from './transform.js';nimport CanvasImmediateRenderer from './render/canvas/Immediate.js';nimport { getSquaredTolerance } from './renderer/vector.js';nimport { getUserProjection, getTransformFromProjections } from './proj.js';n/**n * @typedef {Object} Staten * @property {CanvasRenderingContext2D} context Canvas context that the layer is being rendered to.n * @property {import("./Feature.js").FeatureLike} featuren * @property {import("./geom/SimpleGeometry.js").default} geometryn * @property {number} pixelRatio Pixel ratio used by the layer renderer.n * @property {number} resolution Resolution that the render batch was created and optimized for.n * This is not the view's resolution that is being rendered.n * @property {number} rotation Rotation of the rendered layer in radians.n */n/**n * A function to be used when sorting features before rendering.n * It takes two instances of {@link module:ol/Feature} orn * {@link module:ol/render/Feature} and returns a `{number}`.n *n * @typedef {function(import("./Feature.js").FeatureLike, import("./Feature.js").FeatureLike):number} OrderFunctionn */n/**n * @typedef {Object} ToContextOptionsn * @property {import("./size.js").Size} [size] Desired size of the canvas in cssn * pixels. When provided, both canvas and css size will be set according to then * `pixelRatio`. If not provided, the current canvas and css sizes will not ben * altered.n * @property {number} [pixelRatio=window.devicePixelRatio] Pixel ratio (canvasn * pixel to css pixel ratio) for the canvas.n */n/**n * Binds a Canvas Immediate API to a canvas context, to allow drawing geometriesn * to the context's canvas.n *n * The units for geometry coordinates are css pixels relative to the top leftn * corner of the canvas element.n * “`jsn * import {toContext} from 'ol/render';n * import Fill from 'ol/style/Fill';n * import Polygon from 'ol/geom/Polygon';n *n * var canvas = document.createElement('canvas');n * var render = toContext(canvas.getContext('2d'),n * { size: [100, 100] });n * render.setFillStrokeStyle(new Fill({ color: blue }));n * render.drawPolygon(n * new Polygon([[[0, 0], [100, 100], [100, 0], [0, 0]]]));n * “`n *n * @param {CanvasRenderingContext2D} context Canvas context.n * @param {ToContextOptions=} opt_options Options.n * @return {CanvasImmediateRenderer} Canvas Immediate.n * @apin */nexport function toContext(context, opt_options) {n var canvas = context.canvas;n var options = opt_options ? opt_options : {};n var pixelRatio = options.pixelRatio || DEVICE_PIXEL_RATIO;n var size = options.size;n if (size) {n canvas.width = size * pixelRatio;n canvas.height = size * pixelRatio;n canvas.style.width = size + 'px';n canvas.style.height = size + 'px';n }n var extent = [0, 0, canvas.width, canvas.height];n var transform = scaleTransform(createTransform(), pixelRatio, pixelRatio);n return new CanvasImmediateRenderer(context, pixelRatio, extent, transform, 0);n}n/**n * Gets a vector context for drawing to the event's canvas.n * @param {import("./render/Event.js").default} event Render event.n * @returns {CanvasImmediateRenderer} Vector context.n * @apin */nexport function getVectorContext(event) {n var frameState = event.frameState;n var transform = multiplyTransform(event.inversePixelTransform.slice(), frameState.coordinateToPixelTransform);n var squaredTolerance = getSquaredTolerance(frameState.viewState.resolution, frameState.pixelRatio);n var userTransform;n var userProjection = getUserProjection();n if (userProjection) {n userTransform = getTransformFromProjections(userProjection, frameState.viewState.projection);n }n return new CanvasImmediateRenderer(event.context, frameState.pixelRatio, frameState.extent, transform, frameState.viewState.rotation, squaredTolerance, userTransform);n}n/**n * Gets the pixel of the event's canvas context from the map viewport's CSS pixel.n * @param {import("./render/Event.js").default} event Render event.n * @param {import("./pixel.js").Pixel} pixel CSS pixel relative to the top-leftn * corner of the map viewport.n * @returns {import("./pixel.js").Pixel} Pixel on the event's canvas context.n * @apin */nexport function getRenderPixel(event, pixel) {n var result = pixel.slice(0);n applyTransform(event.inversePixelTransform.slice(), result);n return result;n}n/**n * @param {import("./PluggableMap.js").FrameState} frameState Frame state.n * @param {?} declutterTree Declutter tree.n * @returns {?} Declutter tree.n */nexport function renderDeclutterItems(frameState, declutterTree) {n if (declutterTree) {n declutterTree.clear();n }n var items = frameState.declutterItems;n for (var z = items.length - 1; z >= 0; –z) {n var item = items;n var zIndexItems = item.items;n for (var i = 0, ii = zIndexItems.length; i < ii; i += 3) {n declutterTree = zIndexItems.renderDeclutter(zIndexItems[i + 1], zIndexItems[i + 2], item.opacity, declutterTree);n }n }n items.length = 0;n return declutterTree;n}n//# sourceMappingURL=render.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/renderer/Mapn */nimport { abstract } from '../util.js';nimport Disposable from '../Disposable.js';nimport { getWidth } from '../extent.js';nimport { TRUE } from '../functions.js';nimport { inView } from '../layer/Layer.js';nimport { shared as iconImageCache } from '../style/IconImageCache.js';nimport { compose as composeTransform, makeInverse } from '../transform.js';nimport { renderDeclutterItems } from '../render.js';n/**n * @abstractn */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 * @privaten * @type {import("../PluggableMap.js").default}n */n this.map = map;n /**n * @privaten */n this.declutterTree = null;n return _this;n }n /**n * @abstractn * @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 * @protectedn */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 / 2, frameState.size / 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 {function(this: S, import("../Feature.js").FeatureLike,n * import("../layer/Layer.js").default): T} 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 filtern * function, only layers which are visible and for which this functionn * returns `true` will be tested for features. By default, all visiblen * 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,Un */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 * @return {?} Callback result.n */n function forEachFeatureAtCoordinate(managed, feature, layer) {n return callback.call(thisArg, feature, managed ? layer : null);n }n var projection = viewState.projection;n var translatedCoordinate = coordinate;n var offsets = [[0, 0]];n if (projection.canWrapX()) {n var projectionExtent = projection.getExtent();n var worldWidth = getWidth(projectionExtent);n var x = coordinate;n if (x < projectionExtent || x > projectionExtent) {n var worldsAway = Math.ceil((projectionExtent - x) / worldWidth);n translatedCoordinate = [x + worldWidth * worldsAway, coordinate];n }n if (checkWrapped) {n offsets.push([-worldWidth, 0], [worldWidth, 0]);n }n }n var layerStates = frameState.layerStatesArray;n var numLayers = layerStates.length;n var declutteredFeatures;n if (this.declutterTree_) {n declutteredFeatures = this.declutterTree_.all().map(function (entry) {n return entry.value;n });n }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;n var layer = /** @type {import("../layer/Layer.js").default} */ (layerState.layer);n if (layer.hasRenderer() && inView(layerState, viewState) && layerFilter.call(thisArg2, layer)) {n var layerRenderer = layer.getRenderer();n var source = layer.getSource();n if (layerRenderer && source) {n var coordinates = source.getWrapX() ? translatedCoordinate : coordinate;n var callback_1 = forEachFeatureAtCoordinate.bind(null, layerState.managed);n tmpCoord = coordinates + offsets[0];n tmpCoord = coordinates + offsets[1];n result = layerRenderer.forEachFeatureAtCoordinate(tmpCoord, frameState, hitTolerance, callback_1, declutteredFeatures);n }n if (result) {n return result;n }n }n }n }n return undefined;n };n /**n * @abstractn * @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(this: S, import("../layer/Layer.js").default, (Uint8ClampedArray|Uint8Array)): T} callback Layern * callback.n * @param {function(this: U, import("../layer/Layer.js").default): boolean} layerFilter Layer filtern * function, only layers which are visible and for which this functionn * returns `true` will be tested for features. By default, all visiblen * layers will be tested.n * @return {T|undefined} Callback result.n * @template S,T,Un */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 filtern * function, only layers which are visible and for which this functionn * returns `true` will be tested for features. By default, all visiblen * 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 Un */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 * @param {?import("../PluggableMap.js").FrameState} frameState Frame state.n */n MapRenderer.prototype.renderFrame = function (frameState) {n this.declutterTree_ = renderDeclutterItems(frameState, this.declutterTree_);n };n /**n * @param {import("../PluggableMap.js").FrameState} frameState Frame state.n * @protectedn */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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/renderer/Compositen */nimport { CLASS_UNSELECTABLE } from '../css.js';nimport { inView } from '../layer/Layer.js';nimport RenderEvent from '../render/Event.js';nimport RenderEventType from '../render/EventType.js';nimport MapRenderer from './Map.js';nimport SourceState from '../source/State.js';nimport { replaceChildren } from '../dom.js';nimport { labelCache } from '../render/canvas.js';nimport EventType from '../events/EventType.js';nimport { listen, unlistenByKey } from '../events.js';n/**n * @classdescn * Canvas map renderer.n * @apin */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.labelCacheKey = listen(labelCache, EventType.CLEAR, map.redrawText.bind(map));n /**n * @privaten * @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 * @privaten * @type {Array<HTMLElement>}n */n this.children = [];n /**n * @privaten * @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.labelCacheKey_);n _super.prototype.disposeInternal.call(this);n };n /**n * @inheritDocn */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 var previousElement = null;n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {n var layerState = layerStatesArray;n frameState.layerIndex = i;n if (!inView(layerState, viewState) ||n (layerState.sourceState != SourceState.READY && layerState.sourceState != SourceState.UNDEFINED)) {n continue;n }n var layer = layerState.layer;n var element = layer.render(frameState, previousElement);n if (!element) {n continue;n }n if (element !== previousElement) {n this.children_.push(element);n previousElement = element;n }n }n _super.prototype.renderFrame.call(this, frameState);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 * @inheritDocn */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;n var layer = layerState.layer;n if (layer.hasRenderer() && inView(layerState, viewState) && 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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/Mapn */nimport PluggableMap from './PluggableMap.js';nimport { defaults as defaultControls } from './control.js';nimport { defaults as defaultInteractions } from './interaction.js';nimport { assign } from './obj.js';nimport CompositeMapRenderer from './renderer/Composite.js';n/**n * @classdescn * 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: 1n * }),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} ton * display {@link module:ol/source/OSM~OSM} OSM data and render it to a DOMn * element with the id `map`.n *n * The constructor places a viewport container (with CSS class namen * `ol-viewport`) in the target element (see `getViewport()`), and then twon * further elements within the viewport: one with CSS class namen * `ol-overlaycontainer-stopevent` for controls and some overlays, and one withn * CSS class name `ol-overlaycontainer` for other overlays (see the `stopEvent`n * option of {@link module:ol/Overlay~Overlay} for the difference). The mapn * itself is placed in a further element within the viewport.n *n * Layers are stored as a {@link module:ol/Collection~Collection} inn * layerGroups. A top-level group is provided by the library. This is what isn * accessed by `getLayerGroup` and `setLayerGroup`. Layers entered in then * options are added to this group, and `addLayer` and `removeLayer` change then * layer collection in the group. `getLayers` is a convenience function forn * `getLayerGroup().getLayers()`. Note that {@link module:ol/layer/Group~Group}n * is a subclass of {@link module:ol/layer/Base}, so layers entered in then * options or added with `addLayer` can be groups, which can contain furthern * groups, and so on.n *n * @apin */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 var _this = this;n options = assign({}, options);n if (!options.controls) {n options.controls = defaultControls();n }n if (!options.interactions) {n options.interactions = defaultInteractions();n }n _this = _super.call(this, options) || this;n return _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”,“/**n * @module ol/OverlayPositioningn */n/**n * Overlay position: `'bottom-left'`, `'bottom-center'`, `'bottom-right'`,n * `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,n * `'top-center'`, `'top-right'`n * @enum {string}n */nexport default {n BOTTOM_LEFT: 'bottom-left',n BOTTOM_CENTER: 'bottom-center',n BOTTOM_RIGHT: 'bottom-right',n CENTER_LEFT: 'center-left',n CENTER_CENTER: 'center-center',n CENTER_RIGHT: 'center-right',n TOP_LEFT: 'top-left',n TOP_CENTER: 'top-center',n TOP_RIGHT: 'top-right'n};n//# sourceMappingURL=OverlayPositioning.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/Overlayn */nimport MapEventType from './MapEventType.js';nimport BaseObject, { getChangeEventType } from './Object.js';nimport OverlayPositioning from './OverlayPositioning.js';nimport { CLASS_SELECTABLE } from './css.js';nimport { removeNode, removeChildren, outerWidth, outerHeight } from './dom.js';nimport { listen, unlistenByKey } from './events.js';nimport { containsExtent } from './extent.js';n/**n * @typedef {Object} Optionsn * @property {number|string} [id] Set the overlay id. The overlay id can be usedn * with the {@link module:ol/Map~Map#getOverlayById} method.n * @property {HTMLElement} [element] The overlay element.n * @property {Array<number>} [offset=[0, 0]] Offsets in pixels used when positioningn * the overlay. The first element in then * array is the horizontal offset. A positive value shifts the overlay right.n * The second element in the array is the vertical offset. A positive valuen * shifts the overlay down.n * @property {import("./coordinate.js").Coordinate} [position] The overlay positionn * in map projection.n * @property {OverlayPositioning} [positioning='top-left'] Defines hown * the overlay is actually positioned with respect to its `position` property.n * Possible values are `'bottom-left'`, `'bottom-center'`, `'bottom-right'`,n * `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,n * `'top-center'`, and `'top-right'`.n * @property {boolean} [stopEvent=true] Whether event propagation to the mapn * viewport should be stopped. If `true` the overlay is placed in the samen * container as that of the controls (CSS class namen * `ol-overlaycontainer-stopevent`); if `false` it is placed in the containern * with CSS class name specified by the `className` property.n * @property {boolean} [insertFirst=true] Whether the overlay is inserted firstn * in the overlay container, or appended. If the overlay is placed in the samen * container as that of the controls (see the `stopEvent` option) you willn * probably set `insertFirst` to `true` so the overlay is displayed below then * controls.n * @property {boolean} [autoPan=false] If set to `true` the map is panned whenn * calling `setPosition`, so that the overlay is entirely visible in the currentn * viewport.n * @property {PanOptions} [autoPanAnimation] Then * animation options used to pan the overlay into view. This animation is onlyn * used when `autoPan` is enabled. A `duration` and `easing` may be provided ton * customize the animation.n * @property {number} [autoPanMargin=20] The margin (in pixels) between then * overlay and the borders of the map when autopanning.n * @property {string} [className='ol-overlay-container ol-selectable'] CSS classn * name.n */n/**n * @typedef {Object} PanOptionsn * @property {number} [duration=1000] The duration of the animation inn * milliseconds.n * @property {function(number):number} [easing] The easing function to use. Cann * be one from {@link module:ol/easing} or a custom function.n * Default is {@link module:ol/easing~inAndOut}.n */n/**n * @enum {string}n * @protectedn */nvar Property = {n ELEMENT: 'element',n MAP: 'map',n OFFSET: 'offset',n POSITION: 'position',n POSITIONING: 'positioning'n};n/**n * @classdescn * An element to be displayed over the map and attached to a single mapn * location. Like {@link module:ol/control/Control~Control}, Overlays aren * visible widgets. Unlike Controls, they are not in a fixed position on then * screen, but are tied to a geographical coordinate, so panning the map willn * move an Overlay but not a Control.n *n * Example:n *n * import Overlay from 'ol/Overlay';n *n * var popup = new Overlay({n * element: document.getElementById('popup')n * });n * popup.setPosition(coordinate);n * map.addOverlay(popup);n *n * @apin */nvar Overlay = /** @class */ (function (_super) {n __extends(Overlay, _super);n /**n * @param {Options} options Overlay options.n */n function Overlay(options) {n var _this = _super.call(this) || this;n /**n * @protectedn * @type {Options}n */n _this.options = options;n /**n * @protectedn * @type {number|string|undefined}n */n _this.id = options.id;n /**n * @protectedn * @type {boolean}n */n _this.insertFirst = options.insertFirst !== undefined ?n options.insertFirst : true;n /**n * @protectedn * @type {boolean}n */n _this.stopEvent = options.stopEvent !== undefined ? options.stopEvent : true;n /**n * @protectedn * @type {HTMLElement}n */n _this.element = document.createElement('div');n _this.element.className = options.className !== undefined ?n options.className : 'ol-overlay-container ' + CLASS_SELECTABLE;n _this.element.style.position = 'absolute';n /**n * @protectedn * @type {boolean}n */n _this.autoPan = options.autoPan !== undefined ? options.autoPan : false;n /**n * @protectedn * @type {PanOptions}n */n _this.autoPanAnimation = options.autoPanAnimation || /** @type {PanOptions} */ ({});n /**n * @protectedn * @type {number}n */n _this.autoPanMargin = options.autoPanMargin !== undefined ?n options.autoPanMargin : 20;n /**n * @protectedn * @type {{bottom_: string,n * left_: string,n * right_: string,n * top_: string,n * visible: boolean}}n */n _this.rendered = {n bottom_: '',n left_: '',n right_: '',n top_: '',n visible: truen };n /**n * @protectedn * @type {?import("./events.js").EventsKey}n */n _this.mapPostrenderListenerKey = null;n _this.addEventListener(getChangeEventType(Property.ELEMENT), _this.handleElementChanged);n _this.addEventListener(getChangeEventType(Property.MAP), _this.handleMapChanged);n _this.addEventListener(getChangeEventType(Property.OFFSET), _this.handleOffsetChanged);n _this.addEventListener(getChangeEventType(Property.POSITION), _this.handlePositionChanged);n _this.addEventListener(getChangeEventType(Property.POSITIONING), _this.handlePositioningChanged);n if (options.element !== undefined) {n _this.setElement(options.element);n }n _this.setOffset(options.offset !== undefined ? options.offset : [0, 0]);n _this.setPositioning(options.positioning !== undefined ?n /** @type {OverlayPositioning} */ (options.positioning) :n OverlayPositioning.TOP_LEFT);n if (options.position !== undefined) {n _this.setPosition(options.position);n }n return _this;n }n /**n * Get the DOM element of this overlay.n * @return {HTMLElement|undefined} The Element containing the overlay.n * @observablen * @apin */n Overlay.prototype.getElement = function () {n return /** @type {HTMLElement|undefined} */ (this.get(Property.ELEMENT));n };n /**n * Get the overlay identifier which is set on constructor.n * @return {number|string|undefined} Id.n * @apin */n Overlay.prototype.getId = function () {n return this.id;n };n /**n * Get the map associated with this overlay.n * @return {import("./PluggableMap.js").default|undefined} The map that then * overlay is part of.n * @observablen * @apin */n Overlay.prototype.getMap = function () {n return (n /** @type {import("./PluggableMap.js").default|undefined} */ (this.get(Property.MAP)));n };n /**n * Get the offset of this overlay.n * @return {Array<number>} The offset.n * @observablen * @apin */n Overlay.prototype.getOffset = function () {n return /** @type {Array<number>} */ (this.get(Property.OFFSET));n };n /**n * Get the current position of this overlay.n * @return {import("./coordinate.js").Coordinate|undefined} The spatial point that the overlay isn * anchored at.n * @observablen * @apin */n Overlay.prototype.getPosition = function () {n return (n /** @type {import("./coordinate.js").Coordinate|undefined} */ (this.get(Property.POSITION)));n };n /**n * Get the current positioning of this overlay.n * @return {OverlayPositioning} How the overlay is positionedn * relative to its point on the map.n * @observablen * @apin */n Overlay.prototype.getPositioning = function () {n return (n /** @type {OverlayPositioning} */ (this.get(Property.POSITIONING)));n };n /**n * @protectedn */n Overlay.prototype.handleElementChanged = function () {n removeChildren(this.element);n var element = this.getElement();n if (element) {n this.element.appendChild(element);n }n };n /**n * @protectedn */n Overlay.prototype.handleMapChanged = function () {n if (this.mapPostrenderListenerKey) {n removeNode(this.element);n unlistenByKey(this.mapPostrenderListenerKey);n this.mapPostrenderListenerKey = null;n }n var map = this.getMap();n if (map) {n this.mapPostrenderListenerKey = listen(map, MapEventType.POSTRENDER, this.render, this);n this.updatePixelPosition();n var container = this.stopEvent ?n map.getOverlayContainerStopEvent() : map.getOverlayContainer();n if (this.insertFirst) {n container.insertBefore(this.element, container.childNodes || null);n }n else {n container.appendChild(this.element);n }n }n };n /**n * @protectedn */n Overlay.prototype.render = function () {n this.updatePixelPosition();n };n /**n * @protectedn */n Overlay.prototype.handleOffsetChanged = function () {n this.updatePixelPosition();n };n /**n * @protectedn */n Overlay.prototype.handlePositionChanged = function () {n this.updatePixelPosition();n if (this.get(Property.POSITION) && this.autoPan) {n this.panIntoView();n }n };n /**n * @protectedn */n Overlay.prototype.handlePositioningChanged = function () {n this.updatePixelPosition();n };n /**n * Set the DOM element to be associated with this overlay.n * @param {HTMLElement|undefined} element The Element containing the overlay.n * @observablen * @apin */n Overlay.prototype.setElement = function (element) {n this.set(Property.ELEMENT, element);n };n /**n * Set the map to be associated with this overlay.n * @param {import("./PluggableMap.js").default|undefined} map The map that then * overlay is part of.n * @observablen * @apin */n Overlay.prototype.setMap = function (map) {n this.set(Property.MAP, map);n };n /**n * Set the offset for this overlay.n * @param {Array<number>} offset Offset.n * @observablen * @apin */n Overlay.prototype.setOffset = function (offset) {n this.set(Property.OFFSET, offset);n };n /**n * Set the position for this overlay. If the position is `undefined` then * overlay is hidden.n * @param {import("./coordinate.js").Coordinate|undefined} position The spatial point that the overlayn * is anchored at.n * @observablen * @apin */n Overlay.prototype.setPosition = function (position) {n this.set(Property.POSITION, position);n };n /**n * Pan the map so that the overlay is entirely visible in the current viewportn * (if necessary).n * @protectedn */n Overlay.prototype.panIntoView = function () {n var map = this.getMap();n if (!map || !map.getTargetElement()) {n return;n }n var mapRect = this.getRect(map.getTargetElement(), map.getSize());n var element = this.getElement();n var overlayRect = this.getRect(element, [outerWidth(element), outerHeight(element)]);n var margin = this.autoPanMargin;n if (!containsExtent(mapRect, overlayRect)) {n // the overlay is not completely inside the viewport, so pan the mapn var offsetLeft = overlayRect - mapRect;n var offsetRight = mapRect - overlayRect;n var offsetTop = overlayRect - mapRect;n var offsetBottom = mapRect - overlayRect;n var delta = [0, 0];n if (offsetLeft < 0) {n // move map to the leftn delta = offsetLeft - margin;n }n else if (offsetRight < 0) {n // move map to the rightn delta = Math.abs(offsetRight) + margin;n }n if (offsetTop < 0) {n // move map upn delta = offsetTop - margin;n }n else if (offsetBottom < 0) {n // move map downn delta = Math.abs(offsetBottom) + margin;n }n if (delta !== 0 || delta !== 0) {n var center = /** @type {import("./coordinate.js").Coordinate} */ (map.getView().getCenterInternal());n var centerPx = map.getPixelFromCoordinateInternal(center);n var newCenterPx = [n centerPx + delta,n centerPx + deltan ];n map.getView().animateInternal({n center: map.getCoordinateFromPixelInternal(newCenterPx),n duration: this.autoPanAnimation.duration,n easing: this.autoPanAnimation.easingn });n }n }n };n /**n * Get the extent of an element relative to the documentn * @param {HTMLElement} element The element.n * @param {import("./size.js").Size} size The size of the element.n * @return {import("./extent.js").Extent} The extent.n * @protectedn */n Overlay.prototype.getRect = function (element, size) {n var box = element.getBoundingClientRect();n var offsetX = box.left + window.pageXOffset;n var offsetY = box.top + window.pageYOffset;n return [n offsetX,n offsetY,n offsetX + size,n offsetY + sizen ];n };n /**n * Set the positioning for this overlay.n * @param {OverlayPositioning} positioning how the overlay isn * positioned relative to its point on the map.n * @observablen * @apin */n Overlay.prototype.setPositioning = function (positioning) {n this.set(Property.POSITIONING, positioning);n };n /**n * Modify the visibility of the element.n * @param {boolean} visible Element visibility.n * @protectedn */n Overlay.prototype.setVisible = function (visible) {n if (this.rendered.visible !== visible) {n this.element.style.display = visible ? '' : 'none';n this.rendered.visible = visible;n }n };n /**n * Update pixel position.n * @protectedn */n Overlay.prototype.updatePixelPosition = function () {n var map = this.getMap();n var position = this.getPosition();n if (!map || !map.isRendered() || !position) {n this.setVisible(false);n return;n }n var pixel = map.getPixelFromCoordinate(position);n var mapSize = map.getSize();n this.updateRenderedPosition(pixel, mapSize);n };n /**n * @param {import("./pixel.js").Pixel} pixel The pixel location.n * @param {import("./size.js").Size|undefined} mapSize The map size.n * @protectedn */n Overlay.prototype.updateRenderedPosition = function (pixel, mapSize) {n var style = this.element.style;n var offset = this.getOffset();n var positioning = this.getPositioning();n this.setVisible(true);n var offsetX = offset;n var offsetY = offset;n if (positioning == OverlayPositioning.BOTTOM_RIGHT ||n positioning == OverlayPositioning.CENTER_RIGHT ||n positioning == OverlayPositioning.TOP_RIGHT) {n if (this.rendered.left_ !== '') {n this.rendered.left_ = '';n style.left = '';n }n var right = Math.round(mapSize - pixel - offsetX) + 'px';n if (this.rendered.right_ != right) {n this.rendered.right_ = right;n style.right = right;n }n }n else {n if (this.rendered.right_ !== '') {n this.rendered.right_ = '';n style.right = '';n }n if (positioning == OverlayPositioning.BOTTOM_CENTER ||n positioning == OverlayPositioning.CENTER_CENTER ||n positioning == OverlayPositioning.TOP_CENTER) {n offsetX -= this.element.offsetWidth / 2;n }n var left = Math.round(pixel + offsetX) + 'px';n if (this.rendered.left_ != left) {n this.rendered.left_ = left;n style.left = left;n }n }n if (positioning == OverlayPositioning.BOTTOM_LEFT ||n positioning == OverlayPositioning.BOTTOM_CENTER ||n positioning == OverlayPositioning.BOTTOM_RIGHT) {n if (this.rendered.top_ !== '') {n this.rendered.top_ = '';n style.top = '';n }n var bottom = Math.round(mapSize - pixel - offsetY) + 'px';n if (this.rendered.bottom_ != bottom) {n this.rendered.bottom_ = bottom;n style.bottom = bottom;n }n }n else {n if (this.rendered.bottom_ !== '') {n this.rendered.bottom_ = '';n style.bottom = '';n }n if (positioning == OverlayPositioning.CENTER_LEFT ||n positioning == OverlayPositioning.CENTER_CENTER ||n positioning == OverlayPositioning.CENTER_RIGHT) {n offsetY -= this.element.offsetHeight / 2;n }n var top_1 = Math.round(pixel + offsetY) + 'px';n if (this.rendered.top_ != top_1) {n this.rendered.top_ = 'top';n style.top = top_1;n }n }n };n /**n * returns the options this Overlay has been created withn * @return {Options} overlay optionsn */n Overlay.prototype.getOptions = function () {n return this.options;n };n return Overlay;n}(BaseObject));nexport default Overlay;n//# sourceMappingURL=Overlay.js.map”,“/**n * @module ol/format/FormatTypen */n/**n * @enum {string}n */nexport default {n ARRAY_BUFFER: 'arraybuffer',n JSON: 'json',n TEXT: 'text',n XML: 'xml'n};n//# sourceMappingURL=FormatType.js.map”,“/**n * @module ol/featureloadern */nimport { VOID } from './functions.js';nimport FormatType from './format/FormatType.js';n/**n *n * @type {boolean}n * @privaten */nvar withCredentials = false;n/**n * {@link module:ol/source/Vector} sources use a function of this type ton * load features.n *n * This function takes an {@link module:ol/extent~Extent} representing the area to be loaded,n * a `{number}` representing the resolution (map units per pixel) and ann * {@link module:ol/proj/Projection} for the projection asn * arguments. `this` within the function is bound to then * {@link module:ol/source/Vector} it's called from.n *n * The function is responsible for loading the features and adding them to then * source.n * @typedef {function(this:(import("./source/Vector").default|import("./VectorTile.js").default), import("./extent.js").Extent, number,n * import("./proj/Projection.js").default): void} FeatureLoadern * @apin */n/**n * {@link module:ol/source/Vector} sources use a function of this type ton * get the url to load features from.n *n * This function takes an {@link module:ol/extent~Extent} representing the arean * to be loaded, a `{number}` representing the resolution (map units per pixel)n * and an {@link module:ol/proj/Projection} for the projection asn * arguments and returns a `{string}` representing the URL.n * @typedef {function(import("./extent.js").Extent, number, import("./proj/Projection.js").default): string} FeatureUrlFunctionn * @apin */n/**n * @param {string|FeatureUrlFunction} url Feature URL service.n * @param {import("./format/Feature.js").default} format Feature format.n * @param {function(this:import("./VectorTile.js").default, Array<import("./Feature.js").default>, import("./proj/Projection.js").default, import("./extent.js").Extent): void|function(this:import("./source/Vector").default, Array<import("./Feature.js").default>): void} successn * Function called with the loaded features and optionally with the datan * projection. Called with the vector tile or source as `this`.n * @param {function(this:import("./VectorTile.js").default): void|function(this:import("./source/Vector").default): void} failuren * Function called when loading failed. Called with the vector tile orn * source as `this`.n * @return {FeatureLoader} The feature loader.n */nexport function loadFeaturesXhr(url, format, success, failure) {n return (n /**n * @param {import("./extent.js").Extent} extent Extent.n * @param {number} resolution Resolution.n * @param {import("./proj/Projection.js").default} projection Projection.n * @this {import("./source/Vector").default|import("./VectorTile.js").default}n */n function (extent, resolution, projection) {n var xhr = new XMLHttpRequest();n xhr.open('GET', typeof url === 'function' ? url(extent, resolution, projection) : url, true);n if (format.getType() == FormatType.ARRAY_BUFFER) {n xhr.responseType = 'arraybuffer';n }n xhr.withCredentials = withCredentials;n /**n * @param {Event} event Event.n * @privaten */n xhr.onload = function (event) {n // status will be 0 for file:// urlsn if (!xhr.status || xhr.status >= 200 && xhr.status < 300) {n var type = format.getType();n /** @type {Document|Node|Object|string|undefined} */n var source = void 0;n if (type == FormatType.JSON || type == FormatType.TEXT) {n source = xhr.responseText;n }n else if (type == FormatType.XML) {n source = xhr.responseXML;n if (!source) {n source = new DOMParser().parseFromString(xhr.responseText, 'application/xml');n }n }n else if (type == FormatType.ARRAY_BUFFER) {n source = /** @type {ArrayBuffer} */ (xhr.response);n }n if (source) {n success.call(this, format.readFeatures(source, {n extent: extent,n featureProjection: projectionn }), format.readProjection(source));n }n else {n failure.call(this);n }n }n else {n failure.call(this);n }n }.bind(this);n /**n * @privaten */n xhr.onerror = function () {n failure.call(this);n }.bind(this);n xhr.send();n });n}n/**n * Create an XHR feature loader for a `url` and `format`. The feature loadern * loads features (with XHR), parses the features, and adds them to then * 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 * @apin */nexport function xhr(url, format) {n return loadFeaturesXhr(url, format, n /**n * @param {Array<import("./Feature.js").default>} features The loaded features.n * @param {import("./proj/Projection.js").default} dataProjection Datan * projection.n * @this {import("./source/Vector").default|import("./VectorTile.js").default}n */n function (features, dataProjection) {n var sourceOrTile = /** @type {?} */ (this);n if (typeof sourceOrTile.addFeatures === 'function') {n /** @type {import("./source/Vector").default} */ (sourceOrTile).addFeatures(features);n }n }, /* FIXME handle error */ VOID);n}n/**n * Setter for the withCredentials configuration for the XHR.n *n * @param {boolean} xhrWithCredentials The value of withCredentials to set.n * Compare developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/n * @apin */nexport function setWithCredentials(xhrWithCredentials) {n withCredentials = xhrWithCredentials;n}n//# sourceMappingURL=featureloader.js.map”,“/**n * @module ol/loadingstrategyn */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<import("./extent.js").Extent>} Extents.n * @apin */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 andn * resolution.n * @param {import("./extent.js").Extent} extent Extent.n * @param {number} resolution Resolution.n * @return {Array<import("./extent.js").Extent>} Extents.n * @apin */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): Array<import("./extent.js").Extent>} Loading strategy.n * @apin */nexport function tile(tileGrid) {n return (n /**n * @param {import("./extent.js").Extent} extent Extent.n * @param {number} resolution Resolution.n * @return {Array<import("./extent.js").Extent>} Extents.n */n function (extent, resolution) {n var z = tileGrid.getZForResolution(resolution);n var tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z);n /** @type {Array<import("./extent.js").Extent>} */n var extents = [];n /** @type {import("./tilecoord.js").TileCoord} */n var tileCoord = [z, 0, 0];n for (tileCoord = tileRange.minX; tileCoord <= tileRange.maxX; ++tileCoord) {n for (tileCoord = tileRange.minY; tileCoord <= tileRange.maxY; ++tileCoord) {n extents.push(tileGrid.getTileCoordExtent(tileCoord));n }n }n return extents;n });n}n//# sourceMappingURL=loadingstrategy.js.map”,“/**n * @module ol/TileRangen */n/**n * A representation of a contiguous block of tiles. A tile range is specifiedn * by its min/max tile coordinates and is inclusive of coordinates.n */nvar TileRange = /** @class */ (function () {n /**n * @param {number} minX Minimum X.n * @param {number} maxX Maximum X.n * @param {number} minY Minimum Y.n * @param {number} maxY Maximum Y.n */n function TileRange(minX, maxX, minY, maxY) {n /**n * @type {number}n */n this.minX = minX;n /**n * @type {number}n */n this.maxX = maxX;n /**n * @type {number}n */n this.minY = minY;n /**n * @type {number}n */n this.maxY = maxY;n }n /**n * @param {import("./tilecoord.js").TileCoord} tileCoord Tile coordinate.n * @return {boolean} Contains tile coordinate.n */n TileRange.prototype.contains = function (tileCoord) {n return this.containsXY(tileCoord, tileCoord);n };n /**n * @param {TileRange} tileRange Tile range.n * @return {boolean} Contains.n */n TileRange.prototype.containsTileRange = function (tileRange) {n return this.minX <= tileRange.minX && tileRange.maxX <= this.maxX &&n this.minY <= tileRange.minY && tileRange.maxY <= this.maxY;n };n /**n * @param {number} x Tile coordinate x.n * @param {number} y Tile coordinate y.n * @return {boolean} Contains coordinate.n */n TileRange.prototype.containsXY = function (x, y) {n return this.minX <= x && x <= this.maxX && this.minY <= y && y <= this.maxY;n };n /**n * @param {TileRange} tileRange Tile range.n * @return {boolean} Equals.n */n TileRange.prototype.equals = function (tileRange) {n return this.minX == tileRange.minX && this.minY == tileRange.minY &&n this.maxX == tileRange.maxX && this.maxY == tileRange.maxY;n };n /**n * @param {TileRange} tileRange Tile range.n */n TileRange.prototype.extend = function (tileRange) {n if (tileRange.minX < this.minX) {n this.minX = tileRange.minX;n }n if (tileRange.maxX > this.maxX) {n this.maxX = tileRange.maxX;n }n if (tileRange.minY < this.minY) {n this.minY = tileRange.minY;n }n if (tileRange.maxY > this.maxY) {n this.maxY = tileRange.maxY;n }n };n /**n * @return {number} Height.n */n TileRange.prototype.getHeight = function () {n return this.maxY - this.minY + 1;n };n /**n * @return {import("./size.js").Size} Size.n */n TileRange.prototype.getSize = function () {n return [this.getWidth(), this.getHeight()];n };n /**n * @return {number} Width.n */n TileRange.prototype.getWidth = function () {n return this.maxX - this.minX + 1;n };n /**n * @param {TileRange} tileRange Tile range.n * @return {boolean} Intersects.n */n TileRange.prototype.intersects = function (tileRange) {n return this.minX <= tileRange.maxX &&n this.maxX >= tileRange.minX &&n this.minY <= tileRange.maxY &&n this.maxY >= tileRange.minY;n };n return TileRange;n}());n/**n * @param {number} minX Minimum X.n * @param {number} maxX Maximum X.n * @param {number} minY Minimum Y.n * @param {number} maxY Maximum Y.n * @param {TileRange=} tileRange TileRange.n * @return {TileRange} Tile range.n */nexport function createOrUpdate(minX, maxX, minY, maxY, tileRange) {n if (tileRange !== undefined) {n tileRange.minX = minX;n tileRange.maxX = maxX;n tileRange.minY = minY;n tileRange.maxY = maxY;n return tileRange;n }n else {n return new TileRange(minX, maxX, minY, maxY);n }n}nexport default TileRange;n//# sourceMappingURL=TileRange.js.map”,“/**n * @module ol/tilecoordn */n/**n * An array of three numbers representing the location of a tile in a tilen * grid. The order is `z` (zoom level), `x` (column), and `y` (row).n * @typedef {Array<number>} TileCoordn * @apin */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 = z;n opt_tileCoord = x;n opt_tileCoord = 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, tileCoord, tileCoord);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 << tileCoord) + tileCoord;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;n var x = tileCoord;n var y = tileCoord;n if (tileGrid.getMinZoom() > z || z > tileGrid.getMaxZoom()) {n return false;n }n var extent = tileGrid.getExtent();n var tileRange;n if (!extent) {n tileRange = tileGrid.getFullTileRange(z);n }n else {n tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z);n }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/tilegrid/TileGridn */nimport { DEFAULT_TILE_SIZE } from './common.js';nimport { assert } from '../asserts.js';nimport TileRange, { createOrUpdate as createOrUpdateTileRange } from '../TileRange.js';nimport { isSorted, linearFindNearest } from '../array.js';nimport { createOrUpdate, getTopLeft } from '../extent.js';nimport { clamp } from '../math.js';nimport { toSize } from '../size.js';nimport { createOrUpdate as createOrUpdateTileCoord } from '../tilecoord.js';n/**n * @privaten * @type {import("../tilecoord.js").TileCoord}n */nvar tmpTileCoord = [0, 0, 0];n/**n * @typedef {Object} Optionsn * @property {import("../extent.js").Extent} [extent] Extent for the tile grid. No tiles outside thisn * extent will be requested by {@link module:ol/source/Tile} sources. When no `origin` orn * `origins` are configured, the `origin` will be set to the top-left corner of the extent.n * @property {number} [minZoom=0] Minimum zoom.n * @property {import("../coordinate.js").Coordinate} [origin] The tile grid origin, i.e. where the `x`n * and `y` axes meet (`[z, 0, 0]`). Tile coordinates increase left to right and upwards. If notn * specified, `extent` or `origins` must be provided.n * @property {Array<import("../coordinate.js").Coordinate>} [origins] Tile grid origins, i.e. wheren * the `x` and `y` axes meet (`[z, 0, 0]`), for each zoom level. If given, the array lengthn * should match the length of the `resolutions` array, i.e. each resolution can have a differentn * origin. Tile coordinates increase left to right and upwards. If not specified, `extent` orn * `origin` must be provided.n * @property {!Array<number>} resolutions Resolutions. The array index of each resolution needsn * to match the zoom level. This means that even if a `minZoom` is configured, the resolutionsn * array will have a length of `maxZoom + 1`.n * @property {Array<import("../size.js").Size>} [sizes] Sizes.n * @property {number|import("../size.js").Size} [tileSize] Tile size.n * Default is `[256, 256]`.n * @property {Array<import("../size.js").Size>} [tileSizes] Tile sizes. If given, the array lengthn * should match the length of the `resolutions` array, i.e. each resolution can have a differentn * tile size.n */n/**n * @classdescn * Base class for setting the grid pattern for sources accessing tiled-imagen * servers.n * @apin */nvar TileGrid = /** @class */ (function () {n /**n * @param {Options} options Tile grid options.n */n function TileGrid(options) {n /**n * @protectedn * @type {number}n */n this.minZoom = options.minZoom !== undefined ? options.minZoom : 0;n /**n * @privaten * @type {!Array<number>}n */n this.resolutions_ = options.resolutions;n assert(isSorted(this.resolutions_, function (a, b) {n return b - a;n }, true), 17); // `resolutions` must be sorted in descending ordern // check if we've got a consistent zoom factor and originn var zoomFactor;n if (!options.origins) {n for (var i = 0, ii = this.resolutions_.length - 1; i < ii; ++i) {n if (!zoomFactor) {n zoomFactor = this.resolutions_ / this.resolutions_[i + 1];n }n else {n if (this.resolutions_ / this.resolutions_[i + 1] !== zoomFactor) {n zoomFactor = undefined;n break;n }n }n }n }n /**n * @privaten * @type {number|undefined}n */n this.zoomFactor_ = zoomFactor;n /**n * @protectedn * @type {number}n */n this.maxZoom = this.resolutions_.length - 1;n /**n * @privaten * @type {import("../coordinate.js").Coordinate}n */n this.origin_ = options.origin !== undefined ? options.origin : null;n /**n * @privaten * @type {Array<import("../coordinate.js").Coordinate>}n */n this.origins_ = null;n if (options.origins !== undefined) {n this.origins_ = options.origins;n assert(this.origins_.length == this.resolutions_.length, 20); // Number of `origins` and `resolutions` must be equaln }n var extent = options.extent;n if (extent !== undefined &&n !this.origin_ && !this.origins_) {n this.origin_ = getTopLeft(extent);n }n assert((!this.origin_ && this.origins_) || (this.origin_ && !this.origins_), 18); // Either `origin` or `origins` must be configured, never bothn /**n * @privaten * @type {Array<number|import("../size.js").Size>}n */n this.tileSizes_ = null;n if (options.tileSizes !== undefined) {n this.tileSizes_ = options.tileSizes;n assert(this.tileSizes_.length == this.resolutions_.length, 19); // Number of `tileSizes` and `resolutions` must be equaln }n /**n * @privaten * @type {number|import("../size.js").Size}n */n this.tileSize_ = options.tileSize !== undefined ?n options.tileSize :n !this.tileSizes_ ? DEFAULT_TILE_SIZE : null;n assert((!this.tileSize_ && this.tileSizes_) ||n (this.tileSize_ && !this.tileSizes_), 22); // Either `tileSize` or `tileSizes` must be configured, never bothn /**n * @privaten * @type {import("../extent.js").Extent}n */n this.extent_ = extent !== undefined ? extent : null;n /**n * @privaten * @type {Array<import("../TileRange.js").default>}n */n this.fullTileRanges_ = null;n /**n * @privaten * @type {import("../size.js").Size}n */n this.tmpSize_ = [0, 0];n if (options.sizes !== undefined) {n this.fullTileRanges_ = options.sizes.map(function (size, z) {n var tileRange = new TileRange(Math.min(0, size), Math.max(size - 1, -1), Math.min(0, size), Math.max(size - 1, -1));n return tileRange;n }, this);n }n else if (extent) {n this.calculateTileRanges_(extent);n }n }n /**n * Call a function with each tile coordinate for a given extent and zoom level.n *n * @param {import("../extent.js").Extent} extent Extent.n * @param {number} zoom Integer zoom level.n * @param {function(import("../tilecoord.js").TileCoord): void} callback Function called with each tile coordinate.n * @apin */n TileGrid.prototype.forEachTileCoord = function (extent, zoom, callback) {n var tileRange = this.getTileRangeForExtentAndZ(extent, zoom);n for (var i = tileRange.minX, ii = tileRange.maxX; i <= ii; ++i) {n for (var j = tileRange.minY, jj = tileRange.maxY; j <= jj; ++j) {n callback([zoom, i, j]);n }n }n };n /**n * @param {import("../tilecoord.js").TileCoord} tileCoord Tile coordinate.n * @param {function(number, import("../TileRange.js").default): boolean} callback Callback.n * @param {import("../TileRange.js").default=} opt_tileRange Temporary import("../TileRange.js").default object.n * @param {import("../extent.js").Extent=} opt_extent Temporary import("../extent.js").Extent object.n * @return {boolean} Callback succeeded.n */n TileGrid.prototype.forEachTileCoordParentTileRange = function (tileCoord, callback, opt_tileRange, opt_extent) {n var tileRange, x, y;n var tileCoordExtent = null;n var z = tileCoord - 1;n if (this.zoomFactor_ === 2) {n x = tileCoord;n y = tileCoord;n }n else {n tileCoordExtent = this.getTileCoordExtent(tileCoord, opt_extent);n }n while (z >= this.minZoom) {n if (this.zoomFactor_ === 2) {n x = Math.floor(x / 2);n y = Math.floor(y / 2);n tileRange = createOrUpdateTileRange(x, x, y, y, opt_tileRange);n }n else {n tileRange = this.getTileRangeForExtentAndZ(tileCoordExtent, z, opt_tileRange);n }n if (callback(z, tileRange)) {n return true;n }n –z;n }n return false;n };n /**n * Get the extent for this tile grid, if it was configured.n * @return {import("../extent.js").Extent} Extent.n * @apin */n TileGrid.prototype.getExtent = function () {n return this.extent_;n };n /**n * Get the maximum zoom level for the grid.n * @return {number} Max zoom.n * @apin */n TileGrid.prototype.getMaxZoom = function () {n return this.maxZoom;n };n /**n * Get the minimum zoom level for the grid.n * @return {number} Min zoom.n * @apin */n TileGrid.prototype.getMinZoom = function () {n return this.minZoom;n };n /**n * Get the origin for the grid at the given zoom level.n * @param {number} z Integer zoom level.n * @return {import("../coordinate.js").Coordinate} Origin.n * @apin */n TileGrid.prototype.getOrigin = function (z) {n if (this.origin_) {n return this.origin_;n }n else {n return this.origins_;n }n };n /**n * Get the resolution for the given zoom level.n * @param {number} z Integer zoom level.n * @return {number} Resolution.n * @apin */n TileGrid.prototype.getResolution = function (z) {n return this.resolutions_;n };n /**n * Get the list of resolutions for the tile grid.n * @return {Array<number>} Resolutions.n * @apin */n TileGrid.prototype.getResolutions = function () {n return this.resolutions_;n };n /**n * @param {import("../tilecoord.js").TileCoord} tileCoord Tile coordinate.n * @param {import("../TileRange.js").default=} opt_tileRange Temporary import("../TileRange.js").default object.n * @param {import("../extent.js").Extent=} opt_extent Temporary import("../extent.js").Extent object.n * @return {import("../TileRange.js").default} Tile range.n */n TileGrid.prototype.getTileCoordChildTileRange = function (tileCoord, opt_tileRange, opt_extent) {n if (tileCoord < this.maxZoom) {n if (this.zoomFactor_ === 2) {n var minX = tileCoord * 2;n var minY = tileCoord * 2;n return createOrUpdateTileRange(minX, minX + 1, minY, minY + 1, opt_tileRange);n }n var tileCoordExtent = this.getTileCoordExtent(tileCoord, opt_extent);n return this.getTileRangeForExtentAndZ(tileCoordExtent, tileCoord + 1, opt_tileRange);n }n return null;n };n /**n * Get the extent for a tile range.n * @param {number} z Integer zoom level.n * @param {import("../TileRange.js").default} tileRange Tile range.n * @param {import("../extent.js").Extent=} opt_extent Temporary import("../extent.js").Extent object.n * @return {import("../extent.js").Extent} Extent.n */n TileGrid.prototype.getTileRangeExtent = function (z, tileRange, opt_extent) {n var origin = this.getOrigin(z);n var resolution = this.getResolution(z);n var tileSize = toSize(this.getTileSize(z), this.tmpSize_);n var minX = origin + tileRange.minX * tileSize * resolution;n var maxX = origin + (tileRange.maxX + 1) * tileSize * resolution;n var minY = origin + tileRange.minY * tileSize * resolution;n var maxY = origin + (tileRange.maxY + 1) * tileSize * resolution;n return createOrUpdate(minX, minY, maxX, maxY, opt_extent);n };n /**n * Get a tile range for the given extent and integer zoom level.n * @param {import("../extent.js").Extent} extent Extent.n * @param {number} z Integer zoom level.n * @param {import("../TileRange.js").default=} opt_tileRange Temporary tile range object.n * @return {import("../TileRange.js").default} Tile range.n */n TileGrid.prototype.getTileRangeForExtentAndZ = function (extent, z, opt_tileRange) {n var tileCoord = tmpTileCoord;n this.getTileCoordForXYAndZ_(extent, extent, z, false, tileCoord);n var minX = tileCoord;n var minY = tileCoord;n this.getTileCoordForXYAndZ_(extent, extent, z, true, tileCoord);n return createOrUpdateTileRange(minX, tileCoord, minY, tileCoord, opt_tileRange);n };n /**n * @param {import("../tilecoord.js").TileCoord} tileCoord Tile coordinate.n * @return {import("../coordinate.js").Coordinate} Tile center.n */n TileGrid.prototype.getTileCoordCenter = function (tileCoord) {n var origin = this.getOrigin(tileCoord);n var resolution = this.getResolution(tileCoord);n var tileSize = toSize(this.getTileSize(tileCoord), this.tmpSize_);n return [n origin + (tileCoord + 0.5) * tileSize * resolution,n origin - (tileCoord + 0.5) * tileSize * resolutionn ];n };n /**n * Get the extent of a tile coordinate.n *n * @param {import("../tilecoord.js").TileCoord} tileCoord Tile coordinate.n * @param {import("../extent.js").Extent=} opt_extent Temporary extent object.n * @return {import("../extent.js").Extent} Extent.n * @apin */n TileGrid.prototype.getTileCoordExtent = function (tileCoord, opt_extent) {n var origin = this.getOrigin(tileCoord);n var resolution = this.getResolution(tileCoord);n var tileSize = toSize(this.getTileSize(tileCoord), this.tmpSize_);n var minX = origin + tileCoord * tileSize * resolution;n var minY = origin - (tileCoord + 1) * tileSize * resolution;n var maxX = minX + tileSize * resolution;n var maxY = minY + tileSize * resolution;n return createOrUpdate(minX, minY, maxX, maxY, opt_extent);n };n /**n * Get the tile coordinate for the given map coordinate and resolution. Thisn * method considers that coordinates that intersect tile boundaries should ben * assigned the higher tile coordinate.n *n * @param {import("../coordinate.js").Coordinate} coordinate Coordinate.n * @param {number} resolution Resolution.n * @param {import("../tilecoord.js").TileCoord=} opt_tileCoord Destination import("../tilecoord.js").TileCoord object.n * @return {import("../tilecoord.js").TileCoord} Tile coordinate.n * @apin */n TileGrid.prototype.getTileCoordForCoordAndResolution = function (coordinate, resolution, opt_tileCoord) {n return this.getTileCoordForXYAndResolution_(coordinate, coordinate, resolution, false, opt_tileCoord);n };n /**n * Note that this method should not be called for resolutions that correspondn * to an integer zoom level. Instead call the `getTileCoordForXYAndZ_` method.n * @param {number} x X.n * @param {number} y Y.n * @param {number} resolution Resolution (for a non-integer zoom level).n * @param {boolean} reverseIntersectionPolicy Instead of letting edgen * intersections go to the higher tile coordinate, let edge intersectionsn * go to the lower tile coordinate.n * @param {import("../tilecoord.js").TileCoord=} opt_tileCoord Temporary import("../tilecoord.js").TileCoord object.n * @return {import("../tilecoord.js").TileCoord} Tile coordinate.n * @privaten */n TileGrid.prototype.getTileCoordForXYAndResolution_ = function (x, y, resolution, reverseIntersectionPolicy, opt_tileCoord) {n var z = this.getZForResolution(resolution);n var scale = resolution / this.getResolution(z);n var origin = this.getOrigin(z);n var tileSize = toSize(this.getTileSize(z), this.tmpSize_);n var adjustX = reverseIntersectionPolicy ? 0.5 : 0;n var adjustY = reverseIntersectionPolicy ? 0.5 : 0;n var xFromOrigin = Math.floor((x - origin) / resolution + adjustX);n var yFromOrigin = Math.floor((origin - y) / resolution + adjustY);n var tileCoordX = scale * xFromOrigin / tileSize;n var tileCoordY = scale * yFromOrigin / tileSize;n if (reverseIntersectionPolicy) {n tileCoordX = Math.ceil(tileCoordX) - 1;n tileCoordY = Math.ceil(tileCoordY) - 1;n }n else {n tileCoordX = Math.floor(tileCoordX);n tileCoordY = Math.floor(tileCoordY);n }n return createOrUpdateTileCoord(z, tileCoordX, tileCoordY, opt_tileCoord);n };n /**n * Although there is repetition between this method and `getTileCoordForXYAndResolution_`,n * they should have separate implementations. This method is for integer zoomn * levels. The other method should only be called for resolutions correspondingn * to non-integer zoom levels.n * @param {number} x Map x coordinate.n * @param {number} y Map y coordinate.n * @param {number} z Integer zoom level.n * @param {boolean} reverseIntersectionPolicy Instead of letting edgen * intersections go to the higher tile coordinate, let edge intersectionsn * go to the lower tile coordinate.n * @param {import("../tilecoord.js").TileCoord=} opt_tileCoord Temporary import("../tilecoord.js").TileCoord object.n * @return {import("../tilecoord.js").TileCoord} Tile coordinate.n * @privaten */n TileGrid.prototype.getTileCoordForXYAndZ_ = function (x, y, z, reverseIntersectionPolicy, opt_tileCoord) {n var origin = this.getOrigin(z);n var resolution = this.getResolution(z);n var tileSize = toSize(this.getTileSize(z), this.tmpSize_);n var adjustX = reverseIntersectionPolicy ? 0.5 : 0;n var adjustY = reverseIntersectionPolicy ? 0.5 : 0;n var xFromOrigin = Math.floor((x - origin) / resolution + adjustX);n var yFromOrigin = Math.floor((origin - y) / resolution + adjustY);n var tileCoordX = xFromOrigin / tileSize;n var tileCoordY = yFromOrigin / tileSize;n if (reverseIntersectionPolicy) {n tileCoordX = Math.ceil(tileCoordX) - 1;n tileCoordY = Math.ceil(tileCoordY) - 1;n }n else {n tileCoordX = Math.floor(tileCoordX);n tileCoordY = Math.floor(tileCoordY);n }n return createOrUpdateTileCoord(z, tileCoordX, tileCoordY, opt_tileCoord);n };n /**n * Get a tile coordinate given a map coordinate and zoom level.n * @param {import("../coordinate.js").Coordinate} coordinate Coordinate.n * @param {number} z Zoom level.n * @param {import("../tilecoord.js").TileCoord=} opt_tileCoord Destination import("../tilecoord.js").TileCoord object.n * @return {import("../tilecoord.js").TileCoord} Tile coordinate.n * @apin */n TileGrid.prototype.getTileCoordForCoordAndZ = function (coordinate, z, opt_tileCoord) {n return this.getTileCoordForXYAndZ_(coordinate, coordinate, z, false, opt_tileCoord);n };n /**n * @param {import("../tilecoord.js").TileCoord} tileCoord Tile coordinate.n * @return {number} Tile resolution.n */n TileGrid.prototype.getTileCoordResolution = function (tileCoord) {n return this.resolutions_[tileCoord];n };n /**n * Get the tile size for a zoom level. The type of the return value matches then * `tileSize` or `tileSizes` that the tile grid was configured with. To alwaysn * get an `import("../size.js").Size`, run the result through `import("../size.js").Size.toSize()`.n * @param {number} z Z.n * @return {number|import("../size.js").Size} Tile size.n * @apin */n TileGrid.prototype.getTileSize = function (z) {n if (this.tileSize_) {n return this.tileSize_;n }n else {n return this.tileSizes_;n }n };n /**n * @param {number} z Zoom level.n * @return {import("../TileRange.js").default} Extent tile range for the specified zoom level.n */n TileGrid.prototype.getFullTileRange = function (z) {n if (!this.fullTileRanges_) {n return null;n }n else {n return this.fullTileRanges_;n }n };n /**n * @param {number} resolution Resolution.n * @param {number=} opt_direction If 0, the nearest resolution will be used.n * If 1, the nearest lower resolution will be used. If -1, the nearestn * higher resolution will be used. Default is 0.n * @return {number} Z.n * @apin */n TileGrid.prototype.getZForResolution = function (resolution, opt_direction) {n var z = linearFindNearest(this.resolutions_, resolution, opt_direction || 0);n return clamp(z, this.minZoom, this.maxZoom);n };n /**n * @param {!import("../extent.js").Extent} extent Extent for this tile grid.n * @privaten */n TileGrid.prototype.calculateTileRanges_ = function (extent) {n var length = this.resolutions_.length;n var fullTileRanges = new Array(length);n for (var z = this.minZoom; z < length; ++z) {n fullTileRanges = this.getTileRangeForExtentAndZ(extent, z);n }n this.fullTileRanges_ = fullTileRanges;n };n return TileGrid;n}());nexport default TileGrid;n//# sourceMappingURL=TileGrid.js.map”,“/**n * @module ol/tilegridn */nimport { DEFAULT_MAX_ZOOM, DEFAULT_TILE_SIZE } from './tilegrid/common.js';nimport { toSize } from './size.js';nimport { containsCoordinate, createOrUpdate, getCorner, getHeight, getWidth } from './extent.js';nimport Corner from './extent/Corner.js';nimport { get as getProjection, METERS_PER_UNIT } from './proj.js';nimport Units from './proj/Units.js';nimport TileGrid from './tilegrid/TileGrid.js';n/**n * @param {import("./proj/Projection.js").default} projection Projection.n * @return {!TileGrid} Default tile grid for then * 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;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 - center) / worldWidth);n center += 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 isn * DEFAULT_MAX_ZOOM).n * @param {number|import("./size.js").Size=} opt_tileSize Tile size (default usesn * DEFAULT_TILE_SIZE).n * @param {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 : 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_tileSizen });n}n/**n * @typedef {Object} XYZOptionsn * @property {import("./extent.js").Extent} [extent] Extent for the tile grid. The origin for an XYZ tile grid is then * top-left corner of the extent. The zero level of the grid is defined by the resolution at which one tile fits in then * provided extent. If not provided, the extent of the EPSG:3857 projection is used.n * @property {number} [maxZoom] Maximum zoom. The default is `42`. This determines the number of levelsn * 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 * @apin */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)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 isn * DEFAULT_MAX_ZOOM).n * @param {number|import("./size.js").Size=} opt_tileSize Tile size (default usesn * DEFAULT_TILE_SIZE).n * @return {!Array<number>} Resolutions array.n */nfunction resolutionsFromExtent(extent, opt_maxZoom, opt_tileSize) {n var maxZoom = opt_maxZoom !== undefined ?n opt_maxZoom : DEFAULT_MAX_ZOOM;n var height = getHeight(extent);n var width = getWidth(extent);n var tileSize = toSize(opt_tileSize !== undefined ?n opt_tileSize : DEFAULT_TILE_SIZE);n var maxResolution = Math.max(width / tileSize, height / tileSize);n var length = maxZoom + 1;n var resolutions = new Array(length);n for (var z = 0; z < length; ++z) {n resolutions = 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 isn * DEFAULT_MAX_ZOOM).n * @param {number|import("./size.js").Size=} opt_tileSize Tile size (default usesn * DEFAULT_TILE_SIZE).n * @param {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 ann * 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 / projection.getMetersPerUnit();n extent = createOrUpdate(-half, -half, half, half);n }n return extent;n}n//# sourceMappingURL=tilegrid.js.map”,“/**n * @module ol/webgln */n/**n * Constants taken from goog.webgln */n/**n * Used by {@link module:ol/webgl/Helper~WebGLHelper} for buffers containing vertices data, such asn * position, color, texture coordinate, etc. These vertices are then referenced by an index buffern * to be drawn on screen (see {@link module:ol/webgl.ELEMENT_ARRAY_BUFFER}).n * @constn * @type {number}n * @apin */nexport var ARRAY_BUFFER = 0x8892;n/**n * Used by {@link module:ol/webgl/Helper~WebGLHelper} for buffers containing indices data.n * Index buffers are essentially lists of references to vertices defined in a vertex buffern * (see {@link module:ol/webgl.ARRAY_BUFFER}), and define the primitives (triangles) to be drawn.n * @constn * @type {number}n * @apin */nexport var ELEMENT_ARRAY_BUFFER = 0x8893;n/**n * Used by {link module:ol/webgl/Buffer~WebGLArrayBuffer}.n * @constn * @type {number}n * @apin */nexport var STREAM_DRAW = 0x88E0;n/**n * Used by {link module:ol/webgl/Buffer~WebGLArrayBuffer}.n * @constn * @type {number}n * @apin */nexport var STATIC_DRAW = 0x88E4;n/**n * Used by {link module:ol/webgl/Buffer~WebGLArrayBuffer}.n * @constn * @type {number}n * @apin */nexport var DYNAMIC_DRAW = 0x88E8;n/**n * @constn * @type {number}n */nexport var UNSIGNED_BYTE = 0x1401;n/**n * @constn * @type {number}n */nexport var UNSIGNED_SHORT = 0x1403;n/**n * @constn * @type {number}n */nexport var UNSIGNED_INT = 0x1405;n/**n * @constn * @type {number}n */nexport var FLOAT = 0x1406;n/** end of goog.webgl constantsn */n/**n * @constn * @type {Array<string>}n */nvar CONTEXT_IDS = [n 'experimental-webgl',n 'webgl',n 'webkit-3d',n 'moz-webgl'n];n/**n * @param {HTMLCanvasElement} canvas Canvas.n * @param {Object=} opt_attributes Attributes.n * @return {WebGLRenderingContext} WebGL rendering context.n */nexport function getContext(canvas, opt_attributes) {n var ii = CONTEXT_IDS.length;n for (var i = 0; i < ii; ++i) {n try {n var context = canvas.getContext(CONTEXT_IDS, opt_attributes);n if (context) {n return /** @type {!WebGLRenderingContext} */ (context);n }n }n catch (e) {n // passn }n }n return null;n}n/**n * @type {Array<string>}n */nvar supportedExtensions;n/**n * @return {Array<string>} List of supported WebGL extensions.n */nexport function getSupportedExtensions() {n if (!supportedExtensions) {n var canvas = document.createElement('canvas');n var gl = getContext(canvas);n if (gl) {n supportedExtensions = gl.getSupportedExtensions();n }n }n return supportedExtensions;n}n//# sourceMappingURL=webgl.js.map”,“/**n * @module ol/xmln */nimport { extend } from './array.js';n/**n * When using {@link module:ol/xml~makeChildAppender} orn * {@link module:ol/xml~makeSimpleNodeFactory}, the top `objectStack` item needsn * to have this structure.n * @typedef {Object} NodeStackItemn * @property {Node} noden */n/**n * @typedef {function(Element, Array<*>): void} Parsern */n/**n * @typedef {function(Element, *, Array<*>): void} Serializern */n/**n * This document should be used when creating nodes for XML serializations. Thisn * document is also used by {@link module:ol/xml~createElementNS}n * @constn * @type {Document}n */nexport var DOCUMENT = document.implementation.createDocument('', '', null);n/**n * @type {string}n */nexport var XML_SCHEMA_INSTANCE_URI = 'www.w3.org/2001/XMLSchema-instance’;n/**n * @param {string} namespaceURI Namespace URI.n * @param {string} qualifiedName Qualified name.n * @return {Element} Node.n */nexport function createElementNS(namespaceURI, qualifiedName) {n return DOCUMENT.createElementNS(namespaceURI, qualifiedName);n}n/**n * Recursively grab all text content of child nodes into a single string.n * @param {Node} node Node.n * @param {boolean} normalizeWhitespace Normalize whitespace: remove all linen * breaks.n * @return {string} All text content.n * @apin */nexport function getAllTextContent(node, normalizeWhitespace) {n return getAllTextContent_(node, normalizeWhitespace, []).join('');n}n/**n * Recursively grab all text content of child nodes into a single string.n * @param {Node} node Node.n * @param {boolean} normalizeWhitespace Normalize whitespace: remove all linen * breaks.n * @param {Array<string>} accumulator Accumulator.n * @privaten * @return {Array<string>} Accumulator.n */nexport function getAllTextContent_(node, normalizeWhitespace, accumulator) {n if (node.nodeType == Node.CDATA_SECTION_NODE ||n node.nodeType == Node.TEXT_NODE) {n if (normalizeWhitespace) {n accumulator.push(String(node.nodeValue).replace(/(\r\n|\r|\n)/g, ''));n }n else {n accumulator.push(node.nodeValue);n }n }n else {n var n = void 0;n for (n = node.firstChild; n; n = n.nextSibling) {n getAllTextContent_(n, normalizeWhitespace, accumulator);n }n }n return accumulator;n}n/**n * @param {Object} object Object.n * @return {boolean} Is a document.n */nexport function isDocument(object) {n return 'documentElement' in object;n}n/**n * @param {Element} node Node.n * @param {?string} namespaceURI Namespace URI.n * @param {string} name Attribute name.n * @return {string} Valuen */nexport function getAttributeNS(node, namespaceURI, name) {n return node.getAttributeNS(namespaceURI, name) || '';n}n/**n * Parse an XML string to an XML Document.n * @param {string} xml XML.n * @return {Document} Document.n * @apin */nexport function parse(xml) {n return new DOMParser().parseFromString(xml, 'application/xml');n}n/**n * Make an array extender function for extending the array at the top of then * object stack.n * @param {function(this: T, Node, Array<*>): (Array<*>|undefined)} valueReader Value reader.n * @param {T=} opt_this The object to use as `this` in `valueReader`.n * @return {Parser} Parser.n * @template Tn */nexport function makeArrayExtender(valueReader, opt_this) {n return (n /**n * @param {Node} node Node.n * @param {Array<*>} objectStack Object stack.n */n function (node, objectStack) {n var value = valueReader.call(opt_this !== undefined ? opt_this : this, node, objectStack);n if (value !== undefined) {n var array = /** @type {Array<*>} */ (objectStack[objectStack.length - 1]);n extend(array, value);n }n });n}n/**n * Make an array pusher function for pushing to the array at the top of then * object stack.n * @param {function(this: T, Element, Array<*>): *} valueReader Value reader.n * @param {T=} opt_this The object to use as `this` in `valueReader`.n * @return {Parser} Parser.n * @template Tn */nexport function makeArrayPusher(valueReader, opt_this) {n return (n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */n function (node, objectStack) {n var value = valueReader.call(opt_this !== undefined ? opt_this : this, node, objectStack);n if (value !== undefined) {n var array = /** @type {Array<*>} */ (objectStack[objectStack.length - 1]);n array.push(value);n }n });n}n/**n * Make an object stack replacer function for replacing the object at then * top of the stack.n * @param {function(this: T, Node, Array<*>): *} valueReader Value reader.n * @param {T=} opt_this The object to use as `this` in `valueReader`.n * @return {Parser} Parser.n * @template Tn */nexport function makeReplacer(valueReader, opt_this) {n return (n /**n * @param {Node} node Node.n * @param {Array<*>} objectStack Object stack.n */n function (node, objectStack) {n var value = valueReader.call(opt_this !== undefined ? opt_this : this, node, objectStack);n if (value !== undefined) {n objectStack[objectStack.length - 1] = value;n }n });n}n/**n * Make an object property pusher function for adding a property to then * object at the top of the stack.n * @param {function(this: T, Element, Array<*>): *} valueReader Value reader.n * @param {string=} opt_property Property.n * @param {T=} opt_this The object to use as `this` in `valueReader`.n * @return {Parser} Parser.n * @template Tn */nexport function makeObjectPropertyPusher(valueReader, opt_property, opt_this) {n return (n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */n function (node, objectStack) {n var value = valueReader.call(opt_this !== undefined ? opt_this : this, node, objectStack);n if (value !== undefined) {n var object = /** @type {!Object} */ (objectStack[objectStack.length - 1]);n var property = opt_property !== undefined ? opt_property : node.localName;n var array = void 0;n if (property in object) {n array = object;n }n else {n array = [];n object = array;n }n array.push(value);n }n });n}n/**n * Make an object property setter function.n * @param {function(this: T, Element, Array<*>): *} valueReader Value reader.n * @param {string=} opt_property Property.n * @param {T=} opt_this The object to use as `this` in `valueReader`.n * @return {Parser} Parser.n * @template Tn */nexport function makeObjectPropertySetter(valueReader, opt_property, opt_this) {n return (n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */n function (node, objectStack) {n var value = valueReader.call(opt_this !== undefined ? opt_this : this, node, objectStack);n if (value !== undefined) {n var object = /** @type {!Object} */ (objectStack[objectStack.length - 1]);n var property = opt_property !== undefined ? opt_property : node.localName;n object = value;n }n });n}n/**n * Create a serializer that appends nodes written by its `nodeWriter` to itsn * designated parent. The parent is the `node` of then * {@link module:ol/xml~NodeStackItem} at the top of the `objectStack`.n * @param {function(this: T, Node, V, Array<*>): void} nodeWriter Node writer.n * @param {T=} opt_this The object to use as `this` in `nodeWriter`.n * @return {Serializer} Serializer.n * @template T, Vn */nexport function makeChildAppender(nodeWriter, opt_this) {n return function (node, value, objectStack) {n nodeWriter.call(opt_this !== undefined ? opt_this : this, node, value, objectStack);n var parent = /** @type {NodeStackItem} */ (objectStack[objectStack.length - 1]);n var parentNode = parent.node;n parentNode.appendChild(node);n };n}n/**n * Create a serializer that calls the provided `nodeWriter` fromn * {@link module:ol/xml~serialize}. This can be used by the parent writer to have then * 'nodeWriter' called with an array of values when the `nodeWriter` wasn * designed to serialize a single item. An example would be a LineStringn * geometry writer, which could be reused for writing MultiLineStringn * geometries.n * @param {function(this: T, Element, V, Array<*>): void} nodeWriter Node writer.n * @param {T=} opt_this The object to use as `this` in `nodeWriter`.n * @return {Serializer} Serializer.n * @template T, Vn */nexport function makeArraySerializer(nodeWriter, opt_this) {n var serializersNS, nodeFactory;n return function (node, value, objectStack) {n if (serializersNS === undefined) {n serializersNS = {};n var serializers = {};n serializers = nodeWriter;n serializersNS = serializers;n nodeFactory = makeSimpleNodeFactory(node.localName);n }n serialize(serializersNS, nodeFactory, value, objectStack);n };n}n/**n * Create a node factory which can use the `opt_keys` passed ton * {@link module:ol/xml~serialize} or {@link module:ol/xml~pushSerializeAndPop} as node names,n * or a fixed node name. The namespace of the created nodes can either be fixed,n * or the parent namespace will be used.n * @param {string=} opt_nodeName Fixed node name which will be used for alln * created nodes. If not provided, the 3rd argument to the resulting noden * factory needs to be provided and will be the nodeName.n * @param {string=} opt_namespaceURI Fixed namespace URI which will be used forn * all created nodes. If not provided, the namespace of the parent node willn * be used.n * @return {function(*, Array<*>, string=): (Node|undefined)} Node factory.n */nexport function makeSimpleNodeFactory(opt_nodeName, opt_namespaceURI) {n var fixedNodeName = opt_nodeName;n return (n /**n * @param {*} value Value.n * @param {Array<*>} objectStack Object stack.n * @param {string=} opt_nodeName Node name.n * @return {Node} Node.n */n function (value, objectStack, opt_nodeName) {n var context = /** @type {NodeStackItem} */ (objectStack[objectStack.length - 1]);n var node = context.node;n var nodeName = fixedNodeName;n if (nodeName === undefined) {n nodeName = opt_nodeName;n }n var namespaceURI = opt_namespaceURI !== undefined ? opt_namespaceURI : node.namespaceURI;n return createElementNS(namespaceURI, /** @type {string} */ (nodeName));n });n}n/**n * A node factory that creates a node using the parent's `namespaceURI` and then * `nodeName` passed by {@link module:ol/xml~serialize} orn * {@link module:ol/xml~pushSerializeAndPop} to the node factory.n * @constn * @type {function(*, Array<*>, string=): (Node|undefined)}n */nexport var OBJECT_PROPERTY_NODE_FACTORY = makeSimpleNodeFactory();n/**n * Create an array of `values` to be used with {@link module:ol/xml~serialize} orn * {@link module:ol/xml~pushSerializeAndPop}, where `orderedKeys` has to be provided asn * `opt_key` argument.n * @param {Object<string, *>} object Key-value pairs for the sequence. Keys cann * be a subset of the `orderedKeys`.n * @param {Array<string>} orderedKeys Keys in the order of the sequence.n * @return {Array<*>} Values in the order of the sequence. The resulting arrayn * has the same length as the `orderedKeys` array. Values that are notn * present in `object` will be `undefined` in the resulting array.n */nexport function makeSequence(object, orderedKeys) {n var length = orderedKeys.length;n var sequence = new Array(length);n for (var i = 0; i < length; ++i) {n sequence = object[orderedKeys];n }n return sequence;n}n/**n * Create a namespaced structure, using the same values for each namespace.n * This can be used as a starting point for versioned parsers, when only a fewn * values are version specific.n * @param {Array<string>} namespaceURIs Namespace URIs.n * @param {T} structure Structure.n * @param {Object<string, T>=} opt_structureNS Namespaced structure to add to.n * @return {Object<string, T>} Namespaced structure.n * @template Tn */nexport function makeStructureNS(namespaceURIs, structure, opt_structureNS) {n /**n * @type {Object<string, T>}n */n var structureNS = opt_structureNS !== undefined ? opt_structureNS : {};n var i, ii;n for (i = 0, ii = namespaceURIs.length; i < ii; ++i) {n structureNS[namespaceURIs] = structure;n }n return structureNS;n}n/**n * Parse a node using the parsers and object stack.n * @param {Object<string, Object<string, Parser>>} parsersNSn * Parsers by namespace.n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @param {*=} opt_this The object to use as `this`.n */nexport function parseNode(parsersNS, node, objectStack, opt_this) {n var n;n for (n = node.firstElementChild; n; n = n.nextElementSibling) {n var parsers = parsersNS;n if (parsers !== undefined) {n var parser = parsers;n if (parser !== undefined) {n parser.call(opt_this, n, objectStack);n }n }n }n}n/**n * Push an object on top of the stack, parse and return the popped object.n * @param {T} object Object.n * @param {Object<string, Object<string, Parser>>} parsersNSn * Parsers by namespace.n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @param {*=} opt_this The object to use as `this`.n * @return {T} Object.n * @template Tn */nexport function pushParseAndPop(object, parsersNS, node, objectStack, opt_this) {n objectStack.push(object);n parseNode(parsersNS, node, objectStack, opt_this);n return /** @type {T} */ (objectStack.pop());n}n/**n * Walk through an array of `values` and call a serializer for each value.n * @param {Object<string, Object<string, Serializer>>} serializersNSn * Namespaced serializers.n * @param {function(this: T, *, Array<*>, (string|undefined)): (Node|undefined)} nodeFactoryn * Node factory. The `nodeFactory` creates the node whose namespace and namen * will be used to choose a node writer from `serializersNS`. Thisn * separation allows us to decide what kind of node to create, depending onn * the value we want to serialize. An example for this would be differentn * geometry writers based on the geometry type.n * @param {Array<*>} values Values to serialize. An example would be an arrayn * of {@link module:ol/Feature~Feature} instances.n * @param {Array<*>} objectStack Node stack.n * @param {Array<string>=} opt_keys Keys of the `values`. Will be passed to then * `nodeFactory`. This is used for serializing object literals where then * node name relates to the property key. The array length of `opt_keys` hasn * to match the length of `values`. For serializing a sequence, `opt_keys`n * determines the order of the sequence.n * @param {T=} opt_this The object to use as `this` for the node factory andn * serializers.n * @template Tn */nexport function serialize(serializersNS, nodeFactory, values, objectStack, opt_keys, opt_this) {n var length = (opt_keys !== undefined ? opt_keys : values).length;n var value, node;n for (var i = 0; i < length; ++i) {n value = values;n if (value !== undefined) {n node = nodeFactory.call(opt_this !== undefined ? opt_this : this, value, objectStack, opt_keys !== undefined ? opt_keys : undefined);n if (node !== undefined) {n serializersNS[node.localName]n .call(opt_this, node, value, objectStack);n }n }n }n}n/**n * @param {O} object Object.n * @param {Object<string, Object<string, Serializer>>} serializersNSn * Namespaced serializers.n * @param {function(this: T, *, Array<*>, (string|undefined)): (Node|undefined)} nodeFactoryn * Node factory. The `nodeFactory` creates the node whose namespace and namen * will be used to choose a node writer from `serializersNS`. Thisn * separation allows us to decide what kind of node to create, depending onn * the value we want to serialize. An example for this would be differentn * geometry writers based on the geometry type.n * @param {Array<*>} values Values to serialize. An example would be an arrayn * of {@link module:ol/Feature~Feature} instances.n * @param {Array<*>} objectStack Node stack.n * @param {Array<string>=} opt_keys Keys of the `values`. Will be passed to then * `nodeFactory`. This is used for serializing object literals where then * node name relates to the property key. The array length of `opt_keys` hasn * to match the length of `values`. For serializing a sequence, `opt_keys`n * determines the order of the sequence.n * @param {T=} opt_this The object to use as `this` for the node factory andn * serializers.n * @return {O|undefined} Object.n * @template O, Tn */nexport function pushSerializeAndPop(object, serializersNS, nodeFactory, values, objectStack, opt_keys, opt_this) {n objectStack.push(object);n serialize(serializersNS, nodeFactory, values, objectStack, opt_keys, opt_this);n return /** @type {O|undefined} */ (objectStack.pop());n}n//# sourceMappingURL=xml.js.map”,“/**n * @module ol/webgl/Buffern */nimport { STATIC_DRAW, STREAM_DRAW, DYNAMIC_DRAW } from '../webgl.js';nimport { ARRAY_BUFFER, ELEMENT_ARRAY_BUFFER } from '../webgl.js';nimport { assert } from '../asserts.js';n/**n * Used to describe the intended usage for the data: `STATIC_DRAW`, `STREAM_DRAW`n * or `DYNAMIC_DRAW`.n * @enum {number}n */nexport var BufferUsage = {n STATIC_DRAW: STATIC_DRAW,n STREAM_DRAW: STREAM_DRAW,n DYNAMIC_DRAW: DYNAMIC_DRAWn};n/**n * @classdescn * Object used to store an array of data as well as usage information for that data.n * Stores typed arrays internally, either Float32Array or Uint16/32Array depending onn * the buffer type (ARRAY_BUFFER or ELEMENT_ARRAY_BUFFER) and available extensions.n *n * To populate the array, you can either use:n * * A size using `#ofSize(buffer)`n * * An `ArrayBuffer` object using `#fromArrayBuffer(buffer)`n * * A plain array using `#fromArray(array)`n *n * Note:n * See the documentation of [WebGLRenderingContext.bufferData](developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bufferData)n * for more info on buffer usage.n * @apin */nvar WebGLArrayBuffer = /** @class */ (function () {n /**n * @param {number} type Buffer type, either ARRAY_BUFFER or ELEMENT_ARRAY_BUFFER.n * @param {number=} opt_usage Intended usage, either `STATIC_DRAW`, `STREAM_DRAW` or `DYNAMIC_DRAW`.n * Default is `DYNAMIC_DRAW`.n */n function WebGLArrayBuffer(type, opt_usage) {n /**n * @privaten * @type {Float32Array|Uint32Array}n */n this.array = null;n /**n * @privaten * @type {number}n */n this.type = type;n assert(type === ARRAY_BUFFER || type === ELEMENT_ARRAY_BUFFER, 62);n /**n * @privaten * @type {number}n */n this.usage = opt_usage !== undefined ? opt_usage : BufferUsage.STATIC_DRAW;n }n /**n * Populates the buffer with an array of the given size (all values will be zeroes).n * @param {number} size Array sizen */n WebGLArrayBuffer.prototype.ofSize = function (size) {n this.array = new (getArrayClassForType(this.type))(size);n };n /**n * Populates the buffer with an array of the given size (all values will be zeroes).n * @param {Array<number>} array Numerical arrayn */n WebGLArrayBuffer.prototype.fromArray = function (array) {n this.array = (getArrayClassForType(this.type)).from(array);n };n /**n * Populates the buffer with a raw binary array buffer.n * @param {ArrayBuffer} buffer Raw binary buffer to populate the array with. Note that this buffer must have beenn * initialized for the same typed array class.n */n WebGLArrayBuffer.prototype.fromArrayBuffer = function (buffer) {n this.array = new (getArrayClassForType(this.type))(buffer);n };n /**n * @return {number} Buffer type.n */n WebGLArrayBuffer.prototype.getType = function () {n return this.type;n };n /**n * Will return null if the buffer was not initializedn * @return {Float32Array|Uint32Array} Array.n */n WebGLArrayBuffer.prototype.getArray = function () {n return this.array;n };n /**n * @return {number} Usage.n */n WebGLArrayBuffer.prototype.getUsage = function () {n return this.usage;n };n /**n * Will return 0 if the buffer is not initializedn * @return {number} Array sizen */n WebGLArrayBuffer.prototype.getSize = function () {n return this.array ? this.array.length : 0;n };n return WebGLArrayBuffer;n}());n/**n * Returns a typed array constructor based on the given buffer typen * @param {number} type Buffer type, either ARRAY_BUFFER or ELEMENT_ARRAY_BUFFER.n * @returns {Float32ArrayConstructor|Uint32ArrayConstructor} The typed array class to use for this buffer.n */nexport function getArrayClassForType(type) {n switch (type) {n case ARRAY_BUFFER:n return Float32Array;n case ELEMENT_ARRAY_BUFFER:n return Uint32Array;n default:n return Float32Array;n }n}nexport default WebGLArrayBuffer;n//# sourceMappingURL=Buffer.js.map”,“/**n * @module ol/webgl/ContextEventTypen */n/**n * @enum {string}n */nexport default {n LOST: 'webglcontextlost',n RESTORED: 'webglcontextrestored'n};n//# sourceMappingURL=ContextEventType.js.map”,“/**n * @module ol/vec/mat4n */n/**n * @return {Array<number>} "4x4 matrix representing a 3D identity transform."n */nexport function create() {n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];n}n/**n * @param {Array<number>} mat4 Flattened 4x4 matrix receiving the result.n * @param {import("../transform.js").Transform} transform Transformation matrix.n * @return {Array<number>} "2D transformation matrix as flattened 4x4 matrix."n */nexport function fromTransform(mat4, transform) {n mat4 = transform;n mat4 = transform;n mat4 = transform;n mat4 = transform;n mat4 = transform;n mat4 = transform;n return mat4;n}n//# sourceMappingURL=mat4.js.map”,“/**n * @module ol/webgl/PostProcessingPassn */nvar DEFAULT_VERTEX_SHADER = "\n precision mediump float;\n \n attribute vec2 a_position;\n varying vec2 v_texCoord;\n varying vec2 v_screenCoord;\n \n uniform vec2 u_screenSize;\n \n void main() {\n v_texCoord = a_position * 0.5 + 0.5;\n v_screenCoord = v_texCoord * u_screenSize;\n gl_Position = vec4(a_position, 0.0, 1.0);\n }\n";nvar DEFAULT_FRAGMENT_SHADER = "\n precision mediump float;\n \n uniform sampler2D u_image;\n \n varying vec2 v_texCoord;\n varying vec2 v_screenCoord;\n \n void main() {\n gl_FragColor = texture2D(u_image, v_texCoord);\n }\n";n/**n * @typedef {Object} Optionsn * @property {WebGLRenderingContext} webGlContext WebGL context; mandatory.n * @property {number} [scaleRatio] Scale ratio; if < 1, the post process will render to a texture smaller thann * the main canvas that will then be sampled up (useful for saving resource on blur steps).n * @property {string} [vertexShader] Vertex shader sourcen * @property {string} [fragmentShader] Fragment shader sourcen * @property {Object.<string,import("./Helper").UniformValue>} [uniforms] Uniform definitions for the post process stepn */n/**n * @typedef {Object} UniformInternalDescriptionn * @property {import("./Helper").UniformValue} value Valuen * @property {number} location Locationn * @property {WebGLTexture} [texture] Texturen * @privaten */n/**n * @classdescn * This class is used to define Post Processing passes with custom shaders and uniforms.n * This is used internally by {@link module:ol/webgl/Helper~WebGLHelper}.n *n * Please note that the final output on the DOM canvas is expected to have premultiplied alpha, which means thatn * a pixel which is 100% red with an opacity of 50% must have a color of (r=0.5, g=0, b=0, a=0.5).n * Failing to provide pixel colors with premultiplied alpha will result in render anomalies.n *n * The default post-processing pass does not multiply color values with alpha value, it expects color values to ben * premultiplied.n *n * Default shaders are shown hereafter:n *n * * Vertex shader:n *n * “`n * precision mediump float;n *n * attribute vec2 a_position;n * varying vec2 v_texCoord;n * varying vec2 v_screenCoord;n *n * uniform vec2 u_screenSize;n *n * void main() {n * v_texCoord = a_position * 0.5 + 0.5;n * v_screenCoord = v_texCoord * u_screenSize;n * gl_Position = vec4(a_position, 0.0, 1.0);n * }n * “`n *n * * Fragment shader:n *n * “`n * precision mediump float;n *n * uniform sampler2D u_image;n *n * varying vec2 v_texCoord;n * varying vec2 v_screenCoord;n *n * void main() {n * gl_FragColor = texture2D(u_image, v_texCoord);n * }n * “`n *n * @apin */nvar WebGLPostProcessingPass = /** @class */ (function () {n /**n * @param {Options} options Options.n */n function WebGLPostProcessingPass(options) {n this.gl_ = options.webGlContext;n var gl = this.gl_;n this.scaleRatio_ = options.scaleRatio || 1;n this.renderTargetTexture_ = gl.createTexture();n this.renderTargetTextureSize_ = null;n this.frameBuffer_ = gl.createFramebuffer();n // compile the program for the frame buffern // TODO: make compilation errors show upn var vertexShader = gl.createShader(gl.VERTEX_SHADER);n gl.shaderSource(vertexShader, options.vertexShader || DEFAULT_VERTEX_SHADER);n gl.compileShader(vertexShader);n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);n gl.shaderSource(fragmentShader, options.fragmentShader || DEFAULT_FRAGMENT_SHADER);n gl.compileShader(fragmentShader);n this.renderTargetProgram_ = gl.createProgram();n gl.attachShader(this.renderTargetProgram_, vertexShader);n gl.attachShader(this.renderTargetProgram_, fragmentShader);n gl.linkProgram(this.renderTargetProgram_);n // bind the vertices buffer for the frame buffern this.renderTargetVerticesBuffer_ = gl.createBuffer();n var verticesArray = [n -1, -1,n 1, -1,n -1, 1,n 1, -1,n 1, 1,n -1, 1n ];n gl.bindBuffer(gl.ARRAY_BUFFER, this.renderTargetVerticesBuffer_);n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(verticesArray), gl.STATIC_DRAW);n this.renderTargetAttribLocation_ = gl.getAttribLocation(this.renderTargetProgram_, 'a_position');n this.renderTargetUniformLocation_ = gl.getUniformLocation(this.renderTargetProgram_, 'u_screenSize');n this.renderTargetTextureLocation_ = gl.getUniformLocation(this.renderTargetProgram_, 'u_image');n /**n * Holds info about custom uniforms used in the post processing passn * @type {Array<UniformInternalDescription>}n * @privaten */n this.uniforms_ = [];n options.uniforms && Object.keys(options.uniforms).forEach(function (name) {n this.uniforms_.push({n value: options.uniforms,n location: gl.getUniformLocation(this.renderTargetProgram_, name)n });n }.bind(this));n }n /**n * Get the WebGL rendering contextn * @return {WebGLRenderingContext} The rendering context.n * @apin */n WebGLPostProcessingPass.prototype.getGL = function () {n return this.gl_;n };n /**n * Initialize the render target texture of the post process, make sure it is at then * right size and bind it as a render target for the next draw calls.n * The last step to be initialized will be the one where the primitives are rendered.n * @param {import("../PluggableMap.js").FrameState} frameState current frame staten * @apin */n WebGLPostProcessingPass.prototype.init = function (frameState) {n var gl = this.getGL();n var canvas = gl.canvas;n var size = frameState.size;n // rendering goes to my buffern gl.bindFramebuffer(gl.FRAMEBUFFER, this.getFrameBuffer());n gl.viewport(0, 0, canvas.width * this.scaleRatio_, canvas.height * this.scaleRatio_);n // if size has changed: adjust canvas & render target texturen if (!this.renderTargetTextureSize_ ||n this.renderTargetTextureSize_ !== size || this.renderTargetTextureSize_ !== size) {n this.renderTargetTextureSize_ = size;n // create a new texturen var level = 0;n var internalFormat = gl.RGBA;n var border = 0;n var format = gl.RGBA;n var type = gl.UNSIGNED_BYTE;n var data = null;n gl.bindTexture(gl.TEXTURE_2D, this.renderTargetTexture_);n gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, canvas.width * this.scaleRatio_, canvas.height * this.scaleRatio_, border, format, type, data);n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);n // bind the texture to the framebuffern gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.renderTargetTexture_, 0);n }n };n /**n * Render to the next postprocessing pass (or to the canvas if final pass).n * @param {import("../PluggableMap.js").FrameState} frameState current frame staten * @param {WebGLPostProcessingPass} [nextPass] Next pass, optionaln * @apin */n WebGLPostProcessingPass.prototype.apply = function (frameState, nextPass) {n var gl = this.getGL();n var canvas = gl.canvas;n gl.bindFramebuffer(gl.FRAMEBUFFER, nextPass ? nextPass.getFrameBuffer() : null);n gl.activeTexture(gl.TEXTURE0);n gl.bindTexture(gl.TEXTURE_2D, this.renderTargetTexture_);n // render the frame buffer to the canvasn gl.clearColor(0.0, 0.0, 0.0, 0.0);n gl.clear(gl.COLOR_BUFFER_BIT);n gl.enable(gl.BLEND);n gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);n gl.viewport(0, 0, canvas.width, canvas.height);n gl.bindBuffer(gl.ARRAY_BUFFER, this.renderTargetVerticesBuffer_);n gl.useProgram(this.renderTargetProgram_);n gl.enableVertexAttribArray(this.renderTargetAttribLocation_);n gl.vertexAttribPointer(this.renderTargetAttribLocation_, 2, gl.FLOAT, false, 0, 0);n gl.uniform2f(this.renderTargetUniformLocation_, canvas.width, canvas.height);n gl.uniform1i(this.renderTargetTextureLocation_, 0);n this.applyUniforms(frameState);n gl.drawArrays(gl.TRIANGLES, 0, 6);n };n /**n * @returns {WebGLFramebuffer} Frame buffern * @apin */n WebGLPostProcessingPass.prototype.getFrameBuffer = function () {n return this.frameBuffer_;n };n /**n * Sets the custom uniforms based on what was given in the constructor.n * @param {import("../PluggableMap.js").FrameState} frameState Frame state.n * @privaten */n WebGLPostProcessingPass.prototype.applyUniforms = function (frameState) {n var gl = this.getGL();n var value;n var textureSlot = 1;n this.uniforms_.forEach(function (uniform) {n value = typeof uniform.value === 'function' ? uniform.value(frameState) : uniform.value;n // apply value based on typen if (value instanceof HTMLCanvasElement || value instanceof ImageData) {n // create a texture & put datan if (!uniform.texture) {n uniform.texture = gl.createTexture();n }n gl.activeTexture(gl["TEXTURE" + textureSlot]);n gl.bindTexture(gl.TEXTURE_2D, uniform.texture);n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);n if (value instanceof ImageData) {n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, value.width, value.height, 0, gl.UNSIGNED_BYTE, new Uint8Array(value.data));n }n else {n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, value);n }n // fill texture slotsn gl.uniform1i(uniform.location, textureSlot++);n }n else if (Array.isArray(value)) {n switch (value.length) {n case 2:n gl.uniform2f(uniform.location, value, value);n return;n case 3:n gl.uniform3f(uniform.location, value, value, value);n return;n case 4:n gl.uniform4f(uniform.location, value, value, value, value);n return;n default: return;n }n }n else if (typeof value === 'number') {n gl.uniform1f(uniform.location, value);n }n });n };n return WebGLPostProcessingPass;n}());nexport default WebGLPostProcessingPass;n//# sourceMappingURL=PostProcessingPass.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/webgl/Helpern */nimport { getUid } from '../util.js';nimport Disposable from '../Disposable.js';nimport { clear } from '../obj.js';nimport ContextEventType from '../webgl/ContextEventType.js';nimport { compose as composeTransform, create as createTransform, reset as resetTransform, rotate as rotateTransform, scale as scaleTransform } from '../transform.js';nimport { create, fromTransform } from '../vec/mat4.js';nimport WebGLPostProcessingPass from './PostProcessingPass.js';nimport { FLOAT, getContext, getSupportedExtensions, UNSIGNED_BYTE, UNSIGNED_INT, UNSIGNED_SHORT } from '../webgl.js';nimport { includes } from '../array.js';nimport { assert } from '../asserts.js';n/**n * @typedef {Object} BufferCacheEntryn * @property {import("./Buffer.js").default} buffern * @property {WebGLBuffer} webGlBuffern */n/**n * Shader types, either `FRAGMENT_SHADER` or `VERTEX_SHADER`.n * @enum {number}n */nexport var ShaderType = {n FRAGMENT_SHADER: 0x8B30,n VERTEX_SHADER: 0x8B31n};n/**n * Uniform names used in the default shaders: `PROJECTION_MATRIX`, `OFFSET_SCALE_MATRIX`.n * and `OFFSET_ROTATION_MATRIX`.n * @enum {string}n */nexport var DefaultUniform = {n PROJECTION_MATRIX: 'u_projectionMatrix',n OFFSET_SCALE_MATRIX: 'u_offsetScaleMatrix',n OFFSET_ROTATION_MATRIX: 'u_offsetRotateMatrix',n TIME: 'u_time',n ZOOM: 'u_zoom',n RESOLUTION: 'u_resolution'n};n/**n * Attribute types, either `UNSIGNED_BYTE`, `UNSIGNED_SHORT`, `UNSIGNED_INT` or `FLOAT`n * Note: an attribute stored in a `Float32Array` should be of type `FLOAT`.n * @enum {number}n */nexport var AttributeType = {n UNSIGNED_BYTE: UNSIGNED_BYTE,n UNSIGNED_SHORT: UNSIGNED_SHORT,n UNSIGNED_INT: UNSIGNED_INT,n FLOAT: FLOATn};n/**n * Description of an attribute in a buffern * @typedef {Object} AttributeDescriptionn * @property {string} name Attribute name to use in shadersn * @property {number} size Number of components per attributesn * @property {AttributeType} [type] Attribute type, i.e. number of bytes used to store the value. This isn * determined by the class of typed array which the buffer uses (eg. `Float32Array` for a `FLOAT` attribute).n * Default is `FLOAT`.n */n/**n * @typedef {number|Array<number>|HTMLCanvasElement|HTMLImageElement|ImageData|import("../transform").Transform} UniformLiteralValuen */n/**n * Uniform value can be a number, array of numbers (2 to 4), canvas element or a callback returningn * one of the previous types.n * @typedef {UniformLiteralValue|function(import("../PluggableMap.js").FrameState):UniformLiteralValue} UniformValuen */n/**n * @typedef {Object} PostProcessesOptionsn * @property {number} [scaleRatio] Scale ratio; if < 1, the post process will render to a texture smaller thann * the main canvas which will then be sampled up (useful for saving resource on blur steps).n * @property {string} [vertexShader] Vertex shader sourcen * @property {string} [fragmentShader] Fragment shader sourcen * @property {Object.<string,UniformValue>} [uniforms] Uniform definitions for the post process stepn */n/**n * @typedef {Object} Optionsn * @property {Object.<string,UniformValue>} [uniforms] Uniform definitions; property names must match the uniformn * names in the provided or default shaders.n * @property {Array<PostProcessesOptions>} [postProcesses] Post-processes definitionsn */n/**n * @typedef {Object} UniformInternalDescriptionn * @property {string} name Namen * @property {UniformValue=} value Valuen * @property {WebGLTexture} [texture] Texturen * @privaten */n/**n * @classdescn * This class is intended to provide low-level functions related to WebGL rendering, so that accessingn * directly the WebGL API should not be required anymore.n *n * Several operations are handled by the `WebGLHelper` class:n *n * ### Define custom shaders and uniformsn *n * Shaders are low-level programs executed on the GPU and written in GLSL. There are two types of shaders:n *n * Vertex shaders are used to manipulate the position and attribute of vertices of rendered primitives (ie. corners of a square).n * Outputs are:n *n * * `gl_Position`: position of the vertex in screen spacen *n * * Varyings usually prefixed with `v_` are passed on to the fragment shadern *n * Fragment shaders are used to control the actual color of the pixels drawn on screen. Their only output is `gl_FragColor`.n *n * Both shaders can take uniforms or attributes as input. Attributes are explained later. Uniforms are common, read-only values thatn * can be changed at every frame and can be of type float, arrays of float or images.n *n * Shaders must be compiled and assembled into a program like so:n * “`jsn * // here we simply create two shaders and assemble them in a program which is then usedn * // for subsequent rendering callsn * const vertexShader = new WebGLVertex(VERTEX_SHADER);n * const fragmentShader = new WebGLFragment(FRAGMENT_SHADER);n * const program = this.context.getProgram(fragmentShader, vertexShader);n * helper.useProgram(this.program);n * “`n *n * Uniforms are defined using the `uniforms` option and can either be explicit values or callbacks taking the frame state as argument.n * You can also change their value along the way like so:n * “`jsn * helper.setUniformFloatValue('u_value', valueAsNumber);n * “`n *n * ### Defining post processing passesn *n * *Post processing* describes the act of rendering primitives to a texture, and then rendering this texture to the final canvasn * while applying special effects in screen space.n * Typical uses are: blurring, color manipulation, depth of field, filtering…n *n * The `WebGLHelper` class offers the possibility to define post processes at creation time using the `postProcesses` option.n * A post process step accepts the following options:n *n * * `fragmentShader` and `vertexShader`: text literals in GLSL language that will be compiled and used in the post processing step.n * * `uniforms`: uniforms can be defined for the post processing steps just like for the main render.n * * `scaleRatio`: allows using an intermediate texture smaller or higher than the final canvas in the post processing step.n * This is typically used in blur steps to reduce the performance overhead by using an already downsampled texture as input.n *n * The {@link module:ol/webgl/PostProcessingPass~WebGLPostProcessingPass} class is used internally, refer to its documentation for more info.n *n * ### Binding WebGL buffers and flushing data into themn *n * Data that must be passed to the GPU has to be transferred using {@link module:ol/webgl/Buffer~WebGLArrayBuffer} objects.n * A buffer has to be created only once, but must be bound every time the buffer content will be used for rendering.n * This is done using {@link bindBuffer}.n * When the buffer's array content has changed, the new data has to be flushed to the GPU memory; this is done usingn * {@link flushBufferData}. Note: this operation is expensive and should be done as infrequently as possible.n *n * When binding an array buffer, a `target` parameter must be given: it should be either {@link module:ol/webgl.ARRAY_BUFFER}n * (if the buffer contains vertices data) or {@link module:ol/webgl.ELEMENT_ARRAY_BUFFER} (if the buffer contains indices data).n *n * Examples below:n * “`jsn * // at initialization phasen * const verticesBuffer = new WebGLArrayBuffer([], DYNAMIC_DRAW);n * const indicesBuffer = new WebGLArrayBuffer([], DYNAMIC_DRAW);n *n * // when array values have changedn * helper.flushBufferData(ARRAY_BUFFER, this.verticesBuffer);n * helper.flushBufferData(ELEMENT_ARRAY_BUFFER, this.indicesBuffer);n *n * // at rendering phasen * helper.bindBuffer(ARRAY_BUFFER, this.verticesBuffer);n * helper.bindBuffer(ELEMENT_ARRAY_BUFFER, this.indicesBuffer);n * “`n *n * ### Specifying attributesn *n * The GPU only receives the data as arrays of numbers. These numbers must be handled differently depending on what it describes (position, texture coordinate…).n * Attributes are used to specify these uses. Use {@link enableAttributeArray_} and eithern * the default attribute names in {@link module:ol/webgl/Helper.DefaultAttrib} or custom ones.n *n * Please note that you will have to specify the type and offset of the attributes in the data array. You can refer to the documentation of [WebGLRenderingContext.vertexAttribPointer](developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/vertexAttribPointer) for more explanation.n * “`jsn * // here we indicate that the data array has the following structure:n * // [posX, posY, offsetX, offsetY, texCoordU, texCoordV, posX, posY, …]n * helper.enableAttributes([n * {n * name: 'a_position',n * size: 2n * },n * {n * name: 'a_offset',n * size: 2n * },n * {n * name: 'a_texCoord',n * size: 2n * }n * ])n * “`n *n * ### Rendering primitivesn *n * Once all the steps above have been achieved, rendering primitives to the screen is done using {@link prepareDraw}, {@link drawElements} and {@link finalizeDraw}.n * “`jsn * // frame preparation stepn * helper.prepareDraw(frameState);n *n * // call this for every data array that has to be rendered on screenn * helper.drawElements(0, this.indicesBuffer.getArray().length);n *n * // finalize the rendering by applying post processesn * helper.finalizeDraw(frameState);n * “`n *n * For an example usage of this class, refer to {@link module:ol/renderer/webgl/PointsLayer~WebGLPointsLayerRenderer}.n *n *n * @apin */nvar WebGLHelper = /** @class */ (function (_super) {n __extends(WebGLHelper, _super);n /**n * @param {Options=} opt_options Options.n */n function WebGLHelper(opt_options) {n var _this = _super.call(this) || this;n var options = opt_options || {};n /** @private */n this.boundHandleWebGLContextLost = _this.handleWebGLContextLost.bind(_this);n /** @private */n this.boundHandleWebGLContextRestored = _this.handleWebGLContextRestored.bind(_this);n /**n * @privaten * @type {HTMLCanvasElement}n */n this.canvas = document.createElement('canvas');n this.canvas.style.position = 'absolute';n this.canvas.style.left = '0';n /**n * @privaten * @type {WebGLRenderingContext}n */n this.gl = getContext(this.canvas);n var gl = _this.getGL();n /**n * @privaten * @type {!Object<string, BufferCacheEntry>}n */n this.bufferCache = {};n /**n * @privaten * @type {WebGLProgram}n */n this.currentProgram = null;n assert(includes(getSupportedExtensions(), 'OES_element_index_uint'), 63);n gl.getExtension('OES_element_index_uint');n this.canvas.addEventListener(ContextEventType.LOST, this.boundHandleWebGLContextLost);n this.canvas.addEventListener(ContextEventType.RESTORED, this.boundHandleWebGLContextRestored);n /**n * @privaten * @type {import("../transform.js").Transform}n */n this.offsetRotateMatrix = createTransform();n /**n * @privaten * @type {import("../transform.js").Transform}n */n this.offsetScaleMatrix = createTransform();n /**n * @privaten * @type {Array<number>}n */n this.tmpMat4 = create();n /**n * @privaten * @type {Object.<string, WebGLUniformLocation>}n */n this.uniformLocations = {};n /**n * @privaten * @type {Object.<string, number>}n */n this.attribLocations = {};n /**n * Holds info about custom uniforms used in the post processing pass.n * If the uniform is a texture, the WebGL Texture object will be stored here.n * @type {Array<UniformInternalDescription>}n * @privaten */n this.uniforms = [];n if (options.uniforms) {n for (var name_1 in options.uniforms) {n this.uniforms.push({n name: name_1,n value: options.uniformsn });n }n }n /**n * An array of PostProcessingPass objects is kept in this variable, built from the steps provided in then * options. If no post process was given, a default one is used (so as not to have to make an exception ton * the frame buffer logic).n * @type {Array<WebGLPostProcessingPass>}n * @privaten */n this.postProcessPasses = options.postProcesses ? options.postProcesses.map(function (options) {n return new WebGLPostProcessingPass({n webGlContext: gl,n scaleRatio: options.scaleRatio,n vertexShader: options.vertexShader,n fragmentShader: options.fragmentShader,n uniforms: options.uniformsn });n }) : [new WebGLPostProcessingPass({ webGlContext: gl })];n /**n * @type {string|null}n * @privaten */n this.shaderCompileErrors = null;n /**n * @type {number}n * @privaten */n this.startTime = Date.now();n return _this;n }n /**n * Just bind the buffer if it's in the cache. Otherwise createn * the WebGL buffer, bind it, populate it, and add an entry ton * the cache.n * @param {import("./Buffer").default} buffer Buffer.n * @apin */n WebGLHelper.prototype.bindBuffer = function (buffer) {n var gl = this.getGL();n var bufferKey = getUid(buffer);n var bufferCache = this.bufferCache_;n if (!bufferCache) {n var webGlBuffer = gl.createBuffer();n bufferCache = {n buffer: buffer,n webGlBuffer: webGlBuffern };n this.bufferCache_ = bufferCache;n }n gl.bindBuffer(buffer.getType(), bufferCache.webGlBuffer);n };n /**n * Update the data contained in the buffer array; this is required for then * new data to be renderedn * @param {import("./Buffer").default} buffer Buffer.n * @apin */n WebGLHelper.prototype.flushBufferData = function (buffer) {n var gl = this.getGL();n this.bindBuffer(buffer);n gl.bufferData(buffer.getType(), buffer.getArray(), buffer.getUsage());n };n /**n * @param {import("./Buffer.js").default} buf Buffer.n */n WebGLHelper.prototype.deleteBuffer = function (buf) {n var gl = this.getGL();n var bufferKey = getUid(buf);n var bufferCacheEntry = this.bufferCache_;n if (!gl.isContextLost()) {n gl.deleteBuffer(bufferCacheEntry.buffer);n }n delete this.bufferCache_;n };n /**n * @inheritDocn */n WebGLHelper.prototype.disposeInternal = function () {n this.canvas_.removeEventListener(ContextEventType.LOST, this.boundHandleWebGLContextLost_);n this.canvas_.removeEventListener(ContextEventType.RESTORED, this.boundHandleWebGLContextRestored_);n };n /**n * Clear the buffer & set the viewport to draw.n * Post process passes will be initialized here, the first one being bound as a render target forn * subsequent draw calls.n * @param {import("../PluggableMap.js").FrameState} frameState current frame staten * @apin */n WebGLHelper.prototype.prepareDraw = function (frameState) {n var gl = this.getGL();n var canvas = this.getCanvas();n var size = frameState.size;n var pixelRatio = frameState.pixelRatio;n canvas.width = size * pixelRatio;n canvas.height = size * pixelRatio;n canvas.style.width = size + 'px';n canvas.style.height = size + 'px';n gl.useProgram(this.currentProgram_);n // loop backwards in post processes listn for (var i = this.postProcessPasses_.length - 1; i >= 0; i–) {n this.postProcessPasses_.init(frameState);n }n gl.bindTexture(gl.TEXTURE_2D, null);n gl.clearColor(0.0, 0.0, 0.0, 0.0);n gl.clear(gl.COLOR_BUFFER_BIT);n gl.enable(gl.BLEND);n gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);n gl.useProgram(this.currentProgram_);n this.applyFrameState(frameState);n this.applyUniforms(frameState);n };n /**n * Clear the render target & bind it for future draw operations.n * This is similar to `prepareDraw`, only post processes will not be applied.n * Note: the whole viewport will be drawn to the render target, regardless of its size.n * @param {import("../PluggableMap.js").FrameState} frameState current frame staten * @param {import("./RenderTarget.js").default} renderTarget Render target to draw ton * @param {boolean} [opt_disableAlphaBlend] If true, no alpha blending will happen.n */n WebGLHelper.prototype.prepareDrawToRenderTarget = function (frameState, renderTarget, opt_disableAlphaBlend) {n var gl = this.getGL();n var size = renderTarget.getSize();n gl.bindFramebuffer(gl.FRAMEBUFFER, renderTarget.getFramebuffer());n gl.viewport(0, 0, size, size);n gl.bindTexture(gl.TEXTURE_2D, renderTarget.getTexture());n gl.clearColor(0.0, 0.0, 0.0, 0.0);n gl.clear(gl.COLOR_BUFFER_BIT);n gl.enable(gl.BLEND);n gl.blendFunc(gl.ONE, opt_disableAlphaBlend ? gl.ZERO : gl.ONE_MINUS_SRC_ALPHA);n gl.useProgram(this.currentProgram_);n this.applyFrameState(frameState);n this.applyUniforms(frameState);n };n /**n * Execute a draw call based on the currently bound program, texture, buffers, attributes.n * @param {number} start Start index.n * @param {number} end End index.n * @apin */n WebGLHelper.prototype.drawElements = function (start, end) {n var gl = this.getGL();n var elementType = gl.UNSIGNED_INT;n var elementSize = 4;n var numItems = end - start;n var offsetInBytes = start * elementSize;n gl.drawElements(gl.TRIANGLES, numItems, elementType, offsetInBytes);n };n /**n * Apply the successive post process passes which will eventually render to the actual canvas.n * @param {import("../PluggableMap.js").FrameState} frameState current frame staten * @apin */n WebGLHelper.prototype.finalizeDraw = function (frameState) {n // apply post processes using the next one as targetn for (var i = 0; i < this.postProcessPasses_.length; i++) {n this.postProcessPasses_.apply(frameState, this.postProcessPasses_[i + 1] || null);n }n };n /**n * @return {HTMLCanvasElement} Canvas.n * @apin */n WebGLHelper.prototype.getCanvas = function () {n return this.canvas_;n };n /**n * Get the WebGL rendering contextn * @return {WebGLRenderingContext} The rendering context.n * @apin */n WebGLHelper.prototype.getGL = function () {n return this.gl_;n };n /**n * Sets the default matrix uniforms for a given frame state. This is called internally in `prepareDraw`.n * @param {import("../PluggableMap.js").FrameState} frameState Frame state.n * @privaten */n WebGLHelper.prototype.applyFrameState = function (frameState) {n var size = frameState.size;n var rotation = frameState.viewState.rotation;n var offsetScaleMatrix = resetTransform(this.offsetScaleMatrix_);n scaleTransform(offsetScaleMatrix, 2 / size, 2 / size);n var offsetRotateMatrix = resetTransform(this.offsetRotateMatrix_);n if (rotation !== 0) {n rotateTransform(offsetRotateMatrix, -rotation);n }n this.setUniformMatrixValue(DefaultUniform.OFFSET_SCALE_MATRIX, fromTransform(this.tmpMat4_, offsetScaleMatrix));n this.setUniformMatrixValue(DefaultUniform.OFFSET_ROTATION_MATRIX, fromTransform(this.tmpMat4_, offsetRotateMatrix));n this.setUniformFloatValue(DefaultUniform.TIME, (Date.now() - this.startTime_) * 0.001);n this.setUniformFloatValue(DefaultUniform.ZOOM, frameState.viewState.zoom);n this.setUniformFloatValue(DefaultUniform.RESOLUTION, frameState.viewState.resolution);n };n /**n * Sets the custom uniforms based on what was given in the constructor. This is called internally in `prepareDraw`.n * @param {import("../PluggableMap.js").FrameState} frameState Frame state.n * @privaten */n WebGLHelper.prototype.applyUniforms = function (frameState) {n var gl = this.getGL();n var value;n var textureSlot = 0;n this.uniforms_.forEach(function (uniform) {n value = typeof uniform.value === 'function' ? uniform.value(frameState) : uniform.value;n // apply value based on typen if (value instanceof HTMLCanvasElement || value instanceof HTMLImageElement || value instanceof ImageData) {n // create a texture & put datan if (!uniform.texture) {n uniform.texture = gl.createTexture();n }n gl.activeTexture(gl["TEXTURE" + textureSlot]);n gl.bindTexture(gl.TEXTURE_2D, uniform.texture);n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);n var imageReady = !(value instanceof HTMLImageElement) || /** @type {HTMLImageElement} */ (value).complete;n if (imageReady) {n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, value);n }n // fill texture slots by increasing indexn gl.uniform1i(this.getUniformLocation(uniform.name), textureSlot++);n }n else if (Array.isArray(value) && value.length === 6) {n this.setUniformMatrixValue(uniform.name, fromTransform(this.tmpMat4_, value));n }n else if (Array.isArray(value) && value.length <= 4) {n switch (value.length) {n case 2:n gl.uniform2f(this.getUniformLocation(uniform.name), value, value);n return;n case 3:n gl.uniform3f(this.getUniformLocation(uniform.name), value, value, value);n return;n case 4:n gl.uniform4f(this.getUniformLocation(uniform.name), value, value, value, value);n return;n default:n return;n }n }n else if (typeof value === 'number') {n gl.uniform1f(this.getUniformLocation(uniform.name), value);n }n }.bind(this));n };n /**n * Use a program. If the program is already in use, this will return `false`.n * @param {WebGLProgram} program Program.n * @return {boolean} Changed.n * @apin */n WebGLHelper.prototype.useProgram = function (program) {n if (program == this.currentProgram_) {n return false;n }n else {n var gl = this.getGL();n gl.useProgram(program);n this.currentProgram_ = program;n this.uniformLocations_ = {};n this.attribLocations_ = {};n return true;n }n };n /**n * Will attempt to compile a vertex or fragment shader based on sourcen * On error, the shader will be returned butn * `gl.getShaderParameter(shader, gl.COMPILE_STATUS)` will return `true`n * Use `gl.getShaderInfoLog(shader)` to have detailsn * @param {string} source Shader sourcen * @param {ShaderType} type VERTEX_SHADER or FRAGMENT_SHADERn * @return {WebGLShader} Shader objectn */n WebGLHelper.prototype.compileShader = function (source, type) {n var gl = this.getGL();n var shader = gl.createShader(type);n gl.shaderSource(shader, source);n gl.compileShader(shader);n return shader;n };n /**n * Create a program for a vertex and fragment shader. The shaders compilation may have failed:n * use `WebGLHelper.getShaderCompileErrors()`to have details if any.n * @param {string} fragmentShaderSource Fragment shader source.n * @param {string} vertexShaderSource Vertex shader source.n * @return {WebGLProgram} Programn * @apin */n WebGLHelper.prototype.getProgram = function (fragmentShaderSource, vertexShaderSource) {n var gl = this.getGL();n var fragmentShader = this.compileShader(fragmentShaderSource, gl.FRAGMENT_SHADER);n var vertexShader = this.compileShader(vertexShaderSource, gl.VERTEX_SHADER);n this.shaderCompileErrors_ = null;n if (gl.getShaderInfoLog(fragmentShader)) {n this.shaderCompileErrors_ =n "Fragment shader compilation failed:\n" + gl.getShaderInfoLog(fragmentShader);n }n if (gl.getShaderInfoLog(vertexShader)) {n this.shaderCompileErrors_ = (this.shaderCompileErrors_ || '') +n ("Vertex shader compilation failed:\n" + gl.getShaderInfoLog(vertexShader));n }n var program = gl.createProgram();n gl.attachShader(program, fragmentShader);n gl.attachShader(program, vertexShader);n gl.linkProgram(program);n return program;n };n /**n * Will return the last shader compilation errors. If no error happened, will return null;n * @return {string|null} Errors description, or null if last compilation was successfuln * @apin */n WebGLHelper.prototype.getShaderCompileErrors = function () {n return this.shaderCompileErrors_;n };n /**n * Will get the location from the shader or the cachen * @param {string} name Uniform namen * @return {WebGLUniformLocation} uniformLocationn * @apin */n WebGLHelper.prototype.getUniformLocation = function (name) {n if (this.uniformLocations_ === undefined) {n this.uniformLocations_ = this.getGL().getUniformLocation(this.currentProgram_, name);n }n return this.uniformLocations_;n };n /**n * Will get the location from the shader or the cachen * @param {string} name Attribute namen * @return {number} attribLocationn * @apin */n WebGLHelper.prototype.getAttributeLocation = function (name) {n if (this.attribLocations_ === undefined) {n this.attribLocations_ = this.getGL().getAttribLocation(this.currentProgram_, name);n }n return this.attribLocations_;n };n /**n * Modifies the given transform to apply the rotation/translation/scaling of the given frame state.n * The resulting transform can be used to convert world space coordinates to view coordinates.n * @param {import("../PluggableMap.js").FrameState} frameState Frame state.n * @param {import("../transform").Transform} transform Transform to update.n * @return {import("../transform").Transform} The updated transform object.n * @apin */n WebGLHelper.prototype.makeProjectionTransform = function (frameState, transform) {n var size = frameState.size;n var rotation = frameState.viewState.rotation;n var resolution = frameState.viewState.resolution;n var center = frameState.viewState.center;n resetTransform(transform);n composeTransform(transform, 0, 0, 2 / (resolution * size), 2 / (resolution * size), -rotation, -center, -center);n return transform;n };n /**n * Give a value for a standard float uniformn * @param {string} uniform Uniform namen * @param {number} value Valuen * @apin */n WebGLHelper.prototype.setUniformFloatValue = function (uniform, value) {n this.getGL().uniform1f(this.getUniformLocation(uniform), value);n };n /**n * Give a value for a standard matrix4 uniformn * @param {string} uniform Uniform namen * @param {Array<number>} value Matrix valuen * @apin */n WebGLHelper.prototype.setUniformMatrixValue = function (uniform, value) {n this.getGL().uniformMatrix4fv(this.getUniformLocation(uniform), false, value);n };n /**n * Will set the currently bound buffer to an attribute of the shader program. Used by `#enableAttributes`n * internally.n * @param {string} attribName Attribute namen * @param {number} size Number of components per attributesn * @param {number} type UNSIGNED_INT, UNSIGNED_BYTE, UNSIGNED_SHORT or FLOATn * @param {number} stride Stride in bytes (0 means attribs are packed)n * @param {number} offset Offset in bytesn * @privaten */n WebGLHelper.prototype.enableAttributeArray_ = function (attribName, size, type, stride, offset) {n var location = this.getAttributeLocation(attribName);n // the attribute has not been found in the shaders; do not enable itn if (location < 0) {n return;n }n this.getGL().enableVertexAttribArray(location);n this.getGL().vertexAttribPointer(location, size, type, false, stride, offset);n };n /**n * Will enable the following attributes to be read from the currently bound buffer,n * i.e. tell the GPU where to read the different attributes in the buffer. An error in then * size/type/order of attributes will most likely break the rendering and throw a WebGL exception.n * @param {Array<AttributeDescription>} attributes Ordered list of attributes to read from the buffern * @apin */n WebGLHelper.prototype.enableAttributes = function (attributes) {n var stride = computeAttributesStride(attributes);n var offset = 0;n for (var i = 0; i < attributes.length; i++) {n var attr = attributes;n this.enableAttributeArray_(attr.name, attr.size, attr.type || FLOAT, stride, offset);n offset += attr.size * getByteSizeFromType(attr.type);n }n };n /**n * WebGL context was lostn * @privaten */n WebGLHelper.prototype.handleWebGLContextLost = function () {n clear(this.bufferCache_);n this.currentProgram_ = null;n };n /**n * WebGL context was restoredn * @privaten */n WebGLHelper.prototype.handleWebGLContextRestored = function () {n };n /**n * Will create or reuse a given webgl texture and apply the given size. If no image datan * specified, the texture will be empty, otherwise image data will be used and the `size`n * parameter will be ignored.n * Note: wrap parameters are set to clamp to edge, min filter is set to linear.n * @param {Array<number>} size Expected size of the texturen * @param {ImageData|HTMLImageElement|HTMLCanvasElement} [opt_data] Image data/object to bind to the texturen * @param {WebGLTexture} [opt_texture] Existing texture to reusen * @return {WebGLTexture} The generated texturen * @apin */n WebGLHelper.prototype.createTexture = function (size, opt_data, opt_texture) {n var gl = this.getGL();n var texture = opt_texture || gl.createTexture();n // set params & sizen var level = 0;n var internalFormat = gl.RGBA;n var border = 0;n var format = gl.RGBA;n var type = gl.UNSIGNED_BYTE;n gl.bindTexture(gl.TEXTURE_2D, texture);n if (opt_data) {n gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, format, type, opt_data);n }n else {n gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, size, size, border, format, type, null);n }n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);n return texture;n };n return WebGLHelper;n}(Disposable));n/**n * Compute a stride in bytes based on a list of attributesn * @param {Array<AttributeDescription>} attributes Ordered list of attributesn * @returns {number} Stride, ie amount of values for each vertex in the vertex buffern * @apin */nexport function computeAttributesStride(attributes) {n var stride = 0;n for (var i = 0; i < attributes.length; i++) {n var attr = attributes;n stride += attr.size * getByteSizeFromType(attr.type);n }n return stride;n}n/**n * Computes the size in byte of an attribute type.n * @param {AttributeType} type Attribute typen * @returns {number} The size in bytesn */nfunction getByteSizeFromType(type) {n switch (type) {n case AttributeType.UNSIGNED_BYTE: return Uint8Array.BYTES_PER_ELEMENT;n case AttributeType.UNSIGNED_SHORT: return Uint16Array.BYTES_PER_ELEMENT;n case AttributeType.UNSIGNED_INT: return Uint32Array.BYTES_PER_ELEMENT;n case AttributeType.FLOAT:n default: return Float32Array.BYTES_PER_ELEMENT;n }n}nexport default WebGLHelper;n//# sourceMappingURL=Helper.js.map”,“/**n * A wrapper class to simplify rendering to a texture instead of the final canvasn * @module ol/webgl/RenderTargetn */nimport { equals } from '../array.js';n// for pixel color readingnvar tmpArray4 = new Uint8Array(4);n/**n * @classdescn * This class is a wrapper around the association of both a `WebGLTexture` and a `WebGLFramebuffer` instances,n * simplifying initialization and binding for rendering.n * @apin */nvar WebGLRenderTarget = /** @class */ (function () {n /**n * @param {import("./Helper.js").default} helper WebGL helper; mandatory.n * @param {Array<number>} [opt_size] Expected size of the render target texture; note: this can be changed later on.n */n function WebGLRenderTarget(helper, opt_size) {n /**n * @privaten * @type {import("./Helper.js").default}n */n this.helper_ = helper;n var gl = helper.getGL();n /**n * @privaten * @type {WebGLTexture}n */n this.texture_ = gl.createTexture();n /**n * @privaten * @type {WebGLFramebuffer}n */n this.framebuffer_ = gl.createFramebuffer();n /**n * @type {Array<number>}n * @privaten */n this.size_ = opt_size || [1, 1];n /**n * @type {Uint8Array}n * @privaten */n this.data_ = new Uint8Array(0);n /**n * @type {boolean}n * @privaten */n this.dataCacheDirty_ = true;n this.updateSize_();n }n /**n * Changes the size of the render target texture. Note: will do nothing if the sizen * is already the same.n * @param {Array<number>} size Expected size of the render target texturen * @apin */n WebGLRenderTarget.prototype.setSize = function (size) {n if (equals(size, this.size_)) {n return;n }n this.size_ = size;n this.size_ = size;n this.updateSize_();n };n /**n * Returns the size of the render target texturen * @return {Array<number>} Size of the render target texturen * @apin */n WebGLRenderTarget.prototype.getSize = function () {n return this.size_;n };n /**n * This will cause following calls to `#readAll` or `#readPixel` to download the content of then * render target into memory, which is an expensive operation.n * This content will be kept in cache but should be cleared after each new render.n * @apin */n WebGLRenderTarget.prototype.clearCachedData = function () {n this.dataCacheDirty_ = true;n };n /**n * Returns the full content of the frame buffer as a series of r, g, b, a componentsn * in the 0-255 range (unsigned byte).n * @return {Uint8Array} Integer array of color valuesn * @apin */n WebGLRenderTarget.prototype.readAll = function () {n if (this.dataCacheDirty_) {n var size = this.size_;n var gl = this.helper_.getGL();n gl.bindFramebuffer(gl.FRAMEBUFFER, this.framebuffer_);n gl.readPixels(0, 0, size, size, gl.RGBA, gl.UNSIGNED_BYTE, this.data_);n this.dataCacheDirty_ = false;n }n return this.data_;n };n /**n * Reads one pixel of the frame buffer as an array of r, g, b, a componentsn * in the 0-255 range (unsigned byte).n * If x and/or y are outside of existing data, an array filled with 0 is returned.n * @param {number} x Pixel coordinaten * @param {number} y Pixel coordinaten * @returns {Uint8Array} Integer array with one color value (4 components)n * @apin */n WebGLRenderTarget.prototype.readPixel = function (x, y) {n if (x < 0 || y < 0 || x > this.size_ || y >= this.size_) {n tmpArray4 = 0;n tmpArray4 = 0;n tmpArray4 = 0;n tmpArray4 = 0;n return tmpArray4;n }n this.readAll();n var index = Math.floor(x) + (this.size_ - Math.floor(y) - 1) * this.size_;n tmpArray4 = this.data_[index * 4];n tmpArray4 = this.data_[index * 4 + 1];n tmpArray4 = this.data_[index * 4 + 2];n tmpArray4 = this.data_[index * 4 + 3];n return tmpArray4;n };n /**n * @return {WebGLTexture} Texture to render ton */n WebGLRenderTarget.prototype.getTexture = function () {n return this.texture_;n };n /**n * @return {WebGLFramebuffer} Frame buffer of the render targetn */n WebGLRenderTarget.prototype.getFramebuffer = function () {n return this.framebuffer_;n };n /**n * @privaten */n WebGLRenderTarget.prototype.updateSize_ = function () {n var size = this.size_;n var gl = this.helper_.getGL();n this.texture_ = this.helper_.createTexture(size, null, this.texture_);n gl.bindFramebuffer(gl.FRAMEBUFFER, this.framebuffer_);n gl.viewport(0, 0, size, size);n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.texture_, 0);n this.data_ = new Uint8Array(size * size * 4);n };n return WebGLRenderTarget;n}());nexport default WebGLRenderTarget;n//# sourceMappingURL=RenderTarget.js.map”,“/**n * @module ol/tilegrid/WMTSn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { find } from '../array.js';nimport { get as getProjection } from '../proj.js';nimport TileGrid from './TileGrid.js';n/**n * @typedef {Object} Optionsn * @property {import("../extent.js").Extent} [extent] Extent for the tile grid. No tilesn * outside this extent will be requested by {@link module:ol/source/Tile} sources.n * When no `origin` or `origins` are configured, the `origin` will be set to then * top-left corner of the extent.n * @property {import("../coordinate.js").Coordinate} [origin] The tile grid origin, i.e.n * where the `x` and `y` axes meet (`[z, 0, 0]`). Tile coordinates increase leftn * to right and upwards. If not specified, `extent` or `origins` must be provided.n * @property {Array<import("../coordinate.js").Coordinate>} [origins] Tile grid origins,n * i.e. where the `x` and `y` axes meet (`[z, 0, 0]`), for each zoom level. Ifn * given, the array length should match the length of the `resolutions` array, i.e.n * each resolution can have a different origin. Tile coordinates increase left ton * right and upwards. If not specified, `extent` or `origin` must be provided.n * @property {!Array<number>} resolutions Resolutions. The array index of eachn * resolution needs to match the zoom level. This means that even if a `minZoom`n * is configured, the resolutions array will have a length of `maxZoom + 1`n * @property {!Array<string>} matrixIds matrix IDs. The length of this array needsn * to match the length of the `resolutions` array.n * @property {Array<import("../size.js").Size>} [sizes] Number of tile rows and columnsn * of the grid for each zoom level. The values here are the `TileMatrixWidth` andn * `TileMatrixHeight` advertised in the GetCapabilities response of the WMTS, andn * define the grid's extent together with the `origin`.n * An `extent` can be configured in addition, and will further limit the extent forn * which tile requests are made by sources. If the bottom-left corner ofn * the `extent` is used as `origin` or `origins`, then the `y` value must ben * negative because OpenLayers tile coordinates use the top left as the origin.n * @property {number|import("../size.js").Size} [tileSize] Tile size.n * @property {Array<import("../size.js").Size>} [tileSizes] Tile sizes. The length ofn * this array needs to match the length of the `resolutions` array.n * @property {Array<number>} [widths] Number of tile columns that cover the grid'sn * extent for each zoom level. Only required when used with a source that has `wrapX`n * set to `true`, and only when the grid's origin differs from the one of then * projection's extent. The array length has to match the length of the `resolutions`n * array, i.e. each resolution will have a matching entry here.n */n/**n * @classdescn * Set the grid pattern for sources accessing WMTS tiled-image servers.n * @apin */nvar WMTSTileGrid = /** @class */ (function (_super) {n __extends(WMTSTileGrid, _super);n /**n * @param {Options} options WMTS options.n */n function WMTSTileGrid(options) {n var _this = _super.call(this, {n extent: options.extent,n origin: options.origin,n origins: options.origins,n resolutions: options.resolutions,n tileSize: options.tileSize,n tileSizes: options.tileSizes,n sizes: options.sizesn }) || this;n /**n * @privaten * @type {!Array<string>}n */n this.matrixIds = options.matrixIds;n return _this;n }n /**n * @param {number} z Z.n * @return {string} MatrixId..n */n WMTSTileGrid.prototype.getMatrixId = function (z) {n return this.matrixIds_;n };n /**n * Get the list of matrix identifiers.n * @return {Array<string>} MatrixIds.n * @apin */n WMTSTileGrid.prototype.getMatrixIds = function () {n return this.matrixIds_;n };n return WMTSTileGrid;n}(TileGrid));nexport default WMTSTileGrid;n/**n * Create a tile grid from a WMTS capabilities matrix set and ann * optional TileMatrixSetLimits.n * @param {Object} matrixSet An object representing a matrixSet in then * capabilities document.n * @param {import("../extent.js").Extent=} opt_extent An optional extent to restrict the tilen * ranges the server provides.n * @param {Array<Object>=} opt_matrixLimits An optional object representingn * the available matrices for tileGrid.n * @return {WMTSTileGrid} WMTS tileGrid instance.n * @apin */nexport function createFromCapabilitiesMatrixSet(matrixSet, opt_extent, opt_matrixLimits) {n /** @type {!Array<number>} */n var resolutions = [];n /** @type {!Array<string>} */n var matrixIds = [];n /** @type {!Array<import("../coordinate.js").Coordinate>} */n var origins = [];n /** @type {!Array<import("../size.js").Size>} */n var tileSizes = [];n /** @type {!Array<import("../size.js").Size>} */n var sizes = [];n var matrixLimits = opt_matrixLimits !== undefined ? opt_matrixLimits : [];n var supportedCRSPropName = 'SupportedCRS';n var matrixIdsPropName = 'TileMatrix';n var identifierPropName = 'Identifier';n var scaleDenominatorPropName = 'ScaleDenominator';n var topLeftCornerPropName = 'TopLeftCorner';n var tileWidthPropName = 'TileWidth';n var tileHeightPropName = 'TileHeight';n var code = matrixSet;n var projection = getProjection(code.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/, '$1:$3')) ||n getProjection(code);n var metersPerUnit = projection.getMetersPerUnit();n // swap origin x and y coordinates if axis orientation is lat/longn var switchOriginXY = projection.getAxisOrientation().substr(0, 2) == 'ne';n matrixSet.sort(function (a, b) {n return b - a;n });n matrixSet.forEach(function (elt) {n var matrixAvailable;n // use of matrixLimits to filter TileMatrices from GetCapabilitiesn // TileMatrixSet from unavailable matrix levels.n if (matrixLimits.length > 0) {n matrixAvailable = find(matrixLimits, function (elt_ml) {n if (elt == elt_ml) {n return true;n }n // Fallback for tileMatrix identifiers that don't get prefixedn // by their tileMatrixSet identifiers.n if (elt.indexOf(':') === -1) {n return matrixSet + ':' + elt === elt_ml;n }n return false;n });n }n else {n matrixAvailable = true;n }n if (matrixAvailable) {n matrixIds.push(elt);n var resolution = elt * 0.28E-3 / metersPerUnit;n var tileWidth = elt;n var tileHeight = elt;n if (switchOriginXY) {n origins.push([elt[1],n elt[0]]);n }n else {n origins.push(elt);n }n resolutions.push(resolution);n tileSizes.push(tileWidth == tileHeight ?n tileWidth : [tileWidth, tileHeight]);n sizes.push([elt, elt]);n }n });n return new WMTSTileGrid({n extent: opt_extent,n origins: origins,n resolutions: resolutions,n matrixIds: matrixIds,n tileSizes: tileSizes,n sizes: sizesn });n}n//# sourceMappingURL=WMTS.js.map”,“/**n * @module ol/style/Imagen */nimport { abstract } from '../util.js';n/**n * @typedef {Object} Optionsn * @property {number} opacityn * @property {boolean} rotateWithViewn * @property {number} rotationn * @property {number} scalen */n/**n * @classdescn * A base class used for creating subclasses and not instantiated inn * apps. Base class for {@link module:ol/style/Icon~Icon}, {@link module:ol/style/Circle~CircleStyle} andn * {@link module:ol/style/RegularShape~RegularShape}.n * @abstractn * @apin */nvar ImageStyle = /** @class */ (function () {n /**n * @param {Options} options Options.n */n function ImageStyle(options) {n /**n * @privaten * @type {number}n */n this.opacity_ = options.opacity;n /**n * @privaten * @type {boolean}n */n this.rotateWithView_ = options.rotateWithView;n /**n * @privaten * @type {number}n */n this.rotation_ = options.rotation;n /**n * @privaten * @type {number}n */n this.scale_ = options.scale;n }n /**n * Clones the style.n * @return {ImageStyle} The cloned style.n * @apin */n ImageStyle.prototype.clone = function () {n return new ImageStyle({n opacity: this.getOpacity(),n scale: this.getScale(),n rotation: this.getRotation(),n rotateWithView: this.getRotateWithView()n });n };n /**n * Get the symbolizer opacity.n * @return {number} Opacity.n * @apin */n ImageStyle.prototype.getOpacity = function () {n return this.opacity_;n };n /**n * Determine whether the symbolizer rotates with the map.n * @return {boolean} Rotate with map.n * @apin */n ImageStyle.prototype.getRotateWithView = function () {n return this.rotateWithView_;n };n /**n * Get the symoblizer rotation.n * @return {number} Rotation.n * @apin */n ImageStyle.prototype.getRotation = function () {n return this.rotation_;n };n /**n * Get the symbolizer scale.n * @return {number} Scale.n * @apin */n ImageStyle.prototype.getScale = function () {n return this.scale_;n };n /**n * Get the anchor point in pixels. The anchor determines the center point for then * symbolizer.n * @abstractn * @return {Array<number>} Anchor.n */n ImageStyle.prototype.getAnchor = function () {n return abstract();n };n /**n * Get the image element for the symbolizer.n * @abstractn * @param {number} pixelRatio Pixel ratio.n * @return {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement} Image element.n */n ImageStyle.prototype.getImage = function (pixelRatio) {n return abstract();n };n /**n * @abstractn * @param {number} pixelRatio Pixel ratio.n * @return {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement} Image element.n */n ImageStyle.prototype.getHitDetectionImage = function (pixelRatio) {n return abstract();n };n /**n * @abstractn * @return {import("../ImageState.js").default} Image state.n */n ImageStyle.prototype.getImageState = function () {n return abstract();n };n /**n * @abstractn * @return {import("../size.js").Size} Image size.n */n ImageStyle.prototype.getImageSize = function () {n return abstract();n };n /**n * @abstractn * @return {import("../size.js").Size} Size of the hit-detection image.n */n ImageStyle.prototype.getHitDetectionImageSize = function () {n return abstract();n };n /**n * Get the origin of the symbolizer.n * @abstractn * @return {Array<number>} Origin.n */n ImageStyle.prototype.getOrigin = function () {n return abstract();n };n /**n * Get the size of the symbolizer (in pixels).n * @abstractn * @return {import("../size.js").Size} Size.n */n ImageStyle.prototype.getSize = function () {n return abstract();n };n /**n * Set the opacity.n *n * @param {number} opacity Opacity.n * @apin */n ImageStyle.prototype.setOpacity = function (opacity) {n this.opacity_ = opacity;n };n /**n * Set whether to rotate the style with the view.n *n * @param {boolean} rotateWithView Rotate with map.n * @apin */n ImageStyle.prototype.setRotateWithView = function (rotateWithView) {n this.rotateWithView_ = rotateWithView;n };n /**n * Set the rotation.n *n * @param {number} rotation Rotation.n * @apin */n ImageStyle.prototype.setRotation = function (rotation) {n this.rotation_ = rotation;n };n /**n * Set the scale.n *n * @param {number} scale Scale.n * @apin */n ImageStyle.prototype.setScale = function (scale) {n this.scale_ = scale;n };n /**n * @abstractn * @param {function(import("../events/Event.js").default): void} listener Listener function.n * @template Tn */n ImageStyle.prototype.listenImageChange = function (listener) {n abstract();n };n /**n * Load not yet loaded URI.n * @abstractn */n ImageStyle.prototype.load = function () {n abstract();n };n /**n * @abstractn * @param {function(import("../events/Event.js").default): void} listener Listener function.n * @template Tn */n ImageStyle.prototype.unlistenImageChange = function (listener) {n abstract();n };n return ImageStyle;n}());nexport default ImageStyle;n//# sourceMappingURL=Image.js.map”,“/**n * @module ol/style/RegularShapen */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { asArray } from '../color.js';nimport { asColorLike } from '../colorlike.js';nimport { createCanvasContext2D } from '../dom.js';nimport ImageState from '../ImageState.js';nimport { defaultStrokeStyle, defaultFillStyle, defaultLineCap, defaultLineWidth, defaultLineJoin, defaultMiterLimit } from '../render/canvas.js';nimport ImageStyle from './Image.js';n/**n * Specify radius for regular polygons, or radius1 and radius2 for stars.n * @typedef {Object} Optionsn * @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 pointsn * is the number of sides.n * @property {number} [radius] Radius of a regular polygon.n * @property {number} [radius1] Outer radius of a star.n * @property {number} [radius2] Inner 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 {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 */n/**n * @typedef {Object} RenderOptionsn * @property {import("../colorlike.js").ColorLike} [strokeStyle]n * @property {number} strokeWidthn * @property {number} sizen * @property {CanvasLineCap} lineCapn * @property {Array<number>} lineDashn * @property {number} lineDashOffsetn * @property {CanvasLineJoin} lineJoinn * @property {number} miterLimitn */n/**n * @classdescn * Set regular shape style for vector features. The resulting shape will ben * a regular polygon when `radius` is provided, or a star when `radius1` andn * `radius2` are provided.n * @apin */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 ?n options.rotateWithView : false;n _this = _super.call(this, {n opacity: 1,n rotateWithView: rotateWithView,n rotation: options.rotation !== undefined ? options.rotation : 0,n scale: 1n }) || this;n /**n * @privaten * @type {HTMLCanvasElement}n */n this.canvas = null;n /**n * @privaten * @type {HTMLCanvasElement}n */n this.hitDetectionCanvas = null;n /**n * @privaten * @type {import("./Fill.js").default}n */n this.fill = options.fill !== undefined ? options.fill : null;n /**n * @privaten * @type {Array<number>}n */n this.origin = [0, 0];n /**n * @privaten * @type {number}n */n this.points = options.points;n /**n * @protectedn * @type {number}n */n this.radius = options.radius !== undefined ? options.radius : options.radius1;n /**n * @privaten * @type {number|undefined}n */n this.radius2 = options.radius2;n /**n * @privaten * @type {number}n */n this.angle = options.angle !== undefined ? options.angle : 0;n /**n * @privaten * @type {import("./Stroke.js").default}n */n this.stroke = options.stroke !== undefined ? options.stroke : null;n /**n * @privaten * @type {Array<number>}n */n this.anchor = null;n /**n * @privaten * @type {import("../size.js").Size}n */n this.size = null;n /**n * @privaten * @type {import("../size.js").Size}n */n this.imageSize = null;n /**n * @privaten * @type {import("../size.js").Size}n */n this.hitDetectionImageSize = null;n _this.render();n return _this;n }n /**n * Clones the style.n * @return {RegularShape} The cloned style.n * @apin */n RegularShape.prototype.clone = function () {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 });n style.setOpacity(this.getOpacity());n style.setScale(this.getScale());n return style;n };n /**n * @inheritDocn * @apin */n RegularShape.prototype.getAnchor = function () {n return this.anchor_;n };n /**n * Get the angle used in generating the shape.n * @return {number} Shape's rotation in radians.n * @apin */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 * @apin */n RegularShape.prototype.getFill = function () {n return this.fill_;n };n /**n * @inheritDocn */n RegularShape.prototype.getHitDetectionImage = function (pixelRatio) {n return this.hitDetectionCanvas_;n };n /**n * @inheritDocn * @apin */n RegularShape.prototype.getImage = function (pixelRatio) {n return this.canvas_;n };n /**n * @inheritDocn */n RegularShape.prototype.getImageSize = function () {n return this.imageSize_;n };n /**n * @inheritDocn */n RegularShape.prototype.getHitDetectionImageSize = function () {n return this.hitDetectionImageSize_;n };n /**n * @inheritDocn */n RegularShape.prototype.getImageState = function () {n return ImageState.LOADED;n };n /**n * @inheritDocn * @apin */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 * @apin */n RegularShape.prototype.getPoints = function () {n return this.points_;n };n /**n * Get the (primary) radius for the shape.n * @return {number} Radius.n * @apin */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 * @apin */n RegularShape.prototype.getRadius2 = function () {n return this.radius2_;n };n /**n * @inheritDocn * @apin */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 * @apin */n RegularShape.prototype.getStroke = function () {n return this.stroke_;n };n /**n * @inheritDocn */n RegularShape.prototype.listenImageChange = function (listener) { };n /**n * @inheritDocn */n RegularShape.prototype.load = function () { };n /**n * @inheritDocn */n RegularShape.prototype.unlistenImageChange = function (listener) { };n /**n * @protectedn */n RegularShape.prototype.render = function () {n var lineCap = defaultLineCap;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 lineCap = this.stroke_.getLineCap();n if (lineCap === undefined) {n lineCap = defaultLineCap;n }n miterLimit = this.stroke_.getMiterLimit();n if (miterLimit === undefined) {n miterLimit = defaultMiterLimit;n }n }n var size = 2 * (this.radius_ + strokeWidth) + 1;n var renderOptions = {n strokeStyle: strokeStyle,n strokeWidth: strokeWidth,n size: size,n lineCap: lineCap,n lineDash: lineDash,n lineDashOffset: lineDashOffset,n lineJoin: lineJoin,n miterLimit: miterLimitn };n var context = createCanvasContext2D(size, size);n this.canvas_ = context.canvas;n // canvas.width and height are rounded to the closest integern size = this.canvas_.width;n var imageSize = size;n this.draw_(renderOptions, context, 0, 0);n this.createHitDetectionCanvas_(renderOptions);n this.anchor_ = [size / 2, size / 2];n this.size_ = [size, size];n this.imageSize_ = [imageSize, imageSize];n };n /**n * @privaten * @param {RenderOptions} renderOptions Render options.n * @param {CanvasRenderingContext2D} context The rendering context.n * @param {number} x The origin for the symbol (x).n * @param {number} y The origin for the symbol (y).n */n RegularShape.prototype.draw_ = function (renderOptions, context, x, y) {n var i, angle0, radiusC;n // reset transformn context.setTransform(1, 0, 0, 1, 0, 0);n // then move to (x, y)n context.translate(x, y);n context.beginPath();n var points = this.points_;n if (points === Infinity) {n context.arc(renderOptions.size / 2, renderOptions.size / 2, this.radius_, 0, 2 * Math.PI, true);n }n else {n var radius2 = (this.radius2_ !== undefined) ? this.radius2_n : this.radius_;n if (radius2 !== this.radius_) {n points = 2 * points;n }n for (i = 0; i <= points; i++) {n angle0 = i * 2 * Math.PI / points - Math.PI / 2 + this.angle_;n radiusC = i % 2 === 0 ? this.radius_ : radius2;n context.lineTo(renderOptions.size / 2 + radiusC * Math.cos(angle0), renderOptions.size / 2 + radiusC * Math.sin(angle0));n }n }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.lineCap = renderOptions.lineCap;n context.lineJoin = renderOptions.lineJoin;n context.miterLimit = renderOptions.miterLimit;n context.stroke();n }n context.closePath();n };n /**n * @privaten * @param {RenderOptions} renderOptions Render options.n */n RegularShape.prototype.createHitDetectionCanvas_ = function (renderOptions) {n this.hitDetectionImageSize_ = [renderOptions.size, renderOptions.size];n this.hitDetectionCanvas_ = this.canvas_;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 : 1;n }n if (opacity === 0) {n // if a transparent fill style is set, create an extra hit-detection imagen // with a default fill stylen var context = createCanvasContext2D(renderOptions.size, renderOptions.size);n this.hitDetectionCanvas_ = context.canvas;n this.drawHitDetectionCanvas_(renderOptions, context, 0, 0);n }n }n };n /**n * @privaten * @param {RenderOptions} renderOptions Render options.n * @param {CanvasRenderingContext2D} context The context.n * @param {number} x The origin for the symbol (x).n * @param {number} y The origin for the symbol (y).n */n RegularShape.prototype.drawHitDetectionCanvas_ = function (renderOptions, context, x, y) {n // reset transformn context.setTransform(1, 0, 0, 1, 0, 0);n // then move to (x, y)n context.translate(x, y);n context.beginPath();n var points = this.points_;n if (points === Infinity) {n context.arc(renderOptions.size / 2, renderOptions.size / 2, this.radius_, 0, 2 * Math.PI, true);n }n else {n var radius2 = (this.radius2_ !== undefined) ? this.radius2_n : this.radius_;n if (radius2 !== this.radius_) {n points = 2 * points;n }n var i = void 0, radiusC = void 0, angle0 = void 0;n for (i = 0; i <= points; i++) {n angle0 = i * 2 * Math.PI / points - Math.PI / 2 + this.angle_;n radiusC = i % 2 === 0 ? this.radius_ : radius2;n context.lineTo(renderOptions.size / 2 + radiusC * Math.cos(angle0), renderOptions.size / 2 + radiusC * Math.sin(angle0));n }n }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.stroke();n }n context.closePath();n };n return RegularShape;n}(ImageStyle));nexport default RegularShape;n//# sourceMappingURL=RegularShape.js.map”,“/**n * @module ol/style/Circlen */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport RegularShape from './RegularShape.js';n/**n * @typedef {Object} Optionsn * @property {import("./Fill.js").default} [fill] Fill style.n * @property {number} radius Circle radius.n * @property {import("./Stroke.js").default} [stroke] Stroke style.n */n/**n * @classdescn * Set circle style for vector features.n * @apin */nvar CircleStyle = /** @class */ (function (_super) {n __extends(CircleStyle, _super);n /**n * @param {Options=} opt_options Options.n */n function CircleStyle(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n _this = _super.call(this, {n points: Infinity,n fill: options.fill,n radius: options.radius,n stroke: options.stroken }) || this;n return _this;n }n /**n * Clones the style.n * @return {CircleStyle} The cloned style.n * @overriden * @apin */n CircleStyle.prototype.clone = function () {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 });n style.setOpacity(this.getOpacity());n style.setScale(this.getScale());n return style;n };n /**n * Set the circle radius.n *n * @param {number} radius Circle radius.n * @apin */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/Filln */n/**n * @typedef {Object} Optionsn * @property {import("../color.js").Color|import("../colorlike.js").ColorLike} [color=null] A color, gradient or pattern.n * See {@link module:ol/color~Color} and {@link module:ol/colorlike~ColorLike} for possible formats.n * Default null; if null, the Canvas/renderer default black will be used.n */n/**n * @classdescn * Set fill style for vector features.n * @apin */nvar Fill = /** @class */ (function () {n /**n * @param {Options=} opt_options Options.n */n function Fill(opt_options) {n var options = opt_options || {};n /**n * @privaten * @type {import("../color.js").Color|import("../colorlike.js").ColorLike}n */n this.color_ = options.color !== undefined ? options.color : null;n }n /**n * Clones the style. The color is not cloned if it is an {@link module:ol/colorlike~ColorLike}.n * @return {Fill} The cloned style.n * @apin */n Fill.prototype.clone = function () {n var color = this.getColor();n return new Fill({n color: Array.isArray(color) ? color.slice() : color || undefinedn });n };n /**n * Get the fill color.n * @return {import("../color.js").Color|import("../colorlike.js").ColorLike} Color.n * @apin */n Fill.prototype.getColor = function () {n return this.color_;n };n /**n * Set the color.n *n * @param {import("../color.js").Color|import("../colorlike.js").ColorLike} color Color.n * @apin */n Fill.prototype.setColor = function (color) {n this.color_ = color;n };n return Fill;n}());nexport default Fill;n//# sourceMappingURL=Fill.js.map”,“/**n * @module ol/style/IconAnchorUnitsn */n/**n * Icon anchor units. One of 'fraction', 'pixels'.n * @enum {string}n */nexport default {n FRACTION: 'fraction',n PIXELS: 'pixels'n};n//# sourceMappingURL=IconAnchorUnits.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/ImageBasen */nimport { abstract } from './util.js';nimport EventTarget from './events/Target.js';nimport EventType from './events/EventType.js';n/**n * @abstractn */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 * @protectedn * @type {import("./extent.js").Extent}n */n _this.extent = extent;n /**n * @privaten * @type {number}n */n this.pixelRatio = pixelRatio;n /**n * @protectedn * @type {number|undefined}n */n _this.resolution = resolution;n /**n * @protectedn * @type {import("./ImageState.js").default}n */n _this.state = state;n return _this;n }n /**n * @protectedn */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 * @abstractn * @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 * @abstractn */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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/Imagen */nimport ImageBase from './ImageBase.js';nimport ImageState from './ImageState.js';nimport { listenOnce, unlistenByKey } from './events.js';nimport EventType from './events/EventType.js';nimport { getHeight } from './extent.js';nimport { IMAGE_DECODE } from './has.js';n/**n * A function that takes an {@link module:ol/Image~Image} for the image and an * `{string}` for the src as arguments. It is supposed to make it so then * underlying image {@link module:ol/Image~Image#getImage} is assigned then * content specified by the src. If not specified, the default isn *n * function(image, src) {n * image.getImage().src = src;n * }n *n * Providing a custom `imageLoadFunction` can be useful to load images withn * post requests or - in general - through XHR requests, where the src of then * image element would be set to a data URI when the content is loaded.n *n * @typedef {function(ImageWrapper, string): void} LoadFunctionn * @apin */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 * @privaten * @type {string}n */n this.src = src;n /**n * @privaten * @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement}n */n this.image = new Image();n if (crossOrigin !== null) {n this.image.crossOrigin = crossOrigin;n }n /**n * @privaten * @type {?function():void}n */n this.unlisten = null;n /**n * @protectedn * @type {ImageState}n */n _this.state = ImageState.IDLE;n /**n * @privaten * @type {LoadFunction}n */n this.imageLoadFunction = imageLoadFunction;n return _this;n }n /**n * @inheritDocn * @apin */n ImageWrapper.prototype.getImage = function () {n return this.image_;n };n /**n * Tracks loading or read errors.n *n * @privaten */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 * @privaten */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 isn * only needed for preloading or for reloading in case of an error.n * @overriden * @apin */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 };n /**n * Discards event handlers which listen for load completion or errors.n *n * @privaten */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 if (img.src && IMAGE_DECODE) {n var promise = img.decode();n var listening_1 = true;n var unlisten = function () {n listening_1 = false;n };n promise.then(function () {n if (listening_1) {n loadHandler();n }n }).catch(function (error) {n if (listening_1) {n // FIXME: Unconditionally call errorHandler() when this bug is fixed upstream:n // bugs.webkit.org/show_bug.cgi?id=198527n if (error.name === 'EncodingError' && error.message === 'Invalid image type.') {n loadHandler();n }n else {n errorHandler();n }n }n });n return unlisten;n }n var listenerKeys = [n listenOnce(img, EventType.LOAD, loadHandler),n listenOnce(img, EventType.ERROR, errorHandler)n ];n return function unlisten() {n listenerKeys.forEach(unlistenByKey);n };n}nexport default ImageWrapper;n//# sourceMappingURL=Image.js.map”,“/**n * @module ol/style/IconImagen */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { createCanvasContext2D } from '../dom.js';nimport EventTarget from '../events/Target.js';nimport EventType from '../events/EventType.js';nimport ImageState from '../ImageState.js';nimport { shared as iconImageCache } from './IconImageCache.js';nimport { listenImage } from '../Image.js';nvar IconImage = /** @class */ (function (_super) {n __extends(IconImage, _super);n /**n * @param {HTMLImageElement|HTMLCanvasElement} image Image.n * @param {string|undefined} src Src.n * @param {import("../size.js").Size} size Size.n * @param {?string} crossOrigin Cross origin.n * @param {import("../ImageState.js").default} imageState Image state.n * @param {import("../color.js").Color} color Color.n */n function IconImage(image, src, size, crossOrigin, imageState, color) {n var _this = _super.call(this) || this;n /**n * @privaten * @type {HTMLImageElement|HTMLCanvasElement}n */n this.hitDetectionImage = null;n /**n * @privaten * @type {HTMLImageElement|HTMLCanvasElement}n */n this.image = !image ? new Image() : image;n if (crossOrigin !== null) {n /** @type {HTMLImageElement} */ (this.image).crossOrigin = crossOrigin;n }n /**n * @privaten * @type {HTMLCanvasElement}n */n this.canvas = color ? document.createElement('canvas') : null;n /**n * @privaten * @type {import("../color.js").Color}n */n this.color = color;n /**n * @privaten * @type {?function():void}n */n this.unlisten = null;n /**n * @privaten * @type {import("../ImageState.js").default}n */n this.imageState = imageState;n /**n * @privaten * @type {import("../size.js").Size}n */n this.size = size;n /**n * @privaten * @type {string|undefined}n */n this.src = src;n /**n * @privaten * @type {boolean|undefined}n */n this.tainted;n return _this;n }n /**n * @privaten * @return {boolean} The image canvas is tainted.n */n IconImage.prototype.isTainted_ = function () {n if (this.tainted_ === undefined && this.imageState_ === ImageState.LOADED) {n this.tainted_ = false;n var context = createCanvasContext2D(1, 1);n try {n context.drawImage(this.image_, 0, 0);n context.getImageData(0, 0, 1, 1);n }n catch (e) {n this.tainted_ = true;n }n }n return this.tainted_ === true;n };n /**n * @privaten */n IconImage.prototype.dispatchChangeEvent_ = function () {n this.dispatchEvent(EventType.CHANGE);n };n /**n * @privaten */n IconImage.prototype.handleImageError_ = function () {n this.imageState_ = ImageState.ERROR;n this.unlistenImage_();n this.dispatchChangeEvent_();n };n /**n * @privaten */n IconImage.prototype.handleImageLoad_ = function () {n this.imageState_ = ImageState.LOADED;n if (this.size_) {n this.image_.width = this.size_;n this.image_.height = this.size_;n }n this.size_ = [this.image_.width, this.image_.height];n this.unlistenImage_();n this.replaceColor_();n this.dispatchChangeEvent_();n };n /**n * @param {number} pixelRatio Pixel ratio.n * @return {HTMLImageElement|HTMLCanvasElement} Image or Canvas element.n */n IconImage.prototype.getImage = function (pixelRatio) {n return this.canvas_ ? this.canvas_ : this.image_;n };n /**n * @return {import("../ImageState.js").default} Image state.n */n IconImage.prototype.getImageState = function () {n return this.imageState_;n };n /**n * @param {number} pixelRatio Pixel ratio.n * @return {HTMLImageElement|HTMLCanvasElement} Image element.n */n IconImage.prototype.getHitDetectionImage = function (pixelRatio) {n if (!this.hitDetectionImage_) {n if (this.isTainted_()) {n var width = this.size_;n var height = this.size_;n var context = createCanvasContext2D(width, height);n context.fillRect(0, 0, width, height);n this.hitDetectionImage_ = context.canvas;n }n else {n this.hitDetectionImage_ = this.image_;n }n }n return this.hitDetectionImage_;n };n /**n * @return {import("../size.js").Size} Image size.n */n IconImage.prototype.getSize = function () {n return this.size_;n };n /**n * @return {string|undefined} Image src.n */n IconImage.prototype.getSrc = function () {n return this.src_;n };n /**n * Load not yet loaded URI.n */n IconImage.prototype.load = function () {n if (this.imageState_ == ImageState.IDLE) {n this.imageState_ = ImageState.LOADING;n try {n /** @type {HTMLImageElement} */ (this.image_).src = this.src_;n }n catch (e) {n this.handleImageError_();n }n this.unlisten_ = listenImage(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this));n }n };n /**n * @privaten */n IconImage.prototype.replaceColor_ = function () {n if (!this.color_ || this.isTainted_()) {n return;n }n this.canvas_.width = this.image_.width;n this.canvas_.height = this.image_.height;n var ctx = this.canvas_.getContext('2d');n ctx.drawImage(this.image_, 0, 0);n var imgData = ctx.getImageData(0, 0, this.image_.width, this.image_.height);n var data = imgData.data;n var r = this.color_ / 255.0;n var g = this.color_ / 255.0;n var b = this.color_ / 255.0;n for (var i = 0, ii = data.length; i < ii; i += 4) {n data *= r;n data[i + 1] *= g;n data[i + 2] *= b;n }n ctx.putImageData(imgData, 0, 0);n };n /**n * Discards event handlers which listen for load completion or errors.n *n * @privaten */n IconImage.prototype.unlistenImage_ = function () {n if (this.unlisten_) {n this.unlisten_();n this.unlisten_ = null;n }n };n return IconImage;n}(EventTarget));n/**n * @param {HTMLImageElement|HTMLCanvasElement} image Image.n * @param {string} src Src.n * @param {import("../size.js").Size} size Size.n * @param {?string} crossOrigin Cross origin.n * @param {import("../ImageState.js").default} imageState Image state.n * @param {import("../color.js").Color} color Color.n * @return {IconImage} Icon image.n */nexport function get(image, src, size, crossOrigin, imageState, color) {n var iconImage = iconImageCache.get(src, crossOrigin, color);n if (!iconImage) {n iconImage = new IconImage(image, src, size, crossOrigin, imageState, color);n iconImageCache.set(src, crossOrigin, color, iconImage);n }n return iconImage;n}nexport default IconImage;n//# sourceMappingURL=IconImage.js.map”,“/**n * @module ol/style/IconOriginn */n/**n * Icon origin. One of 'bottom-left', 'bottom-right', 'top-left', 'top-right'.n * @enum {string}n */nexport default {n BOTTOM_LEFT: 'bottom-left',n BOTTOM_RIGHT: 'bottom-right',n TOP_LEFT: 'top-left',n TOP_RIGHT: 'top-right'n};n//# sourceMappingURL=IconOrigin.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/style/Iconn */nimport { getUid } from '../util.js';nimport ImageState from '../ImageState.js';nimport { assert } from '../asserts.js';nimport { asArray } from '../color.js';nimport EventType from '../events/EventType.js';nimport IconAnchorUnits from './IconAnchorUnits.js';nimport { get as getIconImage } from './IconImage.js';nimport IconOrigin from './IconOrigin.js';nimport ImageStyle from './Image.js';n/**n * @typedef {Object} Optionsn * @property {Array<number>} [anchor=[0.5, 0.5]] Anchor. Default value is the icon center.n * @property {import("./IconOrigin.js").default} [anchorOrigin='top-left'] Origin of the anchor: `bottom-left`, `bottom-right`,n * `top-left` or `top-right`.n * @property {import("./IconAnchorUnits.js").default} [anchorXUnits='fraction'] Units in which the anchor x value isn * specified. A value of `'fraction'` indicates the x value is a fraction of the icon. A value of `'pixels'` indicatesn * the x value in pixels.n * @property {import("./IconAnchorUnits.js").default} [anchorYUnits='fraction'] Units in which the anchor y value isn * specified. A value of `'fraction'` indicates the y value is a fraction of the icon. A value of `'pixels'` indicatesn * the y value in pixels.n * @property {import("../color.js").Color|string} [color] Color to tint the icon. If not specified,n * the icon will be left as is.n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note that you must provide an * `crossOrigin` value if you want to access pixel data with the Canvas renderer.n * See developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.n * @property {HTMLImageElement|HTMLCanvasElement} [img] Image object for the icon. If the `src` option is not provided then then * provided image must already be loaded. And in that case, it is requiredn * to provide the size of the image, with the `imgSize` option.n * @property {Array<number>} [offset=[0, 0]] Offset, which, together with the size and the offset origin, define then * sub-rectangle to use from the original icon image.n * @property {import("./IconOrigin.js").default} [offsetOrigin='top-left'] Origin of the offset: `bottom-left`, `bottom-right`,n * `top-left` or `top-right`.n * @property {number} [opacity=1] Opacity of the icon.n * @property {number} [scale=1] Scale.n * @property {boolean} [rotateWithView=false] Whether to rotate the icon with the view.n * @property {number} [rotation=0] Rotation in radians (positive rotation clockwise).n * @property {import("../size.js").Size} [size] Icon size in pixel. Can be used together with `offset` to define then * sub-rectangle to use from the origin (sprite) icon image.n * @property {import("../size.js").Size} [imgSize] Image size in pixels. Only required if `img` is set and `src` is not, andn * for SVG images in Internet Explorer 11. The provided `imgSize` needs to match the actual size of the image.n * @property {string} [src] Image source URI.n */n/**n * @classdescn * Set icon style for vector features.n * @apin */nvar Icon = /** @class */ (function (_super) {n __extends(Icon, _super);n /**n * @param {Options=} opt_options Options.n */n function Icon(opt_options) {n var _this = this;n var options = opt_options || {};n /**n * @type {number}n */n var opacity = options.opacity !== undefined ? options.opacity : 1;n /**n * @type {number}n */n var rotation = options.rotation !== undefined ? options.rotation : 0;n /**n * @type {number}n */n var scale = options.scale !== undefined ? options.scale : 1;n /**n * @type {boolean}n */n var rotateWithView = options.rotateWithView !== undefined ?n options.rotateWithView : false;n _this = _super.call(this, {n opacity: opacity,n rotation: rotation,n scale: scale,n rotateWithView: rotateWithViewn }) || this;n /**n * @privaten * @type {Array<number>}n */n this.anchor = options.anchor !== undefined ? options.anchor : [0.5, 0.5];n /**n * @privaten * @type {Array<number>}n */n this.normalizedAnchor = null;n /**n * @privaten * @type {import("./IconOrigin.js").default}n */n this.anchorOrigin = options.anchorOrigin !== undefined ?n options.anchorOrigin : IconOrigin.TOP_LEFT;n /**n * @privaten * @type {import("./IconAnchorUnits.js").default}n */n this.anchorXUnits = options.anchorXUnits !== undefined ?n options.anchorXUnits : IconAnchorUnits.FRACTION;n /**n * @privaten * @type {import("./IconAnchorUnits.js").default}n */n this.anchorYUnits = options.anchorYUnits !== undefined ?n options.anchorYUnits : IconAnchorUnits.FRACTION;n /**n * @privaten * @type {?string}n */n this.crossOrigin =n options.crossOrigin !== undefined ? options.crossOrigin : null;n /**n * @type {HTMLImageElement|HTMLCanvasElement}n */n var image = options.img !== undefined ? options.img : null;n /**n * @type {import("../size.js").Size}n */n var imgSize = options.imgSize !== undefined ? options.imgSize : null;n /**n * @type {string|undefined}n */n var src = options.src;n assert(!(src !== undefined && image), 4); // `image` and `src` cannot be provided at the same timen assert(!image || (image && imgSize), 5); // `imgSize` must be set when `image` is providedn if ((src === undefined || src.length === 0) && image) {n src = /** @type {HTMLImageElement} */ (image).src || getUid(image);n }n assert(src !== undefined && src.length > 0, 6); // A defined and non-empty `src` or `image` must be providedn /**n * @type {import("../ImageState.js").default}n */n var imageState = options.src !== undefined ?n ImageState.IDLE : ImageState.LOADED;n /**n * @privaten * @type {import("../color.js").Color}n */n this.color = options.color !== undefined ? asArray(options.color) : null;n /**n * @privaten * @type {import("./IconImage.js").default}n */n this.iconImage = getIconImage(image, /** @type {string} */ (src), imgSize, this.crossOrigin, imageState, this.color);n /**n * @privaten * @type {Array<number>}n */n this.offset = options.offset !== undefined ? options.offset : [0, 0];n /**n * @privaten * @type {import("./IconOrigin.js").default}n */n this.offsetOrigin = options.offsetOrigin !== undefined ?n options.offsetOrigin : IconOrigin.TOP_LEFT;n /**n * @privaten * @type {Array<number>}n */n this.origin = null;n /**n * @privaten * @type {import("../size.js").Size}n */n this.size = options.size !== undefined ? options.size : null;n return _this;n }n /**n * Clones the style. The underlying Image/HTMLCanvasElement is not cloned.n * @return {Icon} The cloned style.n * @apin */n Icon.prototype.clone = function () {n return new Icon({n anchor: this.anchor_.slice(),n anchorOrigin: this.anchorOrigin_,n anchorXUnits: this.anchorXUnits_,n anchorYUnits: this.anchorYUnits_,n crossOrigin: this.crossOrigin_,n color: (this.color_ && this.color_.slice) ? this.color_.slice() : this.color_ || undefined,n src: this.getSrc(),n offset: this.offset_.slice(),n offsetOrigin: this.offsetOrigin_,n size: this.size_ !== null ? this.size_.slice() : undefined,n opacity: this.getOpacity(),n scale: this.getScale(),n rotation: this.getRotation(),n rotateWithView: this.getRotateWithView()n });n };n /**n * @inheritDocn * @apin */n Icon.prototype.getAnchor = function () {n if (this.normalizedAnchor_) {n return this.normalizedAnchor_;n }n var anchor = this.anchor_;n var size = this.getSize();n if (this.anchorXUnits_ == IconAnchorUnits.FRACTION ||n this.anchorYUnits_ == IconAnchorUnits.FRACTION) {n if (!size) {n return null;n }n anchor = this.anchor_.slice();n if (this.anchorXUnits_ == IconAnchorUnits.FRACTION) {n anchor *= size;n }n if (this.anchorYUnits_ == IconAnchorUnits.FRACTION) {n anchor *= size;n }n }n if (this.anchorOrigin_ != IconOrigin.TOP_LEFT) {n if (!size) {n return null;n }n if (anchor === this.anchor_) {n anchor = this.anchor_.slice();n }n if (this.anchorOrigin_ == IconOrigin.TOP_RIGHT ||n this.anchorOrigin_ == IconOrigin.BOTTOM_RIGHT) {n anchor = -anchor + size;n }n if (this.anchorOrigin_ == IconOrigin.BOTTOM_LEFT ||n this.anchorOrigin_ == IconOrigin.BOTTOM_RIGHT) {n anchor = -anchor + size;n }n }n this.normalizedAnchor_ = anchor;n return this.normalizedAnchor_;n };n /**n * Set the anchor point. The anchor determines the center point for then * symbolizer.n *n * @param {Array<number>} anchor Anchor.n * @apin */n Icon.prototype.setAnchor = function (anchor) {n this.anchor_ = anchor;n this.normalizedAnchor_ = null;n };n /**n * Get the icon color.n * @return {import("../color.js").Color} Color.n * @apin */n Icon.prototype.getColor = function () {n return this.color_;n };n /**n * Get the image icon.n * @param {number} pixelRatio Pixel ratio.n * @return {HTMLImageElement|HTMLCanvasElement} Image or Canvas element.n * @overriden * @apin */n Icon.prototype.getImage = function (pixelRatio) {n return this.iconImage_.getImage(pixelRatio);n };n /**n * @overriden */n Icon.prototype.getImageSize = function () {n return this.iconImage_.getSize();n };n /**n * @overriden */n Icon.prototype.getHitDetectionImageSize = function () {n return this.getImageSize();n };n /**n * @overriden */n Icon.prototype.getImageState = function () {n return this.iconImage_.getImageState();n };n /**n * @overriden */n Icon.prototype.getHitDetectionImage = function (pixelRatio) {n return this.iconImage_.getHitDetectionImage(pixelRatio);n };n /**n * @inheritDocn * @apin */n Icon.prototype.getOrigin = function () {n if (this.origin_) {n return this.origin_;n }n var offset = this.offset_;n if (this.offsetOrigin_ != IconOrigin.TOP_LEFT) {n var size = this.getSize();n var iconImageSize = this.iconImage_.getSize();n if (!size || !iconImageSize) {n return null;n }n offset = offset.slice();n if (this.offsetOrigin_ == IconOrigin.TOP_RIGHT ||n this.offsetOrigin_ == IconOrigin.BOTTOM_RIGHT) {n offset = iconImageSize - size - offset;n }n if (this.offsetOrigin_ == IconOrigin.BOTTOM_LEFT ||n this.offsetOrigin_ == IconOrigin.BOTTOM_RIGHT) {n offset = iconImageSize - size - offset;n }n }n this.origin_ = offset;n return this.origin_;n };n /**n * Get the image URL.n * @return {string|undefined} Image src.n * @apin */n Icon.prototype.getSrc = function () {n return this.iconImage_.getSrc();n };n /**n * @inheritDocn * @apin */n Icon.prototype.getSize = function () {n return !this.size_ ? this.iconImage_.getSize() : this.size_;n };n /**n * @overriden */n Icon.prototype.listenImageChange = function (listener) {n this.iconImage_.addEventListener(EventType.CHANGE, listener);n };n /**n * Load not yet loaded URI.n * When rendering a feature with an icon style, the vector renderer willn * automatically call this method. However, you might want to call thisn * method yourself for preloading or other purposes.n * @overriden * @apin */n Icon.prototype.load = function () {n this.iconImage_.load();n };n /**n * @overriden */n Icon.prototype.unlistenImageChange = function (listener) {n this.iconImage_.removeEventListener(EventType.CHANGE, listener);n };n return Icon;n}(ImageStyle));nexport default Icon;n//# sourceMappingURL=Icon.js.map”,“/**n * @module ol/style/Stroken */n/**n * @typedef {Object} Optionsn * @property {import("../color.js").Color|import("../colorlike.js").ColorLike} [color] A color, gradient or pattern.n * See {@link module:ol/color~Color} and {@link module:ol/colorlike~ColorLike} for possible formats.n * Default null; if null, the Canvas/renderer default black will be used.n * @property {CanvasLineCap} [lineCap='round'] Line cap style: `butt`, `round`, or `square`.n * @property {CanvasLineJoin} [lineJoin='round'] Line join style: `bevel`, `round`, or `miter`.n * @property {Array<number>} [lineDash] Line dash pattern. Default is `undefined` (no dash).n * Please note that Internet Explorer 10 and lower do not support the `setLineDash` method onn * the `CanvasRenderingContext2D` and therefore this option will have no visual effect in these browsers.n * @property {number} [lineDashOffset=0] Line dash offset.n * @property {number} [miterLimit=10] Miter limit.n * @property {number} [width] Width.n */n/**n * @classdescn * Set stroke style for vector features.n * Note that the defaults given are the Canvas defaults, which will be used ifn * option is not defined. The `get` functions return whatever was entered inn * the options; they will not return the default.n * @apin */nvar Stroke = /** @class */ (function () {n /**n * @param {Options=} opt_options Options.n */n function Stroke(opt_options) {n var options = opt_options || {};n /**n * @privaten * @type {import("../color.js").Color|import("../colorlike.js").ColorLike}n */n this.color_ = options.color !== undefined ? options.color : null;n /**n * @privaten * @type {CanvasLineCap|undefined}n */n this.lineCap_ = options.lineCap;n /**n * @privaten * @type {Array<number>}n */n this.lineDash_ = options.lineDash !== undefined ? options.lineDash : null;n /**n * @privaten * @type {number|undefined}n */n this.lineDashOffset_ = options.lineDashOffset;n /**n * @privaten * @type {CanvasLineJoin|undefined}n */n this.lineJoin_ = options.lineJoin;n /**n * @privaten * @type {number|undefined}n */n this.miterLimit_ = options.miterLimit;n /**n * @privaten * @type {number|undefined}n */n this.width_ = options.width;n }n /**n * Clones the style.n * @return {Stroke} The cloned style.n * @apin */n Stroke.prototype.clone = function () {n var color = this.getColor();n return new Stroke({n color: Array.isArray(color) ? color.slice() : color || undefined,n lineCap: this.getLineCap(),n lineDash: this.getLineDash() ? this.getLineDash().slice() : undefined,n lineDashOffset: this.getLineDashOffset(),n lineJoin: this.getLineJoin(),n miterLimit: this.getMiterLimit(),n width: this.getWidth()n });n };n /**n * Get the stroke color.n * @return {import("../color.js").Color|import("../colorlike.js").ColorLike} Color.n * @apin */n Stroke.prototype.getColor = function () {n return this.color_;n };n /**n * Get the line cap type for the stroke.n * @return {CanvasLineCap|undefined} Line cap.n * @apin */n Stroke.prototype.getLineCap = function () {n return this.lineCap_;n };n /**n * Get the line dash style for the stroke.n * @return {Array<number>} Line dash.n * @apin */n Stroke.prototype.getLineDash = function () {n return this.lineDash_;n };n /**n * Get the line dash offset for the stroke.n * @return {number|undefined} Line dash offset.n * @apin */n Stroke.prototype.getLineDashOffset = function () {n return this.lineDashOffset_;n };n /**n * Get the line join type for the stroke.n * @return {CanvasLineJoin|undefined} Line join.n * @apin */n Stroke.prototype.getLineJoin = function () {n return this.lineJoin_;n };n /**n * Get the miter limit for the stroke.n * @return {number|undefined} Miter limit.n * @apin */n Stroke.prototype.getMiterLimit = function () {n return this.miterLimit_;n };n /**n * Get the stroke width.n * @return {number|undefined} Width.n * @apin */n Stroke.prototype.getWidth = function () {n return this.width_;n };n /**n * Set the color.n *n * @param {import("../color.js").Color|import("../colorlike.js").ColorLike} color Color.n * @apin */n Stroke.prototype.setColor = function (color) {n this.color_ = color;n };n /**n * Set the line cap.n *n * @param {CanvasLineCap|undefined} lineCap Line cap.n * @apin */n Stroke.prototype.setLineCap = function (lineCap) {n this.lineCap_ = lineCap;n };n /**n * Set the line dash.n *n * Please note that Internet Explorer 10 and lower [do not support] then * `setLineDash` method on the `CanvasRenderingContext2D` and therefore thisn * property will have no visual effect in these browsers.n *n * [mdn]: developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibilityn *n * @param {Array<number>} lineDash Line dash.n * @apin */n Stroke.prototype.setLineDash = function (lineDash) {n this.lineDash_ = lineDash;n };n /**n * Set the line dash offset.n *n * @param {number|undefined} lineDashOffset Line dash offset.n * @apin */n Stroke.prototype.setLineDashOffset = function (lineDashOffset) {n this.lineDashOffset_ = lineDashOffset;n };n /**n * Set the line join.n *n * @param {CanvasLineJoin|undefined} lineJoin Line join.n * @apin */n Stroke.prototype.setLineJoin = function (lineJoin) {n this.lineJoin_ = lineJoin;n };n /**n * Set the miter limit.n *n * @param {number|undefined} miterLimit Miter limit.n * @apin */n Stroke.prototype.setMiterLimit = function (miterLimit) {n this.miterLimit_ = miterLimit;n };n /**n * Set the width.n *n * @param {number|undefined} width Width.n * @apin */n Stroke.prototype.setWidth = function (width) {n this.width_ = width;n };n return Stroke;n}());nexport default Stroke;n//# sourceMappingURL=Stroke.js.map”,“/**n * @module ol/style/Stylen */nimport { assert } from '../asserts.js';nimport GeometryType from '../geom/GeometryType.js';nimport CircleStyle from './Circle.js';nimport Fill from './Fill.js';nimport Stroke from './Stroke.js';n/**n * A function that takes an {@link module:ol/Feature} and a `{number}`n * representing the view's resolution. The function should return an * {@link module:ol/style/Style} or an array of them. This way e.g. an * vector layer can be styled.n *n * @typedef {function(import("../Feature.js").FeatureLike, number):(Style|Array<Style>)} StyleFunctionn */n/**n * A {@link Style}, an array of {@link Style}, or a {@link StyleFunction}.n * @typedef {Style|Array<Style>|StyleFunction} StyleLiken */n/**n * A function that takes an {@link module:ol/Feature} as argument and returns ann * {@link module:ol/geom/Geometry} that will be rendered and styled for the feature.n *n * @typedef {function(import("../Feature.js").FeatureLike):n * (import("../geom/Geometry.js").default|import("../render/Feature.js").default|undefined)} GeometryFunctionn */n/**n * Custom renderer function. Takes two arguments:n *n * 1. The pixel coordinates of the geometry in GeoJSON notation.n * 2. The {@link module:ol/render~State} of the layer renderer.n *n * @typedef {function((import("../coordinate.js").Coordinate|Array<import("../coordinate.js").Coordinate>|Array<Array<import("../coordinate.js").Coordinate>>),import("../render.js").State): void}n * RenderFunctionn */n/**n * @typedef {Object} Optionsn * @property {string|import("../geom/Geometry.js").default|GeometryFunction} [geometry] Feature property or geometryn * or function returning a geometry to render for this style.n * @property {import("./Fill.js").default} [fill] Fill style.n * @property {import("./Image.js").default} [image] Image style.n * @property {RenderFunction} [renderer] Custom renderer. When configured, `fill`, `stroke` and `image` will ben * ignored, and the provided function will be called with each render frame for each geometry.n * @property {import("./Stroke.js").default} [stroke] Stroke style.n * @property {import("./Text.js").default} [text] Text style.n * @property {number} [zIndex] Z index.n */n/**n * @classdescn * Container for vector feature rendering styles. Any changes made to the stylen * or its children through `set*()` methods will not take effect until then * feature or layer that uses the style is re-rendered.n *n * ## Feature stylesn *n * If no style is defined, the following default style is used:n * “`jsn * import {Fill, Stroke, Circle, Style} from 'ol/style';n *n * var fill = new Fill({n * color: 'rgba(255,255,255,0.4)'n * });n * var stroke = new Stroke({n * color: '#3399CC',n * width: 1.25n * });n * var styles = [n * new Style({n * image: new Circle({n * fill: fill,n * stroke: stroke,n * radius: 5n * }),n * fill: fill,n * stroke: stroken * })n * ];n * “`n *n * A separate editing style has the following defaults:n * “`jsn * import {Fill, Stroke, Circle, Style} from 'ol/style';n * import GeometryType from 'ol/geom/GeometryType';n *n * var white = [255, 255, 255, 1];n * var blue = [0, 153, 255, 1];n * var width = 3;n * styles = [n * new Style({n * fill: new Fill({n * color: [255, 255, 255, 0.5]n * })n * })n * ];n * styles =n * styles;n * styles = [n * new Style({n * stroke: new Stroke({n * color: white,n * width: width + 2n * })n * }),n * new Style({n * stroke: new Stroke({n * color: blue,n * width: widthn * })n * })n * ];n * styles =n * styles;n * styles = [n * new Style({n * image: new Circle({n * radius: width * 2,n * fill: new Fill({n * color: bluen * }),n * stroke: new Stroke({n * color: white,n * width: width / 2n * })n * }),n * zIndex: Infinityn * })n * ];n * styles =n * styles;n * styles =n * styles.concat(n * styles,n * stylesn * );n * “`n *n * @apin */nvar Style = /** @class */ (function () {n /**n * @param {Options=} opt_options Style options.n */n function Style(opt_options) {n var options = opt_options || {};n /**n * @privaten * @type {string|import("../geom/Geometry.js").default|GeometryFunction}n */n this.geometry_ = null;n /**n * @privaten * @type {!GeometryFunction}n */n this.geometryFunction_ = defaultGeometryFunction;n if (options.geometry !== undefined) {n this.setGeometry(options.geometry);n }n /**n * @privaten * @type {import("./Fill.js").default}n */n this.fill_ = options.fill !== undefined ? options.fill : null;n /**n * @privaten * @type {import("./Image.js").default}n */n this.image_ = options.image !== undefined ? options.image : null;n /**n * @privaten * @type {RenderFunction|null}n */n this.renderer_ = options.renderer !== undefined ? options.renderer : null;n /**n * @privaten * @type {import("./Stroke.js").default}n */n this.stroke_ = options.stroke !== undefined ? options.stroke : null;n /**n * @privaten * @type {import("./Text.js").default}n */n this.text_ = options.text !== undefined ? options.text : null;n /**n * @privaten * @type {number|undefined}n */n this.zIndex_ = options.zIndex;n }n /**n * Clones the style.n * @return {Style} The cloned style.n * @apin */n Style.prototype.clone = function () {n var geometry = this.getGeometry();n if (geometry && typeof geometry === 'object') {n geometry = /** @type {import("../geom/Geometry.js").default} */ (geometry).clone();n }n return new Style({n geometry: geometry,n fill: this.getFill() ? this.getFill().clone() : undefined,n image: this.getImage() ? this.getImage().clone() : undefined,n stroke: this.getStroke() ? this.getStroke().clone() : undefined,n text: this.getText() ? this.getText().clone() : undefined,n zIndex: this.getZIndex()n });n };n /**n * Get the custom renderer function that was configured withn * {@link setRenderer} or the `renderer` constructor option.n * @return {RenderFunction|null} Custom renderer function.n * @apin */n Style.prototype.getRenderer = function () {n return this.renderer_;n };n /**n * Sets a custom renderer function for this style. When set, `fill`, `stroke`n * and `image` options of the style will be ignored.n * @param {RenderFunction|null} renderer Custom renderer function.n * @apin */n Style.prototype.setRenderer = function (renderer) {n this.renderer_ = renderer;n };n /**n * Get the geometry to be rendered.n * @return {string|import("../geom/Geometry.js").default|GeometryFunction}n * Feature property or geometry or function that returns the geometry that willn * be rendered with this style.n * @apin */n Style.prototype.getGeometry = function () {n return this.geometry_;n };n /**n * Get the function used to generate a geometry for rendering.n * @return {!GeometryFunction} Function that is called with a featuren * and returns the geometry to render instead of the feature's geometry.n * @apin */n Style.prototype.getGeometryFunction = function () {n return this.geometryFunction_;n };n /**n * Get the fill style.n * @return {import("./Fill.js").default} Fill style.n * @apin */n Style.prototype.getFill = function () {n return this.fill_;n };n /**n * Set the fill style.n * @param {import("./Fill.js").default} fill Fill style.n * @apin */n Style.prototype.setFill = function (fill) {n this.fill_ = fill;n };n /**n * Get the image style.n * @return {import("./Image.js").default} Image style.n * @apin */n Style.prototype.getImage = function () {n return this.image_;n };n /**n * Set the image style.n * @param {import("./Image.js").default} image Image style.n * @apin */n Style.prototype.setImage = function (image) {n this.image_ = image;n };n /**n * Get the stroke style.n * @return {import("./Stroke.js").default} Stroke style.n * @apin */n Style.prototype.getStroke = function () {n return this.stroke_;n };n /**n * Set the stroke style.n * @param {import("./Stroke.js").default} stroke Stroke style.n * @apin */n Style.prototype.setStroke = function (stroke) {n this.stroke_ = stroke;n };n /**n * Get the text style.n * @return {import("./Text.js").default} Text style.n * @apin */n Style.prototype.getText = function () {n return this.text_;n };n /**n * Set the text style.n * @param {import("./Text.js").default} text Text style.n * @apin */n Style.prototype.setText = function (text) {n this.text_ = text;n };n /**n * Get the z-index for the style.n * @return {number|undefined} ZIndex.n * @apin */n Style.prototype.getZIndex = function () {n return this.zIndex_;n };n /**n * Set a geometry that is rendered instead of the feature's geometry.n *n * @param {string|import("../geom/Geometry.js").default|GeometryFunction} geometryn * Feature property or geometry or function returning a geometry to rendern * for this style.n * @apin */n Style.prototype.setGeometry = function (geometry) {n if (typeof geometry === 'function') {n this.geometryFunction_ = geometry;n }n else if (typeof geometry === 'string') {n this.geometryFunction_ = function (feature) {n return (n /** @type {import("../geom/Geometry.js").default} */ (feature.get(geometry)));n };n }n else if (!geometry) {n this.geometryFunction_ = defaultGeometryFunction;n }n else if (geometry !== undefined) {n this.geometryFunction_ = function () {n return (n /** @type {import("../geom/Geometry.js").default} */ (geometry));n };n }n this.geometry_ = geometry;n };n /**n * Set the z-index.n *n * @param {number|undefined} zIndex ZIndex.n * @apin */n Style.prototype.setZIndex = function (zIndex) {n this.zIndex_ = zIndex;n };n return Style;n}());n/**n * Convert the provided object into a style function. Functions passed throughn * unchanged. Arrays of Style or single style objects wrapped in an * new style function.n * @param {StyleFunction|Array<Style>|Style} objn * A style function, a single style, or an array of styles.n * @return {StyleFunction} A style function.n */nexport function toFunction(obj) {n var styleFunction;n if (typeof obj === 'function') {n styleFunction = obj;n }n else {n /**n * @type {Array<Style>}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 `Style` or an array of `Style`n var style = /** @type {Style} */ (obj);n styles_1 = [style];n }n styleFunction = function () {n return styles_1;n };n }n return styleFunction;n}n/**n * @type {Array<Style>}n */nvar defaultStyles = null;n/**n * @param {import("../Feature.js").FeatureLike} feature Feature.n * @param {number} resolution Resolution.n * @return {Array<Style>} Style.n */nexport function createDefaultStyle(feature, resolution) {n // We don't use an immediately-invoked functionn // and a closure so we don't get an error at script evaluation time inn // browsers that do not support Canvas. (import("./Circle.js").CircleStyle doesn // canvas.getContext('2d') at construction time, which will cause an.errorn // in such browsers.)n if (!defaultStyles) {n var fill = new Fill({n color: 'rgba(255,255,255,0.4)'n });n var stroke = new Stroke({n color: '#3399CC',n width: 1.25n });n defaultStyles = [n new Style({n image: new CircleStyle({n fill: fill,n stroke: stroke,n radius: 5n }),n fill: fill,n stroke: stroken })n ];n }n return defaultStyles;n}n/**n * Default styles for editing features.n * @return {Object<import("../geom/GeometryType.js").default, Array<Style>>} Stylesn */nexport function createEditingStyle() {n /** @type {Object<import("../geom/GeometryType.js").default, Array<Style>>} */n var styles = {};n var white = [255, 255, 255, 1];n var blue = [0, 153, 255, 1];n var width = 3;n styles = [n new Style({n fill: new Fill({n color: [255, 255, 255, 0.5]n })n })n ];n styles =n styles;n styles = [n new Style({n stroke: new Stroke({n color: white,n width: width + 2n })n }),n new Style({n stroke: new Stroke({n color: blue,n width: widthn })n })n ];n styles =n styles;n styles =n styles.concat(styles);n styles = [n new Style({n image: new CircleStyle({n radius: width * 2,n fill: new Fill({n color: bluen }),n stroke: new Stroke({n color: white,n width: width / 2n })n }),n zIndex: Infinityn })n ];n styles =n styles;n styles =n styles.concat(styles, styles);n return styles;n}n/**n * Function that is called with a feature and returns its default geometry.n * @param {import("../Feature.js").FeatureLike} feature Feature to get the geometry for.n * @return {import("../geom/Geometry.js").default|import("../render/Feature.js").default|undefined} Geometry to render.n */nfunction defaultGeometryFunction(feature) {n return feature.getGeometry();n}nexport default Style;n//# sourceMappingURL=Style.js.map”,“/**n * @module ol/style/TextPlacementn */n/**n * Text placement. One of `'point'`, `'line'`. Default is `'point'`. Note thatn * `'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} orn * {@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/style/Textn */nimport Fill from './Fill.js';nimport TextPlacement from './TextPlacement.js';n/**n * The default fill color to use if no fill was set at construction time; an * blackish `#333`.n *n * @const {string}n */nvar DEFAULT_FILL_COLOR = '#333';n/**n * @typedef {Object} Optionsn * @property {string} [font] Font style as CSS 'font' value, see:n * developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/font. Default is '10px sans-serif'n * @property {number} [maxAngle=Math.PI/4] When `placement` is set to `'line'`, allow a maximum angle between adjacent characters.n * The expected value is in radians, and the default is 45° (`Math.PI / 4`).n * @property {number} [offsetX=0] Horizontal text offset in pixels. A positive will shift the text right.n * @property {number} [offsetY=0] Vertical text offset in pixels. A positive will shift the text down.n * @property {boolean} [overflow=false] For polygon labels or when `placement` is set to `'line'`, allow text to exceedn * the width of the polygon at the label position or the length of the path that it follows.n * @property {import("./TextPlacement.js").default|string} [placement='point'] Text placement.n * @property {number} [scale] Scale.n * @property {boolean} [rotateWithView=false] Whether to rotate the text with the view.n * @property {number} [rotation=0] Rotation in radians (positive rotation clockwise).n * @property {string} [text] Text content.n * @property {string} [textAlign] Text alignment. Possible values: 'left', 'right', 'center', 'end' or 'start'.n * Default is 'center' for `placement: 'point'`. For `placement: 'line'`, the default is to let the renderer choose an * placement where `maxAngle` is not exceeded.n * @property {string} [textBaseline='middle'] Text base line. Possible values: 'bottom', 'top', 'middle', 'alphabetic',n * 'hanging', 'ideographic'.n * @property {import("./Fill.js").default} [fill] Fill style. If none is provided, we'll use a dark fill-style (#333).n * @property {import("./Stroke.js").default} [stroke] Stroke style.n * @property {import("./Fill.js").default} [backgroundFill] Fill style for the text background when `placement` isn * `'point'`. Default is no fill.n * @property {import("./Stroke.js").default} [backgroundStroke] Stroke style for the text background when `placement`n * is `'point'`. Default is no stroke.n * @property {Array<number>} [padding=[0, 0, 0, 0]] Padding in pixels around the text for decluttering and background. The order ofn * values in the array is `[top, right, bottom, left]`.n */n/**n * @classdescn * Set text style for vector features.n * @apin */nvar Text = /** @class */ (function () {n /**n * @param {Options=} opt_options Options.n */n function Text(opt_options) {n var options = opt_options || {};n /**n * @privaten * @type {string|undefined}n */n this.font_ = options.font;n /**n * @privaten * @type {number|undefined}n */n this.rotation_ = options.rotation;n /**n * @privaten * @type {boolean|undefined}n */n this.rotateWithView_ = options.rotateWithView;n /**n * @privaten * @type {number|undefined}n */n this.scale_ = options.scale;n /**n * @privaten * @type {string|undefined}n */n this.text_ = options.text;n /**n * @privaten * @type {string|undefined}n */n this.textAlign_ = options.textAlign;n /**n * @privaten * @type {string|undefined}n */n this.textBaseline_ = options.textBaseline;n /**n * @privaten * @type {import("./Fill.js").default}n */n this.fill_ = options.fill !== undefined ? options.fill :n new Fill({ color: DEFAULT_FILL_COLOR });n /**n * @privaten * @type {number}n */n this.maxAngle_ = options.maxAngle !== undefined ? options.maxAngle : Math.PI / 4;n /**n * @privaten * @type {import("./TextPlacement.js").default|string}n */n this.placement_ = options.placement !== undefined ? options.placement : TextPlacement.POINT;n /**n * @privaten * @type {boolean}n */n this.overflow_ = !!options.overflow;n /**n * @privaten * @type {import("./Stroke.js").default}n */n this.stroke_ = options.stroke !== undefined ? options.stroke : null;n /**n * @privaten * @type {number}n */n this.offsetX_ = options.offsetX !== undefined ? options.offsetX : 0;n /**n * @privaten * @type {number}n */n this.offsetY_ = options.offsetY !== undefined ? options.offsetY : 0;n /**n * @privaten * @type {import("./Fill.js").default}n */n this.backgroundFill_ = options.backgroundFill ? options.backgroundFill : null;n /**n * @privaten * @type {import("./Stroke.js").default}n */n this.backgroundStroke_ = options.backgroundStroke ? options.backgroundStroke : null;n /**n * @privaten * @type {Array<number>}n */n this.padding_ = options.padding === undefined ? null : options.padding;n }n /**n * Clones the style.n * @return {Text} The cloned style.n * @apin */n Text.prototype.clone = function () {n return new Text({n font: this.getFont(),n placement: this.getPlacement(),n maxAngle: this.getMaxAngle(),n overflow: this.getOverflow(),n rotation: this.getRotation(),n rotateWithView: this.getRotateWithView(),n scale: this.getScale(),n text: this.getText(),n textAlign: this.getTextAlign(),n textBaseline: this.getTextBaseline(),n fill: this.getFill() ? this.getFill().clone() : undefined,n stroke: this.getStroke() ? this.getStroke().clone() : undefined,n offsetX: this.getOffsetX(),n offsetY: this.getOffsetY(),n backgroundFill: this.getBackgroundFill() ? this.getBackgroundFill().clone() : undefined,n backgroundStroke: this.getBackgroundStroke() ? this.getBackgroundStroke().clone() : undefined,n padding: this.getPadding()n });n };n /**n * Get the `overflow` configuration.n * @return {boolean} Let text overflow the length of the path they follow.n * @apin */n Text.prototype.getOverflow = function () {n return this.overflow_;n };n /**n * Get the font name.n * @return {string|undefined} Font.n * @apin */n Text.prototype.getFont = function () {n return this.font_;n };n /**n * Get the maximum angle between adjacent characters.n * @return {number} Angle in radians.n * @apin */n Text.prototype.getMaxAngle = function () {n return this.maxAngle_;n };n /**n * Get the label placement.n * @return {import("./TextPlacement.js").default|string} Text placement.n * @apin */n Text.prototype.getPlacement = function () {n return this.placement_;n };n /**n * Get the x-offset for the text.n * @return {number} Horizontal text offset.n * @apin */n Text.prototype.getOffsetX = function () {n return this.offsetX_;n };n /**n * Get the y-offset for the text.n * @return {number} Vertical text offset.n * @apin */n Text.prototype.getOffsetY = function () {n return this.offsetY_;n };n /**n * Get the fill style for the text.n * @return {import("./Fill.js").default} Fill style.n * @apin */n Text.prototype.getFill = function () {n return this.fill_;n };n /**n * Determine whether the text rotates with the map.n * @return {boolean|undefined} Rotate with map.n * @apin */n Text.prototype.getRotateWithView = function () {n return this.rotateWithView_;n };n /**n * Get the text rotation.n * @return {number|undefined} Rotation.n * @apin */n Text.prototype.getRotation = function () {n return this.rotation_;n };n /**n * Get the text scale.n * @return {number|undefined} Scale.n * @apin */n Text.prototype.getScale = function () {n return this.scale_;n };n /**n * Get the stroke style for the text.n * @return {import("./Stroke.js").default} Stroke style.n * @apin */n Text.prototype.getStroke = function () {n return this.stroke_;n };n /**n * Get the text to be rendered.n * @return {string|undefined} Text.n * @apin */n Text.prototype.getText = function () {n return this.text_;n };n /**n * Get the text alignment.n * @return {string|undefined} Text align.n * @apin */n Text.prototype.getTextAlign = function () {n return this.textAlign_;n };n /**n * Get the text baseline.n * @return {string|undefined} Text baseline.n * @apin */n Text.prototype.getTextBaseline = function () {n return this.textBaseline_;n };n /**n * Get the background fill style for the text.n * @return {import("./Fill.js").default} Fill style.n * @apin */n Text.prototype.getBackgroundFill = function () {n return this.backgroundFill_;n };n /**n * Get the background stroke style for the text.n * @return {import("./Stroke.js").default} Stroke style.n * @apin */n Text.prototype.getBackgroundStroke = function () {n return this.backgroundStroke_;n };n /**n * Get the padding for the text.n * @return {Array<number>} Padding.n * @apin */n Text.prototype.getPadding = function () {n return this.padding_;n };n /**n * Set the `overflow` property.n *n * @param {boolean} overflow Let text overflow the path that it follows.n * @apin */n Text.prototype.setOverflow = function (overflow) {n this.overflow_ = overflow;n };n /**n * Set the font.n *n * @param {string|undefined} font Font.n * @apin */n Text.prototype.setFont = function (font) {n this.font_ = font;n };n /**n * Set the maximum angle between adjacent characters.n *n * @param {number} maxAngle Angle in radians.n * @apin */n Text.prototype.setMaxAngle = function (maxAngle) {n this.maxAngle_ = maxAngle;n };n /**n * Set the x offset.n *n * @param {number} offsetX Horizontal text offset.n * @apin */n Text.prototype.setOffsetX = function (offsetX) {n this.offsetX_ = offsetX;n };n /**n * Set the y offset.n *n * @param {number} offsetY Vertical text offset.n * @apin */n Text.prototype.setOffsetY = function (offsetY) {n this.offsetY_ = offsetY;n };n /**n * Set the text placement.n *n * @param {import("./TextPlacement.js").default|string} placement Placement.n * @apin */n Text.prototype.setPlacement = function (placement) {n this.placement_ = placement;n };n /**n * Set whether to rotate the text with the view.n *n * @param {boolean} rotateWithView Rotate with map.n * @apin */n Text.prototype.setRotateWithView = function (rotateWithView) {n this.rotateWithView_ = rotateWithView;n };n /**n * Set the fill.n *n * @param {import("./Fill.js").default} fill Fill style.n * @apin */n Text.prototype.setFill = function (fill) {n this.fill_ = fill;n };n /**n * Set the rotation.n *n * @param {number|undefined} rotation Rotation.n * @apin */n Text.prototype.setRotation = function (rotation) {n this.rotation_ = rotation;n };n /**n * Set the scale.n *n * @param {number|undefined} scale Scale.n * @apin */n Text.prototype.setScale = function (scale) {n this.scale_ = scale;n };n /**n * Set the stroke.n *n * @param {import("./Stroke.js").default} stroke Stroke style.n * @apin */n Text.prototype.setStroke = function (stroke) {n this.stroke_ = stroke;n };n /**n * Set the text.n *n * @param {string|undefined} text Text.n * @apin */n Text.prototype.setText = function (text) {n this.text_ = text;n };n /**n * Set the text alignment.n *n * @param {string|undefined} textAlign Text align.n * @apin */n Text.prototype.setTextAlign = function (textAlign) {n this.textAlign_ = textAlign;n };n /**n * Set the text baseline.n *n * @param {string|undefined} textBaseline Text baseline.n * @apin */n Text.prototype.setTextBaseline = function (textBaseline) {n this.textBaseline_ = textBaseline;n };n /**n * Set the background fill.n *n * @param {import("./Fill.js").default} fill Fill style.n * @apin */n Text.prototype.setBackgroundFill = function (fill) {n this.backgroundFill_ = fill;n };n /**n * Set the background stroke.n *n * @param {import("./Stroke.js").default} stroke Stroke style.n * @apin */n Text.prototype.setBackgroundStroke = function (stroke) {n this.backgroundStroke_ = stroke;n };n /**n * Set the padding (`[top, right, bottom, left]`).n *n * @param {!Array<number>} padding Padding.n * @apin */n Text.prototype.setPadding = function (padding) {n this.padding_ = padding;n };n return Text;n}());nexport default Text;n//# sourceMappingURL=Text.js.map”,“/**n * @module ol/tileurlfunctionn */nimport { assert } from './asserts.js';nimport { modulo } from './math.js';nimport { hash as tileCoordHash } from './tilecoord.js';n/**n * @param {string} template Template.n * @param {import("./tilegrid/TileGrid.js").default} tileGrid Tile grid.n * @return {import("./Tile.js").UrlFunction} Tile URL function.n */nexport function createFromTemplate(template, tileGrid) {n var zRegEx = /\{z\}/g;n var xRegEx = /\{x\}/g;n var yRegEx = /\{y\}/g;n var dashYRegEx = /\{-y\}/g;n return (n /**n * @param {import("./tilecoord.js").TileCoord} tileCoord Tile Coordinate.n * @param {number} pixelRatio Pixel ratio.n * @param {import("./proj/Projection.js").default} projection Projection.n * @return {string|undefined} Tile URL.n */n function (tileCoord, pixelRatio, projection) {n if (!tileCoord) {n return undefined;n }n else {n return template.replace(zRegEx, tileCoord.toString())n .replace(xRegEx, tileCoord.toString())n .replace(yRegEx, tileCoord.toString())n .replace(dashYRegEx, function () {n var z = tileCoord;n var range = tileGrid.getFullTileRange(z);n assert(range, 55); // The {-y} placeholder requires a tile grid with extentn var y = range.getHeight() - tileCoord - 1;n return y.toString();n });n }n });n}n/**n * @param {Array<string>} templates Templates.n * @param {import("./tilegrid/TileGrid.js").default} tileGrid Tile grid.n * @return {import("./Tile.js").UrlFunction} Tile URL function.n */nexport function createFromTemplates(templates, tileGrid) {n var len = templates.length;n var tileUrlFunctions = new Array(len);n for (var i = 0; i < len; ++i) {n tileUrlFunctions = createFromTemplate(templates, tileGrid);n }n return createFromTileUrlFunctions(tileUrlFunctions);n}n/**n * @param {Array<import("./Tile.js").UrlFunction>} tileUrlFunctions Tile URL Functions.n * @return {import("./Tile.js").UrlFunction} Tile URL function.n */nexport function createFromTileUrlFunctions(tileUrlFunctions) {n if (tileUrlFunctions.length === 1) {n return tileUrlFunctions;n }n return (n /**n * @param {import("./tilecoord.js").TileCoord} tileCoord Tile Coordinate.n * @param {number} pixelRatio Pixel ratio.n * @param {import("./proj/Projection.js").default} projection Projection.n * @return {string|undefined} Tile URL.n */n function (tileCoord, pixelRatio, projection) {n if (!tileCoord) {n return undefined;n }n else {n var h = tileCoordHash(tileCoord);n var index = modulo(h, tileUrlFunctions.length);n return tileUrlFunctions(tileCoord, pixelRatio, projection);n }n });n}n/**n * @param {import("./tilecoord.js").TileCoord} tileCoord Tile coordinate.n * @param {number} pixelRatio Pixel ratio.n * @param {import("./proj/Projection.js").default} projection Projection.n * @return {string|undefined} Tile URL.n */nexport function nullTileUrlFunction(tileCoord, pixelRatio, projection) {n return undefined;n}n/**n * @param {string} url URL.n * @return {Array<string>} Array of urls.n */nexport function expandUrl(url) {n var urls = [];n var match = /\{([a-z])-()\}/.exec(url);n if (match) {n // char rangen var startCharCode = match.charCodeAt(0);n var stopCharCode = match.charCodeAt(0);n var charCode = void 0;n for (charCode = startCharCode; charCode <= stopCharCode; ++charCode) {n urls.push(url.replace(match, String.fromCharCode(charCode)));n }n return urls;n }n match = /\{(\d+)-(\d+)\}/.exec(url);n if (match) {n // number rangen var stop_1 = parseInt(match, 10);n for (var i = parseInt(match, 10); i <= stop_1; i++) {n urls.push(url.replace(match, i.toString()));n }n return urls;n }n urls.push(url);n return urls;n}n//# sourceMappingURL=tileurlfunction.js.map”,“/**n * @module ol/netn */nimport { getUid } from './util.js';n/**n * Simple JSONP helper. Supports error callbacks and a custom callback param.n * The error callback will be called when no JSONP is executed after 10 seconds.n *n * @param {string} url Request url. A 'callback' query parameter will ben * appended.n * @param {Function} callback Callback on success.n * @param {function()=} opt_errback Callback on error.n * @param {string=} opt_callbackParam Custom query parameter for the JSONPn * callback. Default is 'callback'.n */nexport function jsonp(url, callback, opt_errback, opt_callbackParam) {n var script = document.createElement('script');n var key = 'olc_' + getUid(callback);n function cleanup() {n delete window;n script.parentNode.removeChild(script);n }n script.async = true;n script.src = url + (url.indexOf('?') == -1 ? '?' : '&') +n (opt_callbackParam || 'callback') + '=' + key;n var timer = setTimeout(function () {n cleanup();n if (opt_errback) {n opt_errback();n }n }, 10000);n window = function (data) {n clearTimeout(timer);n cleanup();n callback(data);n };n document.getElementsByTagName(‘head’).appendChild(script);n}n//# sourceMappingURL=net.js.map”,“/**n * @module ol/reproj/commonn */n/**n * Default maximum allowed threshold (in pixels) for reprojectionn * triangulation.n * @type {number}n */nexport var ERROR_THRESHOLD = 0.5;n/**n * Enable automatic reprojection of raster sources. Default is `true`.n * TODO: decide if we want to expose this as a build flag or remove itn * @type {boolean}n */nexport var ENABLE_RASTER_REPROJECTION = true;n//# sourceMappingURL=common.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/Tilen */nimport TileState from './TileState.js';nimport { easeIn } from './easing.js';nimport EventTarget from './events/Target.js';nimport EventType from './events/EventType.js';nimport { abstract } from './util.js';n/**n * A function that takes an {@link module:ol/Tile} for the tile and an * `{string}` for the url as arguments. The default isn * “`jsn * 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 involven * error handling:n *n * “`jsn * 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} LoadFunctionn * @apin */n/**n * {@link module:ol/source/Tile~Tile} sources use a function of this type to getn * the url that provides a tile for a given tile coordinate.n *n * This function takes an {@link module:ol/tilecoord~TileCoord} for the tilen * coordinate, a `{number}` representing the pixel ratio and an * {@link module:ol/proj/Projection} for the projection as argumentsn * and returns a `{string}` representing the tile URL, or undefined if no tilen * 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)} UrlFunctionn * @apin */n/**n * @typedef {Object} Optionsn * @property {number} [transition=250] A duration for tile opacityn * transitions in milliseconds. A duration of 0 disables the opacity transition.n * @apin */n/**n * @classdescn * Base class for tiles.n *n * @abstractn */nvar Tile = /** @class */ (function (_super) {n __extends(Tile, _super);n /**n * @param {import("./tilecoord.js").TileCoord} tileCoord Tile coordinate.n * @param {TileState} 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 * @protectedn * @type {TileState}n */n _this.state = state;n /**n * An "interim" tile for this tile. The interim tile may be used while thisn * one is loading, for "smooth" transitions when changing params/dimensionsn * on the source.n * @type {Tile}n */n _this.interimTile = null;n /**n * The tile is available at the highest possible resolution. Subclasses cann * set this to `false` initially. Tile load listeners will not ben * unregistered before this is set to `true` and a `#changed()` is called.n * @type {boolean}n */n _this.hifi = true;n /**n * A key assigned to the tile. This is used by the tile source to determinen * if this tile can effectively be used, or if a new tile should be createdn * 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 = options.transition === undefined ? 250 : options.transition;n /**n * Lookup of start times for rendering transitions. If the start time isn * equal to -1, the transition is complete.n * @type {Object<string, number>}n */n this.transitionStarts = {};n return _this;n }n /**n * @protectedn */n Tile.prototype.changed = function () {n this.dispatchEvent(EventType.CHANGE);n };n /**n * @inheritDocn */n Tile.prototype.disposeInternal = function () {n this.setState(TileState.ABORT);n };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 interimn * tiles. This corresponds to the most recent tile that has been loaded, if non * 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 chainn return this;n }n var tile = this.interimTile;n // find the first loaded tile and return it. Since the chain is sorted inn // decreasing order of creation time, there is no need to search the remaindern // of the list (all those tiles correspond to older requests and will ben // cleaned up by refreshInterimChain)n do {n if (tile.getState() == TileState.LOADED) {n // Show tile immediately instead of fading it in after loading, becausen // the interim tile is in place alreadyn this.transition_ = 0;n return tile;n }n tile = tile.interimTile;n } while (tile);n // we can not find a better tilen return this;n };n /**n * Goes through the chain of interim tiles and discards sections of the chainn * that are no longer relevant.n */n Tile.prototype.refreshInterimChain = function () {n if (!this.interimTile) {n return;n }n var tile = this.interimTile;n var prev = /** @type {Tile} */ (this);n do {n if (tile.getState() == TileState.LOADED) {n //we have a loaded tile, we can discard the rest of the listn //we would could abort any LOADING tile requestn //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 aren //older than this tile, so we're still interested in the requestn prev = tile;n }n else if (tile.getState() == TileState.IDLE) {n //the head of the list is the most current tile, we don't needn //to start any other requests for this chainn 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 * @apin */n Tile.prototype.getTileCoord = function () {n return this.tileCoord;n };n /**n * @return {TileState} 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 fromn * the tile queue and will block other requests.n * @param {TileState} state State.n * @apin */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 isn * only needed for preloading or for reloading in case of an error.n * @abstractn * @apin */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_;n if (!start) {n start = time;n this.transitionStarts_ = start;n }n else if (start === -1) {n return 1;n }n var delta = time - start + (1000 / 60); // avoid rendering at 0n 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 inn * transition if tile.getAlpha() has not yet been called or has been calledn * 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_ !== -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_ = -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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/ImageTilen */nimport Tile from './Tile.js';nimport TileState from './TileState.js';nimport { createCanvasContext2D } from './dom.js';nimport { listenImage } from './Image.js';nvar ImageTile = /** @class */ (function (_super) {n __extends(ImageTile, _super);n /**n * @param {import("./tilecoord.js").TileCoord} tileCoord Tile coordinate.n * @param {TileState} state State.n * @param {string} src Image source URI.n * @param {?string} crossOrigin Cross origin.n * @param {import("./Tile.js").LoadFunction} tileLoadFunction Tile load function.n * @param {import("./Tile.js").Options=} opt_options Tile options.n */n function ImageTile(tileCoord, state, src, crossOrigin, tileLoadFunction, opt_options) {n var _this = _super.call(this, tileCoord, state, opt_options) || this;n /**n * @privaten * @type {?string}n */n this.crossOrigin = crossOrigin;n /**n * Image URIn *n * @privaten * @type {string}n */n this.src = src;n /**n * @privaten * @type {HTMLImageElement|HTMLCanvasElement}n */n this.image = new Image();n if (crossOrigin !== null) {n this.image.crossOrigin = crossOrigin;n }n /**n * @privaten * @type {?function():void}n */n this.unlisten = null;n /**n * @privaten * @type {import("./Tile.js").LoadFunction}n */n this.tileLoadFunction = tileLoadFunction;n return _this;n }n /**n * @inheritDocn */n ImageTile.prototype.disposeInternal = function () {n if (this.state == TileState.LOADING) {n this.unlistenImage_();n this.image_ = getBlankImage();n }n if (this.interimTile) {n this.interimTile.dispose();n }n _super.prototype.disposeInternal.call(this);n };n /**n * Get the HTML image element for this tile (may be a Canvas, Image, or Video).n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.n * @apin */n ImageTile.prototype.getImage = function () {n return this.image_;n };n /**n * @inheritDocn */n ImageTile.prototype.getKey = function () {n return this.src_;n };n /**n * Tracks loading or read errors.n *n * @privaten */n ImageTile.prototype.handleImageError_ = function () {n this.state = TileState.ERROR;n this.unlistenImage_();n this.image_ = getBlankImage();n this.changed();n };n /**n * Tracks successful image load.n *n * @privaten */n ImageTile.prototype.handleImageLoad_ = function () {n var image = /** @type {HTMLImageElement} */ (this.image_);n if (image.naturalWidth && image.naturalHeight) {n this.state = TileState.LOADED;n }n else {n this.state = TileState.EMPTY;n }n this.unlistenImage_();n this.changed();n };n /**n * @inheritDocn * @apin */n ImageTile.prototype.load = function () {n if (this.state == TileState.ERROR) {n this.state = TileState.IDLE;n this.image_ = new Image();n if (this.crossOrigin_ !== null) {n this.image_.crossOrigin = this.crossOrigin_;n }n }n if (this.state == TileState.IDLE) {n this.state = TileState.LOADING;n this.changed();n this.tileLoadFunction_(this, this.src_);n this.unlisten_ = listenImage(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this));n }n };n /**n * Discards event handlers which listen for load completion or errors.n *n * @privaten */n ImageTile.prototype.unlistenImage_ = function () {n if (this.unlisten_) {n this.unlisten_();n this.unlisten_ = null;n }n };n return ImageTile;n}(Tile));n/**n * Get a 1-pixel blank image.n * @return {HTMLCanvasElement} Blank image.n */nfunction getBlankImage() {n var ctx = createCanvasContext2D(1, 1);n ctx.fillStyle = 'rgba(0,0,0,0)';n ctx.fillRect(0, 0, 1, 1);n return ctx.canvas;n}nexport default ImageTile;n//# sourceMappingURL=ImageTile.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/TileCachen */nimport LRUCache from './structs/LRUCache.js';nimport { fromKey, getKey } from './tilecoord.js';nvar TileCache = /** @class */ (function (_super) {n __extends(TileCache, _super);n /**n * @param {number=} opt_highWaterMark High water mark.n */n function TileCache(opt_highWaterMark) {n return _super.call(this, opt_highWaterMark) || this;n }n /**n * @param {!Object<string, import("./TileRange.js").default>} usedTiles Used tiles.n */n TileCache.prototype.expireCache = function (usedTiles) {n while (this.canExpireCache()) {n var tile = this.peekLast();n if (tile.getKey() in usedTiles) {n break;n }n else {n this.pop().dispose();n }n }n };n /**n * Prune all tiles from the cache that don't have the same z as the newest tile.n */n TileCache.prototype.pruneExceptNewestZ = function () {n if (this.getCount() === 0) {n return;n }n var key = this.peekFirstKey();n var tileCoord = fromKey(key);n var z = tileCoord;n this.forEach(function (tile) {n if (tile.tileCoord !== z) {n this.remove(getKey(tile.tileCoord));n tile.dispose();n }n }.bind(this));n };n return TileCache;n}(LRUCache));nexport default TileCache;n//# sourceMappingURL=TileCache.js.map”,“/**n * @module ol/reprojn */nimport { createCanvasContext2D } from './dom.js';nimport { containsCoordinate, createEmpty, extend, getHeight, getTopLeft, getWidth } from './extent.js';nimport { solveLinearSystem } from './math.js';nimport { getPointResolution, transform } from './proj.js';n/**n * Calculates ideal resolution to use from the source in order to achieven * pixel mapping as close as possible to 1:1 during reprojection.n * The resolution is calculated regardless of what resolutionsn * 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 datan 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 specifiedn // coordinates may be slightly different. We need to reverse-compensate thisn // 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 * Enlarge the clipping triangle point by 1 pixel to ensure the edges overlapn * in order to mask gaps caused by antialiasing.n *n * @param {number} centroidX Centroid of the triangle (x coordinate in pixels).n * @param {number} centroidY Centroid of the triangle (y coordinate in pixels).n * @param {number} x X coordinate of the point (in pixels).n * @param {number} y Y coordinate of the point (in pixels).n * @return {import("./coordinate.js").Coordinate} New point 1 px farther from the centroid.n */nfunction enlargeClipPoint(centroidX, centroidY, x, y) {n var dX = x - centroidX;n var dY = y - centroidY;n var distance = Math.sqrt(dX * dX + dY * dY);n return [Math.round(x + dX / distance), Math.round(y + dY / distance)];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} triangulationn * Calculated triangulation.n * @param {Array<{extent: import("./extent.js").Extent,n * image: (HTMLCanvasElement|HTMLImageElement|HTMLVideoElement)}>} sourcesn * Array of sources.n * @param {number} gutter Gutter of the sources.n * @param {boolean=} opt_renderEdges Render reprojection edges.n * @return {HTMLCanvasElement} Canvas with reprojected data.n */nexport function render(width, height, pixelRatio, sourceResolution, sourceExtent, targetResolution, targetExtent, triangulation, sources, gutter, opt_renderEdges) {n var context = createCanvasContext2D(Math.round(pixelRatio * width), Math.round(pixelRatio * height));n if (sources.length === 0) {n return context.canvas;n }n context.scale(pixelRatio, pixelRatio);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 var stitchScale = pixelRatio / sourceResolution;n sources.forEach(function (src, i, arr) {n var xPos = src.extent - sourceDataExtent;n var yPos = -(src.extent - sourceDataExtent);n var srcWidth = getWidth(src.extent);n var srcHeight = getHeight(src.extent);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 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 coordinaten * 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, yin * Dst points: ui, vin * Affine coefficients: aijn *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], y0 = source[1];n var x1 = source[0], y1 = source[1];n var x2 = source[0], y2 = source[1];n var u0 = (target[0] - targetTopLeft) / targetResolution;n var v0 = -(target[1] - targetTopLeft) / targetResolution;n var u1 = (target[0] - targetTopLeft) / targetResolution;n var v1 = -(target[1] - targetTopLeft) / targetResolution;n var u2 = (target[0] - targetTopLeft) / targetResolution;n var v2 = -(target[1] - targetTopLeft) / targetResolution;n // Shift all the source points to improve numerical stabilityn // 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 var centroidX = (u0 + u1 + u2) / 3;n var centroidY = (v0 + v1 + v2) / 3;n var p0 = enlargeClipPoint(centroidX, centroidY, u0, v0);n var p1 = enlargeClipPoint(centroidX, centroidY, u1, v1);n var p2 = enlargeClipPoint(centroidX, centroidY, u2, v2);n context.moveTo(p1, p1);n context.lineTo(p0, p0);n context.lineTo(p2, p2);n context.clip();n context.transform(affineCoefs, affineCoefs, affineCoefs, affineCoefs, u0, v0);n context.translate(sourceDataExtent - sourceNumericalShiftX, sourceDataExtent - 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.strokeStyle = 'black';n context.lineWidth = 1;n triangulation.getTriangles().forEach(function (triangle, i, arr) {n var target = triangle.target;n var u0 = (target[0] - targetTopLeft) / targetResolution;n var v0 = -(target[1] - targetTopLeft) / targetResolution;n var u1 = (target[0] - targetTopLeft) / targetResolution;n var v1 = -(target[1] - targetTopLeft) / targetResolution;n var u2 = (target[0] - targetTopLeft) / targetResolution;n var v2 = -(target[1] - targetTopLeft) / targetResolution;n context.beginPath();n context.moveTo(u1, v1);n context.lineTo(u0, v0);n context.lineTo(u2, v2);n context.closePath();n context.stroke();n });n context.restore();n }n return context.canvas;n}n//# sourceMappingURL=reproj.js.map”,“/**n * @module ol/reproj/Triangulationn */nimport { boundingExtent, createEmpty, extendCoordinate, getBottomLeft, getBottomRight, getTopLeft, getTopRight, getWidth, intersects } from '../extent.js';nimport { modulo } from '../math.js';nimport { getTransform } from '../proj.js';n/**n * Single triangle; consists of 3 source points and 3 target points.n * @typedef {Object} Trianglen * @property {Array<import("../coordinate.js").Coordinate>} sourcen * @property {Array<import("../coordinate.js").Coordinate>} targetn */n/**n * Maximum number of subdivision steps during raster reprojection triangulation.n * Prevents high memory usage and large number of proj4 calls (for certainn * transformations and areas). At most `2*(2^this)` triangles are created forn * 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 transformingn * corners of world extent between certain projections, the resultingn * triangulation seems to have zero error and no subdivision is performed. Ifn * 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 * @classdescn * 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 */n function Triangulation(sourceProj, targetProj, targetExtent, maxSourceExtent, errorThreshold) {n /**n * @type {import("../proj/Projection.js").default}n * @privaten */n this.sourceProj_ = sourceProj;n /**n * @type {import("../proj/Projection.js").default}n * @privaten */n this.targetProj_ = targetProj;n /** @type {!Object<string, import("../coordinate.js").Coordinate>} */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 * @privaten */n this.transformInv_ = function © {n var key = c + '/' + c;n if (!transformInvCache) {n transformInvCache = transformInv©;n }n return transformInvCache;n };n /**n * @type {import("../extent.js").Extent}n * @privaten */n this.maxSourceExtent_ = maxSourceExtent;n /**n * @type {number}n * @privaten */n this.errorThresholdSquared_ = errorThreshold * errorThreshold;n /**n * @type {Array<Triangle>}n * @privaten */n this.triangles_ = [];n /**n * Indicates that the triangulation crosses edge of the source projection.n * @type {boolean}n * @privaten */n this.wrapsXInSource_ = false;n /**n * @type {boolean}n * @privaten */n this.canWrapXInSource_ = this.sourceProj_.canWrapX() &&n !!maxSourceExtent &&n !!this.sourceProj_.getExtent() &&n (getWidth(maxSourceExtent) == getWidth(this.sourceProj_.getExtent()));n /**n * @type {?number}n * @privaten */n this.sourceWorldWidth_ = this.sourceProj_.getExtent() ?n getWidth(this.sourceProj_.getExtent()) : null;n /**n * @type {?number}n * @privaten */n this.targetWorldWidth_ = this.targetProj_.getExtent() ?n getWidth(this.targetProj_.getExtent()) : 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 this.addQuad_(destinationTopLeft, destinationTopRight, destinationBottomRight, destinationBottomLeft, sourceTopLeft, sourceTopRight, sourceBottomRight, sourceBottomLeft, MAX_SUBDIVISION);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], triangle.source[0], triangle.source[0]);n });n // Shift triangles to be as close to `leftBound` as possiblen // (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], triangle.source[0], triangle.source[0]) - leftBound_1 > this.sourceWorldWidth_ / 2) {n var newTriangle = [[triangle.source[0], triangle.source[1]],n [triangle.source[0], triangle.source[1]],n [triangle.source[0], triangle.source[1]]];n if ((newTriangle[0] - leftBound_1) > this.sourceWorldWidth_ / 2) {n newTriangle[0] -= this.sourceWorldWidth_;n }n if ((newTriangle[0] - leftBound_1) > this.sourceWorldWidth_ / 2) {n newTriangle[0] -= this.sourceWorldWidth_;n }n if ((newTriangle[0] - leftBound_1) > this.sourceWorldWidth_ / 2) {n newTriangle[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], newTriangle[0], newTriangle[0]);n var maxX = Math.max(newTriangle[0], newTriangle[0], newTriangle[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 * @privaten */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 triangulationn * (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 * @privaten */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_ : null;n var sourceWorldWidth = /** @type {number} */ (this.sourceWorldWidth_);n // when the quad is wrapped in the source projectionn // it covers most of the projection extent, but not fullyn var wrapsX = this.sourceProj_.canWrapX() &&n sourceCoverageX > 0.5 && 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 = targetCoverageX > MAX_TRIANGLE_WIDTH ||n needsSubdivision;n }n if (!wrapsX && this.sourceProj_.isGlobal() && sourceCoverageX) {n needsSubdivision = sourceCoverageX > MAX_TRIANGLE_WIDTH ||n needsSubdivision;n }n }n if (!needsSubdivision && this.maxSourceExtent_) {n if (!intersects(sourceQuadExtent, this.maxSourceExtent_)) {n // whole quad outside source projection extent -> ignoren return;n }n }n if (!needsSubdivision) {n if (!isFinite(aSrc) || !isFinite(aSrc) ||n !isFinite(bSrc) || !isFinite(bSrc) ||n !isFinite(cSrc) || !isFinite(cSrc) ||n !isFinite(dSrc) || !isFinite(dSrc)) {n if (maxSubdivision > 0) {n needsSubdivision = true;n }n else {n return;n }n }n }n if (maxSubdivision > 0) {n if (!needsSubdivision) {n var center = [(a + c) / 2, (a + c) / 2];n var centerSrc = this.transformInv_(center);n var dx = void 0;n if (wrapsX) {n var centerSrcEstimX = (modulo(aSrc, sourceWorldWidth) +n modulo(cSrc, sourceWorldWidth)) / 2;n dx = centerSrcEstimX -n modulo(centerSrc, sourceWorldWidth);n }n else {n dx = (aSrc + cSrc) / 2 - centerSrc;n }n var dy = (aSrc + cSrc) / 2 - centerSrc;n var centerSrcErrorSquared = dx * dx + dy * dy;n needsSubdivision = centerSrcErrorSquared > this.errorThresholdSquared_;n }n if (needsSubdivision) {n if (Math.abs(a - c) <= Math.abs(a - c)) {n // split horizontally (top & bottom)n var bc = [(b + c) / 2, (b + c) / 2];n var bcSrc = this.transformInv_(bc);n var da = [(d + a) / 2, (d + a) / 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 + b) / 2, (a + b) / 2];n var abSrc = this.transformInv_(ab);n var cd = [(c + d) / 2, (c + d) / 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 this.addTriangle_(a, c, d, aSrc, cSrc, dSrc);n this.addTriangle_(a, b, c, aSrc, bSrc, cSrc);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);n extendCoordinate(extent, src);n extendCoordinate(extent, src);n });n return extent;n };n /**n * @return {Array<Triangle>} 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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/reproj/Tilen */nimport { ERROR_THRESHOLD } from './common.js';nimport Tile from '../Tile.js';nimport TileState from '../TileState.js';nimport { listen, unlistenByKey } from '../events.js';nimport EventType from '../events/EventType.js';nimport { getArea, getCenter, getIntersection } from '../extent.js';nimport { clamp } from '../math.js';nimport { calculateSourceResolution, render as renderReprojected } from '../reproj.js';nimport Triangulation from './Triangulation.js';n/**n * @typedef {function(number, number, number, number) : import("../Tile.js").default} FunctionTypen */n/**n * @classdescn * 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} getTileFunctionn * 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 */n function ReprojTile(sourceProj, sourceTileGrid, targetProj, targetTileGrid, tileCoord, wrappedTileCoord, pixelRatio, gutter, getTileFunction, opt_errorThreshold, opt_renderEdges) {n var _this = _super.call(this, tileCoord, TileState.IDLE) || this;n /**n * @privaten * @type {boolean}n */n this.renderEdges = opt_renderEdges !== undefined ? opt_renderEdges : false;n /**n * @privaten * @type {number}n */n this.pixelRatio = pixelRatio;n /**n * @privaten * @type {number}n */n this.gutter = gutter;n /**n * @privaten * @type {HTMLCanvasElement}n */n this.canvas = null;n /**n * @privaten * @type {import("../tilegrid/TileGrid.js").default}n */n this.sourceTileGrid = sourceTileGrid;n /**n * @privaten * @type {import("../tilegrid/TileGrid.js").default}n */n this.targetTileGrid = targetTileGrid;n /**n * @privaten * @type {import("../tilecoord.js").TileCoord}n */n this.wrappedTileCoord = wrappedTileCoord ? wrappedTileCoord : tileCoord;n /**n * @privaten * @type {!Array<import("../Tile.js").default>}n */n this.sourceTiles = [];n /**n * @privaten * @type {?Array<import("../events.js").EventsKey>}n */n this.sourcesListenerKeys = null;n /**n * @privaten * @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) : targetExtent;n if (getArea(limitedTargetExtent) === 0) {n // Tile is completely outside range -> EMPTYn // 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 targetCenter = getCenter(limitedTargetExtent);n var sourceResolution = calculateSourceResolution(sourceProj, targetProj, targetCenter, targetResolution);n if (!isFinite(sourceResolution) || sourceResolution <= 0) {n // invalid sourceResolution -> EMPTYn // probably edges of the projections when no extent is definedn _this.state = TileState.EMPTY;n return _this;n }n var errorThresholdInPixels = opt_errorThreshold !== undefined ?n opt_errorThreshold : ERROR_THRESHOLD;n /**n * @privaten * @type {!import("./Triangulation.js").default}n */n this.triangulation = new Triangulation(sourceProj, targetProj, limitedTargetExtent, maxSourceExtent, sourceResolution * errorThresholdInPixels);n if (this.triangulation.getTriangles().length === 0) {n // no valid triangles -> EMPTYn _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 = clamp(sourceExtent, maxSourceExtent, maxSourceExtent);n sourceExtent = clamp(sourceExtent, maxSourceExtent, maxSourceExtent);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 * @inheritDocn */n ReprojTile.prototype.disposeInternal = function () {n if (this.state == TileState.LOADING) {n this.unlistenSources_();n }n _super.prototype.disposeInternal.call(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 * @privaten */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_;n var size = this.targetTileGrid_.getTileSize(z);n var width = typeof size === 'number' ? size : size;n var height = typeof size === 'number' ? size : size;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_);n this.state = TileState.LOADED;n }n this.changed();n };n /**n * @inheritDocn */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 this.sourceTiles_.forEach(function (tile, i, arr) {n var state = tile.getState();n if (state == TileState.IDLE) {n tile.load();n }n });n if (leftToLoad_1 === 0) {n setTimeout(this.reproject_.bind(this), 0);n }n }n };n /**n * @privaten */n ReprojTile.prototype.unlistenSources_ = function () {n this.sourcesListenerKeys_.forEach(unlistenByKey);n this.sourcesListenerKeys_ = null;n };n return ReprojTile;n}(Tile));nexport default ReprojTile;n//# sourceMappingURL=Tile.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/source/Sourcen */nimport { abstract } from '../util.js';nimport BaseObject from '../Object.js';nimport { get as getProjection } from '../proj.js';nimport SourceState from './State.js';n/**n * A function that returns a string or an array of strings representing sourcen * attributions.n *n * @typedef {function(import("../PluggableMap.js").FrameState): (string|Array<string>)} Attributionn */n/**n * A type that can be used to provide attribution information for data sources.n *n * It represents eithern * * a simple string (e.g. `'© Acme Inc.'`)n * * an array of simple strings (e.g. `['© Acme Inc.', '© Bacme Inc.']`)n * * a function that returns a string or array of strings ({@link module:ol/source/Source~Attribution})n *n * @typedef {string|Array<string>|Attribution} AttributionLiken */n/**n * @typedef {Object} Optionsn * @property {AttributionLike} [attributions]n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.n * @property {import("../proj.js").ProjectionLike} [projection] Projection. Default is the view projection.n * @property {SourceState} [state='ready']n * @property {boolean} [wrapX=false]n */n/**n * @classdescn * Abstract base class; normally only used for creating subclasses and notn * instantiated in apps.n * Base class for {@link module:ol/layer/Layer~Layer} sources.n *n * A generic `change` event is triggered when the state of the source changes.n * @abstractn * @apin */nvar Source = /** @class */ (function (_super) {n __extends(Source, _super);n /**n * @param {Options} options Source options.n */n function Source(options) {n var _this = _super.call(this) || this;n /**n * @privaten * @type {import("../proj/Projection.js").default}n */n this.projection = getProjection(options.projection);n /**n * @privaten * @type {?Attribution}n */n this.attributions = adaptAttributions(options.attributions);n /**n * @privaten * @type {boolean}n */n this.attributionsCollapsible = options.attributionsCollapsible !== undefined ?n options.attributionsCollapsible : true;n /**n * This source is currently loading data. Sources that defer loading to then * map's tile queue never set this to `true`.n * @type {boolean}n */n _this.loading = false;n /**n * @privaten * @type {SourceState}n */n this.state = options.state !== undefined ?n options.state : SourceState.READY;n /**n * @privaten * @type {boolean}n */n this.wrapX = options.wrapX !== undefined ? options.wrapX : false;n return _this;n }n /**n * Get the attribution function for the source.n * @return {?Attribution} Attribution function.n */n Source.prototype.getAttributions = function () {n return this.attributions_;n };n /**n * @return {boolean} Attributions are collapsible.n */n Source.prototype.getAttributionsCollapsible = function () {n return this.attributionsCollapsible_;n };n /**n * Get the projection of the source.n * @return {import("../proj/Projection.js").default} Projection.n * @apin */n Source.prototype.getProjection = function () {n return this.projection_;n };n /**n * @abstractn * @return {Array<number>|undefined} Resolutions.n */n Source.prototype.getResolutions = function () {n return abstract();n };n /**n * Get the state of the source, see {@link module:ol/source/State~State} for possible states.n * @return {SourceState} State.n * @apin */n Source.prototype.getState = function () {n return this.state_;n };n /**n * @return {boolean|undefined} Wrap X.n */n Source.prototype.getWrapX = function () {n return this.wrapX_;n };n /**n * Refreshes the source. The source will be cleared, and data from the server will be reloaded.n * @apin */n Source.prototype.refresh = function () {n this.changed();n };n /**n * Set the attributions of the source.n * @param {AttributionLike|undefined} attributions Attributions.n * Can be passed as `string`, `Array<string>`, {@link module:ol/source/Source~Attribution},n * or `undefined`.n * @apin */n Source.prototype.setAttributions = function (attributions) {n this.attributions_ = adaptAttributions(attributions);n this.changed();n };n /**n * Set the state of the source.n * @param {SourceState} state State.n * @protectedn */n Source.prototype.setState = function (state) {n this.state_ = state;n this.changed();n };n return Source;n}(BaseObject));n/**n * Turns the attributions option into an attributions function.n * @param {AttributionLike|undefined} attributionLike The attribution option.n * @return {?Attribution} An attribution function (or null).n */nfunction adaptAttributions(attributionLike) {n if (!attributionLike) {n return null;n }n if (Array.isArray(attributionLike)) {n return function (frameState) {n return attributionLike;n };n }n if (typeof attributionLike === 'function') {n return attributionLike;n }n return function (frameState) {n return [attributionLike];n };n}nexport default Source;n//# sourceMappingURL=Source.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/source/Tilen */nimport { abstract } from '../util.js';nimport TileCache from '../TileCache.js';nimport TileState from '../TileState.js';nimport Event from '../events/Event.js';nimport { equivalent } from '../proj.js';nimport { toSize, scale as scaleSize } from '../size.js';nimport Source from './Source.js';nimport { getKeyZXY, withinExtentAndZ } from '../tilecoord.js';nimport { wrapX, getForProjection as getTileGridForProjection } from '../tilegrid.js';n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions]n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.n * @property {number} [cacheSize]n * @property {boolean} [opaque]n * @property {number} [tilePixelRatio]n * @property {import("../proj.js").ProjectionLike} [projection]n * @property {import("./State.js").default} [state]n * @property {import("../tilegrid/TileGrid.js").default} [tileGrid]n * @property {boolean} [wrapX=true]n * @property {number} [transition]n * @property {string} [key]n * @property {number} [zDirection=0]n */n/**n * @classdescn * Abstract base class; normally only used for creating subclasses and notn * instantiated in apps.n * Base class for sources providing images divided into a tile grid.n * @abstractn * @apin */nvar TileSource = /** @class */ (function (_super) {n __extends(TileSource, _super);n /**n * @param {Options} options SourceTile source options.n */n function TileSource(options) {n var _this = _super.call(this, {n attributions: options.attributions,n attributionsCollapsible: options.attributionsCollapsible,n projection: options.projection,n state: options.state,n wrapX: options.wrapXn }) || this;n /**n * @privaten * @type {boolean}n */n this.opaque = options.opaque !== undefined ? options.opaque : false;n /**n * @privaten * @type {number}n */n this.tilePixelRatio = options.tilePixelRatio !== undefined ?n options.tilePixelRatio : 1;n /**n * @protectedn * @type {import("../tilegrid/TileGrid.js").default}n */n _this.tileGrid = options.tileGrid !== undefined ? options.tileGrid : null;n var cacheSize = options.cacheSize;n if (cacheSize === undefined) {n var tileSize = [256, 256];n var tileGrid = options.tileGrid;n if (tileGrid) {n toSize(tileGrid.getTileSize(tileGrid.getMinZoom()), tileSize);n }n var canUseScreen = typeof screen !== 'undefined';n var width = canUseScreen ? (screen.availWidth || screen.width) : 1920;n var height = canUseScreen ? (screen.availHeight || screen.height) : 1080;n cacheSize = 4 * Math.ceil(width / tileSize) * Math.ceil(height / tileSize);n }n /**n * @protectedn * @type {import("../TileCache.js").default}n */n _this.tileCache = new TileCache(cacheSize);n /**n * @protectedn * @type {import("../size.js").Size}n */n _this.tmpSize = [0, 0];n /**n * @privaten * @type {string}n */n this.key = options.key || '';n /**n * @protectedn * @type {import("../Tile.js").Options}n */n _this.tileOptions = { transition: options.transition };n /**n * zDirection hint, read by the renderer. Indicates which resolution should be usedn * by a renderer if the views resolution does not match any resolution of the tile source.n * If 0, the nearest resolution will be used. If 1, the nearest lower resolutionn * will be used. If -1, the nearest higher resolution will be used.n * @type {number}n */n _this.zDirection = options.zDirection ? options.zDirection : 0;n return _this;n }n /**n * @return {boolean} Can expire cache.n */n TileSource.prototype.canExpireCache = function () {n return this.tileCache.canExpireCache();n };n /**n * @param {import("../proj/Projection.js").default} projection Projection.n * @param {!Object<string, import("../TileRange.js").default>} usedTiles Used tiles.n */n TileSource.prototype.expireCache = function (projection, usedTiles) {n var tileCache = this.getTileCacheForProjection(projection);n if (tileCache) {n tileCache.expireCache(usedTiles);n }n };n /**n * @param {import("../proj/Projection.js").default} projection Projection.n * @param {number} z Zoom level.n * @param {import("../TileRange.js").default} tileRange Tile range.n * @param {function(import("../Tile.js").default):(boolean|void)} callback Called with eachn * loaded tile. If the callback returns `false`, the tile will not ben * considered loaded.n * @return {boolean} The tile range is fully covered with loaded tiles.n */n TileSource.prototype.forEachLoadedTile = function (projection, z, tileRange, callback) {n var tileCache = this.getTileCacheForProjection(projection);n if (!tileCache) {n return false;n }n var covered = true;n var tile, tileCoordKey, loaded;n for (var x = tileRange.minX; x <= tileRange.maxX; ++x) {n for (var y = tileRange.minY; y <= tileRange.maxY; ++y) {n tileCoordKey = getKeyZXY(z, x, y);n loaded = false;n if (tileCache.containsKey(tileCoordKey)) {n tile = /** @type {!import("../Tile.js").default} */ (tileCache.get(tileCoordKey));n loaded = tile.getState() === TileState.LOADED;n if (loaded) {n loaded = (callback(tile) !== false);n }n }n if (!loaded) {n covered = false;n }n }n }n return covered;n };n /**n * @param {import("../proj/Projection.js").default} projection Projection.n * @return {number} Gutter.n */n TileSource.prototype.getGutterForProjection = function (projection) {n return 0;n };n /**n * Return the key to be used for all tiles in the source.n * @return {string} The key for all tiles.n * @protectedn */n TileSource.prototype.getKey = function () {n return this.key_;n };n /**n * Set the value to be used as the key for all tiles in the source.n * @param {string} key The key for tiles.n * @protectedn */n TileSource.prototype.setKey = function (key) {n if (this.key_ !== key) {n this.key_ = key;n this.changed();n }n };n /**n * @param {import("../proj/Projection.js").default} projection Projection.n * @return {boolean} Opaque.n */n TileSource.prototype.getOpaque = function (projection) {n return this.opaque_;n };n /**n * @inheritDocn */n TileSource.prototype.getResolutions = function () {n return this.tileGrid.getResolutions();n };n /**n * @abstractn * @param {number} z Tile coordinate z.n * @param {number} x Tile coordinate x.n * @param {number} y Tile coordinate y.n * @param {number} pixelRatio Pixel ratio.n * @param {import("../proj/Projection.js").default} projection Projection.n * @return {!import("../Tile.js").default} Tile.n */n TileSource.prototype.getTile = function (z, x, y, pixelRatio, projection) {n return abstract();n };n /**n * Return the tile grid of the tile source.n * @return {import("../tilegrid/TileGrid.js").default} Tile grid.n * @apin */n TileSource.prototype.getTileGrid = function () {n return this.tileGrid;n };n /**n * @param {import("../proj/Projection.js").default} projection Projection.n * @return {!import("../tilegrid/TileGrid.js").default} Tile grid.n */n TileSource.prototype.getTileGridForProjection = function (projection) {n if (!this.tileGrid) {n return getTileGridForProjection(projection);n }n else {n return this.tileGrid;n }n };n /**n * @param {import("../proj/Projection.js").default} projection Projection.n * @return {import("../TileCache.js").default} Tile cache.n * @protectedn */n TileSource.prototype.getTileCacheForProjection = function (projection) {n var thisProj = this.getProjection();n if (thisProj && !equivalent(thisProj, projection)) {n return null;n }n else {n return this.tileCache;n }n };n /**n * Get the tile pixel ratio for this source. Subclasses may override thisn * method, which is meant to return a supported pixel ratio that matches then * provided `pixelRatio` as close as possible.n * @param {number} pixelRatio Pixel ratio.n * @return {number} Tile pixel ratio.n */n TileSource.prototype.getTilePixelRatio = function (pixelRatio) {n return this.tilePixelRatio_;n };n /**n * @param {number} z Z.n * @param {number} pixelRatio Pixel ratio.n * @param {import("../proj/Projection.js").default} projection Projection.n * @return {import("../size.js").Size} Tile size.n */n TileSource.prototype.getTilePixelSize = function (z, pixelRatio, projection) {n var tileGrid = this.getTileGridForProjection(projection);n var tilePixelRatio = this.getTilePixelRatio(pixelRatio);n var tileSize = toSize(tileGrid.getTileSize(z), this.tmpSize);n if (tilePixelRatio == 1) {n return tileSize;n }n else {n return scaleSize(tileSize, tilePixelRatio, this.tmpSize);n }n };n /**n * Returns a tile coordinate wrapped around the x-axis. When the tile coordinaten * is outside the resolution and extent range of the tile grid, `null` will ben * returned.n * @param {import("../tilecoord.js").TileCoord} tileCoord Tile coordinate.n * @param {import("../proj/Projection.js").default=} opt_projection Projection.n * @return {import("../tilecoord.js").TileCoord} Tile coordinate to be passed to the tileUrlFunction orn * null if no tile URL should be created for the passed `tileCoord`.n */n TileSource.prototype.getTileCoordForTileUrlFunction = function (tileCoord, opt_projection) {n var projection = opt_projection !== undefined ?n opt_projection : this.getProjection();n var tileGrid = this.getTileGridForProjection(projection);n if (this.getWrapX() && projection.isGlobal()) {n tileCoord = wrapX(tileGrid, tileCoord, projection);n }n return withinExtentAndZ(tileCoord, tileGrid) ? tileCoord : null;n };n /**n * Remove all cached tiles from the source. The next render cycle will fetch new tiles.n * @apin */n TileSource.prototype.clear = function () {n this.tileCache.clear();n };n /**n * @inheritDocn */n TileSource.prototype.refresh = function () {n this.clear();n _super.prototype.refresh.call(this);n };n /**n * Marks a tile coord as being used, without triggering a load.n * @abstractn * @param {number} z Tile coordinate z.n * @param {number} x Tile coordinate x.n * @param {number} y Tile coordinate y.n * @param {import("../proj/Projection.js").default} projection Projection.n */n TileSource.prototype.useTile = function (z, x, y, projection) { };n return TileSource;n}(Source));n/**n * @classdescn * Events emitted by {@link module:ol/source/Tile~TileSource} instances are instances of thisn * type.n */nvar TileSourceEvent = /** @class */ (function (_super) {n __extends(TileSourceEvent, _super);n /**n * @param {string} type Type.n * @param {import("../Tile.js").default} tile The tile.n */n function TileSourceEvent(type, tile) {n var _this = _super.call(this, type) || this;n /**n * The tile related to the event.n * @type {import("../Tile.js").default}n * @apin */n _this.tile = tile;n return _this;n }n return TileSourceEvent;n}(Event));nexport { TileSourceEvent };nexport default TileSource;n//# sourceMappingURL=Tile.js.map”,“/**n * @module ol/source/TileEventTypen */n/**n * @enum {string}n */nexport default {n /**n * Triggered when a tile starts loading.n * @event module:ol/source/Tile.TileSourceEvent#tileloadstartn * @apin */n TILELOADSTART: 'tileloadstart',n /**n * Triggered when a tile finishes loading, either when its data is loaded,n * or when loading was aborted because the tile is no longer needed.n * @event module:ol/source/Tile.TileSourceEvent#tileloadendn * @apin */n TILELOADEND: 'tileloadend',n /**n * Triggered if tile loading results in an error.n * @event module:ol/source/Tile.TileSourceEvent#tileloaderrorn * @apin */n TILELOADERROR: 'tileloaderror'n};n//# sourceMappingURL=TileEventType.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/source/UrlTilen */nimport { getUid } from '../util.js';nimport TileState from '../TileState.js';nimport { expandUrl, createFromTemplates, nullTileUrlFunction } from '../tileurlfunction.js';nimport TileSource, { TileSourceEvent } from './Tile.js';nimport TileEventType from './TileEventType.js';nimport { getKeyZXY } from '../tilecoord.js';n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions]n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.n * @property {number} [cacheSize]n * @property {boolean} [opaque]n * @property {import("../proj.js").ProjectionLike} [projection]n * @property {import("./State.js").default} [state]n * @property {import("../tilegrid/TileGrid.js").default} [tileGrid]n * @property {import("../Tile.js").LoadFunction} tileLoadFunctionn * @property {number} [tilePixelRatio]n * @property {import("../Tile.js").UrlFunction} [tileUrlFunction]n * @property {string} [url]n * @property {Array<string>} [urls]n * @property {boolean} [wrapX=true]n * @property {number} [transition]n * @property {string} [key]n * @property {number} [zDirection=0]n */n/**n * @classdescn * Base class for sources providing tiles divided into a tile grid over http.n *n * @fires import("./Tile.js").TileSourceEventn */nvar UrlTile = /** @class */ (function (_super) {n __extends(UrlTile, _super);n /**n * @param {Options} options Image tile options.n */n function UrlTile(options) {n var _this = _super.call(this, {n attributions: options.attributions,n cacheSize: options.cacheSize,n opaque: options.opaque,n projection: options.projection,n state: options.state,n tileGrid: options.tileGrid,n tilePixelRatio: options.tilePixelRatio,n wrapX: options.wrapX,n transition: options.transition,n key: options.key,n attributionsCollapsible: options.attributionsCollapsible,n zDirection: options.zDirectionn }) || this;n /**n * @privaten * @type {boolean}n */n this.generateTileUrlFunction = !options.tileUrlFunction;n /**n * @protectedn * @type {import("../Tile.js").LoadFunction}n */n _this.tileLoadFunction = options.tileLoadFunction;n /**n * @protectedn * @type {import("../Tile.js").UrlFunction}n */n _this.tileUrlFunction = options.tileUrlFunction ? options.tileUrlFunction.bind(_this) : nullTileUrlFunction;n /**n * @protectedn * @type {!Array<string>|null}n */n _this.urls = null;n if (options.urls) {n _this.setUrls(options.urls);n }n else if (options.url) {n _this.setUrl(options.url);n }n /**n * @privaten * @type {!Object<string, boolean>}n */n this.tileLoadingKeys = {};n return _this;n }n /**n * Return the tile load function of the source.n * @return {import("../Tile.js").LoadFunction} TileLoadFunctionn * @apin */n UrlTile.prototype.getTileLoadFunction = function () {n return this.tileLoadFunction;n };n /**n * Return the tile URL function of the source.n * @return {import("../Tile.js").UrlFunction} TileUrlFunctionn * @apin */n UrlTile.prototype.getTileUrlFunction = function () {n return this.tileUrlFunction;n };n /**n * Return the URLs used for this source.n * When a tileUrlFunction is used instead of url or urls,n * null will be returned.n * @return {!Array<string>|null} URLs.n * @apin */n UrlTile.prototype.getUrls = function () {n return this.urls;n };n /**n * Handle tile change events.n * @param {import("../events/Event.js").default} event Event.n * @protectedn */n UrlTile.prototype.handleTileChange = function (event) {n var tile = /** @type {import("../Tile.js").default} */ (event.target);n var uid = getUid(tile);n var tileState = tile.getState();n var type;n if (tileState == TileState.LOADING) {n this.tileLoadingKeys_ = true;n type = TileEventType.TILELOADSTART;n }n else if (uid in this.tileLoadingKeys_) {n delete this.tileLoadingKeys_;n type = tileState == TileState.ERROR ? TileEventType.TILELOADERROR :n (tileState == TileState.LOADED || tileState == TileState.ABORT) ?n TileEventType.TILELOADEND : undefined;n }n if (type != undefined) {n this.dispatchEvent(new TileSourceEvent(type, tile));n }n };n /**n * Set the tile load function of the source.n * @param {import("../Tile.js").LoadFunction} tileLoadFunction Tile load function.n * @apin */n UrlTile.prototype.setTileLoadFunction = function (tileLoadFunction) {n this.tileCache.clear();n this.tileLoadFunction = tileLoadFunction;n this.changed();n };n /**n * Set the tile URL function of the source.n * @param {import("../Tile.js").UrlFunction} tileUrlFunction Tile URL function.n * @param {string=} key Optional new tile key for the source.n * @apin */n UrlTile.prototype.setTileUrlFunction = function (tileUrlFunction, key) {n this.tileUrlFunction = tileUrlFunction;n this.tileCache.pruneExceptNewestZ();n if (typeof key !== 'undefined') {n this.setKey(key);n }n else {n this.changed();n }n };n /**n * Set the URL to use for requests.n * @param {string} url URL.n * @apin */n UrlTile.prototype.setUrl = function (url) {n var urls = expandUrl(url);n this.urls = urls;n this.setUrls(urls);n };n /**n * Set the URLs to use for requests.n * @param {Array<string>} urls URLs.n * @apin */n UrlTile.prototype.setUrls = function (urls) {n this.urls = urls;n var key = urls.join('\n');n if (this.generateTileUrlFunction_) {n this.setTileUrlFunction(createFromTemplates(urls, this.tileGrid), key);n }n else {n this.setKey(key);n }n };n /**n * @inheritDocn */n UrlTile.prototype.useTile = function (z, x, y) {n var tileCoordKey = getKeyZXY(z, x, y);n if (this.tileCache.containsKey(tileCoordKey)) {n this.tileCache.get(tileCoordKey);n }n };n return UrlTile;n}(TileSource));nexport default UrlTile;n//# sourceMappingURL=UrlTile.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/source/TileImagen */nimport { ENABLE_RASTER_REPROJECTION } from '../reproj/common.js';nimport { getUid } from '../util.js';nimport ImageTile from '../ImageTile.js';nimport TileCache from '../TileCache.js';nimport TileState from '../TileState.js';nimport EventType from '../events/EventType.js';nimport { equivalent, get as getProjection } from '../proj.js';nimport ReprojTile from '../reproj/Tile.js';nimport UrlTile from './UrlTile.js';nimport { getKey, getKeyZXY } from '../tilecoord.js';nimport { getForProjection as getTileGridForProjection } from '../tilegrid.js';n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions] Attributions.n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.n * @property {number} [cacheSize] Tile cache size. The default depends on the screen size. Will increase if too small.n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note thatn * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.n * See developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.n * @property {boolean} [opaque=true] Whether the layer is opaque.n * @property {import("../proj.js").ProjectionLike} [projection] Projection. Default is the view projection.n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).n * Higher values can increase reprojection performance, but decrease precision.n * @property {import("./State.js").default} [state] Source state.n * @property {typeof import("../ImageTile.js").default} [tileClass] Class used to instantiate image tiles.n * Default is {@link module:ol/ImageTile~ImageTile}.n * @property {import("../tilegrid/TileGrid.js").default} [tileGrid] Tile grid.n * @property {import("../Tile.js").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default isn * “`jsn * function(imageTile, src) {n * imageTile.getImage().src = src;n * };n * “`n * @property {number} [tilePixelRatio=1] The pixel ratio used by the tile service. For example, if the tilen * service advertizes 256px by 256px tiles but actually sends 512pxn * by 512px images (for retina/hidpi devices) then `tilePixelRatio`n * should be set to `2`.n * @property {import("../Tile.js").UrlFunction} [tileUrlFunction] Optional function to get tile URL given a tile coordinate and the projection.n * @property {string} [url] URL template. Must include `{x}`, `{y}` or `{-y}`, and `{z}` placeholders.n * A `{?-?}` template pattern, for example `subdomain{a-f}.domain.com`, may ben * used instead of defining each one separately in the `urls` option.n * @property {Array<string>} [urls] An array of URL templates.n * @property {boolean} [wrapX] Whether to wrap the world horizontally. The default, is ton * request out-of-bounds tiles from the server. When set to `false`, only onen * world will be rendered. When set to `true`, tiles will be requested for onen * world only, but they will be wrapped horizontally to render multiple worlds.n * @property {number} [transition] Duration of the opacity transition for rendering.n * To disable the opacity transition, pass `transition: 0`.n * @property {string} [key] Optional tile key for proper cache fetchingn * @property {number} [zDirection=0] Indicate which resolution should be usedn * by a renderer if the view resolution does not match any resolution of the tile source.n * If 0, the nearest resolution will be used. If 1, the nearest lower resolutionn * will be used. If -1, the nearest higher resolution will be used.n */n/**n * @classdescn * Base class for sources providing images divided into a tile grid.n *n * @fires import("./Tile.js").TileSourceEventn * @apin */nvar TileImage = /** @class */ (function (_super) {n __extends(TileImage, _super);n /**n * @param {!Options} options Image tile options.n */n function TileImage(options) {n var _this = _super.call(this, {n attributions: options.attributions,n cacheSize: options.cacheSize,n opaque: options.opaque,n projection: options.projection,n state: options.state,n tileGrid: options.tileGrid,n tileLoadFunction: options.tileLoadFunction ?n options.tileLoadFunction : defaultTileLoadFunction,n tilePixelRatio: options.tilePixelRatio,n tileUrlFunction: options.tileUrlFunction,n url: options.url,n urls: options.urls,n wrapX: options.wrapX,n transition: options.transition,n key: options.key,n attributionsCollapsible: options.attributionsCollapsible,n zDirection: options.zDirectionn }) || this;n /**n * @protectedn * @type {?string}n */n _this.crossOrigin =n options.crossOrigin !== undefined ? options.crossOrigin : null;n /**n * @protectedn * @type {typeof ImageTile}n */n _this.tileClass = options.tileClass !== undefined ?n options.tileClass : ImageTile;n /**n * @protectedn * @type {!Object<string, TileCache>}n */n _this.tileCacheForProjection = {};n /**n * @protectedn * @type {!Object<string, import("../tilegrid/TileGrid.js").default>}n */n _this.tileGridForProjection = {};n /**n * @privaten * @type {number|undefined}n */n this.reprojectionErrorThreshold = options.reprojectionErrorThreshold;n /**n * @privaten * @type {boolean}n */n this.renderReprojectionEdges = false;n return _this;n }n /**n * @inheritDocn */n TileImage.prototype.canExpireCache = function () {n if (!ENABLE_RASTER_REPROJECTION) {n return _super.prototype.canExpireCache.call(this);n }n if (this.tileCache.canExpireCache()) {n return true;n }n else {n for (var key in this.tileCacheForProjection) {n if (this.tileCacheForProjection.canExpireCache()) {n return true;n }n }n }n return false;n };n /**n * @inheritDocn */n TileImage.prototype.expireCache = function (projection, usedTiles) {n if (!ENABLE_RASTER_REPROJECTION) {n _super.prototype.expireCache.call(this, projection, usedTiles);n return;n }n var usedTileCache = this.getTileCacheForProjection(projection);n this.tileCache.expireCache(this.tileCache == usedTileCache ? usedTiles : {});n for (var id in this.tileCacheForProjection) {n var tileCache = this.tileCacheForProjection;n tileCache.expireCache(tileCache == usedTileCache ? usedTiles : {});n }n };n /**n * @inheritDocn */n TileImage.prototype.getGutterForProjection = function (projection) {n if (ENABLE_RASTER_REPROJECTION &&n this.getProjection() && projection && !equivalent(this.getProjection(), projection)) {n return 0;n }n else {n return this.getGutter();n }n };n /**n * @return {number} Gutter.n */n TileImage.prototype.getGutter = function () {n return 0;n };n /**n * @inheritDocn */n TileImage.prototype.getOpaque = function (projection) {n if (ENABLE_RASTER_REPROJECTION &&n this.getProjection() && projection && !equivalent(this.getProjection(), projection)) {n return false;n }n else {n return _super.prototype.getOpaque.call(this, projection);n }n };n /**n * @inheritDocn */n TileImage.prototype.getTileGridForProjection = function (projection) {n if (!ENABLE_RASTER_REPROJECTION) {n return _super.prototype.getTileGridForProjection.call(this, projection);n }n var thisProj = this.getProjection();n if (this.tileGrid && (!thisProj || equivalent(thisProj, projection))) {n return this.tileGrid;n }n else {n var projKey = getUid(projection);n if (!(projKey in this.tileGridForProjection)) {n this.tileGridForProjection = getTileGridForProjection(projection);n }n return (n /** @type {!import("../tilegrid/TileGrid.js").default} */ (this.tileGridForProjection));n }n };n /**n * @inheritDocn */n TileImage.prototype.getTileCacheForProjection = function (projection) {n if (!ENABLE_RASTER_REPROJECTION) {n return _super.prototype.getTileCacheForProjection.call(this, projection);n }n var thisProj = this.getProjection();n if (!thisProj || equivalent(thisProj, projection)) {n return this.tileCache;n }n else {n var projKey = getUid(projection);n if (!(projKey in this.tileCacheForProjection)) {n this.tileCacheForProjection = new TileCache(this.tileCache.highWaterMark);n }n return this.tileCacheForProjection;n }n };n /**n * @param {number} z Tile coordinate z.n * @param {number} x Tile coordinate x.n * @param {number} y Tile coordinate y.n * @param {number} pixelRatio Pixel ratio.n * @param {import("../proj/Projection.js").default} projection Projection.n * @param {string} key The key set on the tile.n * @return {!import("../Tile.js").default} Tile.n * @privaten */n TileImage.prototype.createTile_ = function (z, x, y, pixelRatio, projection, key) {n var tileCoord = [z, x, y];n var urlTileCoord = this.getTileCoordForTileUrlFunction(tileCoord, projection);n var tileUrl = urlTileCoord ?n this.tileUrlFunction(urlTileCoord, pixelRatio, projection) : undefined;n var tile = new this.tileClass(tileCoord, tileUrl !== undefined ? TileState.IDLE : TileState.EMPTY, tileUrl !== undefined ? tileUrl : '', this.crossOrigin, this.tileLoadFunction, this.tileOptions);n tile.key = key;n tile.addEventListener(EventType.CHANGE, this.handleTileChange.bind(this));n return tile;n };n /**n * @inheritDocn */n TileImage.prototype.getTile = function (z, x, y, pixelRatio, projection) {n var sourceProjection = /** @type {!import("../proj/Projection.js").default} */ (this.getProjection());n if (!ENABLE_RASTER_REPROJECTION ||n !sourceProjection || !projection || equivalent(sourceProjection, projection)) {n return this.getTileInternal(z, x, y, pixelRatio, sourceProjection || projection);n }n else {n var cache = this.getTileCacheForProjection(projection);n var tileCoord = [z, x, y];n var tile = void 0;n var tileCoordKey = getKey(tileCoord);n if (cache.containsKey(tileCoordKey)) {n tile = /** @type {!import("../Tile.js").default} */ (cache.get(tileCoordKey));n }n var key = this.getKey();n if (tile && tile.key == key) {n return tile;n }n else {n var sourceTileGrid = this.getTileGridForProjection(sourceProjection);n var targetTileGrid = this.getTileGridForProjection(projection);n var wrappedTileCoord = this.getTileCoordForTileUrlFunction(tileCoord, projection);n var newTile = new ReprojTile(sourceProjection, sourceTileGrid, projection, targetTileGrid, tileCoord, wrappedTileCoord, this.getTilePixelRatio(pixelRatio), this.getGutter(), function (z, x, y, pixelRatio) {n return this.getTileInternal(z, x, y, pixelRatio, sourceProjection);n }.bind(this), this.reprojectionErrorThreshold_, this.renderReprojectionEdges_);n newTile.key = key;n if (tile) {n newTile.interimTile = tile;n newTile.refreshInterimChain();n cache.replace(tileCoordKey, newTile);n }n else {n cache.set(tileCoordKey, newTile);n }n return newTile;n }n }n };n /**n * @param {number} z Tile coordinate z.n * @param {number} x Tile coordinate x.n * @param {number} y Tile coordinate y.n * @param {number} pixelRatio Pixel ratio.n * @param {!import("../proj/Projection.js").default} projection Projection.n * @return {!import("../Tile.js").default} Tile.n * @protectedn */n TileImage.prototype.getTileInternal = function (z, x, y, pixelRatio, projection) {n var tile = null;n var tileCoordKey = getKeyZXY(z, x, y);n var key = this.getKey();n if (!this.tileCache.containsKey(tileCoordKey)) {n tile = this.createTile_(z, x, y, pixelRatio, projection, key);n this.tileCache.set(tileCoordKey, tile);n }n else {n tile = this.tileCache.get(tileCoordKey);n if (tile.key != key) {n // The source's params changed. If the tile has an interim tile and if wen // can use it then we use it. Otherwise we create a new tile. In bothn // cases we attempt to assign an interim tile to the new tile.n var interimTile = tile;n tile = this.createTile_(z, x, y, pixelRatio, projection, key);n //make the new tile the head of the list,n if (interimTile.getState() == TileState.IDLE) {n //the old tile hasn't begun loading yet, and is now outdated, so we can simply discard itn tile.interimTile = interimTile.interimTile;n }n else {n tile.interimTile = interimTile;n }n tile.refreshInterimChain();n this.tileCache.replace(tileCoordKey, tile);n }n }n return tile;n };n /**n * Sets whether to render reprojection edges or not (usually for debugging).n * @param {boolean} render Render the edges.n * @apin */n TileImage.prototype.setRenderReprojectionEdges = function (render) {n if (!ENABLE_RASTER_REPROJECTION ||n this.renderReprojectionEdges_ == render) {n return;n }n this.renderReprojectionEdges_ = render;n for (var id in this.tileCacheForProjection) {n this.tileCacheForProjection.clear();n }n this.changed();n };n /**n * Sets the tile grid to use when reprojecting the tiles to the givenn * projection instead of the default tile grid for the projection.n *n * This can be useful when the default tile grid cannot be createdn * (e.g. projection has no extent defined) orn * for optimization reasons (custom tile size, resolutions, …).n *n * @param {import("../proj.js").ProjectionLike} projection Projection.n * @param {import("../tilegrid/TileGrid.js").default} tilegrid Tile grid to use for the projection.n * @apin */n TileImage.prototype.setTileGridForProjection = function (projection, tilegrid) {n if (ENABLE_RASTER_REPROJECTION) {n var proj = getProjection(projection);n if (proj) {n var projKey = getUid(proj);n if (!(projKey in this.tileGridForProjection)) {n this.tileGridForProjection = tilegrid;n }n }n }n };n return TileImage;n}(UrlTile));n/**n * @param {ImageTile} imageTile Image tile.n * @param {string} src Source.n */nfunction defaultTileLoadFunction(imageTile, src) {n /** @type {HTMLImageElement|HTMLVideoElement} */ (imageTile.getImage()).src = src;n}nexport default TileImage;n//# sourceMappingURL=TileImage.js.map”,“/**n * @module ol/source/BingMapsn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { createFromTileUrlFunctions } from '../tileurlfunction.js';nimport { applyTransform, intersects } from '../extent.js';nimport { jsonp as requestJSONP } from '../net.js';nimport { get as getProjection, getTransformFromProjections } from '../proj.js';nimport SourceState from './State.js';nimport TileImage from './TileImage.js';nimport { createOrUpdate } from '../tilecoord.js';nimport { createXYZ, extentFromProjection } from '../tilegrid.js';n/**n * @param {import('../tilecoord.js').TileCoord} tileCoord Tile coord.n * @return {string} Quad key.n */nexport function quadKey(tileCoord) {n var z = tileCoord;n var digits = new Array(z);n var mask = 1 << (z - 1);n var i, charCode;n for (i = 0; i < z; ++i) {n // 48 is charCode for 0 - '0'.charCodeAt(0)n charCode = 48;n if (tileCoord & mask) {n charCode += 1;n }n if (tileCoord & mask) {n charCode += 2;n }n digits = String.fromCharCode(charCode);n mask >>= 1;n }n return digits.join('');n}n/**n * The attribution containing a link to the Microsoft® Bing™ Maps Platform APIs’n * Terms Of Use.n * @constn * @type {string}n */nvar TOS_ATTRIBUTION = '<a class="ol-attribution-bing-tos" ' +n 'href="www.microsoft.com/maps/product/terms.html" target="_blank">' +n 'Terms of Use</a>';n/**n * @typedef {Object} Optionsn * @property {number} [cacheSize] Tile cache size. The default depends on the screen size. Will increase if too small.n * @property {boolean} [hidpi=false] If `true` hidpi tiles will be requested.n * @property {string} [culture='en-us'] Culture code.n * @property {string} key Bing Maps API key. Get yours at www.bingmapsportal.com/.n * @property {string} imagerySet Type of imagery.n * @property {number} [maxZoom=21] Max zoom. Default is what's advertized by the BingMaps service.n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).n * Higher values can increase reprojection performance, but decrease precision.n * @property {import("../Tile.js").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default isn * “`jsn * function(imageTile, src) {n * imageTile.getImage().src = src;n * };n * “`n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.n * @property {number} [transition] Duration of the opacity transition for rendering.n * To disable the opacity transition, pass `transition: 0`.n */n/**n * @typedef {Object} BingMapsImageryMetadataResponsen * @property {number} statusCode The response status coden * @property {string} statusDescription The response status descriptionn * @property {string} authenticationResultCode The authentication result coden * @property {Array<ResourceSet>} resourceSets The array of resource setsn */n/**n * @typedef {Object} ResourceSetn * @property {Array<Resource>} resourcesn */n/**n * @typedef {Object} Resourcen * @property {number} imageHeight The image heightn * @property {number} imageWidth The image widthn * @property {number} zoomMin The minimum zoom leveln * @property {number} zoomMax The maximum zoom leveln * @property {string} imageUrl The image URLn * @property {Array<string>} imageUrlSubdomains The image URL subdomains for rotationn * @property {Array<ImageryProvider>} [imageryProviders] The array of ImageryProvidersn */n/**n * @typedef {Object} ImageryProvidern * @property {Array<CoverageArea>} coverageAreas The coverage areasn * @property {string} [attribution] The attributionn */n/**n * @typedef {Object} CoverageArean * @property {number} zoomMin The minimum zoomn * @property {number} zoomMax The maximum zoomn * @property {Array<number>} bbox The coverage bounding boxn */n/**n * @classdescn * Layer source for Bing Maps tile data.n * @apin */nvar BingMaps = /** @class */ (function (_super) {n __extends(BingMaps, _super);n /**n * @param {Options} options Bing Maps options.n */n function BingMaps(options) {n var _this = this;n var hidpi = options.hidpi !== undefined ? options.hidpi : false;n _this = _super.call(this, {n cacheSize: options.cacheSize,n crossOrigin: 'anonymous',n opaque: true,n projection: getProjection('EPSG:3857'),n reprojectionErrorThreshold: options.reprojectionErrorThreshold,n state: SourceState.LOADING,n tileLoadFunction: options.tileLoadFunction,n tilePixelRatio: hidpi ? 2 : 1,n wrapX: options.wrapX !== undefined ? options.wrapX : true,n transition: options.transitionn }) || this;n /**n * @privaten * @type {boolean}n */n this.hidpi = hidpi;n /**n * @privaten * @type {string}n */n this.culture = options.culture !== undefined ? options.culture : 'en-us';n /**n * @privaten * @type {number}n */n this.maxZoom = options.maxZoom !== undefined ? options.maxZoom : -1;n /**n * @privaten * @type {string}n */n this.apiKey = options.key;n /**n * @privaten * @type {string}n */n this.imagerySet = options.imagerySet;n var url = 'dev.virtualearth.net/REST/v1/Imagery/Metadata/' +n this.imagerySet +n '?uriScheme=https&include=ImageryProviders&key=' + this.apiKey +n '&c=' + this.culture;n requestJSONP(url, _this.handleImageryMetadataResponse.bind(_this), undefined, 'jsonp');n return _this;n }n /**n * Get the api key used for this source.n *n * @return {string} The api key.n * @apin */n BingMaps.prototype.getApiKey = function () {n return this.apiKey_;n };n /**n * Get the imagery set associated with this source.n *n * @return {string} The imagery set.n * @apin */n BingMaps.prototype.getImagerySet = function () {n return this.imagerySet_;n };n /**n * @param {BingMapsImageryMetadataResponse} response Response.n */n BingMaps.prototype.handleImageryMetadataResponse = function (response) {n if (response.statusCode != 200 ||n response.statusDescription != 'OK' ||n response.authenticationResultCode != 'ValidCredentials' ||n response.resourceSets.length != 1 ||n response.resourceSets.resources.length != 1) {n this.setState(SourceState.ERROR);n return;n }n var resource = response.resourceSets.resources;n var maxZoom = this.maxZoom_ == -1 ? resource.zoomMax : this.maxZoom_;n var sourceProjection = this.getProjection();n var extent = extentFromProjection(sourceProjection);n var scale = this.hidpi_ ? 2 : 1;n var tileSize = resource.imageWidth == resource.imageHeight ?n resource.imageWidth / scale :n [resource.imageWidth / scale, resource.imageHeight / scale];n var tileGrid = createXYZ({n extent: extent,n minZoom: resource.zoomMin,n maxZoom: maxZoom,n tileSize: tileSizen });n this.tileGrid = tileGrid;n var culture = this.culture_;n var hidpi = this.hidpi_;n this.tileUrlFunction = createFromTileUrlFunctions(resource.imageUrlSubdomains.map(function (subdomain) {n /** @type {import('../tilecoord.js').TileCoord} */n var quadKeyTileCoord = [0, 0, 0];n var imageUrl = resource.imageUrln .replace('{subdomain}', subdomain)n .replace('{culture}', culture);n return (n /**n * @param {import("../tilecoord.js").TileCoord} tileCoord Tile coordinate.n * @param {number} pixelRatio Pixel ratio.n * @param {import("../proj/Projection.js").default} projection Projection.n * @return {string|undefined} Tile URL.n */n function (tileCoord, pixelRatio, projection) {n if (!tileCoord) {n return undefined;n }n else {n createOrUpdate(tileCoord, tileCoord, tileCoord, quadKeyTileCoord);n var url = imageUrl;n if (hidpi) {n url += '&dpi=d1&device=mobile';n }n return url.replace('{quadkey}', quadKey(quadKeyTileCoord));n }n });n }));n if (resource.imageryProviders) {n var transform_1 = getTransformFromProjections(getProjection('EPSG:4326'), this.getProjection());n this.setAttributions(function (frameState) {n var attributions = [];n var viewState = frameState.viewState;n var tileGrid = this.getTileGrid();n var z = tileGrid.getZForResolution(viewState.resolution, this.zDirection);n var tileCoord = tileGrid.getTileCoordForCoordAndZ(viewState.center, z);n var zoom = tileCoord;n resource.imageryProviders.map(function (imageryProvider) {n var intersecting = false;n var coverageAreas = imageryProvider.coverageAreas;n for (var i = 0, ii = coverageAreas.length; i < ii; ++i) {n var coverageArea = coverageAreas;n if (zoom >= coverageArea.zoomMin && zoom <= coverageArea.zoomMax) {n var bbox = coverageArea.bbox;n var epsg4326Extent = [bbox, bbox, bbox, bbox];n var extent_1 = applyTransform(epsg4326Extent, transform_1);n if (intersects(extent_1, frameState.extent)) {n intersecting = true;n break;n }n }n }n if (intersecting) {n attributions.push(imageryProvider.attribution);n }n });n attributions.push(TOS_ATTRIBUTION);n return attributions;n }.bind(this));n }n this.setState(SourceState.READY);n };n return BingMaps;n}(TileImage));nexport default BingMaps;n//# sourceMappingURL=BingMaps.js.map”,“/**n * @module ol/source/XYZn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport TileImage from './TileImage.js';nimport { createXYZ, extentFromProjection } from '../tilegrid.js';n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions] Attributions.n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.n * @property {number} [cacheSize] Tile cache size. The default depends on the screen size. Will increase if too small.n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note thatn * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.n * See developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.n * @property {boolean} [opaque=true] 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=18] Optional max zoom level.n * @property {number} [minZoom=0] Optional min zoom level.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 isn * “`jsn * 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 512pxn * 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 * @property {import("../Tile.js").UrlFunction} [tileUrlFunction] Optional function to getn * 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<string>} [urls] An array of URL templates.n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.n * @property {number} [transition] Duration of the opacity transition for rendering.n * To disable the opacity transition, pass `transition: 0`.n * @property {number} [zDirection=0] Indicate which resolution should be usedn * by a renderer if the view resolution does not match any resolution of the tile source.n * If 0, the nearest resolution will be used. If 1, the nearest lower resolutionn * will be used. If -1, the nearest higher resolution will be used.n */n/**n * @classdescn * Layer source for tile data with URLs in a set XYZ format that aren * defined in a URL template. By default, this follows the widely-usedn * Google grid where `x` 0 and `y` 0 are in the top left. Grids liken * TMS where `x` 0 and `y` 0 are in the bottom left can be used byn * using the `{-y}` placeholder in the URL template, so long as then * source does not have a custom tile grid. In this case,n * {@link module:ol/source/TileImage} can be used with a `tileUrlFunction`n * such as:n *n * tileUrlFunction: function(coordinate) {n * return 'mapserver.com/' + coordinate + '/' +n * coordinate + '/' + coordinate + '.png';n * }n *n * @apin */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 projection = options.projection !== undefined ?n options.projection : 'EPSG:3857';n var tileGrid = options.tileGrid !== undefined ? options.tileGrid :n createXYZ({n extent: extentFromProjection(projection),n maxZoom: options.maxZoom,n minZoom: options.minZoom,n tileSize: options.tileSizen });n _this = _super.call(this, {n attributions: options.attributions,n cacheSize: options.cacheSize,n crossOrigin: options.crossOrigin,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.zDirectionn }) || this;n return _this;n }n return XYZ;n}(TileImage));nexport default XYZ;n//# sourceMappingURL=XYZ.js.map”,“/**n * @module ol/source/CartoDBn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { assign } from '../obj.js';nimport SourceState from './State.js';nimport XYZ from './XYZ.js';n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions] Attributions.n * @property {number} [cacheSize] Tile cache size. The default depends on the screen size. Will increase if too small.n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note thatn * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.n * See developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.n * @property {import("../proj.js").ProjectionLike} [projection='EPSG:3857'] Projection.n * @property {number} [maxZoom=18] Max zoom.n * @property {number} [minZoom] Minimum zoom.n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.n * @property {Object} [config] If using anonymous maps, the CartoDB config to use. Seen * docs.cartodb.com/cartodb-platform/maps-api/anonymous-maps/n * for more detail.n * If using named maps, a key-value lookup with the template parameters.n * See docs.cartodb.com/cartodb-platform/maps-api/named-maps/n * for more detail.n * @property {string} [map] If using named maps, this will be the name of the template to load.n * See docs.cartodb.com/cartodb-platform/maps-api/named-maps/n * for more detail.n * @property {string} account If using named maps, this will be the name of the template to load.n */n/**n * @typedef {Object} CartoDBLayerInfon * @property {string} layergroupid The layer group IDn * @property {{https: string}} cdn_url The CDN URLn */n/**n * @classdescn * Layer source for the CartoDB Maps API.n * @apin */nvar CartoDB = /** @class */ (function (_super) {n __extends(CartoDB, _super);n /**n * @param {Options} options CartoDB options.n */n function CartoDB(options) {n var _this = _super.call(this, {n attributions: options.attributions,n cacheSize: options.cacheSize,n crossOrigin: options.crossOrigin,n maxZoom: options.maxZoom !== undefined ? options.maxZoom : 18,n minZoom: options.minZoom,n projection: options.projection,n wrapX: options.wrapXn }) || this;n /**n * @type {string}n * @privaten */n this.account = options.account;n /**n * @type {string}n * @privaten */n this.mapId = options.map || '';n /**n * @type {!Object}n * @privaten */n this.config = options.config || {};n /**n * @type {!Object<string, CartoDBLayerInfo>}n * @privaten */n this.templateCache = {};n this.initializeMap();n return _this;n }n /**n * Returns the current config.n * @return {!Object} The current configuration.n * @apin */n CartoDB.prototype.getConfig = function () {n return this.config_;n };n /**n * Updates the carto db config.n * @param {Object} config a key-value lookup. Values will replace current valuesn * in the config.n * @apin */n CartoDB.prototype.updateConfig = function (config) {n assign(this.config_, config);n this.initializeMap_();n };n /**n * Sets the CartoDB confign * @param {Object} config In the case of anonymous maps, a CartoDB configurationn * object.n * If using named maps, a key-value lookup with the template parameters.n * @apin */n CartoDB.prototype.setConfig = function (config) {n this.config_ = config || {};n this.initializeMap_();n };n /**n * Issue a request to initialize the CartoDB map.n * @privaten */n CartoDB.prototype.initializeMap_ = function () {n var paramHash = JSON.stringify(this.config_);n if (this.templateCache_) {n this.applyTemplate_(this.templateCache_);n return;n }n var mapUrl = 'https://' + this.account_ + '.carto.com/api/v1/map';n if (this.mapId_) {n mapUrl += '/named/' + this.mapId_;n }n var client = new XMLHttpRequest();n client.addEventListener('load', this.handleInitResponse_.bind(this, paramHash));n client.addEventListener('error', this.handleInitError_.bind(this));n client.open('POST', mapUrl);n client.setRequestHeader('Content-type', 'application/json');n client.send(JSON.stringify(this.config_));n };n /**n * Handle map initialization response.n * @param {string} paramHash a hash representing the parameter set that was usedn * for the requestn * @param {Event} event Event.n * @privaten */n CartoDB.prototype.handleInitResponse_ = function (paramHash, event) {n var client = /** @type {XMLHttpRequest} */ (event.target);n // status will be 0 for file:// urlsn if (!client.status || client.status >= 200 && client.status < 300) {n var response = void 0;n try {n response = /** @type {CartoDBLayerInfo} */ (JSON.parse(client.responseText));n }n catch (err) {n this.setState(SourceState.ERROR);n return;n }n this.applyTemplate_(response);n this.templateCache_ = response;n this.setState(SourceState.READY);n }n else {n this.setState(SourceState.ERROR);n }n };n /**n * @privaten * @param {Event} event Event.n */n CartoDB.prototype.handleInitError_ = function (event) {n this.setState(SourceState.ERROR);n };n /**n * Apply the new tile urls returned by carto dbn * @param {CartoDBLayerInfo} data Result of carto db call.n * @privaten */n CartoDB.prototype.applyTemplate_ = function (data) {n var tilesUrl = 'https://' + data.cdn_url.https + '/' + this.account_ +n '/api/v1/map/' + data.layergroupid + '/{z}/{x}/{y}.png';n this.setUrl(tilesUrl);n };n return CartoDB;n}(XYZ));nexport default CartoDB;n//# sourceMappingURL=CartoDB.js.map”,“/**n * @module ol/source/VectorEventTypen */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#addfeaturen * @apin */n ADDFEATURE: 'addfeature',n /**n * Triggered when a feature is updated.n * @event module:ol/source/Vector.VectorSourceEvent#changefeaturen * @apin */n CHANGEFEATURE: 'changefeature',n /**n * Triggered when the clear method is called on the source.n * @event module:ol/source/Vector.VectorSourceEvent#clearn * @apin */n CLEAR: 'clear',n /**n * Triggered when a feature is removed from the source.n * See {@link module:ol/source/Vector#clear source.clear()} for exceptions.n * @event module:ol/source/Vector.VectorSourceEvent#removefeaturen * @apin */n REMOVEFEATURE: 'removefeature'n};n//# sourceMappingURL=VectorEventType.js.map”,“/**n * @module ol/structs/RBushn */nimport { getUid } from '../util.js';nimport RBush_ from 'rbush';nimport { createOrUpdate, equals } from '../extent.js';nimport { isEmpty } from '../obj.js';n/**n * @typedef {Object} Entryn * @property {number} minXn * @property {number} minYn * @property {number} maxXn * @property {number} maxYn * @property {Object} [value]n */n/**n * @classdescn * Wrapper around the RBush by Vladimir Agafonkin.n * See github.com/mourner/rbush.n *n * @template Tn */nvar RBush = /** @class */ (function () {n /**n * @param {number=} opt_maxEntries Max entries.n */n function RBush(opt_maxEntries) {n /**n * @privaten */n this.rbush_ = new RBush_(opt_maxEntries);n /**n * A mapping between the objects added to this rbush wrappern * and the objects that are actually added to the internal rbush.n * @privaten * @type {Object<string, Entry>}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,n minY: extent,n maxX: extent,n maxY: extent,n value: valuen };n this.rbush_.insert(item);n this.items_ = item;n };n /**n * Bulk-insert values into the RBush.n * @param {Array<import("../extent.js").Extent>} extents Extents.n * @param {Array<T>} 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;n var value = values;n /** @type {Entry} */n var item = {n minX: extent,n minY: extent,n maxX: extent,n maxY: extent,n value: valuen };n items = item;n this.items_ = 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 then // internal rbush. then use that object to do the removal.n var item = this.items_;n delete this.items_;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_;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<T>} 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<T>} All in extent.n */n RBush.prototype.getInExtent = function (extent) {n /** @type {Entry} */n var bbox = {n minX: extent,n minY: extent,n maxX: extent,n maxY: extentn };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 withoutn * 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<T>} values Values.n * @param {function(T): *} callback Callback.n * @privaten * @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);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_ = rbush.items_;n }n };n return RBush;n}());nexport default RBush;n//# sourceMappingURL=RBush.js.map”,“/**n * @module ol/source/Vectorn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { getUid } from '../util.js';nimport Collection from '../Collection.js';nimport CollectionEventType from '../CollectionEventType.js';nimport ObjectEventType from '../ObjectEventType.js';nimport { extend } from '../array.js';nimport { assert } from '../asserts.js';nimport { listen, unlistenByKey } from '../events.js';nimport Event from '../events/Event.js';nimport EventType from '../events/EventType.js';nimport { containsExtent, equals } from '../extent.js';nimport { xhr } from '../featureloader.js';nimport { TRUE, VOID } from '../functions.js';nimport { all as allStrategy } from '../loadingstrategy.js';nimport { isEmpty, getValues } from '../obj.js';nimport Source from './Source.js';nimport SourceState from './State.js';nimport VectorEventType from './VectorEventType.js';nimport RBush from '../structs/RBush.js';n/**n * A function that takes an {@link module:ol/extent~Extent} and a resolution as arguments, andn * returns an array of {@link module:ol/extent~Extent} with the extents to load. Usually thisn * is one of the standard {@link module:ol/loadingstrategy} strategies.n *n * @typedef {function(import("../extent.js").Extent, number): Array<import("../extent.js").Extent>} LoadingStrategyn * @apin */n/**n * @classdescn * Events emitted by {@link module:ol/source/Vector} instances are instances of thisn * type.n * @template {import("../geom/Geometry.js").default} Geometryn */nvar VectorSourceEvent = /** @class */ (function (_super) {n __extends(VectorSourceEvent, _super);n /**n * @param {string} type Type.n * @param {import("../Feature.js").default<Geometry>=} opt_feature Feature.n */n function VectorSourceEvent(type, opt_feature) {n var _this = _super.call(this, type) || this;n /**n * The feature being added or removed.n * @type {import("../Feature.js").default<Geometry>|undefined}n * @apin */n _this.feature = opt_feature;n return _this;n }n return VectorSourceEvent;n}(Event));nexport { VectorSourceEvent };n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions] Attributions.n * @property {Array<import("../Feature.js").default>|Collection<import("../Feature.js").default>} [features]n * Features. If provided as {@link module:ol/Collection}, the features in the sourcen * and the collection will stay in sync.n * @property {import("../format/Feature.js").default} [format] The feature format used by the XHRn * 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 XHRn * feature loader.n *n * Example:n *n * “`jsn * 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) {n * var proj = projection.getCode();n * var url = '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 * }n * xhr.onerror = onError;n * xhr.onload = function() {n * if (xhr.status == 200) {n * vectorSource.addFeatures(n * vectorSource.getFormat().readFeatures(xhr.responseText));n * } else {n * onError();n * }n * }n * xhr.send();n * },n * strategy: bboxn * });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 administrativen * boundaries or TopoJSON sources) allows the renderer to optimise fill andn * 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 loadern * (see {@link module:ol/featureloader~xhr}). Use a `string` and ann * {@link module:ol/loadingstrategy~all} for a one-off download of all features fromn * the given URL. Use a {@link module:ol/featureloader~FeatureUrlFunction} to generate the url withn * other loading strategies.n * Requires `format` to be set as well.n * When default XHR feature loader is provided, the features willn * be transformed from the data projection to the view projectionn * during parsing. If your remote data source does not advertise its projectionn * properly, this transformation will be incorrect. For some formats, then * default projection (usually EPSG:4326) can be overridden by setting then * dataProjection constructor option on the format.n * Note that if a source contains non-feature data, such as a GeoJSON geometryn * 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 andn * added frequently, and the total number of features is low, setting this ton * `false` may improve performance.n *n * Note thatn * {@link module:ol/source/Vector~VectorSource#getFeaturesInExtent},n * {@link module:ol/source/Vector~VectorSource#getClosestFeatureToCoordinate} andn * {@link module:ol/source/Vector~VectorSource#getExtent} cannot be used when `useSpatialIndex` isn * set to `false`, and {@link module:ol/source/Vector~VectorSource#forEachFeatureInExtent} will loopn * through all features.n *n * When set to `false`, the features will be maintained in ann * {@link module:ol/Collection}, which can be retrieved throughn * {@link module:ol/source/Vector~VectorSource#getFeaturesCollection}.n * @property {boolean} [wrapX=true] Wrap the world horizontally. For vector editing across then * -180° and 180° meridians to work properly, this should be set to `false`. Then * resulting geometry coordinates will then exceed the world bounds.n */n/**n * @classdescn * Provides a source of features for vector layers. Vector features providedn * by this source are suitable for editing. See {@link module:ol/source/VectorTile~VectorTile} forn * vector data that is optimized for rendering.n *n * @fires VectorSourceEventn * @apin * @template {import("../geom/Geometry.js").default} Geometryn */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 projection: undefined,n state: SourceState.READY,n wrapX: options.wrapX !== undefined ? options.wrapX : truen }) || this;n /**n * @privaten * @type {import("../featureloader.js").FeatureLoader}n */n this.loader = VOID;n /**n * @privaten * @type {import("../format/Feature.js").default|undefined}n */n this.format = options.format;n /**n * @privaten * @type {boolean}n */n this.overlaps = options.overlaps == undefined ? true : options.overlaps;n /**n * @privaten * @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 setn // create a XHR feature loader for "url" and "format"n this.loader = xhr(this.url, /** @type {import("../format/Feature.js").default} */ (this.format));n }n /**n * @privaten * @type {LoadingStrategy}n */n this.strategy = options.strategy !== undefined ? options.strategy : allStrategy;n var useSpatialIndex = options.useSpatialIndex !== undefined ? options.useSpatialIndex : true;n /**n * @privaten * @type {RBush<import("../Feature.js").default<Geometry>>}n */n this.featuresRtree = useSpatialIndex ? new RBush() : null;n /**n * @privaten * @type {RBush<{extent: import("../extent.js").Extent}>}n */n this.loadedExtentsRtree = new RBush();n /**n * @privaten * @type {!Object<string, import("../Feature.js").default<Geometry>>}n */n this.nullGeometryFeatures = {};n /**n * A lookup of features by id (the return from feature.getId()).n * @privaten * @type {!Object<string, import("../Feature.js").default<Geometry>>}n */n this.idIndex = {};n /**n * A lookup of features by uid (using getUid(feature)).n * @privaten * @type {!Object<string, import("../Feature.js").default<Geometry>>}n */n this.uidIndex = {};n /**n * @privaten * @type {Object<string, Array<import("../events.js").EventsKey>>}n */n this.featureChangeKeys = {};n /**n * @privaten * @type {Collection<import("../Feature.js").default<Geometry>>}n */n this.featuresCollection = null;n var collection, features;n if (Array.isArray(options.features)) {n features = options.features;n }n else if (options.features) {n collection = options.features;n features = collection.getArray();n }n if (!useSpatialIndex && collection === undefined) {n collection = new Collection(features);n }n if (features !== undefined) {n _this.addFeaturesInternal(features);n }n if (collection !== undefined) {n this.bindFeaturesCollection(collection);n }n return _this;n }n /**n * Add a single feature to the source. If you want to add a batch of featuresn * at once, call {@link module:ol/source/Vector~VectorSource#addFeatures addFeatures()}n * instead. A feature will not be added to the source if feature withn * the same id is already there. The reason for this behavior is to avoidn * feature duplication when using bbox or tile loading strategies.n * Note: this also applies if an {@link module:ol/Collection} is used for features,n * meaning that if a feature with a duplicate id is added in the collection, it willn * be removed from it right away.n * @param {import("../Feature.js").default<Geometry>} feature Feature to add.n * @apin */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<Geometry>} feature Feature.n * @protectedn */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_ = 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<Geometry>} feature The feature.n * @privaten */n VectorSource.prototype.setupChangeEvents_ = function (featureKey, feature) {n this.featureChangeKeys_ = [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<Geometry>} feature The feature.n * @return {boolean} The feature is "valid", in the sense that it is also an * candidate for insertion into the Rtree.n * @privaten */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_ = 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 sourcen this.uidIndex_ = feature;n }n return valid;n };n /**n * Add a batch of features to the source.n * @param {Array<import("../Feature.js").default<Geometry>>} features Features to add.n * @apin */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<import("../Feature.js").default<Geometry>>} features Features.n * @protectedn */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;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;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_ = feature;n }n }n if (this.featuresRtree_) {n this.featuresRtree_.load(extents, geometryFeatures);n }n for (var i = 0, length_3 = newFeatures.length; i < length_3; i++) {n this.dispatchEvent(new VectorSourceEvent(VectorEventType.ADDFEATURE, newFeatures));n }n };n /**n * @param {!Collection<import("../Feature.js").default<Geometry>>} collection Collection.n * @privaten */n VectorSource.prototype.bindFeaturesCollection_ = function (collection) {n var modifyingCollection = false;n this.addEventListener(VectorEventType.ADDFEATURE, n /**n * @param {VectorSourceEvent<Geometry>} evt The vector source eventn */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<Geometry>} evt The vector source eventn */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 eventn */n function (evt) {n if (!modifyingCollection) {n modifyingCollection = true;n this.addFeature(/** @type {import("../Feature.js").default<Geometry>} */ (evt.element));n modifyingCollection = false;n }n }.bind(this));n collection.addEventListener(CollectionEventType.REMOVE, n /**n * @param {import("../Collection.js").CollectionEvent} evt The collection eventn */n function (evt) {n if (!modifyingCollection) {n modifyingCollection = true;n this.removeFeature(/** @type {import("../Feature.js").default<Geometry>} */ (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#removefeature} events.n * @apin */n VectorSource.prototype.clear = function (opt_fast) {n if (opt_fast) {n for (var featureId in this.featureChangeKeys_) {n var keys = this.featureChangeKeys_;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 this.featuresRtree_.forEach(this.removeFeatureInternal.bind(this));n for (var id in this.nullGeometryFeatures_) {n this.removeFeatureInternal(this.nullGeometryFeatures_);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 callbackn * with each one. If the callback returns any "truthy" value, iteration willn * 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<Geometry>): T} callback Called with each featuren * 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 Tn * @apin */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 providedn * coordinate, calling the callback with each feature. If the callback returnsn * a "truthy" value, iteration will stop and the function will return the samen * value.n *n * @param {import("../coordinate.js").Coordinate} coordinate Coordinate.n * @param {function(import("../Feature.js").default<Geometry>): T} callback Called with each featuren * whose goemetry contains the provided coordinate.n * @return {T|undefined} The return value from the last call to the callback.n * @template Tn */n VectorSource.prototype.forEachFeatureAtCoordinateDirect = function (coordinate, callback) {n var extent = [coordinate, coordinate, coordinate, coordinate];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 providedn * 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, calln * the {@link module:ol/source/Vector~VectorSource#forEachFeatureIntersectingExtent forEachFeatureIntersectingExtent()} method instead.n *n * When `useSpatialIndex` is set to false, this method will loop through alln * 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<Geometry>): T} callback Called with each featuren * whose bounding box intersects the provided extent.n * @return {T|undefined} The return value from the last call to the callback.n * @template Tn * @apin */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 then * {@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<Geometry>): T} callback Called with each featuren * whose geometry intersects the provided extent.n * @return {T|undefined} The return value from the last call to the callback.n * @template Tn * @apin */n VectorSource.prototype.forEachFeatureIntersectingExtent = function (extent, callback) {n return this.forEachFeatureInExtent(extent, n /**n * @param {import("../Feature.js").default<Geometry>} 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`, orn * with an {@link module:ol/Collection} as `features`.n * @return {Collection<import("../Feature.js").default<Geometry>>} The collection of features.n * @apin */n VectorSource.prototype.getFeaturesCollection = function () {n return this.featuresCollection_;n };n /**n * Get all features on the source in random order.n * @return {Array<import("../Feature.js").default<Geometry>>} Features.n * @apin */n VectorSource.prototype.getFeatures = function () {n var features;n if (this.featuresCollection_) {n features = this.featuresCollection_.getArray();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 (n /** @type {Array<import("../Feature.js").default<Geometry>>} */ (features));n };n /**n * Get all features whose geometry intersects the provided coordinate.n * @param {import("../coordinate.js").Coordinate} coordinate Coordinate.n * @return {Array<import("../Feature.js").default<Geometry>>} Features.n * @apin */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 ofn * all features intersecting the given extent in random order (so it may includen * features whose geometries do not intersect the extent).n *n * When `useSpatialIndex` is set to false, this method will return alln * features.n *n * @param {import("../extent.js").Extent} extent Extent.n * @return {Array<import("../Feature.js").default<Geometry>>} Features.n * @apin */n VectorSource.prototype.getFeaturesInExtent = function (extent) {n if (this.featuresRtree_) {n return this.featuresRtree_.getInExtent(extent);n }n else if (this.featuresCollection_) {n return this.featuresCollection_.getArray();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 withn * `useSpatialIndex` set to `false`.n * @param {import("../coordinate.js").Coordinate} coordinate Coordinate.n * @param {function(import("../Feature.js").default<Geometry>):boolean=} opt_filter Feature filter function.n * The filter function will receive one argument, the {@link module:ol/Feature feature}n * and it should return a boolean value. By default, no filtering is made.n * @return {import("../Feature.js").default<Geometry>} Closest feature.n * @apin */n VectorSource.prototype.getClosestFeatureToCoordinate = function (coordinate, opt_filter) {n // Find the closest feature using branch and bound. We start searching ann // infinite extent, and find the distance from the first feature found. Thisn // becomes the closest feature. We then compute a smaller extent which anyn // closer feature must intersect. We continue searching with this smallern // extent, trying to find a closer feature. Every time we find a closern // feature, we update the extent being searched so that any even closern // feature must intersect it. We continue until we run out of features.n var x = coordinate;n var y = coordinate;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<Geometry>} 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 beingn // searched while the R-Tree traversal using this same extent objectn // is still in progress. This is safe because the new extent isn // strictly contained by the old extent.n var minDistance = Math.sqrt(minSquaredDistance);n extent = x - minDistance;n extent = y - minDistance;n extent = x + minDistance;n extent = 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 withn * `useSpatialIndex` set to `false`.n * @param {import("../extent.js").Extent=} opt_extent Destination extent. If provided, no new extentn * will be created. Instead, that extent's coordinates will be overwritten.n * @return {import("../extent.js").Extent} Extent.n * @apin */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. Son * `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<Geometry>} The feature (or `null` if not found).n * @apin */n VectorSource.prototype.getFeatureById = function (id) {n var feature = this.idIndex_;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<Geometry>} The feature (or `null` if not found).n */n VectorSource.prototype.getFeatureByUid = function (uid) {n var feature = this.uidIndex_;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 * @apin */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 * @apin */n VectorSource.prototype.getUrl = function () {n return this.url_;n };n /**n * @param {Event} event Event.n * @privaten */n VectorSource.prototype.handleFeatureChange_ = function (event) {n var feature = /** @type {import("../Feature.js").default<Geometry>} */ (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_ = feature;n }n }n else {n var extent = geometry.getExtent();n if (featureKey in this.nullGeometryFeatures_) {n delete this.nullGeometryFeatures_;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_ !== feature) {n this.removeFromIdIndex_(feature);n this.idIndex_ = feature;n }n }n else {n this.removeFromIdIndex_(feature);n this.uidIndex_ = 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<Geometry>} feature Feature.n * @return {boolean} Has feature.n * @apin */n VectorSource.prototype.hasFeature = function (feature) {n var id = feature.getId();n if (id !== undefined) {n return id in this.idIndex_;n }n else {n return getUid(feature) in this.uidIndex_;n }n };n /**n * @return {boolean} Is empty.n */n VectorSource.prototype.isEmpty = function () {n return this.featuresRtree_.isEmpty() && isEmpty(this.nullGeometryFeatures_);n };n /**n * @param {import("../extent.js").Extent} extent Extent.n * @param {number} resolution Resolution.n * @param {import("../proj/Projection.js").default} projection Projection.n */n VectorSource.prototype.loadFeatures = function (extent, resolution, projection) {n var loadedExtentsRtree = this.loadedExtentsRtree_;n var extentsToLoad = this.strategy_(extent, resolution);n this.loading = false;n var _loop_1 = function (i, ii) {n var extentToLoad = extentsToLoad;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.loader_.call(this_1, extentToLoad, resolution, projection);n loadedExtentsRtree.insert(extentToLoad, { extent: extentToLoad.slice() });n this_1.loading = this_1.loader_ !== VOID;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 };n /**n * @inheritDocn */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 * @apin */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 featuresn * at once, use the {@link module:ol/source/Vector~VectorSource#clear clear()} methodn * instead.n * @param {import("../Feature.js").default<Geometry>} feature Feature to remove.n * @apin */n VectorSource.prototype.removeFeature = function (feature) {n var featureKey = getUid(feature);n if (featureKey in this.nullGeometryFeatures_) {n delete this.nullGeometryFeatures_;n }n else {n if (this.featuresRtree_) {n this.featuresRtree_.remove(feature);n }n }n this.removeFeatureInternal(feature);n this.changed();n };n /**n * Remove feature without firing a `change` event.n * @param {import("../Feature.js").default<Geometry>} feature Feature.n * @protectedn */n VectorSource.prototype.removeFeatureInternal = function (feature) {n var featureKey = getUid(feature);n this.featureChangeKeys_.forEach(unlistenByKey);n delete this.featureChangeKeys_;n var id = feature.getId();n if (id !== undefined) {n delete this.idIndex_;n }n delete this.uidIndex_;n this.dispatchEvent(new VectorSourceEvent(VectorEventType.REMOVEFEATURE, feature));n };n /**n * Remove a feature from the id index. Called internally when the feature idn * may have changed.n * @param {import("../Feature.js").default<Geometry>} feature The feature.n * @return {boolean} Removed the feature from the index.n * @privaten */n VectorSource.prototype.removeFromIdIndex_ = function (feature) {n var removed = false;n for (var id in this.idIndex_) {n if (this.idIndex_ === feature) {n delete this.idIndex_;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 then * new loader.n * @param {import("../featureloader.js").FeatureLoader} loader The loader to set.n * @apin */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 * @apin */n VectorSource.prototype.setUrl = function (url) {n assert(this.format_, 7); // `format` must be set when `url` is setn this.setLoader(xhr(url, this.format_));n };n return VectorSource;n}(Source));nexport default VectorSource;n//# sourceMappingURL=Vector.js.map”,“/**n * @module ol/source/Clustern */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { getUid } from '../util.js';nimport { assert } from '../asserts.js';nimport Feature from '../Feature.js';nimport GeometryType from '../geom/GeometryType.js';nimport { scale as scaleCoordinate, add as addCoordinate } from '../coordinate.js';nimport EventType from '../events/EventType.js';nimport { buffer, createEmpty, createOrUpdateFromCoordinate } from '../extent.js';nimport Point from '../geom/Point.js';nimport VectorSource from './Vector.js';n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions] Attributions.n * @property {number} [distance=20] Minimum distance in pixels between clusters.n * @property {function(Feature):Point} [geometryFunction]n * Function that takes an {@link module:ol/Feature} as argument and returns ann * {@link module:ol/geom/Point} as cluster calculation point for the feature. When an * feature should not be considered for clustering, the function should returnn * `null`. The default, which works when the underyling source contains pointn * features only, isn * “`jsn * function(feature) {n * return feature.getGeometry();n * }n * “`n * See {@link module:ol/geom/Polygon~Polygon#getInteriorPoint} for a way to get a clustern * calculation point for polygons.n * @property {VectorSource} source Source.n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.n */n/**n * @classdescn * Layer source to cluster vector data. Works out of the box with pointn * geometries. For other geometry types, or if not all geometries should ben * considered for clustering, a custom `geometryFunction` can be defined.n * @apin */nvar Cluster = /** @class */ (function (_super) {n __extends(Cluster, _super);n /**n * @param {Options} options Cluster options.n */n function Cluster(options) {n var _this = _super.call(this, {n attributions: options.attributions,n wrapX: options.wrapXn }) || this;n /**n * @type {number|undefined}n * @protectedn */n _this.resolution = undefined;n /**n * @type {number}n * @protectedn */n _this.distance = options.distance !== undefined ? options.distance : 20;n /**n * @type {Array<Feature>}n * @protectedn */n _this.features = [];n /**n * @param {Feature} feature Feature.n * @return {Point} Cluster calculation point.n * @protectedn */n _this.geometryFunction = options.geometryFunction || function (feature) {n var geometry = feature.getGeometry();n assert(geometry.getType() == GeometryType.POINT, 10); // The default `geometryFunction` can only handle `Point` geometriesn return geometry;n };n /**n * @type {VectorSource}n * @protectedn */n _this.source = options.source;n _this.source.addEventListener(EventType.CHANGE, _this.refresh.bind(_this));n return _this;n }n /**n * Get the distance in pixels between clusters.n * @return {number} Distance.n * @apin */n Cluster.prototype.getDistance = function () {n return this.distance;n };n /**n * Get a reference to the wrapped source.n * @return {VectorSource} Source.n * @apin */n Cluster.prototype.getSource = function () {n return this.source;n };n /**n * @inheritDocn */n Cluster.prototype.loadFeatures = function (extent, resolution, projection) {n this.source.loadFeatures(extent, resolution, projection);n if (resolution !== this.resolution) {n this.clear();n this.resolution = resolution;n this.cluster();n this.addFeatures(this.features);n }n };n /**n * Set the distance in pixels between clusters.n * @param {number} distance The distance in pixels.n * @apin */n Cluster.prototype.setDistance = function (distance) {n this.distance = distance;n this.refresh();n };n /**n * handle the source changingn * @overriden */n Cluster.prototype.refresh = function () {n this.clear();n this.cluster();n this.addFeatures(this.features);n };n /**n * @protectedn */n Cluster.prototype.cluster = function () {n if (this.resolution === undefined) {n return;n }n this.features.length = 0;n var extent = createEmpty();n var mapDistance = this.distance * this.resolution;n var features = this.source.getFeatures();n /**n * @type {!Object<string, boolean>}n */n var clustered = {};n for (var i = 0, ii = features.length; i < ii; i++) {n var feature = features;n if (!(getUid(feature) in clustered)) {n var geometry = this.geometryFunction(feature);n if (geometry) {n var coordinates = geometry.getCoordinates();n createOrUpdateFromCoordinate(coordinates, extent);n buffer(extent, mapDistance, extent);n var neighbors = this.source.getFeaturesInExtent(extent);n neighbors = neighbors.filter(function (neighbor) {n var uid = getUid(neighbor);n if (!(uid in clustered)) {n clustered = true;n return true;n }n else {n return false;n }n });n this.features.push(this.createCluster(neighbors));n }n }n }n };n /**n * @param {Array<Feature>} features Featuresn * @return {Feature} The cluster feature.n * @protectedn */n Cluster.prototype.createCluster = function (features) {n var centroid = [0, 0];n for (var i = features.length - 1; i >= 0; –i) {n var geometry = this.geometryFunction(features);n if (geometry) {n addCoordinate(centroid, geometry.getCoordinates());n }n else {n features.splice(i, 1);n }n }n scaleCoordinate(centroid, 1 / features.length);n var cluster = new Feature(new Point(centroid));n cluster.set('features', features);n return cluster;n };n return Cluster;n}(VectorSource));nexport default Cluster;n//# sourceMappingURL=Cluster.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/source/Zoomifyn */nimport { DEFAULT_TILE_SIZE } from '../tilegrid/common.js';nimport ImageTile from '../ImageTile.js';nimport TileState from '../TileState.js';nimport { expandUrl, createFromTileUrlFunctions } from '../tileurlfunction.js';nimport { assert } from '../asserts.js';nimport { createCanvasContext2D } from '../dom.js';nimport { getTopLeft } from '../extent.js';nimport { toSize } from '../size.js';nimport TileImage from './TileImage.js';nimport TileGrid from '../tilegrid/TileGrid.js';n/**n * @enum {string}n */nvar TierSizeCalculation = {n DEFAULT: 'default',n TRUNCATED: 'truncated'n};nvar CustomTile = /** @class */ (function (_super) {n __extends(CustomTile, _super);n /**n * @param {number} tilePixelRatio Tile pixel ratio to display the tilen * @param {import("../tilegrid/TileGrid.js").default} tileGrid TileGrid that the tile belongs to.n * @param {import("../tilecoord.js").TileCoord} tileCoord Tile coordinate.n * @param {TileState} state State.n * @param {string} src Image source URI.n * @param {?string} crossOrigin Cross origin.n * @param {import("../Tile.js").LoadFunction} tileLoadFunction Tile load function.n * @param {import("../Tile.js").Options=} opt_options Tile options.n */n function CustomTile(tilePixelRatio, tileGrid, tileCoord, state, src, crossOrigin, tileLoadFunction, opt_options) {n var _this = _super.call(this, tileCoord, state, src, crossOrigin, tileLoadFunction, opt_options) || this;n /**n * @privaten * @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement}n */n this.zoomifyImage = null;n /**n * @privaten * @type {import("../size.js").Size}n */n this.tileSize = toSize(tileGrid.getTileSize(tileCoord)).map(function (x) {n return x * tilePixelRatio;n });n return _this;n }n /**n * @inheritDocn */n CustomTile.prototype.getImage = function () {n if (this.zoomifyImage_) {n return this.zoomifyImage_;n }n var image = _super.prototype.getImage.call(this);n if (this.state == TileState.LOADED) {n var tileSize = this.tileSize_;n if (image.width == tileSize && image.height == tileSize) {n this.zoomifyImage_ = image;n return image;n }n else {n var context = createCanvasContext2D(tileSize, tileSize);n context.drawImage(image, 0, 0);n this.zoomifyImage_ = context.canvas;n return context.canvas;n }n }n else {n return image;n }n };n return CustomTile;n}(ImageTile));nexport { CustomTile };n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions] Attributions.n * @property {number} [cacheSize] Tile cache size. The default depends on the screen size. Will increase if too small.n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note thatn * you must provide a `crossOrigin` value you want to access pixel data with the Canvas renderer.n * See developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.n * @property {import("../proj.js").ProjectionLike} [projection] Projection.n * @property {number} [tilePixelRatio] The pixel ratio used by the tile service. For example, if the tile service advertizes 256px by 256px tiles but actually sends 512px by 512px images (for retina/hidpi devices) then `tilePixelRatio` should be set to `2`n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).n * Higher values can increase reprojection performance, but decrease precision.n * @property {string} [url] URL template or base URL of the Zoomify service.n * A base URL is the fixed partn * of the URL, excluding the tile group, z, x, and y folder structure, e.g.n * `my.zoomify.info/IMAGE.TIF/`. A URL template must includen * `{TileGroup}`, `{x}`, `{y}`, and `{z}` placeholders, e.g.n * `my.zoomify.info/IMAGE.TIF/{TileGroup}/{z}-{x}-{y}.jpg`.n * Internet Imaging Protocol (IIP) with JTL extension can be also used withn * `{tileIndex}` and `{z}` placeholders, e.g.n * `my.zoomify.info?FIF=IMAGE.TIF&JTL={z},{tileIndex}`.n * A `{?-?}` template pattern, for example `subdomain{a-f}.domain.com`, may ben * used instead of defining each one separately in the `urls` option.n * @property {string} [tierSizeCalculation] Tier size calculation method: `default` or `truncated`.n * @property {import("../size.js").Size} [size] Size of the image.n * @property {import("../extent.js").Extent} [extent] Extent for the TileGrid that is created.n * Default sets the TileGrid in then * fourth quadrant, meaning extent is `[0, -height, width, 0]`. To change then * extent to the first quadrant (the default for OpenLayers 2) set the extentn * as `[0, 0, width, height]`.n * @property {number} [transition] Duration of the opacity transition for rendering.n * To disable the opacity transition, pass `transition: 0`.n * @property {number} [tileSize=256] Tile size. Same tile size is used for all zoom levels.n * @property {number} [zDirection=0] Indicate which resolution should be usedn * by a renderer if the view resolution does not match any resolution of the tile source.n * If 0, the nearest resolution will be used. If 1, the nearest lower resolutionn * will be used. If -1, the nearest higher resolution will be used.n */n/**n * @classdescn * Layer source for tile data in Zoomify format (both Zoomify and Internetn * Imaging Protocol are supported).n * @apin */nvar Zoomify = /** @class */ (function (_super) {n __extends(Zoomify, _super);n /**n * @param {Options=} opt_options Options.n */n function Zoomify(opt_options) {n var _this = this;n var options = opt_options || {};n var size = options.size;n var tierSizeCalculation = options.tierSizeCalculation !== undefined ?n options.tierSizeCalculation :n TierSizeCalculation.DEFAULT;n var imageWidth = size;n var imageHeight = size;n var extent = options.extent || [0, -size, size, 0];n var tierSizeInTiles = [];n var tileSize = options.tileSize || DEFAULT_TILE_SIZE;n var tilePixelRatio = options.tilePixelRatio || 1;n var tileSizeForTierSizeCalculation = tileSize;n switch (tierSizeCalculation) {n case TierSizeCalculation.DEFAULT:n while (imageWidth > tileSizeForTierSizeCalculation || imageHeight > tileSizeForTierSizeCalculation) {n tierSizeInTiles.push([n Math.ceil(imageWidth / tileSizeForTierSizeCalculation),n Math.ceil(imageHeight / tileSizeForTierSizeCalculation)n ]);n tileSizeForTierSizeCalculation += tileSizeForTierSizeCalculation;n }n break;n case TierSizeCalculation.TRUNCATED:n var width = imageWidth;n var height = imageHeight;n while (width > tileSizeForTierSizeCalculation || height > tileSizeForTierSizeCalculation) {n tierSizeInTiles.push([n Math.ceil(width / tileSizeForTierSizeCalculation),n Math.ceil(height / tileSizeForTierSizeCalculation)n ]);n width >>= 1;n height >>= 1;n }n break;n default:n assert(false, 53); // Unknown `tierSizeCalculation` configuredn break;n }n tierSizeInTiles.push([1, 1]);n tierSizeInTiles.reverse();n var resolutions = [1];n var tileCountUpToTier = [0];n for (var i = 1, ii = tierSizeInTiles.length; i < ii; i++) {n resolutions.push(1 << i);n tileCountUpToTier.push(tierSizeInTiles[i - 1] * tierSizeInTiles[i - 1] +n tileCountUpToTier[i - 1]);n }n resolutions.reverse();n var tileGrid = new TileGrid({n tileSize: tileSize,n extent: extent,n origin: getTopLeft(extent),n resolutions: resolutionsn });n var url = options.url;n if (url && url.indexOf('{TileGroup}') == -1 && url.indexOf('{tileIndex}') == -1) {n url += '{TileGroup}/{z}-{x}-{y}.jpg';n }n var urls = expandUrl(url);n /**n * @param {string} template Template.n * @return {import("../Tile.js").UrlFunction} Tile URL function.n */n function createFromTemplate(template) {n return (n /**n * @param {import("../tilecoord.js").TileCoord} tileCoord Tile Coordinate.n * @param {number} pixelRatio Pixel ratio.n * @param {import("../proj/Projection.js").default} projection Projection.n * @return {string|undefined} Tile URL.n */n function (tileCoord, pixelRatio, projection) {n if (!tileCoord) {n return undefined;n }n else {n var tileCoordZ = tileCoord;n var tileCoordX = tileCoord;n var tileCoordY = tileCoord;n var tileIndex = tileCoordX +n tileCoordY * tierSizeInTiles[0];n var tileSize_1 = tileGrid.getTileSize(tileCoordZ);n var tileWidth = Array.isArray(tileSize_1) ? tileSize_1 : tileSize_1;n var tileGroup = ((tileIndex + tileCountUpToTier) / tileWidth) | 0;n var localContext_1 = {n 'z': tileCoordZ,n 'x': tileCoordX,n 'y': tileCoordY,n 'tileIndex': tileIndex,n 'TileGroup': 'TileGroup' + tileGroupn };n return template.replace(/\{(\w+?)\}/g, function (m, p) {n return localContext_1;n });n }n });n }n var tileUrlFunction = createFromTileUrlFunctions(urls.map(createFromTemplate));n var ZoomifyTileClass = CustomTile.bind(null, tilePixelRatio, tileGrid);n _this = _super.call(this, {n attributions: options.attributions,n cacheSize: options.cacheSize,n crossOrigin: options.crossOrigin,n projection: options.projection,n tilePixelRatio: tilePixelRatio,n reprojectionErrorThreshold: options.reprojectionErrorThreshold,n tileClass: ZoomifyTileClass,n tileGrid: tileGrid,n tileUrlFunction: tileUrlFunction,n transition: options.transitionn }) || this;n /**n * @inheritDocn */n _this.zDirection = options.zDirection;n return _this;n }n return Zoomify;n}(TileImage));nexport default Zoomify;n//# sourceMappingURL=Zoomify.js.map”,“/**n * @module ol/format/IIIFInfon */nimport { assert } from '../asserts.js';n/**n * @typedef {Object} PreferredOptionsn * @property {string} [format] Preferred image format. Will be used if the image informationn * indicates support for that format.n * @property {string} [quality] IIIF image qualitiy. Will be used if the image informationn * indicates support for that quality.n */n/**n * @typedef {Object} SupportedFeaturesn * @property {Array<string>} [supports] Supported IIIF image size and regionn * calculation features.n * @property {Array<string>} [formats] Supported image formats.n * @property {Array<string>} [qualities] Supported IIIF image qualities.n */n/**n * @typedef {Object} TileInfon * @property {Array<number>} scaleFactors Supported resolution scaling factors.n * @property {number} width Tile width in pixels.n * @property {number} [height] Tile height in pixels. Same as tile width if height isn * not given.n */n/**n * @typedef {Object} IiifProfilen * @property {Array<string>} [formats] Supported image formats for the image service.n * @property {Array<string>} [qualities] Supported IIIF image qualities.n * @property {Array<string>} [supports] Supported features.n * @property {number} [maxArea] Maximum area (pixels) available for this image service.n * @property {number} [maxHeight] Maximum height.n * @property {number} [maxWidth] Maximum width.n */n/**n * @typedef {Object<string,string|number|Array<number|string|IiifProfile>|Object<string, number>|TileInfo>}n * ImageInformationResponsen */n/**n * Enum representing the major IIIF Image API versionsn * @enum {string}n */nvar Versions = {n VERSION1: 'version1',n VERSION2: 'version2',n VERSION3: 'version3'n};n/**n * Supported image formats, qualities and supported region / size calculation featuresn * for different image API versions and compliance levelsn * @constn * @type {Object<string, Object<string, SupportedFeatures>>}n */nvar IIIF_PROFILE_VALUES = {};nIIIF_PROFILE_VALUES = {n 'level0': {n supports: [],n formats: [],n qualities: ['native']n },n 'level1': {n supports: ['regionByPx', 'sizeByW', 'sizeByH', 'sizeByPct'],n formats: ['jpg'],n qualities: ['native']n },n 'level2': {n supports: ['regionByPx', 'regionByPct', 'sizeByW', 'sizeByH', 'sizeByPct',n 'sizeByConfinedWh', 'sizeByWh'],n formats: ['jpg', 'png'],n qualities: ['native', 'color', 'grey', 'bitonal']n }n};nIIIF_PROFILE_VALUES = {n 'level0': {n supports: [],n formats: ['jpg'],n qualities: ['default']n },n 'level1': {n supports: ['regionByPx', 'sizeByW', 'sizeByH', 'sizeByPct'],n formats: ['jpg'],n qualities: ['default']n },n 'level2': {n supports: ['regionByPx', 'regionByPct', 'sizeByW', 'sizeByH', 'sizeByPct',n 'sizeByConfinedWh', 'sizeByDistortedWh', 'sizeByWh'],n formats: ['jpg', 'png'],n qualities: ['default', 'bitonal']n }n};nIIIF_PROFILE_VALUES = {n 'level0': {n supports: [],n formats: ['jpg'],n qualities: ['default']n },n 'level1': {n supports: ['regionByPx', 'regionSquare', 'sizeByW', 'sizeByH', 'sizeByWh'],n formats: ['jpg'],n qualities: ['default']n },n 'level2': {n supports: ['regionByPx', 'regionSquare', 'regionByPct',n 'sizeByW', 'sizeByH', 'sizeByPct', 'sizeByConfinedWh', 'sizeByWh'],n formats: ['jpg', 'png'],n qualities: ['default']n }n};nIIIF_PROFILE_VALUES = {n 'none': {n supports: [],n formats: [],n qualities: []n }n};nvar COMPLIANCE_VERSION1 = new RegExp(‘^https?\:\/\/library\.stanford\.edu\/iiif\/image-api\/(1\.1\/)?compliance\.html#level$');nvar COMPLIANCE_VERSION2 = new RegExp(’^https?\:\/\/iiif\.io\/api\/image\/2\/level(\.json)?$');nvar COMPLIANCE_VERSION3 = new RegExp(‘(^https?\:\/\/iiif\.io\/api\/image\/3\/level(\.json)?$)|(^level$)');nfunction generateVersion1Options(iiifInfo) {n var levelProfile = iiifInfo.getComplianceLevelSupportedFeatures();n // Version 1.0 and 1.1 do not require a profile.n if (levelProfile === undefined) {n levelProfile = IIIF_PROFILE_VALUES['level0'];n }n return {n url: id’] at iiifInfo.imageInfo[' === undefined ? undefined : id’] at iiifInfo.imageInfo['.replace(/\/?(info.json)?$/g, ''),n supports: levelProfile.supports,n formats: levelProfile.formats.concat([iiifInfo.imageInfo.formats === undefined ?n [] : iiifInfo.imageInfo.formats]),n qualities: levelProfile.qualities.concat([iiifInfo.imageInfo.qualities === undefined ?n [] : iiifInfo.imageInfo.qualities]),n resolutions: iiifInfo.imageInfo.scale_factors,n tileSize: iiifInfo.imageInfo.tile_width !== undefined ? (iiifInfo.imageInfo.tile_height !== undefined ?n [iiifInfo.imageInfo.tile_width, iiifInfo.imageInfo.tile_height] : [iiifInfo.imageInfo.tile_width, iiifInfo.imageInfo.tile_width]) :n (iiifInfo.imageInfo.tile_height != undefined ? [iiifInfo.imageInfo.tile_height, iiifInfo.imageInfo.tile_height] : undefined)n };n}nfunction generateVersion2Options(iiifInfo) {n var levelProfile = iiifInfo.getComplianceLevelSupportedFeatures(), additionalProfile = Array.isArray(iiifInfo.imageInfo.profile) && iiifInfo.imageInfo.profile.length > 1, profileSupports = additionalProfile && iiifInfo.imageInfo.profile.supports ? iiifInfo.imageInfo.profile.supports : [], profileFormats = additionalProfile && iiifInfo.imageInfo.profile.formats ? iiifInfo.imageInfo.profile.formats : [], profileQualities = additionalProfile && iiifInfo.imageInfo.profile.qualities ? iiifInfo.imageInfo.profile.qualities : [];n return {n url: id’] at iiifInfo.imageInfo['.replace(/\/?(info.json)?$/g, ''),n sizes: iiifInfo.imageInfo.sizes === undefined ? undefined : iiifInfo.imageInfo.sizes.map(function (size) {n return [size.width, size.height];n }),n tileSize: iiifInfo.imageInfo.tiles === undefined ? undefined : [n iiifInfo.imageInfo.tiles.map(function (tile) {n return tile.width;n })[0],n iiifInfo.imageInfo.tiles.map(function (tile) {n return tile.height === undefined ? tile.width : tile.height;n })[0]n ],n resolutions: iiifInfo.imageInfo.tiles === undefined ? undefined :n iiifInfo.imageInfo.tiles.map(function (tile) {n return tile.scaleFactors;n })[0],n supports: levelProfile.supports.concat(profileSupports),n formats: levelProfile.formats.concat(profileFormats),n qualities: levelProfile.qualities.concat(profileQualities)n };n}nfunction generateVersion3Options(iiifInfo) {n var levelProfile = iiifInfo.getComplianceLevelSupportedFeatures(), formats = iiifInfo.imageInfo.extraFormats === undefined ? levelProfile.formats : levelProfile.formats.concat(iiifInfo.imageInfo.extraFormats), preferredFormat = iiifInfo.imageInfo.preferredFormats !== undefined && Array.isArray(iiifInfo.imageInfo.preferredFormats) &&n iiifInfo.imageInfo.preferredFormats.length > 0 ?n iiifInfo.imageInfo.preferredFormats.filter(function (format) {n return ['jpg', 'png', 'gif'].includes(format);n }).reduce(function (acc, format) {n return acc === undefined && formats.includes(format) ? format : acc;n }, undefined) : undefined;n return {n url: iiifInfo.imageInfo,n sizes: iiifInfo.imageInfo.sizes === undefined ? undefined : iiifInfo.imageInfo.sizes.map(function (size) {n return [size.width, size.height];n }),n tileSize: iiifInfo.imageInfo.tiles === undefined ? undefined : [n iiifInfo.imageInfo.tiles.map(function (tile) {n return tile.width;n })[0],n iiifInfo.imageInfo.tiles.map(function (tile) {n return tile.height;n })[0]n ],n resolutions: iiifInfo.imageInfo.tiles === undefined ? undefined :n iiifInfo.imageInfo.tiles.map(function (tile) {n return tile.scaleFactors;n })[0],n supports: iiifInfo.imageInfo.extraFeatures === undefined ? levelProfile.supports : levelProfile.supports.concat(iiifInfo.imageInfo.extraFeatures),n formats: formats,n qualities: iiifInfo.imageInfo.extraQualities === undefined ? levelProfile.qualities : levelProfile.qualities.concat(iiifInfo.imageInfo.extraQualities),n preferredFormat: preferredFormatn };n}nvar versionFunctions = {};nversionFunctions = generateVersion1Options;nversionFunctions = generateVersion2Options;nversionFunctions = generateVersion3Options;n/**n * @classdescn * Format for transforming IIIF Image API image information responses inton * IIIF tile source ready optionsn *n * @apin */nvar IIIFInfo = /** @class */ (function () {n /**n * @param {string|ImageInformationResponse} imageInfon * Deserialized image information JSON response object or JSON response as stringn */n function IIIFInfo(imageInfo) {n this.setImageInfo(imageInfo);n }n /**n * @param {string|ImageInformationResponse} imageInfon * Deserialized image information JSON response object or JSON response as stringn * @apin */n IIIFInfo.prototype.setImageInfo = function (imageInfo) {n if (typeof imageInfo == 'string') {n this.imageInfo = JSON.parse(imageInfo);n }n else {n this.imageInfo = imageInfo;n }n };n /**n * @returns {Versions} Major IIIF version.n * @apin */n IIIFInfo.prototype.getImageApiVersion = function () {n if (this.imageInfo === undefined) {n return;n }n var context = context’] at this.imageInfo[' || 'ol-no-context';n if (typeof context == 'string') {n context = [context];n }n for (var i = 0; i < context.length; i++) {n switch (context) {n case 'library.stanford.edu/iiif/image-api/1.1/context.json’:n case 'iiif.io/api/image/1/context.json’:n return Versions.VERSION1;n case 'iiif.io/api/image/2/context.json’:n return Versions.VERSION2;n case 'iiif.io/api/image/3/context.json’:n return Versions.VERSION3;n case 'ol-no-context':n // Image API 1.0 has no '@context'n if (this.getComplianceLevelEntryFromProfile(Versions.VERSION1) && this.imageInfo.identifier) {n return Versions.VERSION1;n }n break;n default:n }n }n assert(false, 61);n };n /**n * @param {Versions} version Optional IIIF image API versionn * @returns {string} Compliance level as it appears in the IIIF image informationn * response.n */n IIIFInfo.prototype.getComplianceLevelEntryFromProfile = function (version) {n if (this.imageInfo === undefined || this.imageInfo.profile === undefined) {n return;n }n if (version === undefined) {n version = this.getImageApiVersion();n }n switch (version) {n case Versions.VERSION1:n if (COMPLIANCE_VERSION1.test(this.imageInfo.profile)) {n return this.imageInfo.profile;n }n break;n case Versions.VERSION3:n if (COMPLIANCE_VERSION3.test(this.imageInfo.profile)) {n return this.imageInfo.profile;n }n break;n case Versions.VERSION2:n if (typeof this.imageInfo.profile === 'string' && COMPLIANCE_VERSION2.test(this.imageInfo.profile)) {n return this.imageInfo.profile;n }n if (Array.isArray(this.imageInfo.profile) && this.imageInfo.profile.length > 0n && typeof this.imageInfo.profile === 'string' && COMPLIANCE_VERSION2.test(this.imageInfo.profile)) {n return this.imageInfo.profile;n }n break;n default:n }n };n /**n * @param {Versions} version Optional IIIF image API versionn * @returns {string} Compliance level, on of 'level0', 'level1' or 'level2' or undefinedn */n IIIFInfo.prototype.getComplianceLevelFromProfile = function (version) {n var complianceLevel = this.getComplianceLevelEntryFromProfile(version);n if (complianceLevel === undefined) {n return undefined;n }n var level = complianceLevel.match(/level(\.json)?$/g);n return Array.isArray(level) ? level.replace('.json', '') : undefined;n };n /**n * @returns {SupportedFeatures} Image formats, qualities and region / size calculationn * methods that are supported by the IIIF service.n */n IIIFInfo.prototype.getComplianceLevelSupportedFeatures = function () {n if (this.imageInfo === undefined) {n return;n }n var version = this.getImageApiVersion();n var level = this.getComplianceLevelFromProfile(version);n if (level === undefined) {n return IIIF_PROFILE_VALUES['none'];n }n return IIIF_PROFILE_VALUES[level];n };n /**n * @param {PreferredOptions} opt_preferredOptions Optional options for preferred format and quality.n * @returns {import("../source/IIIF.js").Options} IIIF tile source ready constructor options.n * @apin */n IIIFInfo.prototype.getTileSourceOptions = function (opt_preferredOptions) {n var options = opt_preferredOptions || {}, version = this.getImageApiVersion();n if (version === undefined) {n return;n }n var imageOptions = version === undefined ? undefined : versionFunctions(this);n if (imageOptions === undefined) {n return;n }n return {n url: imageOptions.url,n version: version,n size: [this.imageInfo.width, this.imageInfo.height],n sizes: imageOptions.sizes,n format: options.format !== undefined && imageOptions.formats.includes(options.format) ? options.format :n imageOptions.preferredFormat !== undefined ? imageOptions.preferredFormat : 'jpg',n supports: imageOptions.supports,n quality: options.quality && imageOptions.qualities.includes(options.quality) ?n options.quality : imageOptions.qualities.includes('native') ? 'native' : 'default',n resolutions: Array.isArray(imageOptions.resolutions) ? imageOptions.resolutions.sort(function (a, b) {n return b - a;n }) : undefined,n tileSize: imageOptions.tileSizen };n };n return IIIFInfo;n}());nexport default IIIFInfo;nexport { Versions };n//# sourceMappingURL=IIIFInfo.js.map”,“/**n * @module ol/source/IIIFn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { DEFAULT_TILE_SIZE } from '../tilegrid/common.js';nimport { getTopLeft } from '../extent.js';nimport { CustomTile } from './Zoomify.js';nimport { Versions } from '../format/IIIFInfo.js';nimport { assert } from '../asserts.js';nimport TileGrid from '../tilegrid/TileGrid.js';nimport TileImage from './TileImage.js';n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions] Attributions.n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.n * @property {number} [cacheSize]n * @property {null|string} [crossOrigin]n * @property {import("../extent.js").Extent} [extent=[0, -height, width, 0]]n * @property {string} [format='jpg'] Requested image format.n * @property {import("../proj.js").ProjectionLike} [projection]n * @property {string} [quality] Requested IIIF image quality. Default is 'native'n * for version 1, 'default' for versions 2 and 3.n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).n * Higher values can increase reprojection performance, but decrease precision.n * @property {Array<number>} [resolutions] Supported resolutions as given in IIIF 'scaleFactors'n * @property {import("../size.js").Size} size Size of the image [width, height].n * @property {Array<import("../size.js").Size>} [sizes] Supported scaled image sizes.n * Content of the IIIF info.json 'sizes' property, but as array of Size objects.n * @property {import("./State.js").default} [state] Source state.n * @property {Array<string>} [supports= Supported IIIF region and size calculationn * features.n * @property {number} [tilePixelRatio]n * @property {number|import("../size.js").Size} [tileSize] Tile size.n * Same tile size is used for all zoom levels. If tile size is a number,n * a square tile is assumed. If the IIIF image service supports arbitraryn * tiling (sizeByH, sizeByW, sizeByWh or sizeByPct as well as regionByPx or regionByPctn * are supported), the default tilesize is 256.n * @property {number} [transition]n * @property {string} [url] Base URL of the IIIF Image service.n * This should be the same as the IIIF Image ID.n * @property {Versions} [version=Versions.VERSION2] Service's IIIF Image API version.n * @property {number} [zDirection=0] Indicate which resolution should be usedn * by a renderer if the view resolution does not match any resolution of the tile source.n * If 0, the nearest resolution will be used. If 1, the nearest lower resolutionn * will be used. If -1, the nearest higher resolution will be used.n */nfunction formatPercentage(percentage) {n return percentage.toLocaleString('en', { maximumFractionDigits: 10 });n}n/**n * @classdescn * Layer source for IIIF Image API services.n * @apin */nvar IIIF = /** @class */ (function (_super) {n __extends(IIIF, _super);n /**n * @param {Options} opt_options Tile source options. Use {@link import("../format/IIIFInfo.js").IIIFInfo}n * to parse Image API service information responses into constructor options.n * @apin */n function IIIF(opt_options) {n var _this = this;n /**n * @type {Partial<Options>}n */n var options = opt_options || {};n var baseUrl = options.url || '';n baseUrl = baseUrl + (baseUrl.lastIndexOf('/') === baseUrl.length - 1 || baseUrl === '' ? '' : '/');n var version = options.version || Versions.VERSION2;n var sizes = options.sizes || [];n var size = options.size;n assert(size != undefined && Array.isArray(size) && size.length == 2 &&n !isNaN(size) && size > 0 && !isNaN(size) && size > 0, 60);n var width = size;n var height = size;n var tileSize = options.tileSize;n var tilePixelRatio = options.tilePixelRatio || 1;n var format = options.format || 'jpg';n var quality = options.quality || (options.version == Versions.VERSION1 ? 'native' : 'default');n var resolutions = options.resolutions || [];n var supports = options.supports || [];n var extent = options.extent || [0, -height, width, 0];n var supportsListedSizes = sizes != undefined && Array.isArray(sizes) && sizes.length > 0;n var supportsListedTiles = tileSize != undefined && (typeof tileSize === 'number' && Number.isInteger(tileSize) && tileSize > 0 || Array.isArray(tileSize) && tileSize.length > 0);n var supportsArbitraryTiling = supports != undefined && Array.isArray(supports) &&n (supports.includes('regionByPx') || supports.includes('regionByPct')) &&n (supports.includes('sizeByWh') || supports.includes('sizeByH') ||n supports.includes('sizeByW') || supports.includes('sizeByPct'));n var tileWidth, tileHeight, maxZoom;n resolutions.sort(function (a, b) {n return b - a;n });n if (supportsListedTiles || supportsArbitraryTiling) {n if (tileSize != undefined) {n if (typeof tileSize === 'number' && Number.isInteger(tileSize) && tileSize > 0) {n tileWidth = tileSize;n tileHeight = tileSize;n }n else if (Array.isArray(tileSize) && tileSize.length > 0) {n if (tileSize.length == 1 || tileSize == undefined && Number.isInteger(tileSize)) {n tileWidth = tileSize;n tileHeight = tileSize;n }n if (tileSize.length == 2) {n if (Number.isInteger(tileSize) && Number.isInteger(tileSize)) {n tileWidth = tileSize;n tileHeight = tileSize;n }n else if (tileSize == undefined && Number.isInteger(tileSize)) {n tileWidth = tileSize;n tileHeight = tileSize;n }n }n }n }n if (tileWidth === undefined || tileHeight === undefined) {n tileWidth = DEFAULT_TILE_SIZE;n tileHeight = DEFAULT_TILE_SIZE;n }n if (resolutions.length == 0) {n maxZoom = Math.max(Math.ceil(Math.log(width / tileWidth) / Math.LN2), Math.ceil(Math.log(height / tileHeight) / Math.LN2));n for (var i = maxZoom; i >= 0; i–) {n resolutions.push(Math.pow(2, i));n }n }n else {n var maxScaleFactor = Math.max.apply(Math, resolutions);n // TODO maxScaleFactor might not be a power to 2n maxZoom = Math.round(Math.log(maxScaleFactor) / Math.LN2);n }n }n else {n // No tile support.n tileWidth = width;n tileHeight = height;n resolutions = [];n if (supportsListedSizes) {n /*n * 'sizes' provided. Use full region in different resolutions. Everyn * resolution has only one tile.n */n sizes.sort(function (a, b) {n return a - b;n });n maxZoom = -1;n var ignoredSizesIndex = [];n for (var i = 0; i < sizes.length; i++) {n var resolution = width / sizes[0];n if (resolutions.length > 0 && resolutions[resolutions.length - 1] == resolution) {n ignoredSizesIndex.push(i);n continue;n }n resolutions.push(resolution);n maxZoom++;n }n if (ignoredSizesIndex.length > 0) {n for (var i = 0; i < ignoredSizesIndex.length; i++) {n sizes.splice(ignoredSizesIndex - i, 1);n }n }n }n else {n // No useful image information at all. Try pseudo tile with full image.n resolutions.push(1);n sizes.push([width, height]);n maxZoom = 0;n }n }n var tileGrid = new TileGrid({n tileSize: [tileWidth, tileHeight],n extent: extent,n origin: getTopLeft(extent),n resolutions: resolutionsn });n var tileUrlFunction = function (tileCoord, pixelRatio, projection) {n var regionParam, sizeParam;n var zoom = tileCoord;n if (zoom > maxZoom) {n return;n }n var tileX = tileCoord, tileY = tileCoord, scale = resolutions;n if (tileX === undefined || tileY === undefined || scale === undefined ||n tileX < 0 || Math.ceil(width / scale / tileWidth) <= tileX ||n tileY < 0 || Math.ceil(height / scale / tileHeight) <= tileY) {n return;n }n if (supportsArbitraryTiling || supportsListedTiles) {n var regionX = tileX * tileWidth * scale, regionY = tileY * tileHeight * scale;n var regionW = tileWidth * scale, regionH = tileHeight * scale, sizeW = tileWidth, sizeH = tileHeight;n if (regionX + regionW > width) {n regionW = width - regionX;n }n if (regionY + regionH > height) {n regionH = height - regionY;n }n if (regionX + tileWidth * scale > width) {n sizeW = Math.floor((width - regionX + scale - 1) / scale);n }n if (regionY + tileHeight * scale > height) {n sizeH = Math.floor((height - regionY + scale - 1) / scale);n }n if (regionX == 0 && regionW == width && regionY == 0 && regionH == height) {n // canonical full image region parameter is 'full', not 'x,y,w,h'n regionParam = 'full';n }n else if (!supportsArbitraryTiling || supports.includes('regionByPx')) {n regionParam = regionX + ',' + regionY + ',' + regionW + ',' + regionH;n }n else if (supports.includes('regionByPct')) {n var pctX = formatPercentage(regionX / width * 100), pctY = formatPercentage(regionY / height * 100), pctW = formatPercentage(regionW / width * 100), pctH = formatPercentage(regionH / height * 100);n regionParam = 'pct:' + pctX + ',' + pctY + ',' + pctW + ',' + pctH;n }n if (version == Versions.VERSION3 && (!supportsArbitraryTiling || supports.includes('sizeByWh'))) {n sizeParam = sizeW + ',' + sizeH;n }n else if (!supportsArbitraryTiling || supports.includes('sizeByW')) {n sizeParam = sizeW + ',';n }n else if (supports.includes('sizeByH')) {n sizeParam = ',' + sizeH;n }n else if (supports.includes('sizeByWh')) {n sizeParam = sizeW + ',' + sizeH;n }n else if (supports.includes('sizeByPct')) {n sizeParam = 'pct:' + formatPercentage(100 / scale);n }n }n else {n regionParam = 'full';n if (supportsListedSizes) {n var regionWidth = sizes[0], regionHeight = sizes[1];n if (version == Versions.VERSION3) {n if (regionWidth == width && regionHeight == height) {n sizeParam = 'max';n }n else {n sizeParam = regionWidth + ',' + regionHeight;n }n }n else {n if (regionWidth == width) {n sizeParam = 'full';n }n else {n sizeParam = regionWidth + ',';n }n }n }n else {n sizeParam = version == Versions.VERSION3 ? 'max' : 'full';n }n }n return baseUrl + regionParam + '/' + sizeParam + '/0/' + quality + '.' + format;n };n var IiifTileClass = CustomTile.bind(null, tilePixelRatio, tileGrid);n _this = _super.call(this, {n attributions: options.attributions,n attributionsCollapsible: options.attributionsCollapsible,n cacheSize: options.cacheSize,n crossOrigin: options.crossOrigin,n projection: options.projection,n reprojectionErrorThreshold: options.reprojectionErrorThreshold,n state: options.state,n tileClass: IiifTileClass,n tileGrid: tileGrid,n tilePixelRatio: options.tilePixelRatio,n tileUrlFunction: tileUrlFunction,n transition: options.transitionn }) || this;n /**n * @inheritDocn */n _this.zDirection = options.zDirection;n return _this;n }n return IIIF;n}(TileImage));nexport default IIIF;n//# sourceMappingURL=IIIF.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/reproj/Imagen */nimport { ERROR_THRESHOLD } from './common.js';nimport ImageBase from '../ImageBase.js';nimport ImageState from '../ImageState.js';nimport { listen, unlistenByKey } from '../events.js';nimport EventType from '../events/EventType.js';nimport { getCenter, getIntersection, getHeight, getWidth } from '../extent.js';nimport { calculateSourceResolution, render as renderReprojected } from '../reproj.js';nimport Triangulation from './Triangulation.js';n/**n * @typedef {function(import("../extent.js").Extent, number, number) : import("../ImageBase.js").default} FunctionTypen */n/**n * @classdescn * Class encapsulating single reprojected image.n * See {@link module:ol/source/Image~ImageSource}.n */nvar ReprojImage = /** @class */ (function (_super) {n __extends(ReprojImage, _super);n /**n * @param {import("../proj/Projection.js").default} sourceProj Source projection (of the data).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 * @param {number} pixelRatio Pixel ratio.n * @param {FunctionType} getImageFunctionn * Function returning source images (extent, resolution, pixelRatio).n */n function ReprojImage(sourceProj, targetProj, targetExtent, targetResolution, pixelRatio, getImageFunction) {n var _this = this;n var maxSourceExtent = sourceProj.getExtent();n var maxTargetExtent = targetProj.getExtent();n var limitedTargetExtent = maxTargetExtent ?n getIntersection(targetExtent, maxTargetExtent) : targetExtent;n var targetCenter = getCenter(limitedTargetExtent);n var sourceResolution = calculateSourceResolution(sourceProj, targetProj, targetCenter, targetResolution);n var errorThresholdInPixels = ERROR_THRESHOLD;n var triangulation = new Triangulation(sourceProj, targetProj, limitedTargetExtent, maxSourceExtent, sourceResolution * errorThresholdInPixels);n var sourceExtent = triangulation.calculateSourceExtent();n var sourceImage = getImageFunction(sourceExtent, sourceResolution, pixelRatio);n var state = sourceImage ? ImageState.IDLE : ImageState.EMPTY;n var sourcePixelRatio = sourceImage ? sourceImage.getPixelRatio() : 1;n _this = _super.call(this, targetExtent, targetResolution, sourcePixelRatio, state) || this;n /**n * @privaten * @type {import("../proj/Projection.js").default}n */n this.targetProj = targetProj;n /**n * @privaten * @type {import("../extent.js").Extent}n */n this.maxSourceExtent = maxSourceExtent;n /**n * @privaten * @type {!import("./Triangulation.js").default}n */n this.triangulation = triangulation;n /**n * @privaten * @type {number}n */n this.targetResolution = targetResolution;n /**n * @privaten * @type {import("../extent.js").Extent}n */n this.targetExtent = targetExtent;n /**n * @privaten * @type {import("../ImageBase.js").default}n */n this.sourceImage = sourceImage;n /**n * @privaten * @type {number}n */n this.sourcePixelRatio = sourcePixelRatio;n /**n * @privaten * @type {HTMLCanvasElement}n */n this.canvas = null;n /**n * @privaten * @type {?import("../events.js").EventsKey}n */n this.sourceListenerKey = null;n return _this;n }n /**n * @inheritDocn */n ReprojImage.prototype.disposeInternal = function () {n if (this.state == ImageState.LOADING) {n this.unlistenSource_();n }n _super.prototype.disposeInternal.call(this);n };n /**n * @inheritDocn */n ReprojImage.prototype.getImage = function () {n return this.canvas_;n };n /**n * @return {import("../proj/Projection.js").default} Projection.n */n ReprojImage.prototype.getProjection = function () {n return this.targetProj_;n };n /**n * @privaten */n ReprojImage.prototype.reproject_ = function () {n var sourceState = this.sourceImage_.getState();n if (sourceState == ImageState.LOADED) {n var width = getWidth(this.targetExtent_) / this.targetResolution_;n var height = getHeight(this.targetExtent_) / this.targetResolution_;n this.canvas_ = renderReprojected(width, height, this.sourcePixelRatio_, this.sourceImage_.getResolution(), this.maxSourceExtent_, this.targetResolution_, this.targetExtent_, this.triangulation_, [{n extent: this.sourceImage_.getExtent(),n image: this.sourceImage_.getImage()n }], 0);n }n this.state = sourceState;n this.changed();n };n /**n * @inheritDocn */n ReprojImage.prototype.load = function () {n if (this.state == ImageState.IDLE) {n this.state = ImageState.LOADING;n this.changed();n var sourceState = this.sourceImage_.getState();n if (sourceState == ImageState.LOADED || sourceState == ImageState.ERROR) {n this.reproject_();n }n else {n this.sourceListenerKey_ = listen(this.sourceImage_, EventType.CHANGE, function (e) {n var sourceState = this.sourceImage_.getState();n if (sourceState == ImageState.LOADED || sourceState == ImageState.ERROR) {n this.unlistenSource_();n this.reproject_();n }n }, this);n this.sourceImage_.load();n }n }n };n /**n * @privaten */n ReprojImage.prototype.unlistenSource_ = function () {n unlistenByKey(/** @type {!import("../events.js").EventsKey} */ (this.sourceListenerKey_));n this.sourceListenerKey_ = null;n };n return ReprojImage;n}(ImageBase));nexport default ReprojImage;n//# sourceMappingURL=Image.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/source/Imagen */nimport { abstract } from '../util.js';nimport { ENABLE_RASTER_REPROJECTION } from '../reproj/common.js';nimport ImageState from '../ImageState.js';nimport { linearFindNearest } from '../array.js';nimport Event from '../events/Event.js';nimport { equals } from '../extent.js';nimport { equivalent } from '../proj.js';nimport ReprojImage from '../reproj/Image.js';nimport Source from './Source.js';n/**n * @enum {string}n */nvar ImageSourceEventType = {n /**n * Triggered when an image starts loading.n * @event module:ol/source/Image.ImageSourceEvent#imageloadstartn * @apin */n IMAGELOADSTART: 'imageloadstart',n /**n * Triggered when an image finishes loading.n * @event module:ol/source/Image.ImageSourceEvent#imageloadendn * @apin */n IMAGELOADEND: 'imageloadend',n /**n * Triggered if image loading results in an error.n * @event module:ol/source/Image.ImageSourceEvent#imageloaderrorn * @apin */n IMAGELOADERROR: 'imageloaderror'n};n/**n * @classdescn * Events emitted by {@link module:ol/source/Image~ImageSource} instances are instances of thisn * type.n */nvar ImageSourceEvent = /** @class */ (function (_super) {n __extends(ImageSourceEvent, _super);n /**n * @param {string} type Type.n * @param {import("../Image.js").default} image The image.n */n function ImageSourceEvent(type, image) {n var _this = _super.call(this, type) || this;n /**n * The image related to the event.n * @type {import("../Image.js").default}n * @apin */n _this.image = image;n return _this;n }n return ImageSourceEvent;n}(Event));nexport { ImageSourceEvent };n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions]n * @property {import("../proj.js").ProjectionLike} [projection]n * @property {Array<number>} [resolutions]n * @property {import("./State.js").default} [state]n */n/**n * @classdescn * Abstract base class; normally only used for creating subclasses and notn * instantiated in apps.n * Base class for sources providing a single image.n * @abstractn * @fires module:ol/source/Image.ImageSourceEventn * @apin */nvar ImageSource = /** @class */ (function (_super) {n __extends(ImageSource, _super);n /**n * @param {Options} options Single image source options.n */n function ImageSource(options) {n var _this = _super.call(this, {n attributions: options.attributions,n projection: options.projection,n state: options.staten }) || this;n /**n * @privaten * @type {Array<number>}n */n this.resolutions = options.resolutions !== undefined ?n options.resolutions : null;n /**n * @privaten * @type {import("../reproj/Image.js").default}n */n this.reprojectedImage = null;n /**n * @privaten * @type {number}n */n this.reprojectedRevision = 0;n return _this;n }n /**n * @return {Array<number>} Resolutions.n * @overriden */n ImageSource.prototype.getResolutions = function () {n return this.resolutions_;n };n /**n * @protectedn * @param {number} resolution Resolution.n * @return {number} Resolution.n */n ImageSource.prototype.findNearestResolution = function (resolution) {n if (this.resolutions_) {n var idx = linearFindNearest(this.resolutions_, resolution, 0);n resolution = this.resolutions_;n }n return resolution;n };n /**n * @param {import("../extent.js").Extent} extent Extent.n * @param {number} resolution Resolution.n * @param {number} pixelRatio Pixel ratio.n * @param {import("../proj/Projection.js").default} projection Projection.n * @return {import("../ImageBase.js").default} Single image.n */n ImageSource.prototype.getImage = function (extent, resolution, pixelRatio, projection) {n var sourceProjection = this.getProjection();n if (!ENABLE_RASTER_REPROJECTION ||n !sourceProjection ||n !projection ||n equivalent(sourceProjection, projection)) {n if (sourceProjection) {n projection = sourceProjection;n }n return this.getImageInternal(extent, resolution, pixelRatio, projection);n }n else {n if (this.reprojectedImage_) {n if (this.reprojectedRevision_ == this.getRevision() &&n equivalent(this.reprojectedImage_.getProjection(), projection) &&n this.reprojectedImage_.getResolution() == resolution &&n equals(this.reprojectedImage_.getExtent(), extent)) {n return this.reprojectedImage_;n }n this.reprojectedImage_.dispose();n this.reprojectedImage_ = null;n }n this.reprojectedImage_ = new ReprojImage(sourceProjection, projection, extent, resolution, pixelRatio, function (extent, resolution, pixelRatio) {n return this.getImageInternal(extent, resolution, pixelRatio, sourceProjection);n }.bind(this));n this.reprojectedRevision_ = this.getRevision();n return this.reprojectedImage_;n }n };n /**n * @abstractn * @param {import("../extent.js").Extent} extent Extent.n * @param {number} resolution Resolution.n * @param {number} pixelRatio Pixel ratio.n * @param {import("../proj/Projection.js").default} projection Projection.n * @return {import("../ImageBase.js").default} Single image.n * @protectedn */n ImageSource.prototype.getImageInternal = function (extent, resolution, pixelRatio, projection) {n return abstract();n };n /**n * Handle image change events.n * @param {import("../events/Event.js").default} event Event.n * @protectedn */n ImageSource.prototype.handleImageChange = function (event) {n var image = /** @type {import("../Image.js").default} */ (event.target);n switch (image.getState()) {n case ImageState.LOADING:n this.loading = true;n this.dispatchEvent(new ImageSourceEvent(ImageSourceEventType.IMAGELOADSTART, image));n break;n case ImageState.LOADED:n this.loading = false;n this.dispatchEvent(new ImageSourceEvent(ImageSourceEventType.IMAGELOADEND, image));n break;n case ImageState.ERROR:n this.loading = false;n this.dispatchEvent(new ImageSourceEvent(ImageSourceEventType.IMAGELOADERROR, image));n break;n default:n // passn }n };n return ImageSource;n}(Source));n/**n * Default image load function for image sources that use import("../Image.js").Image imagen * instances.n * @param {import("../Image.js").default} image Image.n * @param {string} src Source.n */nexport function defaultImageLoadFunction(image, src) {n /** @type {HTMLImageElement|HTMLVideoElement} */ (image.getImage()).src = src;n}nexport default ImageSource;n//# sourceMappingURL=Image.js.map”,“/**n * @module ol/urin */n/**n * Appends query parameters to a URI.n *n * @param {string} uri The original URI, which may already have query data.n * @param {!Object} params An object where keys are URI-encoded parameter keys,n * and the values are arbitrary types or arrays.n * @return {string} The new URI.n */nexport function appendParams(uri, params) {n var keyParams = [];n // Skip any null or undefined parameter valuesn Object.keys(params).forEach(function (k) {n if (params !== null && params !== undefined) {n keyParams.push(k + '=' + encodeURIComponent(params));n }n });n var qs = keyParams.join('&');n // remove any trailing ? or &n uri = uri.replace(/$/, '');n // append ? or & depending on whether uri has existing parametersn uri = uri.indexOf('?') === -1 ? uri + '?' : uri + '&';n return uri + qs;n}n//# sourceMappingURL=uri.js.map”,“/**n * @module ol/source/ImageArcGISRestn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport ImageWrapper from '../Image.js';nimport { assert } from '../asserts.js';nimport EventType from '../events/EventType.js';nimport { containsExtent, getHeight, getWidth } from '../extent.js';nimport { assign } from '../obj.js';nimport ImageSource, { defaultImageLoadFunction } from './Image.js';nimport { appendParams } from '../uri.js';n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions] Attributions.n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note thatn * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.n * See developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.n * @property {boolean} [hidpi=true] Use the `ol/Map#pixelRatio` value when requesting the image fromn * the remote server.n * @property {import("../Image.js").LoadFunction} [imageLoadFunction] Optional function to load an image givenn * a URL.n * @property {Object<string,*>} [params] ArcGIS Rest parameters. This field is optional. Servicen * defaults will be used for any fields not specified. `FORMAT` is `PNG32` by default. `F` isn * `IMAGE` by default. `TRANSPARENT` is `true` by default. `BBOX`, `SIZE`, `BBOXSR`, and `IMAGESR`n * will be set dynamically. Set `LAYERS` to override the default service layer visibility. Seen * {@link resources.arcgis.com/en/help/arcgis-rest-api/index.html#/Export_Map/02r3000000v7000000/}n * for further reference.n * @property {import("../proj.js").ProjectionLike} [projection] Projection. Default is the view projection.n * @property {number} [ratio=1.5] Ratio. `1` means image requests are the size of the map viewport,n * `2` means twice the size of the map viewport, and so on.n * @property {Array<number>} [resolutions] Resolutions. If specified, requests will be made forn * these resolutions only.n * @property {string} [url] ArcGIS Rest service URL for a Map Service or Image Service. The urln * should include /MapServer or /ImageServer.n */n/**n * @classdescn * Source for data from ArcGIS Rest services providing single, untiled images.n * Useful when underlying map service has labels.n *n * If underlying map service is not using labels,n * take advantage of ol image caching and usen * {@link module:ol/source/TileArcGISRest} data source.n *n * @fires module:ol/source/Image.ImageSourceEventn * @apin */nvar ImageArcGISRest = /** @class */ (function (_super) {n __extends(ImageArcGISRest, _super);n /**n * @param {Options=} opt_options Image ArcGIS Rest Options.n */n function ImageArcGISRest(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n _this = _super.call(this, {n attributions: options.attributions,n projection: options.projection,n resolutions: options.resolutionsn }) || this;n /**n * @privaten * @type {?string}n */n this.crossOrigin =n options.crossOrigin !== undefined ? options.crossOrigin : null;n /**n * @privaten * @type {boolean}n */n this.hidpi = options.hidpi !== undefined ? options.hidpi : true;n /**n * @privaten * @type {string|undefined}n */n this.url = options.url;n /**n * @privaten * @type {import("../Image.js").LoadFunction}n */n this.imageLoadFunction = options.imageLoadFunction !== undefined ?n options.imageLoadFunction : defaultImageLoadFunction;n /**n * @privaten * @type {!Object}n */n this.params = options.params || {};n /**n * @privaten * @type {import("../Image.js").default}n */n this.image = null;n /**n * @privaten * @type {import("../size.js").Size}n */n this.imageSize = [0, 0];n /**n * @privaten * @type {number}n */n this.renderedRevision = 0;n /**n * @privaten * @type {number}n */n this.ratio = options.ratio !== undefined ? options.ratio : 1.5;n return _this;n }n /**n * Get the user-provided params, i.e. those passed to the constructor throughn * the "params" option, and possibly updated using the updateParams method.n * @return {Object} Params.n * @apin */n ImageArcGISRest.prototype.getParams = function () {n return this.params_;n };n /**n * @inheritDocn */n ImageArcGISRest.prototype.getImageInternal = function (extent, resolution, pixelRatio, projection) {n if (this.url_ === undefined) {n return null;n }n resolution = this.findNearestResolution(resolution);n pixelRatio = this.hidpi_ ? pixelRatio : 1;n var image = this.image_;n if (image &&n this.renderedRevision_ == this.getRevision() &&n image.getResolution() == resolution &&n image.getPixelRatio() == pixelRatio &&n containsExtent(image.getExtent(), extent)) {n return image;n }n var params = {n 'F': 'image',n 'FORMAT': 'PNG32',n 'TRANSPARENT': truen };n assign(params, this.params_);n extent = extent.slice();n var centerX = (extent + extent) / 2;n var centerY = (extent + extent) / 2;n if (this.ratio_ != 1) {n var halfWidth = this.ratio_ * getWidth(extent) / 2;n var halfHeight = this.ratio_ * getHeight(extent) / 2;n extent = centerX - halfWidth;n extent = centerY - halfHeight;n extent = centerX + halfWidth;n extent = centerY + halfHeight;n }n var imageResolution = resolution / pixelRatio;n // Compute an integer width and height.n var width = Math.ceil(getWidth(extent) / imageResolution);n var height = Math.ceil(getHeight(extent) / imageResolution);n // Modify the extent to match the integer width and height.n extent = centerX - imageResolution * width / 2;n extent = centerX + imageResolution * width / 2;n extent = centerY - imageResolution * height / 2;n extent = centerY + imageResolution * height / 2;n this.imageSize_ = width;n this.imageSize_ = height;n var url = this.getRequestUrl_(extent, this.imageSize_, pixelRatio, projection, params);n this.image_ = new ImageWrapper(extent, resolution, pixelRatio, url, this.crossOrigin_, this.imageLoadFunction_);n this.renderedRevision_ = this.getRevision();n this.image_.addEventListener(EventType.CHANGE, this.handleImageChange.bind(this));n return this.image_;n };n /**n * Return the image load function of the source.n * @return {import("../Image.js").LoadFunction} The image load function.n * @apin */n ImageArcGISRest.prototype.getImageLoadFunction = function () {n return this.imageLoadFunction_;n };n /**n * @param {import("../extent.js").Extent} extent Extent.n * @param {import("../size.js").Size} size Size.n * @param {number} pixelRatio Pixel ratio.n * @param {import("../proj/Projection.js").default} projection Projection.n * @param {Object} params Params.n * @return {string} Request URL.n * @privaten */n ImageArcGISRest.prototype.getRequestUrl_ = function (extent, size, pixelRatio, projection, params) {n // ArcGIS Server only wants the numeric portion of the projection ID.n var srid = projection.getCode().split(':').pop();n params = size + ',' + size;n params = extent.join(',');n params = srid;n params = srid;n params = Math.round(90 * pixelRatio);n var url = this.url_;n var modifiedUrl = urln .replace(/MapServer\/?$/, 'MapServer/export')n .replace(/ImageServer\/?$/, 'ImageServer/exportImage');n if (modifiedUrl == url) {n assert(false, 50); // `options.featureTypes` should be an Arrayn }n return appendParams(modifiedUrl, params);n };n /**n * Return the URL used for this ArcGIS source.n * @return {string|undefined} URL.n * @apin */n ImageArcGISRest.prototype.getUrl = function () {n return this.url_;n };n /**n * Set the image load function of the source.n * @param {import("../Image.js").LoadFunction} imageLoadFunction Image load function.n * @apin */n ImageArcGISRest.prototype.setImageLoadFunction = function (imageLoadFunction) {n this.image_ = null;n this.imageLoadFunction_ = imageLoadFunction;n this.changed();n };n /**n * Set the URL to use for requests.n * @param {string|undefined} url URL.n * @apin */n ImageArcGISRest.prototype.setUrl = function (url) {n if (url != this.url_) {n this.url_ = url;n this.image_ = null;n this.changed();n }n };n /**n * Update the user-provided params.n * @param {Object} params Params.n * @apin */n ImageArcGISRest.prototype.updateParams = function (params) {n assign(this.params_, params);n this.image_ = null;n this.changed();n };n return ImageArcGISRest;n}(ImageSource));nexport default ImageArcGISRest;n//# sourceMappingURL=ImageArcGISRest.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/ImageCanvasn */nimport ImageBase from './ImageBase.js';nimport ImageState from './ImageState.js';n/**n * A function that is called to trigger asynchronous canvas drawing. It isn * called with a "done" callback that should be called when drawing is done.n * If any error occurs during drawing, the "done" callback should be called withn * that error.n *n * @typedef {function(function(Error=): void): void} Loadern */nvar ImageCanvas = /** @class */ (function (_super) {n __extends(ImageCanvas, _super);n /**n * @param {import("./extent.js").Extent} extent Extent.n * @param {number} resolution Resolution.n * @param {number} pixelRatio Pixel ratio.n * @param {HTMLCanvasElement} canvas Canvas.n * @param {Loader=} opt_loader Optional loader function ton * support asynchronous canvas drawing.n */n function ImageCanvas(extent, resolution, pixelRatio, canvas, opt_loader) {n var _this = this;n var state = opt_loader !== undefined ? ImageState.IDLE : ImageState.LOADED;n _this = _super.call(this, extent, resolution, pixelRatio, state) || this;n /**n * Optional canvas loader function.n * @type {?Loader}n * @privaten */n this.loader = opt_loader !== undefined ? opt_loader : null;n /**n * @privaten * @type {HTMLCanvasElement}n */n this.canvas = canvas;n /**n * @privaten * @type {?Error}n */n this.error = null;n return _this;n }n /**n * Get any error associated with asynchronous rendering.n * @return {?Error} Any error that occurred during rendering.n */n ImageCanvas.prototype.getError = function () {n return this.error_;n };n /**n * Handle async drawing complete.n * @param {Error=} err Any error during drawing.n * @privaten */n ImageCanvas.prototype.handleLoad_ = function (err) {n if (err) {n this.error_ = err;n this.state = ImageState.ERROR;n }n else {n this.state = ImageState.LOADED;n }n this.changed();n };n /**n * @inheritDocn */n ImageCanvas.prototype.load = function () {n if (this.state == ImageState.IDLE) {n this.state = ImageState.LOADING;n this.changed();n this.loader_(this.handleLoad_.bind(this));n }n };n /**n * @return {HTMLCanvasElement} Canvas element.n */n ImageCanvas.prototype.getImage = function () {n return this.canvas_;n };n return ImageCanvas;n}(ImageBase));nexport default ImageCanvas;n//# sourceMappingURL=ImageCanvas.js.map”,“/**n * @module ol/source/ImageCanvasn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport ImageCanvas from '../ImageCanvas.js';nimport { containsExtent, getHeight, getWidth, scaleFromCenter } from '../extent.js';nimport ImageSource from './Image.js';n/**n * A function returning the canvas element (`{HTMLCanvasElement}`)n * used by the source as an image. The arguments passed to the function are:n * {@link module:ol/extent~Extent} the image extent, `{number}` the image resolution,n * `{number}` the device pixel ratio, {@link module:ol/size~Size} the image size, andn * {@link module:ol/proj/Projection} the image projection. The canvas returned byn * this function is cached by the source. The this keyword inside the functionn * references the {@link module:ol/source/ImageCanvas}.n *n * @typedef {function(this:import("../ImageCanvas.js").default, import("../extent.js").Extent, number,n * number, import("../size.js").Size, import("../proj/Projection.js").default): HTMLCanvasElement} FunctionTypen */n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions] Attributions.n * @property {FunctionType} [canvasFunction] Canvas function.n * The function returning the canvas element used by the sourcen * as an image. The arguments passed to the function are: `{import("../extent.js").Extent}` then * image extent, `{number}` the image resolution, `{number}` the device pixeln * ratio, `{import("../size.js").Size}` the image size, and `{import("../proj/Projection.js").Projection}` the imagen * projection. The canvas returned by this function is cached by the source. Ifn * the value returned by the function is later changed thenn * `changed` should be called on the source for the source ton * invalidate the current cached image. See: {@link module:ol/Observable~Observable#changed}n * @property {import("../proj.js").ProjectionLike} projection Projection.n * @property {number} [ratio=1.5] Ratio. 1 means canvases are the size of the map viewport, 2 means twice then * width and height of the map viewport, and so on. Must be `1` or higher.n * @property {Array<number>} [resolutions] Resolutions.n * If specified, new canvases will be created for these resolutionsn * @property {import("./State.js").default} [state] Source state.n */n/**n * @classdescn * Base class for image sources where a canvas element is the image.n * @apin */nvar ImageCanvasSource = /** @class */ (function (_super) {n __extends(ImageCanvasSource, _super);n /**n * @param {Options=} opt_options ImageCanvas options.n */n function ImageCanvasSource(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n _this = _super.call(this, {n attributions: options.attributions,n projection: options.projection,n resolutions: options.resolutions,n state: options.staten }) || this;n /**n * @privaten * @type {FunctionType}n */n this.canvasFunction = options.canvasFunction;n /**n * @privaten * @type {import("../ImageCanvas.js").default}n */n this.canvas = null;n /**n * @privaten * @type {number}n */n this.renderedRevision = 0;n /**n * @privaten * @type {number}n */n this.ratio = options.ratio !== undefined ?n options.ratio : 1.5;n return _this;n }n /**n * @inheritDocn */n ImageCanvasSource.prototype.getImageInternal = function (extent, resolution, pixelRatio, projection) {n resolution = this.findNearestResolution(resolution);n var canvas = this.canvas_;n if (canvas &&n this.renderedRevision_ == this.getRevision() &&n canvas.getResolution() == resolution &&n canvas.getPixelRatio() == pixelRatio &&n containsExtent(canvas.getExtent(), extent)) {n return canvas;n }n extent = extent.slice();n scaleFromCenter(extent, this.ratio_);n var width = getWidth(extent) / resolution;n var height = getHeight(extent) / resolution;n var size = [width * pixelRatio, height * pixelRatio];n var canvasElement = this.canvasFunction_.call(this, extent, resolution, pixelRatio, size, projection);n if (canvasElement) {n canvas = new ImageCanvas(extent, resolution, pixelRatio, canvasElement);n }n this.canvas_ = canvas;n this.renderedRevision_ = this.getRevision();n return canvas;n };n return ImageCanvasSource;n}(ImageSource));nexport default ImageCanvasSource;n//# sourceMappingURL=ImageCanvas.js.map”,“/**n * @module ol/source/ImageMapGuiden */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport ImageWrapper from '../Image.js';nimport EventType from '../events/EventType.js';nimport { containsExtent, getCenter, getHeight, getWidth, scaleFromCenter } from '../extent.js';nimport { assign } from '../obj.js';nimport ImageSource, { defaultImageLoadFunction } from './Image.js';nimport { appendParams } from '../uri.js';n/**n * @typedef {Object} Optionsn * @property {string} [url] The mapagent url.n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note thatn * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.n * See developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.n * @property {number} [displayDpi=96] The display resolution.n * @property {number} [metersPerUnit=1] The meters-per-unit value.n * @property {boolean} [hidpi=true] Use the `ol/Map#pixelRatio` value when requestingn * the image from the remote server.n * @property {boolean} [useOverlay] If `true`, will use `GETDYNAMICMAPOVERLAYIMAGE`.n * @property {import("../proj.js").ProjectionLike} projection Projection.n * @property {number} [ratio=1] Ratio. `1` means image requests are the size of the map viewport, `2` meansn * twice the width and height of the map viewport, and so on. Must be `1` or higher.n * @property {Array<number>} [resolutions] Resolutions.n * If specified, requests will be made for these resolutions only.n * @property {import("../Image.js").LoadFunction} [imageLoadFunction] Optional function to load an image given a URL.n * @property {Object} [params] Additional parameters.n */n/**n * @classdescn * Source for images from Mapguide serversn *n * @fires module:ol/source/Image.ImageSourceEventn * @apin */nvar ImageMapGuide = /** @class */ (function (_super) {n __extends(ImageMapGuide, _super);n /**n * @param {Options} options ImageMapGuide options.n */n function ImageMapGuide(options) {n var _this = _super.call(this, {n projection: options.projection,n resolutions: options.resolutionsn }) || this;n /**n * @privaten * @type {?string}n */n this.crossOrigin =n options.crossOrigin !== undefined ? options.crossOrigin : null;n /**n * @privaten * @type {number}n */n this.displayDpi = options.displayDpi !== undefined ?n options.displayDpi : 96;n /**n * @privaten * @type {!Object}n */n this.params = options.params || {};n /**n * @privaten * @type {string|undefined}n */n this.url = options.url;n /**n * @privaten * @type {import("../Image.js").LoadFunction}n */n this.imageLoadFunction = options.imageLoadFunction !== undefined ?n options.imageLoadFunction : defaultImageLoadFunction;n /**n * @privaten * @type {boolean}n */n this.hidpi = options.hidpi !== undefined ? options.hidpi : true;n /**n * @privaten * @type {number}n */n this.metersPerUnit = options.metersPerUnit !== undefined ?n options.metersPerUnit : 1;n /**n * @privaten * @type {number}n */n this.ratio = options.ratio !== undefined ? options.ratio : 1;n /**n * @privaten * @type {boolean}n */n this.useOverlay = options.useOverlay !== undefined ?n options.useOverlay : false;n /**n * @privaten * @type {import("../Image.js").default}n */n this.image = null;n /**n * @privaten * @type {number}n */n this.renderedRevision = 0;n return _this;n }n /**n * Get the user-provided params, i.e. those passed to the constructor throughn * the "params" option, and possibly updated using the updateParams method.n * @return {Object} Params.n * @apin */n ImageMapGuide.prototype.getParams = function () {n return this.params_;n };n /**n * @inheritDocn */n ImageMapGuide.prototype.getImageInternal = function (extent, resolution, pixelRatio, projection) {n resolution = this.findNearestResolution(resolution);n pixelRatio = this.hidpi_ ? pixelRatio : 1;n var image = this.image_;n if (image &&n this.renderedRevision_ == this.getRevision() &&n image.getResolution() == resolution &&n image.getPixelRatio() == pixelRatio &&n containsExtent(image.getExtent(), extent)) {n return image;n }n if (this.ratio_ != 1) {n extent = extent.slice();n scaleFromCenter(extent, this.ratio_);n }n var width = getWidth(extent) / resolution;n var height = getHeight(extent) / resolution;n var size = [width * pixelRatio, height * pixelRatio];n if (this.url_ !== undefined) {n var imageUrl = this.getUrl(this.url_, this.params_, extent, size, projection);n image = new ImageWrapper(extent, resolution, pixelRatio, imageUrl, this.crossOrigin_, this.imageLoadFunction_);n image.addEventListener(EventType.CHANGE, this.handleImageChange.bind(this));n }n else {n image = null;n }n this.image_ = image;n this.renderedRevision_ = this.getRevision();n return image;n };n /**n * Return the image load function of the source.n * @return {import("../Image.js").LoadFunction} The image load function.n * @apin */n ImageMapGuide.prototype.getImageLoadFunction = function () {n return this.imageLoadFunction_;n };n /**n * Update the user-provided params.n * @param {Object} params Params.n * @apin */n ImageMapGuide.prototype.updateParams = function (params) {n assign(this.params_, params);n this.changed();n };n /**n * @param {string} baseUrl The mapagent url.n * @param {Object<string, string|number>} params Request parameters.n * @param {import("../extent.js").Extent} extent Extent.n * @param {import("../size.js").Size} size Size.n * @param {import("../proj/Projection.js").default} projection Projection.n * @return {string} The mapagent map image request URL.n */n ImageMapGuide.prototype.getUrl = function (baseUrl, params, extent, size, projection) {n var scale = getScale(extent, size, this.metersPerUnit_, this.displayDpi_);n var center = getCenter(extent);n var baseParams = {n 'OPERATION': this.useOverlay_ ? 'GETDYNAMICMAPOVERLAYIMAGE' : 'GETMAPIMAGE',n 'VERSION': '2.0.0',n 'LOCALE': 'en',n 'CLIENTAGENT': 'ol/source/ImageMapGuide source',n 'CLIP': '1',n 'SETDISPLAYDPI': this.displayDpi_,n 'SETDISPLAYWIDTH': Math.round(size),n 'SETDISPLAYHEIGHT': Math.round(size),n 'SETVIEWSCALE': scale,n 'SETVIEWCENTERX': center,n 'SETVIEWCENTERY': centern };n assign(baseParams, params);n return appendParams(baseUrl, baseParams);n };n /**n * Set the image load function of the MapGuide source.n * @param {import("../Image.js").LoadFunction} imageLoadFunction Image load function.n * @apin */n ImageMapGuide.prototype.setImageLoadFunction = function (imageLoadFunction) {n this.image_ = null;n this.imageLoadFunction_ = imageLoadFunction;n this.changed();n };n return ImageMapGuide;n}(ImageSource));n/**n * @param {import("../extent.js").Extent} extent The map extents.n * @param {import("../size.js").Size} size The viewport size.n * @param {number} metersPerUnit The meters-per-unit value.n * @param {number} dpi The display resolution.n * @return {number} The computed map scale.n */nfunction getScale(extent, size, metersPerUnit, dpi) {n var mcsW = getWidth(extent);n var mcsH = getHeight(extent);n var devW = size;n var devH = size;n var mpp = 0.0254 / dpi;n if (devH * mcsW > devW * mcsH) {n return mcsW * metersPerUnit / (devW * mpp); // width limitedn }n else {n return mcsH * metersPerUnit / (devH * mpp); // height limitedn }n}nexport default ImageMapGuide;n//# sourceMappingURL=ImageMapGuide.js.map”,“/**n * @module ol/source/ImageStaticn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport ImageWrapper from '../Image.js';nimport ImageState from '../ImageState.js';nimport { createCanvasContext2D } from '../dom.js';nimport EventType from '../events/EventType.js';nimport { intersects, getHeight, getWidth } from '../extent.js';nimport { get as getProjection } from '../proj.js';nimport ImageSource, { defaultImageLoadFunction } from './Image.js';n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions] Attributions.n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note thatn * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.n * See developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.n * @property {import("../extent.js").Extent} [imageExtent] Extent of the image in map coordinates.n * This is the [left, bottom, right, top] map coordinates of your image.n * @property {import("../Image.js").LoadFunction} [imageLoadFunction] Optional function to load an image given a URL.n * @property {import("../proj.js").ProjectionLike} projection Projection.n * @property {import("../size.js").Size} [imageSize] Size of the image in pixels. Usually the image size is auto-detected, so thisn * only needs to be set if auto-detection fails for some reason.n * @property {string} url Image URL.n */n/**n * @classdescn * A layer source for displaying a single, static image.n * @apin */nvar Static = /** @class */ (function (_super) {n __extends(Static, _super);n /**n * @param {Options} options ImageStatic options.n */n function Static(options) {n var _this = this;n var crossOrigin = options.crossOrigin !== undefined ?n options.crossOrigin : null;n var /** @type {import("../Image.js").LoadFunction} */ imageLoadFunction = options.imageLoadFunction !== undefined ?n options.imageLoadFunction : defaultImageLoadFunction;n _this = _super.call(this, {n attributions: options.attributions,n projection: getProjection(options.projection)n }) || this;n /**n * @privaten * @type {string}n */n this.url = options.url;n /**n * @privaten * @type {import("../extent.js").Extent}n */n this.imageExtent = options.imageExtent;n /**n * @privaten * @type {import("../Image.js").default}n */n this.image = new ImageWrapper(this.imageExtent, undefined, 1, this.url, crossOrigin, imageLoadFunction);n /**n * @privaten * @type {import("../size.js").Size}n */n this.imageSize = options.imageSize ? options.imageSize : null;n this.image.addEventListener(EventType.CHANGE, _this.handleImageChange.bind(_this));n return _this;n }n /**n * Returns the image extentn * @return {import("../extent.js").Extent} image extent.n * @apin */n Static.prototype.getImageExtent = function () {n return this.imageExtent_;n };n /**n * @inheritDocn */n Static.prototype.getImageInternal = function (extent, resolution, pixelRatio, projection) {n if (intersects(extent, this.image_.getExtent())) {n return this.image_;n }n return null;n };n /**n * Return the URL used for this image source.n * @return {string} URL.n * @apin */n Static.prototype.getUrl = function () {n return this.url_;n };n /**n * @inheritDocn */n Static.prototype.handleImageChange = function (evt) {n if (this.image_.getState() == ImageState.LOADED) {n var imageExtent = this.image_.getExtent();n var image = this.image_.getImage();n var imageWidth = void 0, imageHeight = void 0;n if (this.imageSize_) {n imageWidth = this.imageSize_;n imageHeight = this.imageSize_;n }n else {n imageWidth = image.width;n imageHeight = image.height;n }n var resolution = getHeight(imageExtent) / imageHeight;n var targetWidth = Math.ceil(getWidth(imageExtent) / resolution);n if (targetWidth != imageWidth) {n var context = createCanvasContext2D(targetWidth, imageHeight);n var canvas = context.canvas;n context.drawImage(image, 0, 0, imageWidth, imageHeight, 0, 0, canvas.width, canvas.height);n this.image_.setImage(canvas);n }n }n _super.prototype.handleImageChange.call(this, evt);n };n return Static;n}(ImageSource));nexport default Static;n//# sourceMappingURL=ImageStatic.js.map”,“/**n * @module ol/source/commonn */n/**n * Default WMS version.n * @type {string}n */nexport var DEFAULT_WMS_VERSION = '1.3.0';n//# sourceMappingURL=common.js.map”,“/**n * @module ol/source/WMSServerTypen */n/**n * Available server types: `'carmentaserver'`, `'geoserver'`, `'mapserver'`,n * `'qgis'`. These are servers that have vendor parameters beyond the WMSn * specification that OpenLayers can make use of.n * @enum {string}n */nexport default {n /**n * HiDPI support for [Carmenta Server](www.carmenta.com/en/products/carmenta-server)n * @apin */n CARMENTA_SERVER: 'carmentaserver',n /**n * HiDPI support for [GeoServer](geoserver.org/)n * @apin */n GEOSERVER: 'geoserver',n /**n * HiDPI support for [MapServer](mapserver.org/)n * @apin */n MAPSERVER: 'mapserver',n /**n * HiDPI support for [QGIS](qgis.org/)n * @apin */n QGIS: 'qgis'n};n//# sourceMappingURL=WMSServerType.js.map”,“/**n * @module ol/source/ImageWMSn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { DEFAULT_WMS_VERSION } from './common.js';nimport ImageWrapper from '../Image.js';nimport { assert } from '../asserts.js';nimport EventType from '../events/EventType.js';nimport { containsExtent, getCenter, getForViewAndSize, getHeight, getWidth } from '../extent.js';nimport { assign } from '../obj.js';nimport { get as getProjection, transform } from '../proj.js';nimport { calculateSourceResolution } from '../reproj.js';nimport ImageSource, { defaultImageLoadFunction } from './Image.js';nimport WMSServerType from './WMSServerType.js';nimport { compareVersions } from '../string.js';nimport { appendParams } from '../uri.js';n/**n * @constn * @type {import("../size.js").Size}n */nvar GETFEATUREINFO_IMAGE_SIZE = [101, 101];n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions] Attributions.n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note thatn * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.n * See developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.n * @property {boolean} [hidpi=true] Use the `ol/Map#pixelRatio` value when requestingn * the image from the remote server.n * @property {import("./WMSServerType.js").default|string} [serverType] The type ofn * the remote WMS server: `mapserver`, `geoserver` or `qgis`. Only needed if `hidpi` is `true`.n * @property {import("../Image.js").LoadFunction} [imageLoadFunction] Optional function to load an image given a URL.n * @property {Object<string,*>} params WMS request parameters.n * At least a `LAYERS` param is required. `STYLES` isn * `''` by default. `VERSION` is `1.3.0` by default. `WIDTH`, `HEIGHT`, `BBOX`n * and `CRS` (`SRS` for WMS version < 1.3.0) will be set dynamically.n * @property {import("../proj.js").ProjectionLike} [projection] Projection. Default is the view projection.n * @property {number} [ratio=1.5] Ratio. `1` means image requests are the size of the map viewport, `2` meansn * twice the width and height of the map viewport, and so on. Must be `1` orn * higher.n * @property {Array<number>} [resolutions] Resolutions.n * If specified, requests will be made for these resolutions only.n * @property {string} url WMS service URL.n */n/**n * @classdescn * Source for WMS servers providing single, untiled images.n *n * @fires module:ol/source/Image.ImageSourceEventn * @apin */nvar ImageWMS = /** @class */ (function (_super) {n __extends(ImageWMS, _super);n /**n * @param {Options=} [opt_options] ImageWMS options.n */n function ImageWMS(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n _this = _super.call(this, {n attributions: options.attributions,n projection: options.projection,n resolutions: options.resolutionsn }) || this;n /**n * @privaten * @type {?string}n */n this.crossOrigin =n options.crossOrigin !== undefined ? options.crossOrigin : null;n /**n * @privaten * @type {string|undefined}n */n this.url = options.url;n /**n * @privaten * @type {import("../Image.js").LoadFunction}n */n this.imageLoadFunction = options.imageLoadFunction !== undefined ?n options.imageLoadFunction : defaultImageLoadFunction;n /**n * @privaten * @type {!Object}n */n this.params = options.params || {};n /**n * @privaten * @type {boolean}n */n this.v13 = true;n this.updateV13();n /**n * @privaten * @type {import("./WMSServerType.js").default|undefined}n */n this.serverType = /** @type {import("./WMSServerType.js").default|undefined} */ (options.serverType);n /**n * @privaten * @type {boolean}n */n this.hidpi = options.hidpi !== undefined ? options.hidpi : true;n /**n * @privaten * @type {import("../Image.js").default}n */n this.image = null;n /**n * @privaten * @type {import("../size.js").Size}n */n this.imageSize = [0, 0];n /**n * @privaten * @type {number}n */n this.renderedRevision = 0;n /**n * @privaten * @type {number}n */n this.ratio = options.ratio !== undefined ? options.ratio : 1.5;n return _this;n }n /**n * Return the GetFeatureInfo URL for the passed coordinate, resolution, andn * projection. Return `undefined` if the GetFeatureInfo URL cannot ben * constructed.n * @param {import("../coordinate.js").Coordinate} coordinate Coordinate.n * @param {number} resolution Resolution.n * @param {import("../proj.js").ProjectionLike} projection Projection.n * @param {!Object} params GetFeatureInfo params. `INFO_FORMAT` at least shouldn * be provided. If `QUERY_LAYERS` is not provided then the layers specifiedn * in the `LAYERS` parameter will be used. `VERSION` should not ben * specified here.n * @return {string|undefined} GetFeatureInfo URL.n * @apin */n ImageWMS.prototype.getFeatureInfoUrl = function (coordinate, resolution, projection, params) {n if (this.url_ === undefined) {n return undefined;n }n var projectionObj = getProjection(projection);n var sourceProjectionObj = this.getProjection();n if (sourceProjectionObj && sourceProjectionObj !== projectionObj) {n resolution = calculateSourceResolution(sourceProjectionObj, projectionObj, coordinate, resolution);n coordinate = transform(coordinate, projectionObj, sourceProjectionObj);n }n var extent = getForViewAndSize(coordinate, resolution, 0, GETFEATUREINFO_IMAGE_SIZE);n var baseParams = {n 'SERVICE': 'WMS',n 'VERSION': DEFAULT_WMS_VERSION,n 'REQUEST': 'GetFeatureInfo',n 'FORMAT': 'image/png',n 'TRANSPARENT': true,n 'QUERY_LAYERS': this.params_n };n assign(baseParams, this.params_, params);n var x = Math.floor((coordinate - extent) / resolution);n var y = Math.floor((extent - coordinate) / resolution);n baseParams[this.v13_ ? 'I' : 'X'] = x;n baseParams[this.v13_ ? 'J' : 'Y'] = y;n return this.getRequestUrl_(extent, GETFEATUREINFO_IMAGE_SIZE, 1, sourceProjectionObj || projectionObj, baseParams);n };n /**n * Return the GetLegendGraphic URL, optionally optimized for the passedn * resolution and possibly including any passed specific parameters. Returnsn * `undefined` if the GetLegendGraphic URL cannot be constructed.n *n * @param {number} [resolution] Resolution. If set to undefined, `SCALE`n * will not be calculated and included in URL.n * @param {Object} [params] GetLegendGraphic params. If `LAYER` is set, then * request is generated for this wms layer, else it will try to use then * configured wms layer. Default `FORMAT` is `image/png`.n * `VERSION` should not be specified here.n * @return {string|undefined} GetLegendGraphic URL.n * @apin */n ImageWMS.prototype.getLegendUrl = function (resolution, params) {n if (this.url_ === undefined) {n return undefined;n }n var baseParams = {n 'SERVICE': 'WMS',n 'VERSION': DEFAULT_WMS_VERSION,n 'REQUEST': 'GetLegendGraphic',n 'FORMAT': 'image/png'n };n if (params === undefined || params === undefined) {n var layers = this.params_.LAYERS;n var isSingleLayer = !Array.isArray(layers) || layers.length === 1;n if (!isSingleLayer) {n return undefined;n }n baseParams = layers;n }n if (resolution !== undefined) {n var mpu = this.getProjection() ? this.getProjection().getMetersPerUnit() : 1;n var dpi = 25.4 / 0.28;n var inchesPerMeter = 39.37;n baseParams = resolution * mpu * inchesPerMeter * dpi;n }n assign(baseParams, params);n return appendParams(/** @type {string} */ (this.url_), baseParams);n };n /**n * Get the user-provided params, i.e. those passed to the constructor throughn * the "params" option, and possibly updated using the updateParams method.n * @return {Object} Params.n * @apin */n ImageWMS.prototype.getParams = function () {n return this.params_;n };n /**n * @inheritDocn */n ImageWMS.prototype.getImageInternal = function (extent, resolution, pixelRatio, projection) {n if (this.url_ === undefined) {n return null;n }n resolution = this.findNearestResolution(resolution);n if (pixelRatio != 1 && (!this.hidpi_ || this.serverType_ === undefined)) {n pixelRatio = 1;n }n var imageResolution = resolution / pixelRatio;n var center = getCenter(extent);n var viewWidth = Math.ceil(getWidth(extent) / imageResolution);n var viewHeight = Math.ceil(getHeight(extent) / imageResolution);n var viewExtent = getForViewAndSize(center, imageResolution, 0, [viewWidth, viewHeight]);n var requestWidth = Math.ceil(this.ratio_ * getWidth(extent) / imageResolution);n var requestHeight = Math.ceil(this.ratio_ * getHeight(extent) / imageResolution);n var requestExtent = getForViewAndSize(center, imageResolution, 0, [requestWidth, requestHeight]);n var image = this.image_;n if (image &&n this.renderedRevision_ == this.getRevision() &&n image.getResolution() == resolution &&n image.getPixelRatio() == pixelRatio &&n containsExtent(image.getExtent(), viewExtent)) {n return image;n }n var params = {n 'SERVICE': 'WMS',n 'VERSION': DEFAULT_WMS_VERSION,n 'REQUEST': 'GetMap',n 'FORMAT': 'image/png',n 'TRANSPARENT': truen };n assign(params, this.params_);n this.imageSize_ = Math.round(getWidth(requestExtent) / imageResolution);n this.imageSize_ = Math.round(getHeight(requestExtent) / imageResolution);n var url = this.getRequestUrl_(requestExtent, this.imageSize_, pixelRatio, projection, params);n this.image_ = new ImageWrapper(requestExtent, resolution, pixelRatio, url, this.crossOrigin_, this.imageLoadFunction_);n this.renderedRevision_ = this.getRevision();n this.image_.addEventListener(EventType.CHANGE, this.handleImageChange.bind(this));n return this.image_;n };n /**n * Return the image load function of the source.n * @return {import("../Image.js").LoadFunction} The image load function.n * @apin */n ImageWMS.prototype.getImageLoadFunction = function () {n return this.imageLoadFunction_;n };n /**n * @param {import("../extent.js").Extent} extent Extent.n * @param {import("../size.js").Size} size Size.n * @param {number} pixelRatio Pixel ratio.n * @param {import("../proj/Projection.js").default} projection Projection.n * @param {Object} params Params.n * @return {string} Request URL.n * @privaten */n ImageWMS.prototype.getRequestUrl_ = function (extent, size, pixelRatio, projection, params) {n assert(this.url_ !== undefined, 9); // `url` must be configured or set using `#setUrl()`n params[this.v13_ ? 'CRS' : 'SRS'] = projection.getCode();n if (!('STYLES' in this.params_)) {n params = '';n }n if (pixelRatio != 1) {n switch (this.serverType_) {n case WMSServerType.GEOSERVER:n var dpi = (90 * pixelRatio + 0.5) | 0;n if ('FORMAT_OPTIONS' in params) {n params += ';dpi:' + dpi;n }n else {n params = 'dpi:' + dpi;n }n break;n case WMSServerType.MAPSERVER:n params = 90 * pixelRatio;n break;n case WMSServerType.CARMENTA_SERVER:n case WMSServerType.QGIS:n params = 90 * pixelRatio;n break;n default:n assert(false, 8); // Unknown `serverType` configuredn break;n }n }n params = size;n params = size;n var axisOrientation = projection.getAxisOrientation();n var bbox;n if (this.v13_ && axisOrientation.substr(0, 2) == 'ne') {n bbox = [extent, extent, extent, extent];n }n else {n bbox = extent;n }n params = bbox.join(',');n return appendParams(/** @type {string} */ (this.url_), params);n };n /**n * Return the URL used for this WMS source.n * @return {string|undefined} URL.n * @apin */n ImageWMS.prototype.getUrl = function () {n return this.url_;n };n /**n * Set the image load function of the source.n * @param {import("../Image.js").LoadFunction} imageLoadFunction Image load function.n * @apin */n ImageWMS.prototype.setImageLoadFunction = function (imageLoadFunction) {n this.image_ = null;n this.imageLoadFunction_ = imageLoadFunction;n this.changed();n };n /**n * Set the URL to use for requests.n * @param {string|undefined} url URL.n * @apin */n ImageWMS.prototype.setUrl = function (url) {n if (url != this.url_) {n this.url_ = url;n this.image_ = null;n this.changed();n }n };n /**n * Update the user-provided params.n * @param {Object} params Params.n * @apin */n ImageWMS.prototype.updateParams = function (params) {n assign(this.params_, params);n this.updateV13_();n this.image_ = null;n this.changed();n };n /**n * @privaten */n ImageWMS.prototype.updateV13_ = function () {n var version = this.params_ || DEFAULT_WMS_VERSION;n this.v13_ = compareVersions(version, '1.3') >= 0;n };n return ImageWMS;n}(ImageSource));nexport default ImageWMS;n//# sourceMappingURL=ImageWMS.js.map”,“/**n * @module ol/source/OSMn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport XYZ from './XYZ.js';n/**n * The attribution containing a link to the OpenStreetMap Copyright and Licensen * page.n * @constn * @type {string}n * @apin */nexport var ATTRIBUTION = '&#169; ' +n '<a href="www.openstreetmap.org/copyright" target="_blank">OpenStreetMap</a> ' +n 'contributors.';n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions] Attributions.n * @property {number} [cacheSize] Tile cache size. The default depends on the screen size. Will increase if too small.n * @property {null|string} [crossOrigin='anonymous'] The `crossOrigin` attribute for loaded images. Note thatn * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.n * See developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.n * @property {number} [maxZoom=19] Max zoom.n * @property {boolean} [opaque=true] Whether the layer is opaque.n * @property {number} [reprojectionErrorThreshold=1.5] Maximum allowed reprojection error (in pixels).n * Higher values can increase reprojection performance, but decrease precision.n * @property {import("../Tile.js").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default isn * “`jsn * function(imageTile, src) {n * imageTile.getImage().src = src;n * };n * “`n * @property {string} [url=''] URL template.n * Must include `{x}`, `{y}` or `{-y}`, and `{z}` placeholders.n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.n */n/**n * @classdescn * Layer source for the OpenStreetMap tile server.n * @apin */nvar OSM = /** @class */ (function (_super) {n __extends(OSM, _super);n /**n * @param {Options=} [opt_options] Open Street Map options.n */n function OSM(opt_options) {n var _this = this;n var options = opt_options || {};n var attributions;n if (options.attributions !== undefined) {n attributions = options.attributions;n }n else {n attributions = [ATTRIBUTION];n }n var crossOrigin = options.crossOrigin !== undefined ?n options.crossOrigin : 'anonymous';n var url = options.url !== undefined ?n options.url : '{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png’;n _this = _super.call(this, {n attributions: attributions,n cacheSize: options.cacheSize,n crossOrigin: crossOrigin,n opaque: options.opaque !== undefined ? options.opaque : true,n maxZoom: options.maxZoom !== undefined ? options.maxZoom : 19,n reprojectionErrorThreshold: options.reprojectionErrorThreshold,n tileLoadFunction: options.tileLoadFunction,n url: url,n wrapX: options.wrapX,n attributionsCollapsible: falsen }) || this;n return _this;n }n return OSM;n}(XYZ));nexport default OSM;n//# sourceMappingURL=OSM.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/layer/BaseImagen */nimport Layer from './Layer.js';n/**n * @typedef {Object} Optionsn * @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 ben * rendered outside of this extent.n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layersn * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumedn * 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 ben * visible.n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer willn * be visible.n * @property {import("../PluggableMap.js").default} [map] Sets the layer as overlay on a map. The map will not managen * this layer in its layers collection, and the layer will be rendered on top. This is useful forn * temporary layers. The standard way to add a layer to a map and have it managed by the map is ton * use {@link module:ol/Map#addLayer}.n * @property {import("../source/Image.js").default} [source] Source for this layer.n */n/**n * @classdescn * Server-rendered images that are available for arbitrary extents andn * 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 then * options means that `title` is observable, and has get/set accessors.n *n * @extends {Layer<import("../source/Image.js").default>}n * @apin */nvar BaseImageLayer = /** @class */ (function (_super) {n __extends(BaseImageLayer, _super);n /**n * @param {Options=} opt_options Layer options.n */n function BaseImageLayer(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n _this = _super.call(this, options) || this;n return _this;n }n return BaseImageLayer;n}(Layer));nexport default BaseImageLayer;n//# sourceMappingURL=BaseImage.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/renderer/Layern */nimport { abstract } from '../util.js';nimport ImageState from '../ImageState.js';nimport Observable from '../Observable.js';nimport EventType from '../events/EventType.js';nimport SourceState from '../source/State.js';n/**n * @template {import("../layer/Layer.js").default} LayerTypen */nvar LayerRenderer = /** @class */ (function (_super) {n __extends(LayerRenderer, _super);n /**n * @param {LayerType} layer Layer.n */n function LayerRenderer(layer) {n var _this = _super.call(this) || this;n /** @private */n this.boundHandleImageChange = this.handleImageChange.bind(_this);n /**n * @privaten * @type {LayerType}n */n this.layer = layer;n return _this;n }n /**n * Asynchronous layer level hit detection.n * @param {import("../pixel.js").Pixel} pixel Pixel.n * @return {Promise<Array<import("../Feature").default>>} Promise that resolves withn * an array of features.n */n LayerRenderer.prototype.getFeatures = function (pixel) {n return abstract();n };n /**n * Determine whether render should be called.n * @abstractn * @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 * @abstractn * @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<number, Object<string, import("../Tile.js").default>>} tiles Lookup of loaded tiles by zoom level.n * @param {number} zoom Zoom level.n * @param {import("../Tile.js").default} tile Tile.n */n LayerRenderer.prototype.loadedTileCallback = function (tiles, zoom, tile) {n if (!tiles) {n tiles = {};n }n tiles[tile.tileCoord.toString()] = tile;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<number, Object<string, import("../Tile.js").default>>} tiles Lookup of loaded tiles by zoom level.n * @return {function(number, import("../TileRange.js").default):boolean} A function that can ben * called with a zoom level and a tile range to add loaded tiles to the lookup.n * @protectedn */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 * @abstractn * @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 {function(import("../Feature.js").FeatureLike, import("../layer/Layer.js").default): T} callback Feature callback.n * @param {Array<import("../Feature.js").FeatureLike>} declutteredFeatures Decluttered features.n * @return {T|void} Callback result.n * @template Tn */n LayerRenderer.prototype.forEachFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, callback, declutteredFeatures) { };n /**n * @abstractn * @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 pixeln * location, null will be returned. If there is data, but pixel values cannot ben * returned, and empty array will be returned.n */n LayerRenderer.prototype.getDataAtPixel = function (pixel, frameState, hitTolerance) {n return abstract();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 loadedn * @abstractn */n LayerRenderer.prototype.handleFontsChanged = function () { };n /**n * Handle changes in image state.n * @param {import("../events/Event.js").default} event Image change event.n * @privaten */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 changen * listener if needed.n * @param {import("../ImageBase.js").default} image Image.n * @return {boolean} `true` if the image is already loaded, `false` otherwise.n * @protectedn */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 * @protectedn */n LayerRenderer.prototype.renderIfReadyAndVisible = function () {n var layer = this.getLayer();n if (layer.getVisible() && layer.getSourceState() == SourceState.READY) {n layer.changed();n }n };n return LayerRenderer;n}(Observable));nexport default LayerRenderer;n//# sourceMappingURL=Layer.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/renderer/canvas/Layern */nimport { getBottomLeft, getBottomRight, getTopLeft, getTopRight } from '../../extent.js';nimport { createCanvasContext2D } from '../../dom.js';nimport RenderEvent from '../../render/Event.js';nimport RenderEventType from '../../render/EventType.js';nimport { rotateAtOffset } from '../../render/canvas.js';nimport LayerRenderer from '../Layer.js';nimport { create as createTransform, apply as applyTransform, compose as composeTransform, toString } from '../../transform.js';n/**n * @abstractn * @template {import("../../layer/Layer.js").default} LayerTypen */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 * @protectedn * @type {HTMLElement}n */n _this.container = null;n /**n * @protectedn * @type {number}n */n _this.renderedResolution;n /**n * A temporary transform. The values in this transform should only be used in an * function that sets the values.n * @privaten * @type {import("../../transform.js").Transform}n */n this.tempTransform = createTransform();n /**n * The transform for rendered pixels to viewport CSS pixels. This transform mustn * be set when rendering a frame and may be used by other functions after rendering.n * @protectedn * @type {import("../../transform.js").Transform}n */n _this.pixelTransform = createTransform();n /**n * The transform for viewport CSS pixels to rendered pixels. This transform mustn * be set when rendering a frame and may be used by other functions after rendering.n * @protectedn * @type {import("../../transform.js").Transform}n */n _this.inversePixelTransform = createTransform();n /**n * @protectedn * @type {CanvasRenderingContext2D}n */n _this.context = null;n /**n * @type {boolean}n */n _this.containerReused = false;n /**n * @type {HTMLCanvasElement}n * @privaten */n this.createTransformStringCanvas = createCanvasContext2D(1, 1).canvas;n return _this;n }n /**n * Get a rendering container from an existing target, if compatible.n * @param {HTMLElement} target Potential render target.n * @param {string} transform CSS Transform.n * @param {number} opacity Opacity.n */n CanvasLayerRenderer.prototype.useContainer = function (target, transform, opacity) {n var layerClassName = this.getLayer().getClassName();n var container, context;n if (target && target.style.opacity === '' && target.className === layerClassName) {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 };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 * @protectedn */n CanvasLayerRenderer.prototype.clip = function (context, frameState, extent) {n var pixelRatio = frameState.pixelRatio;n var halfWidth = (frameState.size * pixelRatio) / 2;n var halfHeight = (frameState.size * pixelRatio) / 2;n var rotation = frameState.viewState.rotation;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 context.save();n rotateAtOffset(context, -rotation, halfWidth, halfHeight);n context.beginPath();n context.moveTo(topLeft * pixelRatio, topLeft * pixelRatio);n context.lineTo(topRight * pixelRatio, topRight * pixelRatio);n context.lineTo(bottomRight * pixelRatio, bottomRight * pixelRatio);n context.lineTo(bottomLeft * pixelRatio, bottomLeft * pixelRatio);n context.clip();n rotateAtOffset(context, rotation, halfWidth, halfHeight);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 * @protectedn */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), Math.round(topLeft));n context.lineTo(Math.round(topRight), Math.round(topRight));n context.lineTo(Math.round(bottomRight), Math.round(bottomRight));n context.lineTo(Math.round(bottomLeft), Math.round(bottomLeft));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 * @privaten */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 * @protectedn */n CanvasLayerRenderer.prototype.preRender = function (context, frameState) {n this.dispatchRenderEvent_(RenderEventType.PRERENDER, context, frameState);n };n /**n * @param {CanvasRenderingContext2D} context Context.n * @param {import("../../PluggableMap.js").FrameState} frameState Frame state.n * @protectedn */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 * @protectedn * @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 + offsetX;n var dy2 = -center;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 pixeln * location, null will be returned. If there is data, but pixel values cannot ben * 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 data;n try {n data = context.getImageData(Math.round(renderPixel), Math.round(renderPixel), 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 return new Uint8Array();n }n return data;n }n if (data === 0) {n return null;n }n return data;n };n /**n * @param {import("../../transform.js").Transform} transform Transform.n * @return {string} CSS transform.n */n CanvasLayerRenderer.prototype.createTransformString = function (transform) {n this.createTransformStringCanvas_.style.transform = toString(transform);n return this.createTransformStringCanvas_.style.transform;n };n return CanvasLayerRenderer;n}(LayerRenderer));nexport default CanvasLayerRenderer;n//# sourceMappingURL=Layer.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/renderer/canvas/ImageLayern */nimport { ENABLE_RASTER_REPROJECTION } from '../../reproj/common.js';nimport ViewHint from '../../ViewHint.js';nimport { containsExtent, intersects } from '../../extent.js';nimport { fromUserExtent } from '../../proj.js';nimport { getIntersection, isEmpty } from '../../extent.js';nimport CanvasLayerRenderer from './Layer.js';nimport { compose as composeTransform, makeInverse } from '../../transform.js';n/**n * @classdescn * Canvas renderer for image layers.n * @apin */nvar CanvasImageLayerRenderer = /** @class */ (function (_super) {n __extends(CanvasImageLayerRenderer, _super);n /**n * @param {import("../../layer/Image.js").default} imageLayer Image layer.n */n function CanvasImageLayerRenderer(imageLayer) {n var _this = _super.call(this, imageLayer) || this;n /**n * @protectedn * @type {?import("../../ImageBase.js").default}n */n this.image = null;n return _this;n }n /**n * @inheritDocn */n CanvasImageLayerRenderer.prototype.getImage = function () {n return !this.image_ ? null : this.image_.getImage();n };n /**n * @inheritDocn */n CanvasImageLayerRenderer.prototype.prepareFrame = function (frameState) {n var layerState = frameState.layerStatesArray;n var pixelRatio = frameState.pixelRatio;n var viewState = frameState.viewState;n var viewResolution = viewState.resolution;n var imageSource = this.getLayer().getSource();n var hints = frameState.viewHints;n var renderedExtent = frameState.extent;n if (layerState.extent !== undefined) {n renderedExtent = getIntersection(renderedExtent, fromUserExtent(layerState.extent, viewState.projection));n }n if (!hints && !hints && !isEmpty(renderedExtent)) {n var projection = viewState.projection;n if (!ENABLE_RASTER_REPROJECTION) {n var sourceProjection = imageSource.getProjection();n if (sourceProjection) {n projection = sourceProjection;n }n }n var image = imageSource.getImage(renderedExtent, viewResolution, pixelRatio, projection);n if (image && this.loadImage(image)) {n this.image_ = image;n }n }n return !!this.image_;n };n /**n * @inheritDocn */n CanvasImageLayerRenderer.prototype.renderFrame = function (frameState, target) {n var image = this.image_;n var imageExtent = image.getExtent();n var imageResolution = image.getResolution();n var imagePixelRatio = image.getPixelRatio();n var layerState = frameState.layerStatesArray;n var pixelRatio = frameState.pixelRatio;n var viewState = frameState.viewState;n var viewCenter = viewState.center;n var viewResolution = viewState.resolution;n var size = frameState.size;n var scale = pixelRatio * imageResolution / (viewResolution * imagePixelRatio);n var width = Math.round(size * pixelRatio);n var height = Math.round(size * pixelRatio);n var rotation = viewState.rotation;n if (rotation) {n var size_1 = Math.round(Math.sqrt(width * width + height * height));n width = size_1;n height = size_1;n }n // set forward and inverse pixel transformsn composeTransform(this.pixelTransform, frameState.size / 2, frameState.size / 2, 1 / pixelRatio, 1 / pixelRatio, rotation, -width / 2, -height / 2);n makeInverse(this.inversePixelTransform, this.pixelTransform);n var canvasTransform = this.createTransformString(this.pixelTransform);n this.useContainer(target, canvasTransform, layerState.opacity);n var context = this.context;n var canvas = context.canvas;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 // clipped rendering if layer extent is setn var clipped = false;n if (layerState.extent) {n var layerExtent = fromUserExtent(layerState.extent, viewState.projection);n clipped = !containsExtent(layerExtent, frameState.extent) && intersects(layerExtent, frameState.extent);n if (clipped) {n this.clipUnrotated(context, frameState, layerExtent);n }n }n var img = image.getImage();n var transform = composeTransform(this.tempTransform_, width / 2, height / 2, scale, scale, 0, imagePixelRatio * (imageExtent - viewCenter) / imageResolution, imagePixelRatio * (viewCenter - imageExtent) / imageResolution);n this.renderedResolution = imageResolution * pixelRatio / imagePixelRatio;n var dx = transform;n var dy = transform;n var dw = img.width * transform;n var dh = img.height * transform;n this.preRender(context, frameState);n if (dw >= 0.5 && dh >= 0.5) {n var opacity = layerState.opacity;n var previousAlpha = void 0;n if (opacity !== 1) {n previousAlpha = this.context.globalAlpha;n this.context.globalAlpha = opacity;n }n this.context.drawImage(img, 0, 0, +img.width, +img.height, Math.round(dx), Math.round(dy), Math.round(dw), Math.round(dh));n if (opacity !== 1) {n this.context.globalAlpha = previousAlpha;n }n }n this.postRender(context, frameState);n if (clipped) {n context.restore();n }n if (canvasTransform !== canvas.style.transform) {n canvas.style.transform = canvasTransform;n }n return this.container;n };n return CanvasImageLayerRenderer;n}(CanvasLayerRenderer));nexport default CanvasImageLayerRenderer;n//# sourceMappingURL=ImageLayer.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/layer/Imagen */nimport BaseImageLayer from './BaseImage.js';nimport CanvasImageLayerRenderer from '../renderer/canvas/ImageLayer.js';n/**n * @classdescn * Server-rendered images that are available for arbitrary extents andn * 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 then * options means that `title` is observable, and has get/set accessors.n *n * @apin */nvar ImageLayer = /** @class */ (function (_super) {n __extends(ImageLayer, _super);n /**n * @param {import("./BaseImage.js").Options=} opt_options Layer options.n */n function ImageLayer(opt_options) {n return _super.call(this, opt_options) || this;n }n /**n * Create a renderer for this layer.n * @return {import("../renderer/Layer.js").default} A layer renderer.n * @protectedn */n ImageLayer.prototype.createRenderer = function () {n return new CanvasImageLayerRenderer(this);n };n return ImageLayer;n}(BaseImageLayer));nexport default ImageLayer;n//# sourceMappingURL=Image.js.map”,“/**n * @module ol/layer/TilePropertyn */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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/layer/BaseTilen */nimport Layer from './Layer.js';nimport TileProperty from './TileProperty.js';nimport { assign } from '../obj.js';n/**n * @typedef {Object} Optionsn * @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 ben * rendered outside of this extent.n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layersn * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumedn * 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 ben * visible.n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer willn * be visible.n * @property {number} [preload=0] Preload. Load low-resolution tiles up to `preload` levels. `0`n * means no preloading.n * @property {import("../source/Tile.js").default} [source] Source for this layer.n * @property {import("../PluggableMap.js").default} [map] Sets the layer as overlay on a map. The map will not managen * this layer in its layers collection, and the layer will be rendered on top. This is useful forn * temporary layers. The standard way to add a layer to a map and have it managed by the map is ton * use {@link module:ol/Map#addLayer}.n * @property {boolean} [useInterimTilesOnError=true] Use interim tiles on error.n */n/**n * @classdescn * For layer sources that provide pre-rendered, tiled images in grids that aren * 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 then * options means that `title` is observable, and has get/set accessors.n *n * @extends {Layer<import("../source/Tile.js").default>}n * @apin */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 _this.setPreload(options.preload !== undefined ? options.preload : 0);n _this.setUseInterimTilesOnError(options.useInterimTilesOnError !== undefined ?n options.useInterimTilesOnError : 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 * @observablen * @apin */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 * @observablen * @apin */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 * @observablen * @apin */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 * @observablen * @apin */n BaseTileLayer.prototype.setUseInterimTilesOnError = function (useInterimTilesOnError) {n this.set(TileProperty.USE_INTERIM_TILES_ON_ERROR, useInterimTilesOnError);n };n return BaseTileLayer;n}(Layer));nexport default BaseTileLayer;n//# sourceMappingURL=BaseTile.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/renderer/canvas/TileLayern */nimport { getUid } from '../../util.js';nimport { fromUserExtent } from '../../proj.js';nimport TileRange from '../../TileRange.js';nimport TileState from '../../TileState.js';nimport { createEmpty, equals, getIntersection, getTopLeft } from '../../extent.js';nimport CanvasLayerRenderer from './Layer.js';nimport { apply as applyTransform, compose as composeTransform, makeInverse } from '../../transform.js';nimport { numberSafeCompareFunction } from '../../array.js';n/**n * @classdescn * Canvas renderer for tile layers.n * @apin */nvar CanvasTileLayerRenderer = /** @class */ (function (_super) {n __extends(CanvasTileLayerRenderer, _super);n /**n * @param {import("../../layer/Tile.js").default|import("../../layer/VectorTile.js").default} tileLayer Tile layer.n */n function CanvasTileLayerRenderer(tileLayer) {n var _this = _super.call(this, tileLayer) || this;n /**n * Rendered extent has changed since the previous `renderFrame()` calln * @type {boolean}n */n _this.extentChanged = true;n /**n * @privaten * @type {?import("../../extent.js").Extent}n */n this.renderedExtent = null;n /**n * @protectedn * @type {number}n */n _this.renderedPixelRatio;n /**n * @protectedn * @type {import("../../proj/Projection.js").default}n */n _this.renderedProjection = null;n /**n * @protectedn * @type {number}n */n _this.renderedRevision;n /**n * @protectedn * @type {!Array<import("../../Tile.js").default>}n */n _this.renderedTiles = [];n /**n * @privaten * @type {boolean}n */n this.newTiles = false;n /**n * @protectedn * @type {import("../../extent.js").Extent}n */n _this.tmpExtent = createEmpty();n /**n * @privaten * @type {import("../../TileRange.js").default}n */n this.tmpTileRange = new TileRange(0, 0, 0, 0);n return _this;n }n /**n * @protectedn * @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 * @inheritDocn */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 * @inheritDocn */n CanvasTileLayerRenderer.prototype.prepareFrame = function (frameState) {n return !!this.getLayer().getSource();n };n /**n * TODO: File a TypeScript issue about inheritDoc not being followedn * all the way. Without this explicit return type, the VectorTileLayern * renderFrame function does not pass.n *n * @inheritDocn * @returns {HTMLElement} The rendered element.n */n CanvasTileLayerRenderer.prototype.renderFrame = function (frameState, target) {n var layerState = frameState.layerStatesArray;n var viewState = frameState.viewState;n var projection = viewState.projection;n var viewResolution = viewState.resolution;n var viewCenter = viewState.center;n var rotation = viewState.rotation;n var pixelRatio = frameState.pixelRatio;n var tileLayer = this.getLayer();n var tileSource = tileLayer.getSource();n var sourceRevision = tileSource.getRevision();n var tileGrid = tileSource.getTileGridForProjection(projection);n var z = tileGrid.getZForResolution(viewResolution, tileSource.zDirection);n var tileResolution = tileGrid.getResolution(z);n var extent = frameState.extent;n var layerExtent = layerState.extent && fromUserExtent(layerState.extent, projection);n if (layerExtent) {n extent = getIntersection(extent, fromUserExtent(layerState.extent, projection));n }n var tilePixelRatio = tileSource.getTilePixelRatio(pixelRatio);n // desired dimensions of the canvas in pixelsn var width = Math.round(frameState.size * tilePixelRatio);n var height = Math.round(frameState.size * tilePixelRatio);n if (rotation) {n var size = Math.round(Math.sqrt(width * width + height * height));n width = size;n height = size;n }n var dx = tileResolution * width / 2 / tilePixelRatio;n var dy = tileResolution * height / 2 / tilePixelRatio;n var canvasExtent = [n viewCenter - dx,n viewCenter - dy,n viewCenter + dx,n viewCenter + dyn ];n var tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z);n /**n * @type {Object<number, Object<string, import("../../Tile.js").default>>}n */n var tilesToDrawByZ = {};n tilesToDrawByZ = {};n var findLoadedTiles = this.createLoadedTileFinder(tileSource, projection, tilesToDrawByZ);n var tmpExtent = this.tmpExtent;n var tmpTileRange = this.tmpTileRange_;n this.newTiles_ = false;n for (var x = tileRange.minX; x <= tileRange.maxX; ++x) {n for (var y = tileRange.minY; y <= tileRange.maxY; ++y) {n var tile = this.getTile(z, x, y, frameState);n if (this.isDrawableTile(tile)) {n var uid = getUid(this);n if (tile.getState() == TileState.LOADED) {n tilesToDrawByZ[tile.tileCoord.toString()] = tile;n var inTransition = tile.inTransition(uid);n if (!this.newTiles_ && (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 1n continue;n }n }n var childTileRange = tileGrid.getTileCoordChildTileRange(tile.tileCoord, tmpTileRange, tmpExtent);n var covered = false;n if (childTileRange) {n covered = findLoadedTiles(z + 1, childTileRange);n }n if (!covered) {n tileGrid.forEachTileCoordParentTileRange(tile.tileCoord, findLoadedTiles, tmpTileRange, tmpExtent);n }n }n }n var canvasScale = tileResolution / viewResolution;n // set forward and inverse pixel transformsn composeTransform(this.pixelTransform, frameState.size / 2, frameState.size / 2, 1 / tilePixelRatio, 1 / tilePixelRatio, rotation, -width / 2, -height / 2);n var canvasTransform = this.createTransformString(this.pixelTransform);n this.useContainer(target, canvasTransform, layerState.opacity);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 canvasn 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 this.preRender(context, frameState);n this.renderedTiles.length = 0;n /** @type {Array<number>} */n var zs = Object.keys(tilesToDrawByZ).map(Number);n zs.sort(numberSafeCompareFunction);n var clips, clipZs, currentClip;n if (layerState.opacity === 1 && (!this.containerReused || 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;n var currentTilePixelSize = tileSource.getTilePixelSize(currentZ, pixelRatio, projection);n var currentResolution = tileGrid.getResolution(currentZ);n var currentScale = currentResolution / tileResolution;n var dx_1 = currentTilePixelSize * currentScale * canvasScale;n var dy_1 = currentTilePixelSize * 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 - canvasExtent) / tileResolution,n tilePixelRatio * (canvasExtent - originTileExtent) / tileResolutionn ]);n var tileGutter = tilePixelRatio * tileSource.getGutterForProjection(projection);n var tilesToDraw = tilesToDrawByZ;n for (var tileCoordKey in tilesToDraw) {n var tile = /** @type {import("../../ImageTile.js").default} */ (tilesToDraw);n var tileCoord = tile.tileCoord;n // Calculate integer positions and sizes so that tiles alignn var floatX = (origin_1 - (originTileCoord - tileCoord) * dx_1);n var nextX = Math.round(floatX + dx_1);n var floatY = (origin_1 - (originTileCoord - tileCoord) * dy_1);n var nextY = Math.round(floatY + dy_1);n var x = Math.round(floatX);n var y = Math.round(floatY);n var w = nextX - x;n var h = nextY - y;n var transition = z === currentZ;n var inTransition = transition && tile.getAlpha(getUid(this), frameState.time) !== 1;n if (!inTransition) {n if (clips) {n // Clip mask for regions in this tile that already filled by a higher z tilen context.save();n currentClip = [x, y, x + w, y, x + w, y + h, x, y + h];n for (var i_1 = 0, ii = clips.length; i_1 < ii; ++i_1) {n if (z !== currentZ && currentZ < clipZs) {n var clip = clips;n context.beginPath();n // counter-clockwise (outer ring) for current tilen context.moveTo(currentClip, currentClip);n context.lineTo(currentClip, currentClip);n context.lineTo(currentClip, currentClip);n context.lineTo(currentClip, currentClip);n // clockwise (inner ring) for higher z tilen context.moveTo(clip, clip);n context.lineTo(clip, clip);n context.lineTo(clip, clip);n context.lineTo(clip, clip);n context.clip();n }n }n clips.push(currentClip);n clipZs.push(currentZ);n }n else {n context.clearRect(x, y, w, h);n }n }n this.drawTileImage(tile, frameState, x, y, w, h, tileGutter, transition, layerState.opacity);n if (clips && !inTransition) {n context.restore();n }n this.renderedTiles.push(tile);n this.updateUsedTiles(frameState.usedTiles, tileSource, tile);n }n }n this.renderedRevision = sourceRevision;n this.renderedResolution = tileResolution;n this.extentChanged = !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.updateCacheSize_(frameState, tileSource);n this.scheduleExpireCache(frameState, tileSource);n this.postRender(context, frameState);n if (layerState.extent) {n context.restore();n }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 * @param {number} opacity Opacity.n */n CanvasTileLayerRenderer.prototype.drawTileImage = function (tile, frameState, x, y, w, h, gutter, transition, opacity) {n var image = this.getTileImage(tile);n if (!image) {n return;n }n var uid = getUid(this);n var tileAlpha = transition ? tile.getAlpha(uid, frameState.time) : 1;n var alpha = opacity * tileAlpha;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 (tileAlpha !== 1) {n frameState.animate = true;n }n else if (transition) {n tile.endTransition(uid);n }n };n /**n * @inheritDocn */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 * @protectedn */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 * @protectedn */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);n }n }.bind(null, tileSource);n frameState.postRenderFunctions.push(n /** @type {import("../../PluggableMap.js").PostRenderFunction} */ (postRenderFunction));n }n };n /**n * @param {!Object<string, !Object<string, boolean>>} usedTiles Used tiles.n * @param {import("../../source/Tile.js").default} tileSource Tile source.n * @param {import('../../Tile.js').default} tile Tile.n * @protectedn */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 = {};n }n usedTiles[tile.getKey()] = true;n };n /**n * Check if the cache is big enough, and increase its size if necessary.n * @param {import("../../PluggableMap.js").FrameState} frameState Frame state.n * @param {import("../../source/Tile.js").default} tileSource Tile source.n * @privaten */n CanvasTileLayerRenderer.prototype.updateCacheSize_ = function (frameState, tileSource) {n var tileSourceKey = getUid(tileSource);n var size = 0;n if (tileSourceKey in frameState.usedTiles) {n size += Object.keys(frameState.usedTiles).length;n }n if (tileSourceKey in frameState.wantedTiles) {n size += Object.keys(frameState.wantedTiles).length;n }n var tileCache = tileSource.tileCache;n if (tileCache.highWaterMark < size) {n tileCache.highWaterMark = size;n }n };n /**n * Manage tile pyramid.n * This function performs a number of functions related to the tiles at then * current zoom and lower zoom levels:n * - registers idle tiles in frameState.wantedTiles so that they are notn * discarded by the tile queuen * - enqueues missing tilesn * @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)=} opt_tileCallback Tile callback.n * @protectedn */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 = {};n }n var wantedTiles = frameState.wantedTiles;n var tileQueue = frameState.tileQueue;n var minZoom = tileGrid.getMinZoom();n var tile, tileRange, tileResolution, x, y, z;n for (z = minZoom; z <= currentZ; ++z) {n tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z, tileRange);n tileResolution = tileGrid.getResolution(z);n for (x = tileRange.minX; x <= tileRange.maxX; ++x) {n for (y = tileRange.minY; y <= tileRange.maxY; ++y) {n if (currentZ - z <= preload) {n tile = tileSource.getTile(z, x, y, pixelRatio, projection);n if (tile.getState() == TileState.IDLE) {n wantedTiles = true;n if (!tileQueue.isKeyQueued(tile.getKey())) {n tileQueue.enqueue([tile, tileSourceKey,n tileGrid.getTileCoordCenter(tile.tileCoord), tileResolution]);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 };n return CanvasTileLayerRenderer;n}(CanvasLayerRenderer));n/**n * @functionn * @return {import("../../layer/Tile.js").default|import("../../layer/VectorTile.js").default}n */nCanvasTileLayerRenderer.prototype.getLayer;nexport default CanvasTileLayerRenderer;n//# sourceMappingURL=TileLayer.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/layer/Tilen */nimport BaseTileLayer from './BaseTile.js';nimport CanvasTileLayerRenderer from '../renderer/canvas/TileLayer.js';n/**n * @classdescn * For layer sources that provide pre-rendered, tiled images in grids that aren * 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 then * options means that `title` is observable, and has get/set accessors.n *n * @apin */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 /**n * Create a renderer for this layer.n * @return {import("../renderer/Layer.js").default} A layer renderer.n * @protectedn */n TileLayer.prototype.createRenderer = function () {n return new CanvasTileLayerRenderer(this);n };n return TileLayer;n}(BaseTileLayer));nexport default TileLayer;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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/source/Rastern */nimport ImageCanvas from '../ImageCanvas.js';nimport TileQueue from '../TileQueue.js';nimport { createCanvasContext2D } from '../dom.js';nimport Event from '../events/Event.js';nimport EventType from '../events/EventType.js';nimport { Processor } from 'pixelworks/lib/index.js';nimport { equals, getCenter, getHeight, getWidth } from '../extent.js';nimport ImageLayer from '../layer/Image.js';nimport TileLayer from '../layer/Tile.js';nimport { assign } from '../obj.js';nimport { create as createTransform } from '../transform.js';nimport ImageSource from './Image.js';nimport TileSource from './Tile.js';nimport SourceState from './State.js';nimport Source from './Source.js';n/**n * A function that takes an array of input data, performs some operation, andn * returns an array of output data.n * For `pixel` type operations, the function will be called with an array ofn * pixels, where each pixel is an array of four numbers (`[r, g, b, a]`) in then * range of 0 - 255. It should return a single pixel array.n * For `'image'` type operations, functions will be called with an array ofn * {@link ImageData developer.mozilla.org/en-US/docs/Web/API/ImageData}n * and should return a single {@link ImageDatan * developer.mozilla.org/en-US/docs/Web/API/ImageData}. The operationsn * are called with a second "data" argument, which can be used for storage. Then * data object is accessible from raster events, where it can be initialized inn * "beforeoperations" and accessed again in "afteroperations".n *n * @typedef {function((Array<Array<number>>|Array<ImageData>), Object):n * (Array<number>|ImageData)} Operationn */n/**n * @enum {string}n */nvar RasterEventType = {n /**n * Triggered before operations are run.n * @event module:ol/source/Raster.RasterSourceEvent#beforeoperationsn * @apin */n BEFOREOPERATIONS: 'beforeoperations',n /**n * Triggered after operations are run.n * @event module:ol/source/Raster.RasterSourceEvent#afteroperationsn * @apin */n AFTEROPERATIONS: 'afteroperations'n};n/**n * Raster operation type. Supported values are `'pixel'` and `'image'`.n * @enum {string}n */nvar RasterOperationType = {n PIXEL: 'pixel',n IMAGE: 'image'n};n/**n * @classdescn * Events emitted by {@link module:ol/source/Raster} instances are instances of thisn * type.n */nvar RasterSourceEvent = /** @class */ (function (_super) {n __extends(RasterSourceEvent, _super);n /**n * @param {string} type Type.n * @param {import("../PluggableMap.js").FrameState} frameState The frame state.n * @param {Object} data An object made available to operations.n */n function RasterSourceEvent(type, frameState, data) {n var _this = _super.call(this, type) || this;n /**n * The raster extent.n * @type {import("../extent.js").Extent}n * @apin */n _this.extent = frameState.extent;n /**n * The pixel resolution (map units per pixel).n * @type {number}n * @apin */n _this.resolution = frameState.viewState.resolution / frameState.pixelRatio;n /**n * An object made available to all operations. This can be used by operationsn * as a storage object (e.g. for calculating statistics).n * @type {Object}n * @apin */n _this.data = data;n return _this;n }n return RasterSourceEvent;n}(Event));nexport { RasterSourceEvent };n/**n * @typedef {Object} Optionsn * @property {Array<import("./Source.js").default|import("../layer/Layer.js").default>} sources Inputn * sources or layers. For vector data, use an VectorImage layer.n * @property {Operation} [operation] Raster operation.n * The operation will be called with data from input sourcesn * and the output will be assigned to the raster source.n * @property {Object} [lib] Functions that will be made available to operations run in a worker.n * @property {number} [threads] By default, operations will be run in a single worker thread.n * To avoid using workers altogether, set `threads: 0`. For pixel operations, operations cann * be run in multiple worker threads. Note that there is additional overhead inn * transferring data to multiple workers, and that depending on the user'sn * system, it may not be possible to parallelize the work.n * @property {RasterOperationType} [operationType='pixel'] Operation type.n * Supported values are `'pixel'` and `'image'`. By default,n * `'pixel'` operations are assumed, and operations will be called with ann * array of pixels from input sources. If set to `'image'`, operations willn * be called with an array of ImageData objects from input sources.n */n/**n * @classdescn * A source that transforms data from any number of input sources using ann * {@link module:ol/source/Raster~Operation} function to transform input pixel values inton * output pixel values.n *n * @fires module:ol/source/Raster.RasterSourceEventn * @apin */nvar RasterSource = /** @class */ (function (_super) {n __extends(RasterSource, _super);n /**n * @param {Options} options Options.n */n function RasterSource(options) {n var _this = _super.call(this, {n projection: nulln }) || this;n /**n * @privaten * @type {*}n */n this.worker = null;n /**n * @privaten * @type {RasterOperationType}n */n this.operationType = options.operationType !== undefined ?n options.operationType : RasterOperationType.PIXEL;n /**n * @privaten * @type {number}n */n this.threads = options.threads !== undefined ? options.threads : 1;n /**n * @privaten * @type {Array<import("../layer/Layer.js").default>}n */n this.layers = createLayers(options.sources);n var changed = _this.changed.bind(_this);n for (var i = 0, ii = this.layers.length; i < ii; ++i) {n this.layers[i].addEventListener(EventType.CHANGE, changed);n }n /**n * @privaten * @type {import("../TileQueue.js").default}n */n this.tileQueue = new TileQueue(function () {n return 1;n }, _this.changed.bind(_this));n /**n * The most recently requested frame state.n * @type {import("../PluggableMap.js").FrameState}n * @privaten */n this.requestedFrameState;n /**n * The most recently rendered image canvas.n * @type {import("../ImageCanvas.js").default}n * @privaten */n this.renderedImageCanvas = null;n /**n * The most recently rendered revision.n * @type {number}n */n this.renderedRevision;n /**n * @privaten * @type {import("../PluggableMap.js").FrameState}n */n this.frameState = {n animate: false,n coordinateToPixelTransform: createTransform(),n extent: null,n index: 0,n layerIndex: 0,n layerStatesArray: getLayerStatesArray(this.layers),n pixelRatio: 1,n pixelToCoordinateTransform: createTransform(),n postRenderFunctions: [],n size: [0, 0],n tileQueue: this.tileQueue,n time: Date.now(),n usedTiles: {},n viewState: /** @type {import("../View.js").State} */ ({n rotation: 0n }),n viewHints: [],n wantedTiles: {},n declutterItems: []n };n _this.setAttributions(function (frameState) {n var attributions = [];n for (var index = 0, iMax = options.sources.length; index < iMax; ++index) {n var sourceOrLayer = options.sources;n var source = sourceOrLayer instanceof Source ? sourceOrLayer : sourceOrLayer.getSource();n var attributionGetter = source.getAttributions();n if (typeof attributionGetter === 'function') {n var sourceAttribution = attributionGetter(frameState);n attributions.push.apply(attributions, sourceAttribution);n }n }n return attributions.length !== 0 ? attributions : null;n });n if (options.operation !== undefined) {n _this.setOperation(options.operation, options.lib);n }n return _this;n }n /**n * Set the operation.n * @param {Operation} operation New operation.n * @param {Object=} opt_lib Functions that will be available to operations runn * in a worker.n * @apin */n RasterSource.prototype.setOperation = function (operation, opt_lib) {n this.worker_ = new Processor({n operation: operation,n imageOps: this.operationType_ === RasterOperationType.IMAGE,n queue: 1,n lib: opt_lib,n threads: this.threads_n });n this.changed();n };n /**n * Update the stored frame state.n * @param {import("../extent.js").Extent} extent The view extent (in map units).n * @param {number} resolution The view resolution.n * @param {import("../proj/Projection.js").default} projection The view projection.n * @return {import("../PluggableMap.js").FrameState} The updated frame state.n * @privaten */n RasterSource.prototype.updateFrameState_ = function (extent, resolution, projection) {n var frameState = /** @type {import("../PluggableMap.js").FrameState} */ (assign({}, this.frameState_));n frameState.viewState = /** @type {import("../View.js").State} */ (assign({}, frameState.viewState));n var center = getCenter(extent);n frameState.extent = extent.slice();n frameState.size = Math.round(getWidth(extent) / resolution);n frameState.size = Math.round(getHeight(extent) / resolution);n frameState.time = Infinity;n var viewState = frameState.viewState;n viewState.center = center;n viewState.projection = projection;n viewState.resolution = resolution;n return frameState;n };n /**n * Determine if all sources are ready.n * @return {boolean} All sources are ready.n * @privaten */n RasterSource.prototype.allSourcesReady_ = function () {n var ready = true;n var source;n for (var i = 0, ii = this.layers_.length; i < ii; ++i) {n source = this.layers_.getSource();n if (source.getState() !== SourceState.READY) {n ready = false;n break;n }n }n return ready;n };n /**n * @inheritDocn */n RasterSource.prototype.getImage = function (extent, resolution, pixelRatio, projection) {n if (!this.allSourcesReady_()) {n return null;n }n var frameState = this.updateFrameState_(extent, resolution, projection);n this.requestedFrameState_ = frameState;n // check if we can't reuse the existing ol/ImageCanvasn if (this.renderedImageCanvas_) {n var renderedResolution = this.renderedImageCanvas_.getResolution();n var renderedExtent = this.renderedImageCanvas_.getExtent();n if (resolution !== renderedResolution || !equals(extent, renderedExtent)) {n this.renderedImageCanvas_ = null;n }n }n if (!this.renderedImageCanvas_ || this.getRevision() !== this.renderedRevision_) {n this.processSources_();n }n frameState.tileQueue.loadMoreTiles(16, 16);n if (frameState.animate) {n requestAnimationFrame(this.changed.bind(this));n }n return this.renderedImageCanvas_;n };n /**n * Start processing source data.n * @privaten */n RasterSource.prototype.processSources_ = function () {n var frameState = this.requestedFrameState_;n var len = this.layers_.length;n var imageDatas = new Array(len);n for (var i = 0; i < len; ++i) {n frameState.layerIndex = i;n var imageData = getImageData(this.layers_, frameState);n if (imageData) {n imageDatas = imageData;n }n else {n return;n }n }n var data = {};n this.dispatchEvent(new RasterSourceEvent(RasterEventType.BEFOREOPERATIONS, frameState, data));n this.worker_.process(imageDatas, data, this.onWorkerComplete_.bind(this, frameState));n };n /**n * Called when pixel processing is complete.n * @param {import("../PluggableMap.js").FrameState} frameState The frame state.n * @param {Error} err Any error during processing.n * @param {ImageData} output The output image data.n * @param {Object} data The user data.n * @privaten */n RasterSource.prototype.onWorkerComplete_ = function (frameState, err, output, data) {n if (err || !output) {n return;n }n // do nothing if extent or resolution changedn var extent = frameState.extent;n var resolution = frameState.viewState.resolution;n if (resolution !== this.requestedFrameState_.viewState.resolution ||n !equals(extent, this.requestedFrameState_.extent)) {n return;n }n var context;n if (this.renderedImageCanvas_) {n context = this.renderedImageCanvas_.getImage().getContext('2d');n }n else {n var width = Math.round(getWidth(extent) / resolution);n var height = Math.round(getHeight(extent) / resolution);n context = createCanvasContext2D(width, height);n this.renderedImageCanvas_ = new ImageCanvas(extent, resolution, 1, context.canvas);n }n context.putImageData(output, 0, 0);n this.changed();n this.renderedRevision_ = this.getRevision();n this.dispatchEvent(new RasterSourceEvent(RasterEventType.AFTEROPERATIONS, frameState, data));n };n /**n * @overriden */n RasterSource.prototype.getImageInternal = function () {n return null; // not implementedn };n return RasterSource;n}(ImageSource));n/**n * A reusable canvas context.n * @type {CanvasRenderingContext2D}n * @privaten */nvar sharedContext = null;n/**n * Get image data from a layer.n * @param {import("../layer/Layer.js").default} layer Layer to render.n * @param {import("../PluggableMap.js").FrameState} frameState The frame state.n * @return {ImageData} The image data.n */nfunction getImageData(layer, frameState) {n var renderer = layer.getRenderer();n if (!renderer) {n throw new Error('Unsupported layer type: ' + layer);n }n if (!renderer.prepareFrame(frameState)) {n return null;n }n var width = frameState.size;n var height = frameState.size;n var container = renderer.renderFrame(frameState, null);n var element;n if (container) {n element = container.firstElementChild;n }n if (!(element instanceof HTMLCanvasElement)) {n throw new Error('Unsupported rendered element: ' + element);n }n if (element.width === width && element.height === height) {n var context = element.getContext('2d');n return context.getImageData(0, 0, width, height);n }n if (!sharedContext) {n sharedContext = createCanvasContext2D(width, height);n }n else {n var canvas = sharedContext.canvas;n if (canvas.width !== width || canvas.height !== height) {n sharedContext = createCanvasContext2D(width, height);n }n else {n sharedContext.clearRect(0, 0, width, height);n }n }n sharedContext.drawImage(element, 0, 0, width, height);n return sharedContext.getImageData(0, 0, width, height);n}n/**n * Get a list of layer states from a list of layers.n * @param {Array<import("../layer/Layer.js").default>} layers Layers.n * @return {Array<import("../layer/Layer.js").State>} The layer states.n */nfunction getLayerStatesArray(layers) {n return layers.map(function (layer) {n return layer.getLayerState();n });n}n/**n * Create layers for all sources.n * @param {Array<import("./Source.js").default|import("../layer/Layer.js").default>} sources The sources.n * @return {Array<import("../layer/Layer.js").default>} Array of layers.n */nfunction createLayers(sources) {n var len = sources.length;n var layers = new Array(len);n for (var i = 0; i < len; ++i) {n layers = createLayer(sources);n }n return layers;n}n/**n * Create a layer for the provided source.n * @param {import("./Source.js").default|import("../layer/Layer.js").default} layerOrSource The layer or source.n * @return {import("../layer/Layer.js").default} The layer.n */nfunction createLayer(layerOrSource) {n // @type {import("../layer/Layer.js").default}n var layer;n if (layerOrSource instanceof Source) {n if (layerOrSource instanceof TileSource) {n layer = new TileLayer({ source: layerOrSource });n }n else if (layerOrSource instanceof ImageSource) {n layer = new ImageLayer({ source: layerOrSource });n }n }n else {n layer = layerOrSource;n }n return layer;n}nexport default RasterSource;n//# sourceMappingURL=Raster.js.map”,“/**n * @module ol/source/Stamenn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { ATTRIBUTION as OSM_ATTRIBUTION } from './OSM.js';nimport XYZ from './XYZ.js';n/**n * @constn * @type {Array<string>}n */nvar ATTRIBUTIONS = [n 'Map tiles by <a href="stamen.com/" target="_blank">Stamen Design</a>, ' +n 'under <a href="creativecommons.org/licenses/by/3.0/" target="_blank">CC BY' +n ' 3.0</a>.',n OSM_ATTRIBUTIONn];n/**n * @type {Object<string, {extension: string, opaque: boolean}>}n */nvar LayerConfig = {n 'terrain': {n extension: 'jpg',n opaque: truen },n 'terrain-background': {n extension: 'jpg',n opaque: truen },n 'terrain-labels': {n extension: 'png',n opaque: falsen },n 'terrain-lines': {n extension: 'png',n opaque: falsen },n 'toner-background': {n extension: 'png',n opaque: truen },n 'toner': {n extension: 'png',n opaque: truen },n 'toner-hybrid': {n extension: 'png',n opaque: falsen },n 'toner-labels': {n extension: 'png',n opaque: falsen },n 'toner-lines': {n extension: 'png',n opaque: falsen },n 'toner-lite': {n extension: 'png',n opaque: truen },n 'watercolor': {n extension: 'jpg',n opaque: truen }n};n/**n * @type {Object<string, {minZoom: number, maxZoom: number}>}n */nvar ProviderConfig = {n 'terrain': {n minZoom: 0,n maxZoom: 18n },n 'toner': {n minZoom: 0,n maxZoom: 20n },n 'watercolor': {n minZoom: 0,n maxZoom: 18n }n};n/**n * @typedef {Object} Optionsn * @property {number} [cacheSize] Tile cache size. The default depends on the screen size. Will increase if too small.n * @property {string} layer Layer name.n * @property {number} [minZoom] Minimum zoom.n * @property {number} [maxZoom] Maximum zoom.n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).n * Higher values can increase reprojection performance, but decrease precision.n * @property {import("../Tile.js").LoadFunction} [tileLoadFunction]n * Optional function to load a tile given a URL. The default isn * “`jsn * function(imageTile, src) {n * imageTile.getImage().src = src;n * };n * “`n * @property {number} [transition] Duration of the opacity transition for rendering.n * To disable the opacity transition, pass `transition: 0`.n * @property {string} [url] URL template. Must include `{x}`, `{y}` or `{-y}`, and `{z}` placeholders.n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.n */n/**n * @classdescn * Layer source for the Stamen tile server.n * @apin */nvar Stamen = /** @class */ (function (_super) {n __extends(Stamen, _super);n /**n * @param {Options} options Stamen options.n */n function Stamen(options) {n var _this = this;n var i = options.layer.indexOf('-');n var provider = i == -1 ? options.layer : options.layer.slice(0, i);n var providerConfig = ProviderConfig;n var layerConfig = LayerConfig;n var url = options.url !== undefined ? options.url :n 'stamen-tiles-{a-d}.a.ssl.fastly.net/' + options.layer +n '/{z}/{x}/{y}.' + layerConfig.extension;n _this = _super.call(this, {n attributions: ATTRIBUTIONS,n cacheSize: options.cacheSize,n crossOrigin: 'anonymous',n maxZoom: options.maxZoom != undefined ? options.maxZoom : providerConfig.maxZoom,n minZoom: options.minZoom != undefined ? options.minZoom : providerConfig.minZoom,n opaque: layerConfig.opaque,n reprojectionErrorThreshold: options.reprojectionErrorThreshold,n tileLoadFunction: options.tileLoadFunction,n transition: options.transition,n url: url,n wrapX: options.wrapXn }) || this;n return _this;n }n return Stamen;n}(XYZ));nexport default Stamen;n//# sourceMappingURL=Stamen.js.map”,“/**n * @module ol/source/TileArcGISRestn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { createEmpty } from '../extent.js';nimport { modulo } from '../math.js';nimport { assign } from '../obj.js';nimport { toSize, scale as scaleSize } from '../size.js';nimport TileImage from './TileImage.js';nimport { hash as tileCoordHash } from '../tilecoord.js';nimport { appendParams } from '../uri.js';n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions] Attributions.n * @property {number} [cacheSize] Tile cache size. The default depends on the screen size. Will increase if too small.n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note thatn * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.n * See developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.n * @property {Object<string,*>} [params] ArcGIS Rest parameters. This field is optional. Service defaults will ben * used for any fields not specified. `FORMAT` is `PNG32` by default. `F` is `IMAGE` byn * default. `TRANSPARENT` is `true` by default. `BBOX`, `SIZE`, `BBOXSR`,n * and `IMAGESR` will be set dynamically. Set `LAYERS` ton * override the default service layer visibility. Seen * resources.arcgis.com/en/help/arcgis-rest-api/index.html#/Export_Map/02r3000000v7000000/n * for further reference.n * @property {boolean} [hidpi=true] Use the `ol/Map#pixelRatio` value when requestingn * the image from the remote server.n * @property {import("../tilegrid/TileGrid.js").default} [tileGrid] Tile grid. Base this on the resolutions,n * tilesize and extent supported by the server.n * If this is not defined, a default grid will be used: if there is a projectionn * extent, the grid will be based on that; if not, a grid based on a globaln * extent with origin at 0,0 will be used.n * @property {import("../proj.js").ProjectionLike} [projection] Projection. Default is the view projection.n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).n * Higher values can increase reprojection performance, but decrease precision.n * @property {import("../Tile.js").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL.n * The default isn * “`jsn * function(imageTile, src) {n * imageTile.getImage().src = src;n * };n * “`n * @property {string} [url] ArcGIS Rest service URL for a Map Service or Image Service. Then * url should include /MapServer or /ImageServer.n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.n * @property {number} [transition] Duration of the opacity transition for rendering. To disable the opacityn * transition, pass `transition: 0`.n * @property {Array<string>} [urls] ArcGIS Rest service urls. Use this instead of `url` when the ArcGISn * Service supports multiple urls for export requests.n */n/**n * @classdescn * Layer source for tile data from ArcGIS Rest services. Map and Imagen * Services are supported.n *n * For cached ArcGIS services, better performance is available using then * {@link module:ol/source/XYZ~XYZ} data source.n * @apin */nvar TileArcGISRest = /** @class */ (function (_super) {n __extends(TileArcGISRest, _super);n /**n * @param {Options=} opt_options Tile ArcGIS Rest options.n */n function TileArcGISRest(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n _this = _super.call(this, {n attributions: options.attributions,n cacheSize: options.cacheSize,n crossOrigin: options.crossOrigin,n projection: options.projection,n reprojectionErrorThreshold: options.reprojectionErrorThreshold,n tileGrid: options.tileGrid,n tileLoadFunction: options.tileLoadFunction,n tileUrlFunction: tileUrlFunction,n url: options.url,n urls: options.urls,n wrapX: options.wrapX !== undefined ? options.wrapX : true,n transition: options.transitionn }) || this;n /**n * @privaten * @type {!Object}n */n this.params = options.params || {};n /**n * @privaten * @type {boolean}n */n this.hidpi = options.hidpi !== undefined ? options.hidpi : true;n /**n * @privaten * @type {import("../extent.js").Extent}n */n this.tmpExtent = createEmpty();n _this.setKey(this.getKeyForParams());n return _this;n }n /**n * @privaten * @return {string} The key for the current params.n */n TileArcGISRest.prototype.getKeyForParams_ = function () {n var i = 0;n var res = [];n for (var key in this.params_) {n res = key + '-' + this.params_;n }n return res.join('/');n };n /**n * Get the user-provided params, i.e. those passed to the constructor throughn * the "params" option, and possibly updated using the updateParams method.n * @return {Object} Params.n * @apin */n TileArcGISRest.prototype.getParams = function () {n return this.params_;n };n /**n * @param {import("../tilecoord.js").TileCoord} tileCoord Tile coordinate.n * @param {import("../size.js").Size} tileSize Tile size.n * @param {import("../extent.js").Extent} tileExtent Tile extent.n * @param {number} pixelRatio Pixel ratio.n * @param {import("../proj/Projection.js").default} projection Projection.n * @param {Object} params Params.n * @return {string|undefined} Request URL.n * @privaten */n TileArcGISRest.prototype.getRequestUrl_ = function (tileCoord, tileSize, tileExtent, pixelRatio, projection, params) {n var urls = this.urls;n if (!urls) {n return undefined;n }n // ArcGIS Server only wants the numeric portion of the projection ID.n var srid = projection.getCode().split(':').pop();n params = tileSize + ',' + tileSize;n params = tileExtent.join(',');n params = srid;n params = srid;n params = Math.round(params ? params * pixelRatio : 90 * pixelRatio);n var url;n if (urls.length == 1) {n url = urls;n }n else {n var index = modulo(tileCoordHash(tileCoord), urls.length);n url = urls;n }n var modifiedUrl = urln .replace(/MapServer\/?$/, 'MapServer/export')n .replace(/ImageServer\/?$/, 'ImageServer/exportImage');n return appendParams(modifiedUrl, params);n };n /**n * @inheritDocn */n TileArcGISRest.prototype.getTilePixelRatio = function (pixelRatio) {n return this.hidpi_ ? /** @type {number} */ (pixelRatio) : 1;n };n /**n * Update the user-provided params.n * @param {Object} params Params.n * @apin */n TileArcGISRest.prototype.updateParams = function (params) {n assign(this.params_, params);n this.setKey(this.getKeyForParams_());n };n return TileArcGISRest;n}(TileImage));n/**n * @param {import("../tilecoord.js").TileCoord} tileCoord The tile coordinaten * @param {number} pixelRatio The pixel ration * @param {import("../proj/Projection.js").default} projection The projectionn * @return {string|undefined} The tile URLn * @this {TileArcGISRest}n */nfunction tileUrlFunction(tileCoord, pixelRatio, projection) {n var tileGrid = this.getTileGrid();n if (!tileGrid) {n tileGrid = this.getTileGridForProjection(projection);n }n if (tileGrid.getResolutions().length <= tileCoord) {n return undefined;n }n if (pixelRatio != 1 && !this.hidpi_) {n pixelRatio = 1;n }n var tileExtent = tileGrid.getTileCoordExtent(tileCoord, this.tmpExtent_);n var tileSize = toSize(tileGrid.getTileSize(tileCoord), this.tmpSize);n if (pixelRatio != 1) {n tileSize = scaleSize(tileSize, pixelRatio, this.tmpSize);n }n // Apply default params and override with user specified values.n var baseParams = {n 'F': 'image',n 'FORMAT': 'PNG32',n 'TRANSPARENT': truen };n assign(baseParams, this.params_);n return this.getRequestUrl_(tileCoord, tileSize, tileExtent, pixelRatio, projection, baseParams);n}nexport default TileArcGISRest;n//# sourceMappingURL=TileArcGISRest.js.map”,“/**n * @module ol/source/TileDebugn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport Tile from '../Tile.js';nimport TileState from '../TileState.js';nimport { createCanvasContext2D } from '../dom.js';nimport { toSize } from '../size.js';nimport XYZ from './XYZ.js';nimport { getKeyZXY } from '../tilecoord.js';nvar LabeledTile = /** @class */ (function (_super) {n __extends(LabeledTile, _super);n /**n * @param {import("../tilecoord.js").TileCoord} tileCoord Tile coordinate.n * @param {import("../size.js").Size} tileSize Tile size.n * @param {string} text Text.n */n function LabeledTile(tileCoord, tileSize, text) {n var _this = _super.call(this, tileCoord, TileState.LOADED) || this;n /**n * @privaten * @type {import("../size.js").Size}n */n this.tileSize = tileSize;n /**n * @privaten * @type {string}n */n this.text = text;n /**n * @privaten * @type {HTMLCanvasElement}n */n this.canvas = null;n return _this;n }n /**n * Get the image element for this tile.n * @return {HTMLCanvasElement} Image.n */n LabeledTile.prototype.getImage = function () {n if (this.canvas_) {n return this.canvas_;n }n else {n var tileSize = this.tileSize_;n var context = createCanvasContext2D(tileSize, tileSize);n context.strokeStyle = 'grey';n context.strokeRect(0.5, 0.5, tileSize + 0.5, tileSize + 0.5);n context.fillStyle = 'grey';n context.strokeStyle = 'white';n context.textAlign = 'center';n context.textBaseline = 'middle';n context.font = '24px sans-serif';n context.lineWidth = 4;n context.strokeText(this.text_, tileSize / 2, tileSize / 2, tileSize);n context.fillText(this.text_, tileSize / 2, tileSize / 2, tileSize);n this.canvas_ = context.canvas;n return context.canvas;n }n };n /**n * @overriden */n LabeledTile.prototype.load = function () { };n return LabeledTile;n}(Tile));n/**n * @typedef {Object} Optionsn * @property {import("../proj.js").ProjectionLike} [projection='EPSG:3857'] Optional projection.n * @property {import("../tilegrid/TileGrid.js").default} [tileGrid] Tile grid.n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.n * @property {number} [zDirection=0] Set to `1` when debugging `VectorTile` sources withn * a default configuration. Indicates which resolution should be used by a renderer ifn * the view resolution does not match any resolution of the tile source. If 0, the nearestn * resolution will be used. If 1, the nearest lower resolution will be used. If -1, then * nearest higher resolution will be used.n */n/**n * @classdescn * A pseudo tile source, which does not fetch tiles from a server, but rendersn * a grid outline for the tile grid/projection along with the coordinates forn * each tile. See examples/canvas-tiles for an example.n *n * Uses Canvas context2d, so requires Canvas support.n * @apin */nvar TileDebug = /** @class */ (function (_super) {n __extends(TileDebug, _super);n /**n * @param {Options=} opt_options Debug tile options.n */n function TileDebug(opt_options) {n var _this = this;n /**n * @type {Options}n */n var options = opt_options || {};n _this = _super.call(this, {n opaque: false,n projection: options.projection,n tileGrid: options.tileGrid,n wrapX: options.wrapX !== undefined ? options.wrapX : true,n zDirection: options.zDirectionn }) || this;n return _this;n }n /**n * @inheritDocn */n TileDebug.prototype.getTile = function (z, x, y) {n var tileCoordKey = getKeyZXY(z, x, y);n if (this.tileCache.containsKey(tileCoordKey)) {n return /** @type {!LabeledTile} */ (this.tileCache.get(tileCoordKey));n }n else {n var tileSize = toSize(this.tileGrid.getTileSize(z));n var tileCoord = [z, x, y];n var textTileCoord = this.getTileCoordForTileUrlFunction(tileCoord);n var text = void 0;n if (textTileCoord) {n text = 'z:' + textTileCoord + ' x:' + textTileCoord + ' y:' + textTileCoord;n }n else {n text = 'none';n }n var tile = new LabeledTile(tileCoord, tileSize, text);n this.tileCache.set(tileCoordKey, tile);n return tile;n }n };n return TileDebug;n}(XYZ));nexport default TileDebug;n//# sourceMappingURL=TileDebug.js.map”,“/**n * @module ol/source/TileJSONn */n// FIXME check order of async callbacksnvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * See mapbox.com/developers/api/.n */nimport { createFromTemplates } from '../tileurlfunction.js';nimport { assert } from '../asserts.js';nimport { applyTransform, intersects } from '../extent.js';nimport { jsonp as requestJSONP } from '../net.js';nimport { get as getProjection, getTransformFromProjections } from '../proj.js';nimport SourceState from './State.js';nimport TileImage from './TileImage.js';nimport { createXYZ, extentFromProjection } from '../tilegrid.js';n/**n * @typedef {Object} Confign * @property {string} [name] The name.n * @property {string} [description] The description.n * @property {string} [version] The version.n * @property {string} [attribution] The attribution.n * @property {string} [template] The template.n * @property {string} [legend] The legend.n * @property {string} [scheme] The scheme.n * @property {Array<string>} tiles The tile URL templates.n * @property {Array<string>} [grids] Optional grids.n * @property {number} [minzoom] Minimum zoom level.n * @property {number} [maxzoom] Maximum zoom level.n * @property {Array<number>} [bounds] Optional bounds.n * @property {Array<number>} [center] Optional center.n */n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions] Attributions.n * @property {number} [cacheSize] Tile cache size. The default depends on the screen size. Will increase if too small.n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note thatn * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.n * See developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.n * @property {boolean} [jsonp=false] Use JSONP with callback to load the TileJSON.n * Useful when the server does not support CORS..n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).n * Higher values can increase reprojection performance, but decrease precision.n * @property {Config} [tileJSON] TileJSON configuration for this source.n * If not provided, `url` must be configured.n * @property {import("../Tile.js").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default isn * “`jsn * function(imageTile, src) {n * imageTile.getImage().src = src;n * };n * “`n * @property {number|import("../size.js").Size} [tileSize=[256, 256]] The tile size used by the tile service.n * Note: `tileSize` and other non-standard TileJSON properties are currently ignored.n * @property {string} [url] URL to the TileJSON file. If not provided, `tileJSON` must be configured.n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.n * @property {number} [transition] Duration of the opacity transition for rendering.n * To disable the opacity transition, pass `transition: 0`.n */n/**n * @classdescn * Layer source for tile data in TileJSON format.n * @apin */nvar TileJSON = /** @class */ (function (_super) {n __extends(TileJSON, _super);n /**n * @param {Options} options TileJSON options.n */n function TileJSON(options) {n var _this = _super.call(this, {n attributions: options.attributions,n cacheSize: options.cacheSize,n crossOrigin: options.crossOrigin,n projection: getProjection('EPSG:3857'),n reprojectionErrorThreshold: options.reprojectionErrorThreshold,n state: SourceState.LOADING,n tileLoadFunction: options.tileLoadFunction,n wrapX: options.wrapX !== undefined ? options.wrapX : true,n transition: options.transitionn }) || this;n /**n * @type {Config}n * @privaten */n this.tileJSON = null;n /**n * @type {number|import("../size.js").Size}n * @privaten */n this.tileSize = options.tileSize;n if (options.url) {n if (options.jsonp) {n requestJSONP(options.url, _this.handleTileJSONResponse.bind(_this), _this.handleTileJSONError.bind(_this));n }n else {n var client = new XMLHttpRequest();n client.addEventListener('load', this.onXHRLoad.bind(_this));n client.addEventListener('error', this.onXHRError.bind(_this));n client.open('GET', options.url);n client.send();n }n }n else if (options.tileJSON) {n _this.handleTileJSONResponse(options.tileJSON);n }n else {n assert(false, 51); // Either `url` or `tileJSON` options must be providedn }n return _this;n }n /**n * @privaten * @param {Event} event The load event.n */n TileJSON.prototype.onXHRLoad_ = function (event) {n var client = /** @type {XMLHttpRequest} */ (event.target);n // status will be 0 for file:// urlsn if (!client.status || client.status >= 200 && client.status < 300) {n var response = void 0;n try {n response = /** @type {TileJSON} */ (JSON.parse(client.responseText));n }n catch (err) {n this.handleTileJSONError();n return;n }n this.handleTileJSONResponse(response);n }n else {n this.handleTileJSONError();n }n };n /**n * @privaten * @param {Event} event The error event.n */n TileJSON.prototype.onXHRError_ = function (event) {n this.handleTileJSONError();n };n /**n * @return {Config} The tilejson object.n * @apin */n TileJSON.prototype.getTileJSON = function () {n return this.tileJSON_;n };n /**n * @protectedn * @param {Config} tileJSON Tile JSON.n */n TileJSON.prototype.handleTileJSONResponse = function (tileJSON) {n var epsg4326Projection = getProjection('EPSG:4326');n var sourceProjection = this.getProjection();n var extent;n if (tileJSON !== undefined) {n var transform = getTransformFromProjections(epsg4326Projection, sourceProjection);n extent = applyTransform(tileJSON, transform);n }n var minZoom = tileJSON || 0;n var maxZoom = tileJSON || 22;n var tileGrid = createXYZ({n extent: extentFromProjection(sourceProjection),n maxZoom: maxZoom,n minZoom: minZoom,n tileSize: this.tileSize_n });n this.tileGrid = tileGrid;n this.tileUrlFunction = createFromTemplates(tileJSON, tileGrid);n if (tileJSON !== undefined && !this.getAttributions()) {n var attributionExtent_1 = extent !== undefined ?n extent : epsg4326Projection.getExtent();n this.setAttributions(function (frameState) {n if (intersects(attributionExtent_1, frameState.extent)) {n return [tileJSON];n }n return null;n });n }n this.tileJSON_ = tileJSON;n this.setState(SourceState.READY);n };n /**n * @protectedn */n TileJSON.prototype.handleTileJSONError = function () {n this.setState(SourceState.ERROR);n };n return TileJSON;n}(TileImage));nexport default TileJSON;n//# sourceMappingURL=TileJSON.js.map”,“/**n * @module ol/source/TileWMSn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { DEFAULT_WMS_VERSION } from './common.js';nimport { assert } from '../asserts.js';nimport { buffer, createEmpty } from '../extent.js';nimport { assign } from '../obj.js';nimport { modulo } from '../math.js';nimport { get as getProjection, transform, transformExtent } from '../proj.js';nimport { calculateSourceResolution } from '../reproj.js';nimport { toSize, buffer as bufferSize, scale as scaleSize } from '../size.js';nimport TileImage from './TileImage.js';nimport WMSServerType from './WMSServerType.js';nimport { hash as tileCoordHash } from '../tilecoord.js';nimport { compareVersions } from '../string.js';nimport { appendParams } from '../uri.js';n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions] Attributions.n * @property {number} [cacheSize] Tile cache size. The default depends on the screen size. Will increase if too small.n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note thatn * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.n * See developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.n * @property {Object<string,*>} params WMS request parameters.n * At least a `LAYERS` param is required. `STYLES` isn * `''` by default. `VERSION` is `1.3.0` by default. `WIDTH`, `HEIGHT`, `BBOX`n * and `CRS` (`SRS` for WMS version < 1.3.0) will be set dynamically.n * @property {number} [gutter=0]n * The size in pixels of the gutter around image tiles to ignore. By settingn * this property to a non-zero value, images will be requested that are widern * and taller than the tile size by a value of `2 x gutter`.n * Using a non-zero value allows artifacts of rendering at tile edges to ben * ignored. If you control the WMS service it is recommended to addressn * "artifacts at tile edges" issues by properly configuring the WMS service. Forn * example, MapServer has a `tile_map_edge_buffer` configuration parameter forn * this. See mapserver.org/output/tile_mode.html.n * @property {boolean} [hidpi=true] Use the `ol/Map#pixelRatio` value when requestingn * the image from the remote server.n * @property {import("../proj.js").ProjectionLike} [projection] Projection. Default is the view projection.n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).n * Higher values can increase reprojection performance, but decrease precision.n * @property {typeof import("../ImageTile.js").default} [tileClass] Class used to instantiate image tiles.n * Default is {@link module:ol/ImageTile~ImageTile}.n * @property {import("../tilegrid/TileGrid.js").default} [tileGrid] Tile grid. Base this on the resolutions,n * tilesize and extent supported by the server.n * If this is not defined, a default grid will be used: if there is a projectionn * extent, the grid will be based on that; if not, a grid based on a globaln * extent with origin at 0,0 will be used..n * @property {import("./WMSServerType.js").default|string} [serverType]n * The type of the remote WMS server. Currently only used when `hidpi` isn * `true`.n * @property {import("../Tile.js").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default isn * “`jsn * function(imageTile, src) {n * imageTile.getImage().src = src;n * };n * “`n * @property {string} [url] WMS service URL.n * @property {Array<string>} [urls] WMS service urls.n * Use this instead of `url` when the WMS supports multiple urls for GetMap requests.n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.n * When set to `false`, only one worldn * will be rendered. When `true`, tiles will be requested for one world only,n * but they will be wrapped horizontally to render multiple worlds.n * @property {number} [transition] Duration of the opacity transition for rendering.n * To disable the opacity transition, pass `transition: 0`.n */n/**n * @classdescn * Layer source for tile data from WMS servers.n * @apin */nvar TileWMS = /** @class */ (function (_super) {n __extends(TileWMS, _super);n /**n * @param {Options=} [opt_options] Tile WMS options.n */n function TileWMS(opt_options) {n var _this = this;n var options = opt_options ? opt_options : /** @type {Options} */ ({});n var params = options.params || {};n var transparent = 'TRANSPARENT' in params ? params : true;n _this = _super.call(this, {n attributions: options.attributions,n cacheSize: options.cacheSize,n crossOrigin: options.crossOrigin,n opaque: !transparent,n projection: options.projection,n reprojectionErrorThreshold: options.reprojectionErrorThreshold,n tileClass: options.tileClass,n tileGrid: options.tileGrid,n tileLoadFunction: options.tileLoadFunction,n tileUrlFunction: tileUrlFunction,n url: options.url,n urls: options.urls,n wrapX: options.wrapX !== undefined ? options.wrapX : true,n transition: options.transitionn }) || this;n /**n * @privaten * @type {number}n */n this.gutter = options.gutter !== undefined ? options.gutter : 0;n /**n * @privaten * @type {!Object}n */n this.params = params;n /**n * @privaten * @type {boolean}n */n this.v13 = true;n /**n * @privaten * @type {import("./WMSServerType.js").default|undefined}n */n this.serverType = /** @type {import("./WMSServerType.js").default|undefined} */ (options.serverType);n /**n * @privaten * @type {boolean}n */n this.hidpi = options.hidpi !== undefined ? options.hidpi : true;n /**n * @privaten * @type {import("../extent.js").Extent}n */n this.tmpExtent = createEmpty();n this.updateV13();n _this.setKey(this.getKeyForParams());n return _this;n }n /**n * Return the GetFeatureInfo URL for the passed coordinate, resolution, andn * projection. Return `undefined` if the GetFeatureInfo URL cannot ben * constructed.n * @param {import("../coordinate.js").Coordinate} coordinate Coordinate.n * @param {number} resolution Resolution.n * @param {import("../proj.js").ProjectionLike} projection Projection.n * @param {!Object} params GetFeatureInfo params. `INFO_FORMAT` at least shouldn * be provided. If `QUERY_LAYERS` is not provided then the layers specifiedn * in the `LAYERS` parameter will be used. `VERSION` should not ben * specified here.n * @return {string|undefined} GetFeatureInfo URL.n * @apin */n TileWMS.prototype.getFeatureInfoUrl = function (coordinate, resolution, projection, params) {n var projectionObj = getProjection(projection);n var sourceProjectionObj = this.getProjection();n var tileGrid = this.getTileGrid();n if (!tileGrid) {n tileGrid = this.getTileGridForProjection(projectionObj);n }n var z = tileGrid.getZForResolution(resolution, this.zDirection);n var tileCoord = tileGrid.getTileCoordForCoordAndZ(coordinate, z);n if (tileGrid.getResolutions().length <= tileCoord) {n return undefined;n }n var tileResolution = tileGrid.getResolution(tileCoord);n var tileExtent = tileGrid.getTileCoordExtent(tileCoord, this.tmpExtent_);n var tileSize = toSize(tileGrid.getTileSize(tileCoord), this.tmpSize);n var gutter = this.gutter_;n if (gutter !== 0) {n tileSize = bufferSize(tileSize, gutter, this.tmpSize);n tileExtent = buffer(tileExtent, tileResolution * gutter, tileExtent);n }n if (sourceProjectionObj && sourceProjectionObj !== projectionObj) {n tileResolution = calculateSourceResolution(sourceProjectionObj, projectionObj, coordinate, tileResolution);n tileExtent = transformExtent(tileExtent, projectionObj, sourceProjectionObj);n coordinate = transform(coordinate, projectionObj, sourceProjectionObj);n }n var baseParams = {n 'SERVICE': 'WMS',n 'VERSION': DEFAULT_WMS_VERSION,n 'REQUEST': 'GetFeatureInfo',n 'FORMAT': 'image/png',n 'TRANSPARENT': true,n 'QUERY_LAYERS': this.params_n };n assign(baseParams, this.params_, params);n var x = Math.floor((coordinate - tileExtent) / tileResolution);n var y = Math.floor((tileExtent - coordinate) / tileResolution);n baseParams[this.v13_ ? 'I' : 'X'] = x;n baseParams[this.v13_ ? 'J' : 'Y'] = y;n return this.getRequestUrl_(tileCoord, tileSize, tileExtent, 1, sourceProjectionObj || projectionObj, baseParams);n };n /**n * Return the GetLegendGraphic URL, optionally optimized for the passedn * resolution and possibly including any passed specific parameters. Returnsn * `undefined` if the GetLegendGraphic URL cannot be constructed.n *n * @param {number} [resolution] Resolution. If set to undefined, `SCALE`n * will not be calculated and included in URL.n * @param {Object} [params] GetLegendGraphic params. If `LAYER` is set, then * request is generated for this wms layer, else it will try to use then * configured wms layer. Default `FORMAT` is `image/png`.n * `VERSION` should not be specified here.n * @return {string|undefined} GetLegendGraphic URL.n * @apin */n TileWMS.prototype.getLegendUrl = function (resolution, params) {n if (this.urls === undefined) {n return undefined;n }n var baseParams = {n 'SERVICE': 'WMS',n 'VERSION': DEFAULT_WMS_VERSION,n 'REQUEST': 'GetLegendGraphic',n 'FORMAT': 'image/png'n };n if (params === undefined || params === undefined) {n var layers = this.params_.LAYERS;n var isSingleLayer = !Array.isArray(layers) || layers.length === 1;n if (!isSingleLayer) {n return undefined;n }n baseParams = layers;n }n if (resolution !== undefined) {n var mpu = this.getProjection() ? this.getProjection().getMetersPerUnit() : 1;n var dpi = 25.4 / 0.28;n var inchesPerMeter = 39.37;n baseParams = resolution * mpu * inchesPerMeter * dpi;n }n assign(baseParams, params);n return appendParams(/** @type {string} */ (this.urls), baseParams);n };n /**n * @inheritDocn */n TileWMS.prototype.getGutter = function () {n return this.gutter_;n };n /**n * Get the user-provided params, i.e. those passed to the constructor throughn * the "params" option, and possibly updated using the updateParams method.n * @return {Object} Params.n * @apin */n TileWMS.prototype.getParams = function () {n return this.params_;n };n /**n * @param {import("../tilecoord.js").TileCoord} tileCoord Tile coordinate.n * @param {import("../size.js").Size} tileSize Tile size.n * @param {import("../extent.js").Extent} tileExtent Tile extent.n * @param {number} pixelRatio Pixel ratio.n * @param {import("../proj/Projection.js").default} projection Projection.n * @param {Object} params Params.n * @return {string|undefined} Request URL.n * @privaten */n TileWMS.prototype.getRequestUrl_ = function (tileCoord, tileSize, tileExtent, pixelRatio, projection, params) {n var urls = this.urls;n if (!urls) {n return undefined;n }n params = tileSize;n params = tileSize;n params[this.v13_ ? 'CRS' : 'SRS'] = projection.getCode();n if (!('STYLES' in this.params_)) {n params = '';n }n if (pixelRatio != 1) {n switch (this.serverType_) {n case WMSServerType.GEOSERVER:n var dpi = (90 * pixelRatio + 0.5) | 0;n if ('FORMAT_OPTIONS' in params) {n params += ';dpi:' + dpi;n }n else {n params = 'dpi:' + dpi;n }n break;n case WMSServerType.MAPSERVER:n params = 90 * pixelRatio;n break;n case WMSServerType.CARMENTA_SERVER:n case WMSServerType.QGIS:n params = 90 * pixelRatio;n break;n default:n assert(false, 52); // Unknown `serverType` configuredn break;n }n }n var axisOrientation = projection.getAxisOrientation();n var bbox = tileExtent;n if (this.v13_ && axisOrientation.substr(0, 2) == 'ne') {n var tmp = void 0;n tmp = tileExtent;n bbox = tileExtent;n bbox = tmp;n tmp = tileExtent;n bbox = tileExtent;n bbox = tmp;n }n params = bbox.join(',');n var url;n if (urls.length == 1) {n url = urls;n }n else {n var index = modulo(tileCoordHash(tileCoord), urls.length);n url = urls;n }n return appendParams(url, params);n };n /**n * @inheritDocn */n TileWMS.prototype.getTilePixelRatio = function (pixelRatio) {n return (!this.hidpi_ || this.serverType_ === undefined) ? 1 :n /** @type {number} */ (pixelRatio);n };n /**n * @privaten * @return {string} The key for the current params.n */n TileWMS.prototype.getKeyForParams_ = function () {n var i = 0;n var res = [];n for (var key in this.params_) {n res = key + '-' + this.params_;n }n return res.join('/');n };n /**n * Update the user-provided params.n * @param {Object} params Params.n * @apin */n TileWMS.prototype.updateParams = function (params) {n assign(this.params_, params);n this.updateV13_();n this.setKey(this.getKeyForParams_());n };n /**n * @privaten */n TileWMS.prototype.updateV13_ = function () {n var version = this.params_ || DEFAULT_WMS_VERSION;n this.v13_ = compareVersions(version, '1.3') >= 0;n };n return TileWMS;n}(TileImage));n/**n * @param {import("../tilecoord.js").TileCoord} tileCoord The tile coordinaten * @param {number} pixelRatio The pixel ration * @param {import("../proj/Projection.js").default} projection The projectionn * @return {string|undefined} The tile URLn * @this {TileWMS}n */nfunction tileUrlFunction(tileCoord, pixelRatio, projection) {n var tileGrid = this.getTileGrid();n if (!tileGrid) {n tileGrid = this.getTileGridForProjection(projection);n }n if (tileGrid.getResolutions().length <= tileCoord) {n return undefined;n }n if (pixelRatio != 1 && (!this.hidpi_ || this.serverType_ === undefined)) {n pixelRatio = 1;n }n var tileResolution = tileGrid.getResolution(tileCoord);n var tileExtent = tileGrid.getTileCoordExtent(tileCoord, this.tmpExtent_);n var tileSize = toSize(tileGrid.getTileSize(tileCoord), this.tmpSize);n var gutter = this.gutter_;n if (gutter !== 0) {n tileSize = bufferSize(tileSize, gutter, this.tmpSize);n tileExtent = buffer(tileExtent, tileResolution * gutter, tileExtent);n }n if (pixelRatio != 1) {n tileSize = scaleSize(tileSize, pixelRatio, this.tmpSize);n }n var baseParams = {n 'SERVICE': 'WMS',n 'VERSION': DEFAULT_WMS_VERSION,n 'REQUEST': 'GetMap',n 'FORMAT': 'image/png',n 'TRANSPARENT': truen };n assign(baseParams, this.params_);n return this.getRequestUrl_(tileCoord, tileSize, tileExtent, pixelRatio, projection, baseParams);n}nexport default TileWMS;n//# sourceMappingURL=TileWMS.js.map”,“/**n * @module ol/source/UTFGridn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport Tile from '../Tile.js';nimport TileState from '../TileState.js';nimport { createFromTemplates, nullTileUrlFunction } from '../tileurlfunction.js';nimport { assert } from '../asserts.js';nimport { listenOnce } from '../events.js';nimport EventType from '../events/EventType.js';nimport { applyTransform, intersects } from '../extent.js';nimport { jsonp as requestJSONP } from '../net.js';nimport { get as getProjection, getTransformFromProjections } from '../proj.js';nimport SourceState from './State.js';nimport TileSource from './Tile.js';nimport { getKeyZXY } from '../tilecoord.js';nimport { createXYZ, extentFromProjection } from '../tilegrid.js';n/**n * @typedef {Object} UTFGridJSONn * @property {Array<string>} grid The grid.n * @property {Array<string>} keys The keys.n * @property {Object<string, Object>} [data] Optional data.n */nvar CustomTile = /** @class */ (function (_super) {n __extends(CustomTile, _super);n /**n * @param {import("../tilecoord.js").TileCoord} tileCoord Tile coordinate.n * @param {TileState} state State.n * @param {string} src Image source URI.n * @param {import("../extent.js").Extent} extent Extent of the tile.n * @param {boolean} preemptive Load the tile when visible (before it's needed).n * @param {boolean} jsonp Load the tile as a script.n */n function CustomTile(tileCoord, state, src, extent, preemptive, jsonp) {n var _this = _super.call(this, tileCoord, state) || this;n /**n * @privaten * @type {string}n */n this.src = src;n /**n * @privaten * @type {import("../extent.js").Extent}n */n this.extent = extent;n /**n * @privaten * @type {boolean}n */n this.preemptive = preemptive;n /**n * @privaten * @type {Array<string>}n */n this.grid = null;n /**n * @privaten * @type {Array<string>}n */n this.keys = null;n /**n * @privaten * @type {Object<string, Object>|undefined}n */n this.data = null;n /**n * @privaten * @type {boolean}n */n this.jsonp = jsonp;n return _this;n }n /**n * Get the image element for this tile.n * @return {HTMLImageElement} Image.n */n CustomTile.prototype.getImage = function () {n return null;n };n /**n * Synchronously returns data at given coordinate (if available).n * @param {import("../coordinate.js").Coordinate} coordinate Coordinate.n * @return {*} The data.n */n CustomTile.prototype.getData = function (coordinate) {n if (!this.grid_ || !this.keys_) {n return null;n }n var xRelative = (coordinate - this.extent_) /n (this.extent_ - this.extent_);n var yRelative = (coordinate - this.extent_) /n (this.extent_ - this.extent_);n var row = this.grid_[Math.floor((1 - yRelative) * this.grid_.length)];n if (typeof row !== 'string') {n return null;n }n var code = row.charCodeAt(Math.floor(xRelative * row.length));n if (code >= 93) {n code–;n }n if (code >= 35) {n code–;n }n code -= 32;n var data = null;n if (code in this.keys_) {n var id = this.keys_;n if (this.data_ && id in this.data_) {n data = this.data_;n }n else {n data = id;n }n }n return data;n };n /**n * Calls the callback (synchronously by default) with the available datan * for given coordinate (or `null` if not yet loaded).n * @param {import("../coordinate.js").Coordinate} coordinate Coordinate.n * @param {function(*): void} callback Callback.n * @param {boolean=} opt_request If `true` the callback is always async.n * The tile data is requested if not yet loaded.n */n CustomTile.prototype.forDataAtCoordinate = function (coordinate, callback, opt_request) {n if (this.state == TileState.IDLE && opt_request === true) {n listenOnce(this, EventType.CHANGE, function (e) {n callback(this.getData(coordinate));n }, this);n this.loadInternal_();n }n else {n if (opt_request === true) {n setTimeout(function () {n callback(this.getData(coordinate));n }.bind(this), 0);n }n else {n callback(this.getData(coordinate));n }n }n };n /**n * @inheritDocn */n CustomTile.prototype.getKey = function () {n return this.src_;n };n /**n * @privaten */n CustomTile.prototype.handleError_ = function () {n this.state = TileState.ERROR;n this.changed();n };n /**n * @param {!UTFGridJSON} json UTFGrid data.n * @privaten */n CustomTile.prototype.handleLoad_ = function (json) {n this.grid_ = json;n this.keys_ = json;n this.data_ = json;n this.state = TileState.EMPTY;n this.changed();n };n /**n * @privaten */n CustomTile.prototype.loadInternal_ = function () {n if (this.state == TileState.IDLE) {n this.state = TileState.LOADING;n if (this.jsonp_) {n requestJSONP(this.src_, this.handleLoad_.bind(this), this.handleError_.bind(this));n }n else {n var client = new XMLHttpRequest();n client.addEventListener('load', this.onXHRLoad_.bind(this));n client.addEventListener('error', this.onXHRError_.bind(this));n client.open('GET', this.src_);n client.send();n }n }n };n /**n * @privaten * @param {Event} event The load event.n */n CustomTile.prototype.onXHRLoad_ = function (event) {n var client = /** @type {XMLHttpRequest} */ (event.target);n // status will be 0 for file:// urlsn if (!client.status || client.status >= 200 && client.status < 300) {n var response = void 0;n try {n response = /** @type {!UTFGridJSON} */ (JSON.parse(client.responseText));n }n catch (err) {n this.handleError_();n return;n }n this.handleLoad_(response);n }n else {n this.handleError_();n }n };n /**n * @privaten * @param {Event} event The error event.n */n CustomTile.prototype.onXHRError_ = function (event) {n this.handleError_();n };n /**n * @overriden */n CustomTile.prototype.load = function () {n if (this.preemptive_) {n this.loadInternal_();n }n };n return CustomTile;n}(Tile));nexport { CustomTile };n/**n * @typedef {Object} Optionsn * @property {boolean} [preemptive=true]n * If `true` the UTFGrid source loads the tiles based on their "visibility".n * This improves the speed of response, but increases traffic.n * Note that if set to `false`, you need to pass `true` as `opt_request`n * to the `forDataAtCoordinateAndResolution` method otherwise no datan * will ever be loaded.n * @property {boolean} [jsonp=false] Use JSONP with callback to load the TileJSON.n * Useful when the server does not support CORS..n * @property {import("./TileJSON.js").Config} [tileJSON] TileJSON configuration for this source.n * If not provided, `url` must be configured.n * @property {string} [url] TileJSON endpoint that provides the configuration for this source.n * Request will be made through JSONP. If not provided, `tileJSON` must be configured.n */n/**n * @classdescn * Layer source for UTFGrid interaction data loaded from TileJSON format.n * @apin */nvar UTFGrid = /** @class */ (function (_super) {n __extends(UTFGrid, _super);n /**n * @param {Options} options Source options.n */n function UTFGrid(options) {n var _this = _super.call(this, {n projection: getProjection('EPSG:3857'),n state: SourceState.LOADINGn }) || this;n /**n * @privaten * @type {boolean}n */n this.preemptive = options.preemptive !== undefined ?n options.preemptive : true;n /**n * @privaten * @type {!import("../Tile.js").UrlFunction}n */n this.tileUrlFunction = nullTileUrlFunction;n /**n * @privaten * @type {string|undefined}n */n this.template = undefined;n /**n * @privaten * @type {boolean}n */n this.jsonp = options.jsonp || false;n if (options.url) {n if (this.jsonp) {n requestJSONP(options.url, _this.handleTileJSONResponse.bind(_this), _this.handleTileJSONError.bind(_this));n }n else {n var client = new XMLHttpRequest();n client.addEventListener('load', this.onXHRLoad.bind(_this));n client.addEventListener('error', this.onXHRError.bind(_this));n client.open('GET', options.url);n client.send();n }n }n else if (options.tileJSON) {n _this.handleTileJSONResponse(options.tileJSON);n }n else {n assert(false, 51); // Either `url` or `tileJSON` options must be providedn }n return _this;n }n /**n * @privaten * @param {Event} event The load event.n */n UTFGrid.prototype.onXHRLoad_ = function (event) {n var client = /** @type {XMLHttpRequest} */ (event.target);n // status will be 0 for file:// urlsn if (!client.status || client.status >= 200 && client.status < 300) {n var response = void 0;n try {n response = /** @type {import("./TileJSON.js").Config} */ (JSON.parse(client.responseText));n }n catch (err) {n this.handleTileJSONError();n return;n }n this.handleTileJSONResponse(response);n }n else {n this.handleTileJSONError();n }n };n /**n * @privaten * @param {Event} event The error event.n */n UTFGrid.prototype.onXHRError_ = function (event) {n this.handleTileJSONError();n };n /**n * Return the template from TileJSON.n * @return {string|undefined} The template from TileJSON.n * @apin */n UTFGrid.prototype.getTemplate = function () {n return this.template_;n };n /**n * Calls the callback (synchronously by default) with the available datan * for given coordinate and resolution (or `null` if not yet loaded orn * in case of an error).n * @param {import("../coordinate.js").Coordinate} coordinate Coordinate.n * @param {number} resolution Resolution.n * @param {function(*): void} callback Callback.n * @param {boolean=} opt_request If `true` the callback is always async.n * The tile data is requested if not yet loaded.n * @apin */n UTFGrid.prototype.forDataAtCoordinateAndResolution = function (coordinate, resolution, callback, opt_request) {n if (this.tileGrid) {n var z = this.tileGrid.getZForResolution(resolution, this.zDirection);n var tileCoord = this.tileGrid.getTileCoordForCoordAndZ(coordinate, z);n var tile = /** @type {!CustomTile} */ (this.getTile(tileCoord, tileCoord, tileCoord, 1, this.getProjection()));n tile.forDataAtCoordinate(coordinate, callback, opt_request);n }n else {n if (opt_request === true) {n setTimeout(function () {n callback(null);n }, 0);n }n else {n callback(null);n }n }n };n /**n * @protectedn */n UTFGrid.prototype.handleTileJSONError = function () {n this.setState(SourceState.ERROR);n };n /**n * TODO: very similar to ol/source/TileJSON#handleTileJSONResponsen * @protectedn * @param {import("./TileJSON.js").Config} tileJSON Tile JSON.n */n UTFGrid.prototype.handleTileJSONResponse = function (tileJSON) {n var epsg4326Projection = getProjection('EPSG:4326');n var sourceProjection = this.getProjection();n var extent;n if (tileJSON !== undefined) {n var transform = getTransformFromProjections(epsg4326Projection, sourceProjection);n extent = applyTransform(tileJSON, transform);n }n var minZoom = tileJSON || 0;n var maxZoom = tileJSON || 22;n var tileGrid = createXYZ({n extent: extentFromProjection(sourceProjection),n maxZoom: maxZoom,n minZoom: minZoomn });n this.tileGrid = tileGrid;n this.template_ = tileJSON;n var grids = tileJSON;n if (!grids) {n this.setState(SourceState.ERROR);n return;n }n this.tileUrlFunction_ = createFromTemplates(grids, tileGrid);n if (tileJSON !== undefined) {n var attributionExtent_1 = extent !== undefined ?n extent : epsg4326Projection.getExtent();n this.setAttributions(function (frameState) {n if (intersects(attributionExtent_1, frameState.extent)) {n return [tileJSON];n }n return null;n });n }n this.setState(SourceState.READY);n };n /**n * @inheritDocn */n UTFGrid.prototype.getTile = function (z, x, y, pixelRatio, projection) {n var tileCoordKey = getKeyZXY(z, x, y);n if (this.tileCache.containsKey(tileCoordKey)) {n return (n /** @type {!import("../Tile.js").default} */ (this.tileCache.get(tileCoordKey)));n }n else {n var tileCoord = [z, x, y];n var urlTileCoord = this.getTileCoordForTileUrlFunction(tileCoord, projection);n var tileUrl = this.tileUrlFunction_(urlTileCoord, pixelRatio, projection);n var tile = new CustomTile(tileCoord, tileUrl !== undefined ? TileState.IDLE : TileState.EMPTY, tileUrl !== undefined ? tileUrl : '', this.tileGrid.getTileCoordExtent(tileCoord), this.preemptive_, this.jsonp_);n this.tileCache.set(tileCoordKey, tile);n return tile;n }n };n /**n * @inheritDocn */n UTFGrid.prototype.useTile = function (z, x, y) {n var tileCoordKey = getKeyZXY(z, x, y);n if (this.tileCache.containsKey(tileCoordKey)) {n this.tileCache.get(tileCoordKey);n }n };n return UTFGrid;n}(TileSource));nexport default UTFGrid;n//# sourceMappingURL=UTFGrid.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/VectorRenderTilen */nimport { getUid } from './util.js';nimport Tile from './Tile.js';nimport { createCanvasContext2D } from './dom.js';nimport { unlistenByKey } from './events.js';n/**n * @typedef {Object} ReplayStaten * @property {boolean} dirtyn * @property {null|import("./render.js").OrderFunction} renderedRenderOrdern * @property {number} renderedTileRevisionn * @property {number} renderedResolutionn * @property {number} renderedRevisionn * @property {number} renderedZn * @property {number} renderedTileResolutionn * @property {number} renderedTileZn */nvar VectorRenderTile = /** @class */ (function (_super) {n __extends(VectorRenderTile, _super);n /**n * @param {import("./tilecoord.js").TileCoord} tileCoord Tile coordinate.n * @param {import("./TileState.js").default} state State.n * @param {import("./tilecoord.js").TileCoord} urlTileCoord Wrapped tile coordinate for source urls.n * @param {import("./tilegrid/TileGrid.js").default} sourceTileGrid Tile grid of the source.n * @param {function(VectorRenderTile):Array<import("./VectorTile").default>} getSourceTiles Functionn * to get an source tiles for this tile.n * @param {function(VectorRenderTile):void} removeSourceTiles Function to remove this tile from itsn * source tiles's consumer count.n */n function VectorRenderTile(tileCoord, state, urlTileCoord, sourceTileGrid, getSourceTiles, removeSourceTiles) {n var _this = _super.call(this, tileCoord, state, { transition: 0 }) || this;n /**n * @privaten * @type {!Object<string, CanvasRenderingContext2D>}n */n this.context = {};n /**n * Executor groups by layer uid. Entries are read/written by the renderer.n * @type {Object<string, Array<import("./render/canvas/ExecutorGroup.js").default>>}n */n _this.executorGroups = {};n /**n * Number of loading source tiles. Read/written by the source.n * @type {number}n */n _this.loadingSourceTiles = 0;n /**n * Tile keys of error source tiles. Read/written by the source.n * @type {Object<string, boolean>}n */n _this.errorSourceTileKeys = {};n /**n * @type {ImageData}n */n _this.hitDetectionImageData = null;n /**n * @privaten * @type {!Object<string, ReplayState>}n */n this.replayState = {};n /**n * @type {number}n */n _this.wantedResolution;n /**n * @type {!function():Array<import("./VectorTile.js").default>}n */n _this.getSourceTiles = getSourceTiles.bind(_this, _this);n /**n * @type {!function(import("./VectorRenderTile.js").default):void}n */n this.removeSourceTiles = removeSourceTiles;n /**n * @privaten * @type {import("./tilegrid/TileGrid.js").default}n */n this.sourceTileGrid = sourceTileGrid;n /**n * @type {Array<import("./events.js").EventsKey>}n */n _this.sourceTileListenerKeys = [];n /**n * z of the source tiles of the last getSourceTiles call.n * @type {number}n */n _this.sourceZ = -1;n /**n * True when all tiles for this tile's nominal resolution are available.n * @type {boolean}n */n _this.hifi = false;n /**n * @type {import("./tilecoord.js").TileCoord}n */n _this.wrappedTileCoord = urlTileCoord;n return _this;n }n /**n * @inheritDocn */n VectorRenderTile.prototype.disposeInternal = function () {n this.sourceTileListenerKeys.forEach(unlistenByKey);n this.sourceTileListenerKeys.length = 0;n this.removeSourceTiles_(this);n for (var key in this.context_) {n var canvas = this.context_.canvas;n canvas.width = 0;n canvas.height = 0;n }n for (var key in this.executorGroups) {n var executorGroups = this.executorGroups;n for (var i = 0, ii = executorGroups.length; i < ii; ++i) {n executorGroups.disposeInternal();n }n }n _super.prototype.disposeInternal.call(this);n };n /**n * @param {import("./layer/Layer.js").default} layer Layer.n * @return {CanvasRenderingContext2D} The rendering context.n */n VectorRenderTile.prototype.getContext = function (layer) {n var key = getUid(layer);n if (!(key in this.context_)) {n this.context_ = createCanvasContext2D();n }n return this.context_;n };n /**n * @param {import("./layer/Layer.js").default} layer Layer.n * @return {boolean} Tile has a rendering context for the given layer.n */n VectorRenderTile.prototype.hasContext = function (layer) {n return getUid(layer) in this.context_;n };n /**n * Get the Canvas for this tile.n * @param {import("./layer/Layer.js").default} layer Layer.n * @return {HTMLCanvasElement} Canvas.n */n VectorRenderTile.prototype.getImage = function (layer) {n return this.hasContext(layer) ? this.getContext(layer).canvas : null;n };n /**n * @param {import("./layer/Layer.js").default} layer Layer.n * @return {ReplayState} The replay state.n */n VectorRenderTile.prototype.getReplayState = function (layer) {n var key = getUid(layer);n if (!(key in this.replayState_)) {n this.replayState_ = {n dirty: false,n renderedRenderOrder: null,n renderedResolution: NaN,n renderedRevision: -1,n renderedTileResolution: NaN,n renderedTileRevision: -1,n renderedZ: -1,n renderedTileZ: -1n };n }n return this.replayState_;n };n /**n * @inheritDocn */n VectorRenderTile.prototype.load = function () {n this.getSourceTiles();n };n return VectorRenderTile;n}(Tile));nexport default VectorRenderTile;n//# sourceMappingURL=VectorRenderTile.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/VectorTilen */nimport Tile from './Tile.js';nimport TileState from './TileState.js';nvar VectorTile = /** @class */ (function (_super) {n __extends(VectorTile, _super);n /**n * @param {import("./tilecoord.js").TileCoord} tileCoord Tile coordinate.n * @param {TileState} state State.n * @param {string} src Data source url.n * @param {import("./format/Feature.js").default} format Feature format.n * @param {import("./Tile.js").LoadFunction} tileLoadFunction Tile load function.n * @param {import("./Tile.js").Options=} opt_options Tile options.n */n function VectorTile(tileCoord, state, src, format, tileLoadFunction, opt_options) {n var _this = _super.call(this, tileCoord, state, opt_options) || this;n /**n * @type {number}n */n _this.consumers = 0;n /**n * Extent of this tile; set by the source.n * @type {import("./extent.js").Extent}n */n _this.extent = null;n /**n * @privaten * @type {import("./format/Feature.js").default}n */n this.format = format;n /**n * @privaten * @type {Array<import("./Feature.js").default>}n */n this.features = null;n /**n * @privaten * @type {import("./featureloader.js").FeatureLoader}n */n this.loader;n /**n * Feature projection of this tile; set by the source.n * @type {import("./proj/Projection.js").default}n */n _this.projection = null;n /**n * Resolution of this tile; set by the source.n * @type {number}n */n _this.resolution;n /**n * @privaten * @type {import("./Tile.js").LoadFunction}n */n this.tileLoadFunction = tileLoadFunction;n /**n * @privaten * @type {string}n */n this.url = src;n return _this;n }n /**n * Get the feature format assigned for reading this tile's features.n * @return {import("./format/Feature.js").default} Feature format.n * @apin */n VectorTile.prototype.getFormat = function () {n return this.format_;n };n /**n * Get the features for this tile. Geometries will be in the view projection.n * @return {Array<import("./Feature.js").FeatureLike>} Features.n * @apin */n VectorTile.prototype.getFeatures = function () {n return this.features_;n };n /**n * @inheritDocn */n VectorTile.prototype.getKey = function () {n return this.url_;n };n /**n * @inheritDocn */n VectorTile.prototype.load = function () {n if (this.state == TileState.IDLE) {n this.setState(TileState.LOADING);n this.tileLoadFunction_(this, this.url_);n this.loader_(this.extent, this.resolution, this.projection);n }n };n /**n * Handler for successful tile load.n * @param {Array<import("./Feature.js").default>} features The loaded features.n * @param {import("./proj/Projection.js").default} dataProjection Data projection.n */n VectorTile.prototype.onLoad = function (features, dataProjection) {n this.setFeatures(features);n };n /**n * Handler for tile load errors.n */n VectorTile.prototype.onError = function () {n this.setState(TileState.ERROR);n };n /**n * Function for use in an {@link module:ol/source/VectorTile~VectorTile}'s `tileLoadFunction`.n * Sets the features for the tile.n * @param {Array<import("./Feature.js").default>} features Features.n * @apin */n VectorTile.prototype.setFeatures = function (features) {n this.features_ = features;n this.setState(TileState.LOADED);n };n /**n * Set the feature loader for reading this tile's features.n * @param {import("./featureloader.js").FeatureLoader} loader Feature loader.n * @apin */n VectorTile.prototype.setLoader = function (loader) {n this.loader_ = loader;n };n return VectorTile;n}(Tile));nexport default VectorTile;n//# sourceMappingURL=VectorTile.js.map”,“/**n * @module ol/source/VectorTilen */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport TileState from '../TileState.js';nimport VectorRenderTile from '../VectorRenderTile.js';nimport Tile from '../VectorTile.js';nimport { toSize } from '../size.js';nimport UrlTile from './UrlTile.js';nimport { getKeyZXY, getKey } from '../tilecoord.js';nimport { createXYZ, extentFromProjection, createForProjection } from '../tilegrid.js';nimport { buffer as bufferExtent, getIntersection, intersects } from '../extent.js';nimport EventType from '../events/EventType.js';nimport { loadFeaturesXhr } from '../featureloader.js';nimport { equals, remove } from '../array.js';nimport { listen, unlistenByKey } from '../events.js';n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions] Attributions.n * @property {boolean} [attributionsCollapsible=true] Attributions are collapsible.n * @property {number} [cacheSize=128] Cache size.n * @property {import("../extent.js").Extent} [extent]n * @property {import("../format/Feature.js").default} [format] Feature format for tiles. Used and required by the default.n * @property {boolean} [overlaps=true] This source may have overlapping geometries. Setting thisn * to `false` (e.g. for sources with polygons that represent administrativen * boundaries or TopoJSON sources) allows the renderer to optimise fill andn * stroke operations.n * @property {import("../proj.js").ProjectionLike} [projection='EPSG:3857'] Projection of the tile grid.n * @property {import("./State.js").default} [state] Source state.n * @property {typeof import("../VectorTile.js").default} [tileClass] Class used to instantiate image tiles.n * Default is {@link module:ol/VectorTile}.n * @property {number} [maxZoom=22] Optional max zoom level.n * @property {number} [minZoom] Optional min zoom level.n * @property {number|import("../size.js").Size} [tileSize=512] Optional tile size.n * @property {import("../tilegrid/TileGrid.js").default} [tileGrid] Tile grid.n * @property {import("../Tile.js").LoadFunction} [tileLoadFunction]n * Optional function to load a tile given a URL. Could look like this for pbf tiles:n * “`jsn * function(tile, url) {n * tile.setLoader(function(extent, resolution, projection) {n * fetch(url).then(function(response) {n * response.arrayBuffer().then(function(data) {n * const format = tile.getFormat() // ol/format/MVT configured as source formatn * const features = format.readFeatures(data, {n * extent: extent,n * featureProjection: projectionn * });n * tile.setFeatures(features);n * });n * });n * });n * }n * “`n * @property {import("../Tile.js").UrlFunction} [tileUrlFunction] Optional function to get tile URL given a tile coordinate and the projection.n * @property {string} [url] URL template. Must include `{x}`, `{y}` or `{-y}`, and `{z}` placeholders.n * A `{?-?}` template pattern, for example `subdomain{a-f}.domain.com`, may ben * used instead of defining each one separately in the `urls` option.n * @property {number} [transition] A duration for tile opacityn * transitions in milliseconds. A duration of 0 disables the opacity transition.n * @property {Array<string>} [urls] An array of URL templates.n * @property {boolean} [wrapX=true] Whether to wrap the world horizontally.n * When set to `false`, only one worldn * will be rendered. When set to `true`, tiles will be wrapped horizontally ton * render multiple worlds.n * @property {number} [zDirection=1] Indicate which resolution should be usedn * by a renderer if the view resolution does not match any resolution of the tile source.n * If 0, the nearest resolution will be used. If 1, the nearest lower resolutionn * will be used. If -1, the nearest higher resolution will be used.n */n/**n * @classdescn * Class for layer sources providing vector data divided into a tile grid, to ben * used with {@link module:ol/layer/VectorTile~VectorTile}. Although this source receives tilesn * with vector features from the server, it is not meant for feature editing.n * Features are optimized for rendering, their geometries are clipped at or nearn * tile boundaries and simplified for a view resolution. Seen * {@link module:ol/source/Vector} for vector sources that are suitable for featuren * editing.n *n * @fires import("./Tile.js").TileSourceEventn * @apin */nvar VectorTile = /** @class */ (function (_super) {n __extends(VectorTile, _super);n /**n * @param {!Options} options Vector tile options.n */n function VectorTile(options) {n var _this = this;n var projection = options.projection || 'EPSG:3857';n var extent = options.extent || extentFromProjection(projection);n var tileGrid = options.tileGrid || createXYZ({n extent: extent,n maxZoom: options.maxZoom !== undefined ? options.maxZoom : 22,n minZoom: options.minZoom,n tileSize: options.tileSize || 512n });n _this = _super.call(this, {n attributions: options.attributions,n attributionsCollapsible: options.attributionsCollapsible,n cacheSize: options.cacheSize,n opaque: false,n projection: projection,n state: options.state,n tileGrid: tileGrid,n tileLoadFunction: options.tileLoadFunction ? options.tileLoadFunction : defaultLoadFunction,n tileUrlFunction: options.tileUrlFunction,n url: options.url,n urls: options.urls,n wrapX: options.wrapX === undefined ? true : options.wrapX,n transition: options.transition,n zDirection: options.zDirection === undefined ? 1 : options.zDirectionn }) || this;n /**n * @privaten * @type {import("../format/Feature.js").default}n */n this.format = options.format ? options.format : null;n /**n * @type {Object<string, import("./VectorTile").default>}n */n this.loadingTiles = {};n /**n * @privaten * @type {Object<string, import("../VectorTile.js").default>}n */n this.sourceTileByCoordKey = {};n /**n * @privaten * @type {Object<string, Array<import("../VectorTile.js").default>>}n */n this.sourceTilesByTileKey = {};n /**n * @privaten * @type {boolean}n */n this.overlaps = options.overlaps == undefined ? true : options.overlaps;n /**n * @protectedn * @type {typeof import("../VectorTile.js").default}n */n _this.tileClass = options.tileClass ? options.tileClass : Tile;n /**n * @privaten * @type {Object<string, import("../tilegrid/TileGrid.js").default>}n */n this.tileGrids = {};n return _this;n }n /**n * @return {boolean} The source can have overlapping geometries.n */n VectorTile.prototype.getOverlaps = function () {n return this.overlaps_;n };n /**n * clear {@link module:ol/TileCache~TileCache} and delete all source tilesn * @apin */n VectorTile.prototype.clear = function () {n this.tileCache.clear();n this.sourceTileByCoordKey_ = {};n this.sourceTilesByTileKey_ = {};n };n /**n * @param {number} pixelRatio Pixel ratio.n * @param {import("../proj/Projection").default} projection Projection.n * @param {VectorRenderTile} tile Vector image tile.n * @return {Array<import("../VectorTile").default>} Tile keys.n */n VectorTile.prototype.getSourceTiles = function (pixelRatio, projection, tile) {n var urlTileCoord = tile.wrappedTileCoord;n var tileGrid = this.getTileGridForProjection(projection);n var extent = tileGrid.getTileCoordExtent(urlTileCoord);n var z = urlTileCoord;n var resolution = tileGrid.getResolution(z);n // make extent 1 pixel smaller so we don't load tiles for < 0.5 pixel render spacen bufferExtent(extent, -resolution, extent);n var sourceTileGrid = this.tileGrid;n var sourceExtent = sourceTileGrid.getExtent();n if (sourceExtent) {n getIntersection(extent, sourceExtent, extent);n }n var sourceZ = sourceTileGrid.getZForResolution(resolution, 1);n var minZoom = sourceTileGrid.getMinZoom();n var previousSourceTiles = this.sourceTilesByTileKey_;n var sourceTiles, covered, loadedZ;n if (previousSourceTiles && previousSourceTiles.length > 0 && previousSourceTiles.tileCoord === sourceZ) {n sourceTiles = previousSourceTiles;n covered = true;n loadedZ = sourceZ;n }n else {n sourceTiles = [];n loadedZ = sourceZ + 1;n do {n –loadedZ;n covered = true;n sourceTileGrid.forEachTileCoord(extent, loadedZ, function (sourceTileCoord) {n var coordKey = getKey(sourceTileCoord);n var sourceTile;n if (coordKey in this.sourceTileByCoordKey_) {n sourceTile = this.sourceTileByCoordKey_;n var state = sourceTile.getState();n if (state === TileState.LOADED || state === TileState.ERROR || state === TileState.EMPTY) {n sourceTiles.push(sourceTile);n return;n }n }n else if (loadedZ === sourceZ) {n var tileUrl = this.tileUrlFunction(sourceTileCoord, pixelRatio, projection);n if (tileUrl !== undefined) {n sourceTile = new this.tileClass(sourceTileCoord, TileState.IDLE, tileUrl, this.format_, this.tileLoadFunction);n sourceTile.extent = sourceTileGrid.getTileCoordExtent(sourceTileCoord);n sourceTile.projection = projection;n sourceTile.resolution = sourceTileGrid.getResolution(sourceTileCoord);n this.sourceTileByCoordKey_ = sourceTile;n sourceTile.addEventListener(EventType.CHANGE, this.handleTileChange.bind(this));n sourceTile.load();n }n }n covered = false;n if (!sourceTile) {n return;n }n if (sourceTile.getState() !== TileState.EMPTY && tile.getState() === TileState.IDLE) {n tile.loadingSourceTiles++;n var key_1 = listen(sourceTile, EventType.CHANGE, function () {n var state = sourceTile.getState();n var sourceTileKey = sourceTile.getKey();n if (state === TileState.LOADED || state === TileState.ERROR) {n if (state === TileState.LOADED) {n remove(tile.sourceTileListenerKeys, key_1);n unlistenByKey(key_1);n tile.loadingSourceTiles–;n delete tile.errorSourceTileKeys;n }n else if (state === TileState.ERROR) {n tile.errorSourceTileKeys = true;n }n var errorTileCount = Object.keys(tile.errorSourceTileKeys).length;n if (tile.loadingSourceTiles - errorTileCount === 0) {n tile.hifi = errorTileCount === 0;n tile.sourceZ = sourceZ;n tile.setState(TileState.LOADED);n }n }n });n tile.sourceTileListenerKeys.push(key_1);n }n }.bind(this));n if (!covered) {n sourceTiles.length = 0;n }n } while (!covered && loadedZ > minZoom);n }n if (tile.getState() === TileState.IDLE) {n tile.setState(TileState.LOADING);n }n if (covered) {n tile.hifi = sourceZ === loadedZ;n tile.sourceZ = loadedZ;n if (tile.getState() < TileState.LOADED) {n tile.setState(TileState.LOADED);n }n else if (!previousSourceTiles || !equals(sourceTiles, previousSourceTiles)) {n this.removeSourceTiles(tile);n this.addSourceTiles(tile, sourceTiles);n }n }n return sourceTiles;n };n /**n * @param {VectorRenderTile} tile Tile.n * @param {Array<import("../VectorTile").default>} sourceTiles Source tiles.n */n VectorTile.prototype.addSourceTiles = function (tile, sourceTiles) {n this.sourceTilesByTileKey_ = sourceTiles;n for (var i = 0, ii = sourceTiles.length; i < ii; ++i) {n sourceTiles.consumers++;n }n };n /**n * @param {VectorRenderTile} tile Tile.n */n VectorTile.prototype.removeSourceTiles = function (tile) {n var tileKey = tile.getKey();n if (tileKey in this.sourceTilesByTileKey_) {n var sourceTiles = this.sourceTilesByTileKey_;n for (var i = 0, ii = sourceTiles.length; i < ii; ++i) {n var sourceTile = sourceTiles;n sourceTile.consumers–;n if (sourceTile.consumers === 0) {n sourceTile.dispose();n delete this.sourceTileByCoordKey_;n }n }n }n delete this.sourceTilesByTileKey_;n };n /**n * @inheritDocn */n VectorTile.prototype.getTile = function (z, x, y, pixelRatio, projection) {n var coordKey = getKeyZXY(z, x, y);n var key = this.getKey();n var tile;n if (this.tileCache.containsKey(coordKey)) {n tile = /** @type {!import("../Tile.js").default} */ (this.tileCache.get(coordKey));n if (tile.key === key) {n return tile;n }n }n var tileCoord = [z, x, y];n var urlTileCoord = this.getTileCoordForTileUrlFunction(tileCoord, projection);n var sourceExtent = this.getTileGrid().getExtent();n var tileGrid = this.getTileGridForProjection(projection);n if (urlTileCoord && sourceExtent) {n var tileExtent = tileGrid.getTileCoordExtent(urlTileCoord);n // make extent 1 pixel smaller so we don't load tiles for < 0.5 pixel render spacen bufferExtent(tileExtent, -tileGrid.getResolution(z), tileExtent);n if (!intersects(sourceExtent, tileExtent)) {n urlTileCoord = null;n }n }n var empty = true;n if (urlTileCoord !== null) {n var sourceTileGrid = this.tileGrid;n var resolution = tileGrid.getResolution(z);n var sourceZ = sourceTileGrid.getZForResolution(resolution, 1);n // make extent 1 pixel smaller so we don't load tiles for < 0.5 pixel render spacen var extent = tileGrid.getTileCoordExtent(urlTileCoord);n bufferExtent(extent, -resolution, extent);n sourceTileGrid.forEachTileCoord(extent, sourceZ, function (sourceTileCoord) {n empty = empty && !this.tileUrlFunction(sourceTileCoord, pixelRatio, projection);n }.bind(this));n }n var newTile = new VectorRenderTile(tileCoord, empty ? TileState.EMPTY : TileState.IDLE, urlTileCoord, this.tileGrid, this.getSourceTiles.bind(this, pixelRatio, projection), this.removeSourceTiles.bind(this));n newTile.key = key;n if (tile) {n newTile.interimTile = tile;n newTile.refreshInterimChain();n this.tileCache.replace(coordKey, newTile);n }n else {n this.tileCache.set(coordKey, newTile);n }n return newTile;n };n /**n * @inheritDocn */n VectorTile.prototype.getTileGridForProjection = function (projection) {n var code = projection.getCode();n var tileGrid = this.tileGrids_;n if (!tileGrid) {n // A tile grid that matches the tile size of the source tile grid is moren // likely to have 1:1 relationships between source tiles and rendered tiles.n var sourceTileGrid = this.tileGrid;n tileGrid = createForProjection(projection, undefined, sourceTileGrid ? sourceTileGrid.getTileSize(sourceTileGrid.getMinZoom()) : undefined);n this.tileGrids_ = tileGrid;n }n return tileGrid;n };n /**n * @inheritDocn */n VectorTile.prototype.getTilePixelRatio = function (pixelRatio) {n return pixelRatio;n };n /**n * @inheritDocn */n VectorTile.prototype.getTilePixelSize = function (z, pixelRatio, projection) {n var tileGrid = this.getTileGridForProjection(projection);n var tileSize = toSize(tileGrid.getTileSize(z), this.tmpSize);n return [Math.round(tileSize * pixelRatio), Math.round(tileSize * pixelRatio)];n };n return VectorTile;n}(UrlTile));nexport default VectorTile;n/**n * Sets the loader for a tile.n * @param {import("../VectorTile.js").default} tile Vector tile.n * @param {string} url URL.n */nexport function defaultLoadFunction(tile, url) {n var loader = loadFeaturesXhr(url, tile.getFormat(), tile.onLoad.bind(tile), tile.onError.bind(tile));n tile.setLoader(loader);n}n//# sourceMappingURL=VectorTile.js.map”,“/**n * @module ol/source/WMTSRequestEncodingn */n/**n * Request encoding. One of 'KVP', 'REST'.n * @enum {string}n */nexport default {n KVP: 'KVP',n REST: 'REST' // see spec §10n};n//# sourceMappingURL=WMTSRequestEncoding.js.map”,“/**n * @module ol/source/WMTSn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { expandUrl, createFromTileUrlFunctions, nullTileUrlFunction } from '../tileurlfunction.js';nimport { find, findIndex, includes } from '../array.js';nimport { containsExtent } from '../extent.js';nimport { assign } from '../obj.js';nimport { get as getProjection, equivalent, transformExtent } from '../proj.js';nimport TileImage from './TileImage.js';nimport WMTSRequestEncoding from './WMTSRequestEncoding.js';nimport { createFromCapabilitiesMatrixSet } from '../tilegrid/WMTS.js';nimport { appendParams } from '../uri.js';n/**n * @typedef {Object} Optionsn * @property {import("./Source.js").AttributionLike} [attributions] Attributions.n * @property {number} [cacheSize] Tile cache size. The default depends on the screen size. Will increase if too small.n * @property {null|string} [crossOrigin] The `crossOrigin` attribute for loaded images. Note thatn * you must provide a `crossOrigin` value if you want to access pixel data with the Canvas renderer.n * See developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.n * @property {import("../tilegrid/WMTS.js").default} tileGrid Tile grid.n * @property {import("../proj.js").ProjectionLike} [projection] Projection. Default is the view projection.n * @property {number} [reprojectionErrorThreshold=0.5] Maximum allowed reprojection error (in pixels).n * Higher values can increase reprojection performance, but decrease precision.n * @property {import("./WMTSRequestEncoding.js").default|string} [requestEncoding='KVP'] Request encoding.n * @property {string} layer Layer name as advertised in the WMTS capabilities.n * @property {string} style Style name as advertised in the WMTS capabilities.n * @property {typeof import("../ImageTile.js").default} [tileClass] Class used to instantiate image tiles. Default is {@link module:ol/ImageTile~ImageTile}.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 512pxn * by 512px images (for retina/hidpi devices) then `tilePixelRatio`n * should be set to `2`.n * @property {string} [format='image/jpeg'] Image format. Only used when `requestEncoding` is `'KVP'`.n * @property {string} [version='1.0.0'] WMTS version.n * @property {string} matrixSet Matrix set.n * @property {!Object} [dimensions] Additional "dimensions" for tile requests.n * This is an object with properties named like the advertised WMTS dimensions.n * @property {string} [url] A URL for the service.n * For the RESTful request encoding, this is a URLn * template. For KVP encoding, it is normal URL. A `{?-?}` template pattern,n * for example `subdomain{a-f}.domain.com`, may be used instead of definingn * each one separately in the `urls` option.n * @property {import("../Tile.js").LoadFunction} [tileLoadFunction] Optional function to load a tile given a URL. The default isn * “`jsn * function(imageTile, src) {n * imageTile.getImage().src = src;n * };n * “`n * @property {Array<string>} [urls] An array of URLs.n * Requests will be distributed among the URLs in this array.n * @property {boolean} [wrapX=false] Whether to wrap the world horizontally.n * @property {number} [transition] Duration of the opacity transition for rendering.n * To disable the opacity transition, pass `transition: 0`.n */n/**n * @classdescn * Layer source for tile data from WMTS servers.n * @apin */nvar WMTS = /** @class */ (function (_super) {n __extends(WMTS, _super);n /**n * @param {Options} options WMTS options.n */n function WMTS(options) {n // TODO: add support for TileMatrixLimitsn var _this = this;n var requestEncoding = options.requestEncoding !== undefined ?n /** @type {import("./WMTSRequestEncoding.js").default} */ (options.requestEncoding) :n WMTSRequestEncoding.KVP;n // FIXME: should we create a default tileGrid?n // we could issue a getCapabilities xhr to retrieve missing configurationn var tileGrid = options.tileGrid;n var urls = options.urls;n if (urls === undefined && options.url !== undefined) {n urls = expandUrl(options.url);n }n _this = _super.call(this, {n attributions: options.attributions,n cacheSize: options.cacheSize,n crossOrigin: options.crossOrigin,n projection: options.projection,n reprojectionErrorThreshold: options.reprojectionErrorThreshold,n tileClass: options.tileClass,n tileGrid: tileGrid,n tileLoadFunction: options.tileLoadFunction,n tilePixelRatio: options.tilePixelRatio,n tileUrlFunction: nullTileUrlFunction,n urls: urls,n wrapX: options.wrapX !== undefined ? options.wrapX : false,n transition: options.transitionn }) || this;n /**n * @privaten * @type {string}n */n this.version = options.version !== undefined ? options.version : '1.0.0';n /**n * @privaten * @type {string}n */n this.format = options.format !== undefined ? options.format : 'image/jpeg';n /**n * @privaten * @type {!Object}n */n this.dimensions = options.dimensions !== undefined ? options.dimensions : {};n /**n * @privaten * @type {string}n */n this.layer = options.layer;n /**n * @privaten * @type {string}n */n this.matrixSet = options.matrixSet;n /**n * @privaten * @type {string}n */n this.style = options.style;n // FIXME: should we guess this requestEncoding from options.url(s)n // structure? that would mean KVP only if a template is not provided.n /**n * @privaten * @type {import("./WMTSRequestEncoding.js").default}n */n this.requestEncoding = requestEncoding;n _this.setKey(this.getKeyForDimensions());n if (urls && urls.length > 0) {n _this.tileUrlFunction = createFromTileUrlFunctions(urls.map(createFromWMTSTemplate.bind(_this)));n }n return _this;n }n /**n * Set the URLs to use for requests.n * URLs may contain OCG conform URL Template Variables: {TileMatrix}, {TileRow}, {TileCol}.n * @overriden */n WMTS.prototype.setUrls = function (urls) {n this.urls = urls;n var key = urls.join('\n');n this.setTileUrlFunction(createFromTileUrlFunctions(urls.map(createFromWMTSTemplate.bind(this))), key);n };n /**n * Get the dimensions, i.e. those passed to the constructor through then * "dimensions" option, and possibly updated using the updateDimensionsn * method.n * @return {!Object} Dimensions.n * @apin */n WMTS.prototype.getDimensions = function () {n return this.dimensions_;n };n /**n * Return the image format of the WMTS source.n * @return {string} Format.n * @apin */n WMTS.prototype.getFormat = function () {n return this.format_;n };n /**n * Return the layer of the WMTS source.n * @return {string} Layer.n * @apin */n WMTS.prototype.getLayer = function () {n return this.layer_;n };n /**n * Return the matrix set of the WMTS source.n * @return {string} MatrixSet.n * @apin */n WMTS.prototype.getMatrixSet = function () {n return this.matrixSet_;n };n /**n * Return the request encoding, either "KVP" or "REST".n * @return {import("./WMTSRequestEncoding.js").default} Request encoding.n * @apin */n WMTS.prototype.getRequestEncoding = function () {n return this.requestEncoding_;n };n /**n * Return the style of the WMTS source.n * @return {string} Style.n * @apin */n WMTS.prototype.getStyle = function () {n return this.style_;n };n /**n * Return the version of the WMTS source.n * @return {string} Version.n * @apin */n WMTS.prototype.getVersion = function () {n return this.version_;n };n /**n * @privaten * @return {string} The key for the current dimensions.n */n WMTS.prototype.getKeyForDimensions_ = function () {n var i = 0;n var res = [];n for (var key in this.dimensions_) {n res = key + '-' + this.dimensions_;n }n return res.join('/');n };n /**n * Update the dimensions.n * @param {Object} dimensions Dimensions.n * @apin */n WMTS.prototype.updateDimensions = function (dimensions) {n assign(this.dimensions_, dimensions);n this.setKey(this.getKeyForDimensions_());n };n return WMTS;n}(TileImage));nexport default WMTS;n/**n * Generate source options from a capabilities object.n * @param {Object} wmtsCap An object representing the capabilities document.n * @param {!Object} config Configuration properties for the layer. Defaults forn * the layer will apply if not provided.n *n * Required config properties:n * - layer - {string} The layer identifier.n *n * Optional config properties:n * - matrixSet - {string} The matrix set identifier, required if there isn * more than one matrix set in the layer capabilities.n * - projection - {string} The desired CRS when no matrixSet is specified.n * eg: "EPSG:3857". If the desired projection is not available,n * an error is thrown.n * - requestEncoding - {string} url encoding format for the layer. Default isn * the first tile url format found in the GetCapabilities response.n * - style - {string} The name of the stylen * - format - {string} Image format for the layer. Default is the firstn * format returned in the GetCapabilities response.n * - crossOrigin - {string|null|undefined} Cross origin. Default is `undefined`.n * @return {?Options} WMTS source options object or `null` if the layer was not found.n * @apin */nexport function optionsFromCapabilities(wmtsCap, config) {n var layers = wmtsCap['Layer'];n var l = find(layers, function (elt, index, array) {n return elt == config;n });n if (l === null) {n return null;n }n var tileMatrixSets = wmtsCap['TileMatrixSet'];n var idx;n if (l.length > 1) {n if ('projection' in config) {n idx = findIndex(l, function (elt, index, array) {n var tileMatrixSet = find(tileMatrixSets, function (el) {n return el == elt;n });n var supportedCRS = tileMatrixSet;n var proj1 = getProjection(supportedCRS.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/, '$1:$3')) ||n getProjection(supportedCRS);n var proj2 = getProjection(config);n if (proj1 && proj2) {n return equivalent(proj1, proj2);n }n else {n return supportedCRS == config;n }n });n }n else {n idx = findIndex(l, function (elt, index, array) {n return elt == config;n });n }n }n else {n idx = 0;n }n if (idx < 0) {n idx = 0;n }n var matrixSet = /** @type {string} */ (l[idx]);n var matrixLimits = /** @type {Array<Object>} */ (l[idx]);n var format = /** @type {string} */ (l[0]);n if ('format' in config) {n format = config;n }n idx = findIndex(l, function (elt, index, array) {n if ('style' in config) {n return elt == config;n }n else {n return elt;n }n });n if (idx < 0) {n idx = 0;n }n var style = /** @type {string} */ (l[idx]);n var dimensions = {};n if ('Dimension' in l) {n l.forEach(function (elt, index, array) {n var key = elt;n var value = elt;n if (value === undefined) {n value = elt[0];n }n dimensions = value;n });n }n var matrixSets = wmtsCap['TileMatrixSet'];n var matrixSetObj = find(matrixSets, function (elt, index, array) {n return elt == matrixSet;n });n var projection;n var code = matrixSetObj;n if (code) {n projection = getProjection(code.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/, '$1:$3')) ||n getProjection(code);n }n if ('projection' in config) {n var projConfig = getProjection(config);n if (projConfig) {n if (!projection || equivalent(projConfig, projection)) {n projection = projConfig;n }n }n }n var wgs84BoundingBox = l;n var extent, wrapX;n if (wgs84BoundingBox !== undefined) {n var wgs84ProjectionExtent = getProjection('EPSG:4326').getExtent();n wrapX = (wgs84BoundingBox == wgs84ProjectionExtent &&n wgs84BoundingBox == wgs84ProjectionExtent);n extent = transformExtent(wgs84BoundingBox, 'EPSG:4326', projection);n var projectionExtent = projection.getExtent();n if (projectionExtent) {n // If possible, do a sanity check on the extent - it should never ben // bigger than the validity extent of the projection of a matrix set.n if (!containsExtent(projectionExtent, extent)) {n extent = undefined;n }n }n }n var tileGrid = createFromCapabilitiesMatrixSet(matrixSetObj, extent, matrixLimits);n /** @type {!Array<string>} */n var urls = [];n var requestEncoding = config;n requestEncoding = requestEncoding !== undefined ? requestEncoding : '';n if ('OperationsMetadata' in wmtsCap && 'GetTile' in wmtsCap) {n var gets = wmtsCap['GetTile’]['HTTP’];n for (var i = 0, ii = gets.length; i < ii; ++i) {n if (gets['Constraint']) {n var constraint = find(gets['Constraint'], function (element) {n return element == 'GetEncoding';n });n var encodings = constraint['Value'];n if (requestEncoding === '') {n // requestEncoding not provided, use the first encoding from the listn requestEncoding = encodings;n }n if (requestEncoding === WMTSRequestEncoding.KVP) {n if (includes(encodings, WMTSRequestEncoding.KVP)) {n urls.push(/** @type {string} */ (gets['href']));n }n }n else {n break;n }n }n else if (gets['href']) {n requestEncoding = WMTSRequestEncoding.KVP;n urls.push(/** @type {string} */ (gets['href']));n }n }n }n if (urls.length === 0) {n requestEncoding = WMTSRequestEncoding.REST;n l.forEach(function (element) {n if (element === 'tile') {n format = element;n urls.push(/** @type {string} */ (element));n }n });n }n return {n urls: urls,n layer: config,n matrixSet: matrixSet,n format: format,n projection: projection,n requestEncoding: requestEncoding,n tileGrid: tileGrid,n style: style,n dimensions: dimensions,n wrapX: wrapX,n crossOrigin: confign };n}n/**n * @param {string} template Template.n * @return {import("../Tile.js").UrlFunction} Tile URL function.n * @this {WMTS}n */nfunction createFromWMTSTemplate(template) {n var requestEncoding = this.requestEncoding_;n // context property names are lower case to allow for a case insensitiven // replacement as some services use different naming conventionsn var context = {n 'layer': this.layer_,n 'style': this.style_,n 'tilematrixset': this.matrixSet_n };n if (requestEncoding == WMTSRequestEncoding.KVP) {n assign(context, {n 'Service': 'WMTS',n 'Request': 'GetTile',n 'Version': this.version_,n 'Format': this.format_n });n }n // TODO: we may want to create our own appendParams function so that paramsn // order conforms to wmts spec guidance, and so that we can avoid to escapen // special template paramsn template = (requestEncoding == WMTSRequestEncoding.KVP) ?n appendParams(template, context) :n template.replace(/\{(\w+?)\}/g, function (m, p) {n return (p.toLowerCase() in context) ? context : m;n });n var tileGrid = /** @type {import("../tilegrid/WMTS.js").default} */ (this.tileGrid);n var dimensions = this.dimensions_;n return (n /**n * @param {import("../tilecoord.js").TileCoord} tileCoord Tile coordinate.n * @param {number} pixelRatio Pixel ratio.n * @param {import("../proj/Projection.js").default} projection Projection.n * @return {string|undefined} Tile URL.n */n function (tileCoord, pixelRatio, projection) {n if (!tileCoord) {n return undefined;n }n else {n var localContext_1 = {n 'TileMatrix': tileGrid.getMatrixId(tileCoord),n 'TileCol': tileCoord,n 'TileRow': tileCoordn };n assign(localContext_1, dimensions);n var url = template;n if (requestEncoding == WMTSRequestEncoding.KVP) {n url = appendParams(url, localContext_1);n }n else {n url = url.replace(/\{(\w+?)\}/g, function (m, p) {n return localContext_1;n });n }n return url;n }n });n}n//# sourceMappingURL=WMTS.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/renderer/webgl/Layern */nimport LayerRenderer from '../Layer.js';nimport WebGLHelper from '../../webgl/Helper.js';n/**n * @enum {string}n */nexport var WebGLWorkerMessageType = {n GENERATE_BUFFERS: 'GENERATE_BUFFERS'n};n/**n * @typedef {Object} WebGLWorkerGenerateBuffersMessagen * This message will trigger the generation of a vertex and an index buffer based on the given render instructions.n * When the buffers are generated, the worked will send a message of the same type to the main thread, withn * the generated buffers in it.n * Note that any addition properties present in the message will be sent back to the main thread.n * @property {WebGLWorkerMessageType} type Message typen * @property {ArrayBuffer} renderInstructions Render instructions raw binary buffer.n * @property {ArrayBuffer} [vertexBuffer] Vertices array raw binary buffer (sent by the worker).n * @property {ArrayBuffer} [indexBuffer] Indices array raw binary buffer (sent by the worker).n * @property {number} [customAttributesCount] Amount of custom attributes count in the render instructions.n */n/**n * @typedef {Object} PostProcessesOptionsn * @property {number} [scaleRatio] Scale ratio; if < 1, the post process will render to a texture smaller thann * the main canvas that will then be sampled up (useful for saving resource on blur steps).n * @property {string} [vertexShader] Vertex shader sourcen * @property {string} [fragmentShader] Fragment shader sourcen * @property {Object.<string,import("../../webgl/Helper").UniformValue>} [uniforms] Uniform definitions for the post process stepn */n/**n * @typedef {Object} Optionsn * @property {Object.<string,import("../../webgl/Helper").UniformValue>} [uniforms] Uniform definitions for the post process stepsn * @property {Array<PostProcessesOptions>} [postProcesses] Post-processes definitionsn */n/**n * @classdescn * Base WebGL renderer class.n * Holds all logic related to data manipulation & some common rendering logicn * @template {import("../../layer/Layer.js").default} LayerTypen */nvar WebGLLayerRenderer = /** @class */ (function (_super) {n __extends(WebGLLayerRenderer, _super);n /**n * @param {LayerType} layer Layer.n * @param {Options=} [opt_options] Options.n */n function WebGLLayerRenderer(layer, opt_options) {n var _this = _super.call(this, layer) || this;n var options = opt_options || {};n /**n * @type {WebGLHelper}n * @protectedn */n _this.helper = new WebGLHelper({n postProcesses: options.postProcesses,n uniforms: options.uniformsn });n return _this;n }n /**n * @inheritDocn */n WebGLLayerRenderer.prototype.disposeInternal = function () {n this.helper.dispose();n _super.prototype.disposeInternal.call(this);n };n /**n * Will return the last shader compilation errors. If no error happened, will return null;n * @return {string|null} Errors, or null if last compilation was successfuln * @apin */n WebGLLayerRenderer.prototype.getShaderCompileErrors = function () {n return this.helper.getShaderCompileErrors();n };n return WebGLLayerRenderer;n}(LayerRenderer));nvar tmpArray_ = [];nvar bufferPositions_ = { vertexPosition: 0, indexPosition: 0 };nfunction writePointVertex(buffer, pos, x, y, index) {n buffer[pos + 0] = x;n buffer[pos + 1] = y;n buffer[pos + 2] = index;n}n/**n * An object holding positions both in an index and a vertex buffer.n * @typedef {Object} BufferPositionsn * @property {number} vertexPosition Position in the vertex buffern * @property {number} indexPosition Position in the index buffern */n/**n * Pushes a quad (two triangles) based on a point geometryn * @param {Float32Array} instructions Array of render instructions for points.n * @param {number} elementIndex Index from which render instructions will be read.n * @param {Float32Array} vertexBuffer Buffer in the form of a typed array.n * @param {Uint32Array} indexBuffer Buffer in the form of a typed array.n * @param {number} customAttributesCount Amount of custom attributes for each element.n * @param {BufferPositions} [bufferPositions] Buffer write positions; if not specified, positions will be set at 0.n * @return {BufferPositions} New buffer positions where to write nextn * @property {number} vertexPosition New position in the vertex buffer where future writes should start.n * @property {number} indexPosition New position in the index buffer where future writes should start.n * @privaten */nexport function writePointFeatureToBuffers(instructions, elementIndex, vertexBuffer, indexBuffer, customAttributesCount, bufferPositions) {n // This is for x, y and indexn var baseVertexAttrsCount = 3;n var baseInstructionsCount = 2;n var stride = baseVertexAttrsCount + customAttributesCount;n var x = instructions[elementIndex + 0];n var y = instructions[elementIndex + 1];n // read custom numerical attributes on the featuren var customAttrs = tmpArray_;n customAttrs.length = customAttributesCount;n for (var i = 0; i < customAttrs.length; i++) {n customAttrs = instructions[elementIndex + baseInstructionsCount + i];n }n var vPos = bufferPositions ? bufferPositions.vertexPosition : 0;n var iPos = bufferPositions ? bufferPositions.indexPosition : 0;n var baseIndex = vPos / stride;n // push vertices for each of the four quad corners (first standard then custom attributes)n writePointVertex(vertexBuffer, vPos, x, y, 0);n customAttrs.length && vertexBuffer.set(customAttrs, vPos + baseVertexAttrsCount);n vPos += stride;n writePointVertex(vertexBuffer, vPos, x, y, 1);n customAttrs.length && vertexBuffer.set(customAttrs, vPos + baseVertexAttrsCount);n vPos += stride;n writePointVertex(vertexBuffer, vPos, x, y, 2);n customAttrs.length && vertexBuffer.set(customAttrs, vPos + baseVertexAttrsCount);n vPos += stride;n writePointVertex(vertexBuffer, vPos, x, y, 3);n customAttrs.length && vertexBuffer.set(customAttrs, vPos + baseVertexAttrsCount);n vPos += stride;n indexBuffer = baseIndex;n indexBuffer = baseIndex + 1;n indexBuffer = baseIndex + 3;n indexBuffer = baseIndex + 1;n indexBuffer = baseIndex + 2;n indexBuffer = baseIndex + 3;n bufferPositions_.vertexPosition = vPos;n bufferPositions_.indexPosition = iPos;n return bufferPositions_;n}n/**n * Returns a texture of 1x1 pixel, whiten * @privaten * @return {ImageData} Image data.n */nexport function getBlankImageData() {n var canvas = document.createElement('canvas');n var image = canvas.getContext('2d').createImageData(1, 1);n image.data = 255;n image.data = 255;n image.data = 255;n image.data = 255;n return image;n}n/**n * Generates a color array based on a numerical idn * Note: the range for each component is 0 to 1 with 256 stepsn * @param {number} id Idn * @param {Array<number>} [opt_array] Reusable arrayn * @return {Array<number>} Color array containing the encoded idn */nexport function colorEncodeId(id, opt_array) {n var array = opt_array || [];n var radix = 256;n var divide = radix - 1;n array = Math.floor(id / radix / radix / radix) / divide;n array = (Math.floor(id / radix / radix) % radix) / divide;n array = (Math.floor(id / radix) % radix) / divide;n array = (id % radix) / divide;n return array;n}n/**n * Reads an id from a color-encoded arrayn * Note: the expected range for each component is 0 to 1 with 256 steps.n * @param {Array<number>} color Color array containing the encoded idn * @return {number} Decoded idn */nexport function colorDecodeId(color) {n var id = 0;n var radix = 256;n var mult = radix - 1;n id += Math.round(color * radix * radix * radix * mult);n id += Math.round(color * radix * radix * mult);n id += Math.round(color * radix * mult);n id += Math.round(color * mult);n return id;n}nexport default WebGLLayerRenderer;n//# sourceMappingURL=Layer.js.map”,“var source = "var e=\"function\"==typeof Object.assign?Object.assign:function(e,n){if(null==e)throw new TypeError(\"Cannot convert undefined or null to object\");for(var t=Object(e),r=1,o=arguments.length;r<o;++r){var i=arguments;if(null!=i)for(var f in i)i.hasOwnProperty(f)&&(t=i)}return t},n=\"GENERATE_BUFFERS\",t=[],r={vertexPosition:0,indexPosition:0};function o(e,n,t,r,o){e=t,e=r,e=o}function i(e,n,i,f,s,u){var a=3+s,l=e,v=e,c=t;c.length=s;for(var g=0;g=e;var b=u?u.vertexPosition:0,h=u?u.indexPosition:0,d=b/a;return o(i,b,l,v,0),c.length&&i.set(c,b+3),o(i,b+=a,l,v,1),c.length&&i.set(c,b+3),o(i,b+=a,l,v,2),c.length&&i.set(c,b+3),o(i,b+=a,l,v,3),c.length&&i.set(c,b+3),b+=a,f=d,f=d+1,f=d+3,f=d+1,f=d+2,f=d+3,r.vertexPosition=b,r.indexPosition=h,r}var f=self;f.onmessage=function(t){var r=t.data;if(r.type===n){for(var o=r.customAttributesCount,s=2+o,u=new Float32Array(r.renderInstructions),a=u.length/s,l=4*a*(o+3),v=new Uint32Array(6*a),c=new Float32Array(l),g=null,b=0;b<u.length;b+=s)g=i(u,b,c,v,o,g);var h=e({vertexBuffer:c.buffer,indexBuffer:v.buffer,renderInstructions:u.buffer},r);f.postMessage(h,)}};";nvar blob = new Blob(, { type: 'application/javascript' });nvar url = URL.createObjectURL(blob);nexport function create() {n return new Worker(url);n}n//# sourceMappingURL=webgl.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/layer/BaseVectorn */nimport Layer from './Layer.js';nimport { assign } from '../obj.js';nimport { createDefaultStyle, toFunction as toStyleFunction } from '../style/Style.js';n/**n * @typedef {Object} Optionsn * @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 ben * rendered outside of this extent.n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layersn * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumedn * 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 ben * visible.n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer willn * be visible.n * @property {import("../render.js").OrderFunction} [renderOrder] Render order. Function to be used when sortingn * features before rendering. By default features are drawn in the order that they are created. Usen * `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 then * 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 {import("../source/Vector.js").default} [source] Source.n * @property {import("../PluggableMap.js").default} [map] Sets the layer as overlay on a map. The map will not managen * this layer in its layers collection, and the layer will be rendered on top. This is useful forn * temporary layers. The standard way to add a layer to a map and have it managed by the map is ton * use {@link module:ol/Map#addLayer}.n * @property {boolean} [declutter=false] Declutter images and text. Decluttering is applied to alln * image and text styles of all Vector and VectorTile layers that have set this to `true`. The priorityn * 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 hasn * higher priority.n * @property {import("../style/Style.js").StyleLike} [style] Layer style. Seen * {@link module:ol/style} for default style which will be used if this is not defined.n * @property {boolean} [updateWhileAnimating=false] When set to `true`, feature batches willn * be recreated during animations. This means that no vectors will be shown clipped, but then * 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 willn * be recreated during interactions. See also `updateWhileAnimating`.n */n/**n * @enum {string}n * @privaten */nvar Property = {n RENDER_ORDER: 'renderOrder'n};n/**n * @classdescn * 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 then * options means that `title` is observable, and has get/set accessors.n *n * @template {import("../source/Vector.js").default|import("../source/VectorTile.js").default} VectorSourceTypen * @extends {Layer<VectorSourceType>}n * @apin */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 * @privaten * @type {boolean}n */n this.declutter = options.declutter !== undefined ? options.declutter : false;n /**n * @type {number}n * @privaten */n this.renderBuffer = options.renderBuffer !== undefined ?n options.renderBuffer : 100;n /**n * User provided style.n * @type {import("../style/Style.js").StyleLike}n * @privaten */n this.style = null;n /**n * Style function for use within the library.n * @type {import("../style/Style.js").StyleFunction|undefined}n * @privaten */n this.styleFunction = undefined;n _this.setStyle(options.style);n /**n * @type {boolean}n * @privaten */n this.updateWhileAnimating = options.updateWhileAnimating !== undefined ?n options.updateWhileAnimating : false;n /**n * @type {boolean}n * @privaten */n this.updateWhileInteracting = options.updateWhileInteracting !== undefined ?n options.updateWhileInteracting : 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 promisen * that resolves with an array of features. The array will either contain the topmost featuren * 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 lessn * accurate than the one used in {@link import("../PluggableMap.js").default#getFeaturesAtPixel}: Textn * is not considered, and icons are only represented by their bounding box instead of the exactn * image.n *n * @param {import("../pixel.js").Pixel} pixel Pixel.n * @return {Promise<Array<import("../Feature").default>>} Promise that resolves with an array of features.n * @apin */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} Rendern * order.n */n BaseVectorLayer.prototype.getRenderOrder = function () {n return (n /** @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}n * Layer style.n * @apin */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 * @apin */n BaseVectorLayer.prototype.getStyleFunction = function () {n return this.styleFunction_;n };n /**n * @return {boolean} Whether the rendered layer should be updated whilen * animating.n */n BaseVectorLayer.prototype.getUpdateWhileAnimating = function () {n return this.updateWhileAnimating_;n };n /**n * @return {boolean} Whether the rendered layer should be updated whilen * interacting.n */n BaseVectorLayer.prototype.getUpdateWhileInteracting = function () {n return this.updateWhileInteracting_;n };n /**n * @param {import("../render.js").OrderFunction|null|undefined} renderOrdern * 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 arrayn * of styles, or a function that takes a feature and resolution and returnsn * an array of styles. If it is `undefined` the default style is used. Ifn * it is `null` the layer has no style (a `null` style), so only featuresn * that have their own styles will be rendered in the layer. Seen * {@link module:ol/style} for information on the default style.n * @param {import("../style/Style.js").default|Array<import("../style/Style.js").default>|import("../style/Style.js").StyleFunction|null|undefined} style Layer style.n * @apin */n BaseVectorLayer.prototype.setStyle = function (style) {n this.style_ = style !== undefined ? style : createDefaultStyle;n this.styleFunction_ = style === null ?n undefined : toStyleFunction(this.style_);n this.changed();n };n return BaseVectorLayer;n}(Layer));nexport default BaseVectorLayer;n//# sourceMappingURL=BaseVector.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/renderer/webgl/PointsLayern */nimport WebGLArrayBuffer from '../../webgl/Buffer.js';nimport { ARRAY_BUFFER, DYNAMIC_DRAW, ELEMENT_ARRAY_BUFFER } from '../../webgl.js';nimport { AttributeType, DefaultUniform } from '../../webgl/Helper.js';nimport GeometryType from '../../geom/GeometryType.js';nimport WebGLLayerRenderer, { colorDecodeId, colorEncodeId, WebGLWorkerMessageType } from './Layer.js';nimport ViewHint from '../../ViewHint.js';nimport { buffer, createEmpty, equals } from '../../extent.js';nimport { apply as applyTransform, create as createTransform, makeInverse as makeInverseTransform, multiply as multiplyTransform } from '../../transform.js';nimport { create as createWebGLWorker } from '../../worker/webgl.js';nimport { getUid } from '../../util.js';nimport WebGLRenderTarget from '../../webgl/RenderTarget.js';nimport { assert } from '../../asserts.js';nimport BaseVector from '../../layer/BaseVector.js';nimport { listen, unlistenByKey } from '../../events.js';nimport VectorEventType from '../../source/VectorEventType.js';n/**n * @typedef {Object} CustomAttribute A description of a custom attribute to be passed on to the GPU, with a value differentn * for each feature.n * @property {string} name Attribute name.n * @property {function(import("../../Feature").default, Object<string, *>):number} callback This callback computes the numerical value of then * attribute for a given feature (properties are available as 2nd arg for quicker access).n */n/**n * @typedef {Object} FeatureCacheItem Object that holds a reference to a feature, its geometry and properties. Used to optimizen * rebuildBuffers by accessing these objects quicker.n * @property {import("../../Feature").default} feature Featuren * @property {Object<string, *>} properties Feature propertiesn * @property {import("../../geom").Geometry} geometry Feature geometryn */n/**n * @typedef {Object} Optionsn * @property {Array<CustomAttribute>} [attributes] These attributes will be read from the features in the source and thenn * passed to the GPU. The `name` property of each attribute will serve as its identifier:n * * In the vertex shader as an `attribute` by prefixing it with `a_`n * * In the fragment shader as a `varying` by prefixing it with `v_`n * Please note that these can only be numerical values.n * @property {string} vertexShader Vertex shader source, mandatory.n * @property {string} fragmentShader Fragment shader source, mandatory.n * @property {string} [hitVertexShader] Vertex shader source for hit detection rendering.n * @property {string} [hitFragmentShader] Fragment shader source for hit detection rendering.n * @property {Object.<string,import("../../webgl/Helper").UniformValue>} [uniforms] Uniform definitions for the post process stepsn * Please note that `u_texture` is reserved for the main texture slot.n * @property {Array<import("./Layer").PostProcessesOptions>} [postProcesses] Post-processes definitionsn */n/**n * @classdescn * WebGL vector renderer optimized for points.n * All features will be rendered as quads (two triangles forming a square). New data will be flushed to the GPUn * every time the vector source changes.n *n * You need to provide vertex and fragment shaders for rendering. This can be done usingn * {@link module:ol/webgl/ShaderBuilder} utilities. These shaders shall expect a `a_position` attributen * containing the screen-space projected center of the quad, as well as a `a_index` attributen * whose value (0, 1, 2 or 3) indicates which quad vertex is currently getting processed (see structure below).n *n * To include variable attributes in the shaders, you need to declare them using the `attributes` property ofn * the options object like so:n * “`jsn * new WebGLPointsLayerRenderer(layer, {n * attributes: [n * {n * name: 'size',n * callback: function(feature) {n * // compute something with the featuren * }n * },n * {n * name: 'weight',n * callback: function(feature) {n * // compute something with the featuren * }n * },n * ],n * vertexShader:n * // shader using attribute a_weight and a_sizen * fragmentShader:n * // shader using varying v_weight and v_sizen * “`n *n * To enable hit detection, you must as well provide dedicated shaders using the `hitVertexShader`n * and `hitFragmentShader` properties. These shall expect the `a_hitColor` attribute to containn * the final color that will have to be output for hit detection to work.n *n * The following uniform is used for the main texture: `u_texture`.n *n * Please note that the main shader output should have premultiplied alpha, otherwise visual anomalies may occur.n *n * Points are rendered as quads with the following structure:n *n * “`n * (u0, v1) (u1, v1)n * [3]———-n * |` |n * | ` |n * | ` |n * | ` |n * | ` |n * | ` |n * [0]———-n * (u0, v0) (u1, v0)n * “`n *n * This uses {@link module:ol/webgl/Helper~WebGLHelper} internally.n *n * @apin */nvar WebGLPointsLayerRenderer = /** @class */ (function (_super) {n __extends(WebGLPointsLayerRenderer, _super);n /**n * @param {import("../../layer/Layer.js").default} layer Layer.n * @param {Options} options Options.n */n function WebGLPointsLayerRenderer(layer, options) {n var _this = this;n var uniforms = options.uniforms || {};n var projectionMatrixTransform = createTransform();n uniforms = projectionMatrixTransform;n _this = _super.call(this, layer, {n uniforms: uniforms,n postProcesses: options.postProcessesn }) || this;n this.sourceRevision = -1;n this.verticesBuffer = new WebGLArrayBuffer(ARRAY_BUFFER, DYNAMIC_DRAW);n this.hitVerticesBuffer = new WebGLArrayBuffer(ARRAY_BUFFER, DYNAMIC_DRAW);n this.indicesBuffer = new WebGLArrayBuffer(ELEMENT_ARRAY_BUFFER, DYNAMIC_DRAW);n this.program = _this.helper.getProgram(options.fragmentShader, options.vertexShader);n if (_this.getShaderCompileErrors()) {n throw new Error(_this.getShaderCompileErrors());n }n /**n * @type {boolean}n * @privaten */n this.hitDetectionEnabled = options.hitFragmentShader && options.hitVertexShader ? true : false;n this.hitProgram = this.hitDetectionEnabled && _this.helper.getProgram(options.hitFragmentShader, options.hitVertexShader);n if (_this.getShaderCompileErrors()) {n throw new Error(_this.getShaderCompileErrors());n }n var customAttributes = options.attributes ?n options.attributes.map(function (attribute) {n return {n name: 'a_' + attribute.name,n size: 1,n type: AttributeType.FLOATn };n }) : [];n /**n * A list of attributes used by the renderer. By default only the position andn * index of the vertex (0 to 3) are required.n * @type {Array<import('../../webgl/Helper.js').AttributeDescription>}n */n _this.attributes = [{n name: 'a_position',n size: 2,n type: AttributeType.FLOATn }, {n name: 'a_index',n size: 1,n type: AttributeType.FLOATn }].concat(customAttributes);n /**n * A list of attributes used for hit detection.n * @type {Array<import('../../webgl/Helper.js').AttributeDescription>}n */n _this.hitDetectionAttributes = [{n name: 'a_position',n size: 2,n type: AttributeType.FLOATn }, {n name: 'a_index',n size: 1,n type: AttributeType.FLOATn }, {n name: 'a_hitColor',n size: 4,n type: AttributeType.FLOATn }, {n name: 'a_featureUid',n size: 1,n type: AttributeType.FLOATn }].concat(customAttributes);n _this.customAttributes = options.attributes ? options.attributes : [];n this.previousExtent = createEmpty();n /**n * This transform is updated on every frame and is the composition of:n * - invert of the world->screen transform that was used when rebuilding buffers (see `this.renderTransform_`)n * - current world->screen transformn * @type {import("../../transform.js").Transform}n * @privaten */n this.currentTransform = projectionMatrixTransform;n /**n * This transform is updated when buffers are rebuilt and converts world space coordinates to screen spacen * @type {import("../../transform.js").Transform}n * @privaten */n this.renderTransform = createTransform();n /**n * @type {import("../../transform.js").Transform}n * @privaten */n this.invertRenderTransform = createTransform();n /**n * @type {Float32Array}n * @privaten */n this.renderInstructions = new Float32Array(0);n /**n * These instructions are used for hit detectionn * @type {Float32Array}n * @privaten */n this.hitRenderInstructions = new Float32Array(0);n /**n * @type {WebGLRenderTarget}n * @privaten */n this.hitRenderTarget = this.hitDetectionEnabled && new WebGLRenderTarget(_this.helper);n this.worker = createWebGLWorker();n this.worker.addEventListener('message', function (event) {n var received = event.data;n if (received.type === WebGLWorkerMessageType.GENERATE_BUFFERS) {n var projectionTransform = received.projectionTransform;n if (received.hitDetection) {n this.hitVerticesBuffer_.fromArrayBuffer(received.vertexBuffer);n this.helper.flushBufferData(this.hitVerticesBuffer_);n }n else {n this.verticesBuffer_.fromArrayBuffer(received.vertexBuffer);n this.helper.flushBufferData(this.verticesBuffer_);n }n this.indicesBuffer_.fromArrayBuffer(received.indexBuffer);n this.helper.flushBufferData(this.indicesBuffer_);n this.renderTransform_ = projectionTransform;n makeInverseTransform(this.invertRenderTransform_, this.renderTransform_);n if (received.hitDetection) {n this.hitRenderInstructions_ = new Float32Array(event.data.renderInstructions);n }n else {n this.renderInstructions_ = new Float32Array(event.data.renderInstructions);n }n this.getLayer().changed();n }n }.bind(_this));n /**n * This object will be updated when the source changes. Key is uid.n * @type {Object<string, FeatureCacheItem>}n * @privaten */n this.featureCache = {};n /**n * Amount of features in the cache.n * @type {number}n * @privaten */n this.featureCount = 0;n var source = _this.getLayer().getSource();n this.sourceListenKeys = [n listen(source, VectorEventType.ADDFEATURE, this.handleSourceFeatureAdded, _this),n listen(source, VectorEventType.CHANGEFEATURE, this.handleSourceFeatureChanged, _this),n listen(source, VectorEventType.REMOVEFEATURE, this.handleSourceFeatureDelete, _this)n ];n source.forEachFeature(function (feature) {n this.featureCache_ = {n feature: feature,n properties: feature.getProperties(),n geometry: feature.getGeometry()n };n this.featureCount_++;n }.bind(_this));n return _this;n }n /**n * @param {import("../../source/Vector.js").VectorSourceEvent} event Event.n * @privaten */n WebGLPointsLayerRenderer.prototype.handleSourceFeatureAdded_ = function (event) {n var feature = event.feature;n this.featureCache_ = {n feature: feature,n properties: feature.getProperties(),n geometry: feature.getGeometry()n };n this.featureCount_++;n };n /**n * @param {import("../../source/Vector.js").VectorSourceEvent} event Event.n * @privaten */n WebGLPointsLayerRenderer.prototype.handleSourceFeatureChanged_ = function (event) {n var feature = event.feature;n this.featureCache_ = {n feature: feature,n properties: feature.getProperties(),n geometry: feature.getGeometry()n };n };n /**n * @param {import("../../source/Vector.js").VectorSourceEvent} event Event.n * @privaten */n WebGLPointsLayerRenderer.prototype.handleSourceFeatureDelete_ = function (event) {n var feature = event.feature;n delete this.featureCache_;n this.featureCount_–;n };n /**n * @inheritDocn */n WebGLPointsLayerRenderer.prototype.renderFrame = function (frameState) {n var renderCount = this.indicesBuffer_.getSize();n this.helper.drawElements(0, renderCount);n this.helper.finalizeDraw(frameState);n var canvas = this.helper.getCanvas();n var layerState = frameState.layerStatesArray;n var opacity = layerState.opacity;n if (opacity !== parseFloat(canvas.style.opacity)) {n canvas.style.opacity = opacity;n }n if (this.hitDetectionEnabled_) {n this.renderHitDetection(frameState);n this.hitRenderTarget_.clearCachedData();n }n return canvas;n };n /**n * @inheritDocn */n WebGLPointsLayerRenderer.prototype.prepareFrame = function (frameState) {n var layer = this.getLayer();n var vectorSource = layer.getSource();n var viewState = frameState.viewState;n var viewNotMoving = !frameState.viewHints && !frameState.viewHints;n var extentChanged = !equals(this.previousExtent_, frameState.extent);n var sourceChanged = this.sourceRevision_ < vectorSource.getRevision();n if (sourceChanged) {n this.sourceRevision_ = vectorSource.getRevision();n }n if (viewNotMoving && (extentChanged || sourceChanged)) {n var projection = viewState.projection;n var resolution = viewState.resolution;n var renderBuffer = layer instanceof BaseVector ? layer.getRenderBuffer() : 0;n var extent = buffer(frameState.extent, renderBuffer * resolution);n vectorSource.loadFeatures(extent, resolution, projection);n this.rebuildBuffers_(frameState);n this.previousExtent_ = frameState.extent.slice();n }n // apply the current projection transform with the invert of the one used to fill buffersn this.helper.makeProjectionTransform(frameState, this.currentTransform_);n multiplyTransform(this.currentTransform_, this.invertRenderTransform_);n this.helper.useProgram(this.program_);n this.helper.prepareDraw(frameState);n // write new datan this.helper.bindBuffer(this.verticesBuffer_);n this.helper.bindBuffer(this.indicesBuffer_);n this.helper.enableAttributes(this.attributes);n return true;n };n /**n * Rebuild internal webgl buffers based on current view extent; costly, should not be called too muchn * @param {import("../../PluggableMap").FrameState} frameState Frame state.n * @privaten */n WebGLPointsLayerRenderer.prototype.rebuildBuffers_ = function (frameState) {n // saves the projection transform for the current frame staten var projectionTransform = createTransform();n this.helper.makeProjectionTransform(frameState, projectionTransform);n // here we anticipate the amount of render instructions that we well generaten // this can be done since we know that for normal render we only have x, y as base instructions,n // and x, y, r, g, b, a and featureUid for hit render instructionsn // and we also know the amount of custom attributes to append to thesen var totalInstructionsCount = (2 + this.customAttributes.length) * this.featureCount_;n if (!this.renderInstructions_ || this.renderInstructions_.length !== totalInstructionsCount) {n this.renderInstructions_ = new Float32Array(totalInstructionsCount);n }n if (this.hitDetectionEnabled_) {n var totalHitInstructionsCount = (7 + this.customAttributes.length) * this.featureCount_;n if (!this.hitRenderInstructions_ || this.hitRenderInstructions_.length !== totalHitInstructionsCount) {n this.hitRenderInstructions_ = new Float32Array(totalHitInstructionsCount);n }n }n // loop on features to fill the buffern var featureCache, geometry;n var tmpCoords = [];n var tmpColor = [];n var renderIndex = 0;n var hitIndex = 0;n var hitColor;n for (var featureUid in this.featureCache_) {n featureCache = this.featureCache_;n geometry = /** @type {import("../../geom").Point} */ (featureCache.geometry);n if (!geometry || geometry.getType() !== GeometryType.POINT) {n continue;n }n tmpCoords = geometry.getFlatCoordinates();n tmpCoords = geometry.getFlatCoordinates();n applyTransform(projectionTransform, tmpCoords);n hitColor = colorEncodeId(hitIndex + 6, tmpColor);n this.renderInstructions_ = tmpCoords;n this.renderInstructions_ = tmpCoords;n // for hit detection, the feature uid is saved in the opacity valuen // and the index of the opacity value is encoded in the color valuesn if (this.hitDetectionEnabled_) {n this.hitRenderInstructions_ = tmpCoords;n this.hitRenderInstructions_ = tmpCoords;n this.hitRenderInstructions_ = hitColor;n this.hitRenderInstructions_ = hitColor;n this.hitRenderInstructions_ = hitColor;n this.hitRenderInstructions_ = hitColor;n this.hitRenderInstructions_ = Number(featureUid);n }n // pushing custom attributesn var value = void 0;n for (var j = 0; j < this.customAttributes.length; j++) {n value = this.customAttributes.callback(featureCache.feature, featureCache.properties);n this.renderInstructions_ = value;n if (this.hitDetectionEnabled_) {n this.hitRenderInstructions_ = value;n }n }n }n /** @type {import('./Layer').WebGLWorkerGenerateBuffersMessage} */n var message = {n type: WebGLWorkerMessageType.GENERATE_BUFFERS,n renderInstructions: this.renderInstructions_.buffer,n customAttributesCount: this.customAttributes.lengthn };n // additional properties will be sent back as-is by the workern message = projectionTransform;n this.worker_.postMessage(message, [this.renderInstructions_.buffer]);n this.renderInstructions_ = null;n /** @type {import('./Layer').WebGLWorkerGenerateBuffersMessage} */n if (this.hitDetectionEnabled_) {n var hitMessage = {n type: WebGLWorkerMessageType.GENERATE_BUFFERS,n renderInstructions: this.hitRenderInstructions_.buffer,n customAttributesCount: 5 + this.customAttributes.lengthn };n hitMessage = projectionTransform;n hitMessage = true;n this.worker_.postMessage(hitMessage, [this.hitRenderInstructions_.buffer]);n this.hitRenderInstructions_ = null;n }n };n /**n * @inheritDocn */n WebGLPointsLayerRenderer.prototype.forEachFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, callback, declutteredFeatures) {n assert(this.hitDetectionEnabled_, 66);n if (!this.hitRenderInstructions_) {n return;n }n var pixel = applyTransform(frameState.coordinateToPixelTransform, coordinate.slice());n var data = this.hitRenderTarget_.readPixel(pixel / 2, pixel / 2);n var color = [n data / 255,n data / 255,n data / 255,n data / 255n ];n var index = colorDecodeId(color);n var opacity = this.hitRenderInstructions_;n var uid = Math.floor(opacity).toString();n var source = this.getLayer().getSource();n var feature = source.getFeatureByUid(uid);n if (feature) {n return callback(feature, this.getLayer());n }n };n /**n * Render the hit detection data to the corresponding render targetn * @param {import("../../PluggableMap.js").FrameState} frameState current frame staten */n WebGLPointsLayerRenderer.prototype.renderHitDetection = function (frameState) {n // skip render entirely if vertex buffers not ready/generated yetn if (!this.hitVerticesBuffer_.getSize()) {n return;n }n this.hitRenderTarget_.setSize([n Math.floor(frameState.size / 2),n Math.floor(frameState.size / 2)n ]);n this.helper.useProgram(this.hitProgram_);n this.helper.prepareDrawToRenderTarget(frameState, this.hitRenderTarget_, true);n this.helper.bindBuffer(this.hitVerticesBuffer_);n this.helper.bindBuffer(this.indicesBuffer_);n this.helper.enableAttributes(this.hitDetectionAttributes);n var renderCount = this.indicesBuffer_.getSize();n this.helper.drawElements(0, renderCount);n };n /**n * @inheritDocn */n WebGLPointsLayerRenderer.prototype.disposeInternal = function () {n this.worker_.terminate();n this.layer_ = null;n this.sourceListenKeys_.forEach(function (key) {n unlistenByKey(key);n });n this.sourceListenKeys_ = null;n _super.prototype.disposeInternal.call(this);n };n return WebGLPointsLayerRenderer;n}(WebGLLayerRenderer));nexport default WebGLPointsLayerRenderer;n//# sourceMappingURL=PointsLayer.js.map”,“/**n * @module ol/render/canvas/Instructionn */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: 12n};n/**n * @type {Array<Instruction>}n */nexport var fillInstruction = [Instruction.FILL];n/**n * @type {Array<Instruction>}n */nexport var strokeInstruction = [Instruction.STROKE];n/**n * @type {Array<Instruction>}n */nexport var beginPathInstruction = [Instruction.BEGIN_PATH];n/**n * @type {Array<Instruction>}n */nexport var closePathInstruction = [Instruction.CLOSE_PATH];nexport default Instruction;n//# sourceMappingURL=Instruction.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/render/canvas/Buildern */nimport { equals, reverseSubArray } from '../../array.js';nimport { asColorLike } from '../../colorlike.js';nimport { buffer, clone, coordinateRelationship } from '../../extent.js';nimport Relationship from '../../extent/Relationship.js';nimport GeometryType from '../../geom/GeometryType.js';nimport { inflateCoordinates, inflateCoordinatesArray, inflateMultiCoordinatesArray } from '../../geom/flat/inflate.js';nimport VectorContext from '../VectorContext.js';nimport { defaultFillStyle, defaultStrokeStyle, defaultMiterLimit, defaultLineWidth, defaultLineJoin, defaultLineDashOffset, defaultLineDash, defaultLineCap } from '../canvas.js';nimport CanvasInstruction from './Instruction.js';n/**n * @typedef {Object} SerializableInstructionsn * @property {Array<*>} instructions The rendering instructions.n * @property {Array<*>} hitDetectionInstructions The rendering hit detection instructions.n * @property {Array<number>} coordinates The array of all coordinates.n * @property {!Object<string, import("../canvas.js").TextState>} [textStates] The text states (decluttering).n * @property {!Object<string, import("../canvas.js").FillState>} [fillStates] The fill states (decluttering).n * @property {!Object<string, import("../canvas.js").StrokeState>} [strokeStates] The stroke states (decluttering).n */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 * @protectedn * @type {number}n */n _this.tolerance = tolerance;n /**n * @protectedn * @constn * @type {import("../../extent.js").Extent}n */n _this.maxExtent = maxExtent;n /**n * @protectedn * @type {number}n */n _this.pixelRatio = pixelRatio;n /**n * @protectedn * @type {number}n */n _this.maxLineWidth = 0;n /**n * @protectedn * @constn * @type {number}n */n _this.resolution = resolution;n /**n * @privaten * @type {Array<*>}n */n this.beginGeometryInstruction1 = null;n /**n * @privaten * @type {Array<*>}n */n this.beginGeometryInstruction2 = null;n /**n * @privaten * @type {import("../../extent.js").Extent}n */n this.bufferedMaxExtent = null;n /**n * @protectedn * @type {Array<*>}n */n _this.instructions = [];n /**n * @protectedn * @type {Array<number>}n */n _this.coordinates = [];n /**n * @privaten * @type {import("../../coordinate.js").Coordinate}n */n this.tmpCoordinate = [];n /**n * @protectedn * @type {Array<*>}n */n _this.hitDetectionInstructions = [];n /**n * @protectedn * @type {import("../canvas.js").FillStrokeState}n */n _this.state = /** @type {import("../canvas.js").FillStrokeState} */ ({});n return _this;n }n /**n * @protectedn * @param {Array<number>} dashArray Dash array.n * @return {Array<number>} Dash array with pixel ratio appliedn */n CanvasBuilder.prototype.applyPixelRatio = function (dashArray) {n var pixelRatio = this.pixelRatio;n return pixelRatio == 1 ? dashArray : dashArray.map(function (dash) {n return dash * pixelRatio;n });n };n /**n * @param {Array<number>} 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 * @protectedn * @return {number} My end.n */n CanvasBuilder.prototype.appendFlatCoordinates = function (flatCoordinates, offset, end, stride, closed, skipFirst) {n var myEnd = this.coordinates.length;n var extent = this.getBufferedMaxExtent();n if (skipFirst) {n offset += stride;n }n var lastXCoord = flatCoordinates;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 = flatCoordinates;n nextCoord = flatCoordinates[i + 1];n nextRel = coordinateRelationship(extent, nextCoord);n if (nextRel !== lastRel) {n if (skipped) {n this.coordinates = lastXCoord;n this.coordinates = lastYCoord;n }n this.coordinates = nextCoord;n this.coordinates = nextCoord;n skipped = false;n }n else if (nextRel === Relationship.INTERSECTING) {n this.coordinates = nextCoord;n this.coordinates = nextCoord;n skipped = false;n }n else {n skipped = true;n }n lastXCoord = nextCoord;n lastYCoord = nextCoord;n lastRel = nextRel;n }n // Last coordinate equals first or only one point to append:n if ((closed && skipped) || i === offset + stride) {n this.coordinates = lastXCoord;n this.coordinates = lastYCoord;n }n return myEnd;n };n /**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<number>} ends Ends.n * @param {number} stride Stride.n * @param {Array<number>} 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;n var builderEnd = this.appendFlatCoordinates(flatCoordinates, offset, end, stride, false, false);n builderEnds.push(builderEnd);n offset = end;n }n return offset;n };n /**n * @inheritDoc.n */n CanvasBuilder.prototype.drawCustom = function (geometry, feature, renderer) {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 if (type == GeometryType.MULTI_POLYGON) {n geometry = /** @type {import("../../geom/MultiPolygon.js").default} */ (geometry);n flatCoordinates = geometry.getOrientedFlatCoordinates();n builderEndss = [];n var endss = 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, stride, myEnds);n builderEndss.push(myEnds);n }n this.instructions.push([CanvasInstruction.CUSTOM,n builderBegin, builderEndss, geometry, renderer, inflateMultiCoordinatesArray]);n }n else if (type == GeometryType.POLYGON || type == GeometryType.MULTI_LINE_STRING) {n builderEnds = [];n flatCoordinates = (type == GeometryType.POLYGON) ?n /** @type {import("../../geom/Polygon.js").default} */ (geometry).getOrientedFlatCoordinates() :n geometry.getFlatCoordinates();n offset = this.drawCustomCoordinates_(flatCoordinates, 0, n /** @type {import("../../geom/Polygon.js").default|import("../../geom/MultiLineString.js").default} */ (geometry).getEnds(), stride, builderEnds);n this.instructions.push([CanvasInstruction.CUSTOM,n builderBegin, builderEnds, geometry, renderer, inflateCoordinatesArray]);n }n else if (type == GeometryType.LINE_STRING || type == GeometryType.MULTI_POINT) {n flatCoordinates = geometry.getFlatCoordinates();n builderEnd = this.appendFlatCoordinates(flatCoordinates, 0, flatCoordinates.length, stride, false, false);n this.instructions.push([CanvasInstruction.CUSTOM,n builderBegin, builderEnd, geometry, renderer, inflateCoordinates]);n }n else if (type == GeometryType.POINT) {n flatCoordinates = geometry.getFlatCoordinates();n this.coordinates.push(flatCoordinates, flatCoordinates);n builderEnd = this.coordinates.length;n this.instructions.push([CanvasInstruction.CUSTOM,n builderBegin, builderEnd, geometry, renderer]);n }n this.endGeometry(feature);n };n /**n * @protectedn * @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 var extent = geometry.getExtent();n this.beginGeometryInstruction1_ = [CanvasInstruction.BEGIN_GEOMETRY, feature, 0, extent];n this.instructions.push(this.beginGeometryInstruction1_);n this.beginGeometryInstruction2_ = [CanvasInstruction.BEGIN_GEOMETRY, feature, 0, extent];n this.hitDetectionInstructions.push(this.beginGeometryInstruction2_);n };n /**n * @return {SerializableInstructions} the serializable instructions.n */n CanvasBuilder.prototype.finish = function () {n return {n instructions: this.instructions,n hitDetectionInstructions: this.hitDetectionInstructions,n coordinates: this.coordinatesn };n };n /**n * Reverse the hit detection instructions.n */n CanvasBuilder.prototype.reverseHitDetectionInstructions = function () {n var hitDetectionInstructions = this.hitDetectionInstructions;n // step 1 - reverse arrayn hitDetectionInstructions.reverse();n // step 2 - reverse instructions within geometry blocksn 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;n type = /** @type {CanvasInstruction} */ (instruction);n if (type == CanvasInstruction.END_GEOMETRY) {n begin = i;n }n else if (type == CanvasInstruction.BEGIN_GEOMETRY) {n instruction = i;n reverseSubArray(this.hitDetectionInstructions, begin, i);n begin = -1;n }n }n };n /**n * @inheritDocn */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 ?n fillStyleColor : defaultFillStyle);n }n else {n state.fillStyle = undefined;n }n if (strokeStyle) {n var strokeStyleColor = strokeStyle.getColor();n state.strokeStyle = asColorLike(strokeStyleColor ?n strokeStyleColor : defaultStrokeStyle);n var strokeStyleLineCap = strokeStyle.getLineCap();n state.lineCap = strokeStyleLineCap !== undefined ?n strokeStyleLineCap : defaultLineCap;n var strokeStyleLineDash = strokeStyle.getLineDash();n state.lineDash = strokeStyleLineDash ?n strokeStyleLineDash.slice() : defaultLineDash;n var strokeStyleLineDashOffset = strokeStyle.getLineDashOffset();n state.lineDashOffset = strokeStyleLineDashOffset ?n strokeStyleLineDashOffset : defaultLineDashOffset;n var strokeStyleLineJoin = strokeStyle.getLineJoin();n state.lineJoin = strokeStyleLineJoin !== undefined ?n strokeStyleLineJoin : defaultLineJoin;n var strokeStyleWidth = strokeStyle.getWidth();n state.lineWidth = strokeStyleWidth !== undefined ?n strokeStyleWidth : defaultLineWidth;n var strokeStyleMiterLimit = strokeStyle.getMiterLimit();n state.miterLimit = strokeStyleMiterLimit !== undefined ?n strokeStyleMiterLimit : defaultMiterLimit;n if (state.lineWidth > this.maxLineWidth) {n this.maxLineWidth = state.lineWidth;n // invalidate the buffered max extent cachen 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, state.lineWidth * this.pixelRatio, state.lineCap,n state.lineJoin, state.miterLimit,n this.applyPixelRatio(state.lineDash), state.lineDashOffset * this.pixelRation ];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 && !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_ = this.instructions.length;n this.beginGeometryInstruction1_ = null;n this.beginGeometryInstruction2_ = 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 extentn * provided to the constructor. To account for symbolizers that may intersectn * this extent, we calculate a buffered extent (e.g. based on stroke width).n * @return {import("../../extent.js").Extent} The buffered rendering extent.n * @protectedn */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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/render/canvas/ImageBuildern */nimport CanvasInstruction from './Instruction.js';nimport CanvasBuilder from './Builder.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 * @privaten * @type {import("../canvas.js").DeclutterGroups}n */n this.declutterGroups = null;n /**n * @privaten * @type {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement}n */n this.hitDetectionImage = null;n /**n * @privaten * @type {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement}n */n this.image = null;n /**n * @privaten * @type {number|undefined}n */n this.anchorX = undefined;n /**n * @privaten * @type {number|undefined}n */n this.anchorY = undefined;n /**n * @privaten * @type {number|undefined}n */n this.height = undefined;n /**n * @privaten * @type {number|undefined}n */n this.opacity = undefined;n /**n * @privaten * @type {number|undefined}n */n this.originX = undefined;n /**n * @privaten * @type {number|undefined}n */n this.originY = undefined;n /**n * @privaten * @type {boolean|undefined}n */n this.rotateWithView = undefined;n /**n * @privaten * @type {number|undefined}n */n this.rotation = undefined;n /**n * @privaten * @type {number|undefined}n */n this.scale = undefined;n /**n * @privaten * @type {number|undefined}n */n this.width = undefined;n return _this;n }n /**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @privaten * @return {number} My end.n */n CanvasImageBuilder.prototype.drawCoordinates_ = function (flatCoordinates, offset, end, stride) {n return this.appendFlatCoordinates(flatCoordinates, offset, end, stride, false, false);n };n /**n * @inheritDocn */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.drawCoordinates_(flatCoordinates, 0, flatCoordinates.length, stride);n this.instructions.push([n CanvasInstruction.DRAW_IMAGE, myBegin, myEnd, this.image_,n // Remaining arguments to DRAW_IMAGE are in alphabetical ordern this.anchorX_, this.anchorY_, this.declutterGroups_, this.height_, this.opacity_,n this.originX_, this.originY_, this.rotateWithView_, this.rotation_,n this.scale_ * this.pixelRatio, this.width_n ]);n this.hitDetectionInstructions.push([n CanvasInstruction.DRAW_IMAGE, myBegin, myEnd, this.hitDetectionImage_,n // Remaining arguments to DRAW_IMAGE are in alphabetical ordern this.anchorX_, this.anchorY_, this.declutterGroups_, this.height_, this.opacity_,n this.originX_, this.originY_, this.rotateWithView_, this.rotation_,n this.scale_, this.width_n ]);n this.endGeometry(feature);n };n /**n * @inheritDocn */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.drawCoordinates_(flatCoordinates, 0, flatCoordinates.length, stride);n this.instructions.push([n CanvasInstruction.DRAW_IMAGE, myBegin, myEnd, this.image_,n // Remaining arguments to DRAW_IMAGE are in alphabetical ordern this.anchorX_, this.anchorY_, this.declutterGroups_, this.height_, this.opacity_,n this.originX_, this.originY_, this.rotateWithView_, this.rotation_,n this.scale_ * this.pixelRatio, this.width_n ]);n this.hitDetectionInstructions.push([n CanvasInstruction.DRAW_IMAGE, myBegin, myEnd, this.hitDetectionImage_,n // Remaining arguments to DRAW_IMAGE are in alphabetical ordern this.anchorX_, this.anchorY_, this.declutterGroups_, this.height_, this.opacity_,n this.originX_, this.originY_, this.rotateWithView_, this.rotation_,n this.scale_, this.width_n ]);n this.endGeometry(feature);n };n /**n * @inheritDocn */n CanvasImageBuilder.prototype.finish = function () {n this.reverseHitDetectionInstructions();n // FIXME this doesn't really protect us against further calls to draw*Geometryn this.anchorX_ = undefined;n this.anchorY_ = undefined;n this.hitDetectionImage_ = null;n this.image_ = null;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 * @inheritDocn */n CanvasImageBuilder.prototype.setImageStyle = function (imageStyle, declutterGroups) {n var anchor = imageStyle.getAnchor();n var size = imageStyle.getSize();n var hitDetectionImage = imageStyle.getHitDetectionImage(1);n var image = imageStyle.getImage(1);n var origin = imageStyle.getOrigin();n this.anchorX_ = anchor;n this.anchorY_ = anchor;n this.declutterGroups_ = /** @type {import("../canvas.js").DeclutterGroups} */ (declutterGroups);n this.hitDetectionImage_ = hitDetectionImage;n this.image_ = image;n this.height_ = size;n this.opacity_ = imageStyle.getOpacity();n this.originX_ = origin;n this.originY_ = origin;n this.rotateWithView_ = imageStyle.getRotateWithView();n this.rotation_ = imageStyle.getRotation();n this.scale_ = imageStyle.getScale();n this.width_ = size;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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/render/canvas/LineStringBuildern */nimport CanvasInstruction, { strokeInstruction, beginPathInstruction } from './Instruction.js';nimport CanvasBuilder from './Builder.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<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @privaten * @return {number} end.n */n CanvasLineStringBuilder.prototype.drawFlatCoordinates_ = function (flatCoordinates, offset, end, stride) {n var myBegin = this.coordinates.length;n var myEnd = this.appendFlatCoordinates(flatCoordinates, offset, end, stride, false, false);n var moveToLineToInstruction = [CanvasInstruction.MOVE_TO_LINE_TO, myBegin, myEnd];n this.instructions.push(moveToLineToInstruction);n this.hitDetectionInstructions.push(moveToLineToInstruction);n return end;n };n /**n * @inheritDocn */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, state.lineWidth, state.lineCap, state.lineJoin,n state.miterLimit, state.lineDash, state.lineDashOffsetn ], 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 * @inheritDocn */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, state.lineWidth, state.lineCap, state.lineJoin,n state.miterLimit, state.lineDash, state.lineDashOffsetn ], 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, ends, stride);n }n this.hitDetectionInstructions.push(strokeInstruction);n this.endGeometry(feature);n };n /**n * @inheritDocn */n CanvasLineStringBuilder.prototype.finish = function () {n var state = this.state;n if (state.lastStroke != undefined && 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 * @inheritDoc.n */n CanvasLineStringBuilder.prototype.applyStroke = function (state) {n if (state.lastStroke != undefined && 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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/render/canvas/PolygonBuildern */nimport { snap } from '../../geom/flat/simplify.js';nimport { defaultFillStyle } from '../canvas.js';nimport CanvasInstruction, { fillInstruction, strokeInstruction, beginPathInstruction, closePathInstruction } from './Instruction.js';nimport CanvasBuilder from './Builder.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<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<number>} ends Ends.n * @param {number} stride Stride.n * @privaten * @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;n var myBegin = this.coordinates.length;n var myEnd = this.appendFlatCoordinates(flatCoordinates, offset, end, stride, true, !stroke);n var moveToLineToInstruction = [CanvasInstruction.MOVE_TO_LINE_TO, myBegin, myEnd];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 appendFlatCoordinates 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 * @inheritDocn */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 defaultFillStylen ]);n }n if (state.strokeStyle !== undefined) {n this.hitDetectionInstructions.push([n CanvasInstruction.SET_STROKE_STYLE,n state.strokeStyle, state.lineWidth, state.lineCap, state.lineJoin,n state.miterLimit, state.lineDash, state.lineDashOffsetn ]);n }n var flatCoordinates = circleGeometry.getFlatCoordinates();n var stride = circleGeometry.getStride();n var myBegin = this.coordinates.length;n this.appendFlatCoordinates(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 * @inheritDocn */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 defaultFillStylen ]);n }n if (state.strokeStyle !== undefined) {n this.hitDetectionInstructions.push([n CanvasInstruction.SET_STROKE_STYLE,n state.strokeStyle, state.lineWidth, state.lineCap, state.lineJoin,n state.miterLimit, state.lineDash, state.lineDashOffsetn ]);n }n var ends = polygonGeometry.getEnds();n var flatCoordinates = polygonGeometry.getOrientedFlatCoordinates();n var stride = polygonGeometry.getStride();n this.drawFlatCoordinatess_(flatCoordinates, 0, ends, stride);n this.endGeometry(feature);n };n /**n * @inheritDocn */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 defaultFillStylen ]);n }n if (state.strokeStyle !== undefined) {n this.hitDetectionInstructions.push([n CanvasInstruction.SET_STROKE_STYLE,n state.strokeStyle, state.lineWidth, state.lineCap, state.lineJoin,n state.miterLimit, state.lineDash, state.lineDashOffsetn ]);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, stride);n }n this.endGeometry(feature);n };n /**n * @inheritDocn */n CanvasPolygonBuilder.prototype.finish = function () {n this.reverseHitDetectionInstructions();n this.state = null;n // We want to preserve topology when drawing polygons. Polygons aren // simplified using quantization and point elimination. However, we mightn // have received a mix of quantized and non-quantized geometries, so ensuren // 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 = snap(coordinates, tolerance);n }n }n return _super.prototype.finish.call(this);n };n /**n * @privaten */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/straightchunkn */n/**n * @param {number} maxAngle Maximum acceptable angle delta between segments.n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @return {Array<number>} Start and end of the first suitable chunk of then * 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;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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/render/canvas/TextBuildern */nimport { getUid } from '../../util.js';nimport { asColorLike } from '../../colorlike.js';nimport { intersects } from '../../extent.js';nimport { matchingChunk } from '../../geom/flat/straightchunk.js';nimport GeometryType from '../../geom/GeometryType.js';nimport { labelCache, defaultTextAlign, defaultPadding, defaultLineCap, defaultLineDashOffset, defaultLineDash, defaultLineJoin, defaultFillStyle, checkFont, defaultFont, defaultLineWidth, defaultMiterLimit, defaultStrokeStyle, defaultTextBaseline } from '../canvas.js';nimport CanvasInstruction from './Instruction.js';nimport CanvasBuilder from './Builder.js';nimport TextPlacement from '../../style/TextPlacement.js';n/**n * @constn * @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': 1n};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 * @privaten * @type {import("../canvas.js").DeclutterGroups}n */n this.declutterGroups;n /**n * @privaten * @type {Array<HTMLCanvasElement>}n */n this.labels = null;n /**n * @privaten * @type {string}n */n this.text = '';n /**n * @privaten * @type {number}n */n this.textOffsetX = 0;n /**n * @privaten * @type {number}n */n this.textOffsetY = 0;n /**n * @privaten * @type {boolean|undefined}n */n this.textRotateWithView = undefined;n /**n * @privaten * @type {number}n */n this.textRotation = 0;n /**n * @privaten * @type {?import("../canvas.js").FillState}n */n this.textFillState = null;n /**n * @type {!Object<string, import("../canvas.js").FillState>}n */n _this.fillStates = {};n /**n * @privaten * @type {?import("../canvas.js").StrokeState}n */n this.textStrokeState = null;n /**n * @type {!Object<string, import("../canvas.js").StrokeState>}n */n _this.strokeStates = {};n /**n * @privaten * @type {import("../canvas.js").TextState}n */n this.textState = /** @type {import("../canvas.js").TextState} */ ({});n /**n * @type {!Object<string, import("../canvas.js").TextState>}n */n _this.textStates = {};n /**n * @privaten * @type {string}n */n this.textKey = '';n /**n * @privaten * @type {string}n */n this.fillKey = '';n /**n * @privaten * @type {string}n */n this.strokeKey = '';n labelCache.prune();n return _this;n }n /**n * @inheritDocn */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 * @inheritDocn */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 begin = this.coordinates.length;n var geometryType = geometry.getType();n var flatCoordinates = null;n var end = 2;n var stride = 2;n var i, ii;n if (textState.placement === TextPlacement.LINE) {n if (!intersects(this.getBufferedMaxExtent(), geometry.getExtent())) {n return;n }n var ends = void 0;n flatCoordinates = geometry.getFlatCoordinates();n stride = geometry.getStride();n if (geometryType == GeometryType.LINE_STRING) {n ends = [flatCoordinates.length];n }n else if (geometryType == GeometryType.MULTI_LINE_STRING) {n ends = geometry.getEnds();n }n else if (geometryType == GeometryType.POLYGON) {n ends = geometry.getEnds().slice(0, 1);n }n else if (geometryType == GeometryType.MULTI_POLYGON) {n var endss = geometry.getEndss();n ends = [];n for (i = 0, ii = endss.length; i < ii; ++i) {n ends.push(endss[0]);n }n }n this.beginGeometry(geometry, feature);n var textAlign = textState.textAlign;n var flatOffset = 0;n var flatEnd = void 0;n for (var o = 0, oo = ends.length; o < oo; ++o) {n if (textAlign == undefined) {n var range = matchingChunk(textState.maxAngle, flatCoordinates, flatOffset, ends, stride);n flatOffset = range;n flatEnd = range;n }n else {n flatEnd = ends;n }n for (i = flatOffset; i < flatEnd; i += stride) {n this.coordinates.push(flatCoordinates, flatCoordinates[i + 1]);n }n end = this.coordinates.length;n flatOffset = ends;n var declutterGroup = this.declutterGroups_ ?n (o === 0 ? this.declutterGroups_ : [].concat(this.declutterGroups_)) :n null;n this.drawChars_(begin, end, declutterGroup);n begin = end;n }n this.endGeometry(feature);n }n else {n var geometryWidths = null;n if (!textState.overflow) {n geometryWidths = [];n }n switch (geometryType) {n case GeometryType.POINT:n case GeometryType.MULTI_POINT:n flatCoordinates = geometry.getFlatCoordinates();n end = flatCoordinates.length;n break;n case GeometryType.LINE_STRING:n flatCoordinates = /** @type {import("../../geom/LineString.js").default} */ (geometry).getFlatMidpoint();n break;n case GeometryType.CIRCLE:n flatCoordinates = /** @type {import("../../geom/Circle.js").default} */ (geometry).getCenter();n break;n case GeometryType.MULTI_LINE_STRING:n flatCoordinates = /** @type {import("../../geom/MultiLineString.js").default} */ (geometry).getFlatMidpoints();n end = flatCoordinates.length;n break;n case GeometryType.POLYGON:n flatCoordinates = /** @type {import("../../geom/Polygon.js").default} */ (geometry).getFlatInteriorPoint();n if (!textState.overflow) {n geometryWidths.push(flatCoordinates / this.resolution);n }n stride = 3;n break;n case GeometryType.MULTI_POLYGON:n var interiorPoints = /** @type {import("../../geom/MultiPolygon.js").default} */ (geometry).getFlatInteriorPoints();n flatCoordinates = [];n for (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, interiorPoints[i + 1]);n }n end = flatCoordinates.length;n if (end == 0) {n return;n }n break;n default:n }n end = this.appendFlatCoordinates(flatCoordinates, 0, end, stride, false, false);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 // 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 atn // render time.n var pixelRatio_1 = this.pixelRatio;n this.instructions.push([CanvasInstruction.DRAW_IMAGE, begin, end,n null, NaN, NaN, this.declutterGroups_, NaN, 1, 0, 0,n this.textRotateWithView_, this.textRotation_, 1, NaN,n textState.padding == defaultPadding ?n defaultPadding : textState.padding.map(function (p) {n return p * pixelRatio_1;n }),n !!textState.backgroundFill, !!textState.backgroundStroke,n this.text_, this.textKey_, this.strokeKey_, this.fillKey_,n this.textOffsetX_, this.textOffsetY_, geometryWidthsn ]);n this.hitDetectionInstructions.push([CanvasInstruction.DRAW_IMAGE, begin, end,n null, NaN, NaN, this.declutterGroups_, NaN, 1, 0, 0,n this.textRotateWithView_, this.textRotation_, 1 / this.pixelRatio, NaN,n textState.padding,n !!textState.backgroundFill, !!textState.backgroundStroke,n this.text_, this.textKey_, this.strokeKey_, this.fillKey_,n this.textOffsetX_, this.textOffsetY_, geometryWidthsn ]);n this.endGeometry(feature);n }n };n /**n * @privaten */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 = {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.lineDashn };n }n }n var textKey = this.textKey_;n if (!(textKey in this.textStates)) {n this.textStates = {n font: textState.font,n textAlign: textState.textAlign || defaultTextAlign,n textBaseline: textState.textBaseline || defaultTextBaseline,n scale: textState.scalen };n }n var fillKey = this.fillKey_;n if (fillState) {n if (!(fillKey in this.fillStates)) {n this.fillStates = {n fillStyle: fillState.fillStylen };n }n }n };n /**n * @privaten * @param {number} begin Begin.n * @param {number} end End.n * @param {import("../canvas.js").DeclutterGroup} declutterGroup Declutter group.n */n CanvasTextBuilder.prototype.drawChars_ = function (begin, end, declutterGroup) {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;n var offsetY = this.textOffsetY_ * pixelRatio;n var text = this.text_;n var textScale = textState.scale;n var strokeWidth = strokeState ? strokeState.lineWidth * textScale / 2 : 0;n this.instructions.push([CanvasInstruction.DRAW_CHARS,n begin, end, baseline, declutterGroup,n textState.overflow, fillKey, textState.maxAngle,n pixelRatio,n offsetY, strokeKey, strokeWidth * pixelRatio, text, textKey, 1n ]);n this.hitDetectionInstructions.push([CanvasInstruction.DRAW_CHARS,n begin, end, baseline, declutterGroup,n textState.overflow, fillKey, textState.maxAngle,n 1,n offsetY, strokeKey, strokeWidth, text, textKey, 1 / pixelRation ]);n };n /**n * @inheritDocn */n CanvasTextBuilder.prototype.setTextStyle = function (textStyle, declutterGroups) {n var textState, fillState, strokeState;n if (!textStyle) {n this.text_ = '';n }n else {n this.declutterGroups_ = /** @type {import("../canvas.js").DeclutterGroups} */ (declutterGroups);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 checkFont(font);n var textScale = textStyle.getScale();n textState.overflow = textStyle.getOverflow();n textState.font = font;n textState.maxAngle = textStyle.getMaxAngle();n textState.placement = textStyle.getPlacement();n textState.textAlign = textStyle.getTextAlign();n textState.textBaseline = 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 : 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_ = textRotateWithView === undefined ? false : textRotateWithView;n this.textRotation_ = textRotation === undefined ? 0 : textRotation;n this.strokeKey_ = strokeState ?n (typeof strokeState.strokeStyle == 'string' ? strokeState.strokeStyle : getUid(strokeState.strokeStyle)) +n strokeState.lineCap + strokeState.lineDashOffset + '|' + strokeState.lineWidth +n strokeState.lineJoin + strokeState.miterLimit + '[' + strokeState.lineDash.join() + ']' :n '';n this.textKey_ = textState.font + textState.scale + (textState.textAlign || '?');n this.fillKey_ = fillState ?n (typeof fillState.fillStyle == 'string' ? fillState.fillStyle : ('|' + getUid(fillState.fillStyle))) :n '';n }n };n return CanvasTextBuilder;n}(CanvasBuilder));nexport default CanvasTextBuilder;n//# sourceMappingURL=TextBuilder.js.map”,“/**n * @module ol/render/canvas/BuilderGroupn */nimport { createEmpty } from '../../extent.js';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<import("./BuilderType").default, typeof Builder>}n */nvar BATCH_CONSTRUCTORS = {n 'Circle': PolygonBuilder,n 'Default': Builder,n 'Image': ImageBuilder,n 'LineString': LineStringBuilder,n 'Polygon': PolygonBuilder,n 'Text': TextBuildern};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 * @param {boolean} declutter Decluttering enabled.n */n function BuilderGroup(tolerance, maxExtent, resolution, pixelRatio, declutter) {n /**n * @type {boolean}n * @privaten */n this.declutter_ = declutter;n /**n * @type {import("../canvas.js").DeclutterGroups}n * @privaten */n this.declutterGroups_ = null;n /**n * @privaten * @type {number}n */n this.tolerance_ = tolerance;n /**n * @privaten * @type {import("../../extent.js").Extent}n */n this.maxExtent_ = maxExtent;n /**n * @privaten * @type {number}n */n this.pixelRatio_ = pixelRatio;n /**n * @privaten * @type {number}n */n this.resolution_ = resolution;n /**n * @privaten * @type {!Object<string, !Object<import("./BuilderType").default, Builder>>}n */n this.buildersByZIndex_ = {};n }n /**n * @param {boolean} group Group with previous builder.n * @return {import("../canvas").DeclutterGroups} The resulting instruction groups.n */n BuilderGroup.prototype.addDeclutter = function (group) {n var declutter = null;n if (this.declutter_) {n if (group) {n declutter = this.declutterGroups_;n /** @type {number} */ (declutter[4])++;n }n else {n declutter = [createEmpty()];n this.declutterGroups_ = declutter;n declutter.push(1);n }n }n return declutter;n };n /**n * @return {!Object<string, !Object<import("./BuilderType").default, import("./Builder.js").SerializableInstructions>>} The serializable instructionsn */n BuilderGroup.prototype.finish = function () {n var builderInstructions = {};n for (var zKey in this.buildersByZIndex_) {n builderInstructions = builderInstructions || {};n var builders = this.buildersByZIndex_;n for (var builderKey in builders) {n var builderInstruction = builders.finish();n builderInstructions[builderKey] = builderInstruction;n }n }n return builderInstructions;n };n /**n * @param {number|undefined} zIndex Z index.n * @param {import("./BuilderType.js").default} builderType Replay type.n * @return {import("../VectorContext.js").default} Replay.n */n BuilderGroup.prototype.getBuilder = function (zIndex, builderType) {n var zIndexKey = zIndex !== undefined ? zIndex.toString() : '0';n var replays = this.buildersByZIndex_;n if (replays === undefined) {n replays = {};n this.buildersByZIndex_ = replays;n }n var replay = replays;n if (replay === undefined) {n var Constructor = BATCH_CONSTRUCTORS;n replay = new Constructor(this.tolerance_, this.maxExtent_, this.resolution_, this.pixelRatio_);n replays = replay;n }n return replay;n };n return BuilderGroup;n}());nexport default BuilderGroup;n//# sourceMappingURL=BuilderGroup.js.map”,“/**n * @module ol/geom/flat/lengthn */n/**n * @param {Array<number>} 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;n var y1 = flatCoordinates[offset + 1];n var length = 0;n for (var i = offset + stride; i < end; i += stride) {n var x2 = flatCoordinates;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<number>} 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;n var dy = flatCoordinates[end - stride + 1] - flatCoordinates[offset + 1];n perimeter += Math.sqrt(dx * dx + dy * dy);n return perimeter;n}n//# sourceMappingURL=length.js.map”,“/**n * @module ol/geom/flat/textpathn */nimport { lerp } from '../../math.js';n/**n * @param {Array<number>} 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<string, number>):number} measureAndCacheTextWidth Measure and cache text width.n * @param {string} font The font.n * @param {Object<string, number>} cache A cache of measured widths.n * @return {Array<Array<*>>} The result array (or null if `maxAngle` wasn * 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) {n var result = [];n // Keep text uprightn var reverse = flatCoordinates > flatCoordinates[end - stride];n var numChars = text.length;n var x1 = flatCoordinates;n var y1 = flatCoordinates[offset + 1];n offset += stride;n var x2 = flatCoordinates;n var y2 = flatCoordinates[offset + 1];n var segmentM = 0;n var segmentLength = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));n var angleChanged = false;n var index, previousAngle;n for (var i = 0; i < numChars; ++i) {n index = reverse ? numChars - i - 1 : i;n var char = text;n var charLength = scale * measureAndCacheTextWidth(font, char, cache);n var charM = startM + charLength / 2;n while (offset < end - stride && segmentM + segmentLength < charM) {n x1 = x2;n y1 = y2;n offset += stride;n x2 = flatCoordinates;n y2 = flatCoordinates[offset + 1];n segmentM += segmentLength;n segmentLength = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));n }n var segmentPos = charM - segmentM;n var angle = Math.atan2(y2 - y1, x2 - x1);n if (reverse) {n angle += angle > 0 ? -Math.PI : Math.PI;n }n if (previousAngle !== undefined) {n var delta = angle - previousAngle;n angleChanged = angleChanged || delta !== 0;n delta += (delta > Math.PI) ? -2 * Math.PI : (delta < -Math.PI) ? 2 * Math.PI : 0;n if (Math.abs(delta) > maxAngle) {n return null;n }n }n previousAngle = angle;n var interpolate = segmentPos / segmentLength;n var x = lerp(x1, x2, interpolate);n var y = lerp(y1, y2, interpolate);n result = [x, y, charLength / 2, angle, char];n startM += charLength;n }n return angleChanged ? result : [[result[0], result[1], result[2], result[3], text]];n}n//# sourceMappingURL=textpath.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/render/canvas/Executorn */nimport { equals } from '../../array.js';nimport { createEmpty, createOrUpdate, createOrUpdateEmpty, extend, intersects } from '../../extent.js';nimport { lineStringLength } from '../../geom/flat/length.js';nimport { drawTextOnPath } from '../../geom/flat/textpath.js';nimport { transform2D } from '../../geom/flat/transform.js';nimport { drawImage, defaultPadding, defaultTextBaseline } from '../canvas.js';nimport CanvasInstruction from './Instruction.js';nimport { TEXT_ALIGN } from './TextBuilder.js';nimport { create as createTransform, compose as composeTransform, apply as applyTransform, setFromArray as transformSetFromArray } from '../../transform.js';nimport { createCanvasContext2D } from '../../dom.js';nimport { labelCache, defaultTextAlign, measureTextHeight, measureAndCacheTextWidth, measureTextWidths } from '../canvas.js';nimport Disposable from '../../Disposable.js';nimport RBush from 'rbush';n/**n * @typedef {Object} SerializableInstructionsn * @property {Array<*>} instructions The rendering instructions.n * @property {Array<*>} hitDetectionInstructions The rendering hit detection instructions.n * @property {Array<number>} coordinates The array of all coordinates.n * @property {!Object<string, import("../canvas.js").TextState>} textStates The text states (decluttering).n * @property {!Object<string, import("../canvas.js").FillState>} fillStates The fill states (decluttering).n * @property {!Object<string, import("../canvas.js").StrokeState>} strokeStates The stroke states (decluttering).n */n/**n * @type {import("../../extent.js").Extent}n */nvar tmpExtent = createEmpty();n/**n * @type {!import("../../transform.js").Transform}n */nvar tmpTransform = createTransform();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 = [];nvar Executor = /** @class */ (function (_super) {n __extends(Executor, _super);n /**n * @param {number} resolution Resolution.n * @param {number} pixelRatio Pixel ratio.n * @param {boolean} overlaps The replay can have overlapping geometries.n * @param {SerializableInstructions} instructions The serializable instructionsn */n function Executor(resolution, pixelRatio, overlaps, instructions) {n var _this = _super.call(this) || this;n /**n * @protectedn * @type {boolean}n */n _this.overlaps = overlaps;n /**n * @protectedn * @type {number}n */n _this.pixelRatio = pixelRatio;n /**n * @protectedn * @constn * @type {number}n */n _this.resolution = resolution;n /**n * @privaten * @type {boolean}n */n this.alignFill;n /**n * @type {Array<*>}n */n _this.declutterItems = [];n /**n * @protectedn * @type {Array<*>}n */n _this.instructions = instructions.instructions;n /**n * @protectedn * @type {Array<number>}n */n _this.coordinates = instructions.coordinates;n /**n * @privaten * @type {!Object<number,import("../../coordinate.js").Coordinate|Array<import("../../coordinate.js").Coordinate>|Array<Array<import("../../coordinate.js").Coordinate>>>}n */n this.coordinateCache = {};n /**n * @privaten * @type {!import("../../transform.js").Transform}n */n this.renderedTransform = createTransform();n /**n * @protectedn * @type {Array<*>}n */n _this.hitDetectionInstructions = instructions.hitDetectionInstructions;n /**n * @privaten * @type {Array<number>}n */n this.pixelCoordinates = null;n /**n * @privaten * @type {number}n */n this.viewRotation = 0;n /**n * @type {!Object<string, import("../canvas.js").FillState>}n */n _this.fillStates = instructions.fillStates || {};n /**n * @type {!Object<string, import("../canvas.js").StrokeState>}n */n _this.strokeStates = instructions.strokeStates || {};n /**n * @type {!Object<string, import("../canvas.js").TextState>}n */n _this.textStates = instructions.textStates || {};n /**n * @privaten * @type {Object<string, Object<string, number>>}n */n this.widths = {};n return _this;n }n /**n * @inheritDocn */n Executor.prototype.disposeInternal = function () {n labelCache.release(this);n _super.prototype.disposeInternal.call(this);n };n /**n * @param {string} text Text.n * @param {string} textKey Text style key.n * @param {string} fillKey Fill style key.n * @param {string} strokeKey Stroke style key.n * @return {HTMLCanvasElement} Image.n */n Executor.prototype.getTextImage = function (text, textKey, fillKey, strokeKey) {n var label;n var key = strokeKey + textKey + text + fillKey + this.pixelRatio;n if (!labelCache.containsKey(key)) {n var strokeState = strokeKey ? this.strokeStates : null;n var fillState = fillKey ? this.fillStates : null;n var textState = this.textStates;n var pixelRatio = this.pixelRatio;n var scale = textState.scale * pixelRatio;n var align = TEXT_ALIGN[textState.textAlign || defaultTextAlign];n var strokeWidth = strokeKey && strokeState.lineWidth ? strokeState.lineWidth : 0;n var lines = text.split('\n');n var numLines = lines.length;n var widths = [];n var width = measureTextWidths(textState.font, lines, widths);n var lineHeight = measureTextHeight(textState.font);n var height = lineHeight * numLines;n var renderWidth = width + strokeWidth;n var context = createCanvasContext2D(n // make canvas 2 pixels wider to account for italic text width measurement errorsn Math.ceil((renderWidth + 2) * scale), Math.ceil((height + strokeWidth) * scale));n label = context.canvas;n labelCache.set(key, label);n if (scale != 1) {n context.scale(scale, scale);n }n context.font = textState.font;n if (strokeKey) {n context.strokeStyle = strokeState.strokeStyle;n context.lineWidth = strokeWidth;n context.lineCap = strokeState.lineCap;n context.lineJoin = strokeState.lineJoin;n context.miterLimit = strokeState.miterLimit;n if (context.setLineDash && strokeState.lineDash.length) {n context.setLineDash(strokeState.lineDash);n context.lineDashOffset = strokeState.lineDashOffset;n }n }n if (fillKey) {n context.fillStyle = fillState.fillStyle;n }n context.textBaseline = 'middle';n context.textAlign = 'center';n var leftRight = (0.5 - align);n var x = align * renderWidth + leftRight * strokeWidth;n var i = void 0;n if (strokeKey) {n for (i = 0; i < numLines; ++i) {n context.strokeText(lines, x + leftRight * widths, 0.5 * (strokeWidth + lineHeight) + i * lineHeight);n }n }n if (fillKey) {n for (i = 0; i < numLines; ++i) {n context.fillText(lines, x + leftRight * widths, 0.5 * (strokeWidth + lineHeight) + i * lineHeight);n }n }n }n return labelCache.get(key, this);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);n this.fill_(context);n }n if (strokeInstruction) {n this.setStrokeStyle_(context, /** @type {Array<*>} */ (strokeInstruction));n context.stroke();n }n };n /**n * @param {CanvasRenderingContext2D} context Context.n * @param {number} x X.n * @param {number} y Y.n * @param {HTMLImageElement|HTMLCanvasElement|HTMLVideoElement} image Image.n * @param {number} anchorX Anchor X.n * @param {number} anchorY Anchor Y.n * @param {import("../canvas.js").DeclutterGroup} declutterGroup Declutter group.n * @param {number} height Height.n * @param {number} opacity Opacity.n * @param {number} originX Origin X.n * @param {number} originY Origin Y.n * @param {number} rotation Rotation.n * @param {number} scale Scale.n * @param {boolean} snapToPixel Snap to pixel.n * @param {number} width Width.n * @param {Array<number>} padding Padding.n * @param {Array<*>} fillInstruction Fill instruction.n * @param {Array<*>} strokeInstruction Stroke instruction.n */n Executor.prototype.replayImage_ = function (context, x, y, image, anchorX, anchorY, declutterGroup, height, opacity, originX, originY, rotation, scale, snapToPixel, width, padding, fillInstruction, strokeInstruction) {n var fillStroke = fillInstruction || strokeInstruction;n anchorX *= scale;n anchorY *= scale;n x -= anchorX;n y -= anchorY;n var w = (width + originX > image.width) ? image.width - originX : width;n var h = (height + originY > image.height) ? image.height - originY : height;n var boxW = padding + w * scale + padding;n var boxH = padding + h * scale + padding;n var boxX = x - padding;n var boxY = y - padding;n if (fillStroke || rotation !== 0) {n p1 = boxX;n p4 = boxX;n p1 = boxY;n p2 = boxY;n p2 = boxX + boxW;n p3 = p2;n p3 = boxY + boxH;n p4 = p3;n }n var transform = null;n if (rotation !== 0) {n var centerX = x + anchorX;n var centerY = y + anchorY;n transform = composeTransform(tmpTransform, centerX, centerY, 1, 1, rotation, -centerX, -centerY);n applyTransform(tmpTransform, p1);n applyTransform(tmpTransform, p2);n applyTransform(tmpTransform, p3);n applyTransform(tmpTransform, p4);n createOrUpdate(Math.min(p1, p2, p3, p4), Math.min(p1, p2, p3, p4), Math.max(p1, p2, p3, p4), Math.max(p1, p2, p3, p4), tmpExtent);n }n else {n createOrUpdate(boxX, boxY, boxX + boxW, boxY + boxH, tmpExtent);n }n var canvas = context.canvas;n var strokePadding = strokeInstruction ? (strokeInstruction * scale / 2) : 0;n var intersects = tmpExtent - strokePadding <= canvas.width && tmpExtent + strokePadding >= 0 &&n tmpExtent - strokePadding <= canvas.height && tmpExtent + strokePadding >= 0;n if (snapToPixel) {n x = Math.round(x);n y = Math.round(y);n }n if (declutterGroup) {n if (!intersects && declutterGroup == 1) {n return;n }n extend(declutterGroup, tmpExtent);n var declutterArgs = intersects ?n [context, transform ? transform.slice(0) : null, opacity, image, originX, originY, w, h, x, y, scale] :n null;n if (declutterArgs) {n if (fillStroke) {n declutterArgs.push(fillInstruction, strokeInstruction, p1, p2, p3, p4);n }n declutterGroup.push(declutterArgs);n }n }n else if (intersects) {n if (fillStroke) {n this.replayTextBackground_(context, p1, p2, p3, p4, n /** @type {Array<*>} */ (fillInstruction), n /** @type {Array<*>} */ (strokeInstruction));n }n drawImage(context, transform, opacity, image, originX, originY, w, h, x, y, scale);n }n };n /**n * @privaten * @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 % repeatSize, origin_1 % repeatSize);n context.rotate(this.viewRotation_);n }n context.fill();n if (this.alignFill_) {n context.restore();n }n };n /**n * @privaten * @param {CanvasRenderingContext2D} context Context.n * @param {Array<*>} instruction Instruction.n */n Executor.prototype.setStrokeStyle_ = function (context, instruction) {n context.strokeStyle = /** @type {import("../../colorlike.js").ColorLike} */ (instruction);n context.lineWidth = /** @type {number} */ (instruction);n context.lineCap = /** @type {CanvasLineCap} */ (instruction);n context.lineJoin = /** @type {CanvasLineJoin} */ (instruction);n context.miterLimit = /** @type {number} */ (instruction);n if (context.setLineDash) {n context.lineDashOffset = /** @type {number} */ (instruction);n context.setLineDash(/** @type {Array<number>} */ (instruction));n }n };n /**n * @param {import("../canvas.js").DeclutterGroup} declutterGroup Declutter group.n * @param {import("../../Feature.js").FeatureLike} feature Feature.n * @param {number} opacity Layer opacity.n * @param {?} declutterTree Declutter tree.n * @return {?} Declutter tree.n */n Executor.prototype.renderDeclutter = function (declutterGroup, feature, opacity, declutterTree) {n if (declutterGroup && declutterGroup.length > 5) {n var groupCount = declutterGroup;n if (groupCount == 1 || groupCount == declutterGroup.length - 5) {n /** @type {import("../../structs/RBush.js").Entry} */n var box = {n minX: /** @type {number} */ (declutterGroup),n minY: /** @type {number} */ (declutterGroup),n maxX: /** @type {number} */ (declutterGroup),n maxY: /** @type {number} */ (declutterGroup),n value: featuren };n if (!declutterTree) {n declutterTree = new RBush(9);n }n if (!declutterTree.collides(box)) {n declutterTree.insert(box);n for (var j = 5, jj = declutterGroup.length; j < jj; ++j) {n var declutterData = /** @type {Array} */ (declutterGroup);n var context = declutterData;n var currentAlpha = context.globalAlpha;n if (currentAlpha !== opacity) {n context.globalAlpha = opacity;n }n if (declutterData.length > 11) {n this.replayTextBackground_(declutterData, declutterData, declutterData, declutterData, declutterData, declutterData, declutterData);n }n drawImage.apply(undefined, declutterData);n if (currentAlpha !== opacity) {n context.globalAlpha = currentAlpha;n }n }n }n declutterGroup.length = 5;n createOrUpdateEmpty(declutterGroup);n }n }n return declutterTree;n };n /**n * @privaten * @param {string} text The text to draw.n * @param {string} textKey The key of the text state.n * @param {string} strokeKey The key for the stroke state.n * @param {string} fillKey The key for the fill state.n * @return {{label: HTMLCanvasElement, anchorX: number, anchorY: number}} The text image and its anchor.n */n Executor.prototype.drawTextImageWithPointPlacement_ = function (text, textKey, strokeKey, fillKey) {n var textState = this.textStates;n var label = this.getTextImage(text, textKey, fillKey, strokeKey);n var strokeState = this.strokeStates;n var pixelRatio = this.pixelRatio;n var align = TEXT_ALIGN[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 getTextImage() for the anchorn var width = label.width / pixelRatio - 2 * textState.scale;n var anchorX = align * width + 2 * (0.5 - align) * strokeWidth;n var anchorY = baseline * label.height / pixelRatio + 2 * (0.5 - baseline) * strokeWidth;n return {n label: label,n anchorX: anchorX,n anchorY: anchorYn };n };n /**n * @privaten * @param {CanvasRenderingContext2D} context 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 {function(import("../../Feature.js").FeatureLike): T|undefined} featureCallback Feature callback.n * @param {import("../../extent.js").Extent=} opt_hitExtent Only check features that intersect thisn * extent.n * @return {T|undefined} Callback result.n * @template Tn */n Executor.prototype.execute_ = function (context, transform, instructions, snapToPixel, featureCallback, opt_hitExtent) {n this.declutterItems.length = 0;n /** @type {Array<number>} */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 indexn var ii = instructions.length; // end of instructionsn var d = 0; // data indexn var dd; // end of per-instruction datan var anchorX, anchorY, prevX, prevY, roundX, roundY, declutterGroup, declutterGroups, image, text, textKey;n var 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, transform) * 1e12) / 1e12;n var state = /** @type {import("../../render.js").State} */ ({n context: context,n pixelRatio: this.pixelRatio,n resolution: this.resolution,n rotation: viewRotationn });n // When the batch size gets too big, performance decreases. 200 is a goodn // 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;n while (i < ii) {n var instruction = instructions;n var type = /** @type {CanvasInstruction} */ (instruction);n switch (type) {n case CanvasInstruction.BEGIN_GEOMETRY:n feature = /** @type {import("../../Feature.js").FeatureLike} */ (instruction);n if (!feature.getGeometry()) {n i = /** @type {number} */ (instruction);n }n else if (opt_hitExtent !== undefined && !intersects(opt_hitExtent, instruction)) {n i = /** @type {number} */ (instruction) + 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);n var x1 = pixelCoordinates;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);n dd = instruction;n var geometry = /** @type {import("../../geom/SimpleGeometry.js").default} */ (instruction);n var renderer = instruction;n var fn = instruction.length == 6 ? instruction : undefined;n state.geometry = geometry;n state.feature = feature;n if (!(i in coordinateCache)) {n coordinateCache = [];n }n var coords = coordinateCache;n if (fn) {n fn(pixelCoordinates, d, dd, 2, coords);n }n else {n coords = pixelCoordinates;n coords = 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);n dd = /** @type {number} */ (instruction);n image = /** @type {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement} */ (instruction);n // Remaining arguments in DRAW_IMAGE are in alphabetical ordern anchorX = /** @type {number} */ (instruction);n anchorY = /** @type {number} */ (instruction);n declutterGroups = featureCallback ? null : instruction;n var height = /** @type {number} */ (instruction);n var opacity = /** @type {number} */ (instruction);n var originX = /** @type {number} */ (instruction);n var originY = /** @type {number} */ (instruction);n var rotateWithView = /** @type {boolean} */ (instruction);n var rotation = /** @type {number} */ (instruction);n var scale = /** @type {number} */ (instruction);n var width = /** @type {number} */ (instruction);n if (!image && instruction.length >= 19) {n // create label imagesn text = /** @type {string} */ (instruction);n textKey = /** @type {string} */ (instruction);n strokeKey = /** @type {string} */ (instruction);n fillKey = /** @type {string} */ (instruction);n var labelWithAnchor = this.drawTextImageWithPointPlacement_(text, textKey, strokeKey, fillKey);n image = labelWithAnchor.label;n instruction = image;n var textOffsetX = /** @type {number} */ (instruction);n anchorX = (labelWithAnchor.anchorX - textOffsetX) * this.pixelRatio;n instruction = anchorX;n var textOffsetY = /** @type {number} */ (instruction);n anchorY = (labelWithAnchor.anchorY - textOffsetY) * this.pixelRatio;n instruction = anchorY;n height = image.height;n instruction = height;n width = image.width;n instruction = width;n }n var geometryWidths = void 0;n if (instruction.length > 24) {n geometryWidths = /** @type {number} */ (instruction);n }n var padding = void 0, backgroundFill = void 0, backgroundStroke = void 0;n if (instruction.length > 16) {n padding = /** @type {Array<number>} */ (instruction);n backgroundFill = /** @type {boolean} */ (instruction);n backgroundStroke = /** @type {boolean} */ (instruction);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 var declutterGroupIndex = 0;n for (; d < dd; d += 2) {n if (geometryWidths && geometryWidths < width / this.pixelRatio) {n continue;n }n if (declutterGroups) {n var index = Math.floor(declutterGroupIndex);n if (declutterGroups.length < index + 1) {n declutterGroup = createEmpty();n declutterGroup.push(declutterGroups[4]);n declutterGroups.push(declutterGroup);n }n declutterGroup = declutterGroups;n }n this.replayImage_(context, pixelCoordinates, pixelCoordinates[d + 1], image, anchorX, anchorY, declutterGroup, height, opacity, originX, originY, rotation, scale, snapToPixel, width, padding, backgroundFill ? /** @type {Array<*>} */ (lastFillInstruction) : null, backgroundStroke ? /** @type {Array<*>} */ (lastStrokeInstruction) : null);n if (declutterGroup) {n if (declutterGroupIndex === Math.floor(declutterGroupIndex)) {n this.declutterItems.push(this, declutterGroup, feature);n }n declutterGroupIndex += 1 / declutterGroup;n }n }n ++i;n break;n case CanvasInstruction.DRAW_CHARS:n var begin = /** @type {number} */ (instruction);n var end = /** @type {number} */ (instruction);n var baseline = /** @type {number} */ (instruction);n declutterGroup = featureCallback ? null : instruction;n var overflow = /** @type {number} */ (instruction);n fillKey = /** @type {string} */ (instruction);n var maxAngle = /** @type {number} */ (instruction);n var measurePixelRatio = /** @type {number} */ (instruction);n var offsetY = /** @type {number} */ (instruction);n strokeKey = /** @type {string} */ (instruction);n var strokeWidth = /** @type {number} */ (instruction);n text = /** @type {string} */ (instruction);n textKey = /** @type {string} */ (instruction);n var pixelRatioScale = /** @type {number} */ (instruction);n var textState = this.textStates;n var font = textState.font;n var textScale = textState.scale * measurePixelRatio;n var cachedWidths = void 0;n if (font in this.widths_) {n cachedWidths = this.widths_;n }n else {n cachedWidths = {};n this.widths_ = cachedWidths;n }n var pathLength = lineStringLength(pixelCoordinates, begin, end, 2);n var textLength = textScale * measureAndCacheTextWidth(font, text, cachedWidths);n if (overflow || textLength <= pathLength) {n var textAlign = this.textStates.textAlign;n var startM = (pathLength - textLength) * TEXT_ALIGN;n var parts = drawTextOnPath(pixelCoordinates, begin, end, 2, text, startM, maxAngle, textScale, measureAndCacheTextWidth, font, cachedWidths);n if (parts) {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; // x, y, anchorX, rotation, chunkn chars = /** @type {string} */ (part);n label = this.getTextImage(chars, textKey, '', strokeKey);n anchorX = /** @type {number} */ (part) + strokeWidth;n anchorY = baseline * label.height + (0.5 - baseline) * 2 * strokeWidth - offsetY;n this.replayImage_(context, n /** @type {number} */ (part), /** @type {number} */ (part), label, anchorX, anchorY, declutterGroup, label.height, 1, 0, 0, n /** @type {number} */ (part), pixelRatioScale, false, label.width, defaultPadding, null, null);n }n }n if (fillKey) {n for (c = 0, cc = parts.length; c < cc; ++c) {n part = parts; // x, y, anchorX, rotation, chunkn chars = /** @type {string} */ (part);n label = this.getTextImage(chars, textKey, fillKey, '');n anchorX = /** @type {number} */ (part);n anchorY = baseline * label.height - offsetY;n this.replayImage_(context, n /** @type {number} */ (part), /** @type {number} */ (part), label, anchorX, anchorY, declutterGroup, label.height, 1, 0, 0, n /** @type {number} */ (part), pixelRatioScale, false, label.width, defaultPadding, null, null);n }n }n }n }n this.declutterItems.push(this, declutterGroup, feature);n ++i;n break;n case CanvasInstruction.END_GEOMETRY:n if (featureCallback !== undefined) {n feature = /** @type {import("../../Feature.js").FeatureLike} */ (instruction);n var result = featureCallback(feature);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);n dd = /** @type {number} */ (instruction);n x = pixelCoordinates;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;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;n if (pendingFill) {n this.fill_(context);n pendingFill = 0;n if (pendingStroke) {n context.stroke();n pendingStroke = 0;n }n }n context.fillStyle = /** @type {import("../../colorlike.js").ColorLike} */ (instruction);n ++i;n break;n case CanvasInstruction.SET_STROKE_STYLE:n lastStrokeInstruction = instruction;n if (pendingStroke) {n context.stroke();n pendingStroke = 0;n }n this.setStrokeStyle_(context, /** @type {Array<*>} */ (instruction));n ++i;n break;n case CanvasInstruction.STROKE:n if (batchSize) {n pendingStroke++;n }n else {n context.stroke();n }n ++i;n break;n default:n ++i; // consume the instruction anyway, to avoid an infinite loopn 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 {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 */n Executor.prototype.execute = function (context, transform, viewRotation, snapToPixel) {n this.viewRotation_ = viewRotation;n this.execute_(context, transform, this.instructions, snapToPixel, undefined, undefined);n };n /**n * @param {CanvasRenderingContext2D} context Context.n * @param {import("../../transform.js").Transform} transform Transform.n * @param {number} viewRotation View rotation.n * @param {function(import("../../Feature.js").FeatureLike): T=} opt_featureCallbackn * Feature callback.n * @param {import("../../extent.js").Extent=} opt_hitExtent Only check features that intersect thisn * extent.n * @return {T|undefined} Callback result.n * @template Tn */n Executor.prototype.executeHitDetection = function (context, transform, viewRotation, opt_featureCallback, opt_hitExtent) {n this.viewRotation_ = viewRotation;n return this.execute_(context, transform, this.hitDetectionInstructions, true, opt_featureCallback, opt_hitExtent);n };n return Executor;n}(Disposable));nexport default Executor;n//# sourceMappingURL=Executor.js.map”,“/**n * @module ol/render/canvas/ExecutorGroupn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { numberSafeCompareFunction } from '../../array.js';nimport { createCanvasContext2D } from '../../dom.js';nimport { buffer, createEmpty, extendCoordinate } from '../../extent.js';nimport { transform2D } from '../../geom/flat/transform.js';nimport { isEmpty } from '../../obj.js';nimport BuilderType from './BuilderType.js';nimport { create as createTransform, compose as composeTransform } from '../../transform.js';nimport Executor from './Executor.js';nimport Disposable from '../../Disposable.js';n/**n * @constn * @type {Array<BuilderType>}n */nvar ORDER = [n BuilderType.POLYGON,n BuilderType.CIRCLE,n BuilderType.LINE_STRING,n BuilderType.IMAGE,n BuilderType.TEXT,n BuilderType.DEFAULTn];nvar ExecutorGroup = /** @class */ (function (_super) {n __extends(ExecutorGroup, _super);n /**n * @param {import("../../extent.js").Extent} maxExtent Max extent for clipping. When an * `maxExtent` was set on the Buillder for this executor group, the same `maxExtent`n * should be set here, unless the target context does not exceet that extent (whichn * 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<string, !Object<BuilderType, import("./Builder.js").SerializableInstructions>>} allInstructionsn * The serializable instructions.n * @param {number=} opt_renderBuffer Optional rendering buffer.n */n function ExecutorGroup(maxExtent, resolution, pixelRatio, overlaps, allInstructions, opt_renderBuffer) {n var _this = _super.call(this) || this;n /**n * @privaten * @type {import("../../extent.js").Extent}n */n this.maxExtent = maxExtent;n /**n * @privaten * @type {boolean}n */n this.overlaps = overlaps;n /**n * @privaten * @type {number}n */n this.pixelRatio = pixelRatio;n /**n * @privaten * @type {number}n */n this.resolution = resolution;n /**n * @privaten * @type {number|undefined}n */n this.renderBuffer = opt_renderBuffer;n /**n * @privaten * @type {!Object<string, !Object<BuilderType, import("./Executor").default>>}n */n this.executorsByZIndex = {};n /**n * @privaten * @type {CanvasRenderingContext2D}n */n this.hitDetectionContext = null;n /**n * @privaten * @type {import("../../transform.js").Transform}n */n this.hitDetectionTransform = createTransform();n this.createExecutors(allInstructions);n return _this;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, flatClipCoords);n context.lineTo(flatClipCoords, flatClipCoords);n context.lineTo(flatClipCoords, flatClipCoords);n context.lineTo(flatClipCoords, flatClipCoords);n context.clip();n };n /**n * Create executors and populate them using the provided instructions.n * @privaten * @param {!Object<string, !Object<BuilderType, import("./Builder.js").SerializableInstructions>>} allInstructions The serializable instructionsn */n ExecutorGroup.prototype.createExecutors_ = function (allInstructions) {n for (var zIndex in allInstructions) {n var executors = this.executorsByZIndex_;n if (executors === undefined) {n executors = {};n this.executorsByZIndex_ = executors;n }n var instructionByZindex = allInstructions;n for (var builderType in instructionByZindex) {n var instructions = instructionByZindex;n executors = new Executor(this.resolution_, this.pixelRatio_, this.overlaps_, instructions);n }n }n };n /**n * @inheritDocn */n ExecutorGroup.prototype.disposeInternal = function () {n for (var z in this.executorsByZIndex_) {n var executors = this.executorsByZIndex_;n for (var key in executors) {n executors.disposeInternal();n }n }n if (this.hitDetectionContext_) {n var canvas = this.hitDetectionContext_.canvas;n canvas.width = 0;n canvas.height = 0;n }n _super.prototype.disposeInternal.call(this);n };n /**n * @param {Array<BuilderType>} 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_;n for (var i = 0, ii = executors.length; i < ii; ++i) {n if (executors 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): T} callback Feature callback.n * @param {Array<import("../../Feature.js").FeatureLike>} declutteredFeatures Decluttered features.n * @return {T|undefined} Callback result.n * @template Tn */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, -coordinate);n if (!this.hitDetectionContext_) {n this.hitDetectionContext_ = createCanvasContext2D(contextSize, contextSize);n }n var context = this.hitDetectionContext_;n if (context.canvas.width !== contextSize || context.canvas.height !== contextSize) {n context.canvas.width = contextSize;n context.canvas.height = contextSize;n }n else {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 mask = getCircleArray(hitTolerance);n var builderType;n /**n * @param {import("../../Feature.js").FeatureLike} feature Feature.n * @return {?} Callback result.n */n function featureCallback(feature) {n var imageData = context.getImageData(0, 0, contextSize, contextSize).data;n for (var i_1 = 0; i_1 < contextSize; i_1++) {n for (var j_1 = 0; j_1 < contextSize; j_1++) {n if (mask[j_1]) {n if (imageData[(j_1 * contextSize + i_1) * 4 + 3] > 0) {n var result_1 = void 0;n if (!(declutteredFeatures && (builderType == BuilderType.IMAGE || builderType == BuilderType.TEXT)) ||n declutteredFeatures.indexOf(feature) !== -1) {n result_1 = callback(feature);n }n if (result_1) {n return result_1;n }n else {n context.clearRect(0, 0, contextSize, contextSize);n return undefined;n }n }n }n }n }n }n /** @type {Array<number>} */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.toString();n executors = this.executorsByZIndex_;n for (j = ORDER.length - 1; j >= 0; –j) {n builderType = ORDER;n executor = executors;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<number>} 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;n var minY = maxExtent;n var maxX = maxExtent;n var maxY = maxExtent;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 {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<BuilderType>=} opt_builderTypes Ordered replay types to replay.n * Default is {@link module:ol/render/replay~ORDER}n * @param {Object<string, import("../canvas.js").DeclutterGroup>=} opt_declutterReplays Declutter replays.n */n ExecutorGroup.prototype.execute = function (context, transform, viewRotation, snapToPixel, opt_builderTypes, opt_declutterReplays) {n /** @type {Array<number>} */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 notn // visible outside the current extent when panningn 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 for (i = 0, ii = zs.length; i < ii; ++i) {n var zIndexKey = zs.toString();n replays = this.executorsByZIndex_;n for (j = 0, jj = builderTypes.length; j < jj; ++j) {n var builderType = builderTypes;n replay = replays;n if (replay !== undefined) {n if (opt_declutterReplays &&n (builderType == BuilderType.IMAGE || builderType == BuilderType.TEXT)) {n var declutter = opt_declutterReplays;n if (!declutter) {n opt_declutterReplays = [replay, transform.slice(0)];n }n else {n declutter.push(replay, transform.slice(0));n }n }n else {n replay.execute(context, transform, viewRotation, snapToPixel);n }n }n }n }n if (this.maxExtent_) {n context.restore();n }n };n return ExecutorGroup;n}(Disposable));n/**n * This cache is used for storing calculated pixel circles for increasing performance.n * It is a static property to allow each Replaygroup to access it.n * @type {Object<number, Array<Array<(boolean|undefined)>>>}n */nvar circleArrayCache = {n 0: [[true]]n};n/**n * This method fills a row in the array from the given coordinate to then * middle with `true`.n * @param {Array<Array<(boolean|undefined)>>} array The array that will be altered.n * @param {number} x X coordinate.n * @param {number} y Y coordinate.n */nfunction fillCircleArrayRowToMiddle(array, x, y) {n var i;n var radius = Math.floor(array.length / 2);n if (x >= radius) {n for (i = radius; i < x; i++) {n array[y] = true;n }n }n else if (x < radius) {n for (i = x + 1; i < radius; i++) {n array[y] = true;n }n }n}n/**n * This methods creates a circle inside a fitting array. Points inside then * circle are marked by true, points on the outside are undefined.n * It uses the midpoint circle algorithm.n * A cache is used to increase performance.n * @param {number} radius Radius.n * @returns {Array<Array<(boolean|undefined)>>} An array with marked circle points.n */nexport function getCircleArray(radius) {n if (circleArrayCache !== undefined) {n return circleArrayCache;n }n var arraySize = radius * 2 + 1;n var arr = new Array(arraySize);n for (var i = 0; i < arraySize; i++) {n arr = new Array(arraySize);n }n var x = radius;n var y = 0;n var error = 0;n while (x >= y) {n fillCircleArrayRowToMiddle(arr, radius + x, radius + y);n fillCircleArrayRowToMiddle(arr, radius + y, radius + x);n fillCircleArrayRowToMiddle(arr, radius - y, radius + x);n fillCircleArrayRowToMiddle(arr, radius - x, radius + y);n fillCircleArrayRowToMiddle(arr, radius - x, radius - y);n fillCircleArrayRowToMiddle(arr, radius - y, radius - x);n fillCircleArrayRowToMiddle(arr, radius + y, radius - x);n fillCircleArrayRowToMiddle(arr, radius + x, radius - y);n y++;n error += 1 + 2 * y;n if (2 * (error - x) + 1 > 0) {n x -= 1;n error += 1 - 2 * x;n }n }n circleArrayCache = arr;n return arr;n}n/**n * @param {!Object<string, Array<*>>} declutterReplays Declutter replays.n * @param {CanvasRenderingContext2D} context Context.n * @param {number} rotation Rotation.n * @param {number} opacity Opacity.n * @param {boolean} snapToPixel Snap point symbols and text to integer pixels.n * @param {Array<import("../../PluggableMap.js").DeclutterItems>} declutterItems Declutter items.n */nexport function replayDeclutter(declutterReplays, context, rotation, opacity, snapToPixel, declutterItems) {n var zs = Object.keys(declutterReplays).map(Number).sort(numberSafeCompareFunction);n for (var z = 0, zz = zs.length; z < zz; ++z) {n var executorData = declutterReplays[zs.toString()];n var currentExecutor = void 0;n for (var i = 0, ii = executorData.length; i < ii;) {n var executor = executorData;n if (executor !== currentExecutor) {n currentExecutor = executor;n declutterItems.push({n items: executor.declutterItems,n opacity: opacityn });n }n var transform = executorData;n executor.execute(context, transform, rotation, snapToPixel);n }n }n}nexport default ExecutorGroup;n//# sourceMappingURL=ExecutorGroup.js.map”,“/**n * @module ol/render/canvas/hitdetetn */nimport CanvasImmediateRenderer from './Immediate.js';nimport { createCanvasContext2D } from '../../dom.js';nimport { Icon } from '../../style.js';nimport IconAnchorUnits from '../../style/IconAnchorUnits.js';nimport GeometryType from '../../geom/GeometryType.js';nimport { intersects } from '../../extent.js';nimport { numberSafeCompareFunction } from '../../array.js';n/**n * @param {import("../../size.js").Size} size Canvas size in css pixels.n * @param {Array<import("../../transform.js").Transform>} transforms Transformsn * for rendering features to all worlds of the viewport, from coordinates to cssn * pixels.n * @param {Array<import("../../Feature.js").FeatureLike>} featuresn * Features to consider for hit detection.n * @param {import("../../style/Style.js").StyleFunction|undefined} styleFunctionn * 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 / 2;n var height = size / 2;n var context = createCanvasContext2D(width, height);n context.imageSmoothingEnabled = false;n var canvas = context.canvas;n var renderer = new CanvasImmediateRenderer(context, 0.5, extent, null, rotation);n var featureCount = features.length;n // Stretch hit detection index to use the whole available color rangen var indexFactor = Math.ceil((256 * 256 * 256) / featureCount);n var featuresByZIndex = {};n for (var i = 0; i < featureCount; ++i) {n var feature = features;n var featureStyleFunction = feature.getStyleFunction() || styleFunction;n if (!styleFunction) {n continue;n }n var styles = featureStyleFunction(feature, resolution);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;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 }n style.setText(undefined);n var image = originalStyle.getImage();n if (image) {n var imgSize = image.getImageSize();n var canvas_1 = document.createElement('canvas');n canvas_1.width = imgSize;n canvas_1.height = imgSize;n var imgContext = canvas_1.getContext('2d', { alpha: false });n imgContext.fillStyle = color;n var img = imgContext.canvas;n imgContext.fillRect(0, 0, img.width, img.height);n var width_1 = imgSize ? imgSize : img.width;n var height_1 = imgSize ? imgSize : img.height;n var iconContext = createCanvasContext2D(width_1, height_1);n iconContext.drawImage(img, 0, 0);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 size: image.getSize(),n opacity: image.getOpacity(),n scale: image.getScale(),n rotation: image.getRotation(),n rotateWithView: image.getRotateWithView()n }));n }n var zIndex = Number(style.getZIndex());n var byGeometryType = featuresByZIndex;n if (!byGeometryType) {n byGeometryType = {};n featuresByZIndex = byGeometryType;n byGeometryType = [];n byGeometryType = [];n byGeometryType = [];n byGeometryType = [];n }n var geometry = style.getGeometryFunction()(feature);n if (geometry && intersects(extent, geometry.getExtent())) {n byGeometryType[geometry.getType().replace('Multi', '')].push(geometry, style);n }n }n }n var zIndexKeys = Object.keys(featuresByZIndex).map(Number).sort(numberSafeCompareFunction);n for (var i = 0, ii = zIndexKeys.length; i < ii; ++i) {n var byGeometryType = featuresByZIndex[zIndexKeys];n for (var type in byGeometryType) {n var geomAndStyle = byGeometryType;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);n renderer.drawGeometry(geomAndStyle);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 hitn * detection canvas in css pixels.n * @param {Array<import("../../Feature").FeatureLike>} features Features. Has ton * match the `features` array that was passed to `createHitDetectionImageData()`.n * @param {ImageData} imageData Hit detection image data generated byn * `createHitDetectionImageData()`.n * @return {Array<import("../../Feature").FeatureLike>} features Features.n */nexport function hitDetect(pixel, features, imageData) {n var resultFeatures = [];n if (imageData) {n var index = (Math.round(pixel / 2) + Math.round(pixel / 2) * imageData.width) * 4;n var r = imageData.data;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.ceil((256 * 256 * 256) / features.length);n if (i % indexFactor === 0) {n resultFeatures.push(features[i / indexFactor]);n }n }n return resultFeatures;n}n//# sourceMappingURL=hitdetect.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/renderer/canvas/VectorLayern */nimport { getUid } from '../../util.js';nimport ViewHint from '../../ViewHint.js';nimport { buffer, createEmpty, containsExtent, getWidth, intersects as intersectsExtent } from '../../extent.js';nimport { fromUserExtent, toUserExtent, getUserProjection, getTransformFromProjections } from '../../proj.js';nimport CanvasBuilderGroup from '../../render/canvas/BuilderGroup.js';nimport ExecutorGroup, { replayDeclutter } from '../../render/canvas/ExecutorGroup.js';nimport CanvasLayerRenderer from './Layer.js';nimport { defaultOrder as defaultRenderOrder, getTolerance as getRenderTolerance, getSquaredTolerance as getSquaredRenderTolerance, renderFeature } from '../vector.js';nimport { toString as transformToString, makeScale, makeInverse, apply } from '../../transform.js';nimport { createHitDetectionImageData, hitDetect } from '../../render/canvas/hitdetect.js';n/**n * @classdescn * Canvas renderer for vector layers.n * @apin */nvar CanvasVectorLayerRenderer = /** @class */ (function (_super) {n __extends(CanvasVectorLayerRenderer, _super);n /**n * @param {import("../../layer/Vector.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 * @privaten * @type {boolean}n */n this.dirty = false;n /**n * @type {ImageData}n */n this.hitDetectionImageData = null;n /**n * @type {Array<import("../../Feature.js").default>}n */n this.renderedFeatures = null;n /**n * @privaten * @type {number}n */n this.renderedRevision = -1;n /**n * @privaten * @type {number}n */n this.renderedResolution = NaN;n /**n * @privaten * @type {import("../../extent.js").Extent}n */n this.renderedExtent = createEmpty();n /**n * @privaten * @type {number}n */n this.renderedRotation;n /**n * @privaten * @type {import("../../coordinate").Coordinate}n */n this.renderedCenter = null;n /**n * @privaten * @type {import("../../proj/Projection").default}n */n this.renderedProjection = null;n /**n * @privaten * @type {function(import("../../Feature.js").default, import("../../Feature.js").default): number|null}n */n this.renderedRenderOrder = null;n /**n * @privaten * @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 return _this;n }n /**n * @inheritDocn */n CanvasVectorLayerRenderer.prototype.useContainer = function (target, transform, opacity) {n if (opacity < 1) {n target = null;n }n _super.prototype.useContainer.call(this, target, transform, opacity);n };n /**n * @inheritDocn */n CanvasVectorLayerRenderer.prototype.renderFrame = function (frameState, target) {n var pixelRatio = frameState.pixelRatio;n var layerState = frameState.layerStatesArray;n // set forward and inverse pixel transformsn makeScale(this.pixelTransform, 1 / pixelRatio, 1 / pixelRatio);n makeInverse(this.inversePixelTransform, this.pixelTransform);n var canvasTransform = transformToString(this.pixelTransform);n this.useContainer(target, canvasTransform, layerState.opacity);n var context = this.context;n var canvas = context.canvas;n var replayGroup = this.replayGroup_;n if (!replayGroup || replayGroup.isEmpty()) {n if (!this.containerReused && canvas.width > 0) {n canvas.width = 0;n }n return this.container;n }n // resize and clearn var width = Math.round(frameState.size * pixelRatio);n var height = Math.round(frameState.size * 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 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 // clipped rendering if layer extent is setn var clipped = false;n if (layerState.extent) {n var layerExtent = fromUserExtent(layerState.extent, projection);n clipped = !containsExtent(layerExtent, frameState.extent) && intersectsExtent(layerExtent, frameState.extent);n if (clipped) {n this.clip(context, frameState, layerExtent);n }n }n var viewHints = frameState.viewHints;n var snapToPixel = !(viewHints || viewHints);n var transform = this.getRenderTransform(center, resolution, rotation, pixelRatio, width, height, 0);n var declutterReplays = this.getLayer().getDeclutter() ? {} : null;n replayGroup.execute(context, transform, rotation, snapToPixel, undefined, declutterReplays);n if (vectorSource.getWrapX() && projection.canWrapX() && !containsExtent(projectionExtent, extent)) {n var startX = extent;n var worldWidth = getWidth(projectionExtent);n var world = 0;n var offsetX = void 0;n while (startX < projectionExtent) {n –world;n offsetX = worldWidth * world;n var transform_1 = this.getRenderTransform(center, resolution, rotation, pixelRatio, width, height, offsetX);n replayGroup.execute(context, transform_1, rotation, snapToPixel, undefined, declutterReplays);n startX += worldWidth;n }n world = 0;n startX = extent;n while (startX > projectionExtent) {n ++world;n offsetX = worldWidth * world;n var transform_2 = this.getRenderTransform(center, resolution, rotation, pixelRatio, width, height, offsetX);n replayGroup.execute(context, transform_2, rotation, snapToPixel, undefined, declutterReplays);n startX -= worldWidth;n }n }n if (declutterReplays) {n var viewHints_1 = frameState.viewHints;n var hifi = !(viewHints_1 || viewHints_1);n replayDeclutter(declutterReplays, context, rotation, 1, hifi, frameState.declutterItems);n }n if (clipped) {n context.restore();n }n this.postRender(context, frameState);n var opacity = layerState.opacity;n var container = this.container;n if (opacity !== parseFloat(container.style.opacity)) {n container.style.opacity = opacity === 1 ? '' : opacity;n }n return this.container;n };n /**n * @inheritDocn */n CanvasVectorLayerRenderer.prototype.getFeatures = function (pixel) {n return new Promise(function (resolve, reject) {n if (!this.hitDetectionImageData_ && !this.animatingOrInteracting_) {n requestAnimationFrame(function () {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.renderedExtent_;n var layer = this.getLayer();n var transforms = [];n var width = size / 2;n var height = size / 2;n transforms.push(this.getRenderTransform(center, resolution, rotation, 0.5, width, height, 0).slice());n var source = layer.getSource();n var projectionExtent = projection.getExtent();n if (source.getWrapX() && projection.canWrapX() && !containsExtent(projectionExtent, extent)) {n var startX = extent;n var worldWidth = getWidth(projectionExtent);n var world = 0;n var offsetX = void 0;n while (startX < projectionExtent) {n –world;n offsetX = worldWidth * world;n transforms.push(this.getRenderTransform(center, resolution, rotation, 0.5, width, height, offsetX).slice());n startX += worldWidth;n }n world = 0;n startX = extent;n while (startX > projectionExtent) {n ++world;n offsetX = worldWidth * world;n transforms.push(this.getRenderTransform(center, resolution, rotation, 0.5, width, height, offsetX).slice());n startX -= worldWidth;n }n }n this.hitDetectionImageData_ = createHitDetectionImageData(size, transforms, this.renderedFeatures_, layer.getStyleFunction(), extent, resolution, rotation);n resolve(hitDetect(pixel, this.renderedFeatures_, this.hitDetectionImageData_));n }.bind(this));n }n else {n resolve(hitDetect(pixel, this.renderedFeatures_, this.hitDetectionImageData_));n }n }.bind(this));n };n /**n * @inheritDocn */n CanvasVectorLayerRenderer.prototype.forEachFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, callback, declutteredFeatures) {n if (!this.replayGroup_) {n return undefined;n }n else {n var resolution = frameState.viewState.resolution;n var rotation = frameState.viewState.rotation;n var layer_1 = this.getLayer();n /** @type {!Object<string, boolean>} */n var features_1 = {};n var result = this.replayGroup_.forEachFeatureAtCoordinate(coordinate, resolution, rotation, hitTolerance, n /**n * @param {import("../../Feature.js").FeatureLike} feature Feature.n * @return {?} Callback result.n */n function (feature) {n var key = getUid(feature);n if (!(key in features_1)) {n features_1 = true;n return callback(feature, layer_1);n }n }, layer_1.getDeclutter() ? declutteredFeatures : null);n return result;n }n };n /**n * @inheritDocn */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 * @privaten */n CanvasVectorLayerRenderer.prototype.handleStyleImageChange_ = function (event) {n this.renderIfReadyAndVisible();n };n /**n * @inheritDocn */n CanvasVectorLayerRenderer.prototype.prepareFrame = function (frameState) {n var vectorLayer = this.getLayer();n var vectorSource = vectorLayer.getSource();n var animating = frameState.viewHints;n var interacting = frameState.viewHints;n var updateWhileAnimating = vectorLayer.getUpdateWhileAnimating();n var updateWhileInteracting = vectorLayer.getUpdateWhileInteracting();n if (!this.dirty_ && (!updateWhileAnimating && animating) ||n (!updateWhileInteracting && interacting)) {n this.animatingOrInteracting_ = true;n return true;n }n this.animatingOrInteracting_ = false;n var frameStateExtent = frameState.extent;n var viewState = frameState.viewState;n var projection = viewState.projection;n var resolution = viewState.resolution;n var pixelRatio = frameState.pixelRatio;n var vectorLayerRevision = vectorLayer.getRevision();n var vectorLayerRenderBuffer = vectorLayer.getRenderBuffer();n var vectorLayerRenderOrder = vectorLayer.getRenderOrder();n if (vectorLayerRenderOrder === undefined) {n vectorLayerRenderOrder = defaultRenderOrder;n }n var center = viewState.center.slice();n var extent = buffer(frameStateExtent, vectorLayerRenderBuffer * resolution);n var projectionExtent = viewState.projection.getExtent();n if (vectorSource.getWrapX() && viewState.projection.canWrapX() &&n !containsExtent(projectionExtent, frameState.extent)) {n // For the replay group, we need an extent that intersects the real worldn // (-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 projectionn // extent. If the viewport is wider than the world, we need to add half ofn // 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 = projectionExtent - gutter;n extent = projectionExtent + gutter;n var worldsAway = Math.floor((center - projectionExtent) / worldWidth);n center -= (worldsAway * worldWidth);n }n if (!this.dirty_ &&n this.renderedResolution_ == resolution &&n this.renderedRevision_ == vectorLayerRevision &&n this.renderedRenderOrder_ == vectorLayerRenderOrder &&n containsExtent(this.renderedExtent_, extent)) {n this.replayGroupChanged = false;n return true;n }n if (this.replayGroup_) {n this.replayGroup_.dispose();n }n this.replayGroup_ = null;n this.dirty_ = false;n var replayGroup = new CanvasBuilderGroup(getRenderTolerance(resolution, pixelRatio), extent, resolution, pixelRatio, vectorLayer.getDeclutter());n var userProjection = getUserProjection();n var userTransform;n if (userProjection) {n vectorSource.loadFeatures(toUserExtent(extent, projection), resolution, userProjection);n userTransform = getTransformFromProjections(userProjection, projection);n }n else {n vectorSource.loadFeatures(extent, resolution, projection);n }n var squaredTolerance = getSquaredRenderTolerance(resolution, pixelRatio);n /**n * @param {import("../../Feature.js").default} feature Feature.n * @this {CanvasVectorLayerRenderer}n */n var render = 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);n this.dirty_ = this.dirty_ || dirty;n }n }.bind(this);n var userExtent = toUserExtent(extent, projection);n /** @type {Array<import("../../Feature.js").default>} */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);n }n this.renderedFeatures_ = features;n var replayGroupInstructions = replayGroup.finish();n var executorGroup = new ExecutorGroup(extent, resolution, pixelRatio, vectorSource.getOverlaps(), replayGroupInstructions, vectorLayer.getRenderBuffer());n this.renderedResolution_ = resolution;n this.renderedRevision_ = vectorLayerRevision;n this.renderedRenderOrder_ = vectorLayerRenderOrder;n this.renderedExtent_ = extent;n this.renderedRotation_ = viewState.rotation;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<import("../../style/Style.js").default>} 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 * @return {boolean} `true` if an image is loading.n */n CanvasVectorLayerRenderer.prototype.renderFeature = function (feature, squaredTolerance, styles, builderGroup, opt_transform) {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 = renderFeature(builderGroup, feature, styles, squaredTolerance, this.boundHandleStyleImageChange_, opt_transform) || loading;n }n }n else {n loading = renderFeature(builderGroup, feature, styles, squaredTolerance, this.boundHandleStyleImageChange_, opt_transform);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 (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/renderer/canvas/VectorImageLayern */nimport ImageCanvas from '../../ImageCanvas.js';nimport ViewHint from '../../ViewHint.js';nimport { getHeight, getWidth, isEmpty, scaleFromCenter } from '../../extent.js';nimport { assign } from '../../obj.js';nimport CanvasImageLayerRenderer from './ImageLayer.js';nimport CanvasVectorLayerRenderer from './VectorLayer.js';nimport EventType from '../../events/EventType.js';nimport ImageState from '../../ImageState.js';nimport { renderDeclutterItems } from '../../render.js';nimport { apply, compose, create } from '../../transform.js';n/**n * @classdescn * Canvas renderer for image layers.n * @apin */nvar CanvasVectorImageLayerRenderer = /** @class */ (function (_super) {n __extends(CanvasVectorImageLayerRenderer, _super);n /**n * @param {import("../../layer/VectorImage.js").default} layer Vector image layer.n */n function CanvasVectorImageLayerRenderer(layer) {n var _this = _super.call(this, layer) || this;n /**n * @privaten * @type {import("./VectorLayer.js").default}n */n this.vectorRenderer = new CanvasVectorLayerRenderer(layer);n /**n * @privaten * @type {number}n */n this.layerImageRatio = layer.getImageRatio();n /**n * @privaten * @type {import("../../transform.js").Transform}n */n this.coordinateToVectorPixelTransform = create();n /**n * @privaten * @type {import("../../transform.js").Transform}n */n this.renderedPixelToCoordinateTransform = null;n return _this;n }n /**n * @inheritDocn */n CanvasVectorImageLayerRenderer.prototype.disposeInternal = function () {n this.vectorRenderer_.dispose();n _super.prototype.disposeInternal.call(this);n };n /**n * @inheritDocn */n CanvasVectorImageLayerRenderer.prototype.getFeatures = function (pixel) {n if (this.vectorRenderer_) {n var vectorPixel = apply(this.coordinateToVectorPixelTransform_, apply(this.renderedPixelToCoordinateTransform_, pixel.slice()));n return this.vectorRenderer_.getFeatures(vectorPixel);n }n else {n var promise = new Promise(function (resolve, reject) {n resolve([]);n });n return promise;n }n };n /**n * @inheritDocn */n CanvasVectorImageLayerRenderer.prototype.handleFontsChanged = function () {n this.vectorRenderer_.handleFontsChanged();n };n /**n * @inheritDocn */n CanvasVectorImageLayerRenderer.prototype.prepareFrame = function (frameState) {n var pixelRatio = frameState.pixelRatio;n var viewState = frameState.viewState;n var viewResolution = viewState.resolution;n var hints = frameState.viewHints;n var vectorRenderer = this.vectorRenderer_;n var renderedExtent = frameState.extent;n if (this.layerImageRatio_ !== 1) {n renderedExtent = renderedExtent.slice(0);n scaleFromCenter(renderedExtent, this.layerImageRatio_);n }n var width = getWidth(renderedExtent) / viewResolution;n var height = getHeight(renderedExtent) / viewResolution;n if (!hints && !hints && !isEmpty(renderedExtent)) {n vectorRenderer.useContainer(null, null, 1);n var context = vectorRenderer.context;n var imageFrameState_1 = /** @type {import("../../PluggableMap.js").FrameState} */ (assign({}, frameState, {n declutterItems: [],n size: [width, height],n viewState: /** @type {import("../../View.js").State} */ (assign({}, frameState.viewState, {n rotation: 0n }))n }));n var image_1 = new ImageCanvas(renderedExtent, viewResolution, pixelRatio, context.canvas, function (callback) {n if (vectorRenderer.prepareFrame(imageFrameState_1) && vectorRenderer.replayGroupChanged) {n vectorRenderer.renderFrame(imageFrameState_1, null);n renderDeclutterItems(imageFrameState_1, null);n callback();n }n });n image_1.addEventListener(EventType.CHANGE, function () {n if (image_1.getState() === ImageState.LOADED) {n this.image_ = image_1;n }n }.bind(this));n image_1.load();n }n if (this.image_) {n var image = this.image_;n var imageResolution = image.getResolution();n var imagePixelRatio = image.getPixelRatio();n var renderedResolution = imageResolution * pixelRatio / imagePixelRatio;n this.renderedResolution = renderedResolution;n this.renderedPixelToCoordinateTransform_ = frameState.pixelToCoordinateTransform.slice();n this.coordinateToVectorPixelTransform_ = compose(this.coordinateToVectorPixelTransform_, width / 2, height / 2, 1 / renderedResolution, -1 / renderedResolution, 0, -viewState.center[0], -viewState.center[1]);n }n return !!this.image_;n };n /**n * @overriden */n CanvasVectorImageLayerRenderer.prototype.preRender = function () { };n /**n * @overriden */n CanvasVectorImageLayerRenderer.prototype.postRender = function () { };n /**n * @inheritDocn */n CanvasVectorImageLayerRenderer.prototype.forEachFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, callback, declutteredFeatures) {n if (this.vectorRenderer_) {n return this.vectorRenderer_.forEachFeatureAtCoordinate(coordinate, frameState, hitTolerance, callback, declutteredFeatures);n }n else {n return _super.prototype.forEachFeatureAtCoordinate.call(this, coordinate, frameState, hitTolerance, callback, declutteredFeatures);n }n };n return CanvasVectorImageLayerRenderer;n}(CanvasImageLayerRenderer));nexport default CanvasVectorImageLayerRenderer;n//# sourceMappingURL=VectorImageLayer.js.map”,“/**n * @module ol/layer/VectorTileRenderTypen */n/**n * @enum {string}n * Render mode for vector tiles:n * * `'image'`: Vector tiles are rendered as images. Great performance, butn * point symbols and texts are always rotated with the view and pixels aren * scaled during zoom animations.n * * `'hybrid'`: Polygon and line elements are rendered as images, so pixelsn * are scaled during zoom animations. Point symbols and texts are accuratelyn * rendered as vectors and can stay upright on rotated views.n * @apin */nexport default {n IMAGE: 'image',n HYBRID: 'hybrid'n};n//# sourceMappingURL=VectorTileRenderType.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/renderer/canvas/VectorTileLayern */nimport { getUid } from '../../util.js';nimport TileState from '../../TileState.js';nimport ViewHint from '../../ViewHint.js';nimport { listen, unlistenByKey } from '../../events.js';nimport EventType from '../../events/EventType.js';nimport { buffer, containsCoordinate, equals, getIntersection, intersects, containsExtent, getWidth, getTopLeft } from '../../extent.js';nimport VectorTileRenderType from '../../layer/VectorTileRenderType.js';nimport ReplayType from '../../render/canvas/BuilderType.js';nimport CanvasBuilderGroup from '../../render/canvas/BuilderGroup.js';nimport CanvasTileLayerRenderer from './TileLayer.js';nimport { toSize } from '../../size.js';nimport { getSquaredTolerance as getSquaredRenderTolerance, renderFeature } from '../vector.js';nimport { apply as applyTransform, create as createTransform, reset as resetTransform, scale as scaleTransform, translate as translateTransform, multiply, scale } from '../../transform.js';nimport CanvasExecutorGroup, { replayDeclutter } from '../../render/canvas/ExecutorGroup.js';nimport { clear } from '../../obj.js';nimport { createHitDetectionImageData, hitDetect } from '../../render/canvas/hitdetect.js';n/**n * @type {!Object<string, Array<import("../../render/canvas/BuilderType.js").default>>}n */nvar IMAGE_REPLAYS = {n 'image': [ReplayType.POLYGON, ReplayType.CIRCLE,n ReplayType.LINE_STRING, ReplayType.IMAGE, ReplayType.TEXT],n 'hybrid': [ReplayType.POLYGON, ReplayType.LINE_STRING]n};n/**n * @type {!Object<string, Array<import("../../render/canvas/BuilderType.js").default>>}n */nvar VECTOR_REPLAYS = {n 'image': [ReplayType.DEFAULT],n 'hybrid': [ReplayType.IMAGE, ReplayType.TEXT, ReplayType.DEFAULT]n};n/**n * @classdescn * Canvas renderer for vector tile layers.n * @apin */nvar CanvasVectorTileLayerRenderer = /** @class */ (function (_super) {n __extends(CanvasVectorTileLayerRenderer, _super);n /**n * @param {import("../../layer/VectorTile.js").default} layer VectorTile layer.n */n function CanvasVectorTileLayerRenderer(layer) {n var _this = _super.call(this, layer) || this;n /** @private */n this.boundHandleStyleImageChange = this.handleStyleImageChange.bind(_this);n /**n * @privaten * @type {boolean}n */n this.dirty = false;n /**n * @privaten * @type {number}n */n this.renderedLayerRevision;n /**n * @privaten * @type {import("../../transform").Transform}n */n this.renderedPixelToCoordinateTransform = null;n /**n * @privaten * @type {number}n */n this.renderedRotation;n /**n * @privaten * @type {!Object<string, import("../../VectorRenderTile.js").default>}n */n this.renderTileImageQueue = {};n /**n * @type {Object<string, import("../../events.js").EventsKey>}n */n this.tileListenerKeys = {};n /**n * @privaten * @type {import("../../transform.js").Transform}n */n this.tmpTransform = createTransform();n return _this;n }n /**n * @param {import("../../VectorRenderTile.js").default} tile Tile.n * @param {number} pixelRatio Pixel ratio.n * @param {import("../../proj/Projection").default} projection Projection.n * @param {boolean} queue Queue tile for rendering.n * @return {boolean|undefined} Tile needs to be rendered.n */n CanvasVectorTileLayerRenderer.prototype.prepareTile = function (tile, pixelRatio, projection, queue) {n var render;n var tileUid = getUid(tile);n var state = tile.getState();n if (((state === TileState.LOADED && tile.hifi) ||n state === TileState.ERROR || state === TileState.ABORT) &&n tileUid in this.tileListenerKeys_) {n unlistenByKey(this.tileListenerKeys_);n delete this.tileListenerKeys_;n }n if (state === TileState.LOADED || state === TileState.ERROR) {n this.updateExecutorGroup_(tile, pixelRatio, projection);n if (this.tileImageNeedsRender_(tile, pixelRatio, projection)) {n render = true;n if (queue) {n this.renderTileImageQueue_ = tile;n }n }n }n return render;n };n /**n * @inheritDocn */n CanvasVectorTileLayerRenderer.prototype.getTile = function (z, x, y, frameState) {n var tile = /** @type {import("../../VectorRenderTile.js").default} */ (_super.prototype.getTile.call(this, z, x, y, frameState));n var pixelRatio = frameState.pixelRatio;n var viewState = frameState.viewState;n var resolution = viewState.resolution;n var projection = viewState.projection;n if (tile.getState() < TileState.LOADED) {n tile.wantedResolution = resolution;n var tileUid = getUid(tile);n if (!(tileUid in this.tileListenerKeys_)) {n var listenerKey = listen(tile, EventType.CHANGE, this.prepareTile.bind(this, tile, pixelRatio, projection, true));n this.tileListenerKeys_ = listenerKey;n }n }n else {n var viewHints = frameState.viewHints;n var hifi = !(viewHints || viewHints);n if (hifi || !tile.wantedResolution) {n tile.wantedResolution = resolution;n }n var render = this.prepareTile(tile, pixelRatio, projection, false);n if (render) {n this.renderTileImage_(tile, frameState);n }n }n return tile;n };n /**n * @inheritdocn */n CanvasVectorTileLayerRenderer.prototype.isDrawableTile = function (tile) {n return _super.prototype.isDrawableTile.call(this, tile) && tile.hasContext(this.getLayer());n };n /**n * @inheritDocn */n CanvasVectorTileLayerRenderer.prototype.getTileImage = function (tile) {n return tile.getImage(this.getLayer());n };n /**n * @inheritDocn */n CanvasVectorTileLayerRenderer.prototype.prepareFrame = function (frameState) {n var layerRevision = this.getLayer().getRevision();n if (this.renderedLayerRevision_ != layerRevision) {n this.renderedTiles.length = 0;n }n this.renderedLayerRevision_ = layerRevision;n return _super.prototype.prepareFrame.call(this, frameState);n };n /**n * @param {import("../../VectorRenderTile.js").default} tile Tile.n * @param {number} pixelRatio Pixel ratio.n * @param {import("../../proj/Projection.js").default} projection Projection.n * @privaten */n CanvasVectorTileLayerRenderer.prototype.updateExecutorGroup_ = function (tile, pixelRatio, projection) {n var layer = /** @type {import("../../layer/VectorTile.js").default} */ (this.getLayer());n var revision = layer.getRevision();n var renderOrder = layer.getRenderOrder() || null;n var resolution = tile.wantedResolution;n var builderState = tile.getReplayState(layer);n if (!builderState.dirty && builderState.renderedResolution === resolution &&n builderState.renderedRevision == revision &&n builderState.renderedRenderOrder == renderOrder && builderState.renderedZ === tile.sourceZ) {n return;n }n var source = layer.getSource();n var sourceTileGrid = source.getTileGrid();n var tileGrid = source.getTileGridForProjection(projection);n var tileExtent = tileGrid.getTileCoordExtent(tile.wrappedTileCoord);n var sourceTiles = source.getSourceTiles(pixelRatio, projection, tile);n var layerUid = getUid(layer);n var executorGroups = tile.executorGroups;n if (executorGroups) {n for (var i = 0, ii = executorGroups.length; i < ii; ++i) {n executorGroups.dispose();n }n }n tile.hitDetectionImageData = null;n tile.executorGroups = [];n var _loop_1 = function (t, tt) {n var sourceTile = sourceTiles;n if (sourceTile.getState() != TileState.LOADED) {n return "continue";n }n var sourceTileCoord = sourceTile.tileCoord;n var sourceTileExtent = sourceTileGrid.getTileCoordExtent(sourceTileCoord);n var sharedExtent = getIntersection(tileExtent, sourceTileExtent);n var bufferedExtent = equals(sourceTileExtent, sharedExtent) ? null :n buffer(sharedExtent, layer.getRenderBuffer() * resolution, this_1.tmpExtent);n builderState.dirty = false;n var builderGroup = new CanvasBuilderGroup(0, sharedExtent, resolution, pixelRatio, layer.getDeclutter());n var squaredTolerance = getSquaredRenderTolerance(resolution, pixelRatio);n /**n * @param {import("../../Feature.js").FeatureLike} feature Feature.n * @this {CanvasVectorTileLayerRenderer}n */n var render = function (feature) {n var styles;n var styleFunction = feature.getStyleFunction() || layer.getStyleFunction();n if (styleFunction) {n styles = styleFunction(feature, resolution);n }n if (styles) {n var dirty = this.renderFeature(feature, squaredTolerance, styles, builderGroup);n this.dirty_ = this.dirty_ || dirty;n builderState.dirty = builderState.dirty || dirty;n }n };n var features = sourceTile.getFeatures();n if (renderOrder && renderOrder !== builderState.renderedRenderOrder) {n features.sort(renderOrder);n }n for (var i = 0, ii = features.length; i < ii; ++i) {n var feature = features;n if (!bufferedExtent || intersects(bufferedExtent, feature.getGeometry().getExtent())) {n render.call(this_1, feature);n }n }n var executorGroupInstructions = builderGroup.finish();n // no need to clip when the render tile is covered by a single source tilen var replayExtent = layer.getDeclutter() && sourceTiles.length === 1 ?n null :n sharedExtent;n var renderingReplayGroup = new CanvasExecutorGroup(replayExtent, resolution, pixelRatio, source.getOverlaps(), executorGroupInstructions, layer.getRenderBuffer());n tile.executorGroups.push(renderingReplayGroup);n };n var this_1 = this;n for (var t = 0, tt = sourceTiles.length; t < tt; ++t) {n _loop_1(t, tt);n }n builderState.renderedRevision = revision;n builderState.renderedZ = tile.sourceZ;n builderState.renderedRenderOrder = renderOrder;n builderState.renderedResolution = resolution;n };n /**n * @inheritDocn */n CanvasVectorTileLayerRenderer.prototype.forEachFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, callback, declutteredFeatures) {n var resolution = frameState.viewState.resolution;n var rotation = frameState.viewState.rotation;n hitTolerance = hitTolerance == undefined ? 0 : hitTolerance;n var layer = /** @type {import("../../layer/VectorTile.js").default} */ (this.getLayer());n var declutter = layer.getDeclutter();n var source = layer.getSource();n var tileGrid = source.getTileGridForProjection(frameState.viewState.projection);n /** @type {!Object<string, boolean>} */n var features = {};n var renderedTiles = /** @type {Array<import("../../VectorRenderTile.js").default>} */ (this.renderedTiles);n var found;n var i, ii;n var _loop_2 = function () {n var tile = renderedTiles;n var tileExtent = tileGrid.getTileCoordExtent(tile.wrappedTileCoord);n var tileContainsCoordinate = containsCoordinate(tileExtent, coordinate);n if (!declutter) {n // When not decluttering, we only need to consider the tile that contains the givenn // coordinate, because each feature will be rendered for each tile that contains it.n if (!tileContainsCoordinate) {n return "continue";n }n }n var executorGroups = tile.executorGroups;n for (var t = 0, tt = executorGroups.length; t < tt; ++t) {n var executorGroup = executorGroups;n found = found || executorGroup.forEachFeatureAtCoordinate(coordinate, resolution, rotation, hitTolerance, n /**n * @param {import("../../Feature.js").FeatureLike} feature Feature.n * @return {?} Callback result.n */n function (feature) {n if (tileContainsCoordinate || (declutteredFeatures && declutteredFeatures.indexOf(feature) !== -1)) {n var key = feature.getId();n if (key === undefined) {n key = getUid(feature);n }n if (!(key in features)) {n features = true;n return callback(feature, layer);n }n }n }, layer.getDeclutter() ? declutteredFeatures : null);n }n };n for (i = 0, ii = renderedTiles.length; i < ii; ++i) {n _loop_2();n }n return found;n };n /**n * @inheritDocn */n CanvasVectorTileLayerRenderer.prototype.getFeatures = function (pixel) {n return new Promise(function (resolve, reject) {n var layer = /** @type {import("../../layer/VectorTile.js").default} */ (this.getLayer());n var source = layer.getSource();n var projection = this.renderedProjection;n var projectionExtent = projection.getExtent();n var resolution = this.renderedResolution;n var tileGrid = source.getTileGridForProjection(projection);n var coordinate = applyTransform(this.renderedPixelToCoordinateTransform_, pixel.slice());n var tileCoord = tileGrid.getTileCoordForCoordAndResolution(coordinate, resolution);n var tile;n for (var i = 0, ii = this.renderedTiles.length; i < ii; ++i) {n if (tileCoord.toString() === this.renderedTiles.tileCoord.toString()) {n tile = this.renderedTiles;n if (tile.getState() === TileState.LOADED && tile.hifi) {n var extent_1 = tileGrid.getTileCoordExtent(tile.tileCoord);n if (source.getWrapX() && projection.canWrapX() && !containsExtent(projectionExtent, extent_1)) {n var worldWidth = getWidth(projectionExtent);n var worldsAway = Math.floor((coordinate - projectionExtent) / worldWidth);n coordinate -= (worldsAway * worldWidth);n }n break;n }n tile = undefined;n }n }n if (!tile) {n resolve([]);n return;n }n var extent = tileGrid.getTileCoordExtent(tile.wrappedTileCoord);n var corner = getTopLeft(extent);n var tilePixel = [n (coordinate - corner) / resolution,n (corner - coordinate) / resolutionn ];n var features = tile.getSourceTiles().reduce(function (accumulator, sourceTile) {n return accumulator.concat(sourceTile.getFeatures());n }, []);n if (!tile.hitDetectionImageData) {n var tileSize_1 = toSize(tileGrid.getTileSize(tileGrid.getZForResolution(resolution)));n var size = [tileSize_1 / 2, tileSize_1 / 2];n var rotation_1 = this.renderedRotation_;n var transforms_1 = [n this.getRenderTransform(tileGrid.getTileCoordCenter(tile.wrappedTileCoord), resolution, 0, 0.5, size, size, 0)n ];n requestAnimationFrame(function () {n tile.hitDetectionImageData = createHitDetectionImageData(tileSize_1, transforms_1, features, layer.getStyleFunction(), tileGrid.getTileCoordExtent(tile.wrappedTileCoord), tile.getReplayState(layer).renderedResolution, rotation_1);n resolve(hitDetect(tilePixel, features, tile.hitDetectionImageData));n });n }n else {n resolve(hitDetect(tilePixel, features, tile.hitDetectionImageData));n }n }.bind(this));n };n /**n * @inheritDocn */n CanvasVectorTileLayerRenderer.prototype.handleFontsChanged = function () {n clear(this.renderTileImageQueue_);n var layer = this.getLayer();n if (layer.getVisible() && this.renderedLayerRevision_ !== undefined) {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 * @privaten */n CanvasVectorTileLayerRenderer.prototype.handleStyleImageChange_ = function (event) {n this.renderIfReadyAndVisible();n };n /**n * @inheritDocn */n CanvasVectorTileLayerRenderer.prototype.renderFrame = function (frameState, target) {n var viewHints = frameState.viewHints;n var hifi = !(viewHints || viewHints);n this.renderQueuedTileImages_(hifi, frameState);n _super.prototype.renderFrame.call(this, frameState, target);n this.renderedPixelToCoordinateTransform_ = frameState.pixelToCoordinateTransform.slice();n this.renderedRotation_ = frameState.viewState.rotation;n var layer = /** @type {import("../../layer/VectorTile.js").default} */ (this.getLayer());n var renderMode = layer.getRenderMode();n if (renderMode === VectorTileRenderType.IMAGE) {n return this.container;n }n var source = layer.getSource();n // Unqueue tiles from the image queue when we don't need any moren var usedTiles = frameState.usedTiles;n for (var tileUid in this.renderTileImageQueue_) {n if (!usedTiles || !(tileUid in usedTiles)) {n delete this.renderTileImageQueue_;n }n }n var context = this.context;n var declutterReplays = layer.getDeclutter() ? {} : null;n var replayTypes = VECTOR_REPLAYS;n var pixelRatio = frameState.pixelRatio;n var viewState = frameState.viewState;n var center = viewState.center;n var resolution = viewState.resolution;n var rotation = viewState.rotation;n var size = frameState.size;n var width = Math.round(size * pixelRatio);n var height = Math.round(size * pixelRatio);n var tiles = this.renderedTiles;n var tileGrid = source.getTileGridForProjection(frameState.viewState.projection);n var clips = [];n var clipZs = [];n for (var i = tiles.length - 1; i >= 0; –i) {n var tile = /** @type {import("../../VectorRenderTile.js").default} */ (tiles);n if (tile.getState() == TileState.ABORT) {n continue;n }n var tileCoord = tile.tileCoord;n var tileExtent = tileGrid.getTileCoordExtent(tile.wrappedTileCoord);n var worldOffset = tileGrid.getTileCoordExtent(tileCoord, this.tmpExtent) - tileExtent;n var transform = multiply(scale(this.inversePixelTransform.slice(), 1 / pixelRatio, 1 / pixelRatio), this.getRenderTransform(center, resolution, rotation, pixelRatio, width, height, worldOffset));n var executorGroups = tile.executorGroups;n var clipped = false;n for (var t = 0, tt = executorGroups.length; t < tt; ++t) {n var executorGroup = executorGroups;n if (!executorGroup.hasExecutors(replayTypes)) {n // sourceTile has no instructions of the types we want to rendern continue;n }n var currentZ = tile.tileCoord;n var currentClip = void 0;n if (!declutterReplays && !clipped) {n currentClip = executorGroup.getClipCoords(transform);n context.save();n // Create a clip mask for regions in this low resolution tile that aren // already filled by a higher resolution tilen for (var j = 0, jj = clips.length; j < jj; ++j) {n var clip = clips;n if (currentZ < clipZs) {n context.beginPath();n // counter-clockwise (outer ring) for current tilen context.moveTo(currentClip, currentClip);n context.lineTo(currentClip, currentClip);n context.lineTo(currentClip, currentClip);n context.lineTo(currentClip, currentClip);n // clockwise (inner ring) for higher resolution tilen context.moveTo(clip, clip);n context.lineTo(clip, clip);n context.lineTo(clip, clip);n context.lineTo(clip, clip);n context.clip();n }n }n }n executorGroup.execute(context, transform, rotation, hifi, replayTypes, declutterReplays);n if (!declutterReplays && !clipped) {n context.restore();n clips.push(currentClip);n clipZs.push(currentZ);n clipped = true;n }n }n }n if (declutterReplays) {n var layerState = frameState.layerStatesArray;n replayDeclutter(declutterReplays, context, rotation, layerState.opacity, hifi, frameState.declutterItems);n }n return this.container;n };n /**n * @param {boolean} hifi We have time to render a high fidelity map image.n * @param {import('../../PluggableMap.js').FrameState} frameState Frame state.n */n CanvasVectorTileLayerRenderer.prototype.renderQueuedTileImages_ = function (hifi, frameState) {n // When we don't have time to render hifi, only render tiles until we have used upn // half of the frame budget of 16 msn for (var uid in this.renderTileImageQueue_) {n if (!hifi && Date.now() - frameState.time > 8) {n frameState.animate = true;n break;n }n var tile = this.renderTileImageQueue_;n delete this.renderTileImageQueue_;n this.renderTileImage_(tile, frameState);n }n };n /**n * @param {import("../../Feature.js").FeatureLike} feature Feature.n * @param {number} squaredTolerance Squared tolerance.n * @param {import("../../style/Style.js").default|Array<import("../../style/Style.js").default>} styles The style or array of styles.n * @param {import("../../render/canvas/BuilderGroup.js").default} executorGroup Replay group.n * @return {boolean} `true` if an image is loading.n */n CanvasVectorTileLayerRenderer.prototype.renderFeature = function (feature, squaredTolerance, styles, executorGroup) {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 = renderFeature(executorGroup, feature, styles, squaredTolerance, this.boundHandleStyleImageChange_) || loading;n }n }n else {n loading = renderFeature(executorGroup, feature, styles, squaredTolerance, this.boundHandleStyleImageChange_);n }n return loading;n };n /**n * @param {import("../../VectorRenderTile.js").default} tile Tile.n * @param {number} pixelRatio Pixel ratio.n * @param {import("../../proj/Projection.js").default} projection Projection.n * @return {boolean} A new tile image was rendered.n * @privaten */n CanvasVectorTileLayerRenderer.prototype.tileImageNeedsRender_ = function (tile, pixelRatio, projection) {n var layer = /** @type {import("../../layer/VectorTile.js").default} */ (this.getLayer());n var replayState = tile.getReplayState(layer);n var revision = layer.getRevision();n var sourceZ = tile.sourceZ;n var resolution = tile.wantedResolution;n return replayState.renderedTileResolution !== resolution || replayState.renderedTileRevision !== revision || replayState.renderedTileZ !== sourceZ;n };n /**n * @param {import("../../VectorRenderTile.js").default} tile Tile.n * @param {import("../../PluggableMap").FrameState} frameState Frame state.n * @privaten */n CanvasVectorTileLayerRenderer.prototype.renderTileImage_ = function (tile, frameState) {n var layer = /** @type {import("../../layer/VectorTile.js").default} */ (this.getLayer());n var replayState = tile.getReplayState(layer);n var revision = layer.getRevision();n var executorGroups = tile.executorGroups;n replayState.renderedTileRevision = revision;n replayState.renderedTileZ = tile.sourceZ;n var tileCoord = tile.wrappedTileCoord;n var z = tileCoord;n var source = layer.getSource();n var pixelRatio = frameState.pixelRatio;n var viewState = frameState.viewState;n var projection = viewState.projection;n var tileGrid = source.getTileGridForProjection(projection);n var tileResolution = tileGrid.getResolution(tile.tileCoord);n var renderPixelRatio = frameState.pixelRatio / tile.wantedResolution * tileResolution;n var resolution = tileGrid.getResolution(z);n var context = tile.getContext(layer);n // Increase tile size when overzooming for low pixel ratio, to avoid blurry tilesn pixelRatio = Math.max(pixelRatio, renderPixelRatio / pixelRatio);n var size = source.getTilePixelSize(z, pixelRatio, projection);n context.canvas.width = size;n context.canvas.height = size;n var renderScale = pixelRatio / renderPixelRatio;n if (renderScale !== 1) {n var canvasTransform = resetTransform(this.tmpTransform_);n scaleTransform(canvasTransform, renderScale, renderScale);n context.setTransform.apply(context, canvasTransform);n }n var tileExtent = tileGrid.getTileCoordExtent(tileCoord, this.tmpExtent);n var pixelScale = renderPixelRatio / resolution;n var transform = resetTransform(this.tmpTransform_);n scaleTransform(transform, pixelScale, -pixelScale);n translateTransform(transform, -tileExtent, -tileExtent);n for (var i = 0, ii = executorGroups.length; i < ii; ++i) {n var executorGroup = executorGroups;n executorGroup.execute(context, transform, 0, true, IMAGE_REPLAYS);n }n replayState.renderedTileResolution = tile.wantedResolution;n };n return CanvasVectorTileLayerRenderer;n}(CanvasTileLayerRenderer));nexport default CanvasVectorTileLayerRenderer;n//# sourceMappingURL=VectorTileLayer.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/layer/Vectorn */nimport BaseVectorLayer from './BaseVector.js';nimport CanvasVectorLayerRenderer from '../renderer/canvas/VectorLayer.js';n/**n * @classdescn * 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 then * options means that `title` is observable, and has get/set accessors.n *n * @extends {BaseVectorLayer<import("../source/Vector.js").default>}n * @apin */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 /**n * Create a renderer for this layer.n * @return {import("../renderer/Layer.js").default} A layer renderer.n * @protectedn */n VectorLayer.prototype.createRenderer = function () {n return new CanvasVectorLayerRenderer(this);n };n return VectorLayer;n}(BaseVectorLayer));nexport default VectorLayer;n//# sourceMappingURL=Vector.js.map”,“/**n * @module ol/geom/flat/interpolaten */nimport { binarySearch } from '../../array.js';nimport { lerp } from '../../math.js';n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @param {number} fraction Fraction.n * @param {Array<number>=} opt_dest Destination.n * @return {Array<number>} Destination.n */nexport function interpolatePoint(flatCoordinates, offset, end, stride, fraction, opt_dest) {n var pointX = NaN;n var pointY = NaN;n var n = (end - offset) / stride;n if (n === 1) {n pointX = flatCoordinates;n pointY = flatCoordinates[offset + 1];n }n else if (n == 2) {n pointX = (1 - fraction) * flatCoordinates +n fraction * flatCoordinates[offset + stride];n pointY = (1 - fraction) * flatCoordinates[offset + 1] +n fraction * flatCoordinates[offset + stride + 1];n }n else if (n !== 0) {n var x1 = flatCoordinates;n var y1 = flatCoordinates[offset + 1];n var length_1 = 0;n var cumulativeLengths = [0];n for (var i = offset + stride; i < end; i += stride) {n var x2 = flatCoordinates;n var y2 = flatCoordinates[i + 1];n length_1 += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));n cumulativeLengths.push(length_1);n x1 = x2;n y1 = y2;n }n var target = fraction * length_1;n var index = binarySearch(cumulativeLengths, target);n if (index < 0) {n var t = (target - cumulativeLengths[-index - 2]) /n (cumulativeLengths[-index - 1] - cumulativeLengths[-index - 2]);n var o = offset + (-index - 2) * stride;n pointX = lerp(flatCoordinates, flatCoordinates[o + stride], t);n pointY = lerp(flatCoordinates[o + 1], flatCoordinates[o + stride + 1], t);n }n else {n pointX = flatCoordinates[offset + index * stride];n pointY = flatCoordinates[offset + index * stride + 1];n }n }n if (opt_dest) {n opt_dest = pointX;n opt_dest = pointY;n return opt_dest;n }n else {n return [pointX, pointY];n }n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @param {number} m M.n * @param {boolean} extrapolate Extrapolate.n * @return {import("../../coordinate.js").Coordinate} Coordinate.n */nexport function lineStringCoordinateAtM(flatCoordinates, offset, end, stride, m, extrapolate) {n if (end == offset) {n return null;n }n var coordinate;n if (m < flatCoordinates[offset + stride - 1]) {n if (extrapolate) {n coordinate = flatCoordinates.slice(offset, offset + stride);n coordinate[stride - 1] = m;n return coordinate;n }n else {n return null;n }n }n else if (flatCoordinates[end - 1] < m) {n if (extrapolate) {n coordinate = flatCoordinates.slice(end - stride, end);n coordinate[stride - 1] = m;n return coordinate;n }n else {n return null;n }n }n // FIXME use O(1) searchn if (m == flatCoordinates[offset + stride - 1]) {n return flatCoordinates.slice(offset, offset + stride);n }n var lo = offset / stride;n var hi = end / stride;n while (lo < hi) {n var mid = (lo + hi) >> 1;n if (m < flatCoordinates[(mid + 1) * stride - 1]) {n hi = mid;n }n else {n lo = mid + 1;n }n }n var m0 = flatCoordinates[lo * stride - 1];n if (m == m0) {n return flatCoordinates.slice((lo - 1) * stride, (lo - 1) * stride + stride);n }n var m1 = flatCoordinates[(lo + 1) * stride - 1];n var t = (m - m0) / (m1 - m0);n coordinate = [];n for (var i = 0; i < stride - 1; ++i) {n coordinate.push(lerp(flatCoordinates[(lo - 1) * stride + i], flatCoordinates[lo * stride + i], t));n }n coordinate.push(m);n return coordinate;n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<number>} ends Ends.n * @param {number} stride Stride.n * @param {number} m M.n * @param {boolean} extrapolate Extrapolate.n * @param {boolean} interpolate Interpolate.n * @return {import("../../coordinate.js").Coordinate} Coordinate.n */nexport function lineStringsCoordinateAtM(flatCoordinates, offset, ends, stride, m, extrapolate, interpolate) {n if (interpolate) {n return lineStringCoordinateAtM(flatCoordinates, offset, ends[ends.length - 1], stride, m, extrapolate);n }n var coordinate;n if (m < flatCoordinates[stride - 1]) {n if (extrapolate) {n coordinate = flatCoordinates.slice(0, stride);n coordinate[stride - 1] = m;n return coordinate;n }n else {n return null;n }n }n if (flatCoordinates[flatCoordinates.length - 1] < m) {n if (extrapolate) {n coordinate = flatCoordinates.slice(flatCoordinates.length - stride);n coordinate[stride - 1] = m;n return coordinate;n }n else {n return null;n }n }n for (var i = 0, ii = ends.length; i < ii; ++i) {n var end = ends;n if (offset == end) {n continue;n }n if (m < flatCoordinates[offset + stride - 1]) {n return null;n }n else if (m <= flatCoordinates[end - 1]) {n return lineStringCoordinateAtM(flatCoordinates, offset, end, stride, m, false);n }n offset = end;n }n return null;n}n//# sourceMappingURL=interpolate.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/geom/LineStringn */nimport { extend } from '../array.js';nimport { closestSquaredDistanceXY } from '../extent.js';nimport GeometryLayout from './GeometryLayout.js';nimport GeometryType from './GeometryType.js';nimport SimpleGeometry from './SimpleGeometry.js';nimport { assignClosestPoint, maxSquaredDelta } from './flat/closest.js';nimport { deflateCoordinates } from './flat/deflate.js';nimport { inflateCoordinates } from './flat/inflate.js';nimport { interpolatePoint, lineStringCoordinateAtM } from './flat/interpolate.js';nimport { intersectsLineString } from './flat/intersectsextent.js';nimport { lineStringLength } from './flat/length.js';nimport { forEach as forEachSegment } from './flat/segments.js';nimport { douglasPeucker } from './flat/simplify.js';n/**n * @classdescn * Linestring geometry.n *n * @apin */nvar LineString = /** @class */ (function (_super) {n __extends(LineString, _super);n /**n * @param {Array<import("../coordinate.js").Coordinate>|Array<number>} coordinates Coordinates.n * For internal use, flat coordinates in combination with `opt_layout` are also accepted.n * @param {GeometryLayout=} opt_layout Layout.n */n function LineString(coordinates, opt_layout) {n var _this = _super.call(this) || this;n /**n * @privaten * @type {import("../coordinate.js").Coordinate}n */n this.flatMidpoint = null;n /**n * @privaten * @type {number}n */n this.flatMidpointRevision = -1;n /**n * @privaten * @type {number}n */n this.maxDelta = -1;n /**n * @privaten * @type {number}n */n this.maxDeltaRevision = -1;n if (opt_layout !== undefined && !Array.isArray(coordinates)) {n _this.setFlatCoordinates(opt_layout, /** @type {Array<number>} */ (coordinates));n }n else {n _this.setCoordinates(/** @type {Array<import("../coordinate.js").Coordinate>} */ (coordinates), opt_layout);n }n return _this;n }n /**n * Append the passed coordinate to the coordinates of the linestring.n * @param {import("../coordinate.js").Coordinate} coordinate Coordinate.n * @apin */n LineString.prototype.appendCoordinate = function (coordinate) {n if (!this.flatCoordinates) {n this.flatCoordinates = coordinate.slice();n }n else {n extend(this.flatCoordinates, coordinate);n }n this.changed();n };n /**n * Make a complete copy of the geometry.n * @return {!LineString} Clone.n * @overriden * @apin */n LineString.prototype.clone = function () {n return new LineString(this.flatCoordinates.slice(), this.layout);n };n /**n * @inheritDocn */n LineString.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_, false, x, y, closestPoint, minSquaredDistance);n };n /**n * Iterate over each segment, calling the provided callback.n * If the callback returns a truthy value the function returns thatn * value immediately. Otherwise the function returns `false`.n *n * @param {function(this: S, import("../coordinate.js").Coordinate, import("../coordinate.js").Coordinate): T} callback Functionn * called for each segment. The function will receive two arguments, the start and end coordinates of the segment.n * @return {T|boolean} Value.n * @template T,Sn * @apin */n LineString.prototype.forEachSegment = function (callback) {n return forEachSegment(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, callback);n };n /**n * Returns the coordinate at `m` using linear interpolation, or `null` if non * such coordinate exists.n *n * `opt_extrapolate` controls extrapolation beyond the range of Ms in then * MultiLineString. If `opt_extrapolate` is `true` then Ms less than the firstn * M will return the first coordinate and Ms greater than the last M willn * return the last coordinate.n *n * @param {number} m M.n * @param {boolean=} opt_extrapolate Extrapolate. Default is `false`.n * @return {import("../coordinate.js").Coordinate} Coordinate.n * @apin */n LineString.prototype.getCoordinateAtM = function (m, opt_extrapolate) {n if (this.layout != GeometryLayout.XYM &&n this.layout != GeometryLayout.XYZM) {n return null;n }n var extrapolate = opt_extrapolate !== undefined ? opt_extrapolate : false;n return lineStringCoordinateAtM(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, m, extrapolate);n };n /**n * Return the coordinates of the linestring.n * @return {Array<import("../coordinate.js").Coordinate>} Coordinates.n * @overriden * @apin */n LineString.prototype.getCoordinates = function () {n return inflateCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);n };n /**n * Return the coordinate at the provided fraction along the linestring.n * The `fraction` is a number between 0 and 1, where 0 is the start of then * linestring and 1 is the end.n * @param {number} fraction Fraction.n * @param {import("../coordinate.js").Coordinate=} opt_dest Optional coordinate whose values willn * be modified. If not provided, a new coordinate will be returned.n * @return {import("../coordinate.js").Coordinate} Coordinate of the interpolated point.n * @apin */n LineString.prototype.getCoordinateAt = function (fraction, opt_dest) {n return interpolatePoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, fraction, opt_dest);n };n /**n * Return the length of the linestring on projected plane.n * @return {number} Length (on projected plane).n * @apin */n LineString.prototype.getLength = function () {n return lineStringLength(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);n };n /**n * @return {Array<number>} Flat midpoint.n */n LineString.prototype.getFlatMidpoint = function () {n if (this.flatMidpointRevision_ != this.getRevision()) {n this.flatMidpoint_ = this.getCoordinateAt(0.5, this.flatMidpoint_);n this.flatMidpointRevision_ = this.getRevision();n }n return this.flatMidpoint_;n };n /**n * @inheritDocn */n LineString.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 LineString(simplifiedFlatCoordinates, GeometryLayout.XY);n };n /**n * @inheritDocn * @apin */n LineString.prototype.getType = function () {n return GeometryType.LINE_STRING;n };n /**n * @inheritDocn * @apin */n LineString.prototype.intersectsExtent = function (extent) {n return intersectsLineString(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, extent);n };n /**n * Set the coordinates of the linestring.n * @param {!Array<import("../coordinate.js").Coordinate>} coordinates Coordinates.n * @param {GeometryLayout=} opt_layout Layout.n * @overriden * @apin */n LineString.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 LineString;n}(SimpleGeometry));nexport default LineString;n//# sourceMappingURL=LineString.js.map”,“/**n * @module ol/geom/flat/geodesicn */nimport { squaredSegmentDistance, toRadians, toDegrees } from '../../math.js';nimport { get as getProjection, getTransform } from '../../proj.js';n/**n * @param {function(number): import("../../coordinate.js").Coordinate} interpolate Interpolate function.n * @param {import("../../proj.js").TransformFunction} transform Transform from longitude/latitude ton * projected coordinates.n * @param {number} squaredTolerance Squared tolerance.n * @return {Array<number>} Flat coordinates.n */nfunction line(interpolate, transform, squaredTolerance) {n // FIXME reduce garbage generationn // FIXME optimize stack operationsn /** @type {Array<number>} */n var flatCoordinates = [];n var geoA = interpolate(0);n var geoB = interpolate(1);n var a = transform(geoA);n var b = transform(geoB);n /** @type {Array<import("../../coordinate.js").Coordinate>} */n var geoStack = [geoB, geoA];n /** @type {Array<import("../../coordinate.js").Coordinate>} */n var stack = [b, a];n /** @type {Array<number>} */n var fractionStack = [1, 0];n /** @type {!Object<string, boolean>} */n var fractions = {};n var maxIterations = 1e5;n var geoM, m, fracA, fracB, fracM, key;n while (–maxIterations > 0 && fractionStack.length > 0) {n // Pop the a coordinate off the stackn fracA = fractionStack.pop();n geoA = geoStack.pop();n a = stack.pop();n // Add the a coordinate if it has not been added yetn key = fracA.toString();n if (!(key in fractions)) {n flatCoordinates.push(a, a);n fractions = true;n }n // Pop the b coordinate off the stackn fracB = fractionStack.pop();n geoB = geoStack.pop();n b = stack.pop();n // Find the m point between the a and b coordinatesn fracM = (fracA + fracB) / 2;n geoM = interpolate(fracM);n m = transform(geoM);n if (squaredSegmentDistance(m, m, a, a, b, b) < squaredTolerance) {n // If the m point is sufficiently close to the straight line, then wen // discard it. Just use the b coordinate and move on to the next linen // segment.n flatCoordinates.push(b, b);n key = fracB.toString();n fractions = true;n }n else {n // Otherwise, we need to subdivide the current line segment. Split itn // into two and push the two line segments onto the stack.n fractionStack.push(fracB, fracM, fracM, fracA);n stack.push(b, m, m, a);n geoStack.push(geoB, geoM, geoM, geoA);n }n }n return flatCoordinates;n}n/**n * Generate a great-circle arcs between two lat/lon points.n * @param {number} lon1 Longitude 1 in degrees.n * @param {number} lat1 Latitude 1 in degrees.n * @param {number} lon2 Longitude 2 in degrees.n * @param {number} lat2 Latitude 2 in degrees.n * @param {import("../../proj/Projection.js").default} projection Projection.n * @param {number} squaredTolerance Squared tolerance.n * @return {Array<number>} Flat coordinates.n */nexport function greatCircleArc(lon1, lat1, lon2, lat2, projection, squaredTolerance) {n var geoProjection = getProjection('EPSG:4326');n var cosLat1 = Math.cos(toRadians(lat1));n var sinLat1 = Math.sin(toRadians(lat1));n var cosLat2 = Math.cos(toRadians(lat2));n var sinLat2 = Math.sin(toRadians(lat2));n var cosDeltaLon = Math.cos(toRadians(lon2 - lon1));n var sinDeltaLon = Math.sin(toRadians(lon2 - lon1));n var d = sinLat1 * sinLat2 + cosLat1 * cosLat2 * cosDeltaLon;n return line(n /**n * @param {number} frac Fraction.n * @return {import("../../coordinate.js").Coordinate} Coordinate.n */n function (frac) {n if (1 <= d) {n return [lon2, lat2];n }n var D = frac * Math.acos(d);n var cosD = Math.cos(D);n var sinD = Math.sin(D);n var y = sinDeltaLon * cosLat2;n var x = cosLat1 * sinLat2 - sinLat1 * cosLat2 * cosDeltaLon;n var theta = Math.atan2(y, x);n var lat = Math.asin(sinLat1 * cosD + cosLat1 * sinD * Math.cos(theta));n var lon = toRadians(lon1) +n Math.atan2(Math.sin(theta) * sinD * cosLat1, cosD - sinLat1 * Math.sin(lat));n return [toDegrees(lon), toDegrees(lat)];n }, getTransform(geoProjection, projection), squaredTolerance);n}n/**n * Generate a meridian (line at constant longitude).n * @param {number} lon Longitude.n * @param {number} lat1 Latitude 1.n * @param {number} lat2 Latitude 2.n * @param {import("../../proj/Projection.js").default} projection Projection.n * @param {number} squaredTolerance Squared tolerance.n * @return {Array<number>} Flat coordinates.n */nexport function meridian(lon, lat1, lat2, projection, squaredTolerance) {n var epsg4326Projection = getProjection('EPSG:4326');n return line(n /**n * @param {number} frac Fraction.n * @return {import("../../coordinate.js").Coordinate} Coordinate.n */n function (frac) {n return [lon, lat1 + ((lat2 - lat1) * frac)];n }, getTransform(epsg4326Projection, projection), squaredTolerance);n}n/**n * Generate a parallel (line at constant latitude).n * @param {number} lat Latitude.n * @param {number} lon1 Longitude 1.n * @param {number} lon2 Longitude 2.n * @param {import("../../proj/Projection.js").default} projection Projection.n * @param {number} squaredTolerance Squared tolerance.n * @return {Array<number>} Flat coordinates.n */nexport function parallel(lat, lon1, lon2, projection, squaredTolerance) {n var epsg4326Projection = getProjection('EPSG:4326');n return line(n /**n * @param {number} frac Fraction.n * @return {import("../../coordinate.js").Coordinate} Coordinate.n */n function (frac) {n return [lon1 + ((lon2 - lon1) * frac), lat];n }, getTransform(epsg4326Projection, projection), squaredTolerance);n}n//# sourceMappingURL=geodesic.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/layer/Graticulen */nimport VectorLayer from './Vector.js';nimport { assign } from '../obj.js';nimport { degreesToStringHDMS } from '../coordinate.js';nimport Text from '../style/Text.js';nimport Fill from '../style/Fill.js';nimport Stroke from '../style/Stroke.js';nimport LineString from '../geom/LineString.js';nimport VectorSource from '../source/Vector.js';nimport { equivalent as equivalentProjection, get as getProjection, getTransform, transformExtent } from '../proj.js';nimport { getCenter, intersects, equals, getIntersection, isEmpty } from '../extent.js';nimport { clamp } from '../math.js';nimport Style from '../style/Style.js';nimport Feature from '../Feature.js';nimport { bbox } from '../loadingstrategy.js';nimport { meridian, parallel } from '../geom/flat/geodesic.js';nimport GeometryLayout from '../geom/GeometryLayout.js';nimport Point from '../geom/Point.js';nimport Collection from '../Collection.js';n/**n * @type {Stroke}n * @privaten * @constn */nvar DEFAULT_STROKE_STYLE = new Stroke({n color: 'rgba(0,0,0,0.2)'n});n/**n * @type {Array<number>}n * @privaten */nvar INTERVALS = [n 90, 45, 30, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.01, 0.005, 0.002, 0.001n];n/**n * @typedef {Object} GraticuleLabelDataTypen * @property {Point} geomn * @property {string} textn */n/**n * @typedef {Object} Optionsn * @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 ben * rendered outside of this extent.n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layersn * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumedn * 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 ben * visible.n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer willn * be visible.n * @property {number} [maxLines=100] The maximum number of meridians andn * parallels from the center of the map. The default value of 100 means that atn * most 200 meridians and 200 parallels will be displayed. The default value isn * appropriate for conformal projections like Spherical Mercator. If youn * increase the value, more lines will be drawn and the drawing performance willn * decrease.n * @property {Stroke} [strokeStyle='rgba(0,0,0,0.2)'] Then * stroke style to use for drawing the graticule. If not provided, a not fullyn * opaque black will be used.n * @property {number} [targetSize=100] The target size of the graticule cells,n * in pixels.n * @property {boolean} [showLabels=false] Render a label with the respectiven * latitude/longitude for each graticule line.n * @property {function(number):string} [lonLabelFormatter] Label formatter forn * longitudes. This function is called with the longitude as argument, andn * should return a formatted string representing the longitude. By default,n * labels are formatted as degrees, minutes, seconds and hemisphere.n * @property {function(number):string} [latLabelFormatter] Label formatter forn * latitudes. This function is called with the latitude as argument, andn * should return a formatted string representing the latitude. By default,n * labels are formatted as degrees, minutes, seconds and hemisphere.n * @property {number} [lonLabelPosition=0] Longitude label position in fractionsn * (0..1) of view extent. 0 means at the bottom of the viewport, 1 means at then * top.n * @property {number} [latLabelPosition=1] Latitude label position in fractionsn * (0..1) of view extent. 0 means at the left of the viewport, 1 means at then * right.n * @property {Text} [lonLabelStyle] Longitude label textn * style. If not provided, the following style will be used:n * “`jsn * new Text({n * font: '12px Calibri,sans-serif',n * textBaseline: 'bottom',n * fill: new Fill({n * color: 'rgba(0,0,0,1)'n * }),n * stroke: new Stroke({n * color: 'rgba(255,255,255,1)',n * width: 3n * })n * });n * “`n * Note that the default's `textBaseline` configuration will not work well forn * `lonLabelPosition` configurations that position labels close to the top ofn * the viewport.n * @property {Text} [latLabelStyle] Latitude label text style.n * If not provided, the following style will be used:n * “`jsn * new Text({n * font: '12px Calibri,sans-serif',n * textAlign: 'end',n * fill: new Fill({n * color: 'rgba(0,0,0,1)'n * }),n * stroke: Stroke({n * color: 'rgba(255,255,255,1)',n * width: 3n * })n * });n * “`n * Note that the default's `textAlign` configuration will not work well forn * `latLabelPosition` configurations that position labels close to the left ofn * the viewport.n * @property {Array<number>} [intervals=[90, 45, 30, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.01, 0.005, 0.002, 0.001]]n * Intervals (in degrees) for the graticule. Example to limit graticules to 30 and 10 degrees intervals:n * “`jsn * [30, 10]n * “`n * @property {boolean} [wrapX=true] Whether to repeat the graticule horizontally.n */n/**n * @classdescn * Layer that renders a grid for a coordinate system.n *n * @fires import("../render/Event.js").RenderEventn * @apin */nvar Graticule = /** @class */ (function (_super) {n __extends(Graticule, _super);n /**n * @param {Options=} opt_options Options.n */n function Graticule(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n var baseOptions = assign({n updateWhileAnimating: true,n updateWhileInteracting: true,n renderBuffer: 0n }, options);n delete baseOptions.maxLines;n delete baseOptions.strokeStyle;n delete baseOptions.targetSize;n delete baseOptions.showLabels;n delete baseOptions.lonLabelFormatter;n delete baseOptions.latLabelFormatter;n delete baseOptions.lonLabelPosition;n delete baseOptions.latLabelPosition;n delete baseOptions.lonLabelStyle;n delete baseOptions.latLabelStyle;n delete baseOptions.intervals;n _this = _super.call(this, baseOptions) || this;n /**n * @type {import("../proj/Projection.js").default}n */n this.projection = null;n /**n * @type {number}n * @privaten */n this.maxLat = Infinity;n /**n * @type {number}n * @privaten */n this.maxLon = Infinity;n /**n * @type {number}n * @privaten */n this.minLat = -Infinity;n /**n * @type {number}n * @privaten */n this.minLon = -Infinity;n /**n * @type {number}n * @privaten */n this.maxLatP = Infinity;n /**n * @type {number}n * @privaten */n this.maxLonP = Infinity;n /**n * @type {number}n * @privaten */n this.minLatP = -Infinity;n /**n * @type {number}n * @privaten */n this.minLonP = -Infinity;n /**n * @type {number}n * @privaten */n this.targetSize = options.targetSize !== undefined ? options.targetSize : 100;n /**n * @type {number}n * @privaten */n this.maxLines = options.maxLines !== undefined ? options.maxLines : 100;n /**n * @type {Array<LineString>}n * @privaten */n this.meridians = [];n /**n * @type {Array<LineString>}n * @privaten */n this.parallels = [];n /**n * @type {Stroke}n * @privaten */n this.strokeStyle = options.strokeStyle !== undefined ? options.strokeStyle : DEFAULT_STROKE_STYLE;n /**n * @type {import("../proj.js").TransformFunction|undefined}n * @privaten */n this.fromLonLatTransform = undefined;n /**n * @type {import("../proj.js").TransformFunction|undefined}n * @privaten */n this.toLonLatTransform = undefined;n /**n * @type {import("../coordinate.js").Coordinate}n * @privaten */n this.projectionCenterLonLat = null;n /**n * @type {Array<GraticuleLabelDataType>}n * @privaten */n this.meridiansLabels = null;n /**n * @type {Array<GraticuleLabelDataType>}n * @privaten */n this.parallelsLabels = null;n if (options.showLabels) {n /**n * @type {null|function(number):string}n * @privaten */n this.lonLabelFormatter = options.lonLabelFormatter == undefined ?n degreesToStringHDMS.bind(_this, 'EW') : options.lonLabelFormatter;n /**n * @type {function(number):string}n * @privaten */n this.latLabelFormatter = options.latLabelFormatter == undefined ?n degreesToStringHDMS.bind(_this, 'NS') : options.latLabelFormatter;n /**n * Longitude label position in fractions (0..1) of view extent. 0 meansn * bottom, 1 means top.n * @type {number}n * @privaten */n this.lonLabelPosition = options.lonLabelPosition == undefined ? 0 :n options.lonLabelPosition;n /**n * Latitude Label position in fractions (0..1) of view extent. 0 means left, 1n * means right.n * @type {number}n * @privaten */n this.latLabelPosition = options.latLabelPosition == undefined ? 1 :n options.latLabelPosition;n /**n * @type {Style}n * @privaten */n this.lonLabelStyleBase = new Style({n text: options.lonLabelStyle !== undefined ? options.lonLabelStyle.clone() :n new Text({n font: '12px Calibri,sans-serif',n textBaseline: 'bottom',n fill: new Fill({n color: 'rgba(0,0,0,1)'n }),n stroke: new Stroke({n color: 'rgba(255,255,255,1)',n width: 3n })n })n });n /**n * @privaten * @param {import("../Feature").default} feature Featuren * @return {Style} stylen */n this.lonLabelStyle = function (feature) {n var label = feature.get('graticule_label');n this.lonLabelStyleBase_.getText().setText(label);n return this.lonLabelStyleBase_;n }.bind(_this);n /**n * @type {Style}n * @privaten */n this.latLabelStyleBase = new Style({n text: options.latLabelStyle !== undefined ? options.latLabelStyle.clone() :n new Text({n font: '12px Calibri,sans-serif',n textAlign: 'right',n fill: new Fill({n color: 'rgba(0,0,0,1)'n }),n stroke: new Stroke({n color: 'rgba(255,255,255,1)',n width: 3n })n })n });n /**n * @privaten * @param {import("../Feature").default} feature Featuren * @return {Style} stylen */n this.latLabelStyle = function (feature) {n var label = feature.get('graticule_label');n this.latLabelStyleBase_.getText().setText(label);n return this.latLabelStyleBase_;n }.bind(_this);n this.meridiansLabels = [];n this.parallelsLabels = [];n }n /**n * @type {Array<number>}n * @privaten */n this.intervals = options.intervals !== undefined ? options.intervals : INTERVALS;n // use a source with a custom loader for lines & textn _this.setSource(new VectorSource({n loader: _this.loaderFunction.bind(_this),n strategy: bbox,n features: new Collection(),n overlaps: false,n useSpatialIndex: false,n wrapX: options.wrapXn }));n /**n * feature pool to use when updating graticulen * @type {Array<Feature>}n * @privaten */n this.featurePool = [];n /**n * @type {Style}n * @privaten */n this.lineStyle = new Style({n stroke: this.strokeStylen });n /**n * @type {?import("../extent.js").Extent}n */n this.renderedExtent = null;n _this.setRenderOrder(null);n this.tmpExtent = null;n return _this;n }n /**n * Update geometries in the source based on current viewn * @param {import("../extent").Extent} extent Extentn * @param {number} resolution Resolutionn * @param {import("../proj/Projection.js").default} projection Projectionn */n Graticule.prototype.loaderFunction = function (extent, resolution, projection) {n var source = this.getSource();n // only consider the intersection between our own extent & the requested onen var layerExtent = this.getExtent() || [-Infinity, -Infinity, Infinity, Infinity];n var renderExtent = getIntersection(layerExtent, extent, this.tmpExtent_);n // we should not keep track of loaded extentsn setTimeout(function () {n source.removeLoadedExtent(extent);n }, 0);n if (this.renderedExtent_ && equals(this.renderedExtent_, renderExtent)) {n return;n }n this.renderedExtent_ = renderExtent;n // bail out if nothing to rendern if (isEmpty(renderExtent)) {n return;n }n // update projection infon var center = getCenter(renderExtent);n var squaredTolerance = resolution * resolution / 4;n var updateProjectionInfo = !this.projection_ ||n !equivalentProjection(this.projection_, projection);n if (updateProjectionInfo) {n this.updateProjectionInfo_(projection);n }n this.createGraticule_(renderExtent, center, resolution, squaredTolerance);n // first make sure we have enough features in the pooln var featureCount = this.meridians_.length + this.parallels_.length;n if (this.meridiansLabels_) {n featureCount += this.meridiansLabels_.length;n }n if (this.parallelsLabels_) {n featureCount += this.parallelsLabels_.length;n }n var feature;n while (featureCount > this.featurePool_.length) {n feature = new Feature();n this.featurePool_.push(feature);n }n var featuresColl = source.getFeaturesCollection();n featuresColl.clear();n var poolIndex = 0;n // add features for the lines & labelsn var i, l;n for (i = 0, l = this.meridians_.length; i < l; ++i) {n feature = this.featurePool_;n feature.setGeometry(this.meridians_);n feature.setStyle(this.lineStyle_);n featuresColl.push(feature);n }n for (i = 0, l = this.parallels_.length; i < l; ++i) {n feature = this.featurePool_;n feature.setGeometry(this.parallels_);n feature.setStyle(this.lineStyle_);n featuresColl.push(feature);n }n var labelData;n if (this.meridiansLabels_) {n for (i = 0, l = this.meridiansLabels_.length; i < l; ++i) {n labelData = this.meridiansLabels_;n feature = this.featurePool_;n feature.setGeometry(labelData.geom);n feature.setStyle(this.lonLabelStyle_);n feature.set('graticule_label', labelData.text);n featuresColl.push(feature);n }n }n if (this.parallelsLabels_) {n for (i = 0, l = this.parallelsLabels_.length; i < l; ++i) {n labelData = this.parallelsLabels_;n feature = this.featurePool_;n feature.setGeometry(labelData.geom);n feature.setStyle(this.latLabelStyle_);n feature.set('graticule_label', labelData.text);n featuresColl.push(feature);n }n }n };n /**n * @param {number} lon Longitude.n * @param {number} minLat Minimal latitude.n * @param {number} maxLat Maximal latitude.n * @param {number} squaredTolerance Squared tolerance.n * @param {import("../extent.js").Extent} extent Extent.n * @param {number} index Index.n * @return {number} Index.n * @privaten */n Graticule.prototype.addMeridian_ = function (lon, minLat, maxLat, squaredTolerance, extent, index) {n var lineString = this.getMeridian_(lon, minLat, maxLat, squaredTolerance, index);n if (intersects(lineString.getExtent(), extent)) {n if (this.meridiansLabels_) {n var textPoint = this.getMeridianPoint_(lineString, extent, index);n this.meridiansLabels_ = {n geom: textPoint,n text: this.lonLabelFormatter_(lon)n };n }n this.meridians_ = lineString;n }n return index;n };n /**n * @param {number} lat Latitude.n * @param {number} minLon Minimal longitude.n * @param {number} maxLon Maximal longitude.n * @param {number} squaredTolerance Squared tolerance.n * @param {import("../extent.js").Extent} extent Extent.n * @param {number} index Index.n * @return {number} Index.n * @privaten */n Graticule.prototype.addParallel_ = function (lat, minLon, maxLon, squaredTolerance, extent, index) {n var lineString = this.getParallel_(lat, minLon, maxLon, squaredTolerance, index);n if (intersects(lineString.getExtent(), extent)) {n if (this.parallelsLabels_) {n var textPoint = this.getParallelPoint_(lineString, extent, index);n this.parallelsLabels_ = {n geom: textPoint,n text: this.latLabelFormatter_(lat)n };n }n this.parallels_ = lineString;n }n return index;n };n /**n * @param {import("../extent.js").Extent} extent Extent.n * @param {import("../coordinate.js").Coordinate} center Center.n * @param {number} resolution Resolution.n * @param {number} squaredTolerance Squared tolerance.n * @privaten */n Graticule.prototype.createGraticule_ = function (extent, center, resolution, squaredTolerance) {n var interval = this.getInterval_(resolution);n if (interval == -1) {n this.meridians_.length = 0;n this.parallels_.length = 0;n if (this.meridiansLabels_) {n this.meridiansLabels_.length = 0;n }n if (this.parallelsLabels_) {n this.parallelsLabels_.length = 0;n }n return;n }n var centerLonLat = this.toLonLatTransform_(center);n var centerLon = centerLonLat;n var centerLat = centerLonLat;n var maxLines = this.maxLines_;n var cnt, idx, lat, lon;n var validExtent = [n Math.max(extent, this.minLonP_),n Math.max(extent, this.minLatP_),n Math.min(extent, this.maxLonP_),n Math.min(extent, this.maxLatP_)n ];n validExtent = transformExtent(validExtent, this.projection_, 'EPSG:4326');n var maxLat = validExtent;n var maxLon = validExtent;n var minLat = validExtent;n var minLon = validExtent;n // Create meridiansn centerLon = Math.floor(centerLon / interval) * interval;n lon = clamp(centerLon, this.minLon_, this.maxLon_);n idx = this.addMeridian_(lon, minLat, maxLat, squaredTolerance, extent, 0);n cnt = 0;n while (lon != this.minLon_ && cnt++ < maxLines) {n lon = Math.max(lon - interval, this.minLon_);n idx = this.addMeridian_(lon, minLat, maxLat, squaredTolerance, extent, idx);n }n lon = clamp(centerLon, this.minLon_, this.maxLon_);n cnt = 0;n while (lon != this.maxLon_ && cnt++ < maxLines) {n lon = Math.min(lon + interval, this.maxLon_);n idx = this.addMeridian_(lon, minLat, maxLat, squaredTolerance, extent, idx);n }n this.meridians_.length = idx;n if (this.meridiansLabels_) {n this.meridiansLabels_.length = idx;n }n // Create parallelsn centerLat = Math.floor(centerLat / interval) * interval;n lat = clamp(centerLat, this.minLat_, this.maxLat_);n idx = this.addParallel_(lat, minLon, maxLon, squaredTolerance, extent, 0);n cnt = 0;n while (lat != this.minLat_ && cnt++ < maxLines) {n lat = Math.max(lat - interval, this.minLat_);n idx = this.addParallel_(lat, minLon, maxLon, squaredTolerance, extent, idx);n }n lat = clamp(centerLat, this.minLat_, this.maxLat_);n cnt = 0;n while (lat != this.maxLat_ && cnt++ < maxLines) {n lat = Math.min(lat + interval, this.maxLat_);n idx = this.addParallel_(lat, minLon, maxLon, squaredTolerance, extent, idx);n }n this.parallels_.length = idx;n if (this.parallelsLabels_) {n this.parallelsLabels_.length = idx;n }n };n /**n * @param {number} resolution Resolution.n * @return {number} The interval in degrees.n * @privaten */n Graticule.prototype.getInterval_ = function (resolution) {n var centerLon = this.projectionCenterLonLat_;n var centerLat = this.projectionCenterLonLat_;n var interval = -1;n var target = Math.pow(this.targetSize_ * resolution, 2);n /** @type {Array<number>} **/n var p1 = [];n /** @type {Array<number>} **/n var p2 = [];n for (var i = 0, ii = this.intervals_.length; i < ii; ++i) {n var delta = this.intervals_ / 2;n p1 = centerLon - delta;n p1 = centerLat - delta;n p2 = centerLon + delta;n p2 = centerLat + delta;n this.fromLonLatTransform_(p1, p1);n this.fromLonLatTransform_(p2, p2);n var dist = Math.pow(p2 - p1, 2) + Math.pow(p2 - p1, 2);n if (dist <= target) {n break;n }n interval = this.intervals_;n }n return interval;n };n /**n * @param {number} lon Longitude.n * @param {number} minLat Minimal latitude.n * @param {number} maxLat Maximal latitude.n * @param {number} squaredTolerance Squared tolerance.n * @return {LineString} The meridian line string.n * @param {number} index Index.n * @privaten */n Graticule.prototype.getMeridian_ = function (lon, minLat, maxLat, squaredTolerance, index) {n var flatCoordinates = meridian(lon, minLat, maxLat, this.projection_, squaredTolerance);n var lineString = this.meridians_;n if (!lineString) {n lineString = new LineString(flatCoordinates, GeometryLayout.XY);n this.meridians_ = lineString;n }n else {n lineString.setFlatCoordinates(GeometryLayout.XY, flatCoordinates);n lineString.changed();n }n return lineString;n };n /**n * @param {LineString} lineString Meridiann * @param {import("../extent.js").Extent} extent Extent.n * @param {number} index Index.n * @return {Point} Meridian point.n * @privaten */n Graticule.prototype.getMeridianPoint_ = function (lineString, extent, index) {n var flatCoordinates = lineString.getFlatCoordinates();n var clampedBottom = Math.max(extent, flatCoordinates);n var clampedTop = Math.min(extent, flatCoordinates[flatCoordinates.length - 1]);n var lat = clamp(extent + Math.abs(extent - extent) * this.lonLabelPosition_, clampedBottom, clampedTop);n var coordinate = [flatCoordinates, lat];n var point;n if (index in this.meridiansLabels_) {n point = this.meridiansLabels_.geom;n point.setCoordinates(coordinate);n }n else {n point = new Point(coordinate);n }n return point;n };n /**n * Get the list of meridians. Meridians are lines of equal longitude.n * @return {Array<LineString>} The meridians.n * @apin */n Graticule.prototype.getMeridians = function () {n return this.meridians_;n };n /**n * @param {number} lat Latitude.n * @param {number} minLon Minimal longitude.n * @param {number} maxLon Maximal longitude.n * @param {number} squaredTolerance Squared tolerance.n * @return {LineString} The parallel line string.n * @param {number} index Index.n * @privaten */n Graticule.prototype.getParallel_ = function (lat, minLon, maxLon, squaredTolerance, index) {n var flatCoordinates = parallel(lat, minLon, maxLon, this.projection_, squaredTolerance);n var lineString = this.parallels_;n if (!lineString) {n lineString = new LineString(flatCoordinates, GeometryLayout.XY);n }n else {n lineString.setFlatCoordinates(GeometryLayout.XY, flatCoordinates);n lineString.changed();n }n return lineString;n };n /**n * @param {LineString} lineString Parallels.n * @param {import("../extent.js").Extent} extent Extent.n * @param {number} index Index.n * @return {Point} Parallel point.n * @privaten */n Graticule.prototype.getParallelPoint_ = function (lineString, extent, index) {n var flatCoordinates = lineString.getFlatCoordinates();n var clampedLeft = Math.max(extent, flatCoordinates);n var clampedRight = Math.min(extent, flatCoordinates[flatCoordinates.length - 2]);n var lon = clamp(extent + Math.abs(extent - extent) * this.latLabelPosition_, clampedLeft, clampedRight);n var coordinate = [lon, flatCoordinates];n var point;n if (index in this.parallelsLabels_) {n point = this.parallelsLabels_.geom;n point.setCoordinates(coordinate);n }n else {n point = new Point(coordinate);n }n return point;n };n /**n * Get the list of parallels. Parallels are lines of equal latitude.n * @return {Array<LineString>} The parallels.n * @apin */n Graticule.prototype.getParallels = function () {n return this.parallels_;n };n /**n * @param {import("../proj/Projection.js").default} projection Projection.n * @privaten */n Graticule.prototype.updateProjectionInfo_ = function (projection) {n var epsg4326Projection = getProjection('EPSG:4326');n var worldExtent = projection.getWorldExtent();n var worldExtentP = transformExtent(worldExtent, epsg4326Projection, projection);n this.maxLat_ = worldExtent;n this.maxLon_ = worldExtent;n this.minLat_ = worldExtent;n this.minLon_ = worldExtent;n this.maxLatP_ = worldExtentP;n this.maxLonP_ = worldExtentP;n this.minLatP_ = worldExtentP;n this.minLonP_ = worldExtentP;n this.fromLonLatTransform_ = getTransform(epsg4326Projection, projection);n this.toLonLatTransform_ = getTransform(projection, epsg4326Projection);n this.projectionCenterLonLat_ = this.toLonLatTransform_(getCenter(projection.getExtent()));n this.projection_ = projection;n };n return Graticule;n}(VectorLayer));nexport default Graticule;n//# sourceMappingURL=Graticule.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/layer/Heatmapn */nimport { getChangeEventType } from '../Object.js';nimport { createCanvasContext2D } from '../dom.js';nimport VectorLayer from './Vector.js';nimport { clamp } from '../math.js';nimport { assign } from '../obj.js';nimport WebGLPointsLayerRenderer from '../renderer/webgl/PointsLayer.js';n/**n * @typedef {Object} Optionsn * @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 ben * rendered outside of this extent.n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layersn * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumedn * 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 ben * visible.n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer willn * be visible.n * @property {Array<string>} [gradient=['#00f', '#0ff', '#0f0', '#ff0', '#f00']] The color gradientn * of the heatmap, specified as an array of CSS color strings.n * @property {number} [radius=8] Radius size in pixels.n * @property {number} [blur=15] Blur size in pixels.n * @property {string|function(import("../Feature.js").default):number} [weight='weight'] The featuren * attribute to use for the weight or a function that returns a weight from a feature. Weight valuesn * should range from 0 to 1 (and values outside will be clamped to that range).n * @property {import("../source/Vector.js").default} [source] Source.n */n/**n * @enum {string}n * @privaten */nvar Property = {n BLUR: 'blur',n GRADIENT: 'gradient',n RADIUS: 'radius'n};n/**n * @constn * @type {Array<string>}n */nvar DEFAULT_GRADIENT = ['#00f', '#0ff', '#0f0', '#ff0', '#f00'];n/**n * @classdescn * Layer for rendering vector data as a heatmap.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 then * options means that `title` is observable, and has get/set accessors.n *n * @fires import("../render/Event.js").RenderEventn * @apin */nvar Heatmap = /** @class */ (function (_super) {n __extends(Heatmap, _super);n /**n * @param {Options=} opt_options Options.n */n function Heatmap(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n var baseOptions = assign({}, options);n delete baseOptions.gradient;n delete baseOptions.radius;n delete baseOptions.blur;n delete baseOptions.weight;n _this = _super.call(this, baseOptions) || this;n /**n * @privaten * @type {HTMLCanvasElement}n */n this.gradient = null;n _this.addEventListener(getChangeEventType(Property.GRADIENT), this.handleGradientChanged);n _this.setGradient(options.gradient ? options.gradient : DEFAULT_GRADIENT);n _this.setBlur(options.blur !== undefined ? options.blur : 15);n _this.setRadius(options.radius !== undefined ? options.radius : 8);n var weight = options.weight ? options.weight : 'weight';n if (typeof weight === 'string') {n this.weightFunction = function (feature) {n return feature.get(weight);n };n }n else {n this.weightFunction = weight;n }n // For performance reasons, don't sort the features before rendering.n // The render order is not relevant for a heatmap representation.n _this.setRenderOrder(null);n return _this;n }n /**n * Return the blur size in pixels.n * @return {number} Blur size in pixels.n * @apin * @observablen */n Heatmap.prototype.getBlur = function () {n return /** @type {number} */ (this.get(Property.BLUR));n };n /**n * Return the gradient colors as array of strings.n * @return {Array<string>} Colors.n * @apin * @observablen */n Heatmap.prototype.getGradient = function () {n return /** @type {Array<string>} */ (this.get(Property.GRADIENT));n };n /**n * Return the size of the radius in pixels.n * @return {number} Radius size in pixel.n * @apin * @observablen */n Heatmap.prototype.getRadius = function () {n return /** @type {number} */ (this.get(Property.RADIUS));n };n /**n * @privaten */n Heatmap.prototype.handleGradientChanged_ = function () {n this.gradient_ = createGradient(this.getGradient());n };n /**n * Set the blur size in pixels.n * @param {number} blur Blur size in pixels.n * @apin * @observablen */n Heatmap.prototype.setBlur = function (blur) {n this.set(Property.BLUR, blur);n };n /**n * Set the gradient colors as array of strings.n * @param {Array<string>} colors Gradient.n * @apin * @observablen */n Heatmap.prototype.setGradient = function (colors) {n this.set(Property.GRADIENT, colors);n };n /**n * Set the size of the radius in pixels.n * @param {number} radius Radius size in pixel.n * @apin * @observablen */n Heatmap.prototype.setRadius = function (radius) {n this.set(Property.RADIUS, radius);n };n /**n * @inheritDocn */n Heatmap.prototype.createRenderer = function () {n return new WebGLPointsLayerRenderer(this, {n attributes: [n {n name: 'weight',n callback: function (feature) {n var weight = this.weightFunction_(feature);n return weight !== undefined ? clamp(weight, 0, 1) : 1;n }.bind(this)n }n ],n vertexShader: "\n precision mediump float;\n uniform mat4 u_projectionMatrix;\n uniform mat4 u_offsetScaleMatrix;\n uniform float u_size;\n attribute vec2 a_position;\n attribute float a_index;\n attribute float a_weight;\n\n varying vec2 v_texCoord;\n varying float v_weight;\n\n void main(void) {\n mat4 offsetMatrix = u_offsetScaleMatrix;\n float offsetX = a_index == 0.0 || a_index == 3.0 ? -u_size / 2.0 : u_size / 2.0;\n float offsetY = a_index == 0.0 || a_index == 1.0 ? -u_size / 2.0 : u_size / 2.0;\n vec4 offsets = offsetMatrix * vec4(offsetX, offsetY, 0.0, 0.0);\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;\n float u = a_index == 0.0 || a_index == 3.0 ? 0.0 : 1.0;\n float v = a_index == 0.0 || a_index == 1.0 ? 0.0 : 1.0;\n v_texCoord = vec2(u, v);\n v_weight = a_weight;\n }",n fragmentShader: "\n precision mediump float;\n uniform float u_blurSlope;\n\n varying vec2 v_texCoord;\n varying float v_weight;\n\n void main(void) {\n vec2 texCoord = v_texCoord * 2.0 - vec2(1.0, 1.0);\n float sqRadius = texCoord.x * texCoord.x + texCoord.y * texCoord.y;\n float value = (1.0 - sqrt(sqRadius)) * u_blurSlope;\n float alpha = smoothstep(0.0, 1.0, value) * v_weight;\n gl_FragColor = vec4(alpha, alpha, alpha, alpha);\n }",n hitVertexShader: "\n precision mediump float;\n uniform mat4 u_projectionMatrix;\n uniform mat4 u_offsetScaleMatrix;\n uniform float u_size;\n attribute vec2 a_position;\n attribute float a_index;\n attribute float a_weight;\n attribute vec4 a_hitColor;\n\n varying vec2 v_texCoord;\n varying float v_weight;\n varying vec4 v_hitColor;\n\n void main(void) {\n mat4 offsetMatrix = u_offsetScaleMatrix;\n float offsetX = a_index == 0.0 || a_index == 3.0 ? -u_size / 2.0 : u_size / 2.0;\n float offsetY = a_index == 0.0 || a_index == 1.0 ? -u_size / 2.0 : u_size / 2.0;\n vec4 offsets = offsetMatrix * vec4(offsetX, offsetY, 0.0, 0.0);\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;\n float u = a_index == 0.0 || a_index == 3.0 ? 0.0 : 1.0;\n float v = a_index == 0.0 || a_index == 1.0 ? 0.0 : 1.0;\n v_texCoord = vec2(u, v);\n v_hitColor = a_hitColor;\n v_weight = a_weight;\n }",n hitFragmentShader: "\n precision mediump float;\n uniform float u_blurSlope;\n\n varying vec2 v_texCoord;\n varying float v_weight;\n varying vec4 v_hitColor;\n\n void main(void) {\n vec2 texCoord = v_texCoord * 2.0 - vec2(1.0, 1.0);\n float sqRadius = texCoord.x * texCoord.x + texCoord.y * texCoord.y;\n float value = (1.0 - sqrt(sqRadius)) * u_blurSlope;\n float alpha = smoothstep(0.0, 1.0, value) * v_weight;\n if (alpha < 0.05) {\n discard;\n }\n\n gl_FragColor = v_hitColor;\n }",n uniforms: {n u_size: function () {n return (this.get(Property.RADIUS) + this.get(Property.BLUR)) * 2;n }.bind(this),n u_blurSlope: function () {n return this.get(Property.RADIUS) / Math.max(1, this.get(Property.BLUR));n }.bind(this)n },n postProcesses: [n {n fragmentShader: "\n precision mediump float;\n\n uniform sampler2D u_image;\n uniform sampler2D u_gradientTexture;\n\n varying vec2 v_texCoord;\n\n void main() {\n vec4 color = texture2D(u_image, v_texCoord);\n gl_FragColor.a = color.a;\n gl_FragColor.rgb = texture2D(u_gradientTexture, vec2(0.5, color.a)).rgb;\n gl_FragColor.rgb *= gl_FragColor.a;\n }",n uniforms: {n u_gradientTexture: this.gradient_n }n }n ]n });n };n return Heatmap;n}(VectorLayer));n/**n * @param {Array<string>} colors A list of colored.n * @return {HTMLCanvasElement} canvas with gradient texture.n */nfunction createGradient(colors) {n var width = 1;n var height = 256;n var context = createCanvasContext2D(width, height);n var gradient = context.createLinearGradient(0, 0, width, height);n var step = 1 / (colors.length - 1);n for (var i = 0, ii = colors.length; i < ii; ++i) {n gradient.addColorStop(i * step, colors);n }n context.fillStyle = gradient;n context.fillRect(0, 0, width, height);n return context.canvas;n}nexport default Heatmap;n//# sourceMappingURL=Heatmap.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/layer/VectorImagen */nimport BaseVectorLayer from './BaseVector.js';nimport { assign } from '../obj.js';nimport CanvasVectorImageLayerRenderer from '../renderer/canvas/VectorImageLayer.js';n/**n * @typedef {Object} Optionsn * @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 ben * rendered outside of this extent.n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layersn * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumedn * 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 ben * visible.n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer willn * be visible.n * @property {import("../render.js").OrderFunction} [renderOrder] Render order. Function to be used when sortingn * features before rendering. By default features are drawn in the order that they are created. Usen * `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 then * 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 {import("../source/Vector.js").default} [source] Source.n * @property {import("../PluggableMap.js").default} [map] Sets the layer as overlay on a map. The map will not managen * this layer in its layers collection, and the layer will be rendered on top. This is useful forn * temporary layers. The standard way to add a layer to a map and have it managed by the map is ton * use {@link module:ol/Map#addLayer}.n * @property {boolean} [declutter=false] Declutter images and text on this layer. The priority is definedn * by the `zIndex` of the style and the render order of features. Higher z-index means higher priority.n * Within the same z-index, a feature rendered before another has higher priority.n * @property {import("../style/Style.js").StyleLike} [style] Layer style. Seen * {@link module:ol/style} for default style which will be used if this is not defined.n * @property {boolean} [updateWhileAnimating=false] When set to `true`, feature batches willn * be recreated during animations. This means that no vectors will be shown clipped, but then * 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 willn * be recreated during interactions. See also `updateWhileAnimating`.n * @property {number} [imageRatio=1] Ratio by which the rendered extent should be larger than then * viewport extent. A larger ratio avoids cut images during panning, but will cause a decrease in performance.n */n/**n * @classdescn * 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 then * options means that `title` is observable, and has get/set accessors.n *n * @apin */nvar VectorImageLayer = /** @class */ (function (_super) {n __extends(VectorImageLayer, _super);n /**n * @param {Options=} opt_options Options.n */n function VectorImageLayer(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n var baseOptions = assign({}, options);n delete baseOptions.imageRatio;n _this = _super.call(this, baseOptions) || this;n /**n * @type {number}n * @privaten */n this.imageRatio = options.imageRatio !== undefined ? options.imageRatio : 1;n return _this;n }n /**n * @return {number} Ratio between rendered extent size and viewport extent size.n */n VectorImageLayer.prototype.getImageRatio = function () {n return this.imageRatio_;n };n /**n * Create a renderer for this layer.n * @return {import("../renderer/Layer.js").default} A layer renderer.n * @protectedn */n VectorImageLayer.prototype.createRenderer = function () {n return new CanvasVectorImageLayerRenderer(this);n };n return VectorImageLayer;n}(BaseVectorLayer));nexport default VectorImageLayer;n//# sourceMappingURL=VectorImage.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/layer/VectorTilen */nimport { assert } from '../asserts.js';nimport TileProperty from './TileProperty.js';nimport BaseVectorLayer from './BaseVector.js';nimport VectorTileRenderType from './VectorTileRenderType.js';nimport CanvasVectorTileLayerRenderer from '../renderer/canvas/VectorTileLayer.js';nimport { assign } from '../obj.js';n/**n * @typedef {Object} Optionsn * @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 ben * rendered outside of this extent.n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layersn * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumedn * 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 ben * visible.n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer willn * be visible.n * @property {import("../render.js").OrderFunction} [renderOrder] Render order. Function to be used when sortingn * features before rendering. By default features are drawn in the order that they are created. Usen * `null` to avoid the sort, but get an undefined draw order.n * @property {number} [renderBuffer=100] The buffer in pixels around the tile extent used by then * renderer when getting features from the vector tile for the rendering or hit-detection.n * Recommended value: Vector tiles are usually generated with a buffer, so this value should matchn * the largest possible buffer of the used tiles. It should be at least the size of the largestn * point symbol or line width.n * @property {import("./VectorTileRenderType.js").default|string} [renderMode='hybrid'] Render mode for vector tiles:n * * `'image'`: Vector tiles are rendered as images. Great performance, but point symbols and textsn * are always rotated with the view and pixels are scaled during zoom animations. When `declutter`n * is set to `true`, the decluttering is done per tile resulting in labels and point symbols gettingn * cut off at tile boundaries.n * * `'hybrid'`: Polygon and line elements are rendered as images, so pixels are scaled during zoomn * animations. Point symbols and texts are accurately rendered as vectors and can stay upright onn * rotated views.n *n * @property {import("../source/VectorTile.js").default} [source] Source.n * @property {import("../PluggableMap.js").default} [map] Sets the layer as overlay on a map. The map will not managen * this layer in its layers collection, and the layer will be rendered on top. This is useful forn * temporary layers. The standard way to add a layer to a map and have it managed by the map is ton * use {@link module:ol/Map#addLayer}.n * @property {boolean} [declutter=false] Declutter images and text. Decluttering is applied to alln * image and text styles of all Vector and VectorTile layers that have set this to `true`. The priorityn * 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 hasn * higher priority.n * @property {import("../style/Style.js").StyleLike} [style] Layer style. Seen * {@link module:ol/style} for default style which will be used if this is not defined.n * @property {boolean} [updateWhileAnimating=false] When set to `true`, feature batches will ben * recreated during animations. This means that no vectors will be shown clipped, but the settingn * will have a performance impact for large amounts of vector data. When set to `false`, batchesn * will be recreated when no animation is active.n * @property {boolean} [updateWhileInteracting=false] When set to `true`, feature batches will ben * recreated during interactions. See also `updateWhileAnimating`.n * @property {number} [preload=0] Preload. Load low-resolution tiles up to `preload` levels. `0`n * means no preloading.n * @property {boolean} [useInterimTilesOnError=true] Use interim tiles on error.n */n/**n * @classdescn * Layer for vector tile 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 then * options means that `title` is observable, and has get/set accessors.n *n * @param {Options=} opt_options Options.n * @extends {BaseVectorLayer<import("../source/VectorTile.js").default>}n * @apin */nvar VectorTileLayer = /** @class */ (function (_super) {n __extends(VectorTileLayer, _super);n /**n * @param {Options=} opt_options Options.n */n function VectorTileLayer(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n var baseOptions = /** @type {Object} */ (assign({}, options));n delete baseOptions.preload;n delete baseOptions.useInterimTilesOnError;n _this = _super.call(this, /** @type {import("./BaseVector.js").Options} */ (baseOptions)) || this;n var renderMode = options.renderMode || VectorTileRenderType.HYBRID;n assert(renderMode == undefined ||n renderMode == VectorTileRenderType.IMAGE ||n renderMode == VectorTileRenderType.HYBRID, 28); // `renderMode` must be `'image'` or `'hybrid'`n /**n * @privaten * @type {VectorTileRenderType}n */n this.renderMode = renderMode;n _this.setPreload(options.preload ? options.preload : 0);n _this.setUseInterimTilesOnError(options.useInterimTilesOnError !== undefined ?n options.useInterimTilesOnError : true);n return _this;n }n /**n * Create a renderer for this layer.n * @return {import("../renderer/Layer.js").default} A layer renderer.n * @protectedn */n VectorTileLayer.prototype.createRenderer = function () {n return new CanvasVectorTileLayerRenderer(this);n };n /**n * Get the topmost feature that intersects the given pixel on the viewport. Returns a promisen * that resolves with an array of features. The array will either contain the topmost featuren * 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 lessn * accurate than the one used in {@link import("../PluggableMap.js").default#getFeaturesAtPixel}: Textn * is not considered, and icons are only represented by their bounding box instead of the exactn * image.n *n * @param {import("../pixel.js").Pixel} pixel Pixel.n * @return {Promise<Array<import("../Feature").default>>} Promise that resolves with an array of features.n * @apin */n VectorTileLayer.prototype.getFeatures = function (pixel) {n return _super.prototype.getFeatures.call(this, pixel);n };n /**n * @return {VectorTileRenderType} The render mode.n */n VectorTileLayer.prototype.getRenderMode = function () {n return this.renderMode_;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 * @observablen * @apin */n VectorTileLayer.prototype.getPreload = function () {n return /** @type {number} */ (this.get(TileProperty.PRELOAD));n };n /**n * Whether we use interim tiles on error.n * @return {boolean} Use interim tiles on error.n * @observablen * @apin */n VectorTileLayer.prototype.getUseInterimTilesOnError = function () {n return /** @type {boolean} */ (this.get(TileProperty.USE_INTERIM_TILES_ON_ERROR));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 * @observablen * @apin */n VectorTileLayer.prototype.setPreload = function (preload) {n this.set(TileProperty.PRELOAD, preload);n };n /**n * Set whether we use interim tiles on error.n * @param {boolean} useInterimTilesOnError Use interim tiles on error.n * @observablen * @apin */n VectorTileLayer.prototype.setUseInterimTilesOnError = function (useInterimTilesOnError) {n this.set(TileProperty.USE_INTERIM_TILES_ON_ERROR, useInterimTilesOnError);n };n return VectorTileLayer;n}(BaseVectorLayer));nexport default VectorTileLayer;n//# sourceMappingURL=VectorTile.js.map”,“/**n * @module ol/interaction/DragAndDropn */n// FIXME should handle all geo-referenced data, not just vector datanvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { TRUE } from '../functions.js';nimport { listen, unlistenByKey } from '../events.js';nimport Event from '../events/Event.js';nimport EventType from '../events/EventType.js';nimport Interaction from './Interaction.js';nimport { get as getProjection } from '../proj.js';n/**n * @typedef {Object} Optionsn * @property {Array<typeof import("../format/Feature.js").default>} [formatConstructors] Format constructors.n * @property {import("../source/Vector.js").default} [source] Optional vector source where features will be added. If a source is providedn * all existing features will be removed and new features will be added whenn * they are dropped on the target. If you want to add features to a vectorn * source without removing the existing features (append only), instead ofn * providing the source option listen for the "addfeatures" event.n * @property {import("../proj.js").ProjectionLike} [projection] Target projection. By default, the map's view's projection is used.n * @property {HTMLElement} [target] The element that is used as the drop target, default is the viewport element.n */n/**n * @enum {string}n */nvar DragAndDropEventType = {n /**n * Triggered when features are addedn * @event DragAndDropEvent#addfeaturesn * @apin */n ADD_FEATURES: 'addfeatures'n};n/**n * @classdescn * Events emitted by {@link module:ol/interaction/DragAndDrop~DragAndDrop} instances are instancesn * of this type.n */nvar DragAndDropEvent = /** @class */ (function (_super) {n __extends(DragAndDropEvent, _super);n /**n * @param {DragAndDropEventType} type Type.n * @param {File} file File.n * @param {Array<import("../Feature.js").default>=} opt_features Features.n * @param {import("../proj/Projection.js").default=} opt_projection Projection.n */n function DragAndDropEvent(type, file, opt_features, opt_projection) {n var _this = _super.call(this, type) || this;n /**n * The features parsed from dropped data.n * @type {Array<import("../Feature.js").FeatureLike>|undefined}n * @apin */n _this.features = opt_features;n /**n * The dropped file.n * @type {File}n * @apin */n _this.file = file;n /**n * The feature projection.n * @type {import("../proj/Projection.js").default|undefined}n * @apin */n _this.projection = opt_projection;n return _this;n }n return DragAndDropEvent;n}(Event));n/**n * @classdescn * Handles input of vector data by drag and drop.n * @apin *n * @fires DragAndDropEventn */nvar DragAndDrop = /** @class */ (function (_super) {n __extends(DragAndDrop, _super);n /**n * @param {Options=} opt_options Options.n */n function DragAndDrop(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n _this = _super.call(this, {n handleEvent: TRUEn }) || this;n /**n * @privaten * @type {Array<typeof import("../format/Feature.js").default>}n */n this.formatConstructors = options.formatConstructors ?n options.formatConstructors : [];n /**n * @privaten * @type {import("../proj/Projection.js").default}n */n this.projection = options.projection ?n getProjection(options.projection) : null;n /**n * @privaten * @type {?Array<import("../events.js").EventsKey>}n */n this.dropListenKeys = null;n /**n * @privaten * @type {import("../source/Vector.js").default}n */n this.source = options.source || null;n /**n * @privaten * @type {HTMLElement}n */n _this.target = options.target ? options.target : null;n return _this;n }n /**n * @param {File} file File.n * @param {Event} event Load event.n * @privaten */n DragAndDrop.prototype.handleResult_ = function (file, event) {n var result = event.target.result;n var map = this.getMap();n var projection = this.projection_;n if (!projection) {n var view = map.getView();n projection = view.getProjection();n }n var formatConstructors = this.formatConstructors_;n var features = [];n for (var i = 0, ii = formatConstructors.length; i < ii; ++i) {n var format = new formatConstructors();n features = this.tryReadFeatures_(format, result, {n featureProjection: projectionn });n if (features && features.length > 0) {n break;n }n }n if (this.source_) {n this.source_.clear();n this.source_.addFeatures(features);n }n this.dispatchEvent(new DragAndDropEvent(DragAndDropEventType.ADD_FEATURES, file, features, projection));n };n /**n * @privaten */n DragAndDrop.prototype.registerListeners_ = function () {n var map = this.getMap();n if (map) {n var dropArea = this.target ? this.target : map.getViewport();n this.dropListenKeys_ = [n listen(dropArea, EventType.DROP, handleDrop, this),n listen(dropArea, EventType.DRAGENTER, handleStop, this),n listen(dropArea, EventType.DRAGOVER, handleStop, this),n listen(dropArea, EventType.DROP, handleStop, this)n ];n }n };n /**n * @inheritDocn */n DragAndDrop.prototype.setActive = function (active) {n if (!this.getActive() && active) {n this.registerListeners_();n }n if (this.getActive() && !active) {n this.unregisterListeners_();n }n _super.prototype.setActive.call(this, active);n };n /**n * @inheritDocn */n DragAndDrop.prototype.setMap = function (map) {n this.unregisterListeners_();n _super.prototype.setMap.call(this, map);n if (this.getActive()) {n this.registerListeners_();n }n };n /**n * @param {import("../format/Feature.js").default} format Format.n * @param {string} text Text.n * @param {import("../format/Feature.js").ReadOptions} options Read options.n * @privaten * @return {Array<import("../Feature.js").FeatureLike>} Features.n */n DragAndDrop.prototype.tryReadFeatures_ = function (format, text, options) {n try {n return format.readFeatures(text, options);n }n catch (e) {n return null;n }n };n /**n * @privaten */n DragAndDrop.prototype.unregisterListeners_ = function () {n if (this.dropListenKeys_) {n this.dropListenKeys_.forEach(unlistenByKey);n this.dropListenKeys_ = null;n }n };n return DragAndDrop;n}(Interaction));n/**n * @param {DragEvent} event Event.n * @this {DragAndDrop}n */nfunction handleDrop(event) {n var files = event.dataTransfer.files;n for (var i = 0, ii = files.length; i < ii; ++i) {n var file = files.item(i);n var reader = new FileReader();n reader.addEventListener(EventType.LOAD, this.handleResult_.bind(this, file));n reader.readAsText(file);n }n}n/**n * @param {DragEvent} event Event.n */nfunction handleStop(event) {n event.stopPropagation();n event.preventDefault();n event.dataTransfer.dropEffect = 'copy';n}nexport default DragAndDrop;n//# sourceMappingURL=DragAndDrop.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/interaction/DragRotateAndZoomn */nimport { shiftKeyOnly, mouseOnly } from '../events/condition.js';nimport PointerInteraction from './Pointer.js';n/**n * @typedef {Object} Optionsn * @property {import("../events/condition.js").Condition} [condition] A function thatn * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns an * boolean to indicate whether that event should be handled.n * Default is {@link module:ol/events/condition~shiftKeyOnly}.n * @property {number} [duration=400] Animation duration in milliseconds.n */n/**n * @classdescn * Allows the user to zoom and rotate the map by clicking and draggingn * on the map. By default, this interaction is limited to when the shiftn * key is held down.n *n * This interaction is only supported for mouse devices.n *n * And this interaction is not included in the default interactions.n * @apin */nvar DragRotateAndZoom = /** @class */ (function (_super) {n __extends(DragRotateAndZoom, _super);n /**n * @param {Options=} opt_options Options.n */n function DragRotateAndZoom(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n _this = _super.call(this, /** @type {import("./Pointer.js").Options} */ (options)) || this;n /**n * @privaten * @type {import("../events/condition.js").Condition}n */n this.condition = options.condition ? options.condition : shiftKeyOnly;n /**n * @privaten * @type {number|undefined}n */n this.lastAngle = undefined;n /**n * @privaten * @type {number|undefined}n */n this.lastMagnitude = undefined;n /**n * @privaten * @type {number}n */n this.lastScaleDelta = 0;n /**n * @privaten * @type {number}n */n this.duration = options.duration !== undefined ? options.duration : 400;n return _this;n }n /**n * @inheritDocn */n DragRotateAndZoom.prototype.handleDragEvent = function (mapBrowserEvent) {n if (!mouseOnly(mapBrowserEvent)) {n return;n }n var map = mapBrowserEvent.map;n var size = map.getSize();n var offset = mapBrowserEvent.pixel;n var deltaX = offset - size / 2;n var deltaY = size / 2 - offset;n var theta = Math.atan2(deltaY, deltaX);n var magnitude = Math.sqrt(deltaX * deltaX + deltaY * deltaY);n var view = map.getView();n if (this.lastAngle_ !== undefined) {n var angleDelta = this.lastAngle_ - theta;n view.adjustRotationInternal(angleDelta);n }n this.lastAngle_ = theta;n if (this.lastMagnitude_ !== undefined) {n view.adjustResolutionInternal(this.lastMagnitude_ / magnitude);n }n if (this.lastMagnitude_ !== undefined) {n this.lastScaleDelta_ = this.lastMagnitude_ / magnitude;n }n this.lastMagnitude_ = magnitude;n };n /**n * @inheritDocn */n DragRotateAndZoom.prototype.handleUpEvent = function (mapBrowserEvent) {n if (!mouseOnly(mapBrowserEvent)) {n return true;n }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 this.lastScaleDelta_ = 0;n return false;n };n /**n * @inheritDocn */n DragRotateAndZoom.prototype.handleDownEvent = function (mapBrowserEvent) {n if (!mouseOnly(mapBrowserEvent)) {n return false;n }n if (this.condition_(mapBrowserEvent)) {n mapBrowserEvent.map.getView().beginInteraction();n this.lastAngle_ = undefined;n this.lastMagnitude_ = undefined;n return true;n }n else {n return false;n }n };n return DragRotateAndZoom;n}(PointerInteraction));nexport default DragRotateAndZoom;n//# sourceMappingURL=DragRotateAndZoom.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/geom/Circlen */nimport { createOrUpdate, forEachCorner, intersects } from '../extent.js';nimport GeometryType from './GeometryType.js';nimport SimpleGeometry from './SimpleGeometry.js';nimport { deflateCoordinate } from './flat/deflate.js';nimport { rotate, translate } from './flat/transform.js';n/**n * @classdescn * Circle geometry.n *n * @apin */nvar Circle = /** @class */ (function (_super) {n __extends(Circle, _super);n /**n * @param {!import("../coordinate.js").Coordinate} center Center.n * For internal use, flat coordinates in combination with `opt_layout` and non * `opt_radius` are also accepted.n * @param {number=} opt_radius Radius.n * @param {import("./GeometryLayout.js").default=} opt_layout Layout.n */n function Circle(center, opt_radius, opt_layout) {n var _this = _super.call(this) || this;n if (opt_layout !== undefined && opt_radius === undefined) {n _this.setFlatCoordinates(opt_layout, center);n }n else {n var radius = opt_radius ? opt_radius : 0;n _this.setCenterAndRadius(center, radius, opt_layout);n }n return _this;n }n /**n * Make a complete copy of the geometry.n * @return {!Circle} Clone.n * @overriden * @apin */n Circle.prototype.clone = function () {n return new Circle(this.flatCoordinates.slice(), undefined, this.layout);n };n /**n * @inheritDocn */n Circle.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {n var flatCoordinates = this.flatCoordinates;n var dx = x - flatCoordinates;n var dy = y - flatCoordinates;n var squaredDistance = dx * dx + dy * dy;n if (squaredDistance < minSquaredDistance) {n if (squaredDistance === 0) {n for (var i = 0; i < this.stride; ++i) {n closestPoint = flatCoordinates;n }n }n else {n var delta = this.getRadius() / Math.sqrt(squaredDistance);n closestPoint = flatCoordinates + delta * dx;n closestPoint = flatCoordinates + delta * dy;n for (var i = 2; i < this.stride; ++i) {n closestPoint = flatCoordinates;n }n }n closestPoint.length = this.stride;n return squaredDistance;n }n else {n return minSquaredDistance;n }n };n /**n * @inheritDocn */n Circle.prototype.containsXY = function (x, y) {n var flatCoordinates = this.flatCoordinates;n var dx = x - flatCoordinates;n var dy = y - flatCoordinates;n return dx * dx + dy * dy <= this.getRadiusSquared_();n };n /**n * Return the center of the circle as {@link module:ol/coordinate~Coordinate coordinate}.n * @return {import("../coordinate.js").Coordinate} Center.n * @apin */n Circle.prototype.getCenter = function () {n return this.flatCoordinates.slice(0, this.stride);n };n /**n * @inheritDocn */n Circle.prototype.computeExtent = function (extent) {n var flatCoordinates = this.flatCoordinates;n var radius = flatCoordinates - flatCoordinates;n return createOrUpdate(flatCoordinates - radius, flatCoordinates - radius, flatCoordinates + radius, flatCoordinates + radius, extent);n };n /**n * Return the radius of the circle.n * @return {number} Radius.n * @apin */n Circle.prototype.getRadius = function () {n return Math.sqrt(this.getRadiusSquared_());n };n /**n * @privaten * @return {number} Radius squared.n */n Circle.prototype.getRadiusSquared_ = function () {n var dx = this.flatCoordinates - this.flatCoordinates;n var dy = this.flatCoordinates[this.stride + 1] - this.flatCoordinates;n return dx * dx + dy * dy;n };n /**n * @inheritDocn * @apin */n Circle.prototype.getType = function () {n return GeometryType.CIRCLE;n };n /**n * @inheritDocn * @apin */n Circle.prototype.intersectsExtent = function (extent) {n var circleExtent = this.getExtent();n if (intersects(extent, circleExtent)) {n var center = this.getCenter();n if (extent <= center && extent >= center) {n return true;n }n if (extent <= center && extent >= center) {n return true;n }n return forEachCorner(extent, this.intersectsCoordinate.bind(this));n }n return false;n };n /**n * Set the center of the circle as {@link module:ol/coordinate~Coordinate coordinate}.n * @param {import("../coordinate.js").Coordinate} center Center.n * @apin */n Circle.prototype.setCenter = function (center) {n var stride = this.stride;n var radius = this.flatCoordinates - this.flatCoordinates;n var flatCoordinates = center.slice();n flatCoordinates = flatCoordinates + radius;n for (var i = 1; i < stride; ++i) {n flatCoordinates[stride + i] = center;n }n this.setFlatCoordinates(this.layout, flatCoordinates);n this.changed();n };n /**n * Set the center (as {@link module:ol/coordinate~Coordinate coordinate}) and the radius (asn * number) of the circle.n * @param {!import("../coordinate.js").Coordinate} center Center.n * @param {number} radius Radius.n * @param {import("./GeometryLayout.js").default=} opt_layout Layout.n * @apin */n Circle.prototype.setCenterAndRadius = function (center, radius, opt_layout) {n this.setLayout(opt_layout, center, 0);n if (!this.flatCoordinates) {n this.flatCoordinates = [];n }n /** @type {Array<number>} */n var flatCoordinates = this.flatCoordinates;n var offset = deflateCoordinate(flatCoordinates, 0, center, this.stride);n flatCoordinates = flatCoordinates + radius;n for (var i = 1, ii = this.stride; i < ii; ++i) {n flatCoordinates = flatCoordinates;n }n flatCoordinates.length = offset;n this.changed();n };n /**n * @inheritDocn */n Circle.prototype.getCoordinates = function () {n return null;n };n /**n * @inheritDocn */n Circle.prototype.setCoordinates = function (coordinates, opt_layout) { };n /**n * Set the radius of the circle. The radius is in the units of the projection.n * @param {number} radius Radius.n * @apin */n Circle.prototype.setRadius = function (radius) {n this.flatCoordinates = this.flatCoordinates + radius;n this.changed();n };n /**n * @inheritDocn * @apin */n Circle.prototype.rotate = function (angle, anchor) {n var center = this.getCenter();n var stride = this.getStride();n this.setCenter(rotate(center, 0, center.length, stride, angle, anchor, center));n this.changed();n };n /**n * @inheritDocn * @apin */n Circle.prototype.translate = function (deltaX, deltaY) {n var center = this.getCenter();n var stride = this.getStride();n this.setCenter(translate(center, 0, center.length, stride, deltaX, deltaY, center));n this.changed();n };n return Circle;n}(SimpleGeometry));n/**n * Transform each coordinate of the circle from one coordinate reference systemn * to another. The geometry is modified in place.n * If you do not want the geometry modified in place, first clone() it andn * then use this function on the clone.n *n * Internally a circle is currently represented by two points: the center ofn * the circle `[cx, cy]`, and the point to the right of the circlen * `[cx + r, cy]`. This `transform` function just transforms these two points.n * So the resulting geometry is also a circle, and that circle does notn * correspond to the shape that would be obtained by transforming every pointn * of the original circle.n *n * @param {import("../proj.js").ProjectionLike} source The current projection. Can be an * string identifier or a {@link module:ol/proj/Projection~Projection} object.n * @param {import("../proj.js").ProjectionLike} destination The desired projection. Can be an * string identifier or a {@link module:ol/proj/Projection~Projection} object.n * @return {Circle} This geometry. Note that original geometry isn * modified in place.n * @functionn * @apin */nCircle.prototype.transform;nexport default Circle;n//# sourceMappingURL=Circle.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/geom/MultiLineStringn */nimport { extend } from '../array.js';nimport { closestSquaredDistanceXY } from '../extent.js';nimport GeometryLayout from './GeometryLayout.js';nimport GeometryType from './GeometryType.js';nimport LineString from './LineString.js';nimport SimpleGeometry from './SimpleGeometry.js';nimport { assignClosestArrayPoint, arrayMaxSquaredDelta } from './flat/closest.js';nimport { deflateCoordinatesArray } from './flat/deflate.js';nimport { inflateCoordinatesArray } from './flat/inflate.js';nimport { interpolatePoint, lineStringsCoordinateAtM } from './flat/interpolate.js';nimport { intersectsLineStringArray } from './flat/intersectsextent.js';nimport { douglasPeuckerArray } from './flat/simplify.js';n/**n * @classdescn * Multi-linestring geometry.n *n * @apin */nvar MultiLineString = /** @class */ (function (_super) {n __extends(MultiLineString, _super);n /**n * @param {Array<Array<import("../coordinate.js").Coordinate>|LineString>|Array<number>} coordinatesn * Coordinates or LineString geometries. (For internal use, flat coordinates inn * combination with `opt_layout` and `opt_ends` are also accepted.)n * @param {GeometryLayout=} opt_layout Layout.n * @param {Array<number>=} opt_ends Flat coordinate ends for internal use.n */n function MultiLineString(coordinates, opt_layout, opt_ends) {n var _this = _super.call(this) || this;n /**n * @type {Array<number>}n * @privaten */n this.ends = [];n /**n * @privaten * @type {number}n */n this.maxDelta = -1;n /**n * @privaten * @type {number}n */n this.maxDeltaRevision = -1;n if (Array.isArray(coordinates)) {n _this.setCoordinates(/** @type {Array<Array<import("../coordinate.js").Coordinate>>} */ (coordinates), opt_layout);n }n else if (opt_layout !== undefined && opt_ends) {n _this.setFlatCoordinates(opt_layout, /** @type {Array<number>} */ (coordinates));n this.ends = opt_ends;n }n else {n var layout = _this.getLayout();n var lineStrings = /** @type {Array<LineString>} */ (coordinates);n var flatCoordinates = [];n var ends = [];n for (var i = 0, ii = lineStrings.length; i < ii; ++i) {n var lineString = lineStrings;n if (i === 0) {n layout = lineString.getLayout();n }n extend(flatCoordinates, lineString.getFlatCoordinates());n ends.push(flatCoordinates.length);n }n _this.setFlatCoordinates(layout, flatCoordinates);n this.ends = ends;n }n return _this;n }n /**n * Append the passed linestring to the multilinestring.n * @param {LineString} lineString LineString.n * @apin */n MultiLineString.prototype.appendLineString = function (lineString) {n if (!this.flatCoordinates) {n this.flatCoordinates = lineString.getFlatCoordinates().slice();n }n else {n extend(this.flatCoordinates, lineString.getFlatCoordinates().slice());n }n this.ends_.push(this.flatCoordinates.length);n this.changed();n };n /**n * Make a complete copy of the geometry.n * @return {!MultiLineString} Clone.n * @overriden * @apin */n MultiLineString.prototype.clone = function () {n return new MultiLineString(this.flatCoordinates.slice(), this.layout, this.ends_.slice());n };n /**n * @inheritDocn */n MultiLineString.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_, false, x, y, closestPoint, minSquaredDistance);n };n /**n * Returns the coordinate at `m` using linear interpolation, or `null` if non * such coordinate exists.n *n * `opt_extrapolate` controls extrapolation beyond the range of Ms in then * MultiLineString. If `opt_extrapolate` is `true` then Ms less than the firstn * M will return the first coordinate and Ms greater than the last M willn * return the last coordinate.n *n * `opt_interpolate` controls interpolation between consecutive LineStringsn * within the MultiLineString. If `opt_interpolate` is `true` the coordinatesn * will be linearly interpolated between the last coordinate of one LineStringn * and the first coordinate of the next LineString. If `opt_interpolate` isn * `false` then the function will return `null` for Ms falling betweenn * LineStrings.n *n * @param {number} m M.n * @param {boolean=} opt_extrapolate Extrapolate. Default is `false`.n * @param {boolean=} opt_interpolate Interpolate. Default is `false`.n * @return {import("../coordinate.js").Coordinate} Coordinate.n * @apin */n MultiLineString.prototype.getCoordinateAtM = function (m, opt_extrapolate, opt_interpolate) {n if ((this.layout != GeometryLayout.XYM &&n this.layout != GeometryLayout.XYZM) ||n this.flatCoordinates.length === 0) {n return null;n }n var extrapolate = opt_extrapolate !== undefined ? opt_extrapolate : false;n var interpolate = opt_interpolate !== undefined ? opt_interpolate : false;n return lineStringsCoordinateAtM(this.flatCoordinates, 0, this.ends_, this.stride, m, extrapolate, interpolate);n };n /**n * Return the coordinates of the multilinestring.n * @return {Array<Array<import("../coordinate.js").Coordinate>>} Coordinates.n * @overriden * @apin */n MultiLineString.prototype.getCoordinates = function () {n return inflateCoordinatesArray(this.flatCoordinates, 0, this.ends_, this.stride);n };n /**n * @return {Array<number>} Ends.n */n MultiLineString.prototype.getEnds = function () {n return this.ends_;n };n /**n * Return the linestring at the specified index.n * @param {number} index Index.n * @return {LineString} LineString.n * @apin */n MultiLineString.prototype.getLineString = function (index) {n if (index < 0 || this.ends_.length <= index) {n return null;n }n return new LineString(this.flatCoordinates.slice(index === 0 ? 0 : this.ends_[index - 1], this.ends_), this.layout);n };n /**n * Return the linestrings of this multilinestring.n * @return {Array<LineString>} LineStrings.n * @apin */n MultiLineString.prototype.getLineStrings = function () {n var flatCoordinates = this.flatCoordinates;n var ends = this.ends_;n var layout = this.layout;n /** @type {Array<LineString>} */n var lineStrings = [];n var offset = 0;n for (var i = 0, ii = ends.length; i < ii; ++i) {n var end = ends;n var lineString = new LineString(flatCoordinates.slice(offset, end), layout);n lineStrings.push(lineString);n offset = end;n }n return lineStrings;n };n /**n * @return {Array<number>} Flat midpoints.n */n MultiLineString.prototype.getFlatMidpoints = function () {n var midpoints = [];n var flatCoordinates = this.flatCoordinates;n var offset = 0;n var ends = this.ends_;n var stride = this.stride;n for (var i = 0, ii = ends.length; i < ii; ++i) {n var end = ends;n var midpoint = interpolatePoint(flatCoordinates, offset, end, stride, 0.5);n extend(midpoints, midpoint);n offset = end;n }n return midpoints;n };n /**n * @inheritDocn */n MultiLineString.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {n var simplifiedFlatCoordinates = [];n var simplifiedEnds = [];n simplifiedFlatCoordinates.length = douglasPeuckerArray(this.flatCoordinates, 0, this.ends_, this.stride, squaredTolerance, simplifiedFlatCoordinates, 0, simplifiedEnds);n return new MultiLineString(simplifiedFlatCoordinates, GeometryLayout.XY, simplifiedEnds);n };n /**n * @inheritDocn * @apin */n MultiLineString.prototype.getType = function () {n return GeometryType.MULTI_LINE_STRING;n };n /**n * @inheritDocn * @apin */n MultiLineString.prototype.intersectsExtent = function (extent) {n return intersectsLineStringArray(this.flatCoordinates, 0, this.ends_, this.stride, extent);n };n /**n * Set the coordinates of the multilinestring.n * @param {!Array<Array<import("../coordinate.js").Coordinate>>} coordinates Coordinates.n * @param {GeometryLayout=} opt_layout Layout.n * @overriden * @apin */n MultiLineString.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 MultiLineString;n}(SimpleGeometry));nexport default MultiLineString;n//# sourceMappingURL=MultiLineString.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/geom/MultiPointn */nimport { extend } from '../array.js';nimport { closestSquaredDistanceXY, containsXY } from '../extent.js';nimport GeometryType from './GeometryType.js';nimport Point from './Point.js';nimport SimpleGeometry from './SimpleGeometry.js';nimport { deflateCoordinates } from './flat/deflate.js';nimport { inflateCoordinates } from './flat/inflate.js';nimport { squaredDistance as squaredDx } from '../math.js';n/**n * @classdescn * Multi-point geometry.n *n * @apin */nvar MultiPoint = /** @class */ (function (_super) {n __extends(MultiPoint, _super);n /**n * @param {Array<import("../coordinate.js").Coordinate>|Array<number>} 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 MultiPoint(coordinates, opt_layout) {n var _this = _super.call(this) || this;n if (opt_layout && !Array.isArray(coordinates)) {n _this.setFlatCoordinates(opt_layout, /** @type {Array<number>} */ (coordinates));n }n else {n _this.setCoordinates(/** @type {Array<import("../coordinate.js").Coordinate>} */ (coordinates), opt_layout);n }n return _this;n }n /**n * Append the passed point to this multipoint.n * @param {Point} point Point.n * @apin */n MultiPoint.prototype.appendPoint = function (point) {n if (!this.flatCoordinates) {n this.flatCoordinates = point.getFlatCoordinates().slice();n }n else {n extend(this.flatCoordinates, point.getFlatCoordinates());n }n this.changed();n };n /**n * Make a complete copy of the geometry.n * @return {!MultiPoint} Clone.n * @overriden * @apin */n MultiPoint.prototype.clone = function () {n var multiPoint = new MultiPoint(this.flatCoordinates.slice(), this.layout);n return multiPoint;n };n /**n * @inheritDocn */n MultiPoint.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {n return minSquaredDistance;n }n var flatCoordinates = this.flatCoordinates;n var stride = this.stride;n for (var i = 0, ii = flatCoordinates.length; i < ii; i += stride) {n var squaredDistance = squaredDx(x, y, flatCoordinates, flatCoordinates[i + 1]);n if (squaredDistance < minSquaredDistance) {n minSquaredDistance = squaredDistance;n for (var j = 0; j < stride; ++j) {n closestPoint = flatCoordinates[i + j];n }n closestPoint.length = stride;n }n }n return minSquaredDistance;n };n /**n * Return the coordinates of the multipoint.n * @return {Array<import("../coordinate.js").Coordinate>} Coordinates.n * @overriden * @apin */n MultiPoint.prototype.getCoordinates = function () {n return inflateCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);n };n /**n * Return the point at the specified index.n * @param {number} index Index.n * @return {Point} Point.n * @apin */n MultiPoint.prototype.getPoint = function (index) {n var n = !this.flatCoordinates ? 0 : this.flatCoordinates.length / this.stride;n if (index < 0 || n <= index) {n return null;n }n return new Point(this.flatCoordinates.slice(index * this.stride, (index + 1) * this.stride), this.layout);n };n /**n * Return the points of this multipoint.n * @return {Array<Point>} Points.n * @apin */n MultiPoint.prototype.getPoints = function () {n var flatCoordinates = this.flatCoordinates;n var layout = this.layout;n var stride = this.stride;n /** @type {Array<Point>} */n var points = [];n for (var i = 0, ii = flatCoordinates.length; i < ii; i += stride) {n var point = new Point(flatCoordinates.slice(i, i + stride), layout);n points.push(point);n }n return points;n };n /**n * @inheritDocn * @apin */n MultiPoint.prototype.getType = function () {n return GeometryType.MULTI_POINT;n };n /**n * @inheritDocn * @apin */n MultiPoint.prototype.intersectsExtent = function (extent) {n var flatCoordinates = this.flatCoordinates;n var stride = this.stride;n for (var i = 0, ii = flatCoordinates.length; i < ii; i += stride) {n var x = flatCoordinates;n var y = flatCoordinates[i + 1];n if (containsXY(extent, x, y)) {n return true;n }n }n return false;n };n /**n * Set the coordinates of the multipoint.n * @param {!Array<import("../coordinate.js").Coordinate>} coordinates Coordinates.n * @param {import("./GeometryLayout.js").default=} opt_layout Layout.n * @overriden * @apin */n MultiPoint.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 MultiPoint;n}(SimpleGeometry));nexport default MultiPoint;n//# sourceMappingURL=MultiPoint.js.map”,“/**n * @module ol/geom/flat/centern */nimport { createEmpty, createOrUpdateFromFlatCoordinates } from '../../extent.js';n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {Array<Array<number>>} endss Endss.n * @param {number} stride Stride.n * @return {Array<number>} Flat centers.n */nexport function linearRingss(flatCoordinates, offset, endss, stride) {n var flatCenters = [];n var extent = createEmpty();n for (var i = 0, ii = endss.length; i < ii; ++i) {n var ends = endss;n extent = createOrUpdateFromFlatCoordinates(flatCoordinates, offset, ends, stride);n flatCenters.push((extent + extent) / 2, (extent + extent) / 2);n offset = ends[ends.length - 1];n }n return flatCenters;n}n//# sourceMappingURL=center.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/geom/MultiPolygonn */nimport { extend } from '../array.js';nimport { closestSquaredDistanceXY } from '../extent.js';nimport GeometryLayout from './GeometryLayout.js';nimport GeometryType from './GeometryType.js';nimport MultiPoint from './MultiPoint.js';nimport Polygon from './Polygon.js';nimport SimpleGeometry from './SimpleGeometry.js';nimport { linearRingss as linearRingssArea } from './flat/area.js';nimport { linearRingss as linearRingssCenter } from './flat/center.js';nimport { assignClosestMultiArrayPoint, multiArrayMaxSquaredDelta } from './flat/closest.js';nimport { linearRingssContainsXY } from './flat/contains.js';nimport { deflateMultiCoordinatesArray } from './flat/deflate.js';nimport { inflateMultiCoordinatesArray } from './flat/inflate.js';nimport { getInteriorPointsOfMultiArray } from './flat/interiorpoint.js';nimport { intersectsLinearRingMultiArray } from './flat/intersectsextent.js';nimport { linearRingssAreOriented, orientLinearRingsArray } from './flat/orient.js';nimport { quantizeMultiArray } from './flat/simplify.js';n/**n * @classdescn * Multi-polygon geometry.n *n * @apin */nvar MultiPolygon = /** @class */ (function (_super) {n __extends(MultiPolygon, _super);n /**n * @param {Array<Array<Array<import("../coordinate.js").Coordinate>>|Polygon>|Array<number>} coordinates Coordinates.n * For internal use, flat coordinates in combination with `opt_layout` and `opt_endss` are also accepted.n * @param {GeometryLayout=} opt_layout Layout.n * @param {Array<Array<number>>=} opt_endss Array of ends for internal use with flat coordinates.n */n function MultiPolygon(coordinates, opt_layout, opt_endss) {n var _this = _super.call(this) || this;n /**n * @type {Array<Array<number>>}n * @privaten */n this.endss = [];n /**n * @privaten * @type {number}n */n this.flatInteriorPointsRevision = -1;n /**n * @privaten * @type {Array<number>}n */n this.flatInteriorPoints = null;n /**n * @privaten * @type {number}n */n this.maxDelta = -1;n /**n * @privaten * @type {number}n */n this.maxDeltaRevision = -1;n /**n * @privaten * @type {number}n */n this.orientedRevision = -1;n /**n * @privaten * @type {Array<number>}n */n this.orientedFlatCoordinates = null;n if (!opt_endss && !Array.isArray(coordinates)) {n var layout = _this.getLayout();n var polygons = /** @type {Array<Polygon>} */ (coordinates);n var flatCoordinates = [];n var endss = [];n for (var i = 0, ii = polygons.length; i < ii; ++i) {n var polygon = polygons;n if (i === 0) {n layout = polygon.getLayout();n }n var offset = flatCoordinates.length;n var ends = polygon.getEnds();n for (var j = 0, jj = ends.length; j < jj; ++j) {n ends += offset;n }n extend(flatCoordinates, polygon.getFlatCoordinates());n endss.push(ends);n }n opt_layout = layout;n coordinates = flatCoordinates;n opt_endss = endss;n }n if (opt_layout !== undefined && opt_endss) {n _this.setFlatCoordinates(opt_layout, /** @type {Array<number>} */ (coordinates));n this.endss = opt_endss;n }n else {n _this.setCoordinates(/** @type {Array<Array<Array<import("../coordinate.js").Coordinate>>>} */ (coordinates), opt_layout);n }n return _this;n }n /**n * Append the passed polygon to this multipolygon.n * @param {Polygon} polygon Polygon.n * @apin */n MultiPolygon.prototype.appendPolygon = function (polygon) {n /** @type {Array<number>} */n var ends;n if (!this.flatCoordinates) {n this.flatCoordinates = polygon.getFlatCoordinates().slice();n ends = polygon.getEnds().slice();n this.endss_.push();n }n else {n var offset = this.flatCoordinates.length;n extend(this.flatCoordinates, polygon.getFlatCoordinates());n ends = polygon.getEnds().slice();n for (var i = 0, ii = ends.length; i < ii; ++i) {n ends += offset;n }n }n this.endss_.push(ends);n this.changed();n };n /**n * Make a complete copy of the geometry.n * @return {!MultiPolygon} Clone.n * @overriden * @apin */n MultiPolygon.prototype.clone = function () {n var len = this.endss_.length;n var newEndss = new Array(len);n for (var i = 0; i < len; ++i) {n newEndss = this.endss_.slice();n }n return new MultiPolygon(this.flatCoordinates.slice(), this.layout, newEndss);n };n /**n * @inheritDocn */n MultiPolygon.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(multiArrayMaxSquaredDelta(this.flatCoordinates, 0, this.endss_, this.stride, 0));n this.maxDeltaRevision_ = this.getRevision();n }n return assignClosestMultiArrayPoint(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);n };n /**n * @inheritDocn */n MultiPolygon.prototype.containsXY = function (x, y) {n return linearRingssContainsXY(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, x, y);n };n /**n * Return the area of the multipolygon on projected plane.n * @return {number} Area (on projected plane).n * @apin */n MultiPolygon.prototype.getArea = function () {n return linearRingssArea(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride);n };n /**n * Get the coordinate array for this geometry. This array has the structuren * of a GeoJSON coordinate array for multi-polygons.n *n * @param {boolean=} opt_right Orient coordinates according to the right-handn * rule (counter-clockwise for exterior and clockwise for interior rings).n * If `false`, coordinates will be oriented according to the left-hand rulen * (clockwise for exterior and counter-clockwise for interior rings).n * By default, coordinate orientation will depend on how the geometry wasn * constructed.n * @return {Array<Array<Array<import("../coordinate.js").Coordinate>>>} Coordinates.n * @overriden * @apin */n MultiPolygon.prototype.getCoordinates = function (opt_right) {n var flatCoordinates;n if (opt_right !== undefined) {n flatCoordinates = this.getOrientedFlatCoordinates().slice();n orientLinearRingsArray(flatCoordinates, 0, this.endss_, this.stride, opt_right);n }n else {n flatCoordinates = this.flatCoordinates;n }n return inflateMultiCoordinatesArray(flatCoordinates, 0, this.endss_, this.stride);n };n /**n * @return {Array<Array<number>>} Endss.n */n MultiPolygon.prototype.getEndss = function () {n return this.endss_;n };n /**n * @return {Array<number>} Flat interior points.n */n MultiPolygon.prototype.getFlatInteriorPoints = function () {n if (this.flatInteriorPointsRevision_ != this.getRevision()) {n var flatCenters = linearRingssCenter(this.flatCoordinates, 0, this.endss_, this.stride);n this.flatInteriorPoints_ = getInteriorPointsOfMultiArray(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, flatCenters);n this.flatInteriorPointsRevision_ = this.getRevision();n }n return this.flatInteriorPoints_;n };n /**n * Return the interior points as {@link module:ol/geom/MultiPoint multipoint}.n * @return {MultiPoint} Interior points as XYM coordinates, where M isn * the length of the horizontal intersection that the point belongs to.n * @apin */n MultiPolygon.prototype.getInteriorPoints = function () {n return new MultiPoint(this.getFlatInteriorPoints().slice(), GeometryLayout.XYM);n };n /**n * @return {Array<number>} Oriented flat coordinates.n */n MultiPolygon.prototype.getOrientedFlatCoordinates = function () {n if (this.orientedRevision_ != this.getRevision()) {n var flatCoordinates = this.flatCoordinates;n if (linearRingssAreOriented(flatCoordinates, 0, this.endss_, this.stride)) {n this.orientedFlatCoordinates_ = flatCoordinates;n }n else {n this.orientedFlatCoordinates_ = flatCoordinates.slice();n this.orientedFlatCoordinates_.length =n orientLinearRingsArray(this.orientedFlatCoordinates_, 0, this.endss_, this.stride);n }n this.orientedRevision_ = this.getRevision();n }n return this.orientedFlatCoordinates_;n };n /**n * @inheritDocn */n MultiPolygon.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {n var simplifiedFlatCoordinates = [];n var simplifiedEndss = [];n simplifiedFlatCoordinates.length = quantizeMultiArray(this.flatCoordinates, 0, this.endss_, this.stride, Math.sqrt(squaredTolerance), simplifiedFlatCoordinates, 0, simplifiedEndss);n return new MultiPolygon(simplifiedFlatCoordinates, GeometryLayout.XY, simplifiedEndss);n };n /**n * Return the polygon at the specified index.n * @param {number} index Index.n * @return {Polygon} Polygon.n * @apin */n MultiPolygon.prototype.getPolygon = function (index) {n if (index < 0 || this.endss_.length <= index) {n return null;n }n var offset;n if (index === 0) {n offset = 0;n }n else {n var prevEnds = this.endss_[index - 1];n offset = prevEnds[prevEnds.length - 1];n }n var ends = this.endss_.slice();n var end = ends[ends.length - 1];n if (offset !== 0) {n for (var i = 0, ii = ends.length; i < ii; ++i) {n ends -= offset;n }n }n return new Polygon(this.flatCoordinates.slice(offset, end), this.layout, ends);n };n /**n * Return the polygons of this multipolygon.n * @return {Array<Polygon>} Polygons.n * @apin */n MultiPolygon.prototype.getPolygons = function () {n var layout = this.layout;n var flatCoordinates = this.flatCoordinates;n var endss = this.endss_;n var polygons = [];n var offset = 0;n for (var i = 0, ii = endss.length; i < ii; ++i) {n var ends = endss.slice();n var end = ends[ends.length - 1];n if (offset !== 0) {n for (var j = 0, jj = ends.length; j < jj; ++j) {n ends -= offset;n }n }n var polygon = new Polygon(flatCoordinates.slice(offset, end), layout, ends);n polygons.push(polygon);n offset = end;n }n return polygons;n };n /**n * @inheritDocn * @apin */n MultiPolygon.prototype.getType = function () {n return GeometryType.MULTI_POLYGON;n };n /**n * @inheritDocn * @apin */n MultiPolygon.prototype.intersectsExtent = function (extent) {n return intersectsLinearRingMultiArray(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, extent);n };n /**n * Set the coordinates of the multipolygon.n * @param {!Array<Array<Array<import("../coordinate.js").Coordinate>>>} coordinates Coordinates.n * @param {GeometryLayout=} opt_layout Layout.n * @overriden * @apin */n MultiPolygon.prototype.setCoordinates = function (coordinates, opt_layout) {n this.setLayout(opt_layout, coordinates, 3);n if (!this.flatCoordinates) {n this.flatCoordinates = [];n }n var endss = deflateMultiCoordinatesArray(this.flatCoordinates, 0, coordinates, this.stride, this.endss_);n if (endss.length === 0) {n this.flatCoordinates.length = 0;n }n else {n var lastEnds = endss[endss.length - 1];n this.flatCoordinates.length = lastEnds.length === 0 ?n 0 : lastEnds[lastEnds.length - 1];n }n this.changed();n };n return MultiPolygon;n}(SimpleGeometry));nexport default MultiPolygon;n//# sourceMappingURL=MultiPolygon.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/interaction/Drawn */nimport EventType from '../events/EventType.js';nimport Feature from '../Feature.js';nimport MapBrowserEventType from '../MapBrowserEventType.js';nimport MapBrowserPointerEvent from '../MapBrowserPointerEvent.js';nimport { getChangeEventType } from '../Object.js';nimport { squaredDistance as squaredCoordinateDistance } from '../coordinate.js';nimport Event from '../events/Event.js';nimport { noModifierKeys, always, shiftKeyOnly } from '../events/condition.js';nimport { boundingExtent, getBottomLeft, getBottomRight, getTopLeft, getTopRight } from '../extent.js';nimport { TRUE, FALSE } from '../functions.js';nimport Circle from '../geom/Circle.js';nimport GeometryType from '../geom/GeometryType.js';nimport LineString from '../geom/LineString.js';nimport MultiLineString from '../geom/MultiLineString.js';nimport MultiPoint from '../geom/MultiPoint.js';nimport MultiPolygon from '../geom/MultiPolygon.js';nimport Point from '../geom/Point.js';nimport Polygon, { fromCircle, makeRegular } from '../geom/Polygon.js';nimport PointerInteraction from './Pointer.js';nimport InteractionProperty from './Property.js';nimport VectorLayer from '../layer/Vector.js';nimport VectorSource from '../source/Vector.js';nimport { createEditingStyle } from '../style/Style.js';n/**n * @typedef {Object} Optionsn * @property {GeometryType} type Geometry type ofn * the geometries being drawn with this instance.n * @property {number} [clickTolerance=6] The maximum distance in pixels betweenn * "down" and "up" for a "up" event to be considered a "click" event andn * actually add a point/vertex to the geometry being drawn. The default of `6`n * was chosen for the draw interaction to behave correctly on mouse as well asn * on touch devices.n * @property {import("../Collection.js").default<Feature>} [features]n * Destination collection for the drawn features.n * @property {VectorSource} [source] Destination source forn * the drawn features.n * @property {number} [dragVertexDelay=500] Delay in milliseconds after pointerdownn * before the current vertex can be dragged to its exact position.n * @property {number} [snapTolerance=12] Pixel distance for snapping to then * drawing finish.n * @property {boolean} [stopClick=false] Stop click, singleclick, andn * doubleclick events from firing during drawing.n * @property {number} [maxPoints] The number of points that can be drawn beforen * a polygon ring or line string is finished. By default there is non * restriction.n * @property {number} [minPoints] The number of points that must be drawnn * before a polygon ring or line string can be finished. Default is `3` forn * polygon rings and `2` for line strings.n * @property {import("../events/condition.js").Condition} [finishCondition] A functionn * that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns an * boolean to indicate whether the drawing can be finished.n * @property {import("../style/Style.js").StyleLike} [style]n * Style for sketch features.n * @property {GeometryFunction} [geometryFunction]n * Function that is called when a geometry's coordinates are updated.n * @property {string} [geometryName] Geometry name to use for features createdn * by the draw interaction.n * @property {import("../events/condition.js").Condition} [condition] A function thatn * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns an * boolean to indicate whether that event should be handled.n * By default {@link module:ol/events/condition~noModifierKeys}, i.e. a click,n * adds a vertex or deactivates freehand drawing.n * @property {boolean} [freehand=false] Operate in freehand mode for lines,n * polygons, and circles. This makes the interaction always operate in freehandn * mode and takes precedence over any `freehandCondition` option.n * @property {import("../events/condition.js").Condition} [freehandCondition]n * Condition that activates freehand drawing for lines and polygons. Thisn * function takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} andn * returns a boolean to indicate whether that event should be handled. Then * default is {@link module:ol/events/condition~shiftKeyOnly}, meaning that then * Shift key activates freehand drawing.n * @property {boolean} [wrapX=false] Wrap the world horizontally on the sketchn * overlay.n */n/**n * Coordinate type when drawing points.n * @typedef {import("../coordinate.js").Coordinate} PointCoordTypen */n/**n * Coordinate type when drawing lines.n * @typedef {Array<import("../coordinate.js").Coordinate>} LineCoordTypen */n/**n * Coordinate type when drawing polygons.n * @typedef {Array<Array<import("../coordinate.js").Coordinate>>} PolyCoordTypen */n/**n * Types used for drawing coordinates.n * @typedef {PointCoordType|LineCoordType|PolyCoordType} SketchCoordTypen */n/**n * Function that takes an array of coordinates and an optional existing geometry asn * arguments, and returns a geometry. The optional existing geometry is then * geometry that is returned when the function is called without a secondn * argument.n * @typedef {function(!SketchCoordType, import("../geom/SimpleGeometry.js").default=):n * import("../geom/SimpleGeometry.js").default} GeometryFunctionn */n/**n * Draw mode. This collapses multi-part geometry types with their single-partn * cousins.n * @enum {string}n */nvar Mode = {n POINT: 'Point',n LINE_STRING: 'LineString',n POLYGON: 'Polygon',n CIRCLE: 'Circle'n};n/**n * @enum {string}n */nvar DrawEventType = {n /**n * Triggered upon feature draw startn * @event DrawEvent#drawstartn * @apin */n DRAWSTART: 'drawstart',n /**n * Triggered upon feature draw endn * @event DrawEvent#drawendn * @apin */n DRAWEND: 'drawend'n};n/**n * @classdescn * Events emitted by {@link module:ol/interaction/Draw~Draw} instances aren * instances of this type.n */nvar DrawEvent = /** @class */ (function (_super) {n __extends(DrawEvent, _super);n /**n * @param {DrawEventType} type Type.n * @param {Feature} feature The feature drawn.n */n function DrawEvent(type, feature) {n var _this = _super.call(this, type) || this;n /**n * The feature being drawn.n * @type {Feature}n * @apin */n _this.feature = feature;n return _this;n }n return DrawEvent;n}(Event));n/**n * @classdescn * Interaction for drawing feature geometries.n *n * @fires DrawEventn * @apin */nvar Draw = /** @class */ (function (_super) {n __extends(Draw, _super);n /**n * @param {Options} options Options.n */n function Draw(options) {n var _this = this;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 * @type {boolean}n * @privaten */n this.shouldHandle = false;n /**n * @type {import("../pixel.js").Pixel}n * @privaten */n this.downPx = null;n /**n * @type {?}n * @privaten */n this.downTimeout;n /**n * @type {number|undefined}n * @privaten */n this.lastDragTime;n /**n * @type {boolean}n * @privaten */n this.freehand = false;n /**n * Target source for drawn features.n * @type {VectorSource}n * @privaten */n this.source = options.source ? options.source : null;n /**n * Target collection for drawn features.n * @type {import("../Collection.js").default<Feature>}n * @privaten */n this.features = options.features ? options.features : null;n /**n * Pixel distance for snapping.n * @type {number}n * @privaten */n this.snapTolerance = options.snapTolerance ? options.snapTolerance : 12;n /**n * Geometry type.n * @type {GeometryType}n * @privaten */n this.type = /** @type {GeometryType} */ (options.type);n /**n * Drawing mode (derived from geometry type.n * @type {Mode}n * @privaten */n this.mode = getMode(this.type);n /**n * Stop click, singleclick, and doubleclick events from firing during drawing.n * Default is `false`.n * @type {boolean}n * @privaten */n this.stopClick = !!options.stopClick;n /**n * The number of points that must be drawn before a polygon ring or linen * string can be finished. The default is 3 for polygon rings and 2 forn * line strings.n * @type {number}n * @privaten */n this.minPoints = options.minPoints ?n options.minPoints :n (this.mode === Mode.POLYGON ? 3 : 2);n /**n * The number of points that can be drawn before a polygon ring or line stringn * is finished. The default is no restriction.n * @type {number}n * @privaten */n this.maxPoints = options.maxPoints ? options.maxPoints : Infinity;n /**n * A function to decide if a potential finish coordinate is permissiblen * @privaten * @type {import("../events/condition.js").Condition}n */n this.finishCondition = options.finishCondition ? options.finishCondition : TRUE;n var geometryFunction = options.geometryFunction;n if (!geometryFunction) {n if (this.type === GeometryType.CIRCLE) {n /**n * @param {!LineCoordType} coordinates The coordinates.n * @param {import("../geom/SimpleGeometry.js").default=} opt_geometry Optional geometry.n * @return {import("../geom/SimpleGeometry.js").default} A geometry.n */n geometryFunction = function (coordinates, opt_geometry) {n var circle = opt_geometry ? /** @type {Circle} */ (opt_geometry) :n new Circle([NaN, NaN]);n var squaredLength = squaredCoordinateDistance(coordinates, coordinates);n circle.setCenterAndRadius(coordinates, Math.sqrt(squaredLength));n return circle;n };n }n else {n var Constructor_1;n var mode_1 = this.mode;n if (mode_1 === Mode.POINT) {n Constructor_1 = Point;n }n else if (mode_1 === Mode.LINE_STRING) {n Constructor_1 = LineString;n }n else if (mode_1 === Mode.POLYGON) {n Constructor_1 = Polygon;n }n /**n * @param {!LineCoordType} coordinates The coordinates.n * @param {import("../geom/SimpleGeometry.js").default=} opt_geometry Optional geometry.n * @return {import("../geom/SimpleGeometry.js").default} A geometry.n */n geometryFunction = function (coordinates, opt_geometry) {n var geometry = opt_geometry;n if (geometry) {n if (mode_1 === Mode.POLYGON) {n if (coordinates.length) {n // Add a closing coordinate to match the firstn geometry.setCoordinates([coordinates.concat([coordinates[0]])]);n }n else {n geometry.setCoordinates([]);n }n }n else {n geometry.setCoordinates(coordinates);n }n }n else {n geometry = new Constructor_1(coordinates);n }n return geometry;n };n }n }n /**n * @type {GeometryFunction}n * @privaten */n this.geometryFunction = geometryFunction;n /**n * @type {number}n * @privaten */n this.dragVertexDelay = options.dragVertexDelay !== undefined ? options.dragVertexDelay : 500;n /**n * Finish coordinate for the feature (first point for polygons, last point forn * linestrings).n * @type {import("../coordinate.js").Coordinate}n * @privaten */n this.finishCoordinate = null;n /**n * Sketch feature.n * @type {Feature}n * @privaten */n this.sketchFeature = null;n /**n * Sketch point.n * @type {Feature<Point>}n * @privaten */n this.sketchPoint = null;n /**n * Sketch coordinates. Used when drawing a line or polygon.n * @type {SketchCoordType}n * @privaten */n this.sketchCoords = null;n /**n * Sketch line. Used when drawing polygon.n * @type {Feature<LineString>}n * @privaten */n this.sketchLine = null;n /**n * Sketch line coordinates. Used when drawing a polygon or circle.n * @type {LineCoordType}n * @privaten */n this.sketchLineCoords = null;n /**n * Squared tolerance for handling up events. If the squared distancen * between a down and up event is greater than this tolerance, up eventsn * will not be handled.n * @type {number}n * @privaten */n this.squaredClickTolerance = options.clickTolerance ?n options.clickTolerance * options.clickTolerance : 36;n /**n * Draw overlay where our sketch features are drawn.n * @type {VectorLayer}n * @privaten */n this.overlay = new VectorLayer({n source: new VectorSource({n useSpatialIndex: false,n wrapX: options.wrapX ? options.wrapX : falsen }),n style: options.style ? options.style : getDefaultStyleFunction(),n updateWhileInteracting: truen });n /**n * Name of the geometry attribute for newly created features.n * @type {string|undefined}n * @privaten */n this.geometryName = options.geometryName;n /**n * @privaten * @type {import("../events/condition.js").Condition}n */n this.condition = options.condition ? options.condition : noModifierKeys;n /**n * @privaten * @type {import("../events/condition.js").Condition}n */n this.freehandCondition;n if (options.freehand) {n this.freehandCondition = always;n }n else {n this.freehandCondition = options.freehandCondition ? options.freehandCondition : shiftKeyOnly;n }n _this.addEventListener(getChangeEventType(InteractionProperty.ACTIVE), this.updateState);n return _this;n }n /**n * @inheritDocn */n Draw.prototype.setMap = function (map) {n _super.prototype.setMap.call(this, map);n this.updateState_();n };n /**n * Get the overlay layer that this interaction renders sketch features to.n * @return {VectorLayer} Overlay layer.n * @apin */n Draw.prototype.getOverlay = function () {n return this.overlay_;n };n /**n * Handles the {@link module:ol/MapBrowserEvent map browser event} and may actually draw or finish the drawing.n * @overriden * @apin */n Draw.prototype.handleEvent = function (event) {n if (event.originalEvent.type === EventType.CONTEXTMENU) {n // Avoid context menu for long taps when drawing on mobilen event.preventDefault();n }n this.freehand_ = this.mode_ !== Mode.POINT && this.freehandCondition_(event);n var move = event.type === MapBrowserEventType.POINTERMOVE;n var pass = true;n if (!this.freehand_ && this.lastDragTime_ && event.type === MapBrowserEventType.POINTERDRAG) {n var now = Date.now();n if (now - this.lastDragTime_ >= this.dragVertexDelay_) {n this.downPx_ = event.pixel;n this.shouldHandle_ = !this.freehand_;n move = true;n }n else {n this.lastDragTime_ = undefined;n }n if (this.shouldHandle_ && this.downTimeout_ !== undefined) {n clearTimeout(this.downTimeout_);n this.downTimeout_ = undefined;n }n }n if (this.freehand_ &&n event.type === MapBrowserEventType.POINTERDRAG &&n this.sketchFeature_ !== null) {n this.addToDrawing_(event);n pass = false;n }n else if (this.freehand_ &&n event.type === MapBrowserEventType.POINTERDOWN) {n pass = false;n }n else if (move) {n pass = event.type === MapBrowserEventType.POINTERMOVE;n if (pass && this.freehand_) {n pass = this.handlePointerMove_(event);n }n else if ( /** @type {MapBrowserPointerEvent} */(event).pointerEvent.pointerType == 'mouse' ||n (event.type === MapBrowserEventType.POINTERDRAG && this.downTimeout_ === undefined)) {n this.handlePointerMove_(event);n }n }n else if (event.type === MapBrowserEventType.DBLCLICK) {n pass = false;n }n return _super.prototype.handleEvent.call(this, event) && pass;n };n /**n * @inheritDocn */n Draw.prototype.handleDownEvent = function (event) {n this.shouldHandle_ = !this.freehand_;n if (this.freehand_) {n this.downPx_ = event.pixel;n if (!this.finishCoordinate_) {n this.startDrawing_(event);n }n return true;n }n else if (this.condition_(event)) {n this.lastDragTime_ = Date.now();n this.downTimeout_ = setTimeout(function () {n this.handlePointerMove_(new MapBrowserPointerEvent(MapBrowserEventType.POINTERMOVE, event.map, event.pointerEvent, false, event.frameState));n }.bind(this), this.dragVertexDelay_);n this.downPx_ = event.pixel;n return true;n }n else {n this.lastDragTime_ = undefined;n return false;n }n };n /**n * @inheritDocn */n Draw.prototype.handleUpEvent = function (event) {n var pass = true;n if (this.downTimeout_) {n clearTimeout(this.downTimeout_);n this.downTimeout_ = undefined;n }n this.handlePointerMove_(event);n var circleMode = this.mode_ === Mode.CIRCLE;n if (this.shouldHandle_) {n if (!this.finishCoordinate_) {n this.startDrawing_(event);n if (this.mode_ === Mode.POINT) {n this.finishDrawing();n }n }n else if (this.freehand_ || circleMode) {n this.finishDrawing();n }n else if (this.atFinish_(event)) {n if (this.finishCondition_(event)) {n this.finishDrawing();n }n }n else {n this.addToDrawing_(event);n }n pass = false;n }n else if (this.freehand_) {n this.finishCoordinate_ = null;n this.abortDrawing_();n }n if (!pass && this.stopClick_) {n event.stopPropagation();n }n return pass;n };n /**n * Handle move events.n * @param {import("../MapBrowserEvent.js").default} event A move event.n * @return {boolean} Pass the event to other interactions.n * @privaten */n Draw.prototype.handlePointerMove_ = function (event) {n if (this.downPx_ &&n ((!this.freehand_ && this.shouldHandle_) ||n (this.freehand_ && !this.shouldHandle_))) {n var downPx = this.downPx_;n var clickPx = event.pixel;n var dx = downPx - clickPx;n var dy = downPx - clickPx;n var squaredDistance = dx * dx + dy * dy;n this.shouldHandle_ = this.freehand_ ?n squaredDistance > this.squaredClickTolerance_ :n squaredDistance <= this.squaredClickTolerance_;n if (!this.shouldHandle_) {n return true;n }n }n if (this.finishCoordinate_) {n this.modifyDrawing_(event);n }n else {n this.createOrUpdateSketchPoint_(event);n }n return true;n };n /**n * Determine if an event is within the snapping tolerance of the start coord.n * @param {import("../MapBrowserEvent.js").default} event Event.n * @return {boolean} The event is within the snapping tolerance of the start.n * @privaten */n Draw.prototype.atFinish_ = function (event) {n var at = false;n if (this.sketchFeature_) {n var potentiallyDone = false;n var potentiallyFinishCoordinates = [this.finishCoordinate_];n if (this.mode_ === Mode.LINE_STRING) {n potentiallyDone = this.sketchCoords_.length > this.minPoints_;n }n else if (this.mode_ === Mode.POLYGON) {n var sketchCoords = /** @type {PolyCoordType} */ (this.sketchCoords_);n potentiallyDone = sketchCoords.length > this.minPoints_;n potentiallyFinishCoordinates = [sketchCoords[0], sketchCoords[sketchCoords.length - 2]];n }n if (potentiallyDone) {n var map = event.map;n for (var i = 0, ii = potentiallyFinishCoordinates.length; i < ii; i++) {n var finishCoordinate = potentiallyFinishCoordinates;n var finishPixel = map.getPixelFromCoordinate(finishCoordinate);n var pixel = event.pixel;n var dx = pixel - finishPixel;n var dy = pixel - finishPixel;n var snapTolerance = this.freehand_ ? 1 : this.snapTolerance_;n at = Math.sqrt(dx * dx + dy * dy) <= snapTolerance;n if (at) {n this.finishCoordinate_ = finishCoordinate;n break;n }n }n }n }n return at;n };n /**n * @param {import("../MapBrowserEvent.js").default} event Event.n * @privaten */n Draw.prototype.createOrUpdateSketchPoint_ = function (event) {n var coordinates = event.coordinate.slice();n if (!this.sketchPoint_) {n this.sketchPoint_ = new Feature(new Point(coordinates));n this.updateSketchFeatures_();n }n else {n var sketchPointGeom = this.sketchPoint_.getGeometry();n sketchPointGeom.setCoordinates(coordinates);n }n };n /**n * Start the drawing.n * @param {import("../MapBrowserEvent.js").default} event Event.n * @privaten */n Draw.prototype.startDrawing_ = function (event) {n var start = event.coordinate;n this.finishCoordinate_ = start;n if (this.mode_ === Mode.POINT) {n this.sketchCoords_ = start.slice();n }n else if (this.mode_ === Mode.POLYGON) {n this.sketchCoords_ = [[start.slice(), start.slice()]];n this.sketchLineCoords_ = this.sketchCoords_;n }n else {n this.sketchCoords_ = [start.slice(), start.slice()];n }n if (this.sketchLineCoords_) {n this.sketchLine_ = new Feature(new LineString(this.sketchLineCoords_));n }n var geometry = this.geometryFunction_(this.sketchCoords_);n this.sketchFeature_ = new Feature();n if (this.geometryName_) {n this.sketchFeature_.setGeometryName(this.geometryName_);n }n this.sketchFeature_.setGeometry(geometry);n this.updateSketchFeatures_();n this.dispatchEvent(new DrawEvent(DrawEventType.DRAWSTART, this.sketchFeature_));n };n /**n * Modify the drawing.n * @param {import("../MapBrowserEvent.js").default} event Event.n * @privaten */n Draw.prototype.modifyDrawing_ = function (event) {n var coordinate = event.coordinate;n var geometry = this.sketchFeature_.getGeometry();n var coordinates, last;n if (this.mode_ === Mode.POINT) {n last = this.sketchCoords_;n }n else if (this.mode_ === Mode.POLYGON) {n coordinates = /** @type {PolyCoordType} */ (this.sketchCoords_);n last = coordinates[coordinates.length - 1];n if (this.atFinish_(event)) {n // snap to finishn coordinate = this.finishCoordinate_.slice();n }n }n else {n coordinates = this.sketchCoords_;n last = coordinates[coordinates.length - 1];n }n last = coordinate;n last = coordinate;n this.geometryFunction_(/** @type {!LineCoordType} */ (this.sketchCoords_), geometry);n if (this.sketchPoint_) {n var sketchPointGeom = this.sketchPoint_.getGeometry();n sketchPointGeom.setCoordinates(coordinate);n }n /** @type {LineString} */n var sketchLineGeom;n if (geometry.getType() == GeometryType.POLYGON &&n this.mode_ !== Mode.POLYGON) {n if (!this.sketchLine_) {n this.sketchLine_ = new Feature();n }n var ring = geometry.getLinearRing(0);n sketchLineGeom = this.sketchLine_.getGeometry();n if (!sketchLineGeom) {n sketchLineGeom = new LineString(ring.getFlatCoordinates(), ring.getLayout());n this.sketchLine_.setGeometry(sketchLineGeom);n }n else {n sketchLineGeom.setFlatCoordinates(ring.getLayout(), ring.getFlatCoordinates());n sketchLineGeom.changed();n }n }n else if (this.sketchLineCoords_) {n sketchLineGeom = this.sketchLine_.getGeometry();n sketchLineGeom.setCoordinates(this.sketchLineCoords_);n }n this.updateSketchFeatures_();n };n /**n * Add a new coordinate to the drawing.n * @param {import("../MapBrowserEvent.js").default} event Event.n * @privaten */n Draw.prototype.addToDrawing_ = function (event) {n var coordinate = event.coordinate;n var geometry = this.sketchFeature_.getGeometry();n var done;n var coordinates;n if (this.mode_ === Mode.LINE_STRING) {n this.finishCoordinate_ = coordinate.slice();n coordinates = /** @type {LineCoordType} */ (this.sketchCoords_);n if (coordinates.length >= this.maxPoints_) {n if (this.freehand_) {n coordinates.pop();n }n else {n done = true;n }n }n coordinates.push(coordinate.slice());n this.geometryFunction_(coordinates, geometry);n }n else if (this.mode_ === Mode.POLYGON) {n coordinates = /** @type {PolyCoordType} */ (this.sketchCoords_);n if (coordinates.length >= this.maxPoints_) {n if (this.freehand_) {n coordinates.pop();n }n else {n done = true;n }n }n coordinates.push(coordinate.slice());n if (done) {n this.finishCoordinate_ = coordinates;n }n this.geometryFunction_(this.sketchCoords_, geometry);n }n this.updateSketchFeatures_();n if (done) {n this.finishDrawing();n }n };n /**n * Remove last point of the feature currently being drawn.n * @apin */n Draw.prototype.removeLastPoint = function () {n if (!this.sketchFeature_) {n return;n }n var geometry = this.sketchFeature_.getGeometry();n var coordinates;n /** @type {LineString} */n var sketchLineGeom;n if (this.mode_ === Mode.LINE_STRING) {n coordinates = /** @type {LineCoordType} */ (this.sketchCoords_);n coordinates.splice(-2, 1);n this.geometryFunction_(coordinates, geometry);n if (coordinates.length >= 2) {n this.finishCoordinate_ = coordinates[coordinates.length - 2].slice();n }n }n else if (this.mode_ === Mode.POLYGON) {n coordinates = /** @type {PolyCoordType} */ (this.sketchCoords_);n coordinates.splice(-2, 1);n sketchLineGeom = this.sketchLine_.getGeometry();n sketchLineGeom.setCoordinates(coordinates);n this.geometryFunction_(this.sketchCoords_, geometry);n }n if (coordinates.length === 0) {n this.finishCoordinate_ = null;n }n this.updateSketchFeatures_();n };n /**n * Stop drawing and add the sketch feature to the target layer.n * The {@link module:ol/interaction/Draw~DrawEventType.DRAWEND} event isn * dispatched before inserting the feature.n * @apin */n Draw.prototype.finishDrawing = function () {n var sketchFeature = this.abortDrawing_();n if (!sketchFeature) {n return;n }n var coordinates = this.sketchCoords_;n var geometry = sketchFeature.getGeometry();n if (this.mode_ === Mode.LINE_STRING) {n // remove the redundant last pointn coordinates.pop();n this.geometryFunction_(coordinates, geometry);n }n else if (this.mode_ === Mode.POLYGON) {n // remove the redundant last point in ringn /** @type {PolyCoordType} */ (coordinates).pop();n this.geometryFunction_(coordinates, geometry);n coordinates = geometry.getCoordinates();n }n // cast multi-part geometriesn if (this.type_ === GeometryType.MULTI_POINT) {n sketchFeature.setGeometry(new MultiPoint([/** @type {PointCoordType} */ (coordinates)]));n }n else if (this.type_ === GeometryType.MULTI_LINE_STRING) {n sketchFeature.setGeometry(new MultiLineString([/** @type {LineCoordType} */ (coordinates)]));n }n else if (this.type_ === GeometryType.MULTI_POLYGON) {n sketchFeature.setGeometry(new MultiPolygon([/** @type {PolyCoordType} */ (coordinates)]));n }n // First dispatch event to allow full set up of featuren this.dispatchEvent(new DrawEvent(DrawEventType.DRAWEND, sketchFeature));n // Then insert featuren if (this.features_) {n this.features_.push(sketchFeature);n }n if (this.source_) {n this.source_.addFeature(sketchFeature);n }n };n /**n * Stop drawing without adding the sketch feature to the target layer.n * @return {Feature} The sketch feature (or null if none).n * @privaten */n Draw.prototype.abortDrawing_ = function () {n this.finishCoordinate_ = null;n var sketchFeature = this.sketchFeature_;n if (sketchFeature) {n this.sketchFeature_ = null;n this.sketchPoint_ = null;n this.sketchLine_ = null;n this.overlay_.getSource().clear(true);n }n return sketchFeature;n };n /**n * Extend an existing geometry by adding additional points. This only worksn * on features with `LineString` geometries, where the interaction willn * extend lines by adding points to the end of the coordinates array.n * @param {!Feature<LineString>} feature Feature to be extended.n * @apin */n Draw.prototype.extend = function (feature) {n var geometry = feature.getGeometry();n var lineString = geometry;n this.sketchFeature_ = feature;n this.sketchCoords_ = lineString.getCoordinates();n var last = this.sketchCoords_[this.sketchCoords_.length - 1];n this.finishCoordinate_ = last.slice();n this.sketchCoords_.push(last.slice());n this.updateSketchFeatures_();n this.dispatchEvent(new DrawEvent(DrawEventType.DRAWSTART, this.sketchFeature_));n };n /**n * Redraw the sketch features.n * @privaten */n Draw.prototype.updateSketchFeatures_ = function () {n var sketchFeatures = [];n if (this.sketchFeature_) {n sketchFeatures.push(this.sketchFeature_);n }n if (this.sketchLine_) {n sketchFeatures.push(this.sketchLine_);n }n if (this.sketchPoint_) {n sketchFeatures.push(this.sketchPoint_);n }n var overlaySource = this.overlay_.getSource();n overlaySource.clear(true);n overlaySource.addFeatures(sketchFeatures);n };n /**n * @privaten */n Draw.prototype.updateState_ = function () {n var map = this.getMap();n var active = this.getActive();n if (!map || !active) {n this.abortDrawing_();n }n this.overlay_.setMap(active ? map : null);n };n return Draw;n}(PointerInteraction));n/**n * @return {import("../style/Style.js").StyleFunction} Styles.n */nfunction getDefaultStyleFunction() {n var styles = createEditingStyle();n return function (feature, resolution) {n return styles;n };n}n/**n * Create a `geometryFunction` for `type: 'Circle'` that will create a regularn * polygon with a user specified number of sides and start angle instead of ann * `import("../geom/Circle.js").Circle` geometry.n * @param {number=} opt_sides Number of sides of the regular polygon. Default isn * 32.n * @param {number=} opt_angle Angle of the first point in radians. 0 means East.n * Default is the angle defined by the heading from the center of then * regular polygon to the current pointer position.n * @return {GeometryFunction} Function that draws an * polygon.n * @apin */nexport function createRegularPolygon(opt_sides, opt_angle) {n return function (coordinates, opt_geometry) {n var center = /** @type {LineCoordType} */ (coordinates);n var end = /** @type {LineCoordType} */ (coordinates);n var radius = Math.sqrt(squaredCoordinateDistance(center, end));n var geometry = opt_geometry ? /** @type {Polygon} */ (opt_geometry) :n fromCircle(new Circle(center), opt_sides);n var angle = opt_angle;n if (!opt_angle) {n var x = end - center;n var y = end - center;n angle = Math.atan(y / x) - (x < 0 ? Math.PI : 0);n }n makeRegular(geometry, center, radius, angle);n return geometry;n };n}n/**n * Create a `geometryFunction` that will create a box-shaped polygon (alignedn * with the coordinate system axes). Use this with the draw interaction andn * `type: 'Circle'` to return a box instead of a circle geometry.n * @return {GeometryFunction} Function that draws a box-shaped polygon.n * @apin */nexport function createBox() {n return (function (coordinates, opt_geometry) {n var extent = boundingExtent(/** @type {LineCoordType} */ (coordinates));n var boxCoordinates = [[n getBottomLeft(extent),n getBottomRight(extent),n getTopRight(extent),n getTopLeft(extent),n getBottomLeft(extent)n ]];n var geometry = opt_geometry;n if (geometry) {n geometry.setCoordinates(boxCoordinates);n }n else {n geometry = new Polygon(boxCoordinates);n }n return geometry;n });n}n/**n * Get the drawing mode. The mode for mult-part geometries is the same as forn * their single-part cousins.n * @param {GeometryType} type Geometry type.n * @return {Mode} Drawing mode.n */nfunction getMode(type) {n var mode;n if (type === GeometryType.POINT ||n type === GeometryType.MULTI_POINT) {n mode = Mode.POINT;n }n else if (type === GeometryType.LINE_STRING ||n type === GeometryType.MULTI_LINE_STRING) {n mode = Mode.LINE_STRING;n }n else if (type === GeometryType.POLYGON ||n type === GeometryType.MULTI_POLYGON) {n mode = Mode.POLYGON;n }n else if (type === GeometryType.CIRCLE) {n mode = Mode.CIRCLE;n }n return (n /** @type {!Mode} */ (mode));n}nexport default Draw;n//# sourceMappingURL=Draw.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/interaction/Extentn */nimport Feature from '../Feature.js';nimport MapBrowserEventType from '../MapBrowserEventType.js';nimport { squaredDistanceToSegment, closestOnSegment, distance as coordinateDistance, squaredDistance as squaredCoordinateDistance } from '../coordinate.js';nimport Event from '../events/Event.js';nimport { boundingExtent, getArea } from '../extent.js';nimport GeometryType from '../geom/GeometryType.js';nimport Point from '../geom/Point.js';nimport { fromExtent as polygonFromExtent } from '../geom/Polygon.js';nimport PointerInteraction from './Pointer.js';nimport VectorLayer from '../layer/Vector.js';nimport VectorSource from '../source/Vector.js';nimport { createEditingStyle } from '../style/Style.js';nimport { toUserExtent } from '../proj.js';n/**n * @typedef {Object} Optionsn * @property {import("../extent.js").Extent} [extent] Initial extent. Defaults to non * initial extent.n * @property {import("../style/Style.js").StyleLike} [boxStyle]n * Style for the drawn extent box. Defaults ton * {@link module:ol/style/Style~createEditing()}n * @property {number} [pixelTolerance=10] Pixel tolerance for considering then * pointer close enough to a segment or vertex for editing.n * @property {import("../style/Style.js").StyleLike} [pointerStyle]n * Style for the cursor used to draw the extent. Defaults ton * {@link module:ol/style/Style~createEditing()}n * @property {boolean} [wrapX=false] Wrap the drawn extent across multiple mapsn * in the X direction? Only affects visuals, not functionality.n */n/**n * @enum {string}n */nvar ExtentEventType = {n /**n * Triggered after the extent is changedn * @event ExtentEvent#extentchangedn * @apin */n EXTENTCHANGED: 'extentchanged'n};n/**n * @classdescn * Events emitted by {@link module:ol/interaction/Extent~Extent} instances aren * instances of this type.n */nvar ExtentEvent = /** @class */ (function (_super) {n __extends(ExtentEvent, _super);n /**n * @param {import("../extent.js").Extent} extent the new extentn */n function ExtentEvent(extent) {n var _this = _super.call(this, ExtentEventType.EXTENTCHANGED) || this;n /**n * The current extent.n * @type {import("../extent.js").Extent}n * @apin */n _this.extent = extent;n return _this;n }n return ExtentEvent;n}(Event));n/**n * @classdescn * Allows the user to draw a vector box by clicking and dragging on the map.n * Once drawn, the vector box can be modified by dragging its vertices or edges.n * This interaction is only supported for mouse devices.n *n * @fires ExtentEventn * @apin */nvar Extent = /** @class */ (function (_super) {n __extends(Extent, _super);n /**n * @param {Options=} opt_options Options.n */n function Extent(opt_options) {n var _this = this;n var options = opt_options || {};n _this = _super.call(this, /** @type {import("./Pointer.js").Options} */ (options)) || this;n /**n * Extent of the drawn boxn * @type {import("../extent.js").Extent}n * @privaten */n this.extent = null;n /**n * Handler for pointer move eventsn * @type {function (import("../coordinate.js").Coordinate): import("../extent.js").Extent|null}n * @privaten */n this.pointerHandler = null;n /**n * Pixel threshold to snap to extentn * @type {number}n * @privaten */n this.pixelTolerance = options.pixelTolerance !== undefined ?n options.pixelTolerance : 10;n /**n * Is the pointer snapped to an extent vertexn * @type {boolean}n * @privaten */n this.snappedToVertex = false;n /**n * Feature for displaying the visible extentn * @type {Feature}n * @privaten */n this.extentFeature = null;n /**n * Feature for displaying the visible pointern * @type {Feature<Point>}n * @privaten */n this.vertexFeature = null;n if (!opt_options) {n opt_options = {};n }n /**n * Layer for the extentFeaturen * @type {VectorLayer}n * @privaten */n this.extentOverlay = new VectorLayer({n source: new VectorSource({n useSpatialIndex: false,n wrapX: !!opt_options.wrapXn }),n style: opt_options.boxStyle ? opt_options.boxStyle : getDefaultExtentStyleFunction(),n updateWhileAnimating: true,n updateWhileInteracting: truen });n /**n * Layer for the vertexFeaturen * @type {VectorLayer}n * @privaten */n this.vertexOverlay = new VectorLayer({n source: new VectorSource({n useSpatialIndex: false,n wrapX: !!opt_options.wrapXn }),n style: opt_options.pointerStyle ? opt_options.pointerStyle : getDefaultPointerStyleFunction(),n updateWhileAnimating: true,n updateWhileInteracting: truen });n if (opt_options.extent) {n _this.setExtent(opt_options.extent);n }n return _this;n }n /**n * @param {import("../pixel.js").Pixel} pixel cursor locationn * @param {import("../PluggableMap.js").default} map mapn * @returns {import("../coordinate.js").Coordinate|null} snapped vertex on extentn * @privaten */n Extent.prototype.snapToVertex_ = function (pixel, map) {n var pixelCoordinate = map.getCoordinateFromPixelInternal(pixel);n var sortByDistance = function (a, b) {n return squaredDistanceToSegment(pixelCoordinate, a) -n squaredDistanceToSegment(pixelCoordinate, b);n };n var extent = this.getExtentInternal();n if (extent) {n //convert extents to line segments and find the segment closest to pixelCoordinaten var segments = getSegments(extent);n segments.sort(sortByDistance);n var closestSegment = segments;n var vertex = (closestOnSegment(pixelCoordinate, closestSegment));n var vertexPixel = map.getPixelFromCoordinateInternal(vertex);n //if the distance is within tolerance, snap to the segmentn if (coordinateDistance(pixel, vertexPixel) <= this.pixelTolerance_) {n //test if we should further snap to a vertexn var pixel1 = map.getPixelFromCoordinateInternal(closestSegment);n var pixel2 = map.getPixelFromCoordinateInternal(closestSegment);n var squaredDist1 = squaredCoordinateDistance(vertexPixel, pixel1);n var squaredDist2 = squaredCoordinateDistance(vertexPixel, pixel2);n var dist = Math.sqrt(Math.min(squaredDist1, squaredDist2));n this.snappedToVertex_ = dist <= this.pixelTolerance_;n if (this.snappedToVertex_) {n vertex = squaredDist1 > squaredDist2 ?n closestSegment : closestSegment;n }n return vertex;n }n }n return null;n };n /**n * @param {import("../MapBrowserEvent.js").default} mapBrowserEvent pointer move eventn * @privaten */n Extent.prototype.handlePointerMove_ = function (mapBrowserEvent) {n var pixel = mapBrowserEvent.pixel;n var map = mapBrowserEvent.map;n var vertex = this.snapToVertex_(pixel, map);n if (!vertex) {n vertex = map.getCoordinateFromPixelInternal(pixel);n }n this.createOrUpdatePointerFeature_(vertex);n };n /**n * @param {import("../extent.js").Extent} extent extentn * @returns {Feature} extent as featruen * @privaten */n Extent.prototype.createOrUpdateExtentFeature_ = function (extent) {n var extentFeature = this.extentFeature_;n if (!extentFeature) {n if (!extent) {n extentFeature = new Feature({});n }n else {n extentFeature = new Feature(polygonFromExtent(extent));n }n this.extentFeature_ = extentFeature;n this.extentOverlay_.getSource().addFeature(extentFeature);n }n else {n if (!extent) {n extentFeature.setGeometry(undefined);n }n else {n extentFeature.setGeometry(polygonFromExtent(extent));n }n }n return extentFeature;n };n /**n * @param {import("../coordinate.js").Coordinate} vertex location of featuren * @returns {Feature} vertex as featuren * @privaten */n Extent.prototype.createOrUpdatePointerFeature_ = function (vertex) {n var vertexFeature = this.vertexFeature_;n if (!vertexFeature) {n vertexFeature = new Feature(new Point(vertex));n this.vertexFeature_ = vertexFeature;n this.vertexOverlay_.getSource().addFeature(vertexFeature);n }n else {n var geometry = vertexFeature.getGeometry();n geometry.setCoordinates(vertex);n }n return vertexFeature;n };n /**n * @inheritDocn */n Extent.prototype.handleEvent = function (mapBrowserEvent) {n if (!( /** @type {import("../MapBrowserPointerEvent.js").default} */(mapBrowserEvent).pointerEvent)) {n return true;n }n //display pointer (if not dragging)n if (mapBrowserEvent.type == MapBrowserEventType.POINTERMOVE && !this.handlingDownUpSequence) {n this.handlePointerMove_(mapBrowserEvent);n }n //call pointer to determine up/down/dragn _super.prototype.handleEvent.call(this, mapBrowserEvent);n //return false to stop propagationn return false;n };n /**n * @inheritDocn */n Extent.prototype.handleDownEvent = function (mapBrowserEvent) {n var pixel = mapBrowserEvent.pixel;n var map = mapBrowserEvent.map;n var extent = this.getExtentInternal();n var vertex = this.snapToVertex_(pixel, map);n //find the extent corner opposite the passed cornern var getOpposingPoint = function (point) {n var x_ = null;n var y_ = null;n if (point == extent) {n x_ = extent;n }n else if (point == extent) {n x_ = extent;n }n if (point == extent) {n y_ = extent;n }n else if (point == extent) {n y_ = extent;n }n if (x_ !== null && y_ !== null) {n return [x_, y_];n }n return null;n };n if (vertex && extent) {n var x = (vertex == extent || vertex == extent) ? vertex : null;n var y = (vertex == extent || vertex == extent) ? vertex : null;n //snap to pointn if (x !== null && y !== null) {n this.pointerHandler_ = getPointHandler(getOpposingPoint(vertex));n //snap to edgen }n else if (x !== null) {n this.pointerHandler_ = getEdgeHandler(getOpposingPoint([x, extent]), getOpposingPoint([x, extent]));n }n else if (y !== null) {n this.pointerHandler_ = getEdgeHandler(getOpposingPoint([extent, y]), getOpposingPoint([extent, y]));n }n //no snap - new bboxn }n else {n vertex = map.getCoordinateFromPixelInternal(pixel);n this.setExtent([vertex, vertex, vertex, vertex]);n this.pointerHandler_ = getPointHandler(vertex);n }n return true; //event handled; start downup sequencen };n /**n * @inheritDocn */n Extent.prototype.handleDragEvent = function (mapBrowserEvent) {n if (this.pointerHandler_) {n var pixelCoordinate = mapBrowserEvent.coordinate;n this.setExtent(this.pointerHandler_(pixelCoordinate));n this.createOrUpdatePointerFeature_(pixelCoordinate);n }n return true;n };n /**n * @inheritDocn */n Extent.prototype.handleUpEvent = function (mapBrowserEvent) {n this.pointerHandler_ = null;n //If bbox is zero area, set to null;n var extent = this.getExtentInternal();n if (!extent || getArea(extent) === 0) {n this.setExtent(null);n }n return false; //Stop handling downup sequencen };n /**n * @inheritDocn */n Extent.prototype.setMap = function (map) {n this.extentOverlay_.setMap(map);n this.vertexOverlay_.setMap(map);n _super.prototype.setMap.call(this, map);n };n /**n * Returns the current drawn extent in the view projection (or user projection if set)n *n * @return {import("../extent.js").Extent} Drawn extent in the view projection.n * @apin */n Extent.prototype.getExtent = function () {n return toUserExtent(this.getExtentInternal(), this.getMap().getView().getProjection());n };n /**n * Returns the current drawn extent in the view projectionn *n * @return {import("../extent.js").Extent} Drawn extent in the view projection.n * @apin */n Extent.prototype.getExtentInternal = function () {n return this.extent_;n };n /**n * Manually sets the drawn extent, using the view projection.n *n * @param {import("../extent.js").Extent} extent Extentn * @apin */n Extent.prototype.setExtent = function (extent) {n //Null extent means no bboxn this.extent_ = extent ? extent : null;n this.createOrUpdateExtentFeature_(extent);n this.dispatchEvent(new ExtentEvent(this.extent_));n };n return Extent;n}(PointerInteraction));n/**n * Returns the default style for the drawn bboxn *n * @return {import("../style/Style.js").StyleFunction} Default Extent stylen */nfunction getDefaultExtentStyleFunction() {n var style = createEditingStyle();n return function (feature, resolution) {n return style;n };n}n/**n * Returns the default style for the pointern *n * @return {import("../style/Style.js").StyleFunction} Default pointer stylen */nfunction getDefaultPointerStyleFunction() {n var style = createEditingStyle();n return function (feature, resolution) {n return style;n };n}n/**n * @param {import("../coordinate.js").Coordinate} fixedPoint corner that will be unchanged in the new extentn * @returns {function (import("../coordinate.js").Coordinate): import("../extent.js").Extent} event handlern */nfunction getPointHandler(fixedPoint) {n return function (point) {n return boundingExtent([fixedPoint, point]);n };n}n/**n * @param {import("../coordinate.js").Coordinate} fixedP1 first corner that will be unchanged in the new extentn * @param {import("../coordinate.js").Coordinate} fixedP2 second corner that will be unchanged in the new extentn * @returns {function (import("../coordinate.js").Coordinate): import("../extent.js").Extent|null} event handlern */nfunction getEdgeHandler(fixedP1, fixedP2) {n if (fixedP1 == fixedP2) {n return function (point) {n return boundingExtent([fixedP1, [point, fixedP2]]);n };n }n else if (fixedP1 == fixedP2) {n return function (point) {n return boundingExtent([fixedP1, [fixedP2, point]]);n };n }n else {n return null;n }n}n/**n * @param {import("../extent.js").Extent} extent extentn * @returns {Array<Array<import("../coordinate.js").Coordinate>>} extent line segmentsn */nfunction getSegments(extent) {n return [n [[extent, extent], [extent, extent]],n [[extent, extent], [extent, extent]],n [[extent, extent], [extent, extent]],n [[extent, extent], [extent, extent]]n ];n}nexport default Extent;n//# sourceMappingURL=Extent.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/interaction/Modifyn */nimport { getUid } from '../util.js';nimport Collection from '../Collection.js';nimport CollectionEventType from '../CollectionEventType.js';nimport Feature from '../Feature.js';nimport MapBrowserEventType from '../MapBrowserEventType.js';nimport { equals } from '../array.js';nimport { equals as coordinatesEqual, distance as coordinateDistance, squaredDistance as squaredCoordinateDistance, squaredDistanceToSegment, closestOnSegment } from '../coordinate.js';nimport Event from '../events/Event.js';nimport EventType from '../events/EventType.js';nimport { always, primaryAction, altKeyOnly, singleClick } from '../events/condition.js';nimport { boundingExtent, buffer as bufferExtent, createOrUpdateFromCoordinate as createExtent } from '../extent.js';nimport GeometryType from '../geom/GeometryType.js';nimport Point from '../geom/Point.js';nimport PointerInteraction from './Pointer.js';nimport VectorLayer from '../layer/Vector.js';nimport VectorSource from '../source/Vector.js';nimport VectorEventType from '../source/VectorEventType.js';nimport RBush from '../structs/RBush.js';nimport { createEditingStyle } from '../style/Style.js';nimport { fromUserExtent, toUserExtent, fromUserCoordinate, toUserCoordinate } from '../proj.js';n/**n * The segment index assigned to a circle's center whenn * breaking up a circle into ModifySegmentDataType segments.n * @type {number}n */nvar CIRCLE_CENTER_INDEX = 0;n/**n * The segment index assigned to a circle's circumference whenn * breaking up a circle into ModifySegmentDataType segments.n * @type {number}n */nvar CIRCLE_CIRCUMFERENCE_INDEX = 1;nvar tempExtent = [0, 0, 0, 0];nvar tempSegment = [];n/**n * @enum {string}n */nvar ModifyEventType = {n /**n * Triggered upon feature modification startn * @event ModifyEvent#modifystartn * @apin */n MODIFYSTART: 'modifystart',n /**n * Triggered upon feature modification endn * @event ModifyEvent#modifyendn * @apin */n MODIFYEND: 'modifyend'n};n/**n * @typedef {Object} SegmentDatan * @property {Array<number>} [depth]n * @property {Feature} featuren * @property {import("../geom/SimpleGeometry.js").default} geometryn * @property {number} [index]n * @property {Array<import("../extent.js").Extent>} segmentn * @property {Array<SegmentData>} [featureSegments]n */n/**n * @typedef {Object} Optionsn * @property {import("../events/condition.js").Condition} [condition] A function thatn * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns an * boolean to indicate whether that event will be considered to add or move an * vertex to the sketch. Default isn * {@link module:ol/events/condition~primaryAction}.n * @property {import("../events/condition.js").Condition} [deleteCondition] A functionn * that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns an * boolean to indicate whether that event should be handled. By default,n * {@link module:ol/events/condition~singleClick} withn * {@link module:ol/events/condition~altKeyOnly} results in a vertex deletion.n * @property {import("../events/condition.js").Condition} [insertVertexCondition] An * function that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} andn * returns a boolean to indicate whether a new vertex should be added to the sketchn * features. Default is {@link module:ol/events/condition~always}.n * @property {number} [pixelTolerance=10] Pixel tolerance for considering then * pointer close enough to a segment or vertex for editing.n * @property {import("../style/Style.js").StyleLike} [style]n * Style used for the features being modified. By default the default editn * style is used (see {@link module:ol/style}).n * @property {VectorSource} [source] The vector source withn * features to modify. If a vector source is not provided, a feature collectionn * must be provided with the features option.n * @property {Collection<Feature>} [features]n * The features the interaction works on. If a feature collection is notn * provided, a vector source must be provided with the source option.n * @property {boolean} [wrapX=false] Wrap the world horizontally on the sketchn * overlay.n */n/**n * @classdescn * Events emitted by {@link module:ol/interaction/Modify~Modify} instances aren * instances of this type.n */nvar ModifyEvent = /** @class */ (function (_super) {n __extends(ModifyEvent, _super);n /**n * @param {ModifyEventType} type Type.n * @param {Collection<Feature>} featuresn * The features modified.n * @param {import("../MapBrowserPointerEvent.js").default} mapBrowserPointerEventn * Associated {@link module:ol/MapBrowserPointerEvent}.n */n function ModifyEvent(type, features, mapBrowserPointerEvent) {n var _this = _super.call(this, type) || this;n /**n * The features being modified.n * @type {Collection<Feature>}n * @apin */n _this.features = features;n /**n * Associated {@link module:ol/MapBrowserEvent}.n * @type {import("../MapBrowserEvent.js").default}n * @apin */n _this.mapBrowserEvent = mapBrowserPointerEvent;n return _this;n }n return ModifyEvent;n}(Event));nexport { ModifyEvent };n/**n * @classdescn * Interaction for modifying feature geometries. To modify features that haven * been added to an existing source, construct the modify interaction with then * `source` option. If you want to modify features in a collection (for example,n * the collection used by a select interaction), construct the interaction withn * the `features` option. The interaction must be constructed with either an * `source` or `features` option.n *n * By default, the interaction will allow deletion of vertices when the `alt`n * key is pressed. To configure the interaction with a different conditionn * for deletion, use the `deleteCondition` option.n * @fires ModifyEventn * @apin */nvar Modify = /** @class */ (function (_super) {n __extends(Modify, _super);n /**n * @param {Options} options Options.n */n function Modify(options) {n var _this = _super.call(this, /** @type {import("./Pointer.js").Options} */ (options)) || this;n /** @private */n this.boundHandleFeatureChange = this.handleFeatureChange.bind(_this);n /**n * @privaten * @type {import("../events/condition.js").Condition}n */n this.condition = options.condition ? options.condition : primaryAction;n /**n * @privaten * @param {import("../MapBrowserEvent.js").default} mapBrowserEvent Browser event.n * @return {boolean} Combined condition result.n */n this.defaultDeleteCondition = function (mapBrowserEvent) {n return altKeyOnly(mapBrowserEvent) && singleClick(mapBrowserEvent);n };n /**n * @type {import("../events/condition.js").Condition}n * @privaten */n this.deleteCondition = options.deleteCondition ?n options.deleteCondition : this.defaultDeleteCondition;n /**n * @type {import("../events/condition.js").Condition}n * @privaten */n this.insertVertexCondition = options.insertVertexCondition ?n options.insertVertexCondition : always;n /**n * Editing vertex.n * @type {Feature}n * @privaten */n this.vertexFeature = null;n /**n * Segments intersecting {@link this.vertexFeature_} by segment uid.n * @type {Object<string, boolean>}n * @privaten */n this.vertexSegments = null;n /**n * @type {import("../pixel.js").Pixel}n * @privaten */n this.lastPixel = [0, 0];n /**n * Tracks if the next `singleclick` event should be ignored to preventn * accidental deletion right after vertex creation.n * @type {boolean}n * @privaten */n this.ignoreNextSingleClick = false;n /**n * @type {boolean}n * @privaten */n this.modified = false;n /**n * Segment RTree for each layern * @type {RBush<SegmentData>}n * @privaten */n this.rBush = new RBush();n /**n * @type {number}n * @privaten */n this.pixelTolerance = options.pixelTolerance !== undefined ?n options.pixelTolerance : 10;n /**n * @type {boolean}n * @privaten */n this.snappedToVertex = false;n /**n * Indicate whether the interaction is currently changing a feature'sn * coordinates.n * @type {boolean}n * @privaten */n this.changingFeature = false;n /**n * @type {Array}n * @privaten */n this.dragSegments = [];n /**n * Draw overlay where sketch features are drawn.n * @type {VectorLayer}n * @privaten */n this.overlay = new VectorLayer({n source: new VectorSource({n useSpatialIndex: false,n wrapX: !!options.wrapXn }),n style: options.style ? options.style : getDefaultStyleFunction(),n updateWhileAnimating: true,n updateWhileInteracting: truen });n /**n * @constn * @privaten * @type {!Object<string, function(Feature, import("../geom/Geometry.js").default): void>}n */n this.SEGMENT_WRITERS = {n 'Point': this.writePointGeometry.bind(_this),n 'LineString': this.writeLineStringGeometry.bind(_this),n 'LinearRing': this.writeLineStringGeometry.bind(_this),n 'Polygon': this.writePolygonGeometry.bind(_this),n 'MultiPoint': this.writeMultiPointGeometry.bind(_this),n 'MultiLineString': this.writeMultiLineStringGeometry.bind(_this),n 'MultiPolygon': this.writeMultiPolygonGeometry.bind(_this),n 'Circle': this.writeCircleGeometry.bind(_this),n 'GeometryCollection': this.writeGeometryCollectionGeometry.bind(_this)n };n /**n * @type {VectorSource}n * @privaten */n this.source = null;n var features;n if (options.source) {n this.source = options.source;n features = new Collection(this.source.getFeatures());n this.source.addEventListener(VectorEventType.ADDFEATURE, this.handleSourceAdd.bind(_this));n this.source.addEventListener(VectorEventType.REMOVEFEATURE, this.handleSourceRemove.bind(_this));n }n else {n features = options.features;n }n if (!features) {n throw new Error('The modify interaction requires features or a source');n }n /**n * @type {Collection<Feature>}n * @privaten */n this.features = features;n this.features.forEach(this.addFeature.bind(_this));n this.features.addEventListener(CollectionEventType.ADD, this.handleFeatureAdd.bind(_this));n this.features.addEventListener(CollectionEventType.REMOVE, this.handleFeatureRemove.bind(_this));n /**n * @type {import("../MapBrowserPointerEvent.js").default}n * @privaten */n this.lastPointerEvent = null;n return _this;n }n /**n * @param {Feature} feature Feature.n * @privaten */n Modify.prototype.addFeature_ = function (feature) {n var geometry = feature.getGeometry();n if (geometry) {n var writer = this.SEGMENT_WRITERS_;n if (writer) {n writer(feature, geometry);n }n }n var map = this.getMap();n if (map && map.isRendered() && this.getActive()) {n this.handlePointerAtPixel_(this.lastPixel_, map);n }n feature.addEventListener(EventType.CHANGE, this.boundHandleFeatureChange_);n };n /**n * @param {import("../MapBrowserPointerEvent.js").default} evt Map browser eventn * @privaten */n Modify.prototype.willModifyFeatures_ = function (evt) {n if (!this.modified_) {n this.modified_ = true;n this.dispatchEvent(new ModifyEvent(ModifyEventType.MODIFYSTART, this.features_, evt));n }n };n /**n * @param {Feature} feature Feature.n * @privaten */n Modify.prototype.removeFeature_ = function (feature) {n this.removeFeatureSegmentData_(feature);n // Remove the vertex feature if the collection of canditate features is empty.n if (this.vertexFeature_ && this.features_.getLength() === 0) {n this.overlay_.getSource().removeFeature(this.vertexFeature_);n this.vertexFeature_ = null;n }n feature.removeEventListener(EventType.CHANGE, this.boundHandleFeatureChange_);n };n /**n * @param {Feature} feature Feature.n * @privaten */n Modify.prototype.removeFeatureSegmentData_ = function (feature) {n var rBush = this.rBush_;n /** @type {Array<SegmentData>} */n var nodesToRemove = [];n rBush.forEach(n /**n * @param {SegmentData} node RTree node.n */n function (node) {n if (feature === node.feature) {n nodesToRemove.push(node);n }n });n for (var i = nodesToRemove.length - 1; i >= 0; –i) {n var nodeToRemove = nodesToRemove;n for (var j = this.dragSegments_.length - 1; j >= 0; –j) {n if (this.dragSegments_[0] === nodeToRemove) {n this.dragSegments_.splice(j, 1);n }n }n rBush.remove(nodeToRemove);n }n };n /**n * @inheritDocn */n Modify.prototype.setActive = function (active) {n if (this.vertexFeature_ && !active) {n this.overlay_.getSource().removeFeature(this.vertexFeature_);n this.vertexFeature_ = null;n }n _super.prototype.setActive.call(this, active);n };n /**n * @inheritDocn */n Modify.prototype.setMap = function (map) {n this.overlay_.setMap(map);n _super.prototype.setMap.call(this, map);n };n /**n * Get the overlay layer that this interaction renders sketch features to.n * @return {VectorLayer} Overlay layer.n * @apin */n Modify.prototype.getOverlay = function () {n return this.overlay_;n };n /**n * @param {import("../source/Vector.js").VectorSourceEvent} event Event.n * @privaten */n Modify.prototype.handleSourceAdd_ = function (event) {n if (event.feature) {n this.features_.push(event.feature);n }n };n /**n * @param {import("../source/Vector.js").VectorSourceEvent} event Event.n * @privaten */n Modify.prototype.handleSourceRemove_ = function (event) {n if (event.feature) {n this.features_.remove(event.feature);n }n };n /**n * @param {import("../Collection.js").CollectionEvent} evt Event.n * @privaten */n Modify.prototype.handleFeatureAdd_ = function (evt) {n this.addFeature_(/** @type {Feature} */ (evt.element));n };n /**n * @param {import("../events/Event.js").default} evt Event.n * @privaten */n Modify.prototype.handleFeatureChange_ = function (evt) {n if (!this.changingFeature_) {n var feature = /** @type {Feature} */ (evt.target);n this.removeFeature_(feature);n this.addFeature_(feature);n }n };n /**n * @param {import("../Collection.js").CollectionEvent} evt Event.n * @privaten */n Modify.prototype.handleFeatureRemove_ = function (evt) {n var feature = /** @type {Feature} */ (evt.element);n this.removeFeature_(feature);n };n /**n * @param {Feature} feature Featuren * @param {Point} geometry Geometry.n * @privaten */n Modify.prototype.writePointGeometry_ = function (feature, geometry) {n var coordinates = geometry.getCoordinates();n /** @type {SegmentData} */n var segmentData = {n feature: feature,n geometry: geometry,n segment: [coordinates, coordinates]n };n this.rBush_.insert(geometry.getExtent(), segmentData);n };n /**n * @param {Feature} feature Featuren * @param {import("../geom/MultiPoint.js").default} geometry Geometry.n * @privaten */n Modify.prototype.writeMultiPointGeometry_ = function (feature, geometry) {n var points = geometry.getCoordinates();n for (var i = 0, ii = points.length; i < ii; ++i) {n var coordinates = points;n /** @type {SegmentData} */n var segmentData = {n feature: feature,n geometry: geometry,n depth: [i],n index: i,n segment: [coordinates, coordinates]n };n this.rBush_.insert(geometry.getExtent(), segmentData);n }n };n /**n * @param {Feature} feature Featuren * @param {import("../geom/LineString.js").default} geometry Geometry.n * @privaten */n Modify.prototype.writeLineStringGeometry_ = function (feature, geometry) {n var coordinates = geometry.getCoordinates();n for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {n var segment = coordinates.slice(i, i + 2);n /** @type {SegmentData} */n var segmentData = {n feature: feature,n geometry: geometry,n index: i,n segment: segmentn };n this.rBush_.insert(boundingExtent(segment), segmentData);n }n };n /**n * @param {Feature} feature Featuren * @param {import("../geom/MultiLineString.js").default} geometry Geometry.n * @privaten */n Modify.prototype.writeMultiLineStringGeometry_ = function (feature, geometry) {n var lines = geometry.getCoordinates();n for (var j = 0, jj = lines.length; j < jj; ++j) {n var coordinates = lines;n for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {n var segment = coordinates.slice(i, i + 2);n /** @type {SegmentData} */n var segmentData = {n feature: feature,n geometry: geometry,n depth: [j],n index: i,n segment: segmentn };n this.rBush_.insert(boundingExtent(segment), segmentData);n }n }n };n /**n * @param {Feature} feature Featuren * @param {import("../geom/Polygon.js").default} geometry Geometry.n * @privaten */n Modify.prototype.writePolygonGeometry_ = function (feature, geometry) {n var rings = geometry.getCoordinates();n for (var j = 0, jj = rings.length; j < jj; ++j) {n var coordinates = rings;n for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {n var segment = coordinates.slice(i, i + 2);n /** @type {SegmentData} */n var segmentData = {n feature: feature,n geometry: geometry,n depth: [j],n index: i,n segment: segmentn };n this.rBush_.insert(boundingExtent(segment), segmentData);n }n }n };n /**n * @param {Feature} feature Featuren * @param {import("../geom/MultiPolygon.js").default} geometry Geometry.n * @privaten */n Modify.prototype.writeMultiPolygonGeometry_ = function (feature, geometry) {n var polygons = geometry.getCoordinates();n for (var k = 0, kk = polygons.length; k < kk; ++k) {n var rings = polygons;n for (var j = 0, jj = rings.length; j < jj; ++j) {n var coordinates = rings;n for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {n var segment = coordinates.slice(i, i + 2);n /** @type {SegmentData} */n var segmentData = {n feature: feature,n geometry: geometry,n depth: [j, k],n index: i,n segment: segmentn };n this.rBush_.insert(boundingExtent(segment), segmentData);n }n }n }n };n /**n * We convert a circle into two segments. The segment at indexn * {@link CIRCLE_CENTER_INDEX} is then * circle's center (a point). The segment at indexn * {@link CIRCLE_CIRCUMFERENCE_INDEX} isn * the circumference, and is not a line segment.n *n * @param {Feature} feature Feature.n * @param {import("../geom/Circle.js").default} geometry Geometry.n * @privaten */n Modify.prototype.writeCircleGeometry_ = function (feature, geometry) {n var coordinates = geometry.getCenter();n /** @type {SegmentData} */n var centerSegmentData = {n feature: feature,n geometry: geometry,n index: CIRCLE_CENTER_INDEX,n segment: [coordinates, coordinates]n };n /** @type {SegmentData} */n var circumferenceSegmentData = {n feature: feature,n geometry: geometry,n index: CIRCLE_CIRCUMFERENCE_INDEX,n segment: [coordinates, coordinates]n };n var featureSegments = [centerSegmentData, circumferenceSegmentData];n centerSegmentData.featureSegments = featureSegments;n circumferenceSegmentData.featureSegments = featureSegments;n this.rBush_.insert(createExtent(coordinates), centerSegmentData);n this.rBush_.insert(geometry.getExtent(), circumferenceSegmentData);n };n /**n * @param {Feature} feature Featuren * @param {import("../geom/GeometryCollection.js").default} geometry Geometry.n * @privaten */n Modify.prototype.writeGeometryCollectionGeometry_ = function (feature, geometry) {n var geometries = geometry.getGeometriesArray();n for (var i = 0; i < geometries.length; ++i) {n var geometry_1 = geometries;n var writer = this.SEGMENT_WRITERS_;n writer(feature, geometry_1);n }n };n /**n * @param {import("../coordinate.js").Coordinate} coordinates Coordinates.n * @return {Feature} Vertex feature.n * @privaten */n Modify.prototype.createOrUpdateVertexFeature_ = function (coordinates) {n var vertexFeature = this.vertexFeature_;n if (!vertexFeature) {n vertexFeature = new Feature(new Point(coordinates));n this.vertexFeature_ = vertexFeature;n this.overlay_.getSource().addFeature(vertexFeature);n }n else {n var geometry = vertexFeature.getGeometry();n geometry.setCoordinates(coordinates);n }n return vertexFeature;n };n /**n * Handles the {@link module:ol/MapBrowserEvent map browser event} and may modify the geometry.n * @overriden */n Modify.prototype.handleEvent = function (mapBrowserEvent) {n if (!( /** @type {import("../MapBrowserPointerEvent.js").default} */(mapBrowserEvent).pointerEvent)) {n return true;n }n this.lastPointerEvent_ = mapBrowserEvent;n var handled;n if (!mapBrowserEvent.map.getView().getInteracting() &&n mapBrowserEvent.type == MapBrowserEventType.POINTERMOVE &&n !this.handlingDownUpSequence) {n this.handlePointerMove_(mapBrowserEvent);n }n if (this.vertexFeature_ && this.deleteCondition_(mapBrowserEvent)) {n if (mapBrowserEvent.type != MapBrowserEventType.SINGLECLICK || !this.ignoreNextSingleClick_) {n handled = this.removePoint();n }n else {n handled = true;n }n }n if (mapBrowserEvent.type == MapBrowserEventType.SINGLECLICK) {n this.ignoreNextSingleClick_ = false;n }n return _super.prototype.handleEvent.call(this, mapBrowserEvent) && !handled;n };n /**n * @inheritDocn */n Modify.prototype.handleDragEvent = function (evt) {n this.ignoreNextSingleClick_ = false;n this.willModifyFeatures_(evt);n var vertex = evt.coordinate;n for (var i = 0, ii = this.dragSegments_.length; i < ii; ++i) {n var dragSegment = this.dragSegments_;n var segmentData = dragSegment;n var depth = segmentData.depth;n var geometry = segmentData.geometry;n var coordinates = void 0;n var segment = segmentData.segment;n var index = dragSegment;n while (vertex.length < geometry.getStride()) {n vertex.push(segment[vertex.length]);n }n switch (geometry.getType()) {n case GeometryType.POINT:n coordinates = vertex;n segment = vertex;n segment = vertex;n break;n case GeometryType.MULTI_POINT:n coordinates = geometry.getCoordinates();n coordinates = vertex;n segment = vertex;n segment = vertex;n break;n case GeometryType.LINE_STRING:n coordinates = geometry.getCoordinates();n coordinates[segmentData.index + index] = vertex;n segment = vertex;n break;n case GeometryType.MULTI_LINE_STRING:n coordinates = geometry.getCoordinates();n coordinates[depth][segmentData.index + index] = vertex;n segment = vertex;n break;n case GeometryType.POLYGON:n coordinates = geometry.getCoordinates();n coordinates[depth][segmentData.index + index] = vertex;n segment = vertex;n break;n case GeometryType.MULTI_POLYGON:n coordinates = geometry.getCoordinates();n coordinates[depth][depth][segmentData.index + index] = vertex;n segment = vertex;n break;n case GeometryType.CIRCLE:n segment = vertex;n segment = vertex;n if (segmentData.index === CIRCLE_CENTER_INDEX) {n this.changingFeature_ = true;n geometry.setCenter(vertex);n this.changingFeature_ = false;n }n else { // We're dragging the circle's circumference:n this.changingFeature_ = true;n geometry.setRadius(coordinateDistance(geometry.getCenter(), vertex));n this.changingFeature_ = false;n }n break;n default:n // passn }n if (coordinates) {n this.setGeometryCoordinates_(geometry, coordinates);n }n }n this.createOrUpdateVertexFeature_(vertex);n };n /**n * @inheritDocn */n Modify.prototype.handleDownEvent = function (evt) {n if (!this.condition_(evt)) {n return false;n }n this.handlePointerAtPixel_(evt.pixel, evt.map);n var pixelCoordinate = evt.coordinate;n this.dragSegments_.length = 0;n this.modified_ = false;n var vertexFeature = this.vertexFeature_;n if (vertexFeature) {n var projection = evt.map.getView().getProjection();n var insertVertices = [];n var vertex = vertexFeature.getGeometry().getCoordinates();n var vertexExtent = boundingExtent();n var segmentDataMatches = this.rBush_.getInExtent(vertexExtent);n var componentSegments = {};n segmentDataMatches.sort(compareIndexes);n for (var i = 0, ii = segmentDataMatches.length; i < ii; ++i) {n var segmentDataMatch = segmentDataMatches;n var segment = segmentDataMatch.segment;n var uid = getUid(segmentDataMatch.feature);n var depth = segmentDataMatch.depth;n if (depth) {n uid += '-' + depth.join('-'); // separate feature componentsn }n if (!componentSegments) {n componentSegments = new Array(2);n }n if (segmentDataMatch.geometry.getType() === GeometryType.CIRCLE && segmentDataMatch.index === CIRCLE_CIRCUMFERENCE_INDEX) {n var closestVertex = closestOnSegmentData(pixelCoordinate, segmentDataMatch, projection);n if (coordinatesEqual(closestVertex, vertex) && !componentSegments[0]) {n this.dragSegments_.push([segmentDataMatch, 0]);n componentSegments[0] = segmentDataMatch;n }n continue;n }n if (coordinatesEqual(segment, vertex) && !componentSegments[0]) {n this.dragSegments_.push([segmentDataMatch, 0]);n componentSegments[0] = segmentDataMatch;n continue;n }n if (coordinatesEqual(segment, vertex) && !componentSegments[1]) {n // prevent dragging closed linestrings by the connecting noden if ((segmentDataMatch.geometry.getType() ===n GeometryType.LINE_STRING ||n segmentDataMatch.geometry.getType() ===n GeometryType.MULTI_LINE_STRING) &&n componentSegments[0] &&n componentSegments[0].index === 0) {n continue;n }n this.dragSegments_.push([segmentDataMatch, 1]);n componentSegments[1] = segmentDataMatch;n continue;n }n if (getUid(segment) in this.vertexSegments_ &&n (!componentSegments[0] && !componentSegments[1]) &&n this.insertVertexCondition_(evt)) {n insertVertices.push([segmentDataMatch, vertex]);n }n }n if (insertVertices.length) {n this.willModifyFeatures_(evt);n }n for (var j = insertVertices.length - 1; j >= 0; –j) {n this.insertVertex_.apply(this, insertVertices);n }n }n return !!this.vertexFeature_;n };n /**n * @inheritDocn */n Modify.prototype.handleUpEvent = function (evt) {n for (var i = this.dragSegments_.length - 1; i >= 0; –i) {n var segmentData = this.dragSegments_[0];n var geometry = segmentData.geometry;n if (geometry.getType() === GeometryType.CIRCLE) {n // Update a circle object in the R* bush:n var coordinates = geometry.getCenter();n var centerSegmentData = segmentData.featureSegments;n var circumferenceSegmentData = segmentData.featureSegments;n centerSegmentData.segment = coordinates;n centerSegmentData.segment = coordinates;n circumferenceSegmentData.segment = coordinates;n circumferenceSegmentData.segment = coordinates;n this.rBush_.update(createExtent(coordinates), centerSegmentData);n this.rBush_.update(geometry.getExtent(), circumferenceSegmentData);n }n else {n this.rBush_.update(boundingExtent(segmentData.segment), segmentData);n }n }n if (this.modified_) {n this.dispatchEvent(new ModifyEvent(ModifyEventType.MODIFYEND, this.features_, evt));n this.modified_ = false;n }n return false;n };n /**n * @param {import("../MapBrowserEvent.js").default} evt Event.n * @privaten */n Modify.prototype.handlePointerMove_ = function (evt) {n this.lastPixel_ = evt.pixel;n this.handlePointerAtPixel_(evt.pixel, evt.map);n };n /**n * @param {import("../pixel.js").Pixel} pixel Pixeln * @param {import("../PluggableMap.js").default} map Map.n * @privaten */n Modify.prototype.handlePointerAtPixel_ = function (pixel, map) {n var pixelCoordinate = map.getCoordinateFromPixel(pixel);n var projection = map.getView().getProjection();n var sortByDistance = function (a, b) {n return projectedDistanceToSegmentDataSquared(pixelCoordinate, a, projection) -n projectedDistanceToSegmentDataSquared(pixelCoordinate, b, projection);n };n var viewExtent = fromUserExtent(createExtent(pixelCoordinate, tempExtent), projection);n var buffer = map.getView().getResolution() * this.pixelTolerance_;n var box = toUserExtent(bufferExtent(viewExtent, buffer, tempExtent), projection);n var rBush = this.rBush_;n var nodes = rBush.getInExtent(box);n if (nodes.length > 0) {n nodes.sort(sortByDistance);n var node = nodes;n var closestSegment = node.segment;n var vertex = closestOnSegmentData(pixelCoordinate, node, projection);n var vertexPixel = map.getPixelFromCoordinate(vertex);n var dist = coordinateDistance(pixel, vertexPixel);n if (dist <= this.pixelTolerance_) {n /** @type {Object<string, boolean>} */n var vertexSegments = {};n if (node.geometry.getType() === GeometryType.CIRCLE && node.index === CIRCLE_CIRCUMFERENCE_INDEX) {n this.snappedToVertex_ = true;n this.createOrUpdateVertexFeature_(vertex);n }n else {n var pixel1 = map.getPixelFromCoordinate(closestSegment);n var pixel2 = map.getPixelFromCoordinate(closestSegment);n var squaredDist1 = squaredCoordinateDistance(vertexPixel, pixel1);n var squaredDist2 = squaredCoordinateDistance(vertexPixel, pixel2);n dist = Math.sqrt(Math.min(squaredDist1, squaredDist2));n this.snappedToVertex_ = dist <= this.pixelTolerance_;n if (this.snappedToVertex_) {n vertex = squaredDist1 > squaredDist2 ? closestSegment : closestSegment;n }n this.createOrUpdateVertexFeature_(vertex);n for (var i = 1, ii = nodes.length; i < ii; ++i) {n var segment = nodes.segment;n if ((coordinatesEqual(closestSegment, segment) &&n coordinatesEqual(closestSegment, segment) ||n (coordinatesEqual(closestSegment, segment) &&n coordinatesEqual(closestSegment, segment)))) {n vertexSegments = true;n }n else {n break;n }n }n }n vertexSegments = true;n this.vertexSegments_ = vertexSegments;n return;n }n }n if (this.vertexFeature_) {n this.overlay_.getSource().removeFeature(this.vertexFeature_);n this.vertexFeature_ = null;n }n };n /**n * @param {SegmentData} segmentData Segment data.n * @param {import("../coordinate.js").Coordinate} vertex Vertex.n * @privaten */n Modify.prototype.insertVertex_ = function (segmentData, vertex) {n var segment = segmentData.segment;n var feature = segmentData.feature;n var geometry = segmentData.geometry;n var depth = segmentData.depth;n var index = segmentData.index;n var coordinates;n while (vertex.length < geometry.getStride()) {n vertex.push(0);n }n switch (geometry.getType()) {n case GeometryType.MULTI_LINE_STRING:n coordinates = geometry.getCoordinates();n coordinates[depth].splice(index + 1, 0, vertex);n break;n case GeometryType.POLYGON:n coordinates = geometry.getCoordinates();n coordinates[depth].splice(index + 1, 0, vertex);n break;n case GeometryType.MULTI_POLYGON:n coordinates = geometry.getCoordinates();n coordinates[depth][depth].splice(index + 1, 0, vertex);n break;n case GeometryType.LINE_STRING:n coordinates = geometry.getCoordinates();n coordinates.splice(index + 1, 0, vertex);n break;n default:n return;n }n this.setGeometryCoordinates_(geometry, coordinates);n var rTree = this.rBush_;n rTree.remove(segmentData);n this.updateSegmentIndices_(geometry, index, depth, 1);n /** @type {SegmentData} */n var newSegmentData = {n segment: [segment, vertex],n feature: feature,n geometry: geometry,n depth: depth,n index: indexn };n rTree.insert(boundingExtent(newSegmentData.segment), newSegmentData);n this.dragSegments_.push([newSegmentData, 1]);n /** @type {SegmentData} */n var newSegmentData2 = {n segment: [vertex, segment],n feature: feature,n geometry: geometry,n depth: depth,n index: index + 1n };n rTree.insert(boundingExtent(newSegmentData2.segment), newSegmentData2);n this.dragSegments_.push([newSegmentData2, 0]);n this.ignoreNextSingleClick_ = true;n };n /**n * Removes the vertex currently being pointed.n * @return {boolean} True when a vertex was removed.n * @apin */n Modify.prototype.removePoint = function () {n if (this.lastPointerEvent_ && this.lastPointerEvent_.type != MapBrowserEventType.POINTERDRAG) {n var evt = this.lastPointerEvent_;n this.willModifyFeatures_(evt);n var removed = this.removeVertex_();n this.dispatchEvent(new ModifyEvent(ModifyEventType.MODIFYEND, this.features_, evt));n this.modified_ = false;n return removed;n }n return false;n };n /**n * Removes a vertex from all matching features.n * @return {boolean} True when a vertex was removed.n * @privaten */n Modify.prototype.removeVertex_ = function () {n var dragSegments = this.dragSegments_;n var segmentsByFeature = {};n var deleted = false;n var component, coordinates, dragSegment, geometry, i, index, left;n var newIndex, right, segmentData, uid;n for (i = dragSegments.length - 1; i >= 0; –i) {n dragSegment = dragSegments;n segmentData = dragSegment;n uid = getUid(segmentData.feature);n if (segmentData.depth) {n // separate feature componentsn uid += '-' + segmentData.depth.join('-');n }n if (!(uid in segmentsByFeature)) {n segmentsByFeature = {};n }n if (dragSegment === 0) {n segmentsByFeature.right = segmentData;n segmentsByFeature.index = segmentData.index;n }n else if (dragSegment == 1) {n segmentsByFeature.left = segmentData;n segmentsByFeature.index = segmentData.index + 1;n }n }n for (uid in segmentsByFeature) {n right = segmentsByFeature.right;n left = segmentsByFeature.left;n index = segmentsByFeature.index;n newIndex = index - 1;n if (left !== undefined) {n segmentData = left;n }n else {n segmentData = right;n }n if (newIndex < 0) {n newIndex = 0;n }n geometry = segmentData.geometry;n coordinates = geometry.getCoordinates();n component = coordinates;n deleted = false;n switch (geometry.getType()) {n case GeometryType.MULTI_LINE_STRING:n if (coordinates[segmentData.depth].length > 2) {n coordinates[segmentData.depth].splice(index, 1);n deleted = true;n }n break;n case GeometryType.LINE_STRING:n if (coordinates.length > 2) {n coordinates.splice(index, 1);n deleted = true;n }n break;n case GeometryType.MULTI_POLYGON:n component = component[segmentData.depth];n /* falls through */n case GeometryType.POLYGON:n component = component[segmentData.depth];n if (component.length > 4) {n if (index == component.length - 1) {n index = 0;n }n component.splice(index, 1);n deleted = true;n if (index === 0) {n // close the ring againn component.pop();n component.push(component);n newIndex = component.length - 1;n }n }n break;n default:n // passn }n if (deleted) {n this.setGeometryCoordinates_(geometry, coordinates);n var segments = [];n if (left !== undefined) {n this.rBush_.remove(left);n segments.push(left.segment);n }n if (right !== undefined) {n this.rBush_.remove(right);n segments.push(right.segment);n }n if (left !== undefined && right !== undefined) {n /** @type {SegmentData} */n var newSegmentData = {n depth: segmentData.depth,n feature: segmentData.feature,n geometry: segmentData.geometry,n index: newIndex,n segment: segmentsn };n this.rBush_.insert(boundingExtent(newSegmentData.segment), newSegmentData);n }n this.updateSegmentIndices_(geometry, index, segmentData.depth, -1);n if (this.vertexFeature_) {n this.overlay_.getSource().removeFeature(this.vertexFeature_);n this.vertexFeature_ = null;n }n dragSegments.length = 0;n }n }n return deleted;n };n /**n * @param {import("../geom/SimpleGeometry.js").default} geometry Geometry.n * @param {Array} coordinates Coordinates.n * @privaten */n Modify.prototype.setGeometryCoordinates_ = function (geometry, coordinates) {n this.changingFeature_ = true;n geometry.setCoordinates(coordinates);n this.changingFeature_ = false;n };n /**n * @param {import("../geom/SimpleGeometry.js").default} geometry Geometry.n * @param {number} index Index.n * @param {Array<number>|undefined} depth Depth.n * @param {number} delta Delta (1 or -1).n * @privaten */n Modify.prototype.updateSegmentIndices_ = function (geometry, index, depth, delta) {n this.rBush_.forEachInExtent(geometry.getExtent(), function (segmentDataMatch) {n if (segmentDataMatch.geometry === geometry &&n (depth === undefined || segmentDataMatch.depth === undefined ||n equals(segmentDataMatch.depth, depth)) &&n segmentDataMatch.index > index) {n segmentDataMatch.index += delta;n }n });n };n return Modify;n}(PointerInteraction));n/**n * @param {SegmentData} a The first segment data.n * @param {SegmentData} b The second segment data.n * @return {number} The difference in indexes.n */nfunction compareIndexes(a, b) {n return a.index - b.index;n}n/**n * Returns the distance from a point to a line segment.n *n * @param {import("../coordinate.js").Coordinate} pointCoordinates The coordinates of the point fromn * which to calculate the distance.n * @param {SegmentData} segmentData The object describing the linen * segment we are calculating the distance to.n * @param {import("../proj/Projection.js").default} projection The view projection.n * @return {number} The square of the distance between a point and a line segment.n */nfunction projectedDistanceToSegmentDataSquared(pointCoordinates, segmentData, projection) {n var geometry = segmentData.geometry;n if (geometry.getType() === GeometryType.CIRCLE) {n var circleGeometry = /** @type {import("../geom/Circle.js").default} */ (geometry);n if (segmentData.index === CIRCLE_CIRCUMFERENCE_INDEX) {n var distanceToCenterSquared = squaredCoordinateDistance(circleGeometry.getCenter(), pointCoordinates);n var distanceToCircumference = Math.sqrt(distanceToCenterSquared) - circleGeometry.getRadius();n return distanceToCircumference * distanceToCircumference;n }n }n var coordinate = fromUserCoordinate(pointCoordinates, projection);n tempSegment = fromUserCoordinate(segmentData.segment, projection);n tempSegment = fromUserCoordinate(segmentData.segment, projection);n return squaredDistanceToSegment(coordinate, tempSegment);n}n/**n * Returns the point closest to a given line segment.n *n * @param {import("../coordinate.js").Coordinate} pointCoordinates The point to which a closest pointn * should be found.n * @param {SegmentData} segmentData The object describing the linen * segment which should contain the closest point.n * @param {import("../proj/Projection.js").default} projection The view projection.n * @return {import("../coordinate.js").Coordinate} The point closest to the specified line segment.n */nfunction closestOnSegmentData(pointCoordinates, segmentData, projection) {n var geometry = segmentData.geometry;n if (geometry.getType() === GeometryType.CIRCLE && segmentData.index === CIRCLE_CIRCUMFERENCE_INDEX) {n return geometry.getClosestPoint(pointCoordinates);n }n var coordinate = fromUserCoordinate(pointCoordinates, projection);n tempSegment = fromUserCoordinate(segmentData.segment, projection);n tempSegment = fromUserCoordinate(segmentData.segment, projection);n return toUserCoordinate(closestOnSegment(coordinate, tempSegment), projection);n}n/**n * @return {import("../style/Style.js").StyleFunction} Styles.n */nfunction getDefaultStyleFunction() {n var style = createEditingStyle();n return function (feature, resolution) {n return style;n };n}nexport default Modify;n//# sourceMappingURL=Modify.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/interaction/Selectn */nimport { getUid } from '../util.js';nimport CollectionEventType from '../CollectionEventType.js';nimport { extend, includes } from '../array.js';nimport Event from '../events/Event.js';nimport { singleClick, never, shiftKeyOnly } from '../events/condition.js';nimport { TRUE } from '../functions.js';nimport GeometryType from '../geom/GeometryType.js';nimport Interaction from './Interaction.js';nimport { clear } from '../obj.js';nimport { createEditingStyle } from '../style/Style.js';nimport Collection from '../Collection.js';n/**n * @enum {string}n */nvar SelectEventType = {n /**n * Triggered when feature(s) has been (de)selected.n * @event SelectEvent#selectn * @apin */n SELECT: 'select'n};n/**n * A function that takes an {@link module:ol/Feature} orn * {@link module:ol/render/Feature} and ann * {@link module:ol/layer/Layer} and returns `true` if the feature may ben * selected or `false` otherwise.n * @typedef {function(import("../Feature.js").FeatureLike, import("../layer/Layer.js").default):boolean} FilterFunctionn */n/**n * @typedef {Object} Optionsn * @property {import("../events/condition.js").Condition} [addCondition] A functionn * that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns an * boolean to indicate whether that event should be handled.n * By default, this is {@link module:ol/events/condition~never}. Use this if youn * want to use different events for add and remove instead of `toggle`.n * @property {import("../events/condition.js").Condition} [condition] A function thatn * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns an * boolean to indicate whether that event should be handled. This is the eventn * for the selected features as a whole. By default, this isn * {@link module:ol/events/condition~singleClick}. Clicking on a feature selects thatn * feature and removes any that were in the selection. Clicking outside anyn * feature removes all from the selection.n * See `toggle`, `add`, `remove` options for adding/removing extra features to/n * from the selection.n * @property {Array<import("../layer/Layer.js").default>|function(import("../layer/Layer.js").default): boolean} [layers]n * A list of layers from which features should be selected. Alternatively, an * filter function can be provided. The function will be called for each layern * in the map and should return `true` for layers that you want to ben * selectable. If the option is absent, all visible layers will be consideredn * selectable.n * @property {import("../style/Style.js").StyleLike} [style]n * Style for the selected features. By default the default edit style is usedn * (see {@link module:ol/style}).n * If set to `false` the selected feature's style will not change.n * @property {import("../events/condition.js").Condition} [removeCondition] A functionn * that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns an * boolean to indicate whether that event should be handled.n * By default, this is {@link module:ol/events/condition~never}. Use this if youn * want to use different events for add and remove instead of `toggle`.n * @property {import("../events/condition.js").Condition} [toggleCondition] A functionn * that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns an * boolean to indicate whether that event should be handled. This is in additionn * to the `condition` event. By default,n * {@link module:ol/events/condition~shiftKeyOnly}, i.e. pressing `shift` asn * well as the `condition` event, adds that feature to the current selection ifn * it is not currently selected, and removes it if it is. See `add` and `remove`n * if you want to use different events instead of a toggle.n * @property {boolean} [multi=false] A boolean that determines if the defaultn * behaviour should select only single features or all (overlapping) features atn * the clicked map position. The default of `false` means single select.n * @property {import("../Collection.js").default<import("../Feature.js").default>} [features]n * Collection where the interaction will place selected features. Optional. Ifn * not set the interaction will create a collection. In any case the collectionn * used by the interaction is returned byn * {@link module:ol/interaction/Select~Select#getFeatures}.n * @property {FilterFunction} [filter] A functionn * that takes an {@link module:ol/Feature} and ann * {@link module:ol/layer/Layer} and returns `true` if the feature may ben * selected or `false` otherwise.n * @property {number} [hitTolerance=0] Hit-detection tolerance. Pixels insiden * the radius around the given position will be checked for features.n */n/**n * @classdescn * Events emitted by {@link module:ol/interaction/Select~Select} instances are instances ofn * this type.n */nvar SelectEvent = /** @class */ (function (_super) {n __extends(SelectEvent, _super);n /**n * @param {SelectEventType} type The event type.n * @param {Array<import("../Feature.js").default>} selected Selected features.n * @param {Array<import("../Feature.js").default>} deselected Deselected features.n * @param {import("../MapBrowserEvent.js").default} mapBrowserEvent Associatedn * {@link module:ol/MapBrowserEvent}.n */n function SelectEvent(type, selected, deselected, mapBrowserEvent) {n var _this = _super.call(this, type) || this;n /**n * Selected features array.n * @type {Array<import("../Feature.js").default>}n * @apin */n _this.selected = selected;n /**n * Deselected features array.n * @type {Array<import("../Feature.js").default>}n * @apin */n _this.deselected = deselected;n /**n * Associated {@link module:ol/MapBrowserEvent}.n * @type {import("../MapBrowserEvent.js").default}n * @apin */n _this.mapBrowserEvent = mapBrowserEvent;n return _this;n }n return SelectEvent;n}(Event));n/**n * @classdescn * Interaction for selecting vector features. By default, selected features aren * styled differently, so this interaction can be used for visual highlighting,n * as well as selecting features for other actions, such as modification orn * output. There are three ways of controlling which features are selected:n * using the browser event as defined by the `condition` and optionally then * `toggle`, `add`/`remove`, and `multi` options; a `layers` filter; and an * further feature filter using the `filter` option.n *n * Selected features are added to an internal unmanaged layer.n *n * @fires SelectEventn * @apin */nvar Select = /** @class */ (function (_super) {n __extends(Select, _super);n /**n * @param {Options=} opt_options Options.n */n function Select(opt_options) {n var _this = _super.call(this, {n handleEvent: handleEventn }) || this;n var options = opt_options ? opt_options : {};n /**n * @privaten * @type {import("../events/condition.js").Condition}n */n this.condition = options.condition ? options.condition : singleClick;n /**n * @privaten * @type {import("../events/condition.js").Condition}n */n this.addCondition = options.addCondition ? options.addCondition : never;n /**n * @privaten * @type {import("../events/condition.js").Condition}n */n this.removeCondition = options.removeCondition ? options.removeCondition : never;n /**n * @privaten * @type {import("../events/condition.js").Condition}n */n this.toggleCondition = options.toggleCondition ? options.toggleCondition : shiftKeyOnly;n /**n * @privaten * @type {boolean}n */n this.multi = options.multi ? options.multi : false;n /**n * @privaten * @type {FilterFunction}n */n this.filter = options.filter ? options.filter : TRUE;n /**n * @privaten * @type {number}n */n this.hitTolerance = options.hitTolerance ? options.hitTolerance : 0;n /**n * @privaten * @type {import("../style/Style.js").default|Array.<import("../style/Style.js").default>|import("../style/Style.js").StyleFunction|null}n */n this.style = options.style !== undefined ? options.style : getDefaultStyleFunction();n /**n * An association between selected feature (key)n * and original style (value)n * @privaten * @type {Object.<number, import("../style/Style.js").default|Array.<import("../style/Style.js").default>|import("../style/Style.js").StyleFunction>}n */n this.featureStyleAssociation = {};n /**n * @privaten * @type {import("../Collection.js").default}n */n this.features = options.features || new Collection();n /** @type {function(import("../layer/Layer.js").default): boolean} */n var layerFilter;n if (options.layers) {n if (typeof options.layers === 'function') {n layerFilter = options.layers;n }n else {n var layers_1 = options.layers;n layerFilter = function (layer) {n return includes(layers_1, layer);n };n }n }n else {n layerFilter = TRUE;n }n /**n * @privaten * @type {function(import("../layer/Layer.js").default): boolean}n */n this.layerFilter = layerFilter;n /**n * An association between selected feature (key)n * and layer (value)n * @privaten * @type {Object<string, import("../layer/Layer.js").default>}n */n this.featureLayerAssociation = {};n var features = _this.getFeatures();n features.addEventListener(CollectionEventType.ADD, this.addFeature.bind(_this));n features.addEventListener(CollectionEventType.REMOVE, this.removeFeature.bind(_this));n return _this;n }n /**n * @param {import("../Feature.js").FeatureLike} feature Feature.n * @param {import("../layer/Layer.js").default} layer Layer.n * @privaten */n Select.prototype.addFeatureLayerAssociation_ = function (feature, layer) {n this.featureLayerAssociation_ = layer;n };n /**n * Get the selected features.n * @return {import("../Collection.js").default<import("../Feature.js").default>} Features collection.n * @apin */n Select.prototype.getFeatures = function () {n return this.features_;n };n /**n * Returns the Hit-detection tolerance.n * @returns {number} Hit tolerance in pixels.n * @apin */n Select.prototype.getHitTolerance = function () {n return this.hitTolerance_;n };n /**n * Returns the associated {@link module:ol/layer/Vector~Vector vectorlayer} ofn * the (last) selected feature. Note that this will not work with anyn * programmatic method like pushing features ton * {@link module:ol/interaction/Select~Select#getFeatures collection}.n * @param {import("../Feature.js").FeatureLike} feature Featuren * @return {import('../layer/Vector.js').default} Layer.n * @apin */n Select.prototype.getLayer = function (feature) {n return (n /** @type {import('../layer/Vector.js').default} */ (this.featureLayerAssociation_));n };n /**n * Hit-detection tolerance. Pixels inside the radius around the given positionn * will be checked for features.n * @param {number} hitTolerance Hit tolerance in pixels.n * @apin */n Select.prototype.setHitTolerance = function (hitTolerance) {n this.hitTolerance_ = hitTolerance;n };n /**n * Remove the interaction from its current map, if any, and attach it to a newn * map, if any. Pass `null` to just remove the interaction from the current map.n * @param {import("../PluggableMap.js").default} map Map.n * @overriden * @apin */n Select.prototype.setMap = function (map) {n var currentMap = this.getMap();n if (currentMap && this.style_) {n this.features_.forEach(this.removeSelectedStyle_.bind(this));n }n _super.prototype.setMap.call(this, map);n if (map && this.style_) {n this.features_.forEach(this.giveSelectedStyle_.bind(this));n }n };n /**n * @param {import("../Collection.js").CollectionEvent} evt Event.n * @privaten */n Select.prototype.addFeature_ = function (evt) {n var feature = evt.element;n if (this.style_) {n this.giveSelectedStyle_(feature);n }n };n /**n * @param {import("../Collection.js").CollectionEvent} evt Event.n * @privaten */n Select.prototype.removeFeature_ = function (evt) {n var feature = evt.element;n if (this.style_) {n this.removeSelectedStyle_(feature);n }n };n /**n * @param {import("../Feature.js").default} feature Featuren * @privaten */n Select.prototype.giveSelectedStyle_ = function (feature) {n var key = getUid(feature);n this.featureStyleAssociation_ = feature.getStyle();n feature.setStyle(this.style_);n };n /**n * @param {import("../Feature.js").default} feature Featuren * @privaten */n Select.prototype.removeSelectedStyle_ = function (feature) {n var key = getUid(feature);n feature.setStyle(this.featureStyleAssociation_);n delete this.featureStyleAssociation_;n };n /**n * @param {import("../Feature.js").FeatureLike} feature Feature.n * @privaten */n Select.prototype.removeFeatureLayerAssociation_ = function (feature) {n delete this.featureLayerAssociation_;n };n return Select;n}(Interaction));n/**n * Handles the {@link module:ol/MapBrowserEvent map browser event} and may change then * selected state of features.n * @param {import("../MapBrowserEvent.js").default} mapBrowserEvent Map browser event.n * @return {boolean} `false` to stop event propagation.n * @this {Select}n */nfunction handleEvent(mapBrowserEvent) {n if (!this.condition_(mapBrowserEvent)) {n return true;n }n var add = this.addCondition_(mapBrowserEvent);n var remove = this.removeCondition_(mapBrowserEvent);n var toggle = this.toggleCondition_(mapBrowserEvent);n var set = !add && !remove && !toggle;n var map = mapBrowserEvent.map;n var features = this.getFeatures();n var deselected = [];n var selected = [];n if (set) {n // Replace the currently selected feature(s) with the feature(s) at then // pixel, or clear the selected feature(s) if there is no feature atn // the pixel.n clear(this.featureLayerAssociation_);n map.forEachFeatureAtPixel(mapBrowserEvent.pixel, (n /**n * @param {import("../Feature.js").FeatureLike} feature Feature.n * @param {import("../layer/Layer.js").default} layer Layer.n * @return {boolean|undefined} Continue to iterate over the features.n */n function (feature, layer) {n if (this.filter_(feature, layer)) {n selected.push(feature);n this.addFeatureLayerAssociation_(feature, layer);n return !this.multi_;n }n }).bind(this), {n layerFilter: this.layerFilter_,n hitTolerance: this.hitTolerance_n });n for (var i = features.getLength() - 1; i >= 0; –i) {n var feature = features.item(i);n var index = selected.indexOf(feature);n if (index > -1) {n // feature is already selectedn selected.splice(index, 1);n }n else {n features.remove(feature);n deselected.push(feature);n }n }n if (selected.length !== 0) {n features.extend(selected);n }n }n else {n // Modify the currently selected feature(s).n map.forEachFeatureAtPixel(mapBrowserEvent.pixel, (n /**n * @param {import("../Feature.js").FeatureLike} feature Feature.n * @param {import("../layer/Layer.js").default} layer Layer.n * @return {boolean|undefined} Continue to iterate over the features.n */n function (feature, layer) {n if (this.filter_(feature, layer)) {n if ((add || toggle) && !includes(features.getArray(), feature)) {n selected.push(feature);n this.addFeatureLayerAssociation_(feature, layer);n }n else if ((remove || toggle) && includes(features.getArray(), feature)) {n deselected.push(feature);n this.removeFeatureLayerAssociation_(feature);n }n return !this.multi_;n }n }).bind(this), {n layerFilter: this.layerFilter_,n hitTolerance: this.hitTolerance_n });n for (var j = deselected.length - 1; j >= 0; –j) {n features.remove(deselected);n }n features.extend(selected);n }n if (selected.length > 0 || deselected.length > 0) {n this.dispatchEvent(new SelectEvent(SelectEventType.SELECT, selected, deselected, mapBrowserEvent));n }n return true;n}n/**n * @return {import("../style/Style.js").StyleFunction} Styles.n */nfunction getDefaultStyleFunction() {n var styles = createEditingStyle();n extend(styles, styles);n extend(styles, styles);n return function (feature) {n if (!feature.getGeometry()) {n return null;n }n return styles;n };n}nexport default Select;n//# sourceMappingURL=Select.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/interaction/Snapn */nimport { getUid } from '../util.js';nimport CollectionEventType from '../CollectionEventType.js';nimport { distance as coordinateDistance, squaredDistance as squaredCoordinateDistance, closestOnCircle, closestOnSegment, squaredDistanceToSegment } from '../coordinate.js';nimport { listen, unlistenByKey } from '../events.js';nimport EventType from '../events/EventType.js';nimport { boundingExtent, createEmpty } from '../extent.js';nimport { TRUE, FALSE } from '../functions.js';nimport GeometryType from '../geom/GeometryType.js';nimport { fromCircle } from '../geom/Polygon.js';nimport PointerInteraction from './Pointer.js';nimport { getValues } from '../obj.js';nimport VectorEventType from '../source/VectorEventType.js';nimport RBush from '../structs/RBush.js';nimport { fromUserCoordinate, toUserCoordinate } from '../proj.js';n/**n * @typedef {Object} Resultn * @property {boolean} snappedn * @property {import("../coordinate.js").Coordinate|null} vertexn * @property {import("../pixel.js").Pixel|null} vertexPixeln */n/**n * @typedef {Object} SegmentDatan * @property {import("../Feature.js").default} featuren * @property {Array<import("../coordinate.js").Coordinate>} segmentn */n/**n * @typedef {Object} Optionsn * @property {import("../Collection.js").default<import("../Feature.js").default>} [features] Snap to these features. Either this option or source should be provided.n * @property {boolean} [edge=true] Snap to edges.n * @property {boolean} [vertex=true] Snap to vertices.n * @property {number} [pixelTolerance=10] Pixel tolerance for considering the pointer close enough to a segment orn * vertex for snapping.n * @property {import("../source/Vector.js").default} [source] Snap to features from this source. Either this option or features should be providedn */n/**n * @param {import("../source/Vector.js").VectorSourceEvent|import("../Collection.js").CollectionEvent} evt Event.n * @return {import("../Feature.js").default} Feature.n */nfunction getFeatureFromEvent(evt) {n if ( /** @type {import("../source/Vector.js").VectorSourceEvent} */(evt).feature) {n return /** @type {import("../source/Vector.js").VectorSourceEvent} */ (evt).feature;n }n else if ( /** @type {import("../Collection.js").CollectionEvent} */(evt).element) {n return /** @type {import("../Feature.js").default} */ ( /** @type {import("../Collection.js").CollectionEvent} */(evt).element);n }n}nvar tempSegment = [];n/**n * @classdescn * Handles snapping of vector features while modifying or drawing them. Then * features can come from a {@link module:ol/source/Vector} or {@link module:ol/Collection~Collection}n * Any interaction object that allows the user to interactn * with the features using the mouse can benefit from the snapping, as longn * as it is added before.n *n * The snap interaction modifies map browser event `coordinate` and `pixel`n * properties to force the snap to occur to any interaction that them.n *n * Example:n *n * import Snap from 'ol/interaction/Snap';n *n * const snap = new Snap({n * source: sourcen * });n *n * map.addInteraction(snap);n *n * @apin */nvar Snap = /** @class */ (function (_super) {n __extends(Snap, _super);n /**n * @param {Options=} opt_options Options.n */n function Snap(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.handleDownEvent) {n pointerOptions.handleDownEvent = TRUE;n }n if (!pointerOptions.stopDown) {n pointerOptions.stopDown = FALSE;n }n _this = _super.call(this, pointerOptions) || this;n /**n * @type {import("../source/Vector.js").default}n * @privaten */n this.source = options.source ? options.source : null;n /**n * @privaten * @type {boolean}n */n this.vertex = options.vertex !== undefined ? options.vertex : true;n /**n * @privaten * @type {boolean}n */n this.edge = options.edge !== undefined ? options.edge : true;n /**n * @type {import("../Collection.js").default<import("../Feature.js").default>}n * @privaten */n this.features = options.features ? options.features : null;n /**n * @type {Array<import("../events.js").EventsKey>}n * @privaten */n this.featuresListenerKeys = [];n /**n * @type {Object<string, import("../events.js").EventsKey>}n * @privaten */n this.featureChangeListenerKeys = {};n /**n * Extents are preserved so indexed segment can be quickly removedn * when its feature geometry changesn * @type {Object<string, import("../extent.js").Extent>}n * @privaten */n this.indexedFeaturesExtents = {};n /**n * If a feature geometry changes while a pointer drag|move event occurs, then * feature doesn't get updated right away. It will be at the next 'pointerup'n * event fired.n * @type {!Object<string, import("../Feature.js").default>}n * @privaten */n this.pendingFeatures = {};n /**n * @type {number}n * @privaten */n this.pixelTolerance = options.pixelTolerance !== undefined ?n options.pixelTolerance : 10;n /**n * Segment RTree for each layern * @type {import("../structs/RBush.js").default<SegmentData>}n * @privaten */n this.rBush = new RBush();n /**n * @constn * @privaten * @type {Object<string, function(import("../Feature.js").default, import("../geom/Geometry.js").default): void>}n */n this.SEGMENT_WRITERS = {n 'Point': this.writePointGeometry.bind(_this),n 'LineString': this.writeLineStringGeometry.bind(_this),n 'LinearRing': this.writeLineStringGeometry.bind(_this),n 'Polygon': this.writePolygonGeometry.bind(_this),n 'MultiPoint': this.writeMultiPointGeometry.bind(_this),n 'MultiLineString': this.writeMultiLineStringGeometry.bind(_this),n 'MultiPolygon': this.writeMultiPolygonGeometry.bind(_this),n 'GeometryCollection': this.writeGeometryCollectionGeometry.bind(_this),n 'Circle': this.writeCircleGeometry.bind(_this)n };n return _this;n }n /**n * Add a feature to the collection of features that we may snap to.n * @param {import("../Feature.js").default} feature Feature.n * @param {boolean=} opt_listen Whether to listen to the feature change or notn * Defaults to `true`.n * @apin */n Snap.prototype.addFeature = function (feature, opt_listen) {n var register = opt_listen !== undefined ? opt_listen : true;n var feature_uid = getUid(feature);n var geometry = feature.getGeometry();n if (geometry) {n var segmentWriter = this.SEGMENT_WRITERS_;n if (segmentWriter) {n this.indexedFeaturesExtents_ = geometry.getExtent(createEmpty());n segmentWriter(feature, geometry);n }n }n if (register) {n this.featureChangeListenerKeys_ = listen(feature, EventType.CHANGE, this.handleFeatureChange_, this);n }n };n /**n * @param {import("../Feature.js").default} feature Feature.n * @privaten */n Snap.prototype.forEachFeatureAdd_ = function (feature) {n this.addFeature(feature);n };n /**n * @param {import("../Feature.js").default} feature Feature.n * @privaten */n Snap.prototype.forEachFeatureRemove_ = function (feature) {n this.removeFeature(feature);n };n /**n * @return {import("../Collection.js").default<import("../Feature.js").default>|Array<import("../Feature.js").default>} Features.n * @privaten */n Snap.prototype.getFeatures_ = function () {n var features;n if (this.features_) {n features = this.features_;n }n else if (this.source_) {n features = this.source_.getFeatures();n }n return features;n };n /**n * @inheritDocn */n Snap.prototype.handleEvent = function (evt) {n var result = this.snapTo(evt.pixel, evt.coordinate, evt.map);n if (result.snapped) {n evt.coordinate = result.vertex.slice(0, 2);n evt.pixel = result.vertexPixel;n }n return _super.prototype.handleEvent.call(this, evt);n };n /**n * @param {import("../source/Vector.js").VectorSourceEvent|import("../Collection.js").CollectionEvent} evt Event.n * @privaten */n Snap.prototype.handleFeatureAdd_ = function (evt) {n var feature = getFeatureFromEvent(evt);n this.addFeature(feature);n };n /**n * @param {import("../source/Vector.js").VectorSourceEvent|import("../Collection.js").CollectionEvent} evt Event.n * @privaten */n Snap.prototype.handleFeatureRemove_ = function (evt) {n var feature = getFeatureFromEvent(evt);n this.removeFeature(feature);n };n /**n * @param {import("../events/Event.js").default} evt Event.n * @privaten */n Snap.prototype.handleFeatureChange_ = function (evt) {n var feature = /** @type {import("../Feature.js").default} */ (evt.target);n if (this.handlingDownUpSequence) {n var uid = getUid(feature);n if (!(uid in this.pendingFeatures_)) {n this.pendingFeatures_ = feature;n }n }n else {n this.updateFeature_(feature);n }n };n /**n * @inheritDocn */n Snap.prototype.handleUpEvent = function (evt) {n var featuresToUpdate = getValues(this.pendingFeatures_);n if (featuresToUpdate.length) {n featuresToUpdate.forEach(this.updateFeature_.bind(this));n this.pendingFeatures_ = {};n }n return false;n };n /**n * Remove a feature from the collection of features that we may snap to.n * @param {import("../Feature.js").default} feature Featuren * @param {boolean=} opt_unlisten Whether to unlisten to the feature changen * or not. Defaults to `true`.n * @apin */n Snap.prototype.removeFeature = function (feature, opt_unlisten) {n var unregister = opt_unlisten !== undefined ? opt_unlisten : true;n var feature_uid = getUid(feature);n var extent = this.indexedFeaturesExtents_;n if (extent) {n var rBush = this.rBush_;n var nodesToRemove_1 = [];n rBush.forEachInExtent(extent, function (node) {n if (feature === node.feature) {n nodesToRemove_1.push(node);n }n });n for (var i = nodesToRemove_1.length - 1; i >= 0; –i) {n rBush.remove(nodesToRemove_1);n }n }n if (unregister) {n unlistenByKey(this.featureChangeListenerKeys_);n delete this.featureChangeListenerKeys_;n }n };n /**n * @inheritDocn */n Snap.prototype.setMap = function (map) {n var currentMap = this.getMap();n var keys = this.featuresListenerKeys_;n var features = /** @type {Array<import("../Feature.js").default>} */ (this.getFeatures_());n if (currentMap) {n keys.forEach(unlistenByKey);n keys.length = 0;n features.forEach(this.forEachFeatureRemove_.bind(this));n }n _super.prototype.setMap.call(this, map);n if (map) {n if (this.features_) {n keys.push(listen(this.features_, CollectionEventType.ADD, this.handleFeatureAdd_, this), listen(this.features_, CollectionEventType.REMOVE, this.handleFeatureRemove_, this));n }n else if (this.source_) {n keys.push(listen(this.source_, VectorEventType.ADDFEATURE, this.handleFeatureAdd_, this), listen(this.source_, VectorEventType.REMOVEFEATURE, this.handleFeatureRemove_, this));n }n features.forEach(this.forEachFeatureAdd_.bind(this));n }n };n /**n * @param {import("../pixel.js").Pixel} pixel Pixeln * @param {import("../coordinate.js").Coordinate} pixelCoordinate Coordinaten * @param {import("../PluggableMap.js").default} map Map.n * @return {Result} Snap resultn */n Snap.prototype.snapTo = function (pixel, pixelCoordinate, map) {n var lowerLeft = map.getCoordinateFromPixel([pixel - this.pixelTolerance_, pixel + this.pixelTolerance_]);n var upperRight = map.getCoordinateFromPixel([pixel + this.pixelTolerance_, pixel - this.pixelTolerance_]);n var box = boundingExtent([lowerLeft, upperRight]);n var segments = this.rBush_.getInExtent(box);n // If snapping on vertices only, don't consider circlesn if (this.vertex_ && !this.edge_) {n segments = segments.filter(function (segment) {n return segment.feature.getGeometry().getType() !==n GeometryType.CIRCLE;n });n }n var snapped = false;n var vertex = null;n var vertexPixel = null;n if (segments.length === 0) {n return {n snapped: snapped,n vertex: vertex,n vertexPixel: vertexPixeln };n }n var projection = map.getView().getProjection();n var projectedCoordinate = fromUserCoordinate(pixelCoordinate, projection);n var closestSegmentData;n var minSquaredDistance = Infinity;n for (var i = 0; i < segments.length; ++i) {n var segmentData = segments;n tempSegment = fromUserCoordinate(segmentData.segment, projection);n tempSegment = fromUserCoordinate(segmentData.segment, projection);n var delta = squaredDistanceToSegment(projectedCoordinate, tempSegment);n if (delta < minSquaredDistance) {n closestSegmentData = segmentData;n minSquaredDistance = delta;n }n }n var closestSegment = closestSegmentData.segment;n if (this.vertex_ && !this.edge_) {n var pixel1 = map.getPixelFromCoordinate(closestSegment);n var pixel2 = map.getPixelFromCoordinate(closestSegment);n var squaredDist1 = squaredCoordinateDistance(pixel, pixel1);n var squaredDist2 = squaredCoordinateDistance(pixel, pixel2);n var dist = Math.sqrt(Math.min(squaredDist1, squaredDist2));n if (dist <= this.pixelTolerance_) {n snapped = true;n vertex = squaredDist1 > squaredDist2 ? closestSegment : closestSegment;n vertexPixel = map.getPixelFromCoordinate(vertex);n }n }n else if (this.edge_) {n var isCircle = closestSegmentData.feature.getGeometry().getType() === GeometryType.CIRCLE;n if (isCircle) {n vertex = closestOnCircle(pixelCoordinate, n /** @type {import("../geom/Circle.js").default} */ (closestSegmentData.feature.getGeometry()));n }n else {n tempSegment = fromUserCoordinate(closestSegment, projection);n tempSegment = fromUserCoordinate(closestSegment, projection);n vertex = toUserCoordinate(closestOnSegment(projectedCoordinate, tempSegment), projection);n }n vertexPixel = map.getPixelFromCoordinate(vertex);n if (coordinateDistance(pixel, vertexPixel) <= this.pixelTolerance_) {n snapped = true;n if (this.vertex_ && !isCircle) {n var pixel1 = map.getPixelFromCoordinate(closestSegment);n var pixel2 = map.getPixelFromCoordinate(closestSegment);n var squaredDist1 = squaredCoordinateDistance(vertexPixel, pixel1);n var squaredDist2 = squaredCoordinateDistance(vertexPixel, pixel2);n var dist = Math.sqrt(Math.min(squaredDist1, squaredDist2));n if (dist <= this.pixelTolerance_) {n vertex = squaredDist1 > squaredDist2 ? closestSegment : closestSegment;n vertexPixel = map.getPixelFromCoordinate(vertex);n }n }n }n }n if (snapped) {n vertexPixel = [Math.round(vertexPixel), Math.round(vertexPixel)];n }n return {n snapped: snapped,n vertex: vertex,n vertexPixel: vertexPixeln };n };n /**n * @param {import("../Feature.js").default} feature Featuren * @privaten */n Snap.prototype.updateFeature_ = function (feature) {n this.removeFeature(feature, false);n this.addFeature(feature, false);n };n /**n * @param {import("../Feature.js").default} feature Featuren * @param {import("../geom/Circle.js").default} geometry Geometry.n * @privaten */n Snap.prototype.writeCircleGeometry_ = function (feature, geometry) {n var polygon = fromCircle(geometry);n var coordinates = polygon.getCoordinates();n for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {n var segment = coordinates.slice(i, i + 2);n var segmentData = {n feature: feature,n segment: segmentn };n this.rBush_.insert(boundingExtent(segment), segmentData);n }n };n /**n * @param {import("../Feature.js").default} feature Featuren * @param {import("../geom/GeometryCollection.js").default} geometry Geometry.n * @privaten */n Snap.prototype.writeGeometryCollectionGeometry_ = function (feature, geometry) {n var geometries = geometry.getGeometriesArray();n for (var i = 0; i < geometries.length; ++i) {n var segmentWriter = this.SEGMENT_WRITERS_[geometries.getType()];n if (segmentWriter) {n segmentWriter(feature, geometries);n }n }n };n /**n * @param {import("../Feature.js").default} feature Featuren * @param {import("../geom/LineString.js").default} geometry Geometry.n * @privaten */n Snap.prototype.writeLineStringGeometry_ = function (feature, geometry) {n var coordinates = geometry.getCoordinates();n for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {n var segment = coordinates.slice(i, i + 2);n var segmentData = {n feature: feature,n segment: segmentn };n this.rBush_.insert(boundingExtent(segment), segmentData);n }n };n /**n * @param {import("../Feature.js").default} feature Featuren * @param {import("../geom/MultiLineString.js").default} geometry Geometry.n * @privaten */n Snap.prototype.writeMultiLineStringGeometry_ = function (feature, geometry) {n var lines = geometry.getCoordinates();n for (var j = 0, jj = lines.length; j < jj; ++j) {n var coordinates = lines;n for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {n var segment = coordinates.slice(i, i + 2);n var segmentData = {n feature: feature,n segment: segmentn };n this.rBush_.insert(boundingExtent(segment), segmentData);n }n }n };n /**n * @param {import("../Feature.js").default} feature Featuren * @param {import("../geom/MultiPoint.js").default} geometry Geometry.n * @privaten */n Snap.prototype.writeMultiPointGeometry_ = function (feature, geometry) {n var points = geometry.getCoordinates();n for (var i = 0, ii = points.length; i < ii; ++i) {n var coordinates = points;n var segmentData = {n feature: feature,n segment: [coordinates, coordinates]n };n this.rBush_.insert(geometry.getExtent(), segmentData);n }n };n /**n * @param {import("../Feature.js").default} feature Featuren * @param {import("../geom/MultiPolygon.js").default} geometry Geometry.n * @privaten */n Snap.prototype.writeMultiPolygonGeometry_ = function (feature, geometry) {n var polygons = geometry.getCoordinates();n for (var k = 0, kk = polygons.length; k < kk; ++k) {n var rings = polygons;n for (var j = 0, jj = rings.length; j < jj; ++j) {n var coordinates = rings;n for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {n var segment = coordinates.slice(i, i + 2);n var segmentData = {n feature: feature,n segment: segmentn };n this.rBush_.insert(boundingExtent(segment), segmentData);n }n }n }n };n /**n * @param {import("../Feature.js").default} feature Featuren * @param {import("../geom/Point.js").default} geometry Geometry.n * @privaten */n Snap.prototype.writePointGeometry_ = function (feature, geometry) {n var coordinates = geometry.getCoordinates();n var segmentData = {n feature: feature,n segment: [coordinates, coordinates]n };n this.rBush_.insert(geometry.getExtent(), segmentData);n };n /**n * @param {import("../Feature.js").default} feature Featuren * @param {import("../geom/Polygon.js").default} geometry Geometry.n * @privaten */n Snap.prototype.writePolygonGeometry_ = function (feature, geometry) {n var rings = geometry.getCoordinates();n for (var j = 0, jj = rings.length; j < jj; ++j) {n var coordinates = rings;n for (var i = 0, ii = coordinates.length - 1; i < ii; ++i) {n var segment = coordinates.slice(i, i + 2);n var segmentData = {n feature: feature,n segment: segmentn };n this.rBush_.insert(boundingExtent(segment), segmentData);n }n }n };n return Snap;n}(PointerInteraction));nexport default Snap;n//# sourceMappingURL=Snap.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/interaction/Translaten */nimport Collection from '../Collection.js';nimport { getChangeEventType } from '../Object.js';nimport Event from '../events/Event.js';nimport { TRUE } from '../functions.js';nimport { includes } from '../array.js';nimport PointerInteraction from './Pointer.js';nimport InteractionProperty from './Property.js';n/**n * @enum {string}n */nvar TranslateEventType = {n /**n * Triggered upon feature translation start.n * @event TranslateEvent#translatestartn * @apin */n TRANSLATESTART: 'translatestart',n /**n * Triggered upon feature translation.n * @event TranslateEvent#translatingn * @apin */n TRANSLATING: 'translating',n /**n * Triggered upon feature translation end.n * @event TranslateEvent#translateendn * @apin */n TRANSLATEEND: 'translateend'n};n/**n * A function that takes an {@link module:ol/Feature} orn * {@link module:ol/render/Feature} and ann * {@link module:ol/layer/Layer} and returns `true` if the feature may ben * translated or `false` otherwise.n * @typedef {function(import("../Feature.js").FeatureLike, import("../layer/Layer.js").default):boolean} FilterFunctionn */n/**n * @typedef {Object} Optionsn * @property {Collection<import("../Feature.js").default>} [features] Only features contained in this collection will be able to be translated. Ifn * not specified, all features on the map will be able to be translated.n * @property {Array<import("../layer/Layer.js").default>|function(import("../layer/Layer.js").default): boolean} [layers] A list of layers from which features should ben * translated. Alternatively, a filter function can be provided. Then * function will be called for each layer in the map and should returnn * `true` for layers that you want to be translatable. If the option isn * absent, all visible layers will be considered translatable.n * @property {FilterFunction} [filter] A functionn * that takes an {@link module:ol/Feature} and ann * {@link module:ol/layer/Layer} and returns `true` if the feature may ben * translated or `false` otherwise.n * @property {number} [hitTolerance=0] Hit-detection tolerance. Pixels inside the radius around the given positionn * will be checked for features.n */n/**n * @classdescn * Events emitted by {@link module:ol/interaction/Translate~Translate} instancesn * are instances of this type.n */nvar TranslateEvent = /** @class */ (function (_super) {n __extends(TranslateEvent, _super);n /**n * @param {TranslateEventType} type Type.n * @param {Collection<import("../Feature.js").default>} features The features translated.n * @param {import("../coordinate.js").Coordinate} coordinate The event coordinate.n * @param {import("../coordinate.js").Coordinate} startCoordinate The original coordinates before.translation startedn * @param {import("../MapBrowserEvent.js").default} mapBrowserEvent Map browser event.n */n function TranslateEvent(type, features, coordinate, startCoordinate, mapBrowserEvent) {n var _this = _super.call(this, type) || this;n /**n * The features being translated.n * @type {Collection<import("../Feature.js").default>}n * @apin */n _this.features = features;n /**n * The coordinate of the drag event.n * @constn * @type {import("../coordinate.js").Coordinate}n * @apin */n _this.coordinate = coordinate;n /**n * The coordinate of the start position before translation started.n * @constn * @type {import("../coordinate.js").Coordinate}n * @apin */n _this.startCoordinate = startCoordinate;n /**n * Associated {@link module:ol/MapBrowserEvent}.n * @type {import("../MapBrowserEvent.js").default}n * @apin */n _this.mapBrowserEvent = mapBrowserEvent;n return _this;n }n return TranslateEvent;n}(Event));nexport { TranslateEvent };n/**n * @classdescn * Interaction for translating (moving) features.n *n * @fires TranslateEventn * @apin */nvar Translate = /** @class */ (function (_super) {n __extends(Translate, _super);n /**n * @param {Options=} opt_options Options.n */n function Translate(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n _this = _super.call(this, /** @type {import("./Pointer.js").Options} */ (options)) || this;n /**n * The last position we translated to.n * @type {import("../coordinate.js").Coordinate}n * @privaten */n this.lastCoordinate = null;n /**n * The start position before translation started.n * @type {import("../coordinate.js").Coordinate}n * @privaten */n this.startCoordinate = null;n /**n * @type {Collection<import("../Feature.js").default>}n * @privaten */n this.features = options.features !== undefined ? options.features : null;n /** @type {function(import("../layer/Layer.js").default): boolean} */n var layerFilter;n if (options.layers) {n if (typeof options.layers === 'function') {n layerFilter = options.layers;n }n else {n var layers_1 = options.layers;n layerFilter = function (layer) {n return includes(layers_1, layer);n };n }n }n else {n layerFilter = TRUE;n }n /**n * @privaten * @type {function(import("../layer/Layer.js").default): boolean}n */n this.layerFilter = layerFilter;n /**n * @privaten * @type {FilterFunction}n */n this.filter = options.filter ? options.filter : TRUE;n /**n * @privaten * @type {number}n */n this.hitTolerance = options.hitTolerance ? options.hitTolerance : 0;n /**n * @type {import("../Feature.js").default}n * @privaten */n this.lastFeature = null;n _this.addEventListener(getChangeEventType(InteractionProperty.ACTIVE), this.handleActiveChanged);n return _this;n }n /**n * @inheritDocn */n Translate.prototype.handleDownEvent = function (event) {n this.lastFeature_ = this.featuresAtPixel_(event.pixel, event.map);n if (!this.lastCoordinate_ && this.lastFeature_) {n this.startCoordinate_ = event.coordinate;n this.lastCoordinate_ = event.coordinate;n this.handleMoveEvent(event);n var features = this.features_ || new Collection();n this.dispatchEvent(new TranslateEvent(TranslateEventType.TRANSLATESTART, features, event.coordinate, this.startCoordinate_, event));n return true;n }n return false;n };n /**n * @inheritDocn */n Translate.prototype.handleUpEvent = function (event) {n if (this.lastCoordinate_) {n this.lastCoordinate_ = null;n this.handleMoveEvent(event);n var features = this.features_ || new Collection();n this.dispatchEvent(new TranslateEvent(TranslateEventType.TRANSLATEEND, features, event.coordinate, this.startCoordinate_, event));n // cleanupn this.startCoordinate_ = null;n return true;n }n return false;n };n /**n * @inheritDocn */n Translate.prototype.handleDragEvent = function (event) {n if (this.lastCoordinate_) {n var newCoordinate = event.coordinate;n var deltaX_1 = newCoordinate - this.lastCoordinate_;n var deltaY_1 = newCoordinate - this.lastCoordinate_;n var features = this.features_ || new Collection();n features.forEach(function (feature) {n var geom = feature.getGeometry();n geom.translate(deltaX_1, deltaY_1);n feature.setGeometry(geom);n });n this.lastCoordinate_ = newCoordinate;n this.dispatchEvent(new TranslateEvent(TranslateEventType.TRANSLATING, features, newCoordinate, this.startCoordinate_, event));n }n };n /**n * @inheritDocn */n Translate.prototype.handleMoveEvent = function (event) {n var elem = event.map.getViewport();n // Change the cursor to grab/grabbing if hovering any of the features managedn // by the interactionn if (this.featuresAtPixel_(event.pixel, event.map)) {n elem.classList.remove(this.lastCoordinate_ ? 'ol-grab' : 'ol-grabbing');n elem.classList.add(this.lastCoordinate_ ? 'ol-grabbing' : 'ol-grab');n }n else {n elem.classList.remove('ol-grab', 'ol-grabbing');n }n };n /**n * Tests to see if the given coordinates intersects any of our selectedn * features.n * @param {import("../pixel.js").Pixel} pixel Pixel coordinate to test for intersection.n * @param {import("../PluggableMap.js").default} map Map to test the intersection on.n * @return {import("../Feature.js").default} Returns the feature found at the specified pixeln * coordinates.n * @privaten */n Translate.prototype.featuresAtPixel_ = function (pixel, map) {n return map.forEachFeatureAtPixel(pixel, function (feature, layer) {n if (this.filter_(feature, layer)) {n if (!this.features_ || includes(this.features_.getArray(), feature)) {n return feature;n }n }n }.bind(this), {n layerFilter: this.layerFilter_,n hitTolerance: this.hitTolerance_n });n };n /**n * Returns the Hit-detection tolerance.n * @returns {number} Hit tolerance in pixels.n * @apin */n Translate.prototype.getHitTolerance = function () {n return this.hitTolerance_;n };n /**n * Hit-detection tolerance. Pixels inside the radius around the given positionn * will be checked for features.n * @param {number} hitTolerance Hit tolerance in pixels.n * @apin */n Translate.prototype.setHitTolerance = function (hitTolerance) {n this.hitTolerance_ = hitTolerance;n };n /**n * @inheritDocn */n Translate.prototype.setMap = function (map) {n var oldMap = this.getMap();n _super.prototype.setMap.call(this, map);n this.updateState_(oldMap);n };n /**n * @privaten */n Translate.prototype.handleActiveChanged_ = function () {n this.updateState_(null);n };n /**n * @param {import("../PluggableMap.js").default} oldMap Old map.n * @privaten */n Translate.prototype.updateState_ = function (oldMap) {n var map = this.getMap();n var active = this.getActive();n if (!map || !active) {n map = map || oldMap;n if (map) {n var elem = map.getViewport();n elem.classList.remove('ol-grab', 'ol-grabbing');n }n }n };n return Translate;n}(PointerInteraction));nexport default Translate;n//# sourceMappingURL=Translate.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/geom/GeometryCollectionn */nimport { listen, unlistenByKey } from '../events.js';nimport EventType from '../events/EventType.js';nimport { createOrUpdateEmpty, closestSquaredDistanceXY, extend, getCenter } from '../extent.js';nimport Geometry from './Geometry.js';nimport GeometryType from './GeometryType.js';n/**n * @classdescn * An array of {@link module:ol/geom/Geometry} objects.n *n * @apin */nvar GeometryCollection = /** @class */ (function (_super) {n __extends(GeometryCollection, _super);n /**n * @param {Array<Geometry>=} opt_geometries Geometries.n */n function GeometryCollection(opt_geometries) {n var _this = _super.call(this) || this;n /**n * @privaten * @type {Array<Geometry>}n */n this.geometries = opt_geometries ? opt_geometries : null;n /**n * @type {Array<import("../events.js").EventsKey>}n */n this.changeEventsKeys = [];n this.listenGeometriesChange();n return _this;n }n /**n * @privaten */n GeometryCollection.prototype.unlistenGeometriesChange_ = function () {n this.changeEventsKeys_.forEach(unlistenByKey);n this.changeEventsKeys_.length = 0;n };n /**n * @privaten */n GeometryCollection.prototype.listenGeometriesChange_ = function () {n if (!this.geometries_) {n return;n }n for (var i = 0, ii = this.geometries_.length; i < ii; ++i) {n this.changeEventsKeys_.push(listen(this.geometries_, EventType.CHANGE, this.changed, this));n }n };n /**n * Make a complete copy of the geometry.n * @return {!GeometryCollection} Clone.n * @overriden * @apin */n GeometryCollection.prototype.clone = function () {n var geometryCollection = new GeometryCollection(null);n geometryCollection.setGeometries(this.geometries_);n return geometryCollection;n };n /**n * @inheritDocn */n GeometryCollection.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {n return minSquaredDistance;n }n var geometries = this.geometries_;n for (var i = 0, ii = geometries.length; i < ii; ++i) {n minSquaredDistance = geometries.closestPointXY(x, y, closestPoint, minSquaredDistance);n }n return minSquaredDistance;n };n /**n * @inheritDocn */n GeometryCollection.prototype.containsXY = function (x, y) {n var geometries = this.geometries_;n for (var i = 0, ii = geometries.length; i < ii; ++i) {n if (geometries.containsXY(x, y)) {n return true;n }n }n return false;n };n /**n * @inheritDocn */n GeometryCollection.prototype.computeExtent = function (extent) {n createOrUpdateEmpty(extent);n var geometries = this.geometries_;n for (var i = 0, ii = geometries.length; i < ii; ++i) {n extend(extent, geometries.getExtent());n }n return extent;n };n /**n * Return the geometries that make up this geometry collection.n * @return {Array<Geometry>} Geometries.n * @apin */n GeometryCollection.prototype.getGeometries = function () {n return cloneGeometries(this.geometries_);n };n /**n * @return {Array<Geometry>} Geometries.n */n GeometryCollection.prototype.getGeometriesArray = function () {n return this.geometries_;n };n /**n * @inheritDocn */n GeometryCollection.prototype.getSimplifiedGeometry = function (squaredTolerance) {n if (this.simplifiedGeometryRevision !== this.getRevision()) {n this.simplifiedGeometryMaxMinSquaredTolerance = 0;n this.simplifiedGeometryRevision = this.getRevision();n }n if (squaredTolerance < 0 ||n (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&n squaredTolerance < this.simplifiedGeometryMaxMinSquaredTolerance)) {n return this;n }n var simplifiedGeometries = [];n var geometries = this.geometries_;n var simplified = false;n for (var i = 0, ii = geometries.length; i < ii; ++i) {n var geometry = geometries;n var simplifiedGeometry = geometry.getSimplifiedGeometry(squaredTolerance);n simplifiedGeometries.push(simplifiedGeometry);n if (simplifiedGeometry !== geometry) {n simplified = true;n }n }n if (simplified) {n var simplifiedGeometryCollection = new GeometryCollection(null);n simplifiedGeometryCollection.setGeometriesArray(simplifiedGeometries);n return simplifiedGeometryCollection;n }n else {n this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;n return this;n }n };n /**n * @inheritDocn * @apin */n GeometryCollection.prototype.getType = function () {n return GeometryType.GEOMETRY_COLLECTION;n };n /**n * @inheritDocn * @apin */n GeometryCollection.prototype.intersectsExtent = function (extent) {n var geometries = this.geometries_;n for (var i = 0, ii = geometries.length; i < ii; ++i) {n if (geometries.intersectsExtent(extent)) {n return true;n }n }n return false;n };n /**n * @return {boolean} Is empty.n */n GeometryCollection.prototype.isEmpty = function () {n return this.geometries_.length === 0;n };n /**n * @inheritDocn * @apin */n GeometryCollection.prototype.rotate = function (angle, anchor) {n var geometries = this.geometries_;n for (var i = 0, ii = geometries.length; i < ii; ++i) {n geometries.rotate(angle, anchor);n }n this.changed();n };n /**n * @inheritDocn * @apin */n GeometryCollection.prototype.scale = function (sx, opt_sy, opt_anchor) {n var anchor = opt_anchor;n if (!anchor) {n anchor = getCenter(this.getExtent());n }n var geometries = this.geometries_;n for (var i = 0, ii = geometries.length; i < ii; ++i) {n geometries.scale(sx, opt_sy, anchor);n }n this.changed();n };n /**n * Set the geometries that make up this geometry collection.n * @param {Array<Geometry>} geometries Geometries.n * @apin */n GeometryCollection.prototype.setGeometries = function (geometries) {n this.setGeometriesArray(cloneGeometries(geometries));n };n /**n * @param {Array<Geometry>} geometries Geometries.n */n GeometryCollection.prototype.setGeometriesArray = function (geometries) {n this.unlistenGeometriesChange_();n this.geometries_ = geometries;n this.listenGeometriesChange_();n this.changed();n };n /**n * @inheritDocn * @apin */n GeometryCollection.prototype.applyTransform = function (transformFn) {n var geometries = this.geometries_;n for (var i = 0, ii = geometries.length; i < ii; ++i) {n geometries.applyTransform(transformFn);n }n this.changed();n };n /**n * @inheritDocn * @apin */n GeometryCollection.prototype.translate = function (deltaX, deltaY) {n var geometries = this.geometries_;n for (var i = 0, ii = geometries.length; i < ii; ++i) {n geometries.translate(deltaX, deltaY);n }n this.changed();n };n /**n * @inheritDocn */n GeometryCollection.prototype.disposeInternal = function () {n this.unlistenGeometriesChange_();n _super.prototype.disposeInternal.call(this);n };n return GeometryCollection;n}(Geometry));n/**n * @param {Array<Geometry>} geometries Geometries.n * @return {Array<Geometry>} Cloned geometries.n */nfunction cloneGeometries(geometries) {n var clonedGeometries = [];n for (var i = 0, ii = geometries.length; i < ii; ++i) {n clonedGeometries.push(geometries.clone());n }n return clonedGeometries;n}nexport default GeometryCollection;n//# sourceMappingURL=GeometryCollection.js.map”,“/**n * @module ol/format/Featuren */nimport { assign } from '../obj.js';nimport { abstract } from '../util.js';nimport { get as getProjection, equivalent as equivalentProjection, transformExtent } from '../proj.js';nimport Units from '../proj/Units.js';n/**n * @typedef {Object} ReadOptionsn * @property {import("../proj.js").ProjectionLike} [dataProjection] Projection of the data we are reading.n * If not provided, the projection will be derived from the data (where possible) orn * the `dataProjection` of the format is assigned (where set). If the projectionn * can not be derived from the data and if no `dataProjection` is set for a format,n * the features will not be reprojected.n * @property {import("../extent.js").Extent} [extent] Tile extent in map units of the tile being read.n * This is only required when reading data with tile pixels as geometry units. When configured,n * a `dataProjection` with `TILE_PIXELS` as `units` and the tile's pixel extent as `extent` needs to ben * provided.n * @property {import("../proj.js").ProjectionLike} [featureProjection] Projection of the feature geometriesn * created by the format reader. If not provided, features will be returned in then * `dataProjection`.n */n/**n * @typedef {Object} WriteOptionsn * @property {import("../proj.js").ProjectionLike} [dataProjection] Projection of the data we are writing.n * If not provided, the `dataProjection` of the format is assigned (where set).n * If no `dataProjection` is set for a format, the features will be returnedn * in the `featureProjection`.n * @property {import("../proj.js").ProjectionLike} [featureProjection] Projection of the feature geometriesn * that will be serialized by the format writer. If not provided, geometries are assumedn * to be in the `dataProjection` if that is set; in other words, they are not transformed.n * @property {boolean} [rightHanded] When writing geometries, follow the right-handn * rule for linear ring orientation. This means that polygons will have counter-clockwisen * exterior rings and clockwise interior rings. By default, coordinates are serializedn * as they are provided at construction. If `true`, the right-hand rule willn * be applied. If `false`, the left-hand rule will be applied (clockwise forn * exterior and counter-clockwise for interior rings). Note that not alln * formats support this. The GeoJSON format does use this property when writingn * geometries.n * @property {number} [decimals] Maximum number of decimal places for coordinates.n * Coordinates are stored internally as floats, but floating-point arithmetic can createn * coordinates with a large number of decimal places, not generally wanted on output.n * Set a number here to round coordinates. Can also be used to ensure thatn * coordinates read in can be written back out with the same number of decimals.n * Default is no rounding.n */n/**n * @classdescn * Abstract base class; normally only used for creating subclasses and notn * instantiated in apps.n * Base class for feature formats.n * {@link module:ol/format/Feature~FeatureFormat} subclasses provide the ability to decode and encoden * {@link module:ol/Feature~Feature} objects from a variety of commonly used geospatialn * file formats. See the documentation for each format for more details.n *n * @abstractn * @apin */nvar FeatureFormat = /** @class */ (function () {n function FeatureFormat() {n /**n * @protectedn * @type {import("../proj/Projection.js").default}n */n this.dataProjection = null;n /**n * @protectedn * @type {import("../proj/Projection.js").default}n */n this.defaultFeatureProjection = null;n }n /**n * Adds the data projection to the read options.n * @param {Document|Node|Object|string} source Source.n * @param {ReadOptions=} opt_options Options.n * @return {ReadOptions|undefined} Options.n * @protectedn */n FeatureFormat.prototype.getReadOptions = function (source, opt_options) {n var options;n if (opt_options) {n var dataProjection = opt_options.dataProjection ?n getProjection(opt_options.dataProjection) : this.readProjection(source);n if (opt_options.extent &&n dataProjection && dataProjection.getUnits() === Units.TILE_PIXELS) {n dataProjection = getProjection(dataProjection);n dataProjection.setWorldExtent(opt_options.extent);n }n options = {n dataProjection: dataProjection,n featureProjection: opt_options.featureProjectionn };n }n return this.adaptOptions(options);n };n /**n * Sets the `dataProjection` on the options, if no `dataProjection`n * is set.n * @param {WriteOptions|ReadOptions|undefined} optionsn * Options.n * @protectedn * @return {WriteOptions|ReadOptions|undefined}n * Updated options.n */n FeatureFormat.prototype.adaptOptions = function (options) {n return assign({n dataProjection: this.dataProjection,n featureProjection: this.defaultFeatureProjectionn }, options);n };n /**n * @abstractn * @return {import("./FormatType.js").default} Format.n */n FeatureFormat.prototype.getType = function () {n return abstract();n };n /**n * Read a single feature from a source.n *n * @abstractn * @param {Document|Node|Object|string} source Source.n * @param {ReadOptions=} opt_options Read options.n * @return {import("../Feature.js").FeatureLike} Feature.n */n FeatureFormat.prototype.readFeature = function (source, opt_options) {n return abstract();n };n /**n * Read all features from a source.n *n * @abstractn * @param {Document|Node|ArrayBuffer|Object|string} source Source.n * @param {ReadOptions=} opt_options Read options.n * @return {Array<import("../Feature.js").FeatureLike>} Features.n */n FeatureFormat.prototype.readFeatures = function (source, opt_options) {n return abstract();n };n /**n * Read a single geometry from a source.n *n * @abstractn * @param {Document|Node|Object|string} source Source.n * @param {ReadOptions=} opt_options Read options.n * @return {import("../geom/Geometry.js").default} Geometry.n */n FeatureFormat.prototype.readGeometry = function (source, opt_options) {n return abstract();n };n /**n * Read the projection from a source.n *n * @abstractn * @param {Document|Node|Object|string} source Source.n * @return {import("../proj/Projection.js").default} Projection.n */n FeatureFormat.prototype.readProjection = function (source) {n return abstract();n };n /**n * Encode a feature in this format.n *n * @abstractn * @param {import("../Feature.js").default} feature Feature.n * @param {WriteOptions=} opt_options Write options.n * @return {string} Result.n */n FeatureFormat.prototype.writeFeature = function (feature, opt_options) {n return abstract();n };n /**n * Encode an array of features in this format.n *n * @abstractn * @param {Array<import("../Feature.js").default>} features Features.n * @param {WriteOptions=} opt_options Write options.n * @return {string} Result.n */n FeatureFormat.prototype.writeFeatures = function (features, opt_options) {n return abstract();n };n /**n * Write a single geometry in this format.n *n * @abstractn * @param {import("../geom/Geometry.js").default} geometry Geometry.n * @param {WriteOptions=} opt_options Write options.n * @return {string} Result.n */n FeatureFormat.prototype.writeGeometry = function (geometry, opt_options) {n return abstract();n };n return FeatureFormat;n}());nexport default FeatureFormat;n/**n * @param {import("../geom/Geometry.js").default} geometry Geometry.n * @param {boolean} write Set to true for writing, false for reading.n * @param {(WriteOptions|ReadOptions)=} opt_options Options.n * @return {import("../geom/Geometry.js").default} Transformed geometry.n */nexport function transformGeometryWithOptions(geometry, write, opt_options) {n var featureProjection = opt_options ? getProjection(opt_options.featureProjection) : null;n var dataProjection = opt_options ? getProjection(opt_options.dataProjection) : null;n var transformed;n if (featureProjection && dataProjection && !equivalentProjection(featureProjection, dataProjection)) {n transformed = (write ? geometry.clone() : geometry).transform(write ? featureProjection : dataProjection, write ? dataProjection : featureProjection);n }n else {n transformed = geometry;n }n if (write && opt_options && /** @type {WriteOptions} */ (opt_options).decimals !== undefined) {n var power_1 = Math.pow(10, /** @type {WriteOptions} */ (opt_options).decimals);n // if decimals option on write, round each coordinate appropriatelyn /**n * @param {Array<number>} coordinates Coordinates.n * @return {Array<number>} Transformed coordinates.n */n var transform = function (coordinates) {n for (var i = 0, ii = coordinates.length; i < ii; ++i) {n coordinates = Math.round(coordinates * power_1) / power_1;n }n return coordinates;n };n if (transformed === geometry) {n transformed = geometry.clone();n }n transformed.applyTransform(transform);n }n return transformed;n}n/**n * @param {import("../extent.js").Extent} extent Extent.n * @param {ReadOptions=} opt_options Read options.n * @return {import("../extent.js").Extent} Transformed extent.n */nexport function transformExtentWithOptions(extent, opt_options) {n var featureProjection = opt_options ? getProjection(opt_options.featureProjection) : null;n var dataProjection = opt_options ? getProjection(opt_options.dataProjection) : null;n if (featureProjection && dataProjection && !equivalentProjection(featureProjection, dataProjection)) {n return transformExtent(extent, dataProjection, featureProjection);n }n else {n return extent;n }n}n//# sourceMappingURL=Feature.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/JSONFeaturen */nimport { abstract } from '../util.js';nimport FeatureFormat from './Feature.js';nimport FormatType from './FormatType.js';n/**n * @classdescn * Abstract base class; normally only used for creating subclasses and notn * instantiated in apps.n * Base class for JSON feature formats.n *n * @abstractn */nvar JSONFeature = /** @class */ (function (_super) {n __extends(JSONFeature, _super);n function JSONFeature() {n return _super.call(this) || this;n }n /**n * @inheritDocn */n JSONFeature.prototype.getType = function () {n return FormatType.JSON;n };n /**n * Read a feature. Only works for a single feature. Use `readFeatures` ton * read a feature collection.n *n * @param {ArrayBuffer|Document|Node|Object|string} source Source.n * @param {import("./Feature.js").ReadOptions=} opt_options Read options.n * @return {import("../Feature.js").default} Feature.n * @apin */n JSONFeature.prototype.readFeature = function (source, opt_options) {n return this.readFeatureFromObject(getObject(source), this.getReadOptions(source, opt_options));n };n /**n * Read all features. Works with both a single feature and a featuren * collection.n *n * @param {ArrayBuffer|Document|Node|Object|string} source Source.n * @param {import("./Feature.js").ReadOptions=} opt_options Read options.n * @return {Array<import("../Feature.js").default>} Features.n * @apin */n JSONFeature.prototype.readFeatures = function (source, opt_options) {n return this.readFeaturesFromObject(getObject(source), this.getReadOptions(source, opt_options));n };n /**n * @abstractn * @param {Object} object Object.n * @param {import("./Feature.js").ReadOptions=} opt_options Read options.n * @protectedn * @return {import("../Feature.js").default} Feature.n */n JSONFeature.prototype.readFeatureFromObject = function (object, opt_options) {n return abstract();n };n /**n * @abstractn * @param {Object} object Object.n * @param {import("./Feature.js").ReadOptions=} opt_options Read options.n * @protectedn * @return {Array<import("../Feature.js").default>} Features.n */n JSONFeature.prototype.readFeaturesFromObject = function (object, opt_options) {n return abstract();n };n /**n * Read a geometry.n *n * @param {ArrayBuffer|Document|Node|Object|string} source Source.n * @param {import("./Feature.js").ReadOptions=} opt_options Read options.n * @return {import("../geom/Geometry.js").default} Geometry.n * @apin */n JSONFeature.prototype.readGeometry = function (source, opt_options) {n return this.readGeometryFromObject(getObject(source), this.getReadOptions(source, opt_options));n };n /**n * @abstractn * @param {Object} object Object.n * @param {import("./Feature.js").ReadOptions=} opt_options Read options.n * @protectedn * @return {import("../geom/Geometry.js").default} Geometry.n */n JSONFeature.prototype.readGeometryFromObject = function (object, opt_options) {n return abstract();n };n /**n * Read the projection.n *n * @param {ArrayBuffer|Document|Node|Object|string} source Source.n * @return {import("../proj/Projection.js").default} Projection.n * @apin */n JSONFeature.prototype.readProjection = function (source) {n return this.readProjectionFromObject(getObject(source));n };n /**n * @abstractn * @param {Object} object Object.n * @protectedn * @return {import("../proj/Projection.js").default} Projection.n */n JSONFeature.prototype.readProjectionFromObject = function (object) {n return abstract();n };n /**n * Encode a feature as string.n *n * @param {import("../Feature.js").default} feature Feature.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {string} Encoded feature.n * @apin */n JSONFeature.prototype.writeFeature = function (feature, opt_options) {n return JSON.stringify(this.writeFeatureObject(feature, opt_options));n };n /**n * @abstractn * @param {import("../Feature.js").default} feature Feature.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {Object} Object.n */n JSONFeature.prototype.writeFeatureObject = function (feature, opt_options) {n return abstract();n };n /**n * Encode an array of features as string.n *n * @param {Array<import("../Feature.js").default>} features Features.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {string} Encoded features.n * @apin */n JSONFeature.prototype.writeFeatures = function (features, opt_options) {n return JSON.stringify(this.writeFeaturesObject(features, opt_options));n };n /**n * @abstractn * @param {Array<import("../Feature.js").default>} features Features.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {Object} Object.n */n JSONFeature.prototype.writeFeaturesObject = function (features, opt_options) {n return abstract();n };n /**n * Encode a geometry as string.n *n * @param {import("../geom/Geometry.js").default} geometry Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {string} Encoded geometry.n * @apin */n JSONFeature.prototype.writeGeometry = function (geometry, opt_options) {n return JSON.stringify(this.writeGeometryObject(geometry, opt_options));n };n /**n * @abstractn * @param {import("../geom/Geometry.js").default} geometry Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {Object} Object.n */n JSONFeature.prototype.writeGeometryObject = function (geometry, opt_options) {n return abstract();n };n return JSONFeature;n}(FeatureFormat));n/**n * @param {Document|Node|Object|string} source Source.n * @return {Object} Object.n */nfunction getObject(source) {n if (typeof source === 'string') {n var object = JSON.parse(source);n return object ? /** @type {Object} */ (object) : null;n }n else if (source !== null) {n return source;n }n else {n return null;n }n}nexport default JSONFeature;n//# sourceMappingURL=JSONFeature.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/EsriJSONn */nimport Feature from '../Feature.js';nimport { assert } from '../asserts.js';nimport { containsExtent } from '../extent.js';nimport { transformGeometryWithOptions } from './Feature.js';nimport JSONFeature from './JSONFeature.js';nimport GeometryLayout from '../geom/GeometryLayout.js';nimport GeometryType from '../geom/GeometryType.js';nimport LineString from '../geom/LineString.js';nimport LinearRing from '../geom/LinearRing.js';nimport MultiLineString from '../geom/MultiLineString.js';nimport MultiPoint from '../geom/MultiPoint.js';nimport MultiPolygon from '../geom/MultiPolygon.js';nimport Point from '../geom/Point.js';nimport Polygon from '../geom/Polygon.js';nimport { deflateCoordinates } from '../geom/flat/deflate.js';nimport { linearRingIsClockwise } from '../geom/flat/orient.js';nimport { isEmpty } from '../obj.js';nimport { get as getProjection } from '../proj.js';n/**n * @typedef {import("arcgis-rest-api").Feature} EsriJSONFeaturen * @typedef {import("arcgis-rest-api").FeatureSet} EsriJSONFeatureSetn * @typedef {import("arcgis-rest-api").Geometry} EsriJSONGeometryn * @typedef {import("arcgis-rest-api").Point} EsriJSONPointn * @typedef {import("arcgis-rest-api").Polyline} EsriJSONPolylinen * @typedef {import("arcgis-rest-api").Polygon} EsriJSONPolygonn * @typedef {import("arcgis-rest-api").Multipoint} EsriJSONMultipointn * @typedef {import("arcgis-rest-api").HasZM} EsriJSONHasZMn * @typedef {import("arcgis-rest-api").Position} EsriJSONPositionn * @typedef {import("arcgis-rest-api").SpatialReferenceWkid} EsriJSONSpatialReferenceWkidn */n/**n * @typedef {Object} EsriJSONMultiPolygonn * @property {Array<Array<Array<Array<number>>>>} rings Rings for the MultiPolygon.n * @property {boolean} [hasM] If the polygon coordinates have an M value.n * @property {boolean} [hasZ] If the polygon coordinates have a Z value.n * @property {EsriJSONSpatialReferenceWkid} [spatialReference] The coordinate reference system.n */n/**n * @constn * @type {Object<import("../geom/GeometryType.js").default, function(EsriJSONGeometry): import("../geom/Geometry.js").default>}n */nvar GEOMETRY_READERS = {};nGEOMETRY_READERS = readPointGeometry;nGEOMETRY_READERS = readLineStringGeometry;nGEOMETRY_READERS = readPolygonGeometry;nGEOMETRY_READERS = readMultiPointGeometry;nGEOMETRY_READERS = readMultiLineStringGeometry;nGEOMETRY_READERS = readMultiPolygonGeometry;n/**n * @constn * @type {Object<string, function(import("../geom/Geometry.js").default, import("./Feature.js").WriteOptions=): (EsriJSONGeometry)>}n */nvar GEOMETRY_WRITERS = {};nGEOMETRY_WRITERS = writePointGeometry;nGEOMETRY_WRITERS = writeLineStringGeometry;nGEOMETRY_WRITERS = writePolygonGeometry;nGEOMETRY_WRITERS = writeMultiPointGeometry;nGEOMETRY_WRITERS = writeMultiLineStringGeometry;nGEOMETRY_WRITERS = writeMultiPolygonGeometry;n/**n * @typedef {Object} Optionsn * @property {string} [geometryName] Geometry name to use when creating features.n */n/**n * @classdescn * Feature format for reading and writing data in the EsriJSON format.n *n * @apin */nvar EsriJSON = /** @class */ (function (_super) {n __extends(EsriJSON, _super);n /**n * @param {Options=} opt_options Options.n */n function EsriJSON(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n _this = _super.call(this) || this;n /**n * Name of the geometry attribute for features.n * @type {string|undefined}n * @privaten */n this.geometryName = options.geometryName;n return _this;n }n /**n * @inheritDocn */n EsriJSON.prototype.readFeatureFromObject = function (object, opt_options) {n var esriJSONFeature = /** @type {EsriJSONFeature} */ (object);n var geometry = readGeometry(esriJSONFeature.geometry, opt_options);n var feature = new Feature();n if (this.geometryName_) {n feature.setGeometryName(this.geometryName_);n }n feature.setGeometry(geometry);n if (opt_options && opt_options.idField &&n esriJSONFeature.attributes) {n feature.setId(/** @type {number} */ (esriJSONFeature.attributes));n }n if (esriJSONFeature.attributes) {n feature.setProperties(esriJSONFeature.attributes, true);n }n return feature;n };n /**n * @inheritDocn */n EsriJSON.prototype.readFeaturesFromObject = function (object, opt_options) {n var options = opt_options ? opt_options : {};n if (object) {n var esriJSONFeatureSet = /** @type {EsriJSONFeatureSet} */ (object);n /** @type {Array<import("../Feature.js").default>} */n var features = [];n var esriJSONFeatures = esriJSONFeatureSet.features;n options.idField = object.objectIdFieldName;n for (var i = 0, ii = esriJSONFeatures.length; i < ii; ++i) {n features.push(this.readFeatureFromObject(esriJSONFeatures, options));n }n return features;n }n else {n return [this.readFeatureFromObject(object, options)];n }n };n /**n * @inheritDocn */n EsriJSON.prototype.readGeometryFromObject = function (object, opt_options) {n return readGeometry(/** @type {EsriJSONGeometry} */ (object), opt_options);n };n /**n * @inheritDocn */n EsriJSON.prototype.readProjectionFromObject = function (object) {n if (object && object['wkid'] !== undefined) {n var spatialReference = /** @type {EsriJSONSpatialReferenceWkid} */ (object);n var crs = spatialReference.wkid;n return getProjection('EPSG:' + crs);n }n else {n return null;n }n };n /**n * Encode a geometry as a EsriJSON object.n *n * @param {import("../geom/Geometry.js").default} geometry Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {EsriJSONGeometry} Object.n * @overriden * @apin */n EsriJSON.prototype.writeGeometryObject = function (geometry, opt_options) {n return writeGeometry(geometry, this.adaptOptions(opt_options));n };n /**n * Encode a feature as a esriJSON Feature object.n *n * @param {import("../Feature.js").default} feature Feature.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {Object} Object.n * @overriden * @apin */n EsriJSON.prototype.writeFeatureObject = function (feature, opt_options) {n opt_options = this.adaptOptions(opt_options);n var object = {};n var geometry = feature.getGeometry();n if (geometry) {n object = writeGeometry(geometry, opt_options);n if (opt_options && opt_options.featureProjection) {n object['spatialReference'] = /** @type {EsriJSONSpatialReferenceWkid} */ ({n wkid: Number(getProjection(opt_options.featureProjection).getCode().split(':').pop())n });n }n }n var properties = feature.getProperties();n delete properties;n if (!isEmpty(properties)) {n object = properties;n }n else {n object = {};n }n return object;n };n /**n * Encode an array of features as a EsriJSON object.n *n * @param {Array<import("../Feature.js").default>} features Features.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {EsriJSONFeatureSet} EsriJSON Object.n * @overriden * @apin */n EsriJSON.prototype.writeFeaturesObject = function (features, opt_options) {n opt_options = this.adaptOptions(opt_options);n var objects = [];n for (var i = 0, ii = features.length; i < ii; ++i) {n objects.push(this.writeFeatureObject(features, opt_options));n }n return {n 'features': objectsn };n };n return EsriJSON;n}(JSONFeature));n/**n * @param {EsriJSONGeometry} object Object.n * @param {import("./Feature.js").ReadOptions=} opt_options Read options.n * @return {import("../geom/Geometry.js").default} Geometry.n */nfunction readGeometry(object, opt_options) {n var _a, _b;n if (!object) {n return null;n }n /** @type {import("../geom/GeometryType.js").default} */n var type;n if (typeof object === 'number' && typeof object === 'number') {n type = GeometryType.POINT;n }n else if (object) {n type = GeometryType.MULTI_POINT;n }n else if (object) {n var esriJSONPolyline = /** @type {EsriJSONPolyline} */ (object);n if (esriJSONPolyline.paths.length === 1) {n type = GeometryType.LINE_STRING;n }n else {n type = GeometryType.MULTI_LINE_STRING;n }n }n else if (object) {n var esriJSONPolygon = /** @type {EsriJSONPolygon} */ (object);n var layout = getGeometryLayout(esriJSONPolygon);n var rings = convertRings(esriJSONPolygon.rings, layout);n if (rings.length === 1) {n type = GeometryType.POLYGON;n object = Object.assign({}, object, (_a = {}, _a = rings, _a));n }n else {n type = GeometryType.MULTI_POLYGON;n object = Object.assign({}, object, (_b = {}, _b = rings, _b));n }n }n var geometryReader = GEOMETRY_READERS;n return transformGeometryWithOptions(geometryReader(object), false, opt_options);n}n/**n * Determines inner and outer rings.n * Checks if any polygons in this array contain any other polygons in thisn * array. It is used for checking for holes.n * Logic inspired by: github.com/Esri/terraformer-arcgis-parsern * @param {Array<!Array<!Array<number>>>} rings Rings.n * @param {import("../geom/GeometryLayout.js").default} layout Geometry layout.n * @return {Array<!Array<!Array<!Array<number>>>>} Transformed rings.n */nfunction convertRings(rings, layout) {n var flatRing = [];n var outerRings = [];n var holes = [];n var i, ii;n for (i = 0, ii = rings.length; i < ii; ++i) {n flatRing.length = 0;n deflateCoordinates(flatRing, 0, rings, layout.length);n // is this ring an outer ring? is it clockwise?n var clockwise = linearRingIsClockwise(flatRing, 0, flatRing.length, layout.length);n if (clockwise) {n outerRings.push([rings]);n }n else {n holes.push(rings);n }n }n while (holes.length) {n var hole = holes.shift();n var matched = false;n // loop over all outer rings and see if they contain our hole.n for (i = outerRings.length - 1; i >= 0; i–) {n var outerRing = outerRings[0];n var containsHole = containsExtent(new LinearRing(outerRing).getExtent(), new LinearRing(hole).getExtent());n if (containsHole) {n // the hole is contained push it into our polygonn outerRings.push(hole);n matched = true;n break;n }n }n if (!matched) {n // no outer rings contain this hole turn it into and outern // ring (reverse it)n outerRings.push();n }n }n return outerRings;n}n/**n * @param {EsriJSONPoint} object Object.n * @return {import("../geom/Geometry.js").default} Point.n */nfunction readPointGeometry(object) {n var point;n if (object.m !== undefined && object.z !== undefined) {n point = new Point([object.x, object.y, object.z, object.m], GeometryLayout.XYZM);n }n else if (object.z !== undefined) {n point = new Point([object.x, object.y, object.z], GeometryLayout.XYZ);n }n else if (object.m !== undefined) {n point = new Point([object.x, object.y, object.m], GeometryLayout.XYM);n }n else {n point = new Point([object.x, object.y]);n }n return point;n}n/**n * @param {EsriJSONPolyline} object Object.n * @return {import("../geom/Geometry.js").default} LineString.n */nfunction readLineStringGeometry(object) {n var layout = getGeometryLayout(object);n return new LineString(object.paths, layout);n}n/**n * @param {EsriJSONPolyline} object Object.n * @return {import("../geom/Geometry.js").default} MultiLineString.n */nfunction readMultiLineStringGeometry(object) {n var layout = getGeometryLayout(object);n return new MultiLineString(object.paths, layout);n}n/**n * @param {EsriJSONHasZM} object Object.n * @return {import("../geom/GeometryLayout.js").default} The geometry layout to use.n */nfunction getGeometryLayout(object) {n var layout = GeometryLayout.XY;n if (object.hasZ === true && object.hasM === true) {n layout = GeometryLayout.XYZM;n }n else if (object.hasZ === true) {n layout = GeometryLayout.XYZ;n }n else if (object.hasM === true) {n layout = GeometryLayout.XYM;n }n return layout;n}n/**n * @param {EsriJSONMultipoint} object Object.n * @return {import("../geom/Geometry.js").default} MultiPoint.n */nfunction readMultiPointGeometry(object) {n var layout = getGeometryLayout(object);n return new MultiPoint(object.points, layout);n}n/**n * @param {EsriJSONMultiPolygon} object Object.n * @return {import("../geom/Geometry.js").default} MultiPolygon.n */nfunction readMultiPolygonGeometry(object) {n var layout = getGeometryLayout(object);n return new MultiPolygon(object.rings, layout);n}n/**n * @param {EsriJSONPolygon} object Object.n * @return {import("../geom/Geometry.js").default} Polygon.n */nfunction readPolygonGeometry(object) {n var layout = getGeometryLayout(object);n return new Polygon(object.rings, layout);n}n/**n * @param {import("../geom/Point.js").default} geometry Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {EsriJSONPoint} EsriJSON geometry.n */nfunction writePointGeometry(geometry, opt_options) {n var coordinates = geometry.getCoordinates();n /** @type {EsriJSONPoint} */n var esriJSON;n var layout = geometry.getLayout();n if (layout === GeometryLayout.XYZ) {n esriJSON = {n x: coordinates,n y: coordinates,n z: coordinatesn };n }n else if (layout === GeometryLayout.XYM) {n esriJSON = {n x: coordinates,n y: coordinates,n m: coordinatesn };n }n else if (layout === GeometryLayout.XYZM) {n esriJSON = {n x: coordinates,n y: coordinates,n z: coordinates,n m: coordinatesn };n }n else if (layout === GeometryLayout.XY) {n esriJSON = {n x: coordinates,n y: coordinatesn };n }n else {n assert(false, 34); // Invalid geometry layoutn }n return esriJSON;n}n/**n * @param {import("../geom/SimpleGeometry.js").default} geometry Geometry.n * @return {Object} Object with boolean hasZ and hasM keys.n */nfunction getHasZM(geometry) {n var layout = geometry.getLayout();n return {n hasZ: (layout === GeometryLayout.XYZ ||n layout === GeometryLayout.XYZM),n hasM: (layout === GeometryLayout.XYM ||n layout === GeometryLayout.XYZM)n };n}n/**n * @param {import("../geom/LineString.js").default} lineString Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {EsriJSONPolyline} EsriJSON geometry.n */nfunction writeLineStringGeometry(lineString, opt_options) {n var hasZM = getHasZM(lineString);n return {n hasZ: hasZM.hasZ,n hasM: hasZM.hasM,n paths: [n /** @type {Array<EsriJSONPosition>} */ (lineString.getCoordinates())n ]n };n}n/**n * @param {import("../geom/Polygon.js").default} polygon Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {EsriJSONPolygon} EsriJSON geometry.n */nfunction writePolygonGeometry(polygon, opt_options) {n // Esri geometries use the left-hand rulen var hasZM = getHasZM(polygon);n return {n hasZ: hasZM.hasZ,n hasM: hasZM.hasM,n rings: /** @type {Array<Array<EsriJSONPosition>>} */ (polygon.getCoordinates(false))n };n}n/**n * @param {import("../geom/MultiLineString.js").default} multiLineString Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {EsriJSONPolyline} EsriJSON geometry.n */nfunction writeMultiLineStringGeometry(multiLineString, opt_options) {n var hasZM = getHasZM(multiLineString);n return {n hasZ: hasZM.hasZ,n hasM: hasZM.hasM,n paths: /** @type {Array<Array<EsriJSONPosition>>} */ (multiLineString.getCoordinates())n };n}n/**n * @param {import("../geom/MultiPoint.js").default} multiPoint Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {EsriJSONMultipoint} EsriJSON geometry.n */nfunction writeMultiPointGeometry(multiPoint, opt_options) {n var hasZM = getHasZM(multiPoint);n return {n hasZ: hasZM.hasZ,n hasM: hasZM.hasM,n points: /** @type {Array<EsriJSONPosition>} */ (multiPoint.getCoordinates())n };n}n/**n * @param {import("../geom/MultiPolygon.js").default} geometry Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {EsriJSONPolygon} EsriJSON geometry.n */nfunction writeMultiPolygonGeometry(geometry, opt_options) {n var hasZM = getHasZM(geometry);n var coordinates = geometry.getCoordinates(false);n var output = [];n for (var i = 0; i < coordinates.length; i++) {n for (var x = coordinates.length - 1; x >= 0; x–) {n output.push(coordinates[x]);n }n }n return {n hasZ: hasZM.hasZ,n hasM: hasZM.hasM,n rings: /** @type {Array<Array<EsriJSONPosition>>} */ (output)n };n}n/**n * @param {import("../geom/Geometry.js").default} geometry Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {EsriJSONGeometry} EsriJSON geometry.n */nfunction writeGeometry(geometry, opt_options) {n var geometryWriter = GEOMETRY_WRITERS;n return geometryWriter(transformGeometryWithOptions(geometry, true, opt_options), opt_options);n}nexport default EsriJSON;n//# sourceMappingURL=EsriJSON.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/XMLFeaturen */nimport { abstract } from '../util.js';nimport { extend } from '../array.js';nimport FeatureFormat from '../format/Feature.js';nimport FormatType from '../format/FormatType.js';nimport { isDocument, parse } from '../xml.js';n/**n * @classdescn * Abstract base class; normally only used for creating subclasses and notn * instantiated in apps.n * Base class for XML feature formats.n *n * @abstractn */nvar XMLFeature = /** @class */ (function (_super) {n __extends(XMLFeature, _super);n function XMLFeature() {n var _this = _super.call(this) || this;n /**n * @type {XMLSerializer}n * @privaten */n this.xmlSerializer = new XMLSerializer();n return _this;n }n /**n * @inheritDocn */n XMLFeature.prototype.getType = function () {n return FormatType.XML;n };n /**n * Read a single feature.n *n * @param {Document|Node|Object|string} source Source.n * @param {import("./Feature.js").ReadOptions=} opt_options Read options.n * @return {import("../Feature.js").default} Feature.n * @apin */n XMLFeature.prototype.readFeature = function (source, opt_options) {n if (!source) {n return null;n }n else if (typeof source === 'string') {n var doc = parse(source);n return this.readFeatureFromDocument(doc, opt_options);n }n else if (isDocument(source)) {n return this.readFeatureFromDocument(/** @type {Document} */ (source), opt_options);n }n else {n return this.readFeatureFromNode(/** @type {Node} */ (source), opt_options);n }n };n /**n * @param {Document} doc Document.n * @param {import("./Feature.js").ReadOptions=} opt_options Options.n * @return {import("../Feature.js").default} Feature.n */n XMLFeature.prototype.readFeatureFromDocument = function (doc, opt_options) {n var features = this.readFeaturesFromDocument(doc, opt_options);n if (features.length > 0) {n return features;n }n else {n return null;n }n };n /**n * @param {Node} node Node.n * @param {import("./Feature.js").ReadOptions=} opt_options Options.n * @return {import("../Feature.js").default} Feature.n */n XMLFeature.prototype.readFeatureFromNode = function (node, opt_options) {n return null; // not implementedn };n /**n * Read all features from a feature collection.n *n * @param {Document|Node|Object|string} source Source.n * @param {import("./Feature.js").ReadOptions=} opt_options Options.n * @return {Array<import("../Feature.js").default>} Features.n * @apin */n XMLFeature.prototype.readFeatures = function (source, opt_options) {n if (!source) {n return [];n }n else if (typeof source === 'string') {n var doc = parse(source);n return this.readFeaturesFromDocument(doc, opt_options);n }n else if (isDocument(source)) {n return this.readFeaturesFromDocument(n /** @type {Document} */ (source), opt_options);n }n else {n return this.readFeaturesFromNode(/** @type {Node} */ (source), opt_options);n }n };n /**n * @param {Document} doc Document.n * @param {import("./Feature.js").ReadOptions=} opt_options Options.n * @protectedn * @return {Array<import("../Feature.js").default>} Features.n */n XMLFeature.prototype.readFeaturesFromDocument = function (doc, opt_options) {n /** @type {Array<import("../Feature.js").default>} */n var features = [];n for (var n = /** @type {Node} */ (doc.firstChild); n; n = n.nextSibling) {n if (n.nodeType == Node.ELEMENT_NODE) {n extend(features, this.readFeaturesFromNode(n, opt_options));n }n }n return features;n };n /**n * @abstractn * @param {Node} node Node.n * @param {import("./Feature.js").ReadOptions=} opt_options Options.n * @protectedn * @return {Array<import("../Feature.js").default>} Features.n */n XMLFeature.prototype.readFeaturesFromNode = function (node, opt_options) {n return abstract();n };n /**n * @inheritDocn */n XMLFeature.prototype.readGeometry = function (source, opt_options) {n if (!source) {n return null;n }n else if (typeof source === 'string') {n var doc = parse(source);n return this.readGeometryFromDocument(doc, opt_options);n }n else if (isDocument(source)) {n return this.readGeometryFromDocument(n /** @type {Document} */ (source), opt_options);n }n else {n return this.readGeometryFromNode(/** @type {Node} */ (source), opt_options);n }n };n /**n * @param {Document} doc Document.n * @param {import("./Feature.js").ReadOptions=} opt_options Options.n * @protectedn * @return {import("../geom/Geometry.js").default} Geometry.n */n XMLFeature.prototype.readGeometryFromDocument = function (doc, opt_options) {n return null; // not implementedn };n /**n * @param {Node} node Node.n * @param {import("./Feature.js").ReadOptions=} opt_options Options.n * @protectedn * @return {import("../geom/Geometry.js").default} Geometry.n */n XMLFeature.prototype.readGeometryFromNode = function (node, opt_options) {n return null; // not implementedn };n /**n * Read the projection from the source.n *n * @param {Document|Node|Object|string} source Source.n * @return {import("../proj/Projection.js").default} Projection.n * @apin */n XMLFeature.prototype.readProjection = function (source) {n if (!source) {n return null;n }n else if (typeof source === 'string') {n var doc = parse(source);n return this.readProjectionFromDocument(doc);n }n else if (isDocument(source)) {n return this.readProjectionFromDocument(/** @type {Document} */ (source));n }n else {n return this.readProjectionFromNode(/** @type {Node} */ (source));n }n };n /**n * @param {Document} doc Document.n * @protectedn * @return {import("../proj/Projection.js").default} Projection.n */n XMLFeature.prototype.readProjectionFromDocument = function (doc) {n return this.dataProjection;n };n /**n * @param {Node} node Node.n * @protectedn * @return {import("../proj/Projection.js").default} Projection.n */n XMLFeature.prototype.readProjectionFromNode = function (node) {n return this.dataProjection;n };n /**n * @inheritDocn */n XMLFeature.prototype.writeFeature = function (feature, opt_options) {n var node = this.writeFeatureNode(feature, opt_options);n return this.xmlSerializer_.serializeToString(node);n };n /**n * @param {import("../Feature.js").default} feature Feature.n * @param {import("./Feature.js").WriteOptions=} opt_options Options.n * @protectedn * @return {Node} Node.n */n XMLFeature.prototype.writeFeatureNode = function (feature, opt_options) {n return null; // not implementedn };n /**n * Encode an array of features as string.n *n * @param {Array<import("../Feature.js").default>} features Features.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {string} Result.n * @apin */n XMLFeature.prototype.writeFeatures = function (features, opt_options) {n var node = this.writeFeaturesNode(features, opt_options);n return this.xmlSerializer_.serializeToString(node);n };n /**n * @param {Array<import("../Feature.js").default>} features Features.n * @param {import("./Feature.js").WriteOptions=} opt_options Options.n * @return {Node} Node.n */n XMLFeature.prototype.writeFeaturesNode = function (features, opt_options) {n return null; // not implementedn };n /**n * @inheritDocn */n XMLFeature.prototype.writeGeometry = function (geometry, opt_options) {n var node = this.writeGeometryNode(geometry, opt_options);n return this.xmlSerializer_.serializeToString(node);n };n /**n * @param {import("../geom/Geometry.js").default} geometry Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Options.n * @return {Node} Node.n */n XMLFeature.prototype.writeGeometryNode = function (geometry, opt_options) {n return null; // not implementedn };n return XMLFeature;n}(FeatureFormat));nexport default XMLFeature;n//# sourceMappingURL=XMLFeature.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/GMLBasen */n// FIXME Envelopes should not be treated as geometries! readEnvelope_ is partn// of GEOMETRY_PARSERS_ and methods using GEOMETRY_PARSERS_ do not expectn// envelopes/extents, only geometries!nimport { extend } from '../array.js';nimport Feature from '../Feature.js';nimport { transformGeometryWithOptions, transformExtentWithOptions } from './Feature.js';nimport XMLFeature from './XMLFeature.js';nimport GeometryLayout from '../geom/GeometryLayout.js';nimport LineString from '../geom/LineString.js';nimport LinearRing from '../geom/LinearRing.js';nimport MultiLineString from '../geom/MultiLineString.js';nimport MultiPoint from '../geom/MultiPoint.js';nimport MultiPolygon from '../geom/MultiPolygon.js';nimport Point from '../geom/Point.js';nimport Polygon from '../geom/Polygon.js';nimport { assign } from '../obj.js';nimport { get as getProjection } from '../proj.js';nimport { getAllTextContent, getAttributeNS, makeArrayPusher, makeReplacer, parseNode, pushParseAndPop } from '../xml.js';n/**n * @constn * @type {string}n */nexport var GMLNS = 'www.opengis.net/gml’;n/**n * A regular expression that matches if a string only contains whitespacen * characters. It will e.g. match `''`, `' '`, `'\n'` etc. The non-breakingn * space (0xa0) is explicitly included as IE doesn't include it in itsn * definition of `\s`.n *n * Information from `goog.string.isEmptyOrWhitespace`: github.com/google/closure-library/blob/e877b1e/closure/goog/string/string.js#L156-L160n *n * @constn * @type {RegExp}n */nvar ONLY_WHITESPACE_RE = /^[\s\xa0]*$/;n/**n * @typedef {Object} Optionsn * @property {Object<string, string>|string} [featureNS] Featuren * namespace. If not defined will be derived from GML. If multiplen * feature types have been configured which come from different featuren * namespaces, this will be an object with the keys being the prefixes usedn * in the entries of featureType array. The values of the object will be then * feature namespaces themselves. So for instance there might be a featureTypen * item `topp:states` in the `featureType` array and then there will be a keyn * `topp` in the featureNS object with value `www.openplans.org/topp`.n * @property {Array<string>|string} [featureType] Feature type(s) to parse.n * If multiple feature types need to be configuredn * which come from different feature namespaces, `featureNS` will be an objectn * with the keys being the prefixes used in the entries of featureType array.n * The values of the object will be the feature namespaces themselves.n * So for instance there might be a featureType item `topp:states` and thenn * there will be a key named `topp` in the featureNS object with valuen * `www.openplans.org/topp`.n * @property {string} srsName srsName to use when writing geometries.n * @property {boolean} [surface=false] Write gml:Surface instead of gml:Polygonn * elements. This also affects the elements in multi-part geometries.n * @property {boolean} [curve=false] Write gml:Curve instead of gml:LineStringn * elements. This also affects the elements in multi-part geometries.n * @property {boolean} [multiCurve=true] Write gml:MultiCurve instead of gml:MultiLineString.n * Since the latter is deprecated in GML 3.n * @property {boolean} [multiSurface=true] Write gml:multiSurface instead ofn * gml:MultiPolygon. Since the latter is deprecated in GML 3.n * @property {string} [schemaLocation] Optional schemaLocation to use whenn * writing out the GML, this will override the default provided.n * @property {boolean} [hasZ=false] If coordinates have a Z value.n */n/**n * @classdescn * Abstract base class; normally only used for creating subclasses and notn * instantiated in apps.n * Feature base format for reading and writing data in the GML format.n * This class cannot be instantiated, it contains only base content thatn * is shared with versioned format classes GML2 and GML3.n *n * @abstractn */nvar GMLBase = /** @class */ (function (_super) {n __extends(GMLBase, _super);n /**n * @param {Options=} opt_options Optional configuration object.n */n function GMLBase(opt_options) {n var _this = _super.call(this) || this;n var options = /** @type {Options} */ (opt_options ? opt_options : {});n /**n * @protectedn * @type {Array<string>|string|undefined}n */n _this.featureType = options.featureType;n /**n * @protectedn * @type {Object<string, string>|string|undefined}n */n _this.featureNS = options.featureNS;n /**n * @protectedn * @type {string}n */n _this.srsName = options.srsName;n /**n * @protectedn * @type {string}n */n _this.schemaLocation = '';n /**n * @type {Object<string, Object<string, Object>>}n */n _this.FEATURE_COLLECTION_PARSERS = {};n _this.FEATURE_COLLECTION_PARSERS = {n 'featureMember': makeArrayPusher(_this.readFeaturesInternal),n 'featureMembers': makeReplacer(_this.readFeaturesInternal)n };n return _this;n }n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Array<Feature> | undefined} Features.n */n GMLBase.prototype.readFeaturesInternal = function (node, objectStack) {n var localName = node.localName;n var features = null;n if (localName == 'FeatureCollection') {n features = pushParseAndPop([], this.FEATURE_COLLECTION_PARSERS, node, objectStack, this);n }n else if (localName == 'featureMembers' || localName == 'featureMember') {n var context = objectStack;n var featureType = context;n var featureNS = context;n var prefix = 'p';n var defaultPrefix = 'p0';n if (!featureType && node.childNodes) {n featureType = [], featureNS = {};n for (var i = 0, ii = node.childNodes.length; i < ii; ++i) {n var child = node.childNodes;n if (child.nodeType === 1) {n var ft = child.nodeName.split(':').pop();n if (featureType.indexOf(ft) === -1) {n var key = '';n var count = 0;n var uri = child.namespaceURI;n for (var candidate in featureNS) {n if (featureNS === uri) {n key = candidate;n break;n }n ++count;n }n if (!key) {n key = prefix + count;n featureNS = uri;n }n featureType.push(key + ':' + ft);n }n }n }n if (localName != 'featureMember') {n // recheck featureType for each featureMembern context = featureType;n context = featureNS;n }n }n if (typeof featureNS === 'string') {n var ns = featureNS;n featureNS = {};n featureNS = ns;n }n /** @type {Object<string, Object<string, import("../xml.js").Parser>>} */n var parsersNS = {};n var featureTypes = Array.isArray(featureType) ? featureType : [featureType];n for (var p in featureNS) {n /** @type {Object<string, import("../xml.js").Parser>} */n var parsers = {};n for (var i = 0, ii = featureTypes.length; i < ii; ++i) {n var featurePrefix = featureTypes.indexOf(':') === -1 ?n defaultPrefix : featureTypes.split(‘:’);n if (featurePrefix === p) {n parsers[featureTypes.split(':').pop()] =n (localName == 'featureMembers') ?n makeArrayPusher(this.readFeatureElement, this) :n makeReplacer(this.readFeatureElement, this);n }n }n parsersNS[featureNS] = parsers;n }n if (localName == 'featureMember') {n features = pushParseAndPop(undefined, parsersNS, node, objectStack);n }n else {n features = pushParseAndPop([], parsersNS, node, objectStack);n }n }n if (features === null) {n features = [];n }n return features;n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {import("../geom/Geometry.js").default|import("../extent.js").Extent|undefined} Geometry.n */n GMLBase.prototype.readGeometryElement = function (node, objectStack) {n var context = /** @type {Object} */ (objectStack);n context = node.firstElementChild.getAttribute('srsName');n context = node.firstElementChild.getAttribute('srsDimension');n var geometry = pushParseAndPop(null, this.GEOMETRY_PARSERS, node, objectStack, this);n if (geometry) {n if (Array.isArray(geometry)) {n return transformExtentWithOptions(/** @type {import("../extent.js").Extent} */ (geometry), context);n }n else {n return transformGeometryWithOptions(/** @type {import("../geom/Geometry.js").default} */ (geometry), false, context);n }n }n else {n return undefined;n }n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @param {boolean} asFeature whether result should be wrapped as a feature.n * @return {Feature|Object} Featuren */n GMLBase.prototype.readFeatureElementInternal = function (node, objectStack, asFeature) {n var geometryName;n var values = {};n for (var n = node.firstElementChild; n; n = n.nextElementSibling) {n var value = void 0;n var localName = n.localName;n // first, check if it is simple attributen if (n.childNodes.length === 0n || (n.childNodes.length === 1 && (n.firstChild.nodeType === 3 || n.firstChild.nodeType === 4))) {n value = getAllTextContent(n, false);n if (ONLY_WHITESPACE_RE.test(value)) {n value = undefined;n }n }n else {n if (asFeature) {n //if feature, try it as a geometryn value = this.readGeometryElement(n, objectStack);n }n if (!value) { //if not a geometry or not a feature, treat it as a complex attributen value = this.readFeatureElementInternal(n, objectStack, false);n }n else if (localName !== 'boundedBy') {n // boundedBy is an extent and must not be considered as a geometryn geometryName = localName;n }n }n if (values) {n if (!(values instanceof Array)) {n values = [values];n }n values.push(value);n }n else {n values = value;n }n var len = n.attributes.length;n if (len > 0) {n values = { content: values };n for (var i = 0; i < len; i++) {n var attName = n.attributes.name;n values[attName] = n.attributes.value;n }n }n }n if (!asFeature) {n return values;n }n else {n var feature = new Feature(values);n if (geometryName) {n feature.setGeometryName(geometryName);n }n var fid = node.getAttribute('fid') ||n getAttributeNS(node, this.namespace, 'id');n if (fid) {n feature.setId(fid);n }n return feature;n }n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Feature} Feature.n */n GMLBase.prototype.readFeatureElement = function (node, objectStack) {n return this.readFeatureElementInternal(node, objectStack, true);n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Point|undefined} Point.n */n GMLBase.prototype.readPoint = function (node, objectStack) {n var flatCoordinates = this.readFlatCoordinatesFromNode_(node, objectStack);n if (flatCoordinates) {n return new Point(flatCoordinates, GeometryLayout.XYZ);n }n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {MultiPoint|undefined} MultiPoint.n */n GMLBase.prototype.readMultiPoint = function (node, objectStack) {n /** @type {Array<Array<number>>} */n var coordinates = pushParseAndPop([], this.MULTIPOINT_PARSERS_, node, objectStack, this);n if (coordinates) {n return new MultiPoint(coordinates);n }n else {n return undefined;n }n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {MultiLineString|undefined} MultiLineString.n */n GMLBase.prototype.readMultiLineString = function (node, objectStack) {n /** @type {Array<LineString>} */n var lineStrings = pushParseAndPop([], this.MULTILINESTRING_PARSERS_, node, objectStack, this);n if (lineStrings) {n return new MultiLineString(lineStrings);n }n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {MultiPolygon|undefined} MultiPolygon.n */n GMLBase.prototype.readMultiPolygon = function (node, objectStack) {n /** @type {Array<Polygon>} */n var polygons = pushParseAndPop([], this.MULTIPOLYGON_PARSERS_, node, objectStack, this);n if (polygons) {n return new MultiPolygon(polygons);n }n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten */n GMLBase.prototype.pointMemberParser_ = function (node, objectStack) {n parseNode(this.POINTMEMBER_PARSERS_, node, objectStack, this);n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten */n GMLBase.prototype.lineStringMemberParser_ = function (node, objectStack) {n parseNode(this.LINESTRINGMEMBER_PARSERS_, node, objectStack, this);n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten */n GMLBase.prototype.polygonMemberParser_ = function (node, objectStack) {n parseNode(this.POLYGONMEMBER_PARSERS_, node, objectStack, this);n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {LineString|undefined} LineString.n */n GMLBase.prototype.readLineString = function (node, objectStack) {n var flatCoordinates = this.readFlatCoordinatesFromNode_(node, objectStack);n if (flatCoordinates) {n var lineString = new LineString(flatCoordinates, GeometryLayout.XYZ);n return lineString;n }n else {n return undefined;n }n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten * @return {Array<number>|undefined} LinearRing flat coordinates.n */n GMLBase.prototype.readFlatLinearRing_ = function (node, objectStack) {n var ring = pushParseAndPop(null, this.GEOMETRY_FLAT_COORDINATES_PARSERS, node, objectStack, this);n if (ring) {n return ring;n }n else {n return undefined;n }n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {LinearRing|undefined} LinearRing.n */n GMLBase.prototype.readLinearRing = function (node, objectStack) {n var flatCoordinates = this.readFlatCoordinatesFromNode_(node, objectStack);n if (flatCoordinates) {n return new LinearRing(flatCoordinates, GeometryLayout.XYZ);n }n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Polygon|undefined} Polygon.n */n GMLBase.prototype.readPolygon = function (node, objectStack) {n /** @type {Array<Array<number>>} */n var flatLinearRings = pushParseAndPop(, this.FLAT_LINEAR_RINGS_PARSERS, node, objectStack, this);n if (flatLinearRings && flatLinearRings) {n var flatCoordinates = flatLinearRings;n var ends = [flatCoordinates.length];n var i = void 0, ii = void 0;n for (i = 1, ii = flatLinearRings.length; i < ii; ++i) {n extend(flatCoordinates, flatLinearRings);n ends.push(flatCoordinates.length);n }n return new Polygon(flatCoordinates, GeometryLayout.XYZ, ends);n }n else {n return undefined;n }n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten * @return {Array<number>} Flat coordinates.n */n GMLBase.prototype.readFlatCoordinatesFromNode_ = function (node, objectStack) {n return pushParseAndPop(null, this.GEOMETRY_FLAT_COORDINATES_PARSERS, node, objectStack, this);n };n /**n * @inheritDocn */n //@ts-ignoren GMLBase.prototype.readGeometryFromNode = function (node, opt_options) {n var geometry = this.readGeometryElement(node, [this.getReadOptions(node, opt_options ? opt_options : {})]);n return geometry ? geometry : null;n };n /**n * @inheritDocn */n GMLBase.prototype.readFeaturesFromNode = function (node, opt_options) {n var options = {n featureType: this.featureType,n featureNS: this.featureNSn };n if (opt_options) {n assign(options, this.getReadOptions(node, opt_options));n }n var features = this.readFeaturesInternal(node, [options]);n return features || [];n };n /**n * @inheritDocn */n GMLBase.prototype.readProjectionFromNode = function (node) {n return getProjection(this.srsName ? this.srsName : node.firstElementChild.getAttribute('srsName'));n };n return GMLBase;n}(XMLFeature));nGMLBase.prototype.namespace = GMLNS;n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @protectedn */nGMLBase.prototype.FLAT_LINEAR_RINGS_PARSERS = {n 'www.opengis.net/gml': {}n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @protectedn */nGMLBase.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = {n 'www.opengis.net/gml': {}n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @protectedn */nGMLBase.prototype.GEOMETRY_PARSERS = {n 'www.opengis.net/gml': {}n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGMLBase.prototype.MULTIPOINT_PARSERS_ = {n 'www.opengis.net/gml': {n 'pointMember': makeArrayPusher(GMLBase.prototype.pointMemberParser_),n 'pointMembers': makeArrayPusher(GMLBase.prototype.pointMemberParser_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGMLBase.prototype.MULTILINESTRING_PARSERS_ = {n 'www.opengis.net/gml': {n 'lineStringMember': makeArrayPusher(GMLBase.prototype.lineStringMemberParser_),n 'lineStringMembers': makeArrayPusher(GMLBase.prototype.lineStringMemberParser_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGMLBase.prototype.MULTIPOLYGON_PARSERS_ = {n 'www.opengis.net/gml': {n 'polygonMember': makeArrayPusher(GMLBase.prototype.polygonMemberParser_),n 'polygonMembers': makeArrayPusher(GMLBase.prototype.polygonMemberParser_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGMLBase.prototype.POINTMEMBER_PARSERS_ = {n 'www.opengis.net/gml': {n 'Point': makeArrayPusher(GMLBase.prototype.readFlatCoordinatesFromNode_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGMLBase.prototype.LINESTRINGMEMBER_PARSERS_ = {n 'www.opengis.net/gml': {n 'LineString': makeArrayPusher(GMLBase.prototype.readLineString)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGMLBase.prototype.POLYGONMEMBER_PARSERS_ = {n 'www.opengis.net/gml': {n 'Polygon': makeArrayPusher(GMLBase.prototype.readPolygon)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @protectedn */nGMLBase.prototype.RING_PARSERS = {n 'www.opengis.net/gml': {n 'LinearRing': makeReplacer(GMLBase.prototype.readFlatLinearRing_)n }n};nexport default GMLBase;n//# sourceMappingURL=GMLBase.js.map”,“/**n * @module ol/format/xsdn */nimport { getAllTextContent, DOCUMENT } from '../xml.js';nimport { padNumber } from '../string.js';n/**n * @param {Node} node Node.n * @return {boolean|undefined} Boolean.n */nexport function readBoolean(node) {n var s = getAllTextContent(node, false);n return readBooleanString(s);n}n/**n * @param {string} string String.n * @return {boolean|undefined} Boolean.n */nexport function readBooleanString(string) {n var m = /^\s*(true|1)|(false|0)\s*$/.exec(string);n if (m) {n return m !== undefined || false;n }n else {n return undefined;n }n}n/**n * @param {Node} node Node.n * @return {number|undefined} DateTime in seconds.n */nexport function readDateTime(node) {n var s = getAllTextContent(node, false);n var dateTime = Date.parse(s);n return isNaN(dateTime) ? undefined : dateTime / 1000;n}n/**n * @param {Node} node Node.n * @return {number|undefined} Decimal.n */nexport function readDecimal(node) {n var s = getAllTextContent(node, false);n return readDecimalString(s);n}n/**n * @param {string} string String.n * @return {number|undefined} Decimal.n */nexport function readDecimalString(string) {n // FIXME check specn var m = /^\s*(?\d*\.?\d+(?:e?\d+)?)\s*$/i.exec(string);n if (m) {n return parseFloat(m);n }n else {n return undefined;n }n}n/**n * @param {Node} node Node.n * @return {number|undefined} Non negative integer.n */nexport function readNonNegativeInteger(node) {n var s = getAllTextContent(node, false);n return readNonNegativeIntegerString(s);n}n/**n * @param {string} string String.n * @return {number|undefined} Non negative integer.n */nexport function readNonNegativeIntegerString(string) {n var m = /^\s*(\d+)\s*$/.exec(string);n if (m) {n return parseInt(m, 10);n }n else {n return undefined;n }n}n/**n * @param {Node} node Node.n * @return {string|undefined} String.n */nexport function readString(node) {n return getAllTextContent(node, false).trim();n}n/**n * @param {Node} node Node to append a TextNode with the boolean to.n * @param {boolean} bool Boolean.n */nexport function writeBooleanTextNode(node, bool) {n writeStringTextNode(node, (bool) ? '1' : '0');n}n/**n * @param {Node} node Node to append a CDATA Section with the string to.n * @param {string} string String.n */nexport function writeCDATASection(node, string) {n node.appendChild(DOCUMENT.createCDATASection(string));n}n/**n * @param {Node} node Node to append a TextNode with the dateTime to.n * @param {number} dateTime DateTime in seconds.n */nexport function writeDateTimeTextNode(node, dateTime) {n var date = new Date(dateTime * 1000);n var string = date.getUTCFullYear() + '-' +n padNumber(date.getUTCMonth() + 1, 2) + '-' +n padNumber(date.getUTCDate(), 2) + 'T' +n padNumber(date.getUTCHours(), 2) + ':' +n padNumber(date.getUTCMinutes(), 2) + ':' +n padNumber(date.getUTCSeconds(), 2) + 'Z';n node.appendChild(DOCUMENT.createTextNode(string));n}n/**n * @param {Node} node Node to append a TextNode with the decimal to.n * @param {number} decimal Decimal.n */nexport function writeDecimalTextNode(node, decimal) {n var string = decimal.toPrecision();n node.appendChild(DOCUMENT.createTextNode(string));n}n/**n * @param {Node} node Node to append a TextNode with the decimal to.n * @param {number} nonNegativeInteger Non negative integer.n */nexport function writeNonNegativeIntegerTextNode(node, nonNegativeInteger) {n var string = nonNegativeInteger.toString();n node.appendChild(DOCUMENT.createTextNode(string));n}n/**n * @param {Node} node Node to append a TextNode with the string to.n * @param {string} string String.n */nexport function writeStringTextNode(node, string) {n node.appendChild(DOCUMENT.createTextNode(string));n}n//# sourceMappingURL=xsd.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/GML3n */nimport { extend } from '../array.js';nimport { createOrUpdate } from '../extent.js';nimport { transformExtentWithOptions, transformGeometryWithOptions } from './Feature.js';nimport GMLBase, { GMLNS } from './GMLBase.js';nimport { readNonNegativeIntegerString, writeStringTextNode } from './xsd.js';nimport GeometryLayout from '../geom/GeometryLayout.js';nimport LineString from '../geom/LineString.js';nimport MultiLineString from '../geom/MultiLineString.js';nimport MultiPolygon from '../geom/MultiPolygon.js';nimport Polygon from '../geom/Polygon.js';nimport { assign } from '../obj.js';nimport { get as getProjection } from '../proj.js';nimport { createElementNS, getAllTextContent, makeArrayPusher, makeChildAppender, makeReplacer, makeSimpleNodeFactory, OBJECT_PROPERTY_NODE_FACTORY, parseNode, pushParseAndPop, pushSerializeAndPop, XML_SCHEMA_INSTANCE_URI } from '../xml.js';n/**n * @constn * @type {string}n * @privaten */nvar schemaLocation = GMLNS +n ' schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/' +n '1.0.0/gmlsf.xsd';n/**n * @constn * @type {Object<string, string>}n */nvar MULTIGEOMETRY_TO_MEMBER_NODENAME = {n 'MultiLineString': 'lineStringMember',n 'MultiCurve': 'curveMember',n 'MultiPolygon': 'polygonMember',n 'MultiSurface': 'surfaceMember'n};n/**n * @classdescn * Feature format for reading and writing data in the GML formatn * version 3.1.1.n * Currently only supports GML 3.1.1 Simple Features profile.n *n * @apin */nvar GML3 = /** @class */ (function (_super) {n __extends(GML3, _super);n /**n * @param {import("./GMLBase.js").Options=} opt_options Optional configuration object.n */n function GML3(opt_options) {n var _this = this;n var options = /** @type {import("./GMLBase.js").Options} */ (opt_options ? opt_options : {});n _this = _super.call(this, options) || this;n /**n * @privaten * @type {boolean}n */n this.surface = options.surface !== undefined ? options.surface : false;n /**n * @privaten * @type {boolean}n */n this.curve = options.curve !== undefined ? options.curve : false;n /**n * @privaten * @type {boolean}n */n this.multiCurve = options.multiCurve !== undefined ?n options.multiCurve : true;n /**n * @privaten * @type {boolean}n */n this.multiSurface = options.multiSurface !== undefined ?n options.multiSurface : true;n /**n * @inheritDocn */n _this.schemaLocation = options.schemaLocation ?n options.schemaLocation : schemaLocation;n /**n * @privaten * @type {boolean}n */n _this.hasZ = options.hasZ !== undefined ?n options.hasZ : false;n return _this;n }n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten * @return {MultiLineString|undefined} MultiLineString.n */n GML3.prototype.readMultiCurve_ = function (node, objectStack) {n /** @type {Array<LineString>} */n var lineStrings = pushParseAndPop([], this.MULTICURVE_PARSERS_, node, objectStack, this);n if (lineStrings) {n var multiLineString = new MultiLineString(lineStrings);n return multiLineString;n }n else {n return undefined;n }n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten * @return {MultiPolygon|undefined} MultiPolygon.n */n GML3.prototype.readMultiSurface_ = function (node, objectStack) {n /** @type {Array<Polygon>} */n var polygons = pushParseAndPop([], this.MULTISURFACE_PARSERS_, node, objectStack, this);n if (polygons) {n return new MultiPolygon(polygons);n }n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten */n GML3.prototype.curveMemberParser_ = function (node, objectStack) {n parseNode(this.CURVEMEMBER_PARSERS_, node, objectStack, this);n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten */n GML3.prototype.surfaceMemberParser_ = function (node, objectStack) {n parseNode(this.SURFACEMEMBER_PARSERS_, node, objectStack, this);n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten * @return {Array<(Array<number>)>|undefined} flat coordinates.n */n GML3.prototype.readPatch_ = function (node, objectStack) {n return pushParseAndPop(, this.PATCHES_PARSERS_, node, objectStack, this);n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten * @return {Array<number>|undefined} flat coordinates.n */n GML3.prototype.readSegment_ = function (node, objectStack) {n return pushParseAndPop(, this.SEGMENTS_PARSERS_, node, objectStack, this);n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten * @return {Array<(Array<number>)>|undefined} flat coordinates.n */n GML3.prototype.readPolygonPatch_ = function (node, objectStack) {n return pushParseAndPop(, this.FLAT_LINEAR_RINGS_PARSERS, node, objectStack, this);n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten * @return {Array<number>|undefined} flat coordinates.n */n GML3.prototype.readLineStringSegment_ = function (node, objectStack) {n return pushParseAndPop(, this.GEOMETRY_FLAT_COORDINATES_PARSERS, node, objectStack, this);n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten */n GML3.prototype.interiorParser_ = function (node, objectStack) {n /** @type {Array<number>|undefined} */n var flatLinearRing = pushParseAndPop(undefined, this.RING_PARSERS, node, objectStack, this);n if (flatLinearRing) {n var flatLinearRings = /** @type {Array<Array<number>>} */ (objectStack[objectStack.length - 1]);n flatLinearRings.push(flatLinearRing);n }n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten */n GML3.prototype.exteriorParser_ = function (node, objectStack) {n /** @type {Array<number>|undefined} */n var flatLinearRing = pushParseAndPop(undefined, this.RING_PARSERS, node, objectStack, this);n if (flatLinearRing) {n var flatLinearRings = /** @type {Array<Array<number>>} */ (objectStack[objectStack.length - 1]);n flatLinearRings = flatLinearRing;n }n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten * @return {Polygon|undefined} Polygon.n */n GML3.prototype.readSurface_ = function (node, objectStack) {n /** @type {Array<Array<number>>} */n var flatLinearRings = pushParseAndPop(, this.SURFACE_PARSERS_, node, objectStack, this);n if (flatLinearRings && flatLinearRings) {n var flatCoordinates = flatLinearRings;n var ends = [flatCoordinates.length];n var i = void 0, ii = void 0;n for (i = 1, ii = flatLinearRings.length; i < ii; ++i) {n extend(flatCoordinates, flatLinearRings);n ends.push(flatCoordinates.length);n }n return new Polygon(flatCoordinates, GeometryLayout.XYZ, ends);n }n else {n return undefined;n }n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten * @return {LineString|undefined} LineString.n */n GML3.prototype.readCurve_ = function (node, objectStack) {n /** @type {Array<number>} */n var flatCoordinates = pushParseAndPop(, this.CURVE_PARSERS_, node, objectStack, this);n if (flatCoordinates) {n var lineString = new LineString(flatCoordinates, GeometryLayout.XYZ);n return lineString;n }n else {n return undefined;n }n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten * @return {import("../extent.js").Extent|undefined} Envelope.n */n GML3.prototype.readEnvelope_ = function (node, objectStack) {n /** @type {Array<number>} */n var flatCoordinates = pushParseAndPop(, this.ENVELOPE_PARSERS_, node, objectStack, this);n return createOrUpdate(flatCoordinates[0], flatCoordinates[1], flatCoordinates[0], flatCoordinates[1]);n };n /**n * @param {Node} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten * @return {Array<number>|undefined} Flat coordinates.n */n GML3.prototype.readFlatPos_ = function (node, objectStack) {n var s = getAllTextContent(node, false);n var re = /^\s*(?\d*\.?\d+(?:[+\-]?\d+)?)\s*/;n /** @type {Array<number>} */n var flatCoordinates = [];n var m;n while ((m = re.exec(s))) {n flatCoordinates.push(parseFloat(m));n s = s.substr(m.length);n }n if (s !== '') {n return undefined;n }n var context = objectStack;n var containerSrs = context;n var axisOrientation = 'enu';n if (containerSrs) {n var proj = getProjection(containerSrs);n axisOrientation = proj.getAxisOrientation();n }n if (axisOrientation === 'neu') {n var i = void 0, ii = void 0;n for (i = 0, ii = flatCoordinates.length; i < ii; i += 3) {n var y = flatCoordinates;n var x = flatCoordinates[i + 1];n flatCoordinates = x;n flatCoordinates[i + 1] = y;n }n }n var len = flatCoordinates.length;n if (len == 2) {n flatCoordinates.push(0);n }n if (len === 0) {n return undefined;n }n return flatCoordinates;n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten * @return {Array<number>|undefined} Flat coordinates.n */n GML3.prototype.readFlatPosList_ = function (node, objectStack) {n var s = getAllTextContent(node, false).replace(/^\s*|\s*$/g, '');n var context = objectStack;n var containerSrs = context;n var contextDimension = context;n var axisOrientation = 'enu';n if (containerSrs) {n var proj = getProjection(containerSrs);n axisOrientation = proj.getAxisOrientation();n }n var coords = s.split(/\s+/);n // The "dimension" attribute is from the GML 3.0.1 spec.n var dim = 2;n if (node.getAttribute('srsDimension')) {n dim = readNonNegativeIntegerString(node.getAttribute('srsDimension'));n }n else if (node.getAttribute('dimension')) {n dim = readNonNegativeIntegerString(node.getAttribute('dimension'));n }n else if ( /** @type {Element} */(node.parentNode).getAttribute('srsDimension')) {n dim = readNonNegativeIntegerString(n /** @type {Element} */ (node.parentNode).getAttribute('srsDimension'));n }n else if (contextDimension) {n dim = readNonNegativeIntegerString(contextDimension);n }n var x, y, z;n var flatCoordinates = [];n for (var i = 0, ii = coords.length; i < ii; i += dim) {n x = parseFloat(coords);n y = parseFloat(coords[i + 1]);n z = (dim === 3) ? parseFloat(coords[i + 2]) : 0;n if (axisOrientation.substr(0, 2) === 'en') {n flatCoordinates.push(x, y, z);n }n else {n flatCoordinates.push(y, x, z);n }n }n return flatCoordinates;n };n /**n * @param {Element} node Node.n * @param {import("../geom/Point.js").default} value Point geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML3.prototype.writePos_ = function (node, value, objectStack) {n var context = objectStack[objectStack.length - 1];n var hasZ = context;n var srsDimension = hasZ ? '3' : '2';n node.setAttribute('srsDimension', srsDimension);n var srsName = context;n var axisOrientation = 'enu';n if (srsName) {n axisOrientation = getProjection(srsName).getAxisOrientation();n }n var point = value.getCoordinates();n var coords;n // only 2d for simple features profilen if (axisOrientation.substr(0, 2) === 'en') {n coords = (point + ' ' + point);n }n else {n coords = (point + ' ' + point);n }n if (hasZ) {n // For newly created points, Z can be undefined.n var z = point || 0;n coords += ' ' + z;n }n writeStringTextNode(node, coords);n };n /**n * @param {Array<number>} point Point geometry.n * @param {string=} opt_srsName Optional srsNamen * @param {boolean=} opt_hasZ whether the geometry has a Z coordinate (is 3D) or not.n * @return {string} The coords string.n * @privaten */n GML3.prototype.getCoords_ = function (point, opt_srsName, opt_hasZ) {n var axisOrientation = 'enu';n if (opt_srsName) {n axisOrientation = getProjection(opt_srsName).getAxisOrientation();n }n var coords = ((axisOrientation.substr(0, 2) === 'en') ?n point + ' ' + point :n point + ' ' + point);n if (opt_hasZ) {n // For newly created points, Z can be undefined.n var z = point || 0;n coords += ' ' + z;n }n return coords;n };n /**n * @param {Element} node Node.n * @param {LineString|import("../geom/LinearRing.js").default} value Geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML3.prototype.writePosList_ = function (node, value, objectStack) {n var context = objectStack[objectStack.length - 1];n var hasZ = context;n var srsDimension = hasZ ? '3' : '2';n node.setAttribute('srsDimension', srsDimension);n var srsName = context;n // only 2d for simple features profilen var points = value.getCoordinates();n var len = points.length;n var parts = new Array(len);n var point;n for (var i = 0; i < len; ++i) {n point = points;n parts = this.getCoords_(point, srsName, hasZ);n }n writeStringTextNode(node, parts.join(' '));n };n /**n * @param {Element} node Node.n * @param {import("../geom/Point.js").default} geometry Point geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML3.prototype.writePoint_ = function (node, geometry, objectStack) {n var context = objectStack[objectStack.length - 1];n var srsName = context;n if (srsName) {n node.setAttribute('srsName', srsName);n }n var pos = createElementNS(node.namespaceURI, 'pos');n node.appendChild(pos);n this.writePos_(pos, geometry, objectStack);n };n /**n * @param {Element} node Node.n * @param {import("../extent.js").Extent} extent Extent.n * @param {Array<*>} objectStack Node stack.n */n GML3.prototype.writeEnvelope = function (node, extent, objectStack) {n var context = objectStack[objectStack.length - 1];n var srsName = context;n if (srsName) {n node.setAttribute('srsName', srsName);n }n var keys = ['lowerCorner', 'upperCorner'];n var values = [extent + ' ' + extent, extent + ' ' + extent];n pushSerializeAndPop(/** @type {import("../xml.js").NodeStackItem} */ ({ node: node }), this.ENVELOPE_SERIALIZERS_, OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, keys, this);n };n /**n * @param {Element} node Node.n * @param {import("../geom/LinearRing.js").default} geometry LinearRing geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML3.prototype.writeLinearRing_ = function (node, geometry, objectStack) {n var context = objectStack[objectStack.length - 1];n var srsName = context;n if (srsName) {n node.setAttribute('srsName', srsName);n }n var posList = createElementNS(node.namespaceURI, 'posList');n node.appendChild(posList);n this.writePosList_(posList, geometry, objectStack);n };n /**n * @param {*} value Value.n * @param {Array<*>} objectStack Object stack.n * @param {string=} opt_nodeName Node name.n * @return {Node} Node.n * @privaten */n GML3.prototype.RING_NODE_FACTORY_ = function (value, objectStack, opt_nodeName) {n var context = objectStack[objectStack.length - 1];n var parentNode = context.node;n var exteriorWritten = context;n if (exteriorWritten === undefined) {n context = true;n }n return createElementNS(parentNode.namespaceURI, exteriorWritten !== undefined ? 'interior' : 'exterior');n };n /**n * @param {Element} node Node.n * @param {Polygon} geometry Polygon geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML3.prototype.writeSurfaceOrPolygon_ = function (node, geometry, objectStack) {n var context = objectStack[objectStack.length - 1];n var hasZ = context;n var srsName = context;n if (node.nodeName !== 'PolygonPatch' && srsName) {n node.setAttribute('srsName', srsName);n }n if (node.nodeName === 'Polygon' || node.nodeName === 'PolygonPatch') {n var rings = geometry.getLinearRings();n pushSerializeAndPop({ node: node, hasZ: hasZ, srsName: srsName }, this.RING_SERIALIZERS_, this.RING_NODE_FACTORY_, rings, objectStack, undefined, this);n }n else if (node.nodeName === 'Surface') {n var patches = createElementNS(node.namespaceURI, 'patches');n node.appendChild(patches);n this.writeSurfacePatches_(patches, geometry, objectStack);n }n };n /**n * @param {Element} node Node.n * @param {LineString} geometry LineString geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML3.prototype.writeCurveOrLineString_ = function (node, geometry, objectStack) {n var context = objectStack[objectStack.length - 1];n var srsName = context;n if (node.nodeName !== 'LineStringSegment' && srsName) {n node.setAttribute('srsName', srsName);n }n if (node.nodeName === 'LineString' ||n node.nodeName === 'LineStringSegment') {n var posList = createElementNS(node.namespaceURI, 'posList');n node.appendChild(posList);n this.writePosList_(posList, geometry, objectStack);n }n else if (node.nodeName === 'Curve') {n var segments = createElementNS(node.namespaceURI, 'segments');n node.appendChild(segments);n this.writeCurveSegments_(segments, geometry, objectStack);n }n };n /**n * @param {Element} node Node.n * @param {MultiPolygon} geometry MultiPolygon geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML3.prototype.writeMultiSurfaceOrPolygon_ = function (node, geometry, objectStack) {n var context = objectStack[objectStack.length - 1];n var hasZ = context;n var srsName = context;n var surface = context;n if (srsName) {n node.setAttribute('srsName', srsName);n }n var polygons = geometry.getPolygons();n pushSerializeAndPop({ node: node, hasZ: hasZ, srsName: srsName, surface: surface }, this.SURFACEORPOLYGONMEMBER_SERIALIZERS_, this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, polygons, objectStack, undefined, this);n };n /**n * @param {Element} node Node.n * @param {import("../geom/MultiPoint.js").default} geometry MultiPoint geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML3.prototype.writeMultiPoint_ = function (node, geometry, objectStack) {n var context = objectStack[objectStack.length - 1];n var srsName = context;n var hasZ = context;n if (srsName) {n node.setAttribute('srsName', srsName);n }n var points = geometry.getPoints();n pushSerializeAndPop({ node: node, hasZ: hasZ, srsName: srsName }, this.POINTMEMBER_SERIALIZERS_, makeSimpleNodeFactory('pointMember'), points, objectStack, undefined, this);n };n /**n * @param {Element} node Node.n * @param {MultiLineString} geometry MultiLineString geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML3.prototype.writeMultiCurveOrLineString_ = function (node, geometry, objectStack) {n var context = objectStack[objectStack.length - 1];n var hasZ = context;n var srsName = context;n var curve = context;n if (srsName) {n node.setAttribute('srsName', srsName);n }n var lines = geometry.getLineStrings();n pushSerializeAndPop({ node: node, hasZ: hasZ, srsName: srsName, curve: curve }, this.LINESTRINGORCURVEMEMBER_SERIALIZERS_, this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, lines, objectStack, undefined, this);n };n /**n * @param {Node} node Node.n * @param {import("../geom/LinearRing.js").default} ring LinearRing geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML3.prototype.writeRing_ = function (node, ring, objectStack) {n var linearRing = createElementNS(node.namespaceURI, 'LinearRing');n node.appendChild(linearRing);n this.writeLinearRing_(linearRing, ring, objectStack);n };n /**n * @param {Node} node Node.n * @param {Polygon} polygon Polygon geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML3.prototype.writeSurfaceOrPolygonMember_ = function (node, polygon, objectStack) {n var child = this.GEOMETRY_NODE_FACTORY_(polygon, objectStack);n if (child) {n node.appendChild(child);n this.writeSurfaceOrPolygon_(child, polygon, objectStack);n }n };n /**n * @param {Node} node Node.n * @param {import("../geom/Point.js").default} point Point geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML3.prototype.writePointMember_ = function (node, point, objectStack) {n var child = createElementNS(node.namespaceURI, 'Point');n node.appendChild(child);n this.writePoint_(child, point, objectStack);n };n /**n * @param {Node} node Node.n * @param {LineString} line LineString geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML3.prototype.writeLineStringOrCurveMember_ = function (node, line, objectStack) {n var child = this.GEOMETRY_NODE_FACTORY_(line, objectStack);n if (child) {n node.appendChild(child);n this.writeCurveOrLineString_(child, line, objectStack);n }n };n /**n * @param {Node} node Node.n * @param {Polygon} polygon Polygon geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML3.prototype.writeSurfacePatches_ = function (node, polygon, objectStack) {n var child = createElementNS(node.namespaceURI, 'PolygonPatch');n node.appendChild(child);n this.writeSurfaceOrPolygon_(child, polygon, objectStack);n };n /**n * @param {Node} node Node.n * @param {LineString} line LineString geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML3.prototype.writeCurveSegments_ = function (node, line, objectStack) {n var child = createElementNS(node.namespaceURI, 'LineStringSegment');n node.appendChild(child);n this.writeCurveOrLineString_(child, line, objectStack);n };n /**n * @param {Node} node Node.n * @param {import("../geom/Geometry.js").default|import("../extent.js").Extent} geometry Geometry.n * @param {Array<*>} objectStack Node stack.n */n GML3.prototype.writeGeometryElement = function (node, geometry, objectStack) {n var context = /** @type {import("./Feature.js").WriteOptions} */ (objectStack[objectStack.length - 1]);n var item = assign({}, context);n item = node;n var value;n if (Array.isArray(geometry)) {n value = transformExtentWithOptions(/** @type {import("../extent.js").Extent} */ (geometry), context);n }n else {n value = transformGeometryWithOptions(/** @type {import("../geom/Geometry.js").default} */ (geometry), true, context);n }n pushSerializeAndPop(/** @type {import("../xml.js").NodeStackItem} */ (item), this.GEOMETRY_SERIALIZERS_, this.GEOMETRY_NODE_FACTORY_, [value], objectStack, undefined, this);n };n /**n * @param {Element} node Node.n * @param {import("../Feature.js").default} feature Feature.n * @param {Array<*>} objectStack Node stack.n */n GML3.prototype.writeFeatureElement = function (node, feature, objectStack) {n var fid = feature.getId();n if (fid) {n node.setAttribute('fid', /** @type {string} */ (fid));n }n var context = /** @type {Object} */ (objectStack[objectStack.length - 1]);n var featureNS = context;n var geometryName = feature.getGeometryName();n if (!context.serializers) {n context.serializers = {};n context.serializers = {};n }n var properties = feature.getProperties();n var keys = [];n var values = [];n for (var key in properties) {n var value = properties;n if (value !== null) {n keys.push(key);n values.push(value);n if (key == geometryName || typeof /** @type {?} */ (value).getSimplifiedGeometry === 'function') {n if (!(key in context.serializers)) {n context.serializers[key] = makeChildAppender(this.writeGeometryElement, this);n }n }n else {n if (!(key in context.serializers)) {n context.serializers[key] = makeChildAppender(writeStringTextNode);n }n }n }n }n var item = assign({}, context);n item.node = node;n pushSerializeAndPop(/** @type {import("../xml.js").NodeStackItem} */ (item), context.serializers, makeSimpleNodeFactory(undefined, featureNS), values, objectStack, keys);n };n /**n * @param {Node} node Node.n * @param {Array<import("../Feature.js").default>} features Features.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML3.prototype.writeFeatureMembers_ = function (node, features, objectStack) {n var context = /** @type {Object} */ (objectStack[objectStack.length - 1]);n var featureType = context;n var featureNS = context;n /** @type {Object<string, Object<string, import("../xml.js").Serializer>>} */n var serializers = {};n serializers = {};n serializers[featureType] = makeChildAppender(this.writeFeatureElement, this);n var item = assign({}, context);n item.node = node;n pushSerializeAndPop(/** @type {import("../xml.js").NodeStackItem} */ (item), serializers, makeSimpleNodeFactory(featureType, featureNS), features, objectStack);n };n /**n * @constn * @param {*} value Value.n * @param {Array<*>} objectStack Object stack.n * @param {string=} opt_nodeName Node name.n * @return {Node|undefined} Node.n * @privaten */n GML3.prototype.MULTIGEOMETRY_MEMBER_NODE_FACTORY_ = function (value, objectStack, opt_nodeName) {n var parentNode = objectStack[objectStack.length - 1].node;n return createElementNS(this.namespace, MULTIGEOMETRY_TO_MEMBER_NODENAME);n };n /**n * @constn * @param {*} value Value.n * @param {Array<*>} objectStack Object stack.n * @param {string=} opt_nodeName Node name.n * @return {Element|undefined} Node.n * @privaten */n GML3.prototype.GEOMETRY_NODE_FACTORY_ = function (value, objectStack, opt_nodeName) {n var context = objectStack[objectStack.length - 1];n var multiSurface = context;n var surface = context;n var curve = context;n var multiCurve = context;n var nodeName;n if (!Array.isArray(value)) {n nodeName = /** @type {import("../geom/Geometry.js").default} */ (value).getType();n if (nodeName === 'MultiPolygon' && multiSurface === true) {n nodeName = 'MultiSurface';n }n else if (nodeName === 'Polygon' && surface === true) {n nodeName = 'Surface';n }n else if (nodeName === 'LineString' && curve === true) {n nodeName = 'Curve';n }n else if (nodeName === 'MultiLineString' && multiCurve === true) {n nodeName = 'MultiCurve';n }n }n else {n nodeName = 'Envelope';n }n return createElementNS(this.namespace, nodeName);n };n /**n * Encode a geometry in GML 3.1.1 Simple Features.n *n * @param {import("../geom/Geometry.js").default} geometry Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Options.n * @return {Node} Node.n * @overriden * @apin */n GML3.prototype.writeGeometryNode = function (geometry, opt_options) {n opt_options = this.adaptOptions(opt_options);n var geom = createElementNS(this.namespace, 'geom');n var context = { node: geom, hasZ: this.hasZ, srsName: this.srsName,n curve: this.curve_, surface: this.surface_,n multiSurface: this.multiSurface_, multiCurve: this.multiCurve_ };n if (opt_options) {n assign(context, opt_options);n }n this.writeGeometryElement(geom, geometry, [context]);n return geom;n };n /**n * Encode an array of features in the GML 3.1.1 format as an XML node.n *n * @param {Array<import("../Feature.js").default>} features Features.n * @param {import("./Feature.js").WriteOptions=} opt_options Options.n * @return {Element} Node.n * @overriden * @apin */n GML3.prototype.writeFeaturesNode = function (features, opt_options) {n opt_options = this.adaptOptions(opt_options);n var node = createElementNS(this.namespace, 'featureMembers');n node.setAttributeNS(XML_SCHEMA_INSTANCE_URI, 'xsi:schemaLocation', this.schemaLocation);n var context = {n srsName: this.srsName,n hasZ: this.hasZ,n curve: this.curve_,n surface: this.surface_,n multiSurface: this.multiSurface_,n multiCurve: this.multiCurve_,n featureNS: this.featureNS,n featureType: this.featureTypen };n if (opt_options) {n assign(context, opt_options);n }n this.writeFeatureMembers_(node, features, [context]);n return node;n };n return GML3;n}(GMLBase));n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @protectedn */nGML3.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = {n 'www.opengis.net/gml': {n 'pos': makeReplacer(GML3.prototype.readFlatPos_),n 'posList': makeReplacer(GML3.prototype.readFlatPosList_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @protectedn */nGML3.prototype.FLAT_LINEAR_RINGS_PARSERS = {n 'www.opengis.net/gml': {n 'interior': GML3.prototype.interiorParser_,n 'exterior': GML3.prototype.exteriorParser_n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @protectedn */nGML3.prototype.GEOMETRY_PARSERS = {n 'www.opengis.net/gml': {n 'Point': makeReplacer(GMLBase.prototype.readPoint),n 'MultiPoint': makeReplacer(GMLBase.prototype.readMultiPoint),n 'LineString': makeReplacer(GMLBase.prototype.readLineString),n 'MultiLineString': makeReplacer(GMLBase.prototype.readMultiLineString),n 'LinearRing': makeReplacer(GMLBase.prototype.readLinearRing),n 'Polygon': makeReplacer(GMLBase.prototype.readPolygon),n 'MultiPolygon': makeReplacer(GMLBase.prototype.readMultiPolygon),n 'Surface': makeReplacer(GML3.prototype.readSurface_),n 'MultiSurface': makeReplacer(GML3.prototype.readMultiSurface_),n 'Curve': makeReplacer(GML3.prototype.readCurve_),n 'MultiCurve': makeReplacer(GML3.prototype.readMultiCurve_),n 'Envelope': makeReplacer(GML3.prototype.readEnvelope_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML3.prototype.MULTICURVE_PARSERS_ = {n 'www.opengis.net/gml': {n 'curveMember': makeArrayPusher(GML3.prototype.curveMemberParser_),n 'curveMembers': makeArrayPusher(GML3.prototype.curveMemberParser_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML3.prototype.MULTISURFACE_PARSERS_ = {n 'www.opengis.net/gml': {n 'surfaceMember': makeArrayPusher(GML3.prototype.surfaceMemberParser_),n 'surfaceMembers': makeArrayPusher(GML3.prototype.surfaceMemberParser_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML3.prototype.CURVEMEMBER_PARSERS_ = {n 'www.opengis.net/gml': {n 'LineString': makeArrayPusher(GMLBase.prototype.readLineString),n 'Curve': makeArrayPusher(GML3.prototype.readCurve_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML3.prototype.SURFACEMEMBER_PARSERS_ = {n 'www.opengis.net/gml': {n 'Polygon': makeArrayPusher(GMLBase.prototype.readPolygon),n 'Surface': makeArrayPusher(GML3.prototype.readSurface_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML3.prototype.SURFACE_PARSERS_ = {n 'www.opengis.net/gml': {n 'patches': makeReplacer(GML3.prototype.readPatch_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML3.prototype.CURVE_PARSERS_ = {n 'www.opengis.net/gml': {n 'segments': makeReplacer(GML3.prototype.readSegment_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML3.prototype.ENVELOPE_PARSERS_ = {n 'www.opengis.net/gml': {n 'lowerCorner': makeArrayPusher(GML3.prototype.readFlatPosList_),n 'upperCorner': makeArrayPusher(GML3.prototype.readFlatPosList_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML3.prototype.PATCHES_PARSERS_ = {n 'www.opengis.net/gml': {n 'PolygonPatch': makeReplacer(GML3.prototype.readPolygonPatch_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML3.prototype.SEGMENTS_PARSERS_ = {n 'www.opengis.net/gml': {n 'LineStringSegment': makeReplacer(GML3.prototype.readLineStringSegment_)n }n};n/**n * Encode an array of features in GML 3.1.1 Simple Features.n *n * @functionn * @param {Array<import("../Feature.js").default>} features Features.n * @param {import("./Feature.js").WriteOptions=} opt_options Options.n * @return {string} Result.n * @apin */nGML3.prototype.writeFeatures;n/**n * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n * @privaten */nGML3.prototype.RING_SERIALIZERS_ = {n 'www.opengis.net/gml': {n 'exterior': makeChildAppender(GML3.prototype.writeRing_),n 'interior': makeChildAppender(GML3.prototype.writeRing_)n }n};n/**n * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n * @privaten */nGML3.prototype.ENVELOPE_SERIALIZERS_ = {n 'www.opengis.net/gml': {n 'lowerCorner': makeChildAppender(writeStringTextNode),n 'upperCorner': makeChildAppender(writeStringTextNode)n }n};n/**n * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n * @privaten */nGML3.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS_ = {n 'www.opengis.net/gml': {n 'surfaceMember': makeChildAppender(GML3.prototype.writeSurfaceOrPolygonMember_),n 'polygonMember': makeChildAppender(GML3.prototype.writeSurfaceOrPolygonMember_)n }n};n/**n * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n * @privaten */nGML3.prototype.POINTMEMBER_SERIALIZERS_ = {n 'www.opengis.net/gml': {n 'pointMember': makeChildAppender(GML3.prototype.writePointMember_)n }n};n/**n * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n * @privaten */nGML3.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS_ = {n 'www.opengis.net/gml': {n 'lineStringMember': makeChildAppender(GML3.prototype.writeLineStringOrCurveMember_),n 'curveMember': makeChildAppender(GML3.prototype.writeLineStringOrCurveMember_)n }n};n/**n * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n * @privaten */nGML3.prototype.GEOMETRY_SERIALIZERS_ = {n 'www.opengis.net/gml': {n 'Curve': makeChildAppender(GML3.prototype.writeCurveOrLineString_),n 'MultiCurve': makeChildAppender(GML3.prototype.writeMultiCurveOrLineString_),n 'Point': makeChildAppender(GML3.prototype.writePoint_),n 'MultiPoint': makeChildAppender(GML3.prototype.writeMultiPoint_),n 'LineString': makeChildAppender(GML3.prototype.writeCurveOrLineString_),n 'MultiLineString': makeChildAppender(GML3.prototype.writeMultiCurveOrLineString_),n 'LinearRing': makeChildAppender(GML3.prototype.writeLinearRing_),n 'Polygon': makeChildAppender(GML3.prototype.writeSurfaceOrPolygon_),n 'MultiPolygon': makeChildAppender(GML3.prototype.writeMultiSurfaceOrPolygon_),n 'Surface': makeChildAppender(GML3.prototype.writeSurfaceOrPolygon_),n 'MultiSurface': makeChildAppender(GML3.prototype.writeMultiSurfaceOrPolygon_),n 'Envelope': makeChildAppender(GML3.prototype.writeEnvelope)n }n};nexport default GML3;n//# sourceMappingURL=GML3.js.map”,“/**n * @module ol/format/GMLn */nimport GML3 from './GML3.js';n/**n * @classdescn * Feature format for reading and writing data in the GML formatn * version 3.1.1.n * Currently only supports GML 3.1.1 Simple Features profile.n *n * @param {import("./GMLBase.js").Options=} opt_optionsn * Optional configuration object.n * @apin */nvar GML = GML3;n/**n * Encode an array of features in GML 3.1.1 Simple Features.n *n * @functionn * @param {Array<import("../Feature.js").default>} features Features.n * @param {import("./Feature.js").WriteOptions=} opt_options Options.n * @return {string} Result.n * @apin */nGML.prototype.writeFeatures;n/**n * Encode an array of features in the GML 3.1.1 format as an XML node.n *n * @functionn * @param {Array<import("../Feature.js").default>} features Features.n * @param {import("./Feature.js").WriteOptions=} opt_options Options.n * @return {Node} Node.n * @apin */nGML.prototype.writeFeaturesNode;nexport default GML;n//# sourceMappingURL=GML.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/GML2n */nimport { createOrUpdate } from '../extent.js';nimport { transformExtentWithOptions, transformGeometryWithOptions } from './Feature.js';nimport GMLBase, { GMLNS } from './GMLBase.js';nimport { writeStringTextNode } from './xsd.js';nimport { assign } from '../obj.js';nimport { get as getProjection } from '../proj.js';nimport { createElementNS, getAllTextContent, makeArrayPusher, makeChildAppender, makeReplacer, makeSimpleNodeFactory, OBJECT_PROPERTY_NODE_FACTORY, pushParseAndPop, pushSerializeAndPop } from '../xml.js';n/**n * @constn * @type {string}n */nvar schemaLocation = GMLNS + ' schemas.opengis.net/gml/2.1.2/feature.xsd’;n/**n * @constn * @type {Object<string, string>}n */nvar MULTIGEOMETRY_TO_MEMBER_NODENAME = {n 'MultiLineString': 'lineStringMember',n 'MultiCurve': 'curveMember',n 'MultiPolygon': 'polygonMember',n 'MultiSurface': 'surfaceMember'n};n/**n * @classdescn * Feature format for reading and writing data in the GML format,n * version 2.1.2.n *n * @apin */nvar GML2 = /** @class */ (function (_super) {n __extends(GML2, _super);n /**n * @param {import("./GMLBase.js").Options=} opt_options Optional configuration object.n */n function GML2(opt_options) {n var _this = this;n var options = /** @type {import("./GMLBase.js").Options} */ (opt_options ? opt_options : {});n _this = _super.call(this, options) || this;n _this.FEATURE_COLLECTION_PARSERS['featureMember'] =n makeArrayPusher(_this.readFeaturesInternal);n /**n * @inheritDocn */n _this.schemaLocation = options.schemaLocation ?n options.schemaLocation : schemaLocation;n return _this;n }n /**n * @param {Node} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten * @return {Array<number>|undefined} Flat coordinates.n */n GML2.prototype.readFlatCoordinates_ = function (node, objectStack) {n var s = getAllTextContent(node, false).replace(/^\s*|\s*$/g, '');n var context = /** @type {import("../xml.js").NodeStackItem} */ (objectStack);n var containerSrs = context;n var axisOrientation = 'enu';n if (containerSrs) {n var proj = getProjection(containerSrs);n if (proj) {n axisOrientation = proj.getAxisOrientation();n }n }n var coordsGroups = s.trim().split(/\s+/);n var flatCoordinates = [];n for (var i = 0, ii = coordsGroups.length; i < ii; i++) {n var coords = coordsGroups.split(/,+/);n var x = parseFloat(coords);n var y = parseFloat(coords);n var z = (coords.length === 3) ? parseFloat(coords) : 0;n if (axisOrientation.substr(0, 2) === 'en') {n flatCoordinates.push(x, y, z);n }n else {n flatCoordinates.push(y, x, z);n }n }n return flatCoordinates;n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten * @return {import("../extent.js").Extent|undefined} Envelope.n */n GML2.prototype.readBox_ = function (node, objectStack) {n /** @type {Array<number>} */n var flatCoordinates = pushParseAndPop(, this.BOX_PARSERS_, node, objectStack, this);n return createOrUpdate(flatCoordinates[0], flatCoordinates[1], flatCoordinates[3], flatCoordinates[4]);n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten */n GML2.prototype.innerBoundaryIsParser_ = function (node, objectStack) {n /** @type {Array<number>|undefined} */n var flatLinearRing = pushParseAndPop(undefined, this.RING_PARSERS, node, objectStack, this);n if (flatLinearRing) {n var flatLinearRings = /** @type {Array<Array<number>>} */ (objectStack[objectStack.length - 1]);n flatLinearRings.push(flatLinearRing);n }n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten */n GML2.prototype.outerBoundaryIsParser_ = function (node, objectStack) {n /** @type {Array<number>|undefined} */n var flatLinearRing = pushParseAndPop(undefined, this.RING_PARSERS, node, objectStack, this);n if (flatLinearRing) {n var flatLinearRings = /** @type {Array<Array<number>>} */ (objectStack[objectStack.length - 1]);n flatLinearRings = flatLinearRing;n }n };n /**n * @constn * @param {*} value Value.n * @param {Array<*>} objectStack Object stack.n * @param {string=} opt_nodeName Node name.n * @return {Element|undefined} Node.n * @privaten */n GML2.prototype.GEOMETRY_NODE_FACTORY_ = function (value, objectStack, opt_nodeName) {n var context = objectStack[objectStack.length - 1];n var multiSurface = context;n var surface = context;n var multiCurve = context;n var nodeName;n if (!Array.isArray(value)) {n nodeName = /** @type {import("../geom/Geometry.js").default} */ (value).getType();n if (nodeName === 'MultiPolygon' && multiSurface === true) {n nodeName = 'MultiSurface';n }n else if (nodeName === 'Polygon' && surface === true) {n nodeName = 'Surface';n }n else if (nodeName === 'MultiLineString' && multiCurve === true) {n nodeName = 'MultiCurve';n }n }n else {n nodeName = 'Envelope';n }n return createElementNS('www.opengis.net/gml', nodeName);n };n /**n * @param {Element} node Node.n * @param {import("../Feature.js").default} feature Feature.n * @param {Array<*>} objectStack Node stack.n */n GML2.prototype.writeFeatureElement = function (node, feature, objectStack) {n var fid = feature.getId();n if (fid) {n node.setAttribute('fid', /** @type {string} */ (fid));n }n var context = /** @type {Object} */ (objectStack[objectStack.length - 1]);n var featureNS = context;n var geometryName = feature.getGeometryName();n if (!context.serializers) {n context.serializers = {};n context.serializers = {};n }n var properties = feature.getProperties();n var keys = [];n var values = [];n for (var key in properties) {n var value = properties;n if (value !== null) {n keys.push(key);n values.push(value);n if (key == geometryName || typeof /** @type {?} */ (value).getSimplifiedGeometry === 'function') {n if (!(key in context.serializers)) {n context.serializers[key] = makeChildAppender(this.writeGeometryElement, this);n }n }n else {n if (!(key in context.serializers)) {n context.serializers[key] = makeChildAppender(writeStringTextNode);n }n }n }n }n var item = assign({}, context);n item.node = node;n pushSerializeAndPop(/** @type {import("../xml.js").NodeStackItem} */ (item), context.serializers, makeSimpleNodeFactory(undefined, featureNS), values, objectStack, keys);n };n /**n * @param {Element} node Node.n * @param {import("../geom/LineString.js").default} geometry LineString geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML2.prototype.writeCurveOrLineString_ = function (node, geometry, objectStack) {n var context = objectStack[objectStack.length - 1];n var srsName = context;n if (node.nodeName !== 'LineStringSegment' && srsName) {n node.setAttribute('srsName', srsName);n }n if (node.nodeName === 'LineString' ||n node.nodeName === 'LineStringSegment') {n var coordinates = this.createCoordinatesNode_(node.namespaceURI);n node.appendChild(coordinates);n this.writeCoordinates_(coordinates, geometry, objectStack);n }n else if (node.nodeName === 'Curve') {n var segments = createElementNS(node.namespaceURI, 'segments');n node.appendChild(segments);n this.writeCurveSegments_(segments, geometry, objectStack);n }n };n /**n * @param {Element} node Node.n * @param {import("../geom/LineString.js").default} line LineString geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML2.prototype.writeLineStringOrCurveMember_ = function (node, line, objectStack) {n var child = this.GEOMETRY_NODE_FACTORY_(line, objectStack);n if (child) {n node.appendChild(child);n this.writeCurveOrLineString_(child, line, objectStack);n }n };n /**n * @param {Element} node Node.n * @param {import("../geom/MultiLineString.js").default} geometry MultiLineString geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML2.prototype.writeMultiCurveOrLineString_ = function (node, geometry, objectStack) {n var context = objectStack[objectStack.length - 1];n var hasZ = context;n var srsName = context;n var curve = context;n if (srsName) {n node.setAttribute('srsName', srsName);n }n var lines = geometry.getLineStrings();n pushSerializeAndPop({ node: node, hasZ: hasZ, srsName: srsName, curve: curve }, this.LINESTRINGORCURVEMEMBER_SERIALIZERS_, this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, lines, objectStack, undefined, this);n };n /**n * @param {Node} node Node.n * @param {import("../geom/Geometry.js").default|import("../extent.js").Extent} geometry Geometry.n * @param {Array<*>} objectStack Node stack.n */n GML2.prototype.writeGeometryElement = function (node, geometry, objectStack) {n var context = /** @type {import("./Feature.js").WriteOptions} */ (objectStack[objectStack.length - 1]);n var item = assign({}, context);n item = node;n var value;n if (Array.isArray(geometry)) {n value = transformExtentWithOptions(/** @type {import("../extent.js").Extent} */ (geometry), context);n }n else {n value = transformGeometryWithOptions(/** @type {import("../geom/Geometry.js").default} */ (geometry), true, context);n }n pushSerializeAndPop(/** @type {import("../xml.js").NodeStackItem} */ (item), this.GEOMETRY_SERIALIZERS_, this.GEOMETRY_NODE_FACTORY_, [value], objectStack, undefined, this);n };n /**n * @param {string} namespaceURI XML namespace.n * @returns {Element} coordinates node.n * @privaten */n GML2.prototype.createCoordinatesNode_ = function (namespaceURI) {n var coordinates = createElementNS(namespaceURI, 'coordinates');n coordinates.setAttribute('decimal', '.');n coordinates.setAttribute('cs', ',');n coordinates.setAttribute('ts', ' ');n return coordinates;n };n /**n * @param {Node} node Node.n * @param {import("../geom/LineString.js").default|import("../geom/LinearRing.js").default} value Geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML2.prototype.writeCoordinates_ = function (node, value, objectStack) {n var context = objectStack[objectStack.length - 1];n var hasZ = context;n var srsName = context;n // only 2d for simple features profilen var points = value.getCoordinates();n var len = points.length;n var parts = new Array(len);n for (var i = 0; i < len; ++i) {n var point = points;n parts = this.getCoords_(point, srsName, hasZ);n }n writeStringTextNode(node, parts.join(' '));n };n /**n * @param {Node} node Node.n * @param {import("../geom/LineString.js").default} line LineString geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML2.prototype.writeCurveSegments_ = function (node, line, objectStack) {n var child = createElementNS(node.namespaceURI, 'LineStringSegment');n node.appendChild(child);n this.writeCurveOrLineString_(child, line, objectStack);n };n /**n * @param {Element} node Node.n * @param {import("../geom/Polygon.js").default} geometry Polygon geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML2.prototype.writeSurfaceOrPolygon_ = function (node, geometry, objectStack) {n var context = objectStack[objectStack.length - 1];n var hasZ = context;n var srsName = context;n if (node.nodeName !== 'PolygonPatch' && srsName) {n node.setAttribute('srsName', srsName);n }n if (node.nodeName === 'Polygon' || node.nodeName === 'PolygonPatch') {n var rings = geometry.getLinearRings();n pushSerializeAndPop({ node: node, hasZ: hasZ, srsName: srsName }, this.RING_SERIALIZERS_, this.RING_NODE_FACTORY_, rings, objectStack, undefined, this);n }n else if (node.nodeName === 'Surface') {n var patches = createElementNS(node.namespaceURI, 'patches');n node.appendChild(patches);n this.writeSurfacePatches_(patches, geometry, objectStack);n }n };n /**n * @param {*} value Value.n * @param {Array<*>} objectStack Object stack.n * @param {string=} opt_nodeName Node name.n * @return {Node} Node.n * @privaten */n GML2.prototype.RING_NODE_FACTORY_ = function (value, objectStack, opt_nodeName) {n var context = objectStack[objectStack.length - 1];n var parentNode = context.node;n var exteriorWritten = context;n if (exteriorWritten === undefined) {n context = true;n }n return createElementNS(parentNode.namespaceURI, exteriorWritten !== undefined ? 'innerBoundaryIs' : 'outerBoundaryIs');n };n /**n * @param {Node} node Node.n * @param {import("../geom/Polygon.js").default} polygon Polygon geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML2.prototype.writeSurfacePatches_ = function (node, polygon, objectStack) {n var child = createElementNS(node.namespaceURI, 'PolygonPatch');n node.appendChild(child);n this.writeSurfaceOrPolygon_(child, polygon, objectStack);n };n /**n * @param {Node} node Node.n * @param {import("../geom/LinearRing.js").default} ring LinearRing geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML2.prototype.writeRing_ = function (node, ring, objectStack) {n var linearRing = createElementNS(node.namespaceURI, 'LinearRing');n node.appendChild(linearRing);n this.writeLinearRing_(linearRing, ring, objectStack);n };n /**n * @param {Array<number>} point Point geometry.n * @param {string=} opt_srsName Optional srsNamen * @param {boolean=} opt_hasZ whether the geometry has a Z coordinate (is 3D) or not.n * @return {string} The coords string.n * @privaten */n GML2.prototype.getCoords_ = function (point, opt_srsName, opt_hasZ) {n var axisOrientation = 'enu';n if (opt_srsName) {n axisOrientation = getProjection(opt_srsName).getAxisOrientation();n }n var coords = ((axisOrientation.substr(0, 2) === 'en') ?n point + ',' + point :n point + ',' + point);n if (opt_hasZ) {n // For newly created points, Z can be undefined.n var z = point || 0;n coords += ',' + z;n }n return coords;n };n /**n * @param {Element} node Node.n * @param {import("../geom/Point.js").default} geometry Point geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML2.prototype.writePoint_ = function (node, geometry, objectStack) {n var context = objectStack[objectStack.length - 1];n var hasZ = context;n var srsName = context;n if (srsName) {n node.setAttribute('srsName', srsName);n }n var coordinates = this.createCoordinatesNode_(node.namespaceURI);n node.appendChild(coordinates);n var point = geometry.getCoordinates();n var coord = this.getCoords_(point, srsName, hasZ);n writeStringTextNode(coordinates, coord);n };n /**n * @param {Element} node Node.n * @param {import("../geom/MultiPoint.js").default} geometry MultiPoint geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML2.prototype.writeMultiPoint_ = function (node, geometry, objectStack) {n var context = objectStack[objectStack.length - 1];n var hasZ = context;n var srsName = context;n if (srsName) {n node.setAttribute('srsName', srsName);n }n var points = geometry.getPoints();n pushSerializeAndPop({ node: node, hasZ: hasZ, srsName: srsName }, this.POINTMEMBER_SERIALIZERS_, makeSimpleNodeFactory('pointMember'), points, objectStack, undefined, this);n };n /**n * @param {Node} node Node.n * @param {import("../geom/Point.js").default} point Point geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML2.prototype.writePointMember_ = function (node, point, objectStack) {n var child = createElementNS(node.namespaceURI, 'Point');n node.appendChild(child);n this.writePoint_(child, point, objectStack);n };n /**n * @param {Element} node Node.n * @param {import("../geom/LinearRing.js").default} geometry LinearRing geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML2.prototype.writeLinearRing_ = function (node, geometry, objectStack) {n var context = objectStack[objectStack.length - 1];n var srsName = context;n if (srsName) {n node.setAttribute('srsName', srsName);n }n var coordinates = this.createCoordinatesNode_(node.namespaceURI);n node.appendChild(coordinates);n this.writeCoordinates_(coordinates, geometry, objectStack);n };n /**n * @param {Element} node Node.n * @param {import("../geom/MultiPolygon.js").default} geometry MultiPolygon geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML2.prototype.writeMultiSurfaceOrPolygon_ = function (node, geometry, objectStack) {n var context = objectStack[objectStack.length - 1];n var hasZ = context;n var srsName = context;n var surface = context;n if (srsName) {n node.setAttribute('srsName', srsName);n }n var polygons = geometry.getPolygons();n pushSerializeAndPop({ node: node, hasZ: hasZ, srsName: srsName, surface: surface }, this.SURFACEORPOLYGONMEMBER_SERIALIZERS_, this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, polygons, objectStack, undefined, this);n };n /**n * @param {Node} node Node.n * @param {import("../geom/Polygon.js").default} polygon Polygon geometry.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML2.prototype.writeSurfaceOrPolygonMember_ = function (node, polygon, objectStack) {n var child = this.GEOMETRY_NODE_FACTORY_(polygon, objectStack);n if (child) {n node.appendChild(child);n this.writeSurfaceOrPolygon_(child, polygon, objectStack);n }n };n /**n * @param {Element} node Node.n * @param {import("../extent.js").Extent} extent Extent.n * @param {Array<*>} objectStack Node stack.n * @privaten */n GML2.prototype.writeEnvelope = function (node, extent, objectStack) {n var context = objectStack[objectStack.length - 1];n var srsName = context;n if (srsName) {n node.setAttribute('srsName', srsName);n }n var keys = ['lowerCorner', 'upperCorner'];n var values = [extent + ' ' + extent, extent + ' ' + extent];n pushSerializeAndPop(/** @type {import("../xml.js").NodeStackItem} */ ({ node: node }), this.ENVELOPE_SERIALIZERS_, OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, keys, this);n };n /**n * @constn * @param {*} value Value.n * @param {Array<*>} objectStack Object stack.n * @param {string=} opt_nodeName Node name.n * @return {Node|undefined} Node.n * @privaten */n GML2.prototype.MULTIGEOMETRY_MEMBER_NODE_FACTORY_ = function (value, objectStack, opt_nodeName) {n var parentNode = objectStack[objectStack.length - 1].node;n return createElementNS('www.opengis.net/gml', MULTIGEOMETRY_TO_MEMBER_NODENAME);n };n return GML2;n}(GMLBase));n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @protectedn */nGML2.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = {n 'www.opengis.net/gml': {n 'coordinates': makeReplacer(GML2.prototype.readFlatCoordinates_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @protectedn */nGML2.prototype.FLAT_LINEAR_RINGS_PARSERS = {n 'www.opengis.net/gml': {n 'innerBoundaryIs': GML2.prototype.innerBoundaryIsParser_,n 'outerBoundaryIs': GML2.prototype.outerBoundaryIsParser_n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML2.prototype.BOX_PARSERS_ = {n 'www.opengis.net/gml': {n 'coordinates': makeArrayPusher(GML2.prototype.readFlatCoordinates_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @protectedn */nGML2.prototype.GEOMETRY_PARSERS = {n 'www.opengis.net/gml': {n 'Point': makeReplacer(GMLBase.prototype.readPoint),n 'MultiPoint': makeReplacer(GMLBase.prototype.readMultiPoint),n 'LineString': makeReplacer(GMLBase.prototype.readLineString),n 'MultiLineString': makeReplacer(GMLBase.prototype.readMultiLineString),n 'LinearRing': makeReplacer(GMLBase.prototype.readLinearRing),n 'Polygon': makeReplacer(GMLBase.prototype.readPolygon),n 'MultiPolygon': makeReplacer(GMLBase.prototype.readMultiPolygon),n 'Box': makeReplacer(GML2.prototype.readBox_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n * @privaten */nGML2.prototype.GEOMETRY_SERIALIZERS_ = {n 'www.opengis.net/gml': {n 'Curve': makeChildAppender(GML2.prototype.writeCurveOrLineString_),n 'MultiCurve': makeChildAppender(GML2.prototype.writeMultiCurveOrLineString_),n 'Point': makeChildAppender(GML2.prototype.writePoint_),n 'MultiPoint': makeChildAppender(GML2.prototype.writeMultiPoint_),n 'LineString': makeChildAppender(GML2.prototype.writeCurveOrLineString_),n 'MultiLineString': makeChildAppender(GML2.prototype.writeMultiCurveOrLineString_),n 'LinearRing': makeChildAppender(GML2.prototype.writeLinearRing_),n 'Polygon': makeChildAppender(GML2.prototype.writeSurfaceOrPolygon_),n 'MultiPolygon': makeChildAppender(GML2.prototype.writeMultiSurfaceOrPolygon_),n 'Surface': makeChildAppender(GML2.prototype.writeSurfaceOrPolygon_),n 'MultiSurface': makeChildAppender(GML2.prototype.writeMultiSurfaceOrPolygon_),n 'Envelope': makeChildAppender(GML2.prototype.writeEnvelope)n }n};n/**n * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n * @privaten */nGML2.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS_ = {n 'www.opengis.net/gml': {n 'lineStringMember': makeChildAppender(GML2.prototype.writeLineStringOrCurveMember_),n 'curveMember': makeChildAppender(GML2.prototype.writeLineStringOrCurveMember_)n }n};n/**n * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n * @privaten */nGML2.prototype.RING_SERIALIZERS_ = {n 'www.opengis.net/gml': {n 'outerBoundaryIs': makeChildAppender(GML2.prototype.writeRing_),n 'innerBoundaryIs': makeChildAppender(GML2.prototype.writeRing_)n }n};n/**n * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n * @privaten */nGML2.prototype.POINTMEMBER_SERIALIZERS_ = {n 'www.opengis.net/gml': {n 'pointMember': makeChildAppender(GML2.prototype.writePointMember_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n * @privaten */nGML2.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS_ = {n 'www.opengis.net/gml': {n 'surfaceMember': makeChildAppender(GML2.prototype.writeSurfaceOrPolygonMember_),n 'polygonMember': makeChildAppender(GML2.prototype.writeSurfaceOrPolygonMember_)n }n};n/**n * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n * @privaten */nGML2.prototype.ENVELOPE_SERIALIZERS_ = {n 'www.opengis.net/gml': {n 'lowerCorner': makeChildAppender(writeStringTextNode),n 'upperCorner': makeChildAppender(writeStringTextNode)n }n};nexport default GML2;n//# sourceMappingURL=GML2.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/GML32n */nimport GML3 from './GML3.js';nimport GMLBase from './GMLBase.js';nimport { makeArrayPusher, makeReplacer, makeChildAppender } from '../xml.js';nimport { writeStringTextNode } from '../format/xsd.js';n/**n * @classdesc Feature format for reading and writing data in the GML formatn * version 3.2.1.n * @apin */nvar GML32 = /** @class */ (function (_super) {n __extends(GML32, _super);n /**n * @param {import("./GMLBase.js").Options=} opt_options Optional configuration object.n */n function GML32(opt_options) {n var _this = this;n var options = /** @type {import("./GMLBase.js").Options} */ (opt_options ? opt_options : {});n _this = _super.call(this, options) || this;n /**n * @inheritDocn */n _this.schemaLocation = options.schemaLocation ?n options.schemaLocation : _this.namespace + ' schemas.opengis.net/gml/3.2.1/gml.xsd’;n return _this;n }n return GML32;n}(GML3));nGML32.prototype.namespace = 'www.opengis.net/gml/3.2’;n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @protectedn */nGML32.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = {n 'www.opengis.net/gml/3.2': {n 'pos': makeReplacer(GML3.prototype.readFlatPos_),n 'posList': makeReplacer(GML3.prototype.readFlatPosList_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @protectedn */nGML32.prototype.FLAT_LINEAR_RINGS_PARSERS = {n 'www.opengis.net/gml/3.2': {n 'interior': GML3.prototype.interiorParser_,n 'exterior': GML3.prototype.exteriorParser_n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @protectedn */nGML32.prototype.GEOMETRY_PARSERS = {n 'www.opengis.net/gml/3.2': {n 'Point': makeReplacer(GMLBase.prototype.readPoint),n 'MultiPoint': makeReplacer(GMLBase.prototype.readMultiPoint),n 'LineString': makeReplacer(GMLBase.prototype.readLineString),n 'MultiLineString': makeReplacer(GMLBase.prototype.readMultiLineString),n 'LinearRing': makeReplacer(GMLBase.prototype.readLinearRing),n 'Polygon': makeReplacer(GMLBase.prototype.readPolygon),n 'MultiPolygon': makeReplacer(GMLBase.prototype.readMultiPolygon),n 'Surface': makeReplacer(GML32.prototype.readSurface_),n 'MultiSurface': makeReplacer(GML3.prototype.readMultiSurface_),n 'Curve': makeReplacer(GML32.prototype.readCurve_),n 'MultiCurve': makeReplacer(GML3.prototype.readMultiCurve_),n 'Envelope': makeReplacer(GML32.prototype.readEnvelope_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML32.prototype.MULTICURVE_PARSERS_ = {n 'www.opengis.net/gml/3.2': {n 'curveMember': makeArrayPusher(GML3.prototype.curveMemberParser_),n 'curveMembers': makeArrayPusher(GML3.prototype.curveMemberParser_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML32.prototype.MULTISURFACE_PARSERS_ = {n 'www.opengis.net/gml/3.2': {n 'surfaceMember': makeArrayPusher(GML3.prototype.surfaceMemberParser_),n 'surfaceMembers': makeArrayPusher(GML3.prototype.surfaceMemberParser_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML32.prototype.CURVEMEMBER_PARSERS_ = {n 'www.opengis.net/gml/3.2': {n 'LineString': makeArrayPusher(GMLBase.prototype.readLineString),n 'Curve': makeArrayPusher(GML3.prototype.readCurve_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML32.prototype.SURFACEMEMBER_PARSERS_ = {n 'www.opengis.net/gml/3.2': {n 'Polygon': makeArrayPusher(GMLBase.prototype.readPolygon),n 'Surface': makeArrayPusher(GML3.prototype.readSurface_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML32.prototype.SURFACE_PARSERS_ = {n 'www.opengis.net/gml/3.2': {n 'patches': makeReplacer(GML3.prototype.readPatch_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML32.prototype.CURVE_PARSERS_ = {n 'www.opengis.net/gml/3.2': {n 'segments': makeReplacer(GML3.prototype.readSegment_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML32.prototype.ENVELOPE_PARSERS_ = {n 'www.opengis.net/gml/3.2': {n 'lowerCorner': makeArrayPusher(GML3.prototype.readFlatPosList_),n 'upperCorner': makeArrayPusher(GML3.prototype.readFlatPosList_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML32.prototype.PATCHES_PARSERS_ = {n 'www.opengis.net/gml/3.2': {n 'PolygonPatch': makeReplacer(GML3.prototype.readPolygonPatch_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML32.prototype.SEGMENTS_PARSERS_ = {n 'www.opengis.net/gml/3.2': {n 'LineStringSegment': makeReplacer(GML3.prototype.readLineStringSegment_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML32.prototype.MULTIPOINT_PARSERS_ = {n 'www.opengis.net/gml/3.2': {n 'pointMember': makeArrayPusher(GMLBase.prototype.pointMemberParser_),n 'pointMembers': makeArrayPusher(GMLBase.prototype.pointMemberParser_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML32.prototype.MULTILINESTRING_PARSERS_ = {n 'www.opengis.net/gml/3.2': {n 'lineStringMember': makeArrayPusher(GMLBase.prototype.lineStringMemberParser_),n 'lineStringMembers': makeArrayPusher(GMLBase.prototype.lineStringMemberParser_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML32.prototype.MULTIPOLYGON_PARSERS_ = {n 'www.opengis.net/gml/3.2': {n 'polygonMember': makeArrayPusher(GMLBase.prototype.polygonMemberParser_),n 'polygonMembers': makeArrayPusher(GMLBase.prototype.polygonMemberParser_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML32.prototype.POINTMEMBER_PARSERS_ = {n 'www.opengis.net/gml/3.2': {n 'Point': makeArrayPusher(GMLBase.prototype.readFlatCoordinatesFromNode_)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML32.prototype.LINESTRINGMEMBER_PARSERS_ = {n 'www.opengis.net/gml/3.2': {n 'LineString': makeArrayPusher(GMLBase.prototype.readLineString)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @privaten */nGML32.prototype.POLYGONMEMBER_PARSERS_ = {n 'www.opengis.net/gml/3.2': {n 'Polygon': makeArrayPusher(GMLBase.prototype.readPolygon)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n * @protectedn */nGML32.prototype.RING_PARSERS = {n 'www.opengis.net/gml/3.2': {n 'LinearRing': makeReplacer(GMLBase.prototype.readFlatLinearRing_)n }n};n/**n * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n * @privaten */nGML32.prototype.RING_SERIALIZERS_ = {n 'www.opengis.net/gml/3.2': {n 'exterior': makeChildAppender(GML3.prototype.writeRing_),n 'interior': makeChildAppender(GML3.prototype.writeRing_)n }n};n/**n * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n * @privaten */nGML32.prototype.ENVELOPE_SERIALIZERS_ = {n 'www.opengis.net/gml/3.2': {n 'lowerCorner': makeChildAppender(writeStringTextNode),n 'upperCorner': makeChildAppender(writeStringTextNode)n }n};n/**n * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n * @privaten */nGML32.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS_ = {n 'www.opengis.net/gml/3.2': {n 'surfaceMember': makeChildAppender(GML3.prototype.writeSurfaceOrPolygonMember_),n 'polygonMember': makeChildAppender(GML3.prototype.writeSurfaceOrPolygonMember_)n }n};n/**n * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n * @privaten */nGML32.prototype.POINTMEMBER_SERIALIZERS_ = {n 'www.opengis.net/gml/3.2': {n 'pointMember': makeChildAppender(GML3.prototype.writePointMember_)n }n};n/**n * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n * @privaten */nGML32.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS_ = {n 'www.opengis.net/gml/3.2': {n 'lineStringMember': makeChildAppender(GML3.prototype.writeLineStringOrCurveMember_),n 'curveMember': makeChildAppender(GML3.prototype.writeLineStringOrCurveMember_)n }n};n/**n * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n * @privaten */nGML32.prototype.GEOMETRY_SERIALIZERS_ = {n 'www.opengis.net/gml/3.2': {n 'Curve': makeChildAppender(GML3.prototype.writeCurveOrLineString_),n 'MultiCurve': makeChildAppender(GML3.prototype.writeMultiCurveOrLineString_),n 'Point': makeChildAppender(GML32.prototype.writePoint_),n 'MultiPoint': makeChildAppender(GML3.prototype.writeMultiPoint_),n 'LineString': makeChildAppender(GML3.prototype.writeCurveOrLineString_),n 'MultiLineString': makeChildAppender(GML3.prototype.writeMultiCurveOrLineString_),n 'LinearRing': makeChildAppender(GML3.prototype.writeLinearRing_),n 'Polygon': makeChildAppender(GML3.prototype.writeSurfaceOrPolygon_),n 'MultiPolygon': makeChildAppender(GML3.prototype.writeMultiSurfaceOrPolygon_),n 'Surface': makeChildAppender(GML3.prototype.writeSurfaceOrPolygon_),n 'MultiSurface': makeChildAppender(GML3.prototype.writeMultiSurfaceOrPolygon_),n 'Envelope': makeChildAppender(GML3.prototype.writeEnvelope)n }n};nexport default GML32;n//# sourceMappingURL=GML32.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/GPXn */nimport Feature from '../Feature.js';nimport { includes } from '../array.js';nimport { transformGeometryWithOptions } from './Feature.js';nimport XMLFeature from './XMLFeature.js';nimport { readString, readDecimal, readNonNegativeInteger, readDateTime, writeStringTextNode, writeNonNegativeIntegerTextNode, writeDecimalTextNode, writeDateTimeTextNode } from './xsd.js';nimport GeometryLayout from '../geom/GeometryLayout.js';nimport GeometryType from '../geom/GeometryType.js';nimport LineString from '../geom/LineString.js';nimport MultiLineString from '../geom/MultiLineString.js';nimport Point from '../geom/Point.js';nimport { get as getProjection } from '../proj.js';nimport { createElementNS, makeArrayPusher, makeArraySerializer, makeChildAppender, makeObjectPropertySetter, makeSequence, makeSimpleNodeFactory, makeStructureNS, OBJECT_PROPERTY_NODE_FACTORY, parseNode, pushParseAndPop, pushSerializeAndPop, XML_SCHEMA_INSTANCE_URI } from '../xml.js';n/**n * @constn * @type {Array<null|string>}n */nvar NAMESPACE_URIS = [n null,n 'www.topografix.com/GPX/1/0’,n 'www.topografix.com/GPX/1/1’n];n/**n * @constn * @type {string}n */nvar SCHEMA_LOCATION = 'www.topografix.com/GPX/1/1 ' +n 'www.topografix.com/GPX/1/1/gpx.xsd’;n/**n * @constn * @type {Object<string, function(Node, Array<*>): (Feature|undefined)>}n */nvar FEATURE_READER = {n 'rte': readRte,n 'trk': readTrk,n 'wpt': readWptn};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar GPX_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'rte': makeArrayPusher(readRte),n 'trk': makeArrayPusher(readTrk),n 'wpt': makeArrayPusher(readWpt)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar LINK_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'text': makeObjectPropertySetter(readString, 'linkText'),n 'type': makeObjectPropertySetter(readString, 'linkType')n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar GPX_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'rte': makeChildAppender(writeRte),n 'trk': makeChildAppender(writeTrk),n 'wpt': makeChildAppender(writeWpt)n});n/**n * @typedef {Object} Optionsn * @property {function(Feature, Node)} [readExtensions] Callback functionn * to process `extensions` nodes. To prevent memory leaks, this callback function mustn * not store any references to the node. Note that the `extensions`n * node is not allowed in GPX 1.0. Moreover, only `extensions`n * nodes from `wpt`, `rte` and `trk` can be processed, as those aren * directly mapped to a feature.n */n/**n * @typedef {Object} LayoutOptionsn * @property {boolean} [hasZ]n * @property {boolean} [hasM]n */n/**n * @classdescn * Feature format for reading and writing data in the GPX format.n *n * Note that {@link module:ol/format/GPX~GPX#readFeature} only reads the firstn * feature of the source.n *n * When reading, routes (`<rte>`) are converted into LineString geometries, andn * tracks (`<trk>`) into MultiLineString. Any properties on route and trackn * waypoints are ignored.n *n * When writing, LineString geometries are output as routes (`<rte>`), andn * MultiLineString as tracks (`<trk>`).n *n * @apin */nvar GPX = /** @class */ (function (_super) {n __extends(GPX, _super);n /**n * @param {Options=} opt_options Options.n */n function GPX(opt_options) {n var _this = _super.call(this) || this;n var options = opt_options ? opt_options : {};n /**n * @inheritDocn */n _this.dataProjection = getProjection('EPSG:4326');n /**n * @type {function(Feature, Node): void|undefined}n * @privaten */n this.readExtensions = options.readExtensions;n return _this;n }n /**n * @param {Array<Feature>} features List of features.n * @privaten */n GPX.prototype.handleReadExtensions_ = function (features) {n if (!features) {n features = [];n }n for (var i = 0, ii = features.length; i < ii; ++i) {n var feature = features;n if (this.readExtensions_) {n var extensionsNode = feature.get('extensionsNode_') || null;n this.readExtensions_(feature, extensionsNode);n }n feature.set('extensionsNode_', undefined);n }n };n /**n * @inheritDocn */n GPX.prototype.readFeatureFromNode = function (node, opt_options) {n if (!includes(NAMESPACE_URIS, node.namespaceURI)) {n return null;n }n var featureReader = FEATURE_READER;n if (!featureReader) {n return null;n }n var feature = featureReader(node, [this.getReadOptions(node, opt_options)]);n if (!feature) {n return null;n }n this.handleReadExtensions_();n return feature;n };n /**n * @inheritDocn */n GPX.prototype.readFeaturesFromNode = function (node, opt_options) {n if (!includes(NAMESPACE_URIS, node.namespaceURI)) {n return [];n }n if (node.localName == 'gpx') {n /** @type {Array<Feature>} */n var features = pushParseAndPop([], GPX_PARSERS, node, [this.getReadOptions(node, opt_options)]);n if (features) {n this.handleReadExtensions_(features);n return features;n }n else {n return [];n }n }n return [];n };n /**n * Encode an array of features in the GPX format as an XML node.n * LineString geometries are output as routes (`<rte>`), and MultiLineStringn * as tracks (`<trk>`).n *n * @param {Array<Feature>} features Features.n * @param {import("./Feature.js").WriteOptions=} opt_options Options.n * @return {Node} Node.n * @overriden * @apin */n GPX.prototype.writeFeaturesNode = function (features, opt_options) {n opt_options = this.adaptOptions(opt_options);n //FIXME Serialize metadatan var gpx = createElementNS('www.topografix.com/GPX/1/1', 'gpx');n var xmlnsUri = 'www.w3.org/2000/xmlns/‘;n gpx.setAttributeNS(xmlnsUri, 'xmlns:xsi', XML_SCHEMA_INSTANCE_URI);n gpx.setAttributeNS(XML_SCHEMA_INSTANCE_URI, 'xsi:schemaLocation', SCHEMA_LOCATION);n gpx.setAttribute('version', '1.1');n gpx.setAttribute('creator', 'OpenLayers');n pushSerializeAndPop(/** @type {import("../xml.js").NodeStackItem} */ ({ node: gpx }), GPX_SERIALIZERS, GPX_NODE_FACTORY, features, [opt_options]);n return gpx;n };n return GPX;n}(XMLFeature));n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar RTE_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'name': makeObjectPropertySetter(readString),n 'cmt': makeObjectPropertySetter(readString),n 'desc': makeObjectPropertySetter(readString),n 'src': makeObjectPropertySetter(readString),n 'link': parseLink,n 'number': makeObjectPropertySetter(readNonNegativeInteger),n 'extensions': parseExtensions,n 'type': makeObjectPropertySetter(readString),n 'rtept': parseRtePtn});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar RTEPT_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'ele': makeObjectPropertySetter(readDecimal),n 'time': makeObjectPropertySetter(readDateTime)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar TRK_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'name': makeObjectPropertySetter(readString),n 'cmt': makeObjectPropertySetter(readString),n 'desc': makeObjectPropertySetter(readString),n 'src': makeObjectPropertySetter(readString),n 'link': parseLink,n 'number': makeObjectPropertySetter(readNonNegativeInteger),n 'type': makeObjectPropertySetter(readString),n 'extensions': parseExtensions,n 'trkseg': parseTrkSegn});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar TRKSEG_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'trkpt': parseTrkPtn});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar TRKPT_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'ele': makeObjectPropertySetter(readDecimal),n 'time': makeObjectPropertySetter(readDateTime)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar WPT_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'ele': makeObjectPropertySetter(readDecimal),n 'time': makeObjectPropertySetter(readDateTime),n 'magvar': makeObjectPropertySetter(readDecimal),n 'geoidheight': makeObjectPropertySetter(readDecimal),n 'name': makeObjectPropertySetter(readString),n 'cmt': makeObjectPropertySetter(readString),n 'desc': makeObjectPropertySetter(readString),n 'src': makeObjectPropertySetter(readString),n 'link': parseLink,n 'sym': makeObjectPropertySetter(readString),n 'type': makeObjectPropertySetter(readString),n 'fix': makeObjectPropertySetter(readString),n 'sat': makeObjectPropertySetter(readNonNegativeInteger),n 'hdop': makeObjectPropertySetter(readDecimal),n 'vdop': makeObjectPropertySetter(readDecimal),n 'pdop': makeObjectPropertySetter(readDecimal),n 'ageofdgpsdata': makeObjectPropertySetter(readDecimal),n 'dgpsid': makeObjectPropertySetter(readNonNegativeInteger),n 'extensions': parseExtensionsn});n/**n * @constn * @type {Array<string>}n */nvar LINK_SEQUENCE = ['text', 'type'];n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar LINK_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'text': makeChildAppender(writeStringTextNode),n 'type': makeChildAppender(writeStringTextNode)n});n/**n * @constn * @type {Object<string, Array<string>>}n */n// @ts-ignorenvar RTE_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [n 'name', 'cmt', 'desc', 'src', 'link', 'number', 'type', 'rtept'n]);n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar RTE_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'name': makeChildAppender(writeStringTextNode),n 'cmt': makeChildAppender(writeStringTextNode),n 'desc': makeChildAppender(writeStringTextNode),n 'src': makeChildAppender(writeStringTextNode),n 'link': makeChildAppender(writeLink),n 'number': makeChildAppender(writeNonNegativeIntegerTextNode),n 'type': makeChildAppender(writeStringTextNode),n 'rtept': makeArraySerializer(makeChildAppender(writeWptType))n});n/**n * @constn * @type {Object<string, Array<string>>}n */n// @ts-ignorenvar RTEPT_TYPE_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [n 'ele', 'time'n]);n/**n * @constn * @type {Object<string, Array<string>>}n */n// @ts-ignorenvar TRK_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [n 'name', 'cmt', 'desc', 'src', 'link', 'number', 'type', 'trkseg'n]);n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar TRK_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'name': makeChildAppender(writeStringTextNode),n 'cmt': makeChildAppender(writeStringTextNode),n 'desc': makeChildAppender(writeStringTextNode),n 'src': makeChildAppender(writeStringTextNode),n 'link': makeChildAppender(writeLink),n 'number': makeChildAppender(writeNonNegativeIntegerTextNode),n 'type': makeChildAppender(writeStringTextNode),n 'trkseg': makeArraySerializer(makeChildAppender(writeTrkSeg))n});n/**n * @constn * @type {function(*, Array<*>, string=): (Node|undefined)}n */nvar TRKSEG_NODE_FACTORY = makeSimpleNodeFactory('trkpt');n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar TRKSEG_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'trkpt': makeChildAppender(writeWptType)n});n/**n * @constn * @type {Object<string, Array<string>>}n */n// @ts-ignorenvar WPT_TYPE_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [n 'ele', 'time', 'magvar', 'geoidheight', 'name', 'cmt', 'desc', 'src',n 'link', 'sym', 'type', 'fix', 'sat', 'hdop', 'vdop', 'pdop',n 'ageofdgpsdata', 'dgpsid'n]);n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar WPT_TYPE_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'ele': makeChildAppender(writeDecimalTextNode),n 'time': makeChildAppender(writeDateTimeTextNode),n 'magvar': makeChildAppender(writeDecimalTextNode),n 'geoidheight': makeChildAppender(writeDecimalTextNode),n 'name': makeChildAppender(writeStringTextNode),n 'cmt': makeChildAppender(writeStringTextNode),n 'desc': makeChildAppender(writeStringTextNode),n 'src': makeChildAppender(writeStringTextNode),n 'link': makeChildAppender(writeLink),n 'sym': makeChildAppender(writeStringTextNode),n 'type': makeChildAppender(writeStringTextNode),n 'fix': makeChildAppender(writeStringTextNode),n 'sat': makeChildAppender(writeNonNegativeIntegerTextNode),n 'hdop': makeChildAppender(writeDecimalTextNode),n 'vdop': makeChildAppender(writeDecimalTextNode),n 'pdop': makeChildAppender(writeDecimalTextNode),n 'ageofdgpsdata': makeChildAppender(writeDecimalTextNode),n 'dgpsid': makeChildAppender(writeNonNegativeIntegerTextNode)n});n/**n * @constn * @type {Object<string, string>}n */nvar GEOMETRY_TYPE_TO_NODENAME = {n 'Point': 'wpt',n 'LineString': 'rte',n 'MultiLineString': 'trk'n};n/**n * @param {*} value Value.n * @param {Array<*>} objectStack Object stack.n * @param {string=} opt_nodeName Node name.n * @return {Node|undefined} Node.n */nfunction GPX_NODE_FACTORY(value, objectStack, opt_nodeName) {n var geometry = /** @type {Feature} */ (value).getGeometry();n if (geometry) {n var nodeName = GEOMETRY_TYPE_TO_NODENAME;n if (nodeName) {n var parentNode = objectStack[objectStack.length - 1].node;n return createElementNS(parentNode.namespaceURI, nodeName);n }n }n}n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {LayoutOptions} layoutOptions Layout options.n * @param {Element} node Node.n * @param {!Object} values Values.n * @return {Array<number>} Flat coordinates.n */nfunction appendCoordinate(flatCoordinates, layoutOptions, node, values) {n flatCoordinates.push(parseFloat(node.getAttribute('lon')), parseFloat(node.getAttribute('lat')));n if ('ele' in values) {n flatCoordinates.push(/** @type {number} */ (values));n delete values;n layoutOptions.hasZ = true;n }n else {n flatCoordinates.push(0);n }n if ('time' in values) {n flatCoordinates.push(/** @type {number} */ (values));n delete values;n layoutOptions.hasM = true;n }n else {n flatCoordinates.push(0);n }n return flatCoordinates;n}n/**n * Choose GeometryLayout based on flags in layoutOptions and adjust flatCoordinatesn * and ends arrays by shrinking them accordingly (removing unused zero entries).n *n * @param {LayoutOptions} layoutOptions Layout options.n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {Array<number>=} ends Ends.n * @return {GeometryLayout} Layout.n */nfunction applyLayoutOptions(layoutOptions, flatCoordinates, ends) {n var layout = GeometryLayout.XY;n var stride = 2;n if (layoutOptions.hasZ && layoutOptions.hasM) {n layout = GeometryLayout.XYZM;n stride = 4;n }n else if (layoutOptions.hasZ) {n layout = GeometryLayout.XYZ;n stride = 3;n }n else if (layoutOptions.hasM) {n layout = GeometryLayout.XYM;n stride = 3;n }n if (stride !== 4) {n for (var i = 0, ii = flatCoordinates.length / 4; i < ii; i++) {n flatCoordinates[i * stride] = flatCoordinates[i * 4];n flatCoordinates[i * stride + 1] = flatCoordinates[i * 4 + 1];n if (layoutOptions.hasZ) {n flatCoordinates[i * stride + 2] = flatCoordinates[i * 4 + 2];n }n if (layoutOptions.hasM) {n flatCoordinates[i * stride + 2] = flatCoordinates[i * 4 + 3];n }n }n flatCoordinates.length = flatCoordinates.length / 4 * stride;n if (ends) {n for (var i = 0, ii = ends.length; i < ii; i++) {n ends = ends / 4 * stride;n }n }n }n return layout;n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction parseLink(node, objectStack) {n var values = /** @type {Object} */ (objectStack[objectStack.length - 1]);n var href = node.getAttribute('href');n if (href !== null) {n values = href;n }n parseNode(LINK_PARSERS, node, objectStack);n}n/**n * @param {Node} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction parseExtensions(node, objectStack) {n var values = /** @type {Object} */ (objectStack[objectStack.length - 1]);n values = node;n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction parseRtePt(node, objectStack) {n var values = pushParseAndPop({}, RTEPT_PARSERS, node, objectStack);n if (values) {n var rteValues = /** @type {!Object} */ (objectStack[objectStack.length - 1]);n var flatCoordinates = /** @type {Array<number>} */ (rteValues);n var layoutOptions = /** @type {LayoutOptions} */ (rteValues);n appendCoordinate(flatCoordinates, layoutOptions, node, values);n }n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction parseTrkPt(node, objectStack) {n var values = pushParseAndPop({}, TRKPT_PARSERS, node, objectStack);n if (values) {n var trkValues = /** @type {!Object} */ (objectStack[objectStack.length - 1]);n var flatCoordinates = /** @type {Array<number>} */ (trkValues);n var layoutOptions = /** @type {LayoutOptions} */ (trkValues);n appendCoordinate(flatCoordinates, layoutOptions, node, values);n }n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction parseTrkSeg(node, objectStack) {n var values = /** @type {Object} */ (objectStack[objectStack.length - 1]);n parseNode(TRKSEG_PARSERS, node, objectStack);n var flatCoordinates = /** @type {Array<number>} */ (values);n var ends = /** @type {Array<number>} */ (values);n ends.push(flatCoordinates.length);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Feature|undefined} Track.n */nfunction readRte(node, objectStack) {n var options = /** @type {import("./Feature.js").ReadOptions} */ (objectStack);n var values = pushParseAndPop({n 'flatCoordinates': [],n 'layoutOptions': {}n }, RTE_PARSERS, node, objectStack);n if (!values) {n return undefined;n }n var flatCoordinates = /** @type {Array<number>} */ (values);n delete values;n var layoutOptions = /** @type {LayoutOptions} */ (values);n delete values;n var layout = applyLayoutOptions(layoutOptions, flatCoordinates);n var geometry = new LineString(flatCoordinates, layout);n transformGeometryWithOptions(geometry, false, options);n var feature = new Feature(geometry);n feature.setProperties(values, true);n return feature;n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Feature|undefined} Track.n */nfunction readTrk(node, objectStack) {n var options = /** @type {import("./Feature.js").ReadOptions} */ (objectStack);n var values = pushParseAndPop({n 'flatCoordinates': [],n 'ends': [],n 'layoutOptions': {}n }, TRK_PARSERS, node, objectStack);n if (!values) {n return undefined;n }n var flatCoordinates = /** @type {Array<number>} */ (values);n delete values;n var ends = /** @type {Array<number>} */ (values);n delete values;n var layoutOptions = /** @type {LayoutOptions} */ (values);n delete values;n var layout = applyLayoutOptions(layoutOptions, flatCoordinates, ends);n var geometry = new MultiLineString(flatCoordinates, layout, ends);n transformGeometryWithOptions(geometry, false, options);n var feature = new Feature(geometry);n feature.setProperties(values, true);n return feature;n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Feature|undefined} Waypoint.n */nfunction readWpt(node, objectStack) {n var options = /** @type {import("./Feature.js").ReadOptions} */ (objectStack);n var values = pushParseAndPop({}, WPT_PARSERS, node, objectStack);n if (!values) {n return undefined;n }n var layoutOptions = /** @type {LayoutOptions} */ ({});n var coordinates = appendCoordinate([], layoutOptions, node, values);n var layout = applyLayoutOptions(layoutOptions, coordinates);n var geometry = new Point(coordinates, layout);n transformGeometryWithOptions(geometry, false, options);n var feature = new Feature(geometry);n feature.setProperties(values, true);n return feature;n}n/**n * @param {Element} node Node.n * @param {string} value Value for the link's `href` attribute.n * @param {Array<*>} objectStack Node stack.n */nfunction writeLink(node, value, objectStack) {n node.setAttribute('href', value);n var context = objectStack[objectStack.length - 1];n var properties = context;n var link = [n properties,n propertiesn ];n pushSerializeAndPop(/** @type {import("../xml.js").NodeStackItem} */ ({ node: node }), LINK_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, link, objectStack, LINK_SEQUENCE);n}n/**n * @param {Element} node Node.n * @param {import("../coordinate.js").Coordinate} coordinate Coordinate.n * @param {Array<*>} objectStack Object stack.n */nfunction writeWptType(node, coordinate, objectStack) {n var context = objectStack[objectStack.length - 1];n var parentNode = context.node;n var namespaceURI = parentNode.namespaceURI;n var properties = context;n //FIXME Projection handlingn node.setAttributeNS(null, 'lat', String(coordinate));n node.setAttributeNS(null, 'lon', String(coordinate));n var geometryLayout = context;n switch (geometryLayout) {n case GeometryLayout.XYZM:n if (coordinate !== 0) {n properties = coordinate;n }n // fall throughn case GeometryLayout.XYZ:n if (coordinate !== 0) {n properties = coordinate;n }n break;n case GeometryLayout.XYM:n if (coordinate !== 0) {n properties = coordinate;n }n break;n default:n // passn }n var orderedKeys = (node.nodeName == 'rtept') ?n RTEPT_TYPE_SEQUENCE :n WPT_TYPE_SEQUENCE;n var values = makeSequence(properties, orderedKeys);n pushSerializeAndPop(/** @type {import("../xml.js").NodeStackItem} */ ({ node: node, 'properties': properties }), WPT_TYPE_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, orderedKeys);n}n/**n * @param {Node} node Node.n * @param {Feature} feature Feature.n * @param {Array<*>} objectStack Object stack.n */nfunction writeRte(node, feature, objectStack) {n var options = /** @type {import("./Feature.js").WriteOptions} */ (objectStack);n var properties = feature.getProperties();n var context = { node: node };n context = properties;n var geometry = feature.getGeometry();n if (geometry.getType() == GeometryType.LINE_STRING) {n var lineString = /** @type {LineString} */ (transformGeometryWithOptions(geometry, true, options));n context = lineString.getLayout();n properties = lineString.getCoordinates();n }n var parentNode = objectStack[objectStack.length - 1].node;n var orderedKeys = RTE_SEQUENCE;n var values = makeSequence(properties, orderedKeys);n pushSerializeAndPop(context, RTE_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, orderedKeys);n}n/**n * @param {Node} node Node.n * @param {Feature} feature Feature.n * @param {Array<*>} objectStack Object stack.n */nfunction writeTrk(node, feature, objectStack) {n var options = /** @type {import("./Feature.js").WriteOptions} */ (objectStack);n var properties = feature.getProperties();n /** @type {import("../xml.js").NodeStackItem} */n var context = { node: node };n context = properties;n var geometry = feature.getGeometry();n if (geometry.getType() == GeometryType.MULTI_LINE_STRING) {n var multiLineString = /** @type {MultiLineString} */ (transformGeometryWithOptions(geometry, true, options));n properties = multiLineString.getLineStrings();n }n var parentNode = objectStack[objectStack.length - 1].node;n var orderedKeys = TRK_SEQUENCE;n var values = makeSequence(properties, orderedKeys);n pushSerializeAndPop(context, TRK_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, orderedKeys);n}n/**n * @param {Node} node Node.n * @param {LineString} lineString LineString.n * @param {Array<*>} objectStack Object stack.n */nfunction writeTrkSeg(node, lineString, objectStack) {n /** @type {import("../xml.js").NodeStackItem} */n var context = { node: node };n context = lineString.getLayout();n context = {};n pushSerializeAndPop(context, TRKSEG_SERIALIZERS, TRKSEG_NODE_FACTORY, lineString.getCoordinates(), objectStack);n}n/**n * @param {Element} node Node.n * @param {Feature} feature Feature.n * @param {Array<*>} objectStack Object stack.n */nfunction writeWpt(node, feature, objectStack) {n var options = /** @type {import("./Feature.js").WriteOptions} */ (objectStack);n var context = objectStack[objectStack.length - 1];n context = feature.getProperties();n var geometry = feature.getGeometry();n if (geometry.getType() == GeometryType.POINT) {n var point = /** @type {Point} */ (transformGeometryWithOptions(geometry, true, options));n context = point.getLayout();n writeWptType(node, point.getCoordinates(), objectStack);n }n}nexport default GPX;n//# sourceMappingURL=GPX.js.map”,“/**n * @module ol/format/GeoJSONn */nvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { assert } from '../asserts.js';nimport Feature from '../Feature.js';nimport { transformGeometryWithOptions } from './Feature.js';nimport JSONFeature from './JSONFeature.js';nimport GeometryCollection from '../geom/GeometryCollection.js';nimport LineString from '../geom/LineString.js';nimport MultiLineString from '../geom/MultiLineString.js';nimport MultiPoint from '../geom/MultiPoint.js';nimport MultiPolygon from '../geom/MultiPolygon.js';nimport Point from '../geom/Point.js';nimport Polygon from '../geom/Polygon.js';nimport { assign, isEmpty } from '../obj.js';nimport { get as getProjection } from '../proj.js';nimport GeometryType from '../geom/GeometryType.js';n/**n * @typedef {import("geojson").GeoJSON} GeoJSONObjectn * @typedef {import("geojson").Feature} GeoJSONFeaturen * @typedef {import("geojson").FeatureCollection} GeoJSONFeatureCollectionn * @typedef {import("geojson").Geometry} GeoJSONGeometryn * @typedef {import("geojson").Point} GeoJSONPointn * @typedef {import("geojson").LineString} GeoJSONLineStringn * @typedef {import("geojson").Polygon} GeoJSONPolygonn * @typedef {import("geojson").MultiPoint} GeoJSONMultiPointn * @typedef {import("geojson").MultiLineString} GeoJSONMultiLineStringn * @typedef {import("geojson").MultiPolygon} GeoJSONMultiPolygonn * @typedef {import("geojson").GeometryCollection} GeoJSONGeometryCollectionn */n/**n * @typedef {Object} Optionsn * @property {import("../proj.js").ProjectionLike} [dataProjection='EPSG:4326'] Default data projection.n * @property {import("../proj.js").ProjectionLike} [featureProjection] Projection for features read orn * written by the format. Options passed to read or write methods will take precedence.n * @property {string} [geometryName] Geometry name to use when creating features.n * @property {boolean} [extractGeometryName=false] Certain GeoJSON providers includen * the geometry_name field in the feature GeoJSON. If set to `true` the GeoJSON readern * will look for that field to set the geometry name. If both this field is set to `true`n * and a `geometryName` is provided, the `geometryName` will take precedence.n */n/**n * @classdescn * Feature format for reading and writing data in the GeoJSON format.n *n * @apin */nvar GeoJSON = /** @class */ (function (_super) {n __extends(GeoJSON, _super);n /**n * @param {Options=} opt_options Options.n */n function GeoJSON(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n _this = _super.call(this) || this;n /**n * @inheritDocn */n _this.dataProjection = getProjection(options.dataProjection ?n options.dataProjection : 'EPSG:4326');n if (options.featureProjection) {n _this.defaultFeatureProjection = getProjection(options.featureProjection);n }n /**n * Name of the geometry attribute for features.n * @type {string|undefined}n * @privaten */n this.geometryName = options.geometryName;n /**n * Look for the geometry name in the feature GeoJSONn * @type {boolean|undefined}n * @privaten */n this.extractGeometryName = options.extractGeometryName;n return _this;n }n /**n * @inheritDocn */n GeoJSON.prototype.readFeatureFromObject = function (object, opt_options) {n /**n * @type {GeoJSONFeature}n */n var geoJSONFeature = null;n if (object === 'Feature') {n geoJSONFeature = /** @type {GeoJSONFeature} */ (object);n }n else {n geoJSONFeature = {n 'type': 'Feature',n 'geometry': /** @type {GeoJSONGeometry} */ (object),n 'properties': nulln };n }n var geometry = readGeometry(geoJSONFeature, opt_options);n var feature = new Feature();n if (this.geometryName_) {n feature.setGeometryName(this.geometryName_);n }n else if (this.extractGeometryName_ && 'geometry_name' in geoJSONFeature !== undefined) {n feature.setGeometryName(geoJSONFeature);n }n feature.setGeometry(geometry);n if ('id' in geoJSONFeature) {n feature.setId(geoJSONFeature);n }n if (geoJSONFeature) {n feature.setProperties(geoJSONFeature, true);n }n return feature;n };n /**n * @inheritDocn */n GeoJSON.prototype.readFeaturesFromObject = function (object, opt_options) {n var geoJSONObject = /** @type {GeoJSONObject} */ (object);n /** @type {Array<import("../Feature.js").default>} */n var features = null;n if (geoJSONObject === 'FeatureCollection') {n var geoJSONFeatureCollection = /** @type {GeoJSONFeatureCollection} */ (object);n features = [];n var geoJSONFeatures = geoJSONFeatureCollection;n for (var i = 0, ii = geoJSONFeatures.length; i < ii; ++i) {n features.push(this.readFeatureFromObject(geoJSONFeatures, opt_options));n }n }n else {n features = [this.readFeatureFromObject(object, opt_options)];n }n return features;n };n /**n * @inheritDocn */n GeoJSON.prototype.readGeometryFromObject = function (object, opt_options) {n return readGeometry(/** @type {GeoJSONGeometry} */ (object), opt_options);n };n /**n * @inheritDocn */n GeoJSON.prototype.readProjectionFromObject = function (object) {n var crs = object;n var projection;n if (crs) {n if (crs == 'name') {n projection = getProjection(crs['name']);n }n else {n assert(false, 36); // Unknown SRS typen }n }n else {n projection = this.dataProjection;n }n return (n /** @type {import("../proj/Projection.js").default} */ (projection));n };n /**n * Encode a feature as a GeoJSON Feature object.n *n * @param {import("../Feature.js").default} feature Feature.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {GeoJSONFeature} Object.n * @overriden * @apin */n GeoJSON.prototype.writeFeatureObject = function (feature, opt_options) {n opt_options = this.adaptOptions(opt_options);n /** @type {GeoJSONFeature} */n var object = {n 'type': 'Feature',n geometry: null,n properties: nulln };n var id = feature.getId();n if (id !== undefined) {n object.id = id;n }n var geometry = feature.getGeometry();n if (geometry) {n object.geometry = writeGeometry(geometry, opt_options);n }n var properties = feature.getProperties();n delete properties;n if (!isEmpty(properties)) {n object.properties = properties;n }n return object;n };n /**n * Encode an array of features as a GeoJSON object.n *n * @param {Array<import("../Feature.js").default>} features Features.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {GeoJSONFeatureCollection} GeoJSON Object.n * @overriden * @apin */n GeoJSON.prototype.writeFeaturesObject = function (features, opt_options) {n opt_options = this.adaptOptions(opt_options);n var objects = [];n for (var i = 0, ii = features.length; i < ii; ++i) {n objects.push(this.writeFeatureObject(features, opt_options));n }n return {n type: 'FeatureCollection',n features: objectsn };n };n /**n * Encode a geometry as a GeoJSON object.n *n * @param {import("../geom/Geometry.js").default} geometry Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {GeoJSONGeometry|GeoJSONGeometryCollection} Object.n * @overriden * @apin */n GeoJSON.prototype.writeGeometryObject = function (geometry, opt_options) {n return writeGeometry(geometry, this.adaptOptions(opt_options));n };n return GeoJSON;n}(JSONFeature));n/**n * @param {GeoJSONGeometry|GeoJSONGeometryCollection} object Object.n * @param {import("./Feature.js").ReadOptions=} opt_options Read options.n * @return {import("../geom/Geometry.js").default} Geometry.n */nfunction readGeometry(object, opt_options) {n if (!object) {n return null;n }n /**n * @type {import("../geom/Geometry.js").default}n */n var geometry;n switch (object) {n case GeometryType.POINT: {n geometry = readPointGeometry(/** @type {GeoJSONPoint} */ (object));n break;n }n case GeometryType.LINE_STRING: {n geometry = readLineStringGeometry(/** @type {GeoJSONLineString} */ (object));n break;n }n case GeometryType.POLYGON: {n geometry = readPolygonGeometry(/** @type {GeoJSONPolygon} */ (object));n break;n }n case GeometryType.MULTI_POINT: {n geometry = readMultiPointGeometry(/** @type {GeoJSONMultiPoint} */ (object));n break;n }n case GeometryType.MULTI_LINE_STRING: {n geometry = readMultiLineStringGeometry(/** @type {GeoJSONMultiLineString} */ (object));n break;n }n case GeometryType.MULTI_POLYGON: {n geometry = readMultiPolygonGeometry(/** @type {GeoJSONMultiPolygon} */ (object));n break;n }n case GeometryType.GEOMETRY_COLLECTION: {n geometry = readGeometryCollectionGeometry(/** @type {GeoJSONGeometryCollection} */ (object));n break;n }n default: {n throw new Error('Unsupported GeoJSON type: ' + object.type);n }n }n return transformGeometryWithOptions(geometry, false, opt_options);n}n/**n * @param {GeoJSONGeometryCollection} object Object.n * @param {import("./Feature.js").ReadOptions=} opt_options Read options.n * @return {GeometryCollection} Geometry collection.n */nfunction readGeometryCollectionGeometry(object, opt_options) {n var geometries = object.map(n /**n * @param {GeoJSONGeometry} geometry Geometry.n * @return {import("../geom/Geometry.js").default} geometry Geometry.n */n function (geometry) {n return readGeometry(geometry, opt_options);n });n return new GeometryCollection(geometries);n}n/**n * @param {GeoJSONPoint} object Object.n * @return {Point} Point.n */nfunction readPointGeometry(object) {n return new Point(object);n}n/**n * @param {GeoJSONLineString} object Object.n * @return {LineString} LineString.n */nfunction readLineStringGeometry(object) {n return new LineString(object);n}n/**n * @param {GeoJSONMultiLineString} object Object.n * @return {MultiLineString} MultiLineString.n */nfunction readMultiLineStringGeometry(object) {n return new MultiLineString(object);n}n/**n * @param {GeoJSONMultiPoint} object Object.n * @return {MultiPoint} MultiPoint.n */nfunction readMultiPointGeometry(object) {n return new MultiPoint(object);n}n/**n * @param {GeoJSONMultiPolygon} object Object.n * @return {MultiPolygon} MultiPolygon.n */nfunction readMultiPolygonGeometry(object) {n return new MultiPolygon(object);n}n/**n * @param {GeoJSONPolygon} object Object.n * @return {Polygon} Polygon.n */nfunction readPolygonGeometry(object) {n return new Polygon(object);n}n/**n * @param {import("../geom/Geometry.js").default} geometry Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {GeoJSONGeometry} GeoJSON geometry.n */nfunction writeGeometry(geometry, opt_options) {n geometry = transformGeometryWithOptions(geometry, true, opt_options);n var type = geometry.getType();n /** @type {GeoJSONGeometry} */n var geoJSON;n switch (type) {n case GeometryType.POINT: {n geoJSON = writePointGeometry(/** @type {Point} */ (geometry), opt_options);n break;n }n case GeometryType.LINE_STRING: {n geoJSON = writeLineStringGeometry(/** @type {LineString} */ (geometry), opt_options);n break;n }n case GeometryType.POLYGON: {n geoJSON = writePolygonGeometry(/** @type {Polygon} */ (geometry), opt_options);n break;n }n case GeometryType.MULTI_POINT: {n geoJSON = writeMultiPointGeometry(/** @type {MultiPoint} */ (geometry), opt_options);n break;n }n case GeometryType.MULTI_LINE_STRING: {n geoJSON = writeMultiLineStringGeometry(/** @type {MultiLineString} */ (geometry), opt_options);n break;n }n case GeometryType.MULTI_POLYGON: {n geoJSON = writeMultiPolygonGeometry(/** @type {MultiPolygon} */ (geometry), opt_options);n break;n }n case GeometryType.GEOMETRY_COLLECTION: {n geoJSON = writeGeometryCollectionGeometry(/** @type {GeometryCollection} */ (geometry), opt_options);n break;n }n case GeometryType.CIRCLE: {n geoJSON = {n type: 'GeometryCollection',n geometries: []n };n break;n }n default: {n throw new Error('Unsupported geometry type: ' + type);n }n }n return geoJSON;n}n/**n * @param {GeometryCollection} geometry Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {GeoJSONGeometryCollection} GeoJSON geometry collection.n */nfunction writeGeometryCollectionGeometry(geometry, opt_options) {n var geometries = geometry.getGeometriesArray().map(function (geometry) {n var options = assign({}, opt_options);n delete options.featureProjection;n return writeGeometry(geometry, options);n });n return {n type: 'GeometryCollection',n geometries: geometriesn };n}n/**n * @param {LineString} geometry Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {GeoJSONGeometry} GeoJSON geometry.n */nfunction writeLineStringGeometry(geometry, opt_options) {n return {n type: 'LineString',n coordinates: geometry.getCoordinates()n };n}n/**n * @param {MultiLineString} geometry Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {GeoJSONGeometry} GeoJSON geometry.n */nfunction writeMultiLineStringGeometry(geometry, opt_options) {n return {n type: 'MultiLineString',n coordinates: geometry.getCoordinates()n };n}n/**n * @param {MultiPoint} geometry Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {GeoJSONGeometry} GeoJSON geometry.n */nfunction writeMultiPointGeometry(geometry, opt_options) {n return {n type: 'MultiPoint',n coordinates: geometry.getCoordinates()n };n}n/**n * @param {MultiPolygon} geometry Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {GeoJSONGeometry} GeoJSON geometry.n */nfunction writeMultiPolygonGeometry(geometry, opt_options) {n var right;n if (opt_options) {n right = opt_options.rightHanded;n }n return {n type: 'MultiPolygon',n coordinates: geometry.getCoordinates(right)n };n}n/**n * @param {Point} geometry Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {GeoJSONGeometry} GeoJSON geometry.n */nfunction writePointGeometry(geometry, opt_options) {n return {n type: 'Point',n coordinates: geometry.getCoordinates()n };n}n/**n * @param {Polygon} geometry Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {GeoJSONGeometry} GeoJSON geometry.n */nfunction writePolygonGeometry(geometry, opt_options) {n var right;n if (opt_options) {n right = opt_options.rightHanded;n }n return {n type: 'Polygon',n coordinates: geometry.getCoordinates(right)n };n}nexport default GeoJSON;n//# sourceMappingURL=GeoJSON.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/TextFeaturen */nimport { abstract } from '../util.js';nimport FeatureFormat from '../format/Feature.js';nimport FormatType from '../format/FormatType.js';n/**n * @classdescn * Abstract base class; normally only used for creating subclasses and notn * instantiated in apps.n * Base class for text feature formats.n *n * @abstractn */nvar TextFeature = /** @class */ (function (_super) {n __extends(TextFeature, _super);n function TextFeature() {n return _super.call(this) || this;n }n /**n * @inheritDocn */n TextFeature.prototype.getType = function () {n return FormatType.TEXT;n };n /**n * Read the feature from the source.n *n * @param {Document|Node|Object|string} source Source.n * @param {import("./Feature.js").ReadOptions=} opt_options Read options.n * @return {import("../Feature.js").default} Feature.n * @apin */n TextFeature.prototype.readFeature = function (source, opt_options) {n return this.readFeatureFromText(getText(source), this.adaptOptions(opt_options));n };n /**n * @abstractn * @param {string} text Text.n * @param {import("./Feature.js").ReadOptions=} opt_options Read options.n * @protectedn * @return {import("../Feature.js").default} Feature.n */n TextFeature.prototype.readFeatureFromText = function (text, opt_options) {n return abstract();n };n /**n * Read the features from the source.n *n * @param {Document|Node|Object|string} source Source.n * @param {import("./Feature.js").ReadOptions=} opt_options Read options.n * @return {Array<import("../Feature.js").default>} Features.n * @apin */n TextFeature.prototype.readFeatures = function (source, opt_options) {n return this.readFeaturesFromText(getText(source), this.adaptOptions(opt_options));n };n /**n * @abstractn * @param {string} text Text.n * @param {import("./Feature.js").ReadOptions=} opt_options Read options.n * @protectedn * @return {Array<import("../Feature.js").default>} Features.n */n TextFeature.prototype.readFeaturesFromText = function (text, opt_options) {n return abstract();n };n /**n * Read the geometry from the source.n *n * @param {Document|Node|Object|string} source Source.n * @param {import("./Feature.js").ReadOptions=} opt_options Read options.n * @return {import("../geom/Geometry.js").default} Geometry.n * @apin */n TextFeature.prototype.readGeometry = function (source, opt_options) {n return this.readGeometryFromText(getText(source), this.adaptOptions(opt_options));n };n /**n * @abstractn * @param {string} text Text.n * @param {import("./Feature.js").ReadOptions=} opt_options Read options.n * @protectedn * @return {import("../geom/Geometry.js").default} Geometry.n */n TextFeature.prototype.readGeometryFromText = function (text, opt_options) {n return abstract();n };n /**n * Read the projection from the source.n *n * @param {Document|Node|Object|string} source Source.n * @return {import("../proj/Projection.js").default} Projection.n * @apin */n TextFeature.prototype.readProjection = function (source) {n return this.readProjectionFromText(getText(source));n };n /**n * @param {string} text Text.n * @protectedn * @return {import("../proj/Projection.js").default} Projection.n */n TextFeature.prototype.readProjectionFromText = function (text) {n return this.dataProjection;n };n /**n * Encode a feature as a string.n *n * @param {import("../Feature.js").default} feature Feature.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {string} Encoded feature.n * @apin */n TextFeature.prototype.writeFeature = function (feature, opt_options) {n return this.writeFeatureText(feature, this.adaptOptions(opt_options));n };n /**n * @abstractn * @param {import("../Feature.js").default} feature Features.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @protectedn * @return {string} Text.n */n TextFeature.prototype.writeFeatureText = function (feature, opt_options) {n return abstract();n };n /**n * Encode an array of features as string.n *n * @param {Array<import("../Feature.js").default>} features Features.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {string} Encoded features.n * @apin */n TextFeature.prototype.writeFeatures = function (features, opt_options) {n return this.writeFeaturesText(features, this.adaptOptions(opt_options));n };n /**n * @abstractn * @param {Array<import("../Feature.js").default>} features Features.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @protectedn * @return {string} Text.n */n TextFeature.prototype.writeFeaturesText = function (features, opt_options) {n return abstract();n };n /**n * Write a single geometry.n *n * @param {import("../geom/Geometry.js").default} geometry Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @return {string} Geometry.n * @apin */n TextFeature.prototype.writeGeometry = function (geometry, opt_options) {n return this.writeGeometryText(geometry, this.adaptOptions(opt_options));n };n /**n * @abstractn * @param {import("../geom/Geometry.js").default} geometry Geometry.n * @param {import("./Feature.js").WriteOptions=} opt_options Write options.n * @protectedn * @return {string} Text.n */n TextFeature.prototype.writeGeometryText = function (geometry, opt_options) {n return abstract();n };n return TextFeature;n}(FeatureFormat));n/**n * @param {Document|Node|Object|string} source Source.n * @return {string} Text.n */nfunction getText(source) {n if (typeof source === 'string') {n return source;n }n else {n return '';n }n}nexport default TextFeature;n//# sourceMappingURL=TextFeature.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/KMLn */nimport Feature from '../Feature.js';nimport { extend, includes } from '../array.js';nimport { assert } from '../asserts.js';nimport { asArray } from '../color.js';nimport { transformGeometryWithOptions } from './Feature.js';nimport XMLFeature from './XMLFeature.js';nimport { readDecimal, readBoolean, readString, writeStringTextNode, writeCDATASection, writeDecimalTextNode, writeBooleanTextNode } from './xsd.js';nimport GeometryCollection from '../geom/GeometryCollection.js';nimport GeometryLayout from '../geom/GeometryLayout.js';nimport GeometryType from '../geom/GeometryType.js';nimport LineString from '../geom/LineString.js';nimport MultiLineString from '../geom/MultiLineString.js';nimport MultiPoint from '../geom/MultiPoint.js';nimport MultiPolygon from '../geom/MultiPolygon.js';nimport Point from '../geom/Point.js';nimport Polygon from '../geom/Polygon.js';nimport { toRadians } from '../math.js';nimport { get as getProjection } from '../proj.js';nimport Fill from '../style/Fill.js';nimport Icon from '../style/Icon.js';nimport IconAnchorUnits from '../style/IconAnchorUnits.js';nimport IconOrigin from '../style/IconOrigin.js';nimport Stroke from '../style/Stroke.js';nimport Style from '../style/Style.js';nimport Text from '../style/Text.js';nimport { createElementNS, getAllTextContent, isDocument, makeArrayExtender, makeArrayPusher, makeChildAppender, makeObjectPropertySetter, makeReplacer, makeSequence, makeSimpleNodeFactory, makeStructureNS, OBJECT_PROPERTY_NODE_FACTORY, parse, parseNode, pushParseAndPop, pushSerializeAndPop, XML_SCHEMA_INSTANCE_URI } from '../xml.js';n/**n * @typedef {Object} Vec2n * @property {number} xn * @property {IconAnchorUnits} xunitsn * @property {number} yn * @property {IconAnchorUnits} yunitsn * @property {IconOrigin} originn */n/**n * @typedef {Object} GxTrackObjectn * @property {Array<number>} flatCoordinatesn * @property {Array<number>} whensn */n/**n * @constn * @type {Array<string>}n */nvar GX_NAMESPACE_URIS = [n 'www.google.com/kml/ext/2.2’n];n/**n * @constn * @type {Array<null|string>}n */nvar NAMESPACE_URIS = [n null,n 'earth.google.com/kml/2.0’,n 'earth.google.com/kml/2.1’,n 'earth.google.com/kml/2.2’,n 'www.opengis.net/kml/2.2’n];n/**n * @constn * @type {string}n */nvar SCHEMA_LOCATION = 'www.opengis.net/kml/2.2 ' +n 'developers.google.com/kml/schema/kml22gx.xsd’;n/**n * @type {Object<string, IconAnchorUnits>}n */nvar ICON_ANCHOR_UNITS_MAP = {n 'fraction': IconAnchorUnits.FRACTION,n 'pixels': IconAnchorUnits.PIXELS,n 'insetPixels': IconAnchorUnits.PIXELSn};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar PLACEMARK_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'ExtendedData': extendedDataParser,n 'Region': regionParser,n 'MultiGeometry': makeObjectPropertySetter(readMultiGeometry, 'geometry'),n 'LineString': makeObjectPropertySetter(readLineString, 'geometry'),n 'LinearRing': makeObjectPropertySetter(readLinearRing, 'geometry'),n 'Point': makeObjectPropertySetter(readPoint, 'geometry'),n 'Polygon': makeObjectPropertySetter(readPolygon, 'geometry'),n 'Style': makeObjectPropertySetter(readStyle),n 'StyleMap': placemarkStyleMapParser,n 'address': makeObjectPropertySetter(readString),n 'description': makeObjectPropertySetter(readString),n 'name': makeObjectPropertySetter(readString),n 'open': makeObjectPropertySetter(readBoolean),n 'phoneNumber': makeObjectPropertySetter(readString),n 'styleUrl': makeObjectPropertySetter(readURI),n 'visibility': makeObjectPropertySetter(readBoolean)n}, makeStructureNS(GX_NAMESPACE_URIS, {n 'MultiTrack': makeObjectPropertySetter(readGxMultiTrack, 'geometry'),n 'Track': makeObjectPropertySetter(readGxTrack, 'geometry')n}));n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar NETWORK_LINK_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'ExtendedData': extendedDataParser,n 'Region': regionParser,n 'Link': linkParser,n 'address': makeObjectPropertySetter(readString),n 'description': makeObjectPropertySetter(readString),n 'name': makeObjectPropertySetter(readString),n 'open': makeObjectPropertySetter(readBoolean),n 'phoneNumber': makeObjectPropertySetter(readString),n 'visibility': makeObjectPropertySetter(readBoolean)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar LINK_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'href': makeObjectPropertySetter(readURI)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar REGION_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'LatLonAltBox': latLonAltBoxParser,n 'Lod': lodParsern});n/**n * @constn * @type {Object<string, Array<string>>}n */n// @ts-ignorenvar KML_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [n 'Document', 'Placemark'n]);n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar KML_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'Document': makeChildAppender(writeDocument),n 'Placemark': makeChildAppender(writePlacemark)n});n/**n * @type {import("../color.js").Color}n */nvar DEFAULT_COLOR;n/**n * @type {Fill}n */nvar DEFAULT_FILL_STYLE = null;n/**n * Get the default fill style (or null if not yet set).n * @return {Fill} The default fill style.n */nexport function getDefaultFillStyle() {n return DEFAULT_FILL_STYLE;n}n/**n * @type {import("../size.js").Size}n */nvar DEFAULT_IMAGE_STYLE_ANCHOR;n/**n * @type {IconAnchorUnits}n */nvar DEFAULT_IMAGE_STYLE_ANCHOR_X_UNITS;n/**n * @type {IconAnchorUnits}n */nvar DEFAULT_IMAGE_STYLE_ANCHOR_Y_UNITS;n/**n * @type {import("../size.js").Size}n */nvar DEFAULT_IMAGE_STYLE_SIZE;n/**n * @type {string}n */nvar DEFAULT_IMAGE_STYLE_SRC;n/**n * @type {number}n */nvar DEFAULT_IMAGE_SCALE_MULTIPLIER;n/**n * @type {import("../style/Image.js").default}n */nvar DEFAULT_IMAGE_STYLE = null;n/**n * Get the default image style (or null if not yet set).n * @return {import("../style/Image.js").default} The default image style.n */nexport function getDefaultImageStyle() {n return DEFAULT_IMAGE_STYLE;n}n/**n * @type {string}n */nvar DEFAULT_NO_IMAGE_STYLE;n/**n * @type {Stroke}n */nvar DEFAULT_STROKE_STYLE = null;n/**n * Get the default stroke style (or null if not yet set).n * @return {Stroke} The default stroke style.n */nexport function getDefaultStrokeStyle() {n return DEFAULT_STROKE_STYLE;n}n/**n * @type {Stroke}n */nvar DEFAULT_TEXT_STROKE_STYLE;n/**n * @type {Text}n */nvar DEFAULT_TEXT_STYLE = null;n/**n * Get the default text style (or null if not yet set).n * @return {Text} The default text style.n */nexport function getDefaultTextStyle() {n return DEFAULT_TEXT_STYLE;n}n/**n * @type {Style}n */nvar DEFAULT_STYLE = null;n/**n * Get the default style (or null if not yet set).n * @return {Style} The default style.n */nexport function getDefaultStyle() {n return DEFAULT_STYLE;n}n/**n * @type {Array<Style>}n */nvar DEFAULT_STYLE_ARRAY = null;n/**n * Get the default style array (or null if not yet set).n * @return {Array<Style>} The default style.n */nexport function getDefaultStyleArray() {n return DEFAULT_STYLE_ARRAY;n}nfunction createStyleDefaults() {n DEFAULT_COLOR = [255, 255, 255, 1];n DEFAULT_FILL_STYLE = new Fill({n color: DEFAULT_COLORn });n DEFAULT_IMAGE_STYLE_ANCHOR = [20, 2]; // FIXME maybe [8, 32] ?n DEFAULT_IMAGE_STYLE_ANCHOR_X_UNITS = IconAnchorUnits.PIXELS;n DEFAULT_IMAGE_STYLE_ANCHOR_Y_UNITS = IconAnchorUnits.PIXELS;n DEFAULT_IMAGE_STYLE_SIZE = [64, 64];n DEFAULT_IMAGE_STYLE_SRC =n 'maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png’;n DEFAULT_IMAGE_SCALE_MULTIPLIER = 0.5;n DEFAULT_IMAGE_STYLE = new Icon({n anchor: DEFAULT_IMAGE_STYLE_ANCHOR,n anchorOrigin: IconOrigin.BOTTOM_LEFT,n anchorXUnits: DEFAULT_IMAGE_STYLE_ANCHOR_X_UNITS,n anchorYUnits: DEFAULT_IMAGE_STYLE_ANCHOR_Y_UNITS,n crossOrigin: 'anonymous',n rotation: 0,n scale: DEFAULT_IMAGE_SCALE_MULTIPLIER,n size: DEFAULT_IMAGE_STYLE_SIZE,n src: DEFAULT_IMAGE_STYLE_SRCn });n DEFAULT_NO_IMAGE_STYLE = 'NO_IMAGE';n DEFAULT_STROKE_STYLE = new Stroke({n color: DEFAULT_COLOR,n width: 1n });n DEFAULT_TEXT_STROKE_STYLE = new Stroke({n color: [51, 51, 51, 1],n width: 2n });n DEFAULT_TEXT_STYLE = new Text({n font: 'bold 16px Helvetica',n fill: DEFAULT_FILL_STYLE,n stroke: DEFAULT_TEXT_STROKE_STYLE,n scale: 0.8n });n DEFAULT_STYLE = new Style({n fill: DEFAULT_FILL_STYLE,n image: DEFAULT_IMAGE_STYLE,n text: DEFAULT_TEXT_STYLE,n stroke: DEFAULT_STROKE_STYLE,n zIndex: 0n });n DEFAULT_STYLE_ARRAY = [DEFAULT_STYLE];n}n/**n * @typedef {Object} Optionsn * @property {boolean} [extractStyles=true] Extract styles from the KML.n * @property {boolean} [showPointNames=true] Show names as labels for placemarks which contain points.n * @property {Array<Style>} [defaultStyle] Default style. Then * default default style is the same as Google Earth.n * @property {boolean} [writeStyles=true] Write styles into KML.n */n/**n * @classdescn * Feature format for reading and writing data in the KML format.n *n * {@link module:ol/format/KML~KML#readFeature} will read the first feature fromn * a KML source.n *n * MultiGeometries are converted into GeometryCollections if they are a mix ofn * geometry types, and into MultiPoint/MultiLineString/MultiPolygon if they aren * all of the same type.n *n * Note that the KML format uses the URL() constructor. Older browsers such as IEn * which do not support this will need a URL polyfill to be loaded before use.n *n * @apin */nvar KML = /** @class */ (function (_super) {n __extends(KML, _super);n /**n * @param {Options=} opt_options Options.n */n function KML(opt_options) {n var _this = _super.call(this) || this;n var options = opt_options ? opt_options : {};n if (!DEFAULT_STYLE_ARRAY) {n createStyleDefaults();n }n /**n * @inheritDocn */n _this.dataProjection = getProjection('EPSG:4326');n /**n * @privaten * @type {Array<Style>}n */n this.defaultStyle = options.defaultStyle ?n options.defaultStyle : DEFAULT_STYLE_ARRAY;n /**n * @privaten * @type {boolean}n */n this.extractStyles = options.extractStyles !== undefined ?n options.extractStyles : true;n /**n * @privaten * @type {boolean}n */n this.writeStyles = options.writeStyles !== undefined ?n options.writeStyles : true;n /**n * @privaten * @type {!Object<string, (Array<Style>|string)>}n */n this.sharedStyles = {};n /**n * @privaten * @type {boolean}n */n this.showPointNames = options.showPointNames !== undefined ?n options.showPointNames : true;n return _this;n }n /**n * @param {Node} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten * @return {Array<Feature>|undefined} Features.n */n KML.prototype.readDocumentOrFolder_ = function (node, objectStack) {n // FIXME use scope somehown var parsersNS = makeStructureNS(NAMESPACE_URIS, {n 'Document': makeArrayExtender(this.readDocumentOrFolder_, this),n 'Folder': makeArrayExtender(this.readDocumentOrFolder_, this),n 'Placemark': makeArrayPusher(this.readPlacemark_, this),n 'Style': this.readSharedStyle_.bind(this),n 'StyleMap': this.readSharedStyleMap_.bind(this)n });n /** @type {Array<Feature>} */n // @ts-ignoren var features = pushParseAndPop([], parsersNS, node, objectStack, this);n if (features) {n return features;n }n else {n return undefined;n }n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten * @return {Feature|undefined} Feature.n */n KML.prototype.readPlacemark_ = function (node, objectStack) {n var object = pushParseAndPop({ 'geometry': null }, PLACEMARK_PARSERS, node, objectStack);n if (!object) {n return undefined;n }n var feature = new Feature();n var id = node.getAttribute('id');n if (id !== null) {n feature.setId(id);n }n var options = /** @type {import("./Feature.js").ReadOptions} */ (objectStack);n var geometry = object;n if (geometry) {n transformGeometryWithOptions(geometry, false, options);n }n feature.setGeometry(geometry);n delete object;n if (this.extractStyles_) {n var style = object;n var styleUrl = object;n var styleFunction = createFeatureStyleFunction(style, styleUrl, this.defaultStyle_, this.sharedStyles_, this.showPointNames_);n feature.setStyle(styleFunction);n }n delete object;n // we do not remove the styleUrl property from the object, so itn // gets stored on feature when setProperties is calledn feature.setProperties(object, true);n return feature;n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten */n KML.prototype.readSharedStyle_ = function (node, objectStack) {n var id = node.getAttribute('id');n if (id !== null) {n var style = readStyle(node, objectStack);n if (style) {n var styleUri = void 0;n var baseURI = node.baseURI;n if (!baseURI || baseURI == 'about:blank') {n baseURI = window.location.href;n }n if (baseURI) {n var url = new URL('#' + id, baseURI);n styleUri = url.href;n }n else {n styleUri = '#' + id;n }n this.sharedStyles_ = style;n }n }n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @privaten */n KML.prototype.readSharedStyleMap_ = function (node, objectStack) {n var id = node.getAttribute('id');n if (id === null) {n return;n }n var styleMapValue = readStyleMapValue(node, objectStack);n if (!styleMapValue) {n return;n }n var styleUri;n var baseURI = node.baseURI;n if (!baseURI || baseURI == 'about:blank') {n baseURI = window.location.href;n }n if (baseURI) {n var url = new URL('#' + id, baseURI);n styleUri = url.href;n }n else {n styleUri = '#' + id;n }n this.sharedStyles_ = styleMapValue;n };n /**n * @inheritDocn */n KML.prototype.readFeatureFromNode = function (node, opt_options) {n if (!includes(NAMESPACE_URIS, node.namespaceURI)) {n return null;n }n var feature = this.readPlacemark_(node, [this.getReadOptions(node, opt_options)]);n if (feature) {n return feature;n }n else {n return null;n }n };n /**n * @inheritDocn */n KML.prototype.readFeaturesFromNode = function (node, opt_options) {n if (!includes(NAMESPACE_URIS, node.namespaceURI)) {n return [];n }n var features;n var localName = node.localName;n if (localName == 'Document' || localName == 'Folder') {n features = this.readDocumentOrFolder_(node, [this.getReadOptions(node, opt_options)]);n if (features) {n return features;n }n else {n return [];n }n }n else if (localName == 'Placemark') {n var feature = this.readPlacemark_(node, [this.getReadOptions(node, opt_options)]);n if (feature) {n return [feature];n }n else {n return [];n }n }n else if (localName == 'kml') {n features = [];n for (var n = node.firstElementChild; n; n = n.nextElementSibling) {n var fs = this.readFeaturesFromNode(n, opt_options);n if (fs) {n extend(features, fs);n }n }n return features;n }n else {n return [];n }n };n /**n * Read the name of the KML.n *n * @param {Document|Element|string} source Source.n * @return {string|undefined} Name.n * @apin */n KML.prototype.readName = function (source) {n if (!source) {n return undefined;n }n else if (typeof source === 'string') {n var doc = parse(source);n return this.readNameFromDocument(doc);n }n else if (isDocument(source)) {n return this.readNameFromDocument(/** @type {Document} */ (source));n }n else {n return this.readNameFromNode(/** @type {Element} */ (source));n }n };n /**n * @param {Document} doc Document.n * @return {string|undefined} Name.n */n KML.prototype.readNameFromDocument = function (doc) {n for (var n = /** @type {Node} */ (doc.firstChild); n; n = n.nextSibling) {n if (n.nodeType == Node.ELEMENT_NODE) {n var name_1 = this.readNameFromNode(/** @type {Element} */ (n));n if (name_1) {n return name_1;n }n }n }n return undefined;n };n /**n * @param {Element} node Node.n * @return {string|undefined} Name.n */n KML.prototype.readNameFromNode = function (node) {n for (var n = node.firstElementChild; n; n = n.nextElementSibling) {n if (includes(NAMESPACE_URIS, n.namespaceURI) &&n n.localName == 'name') {n return readString(n);n }n }n for (var n = node.firstElementChild; n; n = n.nextElementSibling) {n var localName = n.localName;n if (includes(NAMESPACE_URIS, n.namespaceURI) &&n (localName == 'Document' ||n localName == 'Folder' ||n localName == 'Placemark' ||n localName == 'kml')) {n var name_2 = this.readNameFromNode(n);n if (name_2) {n return name_2;n }n }n }n return undefined;n };n /**n * Read the network links of the KML.n *n * @param {Document|Element|string} source Source.n * @return {Array<Object>} Network links.n * @apin */n KML.prototype.readNetworkLinks = function (source) {n var networkLinks = [];n if (typeof source === 'string') {n var doc = parse(source);n extend(networkLinks, this.readNetworkLinksFromDocument(doc));n }n else if (isDocument(source)) {n extend(networkLinks, this.readNetworkLinksFromDocument(n /** @type {Document} */ (source)));n }n else {n extend(networkLinks, this.readNetworkLinksFromNode(n /** @type {Element} */ (source)));n }n return networkLinks;n };n /**n * @param {Document} doc Document.n * @return {Array<Object>} Network links.n */n KML.prototype.readNetworkLinksFromDocument = function (doc) {n var networkLinks = [];n for (var n = /** @type {Node} */ (doc.firstChild); n; n = n.nextSibling) {n if (n.nodeType == Node.ELEMENT_NODE) {n extend(networkLinks, this.readNetworkLinksFromNode(/** @type {Element} */ (n)));n }n }n return networkLinks;n };n /**n * @param {Element} node Node.n * @return {Array<Object>} Network links.n */n KML.prototype.readNetworkLinksFromNode = function (node) {n var networkLinks = [];n for (var n = node.firstElementChild; n; n = n.nextElementSibling) {n if (includes(NAMESPACE_URIS, n.namespaceURI) &&n n.localName == 'NetworkLink') {n var obj = pushParseAndPop({}, NETWORK_LINK_PARSERS, n, []);n networkLinks.push(obj);n }n }n for (var n = node.firstElementChild; n; n = n.nextElementSibling) {n var localName = n.localName;n if (includes(NAMESPACE_URIS, n.namespaceURI) &&n (localName == 'Document' ||n localName == 'Folder' ||n localName == 'kml')) {n extend(networkLinks, this.readNetworkLinksFromNode(n));n }n }n return networkLinks;n };n /**n * Read the regions of the KML.n *n * @param {Document|Element|string} source Source.n * @return {Array<Object>} Regions.n * @apin */n KML.prototype.readRegion = function (source) {n var regions = [];n if (typeof source === 'string') {n var doc = parse(source);n extend(regions, this.readRegionFromDocument(doc));n }n else if (isDocument(source)) {n extend(regions, this.readRegionFromDocument(n /** @type {Document} */ (source)));n }n else {n extend(regions, this.readRegionFromNode(n /** @type {Element} */ (source)));n }n return regions;n };n /**n * @param {Document} doc Document.n * @return {Array<Object>} Region.n */n KML.prototype.readRegionFromDocument = function (doc) {n var regions = [];n for (var n = /** @type {Node} */ (doc.firstChild); n; n = n.nextSibling) {n if (n.nodeType == Node.ELEMENT_NODE) {n extend(regions, this.readRegionFromNode(/** @type {Element} */ (n)));n }n }n return regions;n };n /**n * @param {Element} node Node.n * @return {Array<Object>} Region.n * @apin */n KML.prototype.readRegionFromNode = function (node) {n var regions = [];n for (var n = node.firstElementChild; n; n = n.nextElementSibling) {n if (includes(NAMESPACE_URIS, n.namespaceURI) &&n n.localName == 'Region') {n var obj = pushParseAndPop({}, REGION_PARSERS, n, []);n regions.push(obj);n }n }n for (var n = node.firstElementChild; n; n = n.nextElementSibling) {n var localName = n.localName;n if (includes(NAMESPACE_URIS, n.namespaceURI) &&n (localName == 'Document' ||n localName == 'Folder' ||n localName == 'kml')) {n extend(regions, this.readRegionFromNode(n));n }n }n return regions;n };n /**n * Encode an array of features in the KML format as an XML node. GeometryCollections,n * MultiPoints, MultiLineStrings, and MultiPolygons are output as MultiGeometries.n *n * @param {Array<Feature>} features Features.n * @param {import("./Feature.js").WriteOptions=} opt_options Options.n * @return {Node} Node.n * @overriden * @apin */n KML.prototype.writeFeaturesNode = function (features, opt_options) {n opt_options = this.adaptOptions(opt_options);n var kml = createElementNS(NAMESPACE_URIS, 'kml');n var xmlnsUri = 'www.w3.org/2000/xmlns/‘;n kml.setAttributeNS(xmlnsUri, 'xmlns:gx', GX_NAMESPACE_URIS);n kml.setAttributeNS(xmlnsUri, 'xmlns:xsi', XML_SCHEMA_INSTANCE_URI);n kml.setAttributeNS(XML_SCHEMA_INSTANCE_URI, 'xsi:schemaLocation', SCHEMA_LOCATION);n var /** @type {import("../xml.js").NodeStackItem} */ context = { node: kml };n /** @type {!Object<string, (Array<Feature>|Feature|undefined)>} */n var properties = {};n if (features.length > 1) {n properties = features;n }n else if (features.length == 1) {n properties = features;n }n var orderedKeys = KML_SEQUENCE;n var values = makeSequence(properties, orderedKeys);n pushSerializeAndPop(context, KML_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, values, [opt_options], orderedKeys, this);n return kml;n };n return KML;n}(XMLFeature));n/**n * @param {Style|undefined} foundStyle Style.n * @param {string} name Name.n * @return {Style} style Style.n */nfunction createNameStyleFunction(foundStyle, name) {n var textStyle = null;n var textOffset = [0, 0];n var textAlign = 'start';n if (foundStyle.getImage()) {n var imageSize = foundStyle.getImage().getImageSize();n if (imageSize === null) {n imageSize = DEFAULT_IMAGE_STYLE_SIZE;n }n if (imageSize.length == 2) {n var imageScale = foundStyle.getImage().getScale();n // Offset the label to be centered to the right of the icon, if there isn // one.n textOffset = imageScale * imageSize / 2;n textOffset = -imageScale * imageSize / 2;n textAlign = 'left';n }n }n if (foundStyle.getText() !== null) {n // clone the text style, customizing it with name, alignments and offset.n // Note that kml does not support many text options that OpenLayers does (rotation, textBaseline).n var foundText = foundStyle.getText();n textStyle = foundText.clone();n textStyle.setFont(foundText.getFont() || DEFAULT_TEXT_STYLE.getFont());n textStyle.setScale(foundText.getScale() || DEFAULT_TEXT_STYLE.getScale());n textStyle.setFill(foundText.getFill() || DEFAULT_TEXT_STYLE.getFill());n textStyle.setStroke(foundText.getStroke() || DEFAULT_TEXT_STROKE_STYLE);n }n else {n textStyle = DEFAULT_TEXT_STYLE.clone();n }n textStyle.setText(name);n textStyle.setOffsetX(textOffset);n textStyle.setOffsetY(textOffset);n textStyle.setTextAlign(textAlign);n var nameStyle = new Style({n text: textStylen });n return nameStyle;n}n/**n * @param {Array<Style>|undefined} style Style.n * @param {string} styleUrl Style URL.n * @param {Array<Style>} defaultStyle Default style.n * @param {!Object<string, (Array<Style>|string)>} sharedStyles Shared styles.n * @param {boolean|undefined} showPointNames true to show names for point placemarks.n * @return {import("../style/Style.js").StyleFunction} Feature style function.n */nfunction createFeatureStyleFunction(style, styleUrl, defaultStyle, sharedStyles, showPointNames) {n return (n /**n * @param {Feature} feature feature.n * @param {number} resolution Resolution.n * @return {Array<Style>} Style.n */n function (feature, resolution) {n var drawName = showPointNames;n /** @type {Style|undefined} */n var nameStyle;n var name = '';n if (drawName) {n var geometry = feature.getGeometry();n if (geometry) {n drawName = geometry.getType() === GeometryType.POINT;n }n }n if (drawName) {n name = /** @type {string} */ (feature.get('name'));n drawName = drawName && !!name;n }n if (style) {n if (drawName) {n nameStyle = createNameStyleFunction(style, name);n return style.concat(nameStyle);n }n return style;n }n if (styleUrl) {n var foundStyle = findStyle(styleUrl, defaultStyle, sharedStyles);n if (drawName) {n nameStyle = createNameStyleFunction(foundStyle, name);n return foundStyle.concat(nameStyle);n }n return foundStyle;n }n if (drawName) {n nameStyle = createNameStyleFunction(defaultStyle, name);n return defaultStyle.concat(nameStyle);n }n return defaultStyle;n });n}n/**n * @param {Array<Style>|string|undefined} styleValue Style value.n * @param {Array<Style>} defaultStyle Default style.n * @param {!Object<string, (Array<Style>|string)>} sharedStylesn * Shared styles.n * @return {Array<Style>} Style.n */nfunction findStyle(styleValue, defaultStyle, sharedStyles) {n if (Array.isArray(styleValue)) {n return styleValue;n }n else if (typeof styleValue === 'string') {n // KML files in the wild occasionally forget the leading `#` on styleUrlsn // defined in the same document. Add a leading `#` if it enables to findn // a style.n if (!(styleValue in sharedStyles) && ('#' + styleValue in sharedStyles)) {n styleValue = '#' + styleValue;n }n return findStyle(sharedStyles, defaultStyle, sharedStyles);n }n else {n return defaultStyle;n }n}n/**n * @param {Node} node Node.n * @return {import("../color.js").Color|undefined} Color.n */nfunction readColor(node) {n var s = getAllTextContent(node, false);n // The KML specification states that colors should not include a leading `#`n // but we tolerate them.n var m = /^\s*#?\s*({8})\s*$/.exec(s);n if (m) {n var hexColor = m;n return [n parseInt(hexColor.substr(6, 2), 16),n parseInt(hexColor.substr(4, 2), 16),n parseInt(hexColor.substr(2, 2), 16),n parseInt(hexColor.substr(0, 2), 16) / 255n ];n }n else {n return undefined;n }n}n/**n * @param {Node} node Node.n * @return {Array<number>|undefined} Flat coordinates.n */nexport function readFlatCoordinates(node) {n var s = getAllTextContent(node, false);n var flatCoordinates = [];n // The KML specification states that coordinate tuples should not includen // spaces, but we tolerate them.n var re = /^\s*(?\d*\.?\d+(?:e?\d+)?)\s*,\s*(?\d*\.?\d+(?:e?\d+)?)(?:\s*,\s*(?\d*\.?\d+(?:e?\d+)?))?\s*/i;n var m;n while ((m = re.exec(s))) {n var x = parseFloat(m);n var y = parseFloat(m);n var z = m ? parseFloat(m) : 0;n flatCoordinates.push(x, y, z);n s = s.substr(m.length);n }n if (s !== '') {n return undefined;n }n return flatCoordinates;n}n/**n * @param {Node} node Node.n * @return {string} URI.n */nfunction readURI(node) {n var s = getAllTextContent(node, false).trim();n var baseURI = node.baseURI;n if (!baseURI || baseURI == 'about:blank') {n baseURI = window.location.href;n }n if (baseURI) {n var url = new URL(s, baseURI);n return url.href;n }n else {n return s;n }n}n/**n * @param {Element} node Node.n * @return {Vec2} Vec2.n */nfunction readVec2(node) {n var xunits = node.getAttribute('xunits');n var yunits = node.getAttribute('yunits');n var origin;n if (xunits !== 'insetPixels') {n if (yunits !== 'insetPixels') {n origin = IconOrigin.BOTTOM_LEFT;n }n else {n origin = IconOrigin.TOP_LEFT;n }n }n else {n if (yunits !== 'insetPixels') {n origin = IconOrigin.BOTTOM_RIGHT;n }n else {n origin = IconOrigin.TOP_RIGHT;n }n }n return {n x: parseFloat(node.getAttribute('x')),n xunits: ICON_ANCHOR_UNITS_MAP,n y: parseFloat(node.getAttribute('y')),n yunits: ICON_ANCHOR_UNITS_MAP,n origin: originn };n}n/**n * @param {Node} node Node.n * @return {number|undefined} Scale.n */nfunction readScale(node) {n return readDecimal(node);n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar STYLE_MAP_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Pair': pairDataParsern});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Array<Style>|string|undefined} StyleMap.n */nfunction readStyleMapValue(node, objectStack) {n return pushParseAndPop(undefined, STYLE_MAP_PARSERS, node, objectStack);n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar ICON_STYLE_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Icon': makeObjectPropertySetter(readIcon),n 'heading': makeObjectPropertySetter(readDecimal),n 'hotSpot': makeObjectPropertySetter(readVec2),n 'scale': makeObjectPropertySetter(readScale)n});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction iconStyleParser(node, objectStack) {n // FIXME refreshModen // FIXME refreshIntervaln // FIXME viewRefreshTimen // FIXME viewBoundScalen // FIXME viewFormatn // FIXME httpQueryn var object = pushParseAndPop({}, ICON_STYLE_PARSERS, node, objectStack);n if (!object) {n return;n }n var styleObject = /** @type {Object} */ (objectStack[objectStack.length - 1]);n var IconObject = 'Icon' in object ? object : {};n var drawIcon = (!('Icon' in object) || Object.keys(IconObject).length > 0);n var src;n var href = /** @type {string|undefined} */ (IconObject);n if (href) {n src = href;n }n else if (drawIcon) {n src = DEFAULT_IMAGE_STYLE_SRC;n }n var anchor, anchorXUnits, anchorYUnits;n var anchorOrigin = IconOrigin.BOTTOM_LEFT;n var hotSpot = /** @type {Vec2|undefined} */ (object);n if (hotSpot) {n anchor = [hotSpot.x, hotSpot.y];n anchorXUnits = hotSpot.xunits;n anchorYUnits = hotSpot.yunits;n anchorOrigin = hotSpot.origin;n }n else if (src === DEFAULT_IMAGE_STYLE_SRC) {n anchor = DEFAULT_IMAGE_STYLE_ANCHOR;n anchorXUnits = DEFAULT_IMAGE_STYLE_ANCHOR_X_UNITS;n anchorYUnits = DEFAULT_IMAGE_STYLE_ANCHOR_Y_UNITS;n }n else if (/^\/\/maps\.(?:google|gstatic)\.com\//.test(src)) {n anchor = [0.5, 0];n anchorXUnits = IconAnchorUnits.FRACTION;n anchorYUnits = IconAnchorUnits.FRACTION;n }n var offset;n var x = /** @type {number|undefined} */ (IconObject);n var y = /** @type {number|undefined} */ (IconObject);n if (x !== undefined && y !== undefined) {n offset = [x, y];n }n var size;n var w = /** @type {number|undefined} */ (IconObject);n var h = /** @type {number|undefined} */ (IconObject);n if (w !== undefined && h !== undefined) {n size = [w, h];n }n var rotation;n var heading = /** @type {number} */ (object);n if (heading !== undefined) {n rotation = toRadians(heading);n }n var scale = /** @type {number|undefined} */ (object);n if (drawIcon) {n if (src == DEFAULT_IMAGE_STYLE_SRC) {n size = DEFAULT_IMAGE_STYLE_SIZE;n if (scale === undefined) {n scale = DEFAULT_IMAGE_SCALE_MULTIPLIER;n }n }n var imageStyle = new Icon({n anchor: anchor,n anchorOrigin: anchorOrigin,n anchorXUnits: anchorXUnits,n anchorYUnits: anchorYUnits,n crossOrigin: 'anonymous',n offset: offset,n offsetOrigin: IconOrigin.BOTTOM_LEFT,n rotation: rotation,n scale: scale,n size: size,n src: srcn });n styleObject = imageStyle;n }n else {n // handle the case when we explicitly want to draw no icon.n styleObject = DEFAULT_NO_IMAGE_STYLE;n }n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar LABEL_STYLE_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'color': makeObjectPropertySetter(readColor),n 'scale': makeObjectPropertySetter(readScale)n});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction labelStyleParser(node, objectStack) {n // FIXME colorModen var object = pushParseAndPop({}, LABEL_STYLE_PARSERS, node, objectStack);n if (!object) {n return;n }n var styleObject = objectStack[objectStack.length - 1];n var textStyle = new Text({n fill: new Fill({n color: /** @type {import("../color.js").Color} */ ('color' in object ? object : DEFAULT_COLOR)n }),n scale: /** @type {number|undefined} */ (object)n });n styleObject = textStyle;n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar LINE_STYLE_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'color': makeObjectPropertySetter(readColor),n 'width': makeObjectPropertySetter(readDecimal)n});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction lineStyleParser(node, objectStack) {n // FIXME colorModen // FIXME gx:outerColorn // FIXME gx:outerWidthn // FIXME gx:physicalWidthn // FIXME gx:labelVisibilityn var object = pushParseAndPop({}, LINE_STYLE_PARSERS, node, objectStack);n if (!object) {n return;n }n var styleObject = objectStack[objectStack.length - 1];n var strokeStyle = new Stroke({n color: /** @type {import("../color.js").Color} */ ('color' in object ? object : DEFAULT_COLOR),n width: /** @type {number} */ ('width' in object ? object : 1)n });n styleObject = strokeStyle;n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar POLY_STYLE_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'color': makeObjectPropertySetter(readColor),n 'fill': makeObjectPropertySetter(readBoolean),n 'outline': makeObjectPropertySetter(readBoolean)n});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction polyStyleParser(node, objectStack) {n // FIXME colorModen var object = pushParseAndPop({}, POLY_STYLE_PARSERS, node, objectStack);n if (!object) {n return;n }n var styleObject = objectStack[objectStack.length - 1];n var fillStyle = new Fill({n color: /** @type {import("../color.js").Color} */ ('color' in object ? object : DEFAULT_COLOR)n });n styleObject = fillStyle;n var fill = /** @type {boolean|undefined} */ (object);n if (fill !== undefined) {n styleObject = fill;n }n var outline = /** @type {boolean|undefined} */ (object);n if (outline !== undefined) {n styleObject = outline;n }n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar FLAT_LINEAR_RING_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'coordinates': makeReplacer(readFlatCoordinates)n});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Array<number>} LinearRing flat coordinates.n */nfunction readFlatLinearRing(node, objectStack) {n return pushParseAndPop(null, FLAT_LINEAR_RING_PARSERS, node, objectStack);n}n/**n * @param {Node} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction gxCoordParser(node, objectStack) {n var gxTrackObject = /** @type {GxTrackObject} */ (objectStack[objectStack.length - 1]);n var flatCoordinates = gxTrackObject.flatCoordinates;n var s = getAllTextContent(node, false);n var re = /^\s*(?\d+(?:\.\d*)?(?:e?\d*)?)\s+(?\d+(?:\.\d*)?(?:e?\d*)?)\s+(?\d+(?:\.\d*)?(?:e?\d*)?)\s*$/i;n var m = re.exec(s);n if (m) {n var x = parseFloat(m);n var y = parseFloat(m);n var z = parseFloat(m);n flatCoordinates.push(x, y, z, 0);n }n else {n flatCoordinates.push(0, 0, 0, 0);n }n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar GX_MULTITRACK_GEOMETRY_PARSERS = makeStructureNS(GX_NAMESPACE_URIS, {n 'Track': makeArrayPusher(readGxTrack)n});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {MultiLineString|undefined} MultiLineString.n */nfunction readGxMultiTrack(node, objectStack) {n var lineStrings = pushParseAndPop([], GX_MULTITRACK_GEOMETRY_PARSERS, node, objectStack);n if (!lineStrings) {n return undefined;n }n return new MultiLineString(lineStrings);n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar GX_TRACK_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'when': whenParsern}, makeStructureNS(GX_NAMESPACE_URIS, {n 'coord': gxCoordParsern}));n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {LineString|undefined} LineString.n */nfunction readGxTrack(node, objectStack) {n var gxTrackObject = pushParseAndPop(n /** @type {GxTrackObject} */ ({n flatCoordinates: [],n whens: []n }), GX_TRACK_PARSERS, node, objectStack);n if (!gxTrackObject) {n return undefined;n }n var flatCoordinates = gxTrackObject.flatCoordinates;n var whens = gxTrackObject.whens;n for (var i = 0, ii = Math.min(flatCoordinates.length, whens.length); i < ii; ++i) {n flatCoordinates[4 * i + 3] = whens;n }n return new LineString(flatCoordinates, GeometryLayout.XYZM);n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar ICON_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'href': makeObjectPropertySetter(readURI)n}, makeStructureNS(GX_NAMESPACE_URIS, {n 'x': makeObjectPropertySetter(readDecimal),n 'y': makeObjectPropertySetter(readDecimal),n 'w': makeObjectPropertySetter(readDecimal),n 'h': makeObjectPropertySetter(readDecimal)n}));n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object} Icon object.n */nfunction readIcon(node, objectStack) {n var iconObject = pushParseAndPop({}, ICON_PARSERS, node, objectStack);n if (iconObject) {n return iconObject;n }n else {n return null;n }n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar GEOMETRY_FLAT_COORDINATES_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'coordinates': makeReplacer(readFlatCoordinates)n});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Array<number>} Flat coordinates.n */nfunction readFlatCoordinatesFromNode(node, objectStack) {n return pushParseAndPop(null, GEOMETRY_FLAT_COORDINATES_PARSERS, node, objectStack);n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar EXTRUDE_AND_ALTITUDE_MODE_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'extrude': makeObjectPropertySetter(readBoolean),n 'tessellate': makeObjectPropertySetter(readBoolean),n 'altitudeMode': makeObjectPropertySetter(readString)n});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {LineString|undefined} LineString.n */nfunction readLineString(node, objectStack) {n var properties = pushParseAndPop({}, EXTRUDE_AND_ALTITUDE_MODE_PARSERS, node, objectStack);n var flatCoordinates = readFlatCoordinatesFromNode(node, objectStack);n if (flatCoordinates) {n var lineString = new LineString(flatCoordinates, GeometryLayout.XYZ);n lineString.setProperties(properties, true);n return lineString;n }n else {n return undefined;n }n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Polygon|undefined} Polygon.n */nfunction readLinearRing(node, objectStack) {n var properties = pushParseAndPop({}, EXTRUDE_AND_ALTITUDE_MODE_PARSERS, node, objectStack);n var flatCoordinates = readFlatCoordinatesFromNode(node, objectStack);n if (flatCoordinates) {n var polygon = new Polygon(flatCoordinates, GeometryLayout.XYZ, [flatCoordinates.length]);n polygon.setProperties(properties, true);n return polygon;n }n else {n return undefined;n }n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar MULTI_GEOMETRY_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'LineString': makeArrayPusher(readLineString),n 'LinearRing': makeArrayPusher(readLinearRing),n 'MultiGeometry': makeArrayPusher(readMultiGeometry),n 'Point': makeArrayPusher(readPoint),n 'Polygon': makeArrayPusher(readPolygon)n});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {import("../geom/Geometry.js").default} Geometry.n */nfunction readMultiGeometry(node, objectStack) {n var geometries = pushParseAndPop([], MULTI_GEOMETRY_PARSERS, node, objectStack);n if (!geometries) {n return null;n }n if (geometries.length === 0) {n return new GeometryCollection(geometries);n }n var multiGeometry;n var homogeneous = true;n var type = geometries.getType();n var geometry;n for (var i = 1, ii = geometries.length; i < ii; ++i) {n geometry = geometries;n if (geometry.getType() != type) {n homogeneous = false;n break;n }n }n if (homogeneous) {n var layout = void 0;n var flatCoordinates = void 0;n if (type == GeometryType.POINT) {n var point = geometries;n layout = point.getLayout();n flatCoordinates = point.getFlatCoordinates();n for (var i = 1, ii = geometries.length; i < ii; ++i) {n geometry = geometries;n extend(flatCoordinates, geometry.getFlatCoordinates());n }n multiGeometry = new MultiPoint(flatCoordinates, layout);n setCommonGeometryProperties(multiGeometry, geometries);n }n else if (type == GeometryType.LINE_STRING) {n multiGeometry = new MultiLineString(geometries);n setCommonGeometryProperties(multiGeometry, geometries);n }n else if (type == GeometryType.POLYGON) {n multiGeometry = new MultiPolygon(geometries);n setCommonGeometryProperties(multiGeometry, geometries);n }n else if (type == GeometryType.GEOMETRY_COLLECTION) {n multiGeometry = new GeometryCollection(geometries);n }n else {n assert(false, 37); // Unknown geometry type foundn }n }n else {n multiGeometry = new GeometryCollection(geometries);n }n return (n /** @type {import("../geom/Geometry.js").default} */ (multiGeometry));n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Point|undefined} Point.n */nfunction readPoint(node, objectStack) {n var properties = pushParseAndPop({}, EXTRUDE_AND_ALTITUDE_MODE_PARSERS, node, objectStack);n var flatCoordinates = readFlatCoordinatesFromNode(node, objectStack);n if (flatCoordinates) {n var point = new Point(flatCoordinates, GeometryLayout.XYZ);n point.setProperties(properties, true);n return point;n }n else {n return undefined;n }n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar FLAT_LINEAR_RINGS_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'innerBoundaryIs': innerBoundaryIsParser,n 'outerBoundaryIs': outerBoundaryIsParsern});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Polygon|undefined} Polygon.n */nfunction readPolygon(node, objectStack) {n var properties = pushParseAndPop(/** @type {Object<string,*>} */ ({}), EXTRUDE_AND_ALTITUDE_MODE_PARSERS, node, objectStack);n var flatLinearRings = pushParseAndPop(, FLAT_LINEAR_RINGS_PARSERS, node, objectStack);n if (flatLinearRings && flatLinearRings) {n var flatCoordinates = flatLinearRings;n var ends = [flatCoordinates.length];n for (var i = 1, ii = flatLinearRings.length; i < ii; ++i) {n extend(flatCoordinates, flatLinearRings);n ends.push(flatCoordinates.length);n }n var polygon = new Polygon(flatCoordinates, GeometryLayout.XYZ, ends);n polygon.setProperties(properties, true);n return polygon;n }n else {n return undefined;n }n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar STYLE_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'IconStyle': iconStyleParser,n 'LabelStyle': labelStyleParser,n 'LineStyle': lineStyleParser,n 'PolyStyle': polyStyleParsern});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Array<Style>} Style.n */nfunction readStyle(node, objectStack) {n var styleObject = pushParseAndPop({}, STYLE_PARSERS, node, objectStack);n if (!styleObject) {n return null;n }n var fillStyle = /** @type {Fill} */ ('fillStyle' in styleObject ?n styleObject : DEFAULT_FILL_STYLE);n var fill = /** @type {boolean|undefined} */ (styleObject);n if (fill !== undefined && !fill) {n fillStyle = null;n }n var imageStyle;n if ('imageStyle' in styleObject) {n if (styleObject != DEFAULT_NO_IMAGE_STYLE) {n imageStyle = styleObject;n }n }n else {n imageStyle = DEFAULT_IMAGE_STYLE;n }n var textStyle = /** @type {Text} */ ('textStyle' in styleObject ?n styleObject : DEFAULT_TEXT_STYLE);n var strokeStyle = /** @type {Stroke} */ ('strokeStyle' in styleObject ?n styleObject : DEFAULT_STROKE_STYLE);n var outline = /** @type {boolean|undefined} */ (styleObject);n if (outline !== undefined && !outline) {n strokeStyle = null;n }n return [new Style({n fill: fillStyle,n image: imageStyle,n stroke: strokeStyle,n text: textStyle,n zIndex: undefined // FIXMEn })];n}n/**n * Reads an array of geometries and creates arrays for common geometryn * properties. Then sets them to the multi geometry.n * @param {MultiPoint|MultiLineString|MultiPolygon} multiGeometry A multi-geometry.n * @param {Array<import("../geom/Geometry.js").default>} geometries List of geometries.n */nfunction setCommonGeometryProperties(multiGeometry, geometries) {n var ii = geometries.length;n var extrudes = new Array(geometries.length);n var tessellates = new Array(geometries.length);n var altitudeModes = new Array(geometries.length);n var hasExtrude, hasTessellate, hasAltitudeMode;n hasExtrude = false;n hasTessellate = false;n hasAltitudeMode = false;n for (var i = 0; i < ii; ++i) {n var geometry = geometries;n extrudes = geometry.get('extrude');n tessellates = geometry.get('tessellate');n altitudeModes = geometry.get('altitudeMode');n hasExtrude = hasExtrude || extrudes !== undefined;n hasTessellate = hasTessellate || tessellates !== undefined;n hasAltitudeMode = hasAltitudeMode || altitudeModes;n }n if (hasExtrude) {n multiGeometry.set('extrude', extrudes);n }n if (hasTessellate) {n multiGeometry.set('tessellate', tessellates);n }n if (hasAltitudeMode) {n multiGeometry.set('altitudeMode', altitudeModes);n }n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar DATA_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'displayName': makeObjectPropertySetter(readString),n 'value': makeObjectPropertySetter(readString)n});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction dataParser(node, objectStack) {n var name = node.getAttribute('name');n parseNode(DATA_PARSERS, node, objectStack);n var featureObject = /** @type {Object} */ (objectStack[objectStack.length - 1]);n if (name && featureObject.displayName) {n featureObject = {n value: featureObject.value,n displayName: featureObject.displayName,n toString: function () {n return featureObject.value;n }n };n }n else if (name !== null) {n featureObject = featureObject.value;n }n else if (featureObject.displayName !== null) {n featureObject = featureObject.value;n }n delete featureObject;n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar EXTENDED_DATA_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Data': dataParser,n 'SchemaData': schemaDataParsern});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction extendedDataParser(node, objectStack) {n parseNode(EXTENDED_DATA_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction regionParser(node, objectStack) {n parseNode(REGION_PARSERS, node, objectStack);n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar PAIR_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Style': makeObjectPropertySetter(readStyle),n 'key': makeObjectPropertySetter(readString),n 'styleUrl': makeObjectPropertySetter(readURI)n});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction pairDataParser(node, objectStack) {n var pairObject = pushParseAndPop({}, PAIR_PARSERS, node, objectStack);n if (!pairObject) {n return;n }n var key = /** @type {string|undefined} */ (pairObject);n if (key && key == 'normal') {n var styleUrl = /** @type {string|undefined} */ (pairObject);n if (styleUrl) {n objectStack[objectStack.length - 1] = styleUrl;n }n var style = /** @type {Style} */ (pairObject);n if (style) {n objectStack[objectStack.length - 1] = style;n }n }n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction placemarkStyleMapParser(node, objectStack) {n var styleMapValue = readStyleMapValue(node, objectStack);n if (!styleMapValue) {n return;n }n var placemarkObject = objectStack[objectStack.length - 1];n if (Array.isArray(styleMapValue)) {n placemarkObject = styleMapValue;n }n else if (typeof styleMapValue === 'string') {n placemarkObject = styleMapValue;n }n else {n assert(false, 38); // `styleMapValue` has an unknown typen }n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar SCHEMA_DATA_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'SimpleData': simpleDataParsern});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction schemaDataParser(node, objectStack) {n parseNode(SCHEMA_DATA_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction simpleDataParser(node, objectStack) {n var name = node.getAttribute('name');n if (name !== null) {n var data = readString(node);n var featureObject = /** @type {Object} */ (objectStack[objectStack.length - 1]);n featureObject = data;n }n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar LAT_LON_ALT_BOX_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'altitudeMode': makeObjectPropertySetter(readString),n 'minAltitude': makeObjectPropertySetter(readDecimal),n 'maxAltitude': makeObjectPropertySetter(readDecimal),n 'north': makeObjectPropertySetter(readDecimal),n 'south': makeObjectPropertySetter(readDecimal),n 'east': makeObjectPropertySetter(readDecimal),n 'west': makeObjectPropertySetter(readDecimal)n});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction latLonAltBoxParser(node, objectStack) {n var object = pushParseAndPop({}, LAT_LON_ALT_BOX_PARSERS, node, objectStack);n if (!object) {n return;n }n var regionObject = /** @type {Object} */ (objectStack[objectStack.length - 1]);n var extent = [n parseFloat(object),n parseFloat(object),n parseFloat(object),n parseFloat(object)n ];n regionObject = extent;n regionObject = object;n regionObject = parseFloat(object);n regionObject = parseFloat(object);n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar LOD_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'minLodPixels': makeObjectPropertySetter(readDecimal),n 'maxLodPixels': makeObjectPropertySetter(readDecimal),n 'minFadeExtent': makeObjectPropertySetter(readDecimal),n 'maxFadeExtent': makeObjectPropertySetter(readDecimal)n});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction lodParser(node, objectStack) {n var object = pushParseAndPop({}, LOD_PARSERS, node, objectStack);n if (!object) {n return;n }n var lodObject = /** @type {Object} */ (objectStack[objectStack.length - 1]);n lodObject = parseFloat(object);n lodObject = parseFloat(object);n lodObject = parseFloat(object);n lodObject = parseFloat(object);n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar INNER_BOUNDARY_IS_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'LinearRing': makeReplacer(readFlatLinearRing)n});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction innerBoundaryIsParser(node, objectStack) {n /** @type {Array<number>|undefined} */n var flatLinearRing = pushParseAndPop(undefined, INNER_BOUNDARY_IS_PARSERS, node, objectStack);n if (flatLinearRing) {n var flatLinearRings = /** @type {Array<Array<number>>} */ (objectStack[objectStack.length - 1]);n flatLinearRings.push(flatLinearRing);n }n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar OUTER_BOUNDARY_IS_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'LinearRing': makeReplacer(readFlatLinearRing)n});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction outerBoundaryIsParser(node, objectStack) {n /** @type {Array<number>|undefined} */n var flatLinearRing = pushParseAndPop(undefined, OUTER_BOUNDARY_IS_PARSERS, node, objectStack);n if (flatLinearRing) {n var flatLinearRings = /** @type {Array<Array<number>>} */ (objectStack[objectStack.length - 1]);n flatLinearRings = flatLinearRing;n }n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction linkParser(node, objectStack) {n parseNode(LINK_PARSERS, node, objectStack);n}n/**n * @param {Node} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction whenParser(node, objectStack) {n var gxTrackObject = /** @type {GxTrackObject} */ (objectStack[objectStack.length - 1]);n var whens = gxTrackObject.whens;n var s = getAllTextContent(node, false);n var when = Date.parse(s);n whens.push(isNaN(when) ? 0 : when);n}n/**n * @param {Node} node Node to append a TextNode with the color to.n * @param {import("../color.js").Color|string} color Color.n */nfunction writeColorTextNode(node, color) {n var rgba = asArray(color);n var opacity = (rgba.length == 4) ? rgba : 1;n /** @type {Array<string|number>} */n var abgr = [opacity * 255, rgba, rgba, rgba];n for (var i = 0; i < 4; ++i) {n var hex = Math.floor(/** @type {number} */ (abgr)).toString(16);n abgr = (hex.length == 1) ? '0' + hex : hex;n }n writeStringTextNode(node, abgr.join(''));n}n/**n * @param {Node} node Node to append a TextNode with the coordinates to.n * @param {Array<number>} coordinates Coordinates.n * @param {Array<*>} objectStack Object stack.n */nfunction writeCoordinatesTextNode(node, coordinates, objectStack) {n var context = objectStack[objectStack.length - 1];n var layout = context;n var stride = context;n var dimension;n if (layout == GeometryLayout.XY ||n layout == GeometryLayout.XYM) {n dimension = 2;n }n else if (layout == GeometryLayout.XYZ ||n layout == GeometryLayout.XYZM) {n dimension = 3;n }n else {n assert(false, 34); // Invalid geometry layoutn }n var ii = coordinates.length;n var text = '';n if (ii > 0) {n text += coordinates;n for (var d = 1; d < dimension; ++d) {n text += ',' + coordinates;n }n for (var i = stride; i < ii; i += stride) {n text += ' ' + coordinates;n for (var d = 1; d < dimension; ++d) {n text += ',' + coordinates[i + d];n }n }n }n writeStringTextNode(node, text);n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar EXTENDEDDATA_NODE_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'Data': makeChildAppender(writeDataNode),n 'value': makeChildAppender(writeDataNodeValue),n 'displayName': makeChildAppender(writeDataNodeName)n});n/**n * @param {Element} node Node.n * @param {{name: *, value: *}} pair Name value pair.n * @param {Array<*>} objectStack Object stack.n */nfunction writeDataNode(node, pair, objectStack) {n node.setAttribute('name', pair.name);n var /** @type {import("../xml.js").NodeStackItem} */ context = { node: node };n var value = pair.value;n if (typeof value == 'object') {n if (value !== null && value.displayName) {n pushSerializeAndPop(context, EXTENDEDDATA_NODE_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, [value.displayName], objectStack, ['displayName']);n }n if (value !== null && value.value) {n pushSerializeAndPop(context, EXTENDEDDATA_NODE_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, [value.value], objectStack, ['value']);n }n }n else {n pushSerializeAndPop(context, EXTENDEDDATA_NODE_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, [value], objectStack, ['value']);n }n}n/**n * @param {Node} node Node to append a TextNode with the name to.n * @param {string} name DisplayName.n */nfunction writeDataNodeName(node, name) {n writeCDATASection(node, name);n}n/**n * @param {Node} node Node to append a CDATA Section with the value to.n * @param {string} value Value.n */nfunction writeDataNodeValue(node, value) {n writeStringTextNode(node, value);n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar DOCUMENT_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'Placemark': makeChildAppender(writePlacemark)n});n/**n * @constn * @param {*} value Value.n * @param {Array<*>} objectStack Object stack.n * @param {string=} opt_nodeName Node name.n * @return {Node|undefined} Node.n */nvar DOCUMENT_NODE_FACTORY = function (value, objectStack, opt_nodeName) {n var parentNode = objectStack[objectStack.length - 1].node;n return createElementNS(parentNode.namespaceURI, 'Placemark');n};n/**n * @param {Node} node Node.n * @param {Array<Feature>} features Features.n * @param {Array<*>} objectStack Object stack.n * @this {KML}n */nfunction writeDocument(node, features, objectStack) {n var /** @type {import("../xml.js").NodeStackItem} */ context = { node: node };n pushSerializeAndPop(context, DOCUMENT_SERIALIZERS, DOCUMENT_NODE_FACTORY, features, objectStack, undefined, this);n}n/**n * A factory for creating Data nodes.n * @constn * @type {function(*, Array<*>): (Node|undefined)}n */nvar DATA_NODE_FACTORY = makeSimpleNodeFactory('Data');n/**n * @param {Node} node Node.n * @param {{names: Array<string>, values: (Array<*>)}} namesAndValues Names and values.n * @param {Array<*>} objectStack Object stack.n */nfunction writeExtendedData(node, namesAndValues, objectStack) {n var /** @type {import("../xml.js").NodeStackItem} */ context = { node: node };n var names = namesAndValues.names;n var values = namesAndValues.values;n var length = names.length;n for (var i = 0; i < length; i++) {n pushSerializeAndPop(context, EXTENDEDDATA_NODE_SERIALIZERS, DATA_NODE_FACTORY, [{ name: names, value: values }], objectStack);n }n}n/**n * @constn * @type {Object<string, Array<string>>}n */n// @ts-ignorenvar ICON_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [n 'href'n], makeStructureNS(GX_NAMESPACE_URIS, [n 'x', 'y', 'w', 'h'n]));n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar ICON_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'href': makeChildAppender(writeStringTextNode)n}, makeStructureNS(GX_NAMESPACE_URIS, {n 'x': makeChildAppender(writeDecimalTextNode),n 'y': makeChildAppender(writeDecimalTextNode),n 'w': makeChildAppender(writeDecimalTextNode),n 'h': makeChildAppender(writeDecimalTextNode)n}));n/**n * @constn * @param {*} value Value.n * @param {Array<*>} objectStack Object stack.n * @param {string=} opt_nodeName Node name.n * @return {Node|undefined} Node.n */nvar GX_NODE_FACTORY = function (value, objectStack, opt_nodeName) {n return createElementNS(GX_NAMESPACE_URIS, 'gx:' + opt_nodeName);n};n/**n * @param {Node} node Node.n * @param {Object} icon Icon object.n * @param {Array<*>} objectStack Object stack.n */nfunction writeIcon(node, icon, objectStack) {n var /** @type {import("../xml.js").NodeStackItem} */ context = { node: node };n var parentNode = objectStack[objectStack.length - 1].node;n var orderedKeys = ICON_SEQUENCE;n var values = makeSequence(icon, orderedKeys);n pushSerializeAndPop(context, ICON_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, orderedKeys);n orderedKeys =n ICON_SEQUENCE[GX_NAMESPACE_URIS];n values = makeSequence(icon, orderedKeys);n pushSerializeAndPop(context, ICON_SERIALIZERS, GX_NODE_FACTORY, values, objectStack, orderedKeys);n}n/**n * @constn * @type {Object<string, Array<string>>}n */n// @ts-ignorenvar ICON_STYLE_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [n 'scale', 'heading', 'Icon', 'hotSpot'n]);n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar ICON_STYLE_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'Icon': makeChildAppender(writeIcon),n 'heading': makeChildAppender(writeDecimalTextNode),n 'hotSpot': makeChildAppender(writeVec2),n 'scale': makeChildAppender(writeScaleTextNode)n});n/**n * @param {Node} node Node.n * @param {import("../style/Icon.js").default} style Icon style.n * @param {Array<*>} objectStack Object stack.n */nfunction writeIconStyle(node, style, objectStack) {n var /** @type {import("../xml.js").NodeStackItem} */ context = { node: node };n var /** @type {Object<string, any>} */ properties = {};n var src = style.getSrc();n var size = style.getSize();n var iconImageSize = style.getImageSize();n var iconProperties = {n 'href': srcn };n if (size) {n iconProperties = size;n iconProperties = size;n var anchor = style.getAnchor(); // top-leftn var origin_1 = style.getOrigin(); // top-leftn if (origin_1 && iconImageSize && origin_1 !== 0 && origin_1 !== size) {n iconProperties = origin_1;n iconProperties = iconImageSize - (origin_1 + size);n }n if (anchor && (anchor !== size / 2 || anchor !== size / 2)) {n var /** @type {Vec2} */ hotSpot = {n x: anchor,n xunits: IconAnchorUnits.PIXELS,n y: size - anchor,n yunits: IconAnchorUnits.PIXELSn };n properties = hotSpot;n }n }n properties = iconProperties;n var scale = style.getScale();n if (scale !== 1) {n properties = scale;n }n var rotation = style.getRotation();n if (rotation !== 0) {n properties = rotation; // 0-360n }n var parentNode = objectStack[objectStack.length - 1].node;n var orderedKeys = ICON_STYLE_SEQUENCE;n var values = makeSequence(properties, orderedKeys);n pushSerializeAndPop(context, ICON_STYLE_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, orderedKeys);n}n/**n * @constn * @type {Object<string, Array<string>>}n */n// @ts-ignorenvar LABEL_STYLE_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [n 'color', 'scale'n]);n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar LABEL_STYLE_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'color': makeChildAppender(writeColorTextNode),n 'scale': makeChildAppender(writeScaleTextNode)n});n/**n * @param {Node} node Node.n * @param {Text} style style.n * @param {Array<*>} objectStack Object stack.n */nfunction writeLabelStyle(node, style, objectStack) {n var /** @type {import("../xml.js").NodeStackItem} */ context = { node: node };n var properties = {};n var fill = style.getFill();n if (fill) {n properties = fill.getColor();n }n var scale = style.getScale();n if (scale && scale !== 1) {n properties = scale;n }n var parentNode = objectStack[objectStack.length - 1].node;n var orderedKeys = LABEL_STYLE_SEQUENCE;n var values = makeSequence(properties, orderedKeys);n pushSerializeAndPop(context, LABEL_STYLE_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, orderedKeys);n}n/**n * @constn * @type {Object<string, Array<string>>}n */n// @ts-ignorenvar LINE_STYLE_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [n 'color', 'width'n]);n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar LINE_STYLE_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'color': makeChildAppender(writeColorTextNode),n 'width': makeChildAppender(writeDecimalTextNode)n});n/**n * @param {Node} node Node.n * @param {Stroke} style style.n * @param {Array<*>} objectStack Object stack.n */nfunction writeLineStyle(node, style, objectStack) {n var /** @type {import("../xml.js").NodeStackItem} */ context = { node: node };n var properties = {n 'color': style.getColor(),n 'width': style.getWidth()n };n var parentNode = objectStack[objectStack.length - 1].node;n var orderedKeys = LINE_STYLE_SEQUENCE;n var values = makeSequence(properties, orderedKeys);n pushSerializeAndPop(context, LINE_STYLE_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, orderedKeys);n}n/**n * @constn * @type {Object<string, string>}n */nvar GEOMETRY_TYPE_TO_NODENAME = {n 'Point': 'Point',n 'LineString': 'LineString',n 'LinearRing': 'LinearRing',n 'Polygon': 'Polygon',n 'MultiPoint': 'MultiGeometry',n 'MultiLineString': 'MultiGeometry',n 'MultiPolygon': 'MultiGeometry',n 'GeometryCollection': 'MultiGeometry'n};n/**n * @constn * @param {*} value Value.n * @param {Array<*>} objectStack Object stack.n * @param {string=} opt_nodeName Node name.n * @return {Node|undefined} Node.n */nvar GEOMETRY_NODE_FACTORY = function (value, objectStack, opt_nodeName) {n if (value) {n var parentNode = objectStack[objectStack.length - 1].node;n return createElementNS(parentNode.namespaceURI, GEOMETRY_TYPE_TO_NODENAME[ /** @type {import("../geom/Geometry.js").default} */(value).getType()]);n }n};n/**n * A factory for creating Point nodes.n * @constn * @type {function(*, Array<*>, string=): (Node|undefined)}n */nvar POINT_NODE_FACTORY = makeSimpleNodeFactory('Point');n/**n * A factory for creating LineString nodes.n * @constn * @type {function(*, Array<*>, string=): (Node|undefined)}n */nvar LINE_STRING_NODE_FACTORY = makeSimpleNodeFactory('LineString');n/**n * A factory for creating LinearRing nodes.n * @constn * @type {function(*, Array<*>, string=): (Node|undefined)}n */nvar LINEAR_RING_NODE_FACTORY = makeSimpleNodeFactory('LinearRing');n/**n * A factory for creating Polygon nodes.n * @constn * @type {function(*, Array<*>, string=): (Node|undefined)}n */nvar POLYGON_NODE_FACTORY = makeSimpleNodeFactory('Polygon');n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar MULTI_GEOMETRY_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'LineString': makeChildAppender(writePrimitiveGeometry),n 'Point': makeChildAppender(writePrimitiveGeometry),n 'Polygon': makeChildAppender(writePolygon),n 'GeometryCollection': makeChildAppender(writeMultiGeometry)n});n/**n * @param {Node} node Node.n * @param {import("../geom/Geometry.js").default} geometry Geometry.n * @param {Array<*>} objectStack Object stack.n */nfunction writeMultiGeometry(node, geometry, objectStack) {n /** @type {import("../xml.js").NodeStackItem} */n var context = { node: node };n var type = geometry.getType();n /** @type {Array<import("../geom/Geometry.js").default>} */n var geometries;n /** @type {function(*, Array<*>, string=): (Node|undefined)} */n var factory;n if (type == GeometryType.GEOMETRY_COLLECTION) {n geometries = /** @type {GeometryCollection} */ (geometry).getGeometries();n factory = GEOMETRY_NODE_FACTORY;n }n else if (type == GeometryType.MULTI_POINT) {n geometries = /** @type {MultiPoint} */ (geometry).getPoints();n factory = POINT_NODE_FACTORY;n }n else if (type == GeometryType.MULTI_LINE_STRING) {n geometries =n ( /** @type {MultiLineString} */(geometry)).getLineStrings();n factory = LINE_STRING_NODE_FACTORY;n }n else if (type == GeometryType.MULTI_POLYGON) {n geometries =n ( /** @type {MultiPolygon} */(geometry)).getPolygons();n factory = POLYGON_NODE_FACTORY;n }n else {n assert(false, 39); // Unknown geometry typen }n pushSerializeAndPop(context, MULTI_GEOMETRY_SERIALIZERS, factory, geometries, objectStack);n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar BOUNDARY_IS_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'LinearRing': makeChildAppender(writePrimitiveGeometry)n});n/**n * @param {Node} node Node.n * @param {import("../geom/LinearRing.js").default} linearRing Linear ring.n * @param {Array<*>} objectStack Object stack.n */nfunction writeBoundaryIs(node, linearRing, objectStack) {n var /** @type {import("../xml.js").NodeStackItem} */ context = { node: node };n pushSerializeAndPop(context, BOUNDARY_IS_SERIALIZERS, LINEAR_RING_NODE_FACTORY, [linearRing], objectStack);n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar PLACEMARK_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'ExtendedData': makeChildAppender(writeExtendedData),n 'MultiGeometry': makeChildAppender(writeMultiGeometry),n 'LineString': makeChildAppender(writePrimitiveGeometry),n 'LinearRing': makeChildAppender(writePrimitiveGeometry),n 'Point': makeChildAppender(writePrimitiveGeometry),n 'Polygon': makeChildAppender(writePolygon),n 'Style': makeChildAppender(writeStyle),n 'address': makeChildAppender(writeStringTextNode),n 'description': makeChildAppender(writeStringTextNode),n 'name': makeChildAppender(writeStringTextNode),n 'open': makeChildAppender(writeBooleanTextNode),n 'phoneNumber': makeChildAppender(writeStringTextNode),n 'styleUrl': makeChildAppender(writeStringTextNode),n 'visibility': makeChildAppender(writeBooleanTextNode)n});n/**n * @constn * @type {Object<string, Array<string>>}n */n// @ts-ignorenvar PLACEMARK_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [n 'name', 'open', 'visibility', 'address', 'phoneNumber', 'description',n 'styleUrl', 'Style'n]);n/**n * A factory for creating ExtendedData nodes.n * @constn * @type {function(*, Array<*>): (Node|undefined)}n */nvar EXTENDEDDATA_NODE_FACTORY = makeSimpleNodeFactory('ExtendedData');n/**n * FIXME currently we do serialize arbitrary/custom feature propertiesn * (ExtendedData).n * @param {Element} node Node.n * @param {Feature} feature Feature.n * @param {Array<*>} objectStack Object stack.n * @this {KML}n */nfunction writePlacemark(node, feature, objectStack) {n var /** @type {import("../xml.js").NodeStackItem} */ context = { node: node };n // set idn if (feature.getId()) {n node.setAttribute('id', /** @type {string} */ (feature.getId()));n }n // serialize properties (properties unknown to KML are not serialized)n var properties = feature.getProperties();n // don't export these to ExtendedDatan var filter = { 'address': 1, 'description': 1, 'name': 1, 'open': 1,n 'phoneNumber': 1, 'styleUrl': 1, 'visibility': 1 };n filter = 1;n var keys = Object.keys(properties || {}).sort().filter(function (v) {n return !filter;n });n var styleFunction = feature.getStyleFunction();n if (styleFunction) {n // FIXME the styles returned by the style function are supposed to ben // resolution-independent heren var styles = styleFunction(feature, 0);n if (styles) {n var style = Array.isArray(styles) ? styles : styles;n if (this.writeStyles_) {n properties = style;n }n var textStyle = style.getText();n if (textStyle) {n properties = textStyle.getText();n }n }n }n var parentNode = objectStack[objectStack.length - 1].node;n var orderedKeys = PLACEMARK_SEQUENCE;n var values = makeSequence(properties, orderedKeys);n pushSerializeAndPop(context, PLACEMARK_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, orderedKeys);n if (keys.length > 0) {n var sequence = makeSequence(properties, keys);n var namesAndValues = { names: keys, values: sequence };n pushSerializeAndPop(context, PLACEMARK_SERIALIZERS, EXTENDEDDATA_NODE_FACTORY, [namesAndValues], objectStack);n }n // serialize geometryn var options = /** @type {import("./Feature.js").WriteOptions} */ (objectStack);n var geometry = feature.getGeometry();n if (geometry) {n geometry = transformGeometryWithOptions(geometry, true, options);n }n pushSerializeAndPop(context, PLACEMARK_SERIALIZERS, GEOMETRY_NODE_FACTORY, [geometry], objectStack);n}n/**n * @constn * @type {Object<string, Array<string>>}n */n// @ts-ignorenvar PRIMITIVE_GEOMETRY_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [n 'extrude', 'tessellate', 'altitudeMode', 'coordinates'n]);n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar PRIMITIVE_GEOMETRY_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'extrude': makeChildAppender(writeBooleanTextNode),n 'tessellate': makeChildAppender(writeBooleanTextNode),n 'altitudeMode': makeChildAppender(writeStringTextNode),n 'coordinates': makeChildAppender(writeCoordinatesTextNode)n});n/**n * @param {Node} node Node.n * @param {import("../geom/SimpleGeometry.js").default} geometry Geometry.n * @param {Array<*>} objectStack Object stack.n */nfunction writePrimitiveGeometry(node, geometry, objectStack) {n var flatCoordinates = geometry.getFlatCoordinates();n var /** @type {import("../xml.js").NodeStackItem} */ context = { node: node };n context = geometry.getLayout();n context = geometry.getStride();n // serialize properties (properties unknown to KML are not serialized)n var properties = geometry.getProperties();n properties.coordinates = flatCoordinates;n var parentNode = objectStack[objectStack.length - 1].node;n var orderedKeys = PRIMITIVE_GEOMETRY_SEQUENCE;n var values = makeSequence(properties, orderedKeys);n pushSerializeAndPop(context, PRIMITIVE_GEOMETRY_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, orderedKeys);n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar POLYGON_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'outerBoundaryIs': makeChildAppender(writeBoundaryIs),n 'innerBoundaryIs': makeChildAppender(writeBoundaryIs)n});n/**n * A factory for creating innerBoundaryIs nodes.n * @constn * @type {function(*, Array<*>, string=): (Node|undefined)}n */nvar INNER_BOUNDARY_NODE_FACTORY = makeSimpleNodeFactory('innerBoundaryIs');n/**n * A factory for creating outerBoundaryIs nodes.n * @constn * @type {function(*, Array<*>, string=): (Node|undefined)}n */nvar OUTER_BOUNDARY_NODE_FACTORY = makeSimpleNodeFactory('outerBoundaryIs');n/**n * @param {Node} node Node.n * @param {Polygon} polygon Polygon.n * @param {Array<*>} objectStack Object stack.n */nfunction writePolygon(node, polygon, objectStack) {n var linearRings = polygon.getLinearRings();n var outerRing = linearRings.shift();n var /** @type {import("../xml.js").NodeStackItem} */ context = { node: node };n // inner ringsn pushSerializeAndPop(context, POLYGON_SERIALIZERS, INNER_BOUNDARY_NODE_FACTORY, linearRings, objectStack);n // outer ringn pushSerializeAndPop(context, POLYGON_SERIALIZERS, OUTER_BOUNDARY_NODE_FACTORY, [outerRing], objectStack);n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar POLY_STYLE_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'color': makeChildAppender(writeColorTextNode)n});n/**n * A factory for creating coordinates nodes.n * @constn * @type {function(*, Array<*>, string=): (Node|undefined)}n */nvar COLOR_NODE_FACTORY = makeSimpleNodeFactory('color');n/**n * @param {Node} node Node.n * @param {Fill} style Style.n * @param {Array<*>} objectStack Object stack.n */nfunction writePolyStyle(node, style, objectStack) {n var /** @type {import("../xml.js").NodeStackItem} */ context = { node: node };n pushSerializeAndPop(context, POLY_STYLE_SERIALIZERS, COLOR_NODE_FACTORY, [style.getColor()], objectStack);n}n/**n * @param {Node} node Node to append a TextNode with the scale to.n * @param {number|undefined} scale Scale.n */nfunction writeScaleTextNode(node, scale) {n // the Math is to remove any excess decimals created by float arithmeticn writeDecimalTextNode(node, Math.round(scale * 1e6) / 1e6);n}n/**n * @constn * @type {Object<string, Array<string>>}n */n// @ts-ignorenvar STYLE_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [n 'IconStyle', 'LabelStyle', 'LineStyle', 'PolyStyle'n]);n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */n// @ts-ignorenvar STYLE_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {n 'IconStyle': makeChildAppender(writeIconStyle),n 'LabelStyle': makeChildAppender(writeLabelStyle),n 'LineStyle': makeChildAppender(writeLineStyle),n 'PolyStyle': makeChildAppender(writePolyStyle)n});n/**n * @param {Node} node Node.n * @param {Style} style Style.n * @param {Array<*>} objectStack Object stack.n */nfunction writeStyle(node, style, objectStack) {n var /** @type {import("../xml.js").NodeStackItem} */ context = { node: node };n var properties = {};n var fillStyle = style.getFill();n var strokeStyle = style.getStroke();n var imageStyle = style.getImage();n var textStyle = style.getText();n if (imageStyle && typeof /** @type {?} */ (imageStyle).getSrc === 'function') {n properties = imageStyle;n }n if (textStyle) {n properties = textStyle;n }n if (strokeStyle) {n properties = strokeStyle;n }n if (fillStyle) {n properties = fillStyle;n }n var parentNode = objectStack[objectStack.length - 1].node;n var orderedKeys = STYLE_SEQUENCE;n var values = makeSequence(properties, orderedKeys);n pushSerializeAndPop(context, STYLE_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, orderedKeys);n}n/**n * @param {Element} node Node to append a TextNode with the Vec2 to.n * @param {Vec2} vec2 Vec2.n */nfunction writeVec2(node, vec2) {n node.setAttribute('x', String(vec2.x));n node.setAttribute('y', String(vec2.y));n node.setAttribute('xunits', vec2.xunits);n node.setAttribute('yunits', vec2.yunits);n}nexport default KML;n//# sourceMappingURL=KML.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/IGCn */nimport Feature from '../Feature.js';nimport { transformGeometryWithOptions } from './Feature.js';nimport TextFeature from './TextFeature.js';nimport GeometryLayout from '../geom/GeometryLayout.js';nimport LineString from '../geom/LineString.js';nimport { get as getProjection } from '../proj.js';n/**n * IGC altitude/z. One of 'barometric', 'gps', 'none'.n * @enum {string}n */nvar IGCZ = {n BAROMETRIC: 'barometric',n GPS: 'gps',n NONE: 'none'n};n/**n * @constn * @type {RegExp}n */nvar B_RECORD_RE = /^B(\d{2})(\d{2})(\d{2})(\d{2})(\d{5})([NS])(\d{3})(\d{5})([EW])()(\d{5})(\d{5})/;n/**n * @constn * @type {RegExp}n */nvar H_RECORD_RE = /^H.({3}).*?:(.*)/;n/**n * @constn * @type {RegExp}n */nvar HFDTE_RECORD_RE = /^HFDTE(\d{2})(\d{2})(\d{2})/;n/**n * A regular expression matching the newline characters `\r\n`, `\r` and `\n`.n *n * @constn * @type {RegExp}n */nvar NEWLINE_RE = /\r\n|\r|\n/;n/**n * @typedef {Object} Optionsn * @property {IGCZ|string} [altitudeMode='none'] Altitude mode. Possiblen * values are `'barometric'`, `'gps'`, and `'none'`.n */n/**n * @classdescn * Feature format for `*.igc` flight recording files.n *n * As IGC sources contain a single feature,n * {@link module:ol/format/IGC~IGC#readFeatures} will return the feature in ann * arrayn *n * @apin */nvar IGC = /** @class */ (function (_super) {n __extends(IGC, _super);n /**n * @param {Options=} opt_options Options.n */n function IGC(opt_options) {n var _this = _super.call(this) || this;n var options = opt_options ? opt_options : {};n /**n * @inheritDocn */n _this.dataProjection = getProjection('EPSG:4326');n /**n * @privaten * @type {IGCZ}n */n this.altitudeMode = options.altitudeMode ? options.altitudeMode : IGCZ.NONE;n return _this;n }n /**n * @inheritDocn */n IGC.prototype.readFeatureFromText = function (text, opt_options) {n var altitudeMode = this.altitudeMode_;n var lines = text.split(NEWLINE_RE);n /** @type {Object<string, string>} */n var properties = {};n var flatCoordinates = [];n var year = 2000;n var month = 0;n var day = 1;n var lastDateTime = -1;n var i, ii;n for (i = 0, ii = lines.length; i < ii; ++i) {n var line = lines;n var m = void 0;n if (line.charAt(0) == 'B') {n m = B_RECORD_RE.exec(line);n if (m) {n var hour = parseInt(m, 10);n var minute = parseInt(m, 10);n var second = parseInt(m, 10);n var y = parseInt(m, 10) + parseInt(m, 10) / 60000;n if (m == 'S') {n y = -y;n }n var x = parseInt(m, 10) + parseInt(m, 10) / 60000;n if (m == 'W') {n x = -x;n }n flatCoordinates.push(x, y);n if (altitudeMode != IGCZ.NONE) {n var z = void 0;n if (altitudeMode == IGCZ.GPS) {n z = parseInt(m, 10);n }n else if (altitudeMode == IGCZ.BAROMETRIC) {n z = parseInt(m, 10);n }n else {n z = 0;n }n flatCoordinates.push(z);n }n var dateTime = Date.UTC(year, month, day, hour, minute, second);n // Detect UTC midnight wrap around.n if (dateTime < lastDateTime) {n dateTime = Date.UTC(year, month, day + 1, hour, minute, second);n }n flatCoordinates.push(dateTime / 1000);n lastDateTime = dateTime;n }n }n else if (line.charAt(0) == 'H') {n m = HFDTE_RECORD_RE.exec(line);n if (m) {n day = parseInt(m, 10);n month = parseInt(m, 10) - 1;n year = 2000 + parseInt(m, 10);n }n else {n m = H_RECORD_RE.exec(line);n if (m) {n properties[m] = m.trim();n }n }n }n }n if (flatCoordinates.length === 0) {n return null;n }n var layout = altitudeMode == IGCZ.NONE ? GeometryLayout.XYM : GeometryLayout.XYZM;n var lineString = new LineString(flatCoordinates, layout);n var feature = new Feature(transformGeometryWithOptions(lineString, false, opt_options));n feature.setProperties(properties, true);n return feature;n };n /**n * @inheritDocn */n IGC.prototype.readFeaturesFromText = function (text, opt_options) {n var feature = this.readFeatureFromText(text, opt_options);n if (feature) {n return [feature];n }n else {n return [];n }n };n return IGC;n}(TextFeature));nexport default IGC;n//# sourceMappingURL=IGC.js.map”,“/**n * @module ol/render/Featuren */nimport { extend } from '../array.js';nimport { createOrUpdateFromCoordinate, createOrUpdateFromFlatCoordinates, getCenter, getHeight } from '../extent.js';nimport GeometryType from '../geom/GeometryType.js';nimport { linearRingss as linearRingssCenter } from '../geom/flat/center.js';nimport { getInteriorPointOfArray, getInteriorPointsOfMultiArray } from '../geom/flat/interiorpoint.js';nimport { interpolatePoint } from '../geom/flat/interpolate.js';nimport { get as getProjection } from '../proj.js';nimport { transform2D } from '../geom/flat/transform.js';nimport { create as createTransform, compose as composeTransform } from '../transform.js';n/**n * @type {import("../transform.js").Transform}n */nvar tmpTransform = createTransform();n/**n * Lightweight, read-only, {@link module:ol/Feature~Feature} and {@link module:ol/geom/Geometry~Geometry} liken * structure, optimized for vector tile rendering and styling. Geometry accessn * through the API is limited to getting the type and extent of the geometry.n */nvar RenderFeature = /** @class */ (function () {n /**n * @param {GeometryType} type Geometry type.n * @param {Array<number>} flatCoordinates Flat coordinates. These always needn * to be right-handed for polygons.n * @param {Array<number>|Array<Array<number>>} ends Ends or Endss.n * @param {Object<string, *>} properties Properties.n * @param {number|string|undefined} id Feature id.n */n function RenderFeature(type, flatCoordinates, ends, properties, id) {n /**n * @privaten * @type {import("../extent.js").Extent|undefined}n */n this.extent_;n /**n * @privaten * @type {number|string|undefined}n */n this.id_ = id;n /**n * @privaten * @type {GeometryType}n */n this.type_ = type;n /**n * @privaten * @type {Array<number>}n */n this.flatCoordinates_ = flatCoordinates;n /**n * @privaten * @type {Array<number>}n */n this.flatInteriorPoints_ = null;n /**n * @privaten * @type {Array<number>}n */n this.flatMidpoints_ = null;n /**n * @privaten * @type {Array<number>|Array<Array<number>>}n */n this.ends_ = ends;n /**n * @privaten * @type {Object<string, *>}n */n this.properties_ = properties;n }n /**n * Get a feature property by its key.n * @param {string} key Keyn * @return {*} Value for the requested key.n * @apin */n RenderFeature.prototype.get = function (key) {n return this.properties_;n };n /**n * Get the extent of this feature's geometry.n * @return {import("../extent.js").Extent} Extent.n * @apin */n RenderFeature.prototype.getExtent = function () {n if (!this.extent_) {n this.extent_ = this.type_ === GeometryType.POINT ?n createOrUpdateFromCoordinate(this.flatCoordinates_) :n createOrUpdateFromFlatCoordinates(this.flatCoordinates_, 0, this.flatCoordinates_.length, 2);n }n return this.extent_;n };n /**n * @return {Array<number>} Flat interior points.n */n RenderFeature.prototype.getFlatInteriorPoint = function () {n if (!this.flatInteriorPoints_) {n var flatCenter = getCenter(this.getExtent());n this.flatInteriorPoints_ = getInteriorPointOfArray(this.flatCoordinates_, 0, /** @type {Array<number>} */ (this.ends_), 2, flatCenter, 0);n }n return this.flatInteriorPoints_;n };n /**n * @return {Array<number>} Flat interior points.n */n RenderFeature.prototype.getFlatInteriorPoints = function () {n if (!this.flatInteriorPoints_) {n var flatCenters = linearRingssCenter(this.flatCoordinates_, 0, /** @type {Array<Array<number>>} */ (this.ends_), 2);n this.flatInteriorPoints_ = getInteriorPointsOfMultiArray(this.flatCoordinates_, 0, /** @type {Array<Array<number>>} */ (this.ends_), 2, flatCenters);n }n return this.flatInteriorPoints_;n };n /**n * @return {Array<number>} Flat midpoint.n */n RenderFeature.prototype.getFlatMidpoint = function () {n if (!this.flatMidpoints_) {n this.flatMidpoints_ = interpolatePoint(this.flatCoordinates_, 0, this.flatCoordinates_.length, 2, 0.5);n }n return this.flatMidpoints_;n };n /**n * @return {Array<number>} Flat midpoints.n */n RenderFeature.prototype.getFlatMidpoints = function () {n if (!this.flatMidpoints_) {n this.flatMidpoints_ = [];n var flatCoordinates = this.flatCoordinates_;n var offset = 0;n var ends = /** @type {Array<number>} */ (this.ends_);n for (var i = 0, ii = ends.length; i < ii; ++i) {n var end = ends;n var midpoint = interpolatePoint(flatCoordinates, offset, end, 2, 0.5);n extend(this.flatMidpoints_, midpoint);n offset = end;n }n }n return this.flatMidpoints_;n };n /**n * Get the feature identifier. This is a stable identifier for the feature andn * is set when reading data from a remote source.n * @return {number|string|undefined} Id.n * @apin */n RenderFeature.prototype.getId = function () {n return this.id_;n };n /**n * @return {Array<number>} Flat coordinates.n */n RenderFeature.prototype.getOrientedFlatCoordinates = function () {n return this.flatCoordinates_;n };n /**n * For API compatibility with {@link module:ol/Feature~Feature}, this method is useful whenn * determining the geometry type in style function (see {@link getType}).n * @return {RenderFeature} Feature.n * @apin */n RenderFeature.prototype.getGeometry = function () {n return this;n };n /**n * @param {number} squaredTolerance Squared tolerance.n * @return {RenderFeature} Simplified geometry.n */n RenderFeature.prototype.getSimplifiedGeometry = function (squaredTolerance) {n return this;n };n /**n * Get a transformed and simplified version of the geometry.n * @abstractn * @param {number} squaredTolerance Squared tolerance.n * @param {import("../proj.js").TransformFunction} [opt_transform] Optional transform function.n * @return {RenderFeature} Simplified geometry.n */n RenderFeature.prototype.simplifyTransformed = function (squaredTolerance, opt_transform) {n return this;n };n /**n * Get the feature properties.n * @return {Object<string, *>} Feature properties.n * @apin */n RenderFeature.prototype.getProperties = function () {n return this.properties_;n };n /**n * @return {number} Stride.n */n RenderFeature.prototype.getStride = function () {n return 2;n };n /**n * @return {undefined}n */n RenderFeature.prototype.getStyleFunction = function () {n return undefined;n };n /**n * Get the type of this feature's geometry.n * @return {GeometryType} Geometry type.n * @apin */n RenderFeature.prototype.getType = function () {n return this.type_;n };n /**n * Transform geometry coordinates from tile pixel space to projected.n * The SRS of the source and destination are expected to be the same.n *n * @param {import("../proj.js").ProjectionLike} source The current projectionn * @param {import("../proj.js").ProjectionLike} destination The desired projection.n */n RenderFeature.prototype.transform = function (source, destination) {n source = getProjection(source);n var pixelExtent = source.getExtent();n var projectedExtent = source.getWorldExtent();n var scale = getHeight(projectedExtent) / getHeight(pixelExtent);n composeTransform(tmpTransform, projectedExtent, projectedExtent, scale, -scale, 0, 0, 0);n transform2D(this.flatCoordinates_, 0, this.flatCoordinates_.length, 2, tmpTransform, this.flatCoordinates_);n };n return RenderFeature;n}());n/**n * @return {Array<number>|Array<Array<number>>} Ends or endss.n */nRenderFeature.prototype.getEnds = function () {n return this.ends_;n};nRenderFeature.prototype.getEndss = RenderFeature.prototype.getEnds;n/**n * @return {Array<number>} Flat coordinates.n */nRenderFeature.prototype.getFlatCoordinates =n RenderFeature.prototype.getOrientedFlatCoordinates;nexport default RenderFeature;n//# sourceMappingURL=Feature.js.map”,“/**n * @module ol/format/MVTn */n//FIXME Implement projection handlingnvar __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();nimport { assert } from '../asserts.js';nimport PBF from 'pbf';nimport FeatureFormat, { transformGeometryWithOptions } from './Feature.js';nimport FormatType from './FormatType.js';nimport GeometryLayout from '../geom/GeometryLayout.js';nimport GeometryType from '../geom/GeometryType.js';nimport LineString from '../geom/LineString.js';nimport MultiLineString from '../geom/MultiLineString.js';nimport MultiPoint from '../geom/MultiPoint.js';nimport MultiPolygon from '../geom/MultiPolygon.js';nimport Point from '../geom/Point.js';nimport Polygon from '../geom/Polygon.js';nimport { linearRingIsClockwise } from '../geom/flat/orient.js';nimport Projection from '../proj/Projection.js';nimport Units from '../proj/Units.js';nimport RenderFeature from '../render/Feature.js';nimport { get } from '../proj.js';n/**n * @typedef {Object} Optionsn * @property {import("../Feature.js").FeatureClass} [featureClass] Class for features returned byn * {@link module:ol/format/MVT#readFeatures}. Set to {@link module:ol/Feature~Feature} to get full editing and geometryn * support at the cost of decreased rendering performance. The default isn * {@link module:ol/render/Feature~RenderFeature}, which is optimized for rendering and hit detection.n * @property {string} [geometryName='geometry'] Geometry name to use when creating features.n * @property {string} [layerName='layer'] Name of the feature attribute that holds the layer name.n * @property {Array<string>} [layers] Layers to read features from. If not provided, features will be read from alln * @property {string} [idProperty] Optional property that will be assigned as the feature id and removed from the properties.n * layers.n */n/**n * @classdescn * Feature format for reading data in the Mapbox MVT format.n *n * @param {Options=} opt_options Options.n * @apin */nvar MVT = /** @class */ (function (_super) {n __extends(MVT, _super);n /**n * @param {Options=} opt_options Options.n */n function MVT(opt_options) {n var _this = _super.call(this) || this;n var options = opt_options ? opt_options : {};n /**n * @type {Projection}n */n _this.dataProjection = new Projection({n code: '',n units: Units.TILE_PIXELSn });n /**n * @privaten * @type {import("../Feature.js").FeatureClass}n */n this.featureClass = options.featureClass ? options.featureClass : RenderFeature;n /**n * @privaten * @type {string|undefined}n */n this.geometryName = options.geometryName;n /**n * @privaten * @type {string}n */n this.layerName = options.layerName ? options.layerName : 'layer';n /**n * @privaten * @type {Array<string>}n */n this.layers = options.layers ? options.layers : null;n /**n * @privaten * @type {string}n */n this.idProperty = options.idProperty;n return _this;n }n /**n * Read the raw geometry from the pbf offset stored in a raw feature's geometryn * property.n * @param {PBF} pbf PBF.n * @param {Object} feature Raw feature.n * @param {Array<number>} flatCoordinates Array to store flat coordinates in.n * @param {Array<number>} ends Array to store ends in.n * @privaten */n MVT.prototype.readRawGeometry_ = function (pbf, feature, flatCoordinates, ends) {n pbf.pos = feature.geometry;n var end = pbf.readVarint() + pbf.pos;n var cmd = 1;n var length = 0;n var x = 0;n var y = 0;n var coordsLen = 0;n var currentEnd = 0;n while (pbf.pos < end) {n if (!length) {n var cmdLen = pbf.readVarint();n cmd = cmdLen & 0x7;n length = cmdLen >> 3;n }n length–;n if (cmd === 1 || cmd === 2) {n x += pbf.readSVarint();n y += pbf.readSVarint();n if (cmd === 1) { // moveTon if (coordsLen > currentEnd) {n ends.push(coordsLen);n currentEnd = coordsLen;n }n }n flatCoordinates.push(x, y);n coordsLen += 2;n }n else if (cmd === 7) {n if (coordsLen > currentEnd) {n // close polygonn flatCoordinates.push(flatCoordinates, flatCoordinates[currentEnd + 1]);n coordsLen += 2;n }n }n else {n assert(false, 59); // Invalid command found in the PBFn }n }n if (coordsLen > currentEnd) {n ends.push(coordsLen);n currentEnd = coordsLen;n }n };n /**n * @privaten * @param {PBF} pbf PBFn * @param {Object} rawFeature Raw Mapbox feature.n * @param {import("./Feature.js").ReadOptions} options Read options.n * @return {import("../Feature.js").FeatureLike} Feature.n */n MVT.prototype.createFeature_ = function (pbf, rawFeature, options) {n var type = rawFeature.type;n if (type === 0) {n return null;n }n var feature;n var values = rawFeature.properties;n var id;n if (!this.idProperty_) {n id = rawFeature.id;n }n else {n id = values;n delete values;n }n values = rawFeature.layer.name;n var flatCoordinates = [];n var ends = [];n this.readRawGeometry_(pbf, rawFeature, flatCoordinates, ends);n var geometryType = getGeometryType(type, ends.length);n if (this.featureClass_ === RenderFeature) {n feature = new this.featureClass_(geometryType, flatCoordinates, ends, values, id);n feature.transform(options.dataProjection, options.featureProjection);n }n else {n var geom = void 0;n if (geometryType == GeometryType.POLYGON) {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;n if (!linearRingIsClockwise(flatCoordinates, offset, end, 2)) {n endss.push(ends.slice(prevEndIndex, i));n prevEndIndex = i;n }n offset = end;n }n if (endss.length > 1) {n geom = new MultiPolygon(flatCoordinates, GeometryLayout.XY, endss);n }n else {n geom = new Polygon(flatCoordinates, GeometryLayout.XY, ends);n }n }n else {n geom = geometryType === GeometryType.POINT ? new Point(flatCoordinates, GeometryLayout.XY) :n geometryType === GeometryType.LINE_STRING ? new LineString(flatCoordinates, GeometryLayout.XY) :n geometryType === GeometryType.POLYGON ? new Polygon(flatCoordinates, GeometryLayout.XY, ends) :n geometryType === GeometryType.MULTI_POINT ? new MultiPoint(flatCoordinates, GeometryLayout.XY) :n geometryType === GeometryType.MULTI_LINE_STRING ? new MultiLineString(flatCoordinates, GeometryLayout.XY, ends) :n null;n }n var ctor = /** @type {typeof import("../Feature.js").default} */ (this.featureClass_);n feature = new ctor();n if (this.geometryName_) {n feature.setGeometryName(this.geometryName_);n }n var geometry = transformGeometryWithOptions(geom, false, options);n feature.setGeometry(geometry);n feature.setId(id);n feature.setProperties(values, true);n }n return feature;n };n /**n * @inheritDocn */n MVT.prototype.getType = function () {n return FormatType.ARRAY_BUFFER;n };n /**n * Read all features.n *n * @param {ArrayBuffer} source Source.n * @param {import("./Feature.js").ReadOptions=} opt_options Read options.n * @return {Array<import("../Feature.js").FeatureLike>} Features.n * @apin */n MVT.prototype.readFeatures = function (source, opt_options) {n var layers = this.layers_;n var options = /** @type {import("./Feature.js").ReadOptions} */ (this.adaptOptions(opt_options));n var dataProjection = get(options.dataProjection);n dataProjection.setWorldExtent(options.extent);n options.dataProjection = dataProjection;n var pbf = new PBF(/** @type {ArrayBuffer} */ (source));n var pbfLayers = pbf.readFields(layersPBFReader, {});n var features = [];n for (var name_1 in pbfLayers) {n if (layers && layers.indexOf(name_1) == -1) {n continue;n }n var pbfLayer = pbfLayers;n var extent = pbfLayer ? [0, 0, pbfLayer.extent, pbfLayer.extent] : null;n dataProjection.setExtent(extent);n for (var i = 0, ii = pbfLayer.length; i < ii; ++i) {n var rawFeature = readRawFeature(pbf, pbfLayer, i);n features.push(this.createFeature_(pbf, rawFeature, options));n }n }n return features;n };n /**n * @inheritDocn * @apin */n MVT.prototype.readProjection = function (source) {n return this.dataProjection;n };n /**n * Sets the layers that features will be read from.n * @param {Array<string>} layers Layers.n * @apin */n MVT.prototype.setLayers = function (layers) {n this.layers_ = layers;n };n return MVT;n}(FeatureFormat));n/**n * Reader callback for parsing layers.n * @param {number} tag The tag.n * @param {Object} layers The layers object.n * @param {PBF} pbf The PBF.n */nfunction layersPBFReader(tag, layers, pbf) {n if (tag === 3) {n var layer = {n keys: [],n values: [],n features: []n };n var end = pbf.readVarint() + pbf.pos;n pbf.readFields(layerPBFReader, layer, end);n layer.length = layer.features.length;n if (layer.length) {n layers = layer;n }n }n}n/**n * Reader callback for parsing layer.n * @param {number} tag The tag.n * @param {Object} layer The layer object.n * @param {PBF} pbf The PBF.n */nfunction layerPBFReader(tag, layer, pbf) {n if (tag === 15) {n layer.version = pbf.readVarint();n }n else if (tag === 1) {n layer.name = pbf.readString();n }n else if (tag === 5) {n layer.extent = pbf.readVarint();n }n else if (tag === 2) {n layer.features.push(pbf.pos);n }n else if (tag === 3) {n layer.keys.push(pbf.readString());n }n else if (tag === 4) {n var value = null;n var end = pbf.readVarint() + pbf.pos;n while (pbf.pos < end) {n tag = pbf.readVarint() >> 3;n value = tag === 1 ? pbf.readString() :n tag === 2 ? pbf.readFloat() :n tag === 3 ? pbf.readDouble() :n tag === 4 ? pbf.readVarint64() :n tag === 5 ? pbf.readVarint() :n tag === 6 ? pbf.readSVarint() :n tag === 7 ? pbf.readBoolean() : null;n }n layer.values.push(value);n }n}n/**n * Reader callback for parsing feature.n * @param {number} tag The tag.n * @param {Object} feature The feature object.n * @param {PBF} pbf The PBF.n */nfunction featurePBFReader(tag, feature, pbf) {n if (tag == 1) {n feature.id = pbf.readVarint();n }n else if (tag == 2) {n var end = pbf.readVarint() + pbf.pos;n while (pbf.pos < end) {n var key = feature.layer.keys;n var value = feature.layer.values;n feature.properties = value;n }n }n else if (tag == 3) {n feature.type = pbf.readVarint();n }n else if (tag == 4) {n feature.geometry = pbf.pos;n }n}n/**n * Read a raw feature from the pbf offset stored at index `i` in the raw layer.n * @param {PBF} pbf PBF.n * @param {Object} layer Raw layer.n * @param {number} i Index of the feature in the raw layer's `features` array.n * @return {Object} Raw feature.n */nfunction readRawFeature(pbf, layer, i) {n pbf.pos = layer.features;n var end = pbf.readVarint() + pbf.pos;n var feature = {n layer: layer,n type: 0,n properties: {}n };n pbf.readFields(featurePBFReader, feature, end);n return feature;n}n/**n * @param {number} type The raw feature's geometry typen * @param {number} numEnds Number of ends of the flat coordinates of then * geometry.n * @return {GeometryType} The geometry type.n */nfunction getGeometryType(type, numEnds) {n /** @type {GeometryType} */n var geometryType;n if (type === 1) {n geometryType = numEnds === 1 ?n GeometryType.POINT : GeometryType.MULTI_POINT;n }n else if (type === 2) {n geometryType = numEnds === 1 ?n GeometryType.LINE_STRING :n GeometryType.MULTI_LINE_STRING;n }n else if (type === 3) {n geometryType = GeometryType.POLYGON;n // MultiPolygon not relevant for rendering - winding order determinesn // outer rings of polygons.n }n return geometryType;n}nexport default MVT;n//# sourceMappingURL=MVT.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/OSMXMLn */n// FIXME add typedef for stack state objectsnimport { extend } from '../array.js';nimport Feature from '../Feature.js';nimport { transformGeometryWithOptions } from './Feature.js';nimport XMLFeature from './XMLFeature.js';nimport GeometryLayout from '../geom/GeometryLayout.js';nimport LineString from '../geom/LineString.js';nimport Point from '../geom/Point.js';nimport Polygon from '../geom/Polygon.js';nimport { isEmpty } from '../obj.js';nimport { get as getProjection } from '../proj.js';nimport { pushParseAndPop, makeStructureNS } from '../xml.js';n/**n * @constn * @type {Array<null>}n */nvar NAMESPACE_URIS = [null];n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar WAY_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'nd': readNd,n 'tag': readTagn});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'node': readNode,n 'way': readWayn});n/**n * @classdescn * Feature format for reading data in then * [OSMXML format](wiki.openstreetmap.org/wiki/OSM_XML).n *n * @apin */nvar OSMXML = /** @class */ (function (_super) {n __extends(OSMXML, _super);n function OSMXML() {n var _this = _super.call(this) || this;n /**n * @inheritDocn */n _this.dataProjection = getProjection('EPSG:4326');n return _this;n }n /**n * @inheritDocn */n OSMXML.prototype.readFeaturesFromNode = function (node, opt_options) {n var options = this.getReadOptions(node, opt_options);n if (node.localName == 'osm') {n var state = pushParseAndPop({n nodes: {},n ways: [],n features: []n }, PARSERS, node, [options]);n // parse nodes in waysn for (var j = 0; j < state.ways.length; j++) {n var values = /** @type {Object} */ (state.ways);n /** @type {Array<number>} */n var flatCoordinates = [];n for (var i = 0, ii = values.ndrefs.length; i < ii; i++) {n var point = state.nodes[values.ndrefs];n extend(flatCoordinates, point);n }n var geometry = void 0;n if (values.ndrefs == values.ndrefs[values.ndrefs.length - 1]) {n // closed wayn geometry = new Polygon(flatCoordinates, GeometryLayout.XY, [flatCoordinates.length]);n }n else {n geometry = new LineString(flatCoordinates, GeometryLayout.XY);n }n transformGeometryWithOptions(geometry, false, options);n var feature = new Feature(geometry);n feature.setId(values.id);n feature.setProperties(values.tags, true);n state.features.push(feature);n }n if (state.features) {n return state.features;n }n }n return [];n };n return OSMXML;n}(XMLFeature));n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar NODE_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'tag': readTagn});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction readNode(node, objectStack) {n var options = /** @type {import("./Feature.js").ReadOptions} */ (objectStack);n var state = /** @type {Object} */ (objectStack[objectStack.length - 1]);n var id = node.getAttribute('id');n /** @type {import("../coordinate.js").Coordinate} */n var coordinates = [n parseFloat(node.getAttribute('lon')),n parseFloat(node.getAttribute('lat'))n ];n state.nodes = coordinates;n var values = pushParseAndPop({n tags: {}n }, NODE_PARSERS, node, objectStack);n if (!isEmpty(values.tags)) {n var geometry = new Point(coordinates);n transformGeometryWithOptions(geometry, false, options);n var feature = new Feature(geometry);n feature.setId(id);n feature.setProperties(values.tags, true);n state.features.push(feature);n }n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction readWay(node, objectStack) {n var id = node.getAttribute('id');n var values = pushParseAndPop({n id: id,n ndrefs: [],n tags: {}n }, WAY_PARSERS, node, objectStack);n var state = /** @type {Object} */ (objectStack[objectStack.length - 1]);n state.ways.push(values);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction readNd(node, objectStack) {n var values = /** @type {Object} */ (objectStack[objectStack.length - 1]);n values.ndrefs.push(node.getAttribute('ref'));n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction readTag(node, objectStack) {n var values = /** @type {Object} */ (objectStack[objectStack.length - 1]);n values.tags = node.getAttribute('v');n}nexport default OSMXML;n//# sourceMappingURL=OSMXML.js.map”,“/**n * @module ol/geom/flat/flipn */n/**n * @param {Array<number>} flatCoordinates Flat coordinates.n * @param {number} offset Offset.n * @param {number} end End.n * @param {number} stride Stride.n * @param {Array<number>=} opt_dest Destination.n * @param {number=} opt_destOffset Destination offset.n * @return {Array<number>} Flat coordinates.n */nexport function flipXY(flatCoordinates, offset, end, stride, opt_dest, opt_destOffset) {n var dest, destOffset;n if (opt_dest !== undefined) {n dest = opt_dest;n destOffset = opt_destOffset !== undefined ? opt_destOffset : 0;n }n else {n dest = [];n destOffset = 0;n }n var j = offset;n while (j < end) {n var x = flatCoordinates;n dest = flatCoordinates;n dest = x;n for (var k = 2; k < stride; ++k) {n dest = flatCoordinates;n }n }n dest.length = destOffset;n return dest;n}n//# sourceMappingURL=flip.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/Polylinen */nimport { assert } from '../asserts.js';nimport Feature from '../Feature.js';nimport { transformGeometryWithOptions } from './Feature.js';nimport TextFeature from './TextFeature.js';nimport GeometryLayout from '../geom/GeometryLayout.js';nimport LineString from '../geom/LineString.js';nimport { getStrideForLayout } from '../geom/SimpleGeometry.js';nimport { flipXY } from '../geom/flat/flip.js';nimport { inflateCoordinates } from '../geom/flat/inflate.js';nimport { get as getProjection } from '../proj.js';n/**n * @typedef {Object} Optionsn * @property {number} [factor=1e5] The factor by which the coordinates values will be scaled.n * @property {GeometryLayout} [geometryLayout='XY'] Layout of then * feature geometries created by the format reader.n */n/**n * @classdescn * Feature format for reading and writing data in the Encodedn * Polyline Algorithm Format.n *n * When reading features, the coordinates are assumed to be in two dimensionsn * and in [latitude, longitude] order.n *n * As Polyline sources contain a single feature,n * {@link module:ol/format/Polyline~Polyline#readFeatures} will return then * feature in an array.n *n * @apin */nvar Polyline = /** @class */ (function (_super) {n __extends(Polyline, _super);n /**n * @param {Options=} opt_options Optional configuration object.n */n function Polyline(opt_options) {n var _this = _super.call(this) || this;n var options = opt_options ? opt_options : {};n /**n * @inheritDocn */n _this.dataProjection = getProjection('EPSG:4326');n /**n * @privaten * @type {number}n */n this.factor = options.factor ? options.factor : 1e5;n /**n * @privaten * @type {GeometryLayout}n */n this.geometryLayout = options.geometryLayout ?n options.geometryLayout : GeometryLayout.XY;n return _this;n }n /**n * @inheritDocn */n Polyline.prototype.readFeatureFromText = function (text, opt_options) {n var geometry = this.readGeometryFromText(text, opt_options);n return new Feature(geometry);n };n /**n * @inheritDocn */n Polyline.prototype.readFeaturesFromText = function (text, opt_options) {n var feature = this.readFeatureFromText(text, opt_options);n return [feature];n };n /**n * @inheritDocn */n Polyline.prototype.readGeometryFromText = function (text, opt_options) {n var stride = getStrideForLayout(this.geometryLayout_);n var flatCoordinates = decodeDeltas(text, stride, this.factor_);n flipXY(flatCoordinates, 0, flatCoordinates.length, stride, flatCoordinates);n var coordinates = inflateCoordinates(flatCoordinates, 0, flatCoordinates.length, stride);n var lineString = new LineString(coordinates, this.geometryLayout_);n return transformGeometryWithOptions(lineString, false, this.adaptOptions(opt_options));n };n /**n * @inheritDocn */n Polyline.prototype.writeFeatureText = function (feature, opt_options) {n var geometry = feature.getGeometry();n if (geometry) {n return this.writeGeometryText(geometry, opt_options);n }n else {n assert(false, 40); // Expected `feature` to have a geometryn return '';n }n };n /**n * @inheritDocn */n Polyline.prototype.writeFeaturesText = function (features, opt_options) {n return this.writeFeatureText(features, opt_options);n };n /**n * @inheritDocn */n Polyline.prototype.writeGeometryText = function (geometry, opt_options) {n geometry = /** @type {LineString} */n (transformGeometryWithOptions(geometry, true, this.adaptOptions(opt_options)));n var flatCoordinates = geometry.getFlatCoordinates();n var stride = geometry.getStride();n flipXY(flatCoordinates, 0, flatCoordinates.length, stride, flatCoordinates);n return encodeDeltas(flatCoordinates, stride, this.factor_);n };n return Polyline;n}(TextFeature));n/**n * Encode a list of n-dimensional points and return an encoded stringn *n * Attention: This function will modify the passed array!n *n * @param {Array<number>} numbers A list of n-dimensional points.n * @param {number} stride The number of dimension of the points in the list.n * @param {number=} opt_factor The factor by which the numbers will ben * multiplied. The remaining decimal places will get rounded away.n * Default is `1e5`.n * @return {string} The encoded string.n * @apin */nexport function encodeDeltas(numbers, stride, opt_factor) {n var factor = opt_factor ? opt_factor : 1e5;n var d;n var lastNumbers = new Array(stride);n for (d = 0; d < stride; ++d) {n lastNumbers = 0;n }n for (var i = 0, ii = numbers.length; i < ii;) {n for (d = 0; d < stride; ++d, ++i) {n var num = numbers;n var delta = num - lastNumbers;n lastNumbers = num;n numbers = delta;n }n }n return encodeFloats(numbers, factor);n}n/**n * Decode a list of n-dimensional points from an encoded stringn *n * @param {string} encoded An encoded string.n * @param {number} stride The number of dimension of the points in then * encoded string.n * @param {number=} opt_factor The factor by which the resulting numbers willn * be divided. Default is `1e5`.n * @return {Array<number>} A list of n-dimensional points.n * @apin */nexport function decodeDeltas(encoded, stride, opt_factor) {n var factor = opt_factor ? opt_factor : 1e5;n var d;n /** @type {Array<number>} */n var lastNumbers = new Array(stride);n for (d = 0; d < stride; ++d) {n lastNumbers = 0;n }n var numbers = decodeFloats(encoded, factor);n for (var i = 0, ii = numbers.length; i < ii;) {n for (d = 0; d < stride; ++d, ++i) {n lastNumbers += numbers;n numbers = lastNumbers;n }n }n return numbers;n}n/**n * Encode a list of floating point numbers and return an encoded stringn *n * Attention: This function will modify the passed array!n *n * @param {Array<number>} numbers A list of floating point numbers.n * @param {number=} opt_factor The factor by which the numbers will ben * multiplied. The remaining decimal places will get rounded away.n * Default is `1e5`.n * @return {string} The encoded string.n * @apin */nexport function encodeFloats(numbers, opt_factor) {n var factor = opt_factor ? opt_factor : 1e5;n for (var i = 0, ii = numbers.length; i < ii; ++i) {n numbers = Math.round(numbers * factor);n }n return encodeSignedIntegers(numbers);n}n/**n * Decode a list of floating point numbers from an encoded stringn *n * @param {string} encoded An encoded string.n * @param {number=} opt_factor The factor by which the result will be divided.n * Default is `1e5`.n * @return {Array<number>} A list of floating point numbers.n * @apin */nexport function decodeFloats(encoded, opt_factor) {n var factor = opt_factor ? opt_factor : 1e5;n var numbers = decodeSignedIntegers(encoded);n for (var i = 0, ii = numbers.length; i < ii; ++i) {n numbers /= factor;n }n return numbers;n}n/**n * Encode a list of signed integers and return an encoded stringn *n * Attention: This function will modify the passed array!n *n * @param {Array<number>} numbers A list of signed integers.n * @return {string} The encoded string.n */nexport function encodeSignedIntegers(numbers) {n for (var i = 0, ii = numbers.length; i < ii; ++i) {n var num = numbers;n numbers = (num < 0) ? ~(num << 1) : (num << 1);n }n return encodeUnsignedIntegers(numbers);n}n/**n * Decode a list of signed integers from an encoded stringn *n * @param {string} encoded An encoded string.n * @return {Array<number>} A list of signed integers.n */nexport function decodeSignedIntegers(encoded) {n var numbers = decodeUnsignedIntegers(encoded);n for (var i = 0, ii = numbers.length; i < ii; ++i) {n var num = numbers;n numbers = (num & 1) ? ~(num >> 1) : (num >> 1);n }n return numbers;n}n/**n * Encode a list of unsigned integers and return an encoded stringn *n * @param {Array<number>} numbers A list of unsigned integers.n * @return {string} The encoded string.n */nexport function encodeUnsignedIntegers(numbers) {n var encoded = '';n for (var i = 0, ii = numbers.length; i < ii; ++i) {n encoded += encodeUnsignedInteger(numbers);n }n return encoded;n}n/**n * Decode a list of unsigned integers from an encoded stringn *n * @param {string} encoded An encoded string.n * @return {Array<number>} A list of unsigned integers.n */nexport function decodeUnsignedIntegers(encoded) {n var numbers = [];n var current = 0;n var shift = 0;n for (var i = 0, ii = encoded.length; i < ii; ++i) {n var b = encoded.charCodeAt(i) - 63;n current |= (b & 0x1f) << shift;n if (b < 0x20) {n numbers.push(current);n current = 0;n shift = 0;n }n else {n shift += 5;n }n }n return numbers;n}n/**n * Encode one single unsigned integer and return an encoded stringn *n * @param {number} num Unsigned integer that should be encoded.n * @return {string} The encoded string.n */nexport function encodeUnsignedInteger(num) {n var value, encoded = '';n while (num >= 0x20) {n value = (0x20 | (num & 0x1f)) + 63;n encoded += String.fromCharCode(value);n num >>= 5;n }n value = num + 63;n encoded += String.fromCharCode(value);n return encoded;n}nexport default Polyline;n//# sourceMappingURL=Polyline.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/TopoJSONn */nimport Feature from '../Feature.js';nimport { transformGeometryWithOptions } from './Feature.js';nimport JSONFeature from './JSONFeature.js';nimport LineString from '../geom/LineString.js';nimport MultiLineString from '../geom/MultiLineString.js';nimport MultiPoint from '../geom/MultiPoint.js';nimport MultiPolygon from '../geom/MultiPolygon.js';nimport Point from '../geom/Point.js';nimport Polygon from '../geom/Polygon.js';nimport { get as getProjection } from '../proj.js';n/**n * @typedef {import("topojson-specification").Topology} TopoJSONTopologyn * @typedef {import("topojson-specification").GeometryCollection} TopoJSONGeometryCollectionn * @typedef {import("topojson-specification").GeometryObject} TopoJSONGeometryn * @typedef {import("topojson-specification").Point} TopoJSONPointn * @typedef {import("topojson-specification").MultiPoint} TopoJSONMultiPointn * @typedef {import("topojson-specification").LineString} TopoJSONLineStringn * @typedef {import("topojson-specification").MultiLineString} TopoJSONMultiLineStringn * @typedef {import("topojson-specification").Polygon} TopoJSONPolygonn * @typedef {import("topojson-specification").MultiPolygon} TopoJSONMultiPolygonn */n/**n * @typedef {Object} Optionsn * @property {import("../proj.js").ProjectionLike} [dataProjection='EPSG:4326'] Default data projection.n * @property {string} [layerName] Set the name of the TopoJSON topologyn * `objects`'s children as feature property with the specified name. This meansn * that when set to `'layer'`, a topology liken * “`n * {n * "type": "Topology",n * "objects": {n * "example": {n * "type": "GeometryCollection",n * "geometries": []n * }n * }n * }n * “`n * will result in features that have a property `'layer'` set to `'example'`.n * When not set, no property will be added to features.n * @property {Array<string>} [layers] Names of the TopoJSON topology'sn * `objects`'s children to read features from. If not provided, features willn * be read from all children.n */n/**n * @classdescn * Feature format for reading data in the TopoJSON format.n *n * @apin */nvar TopoJSON = /** @class */ (function (_super) {n __extends(TopoJSON, _super);n /**n * @param {Options=} opt_options Options.n */n function TopoJSON(opt_options) {n var _this = _super.call(this) || this;n var options = opt_options ? opt_options : {};n /**n * @privaten * @type {string|undefined}n */n this.layerName = options.layerName;n /**n * @privaten * @type {?Array<string>}n */n this.layers = options.layers ? options.layers : null;n /**n * @inheritDocn */n _this.dataProjection = getProjection(options.dataProjection ?n options.dataProjection : 'EPSG:4326');n return _this;n }n /**n * @inheritDocn */n TopoJSON.prototype.readFeaturesFromObject = function (object, opt_options) {n if (object.type == 'Topology') {n var topoJSONTopology = /** @type {TopoJSONTopology} */ (object);n var transform = void 0, scale = null, translate = null;n if (topoJSONTopology) {n transform = topoJSONTopology;n scale = transform;n translate = transform;n }n var arcs = topoJSONTopology;n if (transform) {n transformArcs(arcs, scale, translate);n }n /** @type {Array<Feature>} */n var features = [];n var topoJSONFeatures = topoJSONTopology;n var property = this.layerName_;n var feature = void 0;n for (var objectName in topoJSONFeatures) {n if (this.layers_ && this.layers_.indexOf(objectName) == -1) {n continue;n }n if (topoJSONFeatures.type === 'GeometryCollection') {n feature = /** @type {TopoJSONGeometryCollection} */ (topoJSONFeatures);n features.push.apply(features, readFeaturesFromGeometryCollection(feature, arcs, scale, translate, property, objectName, opt_options));n }n else {n feature = /** @type {TopoJSONGeometry} */ (topoJSONFeatures);n features.push(readFeatureFromGeometry(feature, arcs, scale, translate, property, objectName, opt_options));n }n }n return features;n }n else {n return [];n }n };n /**n * @inheritDocn */n TopoJSON.prototype.readProjectionFromObject = function (object) {n return this.dataProjection;n };n return TopoJSON;n}(JSONFeature));n/**n * @constn * @type {Object<string, function(TopoJSONGeometry, Array, …Array=): import("../geom/Geometry.js").default>}n */nvar GEOMETRY_READERS = {n 'Point': readPointGeometry,n 'LineString': readLineStringGeometry,n 'Polygon': readPolygonGeometry,n 'MultiPoint': readMultiPointGeometry,n 'MultiLineString': readMultiLineStringGeometry,n 'MultiPolygon': readMultiPolygonGeometryn};n/**n * Concatenate arcs into a coordinate array.n * @param {Array<number>} indices Indices of arcs to concatenate. Negativen * values indicate arcs need to be reversed.n * @param {Array<Array<import("../coordinate.js").Coordinate>>} arcs Array of arcs (alreadyn * transformed).n * @return {Array<import("../coordinate.js").Coordinate>} Coordinates array.n */nfunction concatenateArcs(indices, arcs) {n /** @type {Array<import("../coordinate.js").Coordinate>} */n var coordinates = [];n var index, arc;n for (var i = 0, ii = indices.length; i < ii; ++i) {n index = indices;n if (i > 0) {n // splicing together arcs, discard last pointn coordinates.pop();n }n if (index >= 0) {n // forward arcn arc = arcs;n }n else {n // reverse arcn arc = arcs.slice().reverse();n }n coordinates.push.apply(coordinates, arc);n }n // provide fresh copies of coordinate arraysn for (var j = 0, jj = coordinates.length; j < jj; ++j) {n coordinates = coordinates.slice();n }n return coordinates;n}n/**n * Create a point from a TopoJSON geometry object.n *n * @param {TopoJSONPoint} object TopoJSON object.n * @param {Array<number>} scale Scale for each dimension.n * @param {Array<number>} translate Translation for each dimension.n * @return {Point} Geometry.n */nfunction readPointGeometry(object, scale, translate) {n var coordinates = object;n if (scale && translate) {n transformVertex(coordinates, scale, translate);n }n return new Point(coordinates);n}n/**n * Create a multi-point from a TopoJSON geometry object.n *n * @param {TopoJSONMultiPoint} object TopoJSON object.n * @param {Array<number>} scale Scale for each dimension.n * @param {Array<number>} translate Translation for each dimension.n * @return {MultiPoint} Geometry.n */nfunction readMultiPointGeometry(object, scale, translate) {n var coordinates = object;n if (scale && translate) {n for (var i = 0, ii = coordinates.length; i < ii; ++i) {n transformVertex(coordinates, scale, translate);n }n }n return new MultiPoint(coordinates);n}n/**n * Create a linestring from a TopoJSON geometry object.n *n * @param {TopoJSONLineString} object TopoJSON object.n * @param {Array<Array<import("../coordinate.js").Coordinate>>} arcs Array of arcs.n * @return {LineString} Geometry.n */nfunction readLineStringGeometry(object, arcs) {n var coordinates = concatenateArcs(object, arcs);n return new LineString(coordinates);n}n/**n * Create a multi-linestring from a TopoJSON geometry object.n *n * @param {TopoJSONMultiLineString} object TopoJSON object.n * @param {Array<Array<import("../coordinate.js").Coordinate>>} arcs Array of arcs.n * @return {MultiLineString} Geometry.n */nfunction readMultiLineStringGeometry(object, arcs) {n var coordinates = [];n for (var i = 0, ii = object.length; i < ii; ++i) {n coordinates = concatenateArcs(object[i], arcs);n }n return new MultiLineString(coordinates);n}n/**n * Create a polygon from a TopoJSON geometry object.n *n * @param {TopoJSONPolygon} object TopoJSON object.n * @param {Array<Array<import("../coordinate.js").Coordinate>>} arcs Array of arcs.n * @return {Polygon} Geometry.n */nfunction readPolygonGeometry(object, arcs) {n var coordinates = [];n for (var i = 0, ii = object.length; i < ii; ++i) {n coordinates = concatenateArcs(object[i], arcs);n }n return new Polygon(coordinates);n}n/**n * Create a multi-polygon from a TopoJSON geometry object.n *n * @param {TopoJSONMultiPolygon} object TopoJSON object.n * @param {Array<Array<import("../coordinate.js").Coordinate>>} arcs Array of arcs.n * @return {MultiPolygon} Geometry.n */nfunction readMultiPolygonGeometry(object, arcs) {n var coordinates = [];n for (var i = 0, ii = object.length; i < ii; ++i) {n // for each polygonn var polyArray = object[i];n var ringCoords = [];n for (var j = 0, jj = polyArray.length; j < jj; ++j) {n // for each ringn ringCoords = concatenateArcs(polyArray, arcs);n }n coordinates = ringCoords;n }n return new MultiPolygon(coordinates);n}n/**n * Create features from a TopoJSON GeometryCollection object.n *n * @param {TopoJSONGeometryCollection} collection TopoJSON Geometryn * object.n * @param {Array<Array<import("../coordinate.js").Coordinate>>} arcs Array of arcs.n * @param {Array<number>} scale Scale for each dimension.n * @param {Array<number>} translate Translation for each dimension.n * @param {string|undefined} property Property to set the `GeometryCollection`'s parentn * object to.n * @param {string} name Name of the `Topology`'s child object.n * @param {import("./Feature.js").ReadOptions=} opt_options Read options.n * @return {Array<Feature>} Array of features.n */nfunction readFeaturesFromGeometryCollection(collection, arcs, scale, translate, property, name, opt_options) {n var geometries = collection;n var features = [];n for (var i = 0, ii = geometries.length; i < ii; ++i) {n features = readFeatureFromGeometry(geometries, arcs, scale, translate, property, name, opt_options);n }n return features;n}n/**n * Create a feature from a TopoJSON geometry object.n *n * @param {TopoJSONGeometry} object TopoJSON geometry object.n * @param {Array<Array<import("../coordinate.js").Coordinate>>} arcs Array of arcs.n * @param {Array<number>} scale Scale for each dimension.n * @param {Array<number>} translate Translation for each dimension.n * @param {string|undefined} property Property to set the `GeometryCollection`'s parentn * object to.n * @param {string} name Name of the `Topology`'s child object.n * @param {import("./Feature.js").ReadOptions=} opt_options Read options.n * @return {Feature} Feature.n */nfunction readFeatureFromGeometry(object, arcs, scale, translate, property, name, opt_options) {n var geometry;n var type = object.type;n var geometryReader = GEOMETRY_READERS;n if ((type === 'Point') || (type === 'MultiPoint')) {n geometry = geometryReader(object, scale, translate);n }n else {n geometry = geometryReader(object, arcs);n }n var feature = new Feature();n feature.setGeometry(transformGeometryWithOptions(geometry, false, opt_options));n if (object.id !== undefined) {n feature.setId(object.id);n }n var properties = object.properties;n if (property) {n if (!properties) {n properties = {};n }n properties = name;n }n if (properties) {n feature.setProperties(properties, true);n }n return feature;n}n/**n * Apply a linear transform to array of arcs. The provided array of arcs isn * modified in place.n *n * @param {Array<Array<import("../coordinate.js").Coordinate>>} arcs Array of arcs.n * @param {Array<number>} scale Scale for each dimension.n * @param {Array<number>} translate Translation for each dimension.n */nfunction transformArcs(arcs, scale, translate) {n for (var i = 0, ii = arcs.length; i < ii; ++i) {n transformArc(arcs, scale, translate);n }n}n/**n * Apply a linear transform to an arc. The provided arc is modified in place.n *n * @param {Array<import("../coordinate.js").Coordinate>} arc Arc.n * @param {Array<number>} scale Scale for each dimension.n * @param {Array<number>} translate Translation for each dimension.n */nfunction transformArc(arc, scale, translate) {n var x = 0;n var y = 0;n for (var i = 0, ii = arc.length; i < ii; ++i) {n var vertex = arc;n x += vertex;n y += vertex;n vertex = x;n vertex = y;n transformVertex(vertex, scale, translate);n }n}n/**n * Apply a linear transform to a vertex. The provided vertex is modified inn * place.n *n * @param {import("../coordinate.js").Coordinate} vertex Vertex.n * @param {Array<number>} scale Scale for each dimension.n * @param {Array<number>} translate Translation for each dimension.n */nfunction transformVertex(vertex, scale, translate) {n vertex = vertex * scale + translate;n vertex = vertex * scale + translate;n}nexport default TopoJSON;n//# sourceMappingURL=TopoJSON.js.map”,“/**n * @module ol/format/filter/Filtern */n/**n * @classdescn * Abstract class; normally only used for creating subclasses and not instantiated in apps.n * Base class for WFS GetFeature filters.n *n * @abstractn */nvar Filter = /** @class */ (function () {n /**n * @param {!string} tagName The XML tag name for this filter.n */n function Filter(tagName) {n /**n * @privaten * @type {!string}n */n this.tagName_ = tagName;n }n /**n * The XML tag name for a filter.n * @returns {!string} Name.n */n Filter.prototype.getTagName = function () {n return this.tagName_;n };n return Filter;n}());nexport default Filter;n//# sourceMappingURL=Filter.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/LogicalNaryn */nimport { assert } from '../../asserts.js';nimport Filter from './Filter.js';n/**n * @classdescn * Abstract class; normally only used for creating subclasses and not instantiated in apps.n * Base class for WFS GetFeature n-ary logical filters.n *n * @abstractn */nvar LogicalNary = /** @class */ (function (_super) {n __extends(LogicalNary, _super);n /**n * @param {!string} tagName The XML tag name for this filter.n * @param {Array<import("./Filter.js").default>} conditions Conditions.n */n function LogicalNary(tagName, conditions) {n var _this = _super.call(this, tagName) || this;n /**n * @type {Array<import("./Filter.js").default>}n */n _this.conditions = conditions;n assert(_this.conditions.length >= 2, 57); // At least 2 conditions are required.n return _this;n }n return LogicalNary;n}(Filter));nexport default LogicalNary;n//# sourceMappingURL=LogicalNary.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/Andn */nimport LogicalNary from './LogicalNary.js';n/**n * @classdescn * Represents a logical `<And>` operator between two or more filter conditions.n *n * @abstractn */nvar And = /** @class */ (function (_super) {n __extends(And, _super);n /**n * @param {…import("./Filter.js").default} conditions Conditions.n */n function And(conditions) {n return _super.call(this, 'And', Array.prototype.slice.call(arguments)) || this;n }n return And;n}(LogicalNary));nexport default And;n//# sourceMappingURL=And.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/Bboxn */nimport Filter from './Filter.js';n/**n * @classdescn * Represents a `<BBOX>` operator to test whether a geometry-valued propertyn * intersects a fixed bounding boxn *n * @apin */nvar Bbox = /** @class */ (function (_super) {n __extends(Bbox, _super);n /**n * @param {!string} geometryName Geometry name to use.n * @param {!import("../../extent.js").Extent} extent Extent.n * @param {string=} opt_srsName SRS name. No srsName attribute will be setn * on geometries when this is not provided.n */n function Bbox(geometryName, extent, opt_srsName) {n var _this = _super.call(this, 'BBOX') || this;n /**n * @type {!string}n */n _this.geometryName = geometryName;n /**n * @type {import("../../extent.js").Extent}n */n _this.extent = extent;n if (extent.length !== 4) {n throw new Error('Expected an extent with four values ([minX, minY, maxX, maxY])');n }n /**n * @type {string|undefined}n */n _this.srsName = opt_srsName;n return _this;n }n return Bbox;n}(Filter));nexport default Bbox;n//# sourceMappingURL=Bbox.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/Spatialn */nimport Filter from './Filter.js';n/**n * @classdescn * Abstract class; normally only used for creating subclasses and not instantiated in apps.n * Represents a spatial operator to test whether a geometry-valued propertyn * relates to a given geometry.n *n * @abstractn */nvar Spatial = /** @class */ (function (_super) {n __extends(Spatial, _super);n /**n * @param {!string} tagName The XML tag name for this filter.n * @param {!string} geometryName Geometry name to use.n * @param {!import("../../geom/Geometry.js").default} geometry Geometry.n * @param {string=} opt_srsName SRS name. No srsName attribute will ben * set on geometries when this is not provided.n */n function Spatial(tagName, geometryName, geometry, opt_srsName) {n var _this = _super.call(this, tagName) || this;n /**n * @type {!string}n */n _this.geometryName = geometryName || 'the_geom';n /**n * @type {import("../../geom/Geometry.js").default}n */n _this.geometry = geometry;n /**n * @type {string|undefined}n */n _this.srsName = opt_srsName;n return _this;n }n return Spatial;n}(Filter));nexport default Spatial;n//# sourceMappingURL=Spatial.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/Containsn */nimport Spatial from './Spatial.js';n/**n * @classdescn * Represents a `<Contains>` operator to test whether a geometry-valued propertyn * contains a given geometry.n * @apin */nvar Contains = /** @class */ (function (_super) {n __extends(Contains, _super);n /**n * @param {!string} geometryName Geometry name to use.n * @param {!import("../../geom/Geometry.js").default} geometry Geometry.n * @param {string=} opt_srsName SRS name. No srsName attribute will ben * set on geometries when this is not provided.n */n function Contains(geometryName, geometry, opt_srsName) {n return _super.call(this, 'Contains', geometryName, geometry, opt_srsName) || this;n }n return Contains;n}(Spatial));nexport default Contains;n//# sourceMappingURL=Contains.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/Comparisonn */nimport Filter from './Filter.js';n/**n * @classdescn * Abstract class; normally only used for creating subclasses and not instantiated in apps.n * Base class for WFS GetFeature property comparison filters.n *n * @abstractn */nvar Comparison = /** @class */ (function (_super) {n __extends(Comparison, _super);n /**n * @param {!string} tagName The XML tag name for this filter.n * @param {!string} propertyName Name of the context property to compare.n */n function Comparison(tagName, propertyName) {n var _this = _super.call(this, tagName) || this;n /**n * @type {!string}n */n _this.propertyName = propertyName;n return _this;n }n return Comparison;n}(Filter));nexport default Comparison;n//# sourceMappingURL=Comparison.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/Duringn */nimport Comparison from './Comparison.js';n/**n * @classdescn * Represents a `<During>` comparison operator.n * @apin */nvar During = /** @class */ (function (_super) {n __extends(During, _super);n /**n * @param {!string} propertyName Name of the context property to compare.n * @param {!string} begin The begin date in ISO-8601 format.n * @param {!string} end The end date in ISO-8601 format.n */n function During(propertyName, begin, end) {n var _this = _super.call(this, 'During', propertyName) || this;n /**n * @type {!string}n */n _this.begin = begin;n /**n * @type {!string}n */n _this.end = end;n return _this;n }n return During;n}(Comparison));nexport default During;n//# sourceMappingURL=During.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/ComparisonBinaryn */nimport Comparison from './Comparison.js';n/**n * @classdescn * Abstract class; normally only used for creating subclasses and not instantiated in apps.n * Base class for WFS GetFeature property binary comparison filters.n *n * @abstractn */nvar ComparisonBinary = /** @class */ (function (_super) {n __extends(ComparisonBinary, _super);n /**n * @param {!string} tagName The XML tag name for this filter.n * @param {!string} propertyName Name of the context property to compare.n * @param {!(string|number)} expression The value to compare.n * @param {boolean=} opt_matchCase Case-sensitive?n */n function ComparisonBinary(tagName, propertyName, expression, opt_matchCase) {n var _this = _super.call(this, tagName, propertyName) || this;n /**n * @type {!(string|number)}n */n _this.expression = expression;n /**n * @type {boolean|undefined}n */n _this.matchCase = opt_matchCase;n return _this;n }n return ComparisonBinary;n}(Comparison));nexport default ComparisonBinary;n//# sourceMappingURL=ComparisonBinary.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/EqualTon */nimport ComparisonBinary from './ComparisonBinary.js';n/**n * @classdescn * Represents a `<PropertyIsEqualTo>` comparison operator.n * @apin */nvar EqualTo = /** @class */ (function (_super) {n __extends(EqualTo, _super);n /**n * @param {!string} propertyName Name of the context property to compare.n * @param {!(string|number)} expression The value to compare.n * @param {boolean=} opt_matchCase Case-sensitive?n */n function EqualTo(propertyName, expression, opt_matchCase) {n return _super.call(this, 'PropertyIsEqualTo', propertyName, expression, opt_matchCase) || this;n }n return EqualTo;n}(ComparisonBinary));nexport default EqualTo;n//# sourceMappingURL=EqualTo.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/GreaterThann */nimport ComparisonBinary from './ComparisonBinary.js';n/**n * @classdescn * Represents a `<PropertyIsGreaterThan>` comparison operator.n * @apin */nvar GreaterThan = /** @class */ (function (_super) {n __extends(GreaterThan, _super);n /**n * @param {!string} propertyName Name of the context property to compare.n * @param {!number} expression The value to compare.n */n function GreaterThan(propertyName, expression) {n return _super.call(this, 'PropertyIsGreaterThan', propertyName, expression) || this;n }n return GreaterThan;n}(ComparisonBinary));nexport default GreaterThan;n//# sourceMappingURL=GreaterThan.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/GreaterThanOrEqualTon */nimport ComparisonBinary from './ComparisonBinary.js';n/**n * @classdescn * Represents a `<PropertyIsGreaterThanOrEqualTo>` comparison operator.n * @apin */nvar GreaterThanOrEqualTo = /** @class */ (function (_super) {n __extends(GreaterThanOrEqualTo, _super);n /**n * @param {!string} propertyName Name of the context property to compare.n * @param {!number} expression The value to compare.n */n function GreaterThanOrEqualTo(propertyName, expression) {n return _super.call(this, 'PropertyIsGreaterThanOrEqualTo', propertyName, expression) || this;n }n return GreaterThanOrEqualTo;n}(ComparisonBinary));nexport default GreaterThanOrEqualTo;n//# sourceMappingURL=GreaterThanOrEqualTo.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/Intersectsn */nimport Spatial from './Spatial.js';n/**n * @classdescn * Represents a `<Intersects>` operator to test whether a geometry-valued propertyn * intersects a given geometry.n * @apin */nvar Intersects = /** @class */ (function (_super) {n __extends(Intersects, _super);n /**n * @param {!string} geometryName Geometry name to use.n * @param {!import("../../geom/Geometry.js").default} geometry Geometry.n * @param {string=} opt_srsName SRS name. No srsName attribute will ben * set on geometries when this is not provided.n */n function Intersects(geometryName, geometry, opt_srsName) {n return _super.call(this, 'Intersects', geometryName, geometry, opt_srsName) || this;n }n return Intersects;n}(Spatial));nexport default Intersects;n//# sourceMappingURL=Intersects.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/IsBetweenn */nimport Comparison from './Comparison.js';n/**n * @classdescn * Represents a `<PropertyIsBetween>` comparison operator.n * @apin */nvar IsBetween = /** @class */ (function (_super) {n __extends(IsBetween, _super);n /**n * @param {!string} propertyName Name of the context property to compare.n * @param {!number} lowerBoundary The lower bound of the range.n * @param {!number} upperBoundary The upper bound of the range.n */n function IsBetween(propertyName, lowerBoundary, upperBoundary) {n var _this = _super.call(this, 'PropertyIsBetween', propertyName) || this;n /**n * @type {!number}n */n _this.lowerBoundary = lowerBoundary;n /**n * @type {!number}n */n _this.upperBoundary = upperBoundary;n return _this;n }n return IsBetween;n}(Comparison));nexport default IsBetween;n//# sourceMappingURL=IsBetween.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/IsLiken */nimport Comparison from './Comparison.js';n/**n * @classdescn * Represents a `<PropertyIsLike>` comparison operator.n * @apin */nvar IsLike = /** @class */ (function (_super) {n __extends(IsLike, _super);n /**n * [constructor description]n * @param {!string} propertyName Name of the context property to compare.n * @param {!string} pattern Text pattern.n * @param {string=} opt_wildCard Pattern character which matches any sequence ofn * zero or more string characters. Default is '*'.n * @param {string=} opt_singleChar pattern character which matches any singlen * string character. Default is '.'.n * @param {string=} opt_escapeChar Escape character which can be used to escapen * the pattern characters. Default is '!'.n * @param {boolean=} opt_matchCase Case-sensitive?n */n function IsLike(propertyName, pattern, opt_wildCard, opt_singleChar, opt_escapeChar, opt_matchCase) {n var _this = _super.call(this, 'PropertyIsLike', propertyName) || this;n /**n * @type {!string}n */n _this.pattern = pattern;n /**n * @type {!string}n */n _this.wildCard = (opt_wildCard !== undefined) ? opt_wildCard : '*';n /**n * @type {!string}n */n _this.singleChar = (opt_singleChar !== undefined) ? opt_singleChar : '.';n /**n * @type {!string}n */n _this.escapeChar = (opt_escapeChar !== undefined) ? opt_escapeChar : '!';n /**n * @type {boolean|undefined}n */n _this.matchCase = opt_matchCase;n return _this;n }n return IsLike;n}(Comparison));nexport default IsLike;n//# sourceMappingURL=IsLike.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/IsNulln */nimport Comparison from './Comparison.js';n/**n * @classdescn * Represents a `<PropertyIsNull>` comparison operator.n * @apin */nvar IsNull = /** @class */ (function (_super) {n __extends(IsNull, _super);n /**n * @param {!string} propertyName Name of the context property to compare.n */n function IsNull(propertyName) {n return _super.call(this, 'PropertyIsNull', propertyName) || this;n }n return IsNull;n}(Comparison));nexport default IsNull;n//# sourceMappingURL=IsNull.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/LessThann */nimport ComparisonBinary from './ComparisonBinary.js';n/**n * @classdescn * Represents a `<PropertyIsLessThan>` comparison operator.n * @apin */nvar LessThan = /** @class */ (function (_super) {n __extends(LessThan, _super);n /**n * @param {!string} propertyName Name of the context property to compare.n * @param {!number} expression The value to compare.n */n function LessThan(propertyName, expression) {n return _super.call(this, 'PropertyIsLessThan', propertyName, expression) || this;n }n return LessThan;n}(ComparisonBinary));nexport default LessThan;n//# sourceMappingURL=LessThan.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/LessThanOrEqualTon */nimport ComparisonBinary from './ComparisonBinary.js';n/**n * @classdescn * Represents a `<PropertyIsLessThanOrEqualTo>` comparison operator.n * @apin */nvar LessThanOrEqualTo = /** @class */ (function (_super) {n __extends(LessThanOrEqualTo, _super);n /**n * @param {!string} propertyName Name of the context property to compare.n * @param {!number} expression The value to compare.n */n function LessThanOrEqualTo(propertyName, expression) {n return _super.call(this, 'PropertyIsLessThanOrEqualTo', propertyName, expression) || this;n }n return LessThanOrEqualTo;n}(ComparisonBinary));nexport default LessThanOrEqualTo;n//# sourceMappingURL=LessThanOrEqualTo.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/Notn */nimport Filter from './Filter.js';n/**n * @classdescn * Represents a logical `<Not>` operator for a filter condition.n * @apin */nvar Not = /** @class */ (function (_super) {n __extends(Not, _super);n /**n * @param {!import("./Filter.js").default} condition Filter condition.n */n function Not(condition) {n var _this = _super.call(this, 'Not') || this;n /**n * @type {!import("./Filter.js").default}n */n _this.condition = condition;n return _this;n }n return Not;n}(Filter));nexport default Not;n//# sourceMappingURL=Not.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/NotEqualTon */nimport ComparisonBinary from './ComparisonBinary.js';n/**n * @classdescn * Represents a `<PropertyIsNotEqualTo>` comparison operator.n * @apin */nvar NotEqualTo = /** @class */ (function (_super) {n __extends(NotEqualTo, _super);n /**n * @param {!string} propertyName Name of the context property to compare.n * @param {!(string|number)} expression The value to compare.n * @param {boolean=} opt_matchCase Case-sensitive?n */n function NotEqualTo(propertyName, expression, opt_matchCase) {n return _super.call(this, 'PropertyIsNotEqualTo', propertyName, expression, opt_matchCase) || this;n }n return NotEqualTo;n}(ComparisonBinary));nexport default NotEqualTo;n//# sourceMappingURL=NotEqualTo.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/Orn */nimport LogicalNary from './LogicalNary.js';n/**n * @classdescn * Represents a logical `<Or>` operator between two ore more filter conditions.n * @apin */nvar Or = /** @class */ (function (_super) {n __extends(Or, _super);n /**n * @param {…import("./Filter.js").default} conditions Conditions.n */n function Or(conditions) {n return _super.call(this, 'Or', Array.prototype.slice.call(arguments)) || this;n }n return Or;n}(LogicalNary));nexport default Or;n//# sourceMappingURL=Or.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/filter/Withinn */nimport Spatial from './Spatial.js';n/**n * @classdescn * Represents a `<Within>` operator to test whether a geometry-valued propertyn * is within a given geometry.n * @apin */nvar Within = /** @class */ (function (_super) {n __extends(Within, _super);n /**n * @param {!string} geometryName Geometry name to use.n * @param {!import("../../geom/Geometry.js").default} geometry Geometry.n * @param {string=} opt_srsName SRS name. No srsName attribute will ben * set on geometries when this is not provided.n */n function Within(geometryName, geometry, opt_srsName) {n return _super.call(this, 'Within', geometryName, geometry, opt_srsName) || this;n }n return Within;n}(Spatial));nexport default Within;n//# sourceMappingURL=Within.js.map”,“/**n * @module ol/format/filtern */nimport And from './filter/And.js';nimport Bbox from './filter/Bbox.js';nimport Contains from './filter/Contains.js';nimport During from './filter/During.js';nimport EqualTo from './filter/EqualTo.js';nimport GreaterThan from './filter/GreaterThan.js';nimport GreaterThanOrEqualTo from './filter/GreaterThanOrEqualTo.js';nimport Intersects from './filter/Intersects.js';nimport IsBetween from './filter/IsBetween.js';nimport IsLike from './filter/IsLike.js';nimport IsNull from './filter/IsNull.js';nimport LessThan from './filter/LessThan.js';nimport LessThanOrEqualTo from './filter/LessThanOrEqualTo.js';nimport Not from './filter/Not.js';nimport NotEqualTo from './filter/NotEqualTo.js';nimport Or from './filter/Or.js';nimport Within from './filter/Within.js';n/**n * Create a logical `<And>` operator between two or more filter conditions.n *n * @param {…import("./filter/Filter.js").default} conditions Filter conditions.n * @returns {!And} `<And>` operator.n * @apin */nexport function and(conditions) {n var params = [null].concat(Array.prototype.slice.call(arguments));n return new (Function.prototype.bind.apply(And, params));n}n/**n * Create a logical `<Or>` operator between two or more filter conditions.n *n * @param {…import("./filter/Filter.js").default} conditions Filter conditions.n * @returns {!Or} `<Or>` operator.n * @apin */nexport function or(conditions) {n var params = [null].concat(Array.prototype.slice.call(arguments));n return new (Function.prototype.bind.apply(Or, params));n}n/**n * Represents a logical `<Not>` operator for a filter condition.n *n * @param {!import("./filter/Filter.js").default} condition Filter condition.n * @returns {!Not} `<Not>` operator.n * @apin */nexport function not(condition) {n return new Not(condition);n}n/**n * Create a `<BBOX>` operator to test whether a geometry-valued propertyn * intersects a fixed bounding boxn *n * @param {!string} geometryName Geometry name to use.n * @param {!import("../extent.js").Extent} extent Extent.n * @param {string=} opt_srsName SRS name. No srsName attribute will ben * set on geometries when this is not provided.n * @returns {!Bbox} `<BBOX>` operator.n * @apin */nexport function bbox(geometryName, extent, opt_srsName) {n return new Bbox(geometryName, extent, opt_srsName);n}n/**n * Create a `<Contains>` operator to test whether a geometry-valued propertyn * contains a given geometry.n *n * @param {!string} geometryName Geometry name to use.n * @param {!import("../geom/Geometry.js").default} geometry Geometry.n * @param {string=} opt_srsName SRS name. No srsName attribute will ben * set on geometries when this is not provided.n * @returns {!Contains} `<Contains>` operator.n * @apin */nexport function contains(geometryName, geometry, opt_srsName) {n return new Contains(geometryName, geometry, opt_srsName);n}n/**n * Create a `<Intersects>` operator to test whether a geometry-valued propertyn * intersects a given geometry.n *n * @param {!string} geometryName Geometry name to use.n * @param {!import("../geom/Geometry.js").default} geometry Geometry.n * @param {string=} opt_srsName SRS name. No srsName attribute will ben * set on geometries when this is not provided.n * @returns {!Intersects} `<Intersects>` operator.n * @apin */nexport function intersects(geometryName, geometry, opt_srsName) {n return new Intersects(geometryName, geometry, opt_srsName);n}n/**n * Create a `<Within>` operator to test whether a geometry-valued propertyn * is within a given geometry.n *n * @param {!string} geometryName Geometry name to use.n * @param {!import("../geom/Geometry.js").default} geometry Geometry.n * @param {string=} opt_srsName SRS name. No srsName attribute will ben * set on geometries when this is not provided.n * @returns {!Within} `<Within>` operator.n * @apin */nexport function within(geometryName, geometry, opt_srsName) {n return new Within(geometryName, geometry, opt_srsName);n}n/**n * Creates a `<PropertyIsEqualTo>` comparison operator.n *n * @param {!string} propertyName Name of the context property to compare.n * @param {!(string|number)} expression The value to compare.n * @param {boolean=} opt_matchCase Case-sensitive?n * @returns {!EqualTo} `<PropertyIsEqualTo>` operator.n * @apin */nexport function equalTo(propertyName, expression, opt_matchCase) {n return new EqualTo(propertyName, expression, opt_matchCase);n}n/**n * Creates a `<PropertyIsNotEqualTo>` comparison operator.n *n * @param {!string} propertyName Name of the context property to compare.n * @param {!(string|number)} expression The value to compare.n * @param {boolean=} opt_matchCase Case-sensitive?n * @returns {!NotEqualTo} `<PropertyIsNotEqualTo>` operator.n * @apin */nexport function notEqualTo(propertyName, expression, opt_matchCase) {n return new NotEqualTo(propertyName, expression, opt_matchCase);n}n/**n * Creates a `<PropertyIsLessThan>` comparison operator.n *n * @param {!string} propertyName Name of the context property to compare.n * @param {!number} expression The value to compare.n * @returns {!LessThan} `<PropertyIsLessThan>` operator.n * @apin */nexport function lessThan(propertyName, expression) {n return new LessThan(propertyName, expression);n}n/**n * Creates a `<PropertyIsLessThanOrEqualTo>` comparison operator.n *n * @param {!string} propertyName Name of the context property to compare.n * @param {!number} expression The value to compare.n * @returns {!LessThanOrEqualTo} `<PropertyIsLessThanOrEqualTo>` operator.n * @apin */nexport function lessThanOrEqualTo(propertyName, expression) {n return new LessThanOrEqualTo(propertyName, expression);n}n/**n * Creates a `<PropertyIsGreaterThan>` comparison operator.n *n * @param {!string} propertyName Name of the context property to compare.n * @param {!number} expression The value to compare.n * @returns {!GreaterThan} `<PropertyIsGreaterThan>` operator.n * @apin */nexport function greaterThan(propertyName, expression) {n return new GreaterThan(propertyName, expression);n}n/**n * Creates a `<PropertyIsGreaterThanOrEqualTo>` comparison operator.n *n * @param {!string} propertyName Name of the context property to compare.n * @param {!number} expression The value to compare.n * @returns {!GreaterThanOrEqualTo} `<PropertyIsGreaterThanOrEqualTo>` operator.n * @apin */nexport function greaterThanOrEqualTo(propertyName, expression) {n return new GreaterThanOrEqualTo(propertyName, expression);n}n/**n * Creates a `<PropertyIsNull>` comparison operator to test whether a property valuen * is null.n *n * @param {!string} propertyName Name of the context property to compare.n * @returns {!IsNull} `<PropertyIsNull>` operator.n * @apin */nexport function isNull(propertyName) {n return new IsNull(propertyName);n}n/**n * Creates a `<PropertyIsBetween>` comparison operator to test whether an expressionn * value lies within a range given by a lower and upper bound (inclusive).n *n * @param {!string} propertyName Name of the context property to compare.n * @param {!number} lowerBoundary The lower bound of the range.n * @param {!number} upperBoundary The upper bound of the range.n * @returns {!IsBetween} `<PropertyIsBetween>` operator.n * @apin */nexport function between(propertyName, lowerBoundary, upperBoundary) {n return new IsBetween(propertyName, lowerBoundary, upperBoundary);n}n/**n * Represents a `<PropertyIsLike>` comparison operator that matches a string propertyn * value against a text pattern.n *n * @param {!string} propertyName Name of the context property to compare.n * @param {!string} pattern Text pattern.n * @param {string=} opt_wildCard Pattern character which matches any sequence ofn * zero or more string characters. Default is '*'.n * @param {string=} opt_singleChar pattern character which matches any singlen * string character. Default is '.'.n * @param {string=} opt_escapeChar Escape character which can be used to escapen * the pattern characters. Default is '!'.n * @param {boolean=} opt_matchCase Case-sensitive?n * @returns {!IsLike} `<PropertyIsLike>` operator.n * @apin */nexport function like(propertyName, pattern, opt_wildCard, opt_singleChar, opt_escapeChar, opt_matchCase) {n return new IsLike(propertyName, pattern, opt_wildCard, opt_singleChar, opt_escapeChar, opt_matchCase);n}n/**n * Create a `<During>` temporal operator.n *n * @param {!string} propertyName Name of the context property to compare.n * @param {!string} begin The begin date in ISO-8601 format.n * @param {!string} end The end date in ISO-8601 format.n * @returns {!During} `<During>` operator.n * @apin */nexport function during(propertyName, begin, end) {n return new During(propertyName, begin, end);n}n//# sourceMappingURL=filter.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/WFSn */nimport { assert } from '../asserts.js';nimport GML2 from './GML2.js';nimport GML3 from './GML3.js';nimport GMLBase, { GMLNS } from './GMLBase.js';nimport { and as andFilter, bbox as bboxFilter } from './filter.js';nimport XMLFeature from './XMLFeature.js';nimport { readNonNegativeIntegerString, readNonNegativeInteger, writeStringTextNode } from './xsd.js';nimport { assign } from '../obj.js';nimport { get as getProjection } from '../proj.js';nimport { createElementNS, isDocument, makeArrayPusher, makeChildAppender, makeObjectPropertySetter, makeSimpleNodeFactory, parse, parseNode, pushParseAndPop, pushSerializeAndPop, XML_SCHEMA_INSTANCE_URI } from '../xml.js';n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */nvar FEATURE_COLLECTION_PARSERS = {n 'www.opengis.net/gml': {n 'boundedBy': makeObjectPropertySetter(GMLBase.prototype.readGeometryElement, 'bounds')n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */nvar TRANSACTION_SUMMARY_PARSERS = {n 'www.opengis.net/wfs': {n 'totalInserted': makeObjectPropertySetter(readNonNegativeInteger),n 'totalUpdated': makeObjectPropertySetter(readNonNegativeInteger),n 'totalDeleted': makeObjectPropertySetter(readNonNegativeInteger)n }n};n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */nvar TRANSACTION_RESPONSE_PARSERS = {n 'www.opengis.net/wfs': {n 'TransactionSummary': makeObjectPropertySetter(readTransactionSummary, 'transactionSummary'),n 'InsertResults': makeObjectPropertySetter(readInsertResults, 'insertIds')n }n};n/**n * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */nvar QUERY_SERIALIZERS = {n 'www.opengis.net/wfs': {n 'PropertyName': makeChildAppender(writeStringTextNode)n }n};n/**n * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */nvar TRANSACTION_SERIALIZERS = {n 'www.opengis.net/wfs': {n 'Insert': makeChildAppender(writeFeature),n 'Update': makeChildAppender(writeUpdate),n 'Delete': makeChildAppender(writeDelete),n 'Property': makeChildAppender(writeProperty),n 'Native': makeChildAppender(writeNative)n }n};n/**n * @typedef {Object} Optionsn * @property {Object<string, string>|string} [featureNS] The namespace URI used for features.n * @property {Array<string>|string} [featureType] The feature type to parse. Only used for read operations.n * @property {GMLBase} [gmlFormat] The GML format to use to parse the response. Default is `ol/format/GML3`.n * @property {string} [schemaLocation] Optional schemaLocation to use for serialization, this will override the default.n */n/**n * @typedef {Object} WriteGetFeatureOptionsn * @property {string} featureNS The namespace URI used for features.n * @property {string} featurePrefix The prefix for the feature namespace.n * @property {Array<string>} featureTypes The feature type names.n * @property {string} [srsName] SRS name. No srsName attribute will be set onn * geometries when this is not provided.n * @property {string} [handle] Handle.n * @property {string} [outputFormat] Output format.n * @property {number} [maxFeatures] Maximum number of features to fetch.n * @property {string} [geometryName] Geometry name to use in a BBOX filter.n * @property {Array<string>} [propertyNames] Optional list of property names to serialize.n * @property {string} [viewParams] viewParams GeoServer vendor parameter.n * @property {number} [startIndex] Start index to use for WFS paging. This is an * WFS 2.0 feature backported to WFS 1.1.0 by some Web Feature Services.n * @property {number} [count] Number of features to retrieve when paging. This is an * WFS 2.0 feature backported to WFS 1.1.0 by some Web Feature Services. Please note that somen * Web Feature Services have repurposed `maxfeatures` instead.n * @property {import("../extent.js").Extent} [bbox] Extent to use for the BBOX filter.n * @property {import("./filter/Filter.js").default} [filter] Filter condition. Seen * {@link module:ol/format/Filter} for more information.n * @property {string} [resultType] Indicates what response should be returned,n * E.g. `hits` only includes the `numberOfFeatures` attribute in the response and no features.n */n/**n * @typedef {Object} WriteTransactionOptionsn * @property {string} featureNS The namespace URI used for features.n * @property {string} featurePrefix The prefix for the feature namespace.n * @property {string} featureType The feature type name.n * @property {string} [srsName] SRS name. No srsName attribute will be set onn * geometries when this is not provided.n * @property {string} [handle] Handle.n * @property {boolean} [hasZ] Must be set to true if the transaction is forn * a 3D layer. This will allow the Z coordinate to be included in the transaction.n * @property {Array<Object>} nativeElements Native elements. Currently not supported.n * @property {import("./GMLBase.js").Options} [gmlOptions] GML options for the WFS transaction writer.n * @property {string} [version='1.1.0'] WFS version to use for the transaction. Can be either `1.0.0` or `1.1.0`.n */n/**n * Number of features; bounds/extent.n * @typedef {Object} FeatureCollectionMetadatan * @property {number} numberOfFeaturesn * @property {import("../extent.js").Extent} boundsn */n/**n * Total deleted; total inserted; total updated; array of insert ids.n * @typedef {Object} TransactionResponsen * @property {number} totalDeletedn * @property {number} totalInsertedn * @property {number} totalUpdatedn * @property {Array<string>} insertIdsn */n/**n * @type {string}n */nvar FEATURE_PREFIX = 'feature';n/**n * @type {string}n */nvar XMLNS = 'www.w3.org/2000/xmlns/’;n/**n * @type {string}n */nvar OGCNS = 'www.opengis.net/ogc’;n/**n * @type {string}n */nvar WFSNS = 'www.opengis.net/wfs’;n/**n * @type {string}n */nvar FESNS = 'www.opengis.net/fes’;n/**n * @type {Object<string, string>}n */nvar SCHEMA_LOCATIONS = {n '1.1.0': 'www.opengis.net/wfs schemas.opengis.net/wfs/1.1.0/wfs.xsd’,n '1.0.0': 'www.opengis.net/wfs schemas.opengis.net/wfs/1.0.0/wfs.xsd’n};n/**n * @constn * @type {string}n */nvar DEFAULT_VERSION = '1.1.0';n/**n * @classdescn * Feature format for reading and writing data in the WFS format.n * By default, supports WFS version 1.1.0. You can pass a GML formatn * as option if you want to read a WFS that contains GML2 (WFS 1.0.0).n * Also see {@link module:ol/format/GMLBase~GMLBase} which is used by this format.n *n * @apin */nvar WFS = /** @class */ (function (_super) {n __extends(WFS, _super);n /**n * @param {Options=} opt_options Optional configuration object.n */n function WFS(opt_options) {n var _this = _super.call(this) || this;n var options = opt_options ? opt_options : {};n /**n * @privaten * @type {Array<string>|string|undefined}n */n this.featureType = options.featureType;n /**n * @privaten * @type {Object<string, string>|string|undefined}n */n this.featureNS = options.featureNS;n /**n * @privaten * @type {GMLBase}n */n this.gmlFormat = options.gmlFormat ?n options.gmlFormat : new GML3();n /**n * @privaten * @type {string}n */n this.schemaLocation = options.schemaLocation ?n options.schemaLocation : SCHEMA_LOCATIONS;n return _this;n }n /**n * @return {Array<string>|string|undefined} featureTypen */n WFS.prototype.getFeatureType = function () {n return this.featureType_;n };n /**n * @param {Array<string>|string|undefined} featureType Feature type(s) to parse.n */n WFS.prototype.setFeatureType = function (featureType) {n this.featureType_ = featureType;n };n /**n * @inheritDocn */n WFS.prototype.readFeaturesFromNode = function (node, opt_options) {n /** @type {import("../xml.js").NodeStackItem} */n var context = {n node: noden };n assign(context, {n 'featureType': this.featureType_,n 'featureNS': this.featureNS_n });n assign(context, this.getReadOptions(node, opt_options ? opt_options : {}));n var objectStack = [context];n this.gmlFormat_.FEATURE_COLLECTION_PARSERS['featureMember'] =n makeArrayPusher(GMLBase.prototype.readFeaturesInternal);n var features = pushParseAndPop([], this.gmlFormat_.FEATURE_COLLECTION_PARSERS, node, objectStack, this.gmlFormat_);n if (!features) {n features = [];n }n return features;n };n /**n * Read transaction response of the source.n *n * @param {Document|Element|Object|string} source Source.n * @return {TransactionResponse|undefined} Transaction response.n * @apin */n WFS.prototype.readTransactionResponse = function (source) {n if (!source) {n return undefined;n }n else if (typeof source === 'string') {n var doc = parse(source);n return this.readTransactionResponseFromDocument(doc);n }n else if (isDocument(source)) {n return this.readTransactionResponseFromDocument(n /** @type {Document} */ (source));n }n else {n return this.readTransactionResponseFromNode(/** @type {Element} */ (source));n }n };n /**n * Read feature collection metadata of the source.n *n * @param {Document|Element|Object|string} source Source.n * @return {FeatureCollectionMetadata|undefined}n * FeatureCollection metadata.n * @apin */n WFS.prototype.readFeatureCollectionMetadata = function (source) {n if (!source) {n return undefined;n }n else if (typeof source === 'string') {n var doc = parse(source);n return this.readFeatureCollectionMetadataFromDocument(doc);n }n else if (isDocument(source)) {n return this.readFeatureCollectionMetadataFromDocument(n /** @type {Document} */ (source));n }n else {n return this.readFeatureCollectionMetadataFromNode(n /** @type {Element} */ (source));n }n };n /**n * @param {Document} doc Document.n * @return {FeatureCollectionMetadata|undefined}n * FeatureCollection metadata.n */n WFS.prototype.readFeatureCollectionMetadataFromDocument = function (doc) {n for (var n = /** @type {Node} */ (doc.firstChild); n; n = n.nextSibling) {n if (n.nodeType == Node.ELEMENT_NODE) {n return this.readFeatureCollectionMetadataFromNode(/** @type {Element} */ (n));n }n }n return undefined;n };n /**n * @param {Element} node Node.n * @return {FeatureCollectionMetadata|undefined}n * FeatureCollection metadata.n */n WFS.prototype.readFeatureCollectionMetadataFromNode = function (node) {n var result = {};n var value = readNonNegativeIntegerString(node.getAttribute('numberOfFeatures'));n result = value;n return pushParseAndPop(n /** @type {FeatureCollectionMetadata} */ (result), FEATURE_COLLECTION_PARSERS, node, [], this.gmlFormat_);n };n /**n * @param {Document} doc Document.n * @return {TransactionResponse|undefined} Transaction response.n */n WFS.prototype.readTransactionResponseFromDocument = function (doc) {n for (var n = /** @type {Node} */ (doc.firstChild); n; n = n.nextSibling) {n if (n.nodeType == Node.ELEMENT_NODE) {n return this.readTransactionResponseFromNode(/** @type {Element} */ (n));n }n }n return undefined;n };n /**n * @param {Element} node Node.n * @return {TransactionResponse|undefined} Transaction response.n */n WFS.prototype.readTransactionResponseFromNode = function (node) {n return pushParseAndPop(n /** @type {TransactionResponse} */ ({}), TRANSACTION_RESPONSE_PARSERS, node, []);n };n /**n * Encode format as WFS `GetFeature` and return the Node.n *n * @param {WriteGetFeatureOptions} options Options.n * @return {Node} Result.n * @apin */n WFS.prototype.writeGetFeature = function (options) {n var node = createElementNS(WFSNS, 'GetFeature');n node.setAttribute('service', 'WFS');n node.setAttribute('version', '1.1.0');n var filter;n if (options) {n if (options.handle) {n node.setAttribute('handle', options.handle);n }n if (options.outputFormat) {n node.setAttribute('outputFormat', options.outputFormat);n }n if (options.maxFeatures !== undefined) {n node.setAttribute('maxFeatures', String(options.maxFeatures));n }n if (options.resultType) {n node.setAttribute('resultType', options.resultType);n }n if (options.startIndex !== undefined) {n node.setAttribute('startIndex', String(options.startIndex));n }n if (options.count !== undefined) {n node.setAttribute('count', String(options.count));n }n if (options.viewParams !== undefined) {n node.setAttribute('viewParams', options.viewParams);n }n filter = options.filter;n if (options.bbox) {n assert(options.geometryName, 12); // `options.geometryName` must also be provided when `options.bbox` is setn var bbox = bboxFilter(n /** @type {string} */ (options.geometryName), options.bbox, options.srsName);n if (filter) {n // if bbox and filter are both set, combine the two into a single filtern filter = andFilter(filter, bbox);n }n else {n filter = bbox;n }n }n }n node.setAttributeNS(XML_SCHEMA_INSTANCE_URI, 'xsi:schemaLocation', this.schemaLocation_);n /** @type {import("../xml.js").NodeStackItem} */n var context = {n node: noden };n assign(context, {n 'srsName': options.srsName,n 'featureNS': options.featureNS ? options.featureNS : this.featureNS_,n 'featurePrefix': options.featurePrefix,n 'geometryName': options.geometryName,n 'filter': filter,n 'propertyNames': options.propertyNames ? options.propertyNames : []n });n assert(Array.isArray(options.featureTypes), 11); // `options.featureTypes` should be an Arrayn writeGetFeature(node, /** @type {!Array<string>} */ (options.featureTypes), [context]);n return node;n };n /**n * Encode format as WFS `Transaction` and return the Node.n *n * @param {Array<import("../Feature.js").default>} inserts The features to insert.n * @param {Array<import("../Feature.js").default>} updates The features to update.n * @param {Array<import("../Feature.js").default>} deletes The features to delete.n * @param {WriteTransactionOptions} options Write options.n * @return {Node} Result.n * @apin */n WFS.prototype.writeTransaction = function (inserts, updates, deletes, options) {n var objectStack = [];n var node = createElementNS(WFSNS, 'Transaction');n var version = options.version ? options.version : DEFAULT_VERSION;n var gmlVersion = version === '1.0.0' ? 2 : 3;n node.setAttribute('service', 'WFS');n node.setAttribute('version', version);n var baseObj;n /** @type {import("../xml.js").NodeStackItem} */n var obj;n if (options) {n baseObj = options.gmlOptions ? options.gmlOptions : {};n if (options.handle) {n node.setAttribute('handle', options.handle);n }n }n var schemaLocation = SCHEMA_LOCATIONS;n node.setAttributeNS(XML_SCHEMA_INSTANCE_URI, 'xsi:schemaLocation', schemaLocation);n var featurePrefix = options.featurePrefix ? options.featurePrefix : FEATURE_PREFIX;n if (inserts) {n obj = assign({ node: node }, { 'featureNS': options.featureNS,n 'featureType': options.featureType, 'featurePrefix': featurePrefix,n 'gmlVersion': gmlVersion, 'hasZ': options.hasZ, 'srsName': options.srsName });n assign(obj, baseObj);n pushSerializeAndPop(obj, TRANSACTION_SERIALIZERS, makeSimpleNodeFactory('Insert'), inserts, objectStack);n }n if (updates) {n obj = assign({ node: node }, { 'featureNS': options.featureNS,n 'featureType': options.featureType, 'featurePrefix': featurePrefix,n 'gmlVersion': gmlVersion, 'hasZ': options.hasZ, 'srsName': options.srsName });n assign(obj, baseObj);n pushSerializeAndPop(obj, TRANSACTION_SERIALIZERS, makeSimpleNodeFactory('Update'), updates, objectStack);n }n if (deletes) {n pushSerializeAndPop({ node: node, 'featureNS': options.featureNS,n 'featureType': options.featureType, 'featurePrefix': featurePrefix,n 'gmlVersion': gmlVersion, 'srsName': options.srsName }, TRANSACTION_SERIALIZERS, makeSimpleNodeFactory('Delete'), deletes, objectStack);n }n if (options.nativeElements) {n pushSerializeAndPop({ node: node, 'featureNS': options.featureNS,n 'featureType': options.featureType, 'featurePrefix': featurePrefix,n 'gmlVersion': gmlVersion, 'srsName': options.srsName }, TRANSACTION_SERIALIZERS, makeSimpleNodeFactory('Native'), options.nativeElements, objectStack);n }n return node;n };n /**n * @inheritDocn */n WFS.prototype.readProjectionFromDocument = function (doc) {n for (var n = /** @type {Node} */ (doc.firstChild); n; n = n.nextSibling) {n if (n.nodeType == Node.ELEMENT_NODE) {n return this.readProjectionFromNode(n);n }n }n return null;n };n /**n * @inheritDocn */n WFS.prototype.readProjectionFromNode = function (node) {n if (node.firstElementChild &&n node.firstElementChild.firstElementChild) {n node = node.firstElementChild.firstElementChild;n for (var n = node.firstElementChild; n; n = n.nextElementSibling) {n if (!(n.childNodes.length === 0 ||n (n.childNodes.length === 1 &&n n.firstChild.nodeType === 3))) {n var objectStack = [{}];n this.gmlFormat_.readGeometryElement(n, objectStack);n return getProjection(objectStack.pop().srsName);n }n }n }n return null;n };n return WFS;n}(XMLFeature));n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Transaction Summary.n */nfunction readTransactionSummary(node, objectStack) {n return pushParseAndPop({}, TRANSACTION_SUMMARY_PARSERS, node, objectStack);n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */nvar OGC_FID_PARSERS = {n 'www.opengis.net/ogc': {n 'FeatureId': makeArrayPusher(function (node, objectStack) {n return node.getAttribute('fid');n })n }n};n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n */nfunction fidParser(node, objectStack) {n parseNode(OGC_FID_PARSERS, node, objectStack);n}n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */nvar INSERT_RESULTS_PARSERS = {n 'www.opengis.net/wfs': {n 'Feature': fidParsern }n};n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Array<string>|undefined} Insert results.n */nfunction readInsertResults(node, objectStack) {n return pushParseAndPop([], INSERT_RESULTS_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {import("../Feature.js").default} feature Feature.n * @param {Array<*>} objectStack Node stack.n */nfunction writeFeature(node, feature, objectStack) {n var context = objectStack[objectStack.length - 1];n var featureType = context;n var featureNS = context;n var gmlVersion = context;n var child = createElementNS(featureNS, featureType);n node.appendChild(child);n if (gmlVersion === 2) {n GML2.prototype.writeFeatureElement(child, feature, objectStack);n }n else {n GML3.prototype.writeFeatureElement(child, feature, objectStack);n }n}n/**n * @param {Node} node Node.n * @param {number|string} fid Feature identifier.n * @param {Array<*>} objectStack Node stack.n */nfunction writeOgcFidFilter(node, fid, objectStack) {n var filter = createElementNS(OGCNS, 'Filter');n var child = createElementNS(OGCNS, 'FeatureId');n filter.appendChild(child);n child.setAttribute('fid', /** @type {string} */ (fid));n node.appendChild(filter);n}n/**n * @param {string|undefined} featurePrefix The prefix of the feature.n * @param {string} featureType The type of the feature.n * @returns {string} The value of the typeName property.n */nfunction getTypeName(featurePrefix, featureType) {n featurePrefix = featurePrefix ? featurePrefix : FEATURE_PREFIX;n var prefix = featurePrefix + ':';n // The featureType already contains the prefix.n if (featureType.indexOf(prefix) === 0) {n return featureType;n }n else {n return prefix + featureType;n }n}n/**n * @param {Element} node Node.n * @param {import("../Feature.js").default} feature Feature.n * @param {Array<*>} objectStack Node stack.n */nfunction writeDelete(node, feature, objectStack) {n var context = objectStack[objectStack.length - 1];n assert(feature.getId() !== undefined, 26); // Features must have an id setn var featureType = context;n var featurePrefix = context;n var featureNS = context;n var typeName = getTypeName(featurePrefix, featureType);n node.setAttribute('typeName', typeName);n node.setAttributeNS(XMLNS, 'xmlns:' + featurePrefix, featureNS);n var fid = feature.getId();n if (fid !== undefined) {n writeOgcFidFilter(node, fid, objectStack);n }n}n/**n * @param {Element} node Node.n * @param {import("../Feature.js").default} feature Feature.n * @param {Array<*>} objectStack Node stack.n */nfunction writeUpdate(node, feature, objectStack) {n var context = objectStack[objectStack.length - 1];n assert(feature.getId() !== undefined, 27); // Features must have an id setn var featureType = context;n var featurePrefix = context;n var featureNS = context;n var typeName = getTypeName(featurePrefix, featureType);n var geometryName = feature.getGeometryName();n node.setAttribute('typeName', typeName);n node.setAttributeNS(XMLNS, 'xmlns:' + featurePrefix, featureNS);n var fid = feature.getId();n if (fid !== undefined) {n var keys = feature.getKeys();n var values = [];n for (var i = 0, ii = keys.length; i < ii; i++) {n var value = feature.get(keys);n if (value !== undefined) {n var name_1 = keys;n if (value && typeof /** @type {?} */ (value).getSimplifiedGeometry === 'function') {n name_1 = geometryName;n }n values.push({ name: name_1, value: value });n }n }n pushSerializeAndPop(/** @type {import("../xml.js").NodeStackItem} */ ({ 'gmlVersion': context, node: node,n 'hasZ': context, 'srsName': context }), TRANSACTION_SERIALIZERS, makeSimpleNodeFactory('Property'), values, objectStack);n writeOgcFidFilter(node, fid, objectStack);n }n}n/**n * @param {Node} node Node.n * @param {Object} pair Property name and value.n * @param {Array<*>} objectStack Node stack.n */nfunction writeProperty(node, pair, objectStack) {n var name = createElementNS(WFSNS, 'Name');n var context = objectStack[objectStack.length - 1];n var gmlVersion = context;n node.appendChild(name);n writeStringTextNode(name, pair.name);n if (pair.value !== undefined && pair.value !== null) {n var value = createElementNS(WFSNS, 'Value');n node.appendChild(value);n if (pair.value && typeof /** @type {?} */ (pair.value).getSimplifiedGeometry === 'function') {n if (gmlVersion === 2) {n GML2.prototype.writeGeometryElement(value, pair.value, objectStack);n }n else {n GML3.prototype.writeGeometryElement(value, pair.value, objectStack);n }n }n else {n writeStringTextNode(value, pair.value);n }n }n}n/**n * @param {Element} node Node.n * @param {{vendorId: string, safeToIgnore: boolean, value: string}} nativeElement The native element.n * @param {Array<*>} objectStack Node stack.n */nfunction writeNative(node, nativeElement, objectStack) {n if (nativeElement.vendorId) {n node.setAttribute('vendorId', nativeElement.vendorId);n }n if (nativeElement.safeToIgnore !== undefined) {n node.setAttribute('safeToIgnore', String(nativeElement.safeToIgnore));n }n if (nativeElement.value !== undefined) {n writeStringTextNode(node, nativeElement.value);n }n}n/**n * @type {Object<string, Object<string, import("../xml.js").Serializer>>}n */nvar GETFEATURE_SERIALIZERS = {n 'www.opengis.net/wfs': {n 'Query': makeChildAppender(writeQuery)n },n 'www.opengis.net/ogc': {n 'During': makeChildAppender(writeDuringFilter),n 'And': makeChildAppender(writeLogicalFilter),n 'Or': makeChildAppender(writeLogicalFilter),n 'Not': makeChildAppender(writeNotFilter),n 'BBOX': makeChildAppender(writeBboxFilter),n 'Contains': makeChildAppender(writeContainsFilter),n 'Intersects': makeChildAppender(writeIntersectsFilter),n 'Within': makeChildAppender(writeWithinFilter),n 'PropertyIsEqualTo': makeChildAppender(writeComparisonFilter),n 'PropertyIsNotEqualTo': makeChildAppender(writeComparisonFilter),n 'PropertyIsLessThan': makeChildAppender(writeComparisonFilter),n 'PropertyIsLessThanOrEqualTo': makeChildAppender(writeComparisonFilter),n 'PropertyIsGreaterThan': makeChildAppender(writeComparisonFilter),n 'PropertyIsGreaterThanOrEqualTo': makeChildAppender(writeComparisonFilter),n 'PropertyIsNull': makeChildAppender(writeIsNullFilter),n 'PropertyIsBetween': makeChildAppender(writeIsBetweenFilter),n 'PropertyIsLike': makeChildAppender(writeIsLikeFilter)n }n};n/**n * @param {Element} node Node.n * @param {string} featureType Feature type.n * @param {Array<*>} objectStack Node stack.n */nfunction writeQuery(node, featureType, objectStack) {n var context = /** @type {Object} */ (objectStack[objectStack.length - 1]);n var featurePrefix = context;n var featureNS = context;n var propertyNames = context;n var srsName = context;n var typeName;n // If feature prefix is not defined, we must not use the default prefix.n if (featurePrefix) {n typeName = getTypeName(featurePrefix, featureType);n }n else {n typeName = featureType;n }n node.setAttribute('typeName', typeName);n if (srsName) {n node.setAttribute('srsName', srsName);n }n if (featureNS) {n node.setAttributeNS(XMLNS, 'xmlns:' + featurePrefix, featureNS);n }n var item = /** @type {import("../xml.js").NodeStackItem} */ (assign({}, context));n item.node = node;n pushSerializeAndPop(item, QUERY_SERIALIZERS, makeSimpleNodeFactory('PropertyName'), propertyNames, objectStack);n var filter = context;n if (filter) {n var child = createElementNS(OGCNS, 'Filter');n node.appendChild(child);n writeFilterCondition(child, filter, objectStack);n }n}n/**n * @param {Node} node Node.n * @param {import("./filter/Filter.js").default} filter Filter.n * @param {Array<*>} objectStack Node stack.n */nfunction writeFilterCondition(node, filter, objectStack) {n /** @type {import("../xml.js").NodeStackItem} */n var item = { node: node };n pushSerializeAndPop(item, GETFEATURE_SERIALIZERS, makeSimpleNodeFactory(filter.getTagName()), [filter], objectStack);n}n/**n * @param {Node} node Node.n * @param {import("./filter/Bbox.js").default} filter Filter.n * @param {Array<*>} objectStack Node stack.n */nfunction writeBboxFilter(node, filter, objectStack) {n var context = objectStack[objectStack.length - 1];n context = filter.srsName;n writeOgcPropertyName(node, filter.geometryName);n GML3.prototype.writeGeometryElement(node, filter.extent, objectStack);n}n/**n * @param {Node} node Node.n * @param {import("./filter/Contains.js").default} filter Filter.n * @param {Array<*>} objectStack Node stack.n */nfunction writeContainsFilter(node, filter, objectStack) {n var context = objectStack[objectStack.length - 1];n context = filter.srsName;n writeOgcPropertyName(node, filter.geometryName);n GML3.prototype.writeGeometryElement(node, filter.geometry, objectStack);n}n/**n * @param {Node} node Node.n * @param {import("./filter/Intersects.js").default} filter Filter.n * @param {Array<*>} objectStack Node stack.n */nfunction writeIntersectsFilter(node, filter, objectStack) {n var context = objectStack[objectStack.length - 1];n context = filter.srsName;n writeOgcPropertyName(node, filter.geometryName);n GML3.prototype.writeGeometryElement(node, filter.geometry, objectStack);n}n/**n * @param {Node} node Node.n * @param {import("./filter/Within.js").default} filter Filter.n * @param {Array<*>} objectStack Node stack.n */nfunction writeWithinFilter(node, filter, objectStack) {n var context = objectStack[objectStack.length - 1];n context = filter.srsName;n writeOgcPropertyName(node, filter.geometryName);n GML3.prototype.writeGeometryElement(node, filter.geometry, objectStack);n}n/**n * @param {Node} node Node.n * @param {import("./filter/During.js").default} filter Filter.n * @param {Array<*>} objectStack Node stack.n */nfunction writeDuringFilter(node, filter, objectStack) {n var valueReference = createElementNS(FESNS, 'ValueReference');n writeStringTextNode(valueReference, filter.propertyName);n node.appendChild(valueReference);n var timePeriod = createElementNS(GMLNS, 'TimePeriod');n node.appendChild(timePeriod);n var begin = createElementNS(GMLNS, 'begin');n timePeriod.appendChild(begin);n writeTimeInstant(begin, filter.begin);n var end = createElementNS(GMLNS, 'end');n timePeriod.appendChild(end);n writeTimeInstant(end, filter.end);n}n/**n * @param {Node} node Node.n * @param {import("./filter/LogicalNary.js").default} filter Filter.n * @param {Array<*>} objectStack Node stack.n */nfunction writeLogicalFilter(node, filter, objectStack) {n /** @type {import("../xml.js").NodeStackItem} */n var item = { node: node };n var conditions = filter.conditions;n for (var i = 0, ii = conditions.length; i < ii; ++i) {n var condition = conditions;n pushSerializeAndPop(item, GETFEATURE_SERIALIZERS, makeSimpleNodeFactory(condition.getTagName()), [condition], objectStack);n }n}n/**n * @param {Node} node Node.n * @param {import("./filter/Not.js").default} filter Filter.n * @param {Array<*>} objectStack Node stack.n */nfunction writeNotFilter(node, filter, objectStack) {n /** @type {import("../xml.js").NodeStackItem} */n var item = { node: node };n var condition = filter.condition;n pushSerializeAndPop(item, GETFEATURE_SERIALIZERS, makeSimpleNodeFactory(condition.getTagName()), [condition], objectStack);n}n/**n * @param {Element} node Node.n * @param {import("./filter/ComparisonBinary.js").default} filter Filter.n * @param {Array<*>} objectStack Node stack.n */nfunction writeComparisonFilter(node, filter, objectStack) {n if (filter.matchCase !== undefined) {n node.setAttribute('matchCase', filter.matchCase.toString());n }n writeOgcPropertyName(node, filter.propertyName);n writeOgcLiteral(node, '' + filter.expression);n}n/**n * @param {Node} node Node.n * @param {import("./filter/IsNull.js").default} filter Filter.n * @param {Array<*>} objectStack Node stack.n */nfunction writeIsNullFilter(node, filter, objectStack) {n writeOgcPropertyName(node, filter.propertyName);n}n/**n * @param {Node} node Node.n * @param {import("./filter/IsBetween.js").default} filter Filter.n * @param {Array<*>} objectStack Node stack.n */nfunction writeIsBetweenFilter(node, filter, objectStack) {n writeOgcPropertyName(node, filter.propertyName);n var lowerBoundary = createElementNS(OGCNS, 'LowerBoundary');n node.appendChild(lowerBoundary);n writeOgcLiteral(lowerBoundary, '' + filter.lowerBoundary);n var upperBoundary = createElementNS(OGCNS, 'UpperBoundary');n node.appendChild(upperBoundary);n writeOgcLiteral(upperBoundary, '' + filter.upperBoundary);n}n/**n * @param {Element} node Node.n * @param {import("./filter/IsLike.js").default} filter Filter.n * @param {Array<*>} objectStack Node stack.n */nfunction writeIsLikeFilter(node, filter, objectStack) {n node.setAttribute('wildCard', filter.wildCard);n node.setAttribute('singleChar', filter.singleChar);n node.setAttribute('escapeChar', filter.escapeChar);n if (filter.matchCase !== undefined) {n node.setAttribute('matchCase', filter.matchCase.toString());n }n writeOgcPropertyName(node, filter.propertyName);n writeOgcLiteral(node, '' + filter.pattern);n}n/**n * @param {string} tagName Tag name.n * @param {Node} node Node.n * @param {string} value Value.n */nfunction writeOgcExpression(tagName, node, value) {n var property = createElementNS(OGCNS, tagName);n writeStringTextNode(property, value);n node.appendChild(property);n}n/**n * @param {Node} node Node.n * @param {string} value PropertyName value.n */nfunction writeOgcPropertyName(node, value) {n writeOgcExpression('PropertyName', node, value);n}n/**n * @param {Node} node Node.n * @param {string} value PropertyName value.n */nfunction writeOgcLiteral(node, value) {n writeOgcExpression('Literal', node, value);n}n/**n * @param {Node} node Node.n * @param {string} time PropertyName value.n */nfunction writeTimeInstant(node, time) {n var timeInstant = createElementNS(GMLNS, 'TimeInstant');n node.appendChild(timeInstant);n var timePosition = createElementNS(GMLNS, 'timePosition');n timeInstant.appendChild(timePosition);n writeStringTextNode(timePosition, time);n}n/**n * Encode filter as WFS `Filter` and return the Node.n *n * @param {import("./filter/Filter.js").default} filter Filter.n * @return {Node} Result.n * @apin */nexport function writeFilter(filter) {n var child = createElementNS(OGCNS, 'Filter');n writeFilterCondition(child, filter, []);n return child;n}n/**n * @param {Node} node Node.n * @param {Array<string>} featureTypes Feature types.n * @param {Array<*>} objectStack Node stack.n */nfunction writeGetFeature(node, featureTypes, objectStack) {n var context = /** @type {Object} */ (objectStack[objectStack.length - 1]);n var item = /** @type {import("../xml.js").NodeStackItem} */ (assign({}, context));n item.node = node;n pushSerializeAndPop(item, GETFEATURE_SERIALIZERS, makeSimpleNodeFactory('Query'), featureTypes, objectStack);n}nexport default WFS;n//# sourceMappingURL=WFS.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/WKTn */nimport Feature from '../Feature.js';nimport { transformGeometryWithOptions } from './Feature.js';nimport TextFeature from './TextFeature.js';nimport GeometryCollection from '../geom/GeometryCollection.js';nimport GeometryType from '../geom/GeometryType.js';nimport GeometryLayout from '../geom/GeometryLayout.js';nimport LineString from '../geom/LineString.js';nimport MultiLineString from '../geom/MultiLineString.js';nimport MultiPoint from '../geom/MultiPoint.js';nimport MultiPolygon from '../geom/MultiPolygon.js';nimport Point from '../geom/Point.js';nimport Polygon from '../geom/Polygon.js';n/**n * Geometry constructorsn * @enum {function (new:import("../geom/Geometry.js").default, Array, GeometryLayout)}n */nvar GeometryConstructor = {n 'POINT': Point,n 'LINESTRING': LineString,n 'POLYGON': Polygon,n 'MULTIPOINT': MultiPoint,n 'MULTILINESTRING': MultiLineString,n 'MULTIPOLYGON': MultiPolygonn};n/**n * @typedef {Object} Optionsn * @property {boolean} [splitCollection=false] Whether to split GeometryCollections inton * multiple features on reading.n */n/**n * @typedef {Object} Tokenn * @property {number} typen * @property {number|string} [value]n * @property {number} positionn */n/**n * @constn * @type {string}n */nvar EMPTY = 'EMPTY';n/**n * @constn * @type {string}n */nvar Z = 'Z';n/**n * @constn * @type {string}n */nvar M = 'M';n/**n * @constn * @type {string}n */nvar ZM = 'ZM';n/**n * @constn * @enum {number}n */nvar TokenType = {n TEXT: 1,n LEFT_PAREN: 2,n RIGHT_PAREN: 3,n NUMBER: 4,n COMMA: 5,n EOF: 6n};n/**n * @constn * @type {Object<string, string>}n */nvar WKTGeometryType = {};nfor (var type in GeometryType) {n WKTGeometryType = GeometryType.toUpperCase();n}n/**n * Class to tokenize a WKT string.n */nvar Lexer = /** @class */ (function () {n /**n * @param {string} wkt WKT string.n */n function Lexer(wkt) {n /**n * @type {string}n */n this.wkt = wkt;n /**n * @type {number}n * @privaten */n this.index_ = -1;n }n /**n * @param {string} c Character.n * @return {boolean} Whether the character is alphabetic.n * @privaten */n Lexer.prototype.isAlpha_ = function © {n return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z';n };n /**n * @param {string} c Character.n * @param {boolean=} opt_decimal Whether the string numbern * contains a dot, i.e. is a decimal number.n * @return {boolean} Whether the character is numeric.n * @privaten */n Lexer.prototype.isNumeric_ = function (c, opt_decimal) {n var decimal = opt_decimal !== undefined ? opt_decimal : false;n return c >= '0' && c <= '9' || c == '.' && !decimal;n };n /**n * @param {string} c Character.n * @return {boolean} Whether the character is whitespace.n * @privaten */n Lexer.prototype.isWhiteSpace_ = function © {n return c == ' ' || c == '\t' || c == '\r' || c == '\n';n };n /**n * @return {string} Next string character.n * @privaten */n Lexer.prototype.nextChar_ = function () {n return this.wkt.charAt(++this.index_);n };n /**n * Fetch and return the next token.n * @return {!Token} Next string token.n */n Lexer.prototype.nextToken = function () {n var c = this.nextChar_();n var position = this.index_;n /** @type {number|string} */n var value = c;n var type;n if (c == '(') {n type = TokenType.LEFT_PAREN;n }n else if (c == ',') {n type = TokenType.COMMA;n }n else if (c == ')') {n type = TokenType.RIGHT_PAREN;n }n else if (this.isNumeric_© || c == '-') {n type = TokenType.NUMBER;n value = this.readNumber_();n }n else if (this.isAlpha_©) {n type = TokenType.TEXT;n value = this.readText_();n }n else if (this.isWhiteSpace_©) {n return this.nextToken();n }n else if (c === '') {n type = TokenType.EOF;n }n else {n throw new Error('Unexpected character: ' + c);n }n return { position: position, value: value, type: type };n };n /**n * @return {number} Numeric token value.n * @privaten */n Lexer.prototype.readNumber_ = function () {n var c;n var index = this.index_;n var decimal = false;n var scientificNotation = false;n do {n if (c == '.') {n decimal = true;n }n else if (c == 'e' || c == 'E') {n scientificNotation = true;n }n c = this.nextChar_();n } while (this.isNumeric_(c, decimal) ||n // if we haven't detected a scientific number before, 'e' or 'E'n // hint that we should continue to readn !scientificNotation && (c == 'e' || c == 'E') ||n // once we know that we have a scientific number, both '-' and '+'n // are allowedn scientificNotation && (c == '-' || c == '+'));n return parseFloat(this.wkt.substring(index, this.index_–));n };n /**n * @return {string} String token value.n * @privaten */n Lexer.prototype.readText_ = function () {n var c;n var index = this.index_;n do {n c = this.nextChar_();n } while (this.isAlpha_©);n return this.wkt.substring(index, this.index_–).toUpperCase();n };n return Lexer;n}());n/**n * Class to parse the tokens from the WKT string.n */nvar Parser = /** @class */ (function () {n /**n * @param {Lexer} lexer The lexer.n */n function Parser(lexer) {n /**n * @type {Lexer}n * @privaten */n this.lexer_ = lexer;n /**n * @type {Token}n * @privaten */n this.token_;n /**n * @type {GeometryLayout}n * @privaten */n this.layout_ = GeometryLayout.XY;n }n /**n * Fetch the next token form the lexer and replace the active token.n * @privaten */n Parser.prototype.consume_ = function () {n this.token_ = this.lexer_.nextToken();n };n /**n * Tests if the given type matches the type of the current token.n * @param {TokenType} type Token type.n * @return {boolean} Whether the token matches the given type.n */n Parser.prototype.isTokenType = function (type) {n var isMatch = this.token_.type == type;n return isMatch;n };n /**n * If the given type matches the current token, consume it.n * @param {TokenType} type Token type.n * @return {boolean} Whether the token matches the given type.n */n Parser.prototype.match = function (type) {n var isMatch = this.isTokenType(type);n if (isMatch) {n this.consume_();n }n return isMatch;n };n /**n * Try to parse the tokens provided by the lexer.n * @return {import("../geom/Geometry.js").default} The geometry.n */n Parser.prototype.parse = function () {n this.consume_();n var geometry = this.parseGeometry_();n return geometry;n };n /**n * Try to parse the dimensional info.n * @return {GeometryLayout} The layout.n * @privaten */n Parser.prototype.parseGeometryLayout_ = function () {n var layout = GeometryLayout.XY;n var dimToken = this.token_;n if (this.isTokenType(TokenType.TEXT)) {n var dimInfo = dimToken.value;n if (dimInfo === Z) {n layout = GeometryLayout.XYZ;n }n else if (dimInfo === M) {n layout = GeometryLayout.XYM;n }n else if (dimInfo === ZM) {n layout = GeometryLayout.XYZM;n }n if (layout !== GeometryLayout.XY) {n this.consume_();n }n }n return layout;n };n /**n * @return {!Array<import("../geom/Geometry.js").default>} A collection of geometries.n * @privaten */n Parser.prototype.parseGeometryCollectionText_ = function () {n if (this.match(TokenType.LEFT_PAREN)) {n var geometries = [];n do {n geometries.push(this.parseGeometry_());n } while (this.match(TokenType.COMMA));n if (this.match(TokenType.RIGHT_PAREN)) {n return geometries;n }n }n else if (this.isEmptyGeometry_()) {n return [];n }n throw new Error(this.formatErrorMessage_());n };n /**n * @return {Array<number>} All values in a point.n * @privaten */n Parser.prototype.parsePointText_ = function () {n if (this.match(TokenType.LEFT_PAREN)) {n var coordinates = this.parsePoint_();n if (this.match(TokenType.RIGHT_PAREN)) {n return coordinates;n }n }n else if (this.isEmptyGeometry_()) {n return null;n }n throw new Error(this.formatErrorMessage_());n };n /**n * @return {!Array<!Array<number>>} All points in a linestring.n * @privaten */n Parser.prototype.parseLineStringText_ = function () {n if (this.match(TokenType.LEFT_PAREN)) {n var coordinates = this.parsePointList_();n if (this.match(TokenType.RIGHT_PAREN)) {n return coordinates;n }n }n else if (this.isEmptyGeometry_()) {n return [];n }n throw new Error(this.formatErrorMessage_());n };n /**n * @return {!Array<!Array<!Array<number>>>} All points in a polygon.n * @privaten */n Parser.prototype.parsePolygonText_ = function () {n if (this.match(TokenType.LEFT_PAREN)) {n var coordinates = this.parseLineStringTextList_();n if (this.match(TokenType.RIGHT_PAREN)) {n return coordinates;n }n }n else if (this.isEmptyGeometry_()) {n return [];n }n throw new Error(this.formatErrorMessage_());n };n /**n * @return {!Array<!Array<number>>} All points in a multipoint.n * @privaten */n Parser.prototype.parseMultiPointText_ = function () {n if (this.match(TokenType.LEFT_PAREN)) {n var coordinates = void 0;n if (this.token_.type == TokenType.LEFT_PAREN) {n coordinates = this.parsePointTextList_();n }n else {n coordinates = this.parsePointList_();n }n if (this.match(TokenType.RIGHT_PAREN)) {n return coordinates;n }n }n else if (this.isEmptyGeometry_()) {n return [];n }n throw new Error(this.formatErrorMessage_());n };n /**n * @return {!Array<!Array<!Array<number>>>} All linestring pointsn * in a multilinestring.n * @privaten */n Parser.prototype.parseMultiLineStringText_ = function () {n if (this.match(TokenType.LEFT_PAREN)) {n var coordinates = this.parseLineStringTextList_();n if (this.match(TokenType.RIGHT_PAREN)) {n return coordinates;n }n }n else if (this.isEmptyGeometry_()) {n return [];n }n throw new Error(this.formatErrorMessage_());n };n /**n * @return {!Array<!Array<!Array<!Array<number>>>>} All polygon points in a multipolygon.n * @privaten */n Parser.prototype.parseMultiPolygonText_ = function () {n if (this.match(TokenType.LEFT_PAREN)) {n var coordinates = this.parsePolygonTextList_();n if (this.match(TokenType.RIGHT_PAREN)) {n return coordinates;n }n }n else if (this.isEmptyGeometry_()) {n return [];n }n throw new Error(this.formatErrorMessage_());n };n /**n * @return {!Array<number>} A point.n * @privaten */n Parser.prototype.parsePoint_ = function () {n var coordinates = [];n var dimensions = this.layout_.length;n for (var i = 0; i < dimensions; ++i) {n var token = this.token_;n if (this.match(TokenType.NUMBER)) {n coordinates.push(/** @type {number} */ (token.value));n }n else {n break;n }n }n if (coordinates.length == dimensions) {n return coordinates;n }n throw new Error(this.formatErrorMessage_());n };n /**n * @return {!Array<!Array<number>>} An array of points.n * @privaten */n Parser.prototype.parsePointList_ = function () {n var coordinates = [this.parsePoint_()];n while (this.match(TokenType.COMMA)) {n coordinates.push(this.parsePoint_());n }n return coordinates;n };n /**n * @return {!Array<!Array<number>>} An array of points.n * @privaten */n Parser.prototype.parsePointTextList_ = function () {n var coordinates = [this.parsePointText_()];n while (this.match(TokenType.COMMA)) {n coordinates.push(this.parsePointText_());n }n return coordinates;n };n /**n * @return {!Array<!Array<!Array<number>>>} An array of points.n * @privaten */n Parser.prototype.parseLineStringTextList_ = function () {n var coordinates = [this.parseLineStringText_()];n while (this.match(TokenType.COMMA)) {n coordinates.push(this.parseLineStringText_());n }n return coordinates;n };n /**n * @return {!Array<!Array<!Array<!Array<number>>>>} An array of points.n * @privaten */n Parser.prototype.parsePolygonTextList_ = function () {n var coordinates = [this.parsePolygonText_()];n while (this.match(TokenType.COMMA)) {n coordinates.push(this.parsePolygonText_());n }n return coordinates;n };n /**n * @return {boolean} Whether the token implies an empty geometry.n * @privaten */n Parser.prototype.isEmptyGeometry_ = function () {n var isEmpty = this.isTokenType(TokenType.TEXT) &&n this.token_.value == EMPTY;n if (isEmpty) {n this.consume_();n }n return isEmpty;n };n /**n * Create an error message for an unexpected token error.n * @return {string} Error message.n * @privaten */n Parser.prototype.formatErrorMessage_ = function () {n return 'Unexpected `' + this.token_.value + '` at position ' +n this.token_.position + ' in `' + this.lexer_.wkt + '`';n };n /**n * @return {!import("../geom/Geometry.js").default} The geometry.n * @privaten */n Parser.prototype.parseGeometry_ = function () {n var token = this.token_;n if (this.match(TokenType.TEXT)) {n var geomType = token.value;n this.layout_ = this.parseGeometryLayout_();n if (geomType == 'GEOMETRYCOLLECTION') {n var geometries = this.parseGeometryCollectionText_();n return new GeometryCollection(geometries);n }n else {n var ctor = GeometryConstructor;n if (!ctor) {n throw new Error('Invalid geometry type: ' + geomType);n }n var coordinates = void 0;n switch (geomType) {n case 'POINT': {n coordinates = this.parsePointText_();n break;n }n case 'LINESTRING': {n coordinates = this.parseLineStringText_();n break;n }n case 'POLYGON': {n coordinates = this.parsePolygonText_();n break;n }n case 'MULTIPOINT': {n coordinates = this.parseMultiPointText_();n break;n }n case 'MULTILINESTRING': {n coordinates = this.parseMultiLineStringText_();n break;n }n case 'MULTIPOLYGON': {n coordinates = this.parseMultiPolygonText_();n break;n }n default: {n throw new Error('Invalid geometry type: ' + geomType);n }n }n if (!coordinates) {n if (ctor === GeometryConstructor) {n coordinates = [NaN, NaN];n }n else {n coordinates = [];n }n }n return new ctor(coordinates, this.layout_);n }n }n throw new Error(this.formatErrorMessage_());n };n return Parser;n}());n/**n * @classdescn * Geometry format for reading and writing data in the `WellKnownText` (WKT)n * format.n *n * @apin */nvar WKT = /** @class */ (function (_super) {n __extends(WKT, _super);n /**n * @param {Options=} opt_options Options.n */n function WKT(opt_options) {n var _this = _super.call(this) || this;n var options = opt_options ? opt_options : {};n /**n * Split GeometryCollection into multiple features.n * @type {boolean}n * @privaten */n this.splitCollection = options.splitCollection !== undefined ?n options.splitCollection : false;n return _this;n }n /**n * Parse a WKT string.n * @param {string} wkt WKT string.n * @return {import("../geom/Geometry.js").default|undefined}n * The geometry created.n * @privaten */n WKT.prototype.parse_ = function (wkt) {n var lexer = new Lexer(wkt);n var parser = new Parser(lexer);n return parser.parse();n };n /**n * @inheritDocn */n WKT.prototype.readFeatureFromText = function (text, opt_options) {n var geom = this.readGeometryFromText(text, opt_options);n if (geom) {n var feature = new Feature();n feature.setGeometry(geom);n return feature;n }n return null;n };n /**n * @inheritDocn */n WKT.prototype.readFeaturesFromText = function (text, opt_options) {n var geometries = [];n var geometry = this.readGeometryFromText(text, opt_options);n if (this.splitCollection_ &&n geometry.getType() == GeometryType.GEOMETRY_COLLECTION) {n geometries = ( /** @type {GeometryCollection} */(geometry))n .getGeometriesArray();n }n else {n geometries = [geometry];n }n var features = [];n for (var i = 0, ii = geometries.length; i < ii; ++i) {n var feature = new Feature();n feature.setGeometry(geometries);n features.push(feature);n }n return features;n };n /**n * @inheritDocn */n WKT.prototype.readGeometryFromText = function (text, opt_options) {n var geometry = this.parse_(text);n if (geometry) {n return transformGeometryWithOptions(geometry, false, opt_options);n }n else {n return null;n }n };n /**n * @inheritDocn */n WKT.prototype.writeFeatureText = function (feature, opt_options) {n var geometry = feature.getGeometry();n if (geometry) {n return this.writeGeometryText(geometry, opt_options);n }n return '';n };n /**n * @inheritDocn */n WKT.prototype.writeFeaturesText = function (features, opt_options) {n if (features.length == 1) {n return this.writeFeatureText(features, opt_options);n }n var geometries = [];n for (var i = 0, ii = features.length; i < ii; ++i) {n geometries.push(features.getGeometry());n }n var collection = new GeometryCollection(geometries);n return this.writeGeometryText(collection, opt_options);n };n /**n * @inheritDocn */n WKT.prototype.writeGeometryText = function (geometry, opt_options) {n return encode(transformGeometryWithOptions(geometry, true, opt_options));n };n return WKT;n}(TextFeature));n/**n * @param {Point} geom Point geometry.n * @return {string} Coordinates part of Point as WKT.n */nfunction encodePointGeometry(geom) {n var coordinates = geom.getCoordinates();n if (coordinates.length === 0) {n return '';n }n return coordinates.join(' ');n}n/**n * @param {MultiPoint} geom MultiPoint geometry.n * @return {string} Coordinates part of MultiPoint as WKT.n */nfunction encodeMultiPointGeometry(geom) {n var array = [];n var components = geom.getPoints();n for (var i = 0, ii = components.length; i < ii; ++i) {n array.push('(' + encodePointGeometry(components) + ')');n }n return array.join(',');n}n/**n * @param {GeometryCollection} geom GeometryCollection geometry.n * @return {string} Coordinates part of GeometryCollection as WKT.n */nfunction encodeGeometryCollectionGeometry(geom) {n var array = [];n var geoms = geom.getGeometries();n for (var i = 0, ii = geoms.length; i < ii; ++i) {n array.push(encode(geoms));n }n return array.join(',');n}n/**n * @param {LineString|import("../geom/LinearRing.js").default} geom LineString geometry.n * @return {string} Coordinates part of LineString as WKT.n */nfunction encodeLineStringGeometry(geom) {n var coordinates = geom.getCoordinates();n var array = [];n for (var i = 0, ii = coordinates.length; i < ii; ++i) {n array.push(coordinates.join(' '));n }n return array.join(',');n}n/**n * @param {MultiLineString} geom MultiLineString geometry.n * @return {string} Coordinates part of MultiLineString as WKT.n */nfunction encodeMultiLineStringGeometry(geom) {n var array = [];n var components = geom.getLineStrings();n for (var i = 0, ii = components.length; i < ii; ++i) {n array.push('(' + encodeLineStringGeometry(components) + ')');n }n return array.join(',');n}n/**n * @param {Polygon} geom Polygon geometry.n * @return {string} Coordinates part of Polygon as WKT.n */nfunction encodePolygonGeometry(geom) {n var array = [];n var rings = geom.getLinearRings();n for (var i = 0, ii = rings.length; i < ii; ++i) {n array.push('(' + encodeLineStringGeometry(rings) + ')');n }n return array.join(',');n}n/**n * @param {MultiPolygon} geom MultiPolygon geometry.n * @return {string} Coordinates part of MultiPolygon as WKT.n */nfunction encodeMultiPolygonGeometry(geom) {n var array = [];n var components = geom.getPolygons();n for (var i = 0, ii = components.length; i < ii; ++i) {n array.push('(' + encodePolygonGeometry(components) + ')');n }n return array.join(',');n}n/**n * @param {import("../geom/SimpleGeometry.js").default} geom SimpleGeometry geometry.n * @return {string} Potential dimensional information for WKT type.n */nfunction encodeGeometryLayout(geom) {n var layout = geom.getLayout();n var dimInfo = '';n if (layout === GeometryLayout.XYZ || layout === GeometryLayout.XYZM) {n dimInfo += Z;n }n if (layout === GeometryLayout.XYM || layout === GeometryLayout.XYZM) {n dimInfo += M;n }n return dimInfo;n}n/**n * @constn * @type {Object<string, function(import("../geom/Geometry.js").default): string>}n */nvar GeometryEncoder = {n 'Point': encodePointGeometry,n 'LineString': encodeLineStringGeometry,n 'Polygon': encodePolygonGeometry,n 'MultiPoint': encodeMultiPointGeometry,n 'MultiLineString': encodeMultiLineStringGeometry,n 'MultiPolygon': encodeMultiPolygonGeometry,n 'GeometryCollection': encodeGeometryCollectionGeometryn};n/**n * Encode a geometry as WKT.n * @param {!import("../geom/Geometry.js").default} geom The geometry to encode.n * @return {string} WKT string for the geometry.n */nfunction encode(geom) {n var type = geom.getType();n var geometryEncoder = GeometryEncoder;n var enc = geometryEncoder(geom);n type = type.toUpperCase();n if (typeof /** @type {?} */ (geom).getFlatCoordinates === 'function') {n var dimInfo = encodeGeometryLayout(/** @type {import("../geom/SimpleGeometry.js").default} */ (geom));n if (dimInfo.length > 0) {n type += ' ' + dimInfo;n }n }n if (enc.length === 0) {n return type + ' ' + EMPTY;n }n return type + '(' + enc + ')';n}nexport default WKT;n//# sourceMappingURL=WKT.js.map”,“/**n * @module ol/format/XLinkn */n/**n * @constn * @type {string}n */nvar NAMESPACE_URI = 'www.w3.org/1999/xlink’;n/**n * @param {Element} node Node.n * @return {string|undefined} href.n */nexport function readHref(node) {n return node.getAttributeNS(NAMESPACE_URI, 'href');n}n//# sourceMappingURL=XLink.js.map”,“/**n * @module ol/format/XMLn */nimport { isDocument, parse } from '../xml.js';n/**n * @classdescn * Generic format for reading non-feature XML datan *n * @abstractn */nvar XML = /** @class */ (function () {n function XML() {n }n /**n * Read the source document.n *n * @param {Document|Element|string} source The XML source.n * @return {Object} An object representing the source.n * @apin */n XML.prototype.read = function (source) {n if (!source) {n return null;n }n else if (typeof source === 'string') {n var doc = parse(source);n return this.readFromDocument(doc);n }n else if (isDocument(source)) {n return this.readFromDocument(/** @type {Document} */ (source));n }n else {n return this.readFromNode(/** @type {Element} */ (source));n }n };n /**n * @abstractn * @param {Document} doc Document.n * @return {Object} Objectn */n XML.prototype.readFromDocument = function (doc) { };n /**n * @abstractn * @param {Element} node Node.n * @return {Object} Objectn */n XML.prototype.readFromNode = function (node) { };n return XML;n}());nexport default XML;n//# sourceMappingURL=XML.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/WMSCapabilitiesn */nimport { readHref } from './XLink.js';nimport XML from './XML.js';nimport { readDecimalString, readString, readNonNegativeInteger, readDecimal, readBooleanString, readNonNegativeIntegerString } from './xsd.js';nimport { makeArrayPusher, makeObjectPropertyPusher, makeObjectPropertySetter, makeStructureNS, pushParseAndPop } from '../xml.js';n/**n * @constn * @type {Array<null|string>}n */nvar NAMESPACE_URIS = [n null,n 'www.opengis.net/wms’n];n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Service': makeObjectPropertySetter(readService),n 'Capability': makeObjectPropertySetter(readCapability)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar CAPABILITY_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Request': makeObjectPropertySetter(readRequest),n 'Exception': makeObjectPropertySetter(readException),n 'Layer': makeObjectPropertySetter(readCapabilityLayer)n});n/**n * @classdescn * Format for reading WMS capabilities datan *n * @apin */nvar WMSCapabilities = /** @class */ (function (_super) {n __extends(WMSCapabilities, _super);n function WMSCapabilities() {n var _this = _super.call(this) || this;n /**n * @type {string|undefined}n */n _this.version = undefined;n return _this;n }n /**n * @inheritDocn */n WMSCapabilities.prototype.readFromDocument = function (doc) {n for (var n = doc.firstChild; n; n = n.nextSibling) {n if (n.nodeType == Node.ELEMENT_NODE) {n return this.readFromNode(n);n }n }n return null;n };n /**n * @inheritDocn */n WMSCapabilities.prototype.readFromNode = function (node) {n this.version = node.getAttribute('version').trim();n var wmsCapabilityObject = pushParseAndPop({n 'version': this.versionn }, PARSERS, node, []);n return wmsCapabilityObject ? wmsCapabilityObject : null;n };n return WMSCapabilities;n}(XML));n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar SERVICE_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Name': makeObjectPropertySetter(readString),n 'Title': makeObjectPropertySetter(readString),n 'Abstract': makeObjectPropertySetter(readString),n 'KeywordList': makeObjectPropertySetter(readKeywordList),n 'OnlineResource': makeObjectPropertySetter(readHref),n 'ContactInformation': makeObjectPropertySetter(readContactInformation),n 'Fees': makeObjectPropertySetter(readString),n 'AccessConstraints': makeObjectPropertySetter(readString),n 'LayerLimit': makeObjectPropertySetter(readNonNegativeInteger),n 'MaxWidth': makeObjectPropertySetter(readNonNegativeInteger),n 'MaxHeight': makeObjectPropertySetter(readNonNegativeInteger)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar CONTACT_INFORMATION_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'ContactPersonPrimary': makeObjectPropertySetter(readContactPersonPrimary),n 'ContactPosition': makeObjectPropertySetter(readString),n 'ContactAddress': makeObjectPropertySetter(readContactAddress),n 'ContactVoiceTelephone': makeObjectPropertySetter(readString),n 'ContactFacsimileTelephone': makeObjectPropertySetter(readString),n 'ContactElectronicMailAddress': makeObjectPropertySetter(readString)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar CONTACT_PERSON_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'ContactPerson': makeObjectPropertySetter(readString),n 'ContactOrganization': makeObjectPropertySetter(readString)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar CONTACT_ADDRESS_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'AddressType': makeObjectPropertySetter(readString),n 'Address': makeObjectPropertySetter(readString),n 'City': makeObjectPropertySetter(readString),n 'StateOrProvince': makeObjectPropertySetter(readString),n 'PostCode': makeObjectPropertySetter(readString),n 'Country': makeObjectPropertySetter(readString)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar EXCEPTION_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Format': makeArrayPusher(readString)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar LAYER_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Name': makeObjectPropertySetter(readString),n 'Title': makeObjectPropertySetter(readString),n 'Abstract': makeObjectPropertySetter(readString),n 'KeywordList': makeObjectPropertySetter(readKeywordList),n 'CRS': makeObjectPropertyPusher(readString),n 'EX_GeographicBoundingBox': makeObjectPropertySetter(readEXGeographicBoundingBox),n 'BoundingBox': makeObjectPropertyPusher(readBoundingBox),n 'Dimension': makeObjectPropertyPusher(readDimension),n 'Attribution': makeObjectPropertySetter(readAttribution),n 'AuthorityURL': makeObjectPropertyPusher(readAuthorityURL),n 'Identifier': makeObjectPropertyPusher(readString),n 'MetadataURL': makeObjectPropertyPusher(readMetadataURL),n 'DataURL': makeObjectPropertyPusher(readFormatOnlineresource),n 'FeatureListURL': makeObjectPropertyPusher(readFormatOnlineresource),n 'Style': makeObjectPropertyPusher(readStyle),n 'MinScaleDenominator': makeObjectPropertySetter(readDecimal),n 'MaxScaleDenominator': makeObjectPropertySetter(readDecimal),n 'Layer': makeObjectPropertyPusher(readLayer)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar ATTRIBUTION_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Title': makeObjectPropertySetter(readString),n 'OnlineResource': makeObjectPropertySetter(readHref),n 'LogoURL': makeObjectPropertySetter(readSizedFormatOnlineresource)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar EX_GEOGRAPHIC_BOUNDING_BOX_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'westBoundLongitude': makeObjectPropertySetter(readDecimal),n 'eastBoundLongitude': makeObjectPropertySetter(readDecimal),n 'southBoundLatitude': makeObjectPropertySetter(readDecimal),n 'northBoundLatitude': makeObjectPropertySetter(readDecimal)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar REQUEST_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'GetCapabilities': makeObjectPropertySetter(readOperationType),n 'GetMap': makeObjectPropertySetter(readOperationType),n 'GetFeatureInfo': makeObjectPropertySetter(readOperationType)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar OPERATIONTYPE_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Format': makeObjectPropertyPusher(readString),n 'DCPType': makeObjectPropertyPusher(readDCPType)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar DCPTYPE_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'HTTP': makeObjectPropertySetter(readHTTP)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar HTTP_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Get': makeObjectPropertySetter(readFormatOnlineresource),n 'Post': makeObjectPropertySetter(readFormatOnlineresource)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar STYLE_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Name': makeObjectPropertySetter(readString),n 'Title': makeObjectPropertySetter(readString),n 'Abstract': makeObjectPropertySetter(readString),n 'LegendURL': makeObjectPropertyPusher(readSizedFormatOnlineresource),n 'StyleSheetURL': makeObjectPropertySetter(readFormatOnlineresource),n 'StyleURL': makeObjectPropertySetter(readFormatOnlineresource)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar FORMAT_ONLINERESOURCE_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Format': makeObjectPropertySetter(readString),n 'OnlineResource': makeObjectPropertySetter(readHref)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar KEYWORDLIST_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Keyword': makeArrayPusher(readString)n});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Attribution object.n */nfunction readAttribution(node, objectStack) {n return pushParseAndPop({}, ATTRIBUTION_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object} Bounding box object.n */nfunction readBoundingBox(node, objectStack) {n var extent = [n readDecimalString(node.getAttribute('minx')),n readDecimalString(node.getAttribute('miny')),n readDecimalString(node.getAttribute('maxx')),n readDecimalString(node.getAttribute('maxy'))n ];n var resolutions = [n readDecimalString(node.getAttribute('resx')),n readDecimalString(node.getAttribute('resy'))n ];n return {n 'crs': node.getAttribute('CRS'),n 'extent': extent,n 'res': resolutionsn };n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {import("../extent.js").Extent|undefined} Bounding box object.n */nfunction readEXGeographicBoundingBox(node, objectStack) {n var geographicBoundingBox = pushParseAndPop({}, EX_GEOGRAPHIC_BOUNDING_BOX_PARSERS, node, objectStack);n if (!geographicBoundingBox) {n return undefined;n }n var westBoundLongitude = /** @type {number|undefined} */ (geographicBoundingBox);n var southBoundLatitude = /** @type {number|undefined} */ (geographicBoundingBox);n var eastBoundLongitude = /** @type {number|undefined} */ (geographicBoundingBox);n var northBoundLatitude = /** @type {number|undefined} */ (geographicBoundingBox);n if (westBoundLongitude === undefined || southBoundLatitude === undefined ||n eastBoundLongitude === undefined || northBoundLatitude === undefined) {n return undefined;n }n return [n westBoundLongitude, southBoundLatitude,n eastBoundLongitude, northBoundLatituden ];n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Capability object.n */nfunction readCapability(node, objectStack) {n return pushParseAndPop({}, CAPABILITY_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Service object.n */nfunction readService(node, objectStack) {n return pushParseAndPop({}, SERVICE_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Contact information object.n */nfunction readContactInformation(node, objectStack) {n return pushParseAndPop({}, CONTACT_INFORMATION_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Contact person object.n */nfunction readContactPersonPrimary(node, objectStack) {n return pushParseAndPop({}, CONTACT_PERSON_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Contact address object.n */nfunction readContactAddress(node, objectStack) {n return pushParseAndPop({}, CONTACT_ADDRESS_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Array<string>|undefined} Format array.n */nfunction readException(node, objectStack) {n return pushParseAndPop([], EXCEPTION_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Layer object.n */nfunction readCapabilityLayer(node, objectStack) {n return pushParseAndPop({}, LAYER_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Layer object.n */nfunction readLayer(node, objectStack) {n var parentLayerObject = /** @type {!Object<string,*>} */ (objectStack[objectStack.length - 1]);n var layerObject = pushParseAndPop({}, LAYER_PARSERS, node, objectStack);n if (!layerObject) {n return undefined;n }n var queryable = readBooleanString(node.getAttribute('queryable'));n if (queryable === undefined) {n queryable = parentLayerObject;n }n layerObject = queryable !== undefined ? queryable : false;n var cascaded = readNonNegativeIntegerString(node.getAttribute('cascaded'));n if (cascaded === undefined) {n cascaded = parentLayerObject;n }n layerObject = cascaded;n var opaque = readBooleanString(node.getAttribute('opaque'));n if (opaque === undefined) {n opaque = parentLayerObject;n }n layerObject = opaque !== undefined ? opaque : false;n var noSubsets = readBooleanString(node.getAttribute('noSubsets'));n if (noSubsets === undefined) {n noSubsets = parentLayerObject;n }n layerObject = noSubsets !== undefined ? noSubsets : false;n var fixedWidth = readDecimalString(node.getAttribute('fixedWidth'));n if (!fixedWidth) {n fixedWidth = parentLayerObject;n }n layerObject = fixedWidth;n var fixedHeight = readDecimalString(node.getAttribute('fixedHeight'));n if (!fixedHeight) {n fixedHeight = parentLayerObject;n }n layerObject = fixedHeight;n // See 7.2.4.8n var addKeys = ['Style', 'CRS', 'AuthorityURL'];n addKeys.forEach(function (key) {n if (key in parentLayerObject) {n var childValue = layerObject || [];n layerObject = childValue.concat(parentLayerObject);n }n });n var replaceKeys = ['EX_GeographicBoundingBox', 'BoundingBox', 'Dimension',n 'Attribution', 'MinScaleDenominator', 'MaxScaleDenominator'];n replaceKeys.forEach(function (key) {n if (!(key in layerObject)) {n var parentValue = parentLayerObject;n layerObject = parentValue;n }n });n return layerObject;n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object} Dimension object.n */nfunction readDimension(node, objectStack) {n var dimensionObject = {n 'name': node.getAttribute('name'),n 'units': node.getAttribute('units'),n 'unitSymbol': node.getAttribute('unitSymbol'),n 'default': node.getAttribute('default'),n 'multipleValues': readBooleanString(node.getAttribute('multipleValues')),n 'nearestValue': readBooleanString(node.getAttribute('nearestValue')),n 'current': readBooleanString(node.getAttribute('current')),n 'values': readString(node)n };n return dimensionObject;n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Online resource object.n */nfunction readFormatOnlineresource(node, objectStack) {n return pushParseAndPop({}, FORMAT_ONLINERESOURCE_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Request object.n */nfunction readRequest(node, objectStack) {n return pushParseAndPop({}, REQUEST_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} DCP type object.n */nfunction readDCPType(node, objectStack) {n return pushParseAndPop({}, DCPTYPE_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} HTTP object.n */nfunction readHTTP(node, objectStack) {n return pushParseAndPop({}, HTTP_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Operation type object.n */nfunction readOperationType(node, objectStack) {n return pushParseAndPop({}, OPERATIONTYPE_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Online resource object.n */nfunction readSizedFormatOnlineresource(node, objectStack) {n var formatOnlineresource = readFormatOnlineresource(node, objectStack);n if (formatOnlineresource) {n var size = [n readNonNegativeIntegerString(node.getAttribute('width')),n readNonNegativeIntegerString(node.getAttribute('height'))n ];n formatOnlineresource = size;n return formatOnlineresource;n }n return undefined;n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Authority URL object.n */nfunction readAuthorityURL(node, objectStack) {n var authorityObject = readFormatOnlineresource(node, objectStack);n if (authorityObject) {n authorityObject = node.getAttribute('name');n return authorityObject;n }n return undefined;n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Metadata URL object.n */nfunction readMetadataURL(node, objectStack) {n var metadataObject = readFormatOnlineresource(node, objectStack);n if (metadataObject) {n metadataObject = node.getAttribute('type');n return metadataObject;n }n return undefined;n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Style object.n */nfunction readStyle(node, objectStack) {n return pushParseAndPop({}, STYLE_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Array<string>|undefined} Keyword list.n */nfunction readKeywordList(node, objectStack) {n return pushParseAndPop([], KEYWORDLIST_PARSERS, node, objectStack);n}nexport default WMSCapabilities;n//# sourceMappingURL=WMSCapabilities.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/WMSGetFeatureInfon */nimport { extend, includes } from '../array.js';nimport GML2 from './GML2.js';nimport XMLFeature from './XMLFeature.js';nimport { assign } from '../obj.js';nimport { makeArrayPusher, makeStructureNS, pushParseAndPop } from '../xml.js';n/**n * @typedef {Object} Optionsn * @property {Array<string>} [layers] If set, only features of the given layers will be returned by the format when read.n */n/**n * @constn * @type {string}n */nvar featureIdentifier = '_feature';n/**n * @constn * @type {string}n */nvar layerIdentifier = '_layer';n/**n * @classdescn * Format for reading WMSGetFeatureInfo format. It usesn * {@link module:ol/format/GML2~GML2} to read features.n *n * @apin */nvar WMSGetFeatureInfo = /** @class */ (function (_super) {n __extends(WMSGetFeatureInfo, _super);n /**n * @param {Options=} opt_options Options.n */n function WMSGetFeatureInfo(opt_options) {n var _this = _super.call(this) || this;n var options = opt_options ? opt_options : {};n /**n * @privaten * @type {string}n */n this.featureNS = 'mapserver.gis.umn.edu/mapserver’;n /**n * @privaten * @type {GML2}n */n this.gmlFormat = new GML2();n /**n * @privaten * @type {Array<string>}n */n this.layers = options.layers ? options.layers : null;n return _this;n }n /**n * @return {Array<string>} layersn */n WMSGetFeatureInfo.prototype.getLayers = function () {n return this.layers_;n };n /**n * @param {Array<string>} layers Layers to parse.n */n WMSGetFeatureInfo.prototype.setLayers = function (layers) {n this.layers_ = layers;n };n /**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Array<import("../Feature.js").default>} Features.n * @privaten */n WMSGetFeatureInfo.prototype.readFeatures_ = function (node, objectStack) {n node.setAttribute('namespaceURI', this.featureNS_);n var localName = node.localName;n /** @type {Array<import("../Feature.js").default>} */n var features = [];n if (node.childNodes.length === 0) {n return features;n }n if (localName == 'msGMLOutput') {n for (var i = 0, ii = node.childNodes.length; i < ii; i++) {n var layer = node.childNodes;n if (layer.nodeType !== Node.ELEMENT_NODE) {n continue;n }n var layerElement = /** @type {Element} */ (layer);n var context = objectStack;n var toRemove = layerIdentifier;n var layerName = layerElement.localName.replace(toRemove, '');n if (this.layers_ && !includes(this.layers_, layerName)) {n continue;n }n var featureType = layerName +n featureIdentifier;n context = featureType;n context = this.featureNS_;n /** @type {Object<string, import("../xml.js").Parser>} */n var parsers = {};n parsers = makeArrayPusher(this.gmlFormat_.readFeatureElement, this.gmlFormat_);n var parsersNS = makeStructureNS([context, null], parsers);n layerElement.setAttribute('namespaceURI', this.featureNS_);n var layerFeatures = pushParseAndPop(n // @ts-ignoren [], parsersNS, layerElement, objectStack, this.gmlFormat_);n if (layerFeatures) {n extend(features, layerFeatures);n }n }n }n if (localName == 'FeatureCollection') {n var gmlFeatures = pushParseAndPop([], this.gmlFormat_.FEATURE_COLLECTION_PARSERS, node, [{}], this.gmlFormat_);n if (gmlFeatures) {n features = gmlFeatures;n }n }n return features;n };n /**n * @inheritDocn */n WMSGetFeatureInfo.prototype.readFeaturesFromNode = function (node, opt_options) {n var options = {};n if (opt_options) {n assign(options, this.getReadOptions(node, opt_options));n }n return this.readFeatures_(node, [options]);n };n return WMSGetFeatureInfo;n}(XMLFeature));nexport default WMSGetFeatureInfo;n//# sourceMappingURL=WMSGetFeatureInfo.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/OWSn */nimport { readHref } from './XLink.js';nimport XML from './XML.js';nimport { readString } from './xsd.js';nimport { makeObjectPropertyPusher, makeObjectPropertySetter, makeStructureNS, pushParseAndPop } from '../xml.js';n/**n * @constn * @type {Array<null|string>}n */nvar NAMESPACE_URIS = [null, 'www.opengis.net/ows/1.1’];n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'ServiceIdentification': makeObjectPropertySetter(readServiceIdentification),n 'ServiceProvider': makeObjectPropertySetter(readServiceProvider),n 'OperationsMetadata': makeObjectPropertySetter(readOperationsMetadata)n});nvar OWS = /** @class */ (function (_super) {n __extends(OWS, _super);n function OWS() {n return _super.call(this) || this;n }n /**n * @inheritDocn */n OWS.prototype.readFromDocument = function (doc) {n for (var n = doc.firstChild; n; n = n.nextSibling) {n if (n.nodeType == Node.ELEMENT_NODE) {n return this.readFromNode(n);n }n }n return null;n };n /**n * @inheritDocn */n OWS.prototype.readFromNode = function (node) {n var owsObject = pushParseAndPop({}, PARSERS, node, []);n return owsObject ? owsObject : null;n };n return OWS;n}(XML));n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar ADDRESS_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'DeliveryPoint': makeObjectPropertySetter(readString),n 'City': makeObjectPropertySetter(readString),n 'AdministrativeArea': makeObjectPropertySetter(readString),n 'PostalCode': makeObjectPropertySetter(readString),n 'Country': makeObjectPropertySetter(readString),n 'ElectronicMailAddress': makeObjectPropertySetter(readString)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar ALLOWED_VALUES_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Value': makeObjectPropertyPusher(readValue)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar CONSTRAINT_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'AllowedValues': makeObjectPropertySetter(readAllowedValues)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar CONTACT_INFO_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Phone': makeObjectPropertySetter(readPhone),n 'Address': makeObjectPropertySetter(readAddress)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar DCP_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'HTTP': makeObjectPropertySetter(readHttp)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar HTTP_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Get': makeObjectPropertyPusher(readGet),n 'Post': undefined // TODOn});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar OPERATION_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'DCP': makeObjectPropertySetter(readDcp)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar OPERATIONS_METADATA_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Operation': readOperationn});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar PHONE_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Voice': makeObjectPropertySetter(readString),n 'Facsimile': makeObjectPropertySetter(readString)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar REQUEST_METHOD_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Constraint': makeObjectPropertyPusher(readConstraint)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar SERVICE_CONTACT_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'IndividualName': makeObjectPropertySetter(readString),n 'PositionName': makeObjectPropertySetter(readString),n 'ContactInfo': makeObjectPropertySetter(readContactInfo)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar SERVICE_IDENTIFICATION_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Abstract': makeObjectPropertySetter(readString),n 'AccessConstraints': makeObjectPropertySetter(readString),n 'Fees': makeObjectPropertySetter(readString),n 'Title': makeObjectPropertySetter(readString),n 'ServiceTypeVersion': makeObjectPropertySetter(readString),n 'ServiceType': makeObjectPropertySetter(readString)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar SERVICE_PROVIDER_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'ProviderName': makeObjectPropertySetter(readString),n 'ProviderSite': makeObjectPropertySetter(readHref),n 'ServiceContact': makeObjectPropertySetter(readServiceContact)n});n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} The address.n */nfunction readAddress(node, objectStack) {n return pushParseAndPop({}, ADDRESS_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} The values.n */nfunction readAllowedValues(node, objectStack) {n return pushParseAndPop({}, ALLOWED_VALUES_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} The constraint.n */nfunction readConstraint(node, objectStack) {n var name = node.getAttribute('name');n if (!name) {n return undefined;n }n return pushParseAndPop({ 'name': name }, CONSTRAINT_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} The contact info.n */nfunction readContactInfo(node, objectStack) {n return pushParseAndPop({}, CONTACT_INFO_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} The DCP.n */nfunction readDcp(node, objectStack) {n return pushParseAndPop({}, DCP_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} The GET object.n */nfunction readGet(node, objectStack) {n var href = readHref(node);n if (!href) {n return undefined;n }n return pushParseAndPop({ 'href': href }, REQUEST_METHOD_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} The HTTP object.n */nfunction readHttp(node, objectStack) {n return pushParseAndPop({}, HTTP_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} The operation.n */nfunction readOperation(node, objectStack) {n var name = node.getAttribute('name');n var value = pushParseAndPop({}, OPERATION_PARSERS, node, objectStack);n if (!value) {n return undefined;n }n var object = /** @type {Object} */ (objectStack[objectStack.length - 1]);n object = value;n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} The operations metadata.n */nfunction readOperationsMetadata(node, objectStack) {n return pushParseAndPop({}, OPERATIONS_METADATA_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} The phone.n */nfunction readPhone(node, objectStack) {n return pushParseAndPop({}, PHONE_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} The service identification.n */nfunction readServiceIdentification(node, objectStack) {n return pushParseAndPop({}, SERVICE_IDENTIFICATION_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} The service contact.n */nfunction readServiceContact(node, objectStack) {n return pushParseAndPop({}, SERVICE_CONTACT_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} The service provider.n */nfunction readServiceProvider(node, objectStack) {n return pushParseAndPop({}, SERVICE_PROVIDER_PARSERS, node, objectStack);n}n/**n * @param {Node} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {string|undefined} The value.n */nfunction readValue(node, objectStack) {n return readString(node);n}nexport default OWS;n//# sourceMappingURL=OWS.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/format/WMTSCapabilitiesn */nimport { boundingExtent } from '../extent.js';nimport OWS from './OWS.js';nimport { readHref } from './XLink.js';nimport XML from './XML.js';nimport { readString, readNonNegativeInteger, readDecimal } from './xsd.js';nimport { pushParseAndPop, makeStructureNS, makeObjectPropertySetter, makeObjectPropertyPusher, makeArrayPusher } from '../xml.js';n/**n * @constn * @type {Array<null|string>}n */nvar NAMESPACE_URIS = [n null,n 'www.opengis.net/wmts/1.0’n];n/**n * @constn * @type {Array<null|string>}n */nvar OWS_NAMESPACE_URIS = [n null,n 'www.opengis.net/ows/1.1’n];n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Contents': makeObjectPropertySetter(readContents)n});n/**n * @classdescn * Format for reading WMTS capabilities data.n *n * @apin */nvar WMTSCapabilities = /** @class */ (function (_super) {n __extends(WMTSCapabilities, _super);n function WMTSCapabilities() {n var _this = _super.call(this) || this;n /**n * @type {OWS}n * @privaten */n this.owsParser = new OWS();n return _this;n }n /**n * @inheritDocn */n WMTSCapabilities.prototype.readFromDocument = function (doc) {n for (var n = doc.firstChild; n; n = n.nextSibling) {n if (n.nodeType == Node.ELEMENT_NODE) {n return this.readFromNode(n);n }n }n return null;n };n /**n * @inheritDocn */n WMTSCapabilities.prototype.readFromNode = function (node) {n var version = node.getAttribute('version').trim();n var WMTSCapabilityObject = this.owsParser_.readFromNode(node);n if (!WMTSCapabilityObject) {n return null;n }n WMTSCapabilityObject = version;n WMTSCapabilityObject = pushParseAndPop(WMTSCapabilityObject, PARSERS, node, []);n return WMTSCapabilityObject ? WMTSCapabilityObject : null;n };n return WMTSCapabilities;n}(XML));n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar CONTENTS_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Layer': makeObjectPropertyPusher(readLayer),n 'TileMatrixSet': makeObjectPropertyPusher(readTileMatrixSet)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar LAYER_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Style': makeObjectPropertyPusher(readStyle),n 'Format': makeObjectPropertyPusher(readString),n 'TileMatrixSetLink': makeObjectPropertyPusher(readTileMatrixSetLink),n 'Dimension': makeObjectPropertyPusher(readDimensions),n 'ResourceURL': makeObjectPropertyPusher(readResourceUrl)n}, makeStructureNS(OWS_NAMESPACE_URIS, {n 'Title': makeObjectPropertySetter(readString),n 'Abstract': makeObjectPropertySetter(readString),n 'WGS84BoundingBox': makeObjectPropertySetter(readWgs84BoundingBox),n 'Identifier': makeObjectPropertySetter(readString)n}));n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar STYLE_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'LegendURL': makeObjectPropertyPusher(readLegendUrl)n}, makeStructureNS(OWS_NAMESPACE_URIS, {n 'Title': makeObjectPropertySetter(readString),n 'Identifier': makeObjectPropertySetter(readString)n}));n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar TMS_LINKS_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'TileMatrixSet': makeObjectPropertySetter(readString),n 'TileMatrixSetLimits': makeObjectPropertySetter(readTileMatrixLimitsList)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar TMS_LIMITS_LIST_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'TileMatrixLimits': makeArrayPusher(readTileMatrixLimits)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar TMS_LIMITS_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'TileMatrix': makeObjectPropertySetter(readString),n 'MinTileRow': makeObjectPropertySetter(readNonNegativeInteger),n 'MaxTileRow': makeObjectPropertySetter(readNonNegativeInteger),n 'MinTileCol': makeObjectPropertySetter(readNonNegativeInteger),n 'MaxTileCol': makeObjectPropertySetter(readNonNegativeInteger)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar DIMENSION_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'Default': makeObjectPropertySetter(readString),n 'Value': makeObjectPropertyPusher(readString)n}, makeStructureNS(OWS_NAMESPACE_URIS, {n 'Identifier': makeObjectPropertySetter(readString)n}));n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar WGS84_BBOX_READERS = makeStructureNS(OWS_NAMESPACE_URIS, {n 'LowerCorner': makeArrayPusher(readCoordinates),n 'UpperCorner': makeArrayPusher(readCoordinates)n});n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar TMS_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'WellKnownScaleSet': makeObjectPropertySetter(readString),n 'TileMatrix': makeObjectPropertyPusher(readTileMatrix)n}, makeStructureNS(OWS_NAMESPACE_URIS, {n 'SupportedCRS': makeObjectPropertySetter(readString),n 'Identifier': makeObjectPropertySetter(readString)n}));n/**n * @constn * @type {Object<string, Object<string, import("../xml.js").Parser>>}n */n// @ts-ignorenvar TM_PARSERS = makeStructureNS(NAMESPACE_URIS, {n 'TopLeftCorner': makeObjectPropertySetter(readCoordinates),n 'ScaleDenominator': makeObjectPropertySetter(readDecimal),n 'TileWidth': makeObjectPropertySetter(readNonNegativeInteger),n 'TileHeight': makeObjectPropertySetter(readNonNegativeInteger),n 'MatrixWidth': makeObjectPropertySetter(readNonNegativeInteger),n 'MatrixHeight': makeObjectPropertySetter(readNonNegativeInteger)n}, makeStructureNS(OWS_NAMESPACE_URIS, {n 'Identifier': makeObjectPropertySetter(readString)n}));n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Attribution object.n */nfunction readContents(node, objectStack) {n return pushParseAndPop({}, CONTENTS_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Layers object.n */nfunction readLayer(node, objectStack) {n return pushParseAndPop({}, LAYER_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Tile Matrix Set object.n */nfunction readTileMatrixSet(node, objectStack) {n return pushParseAndPop({}, TMS_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Style object.n */nfunction readStyle(node, objectStack) {n var style = pushParseAndPop({}, STYLE_PARSERS, node, objectStack);n if (!style) {n return undefined;n }n var isDefault = node.getAttribute('isDefault') === 'true';n style = isDefault;n return style;n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Tile Matrix Set Link object.n */nfunction readTileMatrixSetLink(node, objectStack) {n return pushParseAndPop({}, TMS_LINKS_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Dimension object.n */nfunction readDimensions(node, objectStack) {n return pushParseAndPop({}, DIMENSION_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Resource URL object.n */nfunction readResourceUrl(node, objectStack) {n var format = node.getAttribute('format');n var template = node.getAttribute('template');n var resourceType = node.getAttribute('resourceType');n var resource = {};n if (format) {n resource = format;n }n if (template) {n resource = template;n }n if (resourceType) {n resource = resourceType;n }n return resource;n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} WGS84 BBox object.n */nfunction readWgs84BoundingBox(node, objectStack) {n var coordinates = pushParseAndPop([], WGS84_BBOX_READERS, node, objectStack);n if (coordinates.length != 2) {n return undefined;n }n return boundingExtent(coordinates);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Legend object.n */nfunction readLegendUrl(node, objectStack) {n var legend = {};n legend = node.getAttribute('format');n legend = readHref(node);n return legend;n}n/**n * @param {Node} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} Coordinates object.n */nfunction readCoordinates(node, objectStack) {n var coordinates = readString(node).split(/\s+/);n if (!coordinates || coordinates.length != 2) {n return undefined;n }n var x = +coordinates;n var y = +coordinates;n if (isNaN(x) || isNaN(y)) {n return undefined;n }n return [x, y];n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} TileMatrix object.n */nfunction readTileMatrix(node, objectStack) {n return pushParseAndPop({}, TM_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} TileMatrixSetLimits Object.n */nfunction readTileMatrixLimitsList(node, objectStack) {n return pushParseAndPop([], TMS_LIMITS_LIST_PARSERS, node, objectStack);n}n/**n * @param {Element} node Node.n * @param {Array<*>} objectStack Object stack.n * @return {Object|undefined} TileMatrixLimits Array.n */nfunction readTileMatrixLimits(node, objectStack) {n return pushParseAndPop({}, TMS_LIMITS_PARSERS, node, objectStack);n}nexport default WMTSCapabilities;n//# sourceMappingURL=WMTSCapabilities.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/control/FullScreenn */nimport Control from './Control.js';nimport { CLASS_CONTROL, CLASS_UNSELECTABLE, CLASS_UNSUPPORTED } from '../css.js';nimport { replaceNode } from '../dom.js';nimport { listen } from '../events.js';nimport EventType from '../events/EventType.js';nvar events = ['fullscreenchange', 'webkitfullscreenchange', 'MSFullscreenChange'];n/**n * @typedef {Object} Optionsn * @property {string} [className='ol-full-screen'] CSS class name.n * @property {string|Text} [label='\u2922'] Text label to use for the button.n * Instead of text, also an element (e.g. a `span` element) can be used.n * @property {string|Text} [labelActive='\u00d7'] Text label to use for then * button when full-screen is active.n * Instead of text, also an element (e.g. a `span` element) can be used.n * @property {string} [tipLabel='Toggle full-screen'] Text label to use for the button tip.n * @property {boolean} [keys=false] Full keyboard access.n * @property {HTMLElement|string} [target] Specify a target if you want then * control to be rendered outside of the map's viewport.n * @property {HTMLElement|string} [source] The element to be displayedn * fullscreen. When not provided, the element containing the map viewport willn * be displayed fullscreen.n */n/**n * @classdescn * Provides a button that when clicked fills up the full screen with the map.n * The full screen source element is by default the element containing the map viewport unlessn * overridden by providing the `source` option. In which case, the domn * element introduced using this parameter will be displayed in full screen.n *n * When in full screen mode, a close button is shown to exit full screen mode.n * The [Fullscreen API](www.w3.org/TR/fullscreen/) is used ton * toggle the map in full screen mode.n *n * @apin */nvar FullScreen = /** @class */ (function (_super) {n __extends(FullScreen, _super);n /**n * @param {Options=} opt_options Options.n */n function FullScreen(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.targetn }) || this;n /**n * @privaten * @type {string}n */n this.cssClassName = options.className !== undefined ? options.className :n 'ol-full-screen';n var label = options.label !== undefined ? options.label : '\u2922';n /**n * @privaten * @type {Text}n */n this.labelNode = typeof label === 'string' ?n document.createTextNode(label) : label;n var labelActive = options.labelActive !== undefined ? options.labelActive : '\u00d7';n /**n * @privaten * @type {Text}n */n this.labelActiveNode = typeof labelActive === 'string' ?n document.createTextNode(labelActive) : labelActive;n /**n * @privaten * @type {HTMLElement}n */n this.button = document.createElement('button');n var tipLabel = options.tipLabel ? options.tipLabel : 'Toggle full-screen';n this.setClassName(this.button, isFullScreen());n this.button.setAttribute('type', 'button');n this.button.title = tipLabel;n this.button.appendChild(this.labelNode);n this.button.addEventListener(EventType.CLICK, this.handleClick.bind(_this), false);n var cssClasses = this.cssClassName + ' ' + CLASS_UNSELECTABLE +n ' ' + CLASS_CONTROL + ' ' +n (!isFullScreenSupported() ? CLASS_UNSUPPORTED : '');n var element = _this.element;n element.className = cssClasses;n element.appendChild(this.button);n /**n * @privaten * @type {boolean}n */n this.keys = options.keys !== undefined ? options.keys : false;n /**n * @privaten * @type {HTMLElement|string|undefined}n */n this.source = options.source;n return _this;n }n /**n * @param {MouseEvent} event The event to handlen * @privaten */n FullScreen.prototype.handleClick_ = function (event) {n event.preventDefault();n this.handleFullScreen_();n };n /**n * @privaten */n FullScreen.prototype.handleFullScreen_ = function () {n if (!isFullScreenSupported()) {n return;n }n var map = this.getMap();n if (!map) {n return;n }n if (isFullScreen()) {n exitFullScreen();n }n else {n var element = void 0;n if (this.source_) {n element = typeof this.source_ === 'string' ?n document.getElementById(this.source_) :n this.source_;n }n else {n element = map.getTargetElement();n }n if (this.keys_) {n requestFullScreenWithKeys(element);n }n else {n requestFullScreen(element);n }n }n };n /**n * @privaten */n FullScreen.prototype.handleFullScreenChange_ = function () {n var map = this.getMap();n if (isFullScreen()) {n this.setClassName_(this.button_, true);n replaceNode(this.labelActiveNode_, this.labelNode_);n }n else {n this.setClassName_(this.button_, false);n replaceNode(this.labelNode_, this.labelActiveNode_);n }n if (map) {n map.updateSize();n }n };n /**n * @param {HTMLElement} element Target elementn * @param {boolean} fullscreen True if fullscreen class name should be activen * @privaten */n FullScreen.prototype.setClassName_ = function (element, fullscreen) {n var activeClassName = this.cssClassName_ + '-true';n var inactiveClassName = this.cssClassName_ + '-false';n var nextClassName = fullscreen ? activeClassName : inactiveClassName;n element.classList.remove(activeClassName);n element.classList.remove(inactiveClassName);n element.classList.add(nextClassName);n };n /**n * @inheritDocn * @apin */n FullScreen.prototype.setMap = function (map) {n _super.prototype.setMap.call(this, map);n if (map) {n for (var i = 0, ii = events.length; i < ii; ++i) {n this.listenerKeys.push(listen(document, events, this.handleFullScreenChange_, this));n }n }n };n return FullScreen;n}(Control));n/**n * @return {boolean} Fullscreen is supported by the current platform.n */nfunction isFullScreenSupported() {n var body = document.body;n return !!(body.webkitRequestFullscreen ||n (body.msRequestFullscreen && document.msFullscreenEnabled) ||n (body.requestFullscreen && document.fullscreenEnabled));n}n/**n * @return {boolean} Element is currently in fullscreen.n */nfunction isFullScreen() {n return !!(document.webkitIsFullScreen || document.msFullscreenElement || document.fullscreenElement);n}n/**n * Request to fullscreen an element.n * @param {HTMLElement} element Element to request fullscreenn */nfunction requestFullScreen(element) {n if (element.requestFullscreen) {n element.requestFullscreen();n }n else if (element.msRequestFullscreen) {n element.msRequestFullscreen();n }n else if (element.webkitRequestFullscreen) {n element.webkitRequestFullscreen();n }n}n/**n * Request to fullscreen an element with keyboard input.n * @param {HTMLElement} element Element to request fullscreenn */nfunction requestFullScreenWithKeys(element) {n if (element.webkitRequestFullscreen) {n element.webkitRequestFullscreen();n }n else {n requestFullScreen(element);n }n}n/**n * Exit fullscreen.n */nfunction exitFullScreen() {n if (document.exitFullscreen) {n document.exitFullscreen();n }n else if (document.msExitFullscreen) {n document.msExitFullscreen();n }n else if (document.webkitExitFullscreen) {n document.webkitExitFullscreen();n }n}nexport default FullScreen;n//# sourceMappingURL=FullScreen.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/control/MousePositionn */nimport { listen } from '../events.js';nimport EventType from '../pointer/EventType.js';nimport { getChangeEventType } from '../Object.js';nimport Control from './Control.js';nimport { getTransformFromProjections, identityTransform, get as getProjection, getUserProjection } from '../proj.js';nimport '@openlayers/pepjs';n/**n * @type {string}n */nvar PROJECTION = 'projection';n/**n * @type {string}n */nvar COORDINATE_FORMAT = 'coordinateFormat';n/**n * @typedef {Object} Optionsn * @property {string} [className='ol-mouse-position'] CSS class name.n * @property {import("../coordinate.js").CoordinateFormat} [coordinateFormat] Coordinate format.n * @property {import("../proj.js").ProjectionLike} [projection] Projection. Default is the view projection.n * @property {function(import("../MapEvent.js").default)} [render] Function called when then * control should be re-rendered. This is called in a `requestAnimationFrame`n * callback.n * @property {HTMLElement|string} [target] Specify a target if you want then * control to be rendered outside of the map's viewport.n * @property {string} [undefinedHTML='&#160;'] Markup to show when coordinates are notn * available (e.g. when the pointer leaves the map viewport). By default, the last positionn * will be replaced with `'&#160;'` (`&nbsp;`) when the pointer leaves the viewport. Ton * retain the last rendered position, set this option to something falsey (like an emptyn * string `''`).n */n/**n * @classdescn * A control to show the 2D coordinates of the mouse cursor. By default, thesen * are in the view projection, but can be in any supported projection.n * By default the control is shown in the top right corner of the map, but thisn * can be changed by using the css selector `.ol-mouse-position`.n *n * On touch devices, which usually do not have a mouse cursor, the coordinatesn * of the currently touched position are shown.n *n * @apin */nvar MousePosition = /** @class */ (function (_super) {n __extends(MousePosition, _super);n /**n * @param {Options=} opt_options Mouse position options.n */n function MousePosition(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n var element = document.createElement('div');n element.className = options.className !== undefined ? options.className : 'ol-mouse-position';n _this = _super.call(this, {n element: element,n render: options.render || render,n target: options.targetn }) || this;n _this.addEventListener(getChangeEventType(PROJECTION), this.handleProjectionChanged);n if (options.coordinateFormat) {n _this.setCoordinateFormat(options.coordinateFormat);n }n if (options.projection) {n _this.setProjection(options.projection);n }n /**n * @privaten * @type {string}n */n this.undefinedHTML = options.undefinedHTML !== undefined ? options.undefinedHTML : '&#160;';n /**n * @privaten * @type {boolean}n */n this.renderOnMouseOut = !!this.undefinedHTML;n /**n * @privaten * @type {string}n */n this.renderedHTML = element.innerHTML;n /**n * @privaten * @type {?import("../proj/Projection.js").default}n */n this.mapProjection = null;n /**n * @privaten * @type {?import("../proj.js").TransformFunction}n */n this.transform = null;n return _this;n }n /**n * @privaten */n MousePosition.prototype.handleProjectionChanged_ = function () {n this.transform_ = null;n };n /**n * Return the coordinate format type used to render the current position orn * undefined.n * @return {import("../coordinate.js").CoordinateFormat|undefined} The format to render the currentn * position in.n * @observablen * @apin */n MousePosition.prototype.getCoordinateFormat = function () {n return (n /** @type {import("../coordinate.js").CoordinateFormat|undefined} */ (this.get(COORDINATE_FORMAT)));n };n /**n * Return the projection that is used to report the mouse position.n * @return {import("../proj/Projection.js").default|undefined} The projection to report mousen * position in.n * @observablen * @apin */n MousePosition.prototype.getProjection = function () {n return (n /** @type {import("../proj/Projection.js").default|undefined} */ (this.get(PROJECTION)));n };n /**n * @param {Event} event Browser event.n * @protectedn */n MousePosition.prototype.handleMouseMove = function (event) {n var map = this.getMap();n this.updateHTML_(map.getEventPixel(event));n };n /**n * @param {Event} event Browser event.n * @protectedn */n MousePosition.prototype.handleMouseOut = function (event) {n this.updateHTML_(null);n };n /**n * @inheritDocn * @apin */n MousePosition.prototype.setMap = function (map) {n _super.prototype.setMap.call(this, map);n if (map) {n var viewport = map.getViewport();n this.listenerKeys.push(listen(viewport, EventType.POINTERMOVE, this.handleMouseMove, this));n if (this.renderOnMouseOut_) {n this.listenerKeys.push(listen(viewport, EventType.POINTEROUT, this.handleMouseOut, this));n }n }n };n /**n * Set the coordinate format type used to render the current position.n * @param {import("../coordinate.js").CoordinateFormat} format The format to render the currentn * position in.n * @observablen * @apin */n MousePosition.prototype.setCoordinateFormat = function (format) {n this.set(COORDINATE_FORMAT, format);n };n /**n * Set the projection that is used to report the mouse position.n * @param {import("../proj.js").ProjectionLike} projection The projection to report mousen * position in.n * @observablen * @apin */n MousePosition.prototype.setProjection = function (projection) {n this.set(PROJECTION, getProjection(projection));n };n /**n * @param {?import("../pixel.js").Pixel} pixel Pixel.n * @privaten */n MousePosition.prototype.updateHTML_ = function (pixel) {n var html = this.undefinedHTML_;n if (pixel && this.mapProjection_) {n if (!this.transform_) {n var projection = this.getProjection();n if (projection) {n this.transform_ = getTransformFromProjections(this.mapProjection_, projection);n }n else {n this.transform_ = identityTransform;n }n }n var map = this.getMap();n var coordinate = map.getCoordinateFromPixelInternal(pixel);n if (coordinate) {n var userProjection = getUserProjection();n if (userProjection) {n this.transform_ = getTransformFromProjections(this.mapProjection_, userProjection);n }n this.transform_(coordinate, coordinate);n var coordinateFormat = this.getCoordinateFormat();n if (coordinateFormat) {n html = coordinateFormat(coordinate);n }n else {n html = coordinate.toString();n }n }n }n if (!this.renderedHTML_ || html !== this.renderedHTML_) {n this.element.innerHTML = html;n this.renderedHTML_ = html;n }n };n return MousePosition;n}(Control));n/**n * Update the projection. Rendering of the coordinates is done inn * `handleMouseMove` and `handleMouseUp`.n * @param {import("../MapEvent.js").default} mapEvent Map event.n * @this {MousePosition}n * @apin */nexport function render(mapEvent) {n var frameState = mapEvent.frameState;n if (!frameState) {n this.mapProjection_ = null;n }n else {n if (this.mapProjection_ != frameState.viewState.projection) {n this.mapProjection_ = frameState.viewState.projection;n this.transform_ = null;n }n }n}nexport default MousePosition;n//# sourceMappingURL=MousePosition.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/control/OverviewMapn */nimport PluggableMap from '../PluggableMap.js';nimport CompositeMapRenderer from '../renderer/Composite.js';nimport MapEventType from '../MapEventType.js';nimport MapProperty from '../MapProperty.js';nimport { getChangeEventType } from '../Object.js';nimport ObjectEventType from '../ObjectEventType.js';nimport Overlay from '../Overlay.js';nimport OverlayPositioning from '../OverlayPositioning.js';nimport ViewProperty from '../ViewProperty.js';nimport Control from './Control.js';nimport { fromExtent as polygonFromExtent } from '../geom/Polygon.js';nimport { CLASS_CONTROL, CLASS_UNSELECTABLE, CLASS_COLLAPSED } from '../css.js';nimport { replaceNode } from '../dom.js';nimport { listen, listenOnce } from '../events.js';nimport EventType from '../events/EventType.js';nimport { containsExtent, equals as equalsExtent, getBottomRight, getTopLeft, scaleFromCenter } from '../extent.js';n/**n * Maximum width and/or height extent ratio that determines when the overviewn * map should be zoomed out.n * @type {number}n */nvar MAX_RATIO = 0.75;n/**n * Minimum width and/or height extent ratio that determines when the overviewn * map should be zoomed in.n * @type {number}n */nvar MIN_RATIO = 0.1;nvar ControlledMap = /** @class */ (function (_super) {n __extends(ControlledMap, _super);n function ControlledMap() {n return _super !== null && _super.apply(this, arguments) || this;n }n ControlledMap.prototype.createRenderer = function () {n return new CompositeMapRenderer(this);n };n return ControlledMap;n}(PluggableMap));n/**n * @typedef {Object} Optionsn * @property {string} [className='ol-overviewmap'] CSS class name.n * @property {boolean} [collapsed=true] Whether the control should start collapsed or not (expanded).n * @property {string|HTMLElement} [collapseLabel='«'] Text label to use for then * expanded overviewmap button. Instead of text, also an element (e.g. a `span` element) can be used.n * @property {boolean} [collapsible=true] Whether the control can be collapsed or not.n * @property {string|HTMLElement} [label='»'] Text label to use for the collapsedn * overviewmap button. Instead of text, also an element (e.g. a `span` element) can be used.n * @property {Array<import("../layer/Layer.js").default>|import("../Collection.js").default<import("../layer/Layer.js").default>} [layers]n * Layers for the overview map.n * @property {function(import("../MapEvent.js").default)} [render] Function called when the controln * should be re-rendered. This is called in a `requestAnimationFrame` callback.n * @property {boolean} [rotateWithView=false] Whether the control view should rotate with the main map view.n * @property {HTMLElement|string} [target] Specify a target if you want the controln * to be rendered outside of the map's viewport.n * @property {string} [tipLabel='Overview map'] Text label to use for the button tip.n * @property {import("../View.js").default} [view] Custom view for the overview map. If not provided,n * a default view with an EPSG:3857 projection will be used.n */n/**n * Create a new control with a map acting as an overview map for anothern * defined map.n *n * @apin */nvar OverviewMap = /** @class */ (function (_super) {n __extends(OverviewMap, _super);n /**n * @param {Options=} opt_options OverviewMap options.n */n function OverviewMap(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n _this = _super.call(this, {n element: document.createElement('div'),n render: options.render || render,n target: options.targetn }) || this;n /**n * @privaten */n this.boundHandleRotationChanged = this.handleRotationChanged.bind(_this);n /**n * @type {boolean}n * @privaten */n this.collapsed = options.collapsed !== undefined ? options.collapsed : true;n /**n * @privaten * @type {boolean}n */n this.collapsible = options.collapsible !== undefined ?n options.collapsible : true;n if (!this.collapsible) {n this.collapsed = false;n }n /**n * @privaten * @type {boolean}n */n this.rotateWithView = options.rotateWithView !== undefined ?n options.rotateWithView : false;n /**n * @privaten * @type {import("../extent.js").Extent|undefined}n */n this.viewExtent = undefined;n var className = options.className !== undefined ? options.className : 'ol-overviewmap';n var tipLabel = options.tipLabel !== undefined ? options.tipLabel : 'Overview map';n var collapseLabel = options.collapseLabel !== undefined ? options.collapseLabel : '\u00AB';n if (typeof collapseLabel === 'string') {n /**n * @privaten * @type {HTMLElement}n */n this.collapseLabel = document.createElement('span');n this.collapseLabel.textContent = collapseLabel;n }n else {n this.collapseLabel = collapseLabel;n }n var label = options.label !== undefined ? options.label : '\u00BB';n if (typeof label === 'string') {n /**n * @privaten * @type {HTMLElement}n */n this.label = document.createElement('span');n this.label.textContent = label;n }n else {n this.label = label;n }n var activeLabel = (this.collapsible && !this.collapsed) ?n this.collapseLabel : this.label;n var button = document.createElement('button');n button.setAttribute('type', 'button');n button.title = tipLabel;n button.appendChild(activeLabel);n button.addEventListener(EventType.CLICK, this.handleClick.bind(_this), false);n /**n * @type {HTMLElement}n * @privaten */n this.ovmapDiv = document.createElement('div');n this.ovmapDiv.className = 'ol-overviewmap-map';n /**n * @type {ControlledMap}n * @privaten */n this.ovmap = new ControlledMap({n view: options.viewn });n var ovmap = this.ovmap;n if (options.layers) {n options.layers.forEach(function (layer) {n ovmap.addLayer(layer);n });n }n var box = document.createElement('div');n box.className = 'ol-overviewmap-box';n box.style.boxSizing = 'border-box';n /**n * @type {import("../Overlay.js").default}n * @privaten */n this.boxOverlay = new Overlay({n position: [0, 0],n positioning: OverlayPositioning.CENTER_CENTER,n element: boxn });n this.ovmap.addOverlay(this.boxOverlay);n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL +n (this.collapsed && this.collapsible ? ' ' + CLASS_COLLAPSED : '') +n (this.collapsible ? '' : ' ol-uncollapsible');n var element = _this.element;n element.className = cssClasses;n element.appendChild(this.ovmapDiv);n element.appendChild(button);n /* Interactive map */n var scope = _this;n var overlay = this.boxOverlay;n var overlayBox = this.boxOverlay.getElement();n /* Functions definition */n var computeDesiredMousePosition = function (mousePosition) {n return {n clientX: mousePosition.clientX,n clientY: mousePosition.clientYn };n };n var move = function (event) {n var position = /** @type {?} */ (computeDesiredMousePosition(event));n var coordinates = ovmap.getEventCoordinateInternal(/** @type {Event} */ (position));n overlay.setPosition(coordinates);n };n var endMoving = function (event) {n var coordinates = ovmap.getEventCoordinateInternal(event);n scope.getMap().getView().setCenterInternal(coordinates);n window.removeEventListener('mousemove', move);n window.removeEventListener('mouseup', endMoving);n };n /* Binding */n overlayBox.addEventListener('mousedown', function () {n window.addEventListener('mousemove', move);n window.addEventListener('mouseup', endMoving);n });n return _this;n }n /**n * @inheritDocn * @apin */n OverviewMap.prototype.setMap = function (map) {n var oldMap = this.getMap();n if (map === oldMap) {n return;n }n if (oldMap) {n var oldView = oldMap.getView();n if (oldView) {n this.unbindView_(oldView);n }n this.ovmap_.setTarget(null);n }n _super.prototype.setMap.call(this, map);n if (map) {n this.ovmap_.setTarget(this.ovmapDiv_);n this.listenerKeys.push(listen(map, ObjectEventType.PROPERTYCHANGE, this.handleMapPropertyChange_, this));n var view = map.getView();n if (view) {n this.bindView_(view);n if (view.isDef()) {n this.ovmap_.updateSize();n this.resetExtent_();n }n }n }n };n /**n * Handle map property changes. This only deals with changes to the map's view.n * @param {import("../Object.js").ObjectEvent} event The propertychange event.n * @privaten */n OverviewMap.prototype.handleMapPropertyChange_ = function (event) {n if (event.key === MapProperty.VIEW) {n var oldView = /** @type {import("../View.js").default} */ (event.oldValue);n if (oldView) {n this.unbindView_(oldView);n }n var newView = this.getMap().getView();n this.bindView_(newView);n }n };n /**n * Register listeners for view property changes.n * @param {import("../View.js").default} view The view.n * @privaten */n OverviewMap.prototype.bindView_ = function (view) {n view.addEventListener(getChangeEventType(ViewProperty.ROTATION), this.boundHandleRotationChanged_);n };n /**n * Unregister listeners for view property changes.n * @param {import("../View.js").default} view The view.n * @privaten */n OverviewMap.prototype.unbindView_ = function (view) {n view.removeEventListener(getChangeEventType(ViewProperty.ROTATION), this.boundHandleRotationChanged_);n };n /**n * Handle rotation changes to the main map.n * @privaten */n OverviewMap.prototype.handleRotationChanged_ = function () {n if (this.rotateWithView_) {n this.ovmap_.getView().setRotation(this.getMap().getView().getRotation());n }n };n /**n * Reset the overview map extent if the box size (width orn * height) is less than the size of the overview map size times minRation * or is greater than the size of the overview size times maxRatio.n *n * If the map extent was not reset, the box size can fits in the definedn * ratio sizes. This method then checks if is contained inside the overviewn * map current extent. If not, recenter the overview map to the currentn * main map center location.n * @privaten */n OverviewMap.prototype.validateExtent_ = function () {n var map = this.getMap();n var ovmap = this.ovmap_;n if (!map.isRendered() || !ovmap.isRendered()) {n return;n }n var mapSize = /** @type {import("../size.js").Size} */ (map.getSize());n var view = map.getView();n var extent = view.calculateExtentInternal(mapSize);n if (this.viewExtent_ && equalsExtent(extent, this.viewExtent_)) {n // repeats of the same extent may indicate constraint conflicts leading to an endless cyclen return;n }n this.viewExtent_ = extent;n var ovmapSize = /** @type {import("../size.js").Size} */ (ovmap.getSize());n var ovview = ovmap.getView();n var ovextent = ovview.calculateExtentInternal(ovmapSize);n var topLeftPixel = ovmap.getPixelFromCoordinateInternal(getTopLeft(extent));n var bottomRightPixel = ovmap.getPixelFromCoordinateInternal(getBottomRight(extent));n var boxWidth = Math.abs(topLeftPixel - bottomRightPixel);n var boxHeight = Math.abs(topLeftPixel - bottomRightPixel);n var ovmapWidth = ovmapSize;n var ovmapHeight = ovmapSize;n if (boxWidth < ovmapWidth * MIN_RATIO ||n boxHeight < ovmapHeight * MIN_RATIO ||n boxWidth > ovmapWidth * MAX_RATIO ||n boxHeight > ovmapHeight * MAX_RATIO) {n this.resetExtent_();n }n else if (!containsExtent(ovextent, extent)) {n this.recenter_();n }n };n /**n * Reset the overview map extent to half calculated min and max ratio timesn * the extent of the main map.n * @privaten */n OverviewMap.prototype.resetExtent_ = function () {n if (MAX_RATIO === 0 || MIN_RATIO === 0) {n return;n }n var map = this.getMap();n var ovmap = this.ovmap_;n var mapSize = /** @type {import("../size.js").Size} */ (map.getSize());n var view = map.getView();n var extent = view.calculateExtentInternal(mapSize);n var ovview = ovmap.getView();n // get how many times the current map overview could hold differentn // box sizes using the min and max ratio, pick the step in the middle usedn // to calculate the extent from the main map to set it to the overview map,n var steps = Math.log(MAX_RATIO / MIN_RATIO) / Math.LN2;n var ratio = 1 / (Math.pow(2, steps / 2) * MIN_RATIO);n scaleFromCenter(extent, ratio);n ovview.fitInternal(polygonFromExtent(extent));n };n /**n * Set the center of the overview map to the map center without changing itsn * resolution.n * @privaten */n OverviewMap.prototype.recenter_ = function () {n var map = this.getMap();n var ovmap = this.ovmap_;n var view = map.getView();n var ovview = ovmap.getView();n ovview.setCenterInternal(view.getCenterInternal());n };n /**n * Update the box using the main map extentn * @privaten */n OverviewMap.prototype.updateBox_ = function () {n var map = this.getMap();n var ovmap = this.ovmap_;n if (!map.isRendered() || !ovmap.isRendered()) {n return;n }n var mapSize = /** @type {import("../size.js").Size} */ (map.getSize());n var view = map.getView();n var ovview = ovmap.getView();n var rotation = this.rotateWithView_ ? 0 : -view.getRotation();n var overlay = this.boxOverlay_;n var box = this.boxOverlay_.getElement();n var center = view.getCenterInternal();n var resolution = view.getResolution();n var ovresolution = ovview.getResolution();n var width = mapSize * resolution / ovresolution;n var height = mapSize * resolution / ovresolution;n // set position using center coordinatesn overlay.setPosition(center);n // set box size calculated from map extent size and overview map resolutionn if (box) {n box.style.width = width + 'px';n box.style.height = height + 'px';n var transform = 'rotate(' + rotation + 'rad)';n box.style.transform = transform;n }n };n /**n * @param {MouseEvent} event The event to handlen * @privaten */n OverviewMap.prototype.handleClick_ = function (event) {n event.preventDefault();n this.handleToggle_();n };n /**n * @privaten */n OverviewMap.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 // manage overview map if it had not been rendered before and controln // is expandedn var ovmap = this.ovmap_;n if (!this.collapsed_) {n if (ovmap.isRendered()) {n this.viewExtent_ = undefined;n ovmap.render();n return;n }n ovmap.updateSize();n this.resetExtent_();n listenOnce(ovmap, MapEventType.POSTRENDER, function (event) {n this.updateBox_();n }, this);n }n };n /**n * Return `true` if the overview map is collapsible, `false` otherwise.n * @return {boolean} True if the widget is collapsible.n * @apin */n OverviewMap.prototype.getCollapsible = function () {n return this.collapsible_;n };n /**n * Set whether the overview map should be collapsible.n * @param {boolean} collapsible True if the widget is collapsible.n * @apin */n OverviewMap.prototype.setCollapsible = function (collapsible) {n if (this.collapsible_ === collapsible) {n return;n }n this.collapsible_ = collapsible;n this.element.classList.toggle('ol-uncollapsible');n if (!collapsible && this.collapsed_) {n this.handleToggle_();n }n };n /**n * Collapse or expand the overview map according to the passed parameter. Willn * not do anything if the overview map isn't collapsible or if the currentn * collapsed state is already the one requested.n * @param {boolean} collapsed True if the widget is collapsed.n * @apin */n OverviewMap.prototype.setCollapsed = function (collapsed) {n if (!this.collapsible_ || this.collapsed_ === collapsed) {n return;n }n this.handleToggle_();n };n /**n * Determine if the overview map is collapsed.n * @return {boolean} The overview map is collapsed.n * @apin */n OverviewMap.prototype.getCollapsed = function () {n return this.collapsed_;n };n /**n * Return `true` if the overview map view can rotate, `false` otherwise.n * @return {boolean} True if the control view can rotate.n * @apin */n OverviewMap.prototype.getRotateWithView = function () {n return this.rotateWithView_;n };n /**n * Set whether the overview map view should rotate with the main map view.n * @param {boolean} rotateWithView True if the control view should rotate.n * @apin */n OverviewMap.prototype.setRotateWithView = function (rotateWithView) {n if (this.rotateWithView_ === rotateWithView) {n return;n }n this.rotateWithView_ = rotateWithView;n if (this.getMap().getView().getRotation() !== 0) {n if (this.rotateWithView_) {n this.handleRotationChanged_();n }n else {n this.ovmap_.getView().setRotation(0);n }n this.viewExtent_ = undefined;n this.validateExtent_();n this.updateBox_();n }n };n /**n * Return the overview map.n * @return {import("../PluggableMap.js").default} Overview map.n * @apin */n OverviewMap.prototype.getOverviewMap = function () {n return this.ovmap_;n };n return OverviewMap;n}(Control));n/**n * Update the overview map element.n * @param {import("../MapEvent.js").default} mapEvent Map event.n * @this {OverviewMap}n * @apin */nexport function render(mapEvent) {n this.validateExtent_();n this.updateBox_();n}nexport default OverviewMap;n//# sourceMappingURL=OverviewMap.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/control/ScaleLinen */nimport { getChangeEventType } from '../Object.js';nimport { assert } from '../asserts.js';nimport Control from './Control.js';nimport { CLASS_UNSELECTABLE } from '../css.js';nimport { getPointResolution, METERS_PER_UNIT } from '../proj.js';nimport ProjUnits from '../proj/Units.js';n/**n * @type {string}n */nvar UNITS_PROP = 'units';n/**n * Units for the scale line. Supported values are `'degrees'`, `'imperial'`,n * `'nautical'`, `'metric'`, `'us'`.n * @enum {string}n */nexport var Units = {n DEGREES: 'degrees',n IMPERIAL: 'imperial',n NAUTICAL: 'nautical',n METRIC: 'metric',n US: 'us'n};n/**n * @constn * @type {Array<number>}n */nvar LEADING_DIGITS = [1, 2, 5];n/**n * @typedef {Object} Optionsn * @property {string} [className='ol-scale-line'] CSS Class name.n * @property {number} [minWidth=64] Minimum width in pixels.n * @property {function(import("../MapEvent.js").default)} [render] Function called when the controln * should be re-rendered. This is called in a `requestAnimationFrame` callback.n * @property {HTMLElement|string} [target] Specify a target if you want the controln * to be rendered outside of the map's viewport.n * @property {Units|string} [units='metric'] Units.n * @property {boolean} [bar=false] Render scalebars instead of a line.n * @property {number} [steps=4] Number of steps the scalebar should use. Use even numbersn * for best results. Only applies when `bar` is `true`.n * @property {boolean} [text=false] Render the text scale above of the scalebar. Only appliesn * when `bar` is `true`.n */n/**n * @classdescn * A control displaying rough y-axis distances, calculated for the center of then * viewport. For conformal projections (e.g. EPSG:3857, the default viewn * projection in OpenLayers), the scale is valid for all directions.n * No scale line will be shown when the y-axis distance of a pixel at then * viewport center cannot be calculated in the view projection.n * By default the scale line will show in the bottom left portion of the map,n * but this can be changed by using the css selector `.ol-scale-line`.n * When specifying `bar` as `true`, a scalebar will be rendered insteadn * of a scaleline.n *n * @apin */nvar ScaleLine = /** @class */ (function (_super) {n __extends(ScaleLine, _super);n /**n * @param {Options=} opt_options Scale line options.n */n function ScaleLine(opt_options) {n var _this = this;n var options = opt_options ? opt_options : {};n var className = options.className !== undefined ? options.className :n options.bar ? 'ol-scale-bar' : 'ol-scale-line';n _this = _super.call(this, {n element: document.createElement('div'),n render: options.render || render,n target: options.targetn }) || this;n /**n * @privaten * @type {HTMLElement}n */n this.innerElement = document.createElement('div');n this.innerElement.className = className + '-inner';n _this.element.className = className + ' ' + CLASS_UNSELECTABLE;n _this.element.appendChild(this.innerElement);n /**n * @privaten * @type {?import("../View.js").State}n */n this.viewState = null;n /**n * @privaten * @type {number}n */n this.minWidth = options.minWidth !== undefined ? options.minWidth : 64;n /**n * @privaten * @type {boolean}n */n this.renderedVisible = false;n /**n * @privaten * @type {number|undefined}n */n this.renderedWidth = undefined;n /**n * @privaten * @type {string}n */n this.renderedHTML = '';n _this.addEventListener(getChangeEventType(UNITS_PROP), this.handleUnitsChanged);n _this.setUnits(options.units || Units.METRIC);n /**n * @privaten * @type {boolean}n */n this.scaleBar = options.bar || false;n /**n * @privaten * @type {number}n */n this.scaleBarSteps = options.steps || 4;n /**n * @privaten * @type {boolean}n */n this.scaleBarText = options.text || false;n return _this;n }n /**n * Return the units to use in the scale line.n * @return {Units} The unitsn * to use in the scale line.n * @observablen * @apin */n ScaleLine.prototype.getUnits = function () {n return this.get(UNITS_PROP);n };n /**n * @privaten */n ScaleLine.prototype.handleUnitsChanged_ = function () {n this.updateElement_();n };n /**n * Set the units to use in the scale line.n * @param {Units} units The units to use in the scale line.n * @observablen * @apin */n ScaleLine.prototype.setUnits = function (units) {n this.set(UNITS_PROP, units);n };n /**n * @privaten */n ScaleLine.prototype.updateElement_ = function () {n var viewState = this.viewState_;n if (!viewState) {n if (this.renderedVisible_) {n this.element.style.display = 'none';n this.renderedVisible_ = false;n }n return;n }n var center = viewState.center;n var projection = viewState.projection;n var units = this.getUnits();n var pointResolutionUnits = units == Units.DEGREES ?n ProjUnits.DEGREES :n ProjUnits.METERS;n var pointResolution = getPointResolution(projection, viewState.resolution, center, pointResolutionUnits);n var nominalCount = this.minWidth_ * pointResolution;n var suffix = '';n if (units == Units.DEGREES) {n var metersPerDegree = METERS_PER_UNIT;n nominalCount *= metersPerDegree;n if (nominalCount < metersPerDegree / 60) {n suffix = '\u2033'; // secondsn pointResolution *= 3600;n }n else if (nominalCount < metersPerDegree) {n suffix = '\u2032'; // minutesn pointResolution *= 60;n }n else {n suffix = '\u00b0'; // degreesn }n }n else if (units == Units.IMPERIAL) {n if (nominalCount < 0.9144) {n suffix = 'in';n pointResolution /= 0.0254;n }n else if (nominalCount < 1609.344) {n suffix = 'ft';n pointResolution /= 0.3048;n }n else {n suffix = 'mi';n pointResolution /= 1609.344;n }n }n else if (units == Units.NAUTICAL) {n pointResolution /= 1852;n suffix = 'nm';n }n else if (units == Units.METRIC) {n if (nominalCount < 0.001) {n suffix = 'μm';n pointResolution *= 1000000;n }n else if (nominalCount < 1) {n suffix = 'mm';n pointResolution *= 1000;n }n else if (nominalCount < 1000) {n suffix = 'm';n }n else {n suffix = 'km';n pointResolution /= 1000;n }n }n else if (units == Units.US) {n if (nominalCount < 0.9144) {n suffix = 'in';n pointResolution *= 39.37;n }n else if (nominalCount < 1609.344) {n suffix = 'ft';n pointResolution /= 0.30480061;n }n else {n suffix = 'mi';n pointResolution /= 1609.3472;n }n }n else {n assert(false, 33); // Invalid unitsn }n var i = 3 * Math.floor(Math.log(this.minWidth_ * pointResolution) / Math.log(10));n var count, width, decimalCount;n while (true) {n decimalCount = Math.floor(i / 3);n var decimal = Math.pow(10, decimalCount);n count = LEADING_DIGITS[((i % 3) + 3) % 3] * decimal;n width = Math.round(count / pointResolution);n if (isNaN(width)) {n this.element.style.display = 'none';n this.renderedVisible_ = false;n return;n }n else if (width >= this.minWidth_) {n break;n }n ++i;n }n var html;n if (this.scaleBar_) {n html = this.createScaleBar(width, count, suffix);n }n else {n html = count.toFixed(decimalCount < 0 ? -decimalCount : 0) + ' ' + suffix;n }n if (this.renderedHTML_ != html) {n this.innerElement_.innerHTML = html;n this.renderedHTML_ = html;n }n if (this.renderedWidth_ != width) {n this.innerElement_.style.width = width + 'px';n this.renderedWidth_ = width;n }n if (!this.renderedVisible_) {n this.element.style.display = '';n this.renderedVisible_ = true;n }n };n /**n * @privaten * @param {number} width The current width of the scalebar.n * @param {number} scale The current scale.n * @param {string} suffix The suffix to append to the scale text.n * @returns {string} The stringified HTML of the scalebar.n */n ScaleLine.prototype.createScaleBar = function (width, scale, suffix) {n var mapScale = '1 : ' + Math.round(this.getScaleForResolution()).toLocaleString();n var scaleSteps = [];n var stepWidth = width / this.scaleBarSteps_;n var backgroundColor = '#ffffff';n for (var i = 0; i < this.scaleBarSteps_; i++) {n if (i === 0) {n // create the first marker at position 0n scaleSteps.push(this.createMarker('absolute', i));n }n scaleSteps.push('<div>' +n '<div ' +n 'class="ol-scale-singlebar" ' +n 'style=' +n '"width: ' + stepWidth + 'px;' +n 'background-color: ' + backgroundColor + ';"' +n '>' +n '</div>' +n this.createMarker('relative', i) +n /*render text every second step, except when only 2 steps */n (i % 2 === 0 || this.scaleBarSteps_ === 2 ?n this.createStepText(i, width, false, scale, suffix) :n '') +n '</div>');n if (i === this.scaleBarSteps_ - 1) {n { /*render text at the end */ }n scaleSteps.push(this.createStepText(i + 1, width, true, scale, suffix));n }n // switch colors of steps between black and whiten if (backgroundColor === '#ffffff') {n backgroundColor = '#000000';n }n else {n backgroundColor = '#ffffff';n }n }n var scaleBarText;n if (this.scaleBarText_) {n scaleBarText = '<div ' +n 'class="ol-scale-text" ' +n 'style="width: ' + width + 'px;">' +n mapScale +n '</div>';n }n else {n scaleBarText = '';n }n var container = '<div ' +n 'style="display: flex;">' +n scaleBarText +n scaleSteps.join('') +n '</div>';n return container;n };n /**n * Creates a marker at given positionn * @param {string} position - The position, absolute or relativen * @param {number} i - The iteratorn * @returns {string} The stringified div containing the markern */n ScaleLine.prototype.createMarker = function (position, i) {n var top = position === 'absolute' ? 3 : -10;n return '<div ' +n 'class="ol-scale-step-marker" ' +n 'style="position: ' + position + ';' +n 'top: ' + top + 'px;"' +n '></div>';n };n /**n * Creates the label for a marker marker at given positionn * @param {number} i - The iteratorn * @param {number} width - The width the scalebar will currently usen * @param {boolean} isLast - Flag indicating if we add the last step textn * @param {number} scale - The current scale for the whole scalebarn * @param {string} suffix - The suffix for the scalen * @returns {string} The stringified div containing the step textn */n ScaleLine.prototype.createStepText = function (i, width, isLast, scale, suffix) {n var length = i === 0 ? 0 : Math.round((scale / this.scaleBarSteps_ * i) * 100) / 100;n var lengthString = length + (i === 0 ? '' : ' ' + suffix);n var margin = i === 0 ? -3 : width / this.scaleBarSteps_ * -1;n var minWidth = i === 0 ? 0 : width / this.scaleBarSteps_ * 2;n return '<div ' +n 'class="ol-scale-step-text" ' +n 'style="' +n 'margin-left: ' + margin + 'px;' +n 'text-align: ' + (i === 0 ? 'left' : 'center') + '; ' +n 'min-width: ' + minWidth + 'px;' +n 'left: ' + (isLast ? width + 'px' : 'unset') + ';"' +n '>' +n lengthString +n '</div>';n };n /**n * Returns the appropriate scale for the given resolution and units.n * @return {number} The appropriate scale.n */n ScaleLine.prototype.getScaleForResolution = function () {n var resolution = this.getMap().getView().getResolution();n var dpi = 25.4 / 0.28;n var mpu = this.viewState_.projection.getMetersPerUnit();n var inchesPerMeter = 39.37;n return parseFloat(resolution.toString()) * mpu * inchesPerMeter * dpi;n };n return ScaleLine;n}(Control));n/**n * Update the scale line element.n * @param {import("../MapEvent.js").default} mapEvent Map event.n * @this {ScaleLine}n * @apin */nexport function render(mapEvent) {n var frameState = mapEvent.frameState;n if (!frameState) {n this.viewState_ = null;n }n else {n this.viewState_ = frameState.viewState;n }n this.updateElement_();n}nexport default ScaleLine;n//# sourceMappingURL=ScaleLine.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/control/ZoomSlidern */nimport Control from './Control.js';nimport { CLASS_CONTROL, CLASS_UNSELECTABLE } from '../css.js';nimport { easeOut } from '../easing.js';nimport { listen, unlistenByKey } from '../events.js';nimport { stopPropagation } from '../events/Event.js';nimport EventType from '../events/EventType.js';nimport { clamp } from '../math.js';nimport PointerEventType from '../pointer/EventType.js';nimport '@openlayers/pepjs';n/**n * The enum for available directions.n *n * @enum {number}n */nvar Direction = {n VERTICAL: 0,n HORIZONTAL: 1n};n/**n * @typedef {Object} Optionsn * @property {string} [className='ol-zoomslider'] CSS class name.n * @property {number} [duration=200] Animation duration in milliseconds.n * @property {function(import("../MapEvent.js").default)} [render] Function called when the controln * should be re-rendered. This is called in a `requestAnimationFrame` callback.n */n/**n * @classdescn * A slider type of control for zooming.n *n * Example:n *n * map.addControl(new ZoomSlider());n *n * @apin */nvar ZoomSlider = /** @class */ (function (_super) {n __extends(ZoomSlider, _super);n /**n * @param {Options=} opt_options Zoom slider options.n */n function ZoomSlider(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 || rendern }) || this;n /**n * @type {!Array.<import("../events.js").EventsKey>}n * @privaten */n this.dragListenerKeys = [];n /**n * Will hold the current resolution of the view.n *n * @type {number|undefined}n * @privaten */n this.currentResolution = undefined;n /**n * The direction of the slider. Will be determined from actual display of then * container and defaults to Direction.VERTICAL.n *n * @type {Direction}n * @privaten */n this.direction = Direction.VERTICAL;n /**n * @type {boolean}n * @privaten */n this.dragging;n /**n * @type {number}n * @privaten */n this.heightLimit = 0;n /**n * @type {number}n * @privaten */n this.widthLimit = 0;n /**n * @type {number|undefined}n * @privaten */n this.startX;n /**n * @type {number|undefined}n * @privaten */n this.startY;n /**n * The calculated thumb size (border box plus margins). Set when initSlider_n * is called.n * @type {import("../size.js").Size}n * @privaten */n this.thumbSize = null;n /**n * Whether the slider is initialized.n * @type {boolean}n * @privaten */n this.sliderInitialized = false;n /**n * @type {number}n * @privaten */n this.duration = options.duration !== undefined ? options.duration : 200;n var className = options.className !== undefined ? options.className : 'ol-zoomslider';n var thumbElement = document.createElement('button');n thumbElement.setAttribute('type', 'button');n thumbElement.className = className + '-thumb ' + CLASS_UNSELECTABLE;n var containerElement = _this.element;n containerElement.setAttribute('touch-action', 'none');n containerElement.className = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;n containerElement.appendChild(thumbElement);n containerElement.addEventListener(PointerEventType.POINTERDOWN, this.handleDraggerStart.bind(_this), false);n containerElement.addEventListener(PointerEventType.POINTERMOVE, this.handleDraggerDrag.bind(_this), false);n containerElement.addEventListener(PointerEventType.POINTERUP, this.handleDraggerEnd.bind(_this), false);n containerElement.addEventListener(EventType.CLICK, this.handleContainerClick.bind(_this), false);n thumbElement.addEventListener(EventType.CLICK, stopPropagation, false);n return _this;n }n /**n * @inheritDocn */n ZoomSlider.prototype.setMap = function (map) {n _super.prototype.setMap.call(this, map);n if (map) {n map.render();n }n };n /**n * Initializes the slider element. This will determine and set this controlsn * direction_ and also constrain the dragging of the thumb to always be withinn * the bounds of the container.n *n * @privaten */n ZoomSlider.prototype.initSlider_ = function () {n var container = this.element;n var containerSize = {n width: container.offsetWidth, height: container.offsetHeightn };n var thumb = /** @type {HTMLElement} */ (container.firstElementChild);n var computedStyle = getComputedStyle(thumb);n var thumbWidth = thumb.offsetWidth +n parseFloat(computedStyle) +n parseFloat(computedStyle);n var thumbHeight = thumb.offsetHeight +n parseFloat(computedStyle) +n parseFloat(computedStyle);n this.thumbSize_ = [thumbWidth, thumbHeight];n if (containerSize.width > containerSize.height) {n this.direction_ = Direction.HORIZONTAL;n this.widthLimit_ = containerSize.width - thumbWidth;n }n else {n this.direction_ = Direction.VERTICAL;n this.heightLimit_ = containerSize.height - thumbHeight;n }n this.sliderInitialized_ = true;n };n /**n * @param {PointerEvent} event The browser event to handle.n * @privaten */n ZoomSlider.prototype.handleContainerClick_ = function (event) {n var view = this.getMap().getView();n var relativePosition = this.getRelativePosition_(event.offsetX - this.thumbSize_ / 2, event.offsetY - this.thumbSize_ / 2);n var resolution = this.getResolutionForPosition_(relativePosition);n var zoom = view.getConstrainedZoom(view.getZoomForResolution(resolution));n view.animateInternal({n zoom: zoom,n duration: this.duration_,n easing: easeOutn });n };n /**n * Handle dragger start events.n * @param {PointerEvent} event The drag event.n * @privaten */n ZoomSlider.prototype.handleDraggerStart_ = function (event) {n if (!this.dragging_ && event.target === this.element.firstElementChild) {n var element = /** @type {HTMLElement} */ (this.element.firstElementChild);n this.getMap().getView().beginInteraction();n this.startX_ = event.clientX - parseFloat(element.style.left);n this.startY_ = event.clientY - parseFloat(element.style.top);n this.dragging_ = true;n if (this.dragListenerKeys_.length === 0) {n var drag = this.handleDraggerDrag_;n var end = this.handleDraggerEnd_;n this.dragListenerKeys_.push(listen(document, PointerEventType.POINTERMOVE, drag, this), listen(document, PointerEventType.POINTERUP, end, this));n }n }n };n /**n * Handle dragger drag events.n *n * @param {PointerEvent} event The drag event.n * @privaten */n ZoomSlider.prototype.handleDraggerDrag_ = function (event) {n if (this.dragging_) {n var deltaX = event.clientX - this.startX_;n var deltaY = event.clientY - this.startY_;n var relativePosition = this.getRelativePosition_(deltaX, deltaY);n this.currentResolution_ = this.getResolutionForPosition_(relativePosition);n this.getMap().getView().setResolution(this.currentResolution_);n }n };n /**n * Handle dragger end events.n * @param {PointerEvent} event The drag event.n * @privaten */n ZoomSlider.prototype.handleDraggerEnd_ = function (event) {n if (this.dragging_) {n var view = this.getMap().getView();n view.endInteraction();n this.dragging_ = false;n this.startX_ = undefined;n this.startY_ = undefined;n this.dragListenerKeys_.forEach(unlistenByKey);n this.dragListenerKeys_.length = 0;n }n };n /**n * Positions the thumb inside its container according to the given resolution.n *n * @param {number} res The res.n * @privaten */n ZoomSlider.prototype.setThumbPosition_ = function (res) {n var position = this.getPositionForResolution_(res);n var thumb = /** @type {HTMLElement} */ (this.element.firstElementChild);n if (this.direction_ == Direction.HORIZONTAL) {n thumb.style.left = this.widthLimit_ * position + 'px';n }n else {n thumb.style.top = this.heightLimit_ * position + 'px';n }n };n /**n * Calculates the relative position of the thumb given x and y offsets. Then * relative position scales from 0 to 1. The x and y offsets are assumed to ben * in pixel units within the dragger limits.n *n * @param {number} x Pixel position relative to the left of the slider.n * @param {number} y Pixel position relative to the top of the slider.n * @return {number} The relative position of the thumb.n * @privaten */n ZoomSlider.prototype.getRelativePosition_ = function (x, y) {n var amount;n if (this.direction_ === Direction.HORIZONTAL) {n amount = x / this.widthLimit_;n }n else {n amount = y / this.heightLimit_;n }n return clamp(amount, 0, 1);n };n /**n * Calculates the corresponding resolution of the thumb given its relativen * position (where 0 is the minimum and 1 is the maximum).n *n * @param {number} position The relative position of the thumb.n * @return {number} The corresponding resolution.n * @privaten */n ZoomSlider.prototype.getResolutionForPosition_ = function (position) {n var fn = this.getMap().getView().getResolutionForValueFunction();n return fn(1 - position);n };n /**n * Determines the relative position of the slider for the given resolution. An * relative position of 0 corresponds to the minimum view resolution. An * relative position of 1 corresponds to the maximum view resolution.n *n * @param {number} res The resolution.n * @return {number} The relative position value (between 0 and 1).n * @privaten */n ZoomSlider.prototype.getPositionForResolution_ = function (res) {n var fn = this.getMap().getView().getValueForResolutionFunction();n return clamp(1 - fn(res), 0, 1);n };n return ZoomSlider;n}(Control));n/**n * Update the zoomslider element.n * @param {import("../MapEvent.js").default} mapEvent Map event.n * @this {ZoomSlider}n * @apin */nexport function render(mapEvent) {n if (!mapEvent.frameState) {n return;n }n if (!this.sliderInitialized_) {n this.initSlider_();n }n var res = mapEvent.frameState.viewState.resolution;n this.currentResolution_ = res;n this.setThumbPosition_(res);n}nexport default ZoomSlider;n//# sourceMappingURL=ZoomSlider.js.map”,“var __extends = (this && this.__extends) || (function () {n var extendStatics = function (d, b) {n extendStatics = Object.setPrototypeOf ||n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d = b; };n return extendStatics(d, b);n };n return function (d, b) {n extendStatics(d, b);n function __() { this.constructor = d; }n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());n };n})();n/**n * @module ol/control/ZoomToExtentn */nimport EventType from '../events/EventType.js';nimport { fromExtent as polygonFromExtent } from '../geom/Polygon.js';nimport Control from './Control.js';nimport { CLASS_CONTROL, CLASS_UNSELECTABLE } from '../css.js';n/**n * @typedef {Object} Optionsn * @property {string} [className='ol-zoom-extent'] Class name.n * @property {HTMLElement|string} [target] Specify a target if you want the controln * to be rendered outside of the map's viewport.n * @property {string|HTMLElement} [label='E'] Text label to use for the button.n * Instead of text, also an element (e.g. a `span` element) can be used.n * @property {string} [tipLabel='Fit to extent'] Text label to use for the button tip.n * @property {import("../extent.js").Extent} [extent] The extent to zoom to. If undefined the validityn * extent of the view projection is used.n */n/**n * @classdescn * A button control which, when pressed, changes the map view to a specificn * extent. To style this control use the css selector `.ol-zoom-extent`.n *n * @apin */nvar ZoomToExtent = /** @class */ (function (_super) {n __extends(ZoomToExtent, _super);n /**n * @param {Options=} opt_options Options.n */n function ZoomToExtent(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.targetn }) || this;n /**n * @type {?import("../extent.js").Extent}n * @protectedn */n _this.extent = options.extent ? options.extent : null;n var className = options.className !== undefined ? options.className : 'ol-zoom-extent';n var label = options.label !== undefined ? options.label : 'E';n var tipLabel = options.tipLabel !== undefined ? options.tipLabel : 'Fit to extent';n var button = document.createElement('button');n button.setAttribute('type', 'button');n button.title = tipLabel;n button.appendChild(typeof label === 'string' ? document.createTextNode(label) : 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 return _this;n }n /**n * @param {MouseEvent} event The event to handlen * @privaten */n ZoomToExtent.prototype.handleClick_ = function (event) {n event.preventDefault();n this.handleZoomToExtent();n };n /**n * @protectedn */n ZoomToExtent.prototype.handleZoomToExtent = function () {n var map = this.getMap();n var view = map.getView();n var extent = !this.extent ? view.getProjection().getExtent() : this.extent;n view.fitInternal(polygonFromExtent(extent));n };n return ZoomToExtent;n}(Control));nexport default ZoomToExtent;n//# sourceMappingURL=ZoomToExtent.js.map”,“import $ol$Collection from './ol/Collection';nimport $ol$Feature from './ol/Feature';nimport $ol$Geolocation from './ol/Geolocation';nimport $ol$Kinetic from './ol/Kinetic';nimport $ol$Map from './ol/Map';nimport $ol$Object from './ol/Object';nimport $ol$Observable from './ol/Observable';nimport {unByKey as _ol_Observable$unByKey} from './ol/Observable';nimport $ol$Overlay from './ol/Overlay';nimport $ol$PluggableMap from './ol/PluggableMap';nimport $ol$View from './ol/View';nimport {stableSort as _ol_array$stableSort} from './ol/array';nimport {asString as _ol_color$asString} from './ol/color';nimport {asArray as _ol_color$asArray} from './ol/color';nimport {asColorLike as _ol_colorlike$asColorLike} from './ol/colorlike';nimport {defaults as _ol_control$defaults} from './ol/control';nimport {add as _ol_coordinate$add} from './ol/coordinate';nimport {createStringXY as _ol_coordinate$createStringXY} from './ol/coordinate';nimport {format as _ol_coordinate$format} from './ol/coordinate';nimport {rotate as _ol_coordinate$rotate} from './ol/coordinate';nimport {toStringHDMS as _ol_coordinate$toStringHDMS} from './ol/coordinate';nimport {toStringXY as _ol_coordinate$toStringXY} from './ol/coordinate';nimport {easeIn as _ol_easing$easeIn} from './ol/easing';nimport {easeOut as _ol_easing$easeOut} from './ol/easing';nimport {inAndOut as _ol_easing$inAndOut} from './ol/easing';nimport {linear as _ol_easing$linear} from './ol/easing';nimport {upAndDown as _ol_easing$upAndDown} from './ol/easing';nimport {boundingExtent as _ol_extent$boundingExtent} from './ol/extent';nimport {buffer as _ol_extent$buffer} from './ol/extent';nimport {containsCoordinate as _ol_extent$containsCoordinate} from './ol/extent';nimport {containsExtent as _ol_extent$containsExtent} from './ol/extent';nimport {containsXY as _ol_extent$containsXY} from './ol/extent';nimport {createEmpty as _ol_extent$createEmpty} from './ol/extent';nimport {equals as _ol_extent$equals} from './ol/extent';nimport {extend as _ol_extent$extend} from './ol/extent';nimport {getArea as _ol_extent$getArea} from './ol/extent';nimport {getBottomLeft as _ol_extent$getBottomLeft} from './ol/extent';nimport {getBottomRight as _ol_extent$getBottomRight} from './ol/extent';nimport {getCenter as _ol_extent$getCenter} from './ol/extent';nimport {getHeight as _ol_extent$getHeight} from './ol/extent';nimport {getIntersection as _ol_extent$getIntersection} from './ol/extent';nimport {getSize as _ol_extent$getSize} from './ol/extent';nimport {getTopLeft as _ol_extent$getTopLeft} from './ol/extent';nimport {getTopRight as _ol_extent$getTopRight} from './ol/extent';nimport {getWidth as _ol_extent$getWidth} from './ol/extent';nimport {intersects as _ol_extent$intersects} from './ol/extent';nimport {isEmpty as _ol_extent$isEmpty} from './ol/extent';nimport {applyTransform as _ol_extent$applyTransform} from './ol/extent';nimport {xhr as _ol_featureloader$xhr} from './ol/featureloader';nimport {setWithCredentials as _ol_featureloader$setWithCredentials} from './ol/featureloader';nimport {DEVICE_PIXEL_RATIO as _ol_has$DEVICE_PIXEL_RATIO} from './ol/has';nimport {defaults as _ol_interaction$defaults} from './ol/interaction';nimport {all as _ol_loadingstrategy$all} from './ol/loadingstrategy';nimport {bbox as _ol_loadingstrategy$bbox} from './ol/loadingstrategy';nimport {tile as _ol_loadingstrategy$tile} from './ol/loadingstrategy';nimport {addProjection as _ol_proj$addProjection} from './ol/proj';nimport {get as _ol_proj$get} from './ol/proj';nimport {getPointResolution as _ol_proj$getPointResolution} from './ol/proj';nimport {addEquivalentProjections as _ol_proj$addEquivalentProjections} from './ol/proj';nimport {addCoordinateTransforms as _ol_proj$addCoordinateTransforms} from './ol/proj';nimport {fromLonLat as _ol_proj$fromLonLat} from './ol/proj';nimport {toLonLat as _ol_proj$toLonLat} from './ol/proj';nimport {equivalent as _ol_proj$equivalent} from './ol/proj';nimport {getTransform as _ol_proj$getTransform} from './ol/proj';nimport {transform as _ol_proj$transform} from './ol/proj';nimport {transformExtent as _ol_proj$transformExtent} from './ol/proj';nimport {toContext as _ol_render$toContext} from './ol/render';nimport {getVectorContext as _ol_render$getVectorContext} from './ol/render';nimport {getRenderPixel as _ol_render$getRenderPixel} from './ol/render';nimport {toSize as _ol_size$toSize} from './ol/size';nimport {getDistance as _ol_sphere$getDistance} from './ol/sphere';nimport {getLength as _ol_sphere$getLength} from './ol/sphere';nimport {getArea as _ol_sphere$getArea} from './ol/sphere';nimport {createXYZ as _ol_tilegrid$createXYZ} from './ol/tilegrid';nimport {getUid as _ol_util$getUid} from './ol/util';nimport {ARRAY_BUFFER as _ol_webgl$ARRAY_BUFFER} from './ol/webgl';nimport {ELEMENT_ARRAY_BUFFER as _ol_webgl$ELEMENT_ARRAY_BUFFER} from './ol/webgl';nimport {STREAM_DRAW as _ol_webgl$STREAM_DRAW} from './ol/webgl';nimport {STATIC_DRAW as _ol_webgl$STATIC_DRAW} from './ol/webgl';nimport {DYNAMIC_DRAW as _ol_webgl$DYNAMIC_DRAW} from './ol/webgl';nimport {getAllTextContent as _ol_xml$getAllTextContent} from './ol/xml';nimport {parse as _ol_xml$parse} from './ol/xml';nimport $ol$webgl$Buffer from './ol/webgl/Buffer';nimport $ol$webgl$Helper from './ol/webgl/Helper';nimport {computeAttributesStride as _ol_webgl_Helper$computeAttributesStride} from './ol/webgl/Helper';nimport $ol$webgl$PostProcessingPass from './ol/webgl/PostProcessingPass';nimport $ol$webgl$RenderTarget from './ol/webgl/RenderTarget';nimport $ol$tilegrid$TileGrid from './ol/tilegrid/TileGrid';nimport $ol$tilegrid$WMTS from './ol/tilegrid/WMTS';nimport {createFromCapabilitiesMatrixSet as _ol_tilegrid_WMTS$createFromCapabilitiesMatrixSet} from './ol/tilegrid/WMTS';nimport $ol$style$Circle from './ol/style/Circle';nimport $ol$style$Fill from './ol/style/Fill';nimport $ol$style$Icon from './ol/style/Icon';nimport {shared as _ol_style_IconImageCache$shared} from './ol/style/IconImageCache';nimport $ol$style$Image from './ol/style/Image';nimport $ol$style$RegularShape from './ol/style/RegularShape';nimport $ol$style$Stroke from './ol/style/Stroke';nimport $ol$style$Style from './ol/style/Style';nimport $ol$style$Text from './ol/style/Text';nimport $ol$source$BingMaps from './ol/source/BingMaps';nimport $ol$source$CartoDB from './ol/source/CartoDB';nimport $ol$source$Cluster from './ol/source/Cluster';nimport $ol$source$IIIF from './ol/source/IIIF';nimport $ol$source$Image from './ol/source/Image';nimport $ol$source$ImageArcGISRest from './ol/source/ImageArcGISRest';nimport $ol$source$ImageCanvas from './ol/source/ImageCanvas';nimport $ol$source$ImageMapGuide from './ol/source/ImageMapGuide';nimport $ol$source$ImageStatic from './ol/source/ImageStatic';nimport $ol$source$ImageWMS from './ol/source/ImageWMS';nimport {ATTRIBUTION as _ol_source_OSM$ATTRIBUTION} from './ol/source/OSM';nimport $ol$source$OSM from './ol/source/OSM';nimport $ol$source$Raster from './ol/source/Raster';nimport $ol$source$Source from './ol/source/Source';nimport $ol$source$Stamen from './ol/source/Stamen';nimport $ol$source$Tile from './ol/source/Tile';nimport $ol$source$TileArcGISRest from './ol/source/TileArcGISRest';nimport $ol$source$TileDebug from './ol/source/TileDebug';nimport $ol$source$TileImage from './ol/source/TileImage';nimport $ol$source$TileJSON from './ol/source/TileJSON';nimport $ol$source$TileWMS from './ol/source/TileWMS';nimport $ol$source$UTFGrid from './ol/source/UTFGrid';nimport $ol$source$Vector from './ol/source/Vector';nimport $ol$source$VectorTile from './ol/source/VectorTile';nimport $ol$source$WMTS from './ol/source/WMTS';nimport {optionsFromCapabilities as _ol_source_WMTS$optionsFromCapabilities} from './ol/source/WMTS';nimport $ol$source$XYZ from './ol/source/XYZ';nimport $ol$source$Zoomify from './ol/source/Zoomify';nimport $ol$renderer$Composite from './ol/renderer/Composite';nimport $ol$renderer$webgl$PointsLayer from './ol/renderer/webgl/PointsLayer';nimport $ol$renderer$canvas$ImageLayer from './ol/renderer/canvas/ImageLayer';nimport $ol$renderer$canvas$TileLayer from './ol/renderer/canvas/TileLayer';nimport $ol$renderer$canvas$VectorImageLayer from './ol/renderer/canvas/VectorImageLayer';nimport $ol$renderer$canvas$VectorLayer from './ol/renderer/canvas/VectorLayer';nimport $ol$renderer$canvas$VectorTileLayer from './ol/renderer/canvas/VectorTileLayer';nimport $ol$render$VectorContext from './ol/render/VectorContext';nimport {labelCache as _ol_render_canvas$labelCache} from './ol/render/canvas';nimport $ol$proj$Projection from './ol/proj/Projection';nimport {METERS_PER_UNIT as _ol_proj_Units$METERS_PER_UNIT} from './ol/proj/Units';nimport {register as _ol_proj_proj4$register} from './ol/proj/proj4';nimport $ol$layer$Base from './ol/layer/Base';nimport $ol$layer$BaseImage from './ol/layer/BaseImage';nimport $ol$layer$BaseTile from './ol/layer/BaseTile';nimport $ol$layer$BaseVector from './ol/layer/BaseVector';nimport $ol$layer$Graticule from './ol/layer/Graticule';nimport $ol$layer$Group from './ol/layer/Group';nimport $ol$layer$Heatmap from './ol/layer/Heatmap';nimport $ol$layer$Image from './ol/layer/Image';nimport $ol$layer$Layer from './ol/layer/Layer';nimport $ol$layer$Tile from './ol/layer/Tile';nimport $ol$layer$Vector from './ol/layer/Vector';nimport $ol$layer$VectorImage from './ol/layer/VectorImage';nimport $ol$layer$VectorTile from './ol/layer/VectorTile';nimport $ol$interaction$DoubleClickZoom from './ol/interaction/DoubleClickZoom';nimport $ol$interaction$DragAndDrop from './ol/interaction/DragAndDrop';nimport $ol$interaction$DragBox from './ol/interaction/DragBox';nimport $ol$interaction$DragPan from './ol/interaction/DragPan';nimport $ol$interaction$DragRotate from './ol/interaction/DragRotate';nimport $ol$interaction$DragRotateAndZoom from './ol/interaction/DragRotateAndZoom';nimport $ol$interaction$DragZoom from './ol/interaction/DragZoom';nimport $ol$interaction$Draw from './ol/interaction/Draw';nimport {createRegularPolygon as _ol_interaction_Draw$createRegularPolygon} from './ol/interaction/Draw';nimport {createBox as _ol_interaction_Draw$createBox} from './ol/interaction/Draw';nimport $ol$interaction$Extent from './ol/interaction/Extent';nimport $ol$interaction$Interaction from './ol/interaction/Interaction';nimport $ol$interaction$KeyboardPan from './ol/interaction/KeyboardPan';nimport $ol$interaction$KeyboardZoom from './ol/interaction/KeyboardZoom';nimport $ol$interaction$Modify from './ol/interaction/Modify';nimport $ol$interaction$MouseWheelZoom from './ol/interaction/MouseWheelZoom';nimport $ol$interaction$PinchRotate from './ol/interaction/PinchRotate';nimport $ol$interaction$PinchZoom from './ol/interaction/PinchZoom';nimport $ol$interaction$Pointer from './ol/interaction/Pointer';nimport $ol$interaction$Select from './ol/interaction/Select';nimport $ol$interaction$Snap from './ol/interaction/Snap';nimport $ol$interaction$Translate from './ol/interaction/Translate';nimport $ol$geom$Circle from './ol/geom/Circle';nimport $ol$geom$Geometry from './ol/geom/Geometry';nimport $ol$geom$GeometryCollection from './ol/geom/GeometryCollection';nimport $ol$geom$LineString from './ol/geom/LineString';nimport $ol$geom$LinearRing from './ol/geom/LinearRing';nimport $ol$geom$MultiLineString from './ol/geom/MultiLineString';nimport $ol$geom$MultiPoint from './ol/geom/MultiPoint';nimport $ol$geom$MultiPolygon from './ol/geom/MultiPolygon';nimport $ol$geom$Point from './ol/geom/Point';nimport $ol$geom$Polygon from './ol/geom/Polygon';nimport {circular as _ol_geom_Polygon$circular} from './ol/geom/Polygon';nimport {fromExtent as _ol_geom_Polygon$fromExtent} from './ol/geom/Polygon';nimport {fromCircle as _ol_geom_Polygon$fromCircle} from './ol/geom/Polygon';nimport $ol$geom$SimpleGeometry from './ol/geom/SimpleGeometry';nimport $ol$format$EsriJSON from './ol/format/EsriJSON';nimport $ol$format$Feature from './ol/format/Feature';nimport $ol$format$GML from './ol/format/GML';nimport $ol$format$GML2 from './ol/format/GML2';nimport $ol$format$GML3 from './ol/format/GML3';nimport $ol$format$GML32 from './ol/format/GML32';nimport $ol$format$GPX from './ol/format/GPX';nimport $ol$format$GeoJSON from './ol/format/GeoJSON';nimport $ol$format$IGC from './ol/format/IGC';nimport $ol$format$IIIFInfo from './ol/format/IIIFInfo';nimport $ol$format$KML from './ol/format/KML';nimport $ol$format$MVT from './ol/format/MVT';nimport $ol$format$OSMXML from './ol/format/OSMXML';nimport $ol$format$Polyline from './ol/format/Polyline';nimport {encodeDeltas as _ol_format_Polyline$encodeDeltas} from './ol/format/Polyline';nimport {decodeDeltas as _ol_format_Polyline$decodeDeltas} from './ol/format/Polyline';nimport {encodeFloats as _ol_format_Polyline$encodeFloats} from './ol/format/Polyline';nimport {decodeFloats as _ol_format_Polyline$decodeFloats} from './ol/format/Polyline';nimport $ol$format$TopoJSON from './ol/format/TopoJSON';nimport $ol$format$WFS from './ol/format/WFS';nimport {writeFilter as _ol_format_WFS$writeFilter} from './ol/format/WFS';nimport $ol$format$WKT from './ol/format/WKT';nimport $ol$format$WMSCapabilities from './ol/format/WMSCapabilities';nimport $ol$format$WMSGetFeatureInfo from './ol/format/WMSGetFeatureInfo';nimport $ol$format$WMTSCapabilities from './ol/format/WMTSCapabilities';nimport {and as _ol_format_filter$and} from './ol/format/filter';nimport {or as _ol_format_filter$or} from './ol/format/filter';nimport {not as _ol_format_filter$not} from './ol/format/filter';nimport {bbox as _ol_format_filter$bbox} from './ol/format/filter';nimport {contains as _ol_format_filter$contains} from './ol/format/filter';nimport {intersects as _ol_format_filter$intersects} from './ol/format/filter';nimport {within as _ol_format_filter$within} from './ol/format/filter';nimport {equalTo as _ol_format_filter$equalTo} from './ol/format/filter';nimport {notEqualTo as _ol_format_filter$notEqualTo} from './ol/format/filter';nimport {lessThan as _ol_format_filter$lessThan} from './ol/format/filter';nimport {lessThanOrEqualTo as _ol_format_filter$lessThanOrEqualTo} from './ol/format/filter';nimport {greaterThan as _ol_format_filter$greaterThan} from './ol/format/filter';nimport {greaterThanOrEqualTo as _ol_format_filter$greaterThanOrEqualTo} from './ol/format/filter';nimport {isNull as _ol_format_filter$isNull} from './ol/format/filter';nimport {between as _ol_format_filter$between} from './ol/format/filter';nimport {like as _ol_format_filter$like} from './ol/format/filter';nimport {during as _ol_format_filter$during} from './ol/format/filter';nimport $ol$format$filter$Bbox from './ol/format/filter/Bbox';nimport $ol$format$filter$Contains from './ol/format/filter/Contains';nimport $ol$format$filter$During from './ol/format/filter/During';nimport $ol$format$filter$EqualTo from './ol/format/filter/EqualTo';nimport $ol$format$filter$GreaterThan from './ol/format/filter/GreaterThan';nimport $ol$format$filter$GreaterThanOrEqualTo from './ol/format/filter/GreaterThanOrEqualTo';nimport $ol$format$filter$Intersects from './ol/format/filter/Intersects';nimport $ol$format$filter$IsBetween from './ol/format/filter/IsBetween';nimport $ol$format$filter$IsLike from './ol/format/filter/IsLike';nimport $ol$format$filter$IsNull from './ol/format/filter/IsNull';nimport $ol$format$filter$LessThan from './ol/format/filter/LessThan';nimport $ol$format$filter$LessThanOrEqualTo from './ol/format/filter/LessThanOrEqualTo';nimport $ol$format$filter$Not from './ol/format/filter/Not';nimport $ol$format$filter$NotEqualTo from './ol/format/filter/NotEqualTo';nimport $ol$format$filter$Or from './ol/format/filter/Or';nimport $ol$format$filter$Within from './ol/format/filter/Within';nimport {altKeyOnly as _ol_events_condition$altKeyOnly} from './ol/events/condition';nimport {altShiftKeysOnly as _ol_events_condition$altShiftKeysOnly} from './ol/events/condition';nimport {focus as _ol_events_condition$focus} from './ol/events/condition';nimport {always as _ol_events_condition$always} from './ol/events/condition';nimport {click as _ol_events_condition$click} from './ol/events/condition';nimport {never as _ol_events_condition$never} from './ol/events/condition';nimport {pointerMove as _ol_events_condition$pointerMove} from './ol/events/condition';nimport {singleClick as _ol_events_condition$singleClick} from './ol/events/condition';nimport {doubleClick as _ol_events_condition$doubleClick} from './ol/events/condition';nimport {noModifierKeys as _ol_events_condition$noModifierKeys} from './ol/events/condition';nimport {platformModifierKeyOnly as _ol_events_condition$platformModifierKeyOnly} from './ol/events/condition';nimport {shiftKeyOnly as _ol_events_condition$shiftKeyOnly} from './ol/events/condition';nimport {targetNotEditable as _ol_events_condition$targetNotEditable} from './ol/events/condition';nimport {mouseOnly as _ol_events_condition$mouseOnly} from './ol/events/condition';nimport {touchOnly as _ol_events_condition$touchOnly} from './ol/events/condition';nimport {penOnly as _ol_events_condition$penOnly} from './ol/events/condition';nimport {primaryAction as _ol_events_condition$primaryAction} from './ol/events/condition';nimport $ol$control$Attribution from './ol/control/Attribution';nimport {render as _ol_control_Attribution$render} from './ol/control/Attribution';nimport $ol$control$Control from './ol/control/Control';nimport $ol$control$FullScreen from './ol/control/FullScreen';nimport $ol$control$MousePosition from './ol/control/MousePosition';nimport {render as _ol_control_MousePosition$render} from './ol/control/MousePosition';nimport $ol$control$OverviewMap from './ol/control/OverviewMap';nimport {render as _ol_control_OverviewMap$render} from './ol/control/OverviewMap';nimport $ol$control$Rotate from './ol/control/Rotate';nimport {render as _ol_control_Rotate$render} from './ol/control/Rotate';nimport $ol$control$ScaleLine from './ol/control/ScaleLine';nimport {render as _ol_control_ScaleLine$render} from './ol/control/ScaleLine';nimport $ol$control$Zoom from './ol/control/Zoom';nimport $ol$control$ZoomSlider from './ol/control/ZoomSlider';nimport {render as _ol_control_ZoomSlider$render} from './ol/control/ZoomSlider';nimport $ol$control$ZoomToExtent from './ol/control/ZoomToExtent';nnvar ol = {};nnol.array = {};nol.color = {};nol.colorlike = {};nol.control = {};nol.coordinate = {};nol.easing = {};nol.events = {};nol.events.condition = {};nol.extent = {};nol.featureloader = {};nol.format = {};nol.format.filter = {};nol.geom = {};nol.has = {};nol.interaction = {};nol.layer = {};nol.loadingstrategy = {};nol.proj = {};nol.proj.Units = {};nol.proj.proj4 = {};nol.render = {};nol.render.canvas = {};nol.renderer = {};nol.renderer.canvas = {};nol.renderer.webgl = {};nol.size = {};nol.source = {};nol.sphere = {};nol.style = {};nol.style.IconImageCache = {};nol.tilegrid = {};nol.util = {};nol.webgl = {};nol.xml = {};nol.Collection = $ol$Collection;nol.Feature = $ol$Feature;nol.Geolocation = $ol$Geolocation;nol.Kinetic = $ol$Kinetic;nol.Map = $ol$Map;nol.Object = $ol$Object;nol.Observable = $ol$Observable;nol.Observable.unByKey = _ol_Observable$unByKey;nol.Overlay = $ol$Overlay;nol.PluggableMap = $ol$PluggableMap;nol.View = $ol$View;nol.array.stableSort = _ol_array$stableSort;nol.color.asArray = _ol_color$asArray;nol.color.asString = _ol_color$asString;nol.colorlike.asColorLike = _ol_colorlike$asColorLike;nol.control.Attribution = $ol$control$Attribution;nol.control.Attribution.render = _ol_control_Attribution$render;nol.control.Control = $ol$control$Control;nol.control.FullScreen = $ol$control$FullScreen;nol.control.MousePosition = $ol$control$MousePosition;nol.control.MousePosition.render = _ol_control_MousePosition$render;nol.control.OverviewMap = $ol$control$OverviewMap;nol.control.OverviewMap.render = _ol_control_OverviewMap$render;nol.control.Rotate = $ol$control$Rotate;nol.control.Rotate.render = _ol_control_Rotate$render;nol.control.ScaleLine = $ol$control$ScaleLine;nol.control.ScaleLine.render = _ol_control_ScaleLine$render;nol.control.Zoom = $ol$control$Zoom;nol.control.ZoomSlider = $ol$control$ZoomSlider;nol.control.ZoomSlider.render = _ol_control_ZoomSlider$render;nol.control.ZoomToExtent = $ol$control$ZoomToExtent;nol.control.defaults = _ol_control$defaults;nol.coordinate.add = _ol_coordinate$add;nol.coordinate.createStringXY = _ol_coordinate$createStringXY;nol.coordinate.format = _ol_coordinate$format;nol.coordinate.rotate = _ol_coordinate$rotate;nol.coordinate.toStringHDMS = _ol_coordinate$toStringHDMS;nol.coordinate.toStringXY = _ol_coordinate$toStringXY;nol.easing.easeIn = _ol_easing$easeIn;nol.easing.easeOut = _ol_easing$easeOut;nol.easing.inAndOut = _ol_easing$inAndOut;nol.easing.linear = _ol_easing$linear;nol.easing.upAndDown = _ol_easing$upAndDown;nol.events.condition.altKeyOnly = _ol_events_condition$altKeyOnly;nol.events.condition.altShiftKeysOnly = _ol_events_condition$altShiftKeysOnly;nol.events.condition.always = _ol_events_condition$always;nol.events.condition.click = _ol_events_condition$click;nol.events.condition.doubleClick = _ol_events_condition$doubleClick;nol.events.condition.focus = _ol_events_condition$focus;nol.events.condition.mouseOnly = _ol_events_condition$mouseOnly;nol.events.condition.never = _ol_events_condition$never;nol.events.condition.noModifierKeys = _ol_events_condition$noModifierKeys;nol.events.condition.penOnly = _ol_events_condition$penOnly;nol.events.condition.platformModifierKeyOnly = _ol_events_condition$platformModifierKeyOnly;nol.events.condition.pointerMove = _ol_events_condition$pointerMove;nol.events.condition.primaryAction = _ol_events_condition$primaryAction;nol.events.condition.shiftKeyOnly = _ol_events_condition$shiftKeyOnly;nol.events.condition.singleClick = _ol_events_condition$singleClick;nol.events.condition.targetNotEditable = _ol_events_condition$targetNotEditable;nol.events.condition.touchOnly = _ol_events_condition$touchOnly;nol.extent.applyTransform = _ol_extent$applyTransform;nol.extent.boundingExtent = _ol_extent$boundingExtent;nol.extent.buffer = _ol_extent$buffer;nol.extent.containsCoordinate = _ol_extent$containsCoordinate;nol.extent.containsExtent = _ol_extent$containsExtent;nol.extent.containsXY = _ol_extent$containsXY;nol.extent.createEmpty = _ol_extent$createEmpty;nol.extent.equals = _ol_extent$equals;nol.extent.extend = _ol_extent$extend;nol.extent.getArea = _ol_extent$getArea;nol.extent.getBottomLeft = _ol_extent$getBottomLeft;nol.extent.getBottomRight = _ol_extent$getBottomRight;nol.extent.getCenter = _ol_extent$getCenter;nol.extent.getHeight = _ol_extent$getHeight;nol.extent.getIntersection = _ol_extent$getIntersection;nol.extent.getSize = _ol_extent$getSize;nol.extent.getTopLeft = _ol_extent$getTopLeft;nol.extent.getTopRight = _ol_extent$getTopRight;nol.extent.getWidth = _ol_extent$getWidth;nol.extent.intersects = _ol_extent$intersects;nol.extent.isEmpty = _ol_extent$isEmpty;nol.featureloader.setWithCredentials = _ol_featureloader$setWithCredentials;nol.featureloader.xhr = _ol_featureloader$xhr;nol.format.EsriJSON = $ol$format$EsriJSON;nol.format.Feature = $ol$format$Feature;nol.format.GML = $ol$format$GML;nol.format.GML2 = $ol$format$GML2;nol.format.GML3 = $ol$format$GML3;nol.format.GML32 = $ol$format$GML32;nol.format.GPX = $ol$format$GPX;nol.format.GeoJSON = $ol$format$GeoJSON;nol.format.IGC = $ol$format$IGC;nol.format.IIIFInfo = $ol$format$IIIFInfo;nol.format.KML = $ol$format$KML;nol.format.MVT = $ol$format$MVT;nol.format.OSMXML = $ol$format$OSMXML;nol.format.Polyline = $ol$format$Polyline;nol.format.Polyline.decodeDeltas = _ol_format_Polyline$decodeDeltas;nol.format.Polyline.decodeFloats = _ol_format_Polyline$decodeFloats;nol.format.Polyline.encodeDeltas = _ol_format_Polyline$encodeDeltas;nol.format.Polyline.encodeFloats = _ol_format_Polyline$encodeFloats;nol.format.TopoJSON = $ol$format$TopoJSON;nol.format.WFS = $ol$format$WFS;nol.format.WFS.writeFilter = _ol_format_WFS$writeFilter;nol.format.WKT = $ol$format$WKT;nol.format.WMSCapabilities = $ol$format$WMSCapabilities;nol.format.WMSGetFeatureInfo = $ol$format$WMSGetFeatureInfo;nol.format.WMTSCapabilities = $ol$format$WMTSCapabilities;nol.format.filter.Bbox = $ol$format$filter$Bbox;nol.format.filter.Contains = $ol$format$filter$Contains;nol.format.filter.During = $ol$format$filter$During;nol.format.filter.EqualTo = $ol$format$filter$EqualTo;nol.format.filter.GreaterThan = $ol$format$filter$GreaterThan;nol.format.filter.GreaterThanOrEqualTo = $ol$format$filter$GreaterThanOrEqualTo;nol.format.filter.Intersects = $ol$format$filter$Intersects;nol.format.filter.IsBetween = $ol$format$filter$IsBetween;nol.format.filter.IsLike = $ol$format$filter$IsLike;nol.format.filter.IsNull = $ol$format$filter$IsNull;nol.format.filter.LessThan = $ol$format$filter$LessThan;nol.format.filter.LessThanOrEqualTo = $ol$format$filter$LessThanOrEqualTo;nol.format.filter.Not = $ol$format$filter$Not;nol.format.filter.NotEqualTo = $ol$format$filter$NotEqualTo;nol.format.filter.Or = $ol$format$filter$Or;nol.format.filter.Within = $ol$format$filter$Within;nol.format.filter.and = _ol_format_filter$and;nol.format.filter.bbox = _ol_format_filter$bbox;nol.format.filter.between = _ol_format_filter$between;nol.format.filter.contains = _ol_format_filter$contains;nol.format.filter.during = _ol_format_filter$during;nol.format.filter.equalTo = _ol_format_filter$equalTo;nol.format.filter.greaterThan = _ol_format_filter$greaterThan;nol.format.filter.greaterThanOrEqualTo = _ol_format_filter$greaterThanOrEqualTo;nol.format.filter.intersects = _ol_format_filter$intersects;nol.format.filter.isNull = _ol_format_filter$isNull;nol.format.filter.lessThan = _ol_format_filter$lessThan;nol.format.filter.lessThanOrEqualTo = _ol_format_filter$lessThanOrEqualTo;nol.format.filter.like = _ol_format_filter$like;nol.format.filter.not = _ol_format_filter$not;nol.format.filter.notEqualTo = _ol_format_filter$notEqualTo;nol.format.filter.or = _ol_format_filter$or;nol.format.filter.within = _ol_format_filter$within;nol.geom.Circle = $ol$geom$Circle;nol.geom.Geometry = $ol$geom$Geometry;nol.geom.GeometryCollection = $ol$geom$GeometryCollection;nol.geom.LineString = $ol$geom$LineString;nol.geom.LinearRing = $ol$geom$LinearRing;nol.geom.MultiLineString = $ol$geom$MultiLineString;nol.geom.MultiPoint = $ol$geom$MultiPoint;nol.geom.MultiPolygon = $ol$geom$MultiPolygon;nol.geom.Point = $ol$geom$Point;nol.geom.Polygon = $ol$geom$Polygon;nol.geom.Polygon.circular = _ol_geom_Polygon$circular;nol.geom.Polygon.fromCircle = _ol_geom_Polygon$fromCircle;nol.geom.Polygon.fromExtent = _ol_geom_Polygon$fromExtent;nol.geom.SimpleGeometry = $ol$geom$SimpleGeometry;nol.has.DEVICE_PIXEL_RATIO = _ol_has$DEVICE_PIXEL_RATIO;nol.interaction.DoubleClickZoom = $ol$interaction$DoubleClickZoom;nol.interaction.DragAndDrop = $ol$interaction$DragAndDrop;nol.interaction.DragBox = $ol$interaction$DragBox;nol.interaction.DragPan = $ol$interaction$DragPan;nol.interaction.DragRotate = $ol$interaction$DragRotate;nol.interaction.DragRotateAndZoom = $ol$interaction$DragRotateAndZoom;nol.interaction.DragZoom = $ol$interaction$DragZoom;nol.interaction.Draw = $ol$interaction$Draw;nol.interaction.Draw.createBox = _ol_interaction_Draw$createBox;nol.interaction.Draw.createRegularPolygon = _ol_interaction_Draw$createRegularPolygon;nol.interaction.Extent = $ol$interaction$Extent;nol.interaction.Interaction = $ol$interaction$Interaction;nol.interaction.KeyboardPan = $ol$interaction$KeyboardPan;nol.interaction.KeyboardZoom = $ol$interaction$KeyboardZoom;nol.interaction.Modify = $ol$interaction$Modify;nol.interaction.MouseWheelZoom = $ol$interaction$MouseWheelZoom;nol.interaction.PinchRotate = $ol$interaction$PinchRotate;nol.interaction.PinchZoom = $ol$interaction$PinchZoom;nol.interaction.Pointer = $ol$interaction$Pointer;nol.interaction.Select = $ol$interaction$Select;nol.interaction.Snap = $ol$interaction$Snap;nol.interaction.Translate = $ol$interaction$Translate;nol.interaction.defaults = _ol_interaction$defaults;nol.layer.Base = $ol$layer$Base;nol.layer.BaseImage = $ol$layer$BaseImage;nol.layer.BaseTile = $ol$layer$BaseTile;nol.layer.BaseVector = $ol$layer$BaseVector;nol.layer.Graticule = $ol$layer$Graticule;nol.layer.Group = $ol$layer$Group;nol.layer.Heatmap = $ol$layer$Heatmap;nol.layer.Image = $ol$layer$Image;nol.layer.Layer = $ol$layer$Layer;nol.layer.Tile = $ol$layer$Tile;nol.layer.Vector = $ol$layer$Vector;nol.layer.VectorImage = $ol$layer$VectorImage;nol.layer.VectorTile = $ol$layer$VectorTile;nol.loadingstrategy.all = _ol_loadingstrategy$all;nol.loadingstrategy.bbox = _ol_loadingstrategy$bbox;nol.loadingstrategy.tile = _ol_loadingstrategy$tile;nol.proj.Projection = $ol$proj$Projection;nol.proj.Units.METERS_PER_UNIT = _ol_proj_Units$METERS_PER_UNIT;nol.proj.addCoordinateTransforms = _ol_proj$addCoordinateTransforms;nol.proj.addEquivalentProjections = _ol_proj$addEquivalentProjections;nol.proj.addProjection = _ol_proj$addProjection;nol.proj.equivalent = _ol_proj$equivalent;nol.proj.fromLonLat = _ol_proj$fromLonLat;nol.proj.get = _ol_proj$get;nol.proj.getPointResolution = _ol_proj$getPointResolution;nol.proj.getTransform = _ol_proj$getTransform;nol.proj.proj4.register = _ol_proj_proj4$register;nol.proj.toLonLat = _ol_proj$toLonLat;nol.proj.transform = _ol_proj$transform;nol.proj.transformExtent = _ol_proj$transformExtent;nol.render.VectorContext = $ol$render$VectorContext;nol.render.canvas.labelCache = _ol_render_canvas$labelCache;nol.render.getRenderPixel = _ol_render$getRenderPixel;nol.render.getVectorContext = _ol_render$getVectorContext;nol.render.toContext = _ol_render$toContext;nol.renderer.Composite = $ol$renderer$Composite;nol.renderer.canvas.ImageLayer = $ol$renderer$canvas$ImageLayer;nol.renderer.canvas.TileLayer = $ol$renderer$canvas$TileLayer;nol.renderer.canvas.VectorImageLayer = $ol$renderer$canvas$VectorImageLayer;nol.renderer.canvas.VectorLayer = $ol$renderer$canvas$VectorLayer;nol.renderer.canvas.VectorTileLayer = $ol$renderer$canvas$VectorTileLayer;nol.renderer.webgl.PointsLayer = $ol$renderer$webgl$PointsLayer;nol.size.toSize = _ol_size$toSize;nol.source.BingMaps = $ol$source$BingMaps;nol.source.CartoDB = $ol$source$CartoDB;nol.source.Cluster = $ol$source$Cluster;nol.source.IIIF = $ol$source$IIIF;nol.source.Image = $ol$source$Image;nol.source.ImageArcGISRest = $ol$source$ImageArcGISRest;nol.source.ImageCanvas = $ol$source$ImageCanvas;nol.source.ImageMapGuide = $ol$source$ImageMapGuide;nol.source.ImageStatic = $ol$source$ImageStatic;nol.source.ImageWMS = $ol$source$ImageWMS;nol.source.OSM = $ol$source$OSM;nol.source.OSM.ATTRIBUTION = _ol_source_OSM$ATTRIBUTION;nol.source.Raster = $ol$source$Raster;nol.source.Source = $ol$source$Source;nol.source.Stamen = $ol$source$Stamen;nol.source.Tile = $ol$source$Tile;nol.source.TileArcGISRest = $ol$source$TileArcGISRest;nol.source.TileDebug = $ol$source$TileDebug;nol.source.TileImage = $ol$source$TileImage;nol.source.TileJSON = $ol$source$TileJSON;nol.source.TileWMS = $ol$source$TileWMS;nol.source.UTFGrid = $ol$source$UTFGrid;nol.source.Vector = $ol$source$Vector;nol.source.VectorTile = $ol$source$VectorTile;nol.source.WMTS = $ol$source$WMTS;nol.source.WMTS.optionsFromCapabilities = _ol_source_WMTS$optionsFromCapabilities;nol.source.XYZ = $ol$source$XYZ;nol.source.Zoomify = $ol$source$Zoomify;nol.sphere.getArea = _ol_sphere$getArea;nol.sphere.getDistance = _ol_sphere$getDistance;nol.sphere.getLength = _ol_sphere$getLength;nol.style.Circle = $ol$style$Circle;nol.style.Fill = $ol$style$Fill;nol.style.Icon = $ol$style$Icon;nol.style.IconImageCache.shared = _ol_style_IconImageCache$shared;nol.style.Image = $ol$style$Image;nol.style.RegularShape = $ol$style$RegularShape;nol.style.Stroke = $ol$style$Stroke;nol.style.Style = $ol$style$Style;nol.style.Text = $ol$style$Text;nol.tilegrid.TileGrid = $ol$tilegrid$TileGrid;nol.tilegrid.WMTS = $ol$tilegrid$WMTS;nol.tilegrid.WMTS.createFromCapabilitiesMatrixSet = _ol_tilegrid_WMTS$createFromCapabilitiesMatrixSet;nol.tilegrid.createXYZ = _ol_tilegrid$createXYZ;nol.util.getUid = _ol_util$getUid;nol.webgl.ARRAY_BUFFER = _ol_webgl$ARRAY_BUFFER;nol.webgl.Buffer = $ol$webgl$Buffer;nol.webgl.DYNAMIC_DRAW = _ol_webgl$DYNAMIC_DRAW;nol.webgl.ELEMENT_ARRAY_BUFFER = _ol_webgl$ELEMENT_ARRAY_BUFFER;nol.webgl.Helper = $ol$webgl$Helper;nol.webgl.Helper.computeAttributesStride = _ol_webgl_Helper$computeAttributesStride;nol.webgl.PostProcessingPass = $ol$webgl$PostProcessingPass;nol.webgl.RenderTarget = $ol$webgl$RenderTarget;nol.webgl.STATIC_DRAW = _ol_webgl$STATIC_DRAW;nol.webgl.STREAM_DRAW = _ol_webgl$STREAM_DRAW;nol.xml.getAllTextContent = _ol_xml$getAllTextContent;nol.xml.parse = _ol_xml$parse;nnexport default ol;”,“/**n * @module ol/proj/proj4n */nimport { addCoordinateTransforms, addProjection, addEquivalentProjections, get } from '../proj.js';nimport { get as getTransform } from './transforms.js';nimport Projection from './Projection.js';n/**n * Make projections defined in proj4 (with `proj4.defs()`) available inn * OpenLayers.n *n * This function should be called whenever changes are made to the proj4n * registry, e.g. after calling `proj4.defs()`. Existing transforms will not ben * modified by this function.n *n * @param {?} proj4 Proj4.n * @apin */nexport function register(proj4) {n var projCodes = Object.keys(proj4.defs);n var len = projCodes.length;n var i, j;n for (i = 0; i < len; ++i) {n var code = projCodes;n if (!get(code)) {n var def = proj4.defs(code);n addProjection(new Projection({n code: code,n axisOrientation: def.axis,n metersPerUnit: def.to_meter,n units: def.unitsn }));n }n }n for (i = 0; i < len; ++i) {n var code1 = projCodes;n var proj1 = get(code1);n for (j = 0; j < len; ++j) {n var code2 = projCodes;n var proj2 = get(code2);n if (!getTransform(code1, code2)) {n if (proj4.defs === proj4.defs) {n addEquivalentProjections([proj1, proj2]);n }n else {n var transform = proj4(code1, code2);n addCoordinateTransforms(proj1, proj2, transform.forward, transform.inverse);n }n }n }n }n}n//# sourceMappingURL=proj4.js.map”],“sourceRoot”:“”}