{"version":3,"mappings":"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","names":["check","it","globalThis_1","global","this","fails","exec","require$$0","descriptors","functionBindNative","test","NATIVE_BIND","call","functionCall","$propertyIsEnumerable","getOwnPropertyDescriptor","NASHORN_BUG","objectPropertyIsEnumerable","V","descriptor","createPropertyDescriptor","bitmap","value","FunctionPrototype","uncurryThisWithBind","functionUncurryThis","fn","uncurryThis","toString","stringSlice","classofRaw","require$$1","classof","require$$2","$Object","split","indexedObject","isNullOrUndefined","$TypeError","requireObjectCoercible","IndexedObject","toIndexedObject","documentAll","isCallable","argument","isObject","globalThis","aFunction","getBuiltIn","namespace","method","objectIsPrototypeOf","navigator","userAgent","environmentUserAgent","process","Deno","versions","v8","match","version","environmentV8Version","V8_VERSION","$String","symbolConstructorDetection","symbol","NATIVE_SYMBOL","useSymbolAsUid","isPrototypeOf","USE_SYMBOL_AS_UID","require$$3","isSymbol","$Symbol","tryToString","aCallable","getMethod","P","func","ordinaryToPrimitive","input","pref","val","defineProperty","defineGlobalProperty","key","SHARED","store","sharedStoreModule","shared","toObject","hasOwnProperty","hasOwnProperty_1","id","postfix","uid","hasOwn","require$$4","require$$5","Symbol","WellKnownSymbolsStore","createWellKnownSymbol","wellKnownSymbol","name","TO_PRIMITIVE","toPrimitive","exoticToPrim","result","toPropertyKey","document","EXISTS","documentCreateElement","DESCRIPTORS","createElement","ie8DomDefine","propertyIsEnumerableModule","require$$6","IE8_DOM_DEFINE","require$$7","$getOwnPropertyDescriptor","objectGetOwnPropertyDescriptor","O","v8PrototypeDefineBug","anObject","V8_PROTOTYPE_DEFINE_BUG","$defineProperty","ENUMERABLE","CONFIGURABLE","WRITABLE","objectDefineProperty","Attributes","current","definePropertyModule","createNonEnumerableProperty","object","getDescriptor","PROPER","functionName","functionToString","inspectSource","WeakMap","weakMapBasicDetection","keys","sharedKey","hiddenKeys","NATIVE_WEAK_MAP","OBJECT_ALREADY_INITIALIZED","TypeError","set","get","has","enforce","getterFor","TYPE","state","metadata","STATE","internalState","CONFIGURABLE_FUNCTION_NAME","InternalStateModule","enforceInternalState","getInternalState","replace","join","CONFIGURABLE_LENGTH","TEMPLATE","makeBuiltIn","makeBuiltInModule","options","defineBuiltIn","simple","ceil","floor","mathTrunc","x","n","trunc","toIntegerOrInfinity","number","max","min","toAbsoluteIndex","index","length","integer","toLength","len","lengthOfArrayLike","obj","createMethod","IS_INCLUDES","$this","el","fromIndex","arrayIncludes","indexOf","push","objectKeysInternal","names","enumBugKeys","internalObjectKeys","objectGetOwnPropertyNames","objectGetOwnPropertySymbols","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","concat","ownKeys","getOwnPropertySymbols","getOwnPropertyDescriptorModule","copyConstructorProperties","target","source","exceptions","i","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","isForced_1","_export","TARGET","GLOBAL","STATIC","FORCED","targetProperty","sourceProperty","TO_STRING_TAG","toStringTagSupport","TO_STRING_TAG_SUPPORT","CORRECT_ARGUMENTS","tryGet","tag","$","charAt","S","relativeIndex","k","objectKeys","objectDefineProperties","Properties","props","html","definePropertiesModule","GT","LT","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","NullProtoObjectViaActiveX","activeXDocument","temp","NullProtoObjectViaIFrame","iframe","JS","iframeDocument","NullProtoObject","objectCreate","create","UNSCOPABLES","ArrayPrototype","addToUnscopables","arrayBufferBasicDetection","defineBuiltInAccessor","correctPrototypeGetter","F","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","objectGetPrototypeOf","constructor","functionUncurryThisAccessor","isPossiblePrototype","aPossiblePrototype","uncurryThisAccessor","objectSetPrototypeOf","CORRECT_SETTER","setter","proto","NATIVE_ARRAY_BUFFER","require$$8","require$$9","require$$10","require$$11","getPrototypeOf","require$$12","setPrototypeOf","require$$13","require$$14","require$$15","require$$16","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","TYPED_ARRAY_TAG_REQUIRED","NAME","Constructor","Prototype","TypedArrayConstructorsList","BigIntArrayConstructorsList","isView","klass","getTypedArrayConstructor","isTypedArray","aTypedArray","aTypedArrayConstructor","C","exportTypedArrayMethod","KEY","property","forced","ARRAY","TypedArrayConstructor","exportTypedArrayStaticMethod","arrayBufferViewCore","ArrayBufferViewCore","linkClickSelector","buttonClickSelector","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","metaTag","cspNonce","m","matches","element","selector","EXPANDO","getData","setData","isContentEditable","isEditable","csrfToken","meta","csrfParam","CSRFProtection","xhr","token","refreshCSRFTokens","param","AcceptHeaders","ajax","prepareOptions","createXHR","response","processResponse","done","type","script","parser","href","isCrossDomain","url","originAnchor","urlAnchor","preventDefault","CustomEvent","event","params","evt","fire","stopEverything","e","delegate","eventType","handler","toArray","serializeElement","additionalParam","inputs","option","formElements","form","handleConfirmWithRails","rails","allowAction","confirm","message","callback","answer","handleDisabledElement","enableElement","isXhrRedirect","enableLinkElement","enableFormElement","enableFormElements","disableElement","disableLinkElement","disableFormElement","disableFormElements","originalText","handleMethodWithRails","link","csrfToken$1","csrfParam$1","formContent","isRemote","handleRemoteWithRails","withCredentials","dataType","button","args","formSubmitButtonClick","preventInsignificantClick","insignificantMetaClick","Rails","handleConfirm","handleMethod","handleRemote","start","originalOptions","State","ModuleClass","module","item","values","config","LogLevel","level","light","dark","logger","Message","domain","color","LEVELS","Inspector","msgs","stage","space","branch","indent","child","inspector","startAtDomContentLoaded","startAuto","Modes","Options","settings","query","isProduction","Collection$1","Collection","collectable","clone","Module","ns","notation","querySelectorAllArray","selectors","queryParentSelector","parent","Registration","InstanceClass","creator","dashed","prototype","instanceClassName","node","nonRecursive","nodes","instance","instances","Register","registration","count","Element$1","scope","end","projects","descendants","elements","stopAtInstanceClassName","stopAtFirstInstance","attributeName","attributeNames","RootEmission","KeyCodes","getKeyCode","keyCode","entry","Root","Stage","position","mutations","examinations","mutation","descendant","targets","disposables","disposable","registrations","creations","Renderer","nexts","Resizer","requesting","ScrollLocker","scrollBarGap","Load","FONT_FAMILIES","FontSwap","families","family","MouseMove","Hash","hash","Engine","registerModule","engine","Colors","context","use","tint","getOption","decision","colors","sanitize","className","getClassNames","modifyClass","remove","classNames","addClass","removeClass","hasClass","ACTIONS","ACTIONS_SELECTOR","queryActions","counter","uniqueId","base","dom","DataURISVG","width","height","isLegacy","svg","image","supportLocalStorage","supportAspectRatio","support","TransitionSelector","completeAssign","sources","sym","searchParams","entries","internals","legacy","api$1","configuration","Emitter","closure","Breakpoint","minWidth","Breakpoints","Instance","jsAttribute","detail","bubbles","cancelable","listeners","listener","Listener","removal","add","action","HashAction","stopPropagation","KeyAction","code","breakpoint","point","append","propertyName","closest","actions","rect","scroll","DisclosureEvent","DisclosureEmission","Disclosure","DisclosureButtonInstanceClass","disclosuresGroupInstanceClassName","proxy","group","withhold","preventFocus","canDisclose","candidates","isEnabled","DisclosureButton","buttonRect","DisclosureSelector","DisclosuresGroup","disclosureInstanceClassName","proxyAccessors","member","members","invalid","bypassPrevention","defaultIndex","isGrouped","attributesNames","DisclosureType","CollapseButton","CollapseSelector","Collapse","primary","before","candidate","mins","a","b","CollapsesGroup","EquisizedEmission","Equisized","EquisizedsGroup","equisizeds","equisized","ToggleEvent","Toggle","RootSelector","setAttributes","attrs","InjectSvg","xmlDoc","svgAttributes","InjectSvgSelector","Artwork","splitUrl","ArtworkSelector","AssessSelector","AssessEmission","AssessFile","extension","elem","regexExtension","locale","bytes","sizeUnits","size","roundedSize","AssessDetail","details","ratiosImg","ratiosVid","ratioSelector","modifiers","modifier","deprecatedRatioSelector","RatioSelector","api","Ratio","ratio","PlaceSelector","AlignSelector","PlacementPosition","PlacementAlign","PlacementMode","Placement","mode","places","aligns","safeAreaMargin","referent","y","place","align","PlacementReferent","SchemeValue","SchemeAttribute","SchemeTheme","SchemeEmission","SchemeEvent","Scheme","scheme","schemeAttr","SchemeSelector","ACCORDION","COLLAPSE$2","AccordionSelector","Accordion","AccordionsGroup","ButtonSelector","CardDownload","CardSelector","SegmentedSelector","SegmentedEmission","Segmented","SEGMENTED_VERTICAL","LEGEND_INLINE","gapOffset","SegmentedElement","BreadcrumbSelector","Breadcrumb","collapse","links","TooltipSelector","TooltipReferentState","TooltipReferent","mouseover","mouseout","TooltipEvent","TooltipState","Tooltip","limit","ToggleInput","ToggleStatusLabel","checked","style","maxWidth","style2","ToggleSelector","ITEM$1","COLLAPSE$1","SidemenuSelector","SidemenuList","SidemenuItem","ModalSelector","ModalButton","ModalAttribute","Modal","title","unordereds","UNORDEREDS","ordereds","ORDEREDS","isFocusable","container","FocusTrap","onTrap","onUntrap","focusables","Stunned","first","last","radios","groups","radio","RadioButtonGroup","unordered","noDuplicates","ModalsGroup","initial","OFFSET","ModalBody","offset","PasswordEmission","PasswordToggle","Password","PasswordSelector","PasswordInput","PasswordLabel","valueREM","ITEM","COLLAPSE","NavigationSelector","NavigationItem","right","left","NavigationMousePosition","Navigation","TabButton","TabSelector","TabPanelDirection","TabPanel","direction","TabKeys","TabEmission","TabsGroup","paneHeight","FOCALIZE_OFFSET","SCROLL_OFFSET$1","TabsList","btn","btnRect","listRect","actualScroll","scrollLeft","isMin","isMax","isRtl","minSelector","maxSelector","TableEmission","PADDING","Table","TableSelector","SCROLL_OFFSET","TableElement","TableCaption","TagEvent","TagDismissible","TagSelector","TRANSCRIPTION","TranscriptionSelector","Transcription","TileDownload","TileSelector","RangeSelector","RangeEmission","RangeModel","model","mult","constraints","RangeModelStep","steps","RangeModelDouble","ratio1","ratio2","RangeModelDoubleStep","RangeTypes","Range","oldModel","progress","RangeConstraints","step","RangeInput","pointerId","RangeInput2","RangeOutput","RangeLimit","text","HeaderSelector","HeaderLinks","header","copySuffix","toolsHtml","menuHtml","toolsHtmlIdList","toolsHtmlAriaControlList","toolsHtmlDuplicateId","ariaControlsValue","HeaderModal","modal","DisplaySelector","Display","INITIALIZE_EVENT","START_EVENT","PROGRESS_EVENT","ERROR_EVENT","END_EVENT","addUploadEventListener","file","ProgressBar","errorMsg","error","errorFromDirectUploadMessage","FAILURE_CLIENT","ERROR_CODE_READ","_a","TOGGLE_SOURCE_SELECTOR","targetSelector","targetElements","toggle","touch","classList","BaseEvent","ObjectEventType","Disposable","binarySearch","haystack","needle","comparator","mid","cmp","ascending","low","high","found","linearFindNearest","arr","reverseSubArray","begin","tmp","extend","equals","arr1","arr2","len1","isSorted","strict","compare","currentVal","res","TRUE","FALSE","VOID","memoizeOne","called","lastResult","lastArgs","lastThis","nextArgs","arrayEquals","clear","isEmpty","Target","listenersForType","isString","Event","dispatching","pendingRemovals","propagate","ii","pr","EventType","listen","thisArg","once","originalListener","eventsKey","listenOnce","unlistenByKey","Observable","EventTarget","unByKey","abstract","uidCounter_","getUid","ObjectEvent","oldValue","BaseObject","silent","assert","assertion","errorMessage","Feature","geometryOrProperties","geometry","properties","createStyleFunction","styles","CollectionEventType","Property","CollectionEvent","array","f","prev","except","ua","FIREFOX","SAFARI","WEBKIT","MAC","DEVICE_PIXEL_RATIO","WORKER_OFFSCREEN_CANVAS","IMAGE_DECODE","PASSIVE_EVENT_LISTENERS","passive","transform","c","d","setFromArray","transform1","transform2","apply","coordinate","makeScale","compose","dx1","dy1","sx","sy","angle","dx2","dy2","sin","cos","makeInverse","det","determinant","mat","transformStringDiv","transformString","Relationship","boundingExtent","coordinates","extent","createEmpty","extendCoordinate","buffer","dest","closestSquaredDistanceXY","dx","dy","containsCoordinate","containsXY","containsExtent","extent1","extent2","coordinateRelationship","minX","minY","maxX","maxY","relationship","createOrUpdate","createOrUpdateEmpty","createOrUpdateFromCoordinate","createOrUpdateFromFlatCoordinates","flatCoordinates","stride","extendFlatCoordinates","extendXY","forEachCorner","getBottomLeft","getBottomRight","getTopRight","getTopLeft","getArea","area","getWidth","getHeight","getCenter","getCorner","corner","getForViewAndSize","center","resolution","rotation","x0","y0","x1","y1","x2","y2","x3","y3","getRotatedViewport","cosRotation","sinRotation","xCos","xSin","yCos","ySin","getIntersection","intersection","intersects","returnOrUpdate","intersectsSegment","startRel","endRel","startX","startY","endX","endY","slope","wrapX","projection","projectionExtent","worldWidth","wrapAndSliceX","rgb","xyz","_xyz","white","z","g","r","luv","arg","o","_u","_v","l","u","v","xn","yn","zn","un","vn","yr","lchuv","h","hr","baseHues","parse","cstr","parts","alpha","isShort","dims","_b","hsl","s","t1","t2","t3","delta","rgba","parsed","clamp","squaredSegmentDistance","t","squaredDistance","solveLinearSystem","maxRow","maxEl","absValue","j","coef","toDegrees","angleInRadians","toRadians","angleInDegrees","modulo","lerp","toFixed","decimals","factor","round","asString","MAX_CACHE_SIZE","cache","cacheSize","withAlpha","output","rgbaToLcha","lchaToRgba","fromString","parseRgba","asArray","isStringColor","IconImageCache","iconImage","src","crossOrigin","getKey","maxCacheSize","colorString","LayerProperty","BaseLayer","managed","zIndex","states","background","maxResolution","minResolution","maxZoom","minZoom","opacity","visible","zindex","RenderEventType","ViewHint","ViewProperty","DEFAULT_MAX_ZOOM","DEFAULT_TILE_SIZE","METERS_PER_UNIT","Projection","tileGrid","worldExtent","RADIUS","HALF_SIZE","EXTENT","WORLD_EXTENT","MAX_SAFE_Y","EPSG3857Projection","PROJECTIONS","fromEPSG4326","dimension","toEPSG4326","EPSG4326Projection","axisOrientation","transforms","destination","transformFn","sourceCode","destinationCode","compareVersions","v1","v2","s1","s2","n1","n2","closestOnSegment","segment","along","coordinate1","coordinate2","rotate","cosAngle","sinAngle","scale","coord1","coord2","distance","squaredDistanceToSegment","worldsAway","getWorldsAway","sourceExtentWidth","DEFAULT_RADIUS","getDistance","c1","c2","radius","lat1","lat2","deltaLatBy2","deltaLonBy2","getAreaInternal","coords","jj","geometries","bearing","lon1","dByR","lat","lon","warn","showCoordinateWarning","disableCoordinateWarning","disable","cloneTransform","identityTransform","addProjection","addProj","addTransformFunc","addProjections","projections","projectionLike","getProj","getPointResolution","units","pointResolution","getter","metersPerUnit","projUnits","getTransformFromProjections","vertices","addEquivalentProjections","addEquivalentTransforms","projections1","projections2","forwardTransform","inverseTransform","projection1","projection2","createProjection","defaultCode","equivalent","equalUnits","sourceProjection","destinationProjection","transformFunc","getTransformFunc","getTransform","toUserCoordinate","fromUserCoordinate","destProjection","toUserExtent","fromUserExtent","addCommon","EPSG3857_PROJECTIONS","EPSG4326_PROJECTIONS","createExtent","onlyCenter","smooth","isMoving","centerShift","viewWidth","viewHeight","shiftX","shiftY","none","getViewportClampedResolution","maxExtent","viewportSize","showFullExtent","xResolution","yResolution","getSmoothClampedResolution","createSnapToResolutions","resolutions","cappedMaxRes","capped","createSnapToPower","power","tolerance","minZoomLevel","cappedZoomLevel","zoomLevel","newResolution","createMinMaxResolution","createSnapToN","theta","createSnapToZero","easeIn","easeOut","inAndOut","linear","transform2D","anchor","anchorX","anchorY","deltaX","deltaY","translate","tmpTransform","createTransform","Geometry","revision","squaredTolerance","closestPoint","minSquaredDistance","coord","sourceProj","getProjection","inCoordinates","outCoordinates","pixelExtent","projectedExtent","composeTransform","SimpleGeometry","simplifiedGeometry","layout","getStrideForLayout","nesting","getLayoutForStride","transformGeom2D","simpleGeometry","assignClosest","offset1","offset2","maxSquaredDelta","squaredDelta","squaredDx","arrayMaxSquaredDelta","ends","multiArrayMaxSquaredDelta","endss","assignClosestPoint","maxDelta","isRing","tmpPoint","assignClosestArrayPoint","assignClosestMultiArrayPoint","deflateCoordinate","deflateCoordinates","deflateCoordinatesArray","coordinatess","deflateMultiCoordinatesArray","coordinatesss","douglasPeucker","simplifiedFlatCoordinates","simplifiedOffset","markers","stack","maxSquaredDistance","douglasPeuckerArray","simplifiedEnds","snap","quantize","quantizeArray","quantizeMultiArray","simplifiedEndss","inflateCoordinates","inflateCoordinatesArray","inflateMultiCoordinatesArray","linearRing","twiceArea","linearRings","linearRingss","LinearRing","linearRingArea","Point","linearRingContainsExtent","linearRingContainsXY","wn","linearRingsContainsXY","linearRingssContainsXY","getInteriorPointOfArray","flatCenters","flatCentersOffset","intersections","rr","pointX","maxSegmentLength","segmentLength","getInteriorPointsOfMultiArray","interiorPoints","forEach","ret","intersectsLineString","coordinatesExtent","forEachSegment","point1","point2","intersectsLineStringArray","intersectsLinearRing","intersectsLinearRingArray","intersectsLinearRingMultiArray","linearRingIsClockwise","edge","linearRingsAreOriented","isClockwise","linearRingssAreOriented","orientLinearRings","reverseCoordinates","orientLinearRingsArray","inflateEnds","prevEndIndex","startOrientation","orientation","Polygon","polygon","linearRingsArea","flatCenter","circular","sphereRadius","sphereOffset","fromExtent","DEFAULT_MIN_ZOOM","View","resolutionConstraintInfo","createResolutionConstraint","centerConstraint","createCenterConstraint","resolutionConstraint","rotationConstraint","createRotationConstraint","padding","oldPadding","newPadding","offsetX","offsetY","newOptions","var_args","animationCount","animationCallback","series","animation","isNoopAnimation","now","more","seriesComplete","elapsed","fraction","constrainedResolution","constrainedRotation","currentCenter","rotateCoordinate","addCoordinate","currentResolution","w","hints","zoom","enabled","logPower","reducedSize","calculateCenterOn","zoomFactor","nearest","baseLevel","geometryOrExtent","polygonFromExtent","minRotX","minRotY","maxRotX","maxRotY","rotX","rotY","rotatedExtent","centerRot","centerX","centerY","shiftedCenter","deltaCoordinates","newRotation","hint","doNotCancelAnims","forceMoving","newCenter","duration","resolutionDirection","targetCenter","targetResolution","targetZoom","targetRes","returnValue","centerNone","multiWorld","projExtent","constrainOnlyCenter","defaultMaxResolution","defaultMinResolution","constrainRotation","rotationNone","coordinatesEqual","Layer","baseOptions","pixel","view","frameState","map","layerState","layerExtent","inView","getAttributions","attributions","layerRenderer","layerStatesArray","arrayLayerState","viewState","MapRenderer","coordinateToPixelTransform","pixelToCoordinateTransform","hitTolerance","checkWrapped","layerFilter","thisArg2","forEachFeatureAtCoordinate","layer","translatedCoordinate","offsets","layerStates","numLayers","tmpCoord","order","iconImageCache","expireIconCache","RenderEvent","inversePixelTransform","CLASS_HIDDEN","CLASS_UNSELECTABLE","CLASS_UNSUPPORTED","CLASS_CONTROL","CLASS_COLLAPSED","fontRegEx","fontRegExMatchIndex","getFontParameters","fontSpec","createCanvasContext2D","canvasPool","canvas","releaseCanvas","replaceNode","newNode","oldNode","removeNode","removeChildren","replaceChildren","children","oldChildren","oldChild","newChild","defaultFont","defaultFillStyle","defaultLineCap","defaultLineDash","defaultLineDashOffset","defaultLineJoin","defaultMiterLimit","defaultStrokeStyle","defaultTextAlign","defaultTextBaseline","defaultPadding","defaultLineWidth","checkedFonts","measureContext","measureFont","textHeights","registerFont","referenceFonts","interval","referenceWidth","isAvailable","fontStyle","fontWeight","fontFamily","available","referenceFont","measureTextWidth","fonts","font","measureTextHeight","measureElement","metrics","measureText","measureAndCacheTextWidth","curr","getTextDimensions","baseStyle","chunks","widths","heights","lineWidths","lineWidth","lineHeight","currentWidth","currentHeight","drawImageOrLabel","labelOrImage","originX","originY","executeLabelInstructions","label","contextInstructions","CompositeMapRenderer","declutterLayers","previousElement","sourceState","layers","GroupEvent","LayerGroup","layersArray","listenerKeys","collectionEvent","collection","currentLayers","pos","ownLayerState","defaultZIndex","MapEvent","MapBrowserEvent","originalEvent","dragging","activePointers","MapBrowserEventType","PointerEventType","MapBrowserEventHandler","moveTolerance","pointerEvent","newEvent","doc","MapEventType","MapProperty","DROP","PriorityQueue","priorityFunction","keyFunction","priorities","elementKey","priority","startIndex","lIndex","rIndex","smallerChildIndex","parentIndex","TileState","TileQueue","tilePriorityFunction","tileChangeCallback","added","tile","tileKey","maxTotalLoading","maxNewLoads","newLoads","getTilePriority","tileSourceKey","tileCenter","tileResolution","Control","mapEvent","Attribution","tipLabel","expandClassName","collapseLabel","collapseClassName","activeLabel","cssClasses","visibleAttributions","collapsible","collapsed","Rotate","compassClassName","contains","Zoom","zoomInClassName","zoomOutClassName","zoomInLabel","zoomOutLabel","zoomInTipLabel","zoomOutTipLabel","inElement","outElement","currentZoom","newZoom","defaults","controls","InteractionProperty","Interaction","mapBrowserEvent","active","pan","zoomByDelta","DoubleClickZoom","stopEvent","browserEvent","PointerInteraction","handledUp","handled","centroid","pointerEvents","clientX","clientY","all","conditions","pass","altKeyOnly","altShiftKeysOnly","focus","targetElement","activeElement","focusWithTabindex","always","mouseActionButton","never","singleClick","noModifierKeys","platformModifierKey","shiftKeyOnly","targetNotEditable","tagName","mouseOnly","primaryAction","DragPan","condition","targetPointers","centroidFromPointers","scaleCoordinate","centerpx","DragRotate","RenderBox","startPixel","endPixel","px","DragBoxEventType","DragBoxEvent","DragBox","completeBox","DragZoom","Key","KeyboardPan","keyEvent","mapUnitsDelta","KeyboardZoom","Kinetic","decay","minVelocity","delay","lastIndex","firstIndex","MouseWheelZoom","wheelEvent","timeLeft","useAnchor","PinchRotate","pointerOptions","rotationDelta","touch0","touch1","PinchZoom","scaleDelta","interactions","kinetic","hasArea","toSize","removeLayerMapProperty","setLayerMapProperty","Map","optionsInternal","createOptionsInternal","defaultControls","defaultInteractions","viewOptions","control","interaction","overlay","features","addLayersFrom","layerGroup","viewportPosition","scaleX","scaleY","eventPosition","applyTransform","renderer","viewCoordinate","rootNode","interactionsArray","tileQueue","lowOnFrameBudget","postRenderFunctions","keyboardEventTarget","time","previousFrameState","viewHints","equalsExtent","oldLayerGroup","computedStyle","oldSize","overlays","TileProperty","BaseTileLayer","preload","useInterimTilesOnError","ImageState","LayerRenderer","tiles","tileRange","imageState","pixelContext","createPixelContext","CanvasLayerRenderer","col","row","backgroundColor","layerClassName","topLeft","topRight","bottomRight","bottomLeft","inverted","pixelRatio","Tile","tileCoord","listenImage","loadHandler","errorHandler","img","listening","decoding","loaded","load","resolve","reject","handleLoad","unlisten","handleError","decodeFallback","ImageTile","tileLoadFunction","getBlankImage","ctx","ERROR_THRESHOLD","MAX_SUBDIVISION","MAX_TRIANGLE_WIDTH","Triangulation","targetProj","targetExtent","maxSourceExtent","errorThreshold","destinationResolution","transformInvCache","transformInv","destinationTopLeft","destinationTopRight","destinationBottomRight","destinationBottomLeft","sourceTopLeft","sourceTopRight","sourceBottomRight","sourceBottomLeft","maxSubdivision","leftBound","triangle","newTriangle","aSrc","bSrc","cSrc","dSrc","sourceQuadExtent","sourceCoverageX","sourceWorldWidth","wrapsX","needsSubdivision","targetQuadExtent","isNotFinite","centerSrc","bc","bcSrc","da","daSrc","ab","abSrc","cd","cdSrc","brokenDiagonalRendering_","drawTestTriangle","u1","u2","verifyBrokenDiagonalRendering","isBrokenDiagonalRendering","calculateSourceResolution","sourceCenter","sourceResolution","targetMetersPerUnit","sourceMetersPerUnit","sourceExtent","compensationFactor","calculateSourceExtentResolution","render","triangulation","gutter","renderEdges","interpolate","drawSingle","pixelRound","sourceDataExtent","stitchContext","canvasWidthInUnits","canvasHeightInUnits","stitchScale","xPos","yPos","srcWidth","srcHeight","targetTopLeft","u0","v0","sourceNumericalShiftX","sourceNumericalShiftY","augmentedMatrix","affineCoefs","ud","vd","ReprojTile","sourceTileGrid","targetTileGrid","wrappedTileCoord","getTileFunction","maxTargetExtent","limitedTargetExtent","sourceProjExtent","errorThresholdInPixels","sourceRange","srcX","srcY","renderReprojected","leftToLoad","sourceListenKey","TileRange","CanvasTileLayerRenderer","tileLayer","tileState","tilePixelRatio","tileOrigin","tileSize","viewResolution","viewCenter","tileSource","sourceRevision","canvasExtent","tilesToDrawByZ","findLoadedTiles","tmpExtent","tmpTileRange","viewport","inTransition","childTileRange","covered","canvasScale","canvasTransform","toTransformString","zs","clips","clipZs","currentClip","currentZ","currentTilePixelSize","currentScale","originTileCoord","originTileExtent","origin","tileGutter","tilesToDraw","tileCoordKey","xIndex","nextX","yIndex","nextY","transition","contextSaved","clip","alphaChanged","postRenderFunction","usedTiles","tileCallback","wantedTiles","tileCount","TileLayer","LRUCache","highWaterMark","keep","getKeyZXY","fromKey","withinExtentAndZ","TileCache","TileEventType","Source","adaptAttributions","self","attributionLike","tmpTileCoord","DECIMALS","TileGrid","restrictedTileRange","tempTileRange","tempExtent","tileCoordExtent","createOrUpdateTileRange","tileCoordZ","tileCoordX","tileCoordY","opt_tileCoord","reverseIntersectionPolicy","createOrUpdateTileCoord","opt_direction","fullTileRanges","WMTSTileGrid","getForProjection","createForProjection","extentFromProjection","createForExtent","resolutionsFromExtent","half","TileSource","tileCache","getTileGridForProjection","scaleSize","TileSourceEvent","createFromTemplate","template","zRegEx","xRegEx","yRegEx","dashYRegEx","range","createFromTemplates","templates","tileUrlFunctions","createFromTileUrlFunctions","tileCoordHash","expandUrl","urls","startCharCode","stopCharCode","charCode","stop","UrlTile","tileUrlFunction","TileImage","defaultTileLoadFunction","usedTileCache","thisProj","projKey","urlTileCoord","tileUrl","newTile","interimTile","tilegrid","proj","imageTile","appendParams","uri","keyParams","qs","DEFAULT_VERSION","getRequestUrl","baseUrl","bbox","v13","getImageSrc","serverType","imageResolution","imageSize","dpi","getRequestParams","request","TileWMS","transparent","projectionObj","sourceProjectionObj","sourceProjCoord","tileExtent","baseParams","mpu","pixelSize","quickselect","quickselectStep","defaultCompare","sd","newLeft","newRight","swap","RBush$1","maxEntries","toBBox","nodesToSearch","childBBox","tmpNode","createNode","equalsFn","path","indexes","goingUp","findItem","items","N","M","calcBBox","N2","N1","multiSelect","right2","right3","minArea","minEnlargement","targetNode","bboxArea","enlargement","enlargedArea","isNode","insertPath","splitIndex","minOverlap","bbox1","distBBox","bbox2","overlap","intersectionArea","compareMinX","compareNodeMinX","compareMinY","compareNodeMinY","xMargin","yMargin","leftBBox","rightBBox","margin","bboxMargin","siblings","p","destNode","ImageStyle","displacement","rotateWithView","asColorLike","RegularShape","fill","renderOptions","stroke","lineJoin","strokeWidth","miterLimit","r1","r2","points","miterRatio","bevelAdd","aa","bb","dd","innerMiterRatio","innerLength","lineCap","lineDash","lineDashOffset","strokeStyle","maxRadius","radius2","startAngle","angle0","radiusC","CircleStyle","Fill","Stroke","Style","defaultGeometryFunction","toFunction","styleFunction","defaultStyles","createDefaultStyle","createEditingStyle","blue","taintedTestContext","IconImage","cacheKey","calculateScale","wantedWidth","wantedHeight","Icon","getIconImage","onload","iconImageSize","DEFAULT_FILL_COLOR","Text","overflow","maxAngle","placement","repeat","textAlign","justify","textBaseline","numTypes","NoneType","BooleanType","NumberType","StringType","ColorType","NumberArrayType","AnyType","typeNames","namedTypes","typeName","namedType","includesType","broad","specific","overlapsType","oneType","otherType","isType","expected","LiteralExpression","CallExpression","operator","newParsingContext","getTypeFromHint","typeHint","encoded","parseCallExpression","Ops","parsers","createParser","_","withArgsCount","withGetArgs","firstArg","withVarArgs","withNoArgs","usesFeatureId","parseArgsOfType","narrowArgsType","parsedArgs","outputType","withEvenArgs","parseMatchArgs","parseInterpolateArgs","withOddArgs","parseCaseArgs","parseInArgs","parsePaletteArgs","varName","initialValue","operation","minArgs","maxArgs","argCount","plural","argType","expression","gotType","expectedType","sameType","argsCount","inputType","fallback","expectedInputType","interpolationType","interpolation","needleType","parsedColors","returnType","argValidators","actualType","newEvaluationContext","buildExpression","actual","compileExpression","colorValue","compileAssertionExpression","compileAccessorExpression","compileLogicalExpression","compileComparisonExpression","compileNumericExpression","compileMatchExpression","compileInterpolateExpression","op","previousInput","previousOutput","isColor","interpolateColor","interpolateNumber","input1","output1","input2","output2","rgba1","rgba2","lcha1","lcha2","deltaHue","lcha","rulesToStyleFunction","rules","parsingContext","evaluator","buildRuleSet","evaluationContext","flatStylesToStyleFunction","flatStyles","evaluators","buildStyle","nonNullCount","compiledRules","rule","filter","styleLength","someMatched","filterEvaluator","styleEvaluator","flatStyle","evaluateFill","buildFill","evaluateStroke","buildStroke","evaluateText","buildText","evaluateImage","buildImage","evaluateZIndex","numberEvaluator","empty","prefix","evaluateColor","colorLikeEvaluator","evaluateWidth","evaluateLineCap","stringEvaluator","evaluateLineJoin","evaluateLineDash","numberArrayEvaluator","evaluateLineDashOffset","evaluateMiterLimit","evaluateValue","evaluateBackgroundFill","evaluateBackgroundStroke","evaluateFont","evaluateMaxAngle","evaluateOffsetX","evaluateOffsetY","evaluateOverflow","booleanEvaluator","evaluatePlacement","evaluateRepeat","evaluateScale","sizeLikeEvaluator","evaluateRotateWithView","evaluateRotation","evaluateAlign","evaluateJustify","evaluateBaseline","evaluatePadding","buildIcon","buildShape","buildCircle","srcName","requireString","evaluateAnchor","coordinateEvaluator","evaluateOpacity","evaluateDisplacement","anchorOrigin","optionalIconOrigin","anchorXUnits","optionalIconAnchorUnits","anchorYUnits","optionalColorLike","optionalString","optionalNumberArray","offsetOrigin","optionalNumber","optionalSize","declutterMode","optionalDeclutterMode","icon","pointsName","requireNumber","radius1","shape","evaluateRadius","circle","Circle","requireColorLike","requireNumberArray","requireSizeLike","BaseVectorLayer","RBush","renderOrder","toStyleLike","toStyleFunction","Instruction","fillInstruction","strokeInstruction","beginPathInstruction","closePathInstruction","VectorContext","hitDetectionRenderer","circleGeometry","geometryCollectionGeometry","lineStringGeometry","multiLineStringGeometry","multiPointGeometry","multiPolygonGeometry","pointGeometry","polygonGeometry","fillStyle","imageStyle","declutterImageWithText","textStyle","CanvasBuilder","dashArray","dash","myEnd","closed","skipFirst","lastXCoord","lastYCoord","nextCoord","skipped","lastRel","nextRel","builderEnds","builderEnd","builderBegin","builderEndss","myEnds","CanvasInstruction","hitDetectionInstructions","instruction","fillStyleColor","strokeStyleColor","strokeStyleLineCap","strokeStyleLineDash","strokeStyleLineDashOffset","strokeStyleLineJoin","strokeStyleWidth","strokeStyleMiterLimit","createFill","applyStroke","endGeometryInstruction","CanvasImageBuilder","myBegin","sharedData","CanvasLineStringBuilder","moveToLineToInstruction","CanvasPolygonBuilder","numEnds","circleInstruction","lineChunk","chunkLength","cursor","chunkM","currentChunk","missing","matchingChunk","chunkStart","chunkEnd","acos","m12","m23","x12","y12","x23","y23","TEXT_ALIGN","CanvasTextBuilder","instructions","fillState","strokeState","textState","geometryType","flatOffset","oo","cc","chunk","chunkBegin","geometryWidths","beg","p0","p1","p2","p3","currentFillStyle","strokeKey","textKey","fillKey","baseline","textFillStyle","textStrokeStyle","textScale","textOffsetX","textOffsetY","textRotateWithView","textRotation","BATCH_CONSTRUCTORS","PolygonBuilder","Builder","ImageBuilder","LineStringBuilder","TextBuilder","BuilderGroup","builderInstructions","zKey","builders","builderKey","builderInstruction","builderType","zIndexKey","replays","replay","drawTextOnPath","startM","segmentM","advance","beginX","beginY","startOffset","startLength","endM","reverse","flat","PI","singleSegment","previousAngle","iStart","charLength","chars","lineStringLength","p4","getDeclutterBox","replayImageOrLabelArgs","rtlRegEx","horizontalTextAlign","createTextChunks","acc","line","Executor","overlaps","textIsArray","renderWidth","leftRight","strokeInstructions","fillInstructions","lineOffset","widthHeightIndex","lineWidthIndex","previousFont","fillStrokeArgs","sheetWidth","sheetHeight","snapToPixel","fillStroke","boxW","boxH","boxX","boxY","contextScale","imageOrLabel","dimensions","box","strokePadding","repeatSize","featureCallback","hitExtent","declutterTree","pixelCoordinates","transformSetFromArray","prevX","prevY","roundX","roundY","pendingFill","pendingStroke","lastFillInstruction","lastStrokeInstruction","coordinateCache","viewRotation","viewRotationFromTransform","batchSize","currentGeometry","labelWithAnchor","backgroundFill","backgroundStroke","widthIndex","imageArgs","imageDeclutterBox","measurePixelRatio","pixelRatioScale","cachedWidths","pathLength","textLength","drawChars","part","ORDER","ExecutorGroup","allInstructions","renderBuffer","flatClipCoords","executors","instructionByZindex","declutteredFeatures","contextSize","newContext","getPixelIndexArray","imageData","idx","executor","builderTypes","circlePixelIndexArrayCache","maxDistanceSq","distances","distanceSq","pixelIndex","CanvasImmediateRenderer","userTransform","localTransform","close","flatMidpoint","geometryExtent","flatMidpoints","flatInteriorPoint","flatInteriorPoints","contextFillState","contextStrokeState","contextTextState","imagePixelRatio","imageAnchor","imageOrigin","imageScale","textFillStyleColor","textStrokeStyleColor","textStrokeStyleLineCap","textStrokeStyleLineDash","textStrokeStyleLineDashOffset","textStrokeStyleLineJoin","textStrokeStyleWidth","textStrokeStyleMiterLimit","textFont","textText","textTextAlign","textTextBaseline","HIT_DETECT_RESOLUTION","createHitDetectionImageData","featureCount","indexFactor","featuresByZIndex","featureStyleFunction","originalStyle","imgSize","imgContext","byGeometryType","zIndexKeys","geomAndStyle","kk","hitDetect","resultFeatures","SIMPLIFY_TOLERANCE","GEOMETRY_RENDERERS","renderPointGeometry","renderLineStringGeometry","renderPolygonGeometry","renderMultiPointGeometry","renderMultiLineStringGeometry","renderMultiPolygonGeometry","renderGeometryCollectionGeometry","renderCircleGeometry","defaultOrder","feature1","feature2","getSquaredTolerance","getTolerance","builderGroup","declutterBuilderGroup","circleReplay","textReplay","renderFeature","replayGroup","loading","renderFeatureInternal","renderGeometry","geometryRenderer","lineStringReplay","polygonReplay","imageBuilderGroup","imageReplay","textBuilderGroup","CanvasVectorLayerRenderer","vectorLayer","executorGroup","vectorSource","endWorld","world","compositionContext","transformToString","declutterExecutorGroup","clipped","intersectsExtent","executorGroups","animating","interacting","updateWhileAnimating","updateWhileInteracting","frameStateExtent","vectorLayerRevision","vectorLayerRenderBuffer","vectorLayerRenderOrder","defaultRenderOrder","renderedExtent","loadExtents","wrapCoordinateX","loadExtent","wrapExtentX","CanvasBuilderGroup","getRenderTolerance","getSquaredRenderTolerance","ready","dirty","userExtent","replayGroupInstructions","VectorLayer","RBush_","extents","rbush","circleExtent","GeometryCollection","geometryCollection","cloneGeometries","geometriesArray","simplifiedGeometries","simplified","simplifiedGeometryCollection","clonedGeometries","interpolatePoint","cumulativeLengths","lineStringCoordinateAtM","extrapolate","lo","hi","m0","m1","lineStringsCoordinateAtM","LineString","lineString","MultiLineString","lineStrings","multiLineString","midpoints","midpoint","MultiPoint","multiPoint","MultiPolygon","polygons","thisEndss","newEndss","multiPolygon","linearRingssArea","linearRingssCenter","prevEnds","lastEnds","RenderFeature","VectorEventType","loadFeaturesXhr","format","success","failure","dataProjection","VectorSourceEvent","VectorSource","allStrategy","useSpatialIndex","featureKey","valid","indexedFeature","newFeatures","geometryFeatures","modifyingCollection","fast","featureId","removeAndIgnoreReturn","clearEvent","anExtent","closestFeature","previousMinSquaredDistance","minDistance","sid","loadedExtentsRtree","extentsToLoad","extentToLoad","featureChangeKeys","removed","loader","WMTS","requestEncoding","localContext","events","FullScreenEventType","FullScreen","labelActive","isFullScreenSupported","isFullScreen","exitFullScreen","requestFullScreenWithKeys","requestFullScreen","wasInFullscreen","fullscreen","oldMap","body","UNITS_PROP","LEADING_DIGITS","DEFAULT_DPI","ScaleLine","pointResolutionUnits","nominalCount","suffix","metersPerDegree","decimalCount","previousCount","previousWidth","previousDecimalCount","decimal","resolutionScale","mapScale","stepWidth","scaleSteps","cls","isLast","lengthString","inchesPerMeter","DrawEventType","DrawEvent","getTraceTargets","appendGeometryTraceTargets","getSquaredDistance","getCoordinate","getCumulativeSquaredDistance","endIndex","lowIndex","highIndex","lowWholeIndex","highWholeIndex","interpolateCoordinate","appendTraceTarget","polys","sharedUpdateInfo","getTraceTargetUpdate","traceState","snapTolerance","closestTargetDistance","newTargetIndex","newEndIndex","targetIndex","minSegmentDistance","coordinateIndex","rel","getPointSegmentRelationship","newTarget","considerBothDirections","newCoordinate","forwardDistance","reverseDistance","ring","sharedRel","py","Draw","getMode","geometryFunction","squaredLength","squaredCoordinateDistance","getDefaultStyleFunction","trace","move","lowerLeft","upperRight","previouslyForward","currentlyForward","toIndex","updatedTraceTarget","oldTarget","tracing","startingToDraw","downPx","clickPx","at","potentiallyDone","potentiallyFinishCoordinates","sketchCoords","finishCoordinate","finishPixel","sketchLineGeom","sketchFeature","newDrawing","ending","sketchFeatures","overlaySource","CIRCLE_CENTER_INDEX","CIRCLE_CIRCUMFERENCE_INDEX","tempSegment","ModifyEventType","ModifyEvent","Modify","writer","segments","ss","rBush","nodesToRemove","nodeToRemove","segmentData","lines","rings","centerSegmentData","circumferenceSegmentData","featureSegments","vertexFeature","vertex","dragSegment","depth","coordinateDistance","pixelCoordinate","insertVertices","vertexExtent","segmentDataMatches","componentSegments","compareIndexes","segmentDataMatch","closestVertex","closestOnSegmentData","sortByDistance","projectedDistanceToSegmentDataSquared","hitPointGeometry","geom","viewExtent","bufferExtent","closestSegment","vertexPixel","dist","vertexSegments","pixel1","pixel2","squaredDist1","squaredDist2","geometryUid","rTree","newSegmentData","newSegmentData2","dragSegments","segmentsByFeature","deleted","component","newIndex","pointCoordinates","distanceToCenterSquared","distanceToCircumference","SelectEventType","SelectEvent","selected","deselected","originalFeatureStyles","Select","MAP_RESOLUTIONS","createDefaultMapView","getDefaultInteractions","olDefaultInteractions","createDefaultMap","OLMap","createMarkerLayer","createManualZoneLayer","createBatimentLayer","createBatimentPolygonStyle","createParcelleLayer","createParcellePolygonStyle","getFeatureInfo","getBatimentFeatureInfo","getCadastreFeatureInfo","getMatrixIds","matrixIds","createCadastreLayer","createTeFenuaLayer","formatArea","FeatureFormat","transformGeometryWithOptions","write","featureProjection","transformed","equivalentProjection","fromProjection","toProjection","GeometryConstructor","orientFlatCoordinates","createRenderFeature","createGeometry","JSONFeature","getObject","GeoJSON","geoJSONFeature","readGeometryInternal","geoJSONObject","geoJSONFeatureCollection","geoJSONFeatures","featureObject","readGeometry","crs","writeGeometry","objects","readPointGeometry","readLineStringGeometry","readPolygonGeometry","readMultiPointGeometry","readMultiLineStringGeometry","readMultiPolygonGeometry","readGeometryCollectionGeometry","geometryObject","geoJSON","writePointGeometry","writeLineStringGeometry","writePolygonGeometry","writeMultiPointGeometry","writeMultiLineStringGeometry","writeMultiPolygonGeometry","writeGeometryCollectionGeometry","GeolocationErrorType","GeolocationError","Geolocation","tracking","projectedPosition","circularPolygon","MAPS","MARKER_PATH","initialize","viewOnMap","displayMap","getInputFromMap","mapElement","getLink","parcelleToHtml","batimentToHtml","labels","zoneToHtml","getMapFromLocationButton","fitExtent","getHtml","toHtml","zones","centerMapOnLocation","location","centerMap","olCreateEmpty","olExtend","olIsEmpty","createControl","tooltip","frame","updateInformations","informations","initMap","initFeatures","zoneSource","geodata","addInteractions","geojson","mapView","champ","zoneManuellesLayer","entry_type","add_zone","add_batiment","add_parcelle","hideHelps","draw","select","modify","clickOnAddZone","clickOnEffaceZone","clickOnToggleCadastre","pjson","updateChampWith","addBatimentParcelleInteraction","lookForBatimentsAndParcelles","deleteSelectedZones","attribute","addRemoveFeatures","areEquals","ft","lookForParcelles","lookForBatiments","json","batimentEquals","ev","parcellesLayer","batimentsLayer","markerLayer","cadastreLayer","toggleCondidentielExplanation","showMotivation","motivationCancel","stateElement","show","enable","hide","showDeleteJustificatif","justificatif","isInputElement","deleteJustificatif","showImportJustificatif","showFusion","showNewAccount","application","Application","registerControllers","DS","ActiveStorage.start","Turbo.session","__vitePreload"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,290,291,292,293],"sources":["../../../node_modules/core-js/internals/global-this.js","../../../node_modules/core-js/internals/fails.js","../../../node_modules/core-js/internals/descriptors.js","../../../node_modules/core-js/internals/function-bind-native.js","../../../node_modules/core-js/internals/function-call.js","../../../node_modules/core-js/internals/object-property-is-enumerable.js","../../../node_modules/core-js/internals/create-property-descriptor.js","../../../node_modules/core-js/internals/function-uncurry-this.js","../../../node_modules/core-js/internals/classof-raw.js","../../../node_modules/core-js/internals/indexed-object.js","../../../node_modules/core-js/internals/is-null-or-undefined.js","../../../node_modules/core-js/internals/require-object-coercible.js","../../../node_modules/core-js/internals/to-indexed-object.js","../../../node_modules/core-js/internals/is-callable.js","../../../node_modules/core-js/internals/is-object.js","../../../node_modules/core-js/internals/get-built-in.js","../../../node_modules/core-js/internals/object-is-prototype-of.js","../../../node_modules/core-js/internals/environment-user-agent.js","../../../node_modules/core-js/internals/environment-v8-version.js","../../../node_modules/core-js/internals/symbol-constructor-detection.js","../../../node_modules/core-js/internals/use-symbol-as-uid.js","../../../node_modules/core-js/internals/is-symbol.js","../../../node_modules/core-js/internals/try-to-string.js","../../../node_modules/core-js/internals/a-callable.js","../../../node_modules/core-js/internals/get-method.js","../../../node_modules/core-js/internals/ordinary-to-primitive.js","../../../node_modules/core-js/internals/define-global-property.js","../../../node_modules/core-js/internals/shared-store.js","../../../node_modules/core-js/internals/shared.js","../../../node_modules/core-js/internals/to-object.js","../../../node_modules/core-js/internals/has-own-property.js","../../../node_modules/core-js/internals/uid.js","../../../node_modules/core-js/internals/well-known-symbol.js","../../../node_modules/core-js/internals/to-primitive.js","../../../node_modules/core-js/internals/to-property-key.js","../../../node_modules/core-js/internals/document-create-element.js","../../../node_modules/core-js/internals/ie8-dom-define.js","../../../node_modules/core-js/internals/object-get-own-property-descriptor.js","../../../node_modules/core-js/internals/v8-prototype-define-bug.js","../../../node_modules/core-js/internals/an-object.js","../../../node_modules/core-js/internals/object-define-property.js","../../../node_modules/core-js/internals/create-non-enumerable-property.js","../../../node_modules/core-js/internals/function-name.js","../../../node_modules/core-js/internals/inspect-source.js","../../../node_modules/core-js/internals/weak-map-basic-detection.js","../../../node_modules/core-js/internals/shared-key.js","../../../node_modules/core-js/internals/hidden-keys.js","../../../node_modules/core-js/internals/internal-state.js","../../../node_modules/core-js/internals/make-built-in.js","../../../node_modules/core-js/internals/define-built-in.js","../../../node_modules/core-js/internals/math-trunc.js","../../../node_modules/core-js/internals/to-integer-or-infinity.js","../../../node_modules/core-js/internals/to-absolute-index.js","../../../node_modules/core-js/internals/to-length.js","../../../node_modules/core-js/internals/length-of-array-like.js","../../../node_modules/core-js/internals/array-includes.js","../../../node_modules/core-js/internals/object-keys-internal.js","../../../node_modules/core-js/internals/enum-bug-keys.js","../../../node_modules/core-js/internals/object-get-own-property-names.js","../../../node_modules/core-js/internals/object-get-own-property-symbols.js","../../../node_modules/core-js/internals/own-keys.js","../../../node_modules/core-js/internals/copy-constructor-properties.js","../../../node_modules/core-js/internals/is-forced.js","../../../node_modules/core-js/internals/export.js","../../../node_modules/core-js/internals/to-string-tag-support.js","../../../node_modules/core-js/internals/classof.js","../../../node_modules/core-js/internals/to-string.js","../../../node_modules/core-js/modules/es.string.at-alternative.js","../../../node_modules/core-js/internals/object-keys.js","../../../node_modules/core-js/internals/object-define-properties.js","../../../node_modules/core-js/internals/html.js","../../../node_modules/core-js/internals/object-create.js","../../../node_modules/core-js/internals/add-to-unscopables.js","../../../node_modules/core-js/modules/es.array.at.js","../../../node_modules/core-js/internals/array-buffer-basic-detection.js","../../../node_modules/core-js/internals/define-built-in-accessor.js","../../../node_modules/core-js/internals/correct-prototype-getter.js","../../../node_modules/core-js/internals/object-get-prototype-of.js","../../../node_modules/core-js/internals/function-uncurry-this-accessor.js","../../../node_modules/core-js/internals/is-possible-prototype.js","../../../node_modules/core-js/internals/a-possible-prototype.js","../../../node_modules/core-js/internals/object-set-prototype-of.js","../../../node_modules/core-js/internals/array-buffer-view-core.js","../../../node_modules/core-js/modules/es.typed-array.at.js","../../../node_modules/@rails/ujs/app/assets/javascripts/rails-ujs.esm.js","../../../node_modules/@gouvfr/dsfr/dist/dsfr.module.js","../../../app/javascript/shared/activestorage/ujs.js","../../../app/javascript/shared/safari-11-empty-file-workaround.ts","../../../app/javascript/shared/toggle-target.js","../../../app/javascript/new_design/form-validation.js","../../../node_modules/ol/events/Event.js","../../../node_modules/ol/ObjectEventType.js","../../../node_modules/ol/Disposable.js","../../../node_modules/ol/array.js","../../../node_modules/ol/functions.js","../../../node_modules/ol/obj.js","../../../node_modules/ol/events/Target.js","../../../node_modules/ol/events/EventType.js","../../../node_modules/ol/events.js","../../../node_modules/ol/Observable.js","../../../node_modules/ol/util.js","../../../node_modules/ol/Object.js","../../../node_modules/ol/asserts.js","../../../node_modules/ol/Feature.js","../../../node_modules/ol/CollectionEventType.js","../../../node_modules/ol/Collection.js","../../../node_modules/ol/has.js","../../../node_modules/ol/transform.js","../../../node_modules/ol/extent/Relationship.js","../../../node_modules/ol/extent.js","../../../node_modules/color-space/rgb.js","../../../node_modules/color-space/xyz.js","../../../node_modules/color-space/luv.js","../../../node_modules/color-space/lchuv.js","../../../node_modules/color-name/index.js","../../../node_modules/color-parse/index.js","../../../node_modules/color-space/hsl.js","../../../node_modules/color-rgba/index.js","../../../node_modules/ol/math.js","../../../node_modules/ol/color.js","../../../node_modules/ol/style/IconImageCache.js","../../../node_modules/ol/layer/Property.js","../../../node_modules/ol/layer/Base.js","../../../node_modules/ol/render/EventType.js","../../../node_modules/ol/ViewHint.js","../../../node_modules/ol/ViewProperty.js","../../../node_modules/ol/tilegrid/common.js","../../../node_modules/ol/proj/Units.js","../../../node_modules/ol/proj/Projection.js","../../../node_modules/ol/proj/epsg3857.js","../../../node_modules/ol/proj/epsg4326.js","../../../node_modules/ol/proj/projections.js","../../../node_modules/ol/proj/transforms.js","../../../node_modules/ol/string.js","../../../node_modules/ol/coordinate.js","../../../node_modules/ol/sphere.js","../../../node_modules/ol/console.js","../../../node_modules/ol/proj.js","../../../node_modules/ol/centerconstraint.js","../../../node_modules/ol/resolutionconstraint.js","../../../node_modules/ol/rotationconstraint.js","../../../node_modules/ol/easing.js","../../../node_modules/ol/geom/flat/transform.js","../../../node_modules/ol/geom/Geometry.js","../../../node_modules/ol/geom/SimpleGeometry.js","../../../node_modules/ol/geom/flat/closest.js","../../../node_modules/ol/geom/flat/deflate.js","../../../node_modules/ol/geom/flat/simplify.js","../../../node_modules/ol/geom/flat/inflate.js","../../../node_modules/ol/geom/flat/area.js","../../../node_modules/ol/geom/LinearRing.js","../../../node_modules/ol/geom/Point.js","../../../node_modules/ol/geom/flat/contains.js","../../../node_modules/ol/geom/flat/interiorpoint.js","../../../node_modules/ol/geom/flat/segments.js","../../../node_modules/ol/geom/flat/intersectsextent.js","../../../node_modules/ol/geom/flat/reverse.js","../../../node_modules/ol/geom/flat/orient.js","../../../node_modules/ol/geom/Polygon.js","../../../node_modules/ol/View.js","../../../node_modules/ol/layer/Layer.js","../../../node_modules/ol/renderer/Map.js","../../../node_modules/ol/render/Event.js","../../../node_modules/ol/css.js","../../../node_modules/ol/dom.js","../../../node_modules/ol/render/canvas.js","../../../node_modules/ol/renderer/Composite.js","../../../node_modules/ol/layer/Group.js","../../../node_modules/ol/MapEvent.js","../../../node_modules/ol/MapBrowserEvent.js","../../../node_modules/ol/MapBrowserEventType.js","../../../node_modules/ol/pointer/EventType.js","../../../node_modules/ol/MapBrowserEventHandler.js","../../../node_modules/ol/MapEventType.js","../../../node_modules/ol/MapProperty.js","../../../node_modules/ol/structs/PriorityQueue.js","../../../node_modules/ol/TileState.js","../../../node_modules/ol/TileQueue.js","../../../node_modules/ol/control/Control.js","../../../node_modules/ol/control/Attribution.js","../../../node_modules/ol/control/Rotate.js","../../../node_modules/ol/control/Zoom.js","../../../node_modules/ol/control/defaults.js","../../../node_modules/ol/interaction/Property.js","../../../node_modules/ol/interaction/Interaction.js","../../../node_modules/ol/interaction/DoubleClickZoom.js","../../../node_modules/ol/interaction/Pointer.js","../../../node_modules/ol/events/condition.js","../../../node_modules/ol/interaction/DragPan.js","../../../node_modules/ol/interaction/DragRotate.js","../../../node_modules/ol/render/Box.js","../../../node_modules/ol/interaction/DragBox.js","../../../node_modules/ol/interaction/DragZoom.js","../../../node_modules/ol/events/Key.js","../../../node_modules/ol/interaction/KeyboardPan.js","../../../node_modules/ol/interaction/KeyboardZoom.js","../../../node_modules/ol/Kinetic.js","../../../node_modules/ol/interaction/MouseWheelZoom.js","../../../node_modules/ol/interaction/PinchRotate.js","../../../node_modules/ol/interaction/PinchZoom.js","../../../node_modules/ol/interaction/defaults.js","../../../node_modules/ol/size.js","../../../node_modules/ol/Map.js","../../../node_modules/ol/layer/TileProperty.js","../../../node_modules/ol/layer/BaseTile.js","../../../node_modules/ol/ImageState.js","../../../node_modules/ol/renderer/Layer.js","../../../node_modules/ol/renderer/canvas/Layer.js","../../../node_modules/ol/Tile.js","../../../node_modules/ol/Image.js","../../../node_modules/ol/ImageTile.js","../../../node_modules/ol/reproj/common.js","../../../node_modules/ol/reproj/Triangulation.js","../../../node_modules/ol/reproj.js","../../../node_modules/ol/reproj/Tile.js","../../../node_modules/ol/TileRange.js","../../../node_modules/ol/renderer/canvas/TileLayer.js","../../../node_modules/ol/layer/Tile.js","../../../node_modules/ol/structs/LRUCache.js","../../../node_modules/ol/tilecoord.js","../../../node_modules/ol/TileCache.js","../../../node_modules/ol/source/TileEventType.js","../../../node_modules/ol/source/Source.js","../../../node_modules/ol/tilegrid/TileGrid.js","../../../node_modules/ol/tilegrid/WMTS.js","../../../node_modules/ol/tilegrid.js","../../../node_modules/ol/source/Tile.js","../../../node_modules/ol/tileurlfunction.js","../../../node_modules/ol/source/UrlTile.js","../../../node_modules/ol/source/TileImage.js","../../../node_modules/ol/source/common.js","../../../node_modules/ol/uri.js","../../../node_modules/ol/source/wms.js","../../../node_modules/ol/source/TileWMS.js","../../../node_modules/quickselect/index.js","../../../node_modules/rbush/index.js","../../../node_modules/ol/style/Image.js","../../../node_modules/ol/colorlike.js","../../../node_modules/ol/style/RegularShape.js","../../../node_modules/ol/style/Circle.js","../../../node_modules/ol/style/Fill.js","../../../node_modules/ol/style/Stroke.js","../../../node_modules/ol/style/Style.js","../../../node_modules/ol/style/IconImage.js","../../../node_modules/ol/style/Icon.js","../../../node_modules/ol/style/Text.js","../../../node_modules/ol/expr/expression.js","../../../node_modules/ol/expr/cpu.js","../../../node_modules/ol/render/canvas/style.js","../../../node_modules/ol/layer/BaseVector.js","../../../node_modules/ol/render/canvas/Instruction.js","../../../node_modules/ol/render/VectorContext.js","../../../node_modules/ol/render/canvas/Builder.js","../../../node_modules/ol/render/canvas/ImageBuilder.js","../../../node_modules/ol/render/canvas/LineStringBuilder.js","../../../node_modules/ol/render/canvas/PolygonBuilder.js","../../../node_modules/ol/geom/flat/linechunk.js","../../../node_modules/ol/geom/flat/straightchunk.js","../../../node_modules/ol/render/canvas/TextBuilder.js","../../../node_modules/ol/render/canvas/BuilderGroup.js","../../../node_modules/ol/geom/flat/textpath.js","../../../node_modules/ol/geom/flat/length.js","../../../node_modules/ol/render/canvas/Executor.js","../../../node_modules/ol/render/canvas/ExecutorGroup.js","../../../node_modules/ol/render/canvas/Immediate.js","../../../node_modules/ol/render/canvas/hitdetect.js","../../../node_modules/ol/renderer/vector.js","../../../node_modules/ol/renderer/canvas/VectorLayer.js","../../../node_modules/ol/layer/Vector.js","../../../node_modules/ol/structs/RBush.js","../../../node_modules/ol/geom/Circle.js","../../../node_modules/ol/geom/GeometryCollection.js","../../../node_modules/ol/geom/flat/interpolate.js","../../../node_modules/ol/geom/LineString.js","../../../node_modules/ol/geom/MultiLineString.js","../../../node_modules/ol/geom/MultiPoint.js","../../../node_modules/ol/geom/flat/center.js","../../../node_modules/ol/geom/MultiPolygon.js","../../../node_modules/ol/render/Feature.js","../../../node_modules/ol/source/VectorEventType.js","../../../node_modules/ol/loadingstrategy.js","../../../node_modules/ol/featureloader.js","../../../node_modules/ol/source/Vector.js","../../../node_modules/ol/source/WMTS.js","../../../node_modules/ol/control/FullScreen.js","../../../node_modules/ol/control/ScaleLine.js","../../../node_modules/ol/interaction/Draw.js","../../../node_modules/ol/interaction/Modify.js","../../../node_modules/ol/interaction/Select.js","../../../app/javascript/new_design/champs/te_fenua_lib.js","../../../node_modules/ol/format/Feature.js","../../../node_modules/ol/format/JSONFeature.js","../../../node_modules/ol/format/GeoJSON.js","../../../node_modules/ol/Geolocation.js","../../../app/javascript/new_design/champs/te_fenua.js","../../../app/javascript/new_design/avis.js","../../../app/javascript/new_design/instruction-button.ts","../../../app/javascript/new_design/fc-fusion.js","../../../app/javascript/entrypoints/application.js"],"sourcesContent":["'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n globalThis[key] = value;\n } return value;\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.38.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = globalThis;\n } else if (STATIC) {\n target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = globalThis[TARGET] && globalThis[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\n\nvar charAt = uncurryThis(''.charAt);\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line es/no-string-prototype-at -- safe\n return '𠮷'.at(-2) !== '\\uD842';\n});\n\n// `String.prototype.at` method\n// https://tc39.es/ecma262/#sec-string.prototype.at\n$({ target: 'String', proto: true, forced: FORCED }, {\n at: function at(index) {\n var S = toString(requireObjectCoercible(this));\n var len = S.length;\n var relativeIndex = toIntegerOrInfinity(index);\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n return (k < 0 || k >= len) ? undefined : charAt(S, k);\n }\n});\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n activeXDocument = null;\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] === undefined) {\n defineProperty(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.at` method\n// https://tc39.es/ecma262/#sec-array.prototype.at\n$({ target: 'Array', proto: true }, {\n at: function at(index) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n return (k < 0 || k >= len) ? undefined : O[k];\n }\n});\n\naddToUnscopables('at');\n","'use strict';\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nmodule.exports = function (argument) {\n return isObject(argument) || argument === null;\n};\n","'use strict';\nvar isPossiblePrototype = require('../internals/is-possible-prototype');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (isPossiblePrototype(argument)) return argument;\n throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar isObject = require('../internals/is-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n requireObjectCoercible(O);\n aPossiblePrototype(proto);\n if (!isObject(O)) return O;\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = globalThis.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = globalThis.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = globalThis.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(globalThis.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw new TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw new TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = globalThis[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = globalThis[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw new TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (globalThis[NAME]) setPrototypeOf(globalThis[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (globalThis[NAME]) setPrototypeOf(globalThis[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (globalThis[NAME]) {\n createNonEnumerableProperty(globalThis[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.at` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.at\nexportTypedArrayMethod('at', function at(index) {\n var O = aTypedArray(this);\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n return (k < 0 || k >= len) ? undefined : O[k];\n});\n","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/javascript\nReleased under the MIT license\n */\nconst linkClickSelector = \"a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]\";\n\nconst buttonClickSelector = {\n selector: \"button[data-remote]:not([form]), button[data-confirm]:not([form])\",\n exclude: \"form button\"\n};\n\nconst inputChangeSelector = \"select[data-remote], input[data-remote], textarea[data-remote]\";\n\nconst formSubmitSelector = \"form:not([data-turbo=true])\";\n\nconst formInputClickSelector = \"form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])\";\n\nconst formDisableSelector = \"input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled\";\n\nconst formEnableSelector = \"input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled\";\n\nconst fileInputSelector = \"input[name][type=file]:not([disabled])\";\n\nconst linkDisableSelector = \"a[data-disable-with], a[data-disable]\";\n\nconst buttonDisableSelector = \"button[data-remote][data-disable-with], button[data-remote][data-disable]\";\n\nlet nonce = null;\n\nconst loadCSPNonce = () => {\n const metaTag = document.querySelector(\"meta[name=csp-nonce]\");\n return nonce = metaTag && metaTag.content;\n};\n\nconst cspNonce = () => nonce || loadCSPNonce();\n\nconst m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nconst matches = function(element, selector) {\n if (selector.exclude) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n};\n\nconst EXPANDO = \"_ujsData\";\n\nconst getData = (element, key) => element[EXPANDO] ? element[EXPANDO][key] : undefined;\n\nconst setData = function(element, key, value) {\n if (!element[EXPANDO]) {\n element[EXPANDO] = {};\n }\n return element[EXPANDO][key] = value;\n};\n\nconst $ = selector => Array.prototype.slice.call(document.querySelectorAll(selector));\n\nconst isContentEditable = function(element) {\n var isEditable = false;\n do {\n if (element.isContentEditable) {\n isEditable = true;\n break;\n }\n element = element.parentElement;\n } while (element);\n return isEditable;\n};\n\nconst csrfToken = () => {\n const meta = document.querySelector(\"meta[name=csrf-token]\");\n return meta && meta.content;\n};\n\nconst csrfParam = () => {\n const meta = document.querySelector(\"meta[name=csrf-param]\");\n return meta && meta.content;\n};\n\nconst CSRFProtection = xhr => {\n const token = csrfToken();\n if (token) {\n return xhr.setRequestHeader(\"X-CSRF-Token\", token);\n }\n};\n\nconst refreshCSRFTokens = () => {\n const token = csrfToken();\n const param = csrfParam();\n if (token && param) {\n return $('form input[name=\"' + param + '\"]').forEach((input => input.value = token));\n }\n};\n\nconst AcceptHeaders = {\n \"*\": \"*/*\",\n text: \"text/plain\",\n html: \"text/html\",\n xml: \"application/xml, text/xml\",\n json: \"application/json, text/javascript\",\n script: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n};\n\nconst ajax = options => {\n options = prepareOptions(options);\n var xhr = createXHR(options, (function() {\n const response = processResponse(xhr.response != null ? xhr.response : xhr.responseText, xhr.getResponseHeader(\"Content-Type\"));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : undefined;\n }));\n if (options.beforeSend && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n};\n\nvar prepareOptions = function(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === \"GET\" && options.data) {\n if (options.url.indexOf(\"?\") < 0) {\n options.url += \"?\" + options.data;\n } else {\n options.url += \"&\" + options.data;\n }\n }\n if (!(options.dataType in AcceptHeaders)) {\n options.dataType = \"*\";\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== \"*\") {\n options.accept += \", */*; q=0.01\";\n }\n return options;\n};\n\nvar createXHR = function(options, done) {\n const xhr = new XMLHttpRequest;\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader(\"Accept\", options.accept);\n if (typeof options.data === \"string\") {\n xhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n};\n\nvar processResponse = function(response, type) {\n if (typeof response === \"string\" && typeof type === \"string\") {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n const script = document.createElement(\"script\");\n script.setAttribute(\"nonce\", cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n const parser = new DOMParser;\n type = type.replace(/;.+/, \"\");\n try {\n response = parser.parseFromString(response, type);\n } catch (error1) {}\n }\n }\n return response;\n};\n\nconst href = element => element.href;\n\nconst isCrossDomain = function(url) {\n const originAnchor = document.createElement(\"a\");\n originAnchor.href = location.href;\n const urlAnchor = document.createElement(\"a\");\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === \":\") && !urlAnchor.host || originAnchor.protocol + \"//\" + originAnchor.host === urlAnchor.protocol + \"//\" + urlAnchor.host);\n } catch (e) {\n return true;\n }\n};\n\nlet preventDefault;\n\nlet {CustomEvent: CustomEvent} = window;\n\nif (typeof CustomEvent !== \"function\") {\n CustomEvent = function(event, params) {\n const evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n ({preventDefault: preventDefault} = CustomEvent.prototype);\n CustomEvent.prototype.preventDefault = function() {\n const result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, \"defaultPrevented\", {\n get() {\n return true;\n }\n });\n }\n return result;\n };\n}\n\nconst fire = (obj, name, data) => {\n const event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n};\n\nconst stopEverything = e => {\n fire(e.target, \"ujs:everythingStopped\");\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n};\n\nconst delegate = (element, selector, eventType, handler) => element.addEventListener(eventType, (function(e) {\n let {target: target} = e;\n while (!!(target instanceof Element) && !matches(target, selector)) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n e.stopPropagation();\n }\n}));\n\nconst toArray = e => Array.prototype.slice.call(e);\n\nconst serializeElement = (element, additionalParam) => {\n let inputs = [ element ];\n if (matches(element, \"form\")) {\n inputs = toArray(element.elements);\n }\n const params = [];\n inputs.forEach((function(input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, \"fieldset[disabled] *\")) {\n return;\n }\n if (matches(input, \"select\")) {\n toArray(input.options).forEach((function(option) {\n if (option.selected) {\n params.push({\n name: input.name,\n value: option.value\n });\n }\n }));\n } else if (input.checked || [ \"radio\", \"checkbox\", \"submit\" ].indexOf(input.type) === -1) {\n params.push({\n name: input.name,\n value: input.value\n });\n }\n }));\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map((function(param) {\n if (param.name) {\n return `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value)}`;\n } else {\n return param;\n }\n })).join(\"&\");\n};\n\nconst formElements = (form, selector) => {\n if (matches(form, \"form\")) {\n return toArray(form.elements).filter((el => matches(el, selector)));\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n};\n\nconst handleConfirmWithRails = rails => function(e) {\n if (!allowAction(this, rails)) {\n stopEverything(e);\n }\n};\n\nconst confirm = (message, element) => window.confirm(message);\n\nvar allowAction = function(element, rails) {\n let callback;\n const message = element.getAttribute(\"data-confirm\");\n if (!message) {\n return true;\n }\n let answer = false;\n if (fire(element, \"confirm\")) {\n try {\n answer = rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, \"confirm:complete\", [ answer ]);\n }\n return answer && callback;\n};\n\nconst handleDisabledElement = function(e) {\n const element = this;\n if (element.disabled) {\n stopEverything(e);\n }\n};\n\nconst enableElement = e => {\n let element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, buttonDisableSelector) || matches(element, formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, formSubmitSelector)) {\n return enableFormElements(element);\n }\n};\n\nconst disableElement = e => {\n const element = e instanceof Event ? e.target : e;\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, buttonDisableSelector) || matches(element, formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, formSubmitSelector)) {\n return disableFormElements(element);\n }\n};\n\nvar disableLinkElement = function(element) {\n if (getData(element, \"ujs:disabled\")) {\n return;\n }\n const replacement = element.getAttribute(\"data-disable-with\");\n if (replacement != null) {\n setData(element, \"ujs:enable-with\", element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener(\"click\", stopEverything);\n return setData(element, \"ujs:disabled\", true);\n};\n\nvar enableLinkElement = function(element) {\n const originalText = getData(element, \"ujs:enable-with\");\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, \"ujs:enable-with\", null);\n }\n element.removeEventListener(\"click\", stopEverything);\n return setData(element, \"ujs:disabled\", null);\n};\n\nvar disableFormElements = form => formElements(form, formDisableSelector).forEach(disableFormElement);\n\nvar disableFormElement = function(element) {\n if (getData(element, \"ujs:disabled\")) {\n return;\n }\n const replacement = element.getAttribute(\"data-disable-with\");\n if (replacement != null) {\n if (matches(element, \"button\")) {\n setData(element, \"ujs:enable-with\", element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, \"ujs:enable-with\", element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, \"ujs:disabled\", true);\n};\n\nvar enableFormElements = form => formElements(form, formEnableSelector).forEach((element => enableFormElement(element)));\n\nvar enableFormElement = function(element) {\n const originalText = getData(element, \"ujs:enable-with\");\n if (originalText != null) {\n if (matches(element, \"button\")) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, \"ujs:enable-with\", null);\n }\n element.disabled = false;\n return setData(element, \"ujs:disabled\", null);\n};\n\nvar isXhrRedirect = function(event) {\n const xhr = event.detail ? event.detail[0] : undefined;\n return xhr && xhr.getResponseHeader(\"X-Xhr-Redirect\");\n};\n\nconst handleMethodWithRails = rails => function(e) {\n const link = this;\n const method = link.getAttribute(\"data-method\");\n if (!method) {\n return;\n }\n if (isContentEditable(this)) {\n return;\n }\n const href = rails.href(link);\n const csrfToken$1 = csrfToken();\n const csrfParam$1 = csrfParam();\n const form = document.createElement(\"form\");\n let formContent = ``;\n if (csrfParam$1 && csrfToken$1 && !isCrossDomain(href)) {\n formContent += ``;\n }\n formContent += '';\n form.method = \"post\";\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = \"none\";\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n stopEverything(e);\n};\n\nconst isRemote = function(element) {\n const value = element.getAttribute(\"data-remote\");\n return value != null && value !== \"false\";\n};\n\nconst handleRemoteWithRails = rails => function(e) {\n let data, method, url;\n const element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, \"ajax:before\")) {\n fire(element, \"ajax:stopped\");\n return false;\n }\n if (isContentEditable(element)) {\n fire(element, \"ajax:stopped\");\n return false;\n }\n const withCredentials = element.getAttribute(\"data-with-credentials\");\n const dataType = element.getAttribute(\"data-type\") || \"script\";\n if (matches(element, formSubmitSelector)) {\n const button = getData(element, \"ujs:submit-button\");\n method = getData(element, \"ujs:submit-button-formmethod\") || element.getAttribute(\"method\") || \"get\";\n url = getData(element, \"ujs:submit-button-formaction\") || element.getAttribute(\"action\") || location.href;\n if (method.toUpperCase() === \"GET\") {\n url = url.replace(/\\?.*$/, \"\");\n }\n if (element.enctype === \"multipart/form-data\") {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, \"ujs:submit-button\", null);\n setData(element, \"ujs:submit-button-formmethod\", null);\n setData(element, \"ujs:submit-button-formaction\", null);\n } else if (matches(element, buttonClickSelector) || matches(element, inputChangeSelector)) {\n method = element.getAttribute(\"data-method\");\n url = element.getAttribute(\"data-url\");\n data = serializeElement(element, element.getAttribute(\"data-params\"));\n } else {\n method = element.getAttribute(\"data-method\");\n url = rails.href(element);\n data = element.getAttribute(\"data-params\");\n }\n ajax({\n type: method || \"GET\",\n url: url,\n data: data,\n dataType: dataType,\n beforeSend(xhr, options) {\n if (fire(element, \"ajax:beforeSend\", [ xhr, options ])) {\n return fire(element, \"ajax:send\", [ xhr ]);\n } else {\n fire(element, \"ajax:stopped\");\n return false;\n }\n },\n success(...args) {\n return fire(element, \"ajax:success\", args);\n },\n error(...args) {\n return fire(element, \"ajax:error\", args);\n },\n complete(...args) {\n return fire(element, \"ajax:complete\", args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== \"false\"\n });\n stopEverything(e);\n};\n\nconst formSubmitButtonClick = function(e) {\n const button = this;\n const {form: form} = button;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, \"ujs:submit-button\", {\n name: button.name,\n value: button.value\n });\n }\n setData(form, \"ujs:formnovalidate-button\", button.formNoValidate);\n setData(form, \"ujs:submit-button-formaction\", button.getAttribute(\"formaction\"));\n return setData(form, \"ujs:submit-button-formmethod\", button.getAttribute(\"formmethod\"));\n};\n\nconst preventInsignificantClick = function(e) {\n const link = this;\n const method = (link.getAttribute(\"data-method\") || \"GET\").toUpperCase();\n const data = link.getAttribute(\"data-params\");\n const metaClick = e.metaKey || e.ctrlKey;\n const insignificantMetaClick = metaClick && method === \"GET\" && !data;\n const nonPrimaryMouseClick = e.button != null && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n e.stopImmediatePropagation();\n }\n};\n\nconst Rails = {\n $: $,\n ajax: ajax,\n buttonClickSelector: buttonClickSelector,\n buttonDisableSelector: buttonDisableSelector,\n confirm: confirm,\n cspNonce: cspNonce,\n csrfToken: csrfToken,\n csrfParam: csrfParam,\n CSRFProtection: CSRFProtection,\n delegate: delegate,\n disableElement: disableElement,\n enableElement: enableElement,\n fileInputSelector: fileInputSelector,\n fire: fire,\n formElements: formElements,\n formEnableSelector: formEnableSelector,\n formDisableSelector: formDisableSelector,\n formInputClickSelector: formInputClickSelector,\n formSubmitButtonClick: formSubmitButtonClick,\n formSubmitSelector: formSubmitSelector,\n getData: getData,\n handleDisabledElement: handleDisabledElement,\n href: href,\n inputChangeSelector: inputChangeSelector,\n isCrossDomain: isCrossDomain,\n linkClickSelector: linkClickSelector,\n linkDisableSelector: linkDisableSelector,\n loadCSPNonce: loadCSPNonce,\n matches: matches,\n preventInsignificantClick: preventInsignificantClick,\n refreshCSRFTokens: refreshCSRFTokens,\n serializeElement: serializeElement,\n setData: setData,\n stopEverything: stopEverything\n};\n\nconst handleConfirm = handleConfirmWithRails(Rails);\n\nRails.handleConfirm = handleConfirm;\n\nconst handleMethod = handleMethodWithRails(Rails);\n\nRails.handleMethod = handleMethod;\n\nconst handleRemote = handleRemoteWithRails(Rails);\n\nRails.handleRemote = handleRemote;\n\nconst start = function() {\n if (window._rails_loaded) {\n throw new Error(\"rails-ujs has already been loaded!\");\n }\n window.addEventListener(\"pageshow\", (function() {\n $(formEnableSelector).forEach((function(el) {\n if (getData(el, \"ujs:disabled\")) {\n enableElement(el);\n }\n }));\n $(linkDisableSelector).forEach((function(el) {\n if (getData(el, \"ujs:disabled\")) {\n enableElement(el);\n }\n }));\n }));\n delegate(document, linkDisableSelector, \"ajax:complete\", enableElement);\n delegate(document, linkDisableSelector, \"ajax:stopped\", enableElement);\n delegate(document, buttonDisableSelector, \"ajax:complete\", enableElement);\n delegate(document, buttonDisableSelector, \"ajax:stopped\", enableElement);\n delegate(document, linkClickSelector, \"click\", preventInsignificantClick);\n delegate(document, linkClickSelector, \"click\", handleDisabledElement);\n delegate(document, linkClickSelector, \"click\", handleConfirm);\n delegate(document, linkClickSelector, \"click\", disableElement);\n delegate(document, linkClickSelector, \"click\", handleRemote);\n delegate(document, linkClickSelector, \"click\", handleMethod);\n delegate(document, buttonClickSelector, \"click\", preventInsignificantClick);\n delegate(document, buttonClickSelector, \"click\", handleDisabledElement);\n delegate(document, buttonClickSelector, \"click\", handleConfirm);\n delegate(document, buttonClickSelector, \"click\", disableElement);\n delegate(document, buttonClickSelector, \"click\", handleRemote);\n delegate(document, inputChangeSelector, \"change\", handleDisabledElement);\n delegate(document, inputChangeSelector, \"change\", handleConfirm);\n delegate(document, inputChangeSelector, \"change\", handleRemote);\n delegate(document, formSubmitSelector, \"submit\", handleDisabledElement);\n delegate(document, formSubmitSelector, \"submit\", handleConfirm);\n delegate(document, formSubmitSelector, \"submit\", handleRemote);\n delegate(document, formSubmitSelector, \"submit\", (e => setTimeout((() => disableElement(e)), 13)));\n delegate(document, formSubmitSelector, \"ajax:send\", disableElement);\n delegate(document, formSubmitSelector, \"ajax:complete\", enableElement);\n delegate(document, formInputClickSelector, \"click\", preventInsignificantClick);\n delegate(document, formInputClickSelector, \"click\", handleDisabledElement);\n delegate(document, formInputClickSelector, \"click\", handleConfirm);\n delegate(document, formInputClickSelector, \"click\", formSubmitButtonClick);\n document.addEventListener(\"DOMContentLoaded\", refreshCSRFTokens);\n document.addEventListener(\"DOMContentLoaded\", loadCSPNonce);\n return window._rails_loaded = true;\n};\n\nRails.start = start;\n\nif (typeof jQuery !== \"undefined\" && jQuery && jQuery.ajax) {\n if (jQuery.rails) {\n throw new Error(\"If you load both jquery_ujs and rails-ujs, use rails-ujs only.\");\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter((function(options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n }));\n}\n\nexport { Rails as default };\n","/*! DSFR v1.11.2 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions) */\n\nclass State {\n constructor () {\n this.modules = {};\n }\n\n create (ModuleClass) {\n const module = new ModuleClass();\n this.modules[module.type] = module;\n }\n\n getModule (type) {\n return this.modules[type];\n }\n\n add (type, item) {\n this.modules[type].add(item);\n }\n\n remove (type, item) {\n this.modules[type].remove(item);\n }\n\n get isActive () {\n return this._isActive;\n }\n\n set isActive (value) {\n if (value === this._isActive) return;\n this._isActive = value;\n const values = Object.keys(this.modules).map((e) => {\n return this.modules[e];\n });\n if (value) {\n for (const module of values) {\n module.activate();\n }\n } else {\n for (const module of values) {\n module.deactivate();\n }\n }\n }\n\n get isLegacy () {\n return this._isLegacy;\n }\n\n set isLegacy (value) {\n if (value === this._isLegacy) return;\n this._isLegacy = value;\n }\n}\n\nconst state = new State();\n\nconst config = {\r\n prefix: 'fr',\r\n namespace: 'dsfr',\r\n organisation: '@gouvfr',\r\n version: '1.11.2'\r\n};\n\nclass LogLevel {\n constructor (level, light, dark, logger) {\n this.level = level;\n this.light = light;\n this.dark = dark;\n\n switch (logger) {\n case 'warn':\n this.logger = console.warn;\n break;\n\n case 'error':\n this.logger = console.error;\n break;\n\n default:\n this.logger = console.log;\n }\n }\n\n log (...values) {\n const message = new Message(config.namespace);\n for (const value of values) message.add(value);\n this.print(message);\n }\n\n print (message) {\n message.setColor(this.color);\n this.logger.apply(console, message.getMessage());\n }\n\n get color () {\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? this.dark : this.light;\n }\n}\n\nclass Message {\n constructor (domain) {\n this.inputs = ['%c'];\n this.styles = ['font-family:Marianne', 'line-height: 1.5'];\n this.objects = [];\n\n if (domain) this.add(`${domain} :`);\n }\n\n add (value) {\n switch (typeof value) {\n case 'object':\n case 'function':\n this.inputs.push('%o ');\n this.objects.push(value);\n break;\n\n default:\n this.inputs.push(`${value} `);\n }\n }\n\n setColor (color) {\n this.styles.push(`color:${color}`);\n }\n\n getMessage () {\n return [this.inputs.join(''), this.styles.join(';'), ...this.objects];\n }\n}\n\nconst LEVELS = {\n log: new LogLevel(0, '#616161', '#989898'),\n debug: new LogLevel(1, '#000091', '#8B8BFF'),\n info: new LogLevel(2, '#007c3b', '#00ed70'),\n warn: new LogLevel(3, '#ba4500', '#fa5c00', 'warn'),\n error: new LogLevel(4, '#D80600', '#FF4641', 'error')\n};\n\nclass Inspector {\n constructor () {\n this.level = 2;\n\n for (const id in LEVELS) {\n const level = LEVELS[id];\n this[id] = (...msgs) => {\n if (this.level <= level.level) level.log.apply(level, msgs);\n };\n this[id].print = level.print.bind(level);\n }\n }\n\n state () {\n const message = new Message();\n message.add(state);\n this.log.print(message);\n }\n\n tree () {\n const stage = state.getModule('stage');\n if (!stage) return;\n const message = new Message();\n this._branch(stage.root, 0, message);\n this.log.print(message);\n }\n\n _branch (element, space, message) {\n let branch = '';\n if (space > 0) {\n let indent = '';\n for (let i = 0; i < space; i++) indent += ' ';\n // branch += indent + '|\\n';\n branch += indent + '└─ ';\n }\n branch += `[${element.id}] ${element.html}`;\n message.add(branch);\n message.add({ '@': element });\n message.add('\\n');\n for (const child of element.children) branch += this._branch(child, space + 1, message);\n }\n}\n\nconst inspector = new Inspector();\n\nconst startAtDomContentLoaded = (callback) => {\n if (document.readyState !== 'loading') window.requestAnimationFrame(callback);\n else document.addEventListener('DOMContentLoaded', callback);\n};\n\nconst startAuto = (callback) => {\n // detect\n startAtDomContentLoaded(callback);\n};\n\nconst Modes = {\n AUTO: 'auto',\n MANUAL: 'manual',\n RUNTIME: 'runtime',\n LOADED: 'loaded',\n VUE: 'vue',\n ANGULAR: 'angular',\n REACT: 'react'\n};\n\nclass Options {\n constructor () {\n this._mode = Modes.AUTO;\n this.isStarted = false;\n this.starting = this.start.bind(this);\n this.preventManipulation = false;\n }\n\n configure (settings = {}, start, query) {\n this.startCallback = start;\n const isProduction = settings.production && (!query || query.production !== 'false');\n switch (true) {\n case query && !isNaN(query.level):\n inspector.level = Number(query.level);\n break;\n\n case query && query.verbose && (query.verbose === 'true' || query.verbose === 1):\n inspector.level = 0;\n break;\n\n case isProduction:\n inspector.level = 999;\n break;\n\n case settings.verbose:\n inspector.level = 0;\n break;\n }\n inspector.info(`version ${config.version}`);\n this.mode = settings.mode || Modes.AUTO;\n }\n\n set mode (value) {\n switch (value) {\n case Modes.AUTO:\n this.preventManipulation = false;\n startAuto(this.starting);\n break;\n\n case Modes.LOADED:\n this.preventManipulation = false;\n startAtDomContentLoaded(this.starting);\n break;\n\n case Modes.RUNTIME:\n this.preventManipulation = false;\n this.start();\n break;\n\n case Modes.MANUAL:\n this.preventManipulation = false;\n break;\n\n case Modes.VUE:\n this.preventManipulation = true;\n break;\n\n case Modes.ANGULAR:\n this.preventManipulation = true;\n break;\n\n case Modes.REACT:\n this.preventManipulation = true;\n break;\n\n default:\n inspector.error('Illegal mode');\n return;\n }\n\n this._mode = value;\n inspector.info(`mode set to ${value}`);\n }\n\n get mode () {\n return this._mode;\n }\n\n start () {\n inspector.info('start');\n this.startCallback();\n }\n}\n\nconst options = new Options();\n\nclass Collection {\n constructor () {\n this._collection = [];\n }\n\n forEach (callback) {\n this._collection.forEach(callback);\n }\n\n map (callback) {\n return this._collection.map(callback);\n }\n\n get length () {\n return this._collection.length;\n }\n\n add (collectable) {\n if (this._collection.indexOf(collectable) > -1) return false;\n this._collection.push(collectable);\n if (this.onAdd) this.onAdd();\n if (this.onPopulate && this._collection.length === 1) this.onPopulate();\n return true;\n }\n\n remove (collectable) {\n const index = this._collection.indexOf(collectable);\n if (index === -1) return false;\n this._collection.splice(index, 1);\n if (this.onRemove) this.onRemove();\n if (this.onEmpty && this._collection.length === 0) this.onEmpty();\n }\n\n execute (...args) {\n for (const collectable of this._collection) if (collectable) collectable.apply(null, args);\n }\n\n clear () {\n this._collection.length = 0;\n }\n\n clone () {\n const clone = new Collection();\n clone._collection = this._collection.slice();\n return clone;\n }\n\n get collection () {\n return this._collection;\n }\n}\n\nclass Module extends Collection {\n constructor (type) {\n super();\n this.type = type;\n this.isActive = false;\n }\n\n activate () {}\n deactivate () {}\n}\n\nconst ns = name => `${config.prefix}-${name}`;\n\nns.selector = (name, notation) => {\n if (notation === undefined) notation = '.';\n return `${notation}${ns(name)}`;\n};\n\nns.attr = (name) => `data-${ns(name)}`;\n\nns.attr.selector = (name, value) => {\n let result = ns.attr(name);\n if (value !== undefined) result += `=\"${value}\"`;\n return `[${result}]`;\n};\n\nns.event = (type) => `${config.namespace}.${type}`;\n\nns.emission = (domain, type) => `emission:${domain}.${type}`;\n\nconst querySelectorAllArray = (element, selectors) => Array.prototype.slice.call(element.querySelectorAll(selectors));\n\nconst queryParentSelector = (element, selectors) => {\n const parent = element.parentElement;\n if (parent.matches(selectors)) return parent;\n if (parent === document.documentElement) return null;\n return queryParentSelector(parent, selectors);\n};\n\nclass Registration {\n constructor (selector, InstanceClass, creator) {\n this.selector = selector;\n this.InstanceClass = InstanceClass;\n this.creator = creator;\n this.instances = new Collection();\n this.isIntroduced = false;\n this._instanceClassName = this.InstanceClass.instanceClassName;\n this._instanceClassNames = this.getInstanceClassNames(this.InstanceClass);\n this._property = this._instanceClassName.substring(0, 1).toLowerCase() + this._instanceClassName.substring(1);\n const dashed = this._instanceClassName\n .replace(/[^a-zA-Z0-9]+/g, '-')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2')\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/([0-9])([^0-9])/g, '$1-$2')\n .replace(/([^0-9])([0-9])/g, '$1-$2')\n .toLowerCase();\n this._attribute = ns.attr(`js-${dashed}`);\n }\n\n getInstanceClassNames (InstanceClass) {\n const prototype = Object.getPrototypeOf(InstanceClass);\n if (!prototype || prototype.instanceClassName === 'Instance') return [InstanceClass.instanceClassName];\n return [...this.getInstanceClassNames(prototype), InstanceClass.instanceClassName];\n }\n\n hasInstanceClassName (instanceClassName) {\n return this._instanceClassNames.indexOf(instanceClassName) > -1;\n }\n\n introduce () {\n if (this.isIntroduced) return;\n this.isIntroduced = true;\n state.getModule('stage').parse(document.documentElement, this);\n }\n\n parse (node, nonRecursive) {\n const nodes = [];\n if (node.matches && node.matches(this.selector)) nodes.push(node);\n // eslint-disable-next-line no-useless-call\n if (!nonRecursive && node.querySelectorAll && node.querySelector(this.selector)) nodes.push.apply(nodes, querySelectorAllArray(node, this.selector));\n return nodes;\n }\n\n create (element) {\n if (!element.node.matches(this.selector)) return;\n const instance = new this.InstanceClass();\n this.instances.add(instance);\n return instance;\n }\n\n remove (instance) {\n this.instances.remove(instance);\n }\n\n dispose () {\n const instances = this.instances.collection;\n for (let i = instances.length - 1; i > -1; i--) instances[i]._dispose();\n this.creator = null;\n }\n\n get instanceClassName () {\n return this._instanceClassName;\n }\n\n get instanceClassNames () {\n return this._instanceClassNames;\n }\n\n get property () {\n return this._property;\n }\n\n get attribute () {\n return this._attribute;\n }\n}\n\nclass Register extends Module {\n constructor () {\n super('register');\n }\n\n register (selector, InstanceClass, creator) {\n const registration = new Registration(selector, InstanceClass, creator);\n this.add(registration);\n if (state.isActive) registration.introduce();\n return registration;\n }\n\n activate () {\n for (const registration of this.collection) registration.introduce();\n }\n\n remove (registration) {\n registration.dispose();\n super.remove(registration);\n }\n}\n\nlet count = 0;\n\nclass Element$1 {\n constructor (node, id) {\n if (!id) {\n count++;\n this.id = count;\n } else this.id = id;\n this.node = node;\n this.attributeNames = [];\n this.instances = [];\n this._children = [];\n this._parent = null;\n this._projects = [];\n }\n\n get proxy () {\n const scope = this;\n if (!this._proxy) {\n this._proxy = {\n id: this.id,\n get parent () {\n return scope.parent ? scope.parent.proxy : null;\n },\n get children () {\n return scope.children.map((child) => child.proxy);\n }\n };\n\n for (const instance of this.instances) this._proxy[instance.registration.property] = instance.proxy;\n }\n return this._proxy;\n }\n\n get html () {\n if (!this.node || !this.node.outerHTML) return '';\n const end = this.node.outerHTML.indexOf('>');\n return this.node.outerHTML.substring(0, end + 1);\n }\n\n project (registration) {\n if (this._projects.indexOf(registration) === -1) this._projects.push(registration);\n }\n\n populate () {\n const projects = this._projects.slice();\n this._projects.length = 0;\n for (const registration of projects) this.create(registration);\n }\n\n create (registration) {\n if (this.hasInstance(registration.instanceClassName)) {\n // inspector.debug(`failed creation, instance of ${registration.instanceClassName} already exists on element [${this.id}]`);\n return;\n }\n inspector.debug(`create instance of ${registration.instanceClassName} on element [${this.id}]`);\n const instance = registration.create(this);\n this.instances.push(instance);\n instance._config(this, registration);\n if (this._proxy) this._proxy[registration.property] = instance.proxy;\n }\n\n remove (instance) {\n const index = this.instances.indexOf(instance);\n if (index > -1) this.instances.splice(index, 1);\n if (this._proxy) delete this._proxy[instance.registration.property];\n }\n\n get parent () {\n return this._parent;\n }\n\n get ascendants () {\n return [this.parent, ...this.parent.ascendants];\n }\n\n get children () {\n return this._children;\n }\n\n get descendants () {\n const descendants = [...this._children];\n this._children.forEach(child => descendants.push(...child.descendants));\n return descendants;\n }\n\n // TODO : emit ascendant et descendant de changement ?\n\n addChild (child, index) {\n if (this._children.indexOf(child) > -1) return null;\n child._parent = this;\n if (!isNaN(index) && index > -1 && index < this._children.length) this._children.splice(index, 0, child);\n else this._children.push(child);\n return child;\n }\n\n removeChild (child) {\n const index = this._children.indexOf(child);\n if (index === -1) return null;\n child._parent = null;\n this._children.splice(index, 1);\n }\n\n emit (type, data) {\n const elements = state.getModule('stage').collection;\n const response = [];\n for (const element of elements) response.push(...element._emit(type, data));\n return response;\n }\n\n _emit (type, data) {\n const response = [];\n for (const instance of this.instances) response.push(...instance._emitter.emit(type, data));\n return response;\n }\n\n ascend (type, data) {\n if (this._parent) return this._parent._ascend(type, data);\n return [];\n }\n\n _ascend (type, data) {\n const response = [];\n for (const instance of this.instances) response.push(...instance._ascent.emit(type, data));\n if (this._parent) response.push(...this._parent._ascend(type, data));\n return response;\n }\n\n descend (type, data) {\n const response = [];\n for (const child of this._children) response.push(...child._descend(type, data));\n return response;\n }\n\n _descend (type, data) {\n const response = [];\n for (const instance of this.instances) response.push(...instance._descent.emit(type, data));\n for (const child of this._children) response.push(...child._descend(type, data));\n return response;\n }\n\n getInstance (instanceClassName) {\n for (const instance of this.instances) if (instance.registration.hasInstanceClassName(instanceClassName)) return instance;\n return null;\n }\n\n hasInstance (instanceClassName) {\n return this.getInstance(instanceClassName) !== null;\n }\n\n getDescendantInstances (instanceClassName, stopAtInstanceClassName, stopAtFirstInstance) {\n if (!instanceClassName) return [];\n const instances = [];\n for (const child of this._children) {\n const instance = child.getInstance(instanceClassName);\n if (instance) {\n instances.push(instance);\n if (stopAtFirstInstance) continue;\n }\n if ((!stopAtInstanceClassName || !child.hasInstance(stopAtInstanceClassName)) && child.children.length) instances.push.apply(instances, child.getDescendantInstances(instanceClassName, stopAtInstanceClassName, stopAtFirstInstance));\n }\n return instances;\n }\n\n getAscendantInstance (instanceClassName, stopAtInstanceClassName) {\n if (!instanceClassName || !this._parent) return null;\n const instance = this._parent.getInstance(instanceClassName);\n if (instance) return instance;\n if (stopAtInstanceClassName && this._parent.hasInstance(stopAtInstanceClassName)) return null;\n return this._parent.getAscendantInstance(instanceClassName, stopAtInstanceClassName);\n }\n\n dispose () {\n for (let i = this.instances.length - 1; i >= 0; i--) {\n const instance = this.instances[i];\n if (instance) instance._dispose();\n }\n this.instances.length = 0;\n state.remove('stage', this);\n this.parent.removeChild(this);\n this._children.length = 0;\n inspector.debug(`remove element [${this.id}] ${this.html}`);\n }\n\n prepare (attributeName) {\n if (this.attributeNames.indexOf(attributeName) === -1) this.attributeNames.push(attributeName);\n }\n\n examine () {\n const attributeNames = this.attributeNames.slice();\n this.attributeNames.length = 0;\n for (let i = this.instances.length - 1; i > -1; i--) this.instances[i].examine(attributeNames);\n }\n}\n\nconst RootEmission = {\n CLICK: ns.emission('root', 'click'),\n KEYDOWN: ns.emission('root', 'keydown'),\n KEYUP: ns.emission('root', 'keyup')\n};\n\nconst KeyCodes = {\n TAB: {\n id: 'tab',\n value: 9\n },\n ESCAPE: {\n id: 'escape',\n value: 27\n },\n END: {\n id: 'end',\n value: 35\n },\n HOME: {\n id: 'home',\n value: 36\n },\n LEFT: {\n id: 'left',\n value: 37\n },\n UP: {\n id: 'up',\n value: 38\n },\n RIGHT: {\n id: 'right',\n value: 39\n },\n DOWN: {\n id: 'down',\n value: 40\n }\n};\n\nconst getKeyCode = (keyCode) => Object.values(KeyCodes).filter(entry => entry.value === keyCode)[0];\n\nclass Root extends Element$1 {\n constructor () {\n super(document.documentElement, 'root');\n this.node.setAttribute(ns.attr('js'), true);\n this.listen();\n }\n\n listen () {\n // TODO v2 => listener au niveau des éléments qui redistribuent aux instances.\n document.documentElement.addEventListener('click', this.click.bind(this), { capture: true });\n document.documentElement.addEventListener('keydown', this.keydown.bind(this), { capture: true });\n document.documentElement.addEventListener('keyup', this.keyup.bind(this), { capture: true });\n }\n\n click (e) {\n this.emit(RootEmission.CLICK, e.target);\n }\n\n keydown (e) {\n this.emit(RootEmission.KEYDOWN, getKeyCode(e.keyCode));\n }\n\n keyup (e) {\n this.emit(RootEmission.KEYUP, getKeyCode(e.keyCode));\n }\n}\n\nclass Stage extends Module {\n constructor () {\n super('stage');\n this.root = new Root();\n super.add(this.root);\n this.observer = new MutationObserver(this.mutate.bind(this));\n this.modifications = [];\n this.willModify = false;\n this.modifying = this.modify.bind(this);\n }\n\n hasElement (node) {\n for (const element of this.collection) if (element.node === node) return true;\n return false;\n }\n\n getElement (node) {\n for (const element of this.collection) if (element.node === node) return element;\n const element = new Element$1(node);\n this.add(element);\n inspector.debug(`add element [${element.id}] ${element.html}`);\n return element;\n }\n\n getProxy (node) {\n if (!this.hasElement(node)) return null;\n const element = this.getElement(node);\n return element.proxy;\n }\n\n add (element) {\n super.add(element);\n this.put(element, this.root);\n }\n\n put (element, branch) {\n let index = 0;\n for (let i = branch.children.length - 1; i > -1; i--) {\n const child = branch.children[i];\n const position = element.node.compareDocumentPosition(child.node);\n if (position & Node.DOCUMENT_POSITION_CONTAINS) {\n this.put(element, child);\n return;\n } else if (position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n branch.removeChild(child);\n element.addChild(child, 0);\n } else if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n index = i + 1;\n break;\n }\n }\n\n branch.addChild(element, index);\n }\n\n activate () {\n this.observer.observe(document.documentElement, { childList: true, subtree: true, attributes: true });\n }\n\n deactivate () {\n this.observer.disconnect();\n }\n\n mutate (mutations) {\n const examinations = [];\n mutations.forEach((mutation) => {\n switch (mutation.type) {\n case 'childList':\n mutation.removedNodes.forEach((node) => this.dispose(node));\n mutation.addedNodes.forEach((node) => this.parse(node));\n break;\n\n case 'attributes':\n if (this.hasElement(mutation.target)) {\n const element = this.getElement(mutation.target);\n element.prepare(mutation.attributeName);\n if (examinations.indexOf(element) === -1) examinations.push(element);\n for (const descendant of element.descendants) if (examinations.indexOf(descendant) === -1) examinations.push(descendant);\n }\n if (this.modifications.indexOf(mutation.target) === -1) this.modifications.push(mutation.target);\n break;\n }\n });\n\n examinations.forEach(element => element.examine());\n if (this.modifications.length && !this.willModify) {\n this.willModify = true;\n window.requestAnimationFrame(this.modifying);\n }\n }\n\n modify () {\n this.willModify = false;\n const targets = this.modifications.slice();\n this.modifications.length = 0;\n for (const target of targets) if (document.documentElement.contains(target)) this.parse(target);\n }\n\n dispose (node) {\n const disposables = [];\n this.forEach((element) => {\n if (node.contains(element.node)) disposables.push(element);\n });\n\n for (const disposable of disposables) {\n disposable.dispose();\n this.remove(disposable);\n }\n }\n\n parse (node, registration, nonRecursive) {\n const registrations = registration ? [registration] : state.getModule('register').collection;\n const creations = [];\n\n for (const registration of registrations) {\n const nodes = registration.parse(node, nonRecursive);\n\n for (const n of nodes) {\n const element = this.getElement(n);\n element.project(registration);\n if (creations.indexOf(element) === -1) creations.push(element);\n }\n }\n\n for (const element of creations) element.populate();\n }\n}\n\nclass Renderer extends Module {\n constructor () {\n super('render');\n this.rendering = this.render.bind(this);\n this.nexts = new Collection();\n }\n\n activate () {\n window.requestAnimationFrame(this.rendering);\n }\n\n request (instance) {\n this.nexts.add(instance);\n }\n\n render () {\n if (!state.isActive) return;\n window.requestAnimationFrame(this.rendering);\n this.forEach((instance) => instance.render());\n if (!this.nexts.length) return;\n const nexts = this.nexts.clone();\n this.nexts.clear();\n nexts.forEach((instance) => instance.next());\n }\n}\n\nclass Resizer extends Module {\n constructor () {\n super('resize');\n this.requireResize = false;\n this.resizing = this.resize.bind(this);\n const requesting = this.request.bind(this);\n if (document.fonts) {\n document.fonts.ready.then(requesting);\n }\n window.addEventListener('resize', requesting);\n window.addEventListener('orientationchange', requesting);\n }\n\n activate () {\n this.request();\n }\n\n request () {\n if (this.requireResize) return;\n this.requireResize = true;\n window.requestAnimationFrame(this.resizing);\n }\n\n resize () {\n if (!this.requireResize) return;\n this.forEach((instance) => instance.resize());\n this.requireResize = false;\n }\n}\n\nclass ScrollLocker extends Module {\n constructor () {\n super('lock');\n this._isLocked = false;\n this._scrollY = 0;\n this.onPopulate = this.lock.bind(this);\n this.onEmpty = this.unlock.bind(this);\n }\n\n get isLocked () {\n return this._isLocked;\n }\n\n lock () {\n if (!this._isLocked) {\n this._isLocked = true;\n this._scrollY = window.scrollY;\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\n document.documentElement.setAttribute(ns.attr('scrolling'), 'false');\n document.body.style.top = `${-this._scrollY}px`;\n this.behavior = getComputedStyle(document.documentElement).getPropertyValue('scroll-behavior');\n if (this.behavior === 'smooth') document.documentElement.style.scrollBehavior = 'auto';\n if (scrollBarGap > 0) {\n document.documentElement.style.setProperty('--scrollbar-width', `${scrollBarGap}px`);\n }\n }\n }\n\n unlock () {\n if (this._isLocked) {\n this._isLocked = false;\n document.documentElement.removeAttribute(ns.attr('scrolling'));\n document.body.style.top = '';\n window.scrollTo(0, this._scrollY);\n if (this.behavior === 'smooth') document.documentElement.style.removeProperty('scroll-behavior');\n document.documentElement.style.removeProperty('--scrollbar-width');\n }\n }\n\n move (value) {\n if (this._isLocked) {\n this._scrollY += value;\n document.body.style.top = `${-this._scrollY}px`;\n } else {\n window.scrollTo(0, window.scrollY + value);\n }\n }\n}\n\nclass Load extends Module {\n constructor () {\n super('load');\n this.loading = this.load.bind(this);\n }\n\n activate () {\n window.addEventListener('load', this.loading);\n }\n\n load () {\n this.forEach((instance) => instance.load());\n }\n}\n\nconst FONT_FAMILIES = ['Marianne', 'Spectral'];\n\nclass FontSwap extends Module {\n constructor () {\n super('font-swap');\n this.swapping = this.swap.bind(this);\n }\n\n activate () {\n if (document.fonts) {\n document.fonts.addEventListener('loadingdone', this.swapping);\n }\n }\n\n swap () {\n const families = FONT_FAMILIES.filter(family => document.fonts.check(`16px ${family}`));\n\n this.forEach((instance) => instance.swapFont(families));\n }\n}\n\nclass MouseMove extends Module {\n constructor () {\n super('mouse-move');\n this.requireMove = false;\n this._isMoving = false;\n this.moving = this.move.bind(this);\n this.requesting = this.request.bind(this);\n this.onPopulate = this.listen.bind(this);\n this.onEmpty = this.unlisten.bind(this);\n }\n\n listen () {\n if (this._isMoving) return;\n this._isMoving = true;\n this.requireMove = false;\n document.documentElement.addEventListener('mousemove', this.requesting);\n }\n\n unlisten () {\n if (!this._isMoving) return;\n this._isMoving = false;\n this.requireMove = false;\n document.documentElement.removeEventListener('mousemove', this.requesting);\n }\n\n request (e) {\n if (!this._isMoving) return;\n this.point = { x: e.clientX, y: e.clientY };\n if (this.requireMove) return;\n this.requireMove = true;\n window.requestAnimationFrame(this.moving);\n }\n\n move () {\n if (!this.requireMove) return;\n this.forEach((instance) => instance.mouseMove(this.point));\n this.requireMove = false;\n }\n}\n\nclass Hash extends Module {\n constructor () {\n super('hash');\n this.handling = this.handle.bind(this);\n this.getLocationHash();\n }\n\n activate () {\n window.addEventListener('hashchange', this.handling);\n }\n\n deactivate () {\n window.removeEventListener('hashchange', this.handling);\n }\n\n _sanitize (hash) {\n if (hash.charAt(0) === '#') return hash.substring(1);\n return hash;\n }\n\n set hash (value) {\n const hash = this._sanitize(value);\n if (this._hash !== hash) window.location.hash = hash;\n }\n\n get hash () {\n return this._hash;\n }\n\n getLocationHash () {\n const hash = window.location.hash;\n this._hash = this._sanitize(hash);\n }\n\n handle (e) {\n this.getLocationHash();\n this.forEach((instance) => instance.handleHash(this._hash, e));\n }\n}\n\nclass Engine {\n constructor () {\n state.create(Register);\n state.create(Stage);\n state.create(Renderer);\n state.create(Resizer);\n state.create(ScrollLocker);\n state.create(Load);\n state.create(FontSwap);\n state.create(MouseMove);\n state.create(Hash);\n\n const registerModule = state.getModule('register');\n this.register = registerModule.register.bind(registerModule);\n }\n\n get isActive () {\n return state.isActive;\n }\n\n start () {\n inspector.debug('START');\n state.isActive = true;\n }\n\n stop () {\n inspector.debug('STOP');\n state.isActive = false;\n }\n}\n\nconst engine = new Engine();\n\nclass Colors {\n getColor (context, use, tint, options = {}) {\n const option = getOption(options);\n const decision = `--${context}-${use}-${tint}${option}`;\n return getComputedStyle(document.documentElement).getPropertyValue(decision).trim() || null;\n }\n}\n\nconst getOption = (options) => {\n switch (true) {\n case options.hover:\n return '-hover';\n case options.active:\n return '-active';\n default:\n return '';\n }\n};\n\nconst colors = new Colors();\n\nconst sanitize = (className) => className.charAt(0) === '.' ? className.substr(1) : className;\n\nconst getClassNames = (element) => {\n switch (true) {\n case !element.className:\n return [];\n\n case typeof element.className === 'string':\n return element.className.split(' ');\n\n case typeof element.className.baseVal === 'string':\n return element.className.baseVal.split(' ');\n }\n\n return [];\n};\n\nconst modifyClass = (element, className, remove) => {\n className = sanitize(className);\n const classNames = getClassNames(element);\n const index = classNames.indexOf(className);\n if (remove === true) {\n if (index > -1) classNames.splice(index, 1);\n } else if (index === -1) classNames.push(className);\n element.className = classNames.join(' ');\n};\n\nconst addClass = (element, className) => modifyClass(element, className);\n\nconst removeClass = (element, className) => modifyClass(element, className, true);\n\nconst hasClass = (element, className) => getClassNames(element).indexOf(sanitize(className)) > -1;\n\nconst ACTIONS = [\n '[tabindex]:not([tabindex=\"-1\"])',\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'details>summary:first-of-type',\n 'details',\n 'iframe'\n];\n\nconst ACTIONS_SELECTOR = ACTIONS.join();\n\nconst queryActions = (element) => {\n return element.querySelectorAll(ACTIONS_SELECTOR);\n};\n\nlet counter = 0;\n\nconst uniqueId = (id) => {\n if (!document.getElementById(id)) return id;\n let element = true;\n const base = id;\n while (element) {\n counter++;\n id = `${base}-${counter}`;\n element = document.getElementById(id);\n }\n return id;\n};\n\nconst dom = {\n addClass: addClass,\n hasClass: hasClass,\n removeClass: removeClass,\n queryParentSelector: queryParentSelector,\n querySelectorAllArray: querySelectorAllArray,\n queryActions: queryActions,\n uniqueId: uniqueId\n};\n\nclass DataURISVG {\n constructor (width = 0, height = 0) {\n this._width = width;\n this._height = height;\n this._content = '';\n }\n\n get width () {\n return this._width;\n }\n\n set width (value) {\n this._width = value;\n }\n\n get height () {\n return this._height;\n }\n\n set height (value) {\n this._height = value;\n }\n\n get content () {\n return this._content;\n }\n\n set content (value) {\n this._content = value;\n }\n\n getDataURI (isLegacy = false) {\n let svg = ``;\n\n svg = svg.replace(/#/gi, '%23');\n if (isLegacy) {\n svg = svg.replace(//gi, '%3E');\n svg = svg.replace(/\"/gi, '\\'');\n svg = svg.replace(/{/gi, '%7B');\n svg = svg.replace(/}/gi, '%7D');\n }\n return `data:image/svg+xml;charset=utf8,${svg}`;\n }\n}\n\nconst image = {\n DataURISVG: DataURISVG\n};\n\nconst supportLocalStorage = () => {\n try {\n return 'localStorage' in window && window.localStorage !== null;\n } catch (e) {\n return false;\n }\n};\n\nconst supportAspectRatio = () => {\n if (!window.CSS) return false;\n return CSS.supports('aspect-ratio: 16 / 9');\n};\n\nconst support = {\n supportLocalStorage: supportLocalStorage,\n supportAspectRatio: supportAspectRatio\n};\n\nconst TransitionSelector = {\n NONE: ns.selector('transition-none')\n};\n\nconst selector = {\n TransitionSelector: TransitionSelector\n};\n\n/**\n * Copy properties from multiple sources including accessors.\n * source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#copier_des_accesseurs\n *\n * @param {object} [target] - Target object to copy into\n * @param {...objects} [sources] - Multiple objects\n * @return {object} A new object\n *\n * @example\n *\n * const obj1 = {\n * key: 'value'\n * };\n * const obj2 = {\n * get function01 () {\n * return a-value;\n * }\n * set function01 () {\n * return a-value;\n * }\n * };\n * completeAssign(obj1, obj2)\n */\nconst completeAssign = (target, ...sources) => {\n sources.forEach(source => {\n const descriptors = Object.keys(source).reduce((descriptors, key) => {\n descriptors[key] = Object.getOwnPropertyDescriptor(source, key);\n return descriptors;\n }, {});\n\n Object.getOwnPropertySymbols(source).forEach(sym => {\n const descriptor = Object.getOwnPropertyDescriptor(source, sym);\n if (descriptor.enumerable) {\n descriptors[sym] = descriptor;\n }\n });\n Object.defineProperties(target, descriptors);\n });\n return target;\n};\n\nconst property = {\n completeAssign: completeAssign\n};\n\n/**\n * Return an object of query params or null\n *\n * @method\n * @name searchParams\n * @param {string} url - an url\n * @returns {Object} object of query params or null\n */\n\nconst searchParams = (url) => {\n if (url && url.search) {\n const params = new URLSearchParams(window.location.search);\n const entries = params.entries();\n return Object.fromEntries(entries);\n }\n return null;\n};\n\nconst internals = {};\nconst legacy = {};\n\nObject.defineProperty(legacy, 'isLegacy', {\n get: () => state.isLegacy\n});\n\nlegacy.setLegacy = () => {\n state.isLegacy = true;\n};\n\ninternals.legacy = legacy;\ninternals.dom = dom;\ninternals.image = image;\ninternals.support = support;\ninternals.motion = selector;\ninternals.property = property;\ninternals.ns = ns;\ninternals.register = engine.register;\ninternals.state = state;\ninternals.query = searchParams(window.location);\n\nObject.defineProperty(internals, 'preventManipulation', {\n get: () => options.preventManipulation\n});\nObject.defineProperty(internals, 'stage', {\n get: () => state.getModule('stage')\n});\n\nconst api$1 = (node) => {\n const stage = state.getModule('stage');\n return stage.getProxy(node);\n};\n\napi$1.version = config.version;\napi$1.prefix = config.prefix;\napi$1.organisation = config.organisation;\napi$1.Modes = Modes;\n\nObject.defineProperty(api$1, 'mode', {\n set: (value) => { options.mode = value; },\n get: () => options.mode\n});\n\napi$1.internals = internals;\napi$1.version = config.version;\n\napi$1.start = engine.start;\napi$1.stop = engine.stop;\n\napi$1.inspector = inspector;\napi$1.colors = colors;\n\nconst configuration = window[config.namespace];\napi$1.internals.configuration = configuration;\n\noptions.configure(configuration, api$1.start, api$1.internals.query);\n\nwindow[config.namespace] = api$1;\n\nclass Emitter {\n constructor () {\n this.emissions = {};\n }\n\n add (type, closure) {\n if (typeof closure !== 'function') throw new Error('closure must be a function');\n if (!this.emissions[type]) this.emissions[type] = [];\n this.emissions[type].push(closure);\n }\n\n remove (type, closure) {\n if (!this.emissions[type]) return;\n if (!closure) delete this.emissions[type];\n else {\n const index = this.emissions[type].indexOf(closure);\n if (index > -1) this.emissions[type].splice(index);\n }\n }\n\n emit (type, data) {\n if (!this.emissions[type]) return [];\n const response = [];\n for (const closure of this.emissions[type]) if (closure) response.push(closure(data));\n return response;\n }\n\n dispose () {\n this.emissions = null;\n }\n}\n\nclass Breakpoint {\n constructor (id, minWidth) {\n this.id = id;\n this.minWidth = minWidth;\n }\n\n test () {\n return window.matchMedia(`(min-width: ${this.minWidth}em)`).matches;\n }\n}\n\nconst Breakpoints = {\n XS: new Breakpoint('xs', 0),\n SM: new Breakpoint('sm', 36),\n MD: new Breakpoint('md', 48),\n LG: new Breakpoint('lg', 62),\n XL: new Breakpoint('xl', 78)\n};\n\nclass Instance {\n constructor (jsAttribute = true) {\n this.jsAttribute = jsAttribute;\n this._isRendering = false;\n this._isResizing = false;\n this._isScrollLocked = false;\n this._isLoading = false;\n this._isSwappingFont = false;\n this._isEnabled = true;\n this._isDisposed = false;\n this._listeners = {};\n this._handlingClick = this.handleClick.bind(this);\n this._hashes = [];\n this._hash = '';\n this._keyListenerTypes = [];\n this._keys = [];\n this.handlingKey = this.handleKey.bind(this);\n this._emitter = new Emitter();\n this._ascent = new Emitter();\n this._descent = new Emitter();\n this._registrations = [];\n this._nexts = [];\n }\n\n static get instanceClassName () {\n return 'Instance';\n }\n\n _config (element, registration) {\n this.element = element;\n this.registration = registration;\n this.node = element.node;\n this.id = element.node.id;\n if (this.jsAttribute) this.setAttribute(registration.attribute, true);\n this.init();\n }\n\n init () {}\n\n get proxy () {\n const scope = this;\n const proxy = {\n render: () => scope.render(),\n resize: () => scope.resize()\n };\n\n const proxyAccessors = {\n get node () {\n return this.node;\n },\n get isEnabled () {\n return scope.isEnabled;\n },\n set isEnabled (value) {\n scope.isEnabled = value;\n }\n };\n\n return completeAssign(proxy, proxyAccessors);\n }\n\n log (...values) {\n values.unshift(`${this.registration.instanceClassName} #${this.id} - `);\n inspector.log.apply(inspector, values);\n }\n\n debug (...values) {\n values.unshift(`${this.registration.instanceClassName} #${this.id} - `);\n inspector.debug.apply(inspector, values);\n }\n\n info (...values) {\n values.unshift(`${this.registration.instanceClassName} #${this.id} - `);\n inspector.info.apply(inspector, values);\n }\n\n warn (...values) {\n values.unshift(`${this.registration.instanceClassName} #${this.id} - `);\n inspector.warn.apply(inspector, values);\n }\n\n error (...values) {\n values.unshift(`${this.registration.instanceClassName} #${this.id} - `);\n inspector.error.apply(inspector, values);\n }\n\n register (selector, InstanceClass) {\n const registration = state.getModule('register').register(selector, InstanceClass, this);\n this._registrations.push(registration);\n }\n\n getRegisteredInstances (instanceClassName) {\n for (const registration of this._registrations) if (registration.hasInstanceClassName(instanceClassName)) return registration.instances.collection;\n return [];\n }\n\n dispatch (type, detail, bubbles, cancelable) {\n const event = new CustomEvent(type, { detail: detail, bubble: bubbles === true, cancelable: cancelable === true });\n this.node.dispatchEvent(event);\n }\n\n // TODO v2 => listener au niveau des éléments qui redistribuent aux instances.\n listen (type, closure, options) {\n if (!this._listeners[type]) this._listeners[type] = [];\n const listeners = this._listeners[type];\n // if (listeners.some(listener => listener.closure === closure)) return;\n const listener = new Listener(this.node, type, closure, options);\n listeners.push(listener);\n listener.listen();\n }\n\n unlisten (type, closure, options) {\n if (!type) {\n for (const type in this._listeners) this.unlisten(type);\n return;\n }\n\n const listeners = this._listeners[type];\n\n if (!listeners) return;\n\n if (!closure) {\n listeners.forEach(listener => this.unlisten(type, listener.closure));\n return;\n }\n\n const removal = listeners.filter(listener => listener.closure === closure && listener.matchOptions(options));\n removal.forEach(listener => listener.unlisten());\n this._listeners[type] = listeners.filter(listener => removal.indexOf(listener) === -1);\n }\n\n listenClick (options) {\n this.listen('click', this._handlingClick, options);\n }\n\n unlistenClick (options) {\n this.unlisten('click', this._handlingClick, options);\n }\n\n handleClick (e) {}\n\n set hash (value) {\n state.getModule('hash').hash = value;\n }\n\n get hash () {\n return state.getModule('hash').hash;\n }\n\n listenHash (hash, add) {\n if (!this._hashes) return;\n if (this._hashes.length === 0) state.add('hash', this);\n const action = new HashAction(hash, add);\n this._hashes = this._hashes.filter(action => action.hash !== hash);\n this._hashes.push(action);\n }\n\n unlistenHash (hash) {\n if (!this._hashes) return;\n this._hashes = this._hashes.filter(action => action.hash !== hash);\n if (this._hashes.length === 0) state.remove('hash', this);\n }\n\n handleHash (hash, e) {\n if (!this._hashes) return;\n for (const action of this._hashes) action.handle(hash, e);\n }\n\n listenKey (keyCode, closure, preventDefault = false, stopPropagation = false, type = 'down') {\n if (this._keyListenerTypes.indexOf(type) === -1) {\n this.listen(`key${type}`, this.handlingKey);\n this._keyListenerTypes.push(type);\n }\n\n this._keys.push(new KeyAction(type, keyCode, closure, preventDefault, stopPropagation));\n }\n\n unlistenKey (code, closure) {\n this._keys = this._keys.filter((key) => key.code !== code || key.closure !== closure);\n\n this._keyListenerTypes.forEach(type => {\n if (!this._keys.some(key => key.type === type)) this.unlisten(`key${type}`, this.handlingKey);\n });\n }\n\n handleKey (e) {\n for (const key of this._keys) key.handle(e);\n }\n\n get isEnabled () { return this._isEnabled; }\n\n set isEnabled (value) {\n this._isEnabled = value;\n }\n\n get isRendering () { return this._isRendering; }\n\n set isRendering (value) {\n if (this._isRendering === value) return;\n if (value) state.add('render', this);\n else state.remove('render', this);\n this._isRendering = value;\n }\n\n render () {}\n\n request (closure) {\n this._nexts.push(closure);\n state.getModule('render').request(this);\n }\n\n next () {\n const nexts = this._nexts.slice();\n this._nexts.length = 0;\n for (const closure of nexts) if (closure) closure();\n }\n\n get isResizing () { return this._isResizing; }\n\n set isResizing (value) {\n if (this._isResizing === value) return;\n if (value) {\n state.add('resize', this);\n this.resize();\n } else state.remove('resize', this);\n this._isResizing = value;\n }\n\n resize () {}\n\n isBreakpoint (breakpoint) {\n switch (true) {\n case typeof breakpoint === 'string':\n return Breakpoints[breakpoint.toUpperCase()].test();\n\n default:\n return breakpoint.test();\n }\n }\n\n get isScrollLocked () {\n return this._isScrollLocked;\n }\n\n set isScrollLocked (value) {\n if (this._isScrollLocked === value) return;\n if (value) state.add('lock', this);\n else state.remove('lock', this);\n this._isScrollLocked = value;\n }\n\n get isLoading () {\n return this._isLoading;\n }\n\n set isLoading (value) {\n if (this._isLoading === value) return;\n if (value) state.add('load', this);\n else state.remove('load', this);\n this._isLoading = value;\n }\n\n load () {}\n\n get isSwappingFont () {\n return this._isSwappingFont;\n }\n\n set isSwappingFont (value) {\n if (this._isSwappingFont === value) return;\n if (value) state.add('font-swap', this);\n else state.remove('font-swap', this);\n this._isSwappingFont = value;\n }\n\n swapFont () {}\n\n get isMouseMoving () { return this._isMouseMoving; }\n\n set isMouseMoving (value) {\n if (this._isMouseMoving === value) return;\n if (value) {\n state.add('mouse-move', this);\n } else {\n state.remove('mouse-move', this);\n }\n this._isMouseMoving = value;\n }\n\n mouseMove (point) {}\n\n examine (attributeNames) {\n if (!this.node.matches(this.registration.selector)) {\n this._dispose();\n return;\n }\n\n this.mutate(attributeNames);\n }\n\n mutate (attributeNames) {}\n\n retrieveNodeId (node, append) {\n if (node.id) return node.id;\n const id = uniqueId(`${this.id}-${append}`);\n this.warn(`add id '${id}' to ${append}`);\n node.setAttribute('id', id);\n return id;\n }\n\n get isDisposed () {\n return this._isDisposed;\n }\n\n _dispose () {\n this.debug(`dispose instance of ${this.registration.instanceClassName} on element [${this.element.id}]`);\n this.removeAttribute(this.registration.attribute);\n this.unlisten();\n state.remove('hash', this);\n this._hashes = null;\n this._keys = null;\n this.isRendering = false;\n this.isResizing = false;\n this._nexts = null;\n state.getModule('render').nexts.remove(this);\n this.isScrollLocked = false;\n this.isLoading = false;\n this.isSwappingFont = false;\n this.isMouseMoving = false;\n this._emitter.dispose();\n this._emitter = null;\n this._ascent.dispose();\n this._ascent = null;\n this._descent.dispose();\n this._descent = null;\n this.element.remove(this);\n for (const registration of this._registrations) state.remove('register', registration);\n this._registrations = null;\n this.registration.remove(this);\n this._isDisposed = true;\n this.dispose();\n }\n\n dispose () {}\n\n emit (type, data) {\n return this.element.emit(type, data);\n }\n\n addEmission (type, closure) {\n this._emitter.add(type, closure);\n }\n\n removeEmission (type, closure) {\n this._emitter.remove(type, closure);\n }\n\n ascend (type, data) {\n return this.element.ascend(type, data);\n }\n\n addAscent (type, closure) {\n this._ascent.add(type, closure);\n }\n\n removeAscent (type, closure) {\n this._ascent.remove(type, closure);\n }\n\n descend (type, data) {\n return this.element.descend(type, data);\n }\n\n addDescent (type, closure) {\n this._descent.add(type, closure);\n }\n\n removeDescent (type, closure) {\n this._descent.remove(type, closure);\n }\n\n get style () {\n return this.node.style;\n }\n\n addClass (className) {\n addClass(this.node, className);\n }\n\n removeClass (className) {\n removeClass(this.node, className);\n }\n\n hasClass (className) {\n return hasClass(this.node, className);\n }\n\n get classNames () {\n return getClassNames(this.node);\n }\n\n remove () {\n this.node.parentNode.removeChild(this.node);\n }\n\n setAttribute (attributeName, value) {\n this.node.setAttribute(attributeName, value);\n }\n\n getAttribute (attributeName) {\n return this.node.getAttribute(attributeName);\n }\n\n hasAttribute (attributeName) {\n return this.node.hasAttribute(attributeName);\n }\n\n removeAttribute (attributeName) {\n this.node.removeAttribute(attributeName);\n }\n\n setProperty (propertyName, value) {\n this.node.style.setProperty(propertyName, value);\n }\n\n removeProperty (propertyName) {\n this.node.style.removeProperty(propertyName);\n }\n\n focus () {\n this.node.focus();\n }\n\n blur () {\n this.node.blur();\n }\n\n focusClosest () {\n const closest = this._focusClosest(this.node.parentNode);\n if (closest) closest.focus();\n }\n\n _focusClosest (parent) {\n if (!parent) return null;\n const actions = [...queryActions(parent)];\n if (actions.length <= 1) {\n return this._focusClosest(parent.parentNode);\n } else {\n const index = actions.indexOf(this.node);\n return actions[index + (index < actions.length - 1 ? 1 : -1)];\n }\n }\n\n get hasFocus () {\n return this.node === document.activeElement;\n }\n\n scrollIntoView () {\n const rect = this.getRect();\n\n const scroll = state.getModule('lock');\n\n if (rect.top < 0) {\n scroll.move(rect.top - 50);\n }\n\n if (rect.bottom > window.innerHeight) {\n scroll.move(rect.bottom - window.innerHeight + 50);\n }\n }\n\n matches (selectors) {\n return this.node.matches(selectors);\n }\n\n querySelector (selectors) {\n return this.node.querySelector(selectors);\n }\n\n querySelectorAll (selectors) {\n return querySelectorAllArray(this.node, selectors);\n }\n\n queryParentSelector (selectors) {\n return queryParentSelector(this.node, selectors);\n }\n\n getRect () {\n const rect = this.node.getBoundingClientRect();\n rect.center = rect.left + rect.width * 0.5;\n rect.middle = rect.top + rect.height * 0.5;\n return rect;\n }\n\n get isLegacy () {\n return state.isLegacy;\n }\n}\n\nclass KeyAction {\n constructor (type, keyCode, closure, preventDefault, stopPropagation) {\n this.type = type;\n this.eventType = `key${type}`;\n this.keyCode = keyCode;\n this.closure = closure;\n this.preventDefault = preventDefault === true;\n this.stopPropagation = stopPropagation === true;\n }\n\n handle (e) {\n if (e.type !== this.eventType) return;\n if (e.keyCode === this.keyCode.value) {\n this.closure(e);\n if (this.preventDefault) {\n e.preventDefault();\n }\n if (this.stopPropagation) {\n e.stopPropagation();\n }\n }\n }\n}\n\nclass Listener {\n constructor (node, type, closure, options) {\n this._node = node;\n this._type = type;\n this._closure = closure;\n this._options = options;\n }\n\n get closure () {\n return this._closure;\n }\n\n listen () {\n this._node.addEventListener(this._type, this._closure, this._options);\n }\n\n matchOptions (options = null) {\n switch (true) {\n case options === null:\n case typeof this._options === 'boolean' && typeof options === 'boolean' && this._options === options:\n return true;\n\n case Object.keys(this._options).length !== Object.keys(options).length:\n return false;\n\n case Object.keys(options).every(key => this._options[key] === options[key]):\n return true;\n }\n\n return false;\n }\n\n unlisten () {\n this._node.removeEventListener(this._type, this._closure, this._options);\n }\n}\n\nclass HashAction {\n constructor (hash, add) {\n this.hash = hash;\n this.add = add;\n }\n\n handle (hash, e) {\n if (this.hash === hash) this.add(e);\n }\n}\n\nconst DisclosureEvent = {\n DISCLOSE: ns.event('disclose'),\n CONCEAL: ns.event('conceal')\n};\n\nconst DisclosureEmission = {\n RESET: ns.emission('disclosure', 'reset'),\n ADDED: ns.emission('disclosure', 'added'),\n RETRIEVE: ns.emission('disclosure', 'retrieve'),\n REMOVED: ns.emission('disclosure', 'removed'),\n GROUP: ns.emission('disclosure', 'group'),\n UNGROUP: ns.emission('disclosure', 'ungroup'),\n SPOTLIGHT: ns.emission('disclosure', 'spotlight')\n};\n\nclass Disclosure extends Instance {\n constructor (type, selector, DisclosureButtonInstanceClass, disclosuresGroupInstanceClassName) {\n super();\n this.type = type;\n this._selector = selector;\n this.DisclosureButtonInstanceClass = DisclosureButtonInstanceClass;\n this.disclosuresGroupInstanceClassName = disclosuresGroupInstanceClassName;\n this.modifier = this._selector + '--' + this.type.id;\n this._isPristine = true;\n this._isRetrievingPrimaries = false;\n this._hasRetrieved = false;\n this._primaryButtons = [];\n }\n\n static get instanceClassName () {\n return 'Disclosure';\n }\n\n init () {\n this.addDescent(DisclosureEmission.RESET, this.reset.bind(this));\n this.addDescent(DisclosureEmission.GROUP, this.update.bind(this));\n this.addDescent(DisclosureEmission.UNGROUP, this.update.bind(this));\n this.addAscent(DisclosureEmission.SPOTLIGHT, this.disclose.bind(this));\n this.register(`[aria-controls=\"${this.id}\"]`, this.DisclosureButtonInstanceClass);\n this.ascend(DisclosureEmission.ADDED);\n this.listenHash(this.id, this._spotlight.bind(this));\n this.update();\n }\n\n get isEnabled () { return super.isEnabled; }\n\n set isEnabled (value) {\n if (this.isEnabled === value) return;\n super.isEnabled = value;\n if (value) this.ascend(DisclosureEmission.ADDED);\n else this.ascend(DisclosureEmission.REMOVED);\n }\n\n get isPristine () {\n return this._isPristine;\n }\n\n get proxy () {\n const scope = this;\n const proxy = Object.assign(super.proxy, {\n disclose: scope.disclose.bind(scope),\n focus: scope.focus.bind(scope)\n });\n\n if (this.type.canConceal) proxy.conceal = scope.conceal.bind(scope);\n\n const proxyAccessors = {\n get buttons () {\n return scope.buttons.map((button) => button.proxy);\n },\n get group () {\n const group = scope.group;\n return group ? group.proxy : null;\n },\n get isDisclosed () {\n return scope.isDisclosed;\n }\n };\n\n return completeAssign(proxy, proxyAccessors);\n }\n\n get buttons () {\n return this.getRegisteredInstances(this.DisclosureButtonInstanceClass.instanceClassName);\n }\n\n update () {\n this.getGroup();\n this.retrievePrimaries();\n }\n\n getGroup () {\n if (!this.disclosuresGroupInstanceClassName) {\n this._group = null;\n return;\n }\n\n const group = this.element.getAscendantInstance(this.disclosuresGroupInstanceClassName, this.constructor.instanceClassName);\n if (!group || !group.validate(this)) {\n this._group = null;\n return;\n }\n\n this._group = group;\n }\n\n get group () {\n return this._group;\n }\n\n disclose (withhold) {\n if (this.isDisclosed === true || !this.isEnabled) return false;\n this._isPristine = false;\n this.isDisclosed = true;\n if (!withhold && this.group) this.group.current = this;\n return true;\n }\n\n conceal (withhold, preventFocus = true) {\n if (this.isDisclosed === false) return false;\n if (!this.type.canConceal && this.group && this.group.current === this) return false;\n this.isDisclosed = false;\n if (!withhold && this.group && this.group.current === this) this.group.current = null;\n if (!preventFocus) this.focus();\n if (!this._isPristine) this.descend(DisclosureEmission.RESET);\n return true;\n }\n\n get isDisclosed () {\n return this._isDisclosed;\n }\n\n set isDisclosed (value) {\n if (this._isDisclosed === value || (!this.isEnabled && value === true)) return;\n this.dispatch(value ? DisclosureEvent.DISCLOSE : DisclosureEvent.CONCEAL, this.type);\n this._isDisclosed = value;\n if (value) this.addClass(this.modifier);\n else this.removeClass(this.modifier);\n for (let i = 0; i < this.buttons.length; i++) this.buttons[i].apply(value);\n }\n\n get isInitiallyDisclosed () {\n return this.primaryButtons.some(button => button.isInitiallyDisclosed);\n }\n\n hasRetrieved () {\n return this._hasRetrieved;\n }\n\n reset () {}\n\n toggle (canDisclose) {\n if (!this.type.canConceal) this.disclose();\n else {\n switch (true) {\n case !canDisclose:\n case this.isDisclosed:\n this.conceal(false, false);\n break;\n\n default:\n this.disclose();\n }\n }\n }\n\n get buttonHasFocus () {\n return this.buttons.some((button) => { return button.hasFocus; });\n }\n\n get hasFocus () {\n if (super.hasFocus) return true;\n if (this.buttonHasFocus) return true;\n return this.querySelectorAll(':focus').length > 0;\n }\n\n focus () {\n if (this._primaryButtons.length > 0) this._primaryButtons[0].focus();\n }\n\n get primaryButtons () {\n return this._primaryButtons;\n }\n\n retrievePrimaries () {\n if (this._isRetrievingPrimaries) return;\n this._isRetrievingPrimaries = true;\n this.request(this._retrievePrimaries.bind(this));\n }\n\n _retrievePrimaries () {\n this._isRetrievingPrimaries = false;\n this._primaryButtons = this._electPrimaries(this.buttons);\n\n if (this._hasRetrieved || this._primaryButtons.length === 0) return;\n this.retrieved();\n this._hasRetrieved = true;\n\n this.applyAbility(true);\n\n if (this.group) {\n this.group.retrieve();\n return;\n }\n\n if (this._isPristine && this.isEnabled && !this.group) {\n switch (true) {\n case this.hash === this.id:\n this._spotlight();\n break;\n\n case this.isInitiallyDisclosed:\n this.disclose();\n break;\n }\n }\n }\n\n retrieved () {}\n\n _spotlight () {\n this.disclose();\n this.request(() => { this.ascend(DisclosureEmission.SPOTLIGHT); });\n }\n\n _electPrimaries (candidates) {\n return candidates.filter(button => button.canDisclose && !this.node.contains(button.node));\n }\n\n applyAbility (withhold = false) {\n const isEnabled = !this._primaryButtons.every(button => button.isDisabled);\n\n if (this.isEnabled === isEnabled) return;\n\n this.isEnabled = isEnabled;\n\n if (withhold) return;\n\n if (!this.isEnabled && this.isDisclosed) {\n if (this.group) this.ascend(DisclosureEmission.REMOVED);\n else if (this.type.canConceal) this.conceal();\n }\n\n if (this.isEnabled) {\n if (this.group) this.ascend(DisclosureEmission.ADDED);\n if (this.hash === this.id) {\n this._spotlight();\n }\n }\n }\n\n dispose () {\n this._group = null;\n this._primaryButtons = null;\n super.dispose();\n this.ascend(DisclosureEmission.REMOVED);\n }\n}\n\nclass DisclosureButton extends Instance {\n constructor (type) {\n super();\n this.type = type;\n this.attributeName = type.ariaState ? 'aria-' + type.id : ns.attr(type.id);\n this._canDisclose = false;\n }\n\n static get instanceClassName () {\n return 'DisclosureButton';\n }\n\n get isPrimary () {\n return this.registration.creator.primaryButtons.includes(this);\n }\n\n get canDisclose () {\n return this._canDisclose;\n }\n\n get isDisabled () {\n return this.type.canDisable && this.hasAttribute('disabled');\n }\n\n init () {\n this._canDisclose = this.hasAttribute(this.attributeName);\n this._isInitiallyDisclosed = this.isDisclosed;\n this._isContained = this.registration.creator.node.contains(this.node);\n this.controlsId = this.getAttribute('aria-controls');\n this.registration.creator.retrievePrimaries();\n this.listenClick();\n }\n\n get proxy () {\n const scope = this;\n return Object.assign(super.proxy, {\n focus: scope.focus.bind(scope)\n });\n }\n\n handleClick (e) {\n if (this.registration.creator) this.registration.creator.toggle(this.canDisclose);\n }\n\n mutate (attributeNames) {\n this._canDisclose = this.hasAttribute(this.attributeName);\n this.registration.creator.applyAbility();\n if (!this._isApplying && this.isPrimary && attributeNames.indexOf(this.attributeName) > -1 && this.registration.creator) {\n if (this.isDisclosed) this.registration.creator.disclose();\n else if (this.type.canConceal) this.registration.creator.conceal();\n }\n }\n\n apply (value) {\n if (!this.canDisclose) return;\n this._isApplying = true;\n this.setAttribute(this.attributeName, value);\n this.request(() => { this._isApplying = false; });\n }\n\n get isDisclosed () {\n return this.getAttribute(this.attributeName) === 'true';\n }\n\n get isInitiallyDisclosed () {\n return this._isInitiallyDisclosed;\n }\n\n focus () {\n super.focus();\n this.scrollIntoView();\n }\n\n measure (rect) {\n const buttonRect = this.rect;\n this._dx = rect.x - buttonRect.x;\n this._dy = rect.y - buttonRect.y;\n }\n\n get dx () {\n return this._dx;\n }\n\n get dy () {\n return this._dy;\n }\n}\n\nconst DisclosureSelector = {\n PREVENT_CONCEAL: ns.attr.selector('prevent-conceal'),\n GROUP: ns.attr('group')\n};\n\nclass DisclosuresGroup extends Instance {\n constructor (disclosureInstanceClassName, jsAttribute) {\n super(jsAttribute);\n this.disclosureInstanceClassName = disclosureInstanceClassName;\n this._members = [];\n this._index = -1;\n this._isRetrieving = false;\n this._hasRetrieved = false;\n this._isGrouped = true;\n }\n\n static get instanceClassName () {\n return 'DisclosuresGroup';\n }\n\n init () {\n this.addAscent(DisclosureEmission.ADDED, this.update.bind(this));\n this.addAscent(DisclosureEmission.RETRIEVE, this.retrieve.bind(this));\n this.addAscent(DisclosureEmission.REMOVED, this.update.bind(this));\n this.descend(DisclosureEmission.GROUP);\n this._isGrouped = this.getAttribute(DisclosureSelector.GROUP) !== 'false';\n this.update();\n }\n\n get proxy () {\n const scope = this;\n\n const proxyAccessors = {\n set index (value) {\n scope.index = value;\n },\n get index () {\n return scope.index;\n },\n get length () {\n return scope.length;\n },\n get current () {\n const current = scope.current;\n return current ? current.proxy : null;\n },\n get members () {\n return scope.members.map((member) => member.proxy);\n },\n get hasFocus () {\n return scope.hasFocus;\n },\n set isGrouped (value) {\n scope.isGrouped = value;\n },\n get isGrouped () {\n return scope.isGrouped;\n }\n };\n\n return completeAssign(super.proxy, proxyAccessors);\n }\n\n validate (member) {\n return true;\n }\n\n getMembers () {\n const members = this.element.getDescendantInstances(this.disclosureInstanceClassName, this.constructor.instanceClassName, true);\n this._members = members.filter(this.validate.bind(this)).filter(member => member.isEnabled);\n const invalids = members.filter(member => !this._members.includes(member));\n invalids.forEach(invalid => invalid.conceal());\n }\n\n retrieve (bypassPrevention = false) {\n if (this._isRetrieving || (this._hasRetrieved && !bypassPrevention)) return;\n this._isRetrieving = true;\n this.request(this._retrieve.bind(this));\n }\n\n _retrieve () {\n this.getMembers();\n this._isRetrieving = false;\n this._hasRetrieved = true;\n if (this.hash) {\n for (let i = 0; i < this.length; i++) {\n const member = this.members[i];\n if (this.hash === member.id) {\n this.index = i;\n this.request(() => { this.ascend(DisclosureEmission.SPOTLIGHT); });\n return i;\n }\n }\n }\n\n for (let i = 0; i < this.length; i++) {\n const member = this.members[i];\n if (member.isInitiallyDisclosed) {\n this.index = i;\n return i;\n }\n }\n\n return this.getIndex();\n }\n\n update () {\n this.getMembers();\n if (this._hasRetrieved) this.getIndex();\n }\n\n get members () {\n return this._members;\n }\n\n get length () {\n return this.members ? this.members.length : 0;\n }\n\n getIndex (defaultIndex = -1) {\n this._index = undefined;\n let index = defaultIndex;\n for (let i = 0; i < this.length; i++) {\n if (this.members[i].isDisclosed) {\n index = i;\n break;\n }\n }\n\n this.index = index;\n return index;\n }\n\n get index () {\n return this._index;\n }\n\n set index (value) {\n if (value < -1 || value >= this.length || value === this._index) return;\n this._index = value;\n for (let i = 0; i < this.length; i++) {\n const member = this.members[i];\n if (value === i) {\n if (!member.isDisclosed) member.disclose(true);\n } else {\n if ((this.isGrouped || !this.canUngroup) && member.isDisclosed) member.conceal(true);\n }\n }\n this.apply();\n }\n\n get current () {\n if (this._index === -1 || isNaN(this._index)) return null;\n return this._members[this._index] || null;\n }\n\n set current (member) {\n this.index = this.members.indexOf(member);\n }\n\n get hasFocus () {\n const current = this.current;\n if (current) return current.hasFocus;\n return false;\n }\n\n set isGrouped (value) {\n const isGrouped = !!value;\n if (this._isGrouped === isGrouped) return;\n this._isGrouped = isGrouped;\n this.setAttribute(DisclosureSelector.GROUP, !!value);\n this.update();\n }\n\n get isGrouped () {\n return this._isGrouped;\n }\n\n get canUngroup () {\n return false;\n }\n\n mutate (attributesNames) {\n if (attributesNames.includes(DisclosureSelector.GROUP)) {\n this.isGrouped = this.getAttribute(DisclosureSelector.GROUP) !== 'false';\n }\n }\n\n apply () {}\n\n dispose () {\n super.dispose();\n this.descend(DisclosureEmission.UNGROUP);\n this._members = null;\n }\n}\n\nconst DisclosureType = {\n EXPAND: {\n id: 'expanded',\n ariaState: true,\n ariaControls: true,\n canConceal: true,\n canDisable: true\n },\n SELECT: {\n id: 'selected',\n ariaState: true,\n ariaControls: true,\n canConceal: false,\n canDisable: true\n },\n OPENED: {\n id: 'opened',\n ariaState: false,\n ariaControls: true,\n canConceal: true,\n canDisable: false\n }\n};\n\nclass CollapseButton extends DisclosureButton {\n constructor () {\n super(DisclosureType.EXPAND);\n }\n\n static get instanceClassName () {\n return 'CollapseButton';\n }\n}\n\nconst CollapseSelector = {\n COLLAPSE: ns.selector('collapse'),\n COLLAPSING: ns.selector('collapsing')\n};\n\n/**\n * Tab coorespond au panel d'un élement Tabs (tab panel)\n * Tab étend disclosure qui ajoute/enleve le modifier --selected,\n * et ajoute/eleve l'attribut hidden, sur le panel\n */\nclass Collapse extends Disclosure {\n constructor () {\n super(DisclosureType.EXPAND, CollapseSelector.COLLAPSE, CollapseButton, 'CollapsesGroup');\n }\n\n static get instanceClassName () {\n return 'Collapse';\n }\n\n init () {\n super.init();\n this.listen('transitionend', this.transitionend.bind(this));\n }\n\n transitionend (e) {\n this.removeClass(CollapseSelector.COLLAPSING);\n if (!this.isDisclosed) {\n if (this.isLegacy) this.style.maxHeight = '';\n else this.style.removeProperty('--collapse-max-height');\n }\n }\n\n unbound () {\n if (this.isLegacy) this.style.maxHeight = 'none';\n else this.style.setProperty('--collapse-max-height', 'none');\n }\n\n disclose (withhold) {\n if (this.isDisclosed === true || !this.isEnabled) return false;\n this.unbound();\n this.request(() => {\n this.addClass(CollapseSelector.COLLAPSING);\n this.adjust();\n this.request(() => {\n super.disclose(withhold);\n });\n });\n }\n\n conceal (withhold, preventFocus) {\n if (this.isDisclosed === false) return false;\n this.request(() => {\n this.addClass(CollapseSelector.COLLAPSING);\n this.adjust();\n this.request(() => {\n super.conceal(withhold, preventFocus);\n });\n });\n }\n\n adjust () {\n this.setProperty('--collapser', 'none');\n const height = this.node.offsetHeight;\n this.setProperty('--collapse', -height + 'px');\n this.setProperty('--collapser', '');\n }\n\n reset () {\n if (!this.isPristine) this.isDisclosed = false;\n }\n\n _electPrimaries (candidates) {\n const primary = this.element.parent.instances.map(instance => instance.collapsePrimary).filter(button => button !== undefined && candidates.indexOf(button) > -1);\n if (primary.length === 1) return primary;\n candidates = super._electPrimaries(candidates);\n if (candidates.length === 1) return candidates;\n const before = candidates.filter(candidate => candidate.dy >= 0);\n if (before.length > 0) candidates = before;\n if (candidates.length === 1) return candidates;\n const min = Math.min(...candidates.map(candidate => candidate.dy));\n const mins = candidates.filter(candidate => candidate.dy === min);\n if (mins.length > 0) candidates = mins;\n if (candidates.length === 1) return candidates;\n candidates.sort((a, b) => Math.abs(b.dx) - Math.abs(a.dx));\n return candidates;\n }\n}\n\nclass CollapsesGroup extends DisclosuresGroup {\n constructor () {\n super('Collapse');\n }\n\n static get instanceClassName () {\n return 'CollapsesGroup';\n }\n\n get canUngroup () {\n return true;\n }\n}\n\nconst EquisizedEmission = {\n CHANGE: ns('equisized')\n};\n\nclass Equisized extends Instance {\n static get instanceClassName () {\n return 'Equisized';\n }\n\n init () {\n this.ascend(EquisizedEmission.CHANGE);\n }\n\n measure () {\n if (this.isLegacy) this.style.width = 'auto';\n return this.getRect().width;\n }\n\n adjust (width) {\n if (this.isLegacy) this.style.width = `${width}px`;\n }\n\n dispose () {\n this.ascend(EquisizedEmission.CHANGE);\n }\n}\n\nclass EquisizedsGroup extends Instance {\n static get instanceClassName () {\n return 'EquisizedsGroup';\n }\n\n init () {\n this.isResizing = true;\n this.isLoading = true;\n this.addAscent(EquisizedEmission.CHANGE, this.resize.bind(this));\n }\n\n load () {\n this.resize();\n }\n\n resize () {\n const equisizeds = this.element.getDescendantInstances('Equisized');\n if (!this.isLegacy) this.style.setProperty('--equisized-width', 'auto');\n\n const width = Math.max(...equisizeds.map(equisized => equisized.measure()));\n if (this.isLegacy) equisizeds.forEach(equisized => equisized.adjust(width));\n else this.style.setProperty('--equisized-width', `${width}px`);\n }\n}\n\nconst ToggleEvent = {\n TOGGLE: ns.event('toggle')\n};\n\nclass Toggle extends Instance {\n static get instanceClassName () {\n return 'Toggle';\n }\n\n init () {\n this.pressed = this.pressed === 'true';\n this.listenClick();\n }\n\n handleClick () {\n this.toggle();\n }\n\n toggle () {\n this.pressed = this.pressed !== 'true';\n }\n\n get pressed () {\n return this.getAttribute('aria-pressed');\n }\n\n set pressed (value) {\n this.setAttribute('aria-pressed', value ? 'true' : 'false');\n this.dispatch(ToggleEvent.TOGGLE, value);\n }\n\n get proxy () {\n const scope = this;\n const proxy = Object.assign(super.proxy, {\n toggle: scope.toggle.bind(scope)\n });\n\n const proxyAccessors = {\n get pressed () {\n return scope.pressed;\n },\n set pressed (value) {\n scope.pressed = value;\n }\n };\n\n return completeAssign(proxy, proxyAccessors);\n }\n}\n\nconst RootSelector = {\n ROOT: ':root'\n};\n\nconst setAttributes = (el, attrs) => {\n Object.keys(attrs).forEach(key => el.setAttribute(key, attrs[key]));\n};\n\nclass InjectSvg extends Instance {\n static get instanceClassName () {\n return 'InjectSvg';\n }\n\n init () {\n if (this.node) {\n this.img = this.node.querySelector('img');\n }\n\n if (!this.isLegacy) {\n this.replace();\n }\n }\n\n get proxy () {\n const scope = this;\n return Object.assign(super.proxy, {\n replace: scope.replace.bind(scope),\n restore: scope.restore.bind(scope)\n });\n }\n\n fetch () {\n if (this.img) {\n this.imgID = this.img.getAttribute('id');\n this.imgClass = this.img.getAttribute('class');\n this.imgURL = this.img.getAttribute('src');\n\n fetch(this.imgURL)\n .then(data => data.text())\n .then(response => {\n const parser = new DOMParser();\n const xmlDoc = parser.parseFromString(response, 'text/html');\n this.svg = xmlDoc.querySelector('svg');\n\n if (this.svg) {\n this.replace();\n }\n });\n }\n }\n\n replace () {\n if (!this.svg) {\n this.fetch();\n return;\n }\n\n if (this.imgID && typeof this.imgID !== 'undefined') {\n this.svg.setAttribute('id', this.imgID);\n }\n\n // gestion de la dépréciation\n let name = this.imgURL.match(/[ \\w-]+\\./)[0];\n if (name) {\n name = name.slice(0, -1);\n\n if (['dark', 'light', 'system'].includes(name)) {\n this.svg.innerHTML = this.svg.innerHTML.replaceAll('id=\"artwork-', `id=\"${name}-artwork-`);\n this.svg.innerHTML = this.svg.innerHTML.replaceAll('\"#artwork-', `\"#${name}-artwork-`);\n }\n }\n\n if (this.imgClass && typeof this.imgClass !== 'undefined') {\n this.svg.setAttribute('class', this.imgClass);\n }\n\n if (this.svg.hasAttribute('xmlns:a')) {\n this.svg.removeAttribute('xmlns:a');\n }\n\n this.node.setAttribute('data-fr-inject-svg', true);\n const svgAttributes = {\n 'aria-hidden': true,\n focusable: false\n };\n setAttributes(this.svg, svgAttributes);\n this.node.replaceChild(this.svg, this.img);\n }\n\n restore () {\n if (this.img && this.svg) {\n this.node.setAttribute('data-fr-inject-svg', false);\n this.node.replaceChild(this.img, this.svg);\n }\n }\n}\n\nconst InjectSvgSelector = {\n INJECT_SVG: `[${ns.attr('inject-svg')}]`\n};\n\nclass Artwork extends Instance {\n static get instanceClassName () {\n return 'Artwork';\n }\n\n init () {\n if (this.isLegacy) {\n this.replace();\n }\n }\n\n get proxy () {\n const scope = this;\n return Object.assign(super.proxy, {\n replace: scope.replace.bind(scope)\n });\n }\n\n fetch () {\n this.xlink = this.node.getAttribute('href');\n const splitUrl = this.xlink.split('#');\n this.svgUrl = splitUrl[0];\n this.svgName = splitUrl[1];\n\n const xhr = new XMLHttpRequest();\n xhr.onload = () => {\n const parser = new DOMParser();\n const xmlDoc = parser.parseFromString(xhr.responseText, 'text/html');\n this.realSvgContent = xmlDoc.getElementById(this.svgName);\n\n if (this.realSvgContent) {\n this.realSvgContent.classList.add(this.node.classList);\n this.replace();\n }\n };\n xhr.open('GET', this.svgUrl);\n xhr.send();\n }\n\n replace () {\n if (!this.realSvgContent) {\n this.fetch();\n return;\n }\n\n this.node.parentNode.replaceChild(this.realSvgContent, this.node);\n }\n}\n\nconst ArtworkSelector = {\n ARTWORK_USE: `${ns.selector('artwork')} use`\n};\n\nconst AssessSelector = {\n ASSESS_FILE: `${ns.attr.selector('assess-file')}`,\n DETAIL: `${ns.attr.selector('assess-file')} [class$=\"__detail\"], ${ns.attr.selector('assess-file')} [class*=\"__detail \"]`\n};\n\nconst AssessEmission = {\n UPDATE: ns.emission('assess', 'update'),\n ADDED: ns.emission('assess', 'added')\n};\n\nclass AssessFile extends Instance {\n static get instanceClassName () {\n return 'AssessFile';\n }\n\n init () {\n this.lang = this.getLang(this.node);\n this.href = this.getAttribute('href');\n this.hreflang = this.getAttribute('hreflang');\n this.file = {};\n this.gather();\n this.addAscent(AssessEmission.ADDED, this.update.bind(this));\n this.addDescent(AssessEmission.ADDED, this.update.bind(this));\n }\n\n getFileLength () {\n if (this.href === undefined) {\n this.length = -1;\n return;\n }\n\n fetch(this.href, { method: 'HEAD', mode: 'cors' }).then(response => {\n this.length = response.headers.get('content-length') || -1;\n if (this.length === -1) {\n inspector.warn('File size unknown: ' + this.href + '\\nUnable to get HTTP header: \"content-length\"');\n }\n this.gather();\n });\n }\n\n mutate (attributeNames) {\n if (attributeNames.indexOf('href') !== -1) {\n this.href = this.getAttribute('href');\n this.getFileLength();\n }\n\n if (attributeNames.indexOf('hreflang') !== -1) {\n this.hreflang = this.getAttribute('hreflang');\n this.gather();\n }\n }\n\n gather () {\n // TODO V2: implémenter async\n if (this.isLegacy) this.length = -1;\n\n if (!this.length) {\n this.getFileLength();\n return;\n }\n\n this.details = [];\n\n if (this.href) {\n const extension = this.parseExtension(this.href);\n if (extension) this.details.push(extension.toUpperCase());\n }\n\n if (this.length !== -1) {\n this.details.push(this.bytesToSize(this.length));\n }\n\n if (this.hreflang) {\n this.details.push(this.getLangDisplayName(this.hreflang));\n }\n\n this.update();\n }\n\n update () {\n if (!this.details) return;\n this.descend(AssessEmission.UPDATE, this.details);\n this.ascend(AssessEmission.UPDATE, this.details);\n }\n\n getLang (elem) {\n // todo: ajouter un listener global de changement de langue\n if (elem.lang) return elem.lang;\n if (document.documentElement === elem) return window.navigator.language;\n return this.getLang(elem.parentElement);\n }\n\n parseExtension (url) {\n const regexExtension = /\\.(\\w{1,9})(?:$|[?#])/;\n return url.match(regexExtension)[0].replace('.', '');\n }\n\n getLangDisplayName (locale) {\n if (this.isLegacy) return locale;\n const displayNames = new Intl.DisplayNames([this.lang], { type: 'language' });\n const name = displayNames.of(locale);\n return name.charAt(0).toUpperCase() + name.slice(1);\n }\n\n bytesToSize (bytes) {\n if (bytes === -1) return null;\n\n let sizeUnits = ['octets', 'ko', 'Mo', 'Go', 'To'];\n if (this.getAttribute(ns.attr('assess-file')) === 'bytes') {\n sizeUnits = ['bytes', 'KB', 'MB', 'GB', 'TB'];\n }\n\n const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1000)), 10);\n if (i === 0) return `${bytes} ${sizeUnits[i]}`;\n\n const size = bytes / (1000 ** i);\n const roundedSize = Math.round((size + Number.EPSILON) * 100) / 100; // arrondi a 2 décimal\n const stringSize = String(roundedSize).replace('.', ',');\n\n return `${stringSize} ${sizeUnits[i]}`;\n }\n}\n\nclass AssessDetail extends Instance {\n static get instanceClassName () {\n return 'AssessDetail';\n }\n\n init () {\n this.addDescent(AssessEmission.UPDATE, this.update.bind(this));\n this.ascend(AssessEmission.ADDED);\n }\n\n update (details) {\n this.node.innerHTML = details.join(' - ');\n }\n}\n\nconst ratiosImg = ['32x9', '16x9', '3x2', '4x3', '1x1', '3x4', '2x3'];\nconst ratiosVid = ['16x9', '4x3', '1x1'];\n\nconst ratioSelector = (name, modifiers) => {\n return modifiers.map(modifier => ns.selector(`${name}--${modifier}`)).join(',');\n};\n\nconst deprecatedRatioSelector = `${ns.selector('responsive-img')}, ${ratioSelector('responsive-img', ratiosImg)}, ${ns.selector('responsive-vid')}, ${ratioSelector('responsive-vid', ratiosVid)}`;\n\nconst RatioSelector = {\n RATIO: `${ns.selector('ratio')}, ${ratioSelector('ratio', ratiosImg)}, ${deprecatedRatioSelector}`\n};\n\nconst api = window[config.namespace];\n\nclass Ratio extends Instance {\n static get instanceClassName () {\n return 'Ratio';\n }\n\n init () {\n if (!api.internals.support.supportAspectRatio()) {\n this.ratio = 16 / 9;\n for (const className in this.classNames) {\n if (this.registration.selector.indexOf(this.classNames[className]) > 0) {\n const ratio = this.classNames[className].split('ratio-');\n if (ratio[1]) {\n this.ratio = ratio[1].split('x')[0] / ratio[1].split('x')[1];\n }\n }\n }\n this.isRendering = true;\n this.update();\n }\n }\n\n render () {\n const width = this.getRect().width;\n if (width !== this.currentWidth) this.update();\n }\n\n update () {\n this.currentWidth = this.getRect().width;\n this.style.height = this.currentWidth / this.ratio + 'px';\n }\n}\n\nconst PlaceSelector = {\n TOP: ns.selector('placement--top'),\n RIGHT: ns.selector('placement--right'),\n BOTTOM: ns.selector('placement--bottom'),\n LEFT: ns.selector('placement--left')\n};\n\nconst AlignSelector = {\n START: ns.selector('placement--start'),\n CENTER: ns.selector('placement--center'),\n END: ns.selector('placement--end')\n};\n\nconst PlacementPosition = {\n TOP: 'place_top',\n RIGHT: 'place_right',\n BOTTOM: 'place_bottom',\n LEFT: 'place_left'\n};\n\nconst PlacementAlign = {\n START: 'align_start',\n CENTER: 'align_center',\n END: 'align_end'\n};\n\nconst PlacementMode = {\n AUTO: 'placement_auto',\n MANUAL: 'placement_manual'\n};\n\nclass Placement extends Instance {\n constructor (mode = PlacementMode.AUTO, places = [PlacementPosition.BOTTOM, PlacementPosition.TOP, PlacementPosition.LEFT, PlacementPosition.RIGHT], aligns = [PlacementAlign.CENTER, PlacementAlign.START, PlacementAlign.END], safeAreaMargin = 16) {\n super();\n this._mode = mode;\n this._places = places;\n this._aligns = aligns;\n this._safeAreaMargin = safeAreaMargin;\n this._isShown = false;\n }\n\n static get instanceClassName () {\n return 'Placement';\n }\n\n init () {\n this.isResizing = true;\n }\n\n get proxy () {\n const scope = this;\n const proxy = Object.assign(super.proxy, {\n show: scope.show.bind(scope),\n hide: scope.hide.bind(scope)\n });\n\n const proxyAccessors = {\n get mode () {\n return scope.mode;\n },\n set mode (value) {\n scope.mode = value;\n },\n get place () {\n return scope.place;\n },\n set place (value) {\n scope.place = value;\n },\n get align () {\n return scope.align;\n },\n set align (value) {\n scope.align = value;\n },\n get isShown () {\n return scope.isShown;\n },\n set isShown (value) {\n scope.isShown = value;\n }\n };\n\n return completeAssign(proxy, proxyAccessors);\n }\n\n get mode () {\n return this._mode;\n }\n\n set mode (value) {\n this._mode = value;\n }\n\n get place () {\n return this._place;\n }\n\n set place (value) {\n if (this._place === value) return;\n switch (this._place) {\n case PlacementPosition.TOP:\n this.removeClass(PlaceSelector.TOP);\n break;\n\n case PlacementPosition.RIGHT:\n this.removeClass(PlaceSelector.RIGHT);\n break;\n\n case PlacementPosition.BOTTOM:\n this.removeClass(PlaceSelector.BOTTOM);\n break;\n\n case PlacementPosition.LEFT:\n this.removeClass(PlaceSelector.LEFT);\n break;\n }\n this._place = value;\n switch (this._place) {\n case PlacementPosition.TOP:\n this.addClass(PlaceSelector.TOP);\n break;\n\n case PlacementPosition.RIGHT:\n this.addClass(PlaceSelector.RIGHT);\n break;\n\n case PlacementPosition.BOTTOM:\n this.addClass(PlaceSelector.BOTTOM);\n break;\n\n case PlacementPosition.LEFT:\n this.addClass(PlaceSelector.LEFT);\n break;\n }\n }\n\n get align () {\n return this._align;\n }\n\n set align (value) {\n if (this._align === value) return;\n switch (this._align) {\n case PlacementAlign.START:\n this.removeClass(AlignSelector.START);\n break;\n\n case PlacementAlign.CENTER:\n this.removeClass(AlignSelector.CENTER);\n break;\n\n case PlacementAlign.END:\n this.removeClass(AlignSelector.END);\n break;\n }\n this._align = value;\n switch (this._align) {\n case PlacementAlign.START:\n this.addClass(AlignSelector.START);\n break;\n\n case PlacementAlign.CENTER:\n this.addClass(AlignSelector.CENTER);\n break;\n\n case PlacementAlign.END:\n this.addClass(AlignSelector.END);\n break;\n }\n }\n\n show () {\n this.isShown = true;\n }\n\n hide () {\n this.isShown = false;\n }\n\n get isShown () {\n return this._isShown;\n }\n\n set isShown (value) {\n if (this._isShown === value || !this.isEnabled) return;\n this.isRendering = value;\n this._isShown = value;\n }\n\n setReferent (referent) {\n this._referent = referent;\n }\n\n resize () {\n this.safeArea = {\n top: this._safeAreaMargin,\n right: window.innerWidth - this._safeAreaMargin,\n bottom: window.innerHeight - this._safeAreaMargin,\n left: this._safeAreaMargin,\n center: window.innerWidth * 0.5,\n middle: window.innerHeight * 0.5\n };\n }\n\n render () {\n if (!this._referent) return;\n this.rect = this.getRect();\n this.referentRect = this._referent.getRect();\n\n if (this.mode === PlacementMode.AUTO) {\n this.place = this.getPlace();\n switch (this.place) {\n case PlacementPosition.TOP:\n case PlacementPosition.BOTTOM:\n this.align = this.getHorizontalAlign();\n break;\n\n case PlacementPosition.LEFT:\n case PlacementPosition.RIGHT:\n this.align = this.getVerticalAlign();\n }\n }\n\n let x, y;\n\n switch (this.place) {\n case PlacementPosition.TOP:\n y = this.referentRect.top - this.rect.height;\n break;\n\n case PlacementPosition.RIGHT:\n x = this.referentRect.right;\n break;\n\n case PlacementPosition.BOTTOM:\n y = this.referentRect.bottom;\n break;\n\n case PlacementPosition.LEFT:\n x = this.referentRect.left - this.rect.width;\n break;\n }\n\n switch (this.place) {\n case PlacementPosition.TOP:\n case PlacementPosition.BOTTOM:\n switch (this.align) {\n case PlacementAlign.CENTER:\n x = this.referentRect.center - this.rect.width * 0.5;\n break;\n\n case PlacementAlign.START:\n x = this.referentRect.left;\n break;\n\n case PlacementAlign.END:\n x = this.referentRect.right - this.rect.width;\n break;\n }\n break;\n\n case PlacementPosition.RIGHT:\n case PlacementPosition.LEFT:\n switch (this.align) {\n case PlacementAlign.CENTER:\n y = this.referentRect.middle - this.rect.height * 0.5;\n break;\n\n case PlacementAlign.START:\n y = this.referentRect.top;\n break;\n\n case PlacementAlign.END:\n y = this.referentRect.bottom - this.rect.height;\n break;\n }\n break;\n }\n\n if (this._x !== x || this._y !== y) {\n this._x = (x + 0.5) | 0;\n this._y = (y + 0.5) | 0;\n this.node.style.transform = `translate(${this._x}px,${this._y}px)`;\n }\n }\n\n getPlace () {\n for (const place of this._places) {\n switch (place) {\n case PlacementPosition.TOP:\n if (this.referentRect.top - this.rect.height > this.safeArea.top) return PlacementPosition.TOP;\n break;\n\n case PlacementPosition.RIGHT:\n if (this.referentRect.right + this.rect.width < this.safeArea.right) return PlacementPosition.RIGHT;\n break;\n\n case PlacementPosition.BOTTOM:\n if (this.referentRect.bottom + this.rect.height < this.safeArea.bottom) return PlacementPosition.BOTTOM;\n break;\n\n case PlacementPosition.LEFT:\n if (this.referentRect.left - this.rect.width > this.safeArea.left) return PlacementPosition.LEFT;\n break;\n }\n }\n\n return this._places[0];\n }\n\n getHorizontalAlign () {\n for (const align of this._aligns) {\n switch (align) {\n case PlacementAlign.CENTER:\n if (this.referentRect.center - this.rect.width * 0.5 > this.safeArea.left && this.referentRect.center + this.rect.width * 0.5 < this.safeArea.right) return PlacementAlign.CENTER;\n break;\n\n case PlacementAlign.START:\n if (this.referentRect.left + this.rect.width < this.safeArea.right) return PlacementAlign.START;\n break;\n\n case PlacementAlign.END:\n if (this.referentRect.right - this.rect.width > this.safeArea.left) return PlacementAlign.END;\n break;\n }\n }\n\n return this._aligns[0];\n }\n\n getVerticalAlign () {\n for (const align of this._aligns) {\n switch (align) {\n case PlacementAlign.CENTER:\n if (this.referentRect.middle - this.rect.height * 0.5 > this.safeArea.top && this.referentRect.middle + this.rect.height * 0.5 < this.safeArea.bottom) return PlacementAlign.CENTER;\n break;\n\n case PlacementAlign.START:\n if (this.referentRect.top + this.rect.height < this.safeArea.bottom) return PlacementAlign.START;\n break;\n\n case PlacementAlign.END:\n if (this.referentRect.bottom - this.rect.height > this.safeArea.top) return PlacementAlign.END;\n break;\n }\n }\n\n return this._aligns[0];\n }\n\n dispose () {\n this._referent = null;\n super.dispose();\n }\n}\n\nclass PlacementReferent extends Instance {\n constructor () {\n super();\n this._isShown = false;\n }\n\n static get instanceClassName () {\n return 'PlacementReferent';\n }\n\n init () {\n this.registration.creator.setReferent(this);\n this._placement = this.registration.creator;\n }\n\n get placement () {\n return this._placement;\n }\n\n get isShown () {\n return this._isShown;\n }\n\n set isShown (value) {\n if (this._isShown === value || !this.isEnabled) return;\n this._isShown = value;\n if (value) this.registration.creator.show();\n else this.registration.creator.hide();\n }\n\n show () {\n this.isShown = true;\n }\n\n hide () {\n this.isShown = false;\n }\n}\n\napi$1.core = {\n Instance: Instance,\n Breakpoints: Breakpoints,\n KeyCodes: KeyCodes,\n Disclosure: Disclosure,\n DisclosureButton: DisclosureButton,\n DisclosuresGroup: DisclosuresGroup,\n DisclosureType: DisclosureType,\n DisclosureEvent: DisclosureEvent,\n DisclosureSelector: DisclosureSelector,\n DisclosureEmission: DisclosureEmission,\n Collapse: Collapse,\n CollapseButton: CollapseButton,\n CollapsesGroup: CollapsesGroup,\n CollapseSelector: CollapseSelector,\n RootSelector: RootSelector,\n RootEmission: RootEmission,\n Equisized: Equisized,\n EquisizedEmission: EquisizedEmission,\n Toggle: Toggle,\n EquisizedsGroup: EquisizedsGroup,\n InjectSvg: InjectSvg,\n InjectSvgSelector: InjectSvgSelector,\n Artwork: Artwork,\n ArtworkSelector: ArtworkSelector,\n AssessFile: AssessFile,\n AssessDetail: AssessDetail,\n AssessEmission: AssessEmission,\n AssessSelector: AssessSelector,\n Ratio: Ratio,\n RatioSelector: RatioSelector,\n Placement: Placement,\n PlacementReferent: PlacementReferent,\n PlacementAlign: PlacementAlign,\n PlacementPosition: PlacementPosition,\n PlacementMode: PlacementMode\n};\n\napi$1.internals.register(api$1.core.CollapseSelector.COLLAPSE, api$1.core.Collapse);\napi$1.internals.register(api$1.core.InjectSvgSelector.INJECT_SVG, api$1.core.InjectSvg);\napi$1.internals.register(api$1.core.RatioSelector.RATIO, api$1.core.Ratio);\napi$1.internals.register(api$1.core.AssessSelector.ASSESS_FILE, api$1.core.AssessFile);\napi$1.internals.register(api$1.core.AssessSelector.DETAIL, api$1.core.AssessDetail);\n\nconst SchemeValue = {\n SYSTEM: 'system',\n LIGHT: 'light',\n DARK: 'dark'\n};\n\nconst SchemeAttribute = {\n THEME: api.internals.ns.attr('theme'),\n SCHEME: api.internals.ns.attr('scheme'),\n TRANSITION: api.internals.ns.attr('transition')\n};\n\nconst SchemeTheme = {\n LIGHT: 'light',\n DARK: 'dark'\n};\n\nconst SchemeEmission = {\n SCHEME: api.internals.ns.emission('scheme', 'scheme'),\n THEME: api.internals.ns.emission('scheme', 'theme'),\n ASK: api.internals.ns.emission('scheme', 'ask')\n};\n\nconst SchemeEvent = {\n SCHEME: api.internals.ns.event('scheme'),\n THEME: api.internals.ns.event('theme')\n};\n\nclass Scheme extends api.core.Instance {\n constructor () {\n super(false);\n }\n\n static get instanceClassName () {\n return 'Scheme';\n }\n\n init () {\n this.changing = this.change.bind(this);\n\n if (this.hasAttribute(SchemeAttribute.TRANSITION)) {\n this.removeAttribute(SchemeAttribute.TRANSITION);\n this.request(this.restoreTransition.bind(this));\n }\n\n const scheme = api.internals.support.supportLocalStorage() ? localStorage.getItem('scheme') : '';\n const schemeAttr = this.getAttribute(SchemeAttribute.SCHEME);\n\n switch (scheme) {\n case SchemeValue.DARK:\n case SchemeValue.LIGHT:\n case SchemeValue.SYSTEM:\n this.scheme = scheme;\n break;\n\n default:\n switch (schemeAttr) {\n case SchemeValue.DARK:\n this.scheme = SchemeValue.DARK;\n break;\n\n case SchemeValue.LIGHT:\n this.scheme = SchemeValue.LIGHT;\n break;\n\n default:\n this.scheme = SchemeValue.SYSTEM;\n }\n }\n\n this.addAscent(SchemeEmission.ASK, this.ask.bind(this));\n this.addAscent(SchemeEmission.SCHEME, this.apply.bind(this));\n }\n\n get proxy () {\n const scope = this;\n\n const proxyAccessors = {\n get scheme () {\n return scope.scheme;\n },\n set scheme (value) {\n scope.scheme = value;\n }\n };\n\n return api.internals.property.completeAssign(super.proxy, proxyAccessors);\n }\n\n restoreTransition () {\n this.setAttribute(SchemeAttribute.TRANSITION, '');\n }\n\n ask () {\n this.descend(SchemeEmission.SCHEME, this.scheme);\n }\n\n apply (value) {\n this.scheme = value;\n }\n\n get scheme () {\n return this._scheme;\n }\n\n set scheme (value) {\n if (this._scheme === value) return;\n this._scheme = value;\n switch (value) {\n case SchemeValue.SYSTEM:\n this.listenPreferences();\n break;\n\n case SchemeValue.DARK:\n this.unlistenPreferences();\n this.theme = SchemeTheme.DARK;\n break;\n\n case SchemeValue.LIGHT:\n this.unlistenPreferences();\n this.theme = SchemeTheme.LIGHT;\n break;\n\n default:\n this.scheme = SchemeValue.SYSTEM;\n return;\n }\n\n this.descend(SchemeEmission.SCHEME, value);\n if (api.internals.support.supportLocalStorage()) {\n localStorage.setItem('scheme', value);\n }\n this.setAttribute(SchemeAttribute.SCHEME, value);\n this.dispatch(SchemeEvent.SCHEME, { scheme: this._scheme });\n }\n\n get theme () {\n return this._theme;\n }\n\n set theme (value) {\n if (this._theme === value) return;\n switch (value) {\n case SchemeTheme.LIGHT:\n case SchemeTheme.DARK:\n this._theme = value;\n this.setAttribute(SchemeAttribute.THEME, value);\n this.descend(SchemeEmission.THEME, value);\n this.dispatch(SchemeEvent.THEME, { theme: this._theme });\n document.documentElement.style.colorScheme = value === SchemeTheme.DARK ? 'dark' : '';\n break;\n }\n }\n\n listenPreferences () {\n if (this.isListening) return;\n this.isListening = true;\n this.mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n if (this.mediaQuery.addEventListener) this.mediaQuery.addEventListener('change', this.changing);\n this.change();\n }\n\n unlistenPreferences () {\n if (!this.isListening) return;\n this.isListening = false;\n this.mediaQuery.removeEventListener('change', this.changing);\n this.mediaQuery = null;\n }\n\n change () {\n if (!this.isListening) return;\n this.theme = this.mediaQuery.matches ? SchemeTheme.DARK : SchemeTheme.LIGHT;\n }\n\n mutate (attributeNames) {\n if (attributeNames.indexOf(SchemeAttribute.SCHEME) > -1) this.scheme = this.getAttribute(SchemeAttribute.SCHEME);\n if (attributeNames.indexOf(SchemeAttribute.THEME) > -1) this.theme = this.getAttribute(SchemeAttribute.THEME);\n }\n\n dispose () {\n this.unlistenPreferences();\n }\n}\n\nconst SchemeSelector = {\n SCHEME: `:root${api.internals.ns.attr.selector('theme')}, :root${api.internals.ns.attr.selector('scheme')}`,\n SWITCH_THEME: api.internals.ns.selector('switch-theme'),\n RADIO_BUTTONS: `input[name=\"${api.internals.ns('radios-theme')}\"]`\n};\n\napi.scheme = {\n Scheme: Scheme,\n SchemeValue: SchemeValue,\n SchemeSelector: SchemeSelector,\n SchemeEmission: SchemeEmission,\n SchemeTheme: SchemeTheme,\n SchemeEvent: SchemeEvent\n};\n\napi.internals.register(api.scheme.SchemeSelector.SCHEME, api.scheme.Scheme);\n\nconst ACCORDION = api.internals.ns.selector('accordion');\nconst COLLAPSE$2 = api.internals.ns.selector('collapse');\n\nconst AccordionSelector = {\n GROUP: api.internals.ns.selector('accordions-group'),\n ACCORDION: ACCORDION,\n COLLAPSE: `${ACCORDION} > ${COLLAPSE$2}, ${ACCORDION} > *:not(${ACCORDION}):not(${COLLAPSE$2}) > ${COLLAPSE$2}, ${ACCORDION} > *:not(${ACCORDION}):not(${COLLAPSE$2}) > *:not(${ACCORDION}):not(${COLLAPSE$2}) > ${COLLAPSE$2}`,\n COLLAPSE_LEGACY: `${ACCORDION} ${COLLAPSE$2}`,\n BUTTON: `${ACCORDION}__btn`\n};\n\nclass Accordion extends api.core.Instance {\n static get instanceClassName () {\n return 'Accordion';\n }\n\n get collapsePrimary () {\n const buttons = this.element.children.map(child => child.getInstance('CollapseButton')).filter(button => button !== null && button.hasClass(AccordionSelector.BUTTON));\n return buttons[0];\n }\n}\n\nclass AccordionsGroup extends api.core.CollapsesGroup {\n static get instanceClassName () {\n return 'AccordionsGroup';\n }\n\n validate (member) {\n const match = member.node.matches(api.internals.legacy.isLegacy ? AccordionSelector.COLLAPSE_LEGACY : AccordionSelector.COLLAPSE);\n return super.validate(member) && match;\n }\n}\n\napi.accordion = {\n Accordion: Accordion,\n AccordionSelector: AccordionSelector,\n AccordionsGroup: AccordionsGroup\n};\n\napi.internals.register(api.accordion.AccordionSelector.GROUP, api.accordion.AccordionsGroup);\napi.internals.register(api.accordion.AccordionSelector.ACCORDION, api.accordion.Accordion);\n\nconst ButtonSelector = {\n EQUISIZED_BUTTON: `${api.internals.ns.selector('btns-group--equisized')} ${api.internals.ns.selector('btn')}`,\n EQUISIZED_GROUP: api.internals.ns.selector('btns-group--equisized')\n};\n\napi.button = {\n ButtonSelector: ButtonSelector\n};\n\napi.internals.register(api.button.ButtonSelector.EQUISIZED_BUTTON, api.core.Equisized);\napi.internals.register(api.button.ButtonSelector.EQUISIZED_GROUP, api.core.EquisizedsGroup);\n\nclass CardDownload extends api.core.Instance {\n static get instanceClassName () {\n return 'CardDownload';\n }\n\n init () {\n this.addAscent(api.core.AssessEmission.UPDATE, details => {\n this.descend(api.core.AssessEmission.UPDATE, details);\n });\n this.addAscent(api.core.AssessEmission.ADDED, () => {\n this.descend(api.core.AssessEmission.ADDED);\n });\n }\n}\n\nconst CardSelector = {\n DOWNLOAD: api.internals.ns.selector('card--download'),\n DOWNLOAD_DETAIL: `${api.internals.ns.selector('card--download')} ${api.internals.ns.selector('card__end')} ${api.internals.ns.selector('card__detail')}`\n};\n\napi.card = {\n CardSelector: CardSelector,\n CardDownload: CardDownload\n};\n\napi.internals.register(api.card.CardSelector.DOWNLOAD, api.card.CardDownload);\napi.internals.register(api.card.CardSelector.DOWNLOAD_DETAIL, api.core.AssessDetail);\n\nconst SegmentedSelector = {\n SEGMENTED: api.internals.ns.selector('segmented'),\n SEGMENTED_ELEMENTS: api.internals.ns.selector('segmented__elements'),\n SEGMENTED_ELEMENT: api.internals.ns.selector('segmented__element input'),\n SEGMENTED_LEGEND: api.internals.ns.selector('segmented__legend')\n};\n\nconst SegmentedEmission = {\n ADDED: api.internals.ns.emission('segmented', 'added'),\n REMOVED: api.internals.ns.emission('segmented', 'removed')\n};\n\nclass Segmented extends api.core.Instance {\n static get instanceClassName () {\n return 'Segmented';\n }\n\n init () {\n this.elements = this.node.querySelector(SegmentedSelector.SEGMENTED_ELEMENTS);\n this.legend = this.node.querySelector(SegmentedSelector.SEGMENTED_LEGEND);\n this.addAscent(SegmentedEmission.ADDED, this.resize.bind(this));\n this.addAscent(SegmentedEmission.REMOVED, this.resize.bind(this));\n this._isLegendInline = this.legend && this.legend.classList.contains(`${api.prefix}-segmented__legend--inline`);\n this.isResizing = true;\n }\n\n resize () {\n const SEGMENTED_VERTICAL = `${api.prefix}-segmented--vertical`;\n const LEGEND_INLINE = `${api.prefix}-segmented__legend--inline`;\n const gapOffset = 16;\n\n this.removeClass(SEGMENTED_VERTICAL);\n\n if (this._isLegendInline) {\n this.legend.classList.add(LEGEND_INLINE);\n\n if (this.node.offsetWidth > this.node.parentNode.offsetWidth || (this.elements.scrollWidth + this.legend.offsetWidth + gapOffset) > this.node.parentNode.offsetWidth) {\n this.legend.classList.remove(LEGEND_INLINE);\n }\n }\n\n if (this.elements.offsetWidth > this.node.parentNode.offsetWidth || this.elements.scrollWidth > this.node.parentNode.offsetWidth) {\n this.addClass(SEGMENTED_VERTICAL);\n } else {\n this.removeClass(SEGMENTED_VERTICAL);\n }\n }\n}\n\nclass SegmentedElement extends api.core.Instance {\n static get instanceClassName () {\n return 'SegmentedElement';\n }\n\n init () {\n this.ascend(SegmentedEmission.ADDED);\n }\n\n dispose () {\n this.ascend(SegmentedEmission.REMOVED);\n }\n}\n\napi.segmented = {\n SegmentedSelector: SegmentedSelector,\n SegmentedEmission: SegmentedEmission,\n SegmentedElement: SegmentedElement,\n Segmented: Segmented\n};\n\napi.internals.register(api.segmented.SegmentedSelector.SEGMENTED, api.segmented.Segmented);\napi.internals.register(api.segmented.SegmentedSelector.SEGMENTED_ELEMENT, api.segmented.SegmentedElement);\n\nconst BreadcrumbSelector = {\n BREADCRUMB: api.internals.ns.selector('breadcrumb'),\n BUTTON: api.internals.ns.selector('breadcrumb__button')\n};\n\nclass Breadcrumb extends api.core.Instance {\n constructor () {\n super();\n this.count = 0;\n this.focusing = this.focus.bind(this);\n }\n\n static get instanceClassName () {\n return 'Breadcrumb';\n }\n\n init () {\n this.getCollapse();\n this.isResizing = true;\n }\n\n get proxy () {\n const scope = this;\n return Object.assign(super.proxy, {\n focus: scope.focus.bind(scope),\n disclose: scope.collapse.disclose.bind(scope.collapse)\n });\n }\n\n getCollapse () {\n const collapse = this.collapse;\n if (collapse) {\n collapse.listen(api.core.DisclosureEvent.DISCLOSE, this.focusing);\n } else {\n this.addAscent(api.core.DisclosureEmission.ADDED, this.getCollapse.bind(this));\n }\n }\n\n resize () {\n const collapse = this.collapse;\n const links = this.links;\n if (!collapse || !links.length) return;\n\n if (this.isBreakpoint(api.core.Breakpoints.MD)) {\n if (collapse.buttonHasFocus) links[0].focus();\n } else {\n if (links.indexOf(document.activeElement) > -1) collapse.focus();\n }\n }\n\n get links () {\n return [...this.querySelectorAll('a[href]')];\n }\n\n get collapse () {\n return this.element.getDescendantInstances(api.core.Collapse.instanceClassName, null, true)[0];\n }\n\n focus () {\n this.count = 0;\n this._focus();\n }\n\n _focus () {\n const link = this.links[0];\n if (!link) return;\n link.focus();\n this.request(this.verify.bind(this));\n }\n\n verify () {\n this.count++;\n if (this.count > 100) return;\n const link = this.links[0];\n if (!link) return;\n if (document.activeElement !== link) this._focus();\n }\n\n get collapsePrimary () {\n const buttons = this.element.children.map(child => child.getInstance('CollapseButton')).filter(button => button !== null && button.hasClass(BreadcrumbSelector.BUTTON));\n return buttons[0];\n }\n}\n\napi.breadcrumb = {\n BreadcrumbSelector: BreadcrumbSelector,\n Breadcrumb: Breadcrumb\n};\n\napi.internals.register(api.breadcrumb.BreadcrumbSelector.BREADCRUMB, api.breadcrumb.Breadcrumb);\n\nconst TooltipSelector = {\n TOOLTIP: api.internals.ns.selector('tooltip'),\n SHOWN: api.internals.ns.selector('tooltip--shown'),\n BUTTON: api.internals.ns.selector('btn--tooltip')\n};\n\nconst TooltipReferentState = {\n FOCUS: 1 << 0,\n HOVER: 1 << 1\n};\n\nclass TooltipReferent extends api.core.PlacementReferent {\n constructor () {\n super();\n this._state = 0;\n }\n\n static get instanceClassName () {\n return 'TooltipReferent';\n }\n\n init () {\n super.init();\n this.listen('focusin', this.focusIn.bind(this));\n this.listen('focusout', this.focusOut.bind(this));\n if (!this.matches(TooltipSelector.BUTTON)) {\n const mouseover = this.mouseover.bind(this);\n this.listen('mouseover', mouseover);\n this.placement.listen('mouseover', mouseover);\n const mouseout = this.mouseout.bind(this);\n this.listen('mouseout', mouseout);\n this.placement.listen('mouseout', mouseout);\n }\n this.addEmission(api.core.RootEmission.KEYDOWN, this._keydown.bind(this));\n this.listen('click', this._click.bind(this));\n this.addEmission(api.core.RootEmission.CLICK, this._clickOut.bind(this));\n }\n\n _click () {\n this.focus();\n }\n\n _clickOut (target) {\n if (!this.node.contains(target)) this.blur();\n }\n\n _keydown (keyCode) {\n switch (keyCode) {\n case api.core.KeyCodes.ESCAPE:\n this.blur();\n this.close();\n break;\n }\n }\n\n close () {\n this.state = 0;\n }\n\n get state () {\n return this._state;\n }\n\n set state (value) {\n if (this._state === value) return;\n this.isShown = value > 0;\n this._state = value;\n }\n\n focusIn () {\n this.state |= TooltipReferentState.FOCUS;\n }\n\n focusOut () {\n this.state &= ~TooltipReferentState.FOCUS;\n }\n\n mouseover () {\n this.state |= TooltipReferentState.HOVER;\n }\n\n mouseout () {\n this.state &= ~TooltipReferentState.HOVER;\n }\n}\n\nconst TooltipEvent = {\n SHOW: ns.event('show'),\n HIDE: ns.event('hide')\n};\n\nconst TooltipState = {\n HIDDEN: 'hidden',\n SHOWN: 'shown',\n HIDING: 'hiding'\n};\n\nclass Tooltip extends api.core.Placement {\n constructor () {\n super(api.core.PlacementMode.AUTO, [api.core.PlacementPosition.TOP, api.core.PlacementPosition.BOTTOM], [api.core.PlacementAlign.CENTER, api.core.PlacementAlign.START, api.core.PlacementAlign.END]);\n this.modifier = '';\n this._state = TooltipState.HIDDEN;\n }\n\n static get instanceClassName () {\n return 'Tooltip';\n }\n\n init () {\n super.init();\n this.register(`[aria-describedby=\"${this.id}\"]`, TooltipReferent);\n this.listen('transitionend', this.transitionEnd.bind(this));\n }\n\n transitionEnd () {\n if (this._state === TooltipState.HIDING) {\n this._state = TooltipState.HIDDEN;\n this.isShown = false;\n }\n }\n\n get isShown () {\n return super.isShown;\n }\n\n set isShown (value) {\n if (!this.isEnabled) return;\n switch (true) {\n case value:\n this._state = TooltipState.SHOWN;\n this.addClass(TooltipSelector.SHOWN);\n this.dispatch(TooltipEvent.SHOW);\n super.isShown = true;\n break;\n\n case this.isShown && !value && this._state === TooltipState.SHOWN:\n this._state = TooltipState.HIDING;\n this.removeClass(TooltipSelector.SHOWN);\n break;\n\n case this.isShown && !value && this._state === TooltipState.HIDDEN:\n this.dispatch(TooltipEvent.HIDE);\n super.isShown = false;\n break;\n }\n }\n\n render () {\n super.render();\n let x = this.referentRect.center - this.rect.center;\n const limit = this.rect.width * 0.5 - 8;\n if (x < -limit) x = -limit;\n if (x > limit) x = limit;\n this.setProperty('--arrow-x', `${x.toFixed(2)}px`);\n }\n}\n\napi.tooltip = {\n Tooltip: Tooltip,\n TooltipSelector: TooltipSelector,\n TooltipEvent: TooltipEvent\n};\n\napi.internals.register(api.tooltip.TooltipSelector.TOOLTIP, api.tooltip.Tooltip);\n\nclass ToggleInput extends api.core.Instance {\n static get instanceClassName () {\n return 'ToggleInput';\n }\n\n get isChecked () {\n return this.node.checked;\n }\n}\n\nclass ToggleStatusLabel extends api.core.Instance {\n static get instanceClassName () {\n return 'ToggleStatusLabel';\n }\n\n init () {\n this.register(`input[id=\"${this.getAttribute('for')}\"]`, ToggleInput);\n this.update();\n this.isSwappingFont = true;\n }\n\n get proxy () {\n const scope = this;\n return Object.assign(super.proxy, {\n update: scope.update.bind(scope)\n });\n }\n\n get input () {\n return this.getRegisteredInstances('ToggleInput')[0];\n }\n\n update () {\n this.node.style.removeProperty('--toggle-status-width');\n const checked = this.input.isChecked;\n\n const style = getComputedStyle(this.node, ':before');\n let maxWidth = parseFloat(style.width);\n this.input.node.checked = !checked;\n\n const style2 = getComputedStyle(this.node, ':before');\n const width = parseFloat(style2.width);\n if (width > maxWidth) maxWidth = width;\n this.input.node.checked = checked;\n\n this.node.style.setProperty('--toggle-status-width', (maxWidth / 16) + 'rem');\n }\n\n swapFont (families) {\n this.update();\n }\n}\n\nconst ToggleSelector = {\n STATUS_LABEL: `${api.internals.ns.selector('toggle__label')}${api.internals.ns.attr.selector('checked-label')}${api.internals.ns.attr.selector('unchecked-label')}`\n};\n\n// import { ToggleInput } from './script/toggle/toggle-input.js';\n\napi.toggle = {\n ToggleStatusLabel: ToggleStatusLabel,\n ToggleSelector: ToggleSelector\n};\n\napi.internals.register(api.toggle.ToggleSelector.STATUS_LABEL, api.toggle.ToggleStatusLabel);\n\nconst ITEM$1 = api.internals.ns.selector('sidemenu__item');\nconst COLLAPSE$1 = api.internals.ns.selector('collapse');\n\nconst SidemenuSelector = {\n LIST: api.internals.ns.selector('sidemenu__list'),\n COLLAPSE: `${ITEM$1} > ${COLLAPSE$1}, ${ITEM$1} > *:not(${ITEM$1}):not(${COLLAPSE$1}) > ${COLLAPSE$1}, ${ITEM$1} > *:not(${ITEM$1}):not(${COLLAPSE$1}) > *:not(${ITEM$1}):not(${COLLAPSE$1}) > ${COLLAPSE$1}`,\n COLLAPSE_LEGACY: `${ITEM$1} ${COLLAPSE$1}`,\n ITEM: api.internals.ns.selector('sidemenu__item'),\n BUTTON: api.internals.ns.selector('sidemenu__btn')\n};\n\nclass SidemenuList extends api.core.CollapsesGroup {\n static get instanceClassName () {\n return 'SidemenuList';\n }\n\n validate (member) {\n return super.validate(member) && member.node.matches(api.internals.legacy.isLegacy ? SidemenuSelector.COLLAPSE_LEGACY : SidemenuSelector.COLLAPSE);\n }\n}\n\nclass SidemenuItem extends api.core.Instance {\n static get instanceClassName () {\n return 'SidemenuItem';\n }\n\n get collapsePrimary () {\n const buttons = this.element.children.map(child => child.getInstance('CollapseButton')).filter(button => button !== null && button.hasClass(SidemenuSelector.BUTTON));\n return buttons[0];\n }\n}\n\napi.sidemenu = {\n SidemenuList: SidemenuList,\n SidemenuItem: SidemenuItem,\n SidemenuSelector: SidemenuSelector\n};\n\napi.internals.register(api.sidemenu.SidemenuSelector.LIST, api.sidemenu.SidemenuList);\napi.internals.register(api.sidemenu.SidemenuSelector.ITEM, api.sidemenu.SidemenuItem);\n\nconst ModalSelector = {\n MODAL: api.internals.ns.selector('modal'),\n SCROLL_DIVIDER: api.internals.ns.selector('scroll-divider'),\n BODY: api.internals.ns.selector('modal__body'),\n TITLE: api.internals.ns.selector('modal__title')\n};\n\nclass ModalButton extends api.core.DisclosureButton {\n constructor () {\n super(api.core.DisclosureType.OPENED);\n }\n\n static get instanceClassName () {\n return 'ModalButton';\n }\n}\n\nconst ModalAttribute = {\n CONCEALING_BACKDROP: api.internals.ns.attr('concealing-backdrop')\n};\n\nclass Modal extends api.core.Disclosure {\n constructor () {\n super(api.core.DisclosureType.OPENED, ModalSelector.MODAL, ModalButton, 'ModalsGroup');\n this._isActive = false;\n this.scrolling = this.resize.bind(this, false);\n this.resizing = this.resize.bind(this, true);\n }\n\n static get instanceClassName () {\n return 'Modal';\n }\n\n init () {\n super.init();\n this._isDialog = this.node.tagName === 'DIALOG';\n this.isScrolling = false;\n this.listenClick();\n this.addEmission(api.core.RootEmission.KEYDOWN, this._keydown.bind(this));\n }\n\n _keydown (keyCode) {\n switch (keyCode) {\n case api.core.KeyCodes.ESCAPE:\n this._escape();\n break;\n }\n }\n\n // TODO v2 : passer les tagName d'action en constante\n _escape () {\n const tagName = document.activeElement ? document.activeElement.tagName : undefined;\n\n switch (tagName) {\n case 'INPUT':\n case 'LABEL':\n case 'TEXTAREA':\n case 'SELECT':\n case 'AUDIO':\n case 'VIDEO':\n break;\n\n default:\n if (this.isDisclosed) {\n this.conceal();\n this.focus();\n }\n }\n }\n\n retrieved () {\n this._ensureAccessibleName();\n }\n\n get body () {\n return this.element.getDescendantInstances('ModalBody', 'Modal')[0];\n }\n\n handleClick (e) {\n if (e.target === this.node && this.getAttribute(ModalAttribute.CONCEALING_BACKDROP) !== 'false') this.conceal();\n }\n\n disclose (withhold) {\n if (!super.disclose(withhold)) return false;\n if (this.body) this.body.activate();\n this.isScrollLocked = true;\n this.setAttribute('aria-modal', 'true');\n this.setAttribute('open', 'true');\n if (!this._isDialog) {\n this.activateModal();\n }\n return true;\n }\n\n conceal (withhold, preventFocus) {\n if (!super.conceal(withhold, preventFocus)) return false;\n this.isScrollLocked = false;\n this.removeAttribute('aria-modal');\n this.removeAttribute('open');\n if (this.body) this.body.deactivate();\n if (!this._isDialog) {\n this.deactivateModal();\n }\n return true;\n }\n\n get isDialog () {\n return this._isDialog;\n }\n\n set isDialog (value) {\n this._isDialog = value;\n }\n\n activateModal () {\n if (this._isActive) return;\n this._isActive = true;\n this._hasDialogRole = this.getAttribute('role') === 'dialog';\n if (!this._hasDialogRole) this.setAttribute('role', 'dialog');\n }\n\n deactivateModal () {\n if (!this._isActive) return;\n this._isActive = false;\n if (!this._hasDialogRole) this.removeAttribute('role');\n }\n\n _setAccessibleName (node, append) {\n const id = this.retrieveNodeId(node, append);\n this.warn(`add reference to ${append} for accessible name (aria-labelledby)`);\n this.setAttribute('aria-labelledby', id);\n }\n\n _ensureAccessibleName () {\n if (this.hasAttribute('aria-labelledby') || this.hasAttribute('aria-label')) return;\n this.warn('missing accessible name');\n const title = this.node.querySelector(ModalSelector.TITLE);\n const primary = this.primaryButtons[0];\n\n switch (true) {\n case title !== null:\n this._setAccessibleName(title, 'title');\n break;\n\n case primary !== undefined:\n this.warn('missing required title, fallback to primary button');\n this._setAccessibleName(primary, 'primary');\n break;\n }\n }\n}\n\nconst unordereds = [\n '[tabindex=\"0\"]',\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'details>summary:first-of-type',\n 'details',\n 'iframe'\n];\n\nconst UNORDEREDS = unordereds.join();\n\nconst ordereds = [\n '[tabindex]:not([tabindex=\"-1\"]):not([tabindex=\"0\"])'\n];\n\nconst ORDEREDS = ordereds.join();\n\nconst isFocusable = (element, container) => {\n if (!(element instanceof Element)) return false;\n const style = window.getComputedStyle(element);\n if (!style) return false;\n if (style.visibility === 'hidden') return false;\n if (container === undefined) container = element;\n\n while (container.contains(element)) {\n if (style.display === 'none') return false;\n element = element.parentElement;\n }\n\n return true;\n};\n\nclass FocusTrap {\n constructor (onTrap, onUntrap) {\n this.element = null;\n this.activeElement = null;\n this.onTrap = onTrap;\n this.onUntrap = onUntrap;\n this.waiting = this.wait.bind(this);\n this.handling = this.handle.bind(this);\n this.focusing = this.maintainFocus.bind(this);\n this.current = null;\n }\n\n get trapped () { return this.element !== null; }\n\n trap (element) {\n if (this.trapped) this.untrap();\n\n this.element = element;\n this.isTrapping = true;\n this.wait();\n\n if (this.onTrap) this.onTrap();\n }\n\n wait () {\n if (!isFocusable(this.element)) {\n window.requestAnimationFrame(this.waiting);\n return;\n }\n\n this.trapping();\n }\n\n trapping () {\n if (!this.isTrapping) return;\n this.isTrapping = false;\n const focusables = this.focusables;\n if (focusables.length && focusables.indexOf(document.activeElement) === -1) focusables[0].focus();\n this.element.setAttribute('aria-modal', true);\n window.addEventListener('keydown', this.handling);\n document.body.addEventListener('focus', this.focusing, true);\n }\n\n stun (node) {\n for (const child of node.children) {\n if (child === this.element) continue;\n if (child.contains(this.element)) {\n this.stun(child);\n continue;\n }\n this.stunneds.push(new Stunned(child));\n }\n }\n\n maintainFocus (event) {\n if (!this.element.contains(event.target)) {\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n const first = focusables[0];\n event.preventDefault();\n first.focus();\n }\n }\n\n handle (e) {\n if (e.keyCode !== 9) return;\n\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n const index = focusables.indexOf(document.activeElement);\n\n if (e.shiftKey) {\n if (!this.element.contains(document.activeElement) || index < 1) {\n e.preventDefault();\n last.focus();\n } else if (document.activeElement.tabIndex > 0 || focusables[index - 1].tabIndex > 0) {\n e.preventDefault();\n focusables[index - 1].focus();\n }\n } else {\n if (!this.element.contains(document.activeElement) || index === focusables.length - 1 || index === -1) {\n e.preventDefault();\n first.focus();\n } else if (document.activeElement.tabIndex > 0) {\n e.preventDefault();\n focusables[index + 1].focus();\n }\n }\n }\n\n get focusables () {\n let unordereds = api.internals.dom.querySelectorAllArray(this.element, UNORDEREDS);\n\n /**\n * filtrage des radiobutttons de même name (la navigations d'un groupe de radio se fait à la flèche et non pas au tab\n **/\n const radios = api.internals.dom.querySelectorAllArray(document.documentElement, 'input[type=\"radio\"]');\n\n if (radios.length) {\n const groups = {};\n\n for (const radio of radios) {\n const name = radio.getAttribute('name');\n if (groups[name] === undefined) groups[name] = new RadioButtonGroup(name);\n groups[name].push(radio);\n }\n\n unordereds = unordereds.filter((unordered) => {\n if (unordered.tagName.toLowerCase() !== 'input' || unordered.getAttribute('type').toLowerCase() !== 'radio') return true;\n const name = unordered.getAttribute('name');\n return groups[name].keep(unordered);\n });\n }\n\n const ordereds = api.internals.dom.querySelectorAllArray(this.element, ORDEREDS);\n\n ordereds.sort((a, b) => a.tabIndex - b.tabIndex);\n\n const noDuplicates = unordereds.filter((element) => ordereds.indexOf(element) === -1);\n const concateneds = ordereds.concat(noDuplicates);\n return concateneds.filter((element) => element.tabIndex !== '-1' && isFocusable(element, this.element));\n }\n\n untrap () {\n if (!this.trapped) return;\n this.isTrapping = false;\n\n this.element.removeAttribute('aria-modal');\n window.removeEventListener('keydown', this.handling);\n document.body.removeEventListener('focus', this.focusing, true);\n\n this.element = null;\n\n if (this.onUntrap) this.onUntrap();\n }\n\n dispose () {\n this.untrap();\n }\n}\n\nclass Stunned {\n constructor (element) {\n this.element = element;\n // this.hidden = element.getAttribute('aria-hidden');\n this.inert = element.getAttribute('inert');\n\n // this.element.setAttribute('aria-hidden', true);\n this.element.setAttribute('inert', '');\n }\n\n unstun () {\n /*\n if (this.hidden === null) this.element.removeAttribute('aria-hidden');\n else this.element.setAttribute('aria-hidden', this.hidden);\n */\n\n if (this.inert === null) this.element.removeAttribute('inert');\n else this.element.setAttribute('inert', this.inert);\n }\n}\n\nclass RadioButtonGroup {\n constructor (name) {\n this.name = name;\n this.buttons = [];\n }\n\n push (button) {\n this.buttons.push(button);\n if (button === document.activeElement || button.checked || this.selected === undefined) this.selected = button;\n }\n\n keep (button) {\n return this.selected === button;\n }\n}\n\nclass ModalsGroup extends api.core.DisclosuresGroup {\n constructor () {\n super('Modal', false);\n this.focusTrap = new FocusTrap();\n }\n\n static get instanceClassName () {\n return 'ModalsGroup';\n }\n\n apply (value, initial) {\n super.apply(value, initial);\n if (this.current === null) this.focusTrap.untrap();\n else this.focusTrap.trap(this.current.node);\n }\n}\n\nconst OFFSET = 32; // 32px => 8v => 2rem\n\nclass ModalBody extends api.core.Instance {\n static get instanceClassName () {\n return 'ModalBody';\n }\n\n init () {\n this.listen('scroll', this.divide.bind(this));\n }\n\n activate () {\n this.isResizing = true;\n this.resize();\n }\n\n deactivate () {\n this.isResizing = false;\n }\n\n divide () {\n if (this.node.scrollHeight > this.node.clientHeight) {\n if (this.node.offsetHeight + this.node.scrollTop >= this.node.scrollHeight) {\n this.removeClass(ModalSelector.SCROLL_DIVIDER);\n } else {\n this.addClass(ModalSelector.SCROLL_DIVIDER);\n }\n } else {\n this.removeClass(ModalSelector.SCROLL_DIVIDER);\n }\n }\n\n resize () {\n this.adjust();\n this.request(this.adjust.bind(this));\n }\n\n adjust () {\n const offset = OFFSET * (this.isBreakpoint(api.core.Breakpoints.MD) ? 2 : 1);\n if (this.isLegacy) this.style.maxHeight = `${window.innerHeight - offset}px`;\n else this.style.setProperty('--modal-max-height', `${window.innerHeight - offset}px`);\n this.divide();\n }\n}\n\napi.modal = {\n Modal: Modal,\n ModalButton: ModalButton,\n ModalBody: ModalBody,\n ModalsGroup: ModalsGroup,\n ModalSelector: ModalSelector\n};\n\napi.internals.register(api.modal.ModalSelector.MODAL, api.modal.Modal);\napi.internals.register(api.modal.ModalSelector.BODY, api.modal.ModalBody);\napi.internals.register(api.core.RootSelector.ROOT, api.modal.ModalsGroup);\n\nconst PasswordEmission = {\n TOGGLE: api.internals.ns.emission('password', 'toggle'),\n ADJUST: api.internals.ns.emission('password', 'adjust')\n};\n\nclass PasswordToggle extends api.core.Instance {\n static get instanceClassName () {\n return 'PasswordToggle';\n }\n\n init () {\n this.listenClick();\n this.ascend(PasswordEmission.ADJUST, this.width);\n this.isSwappingFont = true;\n this._isChecked = this.isChecked;\n }\n\n get width () {\n const style = getComputedStyle(this.node.parentNode);\n return parseInt(style.width);\n }\n\n get isChecked () {\n return this.node.checked;\n }\n\n set isChecked (value) {\n this._isChecked = value;\n this.ascend(PasswordEmission.TOGGLE, value);\n }\n\n handleClick () {\n this.isChecked = !this._isChecked;\n }\n\n swapFont (families) {\n this.ascend(PasswordEmission.ADJUST, this.width);\n }\n}\n\nclass Password extends api.core.Instance {\n static get instanceClassName () {\n return 'Password';\n }\n\n init () {\n this.addAscent(PasswordEmission.TOGGLE, this.toggle.bind(this));\n this.addAscent(PasswordEmission.ADJUST, this.adjust.bind(this));\n }\n\n toggle (value) {\n this.descend(PasswordEmission.TOGGLE, value);\n }\n\n adjust (value) {\n this.descend(PasswordEmission.ADJUST, value);\n }\n}\n\nconst PasswordSelector = {\n PASSWORD: api.internals.ns.selector('password'),\n INPUT: api.internals.ns.selector('password__input'),\n LABEL: api.internals.ns.selector('password__label'),\n TOOGLE: `${api.internals.ns.selector('password__checkbox')} input[type=\"checkbox\"]`\n};\n\nclass PasswordInput extends api.core.Instance {\n static get instanceClassName () {\n return 'PasswordInput';\n }\n\n init () {\n this.addDescent(PasswordEmission.TOGGLE, this.toggle.bind(this));\n this._isRevealed = this.hasAttribute('type') === 'password';\n this.listen('keydown', this.capslock.bind(this)); // for capslock enabled\n this.listen('keyup', this.capslock.bind(this)); // for capslock desabled\n }\n\n toggle (value) {\n this.isRevealed = value;\n this.setAttribute('type', value ? 'text' : 'password');\n }\n\n get isRevealed () {\n return this._isRevealed;\n }\n\n capslock (event) {\n if (event && typeof event.getModifierState !== 'function') return;\n if (event.getModifierState('CapsLock')) {\n this.node.parentNode.setAttribute(api.internals.ns.attr('capslock'), '');\n } else {\n this.node.parentNode.removeAttribute(api.internals.ns.attr('capslock'));\n }\n }\n\n set isRevealed (value) {\n this._isRevealed = value;\n this.setAttribute('type', value ? 'text' : 'password');\n }\n}\n\nclass PasswordLabel extends api.core.Instance {\n static get instanceClassName () {\n return 'PasswordLabel';\n }\n\n init () {\n this.addDescent(PasswordEmission.ADJUST, this.adjust.bind(this));\n }\n\n adjust (value) {\n const valueREM = Math.ceil(value / 16);\n this.node.style.paddingRight = valueREM + 'rem';\n }\n}\n\napi.password = {\n Password: Password,\n PasswordToggle: PasswordToggle,\n PasswordSelector: PasswordSelector,\n PasswordInput: PasswordInput,\n PasswordLabel: PasswordLabel\n};\n\napi.internals.register(api.password.PasswordSelector.INPUT, api.password.PasswordInput);\napi.internals.register(api.password.PasswordSelector.PASSWORD, api.password.Password);\napi.internals.register(api.password.PasswordSelector.TOOGLE, api.password.PasswordToggle);\napi.internals.register(api.password.PasswordSelector.LABEL, api.password.PasswordLabel);\n\nconst ITEM = api.internals.ns.selector('nav__item');\nconst COLLAPSE = api.internals.ns.selector('collapse');\n\nconst NavigationSelector = {\n NAVIGATION: api.internals.ns.selector('nav'),\n COLLAPSE: `${ITEM} > ${COLLAPSE}, ${ITEM} > *:not(${ITEM}):not(${COLLAPSE}) > ${COLLAPSE}, ${ITEM} > *:not(${ITEM}):not(${COLLAPSE}) > *:not(${ITEM}):not(${COLLAPSE}) > ${COLLAPSE}`,\n COLLAPSE_LEGACY: `${ITEM} ${COLLAPSE}`,\n ITEM: ITEM,\n ITEM_RIGHT: `${ITEM}--align-right`,\n MENU: api.internals.ns.selector('menu'),\n BUTTON: api.internals.ns.selector('nav__btn'),\n TRANSLATE_BUTTON: api.internals.ns.selector('translate__btn')\n};\n\nclass NavigationItem extends api.core.Instance {\n constructor () {\n super();\n this._isRightAligned = false;\n }\n\n static get instanceClassName () {\n return 'NavigationItem';\n }\n\n init () {\n this.addAscent(api.core.DisclosureEmission.ADDED, this.calculate.bind(this));\n this.addAscent(api.core.DisclosureEmission.REMOVED, this.calculate.bind(this));\n this.isResizing = true;\n this.calculate();\n }\n\n resize () {\n this.calculate();\n }\n\n calculate () {\n const collapse = this.element.getDescendantInstances(api.core.Collapse.instanceClassName, null, true)[0];\n if (collapse && this.isBreakpoint(api.core.Breakpoints.LG) && collapse.element.node.matches(NavigationSelector.MENU)) {\n const right = this.element.node.parentElement.getBoundingClientRect().right; // todo: ne fonctionne que si la nav fait 100% du container\n const width = collapse.element.node.getBoundingClientRect().width;\n const left = this.element.node.getBoundingClientRect().left;\n this.isRightAligned = left + width > right;\n } else this.isRightAligned = false;\n }\n\n get isRightAligned () {\n return this._isRightAligned;\n }\n\n set isRightAligned (value) {\n if (this._isRightAligned === value) return;\n this._isRightAligned = value;\n if (value) api.internals.dom.addClass(this.element.node, NavigationSelector.ITEM_RIGHT);\n else api.internals.dom.removeClass(this.element.node, NavigationSelector.ITEM_RIGHT);\n }\n\n get collapsePrimary () {\n const buttons = this.element.children.map(child => child.getInstance('CollapseButton')).filter(button => button !== null && (button.hasClass(NavigationSelector.BUTTON) || button.hasClass(NavigationSelector.TRANSLATE_BUTTON)));\n return buttons[0];\n }\n}\n\nconst NavigationMousePosition = {\n NONE: -1,\n INSIDE: 0,\n OUTSIDE: 1\n};\n\nclass Navigation extends api.core.CollapsesGroup {\n static get instanceClassName () {\n return 'Navigation';\n }\n\n init () {\n super.init();\n this.clicked = false;\n this.out = false;\n this.addEmission(api.core.RootEmission.CLICK, this._handleRootClick.bind(this));\n this.listen('mousedown', this.handleMouseDown.bind(this));\n this.listenClick({ capture: true });\n this.isResizing = true;\n }\n\n validate (member) {\n return super.validate(member) && member.element.node.matches(api.internals.legacy.isLegacy ? NavigationSelector.COLLAPSE_LEGACY : NavigationSelector.COLLAPSE);\n }\n\n handleMouseDown (e) {\n if (!this.isBreakpoint(api.core.Breakpoints.LG) || this.index === -1 || !this.current) return;\n this.position = this.current.node.contains(e.target) ? NavigationMousePosition.INSIDE : NavigationMousePosition.OUTSIDE;\n this.requestPosition();\n }\n\n handleClick (e) {\n if (e.target.matches('a, button') && !e.target.matches('[aria-controls]') && !e.target.matches(api.core.DisclosureSelector.PREVENT_CONCEAL)) {\n this.index = -1;\n }\n }\n\n _handleRootClick (target) {\n if (!this.isBreakpoint(api.core.Breakpoints.LG)) return;\n if (!this.node.contains(target)) {\n this.out = true;\n this.requestPosition();\n }\n }\n\n requestPosition () {\n if (this.isRequesting) return;\n this.isRequesting = true;\n this.request(this.getPosition.bind(this));\n }\n\n getPosition () {\n if (this.out) {\n switch (this.position) {\n case NavigationMousePosition.OUTSIDE:\n this.index = -1;\n break;\n\n case NavigationMousePosition.INSIDE:\n if (this.current && !this.current.node.contains(document.activeElement)) this.current.focus();\n break;\n\n default:\n if (this.index > -1 && !this.current.hasFocus) this.index = -1;\n }\n }\n\n this.request(this.requested.bind(this));\n }\n\n requested () {\n this.position = NavigationMousePosition.NONE;\n this.out = false;\n this.isRequesting = false;\n }\n\n get index () { return super.index; }\n\n set index (value) {\n if (value === -1 && this.current && this.current.hasFocus) this.current.focus();\n super.index = value;\n }\n\n get canUngroup () {\n return !this.isBreakpoint(api.core.Breakpoints.LG);\n }\n\n resize () {\n this.update();\n }\n}\n\napi.navigation = {\n Navigation: Navigation,\n NavigationItem: NavigationItem,\n NavigationMousePosition: NavigationMousePosition,\n NavigationSelector: NavigationSelector\n};\n\napi.internals.register(api.navigation.NavigationSelector.NAVIGATION, api.navigation.Navigation);\napi.internals.register(api.navigation.NavigationSelector.ITEM, api.navigation.NavigationItem);\n\n/**\n * TabButton correspond au bouton cliquable qui change le panel\n * TabButton étend de DisclosureButton qui ajoute/enelve l'attribut aria-selected,\n * Et change l'attributte tabindex a 0 si le boutton est actif (value=true), -1 s'il n'est pas actif (value=false)\n */\nclass TabButton extends api.core.DisclosureButton {\n constructor () {\n super(api.core.DisclosureType.SELECT);\n }\n\n static get instanceClassName () {\n return 'TabButton';\n }\n\n handleClick (e) {\n super.handleClick(e);\n this.focus();\n }\n\n apply (value) {\n super.apply(value);\n if (this.isPrimary) {\n this.setAttribute('tabindex', value ? '0' : '-1');\n if (value) {\n if (this.list) this.list.focalize(this);\n }\n }\n }\n\n get list () {\n return this.element.getAscendantInstance('TabsList', 'TabsGroup');\n }\n}\n\nconst TabSelector = {\n TAB: api.internals.ns.selector('tabs__tab'),\n GROUP: api.internals.ns.selector('tabs'),\n PANEL: api.internals.ns.selector('tabs__panel'),\n LIST: api.internals.ns.selector('tabs__list'),\n SHADOW: api.internals.ns.selector('tabs__shadow'),\n SHADOW_LEFT: api.internals.ns.selector('tabs__shadow--left'),\n SHADOW_RIGHT: api.internals.ns.selector('tabs__shadow--right'),\n PANEL_START: api.internals.ns.selector('tabs__panel--direction-start'),\n PANEL_END: api.internals.ns.selector('tabs__panel--direction-end')\n};\n\nconst TabPanelDirection = {\n START: 'direction-start',\n END: 'direction-end',\n NONE: 'none'\n};\n\n/**\n * Tab coorespond au panel d'un élement Tabs (tab panel)\n * Tab étend disclosure qui ajoute/enleve le modifier --selected,\n * et ajoute/eleve l'attribut hidden, sur le panel\n */\nclass TabPanel extends api.core.Disclosure {\n constructor () {\n super(api.core.DisclosureType.SELECT, TabSelector.PANEL, TabButton, 'TabsGroup');\n this._direction = TabPanelDirection.NONE;\n this._isPreventingTransition = false;\n }\n\n static get instanceClassName () {\n return 'TabPanel';\n }\n\n get direction () {\n return this._direction;\n }\n\n set direction (value) {\n if (value === this._direction) return;\n switch (this._direction) {\n case TabPanelDirection.START:\n this.removeClass(TabSelector.PANEL_START);\n break;\n\n case TabPanelDirection.END:\n this.removeClass(TabSelector.PANEL_END);\n break;\n\n case TabPanelDirection.NONE:\n break;\n\n default:\n return;\n }\n\n this._direction = value;\n\n switch (this._direction) {\n case TabPanelDirection.START:\n this.addClass(TabSelector.PANEL_START);\n break;\n\n case TabPanelDirection.END:\n this.addClass(TabSelector.PANEL_END);\n break;\n }\n }\n\n get isPreventingTransition () {\n return this._isPreventingTransition;\n }\n\n set isPreventingTransition (value) {\n if (this._isPreventingTransition === value) return;\n if (value) this.addClass(api.internals.motion.TransitionSelector.NONE);\n else this.removeClass(api.internals.motion.TransitionSelector.NONE);\n this._isPreventingTransition = value === true;\n }\n\n translate (direction, initial) {\n this.isPreventingTransition = initial;\n this.direction = direction;\n }\n\n reset () {\n if (this.group) this.group.retrieve(true);\n }\n\n _electPrimaries (candidates) {\n if (!this.group || !this.group.list) return [];\n return super._electPrimaries(candidates).filter(candidate => this.group.list.node.contains(candidate.node));\n }\n}\n\nconst TabKeys = {\n LEFT: 'tab_keys_left',\n RIGHT: 'tab_keys_right',\n HOME: 'tab_keys_home',\n END: 'tab_keys_end'\n};\n\nconst TabEmission = {\n PRESS_KEY: api.internals.ns.emission('tab', 'press_key'),\n LIST_HEIGHT: api.internals.ns.emission('tab', 'list_height')\n};\n\n/**\n* TabGroup est la classe étendue de DiscosuresGroup\n* Correspond à un objet Tabs avec plusieurs tab-button & Tab (panel)\n*/\nclass TabsGroup extends api.core.DisclosuresGroup {\n constructor () {\n super('TabPanel');\n }\n\n static get instanceClassName () {\n return 'TabsGroup';\n }\n\n init () {\n super.init();\n\n this.listen('transitionend', this.transitionend.bind(this));\n this.addAscent(TabEmission.PRESS_KEY, this.pressKey.bind(this));\n this.addAscent(TabEmission.LIST_HEIGHT, this.setListHeight.bind(this));\n this.isRendering = true;\n }\n\n getIndex (defaultIndex = 0) {\n super.getIndex(defaultIndex);\n }\n\n get list () {\n return this.element.getDescendantInstances('TabsList', 'TabsGroup', true)[0];\n }\n\n setListHeight (value) {\n this.listHeight = value;\n }\n\n transitionend (e) {\n this.isPreventingTransition = true;\n }\n\n get buttonHasFocus () {\n return this.members.some(member => member.buttonHasFocus);\n }\n\n pressKey (key) {\n switch (key) {\n case TabKeys.LEFT:\n this.pressLeft();\n break;\n\n case TabKeys.RIGHT:\n this.pressRight();\n break;\n\n case TabKeys.HOME:\n this.pressHome();\n break;\n\n case TabKeys.END:\n this.pressEnd();\n break;\n }\n }\n\n /**\n * Selectionne l'element suivant de la liste si on est sur un bouton\n * Si on est à la fin on retourne au début\n */\n pressRight () {\n if (this.buttonHasFocus) {\n if (this.index < this.length - 1) {\n this.index++;\n } else {\n this.index = 0;\n }\n\n this.focus();\n }\n };\n\n /**\n * Selectionne l'element précédent de la liste si on est sur un bouton\n * Si on est au debut retourne a la fin\n */\n pressLeft () {\n if (this.buttonHasFocus) {\n if (this.index > 0) {\n this.index--;\n } else {\n this.index = this.length - 1;\n }\n\n this.focus();\n }\n };\n\n /**\n * Selectionne le permier element de la liste si on est sur un bouton\n */\n pressHome () {\n if (this.buttonHasFocus) {\n this.index = 0;\n this.focus();\n }\n };\n\n /**\n * Selectionne le dernier element de la liste si on est sur un bouton\n */\n pressEnd () {\n if (this.buttonHasFocus) {\n this.index = this.length - 1;\n this.focus();\n }\n };\n\n focus () {\n if (this.current) {\n this.current.focus();\n }\n }\n\n apply () {\n for (let i = 0; i < this._index; i++) this.members[i].translate(TabPanelDirection.START);\n if (this.current) this.current.translate(TabPanelDirection.NONE);\n for (let i = this._index + 1; i < this.length; i++) this.members[i].translate(TabPanelDirection.END);\n this.isPreventingTransition = false;\n }\n\n get isPreventingTransition () {\n return this._isPreventingTransition;\n }\n\n set isPreventingTransition (value) {\n if (this._isPreventingTransition === value) return;\n if (value) this.addClass(api.internals.motion.TransitionSelector.NONE);\n else this.removeClass(api.internals.motion.TransitionSelector.NONE);\n this._isPreventingTransition = value === true;\n }\n\n render () {\n if (this.current === null) return;\n this.node.scrollTop = 0;\n this.node.scrollLeft = 0;\n const paneHeight = Math.round(this.current.node.offsetHeight);\n if (this.panelHeight === paneHeight) return;\n this.panelHeight = paneHeight;\n this.style.setProperty('--tabs-height', (this.panelHeight + this.listHeight) + 'px');\n }\n}\n\nconst FOCALIZE_OFFSET = 16;\nconst SCROLL_OFFSET$1 = 16; // valeur en px du scroll avant laquelle le shadow s'active ou se desactive\n\nclass TabsList extends api.core.Instance {\n static get instanceClassName () {\n return 'TabsList';\n }\n\n init () {\n this.listen('scroll', this.scroll.bind(this));\n this.listenKey(api.core.KeyCodes.RIGHT, this.ascend.bind(this, TabEmission.PRESS_KEY, TabKeys.RIGHT), true, true);\n this.listenKey(api.core.KeyCodes.LEFT, this.ascend.bind(this, TabEmission.PRESS_KEY, TabKeys.LEFT), true, true);\n this.listenKey(api.core.KeyCodes.HOME, this.ascend.bind(this, TabEmission.PRESS_KEY, TabKeys.HOME), true, true);\n this.listenKey(api.core.KeyCodes.END, this.ascend.bind(this, TabEmission.PRESS_KEY, TabKeys.END), true, true);\n this.isResizing = true;\n }\n\n focalize (btn) {\n const btnRect = btn.getRect();\n const listRect = this.getRect();\n const actualScroll = this.node.scrollLeft;\n if (btnRect.left < listRect.left) this.node.scrollTo(actualScroll - listRect.left + btnRect.left - FOCALIZE_OFFSET, 0);\n else if (btnRect.right > listRect.right) this.node.scrollTo(actualScroll - listRect.right + btnRect.right + FOCALIZE_OFFSET, 0);\n }\n\n get isScrolling () {\n return this._isScrolling;\n }\n\n set isScrolling (value) {\n if (this._isScrolling === value) return;\n this._isScrolling = value;\n this.apply();\n }\n\n apply () {\n if (this._isScrolling) {\n this.addClass(TabSelector.SHADOW);\n this.scroll();\n } else {\n this.removeClass(TabSelector.SHADOW_RIGHT);\n this.removeClass(TabSelector.SHADOW_LEFT);\n this.removeClass(TabSelector.SHADOW);\n }\n }\n\n /* ajoute la classe fr-table__shadow-left ou fr-table__shadow-right sur fr-table en fonction d'une valeur de scroll et du sens (right, left) */\n scroll () {\n const scrollLeft = this.node.scrollLeft;\n const isMin = scrollLeft <= SCROLL_OFFSET$1;\n const max = this.node.scrollWidth - this.node.clientWidth - SCROLL_OFFSET$1;\n\n const isMax = Math.abs(scrollLeft) >= max;\n const isRtl = document.documentElement.getAttribute('dir') === 'rtl';\n const minSelector = isRtl ? TabSelector.SHADOW_RIGHT : TabSelector.SHADOW_LEFT;\n const maxSelector = isRtl ? TabSelector.SHADOW_LEFT : TabSelector.SHADOW_RIGHT;\n\n if (isMin) {\n this.removeClass(minSelector);\n } else {\n this.addClass(minSelector);\n }\n\n if (isMax) {\n this.removeClass(maxSelector);\n } else {\n this.addClass(maxSelector);\n }\n }\n\n resize () {\n this.isScrolling = this.node.scrollWidth > this.node.clientWidth + SCROLL_OFFSET$1;\n const height = this.getRect().height;\n this.setProperty('--tabs-list-height', `${height}px`);\n this.ascend(TabEmission.LIST_HEIGHT, height);\n }\n\n dispose () {\n this.isScrolling = false;\n }\n}\n\napi.tab = {\n TabPanel: TabPanel,\n TabButton: TabButton,\n TabsGroup: TabsGroup,\n TabsList: TabsList,\n TabSelector: TabSelector,\n TabEmission: TabEmission\n};\n\napi.internals.register(api.tab.TabSelector.PANEL, api.tab.TabPanel);\napi.internals.register(api.tab.TabSelector.GROUP, api.tab.TabsGroup);\napi.internals.register(api.tab.TabSelector.LIST, api.tab.TabsList);\n\nconst TableEmission = {\n SCROLLABLE: api.internals.ns.emission('table', 'scrollable'),\n CHANGE: api.internals.ns.emission('table', 'change'),\n CAPTION_HEIGHT: api.internals.ns.emission('table', 'captionheight')\n};\n\nconst PADDING = '1rem'; // padding de 4v sur le caption\n\nclass Table extends api.core.Instance {\n static get instanceClassName () {\n return 'Table';\n }\n\n init () {\n this.addAscent(TableEmission.CAPTION_HEIGHT, this.setCaptionHeight.bind(this));\n }\n\n setCaptionHeight (value) {\n this.setProperty('--table-offset', `calc(${value}px + ${PADDING})`);\n }\n}\n\nconst TableSelector = {\n TABLE: api.internals.ns.selector('table'),\n SHADOW: api.internals.ns.selector('table__shadow'),\n SHADOW_LEFT: api.internals.ns.selector('table__shadow--left'),\n SHADOW_RIGHT: api.internals.ns.selector('table__shadow--right'),\n ELEMENT: `${api.internals.ns.selector('table')}:not(${api.internals.ns.selector('table--no-scroll')}) table`,\n CAPTION: `${api.internals.ns.selector('table')} table caption`\n};\n\nconst SCROLL_OFFSET = 8; // valeur en px du scroll avant laquelle le shadow s'active ou se desactive\n\nclass TableElement extends api.core.Instance {\n static get instanceClassName () {\n return 'TableElement';\n }\n\n init () {\n this.listen('scroll', this.scroll.bind(this));\n this.content = this.querySelector('tbody');\n this.isResizing = true;\n }\n\n get isScrolling () {\n return this._isScrolling;\n }\n\n set isScrolling (value) {\n if (this._isScrolling === value) return;\n this._isScrolling = value;\n\n if (value) {\n this.addClass(TableSelector.SHADOW);\n this.scroll();\n } else {\n this.removeClass(TableSelector.SHADOW);\n this.removeClass(TableSelector.SHADOW_LEFT);\n this.removeClass(TableSelector.SHADOW_RIGHT);\n }\n }\n\n /* ajoute la classe fr-table__shadow-left ou fr-table__shadow-right sur fr-table en fonction d'une valeur de scroll et du sens (right, left) */\n scroll () {\n const isMin = this.node.scrollLeft <= SCROLL_OFFSET;\n const max = this.content.offsetWidth - this.node.offsetWidth - SCROLL_OFFSET;\n const isMax = Math.abs(this.node.scrollLeft) >= max;\n const isRtl = document.documentElement.getAttribute('dir') === 'rtl';\n const minSelector = isRtl ? TableSelector.SHADOW_RIGHT : TableSelector.SHADOW_LEFT;\n const maxSelector = isRtl ? TableSelector.SHADOW_LEFT : TableSelector.SHADOW_RIGHT;\n\n if (isMin) {\n this.removeClass(minSelector);\n } else {\n this.addClass(minSelector);\n }\n\n if (isMax) {\n this.removeClass(maxSelector);\n } else {\n this.addClass(maxSelector);\n }\n }\n\n resize () {\n this.isScrolling = this.content.offsetWidth > this.node.offsetWidth;\n }\n\n dispose () {\n this.isScrolling = false;\n }\n}\n\nclass TableCaption extends api.core.Instance {\n static get instanceClassName () {\n return 'TableCaption';\n }\n\n init () {\n this.height = 0;\n this.isResizing = true;\n }\n\n resize () {\n const height = this.getRect().height;\n if (this.height === height) return;\n this.height = height;\n this.ascend(TableEmission.CAPTION_HEIGHT, height);\n }\n}\n\napi.table = {\n Table: Table,\n TableElement: TableElement,\n TableCaption: TableCaption,\n TableSelector: TableSelector\n};\n\napi.internals.register(api.table.TableSelector.TABLE, api.table.Table);\napi.internals.register(api.table.TableSelector.ELEMENT, api.table.TableElement);\napi.internals.register(api.table.TableSelector.CAPTION, api.table.TableCaption);\n\nconst TagEvent = {\n DISMISS: api.internals.ns.event('dismiss')\n};\n\nclass TagDismissible extends api.core.Instance {\n static get instanceClassName () {\n return 'TagDismissible';\n }\n\n init () {\n this.listenClick();\n }\n\n handleClick () {\n this.focusClosest();\n\n switch (api.mode) {\n case api.Modes.ANGULAR:\n case api.Modes.REACT:\n case api.Modes.VUE:\n this.request(this.verify.bind(this));\n break;\n\n default:\n this.remove();\n }\n\n this.dispatch(TagEvent.DISMISS);\n }\n\n verify () {\n if (document.body.contains(this.node)) this.warn(`a TagDismissible has just been dismissed and should be removed from the dom. In ${api.mode} mode, the api doesn't handle dom modification. An event ${TagEvent.DISMISS} is dispatched by the element to trigger the removal`);\n }\n}\n\nconst TagSelector = {\n PRESSABLE: `${api.internals.ns.selector('tag')}[aria-pressed]`,\n DISMISSIBLE: `${api.internals.ns.selector('tag--dismiss')}`\n};\n\napi.tag = {\n TagDismissible: TagDismissible,\n TagSelector: TagSelector,\n TagEvent: TagEvent\n};\n\napi.internals.register(api.tag.TagSelector.PRESSABLE, api.core.Toggle);\napi.internals.register(api.tag.TagSelector.DISMISSIBLE, api.tag.TagDismissible);\n\nconst TRANSCRIPTION = api.internals.ns.selector('transcription');\n\nconst TranscriptionSelector = {\n TRANSCRIPTION: TRANSCRIPTION,\n BUTTON: `${TRANSCRIPTION}__btn`\n};\n\nclass Transcription extends api.core.Instance {\n static get instanceClassName () {\n return 'Transcription';\n }\n\n get collapsePrimary () {\n const buttons = this.element.children.map(child => child.getInstance('CollapseButton')).filter(button => button !== null && button.hasClass(TranscriptionSelector.BUTTON));\n return buttons[0];\n }\n}\n\napi.transcription = {\n Transcription: Transcription,\n TranscriptionSelector: TranscriptionSelector\n};\n\napi.internals.register(api.transcription.TranscriptionSelector.TRANSCRIPTION, api.transcription.Transcription);\n\nclass TileDownload extends api.core.Instance {\n static get instanceClassName () {\n return 'TileDownload';\n }\n\n init () {\n this.addAscent(api.core.AssessEmission.UPDATE, details => {\n this.descend(api.core.AssessEmission.UPDATE, details);\n });\n this.addAscent(api.core.AssessEmission.ADDED, () => {\n this.descend(api.core.AssessEmission.ADDED);\n });\n }\n}\n\nconst TileSelector = {\n DOWNLOAD: api.internals.ns.selector('tile--download'),\n DOWNLOAD_DETAIL: `${api.internals.ns.selector('tile--download')} ${api.internals.ns.selector('tile__detail')}`\n};\n\napi.tile = {\n TileSelector: TileSelector,\n TileDownload: TileDownload\n};\n\napi.internals.register(api.tile.TileSelector.DOWNLOAD, api.tile.TileDownload);\napi.internals.register(api.tile.TileSelector.DOWNLOAD_DETAIL, api.core.AssessDetail);\n\nconst RangeSelector = {\n RANGE: api.internals.ns.selector('range'),\n RANGE_SM: api.internals.ns.selector('range--sm'),\n RANGE_STEP: api.internals.ns.selector('range--step'),\n RANGE_DOUBLE: api.internals.ns.selector('range--double'),\n RANGE_DOUBLE_STEP: api.internals.ns.selector('range--double') + api.internals.ns.selector('range--step'),\n RANGE_INPUT: api.internals.ns.selector('range input[type=range]:nth-of-type(1)'),\n RANGE_INPUT2: `${api.internals.ns.selector('range--double')} input[type=range]:nth-of-type(2)`,\n RANGE_OUTPUT: api.internals.ns.selector('range__output'),\n RANGE_MIN: api.internals.ns.selector('range__min'),\n RANGE_MAX: api.internals.ns.selector('range__max'),\n RANGE_PREFIX: api.internals.ns.attr('prefix'),\n RANGE_SUFFIX: api.internals.ns.attr('suffix')\n};\n\nconst RangeEmission = {\n VALUE: api.internals.ns.emission('range', 'value'),\n VALUE2: api.internals.ns.emission('range', 'value2'),\n OUTPUT: api.internals.ns.emission('range', 'output'),\n CONSTRAINTS: api.internals.ns.emission('range', 'constraints'),\n MIN: api.internals.ns.emission('range', 'min'),\n MAX: api.internals.ns.emission('range', 'max'),\n STEP: api.internals.ns.emission('range', 'step'),\n PREFIX: api.internals.ns.emission('range', 'prefix'),\n SUFFIX: api.internals.ns.emission('range', 'suffix'),\n DISABLED: api.internals.ns.emission('range', 'disabled'),\n ENABLE_POINTER: api.internals.ns.emission('range', 'enable_pointer')\n};\n\nclass RangeModel {\n constructor () {\n this._width = 0;\n this._min = 0;\n this._max = 0;\n this._value = 0;\n this._thumbSize = 24;\n this._innerWidth = 0;\n this._prefix = '';\n this._suffix = '';\n this._background = {};\n }\n\n configure (model) {\n if (!model) return;\n this._prefix = model._prefix;\n this._suffix = model._suffix;\n this._width = model.width;\n this.setConstraints(model._constraints);\n this.value = model.value;\n this.update();\n }\n\n setPrefix (value) {\n this._prefix = value !== null ? value : '';\n }\n\n setSuffix (value) {\n this._suffix = value !== null ? value : '';\n }\n\n _decorate (value) {\n return `${this._prefix}${value}${this._suffix}`;\n }\n\n get width () {\n return this._width;\n }\n\n set width (value) {\n this._width = value;\n }\n\n get isSm () {\n return this._isSm;\n }\n\n set isSm (value) {\n if (this._isSm === value) return;\n this._isSm = value;\n this.setThumbSize(value ? 16 : 24);\n this.update();\n }\n\n setThumbSize (value, mult = 1) {\n this._thumbSize = value;\n this._innerPadding = value * mult;\n }\n\n get textValue () {\n return this._decorate(this._value);\n }\n\n get value () {\n return this._value;\n }\n\n set value (value) {\n this._value = value;\n }\n\n get outputX () {\n return this._outputX;\n }\n\n setConstraints (constraints) {\n this._constraints = constraints;\n this._min = constraints.min;\n this._max = constraints.max;\n this._step = constraints.step;\n this._rangeWidth = constraints.rangeWidth;\n }\n\n get min () {\n return this._min;\n }\n\n get textMin () {\n return this._decorate(this._min);\n }\n\n get max () {\n return this._max;\n }\n\n get textMax () {\n return this._decorate(this._max);\n }\n\n get step () {\n return this._step;\n }\n\n get output () {\n return {\n text: this.textValue,\n transform: `translateX(${this._translateX}px) translateX(-${this._centerPercent}%)`\n };\n }\n\n _getRatio (value) {\n return (value - this._min) / this._rangeWidth;\n }\n\n get progress () {\n return this._progress;\n }\n\n update () {\n this._update();\n }\n\n _update () {\n this._innerWidth = this._width - this._innerPadding;\n const ratio = this._getRatio(this._value);\n this._translateX = ratio * this._width;\n this._centerPercent = ratio * 100;\n this._progress = {\n right: `${(this._innerWidth * ratio + this._innerPadding * 0.5).toFixed(2)}px`\n };\n }\n}\n\nclass RangeModelStep extends RangeModel {\n get stepWidth () {\n return `${this._stepWidth.toFixed(3)}px`;\n }\n\n _update () {\n super._update();\n const steps = this._rangeWidth / this._step;\n this._stepWidth = this._innerWidth / steps;\n while (this._stepWidth < 4) this._stepWidth *= 2;\n }\n}\n\nclass RangeModelDouble extends RangeModel {\n get value2 () {\n return this._value;\n }\n\n set value2 (value) {\n if (this._value2 === value) return;\n this._value2 = value;\n this.update();\n }\n\n get textValue () {\n return `${this._decorate(this._value)} - ${this._decorate(this._value2)}`;\n }\n\n setThumbSize (value) {\n super.setThumbSize(value, 2);\n }\n\n _update () {\n super._update();\n const ratio = this._getRatio((this._value + this._value2) * 0.5);\n this._translateX = ratio * this._width;\n this._centerPercent = ratio * 100;\n const ratio1 = this._getRatio(this._value);\n const ratio2 = this._getRatio(this._value2);\n this._progress = {\n left: `${(this._innerWidth * ratio1 + this._innerPadding * 0.25).toFixed(2)}px`,\n right: `${(this._innerWidth * ratio2 + this._innerPadding * 0.75).toFixed(2)}px`\n };\n }\n}\n\nclass RangeModelDoubleStep extends RangeModelDouble {\n get stepWidth () {\n return `${this._stepWidth.toFixed(3)}px`;\n }\n\n _update () {\n super._update();\n const steps = this._rangeWidth / this._step;\n this._stepWidth = this._innerWidth / steps;\n if (this._stepWidth < 4) this._stepWidth *= Math.ceil(4 / this._stepWidth);\n }\n}\n\nconst RangeTypes = {\n STEP: 'step',\n DOUBLE: 'double',\n DOUBLE_STEP: 'double-step',\n DEFAULT: 'default'\n};\n\nclass Range extends api.core.Instance {\n static get instanceClassName () {\n return 'Range';\n }\n\n init () {\n this._retrieveType();\n this._retrieveSize();\n if (this.isLegacy) {\n this.isResizing = true;\n this.isMouseMoving = true;\n } else {\n this._observer = new ResizeObserver(this.resize.bind(this));\n this._observer.observe(this.node);\n }\n\n this.addAscent(RangeEmission.CONSTRAINTS, this.setConstraints.bind(this));\n this.addAscent(RangeEmission.VALUE, this.setValue.bind(this));\n this.addAscent(RangeEmission.VALUE2, this.setValue2.bind(this));\n if (this.getAttribute(RangeSelector.RANGE_PREFIX)) this.setPrefix(this.getAttribute(RangeSelector.RANGE_PREFIX));\n if (this.getAttribute(RangeSelector.RANGE_SUFFIX)) this.setSuffix(this.getAttribute(RangeSelector.RANGE_SUFFIX));\n this.update();\n }\n\n _retrieveType () {\n switch (true) {\n case this.matches(RangeSelector.RANGE_DOUBLE_STEP):\n this.type = RangeTypes.DOUBLE;\n break;\n\n case this.matches(RangeSelector.RANGE_DOUBLE):\n this.type = RangeTypes.DOUBLE;\n break;\n\n case this.matches(RangeSelector.RANGE_STEP):\n this.type = RangeTypes.STEP;\n break;\n\n default:\n this.type = RangeTypes.DEFAULT;\n }\n }\n\n set type (value) {\n if (this._type === value) return;\n this._type = value;\n\n const oldModel = this._model;\n\n switch (this._type) {\n case RangeTypes.DOUBLE_STEP:\n this._model = new RangeModelDoubleStep();\n break;\n\n case RangeTypes.DOUBLE:\n this._model = new RangeModelDouble();\n break;\n\n case RangeTypes.STEP:\n this._model = new RangeModelStep();\n break;\n\n default:\n this._model = new RangeModel();\n }\n\n this._model.configure(oldModel);\n }\n\n get type () {\n return this._type;\n }\n\n _retrieveSize () {\n this._model.isSm = this.matches(RangeSelector.RANGE_SM);\n }\n\n resize () {\n this._retrieveWidth();\n this.update();\n }\n\n _retrieveWidth () {\n this._model.width = this.getRect().width;\n }\n\n setValue (value) {\n this._model.value = value;\n switch (this._type) {\n case RangeTypes.DOUBLE_STEP:\n case RangeTypes.DOUBLE:\n this.descend(RangeEmission.VALUE, value);\n break;\n }\n this.update();\n }\n\n setValue2 (value) {\n this._model.value2 = value;\n this.descend(RangeEmission.VALUE2, value);\n this.update();\n }\n\n setConstraints (constraints) {\n this._model.setConstraints(constraints);\n this.update();\n this.descend(RangeEmission.CONSTRAINTS, constraints);\n }\n\n setPrefix (value) {\n this._model.setPrefix(value);\n this.update();\n }\n\n setSuffix (value) {\n this._model.setSuffix(value);\n this.update();\n }\n\n mutate (attributesNames) {\n switch (true) {\n case attributesNames.includes('class'):\n this._retrieveType();\n this._retrieveSize();\n break;\n\n case attributesNames.includes(RangeSelector.RANGE_PREFIX):\n case attributesNames.includes(RangeSelector.RANGE_SUFFIX):\n this._model.setPrefix(this.getAttribute(RangeSelector.RANGE_PREFIX));\n this._model.setSuffix(this.getAttribute(RangeSelector.RANGE_SUFFIX));\n this.update();\n break;\n }\n }\n\n update () {\n this._model.update();\n this.descend(RangeEmission.OUTPUT, this._model.output);\n this.descend(RangeEmission.MIN, this._model.textMin);\n this.descend(RangeEmission.MAX, this._model.textMax);\n const progress = this._model.progress;\n if (progress.left) {\n this.style.setProperty('--progress-left', progress.left);\n } else {\n this.style.removeProperty('--progress-left');\n }\n if (progress.right) {\n this.style.setProperty('--progress-right', progress.right);\n if (this.isLegacy) {\n if (progress.left) {\n this.style.setProperty('background-position-x', progress.left);\n this.style.setProperty('background-size', `${parseFloat(progress.right) - parseFloat(progress.left)}px ${this._model.isSm ? '8px' : '12px'}`);\n }\n }\n } else {\n this.style.removeProperty('--progress-right');\n if (this.isLegacy) {\n this.style.removeProperty('background-size');\n this.style.removeProperty('background-position-x');\n }\n }\n if (this._model.stepWidth) this.style.setProperty('--step-width', this._model.stepWidth);\n else this.style.removeProperty('--step-width');\n }\n\n mouseMove (point) {\n if (this._type !== RangeTypes.DOUBLE && this._type !== RangeTypes.DOUBLE_STEP) return;\n const x = point.x - this.getRect().left;\n this.descend(RangeEmission.ENABLE_POINTER, (parseFloat(this._model.progress.right) - parseFloat(this._model.progress.left)) / 2 + parseFloat(this._model.progress.left) < x ? 2 : 1);\n }\n\n dispose () {\n this._observer.disconnect();\n }\n}\n\nclass RangeConstraints {\n constructor (node) {\n this._min = isNaN(node.min) ? 0 : node.min;\n this._max = isNaN(node.max) ? 100 : node.max;\n this._step = isNaN(node.step) ? 1 : node.step;\n this._rangeWidth = this._max - this._min;\n }\n\n get min () {\n return this._min;\n }\n\n get max () {\n return this._max;\n }\n\n get step () {\n return this._step;\n }\n\n get rangeWidth () {\n return this._rangeWidth;\n }\n\n test (min, max, step) {\n return this._min === min && this._max === max && this._step === step;\n }\n}\n\nclass RangeInput extends api.core.Instance {\n static get instanceClassName () {\n return 'RangeInput';\n }\n\n init () {\n this._init();\n this.node.value = this.getAttribute('value');\n this._changing = this.change.bind(this);\n this._listenerType = this.isLegacy ? 'change' : 'input';\n this.listen(this._listenerType, this._changing);\n if (this.isLegacy) this.addDescent(RangeEmission.ENABLE_POINTER, this._enablePointer.bind(this));\n this.change();\n }\n\n _init () {\n this._pointerId = 1;\n this.request(() => {\n if (!this.hasAttribute('min')) this.setAttribute('min', 0);\n this.ascend(RangeEmission.CONSTRAINTS, new RangeConstraints(this.node));\n this.ascend(RangeEmission.DISABLED, this.node.disabled);\n });\n\n this.addDescent(RangeEmission.VALUE2, this.setValue.bind(this));\n }\n\n _enablePointer (pointerId) {\n const isEnabled = pointerId === this._pointerId;\n if (this._isPointerEnabled === isEnabled) return;\n this._isPointerEnabled = isEnabled;\n if (isEnabled) this.style.removeProperty('pointer-events');\n else this.style.setProperty('pointer-events', 'none');\n }\n\n setValue (value) {\n if (parseFloat(this.node.value) > value) {\n this.node.value = value;\n this.change();\n }\n }\n\n change () {\n this.ascend(RangeEmission.VALUE, parseFloat(this.node.value));\n }\n\n mutate (attributesNames) {\n if (attributesNames.includes('disabled')) this.ascend(RangeEmission.DISABLED, this.node.disabled);\n if (attributesNames.includes('min') || attributesNames.includes('max') || attributesNames.includes('step')) {\n this.ascend(RangeEmission.CONSTRAINTS, new RangeConstraints(this.node));\n this.change();\n }\n }\n\n dispose () {\n if (this._listenerType) this.unlisten(this._listenerType, this._changing);\n }\n}\n\nclass RangeInput2 extends RangeInput {\n static get instanceClassName () {\n return 'RangeInput2';\n }\n\n _init () {\n this._pointerId = 2;\n this.addDescent(RangeEmission.CONSTRAINTS, this.setConstraints.bind(this));\n this.addDescent(RangeEmission.VALUE, this.setValue.bind(this));\n }\n\n setValue (value) {\n if (parseFloat(this.node.value) < value) {\n this.node.value = value;\n this.change();\n }\n }\n\n change () {\n this.ascend(RangeEmission.VALUE2, parseFloat(this.node.value));\n }\n\n setConstraints (constraints) {\n this.node.min = constraints.min;\n this.node.max = constraints.max;\n this.node.step = constraints.step;\n this.change();\n }\n\n mutate (attributesNames) {}\n}\n\nclass RangeOutput extends api.core.Instance {\n static get instanceClassName () {\n return 'RangeOutput';\n }\n\n init () {\n this.addDescent(RangeEmission.OUTPUT, this.change.bind(this));\n }\n\n change (data) {\n this.node.innerText = data.text;\n this.node.style.transform = data.transform;\n }\n}\n\nclass RangeLimit extends api.core.Instance {\n static get instanceClassName () {\n return 'RangeLimit';\n }\n\n init () {\n switch (true) {\n case this.matches(RangeSelector.RANGE_MIN):\n this.addDescent(RangeEmission.MIN, this.change.bind(this));\n break;\n\n case this.matches(RangeSelector.RANGE_MAX):\n this.addDescent(RangeEmission.MAX, this.change.bind(this));\n break;\n }\n }\n\n change (text) {\n this.node.innerText = text;\n }\n}\n\napi.range = {\n Range: Range,\n RangeInput: RangeInput,\n RangeInput2: RangeInput2,\n RangeOutput: RangeOutput,\n RangeLimit: RangeLimit,\n RangeEmission: RangeEmission,\n RangeSelector: RangeSelector\n};\n\napi.internals.register(api.range.RangeSelector.RANGE, api.range.Range);\napi.internals.register(api.range.RangeSelector.RANGE_INPUT, api.range.RangeInput);\napi.internals.register(api.range.RangeSelector.RANGE_INPUT2, api.range.RangeInput2);\napi.internals.register(api.range.RangeSelector.RANGE_OUTPUT, api.range.RangeOutput);\napi.internals.register(api.range.RangeSelector.RANGE_MIN, api.range.RangeLimit);\napi.internals.register(api.range.RangeSelector.RANGE_MAX, api.range.RangeLimit);\n\nconst HeaderSelector = {\n HEADER: api.internals.ns.selector('header'),\n TOOLS_LINKS: api.internals.ns.selector('header__tools-links'),\n MENU_LINKS: api.internals.ns.selector('header__menu-links'),\n BUTTONS: `${api.internals.ns.selector('header__tools-links')} ${api.internals.ns.selector('btns-group')}, ${api.internals.ns.selector('header__tools-links')} ${api.internals.ns.selector('links-group')}`,\n MODALS: `${api.internals.ns.selector('header__search')}${api.internals.ns.selector('modal')}, ${api.internals.ns.selector('header__menu')}${api.internals.ns.selector('modal')}`\n};\n\nclass HeaderLinks extends api.core.Instance {\n static get instanceClassName () {\n return 'HeaderLinks';\n }\n\n init () {\n const header = this.queryParentSelector(HeaderSelector.HEADER);\n this.toolsLinks = header.querySelector(HeaderSelector.TOOLS_LINKS);\n this.menuLinks = header.querySelector(HeaderSelector.MENU_LINKS);\n const copySuffix = '-mobile';\n\n const toolsHtml = this.toolsLinks.innerHTML.replace(/ +/g, ' ');\n const menuHtml = this.menuLinks.innerHTML.replace(/ +/g, ' ');\n // Pour éviter de dupliquer des id, on ajoute un suffixe aux id et aria-controls duppliqués.\n let toolsHtmlIdList = toolsHtml.match(/id=\"(.*?)\"/gm) || [];\n\n // on a besoin d'échapper les backslash dans la chaine de caractère\n // eslint-disable-next-line no-useless-escape\n toolsHtmlIdList = toolsHtmlIdList.map(element => element.replace('id=\\\"', '').replace('\\\"', ''));\n\n const toolsHtmlAriaControlList = toolsHtml.match(/aria-controls=\"(.*?)\"/gm);\n let toolsHtmlDuplicateId = toolsHtml.replace(/id=\"(.*?)\"/gm, 'id=\"$1' + copySuffix + '\"');\n if (toolsHtmlAriaControlList) {\n for (const element of toolsHtmlAriaControlList) {\n const ariaControlsValue = element.replace('aria-controls=\"', '').replace('\"', '');\n if (toolsHtmlIdList.includes(ariaControlsValue)) {\n toolsHtmlDuplicateId = toolsHtmlDuplicateId.replace(`aria-controls=\"${ariaControlsValue}\"`, `aria-controls=\"${ariaControlsValue + copySuffix}\"`);\n } }\n }\n\n if (toolsHtmlDuplicateId === menuHtml) return;\n\n switch (api.mode) {\n case api.Modes.ANGULAR:\n case api.Modes.REACT:\n case api.Modes.VUE:\n this.warn(`header__tools-links content is different from header__menu-links content.\nAs you're using a dynamic framework, you should handle duplication of this content yourself, please refer to documentation:\n${api.header.doc}`);\n break;\n\n default:\n this.menuLinks.innerHTML = toolsHtmlDuplicateId;\n }\n }\n}\n\nclass HeaderModal extends api.core.Instance {\n static get instanceClassName () {\n return 'HeaderModal';\n }\n\n init () {\n this.isResizing = true;\n }\n\n resize () {\n if (this.isBreakpoint(api.core.Breakpoints.LG)) this.deactivateModal();\n else this.activateModal();\n }\n\n activateModal () {\n const modal = this.element.getInstance('Modal');\n if (!modal) return;\n modal.isEnabled = true;\n this.listenClick({ capture: true });\n }\n\n deactivateModal () {\n const modal = this.element.getInstance('Modal');\n if (!modal) return;\n modal.conceal();\n modal.isEnabled = false;\n this.unlistenClick({ capture: true });\n }\n\n handleClick (e) {\n if (e.target.matches('a, button') && !e.target.matches('[aria-controls]') && !e.target.matches(api.core.DisclosureSelector.PREVENT_CONCEAL)) {\n const modal = this.element.getInstance('Modal');\n modal.conceal();\n }\n }\n}\n\napi.header = {\n HeaderLinks: HeaderLinks,\n HeaderModal: HeaderModal,\n HeaderSelector: HeaderSelector,\n doc: 'https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/en-tete'\n};\n\napi.internals.register(api.header.HeaderSelector.TOOLS_LINKS, api.header.HeaderLinks);\napi.internals.register(api.header.HeaderSelector.MODALS, api.header.HeaderModal);\n\nconst DisplaySelector = {\n DISPLAY: api.internals.ns.selector('display'),\n RADIO_BUTTONS: `input[name=\"${api.internals.ns('radios-theme')}\"]`,\n FIELDSET: api.internals.ns.selector('fieldset')\n};\n\nclass Display extends api.core.Instance {\n static get instanceClassName () {\n return 'Display';\n }\n\n init () {\n this.radios = this.querySelectorAll(DisplaySelector.RADIO_BUTTONS);\n\n if (api.scheme) {\n this.changing = this.change.bind(this);\n for (const radio of this.radios) radio.addEventListener('change', this.changing);\n this.addDescent(api.scheme.SchemeEmission.SCHEME, this.apply.bind(this));\n this.ascend(api.scheme.SchemeEmission.ASK);\n } else {\n this.querySelector(DisplaySelector.FIELDSET).setAttribute('disabled', '');\n }\n }\n\n get scheme () {\n return this._scheme;\n }\n\n set scheme (value) {\n if (this._scheme === value || !api.scheme) return;\n switch (value) {\n case api.scheme.SchemeValue.SYSTEM:\n case api.scheme.SchemeValue.LIGHT:\n case api.scheme.SchemeValue.DARK:\n this._scheme = value;\n for (const radio of this.radios) {\n radio.checked = radio.value === value;\n }\n this.ascend(api.scheme.SchemeEmission.SCHEME, value);\n break;\n }\n }\n\n change () {\n for (const radio of this.radios) {\n if (radio.checked) {\n this.scheme = radio.value;\n return;\n }\n }\n }\n\n apply (value) {\n this.scheme = value;\n }\n\n dispose () {\n for (const radio of this.radios) radio.removeEventListener('change', this.changing);\n }\n}\n\napi.display = {\n Display: Display,\n DisplaySelector: DisplaySelector\n};\n\napi.internals.register(api.display.DisplaySelector.DISPLAY, api.display.Display);\n//# sourceMappingURL=dsfr.module.js.map\n","import ProgressBar from './progress-bar';\nimport {\n errorFromDirectUploadMessage,\n ERROR_CODE_READ,\n FAILURE_CLIENT\n} from './file-upload-error';\nimport { fire } from '@utils';\n\nconst INITIALIZE_EVENT = 'direct-upload:initialize';\nconst START_EVENT = 'direct-upload:start';\nconst PROGRESS_EVENT = 'direct-upload:progress';\nconst ERROR_EVENT = 'direct-upload:error';\nconst END_EVENT = 'direct-upload:end';\n\nfunction addUploadEventListener(type, handler) {\n addEventListener(type, (event) => {\n // Internet Explorer and Edge will sometime replay Javascript events\n // that were dispatched just before a page navigation (!), but without\n // the event payload.\n //\n // Ignore these replayed events.\n const isEventValid = event && event.detail && event.detail.id != undefined;\n if (!isEventValid) return;\n\n handler(event);\n });\n}\n\naddUploadEventListener(INITIALIZE_EVENT, ({ target, detail: { id, file } }) => {\n ProgressBar.init(target, id, file);\n});\n\naddUploadEventListener(START_EVENT, ({ target, detail: { id } }) => {\n ProgressBar.start(id);\n // At the end of the upload, the form will be submitted again.\n // Avoid the confirm dialog to be presented again then.\n const button = target.form.querySelector('button.primary');\n if (button) {\n button.removeAttribute('data-confirm');\n }\n});\n\naddUploadEventListener(PROGRESS_EVENT, ({ detail: { id, progress } }) => {\n ProgressBar.progress(id, progress);\n});\n\naddUploadEventListener(ERROR_EVENT, (event) => {\n let id = event.detail.id;\n let errorMsg = event.detail.error;\n\n // Display an error message\n alert(\n `Nous sommes désolés, une erreur s’est produite lors de l’envoi du fichier.\n\n (${errorMsg})`\n );\n // Prevent ActiveStorage from displaying its own error message\n event.preventDefault();\n\n ProgressBar.error(id, errorMsg);\n\n // Report unexpected client errors to Sentry.\n // (But ignore usual client errors, or errors we can monitor better on the server side.)\n let error = errorFromDirectUploadMessage(errorMsg);\n if (error.failureReason == FAILURE_CLIENT && error.code != ERROR_CODE_READ) {\n fire(document, 'sentry:capture-exception', error);\n }\n});\n\naddUploadEventListener(END_EVENT, ({ detail: { id } }) => {\n ProgressBar.end(id);\n});\n","// iOS 11.3 Safari / macOS Safari 11.1 empty XHR bug workaround.\n// This should work with every modern browser which supports ES5 (including IE9).\n// https://stackoverflow.com/questions/49614091/safari-11-1-ajax-xhr-form-submission-fails-when-inputtype-file-is-empty\n// https://github.com/rails/rails/issues/32440\n\ndocument.documentElement.addEventListener(\n 'turbo:before-fetch-request',\n (event) => {\n const target = event.target as Element;\n const inputs = target.querySelectorAll(\n 'input[type=\"file\"]:not([disabled])'\n );\n for (const input of inputs) {\n if (input.files?.length == 0) {\n input.setAttribute('data-safari-temp-disabled', 'true');\n input.setAttribute('disabled', '');\n }\n }\n }\n);\n\ndocument.documentElement.addEventListener(\n 'turbo:before-fetch-response',\n (event) => {\n const target = event.target as Element;\n const inputs = target.querySelectorAll(\n 'input[type=\"file\"][data-safari-temp-disabled]'\n );\n for (const input of inputs) {\n input.removeAttribute('data-safari-temp-disabled');\n input.removeAttribute('disabled');\n }\n }\n);\n\nexport {};\n","import { delegate, toggle } from '@utils';\n\n// Unobtrusive Javascript for allowing an element to toggle\n// the visibility of another element.\n//\n// Usage:\n// \n// Content
\n\nconst TOGGLE_SOURCE_SELECTOR = '[data-toggle-target]';\n\ndelegate('click', TOGGLE_SOURCE_SELECTOR, (evt) => {\n evt.preventDefault();\n\n const targetSelector = evt.target.dataset.toggleTarget;\n const targetElements = document.querySelectorAll(targetSelector);\n for (let target of targetElements) {\n toggle(target);\n target.focus();\n }\n});\n","import { delegate } from '@utils';\n\ndelegate('blur keydown', 'input, textarea', ({ target }) => {\n touch(target);\n});\n\ndelegate(\n 'click',\n 'input[type=\"submit\"]:not([formnovalidate])',\n ({ target }) => {\n let form = target.closest('form');\n let inputs = form ? form.querySelectorAll('input, textarea') : [];\n [...inputs].forEach(touch);\n }\n);\n\nfunction touch({ classList }) {\n classList.add('touched');\n}\n","/**\n * @module ol/events/Event\n */\n\n/**\n * @classdesc\n * Stripped down implementation of the W3C DOM Level 2 Event interface.\n * See https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-interface.\n *\n * This implementation only provides `type` and `target` properties, and\n * `stopPropagation` and `preventDefault` methods. It is meant as base class\n * for higher level events defined in the library, and works with\n * {@link module:ol/events/Target~Target}.\n */\nclass BaseEvent {\n /**\n * @param {string} type Type.\n */\n constructor(type) {\n /**\n * @type {boolean}\n */\n this.propagationStopped;\n\n /**\n * @type {boolean}\n */\n this.defaultPrevented;\n\n /**\n * The event type.\n * @type {string}\n * @api\n */\n this.type = type;\n\n /**\n * The event target.\n * @type {Object}\n * @api\n */\n this.target = null;\n }\n\n /**\n * Prevent default. This means that no emulated `click`, `singleclick` or `doubleclick` events\n * will be fired.\n * @api\n */\n preventDefault() {\n this.defaultPrevented = true;\n }\n\n /**\n * Stop event propagation.\n * @api\n */\n stopPropagation() {\n this.propagationStopped = true;\n }\n}\n\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function stopPropagation(evt) {\n evt.stopPropagation();\n}\n\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function preventDefault(evt) {\n evt.preventDefault();\n}\n\nexport default BaseEvent;\n","/**\n * @module ol/ObjectEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when a property is changed.\n * @event module:ol/Object.ObjectEvent#propertychange\n * @api\n */\n PROPERTYCHANGE: 'propertychange',\n};\n\n/**\n * @typedef {'propertychange'} Types\n */\n","/**\n * @module ol/Disposable\n */\n\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nclass Disposable {\n constructor() {\n /**\n * The object has already been disposed.\n * @type {boolean}\n * @protected\n */\n this.disposed = false;\n }\n\n /**\n * Clean up.\n */\n dispose() {\n if (!this.disposed) {\n this.disposed = true;\n this.disposeInternal();\n }\n }\n\n /**\n * Extension point for disposable objects.\n * @protected\n */\n disposeInternal() {}\n}\n\nexport default Disposable;\n","/**\n * @module ol/array\n */\n\n/**\n * Performs a binary search on the provided sorted list and returns the index of the item if found. If it can't be found it'll return -1.\n * https://github.com/darkskyapp/binary-search\n *\n * @param {Array<*>} haystack Items to search through.\n * @param {*} needle The item to look for.\n * @param {Function} [comparator] Comparator function.\n * @return {number} The index of the item if found, -1 if not.\n */\nexport function binarySearch(haystack, needle, comparator) {\n let mid, cmp;\n comparator = comparator || ascending;\n let low = 0;\n let high = haystack.length;\n let found = false;\n\n while (low < high) {\n /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n * to double (which gives the wrong results). */\n mid = low + ((high - low) >> 1);\n cmp = +comparator(haystack[mid], needle);\n\n if (cmp < 0.0) {\n /* Too low. */\n low = mid + 1;\n } else {\n /* Key found or too high */\n high = mid;\n found = !cmp;\n }\n }\n\n /* Key not found. */\n return found ? low : ~low;\n}\n\n/**\n * Compare function sorting arrays in ascending order. Safe to use for numeric values.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is less than, equal to, or greater than the second.\n */\nexport function ascending(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\n/**\n * Compare function sorting arrays in descending order. Safe to use for numeric values.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is greater than, equal to, or less than the second.\n */\nexport function descending(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n}\n\n/**\n * {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution} can use a function\n * of this type to determine which nearest resolution to use.\n *\n * This function takes a `{number}` representing a value between two array entries,\n * a `{number}` representing the value of the nearest higher entry and\n * a `{number}` representing the value of the nearest lower entry\n * as arguments and returns a `{number}`. If a negative number or zero is returned\n * the lower value will be used, if a positive number is returned the higher value\n * will be used.\n * @typedef {function(number, number, number): number} NearestDirectionFunction\n * @api\n */\n\n/**\n * @param {Array} arr Array in descending order.\n * @param {number} target Target.\n * @param {number|NearestDirectionFunction} direction\n * 0 means return the nearest,\n * > 0 means return the largest nearest,\n * < 0 means return the smallest nearest.\n * @return {number} Index.\n */\nexport function linearFindNearest(arr, target, direction) {\n if (arr[0] <= target) {\n return 0;\n }\n\n const n = arr.length;\n if (target <= arr[n - 1]) {\n return n - 1;\n }\n\n if (typeof direction === 'function') {\n for (let i = 1; i < n; ++i) {\n const candidate = arr[i];\n if (candidate === target) {\n return i;\n }\n if (candidate < target) {\n if (direction(target, arr[i - 1], candidate) > 0) {\n return i - 1;\n }\n return i;\n }\n }\n return n - 1;\n }\n\n if (direction > 0) {\n for (let i = 1; i < n; ++i) {\n if (arr[i] < target) {\n return i - 1;\n }\n }\n return n - 1;\n }\n\n if (direction < 0) {\n for (let i = 1; i < n; ++i) {\n if (arr[i] <= target) {\n return i;\n }\n }\n return n - 1;\n }\n\n for (let i = 1; i < n; ++i) {\n if (arr[i] == target) {\n return i;\n }\n if (arr[i] < target) {\n if (arr[i - 1] - target < target - arr[i]) {\n return i - 1;\n }\n return i;\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 const tmp = arr[begin];\n arr[begin] = arr[end];\n arr[end] = tmp;\n ++begin;\n --end;\n }\n}\n\n/**\n * @param {Array} arr The array to modify.\n * @param {!Array|VALUE} data The elements or arrays of elements to add to arr.\n * @template VALUE\n */\nexport function extend(arr, data) {\n const extension = Array.isArray(data) ? data : [data];\n const length = extension.length;\n for (let i = 0; i < length; i++) {\n arr[arr.length] = extension[i];\n }\n}\n\n/**\n * @param {Array} arr The array to modify.\n * @param {VALUE} obj The element to remove.\n * @template VALUE\n * @return {boolean} If the element was removed.\n */\nexport function remove(arr, obj) {\n const i = arr.indexOf(obj);\n const found = i > -1;\n if (found) {\n arr.splice(i, 1);\n }\n return found;\n}\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 const len1 = arr1.length;\n if (len1 !== arr2.length) {\n return false;\n }\n for (let i = 0; i < len1; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Sort the passed array such that the relative order of equal elements is preserved.\n * See https://en.wikipedia.org/wiki/Sorting_algorithm#Stability for details.\n * @param {Array<*>} arr The array to sort (modifies original).\n * @param {!function(*, *): number} compareFnc Comparison function.\n * @api\n */\nexport function stableSort(arr, compareFnc) {\n const length = arr.length;\n const tmp = Array(arr.length);\n let i;\n for (i = 0; i < length; i++) {\n tmp[i] = {index: i, value: arr[i]};\n }\n tmp.sort(function (a, b) {\n return compareFnc(a.value, b.value) || a.index - b.index;\n });\n for (i = 0; i < arr.length; i++) {\n arr[i] = tmp[i].value;\n }\n}\n\n/**\n * @param {Array<*>} arr The array to test.\n * @param {Function} [func] Comparison function.\n * @param {boolean} [strict] Strictly sorted (default false).\n * @return {boolean} Return index.\n */\nexport function isSorted(arr, func, strict) {\n const compare = func || ascending;\n return arr.every(function (currentVal, index) {\n if (index === 0) {\n return true;\n }\n const res = compare(arr[index - 1], currentVal);\n return !(res > 0 || (strict && res === 0));\n });\n}\n","/**\n * @module ol/functions\n */\n\nimport {equals as arrayEquals} from './array.js';\n\n/**\n * Always returns true.\n * @return {boolean} true.\n */\nexport function TRUE() {\n return true;\n}\n\n/**\n * Always returns false.\n * @return {boolean} false.\n */\nexport function FALSE() {\n return false;\n}\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/**\n * Wrap a function in another function that remembers the last return. If the\n * returned function is called twice in a row with the same arguments and the same\n * this object, it will return the value from the first call in the second call.\n *\n * @param {function(...any): ReturnType} fn The function to memoize.\n * @return {function(...any): ReturnType} The memoized function.\n * @template ReturnType\n */\nexport function memoizeOne(fn) {\n let called = false;\n\n /** @type {ReturnType} */\n let lastResult;\n\n /** @type {Array} */\n let lastArgs;\n\n let lastThis;\n\n return function () {\n const nextArgs = Array.prototype.slice.call(arguments);\n if (!called || this !== lastThis || !arrayEquals(nextArgs, lastArgs)) {\n called = true;\n lastThis = this;\n lastArgs = nextArgs;\n lastResult = fn.apply(this, arguments);\n }\n return lastResult;\n };\n}\n\n/**\n * @template T\n * @param {function(): (T | Promise)} getter A function that returns a value or a promise for a value.\n * @return {Promise} A promise for the value.\n */\nexport function toPromise(getter) {\n function promiseGetter() {\n let value;\n try {\n value = getter();\n } catch (err) {\n return Promise.reject(err);\n }\n if (value instanceof Promise) {\n return value;\n }\n return Promise.resolve(value);\n }\n return promiseGetter();\n}\n","/**\n * @module ol/obj\n */\n\n/**\n * Removes all properties from an object.\n * @param {Object} object The object to clear.\n */\nexport function clear(object) {\n for (const property in object) {\n delete object[property];\n }\n}\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 let property;\n for (property in object) {\n return false;\n }\n return !property;\n}\n","/**\n * @module ol/events/Target\n */\nimport Disposable from '../Disposable.js';\nimport Event from './Event.js';\nimport {VOID} from '../functions.js';\nimport {clear} from '../obj.js';\n\n/**\n * @typedef {EventTarget|Target} EventTargetLike\n */\n\n/**\n * @classdesc\n * A simplified implementation of the W3C DOM Level 2 EventTarget interface.\n * See https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.\n *\n * There are two important simplifications compared to the specification:\n *\n * 1. The handling of `useCapture` in `addEventListener` and\n * `removeEventListener`. There is no real capture model.\n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.\n * There is no event target hierarchy. When a listener calls\n * `stopPropagation` or `preventDefault` on an event object, it means that no\n * more listeners after this one will be called. Same as when the listener\n * returns false.\n */\nclass Target extends Disposable {\n /**\n * @param {*} [target] Default event target for dispatched events.\n */\n constructor(target) {\n super();\n\n /**\n * @private\n * @type {*}\n */\n this.eventTarget_ = target;\n\n /**\n * @private\n * @type {Object|null}\n */\n this.pendingRemovals_ = null;\n\n /**\n * @private\n * @type {Object|null}\n */\n this.dispatching_ = null;\n\n /**\n * @private\n * @type {Object>|null}\n */\n this.listeners_ = null;\n }\n\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n addEventListener(type, listener) {\n if (!type || !listener) {\n return;\n }\n const listeners = this.listeners_ || (this.listeners_ = {});\n const listenersForType = listeners[type] || (listeners[type] = []);\n if (!listenersForType.includes(listener)) {\n listenersForType.push(listener);\n }\n }\n\n /**\n * Dispatches an event and calls all listeners listening for events\n * of this type. The event parameter can either be a string or an\n * Object with a `type` property.\n *\n * @param {import(\"./Event.js\").default|string} event Event object.\n * @return {boolean|undefined} `false` if anyone called preventDefault on the\n * event object or if any of the listeners returned false.\n * @api\n */\n dispatchEvent(event) {\n const isString = typeof event === 'string';\n const type = isString ? event : event.type;\n const listeners = this.listeners_ && this.listeners_[type];\n if (!listeners) {\n return;\n }\n\n const evt = isString ? new Event(event) : /** @type {Event} */ (event);\n if (!evt.target) {\n evt.target = this.eventTarget_ || this;\n }\n const dispatching = this.dispatching_ || (this.dispatching_ = {});\n const pendingRemovals =\n this.pendingRemovals_ || (this.pendingRemovals_ = {});\n if (!(type in dispatching)) {\n dispatching[type] = 0;\n pendingRemovals[type] = 0;\n }\n ++dispatching[type];\n let propagate;\n for (let i = 0, ii = listeners.length; i < ii; ++i) {\n if ('handleEvent' in listeners[i]) {\n propagate = /** @type {import(\"../events.js\").ListenerObject} */ (\n listeners[i]\n ).handleEvent(evt);\n } else {\n propagate = /** @type {import(\"../events.js\").ListenerFunction} */ (\n listeners[i]\n ).call(this, evt);\n }\n if (propagate === false || evt.propagationStopped) {\n propagate = false;\n break;\n }\n }\n if (--dispatching[type] === 0) {\n let pr = pendingRemovals[type];\n delete pendingRemovals[type];\n while (pr--) {\n this.removeEventListener(type, VOID);\n }\n delete dispatching[type];\n }\n return propagate;\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n this.listeners_ && clear(this.listeners_);\n }\n\n /**\n * Get the listeners for a specified event type. Listeners are returned in the\n * order that they will be called in.\n *\n * @param {string} type Type.\n * @return {Array|undefined} Listeners.\n */\n getListeners(type) {\n return (this.listeners_ && this.listeners_[type]) || undefined;\n }\n\n /**\n * @param {string} [type] Type. If not provided,\n * `true` will be returned if this event target has any listeners.\n * @return {boolean} Has listeners.\n */\n hasListener(type) {\n if (!this.listeners_) {\n return false;\n }\n return type\n ? type in this.listeners_\n : Object.keys(this.listeners_).length > 0;\n }\n\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n removeEventListener(type, listener) {\n if (!this.listeners_) {\n return;\n }\n const listeners = this.listeners_[type];\n if (!listeners) {\n return;\n }\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n if (this.pendingRemovals_ && type in this.pendingRemovals_) {\n // make listener a no-op, and remove later in #dispatchEvent()\n listeners[index] = VOID;\n ++this.pendingRemovals_[type];\n } else {\n listeners.splice(index, 1);\n if (listeners.length === 0) {\n delete this.listeners_[type];\n }\n }\n }\n }\n}\n\nexport default Target;\n","/**\n * @module ol/events/EventType\n */\n\n/**\n * @enum {string}\n * @const\n */\nexport default {\n /**\n * Generic change event. Triggered when the revision counter is increased.\n * @event module:ol/events/Event~BaseEvent#change\n * @api\n */\n CHANGE: 'change',\n\n /**\n * Generic error event. Triggered when an error occurs.\n * @event module:ol/events/Event~BaseEvent#error\n * @api\n */\n ERROR: 'error',\n\n BLUR: 'blur',\n CLEAR: 'clear',\n CONTEXTMENU: 'contextmenu',\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n DRAGENTER: 'dragenter',\n DRAGOVER: 'dragover',\n DROP: 'drop',\n FOCUS: 'focus',\n KEYDOWN: 'keydown',\n KEYPRESS: 'keypress',\n LOAD: 'load',\n RESIZE: 'resize',\n TOUCHMOVE: 'touchmove',\n WHEEL: 'wheel',\n};\n","/**\n * @module ol/events\n */\nimport {clear} from './obj.js';\n\n/**\n * Key to use with {@link module:ol/Observable.unByKey}.\n * @typedef {Object} EventsKey\n * @property {ListenerFunction} listener Listener.\n * @property {import(\"./events/Target.js\").EventTargetLike} target Target.\n * @property {string} type Type.\n * @api\n */\n\n/**\n * Listener function. This function is called with an event object as argument.\n * When the function returns `false`, event propagation will stop.\n *\n * @typedef {function((Event|import(\"./events/Event.js\").default)): (void|boolean)} ListenerFunction\n * @api\n */\n\n/**\n * @typedef {Object} ListenerObject\n * @property {ListenerFunction} handleEvent HandleEvent listener function.\n */\n\n/**\n * @typedef {ListenerFunction|ListenerObject} Listener\n */\n\n/**\n * Registers an event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` to a `this` object, and returns\n * a key for use with {@link module:ol/events.unlistenByKey}.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object} [thisArg] Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @param {boolean} [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, thisArg, once) {\n if (thisArg && thisArg !== target) {\n listener = listener.bind(thisArg);\n }\n if (once) {\n const originalListener = listener;\n listener = function () {\n target.removeEventListener(type, listener);\n originalListener.apply(this, arguments);\n };\n }\n const eventsKey = {\n target: target,\n type: type,\n listener: listener,\n };\n target.addEventListener(type, listener);\n return eventsKey;\n}\n\n/**\n * Registers a one-off event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` as self-unregistering listener\n * to a `this` object, and returns a key for use with\n * {@link module:ol/events.unlistenByKey} in case the listener needs to be\n * unregistered before it is called.\n *\n * When {@link module:ol/events.listen} is called with the same arguments after this\n * function, the self-unregistering listener will be turned into a permanent\n * listener.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object} [thisArg] Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @return {EventsKey} Key for unlistenByKey.\n */\nexport function listenOnce(target, type, listener, thisArg) {\n return listen(target, type, listener, thisArg, true);\n}\n\n/**\n * Unregisters event listeners on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * The argument passed to this function is the key returned from\n * {@link module:ol/events.listen} or {@link module:ol/events.listenOnce}.\n *\n * @param {EventsKey} key The key.\n */\nexport function unlistenByKey(key) {\n if (key && key.target) {\n key.target.removeEventListener(key.type, key.listener);\n clear(key);\n }\n}\n","/**\n * @module ol/Observable\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport {listen, listenOnce, unlistenByKey} from './events.js';\n\n/***\n * @template {string} Type\n * @template {Event|import(\"./events/Event.js\").default} EventClass\n * @template Return\n * @typedef {(type: Type, listener: (event: EventClass) => ?) => Return} OnSignature\n */\n\n/***\n * @template {string} Type\n * @template Return\n * @typedef {(type: Type[], listener: (event: Event|import(\"./events/Event\").default) => ?) => Return extends void ? void : Return[]} CombinedOnSignature\n */\n\n/**\n * @typedef {'change'|'error'} EventTypes\n */\n\n/***\n * @template Return\n * @typedef {OnSignature & CombinedOnSignature} ObservableOnSignature\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * An event target providing convenient methods for listener registration\n * and unregistration. A generic `change` event is always available through\n * {@link module:ol/Observable~Observable#changed}.\n *\n * @fires import(\"./events/Event.js\").default\n * @api\n */\nclass Observable extends EventTarget {\n constructor() {\n super();\n\n this.on =\n /** @type {ObservableOnSignature} */ (\n this.onInternal\n );\n\n this.once =\n /** @type {ObservableOnSignature} */ (\n this.onceInternal\n );\n\n this.un = /** @type {ObservableOnSignature} */ (this.unInternal);\n\n /**\n * @private\n * @type {number}\n */\n this.revision_ = 0;\n }\n\n /**\n * Increases the revision counter and dispatches a 'change' event.\n * @api\n */\n changed() {\n ++this.revision_;\n this.dispatchEvent(EventType.CHANGE);\n }\n\n /**\n * Get the version number for this object. Each time the object is modified,\n * its version number will be incremented.\n * @return {number} Revision.\n * @api\n */\n getRevision() {\n return this.revision_;\n }\n\n /**\n * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @return {import(\"./events.js\").EventsKey|Array} Event key.\n * @protected\n */\n onInternal(type, listener) {\n if (Array.isArray(type)) {\n const len = type.length;\n const keys = new Array(len);\n for (let i = 0; i < len; ++i) {\n keys[i] = listen(this, type[i], listener);\n }\n return keys;\n }\n return listen(this, /** @type {string} */ (type), listener);\n }\n\n /**\n * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @return {import(\"./events.js\").EventsKey|Array} Event key.\n * @protected\n */\n onceInternal(type, listener) {\n let key;\n if (Array.isArray(type)) {\n const len = type.length;\n key = new Array(len);\n for (let i = 0; i < len; ++i) {\n key[i] = listenOnce(this, type[i], listener);\n }\n } else {\n key = listenOnce(this, /** @type {string} */ (type), listener);\n }\n /** @type {Object} */ (listener).ol_key = key;\n return key;\n }\n\n /**\n * Unlisten for a certain type of event.\n * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @protected\n */\n unInternal(type, listener) {\n const key = /** @type {Object} */ (listener).ol_key;\n if (key) {\n unByKey(key);\n } else if (Array.isArray(type)) {\n for (let i = 0, ii = type.length; i < ii; ++i) {\n this.removeEventListener(type[i], listener);\n }\n } else {\n this.removeEventListener(type, listener);\n }\n }\n}\n\n/**\n * Listen for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\nObservable.prototype.on;\n\n/**\n * Listen once for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\nObservable.prototype.once;\n\n/**\n * Unlisten for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @api\n */\nObservable.prototype.un;\n\n/**\n * Removes an event listener using the key returned by `on()` or `once()`.\n * @param {import(\"./events.js\").EventsKey|Array} key The key returned by `on()`\n * or `once()` (or an array of keys).\n * @api\n */\nexport function unByKey(key) {\n if (Array.isArray(key)) {\n for (let i = 0, ii = key.length; i < ii; ++i) {\n unlistenByKey(key[i]);\n }\n } else {\n unlistenByKey(/** @type {import(\"./events.js\").EventsKey} */ (key));\n }\n}\n\nexport default Observable;\n","/**\n * @module ol/util\n */\n\n/**\n * @return {never} Any return.\n */\nexport function abstract() {\n throw new Error('Unimplemented abstract method.');\n}\n\n/**\n * Counter for getUid.\n * @type {number}\n * @private\n */\nlet uidCounter_ = 0;\n\n/**\n * Gets a unique ID for an object. This mutates the object so that further calls\n * with the same object as a parameter returns the same value. Unique IDs are generated\n * as a strictly increasing sequence. Adapted from goog.getUid.\n *\n * @param {Object} obj The object to get the unique ID for.\n * @return {string} The unique ID for the object.\n * @api\n */\nexport function getUid(obj) {\n return obj.ol_uid || (obj.ol_uid = String(++uidCounter_));\n}\n\n/**\n * OpenLayers version.\n * @type {string}\n */\nexport const VERSION = '8.2.0';\n","/**\n * @module ol/Object\n */\nimport Event from './events/Event.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport Observable from './Observable.js';\nimport {getUid} from './util.js';\nimport {isEmpty} from './obj.js';\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Object~BaseObject} instances are instances of this type.\n */\nexport class ObjectEvent extends Event {\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 constructor(type, key, oldValue) {\n super(type);\n\n /**\n * The name of the property whose value is changing.\n * @type {string}\n * @api\n */\n this.key = key;\n\n /**\n * The old value. To get the new value use `e.target.get(e.key)` where\n * `e` is the event object.\n * @type {*}\n * @api\n */\n this.oldValue = oldValue;\n }\n}\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} ObjectOnSignature\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Most non-trivial classes inherit from this.\n *\n * This extends {@link module:ol/Observable~Observable} with observable\n * properties, where each property is observable as well as the object as a\n * whole.\n *\n * Classes that inherit from this have pre-defined properties, to which you can\n * add your owns. The pre-defined properties are listed in this documentation as\n * 'Observable Properties', and have their own accessors; for example,\n * {@link module:ol/Map~Map} has a `target` property, accessed with\n * `getTarget()` and changed with `setTarget()`. Not all properties are however\n * settable. There are also general-purpose accessors `get()` and `set()`. For\n * example, `get('target')` is equivalent to `getTarget()`.\n *\n * The `set` accessors trigger a change event, and you can monitor this by\n * registering a listener. For example, {@link module:ol/View~View} has a\n * `center` property, so `view.on('change:center', function(evt) {...});` would\n * call the function whenever the value of the center property changes. Within\n * the function, `evt.target` would be the view, so `evt.target.getCenter()`\n * would return the new center.\n *\n * You can add your own observable properties with\n * `object.set('prop', 'value')`, and retrieve that with `object.get('prop')`.\n * You can listen for changes on that property value with\n * `object.on('change:prop', listener)`. You can get a list of all\n * properties with {@link module:ol/Object~BaseObject#getProperties}.\n *\n * Note that the observable properties are separate from standard JS properties.\n * You can, for example, give your map object a title with\n * `map.title='New title'` and with `map.set('title', 'Another title')`. The\n * first will be a `hasOwnProperty`; the second will appear in\n * `getProperties()`. Only the second is observable.\n *\n * Properties can be deleted by using the unset method. E.g.\n * object.unset('foo').\n *\n * @fires ObjectEvent\n * @api\n */\nclass BaseObject extends Observable {\n /**\n * @param {Object} [values] An object with key-value pairs.\n */\n constructor(values) {\n super();\n\n /***\n * @type {ObjectOnSignature}\n */\n this.on;\n\n /***\n * @type {ObjectOnSignature}\n */\n this.once;\n\n /***\n * @type {ObjectOnSignature}\n */\n this.un;\n\n // Call {@link module:ol/util.getUid} to ensure that the order of objects' ids is\n // the same as the order in which they were created. This also helps to\n // ensure that object properties are always added in the same order, which\n // helps many JavaScript engines generate faster code.\n getUid(this);\n\n /**\n * @private\n * @type {Object|null}\n */\n this.values_ = null;\n\n if (values !== undefined) {\n this.setProperties(values);\n }\n }\n\n /**\n * Gets a value.\n * @param {string} key Key name.\n * @return {*} Value.\n * @api\n */\n get(key) {\n let value;\n if (this.values_ && this.values_.hasOwnProperty(key)) {\n value = this.values_[key];\n }\n return value;\n }\n\n /**\n * Get a list of object property names.\n * @return {Array} List of property names.\n * @api\n */\n getKeys() {\n return (this.values_ && Object.keys(this.values_)) || [];\n }\n\n /**\n * Get an object of all property names and values.\n * @return {Object} Object.\n * @api\n */\n getProperties() {\n return (this.values_ && Object.assign({}, this.values_)) || {};\n }\n\n /**\n * Get an object of all property names and values.\n * @return {Object?} Object.\n */\n getPropertiesInternal() {\n return this.values_;\n }\n\n /**\n * @return {boolean} The object has properties.\n */\n hasProperties() {\n return !!this.values_;\n }\n\n /**\n * @param {string} key Key name.\n * @param {*} oldValue Old value.\n */\n notify(key, oldValue) {\n let eventType;\n eventType = `change:${key}`;\n if (this.hasListener(eventType)) {\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n }\n eventType = ObjectEventType.PROPERTYCHANGE;\n if (this.hasListener(eventType)) {\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n }\n }\n\n /**\n * @param {string} key Key name.\n * @param {import(\"./events.js\").Listener} listener Listener.\n */\n addChangeListener(key, listener) {\n this.addEventListener(`change:${key}`, listener);\n }\n\n /**\n * @param {string} key Key name.\n * @param {import(\"./events.js\").Listener} listener Listener.\n */\n removeChangeListener(key, listener) {\n this.removeEventListener(`change:${key}`, listener);\n }\n\n /**\n * Sets a value.\n * @param {string} key Key name.\n * @param {*} value Value.\n * @param {boolean} [silent] Update without triggering an event.\n * @api\n */\n set(key, value, silent) {\n const values = this.values_ || (this.values_ = {});\n if (silent) {\n values[key] = value;\n } else {\n const oldValue = values[key];\n values[key] = value;\n if (oldValue !== value) {\n this.notify(key, oldValue);\n }\n }\n }\n\n /**\n * Sets a collection of key-value pairs. Note that this changes any existing\n * properties and adds new ones (it does not remove any existing properties).\n * @param {Object} values Values.\n * @param {boolean} [silent] Update without triggering an event.\n * @api\n */\n setProperties(values, silent) {\n for (const key in values) {\n this.set(key, values[key], silent);\n }\n }\n\n /**\n * Apply any properties from another object without triggering events.\n * @param {BaseObject} source The source object.\n * @protected\n */\n applyProperties(source) {\n if (!source.values_) {\n return;\n }\n Object.assign(this.values_ || (this.values_ = {}), source.values_);\n }\n\n /**\n * Unsets a property.\n * @param {string} key Key name.\n * @param {boolean} [silent] Unset without triggering an event.\n * @api\n */\n unset(key, silent) {\n if (this.values_ && key in this.values_) {\n const oldValue = this.values_[key];\n delete this.values_[key];\n if (isEmpty(this.values_)) {\n this.values_ = null;\n }\n if (!silent) {\n this.notify(key, oldValue);\n }\n }\n }\n}\n\nexport default BaseObject;\n","/**\n * @module ol/asserts\n */\n\n/**\n * @param {*} assertion Assertion we expected to be truthy.\n * @param {string} errorMessage Error message.\n */\nexport function assert(assertion, errorMessage) {\n if (!assertion) {\n throw new Error(errorMessage);\n }\n}\n","/**\n * @module ol/Feature\n */\nimport BaseObject from './Object.js';\nimport EventType from './events/EventType.js';\nimport {assert} from './asserts.js';\nimport {listen, unlistenByKey} from './events.js';\n\n/**\n * @typedef {typeof Feature|typeof import(\"./render/Feature.js\").default} FeatureClass\n */\n\n/**\n * @typedef {Feature|import(\"./render/Feature.js\").default} FeatureLike\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} FeatureOnSignature\n */\n\n/***\n * @template {import(\"./geom/Geometry.js\").default} [Geometry=import(\"./geom/Geometry.js\").default]\n * @typedef {Object & { geometry?: Geometry }} ObjectWithGeometry\n */\n\n/**\n * @classdesc\n * A vector object for geographic features with a geometry and other\n * attribute properties, similar to the features in vector file formats like\n * GeoJSON.\n *\n * Features can be styled individually with `setStyle`; otherwise they use the\n * style of their vector layer.\n *\n * Note that attribute properties are set as {@link module:ol/Object~BaseObject} properties on\n * the feature object, so they are observable, and have get/set accessors.\n *\n * Typically, a feature has a single geometry property. You can set the\n * geometry using the `setGeometry` method and get it with `getGeometry`.\n * It is possible to store more than one geometry on a feature using attribute\n * properties. By default, the geometry used for rendering is identified by\n * the property name `geometry`. If you want to use another geometry property\n * for rendering, use the `setGeometryName` method to change the attribute\n * property associated with the geometry for the feature. For example:\n *\n * ```js\n *\n * import Feature from 'ol/Feature.js';\n * import Polygon from 'ol/geom/Polygon.js';\n * import Point from 'ol/geom/Point.js';\n *\n * const feature = new Feature({\n * geometry: new Polygon(polyCoords),\n * labelPoint: new Point(labelCoords),\n * name: 'My Polygon',\n * });\n *\n * // get the polygon geometry\n * const poly = feature.getGeometry();\n *\n * // Render the feature as a point using the coordinates from labelPoint\n * feature.setGeometryName('labelPoint');\n *\n * // get the point geometry\n * const point = feature.getGeometry();\n * ```\n *\n * @api\n * @template {import(\"./geom/Geometry.js\").default} [Geometry=import(\"./geom/Geometry.js\").default]\n */\nclass Feature extends BaseObject {\n /**\n * @param {Geometry|ObjectWithGeometry} [geometryOrProperties]\n * You may pass a Geometry object directly, or an object literal containing\n * properties. If you pass an object literal, you may include a Geometry\n * associated with a `geometry` key.\n */\n constructor(geometryOrProperties) {\n super();\n\n /***\n * @type {FeatureOnSignature}\n */\n this.on;\n\n /***\n * @type {FeatureOnSignature}\n */\n this.once;\n\n /***\n * @type {FeatureOnSignature}\n */\n this.un;\n\n /**\n * @private\n * @type {number|string|undefined}\n */\n this.id_ = undefined;\n\n /**\n * @type {string}\n * @private\n */\n this.geometryName_ = 'geometry';\n\n /**\n * User provided style.\n * @private\n * @type {import(\"./style/Style.js\").StyleLike}\n */\n this.style_ = null;\n\n /**\n * @private\n * @type {import(\"./style/Style.js\").StyleFunction|undefined}\n */\n this.styleFunction_ = undefined;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.geometryChangeKey_ = null;\n\n this.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n\n if (geometryOrProperties) {\n if (\n typeof (\n /** @type {?} */ (geometryOrProperties).getSimplifiedGeometry\n ) === 'function'\n ) {\n const geometry = /** @type {Geometry} */ (geometryOrProperties);\n this.setGeometry(geometry);\n } else {\n /** @type {Object} */\n const properties = geometryOrProperties;\n this.setProperties(properties);\n }\n }\n }\n\n /**\n * Clone this feature. If the original feature has a geometry it\n * is also cloned. The feature id is not set in the clone.\n * @return {Feature} The clone.\n * @api\n */\n clone() {\n const clone = /** @type {Feature} */ (\n new Feature(this.hasProperties() ? this.getProperties() : null)\n );\n clone.setGeometryName(this.getGeometryName());\n const geometry = this.getGeometry();\n if (geometry) {\n clone.setGeometry(/** @type {Geometry} */ (geometry.clone()));\n }\n const style = this.getStyle();\n if (style) {\n clone.setStyle(style);\n }\n return clone;\n }\n\n /**\n * Get the feature's default geometry. A feature may have any number of named\n * geometries. The \"default\" geometry (the one that is rendered by default) is\n * set when calling {@link module:ol/Feature~Feature#setGeometry}.\n * @return {Geometry|undefined} The default geometry for the feature.\n * @api\n * @observable\n */\n getGeometry() {\n return /** @type {Geometry|undefined} */ (this.get(this.geometryName_));\n }\n\n /**\n * Get the feature identifier. This is a stable identifier for the feature and\n * is either set when reading data from a remote source or set explicitly by\n * calling {@link module:ol/Feature~Feature#setId}.\n * @return {number|string|undefined} Id.\n * @api\n */\n getId() {\n return this.id_;\n }\n\n /**\n * Get the name of the feature's default geometry. By default, the default\n * geometry is named `geometry`.\n * @return {string} Get the property name associated with the default geometry\n * for this feature.\n * @api\n */\n getGeometryName() {\n return this.geometryName_;\n }\n\n /**\n * Get the feature's style. Will return what was provided to the\n * {@link module:ol/Feature~Feature#setStyle} method.\n * @return {import(\"./style/Style.js\").StyleLike|undefined} The feature style.\n * @api\n */\n getStyle() {\n return this.style_;\n }\n\n /**\n * Get the feature's style function.\n * @return {import(\"./style/Style.js\").StyleFunction|undefined} Return a function\n * representing the current style of this feature.\n * @api\n */\n getStyleFunction() {\n return this.styleFunction_;\n }\n\n /**\n * @private\n */\n handleGeometryChange_() {\n this.changed();\n }\n\n /**\n * @private\n */\n handleGeometryChanged_() {\n if (this.geometryChangeKey_) {\n unlistenByKey(this.geometryChangeKey_);\n this.geometryChangeKey_ = null;\n }\n const geometry = this.getGeometry();\n if (geometry) {\n this.geometryChangeKey_ = listen(\n geometry,\n EventType.CHANGE,\n this.handleGeometryChange_,\n this\n );\n }\n this.changed();\n }\n\n /**\n * Set the default geometry for the feature. This will update the property\n * with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.\n * @param {Geometry|undefined} geometry The new geometry.\n * @api\n * @observable\n */\n setGeometry(geometry) {\n this.set(this.geometryName_, geometry);\n }\n\n /**\n * Set the style for the feature to override the layer style. This can be a\n * single style object, an array of styles, or a function that takes a\n * resolution and returns an array of styles. To unset the feature style, call\n * `setStyle()` without arguments or a falsey value.\n * @param {import(\"./style/Style.js\").StyleLike} [style] Style for this feature.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n setStyle(style) {\n this.style_ = style;\n this.styleFunction_ = !style ? undefined : createStyleFunction(style);\n this.changed();\n }\n\n /**\n * Set the feature id. The feature id is considered stable and may be used when\n * requesting features or comparing identifiers returned from a remote source.\n * The feature id can be used with the\n * {@link module:ol/source/Vector~VectorSource#getFeatureById} method.\n * @param {number|string|undefined} id The feature id.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n setId(id) {\n this.id_ = id;\n this.changed();\n }\n\n /**\n * Set the property name to be used when getting the feature's default geometry.\n * When calling {@link module:ol/Feature~Feature#getGeometry}, the value of the property with\n * this name will be returned.\n * @param {string} name The property name of the default geometry.\n * @api\n */\n setGeometryName(name) {\n this.removeChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.geometryName_ = name;\n this.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.handleGeometryChanged_();\n }\n}\n\n/**\n * Convert the provided object into a feature style function. Functions passed\n * through unchanged. Arrays of Style or single style objects wrapped\n * in a new feature style function.\n * @param {!import(\"./style/Style.js\").StyleFunction|!Array|!import(\"./style/Style.js\").default} obj\n * A feature style function, a single style, or an array of styles.\n * @return {import(\"./style/Style.js\").StyleFunction} A style function.\n */\nexport function createStyleFunction(obj) {\n if (typeof obj === 'function') {\n return obj;\n }\n /**\n * @type {Array}\n */\n let styles;\n if (Array.isArray(obj)) {\n styles = obj;\n } else {\n assert(\n typeof (/** @type {?} */ (obj).getZIndex) === 'function',\n 'Expected an `ol/style/Style` or an array of `ol/style/Style.js`'\n );\n const style = /** @type {import(\"./style/Style.js\").default} */ (obj);\n styles = [style];\n }\n return function () {\n return styles;\n };\n}\nexport default Feature;\n","/**\n * @module ol/CollectionEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when an item is added to the collection.\n * @event module:ol/Collection.CollectionEvent#add\n * @api\n */\n ADD: 'add',\n /**\n * Triggered when an item is removed from the collection.\n * @event module:ol/Collection.CollectionEvent#remove\n * @api\n */\n REMOVE: 'remove',\n};\n","/**\n * @module ol/Collection\n */\nimport BaseObject from './Object.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport Event from './events/Event.js';\n\n/**\n * @enum {string}\n * @private\n */\nconst Property = {\n LENGTH: 'length',\n};\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Collection~Collection} instances are instances of this\n * type.\n * @template T\n */\nexport class CollectionEvent extends Event {\n /**\n * @param {import(\"./CollectionEventType.js\").default} type Type.\n * @param {T} element Element.\n * @param {number} index The index of the added or removed element.\n */\n constructor(type, element, index) {\n super(type);\n\n /**\n * The element that is added to or removed from the collection.\n * @type {T}\n * @api\n */\n this.element = element;\n\n /**\n * The index of the added or removed element.\n * @type {number}\n * @api\n */\n this.index = index;\n }\n}\n\n/***\n * @template T\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature<'add'|'remove', CollectionEvent, Return> &\n * import(\"./Observable\").CombinedOnSignature} CollectionOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {boolean} [unique=false] Disallow the same item from being added to\n * the collection twice.\n */\n\n/**\n * @classdesc\n * An expanded version of standard JS Array, adding convenience methods for\n * manipulation. Add and remove changes to the Collection trigger a Collection\n * event. Note that this does not cover changes to the objects _within_ the\n * Collection; they trigger events on the appropriate object, not on the\n * Collection as a whole.\n *\n * @fires CollectionEvent\n *\n * @template T\n * @api\n */\nclass Collection extends BaseObject {\n /**\n * @param {Array} [array] Array.\n * @param {Options} [options] Collection options.\n */\n constructor(array, options) {\n super();\n\n /***\n * @type {CollectionOnSignature}\n */\n this.on;\n\n /***\n * @type {CollectionOnSignature}\n */\n this.once;\n\n /***\n * @type {CollectionOnSignature}\n */\n this.un;\n\n options = options || {};\n\n /**\n * @private\n * @type {boolean}\n */\n this.unique_ = !!options.unique;\n\n /**\n * @private\n * @type {!Array}\n */\n this.array_ = array ? array : [];\n\n if (this.unique_) {\n for (let i = 0, ii = this.array_.length; i < ii; ++i) {\n this.assertUnique_(this.array_[i], i);\n }\n }\n\n this.updateLength_();\n }\n\n /**\n * Remove all elements from the collection.\n * @api\n */\n clear() {\n while (this.getLength() > 0) {\n this.pop();\n }\n }\n\n /**\n * Add elements to the collection. This pushes each item in the provided array\n * to the end of the collection.\n * @param {!Array} arr Array.\n * @return {Collection} This collection.\n * @api\n */\n extend(arr) {\n for (let i = 0, ii = arr.length; i < ii; ++i) {\n this.push(arr[i]);\n }\n return this;\n }\n\n /**\n * Iterate over each element, calling the provided callback.\n * @param {function(T, number, Array): *} f The function to call\n * for every element. This function takes 3 arguments (the element, the\n * index and the array). The return value is ignored.\n * @api\n */\n forEach(f) {\n const array = this.array_;\n for (let i = 0, ii = array.length; i < ii; ++i) {\n f(array[i], i, array);\n }\n }\n\n /**\n * Get a reference to the underlying Array object. Warning: if the array\n * is mutated, no events will be dispatched by the collection, and the\n * collection's \"length\" property won't be in sync with the actual length\n * of the array.\n * @return {!Array} Array.\n * @api\n */\n getArray() {\n return this.array_;\n }\n\n /**\n * Get the element at the provided index.\n * @param {number} index Index.\n * @return {T} Element.\n * @api\n */\n item(index) {\n return this.array_[index];\n }\n\n /**\n * Get the length of this collection.\n * @return {number} The length of the array.\n * @observable\n * @api\n */\n getLength() {\n return this.get(Property.LENGTH);\n }\n\n /**\n * Insert an element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n insertAt(index, elem) {\n if (index < 0 || index > this.getLength()) {\n throw new Error('Index out of bounds: ' + index);\n }\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n this.array_.splice(index, 0, elem);\n this.updateLength_();\n this.dispatchEvent(\n new CollectionEvent(CollectionEventType.ADD, elem, index)\n );\n }\n\n /**\n * Remove the last element of the collection and return it.\n * Return `undefined` if the collection is empty.\n * @return {T|undefined} Element.\n * @api\n */\n pop() {\n return this.removeAt(this.getLength() - 1);\n }\n\n /**\n * Insert the provided element at the end of the collection.\n * @param {T} elem Element.\n * @return {number} New length of the collection.\n * @api\n */\n push(elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n const n = this.getLength();\n this.insertAt(n, elem);\n return this.getLength();\n }\n\n /**\n * Remove the first occurrence of an element from the collection.\n * @param {T} elem Element.\n * @return {T|undefined} The removed element or undefined if none found.\n * @api\n */\n remove(elem) {\n const arr = this.array_;\n for (let i = 0, ii = arr.length; i < ii; ++i) {\n if (arr[i] === elem) {\n return this.removeAt(i);\n }\n }\n return undefined;\n }\n\n /**\n * Remove the element at the provided index and return it.\n * Return `undefined` if the collection does not contain this index.\n * @param {number} index Index.\n * @return {T|undefined} Value.\n * @api\n */\n removeAt(index) {\n if (index < 0 || index >= this.getLength()) {\n return undefined;\n }\n const prev = this.array_[index];\n this.array_.splice(index, 1);\n this.updateLength_();\n this.dispatchEvent(\n /** @type {CollectionEvent} */ (\n new CollectionEvent(CollectionEventType.REMOVE, prev, index)\n )\n );\n return prev;\n }\n\n /**\n * Set the element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n setAt(index, elem) {\n const n = this.getLength();\n if (index >= n) {\n this.insertAt(index, elem);\n return;\n }\n if (index < 0) {\n throw new Error('Index out of bounds: ' + index);\n }\n if (this.unique_) {\n this.assertUnique_(elem, index);\n }\n const prev = this.array_[index];\n this.array_[index] = elem;\n this.dispatchEvent(\n /** @type {CollectionEvent} */ (\n new CollectionEvent(CollectionEventType.REMOVE, prev, index)\n )\n );\n this.dispatchEvent(\n /** @type {CollectionEvent} */ (\n new CollectionEvent(CollectionEventType.ADD, elem, index)\n )\n );\n }\n\n /**\n * @private\n */\n updateLength_() {\n this.set(Property.LENGTH, this.array_.length);\n }\n\n /**\n * @private\n * @param {T} elem Element.\n * @param {number} [except] Optional index to ignore.\n */\n assertUnique_(elem, except) {\n for (let i = 0, ii = this.array_.length; i < ii; ++i) {\n if (this.array_[i] === elem && i !== except) {\n throw new Error('Duplicate item added to a unique collection');\n }\n }\n }\n}\n\nexport default Collection;\n","/**\n * @module ol/has\n */\n\nconst ua =\n typeof navigator !== 'undefined' && typeof navigator.userAgent !== 'undefined'\n ? navigator.userAgent.toLowerCase()\n : '';\n\n/**\n * User agent string says we are dealing with Firefox as browser.\n * @type {boolean}\n */\nexport const FIREFOX = ua.includes('firefox');\n\n/**\n * User agent string says we are dealing with Safari as browser.\n * @type {boolean}\n */\nexport const SAFARI = ua.includes('safari') && !ua.includes('chrom');\n\n/**\n * https://bugs.webkit.org/show_bug.cgi?id=237906\n * @type {boolean}\n */\nexport const SAFARI_BUG_237906 =\n SAFARI &&\n (ua.includes('version/15.4') ||\n /cpu (os|iphone os) 15_4 like mac os x/.test(ua));\n\n/**\n * User agent string says we are dealing with a WebKit engine.\n * @type {boolean}\n */\nexport const WEBKIT = ua.includes('webkit') && !ua.includes('edge');\n\n/**\n * User agent string says we are dealing with a Mac as platform.\n * @type {boolean}\n */\nexport const MAC = ua.includes('macintosh');\n\n/**\n * The ratio between physical pixels and device-independent pixels\n * (dips) on the device (`window.devicePixelRatio`).\n * @const\n * @type {number}\n * @api\n */\nexport const DEVICE_PIXEL_RATIO =\n typeof devicePixelRatio !== 'undefined' ? devicePixelRatio : 1;\n\n/**\n * The execution context is a worker with OffscreenCanvas available.\n * @const\n * @type {boolean}\n */\nexport const WORKER_OFFSCREEN_CANVAS =\n typeof WorkerGlobalScope !== 'undefined' &&\n typeof OffscreenCanvas !== 'undefined' &&\n self instanceof WorkerGlobalScope; //eslint-disable-line\n\n/**\n * Image.prototype.decode() is supported.\n * @type {boolean}\n */\nexport const IMAGE_DECODE =\n typeof Image !== 'undefined' && Image.prototype.decode;\n\n/**\n * createImageBitmap() is supported.\n * @type {boolean}\n */\nexport const CREATE_IMAGE_BITMAP = typeof createImageBitmap === 'function';\n\n/**\n * @type {boolean}\n */\nexport const PASSIVE_EVENT_LISTENERS = (function () {\n let passive = false;\n try {\n const options = Object.defineProperty({}, 'passive', {\n get: function () {\n passive = true;\n },\n });\n\n // @ts-ignore Ignore invalid event type '_'\n window.addEventListener('_', null, options);\n // @ts-ignore Ignore invalid event type '_'\n window.removeEventListener('_', null, options);\n } catch (error) {\n // passive not supported\n }\n return passive;\n})();\n","/**\n * @module ol/transform\n */\nimport {WORKER_OFFSCREEN_CANVAS} from './has.js';\nimport {assert} from './asserts.js';\n\n/**\n * An array representing an affine 2d transformation for use with\n * {@link module:ol/transform} functions. The array has 6 elements.\n * @typedef {!Array} Transform\n * @api\n */\n\n/**\n * Collection of affine 2d transformation functions. The functions work on an\n * array of 6 elements. The element order is compatible with the [SVGMatrix\n * interface](https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix) and is\n * a subset (elements a to f) of a 3×3 matrix:\n * ```\n * [ a c e ]\n * [ b d f ]\n * [ 0 0 1 ]\n * ```\n */\n\n/**\n * @private\n * @type {Transform}\n */\nconst tmp_ = new Array(6);\n\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/**\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/**\n * Multiply the underlying matrices of two transforms and return the result in\n * the first transform.\n * @param {!Transform} transform1 Transform parameters of matrix 1.\n * @param {!Transform} transform2 Transform parameters of matrix 2.\n * @return {!Transform} transform1 multiplied with transform2.\n */\nexport function multiply(transform1, transform2) {\n const a1 = transform1[0];\n const b1 = transform1[1];\n const c1 = transform1[2];\n const d1 = transform1[3];\n const e1 = transform1[4];\n const f1 = transform1[5];\n const a2 = transform2[0];\n const b2 = transform2[1];\n const c2 = transform2[2];\n const d2 = transform2[3];\n const e2 = transform2[4];\n const f2 = transform2[5];\n\n transform1[0] = a1 * a2 + c1 * b2;\n transform1[1] = b1 * a2 + d1 * b2;\n transform1[2] = a1 * c2 + c1 * d2;\n transform1[3] = b1 * c2 + d1 * d2;\n transform1[4] = a1 * e2 + c1 * f2 + e1;\n transform1[5] = b1 * e2 + d1 * f2 + f1;\n\n return transform1;\n}\n\n/**\n * Set the transform components a-f on a given transform.\n * @param {!Transform} transform Transform.\n * @param {number} a The a component of the transform.\n * @param {number} b The b component of the transform.\n * @param {number} c The c component of the transform.\n * @param {number} d The d component of the transform.\n * @param {number} e The e component of the transform.\n * @param {number} f The f component of the transform.\n * @return {!Transform} Matrix with transform applied.\n */\nexport function set(transform, a, b, c, d, e, f) {\n transform[0] = a;\n transform[1] = b;\n transform[2] = c;\n transform[3] = d;\n transform[4] = e;\n transform[5] = f;\n return transform;\n}\n\n/**\n * Set transform on one matrix from another matrix.\n * @param {!Transform} transform1 Matrix to set transform to.\n * @param {!Transform} transform2 Matrix to set transform from.\n * @return {!Transform} transform1 with transform from transform2 applied.\n */\nexport function setFromArray(transform1, transform2) {\n transform1[0] = transform2[0];\n transform1[1] = transform2[1];\n transform1[2] = transform2[2];\n transform1[3] = transform2[3];\n transform1[4] = transform2[4];\n transform1[5] = transform2[5];\n return transform1;\n}\n\n/**\n * Transforms the given coordinate with the given transform returning the\n * resulting, transformed coordinate. The coordinate will be modified in-place.\n *\n * @param {Transform} transform The transformation.\n * @param {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} coordinate The coordinate to transform.\n * @return {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} return coordinate so that operations can be\n * chained together.\n */\nexport function apply(transform, coordinate) {\n const x = coordinate[0];\n const y = coordinate[1];\n coordinate[0] = transform[0] * x + transform[2] * y + transform[4];\n coordinate[1] = transform[1] * x + transform[3] * y + transform[5];\n return coordinate;\n}\n\n/**\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 const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n return multiply(transform, set(tmp_, cos, sin, -sin, cos, 0, 0));\n}\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/**\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/**\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/**\n * Creates a composite transform given an initial translation, scale, rotation, and\n * final translation (in that order only, not commutative).\n * @param {!Transform} transform The transform (will be modified in place).\n * @param {number} dx1 Initial translation x.\n * @param {number} dy1 Initial translation y.\n * @param {number} sx Scale factor x.\n * @param {number} sy Scale factor y.\n * @param {number} angle Rotation (in counter-clockwise radians).\n * @param {number} dx2 Final translation x.\n * @param {number} dy2 Final translation y.\n * @return {!Transform} The composite transform.\n */\nexport function compose(transform, dx1, dy1, sx, sy, angle, dx2, dy2) {\n const sin = Math.sin(angle);\n const cos = Math.cos(angle);\n transform[0] = sx * cos;\n transform[1] = sy * sin;\n transform[2] = -sx * sin;\n transform[3] = sy * cos;\n transform[4] = dx2 * sx * cos - dy2 * sx * sin + dx1;\n transform[5] = dx2 * sy * sin + dy2 * sy * cos + dy1;\n return transform;\n}\n\n/**\n * Creates a composite transform given an initial translation, scale, rotation, and\n * final translation (in that order only, not commutative). The resulting transform\n * string can be applied as `transform` property of an HTMLElement's style.\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 {string} The composite css transform.\n * @api\n */\nexport function composeCssTransform(dx1, dy1, sx, sy, angle, dx2, dy2) {\n return toString(compose(create(), dx1, dy1, sx, sy, angle, dx2, dy2));\n}\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/**\n * Invert the given transform.\n * @param {!Transform} target Transform to be set as the inverse of\n * the source transform.\n * @param {!Transform} source The source transform to invert.\n * @return {!Transform} The inverted (target) transform.\n */\nexport function makeInverse(target, source) {\n const det = determinant(source);\n assert(det !== 0, 'Transformation matrix cannot be inverted');\n\n const a = source[0];\n const b = source[1];\n const c = source[2];\n const d = source[3];\n const e = source[4];\n const f = source[5];\n\n target[0] = d / det;\n target[1] = -b / det;\n target[2] = -c / det;\n target[3] = a / det;\n target[4] = (c * f - d * e) / det;\n target[5] = -(a * f - b * e) / det;\n\n return target;\n}\n\n/**\n * Returns the determinant of the given matrix.\n * @param {!Transform} mat Matrix.\n * @return {number} Determinant.\n */\nexport function determinant(mat) {\n return mat[0] * mat[3] - mat[1] * mat[2];\n}\n\n/**\n * @type {HTMLElement}\n * @private\n */\nlet transformStringDiv;\n\n/**\n * A rounded string version of the transform. This can be used\n * for CSS transforms.\n * @param {!Transform} mat Matrix.\n * @return {string} The transform as a string.\n */\nexport function toString(mat) {\n const transformString = 'matrix(' + mat.join(', ') + ')';\n if (WORKER_OFFSCREEN_CANVAS) {\n return transformString;\n }\n const node =\n transformStringDiv || (transformStringDiv = document.createElement('div'));\n node.style.transform = transformString;\n return node.style.transform;\n}\n","/**\n * @module ol/extent/Relationship\n */\n\n/**\n * Relationship to an extent.\n * @enum {number}\n */\nexport default {\n UNKNOWN: 0,\n INTERSECTING: 1,\n ABOVE: 2,\n RIGHT: 4,\n BELOW: 8,\n LEFT: 16,\n};\n","/**\n * @module ol/extent\n */\nimport Relationship from './extent/Relationship.js';\n\n/**\n * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.\n * @typedef {Array} Extent\n * @api\n */\n\n/**\n * Extent corner.\n * @typedef {'bottom-left' | 'bottom-right' | 'top-left' | 'top-right'} Corner\n */\n\n/**\n * Build an extent that includes all given coordinates.\n *\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Bounding extent.\n * @api\n */\nexport function boundingExtent(coordinates) {\n const extent = createEmpty();\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n\n/**\n * @param {Array} xs Xs.\n * @param {Array} ys Ys.\n * @param {Extent} [dest] Destination extent.\n * @private\n * @return {Extent} Extent.\n */\nfunction _boundingExtentXYs(xs, ys, dest) {\n const minX = Math.min.apply(null, xs);\n const minY = Math.min.apply(null, ys);\n const maxX = Math.max.apply(null, xs);\n const maxY = Math.max.apply(null, ys);\n return createOrUpdate(minX, minY, maxX, maxY, dest);\n}\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} [dest] Extent.\n * @return {Extent} Extent.\n * @api\n */\nexport function buffer(extent, value, dest) {\n if (dest) {\n dest[0] = extent[0] - value;\n dest[1] = extent[1] - value;\n dest[2] = extent[2] + value;\n dest[3] = extent[3] + value;\n return dest;\n }\n return [\n extent[0] - value,\n extent[1] - value,\n extent[2] + value,\n extent[3] + value,\n ];\n}\n\n/**\n * Creates a clone of an extent.\n *\n * @param {Extent} extent Extent to clone.\n * @param {Extent} [dest] Extent.\n * @return {Extent} The clone.\n */\nexport function clone(extent, dest) {\n if (dest) {\n dest[0] = extent[0];\n dest[1] = extent[1];\n dest[2] = extent[2];\n dest[3] = extent[3];\n return dest;\n }\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 let dx, dy;\n if (x < extent[0]) {\n dx = extent[0] - x;\n } else if (extent[2] < x) {\n dx = x - extent[2];\n } else {\n dx = 0;\n }\n if (y < extent[1]) {\n dy = extent[1] - y;\n } else if (extent[3] < y) {\n dy = y - extent[3];\n } else {\n dy = 0;\n }\n return dx * dx + dy * dy;\n}\n\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} The coordinate is contained in the extent.\n * @api\n */\nexport function containsCoordinate(extent, coordinate) {\n return containsXY(extent, coordinate[0], coordinate[1]);\n}\n\n/**\n * Check if one extent contains another.\n *\n * An extent is deemed contained if it lies completely within the other extent,\n * including if they share one or more edges.\n *\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The second extent is contained by or on the edge of the\n * first.\n * @api\n */\nexport function containsExtent(extent1, extent2) {\n return (\n extent1[0] <= extent2[0] &&\n extent2[2] <= extent1[2] &&\n extent1[1] <= extent2[1] &&\n extent2[3] <= extent1[3]\n );\n}\n\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {number} x X coordinate.\n * @param {number} y Y coordinate.\n * @return {boolean} The x, y values are contained in the extent.\n * @api\n */\nexport function containsXY(extent, x, y) {\n return extent[0] <= x && x <= extent[2] && extent[1] <= y && y <= extent[3];\n}\n\n/**\n * Get the relationship between a coordinate and extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate The coordinate.\n * @return {import(\"./extent/Relationship.js\").default} The relationship (bitwise compare with\n * import(\"./extent/Relationship.js\").Relationship).\n */\nexport function coordinateRelationship(extent, coordinate) {\n const minX = extent[0];\n const minY = extent[1];\n const maxX = extent[2];\n const maxY = extent[3];\n const x = coordinate[0];\n const y = coordinate[1];\n let relationship = Relationship.UNKNOWN;\n if (x < minX) {\n relationship = relationship | Relationship.LEFT;\n } else if (x > maxX) {\n relationship = relationship | Relationship.RIGHT;\n }\n if (y < minY) {\n relationship = relationship | Relationship.BELOW;\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/**\n * Create an empty extent.\n * @return {Extent} Empty extent.\n * @api\n */\nexport function createEmpty() {\n return [Infinity, Infinity, -Infinity, -Infinity];\n}\n\n/**\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} [dest] Destination extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdate(minX, minY, maxX, maxY, dest) {\n if (dest) {\n dest[0] = minX;\n dest[1] = minY;\n dest[2] = maxX;\n dest[3] = maxY;\n return dest;\n }\n return [minX, minY, maxX, maxY];\n}\n\n/**\n * Create a new empty extent or make the provided one empty.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateEmpty(dest) {\n return createOrUpdate(Infinity, Infinity, -Infinity, -Infinity, dest);\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinate(coordinate, dest) {\n const x = coordinate[0];\n const y = coordinate[1];\n return createOrUpdate(x, y, x, y, dest);\n}\n\n/**\n * @param {Array} coordinates Coordinates.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinates(coordinates, dest) {\n const extent = createOrUpdateEmpty(dest);\n return extendCoordinates(extent, coordinates);\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromFlatCoordinates(\n flatCoordinates,\n offset,\n end,\n stride,\n dest\n) {\n const extent = createOrUpdateEmpty(dest);\n return extendFlatCoordinates(extent, flatCoordinates, offset, end, stride);\n}\n\n/**\n * @param {Array>} rings Rings.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromRings(rings, dest) {\n const extent = createOrUpdateEmpty(dest);\n return extendRings(extent, rings);\n}\n\n/**\n * Determine if two extents are equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The two extents are equivalent.\n * @api\n */\nexport function equals(extent1, extent2) {\n return (\n extent1[0] == extent2[0] &&\n extent1[2] == extent2[2] &&\n extent1[1] == extent2[1] &&\n extent1[3] == extent2[3]\n );\n}\n\n/**\n * Determine if two extents are approximately equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {number} tolerance Tolerance in extent coordinate units.\n * @return {boolean} The two extents differ by less than the tolerance.\n */\nexport function approximatelyEquals(extent1, extent2, tolerance) {\n return (\n Math.abs(extent1[0] - extent2[0]) < tolerance &&\n Math.abs(extent1[2] - extent2[2]) < tolerance &&\n Math.abs(extent1[1] - extent2[1]) < tolerance &&\n Math.abs(extent1[3] - extent2[3]) < tolerance\n );\n}\n\n/**\n * Modify an extent to include another extent.\n * @param {Extent} extent1 The extent to be modified.\n * @param {Extent} extent2 The extent that will be included in the first.\n * @return {Extent} A reference to the first (extended) extent.\n * @api\n */\nexport function extend(extent1, extent2) {\n if (extent2[0] < extent1[0]) {\n extent1[0] = extent2[0];\n }\n if (extent2[2] > extent1[2]) {\n extent1[2] = extent2[2];\n }\n if (extent2[1] < extent1[1]) {\n extent1[1] = extent2[1];\n }\n if (extent2[3] > extent1[3]) {\n extent1[3] = extent2[3];\n }\n return extent1;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n */\nexport function extendCoordinate(extent, coordinate) {\n if (coordinate[0] < extent[0]) {\n extent[0] = coordinate[0];\n }\n if (coordinate[0] > extent[2]) {\n extent[2] = coordinate[0];\n }\n if (coordinate[1] < extent[1]) {\n extent[1] = coordinate[1];\n }\n if (coordinate[1] > extent[3]) {\n extent[3] = coordinate[1];\n }\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Extent.\n */\nexport function extendCoordinates(extent, coordinates) {\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {Extent} Extent.\n */\nexport function extendFlatCoordinates(\n extent,\n flatCoordinates,\n offset,\n end,\n stride\n) {\n for (; offset < end; offset += stride) {\n extendXY(extent, flatCoordinates[offset], flatCoordinates[offset + 1]);\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array>} rings Rings.\n * @return {Extent} Extent.\n */\nexport function extendRings(extent, rings) {\n for (let i = 0, ii = rings.length; i < ii; ++i) {\n extendCoordinates(extent, rings[i]);\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n */\nexport function extendXY(extent, x, y) {\n extent[0] = Math.min(extent[0], x);\n extent[1] = Math.min(extent[1], y);\n extent[2] = Math.max(extent[2], x);\n extent[3] = Math.max(extent[3], y);\n}\n\n/**\n * This function calls `callback` for each corner of the extent. If the\n * callback returns a truthy value the function returns that value\n * immediately. Otherwise the function returns `false`.\n * @param {Extent} extent Extent.\n * @param {function(import(\"./coordinate.js\").Coordinate): S} callback Callback.\n * @return {S|boolean} Value.\n * @template S\n */\nexport function forEachCorner(extent, callback) {\n let 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/**\n * Get the size of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Area.\n * @api\n */\nexport function getArea(extent) {\n let area = 0;\n if (!isEmpty(extent)) {\n area = getWidth(extent) * getHeight(extent);\n }\n return area;\n}\n\n/**\n * Get the bottom left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom left coordinate.\n * @api\n */\nexport function getBottomLeft(extent) {\n return [extent[0], extent[1]];\n}\n\n/**\n * Get the bottom right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom right coordinate.\n * @api\n */\nexport function getBottomRight(extent) {\n return [extent[2], extent[1]];\n}\n\n/**\n * Get the center coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Center.\n * @api\n */\nexport function getCenter(extent) {\n return [(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2];\n}\n\n/**\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 let coordinate;\n if (corner === 'bottom-left') {\n coordinate = getBottomLeft(extent);\n } else if (corner === 'bottom-right') {\n coordinate = getBottomRight(extent);\n } else if (corner === 'top-left') {\n coordinate = getTopLeft(extent);\n } else if (corner === 'top-right') {\n coordinate = getTopRight(extent);\n } else {\n throw new Error('Invalid corner');\n }\n return coordinate;\n}\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 const minX = Math.min(extent1[0], extent2[0]);\n const minY = Math.min(extent1[1], extent2[1]);\n const maxX = Math.max(extent1[2], extent2[2]);\n const maxY = Math.max(extent1[3], extent2[3]);\n return (maxX - minX) * (maxY - minY);\n}\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} [dest] Destination extent.\n * @return {Extent} Extent.\n */\nexport function getForViewAndSize(center, resolution, rotation, size, dest) {\n const [x0, y0, x1, y1, x2, y2, x3, y3] = getRotatedViewport(\n center,\n resolution,\n rotation,\n size\n );\n return createOrUpdate(\n Math.min(x0, x1, x2, x3),\n Math.min(y0, y1, y2, y3),\n Math.max(x0, x1, x2, x3),\n Math.max(y0, y1, y2, y3),\n dest\n );\n}\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 * @return {Array} Linear ring representing the viewport.\n */\nexport function getRotatedViewport(center, resolution, rotation, size) {\n const dx = (resolution * size[0]) / 2;\n const dy = (resolution * size[1]) / 2;\n const cosRotation = Math.cos(rotation);\n const sinRotation = Math.sin(rotation);\n const xCos = dx * cosRotation;\n const xSin = dx * sinRotation;\n const yCos = dy * cosRotation;\n const ySin = dy * sinRotation;\n const x = center[0];\n const y = center[1];\n return [\n x - xCos + ySin,\n y - xSin - yCos,\n x - xCos - ySin,\n y - xSin + yCos,\n x + xCos - ySin,\n y + xSin + yCos,\n x + xCos + ySin,\n y + xSin - yCos,\n x - xCos + ySin,\n y - xSin - yCos,\n ];\n}\n\n/**\n * Get the height of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Height.\n * @api\n */\nexport function getHeight(extent) {\n return extent[3] - extent[1];\n}\n\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Intersection area.\n */\nexport function getIntersectionArea(extent1, extent2) {\n const intersection = getIntersection(extent1, extent2);\n return getArea(intersection);\n}\n\n/**\n * Get the intersection of two extents.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {Extent} [dest] Optional extent to populate with intersection.\n * @return {Extent} Intersecting extent.\n * @api\n */\nexport function getIntersection(extent1, extent2, dest) {\n const intersection = dest ? dest : createEmpty();\n if (intersects(extent1, extent2)) {\n if (extent1[0] > extent2[0]) {\n intersection[0] = extent1[0];\n } else {\n intersection[0] = extent2[0];\n }\n if (extent1[1] > extent2[1]) {\n intersection[1] = extent1[1];\n } else {\n intersection[1] = extent2[1];\n }\n if (extent1[2] < extent2[2]) {\n intersection[2] = extent1[2];\n } else {\n intersection[2] = extent2[2];\n }\n if (extent1[3] < extent2[3]) {\n intersection[3] = extent1[3];\n } else {\n intersection[3] = extent2[3];\n }\n } else {\n createOrUpdateEmpty(intersection);\n }\n return intersection;\n}\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/**\n * Get the size (width, height) of an extent.\n * @param {Extent} extent The extent.\n * @return {import(\"./size.js\").Size} The extent size.\n * @api\n */\nexport function getSize(extent) {\n return [extent[2] - extent[0], extent[3] - extent[1]];\n}\n\n/**\n * Get the top left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top left coordinate.\n * @api\n */\nexport function getTopLeft(extent) {\n return [extent[0], extent[3]];\n}\n\n/**\n * Get the top right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top right coordinate.\n * @api\n */\nexport function getTopRight(extent) {\n return [extent[2], extent[3]];\n}\n\n/**\n * Get the width of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Width.\n * @api\n */\nexport function getWidth(extent) {\n return extent[2] - extent[0];\n}\n\n/**\n * Determine if one extent intersects another.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent.\n * @return {boolean} The two extents intersect.\n * @api\n */\nexport function intersects(extent1, extent2) {\n return (\n extent1[0] <= extent2[2] &&\n extent1[2] >= extent2[0] &&\n extent1[1] <= extent2[3] &&\n extent1[3] >= extent2[1]\n );\n}\n\n/**\n * Determine if an extent is empty.\n * @param {Extent} extent Extent.\n * @return {boolean} Is empty.\n * @api\n */\nexport function isEmpty(extent) {\n return extent[2] < extent[0] || extent[3] < extent[1];\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function returnOrUpdate(extent, dest) {\n if (dest) {\n dest[0] = extent[0];\n dest[1] = extent[1];\n dest[2] = extent[2];\n dest[3] = extent[3];\n return dest;\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} value Value.\n */\nexport function scaleFromCenter(extent, value) {\n const deltaX = ((extent[2] - extent[0]) / 2) * (value - 1);\n const deltaY = ((extent[3] - extent[1]) / 2) * (value - 1);\n extent[0] -= deltaX;\n extent[2] += deltaX;\n extent[1] -= deltaY;\n extent[3] += deltaY;\n}\n\n/**\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 let intersects = false;\n const startRel = coordinateRelationship(extent, start);\n const endRel = coordinateRelationship(extent, end);\n if (\n startRel === Relationship.INTERSECTING ||\n endRel === Relationship.INTERSECTING\n ) {\n intersects = true;\n } else {\n const minX = extent[0];\n const minY = extent[1];\n const maxX = extent[2];\n const maxY = extent[3];\n const startX = start[0];\n const startY = start[1];\n const endX = end[0];\n const endY = end[1];\n const slope = (endY - startY) / (endX - startX);\n let x, y;\n if (!!(endRel & Relationship.ABOVE) && !(startRel & Relationship.ABOVE)) {\n // potentially intersects top\n x = endX - (endY - maxY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (\n !intersects &&\n !!(endRel & Relationship.RIGHT) &&\n !(startRel & Relationship.RIGHT)\n ) {\n // potentially intersects right\n y = endY - (endX - maxX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n if (\n !intersects &&\n !!(endRel & Relationship.BELOW) &&\n !(startRel & Relationship.BELOW)\n ) {\n // potentially intersects bottom\n x = endX - (endY - minY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (\n !intersects &&\n !!(endRel & Relationship.LEFT) &&\n !(startRel & Relationship.LEFT)\n ) {\n // potentially intersects left\n y = endY - (endX - minX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n }\n return intersects;\n}\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} [dest] Destination extent.\n * @param {number} [stops] Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {Extent} Extent.\n * @api\n */\nexport function applyTransform(extent, transformFn, dest, stops) {\n if (isEmpty(extent)) {\n return createOrUpdateEmpty(dest);\n }\n let coordinates = [];\n if (stops > 1) {\n const width = extent[2] - extent[0];\n const height = extent[3] - extent[1];\n for (let i = 0; i < stops; ++i) {\n coordinates.push(\n extent[0] + (width * i) / stops,\n extent[1],\n extent[2],\n extent[1] + (height * i) / stops,\n extent[2] - (width * i) / stops,\n extent[3],\n extent[0],\n extent[3] - (height * i) / stops\n );\n }\n } else {\n coordinates = [\n extent[0],\n extent[1],\n extent[2],\n extent[1],\n extent[2],\n extent[3],\n extent[0],\n extent[3],\n ];\n }\n transformFn(coordinates, coordinates, 2);\n const xs = [];\n const ys = [];\n for (let i = 0, l = coordinates.length; i < l; i += 2) {\n xs.push(coordinates[i]);\n ys.push(coordinates[i + 1]);\n }\n return _boundingExtentXYs(xs, ys, dest);\n}\n\n/**\n * Modifies the provided extent in-place to be within the real world\n * extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Extent} The extent within the real world extent.\n */\nexport function wrapX(extent, projection) {\n const projectionExtent = projection.getExtent();\n const center = getCenter(extent);\n if (\n projection.canWrapX() &&\n (center[0] < projectionExtent[0] || center[0] >= projectionExtent[2])\n ) {\n const worldWidth = getWidth(projectionExtent);\n const worldsAway = Math.floor(\n (center[0] - projectionExtent[0]) / worldWidth\n );\n const offset = worldsAway * worldWidth;\n extent[0] -= offset;\n extent[2] -= offset;\n }\n return extent;\n}\n\n/**\n * Fits the extent to the real world\n *\n * If the extent does not cross the anti meridian, this will return the extent in an array\n * If the extent crosses the anti meridian, the extent will be sliced, so each part fits within the\n * real world\n *\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Array} The extent within the real world extent.\n */\nexport function wrapAndSliceX(extent, projection) {\n if (projection.canWrapX()) {\n const projectionExtent = projection.getExtent();\n\n if (!isFinite(extent[0]) || !isFinite(extent[2])) {\n return [[projectionExtent[0], extent[1], projectionExtent[2], extent[3]]];\n }\n\n wrapX(extent, projection);\n const worldWidth = getWidth(projectionExtent);\n\n if (getWidth(extent) > worldWidth) {\n // the extent wraps around on itself\n return [[projectionExtent[0], extent[1], projectionExtent[2], extent[3]]];\n }\n if (extent[0] < projectionExtent[0]) {\n // the extent crosses the anti meridian, so it needs to be sliced\n return [\n [extent[0] + worldWidth, extent[1], projectionExtent[2], extent[3]],\n [projectionExtent[0], extent[1], extent[2], extent[3]],\n ];\n }\n if (extent[2] > projectionExtent[2]) {\n // the extent crosses the anti meridian, so it needs to be sliced\n return [\n [extent[0], extent[1], projectionExtent[2], extent[3]],\n [projectionExtent[0], extent[1], extent[2] - worldWidth, extent[3]],\n ];\n }\n }\n\n return [extent];\n}\n","/**\n * RGB space.\n *\n * @module color-space/rgb\n */\n\nexport default {\n\tname: 'rgb',\n\tmin: [0,0,0],\n\tmax: [255,255,255],\n\tchannel: ['red', 'green', 'blue'],\n\talias: ['RGB']\n};\n","/**\n * CIE XYZ\n *\n * @module color-space/xyz\n */\nimport rgb from './rgb.js';\n\nvar xyz = {\n\tname: 'xyz',\n\tmin: [0,0,0],\n\tchannel: ['X','Y','Z'],\n\talias: ['XYZ', 'ciexyz', 'cie1931']\n};\n\n\n/**\n * Whitepoint reference values with observer/illuminant\n *\n * http://en.wikipedia.org/wiki/Standard_illuminant\n */\nxyz.whitepoint = {\n\t//1931 2°\n\t2: {\n\t\t//incadescent\n\t\tA:[109.85, 100, 35.585],\n\t\t// B:[],\n\t\tC: [98.074, 100, 118.232],\n\t\tD50: [96.422, 100, 82.521],\n\t\tD55: [95.682, 100, 92.149],\n\t\t//daylight\n\t\tD65: [95.045592705167, 100, 108.9057750759878],\n\t\tD75: [94.972, 100, 122.638],\n\t\t//flourescent\n\t\t// F1: [],\n\t\tF2: [99.187, 100, 67.395],\n\t\t// F3: [],\n\t\t// F4: [],\n\t\t// F5: [],\n\t\t// F6:[],\n\t\tF7: [95.044, 100, 108.755],\n\t\t// F8: [],\n\t\t// F9: [],\n\t\t// F10: [],\n\t\tF11: [100.966, 100, 64.370],\n\t\t// F12: [],\n\t\tE: [100,100,100]\n\t},\n\n\t//1964 10°\n\t10: {\n\t\t//incadescent\n\t\tA:[111.144, 100, 35.200],\n\t\tC: [97.285, 100, 116.145],\n\t\tD50: [96.720, 100, 81.427],\n\t\tD55: [95.799, 100, 90.926],\n\t\t//daylight\n\t\tD65: [94.811, 100, 107.304],\n\t\tD75: [94.416, 100, 120.641],\n\t\t//flourescent\n\t\tF2: [103.280, 100, 69.026],\n\t\tF7: [95.792, 100, 107.687],\n\t\tF11: [103.866, 100, 65.627],\n\t\tE: [100,100,100]\n\t}\n};\n\n\n/**\n * Top values are the whitepoint’s top values, default are D65\n */\nxyz.max = xyz.whitepoint[2].D65;\n\n\n/**\n * Transform xyz to rgb\n *\n * @param {Array} xyz Array of xyz values\n *\n * @return {Array} RGB values\n */\nxyz.rgb = function (_xyz, white) {\n\t//FIXME: make sure we have to divide like this. Probably we have to replace matrix as well then\n\twhite = white || xyz.whitepoint[2].E;\n\n\tvar x = _xyz[0] / white[0],\n\t\ty = _xyz[1] / white[1],\n\t\tz = _xyz[2] / white[2],\n\t\tr, g, b;\n\n\t// assume sRGB\n\t// http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\tr = (x * 3.240969941904521) + (y * -1.537383177570093) + (z * -0.498610760293);\n\tg = (x * -0.96924363628087) + (y * 1.87596750150772) + (z * 0.041555057407175);\n\tb = (x * 0.055630079696993) + (y * -0.20397695888897) + (z * 1.056971514242878);\n\n\tr = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r = (r * 12.92);\n\n\tg = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g = (g * 12.92);\n\n\tb = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b = (b * 12.92);\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n}\n\n\n\n/**\n * RGB to XYZ\n *\n * @param {Array} rgb RGB channels\n *\n * @return {Array} XYZ channels\n */\nrgb.xyz = function(rgb, white) {\n\tvar r = rgb[0] / 255,\n\t\t\tg = rgb[1] / 255,\n\t\t\tb = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.41239079926595) + (g * 0.35758433938387) + (b * 0.18048078840183);\n\tvar y = (r * 0.21263900587151) + (g * 0.71516867876775) + (b * 0.072192315360733);\n\tvar z = (r * 0.019330818715591) + (g * 0.11919477979462) + (b * 0.95053215224966);\n\n\twhite = white || xyz.whitepoint[2].E;\n\n\treturn [x * white[0], y * white[1], z * white[2]];\n};\n\n\n\nexport default xyz;\n","/**\n * CIE LUV (C'est la vie)\n *\n * @module color-space/luv\n */\n import xyz from './xyz.js';\n\nexport default {\n\tname: 'luv',\n\t//NOTE: luv has no rigidly defined limits\n\t//easyrgb fails to get proper coords\n\t//boronine states no rigid limits\n\t//colorMine refers this ones:\n\tmin: [0,-134,-140],\n\tmax: [100,224,122],\n\tchannel: ['lightness', 'u', 'v'],\n\talias: ['LUV', 'cieluv', 'cie1976'],\n\n\txyz: function(arg, i, o){\n\t\tvar _u, _v, l, u, v, x, y, z, xn, yn, zn, un, vn;\n\t\tl = arg[0], u = arg[1], v = arg[2];\n\n\t\tif (l === 0) return [0,0,0];\n\n\t\t//get constants\n\t\t//var e = 0.008856451679035631; //(6/29)^3\n\t\tvar k = 0.0011070564598794539; //(3/29)^3\n\n\t\t//get illuminant/observer\n\t\ti = i || 'D65';\n\t\to = o || 2;\n\n\t\txn = xyz.whitepoint[o][i][0];\n\t\tyn = xyz.whitepoint[o][i][1];\n\t\tzn = xyz.whitepoint[o][i][2];\n\n\t\tun = (4 * xn) / (xn + (15 * yn) + (3 * zn));\n\t\tvn = (9 * yn) / (xn + (15 * yn) + (3 * zn));\n\t\t// un = 0.19783000664283;\n\t\t// vn = 0.46831999493879;\n\n\n\t\t_u = u / (13 * l) + un || 0;\n\t\t_v = v / (13 * l) + vn || 0;\n\n\t\ty = l > 8 ? yn * Math.pow( (l + 16) / 116 , 3) : yn * l * k;\n\n\t\t//wikipedia method\n\t\tx = y * 9 * _u / (4 * _v) || 0;\n\t\tz = y * (12 - 3 * _u - 20 * _v) / (4 * _v) || 0;\n\n\t\t//boronine method\n\t\t//https://github.com/boronine/husl/blob/master/husl.coffee#L201\n\t\t// x = 0 - (9 * y * _u) / ((_u - 4) * _v - _u * _v);\n\t\t// z = (9 * y - (15 * _v * y) - (_v * x)) / (3 * _v);\n\n\t\treturn [x, y, z];\n\t}\n};\n\n// http://www.brucelindbloom.com/index.html?Equations.html\n// https://github.com/boronine/husl/blob/master/husl.coffee\n//i - illuminant\n//o - observer\nxyz.luv = function(arg, i, o) {\n\tvar _u, _v, l, u, v, x, y, z, xn, yn, zn, un, vn;\n\n\t//get constants\n\tvar e = 0.008856451679035631; //(6/29)^3\n\tvar k = 903.2962962962961; //(29/3)^3\n\n\t//get illuminant/observer coords\n\ti = i || 'D65';\n\to = o || 2;\n\n\txn = xyz.whitepoint[o][i][0];\n\tyn = xyz.whitepoint[o][i][1];\n\tzn = xyz.whitepoint[o][i][2];\n\n\tun = (4 * xn) / (xn + (15 * yn) + (3 * zn));\n\tvn = (9 * yn) / (xn + (15 * yn) + (3 * zn));\n\n\n\tx = arg[0], y = arg[1], z = arg[2];\n\n\n\t_u = (4 * x) / (x + (15 * y) + (3 * z)) || 0;\n\t_v = (9 * y) / (x + (15 * y) + (3 * z)) || 0;\n\n\tvar yr = y/yn;\n\n\tl = yr <= e ? k * yr : 116 * Math.pow(yr, 1/3) - 16;\n\n\tu = 13 * l * (_u - un);\n\tv = 13 * l * (_v - vn);\n\n\treturn [l, u, v];\n};\n","/**\n * Cylindrical CIE LUV\n *\n * @module color-space/lchuv\n */\nimport luv from './luv.js';\nimport xyz from './xyz.js';\n\n//cylindrical luv\nvar lchuv = {\n\tname: 'lchuv',\n\tchannel: ['lightness', 'chroma', 'hue'],\n\talias: ['LCHuv', 'cielchuv'],\n\tmin: [0,0,0],\n\tmax: [100,100,360],\n\n\tluv: function(luv){\n\t\tvar l = luv[0],\n\t\tc = luv[1],\n\t\th = luv[2],\n\t\tu, v, hr;\n\n\t\thr = h / 360 * 2 * Math.PI;\n\t\tu = c * Math.cos(hr);\n\t\tv = c * Math.sin(hr);\n\t\treturn [l, u, v];\n\t},\n\n\txyz: function(arg) {\n\t\treturn luv.xyz(lchuv.luv(arg));\n\t}\n};\n\nexport default lchuv;\n\nluv.lchuv = function(luv){\n\tvar l = luv[0], u = luv[1], v = luv[2];\n\n\tvar c = Math.sqrt(u*u + v*v);\n\tvar hr = Math.atan2(v,u);\n\tvar h = hr * 360 / 2 / Math.PI;\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\treturn [l,c,h]\n};\n\nxyz.lchuv = function(arg){\n return luv.lchuv(xyz.luv(arg));\n};\n","export default {\n\taliceblue: [240, 248, 255],\n\tantiquewhite: [250, 235, 215],\n\taqua: [0, 255, 255],\n\taquamarine: [127, 255, 212],\n\tazure: [240, 255, 255],\n\tbeige: [245, 245, 220],\n\tbisque: [255, 228, 196],\n\tblack: [0, 0, 0],\n\tblanchedalmond: [255, 235, 205],\n\tblue: [0, 0, 255],\n\tblueviolet: [138, 43, 226],\n\tbrown: [165, 42, 42],\n\tburlywood: [222, 184, 135],\n\tcadetblue: [95, 158, 160],\n\tchartreuse: [127, 255, 0],\n\tchocolate: [210, 105, 30],\n\tcoral: [255, 127, 80],\n\tcornflowerblue: [100, 149, 237],\n\tcornsilk: [255, 248, 220],\n\tcrimson: [220, 20, 60],\n\tcyan: [0, 255, 255],\n\tdarkblue: [0, 0, 139],\n\tdarkcyan: [0, 139, 139],\n\tdarkgoldenrod: [184, 134, 11],\n\tdarkgray: [169, 169, 169],\n\tdarkgreen: [0, 100, 0],\n\tdarkgrey: [169, 169, 169],\n\tdarkkhaki: [189, 183, 107],\n\tdarkmagenta: [139, 0, 139],\n\tdarkolivegreen: [85, 107, 47],\n\tdarkorange: [255, 140, 0],\n\tdarkorchid: [153, 50, 204],\n\tdarkred: [139, 0, 0],\n\tdarksalmon: [233, 150, 122],\n\tdarkseagreen: [143, 188, 143],\n\tdarkslateblue: [72, 61, 139],\n\tdarkslategray: [47, 79, 79],\n\tdarkslategrey: [47, 79, 79],\n\tdarkturquoise: [0, 206, 209],\n\tdarkviolet: [148, 0, 211],\n\tdeeppink: [255, 20, 147],\n\tdeepskyblue: [0, 191, 255],\n\tdimgray: [105, 105, 105],\n\tdimgrey: [105, 105, 105],\n\tdodgerblue: [30, 144, 255],\n\tfirebrick: [178, 34, 34],\n\tfloralwhite: [255, 250, 240],\n\tforestgreen: [34, 139, 34],\n\tfuchsia: [255, 0, 255],\n\tgainsboro: [220, 220, 220],\n\tghostwhite: [248, 248, 255],\n\tgold: [255, 215, 0],\n\tgoldenrod: [218, 165, 32],\n\tgray: [128, 128, 128],\n\tgreen: [0, 128, 0],\n\tgreenyellow: [173, 255, 47],\n\tgrey: [128, 128, 128],\n\thoneydew: [240, 255, 240],\n\thotpink: [255, 105, 180],\n\tindianred: [205, 92, 92],\n\tindigo: [75, 0, 130],\n\tivory: [255, 255, 240],\n\tkhaki: [240, 230, 140],\n\tlavender: [230, 230, 250],\n\tlavenderblush: [255, 240, 245],\n\tlawngreen: [124, 252, 0],\n\tlemonchiffon: [255, 250, 205],\n\tlightblue: [173, 216, 230],\n\tlightcoral: [240, 128, 128],\n\tlightcyan: [224, 255, 255],\n\tlightgoldenrodyellow: [250, 250, 210],\n\tlightgray: [211, 211, 211],\n\tlightgreen: [144, 238, 144],\n\tlightgrey: [211, 211, 211],\n\tlightpink: [255, 182, 193],\n\tlightsalmon: [255, 160, 122],\n\tlightseagreen: [32, 178, 170],\n\tlightskyblue: [135, 206, 250],\n\tlightslategray: [119, 136, 153],\n\tlightslategrey: [119, 136, 153],\n\tlightsteelblue: [176, 196, 222],\n\tlightyellow: [255, 255, 224],\n\tlime: [0, 255, 0],\n\tlimegreen: [50, 205, 50],\n\tlinen: [250, 240, 230],\n\tmagenta: [255, 0, 255],\n\tmaroon: [128, 0, 0],\n\tmediumaquamarine: [102, 205, 170],\n\tmediumblue: [0, 0, 205],\n\tmediumorchid: [186, 85, 211],\n\tmediumpurple: [147, 112, 219],\n\tmediumseagreen: [60, 179, 113],\n\tmediumslateblue: [123, 104, 238],\n\tmediumspringgreen: [0, 250, 154],\n\tmediumturquoise: [72, 209, 204],\n\tmediumvioletred: [199, 21, 133],\n\tmidnightblue: [25, 25, 112],\n\tmintcream: [245, 255, 250],\n\tmistyrose: [255, 228, 225],\n\tmoccasin: [255, 228, 181],\n\tnavajowhite: [255, 222, 173],\n\tnavy: [0, 0, 128],\n\toldlace: [253, 245, 230],\n\tolive: [128, 128, 0],\n\tolivedrab: [107, 142, 35],\n\torange: [255, 165, 0],\n\torangered: [255, 69, 0],\n\torchid: [218, 112, 214],\n\tpalegoldenrod: [238, 232, 170],\n\tpalegreen: [152, 251, 152],\n\tpaleturquoise: [175, 238, 238],\n\tpalevioletred: [219, 112, 147],\n\tpapayawhip: [255, 239, 213],\n\tpeachpuff: [255, 218, 185],\n\tperu: [205, 133, 63],\n\tpink: [255, 192, 203],\n\tplum: [221, 160, 221],\n\tpowderblue: [176, 224, 230],\n\tpurple: [128, 0, 128],\n\trebeccapurple: [102, 51, 153],\n\tred: [255, 0, 0],\n\trosybrown: [188, 143, 143],\n\troyalblue: [65, 105, 225],\n\tsaddlebrown: [139, 69, 19],\n\tsalmon: [250, 128, 114],\n\tsandybrown: [244, 164, 96],\n\tseagreen: [46, 139, 87],\n\tseashell: [255, 245, 238],\n\tsienna: [160, 82, 45],\n\tsilver: [192, 192, 192],\n\tskyblue: [135, 206, 235],\n\tslateblue: [106, 90, 205],\n\tslategray: [112, 128, 144],\n\tslategrey: [112, 128, 144],\n\tsnow: [255, 250, 250],\n\tspringgreen: [0, 255, 127],\n\tsteelblue: [70, 130, 180],\n\ttan: [210, 180, 140],\n\tteal: [0, 128, 128],\n\tthistle: [216, 191, 216],\n\ttomato: [255, 99, 71],\n\tturquoise: [64, 224, 208],\n\tviolet: [238, 130, 238],\n\twheat: [245, 222, 179],\n\twhite: [255, 255, 255],\n\twhitesmoke: [245, 245, 245],\n\tyellow: [255, 255, 0],\n\tyellowgreen: [154, 205, 50]\n}\n","/**\n * @module color-parse\n */\nimport names from 'color-name'\n\nexport default parse\n\n/**\n * Base hues\n * http://dev.w3.org/csswg/css-color/#typedef-named-hue\n */\n//FIXME: use external hue detector\nvar baseHues = {\n\tred: 0,\n\torange: 60,\n\tyellow: 120,\n\tgreen: 180,\n\tblue: 240,\n\tpurple: 300\n}\n\n/**\n * Parse color from the string passed\n *\n * @return {Object} A space indicator `space`, an array `values` and `alpha`\n */\nfunction parse(cstr) {\n\tvar m, parts = [], alpha = 1, space\n\n\t//numeric case\n\tif (typeof cstr === 'number') {\n\t\treturn { space: 'rgb', values: [cstr >>> 16, (cstr & 0x00ff00) >>> 8, cstr & 0x0000ff], alpha: 1 }\n\t}\n\tif (typeof cstr === 'number') return { space: 'rgb', values: [cstr >>> 16, (cstr & 0x00ff00) >>> 8, cstr & 0x0000ff], alpha: 1 }\n\n\tcstr = String(cstr).toLowerCase();\n\n\t//keyword\n\tif (names[cstr]) {\n\t\tparts = names[cstr].slice()\n\t\tspace = 'rgb'\n\t}\n\n\t//reserved words\n\telse if (cstr === 'transparent') {\n\t\talpha = 0\n\t\tspace = 'rgb'\n\t\tparts = [0, 0, 0]\n\t}\n\n\t//hex\n\telse if (cstr[0] === '#') {\n\t\tvar base = cstr.slice(1)\n\t\tvar size = base.length\n\t\tvar isShort = size <= 4\n\t\talpha = 1\n\n\t\tif (isShort) {\n\t\t\tparts = [\n\t\t\t\tparseInt(base[0] + base[0], 16),\n\t\t\t\tparseInt(base[1] + base[1], 16),\n\t\t\t\tparseInt(base[2] + base[2], 16)\n\t\t\t]\n\t\t\tif (size === 4) {\n\t\t\t\talpha = parseInt(base[3] + base[3], 16) / 255\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tparts = [\n\t\t\t\tparseInt(base[0] + base[1], 16),\n\t\t\t\tparseInt(base[2] + base[3], 16),\n\t\t\t\tparseInt(base[4] + base[5], 16)\n\t\t\t]\n\t\t\tif (size === 8) {\n\t\t\t\talpha = parseInt(base[6] + base[7], 16) / 255\n\t\t\t}\n\t\t}\n\n\t\tif (!parts[0]) parts[0] = 0\n\t\tif (!parts[1]) parts[1] = 0\n\t\tif (!parts[2]) parts[2] = 0\n\n\t\tspace = 'rgb'\n\t}\n\n\t// color space\n\telse if (m = /^((?:rgba?|hs[lvb]a?|hwba?|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms|oklch|oklab|color))\\s*\\(([^\\)]*)\\)/.exec(cstr)) {\n\t\tvar name = m[1]\n\t\tspace = name.replace(/a$/, '')\n\t\tvar dims = space === 'cmyk' ? 4 : space === 'gray' ? 1 : 3\n\t\tparts = m[2].trim().split(/\\s*[,\\/]\\s*|\\s+/)\n\n\t\t// color(srgb-linear x x x) -> srgb-linear(x x x)\n\t\tif (space === 'color') space = parts.shift()\n\n\t\tparts = parts.map(function (x, i) {\n\t\t\t//\n\t\t\tif (x[x.length - 1] === '%') {\n\t\t\t\tx = parseFloat(x) / 100\n\t\t\t\t// alpha -> 0..1\n\t\t\t\tif (i === 3) return x\n\t\t\t\t// rgb -> 0..255\n\t\t\t\tif (space === 'rgb') return x * 255\n\t\t\t\t// hsl, hwb H -> 0..100\n\t\t\t\tif (space[0] === 'h') return x * 100\n\t\t\t\t// lch, lab L -> 0..100\n\t\t\t\tif (space[0] === 'l' && !i) return x * 100\n\t\t\t\t// lab A B -> -125..125\n\t\t\t\tif (space === 'lab') return x * 125\n\t\t\t\t// lch C -> 0..150, H -> 0..360\n\t\t\t\tif (space === 'lch') return i < 2 ? x * 150 : x * 360\n\t\t\t\t// oklch/oklab L -> 0..1\n\t\t\t\tif (space[0] === 'o' && !i) return x\n\t\t\t\t// oklab A B -> -0.4..0.4\n\t\t\t\tif (space === 'oklab') return x * 0.4\n\t\t\t\t// oklch C -> 0..0.4, H -> 0..360\n\t\t\t\tif (space === 'oklch') return i < 2 ? x * 0.4 : x * 360\n\t\t\t\t// color(xxx) -> 0..1\n\t\t\t\treturn x\n\t\t\t}\n\n\t\t\t//hue\n\t\t\tif (space[i] === 'h' || (i === 2 && space[space.length - 1] === 'h')) {\n\t\t\t\t//\n\t\t\t\tif (baseHues[x] !== undefined) return baseHues[x]\n\t\t\t\t//\n\t\t\t\tif (x.endsWith('deg')) return parseFloat(x)\n\t\t\t\t//\n\t\t\t\tif (x.endsWith('turn')) return parseFloat(x) * 360\n\t\t\t\tif (x.endsWith('grad')) return parseFloat(x) * 360 / 400\n\t\t\t\tif (x.endsWith('rad')) return parseFloat(x) * 180 / Math.PI\n\t\t\t}\n\t\t\tif (x === 'none') return 0\n\t\t\treturn parseFloat(x)\n\t\t});\n\n\t\talpha = parts.length > dims ? parts.pop() : 1\n\t}\n\n\t//named channels case\n\telse if (/[0-9](?:\\s|\\/|,)/.test(cstr)) {\n\t\tparts = cstr.match(/([0-9]+)/g).map(function (value) {\n\t\t\treturn parseFloat(value)\n\t\t})\n\n\t\tspace = cstr.match(/([a-z])/ig)?.join('')?.toLowerCase() || 'rgb'\n\t}\n\n\treturn {\n\t\tspace,\n\t\tvalues: parts,\n\t\talpha\n\t}\n}\n","/**\n * @module color-space/hsl\n */\nimport rgb from './rgb.js';\n\nexport default {\n\tname: 'hsl',\n\tmin: [0,0,0],\n\tmax: [360,100,100],\n\tchannel: ['hue', 'saturation', 'lightness'],\n\talias: ['HSL'],\n\n\trgb: function(hsl) {\n\t\tvar h = hsl[0]/360, s = hsl[1]/100, l = hsl[2]/100, t1, t2, t3, rgb, val, i=0;\n\n\t\tif (s === 0) return val = l * 255, [val, val, val];\n\n\t\tt2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n\t\tt1 = 2 * l - t2;\n\n\t\trgb = [0, 0, 0];\n\t\tfor (;i<3;) {\n\t\t\tt3 = h + 1 / 3 * - (i - 1);\n\t\t\tt3 < 0 ? t3++ : t3 > 1 && t3--;\n\t\t\tval = 6 * t3 < 1 ? t1 + (t2 - t1) * 6 * t3 :\n\t\t\t2 * t3 < 1 ? t2 :\n\t\t\t3 * t3 < 2 ? t1 + (t2 - t1) * (2 / 3 - t3) * 6 :\n\t\t\tt1;\n\t\t\trgb[i++] = val * 255;\n\t\t}\n\n\t\treturn rgb;\n\t}\n};\n\n\n//extend rgb\nrgb.hsl = function(rgb) {\n\tvar r = rgb[0]/255,\n\t\t\tg = rgb[1]/255,\n\t\t\tb = rgb[2]/255,\n\t\t\tmin = Math.min(r, g, b),\n\t\t\tmax = Math.max(r, g, b),\n\t\t\tdelta = max - min,\n\t\t\th, s, l;\n\n\tif (max === min) {\n\t\th = 0;\n\t}\n\telse if (r === max) {\n\t\th = (g - b) / delta;\n\t}\n\telse if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t}\n\telse if (b === max) {\n\t\th = 4 + (r - g)/ delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t}\n\telse if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t}\n\telse {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n","/** @module color-rgba */\nimport parse from 'color-parse'\nimport rgb from 'color-space/rgb.js'\nimport hsl from 'color-space/hsl.js'\n\nexport default function rgba(color) {\n\t// template literals\n\tif (Array.isArray(color) && color.raw) color = String.raw(...arguments)\n\tif (color instanceof Number) color = +color\n\n\tvar values, i, l\n\n\t//attempt to parse non-array arguments\n\tvar parsed = parse(color)\n\n\tif (!parsed.space) return []\n\n\tconst min = parsed.space[0] === 'h' ? hsl.min : rgb.min\n\tconst max = parsed.space[0] === 'h' ? hsl.max : rgb.max\n\n\tvalues = Array(3)\n\tvalues[0] = Math.min(Math.max(parsed.values[0], min[0]), max[0])\n\tvalues[1] = Math.min(Math.max(parsed.values[1], min[1]), max[1])\n\tvalues[2] = Math.min(Math.max(parsed.values[2], min[2]), max[2])\n\n\tif (parsed.space[0] === 'h') {\n\t\tvalues = hsl.rgb(values)\n\t}\n\n\tvalues.push(Math.min(Math.max(parsed.alpha, 0), 1))\n\n\treturn values\n}\n","/**\n * @module ol/math\n */\n\n/**\n * Takes a number and clamps it to within the provided bounds.\n * @param {number} value The input number.\n * @param {number} min The minimum value to return.\n * @param {number} max The maximum value to return.\n * @return {number} The input number if it is within bounds, or the nearest\n * number within the bounds.\n */\nexport function clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\n/**\n * Returns the square of the closest distance between the point (x, y) and the\n * line segment (x1, y1) to (x2, y2).\n * @param {number} x X.\n * @param {number} y Y.\n * @param {number} x1 X1.\n * @param {number} y1 Y1.\n * @param {number} x2 X2.\n * @param {number} y2 Y2.\n * @return {number} Squared distance.\n */\nexport function squaredSegmentDistance(x, y, x1, y1, x2, y2) {\n const dx = x2 - x1;\n const dy = y2 - y1;\n if (dx !== 0 || dy !== 0) {\n const t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n x1 = x2;\n y1 = y2;\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/**\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 const dx = x2 - x1;\n const dy = y2 - y1;\n return dx * dx + dy * dy;\n}\n\n/**\n * Solves system of linear equations using Gaussian elimination method.\n *\n * @param {Array>} mat Augmented matrix (n x n + 1 column)\n * in row-major order.\n * @return {Array|null} The resulting vector.\n */\nexport function solveLinearSystem(mat) {\n const n = mat.length;\n\n for (let i = 0; i < n; i++) {\n // Find max in the i-th column (ignoring i - 1 first rows)\n let maxRow = i;\n let maxEl = Math.abs(mat[i][i]);\n for (let r = i + 1; r < n; r++) {\n const absValue = Math.abs(mat[r][i]);\n if (absValue > maxEl) {\n maxEl = absValue;\n maxRow = r;\n }\n }\n\n if (maxEl === 0) {\n return null; // matrix is singular\n }\n\n // Swap max row with i-th (current) row\n const tmp = mat[maxRow];\n mat[maxRow] = mat[i];\n mat[i] = tmp;\n\n // Subtract the i-th row to make all the remaining rows 0 in the i-th column\n for (let j = i + 1; j < n; j++) {\n const coef = -mat[j][i] / mat[i][i];\n for (let k = i; k < n + 1; k++) {\n if (i == k) {\n mat[j][k] = 0;\n } else {\n mat[j][k] += coef * mat[i][k];\n }\n }\n }\n }\n\n // Solve Ax=b for upper triangular matrix A (mat)\n const x = new Array(n);\n for (let l = n - 1; l >= 0; l--) {\n x[l] = mat[l][n] / mat[l][l];\n for (let m = l - 1; m >= 0; m--) {\n mat[m][n] -= mat[m][l] * x[l];\n }\n }\n return x;\n}\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/**\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/**\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 const r = a % b;\n return r * b < 0 ? r + b : r;\n}\n\n/**\n * Calculates the linearly interpolated value of x between a and b.\n *\n * @param {number} a Number\n * @param {number} b Number\n * @param {number} x Value to be interpolated.\n * @return {number} Interpolated value.\n */\nexport function lerp(a, b, x) {\n return a + x * (b - a);\n}\n\n/**\n * Returns a number with a limited number of decimal digits.\n * @param {number} n The input number.\n * @param {number} decimals The maximum number of decimal digits.\n * @return {number} The input number with a limited number of decimal digits.\n */\nexport function toFixed(n, decimals) {\n const factor = Math.pow(10, decimals);\n return Math.round(n * factor) / factor;\n}\n\n/**\n * Rounds a number to the nearest integer value considering only the given number\n * of decimal digits (with rounding on the final digit).\n * @param {number} n The input number.\n * @param {number} decimals The maximum number of decimal digits.\n * @return {number} The nearest integer.\n */\nexport function round(n, decimals) {\n return Math.round(toFixed(n, decimals));\n}\n\n/**\n * Rounds a number to the next smaller integer considering only the given number\n * of decimal digits (with rounding on the final digit).\n * @param {number} n The input number.\n * @param {number} decimals The maximum number of decimal digits.\n * @return {number} The next smaller integer.\n */\nexport function floor(n, decimals) {\n return Math.floor(toFixed(n, decimals));\n}\n\n/**\n * Rounds a number to the next bigger integer considering only the given number\n * of decimal digits (with rounding on the final digit).\n * @param {number} n The input number.\n * @param {number} decimals The maximum number of decimal digits.\n * @return {number} The next bigger integer.\n */\nexport function ceil(n, decimals) {\n return Math.ceil(toFixed(n, decimals));\n}\n","/**\n * @module ol/color\n */\nimport lchuv from 'color-space/lchuv.js';\nimport parseRgba from 'color-rgba';\nimport rgb from 'color-space/rgb.js';\nimport xyz from 'color-space/xyz.js';\nimport {clamp} from './math.js';\n\n/**\n * A color represented as a short array [red, green, blue, alpha].\n * red, green, and blue should be integers in the range 0..255 inclusive.\n * alpha should be a float in the range 0..1 inclusive. If no alpha value is\n * given then `1` will be used.\n * @typedef {Array} Color\n * @api\n */\n\n/**\n * Return the color as an rgba string.\n * @param {Color|string} color Color.\n * @return {string} Rgba string.\n * @api\n */\nexport function asString(color) {\n if (typeof color === 'string') {\n return color;\n }\n return toString(color);\n}\n\n/**\n * @type {number}\n */\nconst MAX_CACHE_SIZE = 1024;\n\n/**\n * We maintain a small cache of parsed strings. Whenever the cache grows too large,\n * we delete an arbitrary set of the entries.\n *\n * @type {Object}\n */\nconst cache = {};\n\n/**\n * @type {number}\n */\nlet cacheSize = 0;\n\n/**\n * @param {Color} color A color that may or may not have an alpha channel.\n * @return {Color} The input color with an alpha channel. If the input color has\n * an alpha channel, the input color will be returned unchanged. Otherwise, a new\n * array will be returned with the input color and an alpha channel of 1.\n */\nexport function withAlpha(color) {\n if (color.length === 4) {\n return color;\n }\n const output = color.slice();\n output[3] = 1;\n return output;\n}\n\n/**\n * @param {Color} color RGBA color.\n * @return {Color} LCHuv color with alpha.\n */\nexport function rgbaToLcha(color) {\n const output = xyz.lchuv(rgb.xyz(color));\n output[3] = color[3];\n return output;\n}\n\n/**\n * @param {Color} color LCHuv color with alpha.\n * @return {Color} RGBA color.\n */\nexport function lchaToRgba(color) {\n const output = xyz.rgb(lchuv.xyz(color));\n output[3] = color[3];\n return output;\n}\n\n/**\n * @param {string} s String.\n * @return {Color} Color.\n */\nexport function fromString(s) {\n if (cache.hasOwnProperty(s)) {\n return cache[s];\n }\n if (cacheSize >= MAX_CACHE_SIZE) {\n let i = 0;\n for (const key in cache) {\n if ((i++ & 3) === 0) {\n delete cache[key];\n --cacheSize;\n }\n }\n }\n\n const color = parseRgba(s);\n if (color.length !== 4) {\n throw new Error('Failed to parse \"' + s + '\" as color');\n }\n for (const c of color) {\n if (isNaN(c)) {\n throw new Error('Failed to parse \"' + s + '\" as color');\n }\n }\n normalize(color);\n cache[s] = color;\n ++cacheSize;\n return color;\n}\n\n/**\n * Return the color as an array. This function maintains a cache of calculated\n * arrays which means the result should not be modified.\n * @param {Color|string} color Color.\n * @return {Color} Color.\n * @api\n */\nexport function asArray(color) {\n if (Array.isArray(color)) {\n return color;\n }\n return fromString(color);\n}\n\n/**\n * Exported for the tests.\n * @param {Color} color Color.\n * @return {Color} Clamped color.\n */\nexport function normalize(color) {\n color[0] = clamp((color[0] + 0.5) | 0, 0, 255);\n color[1] = clamp((color[1] + 0.5) | 0, 0, 255);\n color[2] = clamp((color[2] + 0.5) | 0, 0, 255);\n color[3] = clamp(color[3], 0, 1);\n return color;\n}\n\n/**\n * @param {Color} color Color.\n * @return {string} String.\n */\nexport function toString(color) {\n let r = color[0];\n if (r != (r | 0)) {\n r = (r + 0.5) | 0;\n }\n let g = color[1];\n if (g != (g | 0)) {\n g = (g + 0.5) | 0;\n }\n let b = color[2];\n if (b != (b | 0)) {\n b = (b + 0.5) | 0;\n }\n const a = color[3] === undefined ? 1 : Math.round(color[3] * 100) / 100;\n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n}\n\n/**\n * @param {string} s String.\n * @return {boolean} Whether the string is actually a valid color\n */\nexport function isStringColor(s) {\n try {\n fromString(s);\n return true;\n } catch (_) {\n return false;\n }\n}\n","/**\n * @module ol/style/IconImageCache\n */\nimport {asString} from '../color.js';\n\n/**\n * @classdesc\n * Singleton class. Available through {@link module:ol/style/IconImageCache.shared}.\n */\nclass IconImageCache {\n constructor() {\n /**\n * @type {!Object}\n * @private\n */\n this.cache_ = {};\n\n /**\n * @type {number}\n * @private\n */\n this.cacheSize_ = 0;\n\n /**\n * @type {number}\n * @private\n */\n this.maxCacheSize_ = 32;\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n clear() {\n this.cache_ = {};\n this.cacheSize_ = 0;\n }\n\n /**\n * @return {boolean} Can expire cache.\n */\n canExpireCache() {\n return this.cacheSize_ > this.maxCacheSize_;\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n expire() {\n if (this.canExpireCache()) {\n let i = 0;\n for (const key in this.cache_) {\n const iconImage = this.cache_[key];\n if ((i++ & 3) === 0 && !iconImage.hasListener()) {\n delete this.cache_[key];\n --this.cacheSize_;\n }\n }\n }\n }\n\n /**\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 get(src, crossOrigin, color) {\n const key = getKey(src, crossOrigin, color);\n return key in this.cache_ ? this.cache_[key] : null;\n }\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 set(src, crossOrigin, color, iconImage) {\n const key = getKey(src, crossOrigin, color);\n this.cache_[key] = iconImage;\n ++this.cacheSize_;\n }\n\n /**\n * Set the cache size of the icon cache. Default is `32`. Change this value when\n * your map uses more than 32 different icon images and you are not caching icon\n * styles on the application level.\n * @param {number} maxCacheSize Cache max size.\n * @api\n */\n setSize(maxCacheSize) {\n this.maxCacheSize_ = maxCacheSize;\n this.expire();\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 {string} Cache key.\n */\nfunction getKey(src, crossOrigin, color) {\n const colorString = color ? asString(color) : 'null';\n return crossOrigin + ':' + src + ':' + colorString;\n}\n\nexport default IconImageCache;\n\n/**\n * The {@link module:ol/style/IconImageCache~IconImageCache} for\n * {@link module:ol/style/Icon~Icon} images.\n * @api\n */\nexport const shared = new IconImageCache();\n","/**\n * @module ol/layer/Property\n */\n\n/**\n * @enum {string}\n */\nexport default {\n OPACITY: 'opacity',\n VISIBLE: 'visible',\n EXTENT: 'extent',\n Z_INDEX: 'zIndex',\n MAX_RESOLUTION: 'maxResolution',\n MIN_RESOLUTION: 'minResolution',\n MAX_ZOOM: 'maxZoom',\n MIN_ZOOM: 'minZoom',\n SOURCE: 'source',\n MAP: 'map',\n};\n","/**\n * @module ol/layer/Base\n */\nimport BaseObject from '../Object.js';\nimport LayerProperty from './Property.js';\nimport {abstract} from '../util.js';\nimport {assert} from '../asserts.js';\nimport {clamp} from '../math.js';\n\n/**\n * A css color, or a function called with a view resolution returning a css color.\n *\n * @typedef {string|function(number):string} BackgroundColor\n * @api\n */\n\n/**\n * @typedef {import(\"../ObjectEventType\").Types|'change:extent'|'change:maxResolution'|'change:maxZoom'|\n * 'change:minResolution'|'change:minZoom'|'change:opacity'|'change:visible'|'change:zIndex'} BaseLayerObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} BaseLayerOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number | undefined} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {BackgroundColor} [background] Background color for the layer. If not specified, no background\n * will be rendered.\n * @property {Object} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Note that with {@link module:ol/layer/Base~BaseLayer} and all its subclasses, any property set in\n * the options is set as a {@link module:ol/Object~BaseObject} property on the layer object, so\n * is observable, and has get/set accessors.\n *\n * @api\n */\nclass BaseLayer extends BaseObject {\n /**\n * @param {Options} options Layer options.\n */\n constructor(options) {\n super();\n\n /***\n * @type {BaseLayerOnSignature}\n */\n this.on;\n\n /***\n * @type {BaseLayerOnSignature}\n */\n this.once;\n\n /***\n * @type {BaseLayerOnSignature}\n */\n this.un;\n\n /**\n * @type {BackgroundColor|false}\n * @private\n */\n this.background_ = options.background;\n\n /**\n * @type {Object}\n */\n const properties = Object.assign({}, options);\n if (typeof options.properties === 'object') {\n delete properties.properties;\n Object.assign(properties, options.properties);\n }\n\n properties[LayerProperty.OPACITY] =\n options.opacity !== undefined ? options.opacity : 1;\n assert(\n typeof properties[LayerProperty.OPACITY] === 'number',\n 'Layer opacity must be a number'\n );\n\n properties[LayerProperty.VISIBLE] =\n options.visible !== undefined ? options.visible : true;\n properties[LayerProperty.Z_INDEX] = options.zIndex;\n properties[LayerProperty.MAX_RESOLUTION] =\n options.maxResolution !== undefined ? options.maxResolution : Infinity;\n properties[LayerProperty.MIN_RESOLUTION] =\n options.minResolution !== undefined ? options.minResolution : 0;\n properties[LayerProperty.MIN_ZOOM] =\n options.minZoom !== undefined ? options.minZoom : -Infinity;\n properties[LayerProperty.MAX_ZOOM] =\n options.maxZoom !== undefined ? options.maxZoom : Infinity;\n\n /**\n * @type {string}\n * @private\n */\n this.className_ =\n properties.className !== undefined ? properties.className : 'ol-layer';\n delete properties.className;\n\n this.setProperties(properties);\n\n /**\n * @type {import(\"./Layer.js\").State}\n * @private\n */\n this.state_ = null;\n }\n\n /**\n * Get the background for this layer.\n * @return {BackgroundColor|false} Layer background.\n */\n getBackground() {\n return this.background_;\n }\n\n /**\n * @return {string} CSS class name.\n */\n getClassName() {\n return this.className_;\n }\n\n /**\n * This method is not meant to be called by layers or layer renderers because the state\n * is incorrect if the layer is included in a layer group.\n *\n * @param {boolean} [managed] Layer is managed.\n * @return {import(\"./Layer.js\").State} Layer state.\n */\n getLayerState(managed) {\n /** @type {import(\"./Layer.js\").State} */\n const state =\n this.state_ ||\n /** @type {?} */ ({\n layer: this,\n managed: managed === undefined ? true : managed,\n });\n const zIndex = this.getZIndex();\n state.opacity = clamp(Math.round(this.getOpacity() * 100) / 100, 0, 1);\n state.visible = this.getVisible();\n state.extent = this.getExtent();\n state.zIndex = zIndex === undefined && !state.managed ? Infinity : zIndex;\n state.maxResolution = this.getMaxResolution();\n state.minResolution = Math.max(this.getMinResolution(), 0);\n state.minZoom = this.getMinZoom();\n state.maxZoom = this.getMaxZoom();\n this.state_ = state;\n\n return state;\n }\n\n /**\n * @abstract\n * @param {Array} [array] Array of layers (to be\n * modified in place).\n * @return {Array} Array of layers.\n */\n getLayersArray(array) {\n return abstract();\n }\n\n /**\n * @abstract\n * @param {Array} [states] Optional list of layer\n * states (to be modified in place).\n * @return {Array} List of layer states.\n */\n getLayerStatesArray(states) {\n return abstract();\n }\n\n /**\n * Return the {@link module:ol/extent~Extent extent} of the layer or `undefined` if it\n * will be visible regardless of extent.\n * @return {import(\"../extent.js\").Extent|undefined} The layer extent.\n * @observable\n * @api\n */\n getExtent() {\n return /** @type {import(\"../extent.js\").Extent|undefined} */ (\n this.get(LayerProperty.EXTENT)\n );\n }\n\n /**\n * Return the maximum resolution of the layer. Returns Infinity if\n * the layer has no maximum resolution set.\n * @return {number} The maximum resolution of the layer.\n * @observable\n * @api\n */\n getMaxResolution() {\n return /** @type {number} */ (this.get(LayerProperty.MAX_RESOLUTION));\n }\n\n /**\n * Return the minimum resolution of the layer. Returns 0 if\n * the layer has no minimum resolution set.\n * @return {number} The minimum resolution of the layer.\n * @observable\n * @api\n */\n getMinResolution() {\n return /** @type {number} */ (this.get(LayerProperty.MIN_RESOLUTION));\n }\n\n /**\n * Return the minimum zoom level of the layer. Returns -Infinity if\n * the layer has no minimum zoom set.\n * @return {number} The minimum zoom level of the layer.\n * @observable\n * @api\n */\n getMinZoom() {\n return /** @type {number} */ (this.get(LayerProperty.MIN_ZOOM));\n }\n\n /**\n * Return the maximum zoom level of the layer. Returns Infinity if\n * the layer has no maximum zoom set.\n * @return {number} The maximum zoom level of the layer.\n * @observable\n * @api\n */\n getMaxZoom() {\n return /** @type {number} */ (this.get(LayerProperty.MAX_ZOOM));\n }\n\n /**\n * Return the opacity of the layer (between 0 and 1).\n * @return {number} The opacity of the layer.\n * @observable\n * @api\n */\n getOpacity() {\n return /** @type {number} */ (this.get(LayerProperty.OPACITY));\n }\n\n /**\n * @abstract\n * @return {import(\"../source/Source.js\").State} Source state.\n */\n getSourceState() {\n return abstract();\n }\n\n /**\n * Return the value of this layer's `visible` property. To find out whether the layer\n * is visible on a map, use `isVisible()` instead.\n * @return {boolean} The value of the `visible` property of the layer.\n * @observable\n * @api\n */\n getVisible() {\n return /** @type {boolean} */ (this.get(LayerProperty.VISIBLE));\n }\n\n /**\n * Return the Z-index of the layer, which is used to order layers before\n * rendering. Returns undefined if the layer is unmanaged.\n * @return {number|undefined} The Z-index of the layer.\n * @observable\n * @api\n */\n getZIndex() {\n return /** @type {number|undefined} */ (this.get(LayerProperty.Z_INDEX));\n }\n\n /**\n * Sets the background color.\n * @param {BackgroundColor} [background] Background color.\n */\n setBackground(background) {\n this.background_ = background;\n this.changed();\n }\n\n /**\n * Set the extent at which the layer is visible. If `undefined`, the layer\n * will be visible at all extents.\n * @param {import(\"../extent.js\").Extent|undefined} extent The extent of the layer.\n * @observable\n * @api\n */\n setExtent(extent) {\n this.set(LayerProperty.EXTENT, extent);\n }\n\n /**\n * Set the maximum resolution at which the layer is visible.\n * @param {number} maxResolution The maximum resolution of the layer.\n * @observable\n * @api\n */\n setMaxResolution(maxResolution) {\n this.set(LayerProperty.MAX_RESOLUTION, maxResolution);\n }\n\n /**\n * Set the minimum resolution at which the layer is visible.\n * @param {number} minResolution The minimum resolution of the layer.\n * @observable\n * @api\n */\n setMinResolution(minResolution) {\n this.set(LayerProperty.MIN_RESOLUTION, minResolution);\n }\n\n /**\n * Set the maximum zoom (exclusive) at which the layer is visible.\n * Note that the zoom levels for layer visibility are based on the\n * view zoom level, which may be different from a tile source zoom level.\n * @param {number} maxZoom The maximum zoom of the layer.\n * @observable\n * @api\n */\n setMaxZoom(maxZoom) {\n this.set(LayerProperty.MAX_ZOOM, maxZoom);\n }\n\n /**\n * Set the minimum zoom (inclusive) at which the layer is visible.\n * Note that the zoom levels for layer visibility are based on the\n * view zoom level, which may be different from a tile source zoom level.\n * @param {number} minZoom The minimum zoom of the layer.\n * @observable\n * @api\n */\n setMinZoom(minZoom) {\n this.set(LayerProperty.MIN_ZOOM, minZoom);\n }\n\n /**\n * Set the opacity of the layer, allowed values range from 0 to 1.\n * @param {number} opacity The opacity of the layer.\n * @observable\n * @api\n */\n setOpacity(opacity) {\n assert(typeof opacity === 'number', 'Layer opacity must be a number');\n this.set(LayerProperty.OPACITY, opacity);\n }\n\n /**\n * Set the visibility of the layer (`true` or `false`).\n * @param {boolean} visible The visibility of the layer.\n * @observable\n * @api\n */\n setVisible(visible) {\n this.set(LayerProperty.VISIBLE, visible);\n }\n\n /**\n * Set Z-index of the layer, which is used to order layers before rendering.\n * The default Z-index is 0.\n * @param {number} zindex The z-index of the layer.\n * @observable\n * @api\n */\n setZIndex(zindex) {\n this.set(LayerProperty.Z_INDEX, zindex);\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n if (this.state_) {\n this.state_.layer = null;\n this.state_ = null;\n }\n super.disposeInternal();\n }\n}\n\nexport default BaseLayer;\n","/**\n * @module ol/render/EventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered before a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#prerender\n * @api\n */\n PRERENDER: 'prerender',\n\n /**\n * Triggered after a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n\n /**\n * Triggered before layers are composed. When dispatched by the map, the event object will not have\n * a `context` set. When dispatched by a layer, the event object will have a `context` set. Only\n * WebGL layers currently dispatch this event.\n * @event module:ol/render/Event~RenderEvent#precompose\n * @api\n */\n PRECOMPOSE: 'precompose',\n\n /**\n * Triggered after layers are composed. When dispatched by the map, the event object will not have\n * a `context` set. When dispatched by a layer, the event object will have a `context` set. Only\n * WebGL layers currently dispatch this event.\n * @event module:ol/render/Event~RenderEvent#postcompose\n * @api\n */\n POSTCOMPOSE: 'postcompose',\n\n /**\n * Triggered when rendering is complete, i.e. all sources and tiles have\n * finished loading for the current viewport, and all tiles are faded in.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#rendercomplete\n * @api\n */\n RENDERCOMPLETE: 'rendercomplete',\n};\n\n/**\n * @typedef {'postrender'|'precompose'|'postcompose'|'rendercomplete'} MapRenderEventTypes\n */\n\n/**\n * @typedef {'postrender'|'prerender'} LayerRenderEventTypes\n */\n","/**\n * @module ol/ViewHint\n */\n\n/**\n * @enum {number}\n */\nexport default {\n ANIMATING: 0,\n INTERACTING: 1,\n};\n","/**\n * @module ol/ViewProperty\n */\n\n/**\n * @enum {string}\n */\nexport default {\n CENTER: 'center',\n RESOLUTION: 'resolution',\n ROTATION: 'rotation',\n};\n","/**\n * @module ol/tilegrid/common\n */\n\n/**\n * Default maximum zoom for default tile grids.\n * @type {number}\n */\nexport const DEFAULT_MAX_ZOOM = 42;\n\n/**\n * Default tile size.\n * @type {number}\n */\nexport const DEFAULT_TILE_SIZE = 256;\n","/**\n * @module ol/proj/Units\n */\n\n/**\n * @typedef {'radians' | 'degrees' | 'ft' | 'm' | 'pixels' | 'tile-pixels' | 'us-ft'} Units\n * Projection units.\n */\n\n/**\n * See http://duff.ess.washington.edu/data/raster/drg/docs/geotiff.txt\n * @type {Object}\n */\nconst unitByCode = {\n '9001': 'm',\n '9002': 'ft',\n '9003': 'us-ft',\n '9101': 'radians',\n '9102': 'degrees',\n};\n\n/**\n * @param {number} code Unit code.\n * @return {Units} Units.\n */\nexport function fromCode(code) {\n return unitByCode[code];\n}\n\n/**\n * @typedef {Object} MetersPerUnitLookup\n * @property {number} radians Radians\n * @property {number} degrees Degrees\n * @property {number} ft Feet\n * @property {number} m Meters\n * @property {number} us-ft US feet\n */\n\n/**\n * Meters per unit lookup table.\n * @const\n * @type {MetersPerUnitLookup}\n * @api\n */\nexport const METERS_PER_UNIT = {\n // use the radius of the Normal sphere\n 'radians': 6370997 / (2 * Math.PI),\n 'degrees': (2 * Math.PI * 6370997) / 360,\n 'ft': 0.3048,\n 'm': 1,\n 'us-ft': 1200 / 3937,\n};\n","/**\n * @module ol/proj/Projection\n */\nimport {METERS_PER_UNIT} from './Units.js';\n\n/**\n * @typedef {Object} Options\n * @property {string} code The SRS identifier code, e.g. `EPSG:4326`.\n * @property {import(\"./Units.js\").Units} [units] Units. Required unless a\n * proj4 projection is defined for `code`.\n * @property {import(\"../extent.js\").Extent} [extent] The validity extent for the SRS.\n * @property {string} [axisOrientation='enu'] The axis orientation as specified in Proj4.\n * @property {boolean} [global=false] Whether the projection is valid for the whole globe.\n * @property {number} [metersPerUnit] The meters per unit for the SRS.\n * If not provided, the `units` are used to get the meters per unit from the {@link METERS_PER_UNIT}\n * lookup table.\n * @property {import(\"../extent.js\").Extent} [worldExtent] The world extent for the SRS.\n * @property {function(number, import(\"../coordinate.js\").Coordinate):number} [getPointResolution]\n * Function to determine resolution at a point. The function is called with a\n * `number` view resolution and a {@link module:ol/coordinate~Coordinate} as arguments, and returns\n * the `number` resolution in projection units at the passed coordinate. If this is `undefined`,\n * the default {@link module:ol/proj.getPointResolution} function will be used.\n */\n\n/**\n * @classdesc\n * Projection definition class. One of these is created for each projection\n * supported in the application and stored in the {@link module:ol/proj} namespace.\n * You can use these in applications, but this is not required, as API params\n * and options use {@link module:ol/proj~ProjectionLike} which means the simple string\n * code will suffice.\n *\n * You can use {@link module:ol/proj.get} to retrieve the object for a particular\n * projection.\n *\n * The library includes definitions for `EPSG:4326` and `EPSG:3857`, together\n * with the following aliases:\n * * `EPSG:4326`: CRS:84, urn:ogc:def:crs:EPSG:6.6:4326,\n * urn:ogc:def:crs:OGC:1.3:CRS84, urn:ogc:def:crs:OGC:2:84,\n * http://www.opengis.net/gml/srs/epsg.xml#4326,\n * urn:x-ogc:def:crs:EPSG:4326\n * * `EPSG:3857`: EPSG:102100, EPSG:102113, EPSG:900913,\n * urn:ogc:def:crs:EPSG:6.18:3:3857,\n * http://www.opengis.net/gml/srs/epsg.xml#3857\n *\n * If you use [proj4js](https://github.com/proj4js/proj4js), aliases can\n * be added using `proj4.defs()`. After all required projection definitions are\n * added, call the {@link module:ol/proj/proj4.register} function.\n *\n * @api\n */\nclass Projection {\n /**\n * @param {Options} options Projection options.\n */\n constructor(options) {\n /**\n * @private\n * @type {string}\n */\n this.code_ = options.code;\n\n /**\n * Units of projected coordinates. When set to `TILE_PIXELS`, a\n * `this.extent_` and `this.worldExtent_` must be configured properly for each\n * tile.\n * @private\n * @type {import(\"./Units.js\").Units}\n */\n this.units_ = /** @type {import(\"./Units.js\").Units} */ (options.units);\n\n /**\n * Validity extent of the projection in projected coordinates. For projections\n * with `TILE_PIXELS` units, this is the extent of the tile in\n * tile pixel space.\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.extent_ = options.extent !== undefined ? options.extent : null;\n\n /**\n * Extent of the world in EPSG:4326. For projections with\n * `TILE_PIXELS` units, this is the extent of the tile in\n * projected coordinate space.\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.worldExtent_ =\n options.worldExtent !== undefined ? options.worldExtent : null;\n\n /**\n * @private\n * @type {string}\n */\n this.axisOrientation_ =\n options.axisOrientation !== undefined ? options.axisOrientation : 'enu';\n\n /**\n * @private\n * @type {boolean}\n */\n this.global_ = options.global !== undefined ? options.global : false;\n\n /**\n * @private\n * @type {boolean}\n */\n this.canWrapX_ = !!(this.global_ && this.extent_);\n\n /**\n * @private\n * @type {function(number, import(\"../coordinate.js\").Coordinate):number|undefined}\n */\n this.getPointResolutionFunc_ = options.getPointResolution;\n\n /**\n * @private\n * @type {import(\"../tilegrid/TileGrid.js\").default}\n */\n this.defaultTileGrid_ = null;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.metersPerUnit_ = options.metersPerUnit;\n }\n\n /**\n * @return {boolean} The projection is suitable for wrapping the x-axis\n */\n canWrapX() {\n return this.canWrapX_;\n }\n\n /**\n * Get the code for this projection, e.g. 'EPSG:4326'.\n * @return {string} Code.\n * @api\n */\n getCode() {\n return this.code_;\n }\n\n /**\n * Get the validity extent for this projection.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n getExtent() {\n return this.extent_;\n }\n\n /**\n * Get the units of this projection.\n * @return {import(\"./Units.js\").Units} Units.\n * @api\n */\n getUnits() {\n return this.units_;\n }\n\n /**\n * Get the amount of meters per unit of this projection. If the projection is\n * not configured with `metersPerUnit` or a units identifier, the return is\n * `undefined`.\n * @return {number|undefined} Meters.\n * @api\n */\n getMetersPerUnit() {\n return this.metersPerUnit_ || METERS_PER_UNIT[this.units_];\n }\n\n /**\n * Get the world extent for this projection.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n getWorldExtent() {\n return this.worldExtent_;\n }\n\n /**\n * Get the axis orientation of this projection.\n * Example values are:\n * enu - the default easting, northing, elevation.\n * neu - northing, easting, up - useful for \"lat/long\" geographic coordinates,\n * or south orientated transverse mercator.\n * wnu - westing, northing, up - some planetary coordinate systems have\n * \"west positive\" coordinate systems\n * @return {string} Axis orientation.\n * @api\n */\n getAxisOrientation() {\n return this.axisOrientation_;\n }\n\n /**\n * Is this projection a global projection which spans the whole world?\n * @return {boolean} Whether the projection is global.\n * @api\n */\n isGlobal() {\n return this.global_;\n }\n\n /**\n * Set if the projection is a global projection which spans the whole world\n * @param {boolean} global Whether the projection is global.\n * @api\n */\n setGlobal(global) {\n this.global_ = global;\n this.canWrapX_ = !!(global && this.extent_);\n }\n\n /**\n * @return {import(\"../tilegrid/TileGrid.js\").default} The default tile grid.\n */\n getDefaultTileGrid() {\n return this.defaultTileGrid_;\n }\n\n /**\n * @param {import(\"../tilegrid/TileGrid.js\").default} tileGrid The default tile grid.\n */\n setDefaultTileGrid(tileGrid) {\n this.defaultTileGrid_ = tileGrid;\n }\n\n /**\n * Set the validity extent for this projection.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n setExtent(extent) {\n this.extent_ = extent;\n this.canWrapX_ = !!(this.global_ && extent);\n }\n\n /**\n * Set the world extent for this projection.\n * @param {import(\"../extent.js\").Extent} worldExtent World extent\n * [minlon, minlat, maxlon, maxlat].\n * @api\n */\n setWorldExtent(worldExtent) {\n this.worldExtent_ = worldExtent;\n }\n\n /**\n * Set the getPointResolution function (see {@link module:ol/proj.getPointResolution}\n * for this projection.\n * @param {function(number, import(\"../coordinate.js\").Coordinate):number} func Function\n * @api\n */\n setGetPointResolution(func) {\n this.getPointResolutionFunc_ = func;\n }\n\n /**\n * Get the custom point resolution function for this projection (if set).\n * @return {function(number, import(\"../coordinate.js\").Coordinate):number|undefined} The custom point\n * resolution function (if set).\n */\n getPointResolutionFunc() {\n return this.getPointResolutionFunc_;\n }\n}\n\nexport default Projection;\n","/**\n * @module ol/proj/epsg3857\n */\nimport Projection from './Projection.js';\n\n/**\n * Radius of WGS84 sphere\n *\n * @const\n * @type {number}\n */\nexport const RADIUS = 6378137;\n\n/**\n * @const\n * @type {number}\n */\nexport const HALF_SIZE = Math.PI * RADIUS;\n\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport const EXTENT = [-HALF_SIZE, -HALF_SIZE, HALF_SIZE, HALF_SIZE];\n\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport const WORLD_EXTENT = [-180, -85, 180, 85];\n\n/**\n * Maximum safe value in y direction\n * @const\n * @type {number}\n */\nexport const MAX_SAFE_Y = RADIUS * Math.log(Math.tan(Math.PI / 2));\n\n/**\n * @classdesc\n * Projection object for web/spherical Mercator (EPSG:3857).\n */\nclass EPSG3857Projection extends Projection {\n /**\n * @param {string} code Code.\n */\n constructor(code) {\n super({\n code: code,\n units: 'm',\n extent: EXTENT,\n global: true,\n worldExtent: WORLD_EXTENT,\n getPointResolution: function (resolution, point) {\n return resolution / Math.cosh(point[1] / RADIUS);\n },\n });\n }\n}\n\n/**\n * Projections equal to EPSG:3857.\n *\n * @const\n * @type {Array}\n */\nexport const PROJECTIONS = [\n new EPSG3857Projection('EPSG:3857'),\n new EPSG3857Projection('EPSG:102100'),\n new EPSG3857Projection('EPSG:102113'),\n new EPSG3857Projection('EPSG:900913'),\n new EPSG3857Projection('http://www.opengis.net/def/crs/EPSG/0/3857'),\n new EPSG3857Projection('http://www.opengis.net/gml/srs/epsg.xml#3857'),\n];\n\n/**\n * Transformation from EPSG:4326 to EPSG:3857.\n *\n * @param {Array} input Input array of coordinate values.\n * @param {Array} [output] Output array of coordinate values.\n * @param {number} [dimension] Dimension (default is `2`).\n * @return {Array} Output array of coordinate values.\n */\nexport function fromEPSG4326(input, output, dimension) {\n const length = input.length;\n dimension = dimension > 1 ? dimension : 2;\n if (output === undefined) {\n if (dimension > 2) {\n // preserve values beyond second dimension\n output = input.slice();\n } else {\n output = new Array(length);\n }\n }\n for (let i = 0; i < length; i += dimension) {\n output[i] = (HALF_SIZE * input[i]) / 180;\n let y = RADIUS * Math.log(Math.tan((Math.PI * (+input[i + 1] + 90)) / 360));\n if (y > MAX_SAFE_Y) {\n y = MAX_SAFE_Y;\n } else if (y < -MAX_SAFE_Y) {\n y = -MAX_SAFE_Y;\n }\n output[i + 1] = y;\n }\n return output;\n}\n\n/**\n * Transformation from EPSG:3857 to EPSG:4326.\n *\n * @param {Array} input Input array of coordinate values.\n * @param {Array} [output] Output array of coordinate values.\n * @param {number} [dimension] Dimension (default is `2`).\n * @return {Array} Output array of coordinate values.\n */\nexport function toEPSG4326(input, output, dimension) {\n const length = input.length;\n dimension = dimension > 1 ? dimension : 2;\n if (output === undefined) {\n if (dimension > 2) {\n // preserve values beyond second dimension\n output = input.slice();\n } else {\n output = new Array(length);\n }\n }\n for (let i = 0; i < length; i += dimension) {\n output[i] = (180 * input[i]) / HALF_SIZE;\n output[i + 1] =\n (360 * Math.atan(Math.exp(input[i + 1] / RADIUS))) / Math.PI - 90;\n }\n return output;\n}\n","/**\n * @module ol/proj/epsg4326\n */\nimport Projection from './Projection.js';\n\n/**\n * Semi-major radius of the WGS84 ellipsoid.\n *\n * @const\n * @type {number}\n */\nexport const RADIUS = 6378137;\n\n/**\n * Extent of the EPSG:4326 projection which is the whole world.\n *\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport const EXTENT = [-180, -90, 180, 90];\n\n/**\n * @const\n * @type {number}\n */\nexport const METERS_PER_UNIT = (Math.PI * RADIUS) / 180;\n\n/**\n * @classdesc\n * Projection object for WGS84 geographic coordinates (EPSG:4326).\n *\n * Note that OpenLayers does not strictly comply with the EPSG definition.\n * The EPSG registry defines 4326 as a CRS for Latitude,Longitude (y,x).\n * OpenLayers treats EPSG:4326 as a pseudo-projection, with x,y coordinates.\n */\nclass EPSG4326Projection extends Projection {\n /**\n * @param {string} code Code.\n * @param {string} [axisOrientation] Axis orientation.\n */\n constructor(code, axisOrientation) {\n super({\n code: code,\n units: 'degrees',\n extent: EXTENT,\n axisOrientation: axisOrientation,\n global: true,\n metersPerUnit: METERS_PER_UNIT,\n worldExtent: EXTENT,\n });\n }\n}\n\n/**\n * Projections equal to EPSG:4326.\n *\n * @const\n * @type {Array}\n */\nexport const PROJECTIONS = [\n new EPSG4326Projection('CRS:84'),\n new EPSG4326Projection('EPSG:4326', 'neu'),\n new EPSG4326Projection('urn:ogc:def:crs:OGC:1.3:CRS84'),\n new EPSG4326Projection('urn:ogc:def:crs:OGC:2:84'),\n new EPSG4326Projection('http://www.opengis.net/def/crs/OGC/1.3/CRS84'),\n new EPSG4326Projection('http://www.opengis.net/gml/srs/epsg.xml#4326', 'neu'),\n new EPSG4326Projection('http://www.opengis.net/def/crs/EPSG/0/4326', 'neu'),\n];\n","/**\n * @module ol/proj/projections\n */\n\n/**\n * @type {Object}\n */\nlet cache = {};\n\n/**\n * Clear the projections cache.\n */\nexport function clear() {\n cache = {};\n}\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 (\n cache[code] ||\n cache[code.replace(/urn:(x-)?ogc:def:crs:EPSG:(.*:)?(\\w+)$/, 'EPSG:$3')] ||\n null\n );\n}\n\n/**\n * Add a projection to the cache.\n * @param {string} code The projection code.\n * @param {import(\"./Projection.js\").default} projection The projection to cache.\n */\nexport function add(code, projection) {\n cache[code] = projection;\n}\n","/**\n * @module ol/proj/transforms\n */\nimport {isEmpty} from '../obj.js';\n\n/**\n * @private\n * @type {!Object>}\n */\nlet transforms = {};\n\n/**\n * Clear the transform cache.\n */\nexport function clear() {\n transforms = {};\n}\n\n/**\n * Registers a conversion function to convert coordinates from the source\n * projection to the destination projection.\n *\n * @param {import(\"./Projection.js\").default} source Source.\n * @param {import(\"./Projection.js\").default} destination Destination.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform.\n */\nexport function add(source, destination, transformFn) {\n const sourceCode = source.getCode();\n const destinationCode = destination.getCode();\n if (!(sourceCode in transforms)) {\n transforms[sourceCode] = {};\n }\n transforms[sourceCode][destinationCode] = transformFn;\n}\n\n/**\n * Unregisters the conversion function to convert coordinates from the source\n * projection to the destination projection. This method is used to clean up\n * cached transforms during testing.\n *\n * @param {import(\"./Projection.js\").default} source Source projection.\n * @param {import(\"./Projection.js\").default} destination Destination projection.\n * @return {import(\"../proj.js\").TransformFunction} transformFn The unregistered transform.\n */\nexport function remove(source, destination) {\n const sourceCode = source.getCode();\n const destinationCode = destination.getCode();\n const transform = transforms[sourceCode][destinationCode];\n delete transforms[sourceCode][destinationCode];\n if (isEmpty(transforms[sourceCode])) {\n delete transforms[sourceCode];\n }\n return transform;\n}\n\n/**\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 let transform;\n if (sourceCode in transforms && destinationCode in transforms[sourceCode]) {\n transform = transforms[sourceCode][destinationCode];\n }\n return transform;\n}\n","/**\n * @module ol/string\n */\n\n/**\n * @param {number} number Number to be formatted\n * @param {number} width The desired width\n * @param {number} [precision] Precision of the output string (i.e. number of decimal places)\n * @return {string} Formatted string\n */\nexport function padNumber(number, width, precision) {\n const numberString =\n precision !== undefined ? number.toFixed(precision) : '' + number;\n let decimal = numberString.indexOf('.');\n decimal = decimal === -1 ? numberString.length : decimal;\n return decimal > width\n ? numberString\n : new Array(1 + width - decimal).join('0') + numberString;\n}\n\n/**\n * Adapted from https://github.com/omichelsen/compare-versions/blob/master/index.js\n * @param {string|number} v1 First version\n * @param {string|number} v2 Second version\n * @return {number} Value\n */\nexport function compareVersions(v1, v2) {\n const s1 = ('' + v1).split('.');\n const s2 = ('' + v2).split('.');\n\n for (let i = 0; i < Math.max(s1.length, s2.length); i++) {\n const n1 = parseInt(s1[i] || '0', 10);\n const n2 = parseInt(s2[i] || '0', 10);\n\n if (n1 > n2) {\n return 1;\n }\n if (n2 > n1) {\n return -1;\n }\n }\n\n return 0;\n}\n","/**\n * @module ol/coordinate\n */\nimport {getWidth} from './extent.js';\nimport {modulo, toFixed} from './math.js';\nimport {padNumber} from './string.js';\n\n/**\n * An array of numbers representing an `xy`, `xyz` or `xyzm` coordinate.\n * Example: `[16, 48]`.\n * @typedef {Array} Coordinate\n * @api\n */\n\n/**\n * A function that takes a {@link module:ol/coordinate~Coordinate} and\n * transforms it into a `{string}`.\n *\n * @typedef {function((Coordinate|undefined)): string} CoordinateFormat\n * @api\n */\n\n/**\n * Add `delta` to `coordinate`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {add} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * add(coord, [-2, 4]);\n * // coord is now [5.85, 51.983333]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {Coordinate} delta Delta.\n * @return {Coordinate} The input coordinate adjusted by\n * the given delta.\n * @api\n */\nexport function add(coordinate, delta) {\n coordinate[0] += +delta[0];\n coordinate[1] += +delta[1];\n return coordinate;\n}\n\n/**\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 const r = circle.getRadius();\n const center = circle.getCenter();\n const x0 = center[0];\n const y0 = center[1];\n const x1 = coordinate[0];\n const y1 = coordinate[1];\n\n let dx = x1 - x0;\n const dy = y1 - y0;\n if (dx === 0 && dy === 0) {\n dx = 1;\n }\n const d = Math.sqrt(dx * dx + dy * dy);\n\n const x = x0 + (r * dx) / d;\n const y = y0 + (r * dy) / d;\n\n return [x, y];\n}\n\n/**\n * Calculates the point closest to the passed coordinate on the passed segment.\n * This is the foot of the perpendicular of the coordinate to the segment when\n * the foot is on the segment, or the closest segment coordinate when the foot\n * is outside the segment.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {Array} segment The two coordinates\n * of the segment.\n * @return {Coordinate} The foot of the perpendicular of\n * the coordinate to the segment.\n */\nexport function closestOnSegment(coordinate, segment) {\n const x0 = coordinate[0];\n const y0 = coordinate[1];\n const start = segment[0];\n const end = segment[1];\n const x1 = start[0];\n const y1 = start[1];\n const x2 = end[0];\n const y2 = end[1];\n const dx = x2 - x1;\n const dy = y2 - y1;\n const along =\n dx === 0 && dy === 0\n ? 0\n : (dx * (x0 - x1) + dy * (y0 - y1)) / (dx * dx + dy * dy || 0);\n let x, y;\n if (along <= 0) {\n x = x1;\n y = y1;\n } else if (along >= 1) {\n x = x2;\n y = y2;\n } else {\n x = x1 + along * dx;\n y = y1 + along * dy;\n }\n return [x, y];\n}\n\n/**\n * Returns a {@link module:ol/coordinate~CoordinateFormat} function that can be\n * used to format\n * a {Coordinate} to a string.\n *\n * Example without specifying the fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const stringifyFunc = createStringXY();\n * const 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.js';\n *\n * const coord = [7.85, 47.983333];\n * const stringifyFunc = createStringXY(2);\n * const out = stringifyFunc(coord);\n * // out is now '7.85, 47.98'\n *\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {CoordinateFormat} Coordinate format.\n * @api\n */\nexport function createStringXY(fractionDigits) {\n return (\n /**\n * @param {Coordinate} coordinate Coordinate.\n * @return {string} String XY.\n */\n function (coordinate) {\n return toStringXY(coordinate, fractionDigits);\n }\n );\n}\n\n/**\n * @param {string} hemispheres Hemispheres.\n * @param {number} degrees Degrees.\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} String.\n */\nexport function degreesToStringHDMS(hemispheres, degrees, fractionDigits) {\n const normalizedDegrees = modulo(degrees + 180, 360) - 180;\n const x = Math.abs(3600 * normalizedDegrees);\n const decimals = fractionDigits || 0;\n\n let deg = Math.floor(x / 3600);\n let min = Math.floor((x - deg * 3600) / 60);\n let sec = toFixed(x - deg * 3600 - min * 60, decimals);\n\n if (sec >= 60) {\n sec = 0;\n min += 1;\n }\n\n if (min >= 60) {\n min = 0;\n deg += 1;\n }\n\n let hdms = deg + '\\u00b0';\n if (min !== 0 || sec !== 0) {\n hdms += ' ' + padNumber(min, 2) + '\\u2032';\n }\n if (sec !== 0) {\n hdms += ' ' + padNumber(sec, 2, decimals) + '\\u2033';\n }\n if (normalizedDegrees !== 0) {\n hdms += ' ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0);\n }\n\n return hdms;\n}\n\n/**\n * Transforms the given {@link module:ol/coordinate~Coordinate} to a string\n * using the given string template. The strings `{x}` and `{y}` in the template\n * will be replaced with the first and second coordinate values respectively.\n *\n * Example without specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const template = 'Coordinate is ({x}|{y}).';\n * const 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.js';\n *\n * const coord = [7.85, 47.983333];\n * const template = 'Coordinate is ({x}|{y}).';\n * const out = format(coord, template, 2);\n * // out is now 'Coordinate is (7.85|47.98).'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {string} template A template string with `{x}` and `{y}` placeholders\n * that will be replaced by first and second coordinate values.\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Formatted coordinate.\n * @api\n */\nexport function format(coordinate, template, fractionDigits) {\n if (coordinate) {\n return template\n .replace('{x}', coordinate[0].toFixed(fractionDigits))\n .replace('{y}', coordinate[1].toFixed(fractionDigits));\n }\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 let equals = true;\n for (let i = coordinate1.length - 1; i >= 0; --i) {\n if (coordinate1[i] != coordinate2[i]) {\n equals = false;\n break;\n }\n }\n return equals;\n}\n\n/**\n * Rotate `coordinate` by `angle`. `coordinate` is modified in place and\n * returned by the function.\n *\n * Example:\n *\n * import {rotate} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const rotateRadians = Math.PI / 2; // 90 degrees\n * rotate(coord, rotateRadians);\n * // coord is now [-47.983333, 7.85]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} angle Angle in radian.\n * @return {Coordinate} Coordinate.\n * @api\n */\nexport function rotate(coordinate, angle) {\n const cosAngle = Math.cos(angle);\n const sinAngle = Math.sin(angle);\n const x = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n const y = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n coordinate[0] = x;\n coordinate[1] = y;\n return coordinate;\n}\n\n/**\n * Scale `coordinate` by `scale`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {scale as scaleCoordinate} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const scale = 1.2;\n * scaleCoordinate(coord, scale);\n * // coord is now [9.42, 57.5799996]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} scale Scale factor.\n * @return {Coordinate} Coordinate.\n */\nexport function scale(coordinate, scale) {\n coordinate[0] *= scale;\n coordinate[1] *= scale;\n return coordinate;\n}\n\n/**\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 const dx = coord1[0] - coord2[0];\n const dy = coord1[1] - coord2[1];\n return dx * dx + dy * dy;\n}\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/**\n * Calculate the squared distance from a coordinate to a line segment.\n *\n * @param {Coordinate} coordinate Coordinate of the point.\n * @param {Array} segment Line segment (2\n * coordinates).\n * @return {number} Squared distance from the point to the line segment.\n */\nexport function squaredDistanceToSegment(coordinate, segment) {\n return squaredDistance(coordinate, closestOnSegment(coordinate, segment));\n}\n\n/**\n * Format a geographic coordinate with the hemisphere, degrees, minutes, and\n * seconds.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringHDMS} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const 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.js';\n *\n * const coord = [7.85, 47.983333];\n * const 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} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Hemisphere, degrees, minutes and seconds.\n * @api\n */\nexport function toStringHDMS(coordinate, fractionDigits) {\n if (coordinate) {\n return (\n degreesToStringHDMS('NS', coordinate[1], fractionDigits) +\n ' ' +\n degreesToStringHDMS('EW', coordinate[0], fractionDigits)\n );\n }\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.js';\n *\n * const coord = [7.85, 47.983333];\n * const out = toStringXY(coord);\n * // out is now '8, 48'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringXY} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const out = toStringXY(coord, 1);\n * // out is now '7.8, 48.0'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} XY.\n * @api\n */\nexport function toStringXY(coordinate, fractionDigits) {\n return format(coordinate, '{x}, {y}', fractionDigits);\n}\n\n/**\n * Modifies the provided coordinate in-place to be within the real world\n * extent. The lower projection extent boundary is inclusive, the upper one\n * exclusive.\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {Coordinate} The coordinate within the real world extent.\n */\nexport function wrapX(coordinate, projection) {\n if (projection.canWrapX()) {\n const worldWidth = getWidth(projection.getExtent());\n const worldsAway = getWorldsAway(coordinate, projection, worldWidth);\n if (worldsAway) {\n coordinate[0] -= worldsAway * worldWidth;\n }\n }\n return coordinate;\n}\n/**\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {number} [sourceExtentWidth] Width of the source extent.\n * @return {number} Offset in world widths.\n */\nexport function getWorldsAway(coordinate, projection, sourceExtentWidth) {\n const projectionExtent = projection.getExtent();\n let worldsAway = 0;\n if (\n projection.canWrapX() &&\n (coordinate[0] < projectionExtent[0] || coordinate[0] > projectionExtent[2])\n ) {\n sourceExtentWidth = sourceExtentWidth || getWidth(projectionExtent);\n worldsAway = Math.floor(\n (coordinate[0] - projectionExtent[0]) / sourceExtentWidth\n );\n }\n return worldsAway;\n}\n","/**\n * @module ol/sphere\n */\nimport {toDegrees, toRadians} from './math.js';\n\n/**\n * Object literal with options for the {@link getLength} or {@link getArea}\n * functions.\n * @typedef {Object} SphereMetricOptions\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857']\n * Projection of the geometry. By default, the geometry is assumed to be in\n * Web Mercator.\n * @property {number} [radius=6371008.8] Sphere radius. By default, the\n * [mean Earth radius](https://en.wikipedia.org/wiki/Earth_radius#Mean_radius)\n * for the WGS84 ellipsoid is used.\n */\n\n/**\n * The mean Earth radius (1/3 * (2a + b)) for the WGS84 ellipsoid.\n * https://en.wikipedia.org/wiki/Earth_radius#Mean_radius\n * @type {number}\n */\nexport const DEFAULT_RADIUS = 6371008.8;\n\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} [radius] The sphere radius to use. Defaults to the Earth's\n * mean radius using the WGS84 ellipsoid.\n * @return {number} The great circle distance between the points (in meters).\n * @api\n */\nexport function getDistance(c1, c2, radius) {\n radius = radius || DEFAULT_RADIUS;\n const lat1 = toRadians(c1[1]);\n const lat2 = toRadians(c2[1]);\n const deltaLatBy2 = (lat2 - lat1) / 2;\n const deltaLonBy2 = toRadians(c2[0] - c1[0]) / 2;\n const a =\n Math.sin(deltaLatBy2) * Math.sin(deltaLatBy2) +\n Math.sin(deltaLonBy2) *\n Math.sin(deltaLonBy2) *\n Math.cos(lat1) *\n Math.cos(lat2);\n return 2 * radius * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n}\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 let length = 0;\n for (let i = 0, ii = coordinates.length; i < ii - 1; ++i) {\n length += getDistance(coordinates[i], coordinates[i + 1], radius);\n }\n return length;\n}\n\n/**\n * Get the spherical length of a geometry. This length is the sum of the\n * great circle distances between coordinates. For polygons, the length is\n * the sum of all rings. For points, the length is zero. For multi-part\n * geometries, the length is the sum of the length of each part.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions} [options] Options for the\n * length calculation. By default, geometries are assumed to be in 'EPSG:3857'.\n * You can change this by providing a `projection` option.\n * @return {number} The spherical length (in meters).\n * @api\n */\nexport function getLength(geometry, options) {\n options = options || {};\n const radius = options.radius || DEFAULT_RADIUS;\n const projection = options.projection || 'EPSG:3857';\n const type = geometry.getType();\n if (type !== 'GeometryCollection') {\n geometry = geometry.clone().transform(projection, 'EPSG:4326');\n }\n let length = 0;\n let coordinates, coords, i, ii, j, jj;\n switch (type) {\n case 'Point':\n case 'MultiPoint': {\n break;\n }\n case 'LineString':\n case 'LinearRing': {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (\n geometry\n ).getCoordinates();\n length = getLengthInternal(coordinates, radius);\n break;\n }\n case 'MultiLineString':\n case 'Polygon': {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (\n geometry\n ).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n length += getLengthInternal(coordinates[i], radius);\n }\n break;\n }\n case 'MultiPolygon': {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (\n geometry\n ).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n coords = coordinates[i];\n for (j = 0, jj = coords.length; j < jj; ++j) {\n length += getLengthInternal(coords[j], radius);\n }\n }\n break;\n }\n case 'GeometryCollection': {\n const geometries =\n /** @type {import(\"./geom/GeometryCollection.js\").default} */ (\n geometry\n ).getGeometries();\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n length += getLength(geometries[i], options);\n }\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return length;\n}\n\n/**\n * Returns the spherical area for a list of coordinates.\n *\n * [Reference](https://trs.jpl.nasa.gov/handle/2014/40409)\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for\n * Polygons on a Sphere\", JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007\n *\n * @param {Array} coordinates List of coordinates of a linear\n * ring. If the ring is oriented clockwise, the area will be positive,\n * otherwise it will be negative.\n * @param {number} radius The sphere radius.\n * @return {number} Area (in square meters).\n */\nfunction getAreaInternal(coordinates, radius) {\n let area = 0;\n const len = coordinates.length;\n let x1 = coordinates[len - 1][0];\n let y1 = coordinates[len - 1][1];\n for (let i = 0; i < len; i++) {\n const x2 = coordinates[i][0];\n const y2 = coordinates[i][1];\n area +=\n toRadians(x2 - x1) *\n (2 + Math.sin(toRadians(y1)) + Math.sin(toRadians(y2)));\n x1 = x2;\n y1 = y2;\n }\n return (area * radius * radius) / 2.0;\n}\n\n/**\n * Get the spherical area of a geometry. This is the area (in meters) assuming\n * that polygon edges are segments of great circles on a sphere.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions} [options] Options for the area\n * calculation. By default, geometries are assumed to be in 'EPSG:3857'.\n * You can change this by providing a `projection` option.\n * @return {number} The spherical area (in square meters).\n * @api\n */\nexport function getArea(geometry, options) {\n options = options || {};\n const radius = options.radius || DEFAULT_RADIUS;\n const projection = options.projection || 'EPSG:3857';\n const type = geometry.getType();\n if (type !== 'GeometryCollection') {\n geometry = geometry.clone().transform(projection, 'EPSG:4326');\n }\n let area = 0;\n let coordinates, coords, i, ii, j, jj;\n switch (type) {\n case 'Point':\n case 'MultiPoint':\n case 'LineString':\n case 'MultiLineString':\n case 'LinearRing': {\n break;\n }\n case 'Polygon': {\n coordinates = /** @type {import(\"./geom/Polygon.js\").default} */ (\n geometry\n ).getCoordinates();\n area = Math.abs(getAreaInternal(coordinates[0], radius));\n for (i = 1, ii = coordinates.length; i < ii; ++i) {\n area -= Math.abs(getAreaInternal(coordinates[i], radius));\n }\n break;\n }\n case 'MultiPolygon': {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (\n geometry\n ).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n coords = coordinates[i];\n area += Math.abs(getAreaInternal(coords[0], radius));\n for (j = 1, jj = coords.length; j < jj; ++j) {\n area -= Math.abs(getAreaInternal(coords[j], radius));\n }\n }\n break;\n }\n case 'GeometryCollection': {\n const geometries =\n /** @type {import(\"./geom/GeometryCollection.js\").default} */ (\n geometry\n ).getGeometries();\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n area += getArea(geometries[i], options);\n }\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return area;\n}\n\n/**\n * Returns the coordinate at the given distance and bearing from `c1`.\n *\n * @param {import(\"./coordinate.js\").Coordinate} c1 The origin point (`[lon, lat]` in degrees).\n * @param {number} distance The great-circle distance between the origin\n * point and the target point.\n * @param {number} bearing The bearing (in radians).\n * @param {number} [radius] The sphere radius to use. Defaults to the Earth's\n * mean radius using the WGS84 ellipsoid.\n * @return {import(\"./coordinate.js\").Coordinate} The target point.\n */\nexport function offset(c1, distance, bearing, radius) {\n radius = radius || DEFAULT_RADIUS;\n const lat1 = toRadians(c1[1]);\n const lon1 = toRadians(c1[0]);\n const dByR = distance / radius;\n const lat = Math.asin(\n Math.sin(lat1) * Math.cos(dByR) +\n Math.cos(lat1) * Math.sin(dByR) * Math.cos(bearing)\n );\n const lon =\n lon1 +\n Math.atan2(\n Math.sin(bearing) * Math.sin(dByR) * Math.cos(lat1),\n Math.cos(dByR) - Math.sin(lat1) * Math.sin(lat)\n );\n return [toDegrees(lon), toDegrees(lat)];\n}\n","/**\n * @module ol/console\n */\n\n/**\n * @typedef {'info'|'warn'|'error'|'none'} Level\n */\n\n/**\n * @type {Object}\n */\nconst levels = {\n info: 1,\n warn: 2,\n error: 3,\n none: 4,\n};\n\n/**\n * @type {number}\n */\nlet level = levels.info;\n\n/**\n * Set the logging level. By default, the level is set to 'info' and all\n * messages will be logged. Set to 'warn' to only display warnings and errors.\n * Set to 'error' to only display errors. Set to 'none' to silence all messages.\n *\n * @param {Level} l The new level.\n */\nexport function setLevel(l) {\n level = levels[l];\n}\n\n/**\n * @param {...any} args Arguments to log\n */\nexport function log(...args) {\n if (level > levels.info) {\n return;\n }\n console.log(...args); // eslint-disable-line no-console\n}\n\n/**\n * @param {...any} args Arguments to log\n */\nexport function warn(...args) {\n if (level > levels.warn) {\n return;\n }\n console.warn(...args); // eslint-disable-line no-console\n}\n\n/**\n * @param {...any} args Arguments to log\n */\nexport function error(...args) {\n if (level > levels.error) {\n return;\n }\n console.error(...args); // eslint-disable-line no-console\n}\n","/**\n * @module ol/proj\n */\n\n/**\n * The ol/proj module stores:\n * * a list of {@link module:ol/proj/Projection~Projection}\n * objects, one for each projection supported by the application\n * * a list of transform functions needed to convert coordinates in one projection\n * into another.\n *\n * The static functions are the methods used to maintain these.\n * Each transform function can handle not only simple coordinate pairs, but also\n * large arrays of coordinates such as vector geometries.\n *\n * When loaded, the library adds projection objects for EPSG:4326 (WGS84\n * geographic coordinates) and EPSG:3857 (Web or Spherical Mercator, as used\n * for example by Bing Maps or OpenStreetMap), together with the relevant\n * transform functions.\n *\n * Additional transforms may be added by using the http://proj4js.org/\n * library (version 2.2 or later). You can use the full build supplied by\n * Proj4js, or create a custom build to support those projections you need; see\n * the Proj4js website for how to do this. You also need the Proj4js definitions\n * for the required projections. These definitions can be obtained from\n * https://epsg.io/, and are a JS function, so can be loaded in a script\n * tag (as in the examples) or pasted into your application.\n *\n * After all required projection definitions are added to proj4's registry (by\n * using `proj4.defs()`), simply call `register(proj4)` from the `ol/proj/proj4`\n * package. Existing transforms are not changed by this function. See\n * examples/wms-image-custom-proj for an example of this.\n *\n * Additional projection definitions can be registered with `proj4.defs()` any\n * time. Just make sure to call `register(proj4)` again; for example, with user-supplied data where you don't\n * know in advance what projections are needed, you can initially load minimal\n * support and then load whichever are requested.\n *\n * Note that Proj4js does not support projection extents. If you want to add\n * one for creating default tile grids, you can add it after the Projection\n * object has been created with `setExtent`, for example,\n * `get('EPSG:1234').setExtent(extent)`.\n *\n * In addition to Proj4js support, any transform functions can be added with\n * {@link module:ol/proj.addCoordinateTransforms}. To use this, you must first create\n * a {@link module:ol/proj/Projection~Projection} object for the new projection and add it with\n * {@link module:ol/proj.addProjection}. You can then add the forward and inverse\n * functions with {@link module:ol/proj.addCoordinateTransforms}. See\n * examples/wms-custom-proj for an example of this.\n *\n * Note that if no transforms are needed and you only need to define the\n * projection, just add a {@link module:ol/proj/Projection~Projection} with\n * {@link module:ol/proj.addProjection}. See examples/wms-no-proj for an example of\n * this.\n */\nimport Projection from './proj/Projection.js';\nimport {\n PROJECTIONS as EPSG3857_PROJECTIONS,\n fromEPSG4326,\n toEPSG4326,\n} from './proj/epsg3857.js';\nimport {PROJECTIONS as EPSG4326_PROJECTIONS} from './proj/epsg4326.js';\nimport {METERS_PER_UNIT} from './proj/Units.js';\nimport {\n add as addProj,\n clear as clearProj,\n get as getProj,\n} from './proj/projections.js';\nimport {\n add as addTransformFunc,\n clear as clearTransformFuncs,\n get as getTransformFunc,\n} from './proj/transforms.js';\nimport {applyTransform, getWidth} from './extent.js';\nimport {clamp, modulo} from './math.js';\nimport {equals, getWorldsAway} from './coordinate.js';\nimport {getDistance} from './sphere.js';\nimport {warn} from './console.js';\n\n/**\n * A projection as {@link module:ol/proj/Projection~Projection}, SRS identifier\n * string or undefined.\n * @typedef {Projection|string|undefined} ProjectionLike\n * @api\n */\n\n/**\n * A transform function accepts an array of input coordinate values, an optional\n * output array, and an optional dimension (default should be 2). The function\n * transforms the input coordinate values, populates the output array, and\n * returns the output array.\n *\n * @typedef {function(Array, Array=, number=): Array} TransformFunction\n * @api\n */\n\nexport {METERS_PER_UNIT};\n\nexport {Projection};\n\nlet showCoordinateWarning = true;\n\n/**\n * @param {boolean} [disable = true] Disable console info about `useGeographic()`\n */\nexport function disableCoordinateWarning(disable) {\n const hide = disable === undefined ? true : disable;\n showCoordinateWarning = !hide;\n}\n\n/**\n * @param {Array} input Input coordinate array.\n * @param {Array} [output] Output array of coordinate values.\n * @return {Array} Output coordinate array (new array, same coordinate\n * values).\n */\nexport function cloneTransform(input, output) {\n if (output !== undefined) {\n for (let i = 0, ii = input.length; i < ii; ++i) {\n output[i] = input[i];\n }\n output = output;\n } else {\n output = input.slice();\n }\n return output;\n}\n\n/**\n * @param {Array} input Input coordinate array.\n * @param {Array} [output] Output array of coordinate values.\n * @return {Array} Input coordinate array (same array as input).\n */\nexport function identityTransform(input, output) {\n if (output !== undefined && input !== output) {\n for (let i = 0, ii = input.length; i < ii; ++i) {\n output[i] = input[i];\n }\n input = output;\n }\n return input;\n}\n\n/**\n * Add a Projection object to the list of supported projections that can be\n * looked up by their code.\n *\n * @param {Projection} projection Projection instance.\n * @api\n */\nexport function addProjection(projection) {\n addProj(projection.getCode(), projection);\n addTransformFunc(projection, projection, cloneTransform);\n}\n\n/**\n * @param {Array} projections Projections.\n */\nexport function addProjections(projections) {\n projections.forEach(addProjection);\n}\n\n/**\n * Fetches a Projection object for the code specified.\n *\n * @param {ProjectionLike} projectionLike Either a code string which is\n * a combination of authority and identifier such as \"EPSG:4326\", or an\n * existing projection object, or undefined.\n * @return {Projection|null} Projection object, or null if not in list.\n * @api\n */\nexport function get(projectionLike) {\n return typeof projectionLike === 'string'\n ? getProj(/** @type {string} */ (projectionLike))\n : /** @type {Projection} */ (projectionLike) || null;\n}\n\n/**\n * Get the resolution of the point in degrees or distance units.\n * For projections with degrees as the unit this will simply return the\n * provided resolution. For other projections the point resolution is\n * by default estimated by transforming the `point` pixel to EPSG:4326,\n * measuring its width and height on the normal sphere,\n * and taking the average of the width and height.\n * A custom function can be provided for a specific projection, either\n * by setting the `getPointResolution` option in the\n * {@link module:ol/proj/Projection~Projection} constructor or by using\n * {@link module:ol/proj/Projection~Projection#setGetPointResolution} to change an existing\n * projection object.\n * @param {ProjectionLike} projection The projection.\n * @param {number} resolution Nominal resolution in projection units.\n * @param {import(\"./coordinate.js\").Coordinate} point Point to find adjusted resolution at.\n * @param {import(\"./proj/Units.js\").Units} [units] Units to get the point resolution in.\n * Default is the projection's units.\n * @return {number} Point resolution.\n * @api\n */\nexport function getPointResolution(projection, resolution, point, units) {\n projection = get(projection);\n let pointResolution;\n const getter = projection.getPointResolutionFunc();\n if (getter) {\n pointResolution = getter(resolution, point);\n if (units && units !== projection.getUnits()) {\n const metersPerUnit = projection.getMetersPerUnit();\n if (metersPerUnit) {\n pointResolution =\n (pointResolution * metersPerUnit) / METERS_PER_UNIT[units];\n }\n }\n } else {\n const projUnits = projection.getUnits();\n if ((projUnits == 'degrees' && !units) || units == 'degrees') {\n pointResolution = resolution;\n } else {\n // Estimate point resolution by transforming the center pixel to EPSG:4326,\n // measuring its width and height on the normal sphere, and taking the\n // average of the width and height.\n const toEPSG4326 = getTransformFromProjections(\n projection,\n get('EPSG:4326')\n );\n if (toEPSG4326 === identityTransform && projUnits !== 'degrees') {\n // no transform is available\n pointResolution = resolution * projection.getMetersPerUnit();\n } else {\n let vertices = [\n point[0] - resolution / 2,\n point[1],\n point[0] + resolution / 2,\n point[1],\n point[0],\n point[1] - resolution / 2,\n point[0],\n point[1] + resolution / 2,\n ];\n vertices = toEPSG4326(vertices, vertices, 2);\n const width = getDistance(vertices.slice(0, 2), vertices.slice(2, 4));\n const height = getDistance(vertices.slice(4, 6), vertices.slice(6, 8));\n pointResolution = (width + height) / 2;\n }\n const metersPerUnit = units\n ? METERS_PER_UNIT[units]\n : projection.getMetersPerUnit();\n if (metersPerUnit !== undefined) {\n pointResolution /= metersPerUnit;\n }\n }\n }\n return pointResolution;\n}\n\n/**\n * Registers transformation functions that don't alter coordinates. Those allow\n * to transform between projections with equal meaning.\n *\n * @param {Array} projections Projections.\n * @api\n */\nexport function addEquivalentProjections(projections) {\n addProjections(projections);\n projections.forEach(function (source) {\n projections.forEach(function (destination) {\n if (source !== destination) {\n addTransformFunc(source, destination, cloneTransform);\n }\n });\n });\n}\n\n/**\n * Registers transformation functions to convert coordinates in any projection\n * in projection1 to any projection in projection2.\n *\n * @param {Array} projections1 Projections with equal\n * meaning.\n * @param {Array} projections2 Projections with equal\n * meaning.\n * @param {TransformFunction} forwardTransform Transformation from any\n * projection in projection1 to any projection in projection2.\n * @param {TransformFunction} inverseTransform Transform from any projection\n * in projection2 to any projection in projection1..\n */\nexport function addEquivalentTransforms(\n projections1,\n projections2,\n forwardTransform,\n inverseTransform\n) {\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/**\n * Clear all cached projections and transforms.\n */\nexport function clearAllProjections() {\n clearProj();\n clearTransformFuncs();\n}\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 if (typeof projection === 'string') {\n return get(projection);\n }\n return /** @type {Projection} */ (projection);\n}\n\n/**\n * Creates a {@link module:ol/proj~TransformFunction} from a simple 2D coordinate transform\n * function.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} coordTransform Coordinate\n * transform.\n * @return {TransformFunction} Transform function.\n */\nexport function createTransformFromCoordinateTransform(coordTransform) {\n return (\n /**\n * @param {Array} input Input.\n * @param {Array} [output] Output.\n * @param {number} [dimension] Dimension.\n * @return {Array} Output.\n */\n function (input, output, dimension) {\n const length = input.length;\n dimension = dimension !== undefined ? dimension : 2;\n output = output !== undefined ? output : new Array(length);\n for (let i = 0; i < length; i += dimension) {\n const point = coordTransform(input.slice(i, i + dimension));\n const pointLength = point.length;\n for (let j = 0, jj = dimension; j < jj; ++j) {\n output[i + j] = j >= pointLength ? input[i + j] : point[j];\n }\n }\n return output;\n }\n );\n}\n\n/**\n * Registers coordinate transform functions to convert coordinates between the\n * source projection and the destination projection.\n * The forward and inverse functions convert coordinate pairs; this function\n * converts these into the functions used internally which also handle\n * extents and coordinate arrays.\n *\n * @param {ProjectionLike} source Source projection.\n * @param {ProjectionLike} destination Destination projection.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} forward The forward transform\n * function (that is, from the source projection to the destination\n * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n * the transformed {@link module:ol/coordinate~Coordinate}.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} inverse The inverse transform\n * function (that is, from the destination projection to the source\n * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n * the transformed {@link module:ol/coordinate~Coordinate}. If the transform function can only\n * transform less dimensions than the input coordinate, it is supposeed to return a coordinate\n * with only the length it can transform. The other dimensions will be taken unchanged from the\n * source.\n * @api\n */\nexport function addCoordinateTransforms(source, destination, forward, inverse) {\n const sourceProj = get(source);\n const destProj = get(destination);\n addTransformFunc(\n sourceProj,\n destProj,\n createTransformFromCoordinateTransform(forward)\n );\n addTransformFunc(\n destProj,\n sourceProj,\n createTransformFromCoordinateTransform(inverse)\n );\n}\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} [projection] Target projection. The\n * default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate projected to the target projection.\n * @api\n */\nexport function fromLonLat(coordinate, projection) {\n disableCoordinateWarning();\n return transform(\n coordinate,\n 'EPSG:4326',\n projection !== undefined ? projection : 'EPSG:3857'\n );\n}\n\n/**\n * Transforms a coordinate to longitude/latitude.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Projected coordinate.\n * @param {ProjectionLike} [projection] Projection of the coordinate.\n * The default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate as longitude and latitude, i.e. an array\n * with longitude as 1st and latitude as 2nd element.\n * @api\n */\nexport function toLonLat(coordinate, projection) {\n const lonLat = transform(\n coordinate,\n projection !== undefined ? projection : 'EPSG:3857',\n 'EPSG:4326'\n );\n const lon = lonLat[0];\n if (lon < -180 || lon > 180) {\n lonLat[0] = modulo(lon + 180, 360) - 180;\n }\n return lonLat;\n}\n\n/**\n * Checks if two projections are the same, that is every coordinate in one\n * projection does represent the same geographic point as the same coordinate in\n * the other projection.\n *\n * @param {Projection} projection1 Projection 1.\n * @param {Projection} projection2 Projection 2.\n * @return {boolean} Equivalent.\n * @api\n */\nexport function equivalent(projection1, projection2) {\n if (projection1 === projection2) {\n return true;\n }\n const equalUnits = projection1.getUnits() === projection2.getUnits();\n if (projection1.getCode() === projection2.getCode()) {\n return equalUnits;\n }\n const transformFunc = getTransformFromProjections(projection1, projection2);\n return transformFunc === cloneTransform && equalUnits;\n}\n\n/**\n * Searches in the list of transform functions for the function for converting\n * coordinates from the source projection to the destination projection.\n *\n * @param {Projection} sourceProjection Source Projection object.\n * @param {Projection} destinationProjection Destination Projection\n * object.\n * @return {TransformFunction} Transform function.\n */\nexport function getTransformFromProjections(\n sourceProjection,\n destinationProjection\n) {\n const sourceCode = sourceProjection.getCode();\n const destinationCode = destinationProjection.getCode();\n let transformFunc = getTransformFunc(sourceCode, destinationCode);\n if (!transformFunc) {\n transformFunc = identityTransform;\n }\n return transformFunc;\n}\n\n/**\n * Given the projection-like objects, searches for a transformation\n * function to convert a coordinates array from the source projection to the\n * destination projection.\n *\n * @param {ProjectionLike} source Source.\n * @param {ProjectionLike} destination Destination.\n * @return {TransformFunction} Transform function.\n * @api\n */\nexport function getTransform(source, destination) {\n const sourceProjection = get(source);\n const destinationProjection = get(destination);\n return getTransformFromProjections(sourceProjection, destinationProjection);\n}\n\n/**\n * Transforms a coordinate from source projection to destination projection.\n * This returns a new coordinate (and does not modify the original).\n *\n * See {@link module:ol/proj.transformExtent} for extent transformation.\n * See the transform method of {@link module:ol/geom/Geometry~Geometry} and its\n * subclasses for geometry transforms.\n *\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\nexport function transform(coordinate, source, destination) {\n const transformFunc = getTransform(source, destination);\n return transformFunc(coordinate, undefined, coordinate.length);\n}\n\n/**\n * Transforms an extent from source projection to destination projection. This\n * returns a new extent (and does not modify the original).\n *\n * @param {import(\"./extent.js\").Extent} extent The extent to transform.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @param {number} [stops] Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {import(\"./extent.js\").Extent} The transformed extent.\n * @api\n */\nexport function transformExtent(extent, source, destination, stops) {\n const transformFunc = getTransform(source, destination);\n return applyTransform(extent, transformFunc, undefined, stops);\n}\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(\n point,\n sourceProjection,\n destinationProjection\n) {\n const transformFunc = getTransformFromProjections(\n sourceProjection,\n destinationProjection\n );\n return transformFunc(point);\n}\n\n/**\n * @type {Projection|null}\n */\nlet userProjection = null;\n\n/**\n * Set the projection for coordinates supplied from and returned by API methods.\n * This includes all API methods except for those interacting with tile grids,\n * plus {@link import(\"./Map.js\").FrameState} and {@link import(\"./View.js\").State}.\n * @param {ProjectionLike} projection The user projection.\n * @api\n */\nexport function setUserProjection(projection) {\n userProjection = get(projection);\n}\n\n/**\n * Clear the user projection if set.\n * @api\n */\nexport function clearUserProjection() {\n userProjection = null;\n}\n\n/**\n * Get the projection for coordinates supplied from and returned by API methods.\n * @return {Projection|null} The user projection (or null if not set).\n * @api\n */\nexport function getUserProjection() {\n return userProjection;\n}\n\n/**\n * Use geographic coordinates (WGS-84 datum) in API methods.\n * This includes all API methods except for those interacting with tile grids,\n * plus {@link import(\"./Map.js\").FrameState} and {@link import(\"./View.js\").State}.\n * @api\n */\nexport function useGeographic() {\n setUserProjection('EPSG:4326');\n}\n\n/**\n * Return a coordinate transformed into the user projection. If no user projection\n * is set, the original coordinate is returned.\n * @param {Array} coordinate Input coordinate.\n * @param {ProjectionLike} sourceProjection The input coordinate projection.\n * @return {Array} The input coordinate in the user projection.\n */\nexport function toUserCoordinate(coordinate, sourceProjection) {\n if (!userProjection) {\n return coordinate;\n }\n return transform(coordinate, sourceProjection, userProjection);\n}\n\n/**\n * Return a coordinate transformed from the user projection. If no user projection\n * is set, the original coordinate is returned.\n * @param {Array} coordinate Input coordinate.\n * @param {ProjectionLike} destProjection The destination projection.\n * @return {Array} The input coordinate transformed.\n */\nexport function fromUserCoordinate(coordinate, destProjection) {\n if (!userProjection) {\n if (\n showCoordinateWarning &&\n !equals(coordinate, [0, 0]) &&\n coordinate[0] >= -180 &&\n coordinate[0] <= 180 &&\n coordinate[1] >= -90 &&\n coordinate[1] <= 90\n ) {\n showCoordinateWarning = false;\n warn(\n 'Call useGeographic() from ol/proj once to work with [longitude, latitude] coordinates.'\n );\n }\n return coordinate;\n }\n return transform(coordinate, userProjection, destProjection);\n}\n\n/**\n * Return an extent transformed into the user projection. If no user projection\n * is set, the original extent is returned.\n * @param {import(\"./extent.js\").Extent} extent Input extent.\n * @param {ProjectionLike} sourceProjection The input extent projection.\n * @return {import(\"./extent.js\").Extent} The input extent in the user projection.\n */\nexport function toUserExtent(extent, sourceProjection) {\n if (!userProjection) {\n return extent;\n }\n return transformExtent(extent, sourceProjection, userProjection);\n}\n\n/**\n * Return an extent transformed from the user projection. If no user projection\n * is set, the original extent is returned.\n * @param {import(\"./extent.js\").Extent} extent Input extent.\n * @param {ProjectionLike} destProjection The destination projection.\n * @return {import(\"./extent.js\").Extent} The input extent transformed.\n */\nexport function fromUserExtent(extent, destProjection) {\n if (!userProjection) {\n return extent;\n }\n return transformExtent(extent, userProjection, destProjection);\n}\n\n/**\n * Return the resolution in user projection units per pixel. If no user projection\n * is set, or source or user projection are missing units, the original resolution\n * is returned.\n * @param {number} resolution Resolution in input projection units per pixel.\n * @param {ProjectionLike} sourceProjection The input projection.\n * @return {number} Resolution in user projection units per pixel.\n */\nexport function toUserResolution(resolution, sourceProjection) {\n if (!userProjection) {\n return resolution;\n }\n const sourceMetersPerUnit = get(sourceProjection).getMetersPerUnit();\n const userMetersPerUnit = userProjection.getMetersPerUnit();\n return sourceMetersPerUnit && userMetersPerUnit\n ? (resolution * sourceMetersPerUnit) / userMetersPerUnit\n : resolution;\n}\n\n/**\n * Return the resolution in user projection units per pixel. If no user projection\n * is set, or source or user projection are missing units, the original resolution\n * is returned.\n * @param {number} resolution Resolution in user projection units per pixel.\n * @param {ProjectionLike} destProjection The destination projection.\n * @return {number} Resolution in destination projection units per pixel.\n */\nexport function fromUserResolution(resolution, destProjection) {\n if (!userProjection) {\n return resolution;\n }\n const destMetersPerUnit = get(destProjection).getMetersPerUnit();\n const userMetersPerUnit = userProjection.getMetersPerUnit();\n return destMetersPerUnit && userMetersPerUnit\n ? (resolution * userMetersPerUnit) / destMetersPerUnit\n : resolution;\n}\n\n/**\n * Creates a safe coordinate transform function from a coordinate transform function.\n * \"Safe\" means that it can handle wrapping of x-coordinates for global projections,\n * and that coordinates exceeding the source projection validity extent's range will be\n * clamped to the validity range.\n * @param {Projection} sourceProj Source projection.\n * @param {Projection} destProj Destination projection.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} transform Transform function (source to destination).\n * @return {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} Safe transform function (source to destination).\n */\nexport function createSafeCoordinateTransform(sourceProj, destProj, transform) {\n return function (coord) {\n let transformed, worldsAway;\n if (sourceProj.canWrapX()) {\n const sourceExtent = sourceProj.getExtent();\n const sourceExtentWidth = getWidth(sourceExtent);\n coord = coord.slice(0);\n worldsAway = getWorldsAway(coord, sourceProj, sourceExtentWidth);\n if (worldsAway) {\n // Move x to the real world\n coord[0] = coord[0] - worldsAway * sourceExtentWidth;\n }\n coord[0] = clamp(coord[0], sourceExtent[0], sourceExtent[2]);\n coord[1] = clamp(coord[1], sourceExtent[1], sourceExtent[3]);\n transformed = transform(coord);\n } else {\n transformed = transform(coord);\n }\n if (worldsAway && destProj.canWrapX()) {\n // Move transformed coordinate back to the offset world\n transformed[0] += worldsAway * getWidth(destProj.getExtent());\n }\n return transformed;\n };\n}\n\n/**\n * Add transforms to and from EPSG:4326 and EPSG:3857. This function is called\n * by when this module is executed and should only need to be called again after\n * `clearAllProjections()` is called (e.g. in tests).\n */\nexport function addCommon() {\n // Add transformations that don't alter coordinates to convert within set of\n // projections with equal meaning.\n addEquivalentProjections(EPSG3857_PROJECTIONS);\n addEquivalentProjections(EPSG4326_PROJECTIONS);\n // Add transformations to convert EPSG:4326 like coordinates to EPSG:3857 like\n // coordinates and back.\n addEquivalentTransforms(\n EPSG4326_PROJECTIONS,\n EPSG3857_PROJECTIONS,\n fromEPSG4326,\n toEPSG4326\n );\n}\n\naddCommon();\n","/**\n * @module ol/centerconstraint\n */\nimport {clamp} from './math.js';\n\n/**\n * @typedef {function((import(\"./coordinate.js\").Coordinate|undefined), number, import(\"./size.js\").Size, boolean=, Array=): (import(\"./coordinate.js\").Coordinate|undefined)} Type\n */\n\n/**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {boolean} onlyCenter If true, the constraint will only apply to the view center.\n * @param {boolean} smooth If true, the view will be able to go slightly out of the given extent\n * (only during interaction and animation).\n * @return {Type} The constraint.\n */\nexport function createExtent(extent, onlyCenter, smooth) {\n return (\n /**\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center Center.\n * @param {number|undefined} resolution Resolution.\n * @param {import(\"./size.js\").Size} size Viewport size; unused if `onlyCenter` was specified.\n * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n * @param {Array} [centerShift] Shift between map center and viewport center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\n function (center, resolution, size, isMoving, centerShift) {\n if (!center) {\n return undefined;\n }\n if (!resolution && !onlyCenter) {\n return center;\n }\n const viewWidth = onlyCenter ? 0 : size[0] * resolution;\n const viewHeight = onlyCenter ? 0 : size[1] * resolution;\n const shiftX = centerShift ? centerShift[0] : 0;\n const shiftY = centerShift ? centerShift[1] : 0;\n let minX = extent[0] + viewWidth / 2 + shiftX;\n let maxX = extent[2] - viewWidth / 2 + shiftX;\n let minY = extent[1] + viewHeight / 2 + shiftY;\n let maxY = extent[3] - viewHeight / 2 + shiftY;\n\n // note: when zooming out of bounds, min and max values for x and y may\n // end up inverted (min > max); this has to be accounted for\n if (minX > maxX) {\n minX = (maxX + minX) / 2;\n maxX = minX;\n }\n if (minY > maxY) {\n minY = (maxY + minY) / 2;\n maxY = minY;\n }\n\n let x = clamp(center[0], minX, maxX);\n let y = clamp(center[1], minY, maxY);\n\n // during an interaction, allow some overscroll\n if (isMoving && smooth && resolution) {\n const ratio = 30 * resolution;\n x +=\n -ratio * Math.log(1 + Math.max(0, minX - center[0]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[0] - maxX) / ratio);\n y +=\n -ratio * Math.log(1 + Math.max(0, minY - center[1]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[1] - maxY) / ratio);\n }\n\n return [x, y];\n }\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","/**\n * @module ol/resolutionconstraint\n */\nimport {clamp} from './math.js';\nimport {getHeight, getWidth} from './extent.js';\nimport {linearFindNearest} from './array.js';\n\n/**\n * @typedef {function((number|undefined), number, import(\"./size.js\").Size, boolean=): (number|undefined)} Type\n */\n\n/**\n * Returns a modified resolution taking into account the viewport size and maximum\n * allowed extent.\n * @param {number} resolution Resolution\n * @param {import(\"./extent.js\").Extent} maxExtent Maximum allowed extent.\n * @param {import(\"./size.js\").Size} viewportSize Viewport size.\n * @param {boolean} showFullExtent Whether to show the full extent.\n * @return {number} Capped resolution.\n */\nfunction getViewportClampedResolution(\n resolution,\n maxExtent,\n viewportSize,\n showFullExtent\n) {\n const xResolution = getWidth(maxExtent) / viewportSize[0];\n const yResolution = getHeight(maxExtent) / viewportSize[1];\n\n if (showFullExtent) {\n return Math.min(resolution, Math.max(xResolution, yResolution));\n }\n return Math.min(resolution, Math.min(xResolution, yResolution));\n}\n\n/**\n * Returns a modified resolution to be between maxResolution and minResolution while\n * still allowing the value to be slightly out of bounds.\n * Note: the computation is based on the logarithm function (ln):\n * - at 1, ln(x) is 0\n * - above 1, ln(x) keeps increasing but at a much slower pace than x\n * The final result is clamped to prevent getting too far away from bounds.\n * @param {number} resolution Resolution.\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @return {number} Smoothed resolution.\n */\nfunction getSmoothClampedResolution(resolution, maxResolution, minResolution) {\n let result = Math.min(resolution, maxResolution);\n const ratio = 50;\n\n result *=\n Math.log(1 + ratio * Math.max(0, resolution / maxResolution - 1)) / ratio +\n 1;\n if (minResolution) {\n result = Math.max(result, minResolution);\n result /=\n Math.log(1 + ratio * Math.max(0, minResolution / resolution - 1)) /\n ratio +\n 1;\n }\n return clamp(result, minResolution / 2, maxResolution * 2);\n}\n\n/**\n * @param {Array} resolutions Resolutions.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToResolutions(\n resolutions,\n smooth,\n maxExtent,\n showFullExtent\n) {\n smooth = smooth !== undefined ? smooth : true;\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} [isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, isMoving) {\n if (resolution !== undefined) {\n const maxResolution = resolutions[0];\n const minResolution = resolutions[resolutions.length - 1];\n const cappedMaxRes = maxExtent\n ? getViewportClampedResolution(\n maxResolution,\n maxExtent,\n size,\n showFullExtent\n )\n : maxResolution;\n\n // during interacting or animating, allow intermediary values\n if (isMoving) {\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(\n resolution,\n cappedMaxRes,\n minResolution\n );\n }\n\n const capped = Math.min(cappedMaxRes, resolution);\n const z = Math.floor(linearFindNearest(resolutions, capped, direction));\n if (resolutions[z] > cappedMaxRes && z < resolutions.length - 1) {\n return resolutions[z + 1];\n }\n return resolutions[z];\n }\n return undefined;\n }\n );\n}\n\n/**\n * @param {number} power Power.\n * @param {number} maxResolution Maximum resolution.\n * @param {number} [minResolution] Minimum resolution.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToPower(\n power,\n maxResolution,\n minResolution,\n smooth,\n maxExtent,\n showFullExtent\n) {\n smooth = smooth !== undefined ? smooth : true;\n minResolution = minResolution !== undefined ? minResolution : 0;\n\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} [isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, isMoving) {\n if (resolution !== undefined) {\n const cappedMaxRes = maxExtent\n ? getViewportClampedResolution(\n maxResolution,\n maxExtent,\n size,\n showFullExtent\n )\n : maxResolution;\n\n // during interacting or animating, allow intermediary values\n if (isMoving) {\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(\n resolution,\n cappedMaxRes,\n minResolution\n );\n }\n\n const tolerance = 1e-9;\n const minZoomLevel = Math.ceil(\n Math.log(maxResolution / cappedMaxRes) / Math.log(power) - tolerance\n );\n const offset = -direction * (0.5 - tolerance) + 0.5;\n const capped = Math.min(cappedMaxRes, resolution);\n const cappedZoomLevel = Math.floor(\n Math.log(maxResolution / capped) / Math.log(power) + offset\n );\n const zoomLevel = Math.max(minZoomLevel, cappedZoomLevel);\n const newResolution = maxResolution / Math.pow(power, zoomLevel);\n return clamp(newResolution, minResolution, cappedMaxRes);\n }\n return undefined;\n }\n );\n}\n\n/**\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createMinMaxResolution(\n maxResolution,\n minResolution,\n smooth,\n maxExtent,\n showFullExtent\n) {\n smooth = smooth !== undefined ? smooth : true;\n\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} [isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, isMoving) {\n if (resolution !== undefined) {\n const cappedMaxRes = maxExtent\n ? getViewportClampedResolution(\n maxResolution,\n maxExtent,\n size,\n showFullExtent\n )\n : maxResolution;\n\n if (!smooth || !isMoving) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(\n resolution,\n cappedMaxRes,\n minResolution\n );\n }\n return undefined;\n }\n );\n}\n","/**\n * @module ol/rotationconstraint\n */\nimport {toRadians} from './math.js';\n\n/**\n * @typedef {function((number|undefined), boolean=): (number|undefined)} Type\n */\n\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function disable(rotation) {\n if (rotation !== undefined) {\n return 0;\n }\n 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 return undefined;\n}\n\n/**\n * @param {number} n N.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToN(n) {\n const theta = (2 * Math.PI) / n;\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function (rotation, isMoving) {\n if (isMoving) {\n return rotation;\n }\n\n if (rotation !== undefined) {\n rotation = Math.floor(rotation / theta + 0.5) * theta;\n return rotation;\n }\n return undefined;\n }\n );\n}\n\n/**\n * @param {number} [tolerance] Tolerance.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToZero(tolerance) {\n const t = tolerance === undefined ? toRadians(5) : tolerance;\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function (rotation, isMoving) {\n if (isMoving || rotation === undefined) {\n return rotation;\n }\n\n if (Math.abs(rotation) <= t) {\n return 0;\n }\n return rotation;\n }\n );\n}\n","/**\n * @module ol/easing\n */\n\n/**\n * Start slow and speed up.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeIn(t) {\n return Math.pow(t, 3);\n}\n\n/**\n * Start fast and slow down.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeOut(t) {\n return 1 - easeIn(1 - t);\n}\n\n/**\n * Start slow, speed up, and then slow down again.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function inAndOut(t) {\n return 3 * t * t - 2 * t * t * t;\n}\n\n/**\n * Maintain a constant speed over time.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function linear(t) {\n return t;\n}\n\n/**\n * Start slow, speed up, and at the very end slow down again. This has the\n * same general behavior as {@link module:ol/easing.inAndOut}, but the final\n * slowdown is delayed.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function upAndDown(t) {\n if (t < 0.5) {\n return inAndOut(2 * t);\n }\n return 1 - inAndOut(2 * (t - 0.5));\n}\n","/**\n * @module ol/geom/flat/transform\n */\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @param {Array} [dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function transform2D(\n flatCoordinates,\n offset,\n end,\n stride,\n transform,\n dest\n) {\n dest = dest ? dest : [];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n const x = flatCoordinates[j];\n const y = flatCoordinates[j + 1];\n dest[i++] = transform[0] * x + transform[2] * y + transform[4];\n dest[i++] = transform[1] * x + transform[3] * y + transform[5];\n }\n if (dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} angle Angle.\n * @param {Array} anchor Rotation anchor point.\n * @param {Array} [dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function rotate(\n flatCoordinates,\n offset,\n end,\n stride,\n angle,\n anchor,\n dest\n) {\n dest = dest ? dest : [];\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const anchorX = anchor[0];\n const anchorY = anchor[1];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n const deltaX = flatCoordinates[j] - anchorX;\n const deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + deltaX * cos - deltaY * sin;\n dest[i++] = anchorY + deltaX * sin + deltaY * cos;\n for (let k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n\n/**\n * Scale the coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} sx Scale factor in the x-direction.\n * @param {number} sy Scale factor in the y-direction.\n * @param {Array} anchor Scale anchor point.\n * @param {Array} [dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function scale(\n flatCoordinates,\n offset,\n end,\n stride,\n sx,\n sy,\n anchor,\n dest\n) {\n dest = dest ? dest : [];\n const anchorX = anchor[0];\n const anchorY = anchor[1];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n const deltaX = flatCoordinates[j] - anchorX;\n const deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + sx * deltaX;\n dest[i++] = anchorY + sy * deltaY;\n for (let k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @param {Array} [dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function translate(\n flatCoordinates,\n offset,\n end,\n stride,\n deltaX,\n deltaY,\n dest\n) {\n dest = dest ? dest : [];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n dest[i++] = flatCoordinates[j] + deltaX;\n dest[i++] = flatCoordinates[j + 1] + deltaY;\n for (let k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n","/**\n * @module ol/geom/Geometry\n */\nimport BaseObject from '../Object.js';\nimport {abstract} from '../util.js';\nimport {\n compose as composeTransform,\n create as createTransform,\n} from '../transform.js';\nimport {\n createEmpty,\n createOrUpdateEmpty,\n getHeight,\n returnOrUpdate,\n} from '../extent.js';\nimport {get as getProjection, getTransform} from '../proj.js';\nimport {memoizeOne} from '../functions.js';\nimport {transform2D} from './flat/transform.js';\n\n/**\n * @typedef {'XY' | 'XYZ' | 'XYM' | 'XYZM'} GeometryLayout\n * The coordinate layout for geometries, indicating whether a 3rd or 4th z ('Z')\n * or measure ('M') coordinate is available.\n */\n\n/**\n * @typedef {'Point' | 'LineString' | 'LinearRing' | 'Polygon' | 'MultiPoint' | 'MultiLineString' | 'MultiPolygon' | 'GeometryCollection' | 'Circle'} Type\n * The geometry type. One of `'Point'`, `'LineString'`, `'LinearRing'`,\n * `'Polygon'`, `'MultiPoint'`, `'MultiLineString'`, `'MultiPolygon'`,\n * `'GeometryCollection'`, or `'Circle'`.\n */\n\n/**\n * @type {import(\"../transform.js\").Transform}\n */\nconst tmpTransform = createTransform();\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for vector geometries.\n *\n * To get notified of changes to the geometry, register a listener for the\n * generic `change` event on your geometry instance.\n *\n * @abstract\n * @api\n */\nclass Geometry extends BaseObject {\n constructor() {\n super();\n\n /**\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.extent_ = createEmpty();\n\n /**\n * @private\n * @type {number}\n */\n this.extentRevision_ = -1;\n\n /**\n * @protected\n * @type {number}\n */\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n\n /**\n * @protected\n * @type {number}\n */\n this.simplifiedGeometryRevision = 0;\n\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} revision The geometry revision.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n this.simplifyTransformedInternal = memoizeOne(\n (revision, squaredTolerance, transform) => {\n if (!transform) {\n return this.getSimplifiedGeometry(squaredTolerance);\n }\n const clone = this.clone();\n clone.applyTransform(transform);\n return clone.getSimplifiedGeometry(squaredTolerance);\n }\n );\n }\n\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n simplifyTransformed(squaredTolerance, transform) {\n return this.simplifyTransformedInternal(\n this.getRevision(),\n squaredTolerance,\n transform\n );\n }\n\n /**\n * Make a complete copy of the geometry.\n * @abstract\n * @return {!Geometry} Clone.\n */\n clone() {\n return abstract();\n }\n\n /**\n * @abstract\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n return abstract();\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n containsXY(x, y) {\n const coord = this.getClosestPoint([x, y]);\n return coord[0] === x && coord[1] === y;\n }\n\n /**\n * Return the closest point of the geometry to the passed point as\n * {@link module:ol/coordinate~Coordinate coordinate}.\n * @param {import(\"../coordinate.js\").Coordinate} point Point.\n * @param {import(\"../coordinate.js\").Coordinate} [closestPoint] Closest point.\n * @return {import(\"../coordinate.js\").Coordinate} Closest point.\n * @api\n */\n getClosestPoint(point, closestPoint) {\n closestPoint = closestPoint ? closestPoint : [NaN, NaN];\n this.closestPointXY(point[0], point[1], closestPoint, Infinity);\n return closestPoint;\n }\n\n /**\n * Returns true if this geometry includes the specified coordinate. If the\n * coordinate is on the boundary of the geometry, returns false.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains coordinate.\n * @api\n */\n intersectsCoordinate(coordinate) {\n return this.containsXY(coordinate[0], coordinate[1]);\n }\n\n /**\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n computeExtent(extent) {\n return abstract();\n }\n\n /**\n * Get the extent of the geometry.\n * @param {import(\"../extent.js\").Extent} [extent] Extent.\n * @return {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n getExtent(extent) {\n if (this.extentRevision_ != this.getRevision()) {\n const extent = this.computeExtent(this.extent_);\n if (isNaN(extent[0]) || isNaN(extent[1])) {\n createOrUpdateEmpty(extent);\n }\n this.extentRevision_ = this.getRevision();\n }\n return returnOrUpdate(this.extent_, extent);\n }\n\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n rotate(angle, anchor) {\n abstract();\n }\n\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number} [sy] The scaling factor in the y-direction (defaults to sx).\n * @param {import(\"../coordinate.js\").Coordinate} [anchor] The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n scale(sx, sy, anchor) {\n abstract();\n }\n\n /**\n * Create a simplified version of this geometry. For linestrings, this uses\n * the [Douglas Peucker](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm)\n * algorithm. For polygons, a quantization-based\n * simplification is used to preserve topology.\n * @param {number} tolerance The tolerance distance for simplification.\n * @return {Geometry} A new, simplified version of the original geometry.\n * @api\n */\n simplify(tolerance) {\n return this.getSimplifiedGeometry(tolerance * tolerance);\n }\n\n /**\n * Create a simplified version of this geometry using the Douglas Peucker\n * algorithm.\n * See https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Geometry} Simplified geometry.\n */\n getSimplifiedGeometry(squaredTolerance) {\n return abstract();\n }\n\n /**\n * Get the type of this geometry.\n * @abstract\n * @return {Type} Geometry type.\n */\n getType() {\n return abstract();\n }\n\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @abstract\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n */\n applyTransform(transformFn) {\n abstract();\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n */\n intersectsExtent(extent) {\n return abstract();\n }\n\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @abstract\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n translate(deltaX, deltaY) {\n abstract();\n }\n\n /**\n * Transform each coordinate of the geometry from one coordinate reference\n * system to another. The geometry is modified in place.\n * For example, a line will be transformed to a line and a circle to a circle.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n *\n * @param {import(\"../proj.js\").ProjectionLike} source The current projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @param {import(\"../proj.js\").ProjectionLike} destination The desired projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @return {Geometry} This geometry. Note that original geometry is\n * modified in place.\n * @api\n */\n transform(source, destination) {\n /** @type {import(\"../proj/Projection.js\").default} */\n const sourceProj = getProjection(source);\n const transformFn =\n sourceProj.getUnits() == 'tile-pixels'\n ? function (inCoordinates, outCoordinates, stride) {\n const pixelExtent = sourceProj.getExtent();\n const projectedExtent = sourceProj.getWorldExtent();\n const scale = getHeight(projectedExtent) / getHeight(pixelExtent);\n composeTransform(\n tmpTransform,\n projectedExtent[0],\n projectedExtent[3],\n scale,\n -scale,\n 0,\n 0,\n 0\n );\n transform2D(\n inCoordinates,\n 0,\n inCoordinates.length,\n stride,\n tmpTransform,\n outCoordinates\n );\n return getTransform(sourceProj, destination)(\n inCoordinates,\n outCoordinates,\n stride\n );\n }\n : getTransform(sourceProj, destination);\n this.applyTransform(transformFn);\n return this;\n }\n}\n\nexport default Geometry;\n","/**\n * @module ol/geom/SimpleGeometry\n */\nimport Geometry from './Geometry.js';\nimport {abstract} from '../util.js';\nimport {createOrUpdateFromFlatCoordinates, getCenter} from '../extent.js';\nimport {rotate, scale, transform2D, translate} from './flat/transform.js';\n\n/**\n * @classdesc\n * Abstract base class; only used for creating subclasses; do not instantiate\n * in apps, as cannot be rendered.\n *\n * @abstract\n * @api\n */\nclass SimpleGeometry extends Geometry {\n constructor() {\n super();\n\n /**\n * @protected\n * @type {import(\"./Geometry.js\").GeometryLayout}\n */\n this.layout = 'XY';\n\n /**\n * @protected\n * @type {number}\n */\n this.stride = 2;\n\n /**\n * @protected\n * @type {Array}\n */\n this.flatCoordinates;\n }\n\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n computeExtent(extent) {\n return createOrUpdateFromFlatCoordinates(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n extent\n );\n }\n\n /**\n * @abstract\n * @return {Array<*> | null} Coordinates.\n */\n getCoordinates() {\n return abstract();\n }\n\n /**\n * Return the first coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} First coordinate.\n * @api\n */\n getFirstCoordinate() {\n return this.flatCoordinates.slice(0, this.stride);\n }\n\n /**\n * @return {Array} Flat coordinates.\n */\n getFlatCoordinates() {\n return this.flatCoordinates;\n }\n\n /**\n * Return the last coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} Last point.\n * @api\n */\n getLastCoordinate() {\n return this.flatCoordinates.slice(\n this.flatCoordinates.length - this.stride\n );\n }\n\n /**\n * Return the {@link import(\"./Geometry.js\").GeometryLayout layout} of the geometry.\n * @return {import(\"./Geometry.js\").GeometryLayout} Layout.\n * @api\n */\n getLayout() {\n return this.layout;\n }\n\n /**\n * Create a simplified version of this geometry using the Douglas Peucker algorithm.\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n */\n getSimplifiedGeometry(squaredTolerance) {\n if (this.simplifiedGeometryRevision !== this.getRevision()) {\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n this.simplifiedGeometryRevision = this.getRevision();\n }\n // If squaredTolerance is negative or if we know that simplification will not\n // have any effect then just return this.\n if (\n squaredTolerance < 0 ||\n (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n squaredTolerance <= this.simplifiedGeometryMaxMinSquaredTolerance)\n ) {\n return this;\n }\n\n const simplifiedGeometry =\n this.getSimplifiedGeometryInternal(squaredTolerance);\n const simplifiedFlatCoordinates = simplifiedGeometry.getFlatCoordinates();\n if (simplifiedFlatCoordinates.length < this.flatCoordinates.length) {\n return simplifiedGeometry;\n }\n // Simplification did not actually remove any coordinates. We now know\n // that any calls to getSimplifiedGeometry with a squaredTolerance less\n // than or equal to the current squaredTolerance will also not have any\n // effect. This allows us to short circuit simplification (saving CPU\n // cycles) and prevents the cache of simplified geometries from filling\n // up with useless identical copies of this geometry (saving memory).\n this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;\n return this;\n }\n\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n * @protected\n */\n getSimplifiedGeometryInternal(squaredTolerance) {\n return this;\n }\n\n /**\n * @return {number} Stride.\n */\n getStride() {\n return this.stride;\n }\n\n /**\n * @param {import(\"./Geometry.js\").GeometryLayout} layout Layout.\n * @param {Array} flatCoordinates Flat coordinates.\n */\n setFlatCoordinates(layout, flatCoordinates) {\n this.stride = getStrideForLayout(layout);\n this.layout = layout;\n this.flatCoordinates = flatCoordinates;\n }\n\n /**\n * @abstract\n * @param {!Array<*>} coordinates Coordinates.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n */\n setCoordinates(coordinates, layout) {\n abstract();\n }\n\n /**\n * @param {import(\"./Geometry.js\").GeometryLayout|undefined} layout Layout.\n * @param {Array<*>} coordinates Coordinates.\n * @param {number} nesting Nesting.\n * @protected\n */\n setLayout(layout, coordinates, nesting) {\n let stride;\n if (layout) {\n stride = getStrideForLayout(layout);\n } else {\n for (let i = 0; i < nesting; ++i) {\n if (coordinates.length === 0) {\n this.layout = 'XY';\n this.stride = 2;\n return;\n }\n coordinates = /** @type {Array} */ (coordinates[0]);\n }\n stride = coordinates.length;\n layout = getLayoutForStride(stride);\n }\n this.layout = layout;\n this.stride = stride;\n }\n\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n * @api\n */\n applyTransform(transformFn) {\n if (this.flatCoordinates) {\n transformFn(this.flatCoordinates, this.flatCoordinates, this.stride);\n this.changed();\n }\n }\n\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @param {number} angle Rotation angle in counter-clockwise radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n rotate(angle, anchor) {\n const flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n const stride = this.getStride();\n rotate(\n flatCoordinates,\n 0,\n flatCoordinates.length,\n stride,\n angle,\n anchor,\n flatCoordinates\n );\n this.changed();\n }\n }\n\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number} [sy] The scaling factor in the y-direction (defaults to sx).\n * @param {import(\"../coordinate.js\").Coordinate} [anchor] The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n scale(sx, sy, anchor) {\n if (sy === undefined) {\n sy = sx;\n }\n if (!anchor) {\n anchor = getCenter(this.getExtent());\n }\n const flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n const stride = this.getStride();\n scale(\n flatCoordinates,\n 0,\n flatCoordinates.length,\n stride,\n sx,\n sy,\n anchor,\n flatCoordinates\n );\n this.changed();\n }\n }\n\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n translate(deltaX, deltaY) {\n const flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n const stride = this.getStride();\n translate(\n flatCoordinates,\n 0,\n flatCoordinates.length,\n stride,\n deltaX,\n deltaY,\n flatCoordinates\n );\n this.changed();\n }\n }\n}\n\n/**\n * @param {number} stride Stride.\n * @return {import(\"./Geometry.js\").GeometryLayout} layout Layout.\n */\nexport function getLayoutForStride(stride) {\n let layout;\n if (stride == 2) {\n layout = 'XY';\n } else if (stride == 3) {\n layout = 'XYZ';\n } else if (stride == 4) {\n layout = 'XYZM';\n }\n return /** @type {import(\"./Geometry.js\").GeometryLayout} */ (layout);\n}\n\n/**\n * @param {import(\"./Geometry.js\").GeometryLayout} layout Layout.\n * @return {number} Stride.\n */\nexport function getStrideForLayout(layout) {\n let stride;\n if (layout == 'XY') {\n stride = 2;\n } else if (layout == 'XYZ' || layout == 'XYM') {\n stride = 3;\n } else if (layout == 'XYZM') {\n stride = 4;\n }\n return /** @type {number} */ (stride);\n}\n\n/**\n * @param {SimpleGeometry} simpleGeometry Simple geometry.\n * @param {import(\"../transform.js\").Transform} transform Transform.\n * @param {Array} [dest] Destination.\n * @return {Array} Transformed flat coordinates.\n */\nexport function transformGeom2D(simpleGeometry, transform, dest) {\n const flatCoordinates = simpleGeometry.getFlatCoordinates();\n if (!flatCoordinates) {\n return null;\n }\n const stride = simpleGeometry.getStride();\n return transform2D(\n flatCoordinates,\n 0,\n flatCoordinates.length,\n stride,\n transform,\n dest\n );\n}\n\nexport default SimpleGeometry;\n","/**\n * @module ol/geom/flat/closest\n */\nimport {lerp, squaredDistance as squaredDx} from '../../math.js';\n\n/**\n * Returns the point on the 2D line segment flatCoordinates[offset1] to\n * flatCoordinates[offset2] that is closest to the point (x, y). Extra\n * dimensions are linearly interpolated.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset1 Offset 1.\n * @param {number} offset2 Offset 2.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n */\nfunction assignClosest(\n flatCoordinates,\n offset1,\n offset2,\n stride,\n x,\n y,\n closestPoint\n) {\n const x1 = flatCoordinates[offset1];\n const y1 = flatCoordinates[offset1 + 1];\n const dx = flatCoordinates[offset2] - x1;\n const dy = flatCoordinates[offset2 + 1] - y1;\n let offset;\n if (dx === 0 && dy === 0) {\n offset = offset1;\n } else {\n const t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n offset = offset2;\n } else if (t > 0) {\n for (let i = 0; i < stride; ++i) {\n closestPoint[i] = lerp(\n flatCoordinates[offset1 + i],\n flatCoordinates[offset2 + i],\n t\n );\n }\n closestPoint.length = stride;\n return;\n } else {\n offset = offset1;\n }\n }\n for (let i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n}\n\n/**\n * Return the squared of the largest distance between any pair of consecutive\n * coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function maxSquaredDelta(flatCoordinates, offset, end, stride, max) {\n let x1 = flatCoordinates[offset];\n let y1 = flatCoordinates[offset + 1];\n for (offset += stride; offset < end; offset += stride) {\n const x2 = flatCoordinates[offset];\n const y2 = flatCoordinates[offset + 1];\n const 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/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function arrayMaxSquaredDelta(\n flatCoordinates,\n offset,\n ends,\n stride,\n max\n) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n max = maxSquaredDelta(flatCoordinates, offset, end, stride, max);\n offset = end;\n }\n return max;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function multiArrayMaxSquaredDelta(\n flatCoordinates,\n offset,\n endss,\n stride,\n max\n) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n max = arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max);\n offset = ends[ends.length - 1];\n }\n return max;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array} [tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestPoint(\n flatCoordinates,\n offset,\n end,\n stride,\n maxDelta,\n isRing,\n x,\n y,\n closestPoint,\n minSquaredDistance,\n tmpPoint\n) {\n if (offset == end) {\n return minSquaredDistance;\n }\n let i, squaredDistance;\n if (maxDelta === 0) {\n // All points are identical, so just test the first point.\n squaredDistance = squaredDx(\n x,\n y,\n flatCoordinates[offset],\n flatCoordinates[offset + 1]\n );\n if (squaredDistance < minSquaredDistance) {\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n }\n return minSquaredDistance;\n }\n tmpPoint = tmpPoint ? tmpPoint : [NaN, NaN];\n let index = offset + stride;\n while (index < end) {\n assignClosest(\n flatCoordinates,\n index - stride,\n index,\n stride,\n x,\n y,\n tmpPoint\n );\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n index += stride;\n } else {\n // Skip ahead multiple points, because we know that all the skipped\n // points cannot be any closer than the closest point we have found so\n // far. We know this because we know how close the current point is, how\n // close the closest point we have found so far is, and the maximum\n // distance between consecutive points. For example, if we're currently\n // at distance 10, the best we've found so far is 3, and that the maximum\n // distance between consecutive points is 2, then we'll need to skip at\n // least (10 - 3) / 2 == 3 (rounded down) points to have any chance of\n // finding a closer point. We use Math.max(..., 1) to ensure that we\n // always advance at least one point, to avoid an infinite loop.\n index +=\n stride *\n Math.max(\n ((Math.sqrt(squaredDistance) - Math.sqrt(minSquaredDistance)) /\n maxDelta) |\n 0,\n 1\n );\n }\n }\n if (isRing) {\n // Check the closing segment.\n assignClosest(\n flatCoordinates,\n end - stride,\n offset,\n stride,\n x,\n y,\n tmpPoint\n );\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n }\n }\n return minSquaredDistance;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array} [tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestArrayPoint(\n flatCoordinates,\n offset,\n ends,\n stride,\n maxDelta,\n isRing,\n x,\n y,\n closestPoint,\n minSquaredDistance,\n tmpPoint\n) {\n tmpPoint = tmpPoint ? tmpPoint : [NaN, NaN];\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n minSquaredDistance = assignClosestPoint(\n flatCoordinates,\n offset,\n end,\n stride,\n maxDelta,\n isRing,\n x,\n y,\n closestPoint,\n minSquaredDistance,\n tmpPoint\n );\n offset = end;\n }\n return minSquaredDistance;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array} [tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestMultiArrayPoint(\n flatCoordinates,\n offset,\n endss,\n stride,\n maxDelta,\n isRing,\n x,\n y,\n closestPoint,\n minSquaredDistance,\n tmpPoint\n) {\n tmpPoint = tmpPoint ? tmpPoint : [NaN, NaN];\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n minSquaredDistance = assignClosestArrayPoint(\n flatCoordinates,\n offset,\n ends,\n stride,\n maxDelta,\n isRing,\n x,\n y,\n closestPoint,\n minSquaredDistance,\n tmpPoint\n );\n offset = ends[ends.length - 1];\n }\n return minSquaredDistance;\n}\n","/**\n * @module ol/geom/flat/deflate\n */\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinate(flatCoordinates, offset, coordinate, stride) {\n for (let i = 0, ii = coordinate.length; i < ii; ++i) {\n flatCoordinates[offset++] = coordinate[i];\n }\n return offset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} coordinates Coordinates.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinates(\n flatCoordinates,\n offset,\n coordinates,\n stride\n) {\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n const coordinate = coordinates[i];\n for (let j = 0; j < stride; ++j) {\n flatCoordinates[offset++] = coordinate[j];\n }\n }\n return offset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} coordinatess Coordinatess.\n * @param {number} stride Stride.\n * @param {Array} [ends] Ends.\n * @return {Array} Ends.\n */\nexport function deflateCoordinatesArray(\n flatCoordinates,\n offset,\n coordinatess,\n stride,\n ends\n) {\n ends = ends ? ends : [];\n let i = 0;\n for (let j = 0, jj = coordinatess.length; j < jj; ++j) {\n const end = deflateCoordinates(\n flatCoordinates,\n offset,\n coordinatess[j],\n stride\n );\n ends[i++] = end;\n offset = end;\n }\n ends.length = i;\n return ends;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>>} coordinatesss Coordinatesss.\n * @param {number} stride Stride.\n * @param {Array>} [endss] Endss.\n * @return {Array>} Endss.\n */\nexport function deflateMultiCoordinatesArray(\n flatCoordinates,\n offset,\n coordinatesss,\n stride,\n endss\n) {\n endss = endss ? endss : [];\n let i = 0;\n for (let j = 0, jj = coordinatesss.length; j < jj; ++j) {\n const ends = deflateCoordinatesArray(\n flatCoordinates,\n offset,\n coordinatesss[j],\n stride,\n endss[i]\n );\n if (ends.length === 0) {\n ends[0] = offset;\n }\n endss[i++] = ends;\n offset = ends[ends.length - 1];\n }\n endss.length = i;\n return endss;\n}\n","/**\n * @module ol/geom/flat/simplify\n */\n// Based on simplify-js https://github.com/mourner/simplify-js\n// Copyright (c) 2012, Vladimir Agafonkin\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n//\n// 1. Redistributions of source code must retain the above copyright notice,\n// this list of conditions and the following disclaimer.\n//\n// 2. Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n// POSSIBILITY OF SUCH DAMAGE.\n\nimport {squaredDistance, squaredSegmentDistance} from '../../math.js';\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {boolean} highQuality Highest quality.\n * @param {Array} [simplifiedFlatCoordinates] Simplified flat\n * coordinates.\n * @return {Array} Simplified line string.\n */\nexport function simplifyLineString(\n flatCoordinates,\n offset,\n end,\n stride,\n squaredTolerance,\n highQuality,\n simplifiedFlatCoordinates\n) {\n simplifiedFlatCoordinates =\n simplifiedFlatCoordinates !== undefined ? simplifiedFlatCoordinates : [];\n if (!highQuality) {\n end = radialDistance(\n flatCoordinates,\n offset,\n end,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n 0\n );\n flatCoordinates = simplifiedFlatCoordinates;\n offset = 0;\n stride = 2;\n }\n simplifiedFlatCoordinates.length = douglasPeucker(\n flatCoordinates,\n offset,\n end,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n 0\n );\n return simplifiedFlatCoordinates;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function douglasPeucker(\n flatCoordinates,\n offset,\n end,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset\n) {\n const n = (end - offset) / stride;\n if (n < 3) {\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n /** @type {Array} */\n const markers = new Array(n);\n markers[0] = 1;\n markers[n - 1] = 1;\n /** @type {Array} */\n const stack = [offset, end - stride];\n let index = 0;\n while (stack.length > 0) {\n const last = stack.pop();\n const first = stack.pop();\n let maxSquaredDistance = 0;\n const x1 = flatCoordinates[first];\n const y1 = flatCoordinates[first + 1];\n const x2 = flatCoordinates[last];\n const y2 = flatCoordinates[last + 1];\n for (let i = first + stride; i < last; i += stride) {\n const x = flatCoordinates[i];\n const y = flatCoordinates[i + 1];\n const squaredDistance = squaredSegmentDistance(x, y, x1, y1, x2, y2);\n if (squaredDistance > maxSquaredDistance) {\n index = i;\n maxSquaredDistance = squaredDistance;\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 (let i = 0; i < n; ++i) {\n if (markers[i]) {\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride + 1];\n }\n }\n return simplifiedOffset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset,\n simplifiedEnds\n) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n simplifiedOffset = douglasPeucker(\n flatCoordinates,\n offset,\n end,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset\n );\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerMultiArray(\n flatCoordinates,\n offset,\n endss,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset,\n simplifiedEndss\n) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n /** @type {Array} */\n const simplifiedEnds = [];\n simplifiedOffset = douglasPeuckerArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset,\n simplifiedEnds\n );\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function radialDistance(\n flatCoordinates,\n offset,\n end,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset\n) {\n if (end <= offset + stride) {\n // zero or one point, no simplification possible, so copy and return\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n let x1 = flatCoordinates[offset];\n let y1 = flatCoordinates[offset + 1];\n // copy first point\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n let x2 = x1;\n let y2 = y1;\n for (offset += stride; offset < end; offset += stride) {\n x2 = flatCoordinates[offset];\n y2 = flatCoordinates[offset + 1];\n if (squaredDistance(x1, y1, x2, y2) > squaredTolerance) {\n // copy point at offset\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n }\n }\n if (x2 != x1 || y2 != y1) {\n // copy last point\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n }\n return simplifiedOffset;\n}\n\n/**\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/**\n * Simplifies a line string using an algorithm designed by Tim Schaub.\n * Coordinates are snapped to the nearest value in a virtual grid and\n * consecutive duplicate coordinates are discarded. This effectively preserves\n * topology as the simplification of any subsection of a line string is\n * independent of the rest of the line string. This means that, for examples,\n * the common edge between two polygons will be simplified to the same line\n * string independently in both polygons. This implementation uses a single\n * pass over the coordinates and eliminates intermediate collinear points.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function quantize(\n flatCoordinates,\n offset,\n end,\n stride,\n tolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset\n) {\n // do nothing if the line is empty\n if (offset == end) {\n return simplifiedOffset;\n }\n // snap the first coordinate (P1)\n let x1 = snap(flatCoordinates[offset], tolerance);\n let y1 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // add the first coordinate to the output\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n // find the next coordinate that does not snap to the same value as the first\n // coordinate (P2)\n let x2, y2;\n do {\n x2 = snap(flatCoordinates[offset], tolerance);\n y2 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n if (offset == end) {\n // all coordinates snap to the same value, the line collapses to a point\n // push the last snapped value anyway to ensure that the output contains\n // at least two points\n // FIXME should we really return at least two points anyway?\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n }\n } while (x2 == x1 && y2 == y1);\n while (offset < end) {\n // snap the next coordinate (P3)\n const x3 = snap(flatCoordinates[offset], tolerance);\n const y3 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // skip P3 if it is equal to P2\n if (x3 == x2 && y3 == y2) {\n continue;\n }\n // calculate the delta between P1 and P2\n const dx1 = x2 - x1;\n const dy1 = y2 - y1;\n // calculate the delta between P3 and P1\n const dx2 = x3 - x1;\n const dy2 = y3 - y1;\n // if P1, P2, and P3 are colinear and P3 is further from P1 than P2 is from\n // P1 in the same direction then P2 is on the straight line between P1 and\n // P3\n if (\n 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 ) {\n // discard P2 and set P2 = P3\n x2 = x3;\n y2 = y3;\n continue;\n }\n // either P1, P2, and P3 are not colinear, or they are colinear but P3 is\n // between P3 and P1 or on the opposite half of the line to P2. add P2,\n // and continue with P1 = P2 and P2 = P3\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n x2 = x3;\n y2 = y3;\n }\n // add the last point (P2)\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function quantizeArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n tolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset,\n simplifiedEnds\n) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n simplifiedOffset = quantize(\n flatCoordinates,\n offset,\n end,\n stride,\n tolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset\n );\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function quantizeMultiArray(\n flatCoordinates,\n offset,\n endss,\n stride,\n tolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset,\n simplifiedEndss\n) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n /** @type {Array} */\n const simplifiedEnds = [];\n simplifiedOffset = quantizeArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n tolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset,\n simplifiedEnds\n );\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n","/**\n * @module ol/geom/flat/inflate\n */\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Array} [coordinates] Coordinates.\n * @return {Array} Coordinates.\n */\nexport function inflateCoordinates(\n flatCoordinates,\n offset,\n end,\n stride,\n coordinates\n) {\n coordinates = coordinates !== undefined ? coordinates : [];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n coordinates[i++] = flatCoordinates.slice(j, j + stride);\n }\n coordinates.length = i;\n return coordinates;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array>} [coordinatess] Coordinatess.\n * @return {Array>} Coordinatess.\n */\nexport function inflateCoordinatesArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n coordinatess\n) {\n coordinatess = coordinatess !== undefined ? coordinatess : [];\n let i = 0;\n for (let j = 0, jj = ends.length; j < jj; ++j) {\n const end = ends[j];\n coordinatess[i++] = inflateCoordinates(\n flatCoordinates,\n offset,\n end,\n stride,\n coordinatess[i]\n );\n offset = end;\n }\n coordinatess.length = i;\n return coordinatess;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array>>} [coordinatesss]\n * Coordinatesss.\n * @return {Array>>} Coordinatesss.\n */\nexport function inflateMultiCoordinatesArray(\n flatCoordinates,\n offset,\n endss,\n stride,\n coordinatesss\n) {\n coordinatesss = coordinatesss !== undefined ? coordinatesss : [];\n let i = 0;\n for (let j = 0, jj = endss.length; j < jj; ++j) {\n const ends = endss[j];\n coordinatesss[i++] =\n ends.length === 1 && ends[0] === offset\n ? []\n : inflateCoordinatesArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n coordinatesss[i]\n );\n offset = ends[ends.length - 1];\n }\n coordinatesss.length = i;\n return coordinatesss;\n}\n","/**\n * @module ol/geom/flat/area\n */\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRing(flatCoordinates, offset, end, stride) {\n let twiceArea = 0;\n let x1 = flatCoordinates[end - stride];\n let y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n const x2 = flatCoordinates[offset];\n const y2 = flatCoordinates[offset + 1];\n twiceArea += y1 * x2 - x1 * y2;\n x1 = x2;\n y1 = y2;\n }\n return twiceArea / 2;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRings(flatCoordinates, offset, ends, stride) {\n let area = 0;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n area += linearRing(flatCoordinates, offset, end, stride);\n offset = end;\n }\n return area;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRingss(flatCoordinates, offset, endss, stride) {\n let area = 0;\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n area += linearRings(flatCoordinates, offset, ends, stride);\n offset = ends[ends.length - 1];\n }\n return area;\n}\n","/**\n * @module ol/geom/LinearRing\n */\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {assignClosestPoint, maxSquaredDelta} from './flat/closest.js';\nimport {closestSquaredDistanceXY} from '../extent.js';\nimport {deflateCoordinates} from './flat/deflate.js';\nimport {douglasPeucker} from './flat/simplify.js';\nimport {inflateCoordinates} from './flat/inflate.js';\nimport {linearRing as linearRingArea} from './flat/area.js';\n\n/**\n * @classdesc\n * Linear ring geometry. Only used as part of polygon; cannot be rendered\n * on its own.\n *\n * @api\n */\nclass LinearRing extends SimpleGeometry {\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `layout` are also accepted.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n */\n constructor(coordinates, layout) {\n super();\n\n /**\n * @private\n * @type {number}\n */\n this.maxDelta_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDeltaRevision_ = -1;\n\n if (layout !== undefined && !Array.isArray(coordinates[0])) {\n this.setFlatCoordinates(\n layout,\n /** @type {Array} */ (coordinates)\n );\n } else {\n this.setCoordinates(\n /** @type {Array} */ (\n coordinates\n ),\n layout\n );\n }\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!LinearRing} Clone.\n * @api\n */\n clone() {\n return new LinearRing(this.flatCoordinates.slice(), this.layout);\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n closestPointXY(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(\n maxSquaredDelta(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n 0\n )\n );\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n this.maxDelta_,\n true,\n x,\n y,\n closestPoint,\n minSquaredDistance\n );\n }\n\n /**\n * Return the area of the linear ring on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n getArea() {\n return linearRingArea(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride\n );\n }\n\n /**\n * Return the coordinates of the linear ring.\n * @return {Array} Coordinates.\n * @api\n */\n getCoordinates() {\n return inflateCoordinates(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride\n );\n }\n\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {LinearRing} Simplified LinearRing.\n * @protected\n */\n getSimplifiedGeometryInternal(squaredTolerance) {\n /** @type {Array} */\n const simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n 0\n );\n return new LinearRing(simplifiedFlatCoordinates, 'XY');\n }\n\n /**\n * Get the type of this geometry.\n * @return {import(\"./Geometry.js\").Type} Geometry type.\n * @api\n */\n getType() {\n return 'LinearRing';\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n intersectsExtent(extent) {\n return false;\n }\n\n /**\n * Set the coordinates of the linear ring.\n * @param {!Array} coordinates Coordinates.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n * @api\n */\n setCoordinates(coordinates, layout) {\n this.setLayout(layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(\n this.flatCoordinates,\n 0,\n coordinates,\n this.stride\n );\n this.changed();\n }\n}\n\nexport default LinearRing;\n","/**\n * @module ol/geom/Point\n */\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {containsXY, createOrUpdateFromCoordinate} from '../extent.js';\nimport {deflateCoordinate} from './flat/deflate.js';\nimport {squaredDistance as squaredDx} from '../math.js';\n\n/**\n * @classdesc\n * Point geometry.\n *\n * @api\n */\nclass Point extends SimpleGeometry {\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinates Coordinates.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n */\n constructor(coordinates, layout) {\n super();\n this.setCoordinates(coordinates, layout);\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!Point} Clone.\n * @api\n */\n clone() {\n const point = new Point(this.flatCoordinates.slice(), this.layout);\n point.applyProperties(this);\n return point;\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n const flatCoordinates = this.flatCoordinates;\n const squaredDistance = squaredDx(\n x,\n y,\n flatCoordinates[0],\n flatCoordinates[1]\n );\n if (squaredDistance < minSquaredDistance) {\n const stride = this.stride;\n for (let i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n }\n return minSquaredDistance;\n }\n\n /**\n * Return the coordinate of the point.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinates.\n * @api\n */\n getCoordinates() {\n return this.flatCoordinates.slice();\n }\n\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n computeExtent(extent) {\n return createOrUpdateFromCoordinate(this.flatCoordinates, extent);\n }\n\n /**\n * Get the type of this geometry.\n * @return {import(\"./Geometry.js\").Type} Geometry type.\n * @api\n */\n getType() {\n return 'Point';\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n intersectsExtent(extent) {\n return containsXY(extent, this.flatCoordinates[0], this.flatCoordinates[1]);\n }\n\n /**\n * @param {!Array<*>} coordinates Coordinates.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n * @api\n */\n setCoordinates(coordinates, layout) {\n this.setLayout(layout, coordinates, 0);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinate(\n this.flatCoordinates,\n 0,\n coordinates,\n this.stride\n );\n this.changed();\n }\n}\n\nexport default Point;\n","/**\n * @module ol/geom/flat/contains\n */\nimport {forEachCorner} from '../../extent.js';\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} Contains extent.\n */\nexport function linearRingContainsExtent(\n flatCoordinates,\n offset,\n end,\n stride,\n extent\n) {\n const outside = forEachCorner(\n extent,\n /**\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains (x, y).\n */\n function (coordinate) {\n return !linearRingContainsXY(\n flatCoordinates,\n offset,\n end,\n stride,\n coordinate[0],\n coordinate[1]\n );\n }\n );\n return !outside;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingContainsXY(\n flatCoordinates,\n offset,\n end,\n stride,\n x,\n y\n) {\n // https://geomalgorithms.com/a03-_inclusion.html\n // Copyright 2000 softSurfer, 2012 Dan Sunday\n // This code may be freely used and modified for any purpose\n // providing that this copyright notice is included with it.\n // SoftSurfer makes no warranty for this code, and cannot be held\n // liable for any real or imagined damage resulting from its use.\n // Users of this code must verify correctness for their application.\n let wn = 0;\n let x1 = flatCoordinates[end - stride];\n let y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n const x2 = flatCoordinates[offset];\n const 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 } 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/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingsContainsXY(\n flatCoordinates,\n offset,\n ends,\n stride,\n x,\n y\n) {\n if (ends.length === 0) {\n return false;\n }\n if (!linearRingContainsXY(flatCoordinates, offset, ends[0], stride, x, y)) {\n return false;\n }\n for (let i = 1, ii = ends.length; i < ii; ++i) {\n if (\n linearRingContainsXY(flatCoordinates, ends[i - 1], ends[i], stride, x, y)\n ) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingssContainsXY(\n flatCoordinates,\n offset,\n endss,\n stride,\n x,\n y\n) {\n if (endss.length === 0) {\n return false;\n }\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n","/**\n * @module ol/geom/flat/interiorpoint\n */\nimport {ascending} from '../../array.js';\nimport {linearRingsContainsXY} from './contains.js';\n\n/**\n * Calculates a point that is likely to lie in the interior of the linear rings.\n * Inspired by JTS's com.vividsolutions.jts.geom.Geometry#getInteriorPoint.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array