leaflet-city-mapper 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -14
- package/cucumber.mjs +2 -2
- package/dist/leaflet-city-mapper-src.js +15326 -0
- package/dist/leaflet-city-mapper-src.js.map +7 -0
- package/dist/leaflet-city-mapper.js +4 -1
- package/dist/leaflet-city-mapper.js.map +4 -4
- package/libs/leaflet-lens.js +122 -0
- package/libs/leaflet.js +76 -0
- package/libs/openlayers-bindings.js +1128 -0
- package/libs/openlayers-bindings.min.js +99 -0
- package/libs/openlayers-bindings.min.js.map +7 -0
- package/package.json +5 -3
- package/src/archives/decodeDirectory.js +50 -0
- package/src/archives/decodeHeader.js +23 -0
- package/src/archives/decompress.js +10 -0
- package/src/archives/findDirectoryEntry.js +9 -0
- package/src/archives/findTile.js +31 -0
- package/src/archives/getDirectoryEntries.js +18 -0
- package/src/archives/getHeader.js +13 -0
- package/src/archives/getTileData.js +13 -0
- package/src/archives/getZxy.js +19 -0
- package/src/archives/loadDirectory.js +7 -0
- package/src/archives/loadSource.js +31 -0
- package/src/archives/read.js +32 -0
- package/src/archives/tileId.js +23 -0
- package/src/archives/varint.js +19 -0
- package/src/camera/angles.js +14 -0
- package/src/camera/animationPoint.js +11 -0
- package/src/camera/cameraMapReady.js +11 -0
- package/src/camera/cancelCameraAnimation.js +15 -0
- package/src/camera/cleanupCameraMap.js +14 -0
- package/src/camera/constrainCameraToBounds.js +3 -0
- package/src/camera/displayPoint.js +3 -0
- package/src/camera/fitCameraBounds.js +58 -0
- package/src/camera/getBearing.js +5 -0
- package/src/camera/getPitch.js +5 -0
- package/src/camera/groundBounds.js +18 -0
- package/src/camera/initializeCameraMap.js +30 -0
- package/src/camera/mapAnimateCamera.js +24 -0
- package/src/camera/mapCamera.js +103 -0
- package/src/camera/mapContainerPointToLayerPoint.js +9 -0
- package/src/camera/mapGetBearing.js +4 -0
- package/src/camera/mapGetBounds.js +20 -0
- package/src/camera/mapGetBoundsCenterZoom.js +10 -0
- package/src/camera/mapGetBoundsZoom.js +24 -0
- package/src/camera/mapGetCenterLayerPoint.js +6 -0
- package/src/camera/mapGetPitch.js +4 -0
- package/src/camera/mapLayerPointToContainerPoint.js +8 -0
- package/src/camera/mapLimitCenter.js +17 -0
- package/src/camera/mapLimitOffset.js +14 -0
- package/src/camera/mapPanBy.js +10 -0
- package/src/camera/mapPanInside.js +20 -0
- package/src/camera/mapResetNorth.js +4 -0
- package/src/camera/mapResetNorthPitch.js +4 -0
- package/src/camera/mapSetBearing.js +3 -0
- package/src/camera/mapSetPitch.js +3 -0
- package/src/camera/mapSetPitchAndBearing.js +22 -0
- package/src/camera/mapSetZoomAround.js +15 -0
- package/src/camera/mapStopPitchBearingAnimation.js +6 -0
- package/src/camera/mapTryAnimatedPan.js +10 -0
- package/src/camera/mapUpdateCameraOverlays.js +8 -0
- package/src/camera/pointOf.js +5 -0
- package/src/camera/project.js +27 -0
- package/src/camera/runCameraAnimations.js +31 -0
- package/src/camera/scheduleCameraAnimation.js +13 -0
- package/src/camera/updateSky.js +22 -0
- package/src/camera/verticalGroundY.js +4 -0
- package/src/cog/decodeCogTile.js +24 -0
- package/src/cog/finiteCogValues.js +5 -0
- package/src/cog/getCogAssetEntry.js +15 -0
- package/src/cog/getCogBase.js +10 -0
- package/src/cog/getCogHeader.js +3 -0
- package/src/cog/getCogProfile.js +16 -0
- package/src/cog/getCogTile.js +12 -0
- package/src/cog/getColorTile.js +25 -0
- package/src/cog/getElevationTile.js +16 -0
- package/src/cog/hasCogProjection.js +9 -0
- package/src/cog/initCog.js +7 -0
- package/src/cog/invalidCogFullResponse.js +3 -0
- package/src/cog/openCog.js +30 -0
- package/src/cog/openCogAsset.js +14 -0
- package/src/cog/readCog.js +25 -0
- package/src/cog/readCogBlock.js +8 -0
- package/src/cog/readCogBody.js +20 -0
- package/src/cog/readCogDirectories.js +20 -0
- package/src/cog/readCogDirectory.js +21 -0
- package/src/cog/readCogLevel.js +27 -0
- package/src/cog/readCogTag.js +15 -0
- package/src/cog/validCogDimensions.js +6 -0
- package/src/cog/validCogEncoding.js +5 -0
- package/src/cog/validCogGeoArrays.js +8 -0
- package/src/cog/validCogGrid.js +9 -0
- package/src/cog/validCogTileCoordinates.js +4 -0
- package/src/cog/validateCogContainer.js +9 -0
- package/src/cog/validateCogContentRange.js +8 -0
- package/src/cog/validateCogOffsets.js +10 -0
- package/src/cog/validateCogRange.js +7 -0
- package/src/cog/validateCogResponse.js +15 -0
- package/src/collision/collectMeshes.js +5 -0
- package/src/collision/collider.js +56 -0
- package/src/collision/hiddenLightHit.js +8 -0
- package/src/collision/indexTriangle.js +11 -0
- package/src/collision/intersectMeshes.js +32 -0
- package/src/collision/localRay.js +21 -0
- package/src/collision/mergeHits.js +11 -0
- package/src/collision/rayBounds.js +19 -0
- package/src/collision/readTriangle.js +20 -0
- package/src/collision/sortHits.js +17 -0
- package/src/collision/transformTriangle.js +9 -0
- package/src/collision/triangleDistance.js +21 -0
- package/src/collision/worldHit.js +18 -0
- package/src/controls/acceptPitchDrag.js +4 -0
- package/src/controls/acceptRotateDrag.js +3 -0
- package/src/controls/addCameraHandler.js +9 -0
- package/src/controls/adjustCameraDrag.js +15 -0
- package/src/controls/cameraControls.js +91 -0
- package/src/controls/cameraDragClick.js +10 -0
- package/src/controls/cameraDragContextMenu.js +9 -0
- package/src/controls/cameraDragDown.js +23 -0
- package/src/controls/cameraDragEnd.js +7 -0
- package/src/controls/cameraDragMove.js +28 -0
- package/src/controls/changeCameraTouch.js +17 -0
- package/src/controls/cleanupCameraTouch.js +29 -0
- package/src/controls/compassAddHooks.js +18 -0
- package/src/controls/compassOrientation.js +7 -0
- package/src/controls/compassRemoveHooks.js +5 -0
- package/src/controls/containerResizeAddHooks.js +8 -0
- package/src/controls/containerResizeRemoveHooks.js +5 -0
- package/src/controls/dragCamera.js +26 -0
- package/src/controls/editable.js +3 -0
- package/src/controls/endAllCameraDrags.js +9 -0
- package/src/controls/endAllCameraTouches.js +9 -0
- package/src/controls/endCameraTouch.js +12 -0
- package/src/controls/endCameraTouchEvent.js +8 -0
- package/src/controls/failCompassPermission.js +4 -0
- package/src/controls/finishCameraDrag.js +9 -0
- package/src/controls/finishCompassPermission.js +17 -0
- package/src/controls/loadCameraControls.js +9 -0
- package/src/controls/moveCameraTouch.js +29 -0
- package/src/controls/notifyCameraTouchChange.js +1 -0
- package/src/controls/pitchDragAddHooks.js +8 -0
- package/src/controls/pitchDragRemoveHooks.js +5 -0
- package/src/controls/refreshRotateControl.js +10 -0
- package/src/controls/refreshRotateFocus.js +5 -0
- package/src/controls/removeCameraDrag.js +26 -0
- package/src/controls/resizeMap.js +3 -0
- package/src/controls/rotateButtonClick.js +11 -0
- package/src/controls/rotateButtonKeydown.js +15 -0
- package/src/controls/rotateControl.js +4 -0
- package/src/controls/rotateOnAdd.js +42 -0
- package/src/controls/rotateOnRemove.js +6 -0
- package/src/controls/shiftRotateAddHooks.js +10 -0
- package/src/controls/shiftRotateRemoveHooks.js +5 -0
- package/src/controls/shiftRotateWheel.js +11 -0
- package/src/controls/startCameraTouch.js +33 -0
- package/src/core/addImageState.js +8 -0
- package/src/core/addRasterImage.js +12 -0
- package/src/core/adjustCameraMarkerPan.js +28 -0
- package/src/core/beforeNativeRender.js +10 -0
- package/src/core/boundsQuad.js +12 -0
- package/src/core/bringNativeLayerToBack.js +8 -0
- package/src/core/bringNativeLayerToFront.js +8 -0
- package/src/core/bypassNativeEvent.js +11 -0
- package/src/core/cameraCircleBounds.js +7 -0
- package/src/core/cameraMarkerDrag.js +21 -0
- package/src/core/cameraMarkerOnDrag.js +13 -0
- package/src/core/cancelGridFade.js +14 -0
- package/src/core/closestCameraLayerPoint.js +8 -0
- package/src/core/compareNativeHits.js +3 -0
- package/src/core/current.js +6 -0
- package/src/core/disposeNativeLayer.js +39 -0
- package/src/core/fireRasterLoad.js +6 -0
- package/src/core/forwardNativeError.js +3 -0
- package/src/core/gridlayerGetEvents.js +10 -0
- package/src/core/gridlayerGetTiledPixelBounds.js +12 -0
- package/src/core/handleNativeMapEvent.js +27 -0
- package/src/core/hideTargets.js +18 -0
- package/src/core/initNativeGPU.js +25 -0
- package/src/core/initializeGridContainer.js +7 -0
- package/src/core/initializeNativeLayer.js +40 -0
- package/src/core/layerCallInitHooks.js +14 -0
- package/src/core/localPixel.js +5 -0
- package/src/core/localPixelForGeometry.js +7 -0
- package/src/core/localPosition.js +10 -0
- package/src/core/markerCameraIconPoint.js +12 -0
- package/src/core/markerGetEvents.js +9 -0
- package/src/core/markerImageBounds.js +11 -0
- package/src/core/markerInitInteraction.js +10 -0
- package/src/core/markerQuadCorners.js +48 -0
- package/src/core/markerSetIcon.js +12 -0
- package/src/core/markerSetPos.js +19 -0
- package/src/core/markerSetRotation.js +9 -0
- package/src/core/markerUpdateZIndex.js +12 -0
- package/src/core/nativeAddLatLng.js +3 -0
- package/src/core/nativeBringToBack.js +3 -0
- package/src/core/nativeBringToFront.js +3 -0
- package/src/core/nativeEventSource.js +18 -0
- package/src/core/nativeEvents.js +31 -0
- package/src/core/nativeImageError.js +13 -0
- package/src/core/nativeImageRefresh.js +11 -0
- package/src/core/nativeLayer.js +100 -0
- package/src/core/nativeLayerMethod.js +26 -0
- package/src/core/nativeRedraw.js +3 -0
- package/src/core/nativeSetBounds.js +3 -0
- package/src/core/nativeSetIcon.js +3 -0
- package/src/core/nativeSetLatLng.js +3 -0
- package/src/core/nativeSetLatLngs.js +3 -0
- package/src/core/nativeSetOpacity.js +3 -0
- package/src/core/nativeSetRadius.js +3 -0
- package/src/core/nativeSetStyle.js +3 -0
- package/src/core/nativeSetUrl.js +3 -0
- package/src/core/nativeSetZIndex.js +3 -0
- package/src/core/nativeSetZIndexOffset.js +3 -0
- package/src/core/popupAdjustPan.js +29 -0
- package/src/core/popupGetEvents.js +8 -0
- package/src/core/popupUpdatePosition.js +17 -0
- package/src/core/pruneNativeResources.js +20 -0
- package/src/core/putNativeMesh.js +36 -0
- package/src/core/quadNativeMesh.js +20 -0
- package/src/core/readyNativeGPU.js +9 -0
- package/src/core/redrawPath.js +6 -0
- package/src/core/refreshNativeEvent.js +5 -0
- package/src/core/refreshNativeLayer.js +34 -0
- package/src/core/refreshNativeLayerContract.js +8 -0
- package/src/core/rejectNativeReady.js +4 -0
- package/src/core/removeImageState.js +9 -0
- package/src/core/removeLayer.js +22 -0
- package/src/core/removeNativeEvents.js +17 -0
- package/src/core/removeTargets.js +12 -0
- package/src/core/reorderNativeLayer.js +9 -0
- package/src/core/resolveNativeReady.js +4 -0
- package/src/core/restoreNativeEvents.js +6 -0
- package/src/core/runGridFades.js +19 -0
- package/src/core/runMarkerPanFrame.js +14 -0
- package/src/core/scheduleGridFade.js +14 -0
- package/src/core/scheduleMarkerPan.js +11 -0
- package/src/core/setRotation.js +5 -0
- package/src/core/styleNativeMesh.js +14 -0
- package/src/core/syncGridLayer.js +29 -0
- package/src/core/syncImageOverlay.js +9 -0
- package/src/core/syncMarker.js +14 -0
- package/src/core/syncVectorLayer.js +29 -0
- package/src/core/synchronizeNativeLayer.js +26 -0
- package/src/core/textureFor.js +46 -0
- package/src/core/tooltipGetEvents.js +8 -0
- package/src/core/tooltipSetPosition.js +11 -0
- package/src/core/transformNativePoint.js +7 -0
- package/src/core/updateGridOpacity.js +27 -0
- package/src/core/updateNativeHover.js +7 -0
- package/src/core/updateNativeLayerView.js +9 -0
- package/src/core/uploadCanvasTexture.js +22 -0
- package/src/core/uploadNativeImage.js +13 -0
- package/src/geometry/addBridges.js +29 -0
- package/src/geometry/below.js +3 -0
- package/src/geometry/box.js +8 -0
- package/src/geometry/bridgeEdge.js +11 -0
- package/src/geometry/bridgeElevation.js +21 -0
- package/src/geometry/bridgeFaces.js +15 -0
- package/src/geometry/bridgeLocal.js +5 -0
- package/src/geometry/bridgePaths.js +11 -0
- package/src/geometry/bridgePolygon.js +31 -0
- package/src/geometry/bridgeSides.js +11 -0
- package/src/geometry/build.js +23 -0
- package/src/geometry/circleAt.js +7 -0
- package/src/geometry/circleGeometry.js +34 -0
- package/src/geometry/clipLine.js +23 -0
- package/src/geometry/clipSegment.js +23 -0
- package/src/geometry/computeBounds.js +38 -0
- package/src/geometry/conformModelToTerrain.js +72 -0
- package/src/geometry/cross.js +7 -0
- package/src/geometry/dashValues.js +14 -0
- package/src/geometry/dashedSegment.js +16 -0
- package/src/geometry/disk.js +11 -0
- package/src/geometry/diskAt.js +6 -0
- package/src/geometry/dot.js +6 -0
- package/src/geometry/emitter.js +8 -0
- package/src/geometry/indexBridge.js +29 -0
- package/src/geometry/lampPostGeometry.js +30 -0
- package/src/geometry/lampRing.js +14 -0
- package/src/geometry/lightGeometry.js +15 -0
- package/src/geometry/line.js +21 -0
- package/src/geometry/lineJoin.js +26 -0
- package/src/geometry/nativeGeometry.js +21 -0
- package/src/geometry/nativeTriangle.js +3 -0
- package/src/geometry/polygon.js +23 -0
- package/src/geometry/push.js +3 -0
- package/src/geometry/quad.js +9 -0
- package/src/geometry/roofCoverage.js +23 -0
- package/src/geometry/roofFootprint.js +29 -0
- package/src/geometry/samePoint.js +3 -0
- package/src/geometry/segment.js +22 -0
- package/src/geometry/setVertexColor.js +17 -0
- package/src/geometry/sub.js +6 -0
- package/src/geometry/subtractRoofTile.js +19 -0
- package/src/geometry/surface.js +18 -0
- package/src/geometry/treeGeometry.js +30 -0
- package/src/geometry/treeRing.js +15 -0
- package/src/geometry/triangle.js +13 -0
- package/src/geometry/validateTree.js +7 -0
- package/src/geometry/vertexNormals.js +26 -0
- package/src/geometry/visit.js +10 -0
- package/src/globals/CELL.js +3 -0
- package/src/globals/Compass.js +1 -0
- package/src/globals/ContainerResize.js +1 -0
- package/src/globals/HEIGHT.js +1 -0
- package/src/globals/L.js +1 -0
- package/src/globals/PitchDrag.js +1 -0
- package/src/globals/ShiftRotate.js +1 -0
- package/src/globals/TILE_RADIUS.js +1 -0
- package/src/globals/TILE_SIZE.js +1 -0
- package/src/globals/TouchMode.js +1 -0
- package/src/globals/alphaBlend.js +12 -0
- package/src/globals/archiveDecoder.js +1 -0
- package/src/globals/archiveNorthWest.js +1 -0
- package/src/globals/archiveSouthEast.js +1 -0
- package/src/globals/atmosphereColor.js +1 -0
- package/src/globals/atmosphereStops.js +22 -0
- package/src/globals/blobParts.js +1 -0
- package/src/globals/boundsMethods.js +1 -0
- package/src/globals/cameraAngles.js +1 -0
- package/src/globals/cameraAnimatedOptions.js +3 -0
- package/src/globals/cameraAnimationFrame.js +1 -0
- package/src/globals/cameraAnimations.js +1 -0
- package/src/globals/cameraBearingSensitivity.js +1 -0
- package/src/globals/cameraByMap.js +1 -0
- package/src/globals/cameraDragSensitivity.js +1 -0
- package/src/globals/cameraDrags.js +1 -0
- package/src/globals/cameraEmptyOptions.js +1 -0
- package/src/globals/cameraFocusOptions.js +3 -0
- package/src/globals/cameraFov.js +3 -0
- package/src/globals/cameraListenerOptions.js +4 -0
- package/src/globals/cameraTouchStates.js +1 -0
- package/src/globals/cameraZeroPadding.js +1 -0
- package/src/globals/closestMethods.js +1 -0
- package/src/globals/cogTags.js +1 -0
- package/src/globals/colliders.js +1 -0
- package/src/globals/colorLayout.js +8 -0
- package/src/globals/coreEventTypes.js +4 -0
- package/src/globals/coreMatrixKeys.js +4 -0
- package/src/globals/coreQuadIndices.js +1 -0
- package/src/globals/coreQuadUV.js +1 -0
- package/src/globals/coreSampler.js +4 -0
- package/src/globals/coreWhite.js +1 -0
- package/src/globals/cosObliquity.js +3 -0
- package/src/globals/coverageTiles.js +1 -0
- package/src/globals/dark.js +1 -0
- package/src/globals/defaultMaterial.js +1 -0
- package/src/globals/degrees.js +1 -0
- package/src/globals/demBuffer.js +4 -0
- package/src/globals/demLayout.js +3 -0
- package/src/globals/demSize.js +1 -0
- package/src/globals/demTarget.js +3 -0
- package/src/globals/demTexture.js +5 -0
- package/src/globals/depthBindGroup.js +9 -0
- package/src/globals/depthTexture.js +5 -0
- package/src/globals/directoryReader.js +4 -0
- package/src/globals/disabledShadow.js +1 -0
- package/src/globals/dragByHandler.js +1 -0
- package/src/globals/dragStates.js +1 -0
- package/src/globals/drawEntries.js +1 -0
- package/src/globals/drawFrameEntry.js +7 -0
- package/src/globals/drawMeshEntry.js +7 -0
- package/src/globals/drawSamplerEntries.js +18 -0
- package/src/globals/drawTerrainEntry.js +4 -0
- package/src/globals/drawTextureEntries.js +18 -0
- package/src/globals/earthCirc.js +1 -0
- package/src/globals/elevationWGSL.js +27 -0
- package/src/globals/fragmentShader.js +3 -0
- package/src/globals/frameBuffer.js +4 -0
- package/src/globals/frameCommands.js +1 -0
- package/src/globals/frameLayoutEntry.js +7 -0
- package/src/globals/geometryDecoder.js +1 -0
- package/src/globals/geometryEmpty.js +1 -0
- package/src/globals/geometryImageOptions.js +4 -0
- package/src/globals/geometryPixelStates.js +1 -0
- package/src/globals/geometryQuaternion.js +1 -0
- package/src/globals/geometryScale.js +1 -0
- package/src/globals/geometrySemantics.js +5 -0
- package/src/globals/geometryTranslation.js +1 -0
- package/src/globals/glass.js +1 -0
- package/src/globals/gridEvents.js +1 -0
- package/src/globals/gridFadeFrame.js +1 -0
- package/src/globals/gridInitializers.js +1 -0
- package/src/globals/halfRadians.js +1 -0
- package/src/globals/headerBounds.js +1 -0
- package/src/globals/headerFlags.js +1 -0
- package/src/globals/headerOffsets.js +5 -0
- package/src/globals/hull.js +10 -0
- package/src/globals/imageStates.js +1 -0
- package/src/globals/instanceLayout.js +9 -0
- package/src/globals/lampDirections.js +8 -0
- package/src/globals/layerCallInitHooks.js +1 -0
- package/src/globals/layerProto.js +1 -0
- package/src/globals/lightScale.js +1 -0
- package/src/globals/limbs.js +8 -0
- package/src/globals/loading.js +1 -0
- package/src/globals/mapMethods.js +1 -0
- package/src/globals/markerMethods.js +1 -0
- package/src/globals/markerPanFrame.js +1 -0
- package/src/globals/meshBindGroup.js +4 -0
- package/src/globals/meshBuffer.js +4 -0
- package/src/globals/meshCopySize.js +1 -0
- package/src/globals/meshImage.js +4 -0
- package/src/globals/meshLayoutEntry.js +8 -0
- package/src/globals/meshOffsets.js +1 -0
- package/src/globals/meshPipeline.js +27 -0
- package/src/globals/meshStack.js +3 -0
- package/src/globals/meshTarget.js +3 -0
- package/src/globals/nativeEventMaps.js +1 -0
- package/src/globals/nativeMethodHandlers.js +31 -0
- package/src/globals/nativeRenderByLayer.js +1 -0
- package/src/globals/nextId.js +1 -0
- package/src/globals/normalLayout.js +8 -0
- package/src/globals/parts.js +24 -0
- package/src/globals/pendingGridFades.js +1 -0
- package/src/globals/pendingInitializations.js +1 -0
- package/src/globals/pendingMapChanges.js +1 -0
- package/src/globals/pendingMarkerPan.js +1 -0
- package/src/globals/pendingPlacements.js +1 -0
- package/src/globals/pendingRasterLoads.js +1 -0
- package/src/globals/pendingUpdates.js +1 -0
- package/src/globals/pendingZoomAnimations.js +1 -0
- package/src/globals/pipelineLayout.js +3 -0
- package/src/globals/popupEvents.js +1 -0
- package/src/globals/popupPan.js +1 -0
- package/src/globals/popupPosition.js +1 -0
- package/src/globals/positionLayout.js +8 -0
- package/src/globals/programEntries.js +1 -0
- package/src/globals/programLayout.js +3 -0
- package/src/globals/radians.js +1 -0
- package/src/globals/rasterBuffer.js +4 -0
- package/src/globals/rasterIndices.js +1 -0
- package/src/globals/rasterNormals.js +1 -0
- package/src/globals/rasterPoint.js +4 -0
- package/src/globals/rasterPositions.js +1 -0
- package/src/globals/rasterSampler.js +6 -0
- package/src/globals/rasterTexture.js +5 -0
- package/src/globals/rasterUVs.js +1 -0
- package/src/globals/removeLayer.js +1 -0
- package/src/globals/renderEmpty.js +1 -0
- package/src/globals/rendererDevices.js +1 -0
- package/src/globals/ringDirections.js +49 -0
- package/src/globals/roofBindGroup.js +17 -0
- package/src/globals/roofBlitSampler.js +4 -0
- package/src/globals/roofBuffer.js +4 -0
- package/src/globals/roofCommands.js +1 -0
- package/src/globals/roofCopySize.js +1 -0
- package/src/globals/roofImage.js +3 -0
- package/src/globals/roofMin.js +4 -0
- package/src/globals/roofOpacities.js +1 -0
- package/src/globals/roofPass.js +13 -0
- package/src/globals/roofPipeline.js +29 -0
- package/src/globals/roofSampler.js +4 -0
- package/src/globals/roofShader.js +16 -0
- package/src/globals/roofSignatures.js +1 -0
- package/src/globals/roofSize.js +4 -0
- package/src/globals/roofTarget.js +3 -0
- package/src/globals/roofTexture.js +5 -0
- package/src/globals/roofTiles.js +1 -0
- package/src/globals/roundProfile.js +7 -0
- package/src/globals/samplerLayoutEntries.js +36 -0
- package/src/globals/sceneByLayer.js +1 -0
- package/src/globals/sceneCleanupFields.js +1 -0
- package/src/globals/sceneEmptyOptions.js +1 -0
- package/src/globals/scenePass.js +19 -0
- package/src/globals/sceneSunlightUniforms.js +3 -0
- package/src/globals/sceneTransferFields.js +1 -0
- package/src/globals/sceneWalkHandlers.js +1 -0
- package/src/globals/shadowBindGroup.js +10 -0
- package/src/globals/shadowBounds.js +4 -0
- package/src/globals/shadowCamera.js +15 -0
- package/src/globals/shadowDepthLayout.js +9 -0
- package/src/globals/shadowHigh.js +1 -0
- package/src/globals/shadowInstanceLayouts.js +4 -0
- package/src/globals/shadowLayouts.js +3 -0
- package/src/globals/shadowLow.js +1 -0
- package/src/globals/shadowMeshLayout.js +10 -0
- package/src/globals/shadowOffsets.js +1 -0
- package/src/globals/shadowPass.js +9 -0
- package/src/globals/shadowPipeline.js +24 -0
- package/src/globals/shadowPipelineLayout.js +3 -0
- package/src/globals/shadowShader.js +3 -0
- package/src/globals/shadowTexture.js +5 -0
- package/src/globals/shadowValues.js +1 -0
- package/src/globals/shirt.js +1 -0
- package/src/globals/sinObliquity.js +3 -0
- package/src/globals/sizes.js +6 -0
- package/src/globals/skin.js +2 -0
- package/src/globals/sunBindGroup.js +20 -0
- package/src/globals/sunByMap.js +1 -0
- package/src/globals/sunlightByControl.js +1 -0
- package/src/globals/tau.js +1 -0
- package/src/globals/terrainLayoutEntry.js +8 -0
- package/src/globals/textureLayoutEntries.js +41 -0
- package/src/globals/tiledBounds.js +1 -0
- package/src/globals/tooltipEvents.js +1 -0
- package/src/globals/tooltipPosition.js +1 -0
- package/src/globals/touchByContainer.js +1 -0
- package/src/globals/trafficByLayer.js +1 -0
- package/src/globals/trafficClocks.js +1 -0
- package/src/globals/trafficEmptyList.js +1 -0
- package/src/globals/trafficEmptyOptions.js +1 -0
- package/src/globals/trafficRouteMaterial.js +1 -0
- package/src/globals/trafficShader.js +49 -0
- package/src/globals/triangleContexts.js +1 -0
- package/src/globals/trousers.js +1 -0
- package/src/globals/tyre.js +1 -0
- package/src/globals/uVLayout.js +8 -0
- package/src/globals/vehicles.js +55 -0
- package/src/globals/vertexShader.js +3 -0
- package/src/globals/walkByMap.js +1 -0
- package/src/globals/wantedTiles.js +1 -0
- package/src/index.js +48 -328
- package/src/lighting/cacheLightGrid.js +32 -0
- package/src/lighting/collectLightMeshes.js +9 -0
- package/src/lighting/lightGrid.js +43 -0
- package/src/lighting/updatePointLights.js +38 -0
- package/src/lighting/visitCells.js +8 -0
- package/src/lighting/visitLightCells.js +13 -0
- package/src/lighting/worldLights.js +25 -0
- package/src/lighting/writeLightCell.js +5 -0
- package/src/models/applyModelTransform.js +13 -0
- package/src/models/buildModelNodes.js +14 -0
- package/src/models/createModelContext.js +15 -0
- package/src/models/createModelGeometry.js +40 -0
- package/src/models/decodeModel.js +48 -0
- package/src/models/hasUnsupportedPrimitives.js +10 -0
- package/src/models/loadBuffer.js +6 -0
- package/src/models/loadImage.js +19 -0
- package/src/models/loadModel.js +44 -0
- package/src/models/loadModelResources.js +19 -0
- package/src/models/materialFor.js +21 -0
- package/src/models/modelNode.js +49 -0
- package/src/models/nodeMatrix.js +27 -0
- package/src/models/normalizeAccessor.js +11 -0
- package/src/models/readAccessor.js +33 -0
- package/src/models/readAccessorValue.js +7 -0
- package/src/models/readAccessorValues.js +20 -0
- package/src/models/readModelAttributes.js +20 -0
- package/src/models/readModelIndices.js +16 -0
- package/src/models/readSparseAccessor.js +19 -0
- package/src/models/releaseModelResources.js +10 -0
- package/src/models/textureFor.js +38 -0
- package/src/models/textureSampler.js +10 -0
- package/src/picking/collectVisibleMesh.js +4 -0
- package/src/picking/findFeature.js +52 -0
- package/src/picking/hit.js +24 -0
- package/src/picking/hitColliderCell.js +19 -0
- package/src/picking/hitMesh.js +26 -0
- package/src/picking/onClick.js +16 -0
- package/src/picking/onPointerLeave.js +14 -0
- package/src/picking/onPointerMove.js +18 -0
- package/src/picking/pointerClick.js +5 -0
- package/src/picking/pointerLeave.js +5 -0
- package/src/picking/pointerMove.js +5 -0
- package/src/picking/raycast.js +66 -0
- package/src/picking/setHighlight.js +20 -0
- package/src/picking/shouldSkipOther.js +6 -0
- package/src/picking/showFeature.js +37 -0
- package/src/picking/validateCameraInverse.js +8 -0
- package/src/raster/addRasterTile.js +69 -0
- package/src/raster/comparePendingTiles.js +5 -0
- package/src/raster/createGeometry.js +29 -0
- package/src/raster/createRasterMesh.js +76 -0
- package/src/raster/finishAttachment.js +15 -0
- package/src/raster/finishRasterTile.js +61 -0
- package/src/raster/getRasterEvents.js +6 -0
- package/src/raster/getRasterTileSize.js +7 -0
- package/src/raster/initRaster.js +33 -0
- package/src/raster/isLoading.js +7 -0
- package/src/raster/loadRasterTile.js +13 -0
- package/src/raster/onPMTileAdd.js +13 -0
- package/src/raster/onPMTileRemove.js +11 -0
- package/src/raster/pruneRasterTiles.js +40 -0
- package/src/raster/pumpRasterTiles.js +26 -0
- package/src/raster/rasterTileRange.js +23 -0
- package/src/raster/readyRaster.js +16 -0
- package/src/raster/registerTerrainTile.js +15 -0
- package/src/raster/releaseRasterTile.js +21 -0
- package/src/raster/releaseRasterTiles.js +18 -0
- package/src/raster/removeRasterTile.js +16 -0
- package/src/raster/reportError.js +6 -0
- package/src/raster/retainRasterTiles.js +15 -0
- package/src/raster/setPMTileOpacity.js +7 -0
- package/src/raster/setPMTileZIndex.js +7 -0
- package/src/raster/setRasterOpacity.js +14 -0
- package/src/raster/setRasterTerrain.js +25 -0
- package/src/raster/setRasterZIndex.js +14 -0
- package/src/raster/terrainTileGeometry.js +16 -0
- package/src/raster/updateAttachedTiles.js +13 -0
- package/src/raster/updateRasterTiles.js +51 -0
- package/src/rendering/bindMeshTextures.js +50 -0
- package/src/rendering/collectFrameMeshes.js +38 -0
- package/src/rendering/collectMeshes.js +14 -0
- package/src/rendering/collectRoofTiles.js +15 -0
- package/src/rendering/collectVisibleMesh.js +27 -0
- package/src/rendering/compareMeshDepth.js +6 -0
- package/src/rendering/compareMeshes.js +8 -0
- package/src/rendering/compareRoofTiles.js +4 -0
- package/src/rendering/composeRoofAtlas.js +69 -0
- package/src/rendering/createMesh.js +44 -0
- package/src/rendering/createProgram.js +75 -0
- package/src/rendering/createProgramLayout.js +36 -0
- package/src/rendering/createProgramUniforms.js +17 -0
- package/src/rendering/destroyAfterSubmission.js +8 -0
- package/src/rendering/destroyTexture.js +9 -0
- package/src/rendering/disposeMesh.js +14 -0
- package/src/rendering/drawGeometry.js +41 -0
- package/src/rendering/drawPipeline.js +34 -0
- package/src/rendering/drawSceneMeshes.js +48 -0
- package/src/rendering/ensureRoofBlit.js +20 -0
- package/src/rendering/prepareFrameBuffer.js +17 -0
- package/src/rendering/prepareFrameMeshes.js +37 -0
- package/src/rendering/prepareFrameUniforms.js +44 -0
- package/src/rendering/prepareMeshCutout.js +12 -0
- package/src/rendering/prepareMeshTextures.js +23 -0
- package/src/rendering/prepareMeshUniforms.js +25 -0
- package/src/rendering/rebuildRoofAtlas.js +52 -0
- package/src/rendering/render.js +69 -0
- package/src/rendering/reportCompilation.js +17 -0
- package/src/rendering/resizeRenderer.js +24 -0
- package/src/rendering/resizeRoofTexture.js +24 -0
- package/src/rendering/revealRoofMesh.js +15 -0
- package/src/rendering/sortMeshes.js +6 -0
- package/src/rendering/synchronizeZoomView.js +26 -0
- package/src/rendering/textureBinding.js +7 -0
- package/src/rendering/updateMapCamera.js +46 -0
- package/src/rendering/updateRoofAtlas.js +20 -0
- package/src/rendering/updateRoofRaster.js +25 -0
- package/src/rendering/updateZoomCamera.js +18 -0
- package/src/rendering/uploadMeshTexture.js +26 -0
- package/src/rendering/uploadRoofTile.js +23 -0
- package/src/scene/addSceneLayer.js +17 -0
- package/src/scene/attach.js +54 -0
- package/src/scene/attachLayer.js +13 -0
- package/src/scene/callLayer.js +26 -0
- package/src/scene/cancelUpdate.js +13 -0
- package/src/scene/composeLocalTransform.js +16 -0
- package/src/scene/createLayer.js +7 -0
- package/src/scene/createSceneCamera.js +21 -0
- package/src/scene/emptyEvents.js +3 -0
- package/src/scene/emptyNode.js +12 -0
- package/src/scene/endZoom.js +23 -0
- package/src/scene/failAttachment.js +12 -0
- package/src/scene/get3DEvents.js +16 -0
- package/src/scene/getLocation.js +7 -0
- package/src/scene/init3D.js +43 -0
- package/src/scene/initializeLayer.js +22 -0
- package/src/scene/initializeRendererResources.js +35 -0
- package/src/scene/initializeSharedRenderer.js +45 -0
- package/src/scene/initializerFor.js +16 -0
- package/src/scene/isNativeLayer.js +12 -0
- package/src/scene/layerCountTitle.js +4 -0
- package/src/scene/layerInitialize.js +48 -0
- package/src/scene/layerLayerAdd.js +43 -0
- package/src/scene/mountRenderer.js +25 -0
- package/src/scene/onAdd3DLayer.js +39 -0
- package/src/scene/onMapChange.js +18 -0
- package/src/scene/onRemove3DLayer.js +63 -0
- package/src/scene/onZoomAnim.js +18 -0
- package/src/scene/placeEntry.js +13 -0
- package/src/scene/placeEntryElement.js +22 -0
- package/src/scene/placeUnderEntry.js +8 -0
- package/src/scene/ready.js +9 -0
- package/src/scene/ready3D.js +35 -0
- package/src/scene/releaseRenderer.js +14 -0
- package/src/scene/releaseSharedScene.js +25 -0
- package/src/scene/removeEntry.js +8 -0
- package/src/scene/removeLayerEvents.js +9 -0
- package/src/scene/removeSceneLayer.js +15 -0
- package/src/scene/renderLayerCount.js +13 -0
- package/src/scene/renderPendingMapChange.js +15 -0
- package/src/scene/renderPendingUpdates.js +23 -0
- package/src/scene/renderPendingZoomAnimation.js +11 -0
- package/src/scene/rendererDeviceError.js +14 -0
- package/src/scene/rendererDeviceLost.js +14 -0
- package/src/scene/replaceEntry.js +9 -0
- package/src/scene/reportError.js +3 -0
- package/src/scene/requestAdapter.js +12 -0
- package/src/scene/requestDevice.js +9 -0
- package/src/scene/resolveNextInitialization.js +13 -0
- package/src/scene/restoreGeometry.js +23 -0
- package/src/scene/restoreMaterialTextures.js +16 -0
- package/src/scene/restoreObject.js +35 -0
- package/src/scene/runPlacements.js +9 -0
- package/src/scene/showWebGPUWarning.js +16 -0
- package/src/scene/startZoom.js +8 -0
- package/src/scene/traverse.js +7 -0
- package/src/scene/underEntry.js +16 -0
- package/src/scene/update.js +23 -0
- package/src/scene/updateCamera.js +57 -0
- package/src/scene/updateLayerCount.js +22 -0
- package/src/scene/updateWorldMatrix.js +43 -0
- package/src/scene/worldMatrixChanged.js +18 -0
- package/src/shaders/materialBaseShader.js +17 -0
- package/src/shaders/materialShaders.js +130 -0
- package/src/shaders/materialSurfaceShader.js +47 -0
- package/src/shaders/materialVertexShader.js +72 -0
- package/src/shaders/roofVertexShader.js +9 -0
- package/src/shaders/validateRoofMaterial.js +10 -0
- package/src/shadows/bindSunlight.js +21 -0
- package/src/shadows/drawShadowMeshes.js +58 -0
- package/src/shadows/ensureShadowPipeline.js +64 -0
- package/src/shadows/meshShadowBounds.js +24 -0
- package/src/shadows/renderSunlight.js +48 -0
- package/src/shadows/resizeSunlight.js +21 -0
- package/src/shadows/shadowBounds.js +23 -0
- package/src/shadows/shadowCacheMatches.js +17 -0
- package/src/shadows/shadowMatrix.js +49 -0
- package/src/shadows/shadowMeshMatches.js +11 -0
- package/src/sources/addGeneratedTriangle.js +7 -0
- package/src/sources/addTriangle.js +17 -0
- package/src/sources/attachAreaMesh.js +64 -0
- package/src/sources/buildArea.js +46 -0
- package/src/sources/buildAreaFeature.js +36 -0
- package/src/sources/buildAreaPoint.js +25 -0
- package/src/sources/buildAreaPolygon.js +29 -0
- package/src/sources/compareAreaDistance.js +3 -0
- package/src/sources/extrusionStyle.js +10 -0
- package/src/sources/featureAnchor.js +9 -0
- package/src/sources/generateTreeGeometry.js +13 -0
- package/src/sources/groundOffset.js +3 -0
- package/src/sources/initializeGeoJSON.js +10 -0
- package/src/sources/instanceAreaGeometry.js +31 -0
- package/src/sources/pendingSourceAreas.js +20 -0
- package/src/sources/projectRing.js +27 -0
- package/src/sources/projectedTree.js +19 -0
- package/src/sources/pump.js +44 -0
- package/src/sources/releaseArea.js +25 -0
- package/src/sources/setGeoJSONData.js +15 -0
- package/src/sources/setGeoJSONLayerData.js +5 -0
- package/src/sources/sourceAreaContext.js +19 -0
- package/src/sources/updateArea.js +52 -0
- package/src/sources/updateStatus.js +15 -0
- package/src/sunlight/addTimeLayer.js +6 -0
- package/src/sunlight/addTo.js +11 -0
- package/src/sunlight/atmosphere.js +25 -0
- package/src/sunlight/createSun.js +54 -0
- package/src/sunlight/horizontalPosition.js +16 -0
- package/src/sunlight/initSunlight.js +17 -0
- package/src/sunlight/initialize.js +14 -0
- package/src/sunlight/mix.js +7 -0
- package/src/sunlight/moonPosition.js +18 -0
- package/src/sunlight/onAdd.js +5 -0
- package/src/sunlight/onAddSun.js +27 -0
- package/src/sunlight/onRemoveSun.js +10 -0
- package/src/sunlight/projectCelestialBody.js +13 -0
- package/src/sunlight/remove.js +8 -0
- package/src/sunlight/removeSun.js +21 -0
- package/src/sunlight/removeTimeLayer.js +7 -0
- package/src/sunlight/render.js +9 -0
- package/src/sunlight/rgb.js +8 -0
- package/src/sunlight/solarPosition.js +18 -0
- package/src/sunlight/solarTime.js +11 -0
- package/src/sunlight/styleTimeControl.js +7 -0
- package/src/sunlight/tickSun.js +5 -0
- package/src/sunlight/updateCelestialDisc.js +12 -0
- package/src/sunlight/updateSky.js +17 -0
- package/src/sunlight/updateSun.js +40 -0
- package/src/sunlight/useLiveTime.js +6 -0
- package/src/sunlight/useSelectedTime.js +23 -0
- package/src/terrain/applyTerrain.js +21 -0
- package/src/terrain/clearLayerTerrain.js +8 -0
- package/src/terrain/copyTerrainTile.js +12 -0
- package/src/terrain/getElevation.js +14 -0
- package/src/terrain/initTerrain.js +23 -0
- package/src/terrain/loadReadyTerrain.js +5 -0
- package/src/terrain/loadTerrain.js +43 -0
- package/src/terrain/loadTerrainTiles.js +17 -0
- package/src/terrain/onTerrainAdd.js +25 -0
- package/src/terrain/onTerrainChange.js +17 -0
- package/src/terrain/onTerrainRemove.js +45 -0
- package/src/terrain/rasterProgram.js +51 -0
- package/src/terrain/readBridges.js +4 -0
- package/src/terrain/sample.js +7 -0
- package/src/terrain/setLayerTerrain.js +8 -0
- package/src/terrain/setTerrainHeight.js +14 -0
- package/src/terrain/terrainAtlas.js +17 -0
- package/src/terrain/terrainBuffers.js +27 -0
- package/src/terrain/terrainElevation.js +15 -0
- package/src/terrain/terrainGrid.js +32 -0
- package/src/terrain/terrainTileQueue.js +25 -0
- package/src/traffic/addTraffic.js +10 -0
- package/src/traffic/along.js +20 -0
- package/src/traffic/appendRouteDash.js +15 -0
- package/src/traffic/appendRouteSegment.js +15 -0
- package/src/traffic/clockMinutes.js +6 -0
- package/src/traffic/compareDepartures.js +5 -0
- package/src/traffic/createTrafficMesh.js +7 -0
- package/src/traffic/destroyTrafficGpu.js +7 -0
- package/src/traffic/disposeTrafficObject.js +16 -0
- package/src/traffic/drawTrafficRoute.js +9 -0
- package/src/traffic/failTraffic.js +6 -0
- package/src/traffic/failedTrafficLoad.js +5 -0
- package/src/traffic/fetchTrafficLanes.js +10 -0
- package/src/traffic/groundTraffic.js +19 -0
- package/src/traffic/initTraffic.js +66 -0
- package/src/traffic/loadTraffic.js +15 -0
- package/src/traffic/loadedTrafficLanes.js +16 -0
- package/src/traffic/locateTraffic.js +11 -0
- package/src/traffic/moveTraffic.js +15 -0
- package/src/traffic/placeTraffic.js +21 -0
- package/src/traffic/prepareTraffic.js +30 -0
- package/src/traffic/readyTraffic.js +6 -0
- package/src/traffic/rebaseTraffic.js +60 -0
- package/src/traffic/rebuildTrafficMesh.js +32 -0
- package/src/traffic/refreshTrafficTrips.js +32 -0
- package/src/traffic/removeTraffic.js +20 -0
- package/src/traffic/routeColor.js +6 -0
- package/src/traffic/routeGeometry.js +21 -0
- package/src/traffic/scheduledTrips.js +51 -0
- package/src/traffic/startTraffic.js +8 -0
- package/src/traffic/tickTraffic.js +26 -0
- package/src/traffic/toLanes.js +24 -0
- package/src/traffic/tooltip.js +9 -0
- package/src/traffic/trafficBounds.js +21 -0
- package/src/traffic/trafficNow.js +10 -0
- package/src/traffic/trafficStatusText.js +5 -0
- package/src/traffic/trafficStorage.js +5 -0
- package/src/traffic/tripsAt.js +27 -0
- package/src/traffic/updateTraffic.js +11 -0
- package/src/traffic/updateTrafficLights.js +16 -0
- package/src/traffic/updateTrafficPose.js +8 -0
- package/src/traffic/updateTrafficTerrain.js +12 -0
- package/src/traffic/uploadTrafficLanes.js +21 -0
- package/src/traffic/vehicleOffsets.js +12 -0
- package/src/triangulation/area.js +9 -0
- package/src/triangulation/clean.js +18 -0
- package/src/triangulation/clipEars.js +23 -0
- package/src/triangulation/connectHole.js +18 -0
- package/src/triangulation/containsVertex.js +11 -0
- package/src/triangulation/cross.js +3 -0
- package/src/triangulation/crossesBoundary.js +8 -0
- package/src/triangulation/crossesRing.js +9 -0
- package/src/triangulation/equal.js +3 -0
- package/src/triangulation/inside.js +10 -0
- package/src/triangulation/insideHole.js +7 -0
- package/src/triangulation/intersects.js +11 -0
- package/src/triangulation/isClockWise.js +13 -0
- package/src/triangulation/mergeHoles.js +11 -0
- package/src/triangulation/minimumX.js +6 -0
- package/src/triangulation/on.js +4 -0
- package/src/triangulation/polygonRings.js +14 -0
- package/src/triangulation/sortHoles.js +21 -0
- package/src/triangulation/triangulate.js +48 -0
- package/src/triangulation/validateArea.js +10 -0
- package/src/utils/channel.js +2 -2
- package/src/utils/compareDistance.js +3 -0
- package/src/utils/noOperation.js +1 -0
- package/src/utils/parseColor.js +4 -4
- package/src/utils/toSRGB.js +3 -1
- package/src/utils/wrap.js +3 -1
- package/src/vehicles/bicycleModel.js +24 -0
- package/src/vehicles/boatBenches.js +9 -0
- package/src/vehicles/boatModel.js +35 -0
- package/src/vehicles/busModel.js +6 -0
- package/src/vehicles/carModel.js +38 -0
- package/src/vehicles/carriage.js +20 -0
- package/src/vehicles/metroModel.js +9 -0
- package/src/vehicles/mirror.js +8 -0
- package/src/vehicles/pedestrianModel.js +18 -0
- package/src/vehicles/tramModel.js +9 -0
- package/src/walk/blocked.js +6 -0
- package/src/walk/createWalk.js +66 -0
- package/src/walk/initWalk.js +19 -0
- package/src/walk/initialize.js +7 -0
- package/src/walk/land.js +32 -0
- package/src/walk/local.js +18 -0
- package/src/walk/moveWalker.js +23 -0
- package/src/walk/onAdd.js +29 -0
- package/src/walk/onBlur.js +3 -0
- package/src/walk/onKey.js +15 -0
- package/src/walk/onPointer.js +18 -0
- package/src/walk/onRemove.js +12 -0
- package/src/walk/onTerrain.js +5 -0
- package/src/walk/place.js +20 -0
- package/src/walk/start.js +46 -0
- package/src/walk/step.js +45 -0
- package/src/walk/stepWalkerHeight.js +11 -0
- package/src/walk/stop.js +30 -0
- package/src/walk/toggle.js +6 -0
- package/src/walk/updateWalkerView.js +22 -0
- package/dist/utils/CELL.js +0 -2
- package/dist/utils/CELL.js.map +0 -7
- package/dist/utils/addBridges.js +0 -2
- package/dist/utils/addBridges.js.map +0 -7
- package/dist/utils/addRasterTile.js +0 -2
- package/dist/utils/addRasterTile.js.map +0 -7
- package/dist/utils/along.js +0 -2
- package/dist/utils/along.js.map +0 -7
- package/dist/utils/atmosphere.js +0 -2
- package/dist/utils/atmosphere.js.map +0 -7
- package/dist/utils/attach.js +0 -2
- package/dist/utils/attach.js.map +0 -7
- package/dist/utils/bindSunlight.js +0 -2
- package/dist/utils/bindSunlight.js.map +0 -7
- package/dist/utils/box.js +0 -2
- package/dist/utils/box.js.map +0 -7
- package/dist/utils/bridgeElevation.js +0 -2
- package/dist/utils/bridgeElevation.js.map +0 -7
- package/dist/utils/build.js +0 -2
- package/dist/utils/build.js.map +0 -7
- package/dist/utils/cameraControls.js +0 -2
- package/dist/utils/cameraControls.js.map +0 -7
- package/dist/utils/channel.js +0 -2
- package/dist/utils/channel.js.map +0 -7
- package/dist/utils/collider.js +0 -2
- package/dist/utils/collider.js.map +0 -7
- package/dist/utils/colliders.js +0 -2
- package/dist/utils/colliders.js.map +0 -7
- package/dist/utils/computeBounds.js +0 -2
- package/dist/utils/computeBounds.js.map +0 -7
- package/dist/utils/conformModelToTerrain.js +0 -2
- package/dist/utils/conformModelToTerrain.js.map +0 -7
- package/dist/utils/createMesh.js +0 -2
- package/dist/utils/createMesh.js.map +0 -7
- package/dist/utils/createProgram.js +0 -3
- package/dist/utils/createProgram.js.map +0 -7
- package/dist/utils/decodeDirectory.js +0 -2
- package/dist/utils/decodeDirectory.js.map +0 -7
- package/dist/utils/decodeHeader.js +0 -2
- package/dist/utils/decodeHeader.js.map +0 -7
- package/dist/utils/decodeModel.js +0 -2
- package/dist/utils/decodeModel.js.map +0 -7
- package/dist/utils/decompress.js +0 -2
- package/dist/utils/decompress.js.map +0 -7
- package/dist/utils/destroyTexture.js +0 -2
- package/dist/utils/destroyTexture.js.map +0 -7
- package/dist/utils/disposeMesh.js +0 -2
- package/dist/utils/disposeMesh.js.map +0 -7
- package/dist/utils/drawGeometry.js +0 -2
- package/dist/utils/drawGeometry.js.map +0 -7
- package/dist/utils/elevationWGSL.js +0 -24
- package/dist/utils/elevationWGSL.js.map +0 -7
- package/dist/utils/emptyNode.js +0 -2
- package/dist/utils/emptyNode.js.map +0 -7
- package/dist/utils/endZoom.js +0 -2
- package/dist/utils/endZoom.js.map +0 -7
- package/dist/utils/findFeature.js +0 -2
- package/dist/utils/findFeature.js.map +0 -7
- package/dist/utils/geometry.js +0 -1
- package/dist/utils/geometry.js.map +0 -7
- package/dist/utils/getElevation.js +0 -2
- package/dist/utils/getElevation.js.map +0 -7
- package/dist/utils/getHeader.js +0 -2
- package/dist/utils/getHeader.js.map +0 -7
- package/dist/utils/getZxy.js +0 -2
- package/dist/utils/getZxy.js.map +0 -7
- package/dist/utils/glass.js +0 -2
- package/dist/utils/glass.js.map +0 -7
- package/dist/utils/headlight.js +0 -2
- package/dist/utils/headlight.js.map +0 -7
- package/dist/utils/hit.js +0 -2
- package/dist/utils/hit.js.map +0 -7
- package/dist/utils/horizontalPosition.js +0 -2
- package/dist/utils/horizontalPosition.js.map +0 -7
- package/dist/utils/horizontalRay.js +0 -2
- package/dist/utils/horizontalRay.js.map +0 -7
- package/dist/utils/hull.js +0 -2
- package/dist/utils/hull.js.map +0 -7
- package/dist/utils/initSunlight.js +0 -2
- package/dist/utils/initSunlight.js.map +0 -7
- package/dist/utils/initTerrain.js +0 -2
- package/dist/utils/initTerrain.js.map +0 -7
- package/dist/utils/initTraffic.js +0 -40
- package/dist/utils/initTraffic.js.map +0 -7
- package/dist/utils/initWalk.js +0 -2
- package/dist/utils/initWalk.js.map +0 -7
- package/dist/utils/intersectMeshes.js +0 -2
- package/dist/utils/intersectMeshes.js.map +0 -7
- package/dist/utils/isClockWise.js +0 -2
- package/dist/utils/isClockWise.js.map +0 -7
- package/dist/utils/lampPostGeometry.js +0 -2
- package/dist/utils/lampPostGeometry.js.map +0 -7
- package/dist/utils/lightGeometry.js +0 -2
- package/dist/utils/lightGeometry.js.map +0 -7
- package/dist/utils/lightGrid.js +0 -2
- package/dist/utils/lightGrid.js.map +0 -7
- package/dist/utils/limbs.js +0 -2
- package/dist/utils/limbs.js.map +0 -7
- package/dist/utils/loadModel.js +0 -2
- package/dist/utils/loadModel.js.map +0 -7
- package/dist/utils/loadSource.js +0 -2
- package/dist/utils/loadSource.js.map +0 -7
- package/dist/utils/loadTerrain.js +0 -2
- package/dist/utils/loadTerrain.js.map +0 -7
- package/dist/utils/mapCamera.js +0 -2
- package/dist/utils/mapCamera.js.map +0 -7
- package/dist/utils/materialShaders.js +0 -211
- package/dist/utils/materialShaders.js.map +0 -7
- package/dist/utils/mirror.js +0 -2
- package/dist/utils/mirror.js.map +0 -7
- package/dist/utils/moonPosition.js +0 -2
- package/dist/utils/moonPosition.js.map +0 -7
- package/dist/utils/moves.js +0 -2
- package/dist/utils/moves.js.map +0 -7
- package/dist/utils/nativeEvents.js +0 -2
- package/dist/utils/nativeEvents.js.map +0 -7
- package/dist/utils/nativeGeometry.js +0 -2
- package/dist/utils/nativeGeometry.js.map +0 -7
- package/dist/utils/nativeLayer.js +0 -2
- package/dist/utils/nativeLayer.js.map +0 -7
- package/dist/utils/nodeMatrix.js +0 -2
- package/dist/utils/nodeMatrix.js.map +0 -7
- package/dist/utils/onAdd3DLayer.js +0 -2
- package/dist/utils/onAdd3DLayer.js.map +0 -7
- package/dist/utils/onAddSun.js +0 -2
- package/dist/utils/onAddSun.js.map +0 -7
- package/dist/utils/onClick.js +0 -2
- package/dist/utils/onClick.js.map +0 -7
- package/dist/utils/onMapChange.js +0 -2
- package/dist/utils/onMapChange.js.map +0 -7
- package/dist/utils/onPMTileAdd.js +0 -2
- package/dist/utils/onPMTileAdd.js.map +0 -7
- package/dist/utils/onPMTileRemove.js +0 -2
- package/dist/utils/onPMTileRemove.js.map +0 -7
- package/dist/utils/onPointerLeave.js +0 -2
- package/dist/utils/onPointerLeave.js.map +0 -7
- package/dist/utils/onPointerMove.js +0 -2
- package/dist/utils/onPointerMove.js.map +0 -7
- package/dist/utils/onRemove3DLayer.js +0 -2
- package/dist/utils/onRemove3DLayer.js.map +0 -7
- package/dist/utils/onRemoveSun.js +0 -2
- package/dist/utils/onRemoveSun.js.map +0 -7
- package/dist/utils/onTerrainAdd.js +0 -2
- package/dist/utils/onTerrainAdd.js.map +0 -7
- package/dist/utils/onTerrainChange.js +0 -2
- package/dist/utils/onTerrainChange.js.map +0 -7
- package/dist/utils/onTerrainRemove.js +0 -2
- package/dist/utils/onTerrainRemove.js.map +0 -7
- package/dist/utils/onZoomAnim.js +0 -2
- package/dist/utils/onZoomAnim.js.map +0 -7
- package/dist/utils/paints.js +0 -2
- package/dist/utils/paints.js.map +0 -7
- package/dist/utils/parseColor.js +0 -2
- package/dist/utils/parseColor.js.map +0 -7
- package/dist/utils/parts.js +0 -2
- package/dist/utils/parts.js.map +0 -7
- package/dist/utils/projectCelestialBody.js +0 -2
- package/dist/utils/projectCelestialBody.js.map +0 -7
- package/dist/utils/pump.js +0 -2
- package/dist/utils/pump.js.map +0 -7
- package/dist/utils/rasterTiles.js +0 -2
- package/dist/utils/rasterTiles.js.map +0 -7
- package/dist/utils/raycast.js +0 -2
- package/dist/utils/raycast.js.map +0 -7
- package/dist/utils/read.js +0 -2
- package/dist/utils/read.js.map +0 -7
- package/dist/utils/readAccessor.js +0 -2
- package/dist/utils/readAccessor.js.map +0 -7
- package/dist/utils/releaseArea.js +0 -2
- package/dist/utils/releaseArea.js.map +0 -7
- package/dist/utils/removeRasterTile.js +0 -2
- package/dist/utils/removeRasterTile.js.map +0 -7
- package/dist/utils/render.js +0 -15
- package/dist/utils/render.js.map +0 -7
- package/dist/utils/renderSunlight.js +0 -13
- package/dist/utils/renderSunlight.js.map +0 -7
- package/dist/utils/renderers.js +0 -2
- package/dist/utils/renderers.js.map +0 -7
- package/dist/utils/resizeSunlight.js +0 -2
- package/dist/utils/resizeSunlight.js.map +0 -7
- package/dist/utils/roofCoverage.js +0 -2
- package/dist/utils/roofCoverage.js.map +0 -7
- package/dist/utils/routeGeometry.js +0 -2
- package/dist/utils/routeGeometry.js.map +0 -7
- package/dist/utils/scheduledTrips.js +0 -2
- package/dist/utils/scheduledTrips.js.map +0 -7
- package/dist/utils/setGeoJSONData.js +0 -2
- package/dist/utils/setGeoJSONData.js.map +0 -7
- package/dist/utils/setHighlight.js +0 -2
- package/dist/utils/setHighlight.js.map +0 -7
- package/dist/utils/setPMTileOpacity.js +0 -2
- package/dist/utils/setPMTileOpacity.js.map +0 -7
- package/dist/utils/setPMTileZIndex.js +0 -2
- package/dist/utils/setPMTileZIndex.js.map +0 -7
- package/dist/utils/setParent.js +0 -2
- package/dist/utils/setParent.js.map +0 -7
- package/dist/utils/setTerrainHeight.js +0 -2
- package/dist/utils/setTerrainHeight.js.map +0 -7
- package/dist/utils/setVertexColor.js +0 -2
- package/dist/utils/setVertexColor.js.map +0 -7
- package/dist/utils/showFeature.js +0 -2
- package/dist/utils/showFeature.js.map +0 -7
- package/dist/utils/sizes.js +0 -2
- package/dist/utils/sizes.js.map +0 -7
- package/dist/utils/skin.js +0 -2
- package/dist/utils/skin.js.map +0 -7
- package/dist/utils/solarPosition.js +0 -2
- package/dist/utils/solarPosition.js.map +0 -7
- package/dist/utils/sortMeshes.js +0 -2
- package/dist/utils/sortMeshes.js.map +0 -7
- package/dist/utils/speed.js +0 -2
- package/dist/utils/speed.js.map +0 -7
- package/dist/utils/startZoom.js +0 -2
- package/dist/utils/startZoom.js.map +0 -7
- package/dist/utils/taillight.js +0 -2
- package/dist/utils/taillight.js.map +0 -7
- package/dist/utils/terrainAtlas.js +0 -2
- package/dist/utils/terrainAtlas.js.map +0 -7
- package/dist/utils/terrainElevation.js +0 -2
- package/dist/utils/terrainElevation.js.map +0 -7
- package/dist/utils/terrainGrid.js +0 -2
- package/dist/utils/terrainGrid.js.map +0 -7
- package/dist/utils/textureSampler.js +0 -2
- package/dist/utils/textureSampler.js.map +0 -7
- package/dist/utils/tileId.js +0 -2
- package/dist/utils/tileId.js.map +0 -7
- package/dist/utils/toLanes.js +0 -2
- package/dist/utils/toLanes.js.map +0 -7
- package/dist/utils/toSRGB.js +0 -2
- package/dist/utils/toSRGB.js.map +0 -7
- package/dist/utils/tooltip.js +0 -3
- package/dist/utils/tooltip.js.map +0 -7
- package/dist/utils/traffic.js +0 -2
- package/dist/utils/traffic.js.map +0 -7
- package/dist/utils/traverse.js +0 -2
- package/dist/utils/traverse.js.map +0 -7
- package/dist/utils/treeGeometry.js +0 -2
- package/dist/utils/treeGeometry.js.map +0 -7
- package/dist/utils/triangulate.js +0 -2
- package/dist/utils/triangulate.js.map +0 -7
- package/dist/utils/tripsAt.js +0 -2
- package/dist/utils/tripsAt.js.map +0 -7
- package/dist/utils/types.js +0 -2
- package/dist/utils/types.js.map +0 -7
- package/dist/utils/underEntry.js +0 -2
- package/dist/utils/underEntry.js.map +0 -7
- package/dist/utils/update.js +0 -2
- package/dist/utils/update.js.map +0 -7
- package/dist/utils/updateArea.js +0 -2
- package/dist/utils/updateArea.js.map +0 -7
- package/dist/utils/updateCamera.js +0 -2
- package/dist/utils/updateCamera.js.map +0 -7
- package/dist/utils/updatePointLights.js +0 -2
- package/dist/utils/updatePointLights.js.map +0 -7
- package/dist/utils/updateWorldMatrix.js +0 -2
- package/dist/utils/updateWorldMatrix.js.map +0 -7
- package/dist/utils/vehicleOffsets.js +0 -2
- package/dist/utils/vehicleOffsets.js.map +0 -7
- package/dist/utils/vehicles.js +0 -2
- package/dist/utils/vehicles.js.map +0 -7
- package/dist/utils/vertexNormals.js +0 -2
- package/dist/utils/vertexNormals.js.map +0 -7
- package/dist/utils/walk.js +0 -2
- package/dist/utils/walk.js.map +0 -7
- package/dist/utils/white.js +0 -2
- package/dist/utils/white.js.map +0 -7
- package/dist/utils/worldLights.js +0 -2
- package/dist/utils/worldLights.js.map +0 -7
- package/dist/utils/wrap.js +0 -2
- package/dist/utils/wrap.js.map +0 -7
- package/src/utils/CELL.js +0 -4
- package/src/utils/addBridges.js +0 -66
- package/src/utils/addRasterTile.js +0 -112
- package/src/utils/along.js +0 -9
- package/src/utils/atmosphere.js +0 -20
- package/src/utils/attach.js +0 -255
- package/src/utils/bindSunlight.js +0 -12
- package/src/utils/box.js +0 -1
- package/src/utils/bridgeElevation.js +0 -18
- package/src/utils/build.js +0 -20
- package/src/utils/cameraControls.js +0 -287
- package/src/utils/collider.js +0 -62
- package/src/utils/colliders.js +0 -2
- package/src/utils/computeBounds.js +0 -17
- package/src/utils/conformModelToTerrain.js +0 -69
- package/src/utils/createMesh.js +0 -31
- package/src/utils/createProgram.js +0 -92
- package/src/utils/decodeDirectory.js +0 -40
- package/src/utils/decodeHeader.js +0 -15
- package/src/utils/decodeModel.js +0 -43
- package/src/utils/decompress.js +0 -5
- package/src/utils/destroyTexture.js +0 -7
- package/src/utils/disposeMesh.js +0 -13
- package/src/utils/drawGeometry.js +0 -122
- package/src/utils/elevationWGSL.js +0 -27
- package/src/utils/emptyNode.js +0 -9
- package/src/utils/endZoom.js +0 -15
- package/src/utils/findFeature.js +0 -49
- package/src/utils/geometry.js +0 -2
- package/src/utils/getElevation.js +0 -10
- package/src/utils/getHeader.js +0 -9
- package/src/utils/getZxy.js +0 -76
- package/src/utils/glass.js +0 -1
- package/src/utils/hit.js +0 -41
- package/src/utils/horizontalPosition.js +0 -16
- package/src/utils/hull.js +0 -1
- package/src/utils/initSunlight.js +0 -9
- package/src/utils/initTerrain.js +0 -19
- package/src/utils/initTraffic.js +0 -93
- package/src/utils/initWalk.js +0 -72
- package/src/utils/intersectMeshes.js +0 -121
- package/src/utils/isClockWise.js +0 -12
- package/src/utils/lampPostGeometry.js +0 -26
- package/src/utils/lightGeometry.js +0 -22
- package/src/utils/lightGrid.js +0 -50
- package/src/utils/limbs.js +0 -9
- package/src/utils/loadModel.js +0 -217
- package/src/utils/loadSource.js +0 -17
- package/src/utils/loadTerrain.js +0 -65
- package/src/utils/mapCamera.js +0 -432
- package/src/utils/materialShaders.js +0 -243
- package/src/utils/mirror.js +0 -6
- package/src/utils/moonPosition.js +0 -17
- package/src/utils/nativeEvents.js +0 -77
- package/src/utils/nativeGeometry.js +0 -131
- package/src/utils/nativeLayer.js +0 -317
- package/src/utils/nodeMatrix.js +0 -22
- package/src/utils/onAdd3DLayer.js +0 -31
- package/src/utils/onAddSun.js +0 -147
- package/src/utils/onClick.js +0 -13
- package/src/utils/onMapChange.js +0 -16
- package/src/utils/onPMTileAdd.js +0 -15
- package/src/utils/onPMTileRemove.js +0 -8
- package/src/utils/onPointerLeave.js +0 -11
- package/src/utils/onPointerMove.js +0 -15
- package/src/utils/onRemove3DLayer.js +0 -78
- package/src/utils/onRemoveSun.js +0 -3
- package/src/utils/onTerrainAdd.js +0 -18
- package/src/utils/onTerrainChange.js +0 -13
- package/src/utils/onTerrainRemove.js +0 -40
- package/src/utils/onZoomAnim.js +0 -14
- package/src/utils/parts.js +0 -16
- package/src/utils/projectCelestialBody.js +0 -13
- package/src/utils/pump.js +0 -226
- package/src/utils/rasterTiles.js +0 -285
- package/src/utils/raycast.js +0 -60
- package/src/utils/read.js +0 -29
- package/src/utils/readAccessor.js +0 -68
- package/src/utils/releaseArea.js +0 -34
- package/src/utils/removeRasterTile.js +0 -13
- package/src/utils/render.js +0 -406
- package/src/utils/renderSunlight.js +0 -170
- package/src/utils/resizeSunlight.js +0 -15
- package/src/utils/roofCoverage.js +0 -47
- package/src/utils/routeGeometry.js +0 -22
- package/src/utils/scheduledTrips.js +0 -29
- package/src/utils/setGeoJSONData.js +0 -11
- package/src/utils/setHighlight.js +0 -13
- package/src/utils/setPMTileOpacity.js +0 -7
- package/src/utils/setPMTileZIndex.js +0 -7
- package/src/utils/setTerrainHeight.js +0 -10
- package/src/utils/setVertexColor.js +0 -14
- package/src/utils/showFeature.js +0 -27
- package/src/utils/sizes.js +0 -1
- package/src/utils/skin.js +0 -2
- package/src/utils/solarPosition.js +0 -17
- package/src/utils/sortMeshes.js +0 -12
- package/src/utils/startZoom.js +0 -5
- package/src/utils/terrainAtlas.js +0 -21
- package/src/utils/terrainElevation.js +0 -20
- package/src/utils/terrainGrid.js +0 -23
- package/src/utils/textureSampler.js +0 -10
- package/src/utils/tileId.js +0 -18
- package/src/utils/toLanes.js +0 -7
- package/src/utils/tooltip.js +0 -6
- package/src/utils/traffic.js +0 -315
- package/src/utils/traverse.js +0 -6
- package/src/utils/treeGeometry.js +0 -45
- package/src/utils/triangulate.js +0 -100
- package/src/utils/tripsAt.js +0 -16
- package/src/utils/underEntry.js +0 -17
- package/src/utils/update.js +0 -18
- package/src/utils/updateArea.js +0 -40
- package/src/utils/updateCamera.js +0 -32
- package/src/utils/updatePointLights.js +0 -38
- package/src/utils/updateWorldMatrix.js +0 -47
- package/src/utils/vehicleOffsets.js +0 -8
- package/src/utils/vehicles.js +0 -65
- package/src/utils/vertexNormals.js +0 -30
- package/src/utils/walk.js +0 -187
- package/src/utils/worldLights.js +0 -25
- /package/src/{utils → collision}/horizontalRay.js +0 -0
- /package/src/{utils → globals}/headlight.js +0 -0
- /package/src/{utils → globals}/moves.js +0 -0
- /package/src/{utils → globals}/paints.js +0 -0
- /package/src/{utils → globals}/renderers.js +0 -0
- /package/src/{utils → globals}/speed.js +0 -0
- /package/src/{utils → globals}/taillight.js +0 -0
- /package/src/{utils → globals}/types.js +0 -0
- /package/src/{utils → globals}/white.js +0 -0
- /package/src/{utils → scene}/setParent.js +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/globals/L.js", "../src/globals/cameraByMap.js", "../src/globals/radians.js", "../src/globals/degrees.js", "../src/camera/mapGetPitch.js", "../src/camera/mapGetBearing.js", "../src/globals/cameraEmptyOptions.js", "../src/camera/updateSky.js", "../src/camera/mapSetPitchAndBearing.js", "../src/globals/cameraAnimations.js", "../src/globals/cameraAnimationFrame.js", "../src/camera/cancelCameraAnimation.js", "../src/globals/Compass.js", "../src/globals/ContainerResize.js", "../src/globals/PitchDrag.js", "../src/globals/ShiftRotate.js", "../src/globals/TouchMode.js", "../src/globals/touchByContainer.js", "../src/globals/cameraTouchStates.js", "../src/globals/cameraListenerOptions.js", "../src/controls/notifyCameraTouchChange.js", "../src/globals/cameraDragSensitivity.js", "../src/globals/cameraBearingSensitivity.js", "../src/globals/cameraFocusOptions.js", "../src/globals/cameraAnimatedOptions.js", "../src/camera/runCameraAnimations.js", "../src/camera/scheduleCameraAnimation.js", "../src/camera/mapAnimateCamera.js", "../src/camera/mapResetNorthPitch.js", "../src/camera/mapSetBearing.js", "../src/camera/mapResetNorth.js", "../src/controls/rotateButtonClick.js", "../src/camera/mapSetPitch.js", "../src/controls/rotateButtonKeydown.js", "../src/controls/refreshRotateControl.js", "../src/globals/dragStates.js", "../src/globals/cameraDrags.js", "../src/controls/editable.js", "../src/controls/cameraDragDown.js", "../src/camera/mapStopPitchBearingAnimation.js", "../src/controls/cameraDragMove.js", "../src/controls/finishCameraDrag.js", "../src/controls/cameraDragEnd.js", "../src/controls/cameraDragClick.js", "../src/controls/cameraDragContextMenu.js", "../src/controls/endAllCameraDrags.js", "../src/controls/dragCamera.js", "../src/controls/acceptRotateDrag.js", "../src/controls/refreshRotateFocus.js", "../src/controls/rotateOnAdd.js", "../src/controls/removeCameraDrag.js", "../src/controls/pitchDragRemoveHooks.js", "../src/controls/rotateOnRemove.js", "../src/controls/rotateControl.js", "../src/controls/shiftRotateWheel.js", "../src/controls/shiftRotateAddHooks.js", "../src/controls/shiftRotateRemoveHooks.js", "../src/controls/acceptPitchDrag.js", "../src/controls/pitchDragAddHooks.js", "../src/controls/compassOrientation.js", "../src/controls/failCompassPermission.js", "../src/controls/finishCompassPermission.js", "../src/controls/compassAddHooks.js", "../src/controls/compassRemoveHooks.js", "../src/controls/resizeMap.js", "../src/controls/containerResizeAddHooks.js", "../src/controls/containerResizeRemoveHooks.js", "../src/controls/startCameraTouch.js", "../src/controls/moveCameraTouch.js", "../src/controls/endCameraTouch.js", "../src/controls/endCameraTouchEvent.js", "../src/controls/changeCameraTouch.js", "../src/controls/endAllCameraTouches.js", "../src/controls/cleanupCameraTouch.js", "../src/controls/addCameraHandler.js", "../src/controls/cameraControls.js", "../src/index.js", "../src/globals/layerProto.js", "../src/globals/layerCallInitHooks.js", "../src/globals/removeLayer.js", "../src/camera/mapCamera.js", "../src/globals/mapMethods.js", "../src/globals/markerMethods.js", "../src/globals/popupEvents.js", "../src/globals/tooltipEvents.js", "../src/globals/popupPosition.js", "../src/globals/popupPan.js", "../src/globals/tooltipPosition.js", "../src/globals/tiledBounds.js", "../src/globals/gridEvents.js", "../src/globals/sceneByLayer.js", "../src/core/nativeLayer.js", "../src/core/nativeLayerMethod.js", "../src/globals/imageStates.js", "../src/core/nativeImageRefresh.js", "../src/core/nativeImageError.js", "../src/core/removeImageState.js", "../src/core/addImageState.js", "../src/globals/pendingUpdates.js", "../src/globals/frameCommands.js", "../src/globals/nativeRenderByLayer.js", "../src/rendering/render.js", "../src/globals/meshStack.js", "../src/rendering/updateZoomCamera.js", "../src/camera/mapUpdateCameraOverlays.js", "../src/rendering/synchronizeZoomView.js", "../src/globals/depthTexture.js", "../src/rendering/destroyAfterSubmission.js", "../src/rendering/destroyTexture.js", "../src/rendering/resizeRenderer.js", "../src/rendering/updateMapCamera.js", "../src/globals/cameraFov.js", "../src/globals/earthCirc.js", "../src/globals/walkByMap.js", "../src/globals/halfRadians.js", "../src/scene/updateCamera.js", "../src/terrain/getElevation.js", "../src/geometry/bridgeElevation.js", "../src/terrain/sample.js", "../src/terrain/terrainElevation.js", "../src/camera/animationPoint.js", "../src/scene/worldMatrixChanged.js", "../src/scene/composeLocalTransform.js", "../src/scene/updateWorldMatrix.js", "../src/geometry/computeBounds.js", "../src/rendering/collectVisibleMesh.js", "../src/rendering/collectMeshes.js", "../src/rendering/collectFrameMeshes.js", "../src/rendering/updateRoofAtlas.js", "../src/globals/roofSignatures.js", "../src/rendering/rebuildRoofAtlas.js", "../src/globals/roofTiles.js", "../src/globals/TILE_SIZE.js", "../src/globals/roofMin.js", "../src/globals/roofSize.js", "../src/globals/roofShader.js", "../src/globals/roofPipeline.js", "../src/globals/roofBlitSampler.js", "../src/rendering/ensureRoofBlit.js", "../src/globals/roofBuffer.js", "../src/globals/roofPass.js", "../src/globals/roofImage.js", "../src/globals/roofTarget.js", "../src/globals/roofCopySize.js", "../src/rendering/uploadRoofTile.js", "../src/globals/roofBindGroup.js", "../src/globals/roofCommands.js", "../src/globals/roofOpacities.js", "../src/rendering/compareRoofTiles.js", "../src/rendering/composeRoofAtlas.js", "../src/rendering/collectRoofTiles.js", "../src/globals/roofTexture.js", "../src/globals/roofSampler.js", "../src/rendering/resizeRoofTexture.js", "../src/rendering/updateRoofRaster.js", "../src/rendering/compareMeshDepth.js", "../src/rendering/compareMeshes.js", "../src/rendering/sortMeshes.js", "../src/geometry/roofFootprint.js", "../src/geometry/subtractRoofTile.js", "../src/geometry/roofCoverage.js", "../src/rendering/revealRoofMesh.js", "../src/rendering/prepareFrameMeshes.js", "../src/globals/frameBuffer.js", "../src/rendering/prepareFrameBuffer.js", "../src/globals/sunBindGroup.js", "../src/shadows/bindSunlight.js", "../src/lighting/writeLightCell.js", "../src/lighting/visitLightCells.js", "../src/lighting/visitCells.js", "../src/lighting/lightGrid.js", "../src/globals/lightScale.js", "../src/lighting/worldLights.js", "../src/lighting/cacheLightGrid.js", "../src/globals/geometryEmpty.js", "../src/lighting/collectLightMeshes.js", "../src/lighting/updatePointLights.js", "../src/rendering/prepareFrameUniforms.js", "../src/globals/scenePass.js", "../src/globals/meshOffsets.js", "../src/globals/meshPipeline.js", "../src/globals/alphaBlend.js", "../src/rendering/drawPipeline.js", "../src/rendering/prepareMeshCutout.js", "../src/rendering/prepareMeshUniforms.js", "../src/globals/meshImage.js", "../src/globals/meshTarget.js", "../src/globals/meshCopySize.js", "../src/rendering/uploadMeshTexture.js", "../src/globals/meshBindGroup.js", "../src/globals/drawEntries.js", "../src/globals/drawMeshEntry.js", "../src/globals/drawFrameEntry.js", "../src/globals/drawTerrainEntry.js", "../src/globals/drawTextureEntries.js", "../src/globals/drawSamplerEntries.js", "../src/rendering/bindMeshTextures.js", "../src/rendering/prepareMeshTextures.js", "../src/rendering/drawGeometry.js", "../src/rendering/drawSceneMeshes.js", "../src/globals/disabledShadow.js", "../src/globals/shadowValues.js", "../src/shadows/shadowMeshMatches.js", "../src/shadows/shadowCacheMatches.js", "../src/globals/shadowBounds.js", "../src/globals/shadowCamera.js", "../src/globals/shadowLow.js", "../src/globals/shadowHigh.js", "../src/shadows/meshShadowBounds.js", "../src/shadows/shadowBounds.js", "../src/shadows/shadowMatrix.js", "../src/globals/shadowMeshLayout.js", "../src/globals/shadowDepthLayout.js", "../src/globals/depthBindGroup.js", "../src/globals/shadowShader.js", "../src/globals/shadowPipeline.js", "../src/globals/shadowPipelineLayout.js", "../src/globals/positionLayout.js", "../src/globals/instanceLayout.js", "../src/globals/shadowInstanceLayouts.js", "../src/globals/shadowLayouts.js", "../src/shadows/ensureShadowPipeline.js", "../src/globals/shadowPass.js", "../src/globals/shadowBindGroup.js", "../src/globals/shadowOffsets.js", "../src/shadows/drawShadowMeshes.js", "../src/globals/shadowTexture.js", "../src/shadows/resizeSunlight.js", "../src/shadows/renderSunlight.js", "../src/scene/cancelUpdate.js", "../src/scene/setParent.js", "../src/raster/removeRasterTile.js", "../src/raster/releaseRasterTile.js", "../src/raster/pruneRasterTiles.js", "../src/core/synchronizeNativeLayer.js", "../src/core/current.js", "../src/core/syncGridLayer.js", "../src/globals/coreWhite.js", "../src/core/styleNativeMesh.js", "../src/globals/coreQuadIndices.js", "../src/globals/coreQuadUV.js", "../src/globals/coreSampler.js", "../src/rendering/disposeMesh.js", "../src/core/uploadCanvasTexture.js", "../src/core/uploadNativeImage.js", "../src/core/textureFor.js", "../src/core/putNativeMesh.js", "../src/globals/defaultMaterial.js", "../src/globals/meshBuffer.js", "../src/globals/nextId.js", "../src/scene/emptyNode.js", "../src/globals/vertexShader.js", "../src/globals/fragmentShader.js", "../src/globals/pipelineLayout.js", "../src/globals/elevationWGSL.js", "../src/globals/normalLayout.js", "../src/globals/colorLayout.js", "../src/globals/uVLayout.js", "../src/globals/programLayout.js", "../src/globals/programEntries.js", "../src/globals/meshLayoutEntry.js", "../src/globals/frameLayoutEntry.js", "../src/globals/terrainLayoutEntry.js", "../src/globals/textureLayoutEntries.js", "../src/globals/samplerLayoutEntries.js", "../src/rendering/createProgramLayout.js", "../src/rendering/createProgramUniforms.js", "../src/rendering/textureBinding.js", "../src/shaders/validateRoofMaterial.js", "../src/shaders/roofVertexShader.js", "../src/shaders/materialVertexShader.js", "../src/shaders/materialBaseShader.js", "../src/shaders/materialSurfaceShader.js", "../src/shaders/materialShaders.js", "../src/rendering/reportCompilation.js", "../src/rendering/createProgram.js", "../src/rendering/createMesh.js", "../src/core/quadNativeMesh.js", "../src/core/localPosition.js", "../src/core/boundsQuad.js", "../src/core/syncImageOverlay.js", "../src/globals/coreMatrixKeys.js", "../src/core/markerCameraIconPoint.js", "../src/core/transformNativePoint.js", "../src/core/markerImageBounds.js", "../src/core/markerQuadCorners.js", "../src/core/syncMarker.js", "../src/globals/geometryPixelStates.js", "../src/geometry/nativeGeometry.js", "../src/geometry/visit.js", "../src/geometry/nativeTriangle.js", "../src/geometry/segment.js", "../src/globals/tau.js", "../src/geometry/diskAt.js", "../src/geometry/disk.js", "../src/geometry/lineJoin.js", "../src/geometry/dashedSegment.js", "../src/geometry/line.js", "../src/triangulation/minimumX.js", "../src/triangulation/mergeHoles.js", "../src/triangulation/sortHoles.js", "../src/triangulation/cross.js", "../src/triangulation/equal.js", "../src/triangulation/clean.js", "../src/triangulation/isClockWise.js", "../src/triangulation/polygonRings.js", "../src/triangulation/inside.js", "../src/triangulation/insideHole.js", "../src/triangulation/on.js", "../src/triangulation/intersects.js", "../src/triangulation/crossesRing.js", "../src/triangulation/crossesBoundary.js", "../src/triangulation/connectHole.js", "../src/triangulation/containsVertex.js", "../src/triangulation/clipEars.js", "../src/triangulation/area.js", "../src/triangulation/validateArea.js", "../src/triangulation/triangulate.js", "../src/geometry/polygon.js", "../src/geometry/dashValues.js", "../src/geometry/circleGeometry.js", "../src/geometry/circleAt.js", "../src/core/localPixel.js", "../src/core/localPixelForGeometry.js", "../src/utils/toSRGB.js", "../src/utils/channel.js", "../src/utils/parseColor.js", "../src/core/syncVectorLayer.js", "../src/core/pruneNativeResources.js", "../src/core/beforeNativeRender.js", "../src/scene/renderPendingUpdates.js", "../src/scene/update.js", "../src/core/hideTargets.js", "../src/core/refreshNativeLayer.js", "../src/core/nativeSetLatLng.js", "../src/core/nativeSetLatLngs.js", "../src/core/nativeAddLatLng.js", "../src/core/nativeSetRadius.js", "../src/core/nativeSetStyle.js", "../src/core/nativeRedraw.js", "../src/core/nativeSetIcon.js", "../src/core/nativeSetUrl.js", "../src/core/nativeSetBounds.js", "../src/core/nativeSetOpacity.js", "../src/core/nativeSetZIndex.js", "../src/core/nativeSetZIndexOffset.js", "../src/core/nativeBringToFront.js", "../src/core/nativeBringToBack.js", "../src/globals/nativeMethodHandlers.js", "../src/scene/createLayer.js", "../src/globals/sceneEmptyOptions.js", "../src/core/nativeEvents.js", "../src/globals/nativeEventMaps.js", "../src/globals/trafficByLayer.js", "../src/collision/mergeHits.js", "../src/collision/sortHits.js", "../src/collision/localRay.js", "../src/collision/rayBounds.js", "../src/collision/readTriangle.js", "../src/collision/hiddenLightHit.js", "../src/collision/triangleDistance.js", "../src/collision/worldHit.js", "../src/collision/intersectMeshes.js", "../src/scene/traverse.js", "../src/picking/collectVisibleMesh.js", "../src/traffic/along.js", "../src/traffic/locateTraffic.js", "../src/traffic/placeTraffic.js", "../src/picking/validateCameraInverse.js", "../src/picking/raycast.js", "../src/core/restoreNativeEvents.js", "../src/globals/renderers.js", "../src/globals/coreEventTypes.js", "../src/core/nativeEventSource.js", "../src/core/compareNativeHits.js", "../src/core/updateNativeHover.js", "../src/core/bypassNativeEvent.js", "../src/core/handleNativeMapEvent.js", "../src/core/removeNativeEvents.js", "../src/core/refreshNativeEvent.js", "../src/core/reorderNativeLayer.js", "../src/core/updateNativeLayerView.js", "../src/core/disposeNativeLayer.js", "../src/core/resolveNativeReady.js", "../src/core/rejectNativeReady.js", "../src/core/forwardNativeError.js", "../src/core/removeTargets.js", "../src/core/readyNativeGPU.js", "../src/scene/reportError.js", "../src/core/initNativeGPU.js", "../src/globals/cameraAngles.js", "../src/camera/pointOf.js", "../src/camera/angles.js", "../src/camera/project.js", "../src/camera/mapLayerPointToContainerPoint.js", "../src/camera/mapContainerPointToLayerPoint.js", "../src/camera/mapGetCenterLayerPoint.js", "../src/camera/mapPanBy.js", "../src/camera/mapSetZoomAround.js", "../src/globals/cameraZeroPadding.js", "../src/camera/mapPanInside.js", "../src/camera/mapLimitCenter.js", "../src/camera/groundBounds.js", "../src/camera/mapLimitOffset.js", "../src/camera/mapGetBoundsCenterZoom.js", "../src/camera/fitCameraBounds.js", "../src/camera/verticalGroundY.js", "../src/camera/mapGetBoundsZoom.js", "../src/camera/mapTryAnimatedPan.js", "../src/camera/mapGetBounds.js", "../src/camera/initializeCameraMap.js", "../src/camera/constrainCameraToBounds.js", "../src/camera/cleanupCameraMap.js", "../src/controls/adjustCameraDrag.js", "../src/camera/cameraMapReady.js", "../src/controls/loadCameraControls.js", "../src/utils/noOperation.js", "../src/core/markerSetIcon.js", "../src/core/markerGetEvents.js", "../src/camera/displayPoint.js", "../src/core/markerSetPos.js", "../src/core/refreshNativeLayerContract.js", "../src/core/markerUpdateZIndex.js", "../src/globals/dragByHandler.js", "../src/core/cameraMarkerOnDrag.js", "../src/core/adjustCameraMarkerPan.js", "../src/globals/pendingMarkerPan.js", "../src/globals/markerPanFrame.js", "../src/core/runMarkerPanFrame.js", "../src/core/scheduleMarkerPan.js", "../src/core/cameraMarkerDrag.js", "../src/core/markerInitInteraction.js", "../src/core/popupGetEvents.js", "../src/core/tooltipGetEvents.js", "../src/core/popupAdjustPan.js", "../src/core/popupUpdatePosition.js", "../src/core/tooltipSetPosition.js", "../src/core/gridlayerGetEvents.js", "../src/core/gridlayerGetTiledPixelBounds.js", "../src/scene/init3D.js", "../src/scene/attach.js", "../src/globals/lampDirections.js", "../src/geometry/lampRing.js", "../src/geometry/lampPostGeometry.js", "../src/geometry/quad.js", "../src/geometry/emitter.js", "../src/geometry/lightGeometry.js", "../src/globals/roundProfile.js", "../src/globals/ringDirections.js", "../src/geometry/treeRing.js", "../src/geometry/surface.js", "../src/geometry/validateTree.js", "../src/geometry/treeGeometry.js", "../src/sources/updateStatus.js", "../src/globals/archiveDecoder.js", "../src/archives/tileId.js", "../src/globals/headerOffsets.js", "../src/globals/headerFlags.js", "../src/globals/headerBounds.js", "../src/archives/decodeHeader.js", "../src/archives/read.js", "../src/archives/getHeader.js", "../src/globals/directoryReader.js", "../src/archives/varint.js", "../src/archives/decodeDirectory.js", "../src/archives/decompress.js", "../src/archives/loadDirectory.js", "../src/archives/getDirectoryEntries.js", "../src/archives/findDirectoryEntry.js", "../src/archives/getTileData.js", "../src/archives/findTile.js", "../src/archives/getZxy.js", "../src/archives/loadSource.js", "../src/sources/buildArea.js", "../src/sources/buildAreaFeature.js", "../src/sources/projectedTree.js", "../src/globals/triangleContexts.js", "../src/sources/groundOffset.js", "../src/sources/addTriangle.js", "../src/sources/addGeneratedTriangle.js", "../src/sources/generateTreeGeometry.js", "../src/sources/buildAreaPoint.js", "../src/sources/projectRing.js", "../src/sources/buildAreaPolygon.js", "../src/sources/featureAnchor.js", "../src/sources/extrusionStyle.js", "../src/sources/instanceAreaGeometry.js", "../src/sources/attachAreaMesh.js", "../src/sources/sourceAreaContext.js", "../src/utils/compareDistance.js", "../src/sources/pendingSourceAreas.js", "../src/sources/pump.js", "../src/picking/setHighlight.js", "../src/picking/showFeature.js", "../src/sources/releaseArea.js", "../src/sources/compareAreaDistance.js", "../src/sources/updateArea.js", "../src/terrain/setTerrainHeight.js", "../src/scene/restoreGeometry.js", "../src/scene/restoreMaterialTextures.js", "../src/scene/restoreObject.js", "../src/globals/rendererDevices.js", "../src/scene/showWebGPUWarning.js", "../src/scene/failAttachment.js", "../src/scene/requestAdapter.js", "../src/scene/requestDevice.js", "../src/scene/rendererDeviceError.js", "../src/scene/rendererDeviceLost.js", "../src/scene/createSceneCamera.js", "../src/globals/sceneSunlightUniforms.js", "../src/scene/initializeRendererResources.js", "../src/globals/pendingMapChanges.js", "../src/scene/renderPendingMapChange.js", "../src/scene/onMapChange.js", "../src/scene/startZoom.js", "../src/globals/pendingZoomAnimations.js", "../src/scene/renderPendingZoomAnimation.js", "../src/scene/onZoomAnim.js", "../src/scene/endZoom.js", "../src/scene/mountRenderer.js", "../src/scene/initializeSharedRenderer.js", "../src/scene/onAdd3DLayer.js", "../src/picking/findFeature.js", "../src/picking/onClick.js", "../src/picking/onPointerLeave.js", "../src/picking/onPointerMove.js", "../src/picking/pointerMove.js", "../src/picking/pointerClick.js", "../src/picking/pointerLeave.js", "../src/scene/attachLayer.js", "../src/scene/onRemove3DLayer.js", "../src/globals/sceneTransferFields.js", "../src/scene/releaseSharedScene.js", "../src/globals/sceneCleanupFields.js", "../src/scene/releaseRenderer.js", "../src/terrain/onTerrainChange.js", "../src/models/loadModel.js", "../src/globals/geometryDecoder.js", "../src/models/hasUnsupportedPrimitives.js", "../src/models/decodeModel.js", "../src/geometry/conformModelToTerrain.js", "../src/globals/HEIGHT.js", "../src/geometry/vertexNormals.js", "../src/collision/collectMeshes.js", "../src/models/loadModelResources.js", "../src/models/loadBuffer.js", "../src/globals/geometryImageOptions.js", "../src/models/loadImage.js", "../src/models/textureSampler.js", "../src/models/textureFor.js", "../src/models/materialFor.js", "../src/models/createModelContext.js", "../src/globals/geometryQuaternion.js", "../src/globals/geometryScale.js", "../src/globals/geometryTranslation.js", "../src/models/nodeMatrix.js", "../src/globals/geometrySemantics.js", "../src/globals/types.js", "../src/globals/sizes.js", "../src/models/readAccessorValue.js", "../src/models/readAccessorValues.js", "../src/models/readSparseAccessor.js", "../src/models/normalizeAccessor.js", "../src/models/readAccessor.js", "../src/models/readModelAttributes.js", "../src/models/readModelIndices.js", "../src/models/createModelGeometry.js", "../src/models/modelNode.js", "../src/models/releaseModelResources.js", "../src/models/buildModelNodes.js", "../src/models/applyModelTransform.js", "../src/scene/get3DEvents.js", "../src/scene/ready3D.js", "../src/scene/placeEntry.js", "../src/scene/placeEntryElement.js", "../src/scene/placeUnderEntry.js", "../src/globals/pendingPlacements.js", "../src/scene/runPlacements.js", "../src/scene/replaceEntry.js", "../src/scene/removeEntry.js", "../src/scene/underEntry.js", "../src/scene/layerCountTitle.js", "../src/scene/renderLayerCount.js", "../src/scene/updateLayerCount.js", "../src/raster/initRaster.js", "../src/globals/wantedTiles.js", "../src/globals/coverageTiles.js", "../src/raster/comparePendingTiles.js", "../src/globals/blobParts.js", "../src/raster/addRasterTile.js", "../src/globals/rasterPoint.js", "../src/globals/demTexture.js", "../src/globals/demTarget.js", "../src/globals/demLayout.js", "../src/globals/demSize.js", "../src/terrain/copyTerrainTile.js", "../src/terrain/terrainAtlas.js", "../src/terrain/rasterProgram.js", "../src/globals/demBuffer.js", "../src/terrain/terrainGrid.js", "../src/terrain/terrainBuffers.js", "../src/raster/terrainTileGeometry.js", "../src/raster/registerTerrainTile.js", "../src/raster/createRasterMesh.js", "../src/globals/rasterTexture.js", "../src/globals/rasterSampler.js", "../src/globals/rasterBuffer.js", "../src/globals/rasterPositions.js", "../src/globals/rasterNormals.js", "../src/globals/rasterUVs.js", "../src/globals/rasterIndices.js", "../src/raster/createGeometry.js", "../src/raster/finishRasterTile.js", "../src/raster/loadRasterTile.js", "../src/raster/pumpRasterTiles.js", "../src/raster/retainRasterTiles.js", "../src/globals/TILE_RADIUS.js", "../src/globals/archiveNorthWest.js", "../src/globals/archiveSouthEast.js", "../src/raster/rasterTileRange.js", "../src/raster/updateRasterTiles.js", "../src/raster/getRasterEvents.js", "../src/raster/readyRaster.js", "../src/raster/reportError.js", "../src/raster/finishAttachment.js", "../src/raster/setRasterTerrain.js", "../src/raster/updateAttachedTiles.js", "../src/raster/onPMTileAdd.js", "../src/raster/releaseRasterTiles.js", "../src/raster/onPMTileRemove.js", "../src/raster/getRasterTileSize.js", "../src/terrain/onTerrainRemove.js", "../src/globals/renderEmpty.js", "../src/terrain/clearLayerTerrain.js", "../src/terrain/onTerrainAdd.js", "../src/terrain/loadTerrainTiles.js", "../src/terrain/readBridges.js", "../src/terrain/terrainTileQueue.js", "../src/geometry/addBridges.js", "../src/geometry/bridgeLocal.js", "../src/geometry/bridgePaths.js", "../src/geometry/indexBridge.js", "../src/geometry/bridgeFaces.js", "../src/geometry/bridgeEdge.js", "../src/geometry/bridgeSides.js", "../src/geometry/bridgePolygon.js", "../src/terrain/applyTerrain.js", "../src/terrain/loadTerrain.js", "../src/terrain/loadReadyTerrain.js", "../src/terrain/setLayerTerrain.js", "../src/terrain/initTerrain.js", "../src/sunlight/initSunlight.js", "../src/sunlight/onAddSun.js", "../src/globals/sunlightByControl.js", "../src/globals/sunByMap.js", "../src/sunlight/createSun.js", "../src/sunlight/updateSky.js", "../src/sunlight/projectCelestialBody.js", "../src/sunlight/updateCelestialDisc.js", "../src/sunlight/updateSun.js", "../src/globals/atmosphereStops.js", "../src/globals/atmosphereColor.js", "../src/sunlight/mix.js", "../src/sunlight/rgb.js", "../src/sunlight/atmosphere.js", "../src/sunlight/solarTime.js", "../src/sunlight/horizontalPosition.js", "../src/sunlight/moonPosition.js", "../src/globals/sinObliquity.js", "../src/globals/cosObliquity.js", "../src/sunlight/solarPosition.js", "../src/sunlight/render.js", "../src/sunlight/useLiveTime.js", "../src/sunlight/useSelectedTime.js", "../src/sunlight/tickSun.js", "../src/sunlight/initialize.js", "../src/sunlight/addTimeLayer.js", "../src/sunlight/removeTimeLayer.js", "../src/sunlight/onAdd.js", "../src/sunlight/addTo.js", "../src/sunlight/styleTimeControl.js", "../src/sunlight/remove.js", "../src/sunlight/removeSun.js", "../src/sunlight/onRemoveSun.js", "../src/traffic/initTraffic.js", "../src/globals/speed.js", "../src/globals/trafficEmptyOptions.js", "../src/globals/paints.js", "../src/globals/dark.js", "../src/globals/skin.js", "../src/globals/trousers.js", "../src/geometry/box.js", "../src/vehicles/bicycleModel.js", "../src/globals/shirt.js", "../src/globals/parts.js", "../src/vehicles/pedestrianModel.js", "../src/traffic/routeColor.js", "../src/globals/glass.js", "../src/globals/white.js", "../src/globals/tyre.js", "../src/globals/headlight.js", "../src/globals/taillight.js", "../src/vehicles/carriage.js", "../src/vehicles/busModel.js", "../src/vehicles/tramModel.js", "../src/vehicles/metroModel.js", "../src/vehicles/mirror.js", "../src/vehicles/carModel.js", "../src/globals/hull.js", "../src/vehicles/boatBenches.js", "../src/vehicles/boatModel.js", "../src/globals/vehicles.js", "../src/globals/trafficShader.js", "../src/geometry/triangle.js", "../src/geometry/build.js", "../src/traffic/tooltip.js", "../src/traffic/startTraffic.js", "../src/traffic/addTraffic.js", "../src/traffic/disposeTrafficObject.js", "../src/traffic/destroyTrafficGpu.js", "../src/traffic/removeTraffic.js", "../src/traffic/readyTraffic.js", "../src/traffic/trafficNow.js", "../src/traffic/vehicleOffsets.js", "../src/globals/trafficClocks.js", "../src/traffic/clockMinutes.js", "../src/traffic/compareDepartures.js", "../src/traffic/scheduledTrips.js", "../src/traffic/tripsAt.js", "../src/traffic/failTraffic.js", "../src/globals/trafficRouteMaterial.js", "../src/traffic/appendRouteDash.js", "../src/traffic/appendRouteSegment.js", "../src/traffic/routeGeometry.js", "../src/traffic/createTrafficMesh.js", "../src/traffic/drawTrafficRoute.js", "../src/traffic/trafficBounds.js", "../src/traffic/rebuildTrafficMesh.js", "../src/traffic/trafficStorage.js", "../src/traffic/uploadTrafficLanes.js", "../src/traffic/rebaseTraffic.js", "../src/traffic/trafficStatusText.js", "../src/traffic/refreshTrafficTrips.js", "../src/traffic/moveTraffic.js", "../src/traffic/updateTrafficLights.js", "../src/traffic/updateTrafficPose.js", "../src/traffic/tickTraffic.js", "../src/traffic/fetchTrafficLanes.js", "../src/globals/trafficEmptyList.js", "../src/traffic/toLanes.js", "../src/traffic/prepareTraffic.js", "../src/traffic/groundTraffic.js", "../src/traffic/loadedTrafficLanes.js", "../src/traffic/failedTrafficLoad.js", "../src/traffic/loadTraffic.js", "../src/traffic/updateTraffic.js", "../src/traffic/updateTrafficTerrain.js", "../src/walk/initWalk.js", "../src/walk/initialize.js", "../src/walk/createWalk.js", "../src/walk/onBlur.js", "../src/globals/moves.js", "../src/walk/stop.js", "../src/walk/onPointer.js", "../src/globals/limbs.js", "../src/walk/local.js", "../src/walk/place.js", "../src/walk/onTerrain.js", "../src/walk/onKey.js", "../src/walk/start.js", "../src/globals/sceneWalkHandlers.js", "../src/utils/wrap.js", "../src/picking/shouldSkipOther.js", "../src/walk/land.js", "../src/walk/moveWalker.js", "../src/globals/CELL.js", "../src/globals/colliders.js", "../src/collision/transformTriangle.js", "../src/collision/indexTriangle.js", "../src/collision/collider.js", "../src/collision/horizontalRay.js", "../src/picking/hitColliderCell.js", "../src/picking/hitMesh.js", "../src/picking/hit.js", "../src/walk/blocked.js", "../src/walk/stepWalkerHeight.js", "../src/walk/updateWalkerView.js", "../src/walk/step.js", "../src/walk/toggle.js", "../src/walk/onAdd.js", "../src/walk/onRemove.js", "../src/core/initializeNativeLayer.js", "../src/globals/closestMethods.js", "../src/globals/boundsMethods.js", "../src/globals/gridInitializers.js", "../src/scene/emptyEvents.js", "../src/core/closestCameraLayerPoint.js", "../src/core/cameraCircleBounds.js", "../src/core/initializeGridContainer.js", "../src/globals/pendingGridFades.js", "../src/globals/gridFadeFrame.js", "../src/core/cancelGridFade.js", "../src/core/runGridFades.js", "../src/core/scheduleGridFade.js", "../src/core/updateGridOpacity.js", "../src/globals/pendingRasterLoads.js", "../src/core/fireRasterLoad.js", "../src/core/addRasterImage.js", "../src/core/redrawPath.js", "../src/scene/layerLayerAdd.js", "../src/scene/removeLayerEvents.js", "../src/scene/addSceneLayer.js", "../src/scene/isNativeLayer.js", "../src/scene/layerInitialize.js", "../src/globals/pendingInitializations.js", "../src/globals/loading.js", "../src/sources/initializeGeoJSON.js", "../src/cog/validateCogRange.js", "../src/cog/validateCogContentRange.js", "../src/cog/invalidCogFullResponse.js", "../src/cog/validateCogResponse.js", "../src/cog/readCogBody.js", "../src/cog/readCog.js", "../src/globals/cogTags.js", "../src/cog/readCogTag.js", "../src/cog/readCogDirectory.js", "../src/cog/validCogDimensions.js", "../src/cog/validCogEncoding.js", "../src/cog/getCogProfile.js", "../src/cog/hasCogProjection.js", "../src/cog/finiteCogValues.js", "../src/cog/validCogGeoArrays.js", "../src/cog/getCogBase.js", "../src/cog/validCogGrid.js", "../src/cog/validateCogOffsets.js", "../src/cog/readCogLevel.js", "../src/cog/readCogDirectories.js", "../src/cog/decodeCogTile.js", "../src/cog/readCogBlock.js", "../src/cog/getElevationTile.js", "../src/cog/getColorTile.js", "../src/cog/validCogTileCoordinates.js", "../src/cog/getCogTile.js", "../src/cog/getCogHeader.js", "../src/cog/validateCogContainer.js", "../src/cog/getCogAssetEntry.js", "../src/cog/openCogAsset.js", "../src/cog/openCog.js", "../src/cog/initCog.js", "../src/scene/initializerFor.js", "../src/scene/resolveNextInitialization.js", "../src/scene/initializeLayer.js", "../src/core/removeLayer.js", "../src/scene/removeSceneLayer.js", "../src/camera/getPitch.js", "../src/camera/getBearing.js", "../src/core/markerSetRotation.js", "../src/core/setRotation.js", "../src/core/layerCallInitHooks.js"],
|
|
4
|
+
"sourcesContent": ["export const L = globalThis.L;\r\n", "export const cameraByMap = new WeakMap();\n", "export const radians = Math.PI / 180;\n", "export const degrees = 180 / Math.PI;\r\n", "import { cameraByMap } from '../globals/cameraByMap.js';\n\n\nexport function mapGetPitch(map) { return cameraByMap.get(map)?._cameraPitch ?? 0; }\n", "import { cameraByMap } from '../globals/cameraByMap.js';\n\n\nexport function mapGetBearing(map) { return cameraByMap.get(map)?._cameraBearing ?? 0; }\n", "export const cameraEmptyOptions = Object.freeze({});\n", "import { L } from '../globals/L.js';\nimport { radians } from '../globals/radians.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\n\nimport { mapGetPitch } from './mapGetPitch.js';\n\n\nexport function updateSky() {\n const height = this.getSize().y, pitch = mapGetPitch(this) * radians;\n const far = height * this.options.pitchMaxDistance, distance = height * 1.5;\n const top = height / 2 - far * Math.abs(Math.cos(pitch)) * distance / (distance + Math.sin(pitch) * far);\n if (top > 0 && !cameraByMap.get(this)._pitchSky) {\n cameraByMap.get(this)._pitchSky = L.DomUtil.create('div', 'leaflet-pitch-sky', this.getContainer());\n cameraByMap.get(this)._pitchSky.setAttribute('aria-hidden', 'true');\n cameraByMap.get(this)._pitchSky.style.cssText = 'position:absolute;inset:0 0 auto;height:0;z-index:0;pointer-events:none;background:var(--leaflet-sky-background,linear-gradient(#9ec5e8,#dfe9f0))';\n }\n if (cameraByMap.get(this)._pitchSky) {\n cameraByMap.get(this)._pitchSky.style.inset = pitch > Math.PI / 2 ? 'auto 0 0' : '0 0 auto';\n cameraByMap.get(this)._pitchSky.style.height = `${Math.max(0, Math.ceil(top))}px`;\n cameraByMap.get(this)._pitchSky.style.display = top > 0 ? '' : 'none';\n }\n}\n", "import { cameraByMap } from '../globals/cameraByMap.js';\n\nimport { mapGetPitch } from './mapGetPitch.js';\nimport { mapGetBearing } from './mapGetBearing.js';\n\nimport { updateSky } from './updateSky.js';\n\nexport function mapSetPitchAndBearing(map, pitch, bearing) {\n if (!Number.isFinite(pitch) || !Number.isFinite(bearing)) throw /* alloc */ new TypeError('Camera angles must be finite numbers');\n if (!Number.isFinite(map.options.maxPitch) || map.options.maxPitch < 0 || map.options.maxPitch > 180) {\n throw /* alloc */ new TypeError('maxPitch must be between 0 and 180 degrees');\n }\n const previousPitch = mapGetPitch(map), previousBearing = mapGetBearing(map);\n cameraByMap.get(map)._cameraPitch = Math.max(0, Math.min(map.options.maxPitch, pitch));\n cameraByMap.get(map)._cameraBearing = ((bearing % 360) + 360) % 360;\n if (map._loaded) {\n updateSky.call(map);\n if (previousBearing !== mapGetBearing(map)) map.fire('rotate', /* alloc */ { bearing: mapGetBearing(map) });\n if (previousPitch !== mapGetPitch(map)) map.fire('pitch', /* alloc */ { pitch: mapGetPitch(map) });\n }\n return map;\n}\n", "export const cameraAnimations = new Map();\n", "export const cameraAnimationFrame = { value: null };\n", "import { cameraAnimations } from '../globals/cameraAnimations.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\nimport { cameraAnimationFrame } from '../globals/cameraAnimationFrame.js';\n\n\n\nexport function cancelCameraAnimation(map) {\r\n cameraAnimations.delete(map);\r\n cameraByMap.get(map)._cameraAnimation = null;\r\n cameraByMap.get(map)._cameraFrame = null;\r\n if (!cameraAnimations.size && cameraAnimationFrame.value !== null) {\r\n cancelAnimationFrame(cameraAnimationFrame.value);\r\n cameraAnimationFrame.value = null;\r\n }\r\n}\n", "export const Compass = { value: undefined };\n", "export const ContainerResize = { value: undefined };\n", "export const PitchDrag = { value: undefined };\n", "export const ShiftRotate = { value: undefined };\n", "export const TouchMode = { value: undefined };\n", "export const touchByContainer = new WeakMap();\n", "export const cameraTouchStates = new Set();\n", "export const cameraListenerOptions = Object.freeze({\n capture: true,\n passive: false\n});\n", "export function notifyCameraTouchChange() { this._map.fire('cameratouchchange'); }\n", "export const cameraDragSensitivity = Object.freeze([0.8, 0.5]);\n", "export const cameraBearingSensitivity = Object.freeze([0.8, 0]);\n", "export const cameraFocusOptions = Object.freeze({\n preventScroll: true\n});\n", "export const cameraAnimatedOptions = Object.freeze({\n animate: true\n});\n", "import { cameraAnimationFrame } from '../globals/cameraAnimationFrame.js';\nimport { cameraAnimations } from '../globals/cameraAnimations.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\n\nimport { mapSetPitchAndBearing } from './mapSetPitchAndBearing.js';\n\n\nimport { scheduleCameraAnimation } from './scheduleCameraAnimation.js';\n\nexport function runCameraAnimations(now) {\n cameraAnimationFrame.value = null;\n const pending = /* alloc */ [...cameraAnimations];\n cameraAnimations.clear();\n let failure;\n let map, animation, progress, eased;\n for ([map, animation] of pending) {\n cameraByMap.get(map)._cameraFrame = null;\n if (cameraByMap.get(map)._cameraAnimation !== animation) continue;\n progress = animation.duration\n ? Math.min(1, (now - animation.start) / (animation.duration * 1000)) : 1;\n eased = 1 - (1 - progress) ** 3;\n try {\n mapSetPitchAndBearing(map, animation.fromPitch + (Math.max(0, Math.min(map.options.maxPitch, animation.pitch)) - animation.fromPitch) * eased, animation.fromBearing + animation.delta * eased);\n if (progress < 1 && cameraByMap.get(map)._cameraAnimation === animation) scheduleCameraAnimation(map, animation);\n else if (cameraByMap.get(map)._cameraAnimation === animation) cameraByMap.get(map)._cameraAnimation = null;\n } catch (error) {\n failure ||= error;\n }\n }\n if (failure) throw failure;\n}\n", "import { cameraAnimations } from '../globals/cameraAnimations.js';\nimport { cameraAnimationFrame } from '../globals/cameraAnimationFrame.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\n\n\n\nimport { runCameraAnimations } from './runCameraAnimations.js';\n\nexport function scheduleCameraAnimation(map, animation) {\r\n cameraAnimations.set(map, animation);\r\n if (cameraAnimationFrame.value === null) cameraAnimationFrame.value = requestAnimationFrame(runCameraAnimations);\r\n cameraByMap.get(map)._cameraFrame = cameraAnimationFrame.value;\r\n}\n", "import { cameraEmptyOptions } from '../globals/cameraEmptyOptions.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\nimport { mapSetPitchAndBearing } from './mapSetPitchAndBearing.js';\nimport { mapGetPitch } from './mapGetPitch.js';\nimport { mapGetBearing } from './mapGetBearing.js';\n\nimport { cancelCameraAnimation } from './cancelCameraAnimation.js';\nimport { scheduleCameraAnimation } from './scheduleCameraAnimation.js';\n\n\nexport function mapAnimateCamera(map, pitch, bearing, options = cameraEmptyOptions) {\n cancelCameraAnimation(map);\n if (!Number.isFinite(pitch) || !Number.isFinite(bearing)) throw /* alloc */ new TypeError('Camera angles must be finite numbers');\n if (!options.animate || matchMedia('(prefers-reduced-motion: reduce)').matches) {\n return mapSetPitchAndBearing(map, pitch, bearing);\n }\n const duration = options.duration ?? 0.3;\n if (!Number.isFinite(duration) || duration < 0) throw /* alloc */ new TypeError('Camera duration must be nonnegative');\n const start = performance.now(), fromPitch = mapGetPitch(map), fromBearing = mapGetBearing(map);\n const delta = ((bearing - fromBearing) % 360 + 540) % 360 - 180;\n const animation = cameraByMap.get(map)._cameraAnimation = /* alloc */ { duration, start, fromPitch, fromBearing, pitch, delta };\n scheduleCameraAnimation(map, animation);\n return map;\n}\n", "import { cameraAnimatedOptions } from '../globals/cameraAnimatedOptions.js';\nimport { mapAnimateCamera } from './mapAnimateCamera.js';\n\nexport function mapResetNorthPitch(map, options = cameraAnimatedOptions) { return mapAnimateCamera(map, 0, 0, options); }\n", "import { mapAnimateCamera } from './mapAnimateCamera.js';\nimport { mapGetPitch } from './mapGetPitch.js';\nexport function mapSetBearing(map, bearing, options) { return mapAnimateCamera(map, mapGetPitch(map), bearing, options); }\n", "import { cameraAnimatedOptions } from '../globals/cameraAnimatedOptions.js';\nimport { mapSetBearing } from './mapSetBearing.js';\n\nexport function mapResetNorth(map, options = cameraAnimatedOptions) { return mapSetBearing(map, 0, options); }\n", "import { cameraFocusOptions } from '../globals/cameraFocusOptions.js';\nimport { mapResetNorthPitch } from '../camera/mapResetNorthPitch.js';\r\nimport { mapResetNorth } from '../camera/mapResetNorth.js';\r\n\r\nexport function rotateButtonClick(event) {\r\n const control = this._rotateControl, map = control._map;\r\n event.preventDefault();\r\n if (control.options.visualizePitch) mapResetNorthPitch(map);\r\n else mapResetNorth(map);\r\n if (event.detail) map.getContainer().focus(cameraFocusOptions);\r\n}\r\n", "import { mapAnimateCamera } from './mapAnimateCamera.js';\nimport { mapGetBearing } from './mapGetBearing.js';\nexport function mapSetPitch(map, pitch, options) { return mapAnimateCamera(map, pitch, mapGetBearing(map), options); }\n", "import { mapSetBearing } from '../camera/mapSetBearing.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\nimport { mapSetPitch } from '../camera/mapSetPitch.js';\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nexport function rotateButtonKeydown(event) {\r\n const control = this._rotateControl, map = control._map, step = event.shiftKey ? 15 : 5;\r\n if (event.key === 'ArrowLeft') mapSetBearing(map, mapGetBearing(map) - step);\r\n else if (event.key === 'ArrowRight') mapSetBearing(map, mapGetBearing(map) + step);\r\n else if (event.key === 'ArrowUp' && control.options.visualizePitch) mapSetPitch(map, mapGetPitch(map) + step);\r\n else if (event.key === 'ArrowDown' && control.options.visualizePitch) mapSetPitch(map, mapGetPitch(map) - step);\r\n else if (event.key === 'Home' || event.key === ' ') this.click();\r\n else return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n}\n", "import { radians } from '../globals/radians.js';\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\nexport function refreshRotateControl() {\n const map = this._map, pitch = this.options.visualizePitch ? mapGetPitch(map) : 0;\n this._arrow.style.transform = `scale(${1 / Math.sqrt(Math.max(0.01, Math.abs(Math.cos(pitch * radians))))}) rotateX(${pitch}deg) rotate(${mapGetBearing(map)}deg)`;\n this._button.setAttribute('aria-description', `Bearing ${Math.round(mapGetBearing(map))} degrees, pitch ${Math.round(mapGetPitch(map))} degrees. Arrow keys adjust the camera; Home resets it.`);\n this._container.style.display = this.options.closeOnZeroBearing && !mapGetBearing(map) && !pitch &&\n !this._container.contains(document.activeElement) ? 'none' : '';\n}\n", "export const dragStates = { value: new WeakMap() };\n", "export const cameraDrags = { value: new Set() };\n", "export function editable(target) {\r\n return target.closest?.('input,textarea,select,[contenteditable=\"true\"]');\r\n}\n", "import { dragStates } from '../globals/dragStates.js';\nimport { cameraFocusOptions } from '../globals/cameraFocusOptions.js';\n\n\nimport { editable } from './editable.js';\n\nexport function cameraDragDown(event) {\n const state = dragStates.value.get(this);\n if (state.drag || !state.accept(event) || editable(event.target)) return;\n event.preventDefault();\n event.stopPropagation();\n state.moved = false;\n const rect = state.map.getContainer().getBoundingClientRect();\n state.drag = /* alloc */ {\n id: event.pointerId, x: event.clientX, y: event.clientY, cursor: state.element.style.cursor,\n cx: rect.left + rect.width / 2, cy: rect.top + rect.height / 2,\n dragging: state.map.dragging?.enabled(),\n };\n state.map.dragging?.disable();\n state.element.focus?.(cameraFocusOptions);\n state.element.setPointerCapture(event.pointerId);\n state.element.style.cursor = 'grabbing';\n}\n", "import { cancelCameraAnimation } from './cancelCameraAnimation.js';\n\nexport function mapStopPitchBearingAnimation(map) {\n cancelCameraAnimation(map);\r\n return map;\n}\n", "import { degrees } from '../globals/degrees.js';\nimport { dragStates } from '../globals/dragStates.js';\n\nimport { mapStopPitchBearingAnimation } from '../camera/mapStopPitchBearingAnimation.js';\nimport { mapSetPitchAndBearing } from '../camera/mapSetPitchAndBearing.js';\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\n\nexport function cameraDragMove(event) {\r\n const state = dragStates.value.get(this);\r\n if (!state.drag || state.drag.id !== event.pointerId) return;\r\n const x = event.clientX - state.drag.x, y = event.clientY - state.drag.y;\r\n if (Math.hypot(x, y) < 3 && !state.moved) return;\r\n mapStopPitchBearingAnimation(state.map);\r\n state.moved = true;\r\n event.preventDefault();\r\n let bearing = x * state.sensitivity[0];\r\n if (state.orbit) {\r\n if (Math.abs(state.drag.cy - state.drag.y) > 100) {\r\n const angle = Math.atan2(event.clientY - state.drag.cy, event.clientX - state.drag.cx) -\r\n Math.atan2(event.clientY - state.drag.cy, state.drag.x - state.drag.cx);\r\n bearing = Math.atan2(Math.sin(angle), Math.cos(angle)) * degrees;\r\n } else bearing *= event.clientY < state.drag.cy ? 1 : -1;\r\n }\r\n mapSetPitchAndBearing(state.map, mapGetPitch(state.map) - y * state.sensitivity[1], mapGetBearing(state.map) + bearing);\r\n state.drag.x = event.clientX;\r\n state.drag.y = event.clientY;\r\n}\n", "export function finishCameraDrag(state, event) {\r\n if (!state?.drag) return;\r\n if (event?.pointerId !== undefined && event.pointerId !== state.drag.id) return;\r\n const finished = state.drag;\r\n state.drag = null;\r\n if (state.element.hasPointerCapture?.(finished.id)) state.element.releasePointerCapture(finished.id);\r\n if (finished.dragging && state.map.getContainer()._leaflet_id) state.map.dragging.enable();\r\n state.element.style.cursor = finished.cursor;\r\n}\n", "import { dragStates } from '../globals/dragStates.js';\n\nimport { finishCameraDrag } from './finishCameraDrag.js';\n\nexport function cameraDragEnd(event) {\r\n finishCameraDrag(dragStates.value.get(this), event);\r\n}\n", "import { dragStates } from '../globals/dragStates.js';\n\n\nexport function cameraDragClick(event) {\r\n const state = dragStates.value.get(this);\r\n if (!state.moved) return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n state.moved = false;\r\n}\n", "import { dragStates } from '../globals/dragStates.js';\n\n\nexport function cameraDragContextMenu(event) {\r\n const state = dragStates.value.get(this);\r\n if (!state.drag && !state.moved) return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n}\n", "import { cameraDrags } from '../globals/cameraDrags.js';\n\n\nimport { finishCameraDrag } from './finishCameraDrag.js';\n\nexport function endAllCameraDrags() {\n let state;\n for (state of cameraDrags.value) finishCameraDrag(state);\n}\n", "import { cameraDragSensitivity } from '../globals/cameraDragSensitivity.js';\nimport { dragStates } from '../globals/dragStates.js';\nimport { cameraDrags } from '../globals/cameraDrags.js';\n\n\nimport { cameraDragDown } from './cameraDragDown.js';\nimport { cameraDragMove } from './cameraDragMove.js';\nimport { cameraDragEnd } from './cameraDragEnd.js';\nimport { cameraDragClick } from './cameraDragClick.js';\nimport { cameraDragContextMenu } from './cameraDragContextMenu.js';\nimport { endAllCameraDrags } from './endAllCameraDrags.js';\n\nexport function dragCamera(map, element, accept, sensitivity = cameraDragSensitivity, orbit = false) {\n const state = /* alloc */ { map, element, accept, sensitivity, orbit, drag: null, moved: false };\n dragStates.value.set(element, state);\n cameraDrags.value.add(state);\n element.addEventListener('pointerdown', cameraDragDown, true);\n element.addEventListener('pointermove', cameraDragMove);\n element.addEventListener('pointerup', cameraDragEnd);\n element.addEventListener('pointercancel', cameraDragEnd);\n element.addEventListener('lostpointercapture', cameraDragEnd);\n element.addEventListener('click', cameraDragClick, true);\n element.addEventListener('contextmenu', cameraDragContextMenu);\n window.addEventListener('blur', endAllCameraDrags);\n return state;\n}\n", "export function acceptRotateDrag(event) {\r\n return event.button === 0;\r\n}\n", "import { refreshRotateControl } from './refreshRotateControl.js';\n\nexport function refreshRotateFocus() {\r\n refreshRotateControl.call(this._rotateControl);\r\n}\n", "import { L } from '../globals/L.js';\nimport { cameraDragSensitivity } from '../globals/cameraDragSensitivity.js';\nimport { cameraBearingSensitivity } from '../globals/cameraBearingSensitivity.js';\nimport { rotateButtonClick } from './rotateButtonClick.js';\nimport { rotateButtonKeydown } from './rotateButtonKeydown.js';\nimport { refreshRotateControl } from './refreshRotateControl.js';\nimport { dragCamera } from './dragCamera.js';\nimport { acceptRotateDrag } from './acceptRotateDrag.js';\nimport { refreshRotateFocus } from './refreshRotateFocus.js';\n\n\nexport function rotateOnAdd(map) {\n const container = L.DomUtil.create('div', 'leaflet-control-rotate leaflet-bar');\n const button = L.DomUtil.create('a', 'leaflet-control-rotate-toggle', container);\n this._map = map;\n this._container = container;\n this._button = button;\n button._rotateControl = this;\n button.href = '#';\n button.draggable = false;\n button.setAttribute('role', 'button');\n button.title = this.options.visualizePitch ? 'Reset bearing and pitch' : 'Reset bearing to north';\n button.setAttribute('aria-label', button.title);\n button.style.cssText = 'cursor:grab;touch-action:none';\n const arrow = L.DomUtil.create('span', 'leaflet-control-rotate-arrow', button);\n this._arrow = arrow;\n arrow.setAttribute('aria-hidden', 'true');\n arrow.style.cssText = 'display:block;width:100%;height:100%;pointer-events:none;background: no-repeat center / 29px 29px';\n arrow.style.backgroundImage = 'url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 29 29%27%3E%3Cpath fill=%27%23333%27 d=%27M10.5 14 14.5 6 18.5 14Z%27/%3E%3Cpath fill=%27%23ccc%27 d=%27M10.5 16 14.5 24 18.5 16Z%27/%3E%3C/svg%3E\")';\n button.onclick = rotateButtonClick;\n button.onkeydown = rotateButtonKeydown;\n this._refresh = refreshRotateControl;\n map.on('rotate pitch', this._refresh, this);\n this._refresh();\n this._dragState = dragCamera(map, button, acceptRotateDrag,\n this.options.visualizePitch ? cameraDragSensitivity : cameraBearingSensitivity);\n button.addEventListener('focusout', refreshRotateFocus);\n L.DomEvent.on(button, 'dblclick contextmenu', L.DomEvent.stop);\n L.DomEvent.disableClickPropagation(container);\n L.DomEvent.disableScrollPropagation(container);\n return container;\n}\n", "import { dragStates } from '../globals/dragStates.js';\nimport { cameraDrags } from '../globals/cameraDrags.js';\n\nimport { finishCameraDrag } from './finishCameraDrag.js';\nimport { cameraDragDown } from './cameraDragDown.js';\nimport { cameraDragMove } from './cameraDragMove.js';\nimport { cameraDragEnd } from './cameraDragEnd.js';\nimport { cameraDragClick } from './cameraDragClick.js';\nimport { cameraDragContextMenu } from './cameraDragContextMenu.js';\n\nimport { endAllCameraDrags } from './endAllCameraDrags.js';\n\nexport function removeCameraDrag(state) {\r\n finishCameraDrag(state);\r\n const { element } = state;\r\n element.removeEventListener('pointerdown', cameraDragDown, true);\r\n element.removeEventListener('pointermove', cameraDragMove);\r\n element.removeEventListener('pointerup', cameraDragEnd);\r\n element.removeEventListener('pointercancel', cameraDragEnd);\r\n element.removeEventListener('lostpointercapture', cameraDragEnd);\r\n element.removeEventListener('click', cameraDragClick, true);\r\n element.removeEventListener('contextmenu', cameraDragContextMenu);\r\n dragStates.value.delete(element);\r\n cameraDrags.value.delete(state);\r\n if (!cameraDrags.value.size) window.removeEventListener('blur', endAllCameraDrags);\r\n}\n", "import { removeCameraDrag } from './removeCameraDrag.js';\n\nexport function pitchDragRemoveHooks() {\n removeCameraDrag(this._dragState);\n}\n", "import { pitchDragRemoveHooks } from './pitchDragRemoveHooks.js';\n\nexport function rotateOnRemove(map) {\n map.off('rotate pitch', this._refresh, this);\n pitchDragRemoveHooks.call(this);\n}\n", "import { L } from '../globals/L.js';\nexport function rotateControl(options) {\r\n return /* alloc */ new L.Control.Rotate(options);\r\n}\r\n", "import { mapSetBearing } from '../camera/mapSetBearing.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\nimport { editable } from './editable.js';\n\nexport function shiftRotateWheel(event) {\r\n const handler = this._cameraShiftRotate;\r\n if (!event.shiftKey || editable(event.target) || event.target.closest('.leaflet-control')) return;\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n mapSetBearing(handler._map, mapGetBearing(handler._map) + Math.sign(event.deltaY) * 5);\r\n}\n", "import { cameraListenerOptions } from '../globals/cameraListenerOptions.js';\nimport { shiftRotateWheel } from './shiftRotateWheel.js';\n\n\nexport function shiftRotateAddHooks() {\n const container = this._map.getContainer();\n container._cameraShiftRotate = this;\n this._wheel = shiftRotateWheel;\n container.addEventListener('wheel', this._wheel, cameraListenerOptions);\n}\n", "export function shiftRotateRemoveHooks() {\n const container = this._map.getContainer();\r\n container.removeEventListener('wheel', this._wheel, true);\r\n delete container._cameraShiftRotate;\n}\n", "export function acceptPitchDrag(event) {\r\n return !event.target.closest('.leaflet-control,.leaflet-marker-icon,.leaflet-popup') &&\r\n (event.button === 2 || event.button === 0 && event.ctrlKey);\r\n}\n", "import { cameraDragSensitivity } from '../globals/cameraDragSensitivity.js';\nimport { dragCamera } from './dragCamera.js';\nimport { acceptPitchDrag } from './acceptPitchDrag.js';\n\n\nexport function pitchDragAddHooks() {\n this._dragState = dragCamera(this._map, this._map.getContainer(), acceptPitchDrag, cameraDragSensitivity, true);\n}\n", "import { mapSetBearing } from '../camera/mapSetBearing.js';\nexport function compassOrientation(event) {\r\n const handler = this.handler;\r\n const bearing = Number.isFinite(event.webkitCompassHeading) ? -event.webkitCompassHeading : event.alpha;\r\n const orientation = event.absolute ? 0 : (screen.orientation?.angle ?? window.orientation ?? 0);\r\n if (Number.isFinite(bearing)) mapSetBearing(handler._map, bearing - orientation);\r\n}\n", "export function failCompassPermission(handler, error) {\r\n handler.disable();\r\n handler._map.fire('error', /* alloc */ { error });\r\n}\r\n", "import { failCompassPermission } from './failCompassPermission.js';\r\n\r\nexport function finishCompassPermission([handlerResult, permissionResult]) {\r\n const { handler, generation } = handlerResult.value;\r\n if (!handler.enabled() || handler._generation !== generation) return;\r\n if (!window.DeviceOrientationEvent || permissionResult.status !== 'fulfilled' ||\r\n permissionResult.value !== 'granted') {\r\n return failCompassPermission(handler, permissionResult.status === 'rejected' ? permissionResult.reason :\r\n /* alloc */ new Error('Device compass permission unavailable or denied'));\r\n }\r\n try {\r\n window.addEventListener('deviceorientation', handler._orientation);\r\n window.addEventListener('deviceorientationabsolute', handler._orientation);\r\n } catch (error) {\r\n failCompassPermission(handler, error);\r\n }\r\n}\r\n", "import { compassOrientation } from './compassOrientation.js';\nimport { finishCompassPermission } from './finishCompassPermission.js';\n\nexport function compassAddHooks() {\n this._compassGeneration = (this._generation = (this._generation || 0) + 1);\n this._orientation = /* alloc */ { handler: this, handleEvent: compassOrientation };\n const permission = window.DeviceOrientationEvent?.requestPermission;\n let request;\n try {\n request = permission ? permission.call(window.DeviceOrientationEvent) : 'granted';\n } catch (error) {\n request = Promise.reject(error);\n }\n Promise.allSettled(/* alloc */ [\n Promise.resolve(/* alloc */ { handler: this, generation: this._generation }),\n request,\n ]).then(finishCompassPermission);\n}\n", "export function compassRemoveHooks() {\n this._generation++;\r\n window.removeEventListener('deviceorientation', this._orientation);\r\n window.removeEventListener('deviceorientationabsolute', this._orientation);\n}\n", "export function resizeMap(entries) {\r\n entries[0]?.target._containerResizeMap.invalidateSize();\r\n}\n", "import { resizeMap } from './resizeMap.js';\n\nexport function containerResizeAddHooks() {\n const container = this._map.getContainer();\n container._containerResizeMap = this._map;\n this._observer = /* alloc */ new ResizeObserver(resizeMap);\n this._observer.observe(container);\n}\n", "export function containerResizeRemoveHooks() {\n const container = this._map.getContainer();\r\n this._observer.disconnect();\r\n delete container._containerResizeMap;\n}\n", "import { L } from '../globals/L.js';\nimport { touchByContainer } from '../globals/touchByContainer.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\n\nimport { mapStopPitchBearingAnimation } from '../camera/mapStopPitchBearingAnimation.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\n\nexport function startCameraTouch(event) {\n const state = touchByContainer.get(this), { map, container } = state;\n if (state.touch || event.touches.length !== 2 || event.target.closest('.leaflet-control')) return;\n if (!cameraByMap.get(map).touchRotate.enabled() && !cameraByMap.get(map).touchPitch.enabled()) return;\n const [a, b] = event.touches;\n if (Math.hypot(b.clientX - a.clientX, b.clientY - a.clientY) < 1) return;\n mapStopPitchBearingAnimation(map);\n const rect = container.getBoundingClientRect();\n const middle = /* alloc */ new L.Point(\n (a.clientX + b.clientX) / 2 - rect.left, (a.clientY + b.clientY) / 2 - rect.top);\n state.touch = /* alloc */ {\n angle: Math.atan2(b.clientY - a.clientY, b.clientX - a.clientX),\n distance: Math.hypot(b.clientX - a.clientX, b.clientY - a.clientY), middle,\n anchor: map.containerPointToLatLng(middle), zoom: map.getZoom(),\n bearing: mapGetBearing(map), pitch: mapGetPitch(map), zooming: map.touchZoom?.enabled(),\n dragging: map.dragging?.enabled(),\n currentMiddle: /* alloc */ new L.Point(middle.x, middle.y),\n };\n map.dragging?.disable();\n event.preventDefault();\n event.stopImmediatePropagation();\n if (state.nativeZoom !== undefined) state.touch.zooming = state.nativeZoom;\n state.touch.snap = map.options.zoomSnap;\n map.options.zoomSnap = 0;\n}\n", "import { degrees } from '../globals/degrees.js';\nimport { touchByContainer } from '../globals/touchByContainer.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\n\r\nimport { mapSetPitchAndBearing } from '../camera/mapSetPitchAndBearing.js';\r\n\r\nexport function moveCameraTouch(event) {\r\n const state = touchByContainer.get(this), { map, container, touch } = state;\r\n if (!touch || event.touches.length !== 2) return;\r\n const [a, b] = event.touches;\r\n const angle = Math.atan2(b.clientY - a.clientY, b.clientX - a.clientX);\r\n const rect = container.getBoundingClientRect(), middle = touch.currentMiddle;\r\n middle.x = (a.clientX + b.clientX) / 2 - rect.left;\r\n middle.y = (a.clientY + b.clientY) / 2 - rect.top;\r\n const delta = Math.atan2(Math.sin(angle - touch.angle), Math.cos(angle - touch.angle)) * degrees;\r\n mapSetPitchAndBearing(map, cameraByMap.get(map).touchPitch.enabled() ? touch.pitch - (middle.y - touch.middle.y) * 0.25 : touch.pitch, cameraByMap.get(map).touchRotate.enabled() ? touch.bearing + delta : touch.bearing);\r\n const distance = Math.hypot(b.clientX - a.clientX, b.clientY - a.clientY);\r\n if (distance < 1) return;\r\n const zoom = touch.zooming ? Math.max(map.getMinZoom(), Math.min(map.getMaxZoom(),\r\n touch.zoom + Math.log2(distance / touch.distance))) : touch.zoom;\r\n map.setView(map.getCenter(), zoom, /* alloc */ { animate: false });\r\n if (map.options.touchZoom !== 'center') {\r\n const projected = map.project(touch.anchor).subtract(map.project(map.containerPointToLatLng(middle)));\r\n map.setView(map.unproject(map.project(map.getCenter()).add(projected)), map.getZoom(),\r\n /* alloc */ { animate: false });\r\n }\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n}\r\n", "export function endCameraTouch(state, event) {\r\n if (!state.touch) return;\r\n if (event?.touches?.length >= 2) return;\r\n const { map, container, touch } = state;\r\n if (touch.dragging && container._leaflet_id) map.dragging.enable();\r\n map.options.zoomSnap = touch.snap;\r\n if (touch.zooming && touch.snap && container._leaflet_id) {\r\n map.setZoom(Math.round(map.getZoom() / touch.snap) * touch.snap,\r\n /* alloc */ { animate: false });\r\n }\r\n state.touch = null;\r\n}\r\n", "import { touchByContainer } from '../globals/touchByContainer.js';\n\n\nimport { endCameraTouch } from './endCameraTouch.js';\n\nexport function endCameraTouchEvent(event) {\n endCameraTouch(touchByContainer.get(this), event);\n}\n", "import { cameraByMap } from '../globals/cameraByMap.js';\n\n\nimport { endCameraTouch } from './endCameraTouch.js';\n\nexport function changeCameraTouch() {\r\n const state = cameraByMap.get(this)._cameraTouchState, { map, container } = state;\r\n const active = cameraByMap.get(map).touchRotate.enabled() || cameraByMap.get(map).touchPitch.enabled();\r\n if (active && state.nativeZoom === undefined) {\r\n state.nativeZoom = map.touchZoom?.enabled();\r\n map.touchZoom?.disable();\r\n } else if (!active && state.nativeZoom !== undefined) {\r\n endCameraTouch(state);\r\n if (state.nativeZoom && container._leaflet_id) map.touchZoom.enable();\r\n state.nativeZoom = undefined;\r\n }\r\n}\n", "import { cameraTouchStates } from '../globals/cameraTouchStates.js';\n\n\nimport { endCameraTouch } from './endCameraTouch.js';\n\nexport function endAllCameraTouches() {\n let state;\n for (state of cameraTouchStates) endCameraTouch(state);\n}\n", "import { cameraByMap } from '../globals/cameraByMap.js';\nimport { cameraTouchStates } from '../globals/cameraTouchStates.js';\nimport { touchByContainer } from '../globals/touchByContainer.js';\n\n\nimport { endCameraTouch } from './endCameraTouch.js';\nimport { startCameraTouch } from './startCameraTouch.js';\nimport { moveCameraTouch } from './moveCameraTouch.js';\nimport { endCameraTouchEvent } from './endCameraTouchEvent.js';\n\nimport { endAllCameraTouches } from './endAllCameraTouches.js';\nimport { changeCameraTouch } from './changeCameraTouch.js';\n\nexport function cleanupCameraTouch() {\n const state = cameraByMap.get(this)._cameraTouchState;\n if (!state) return;\n const { container, map } = state;\n endCameraTouch(state);\n container.removeEventListener('touchstart', startCameraTouch, true);\n container.removeEventListener('touchmove', moveCameraTouch, true);\n container.removeEventListener('touchend', endCameraTouchEvent, true);\n container.removeEventListener('touchcancel', endCameraTouchEvent, true);\n cameraTouchStates.delete(state);\n if (!cameraTouchStates.size) window.removeEventListener('blur', endAllCameraTouches);\n map.off('cameratouchchange', changeCameraTouch, map);\n cameraByMap.get(map).rotateControl?.remove();\n touchByContainer.delete(container);\n delete cameraByMap.get(map)._cameraTouchState;\n}\n", "import { cameraByMap } from '../globals/cameraByMap.js';\n\n\r\n\r\nexport function addCameraHandler(map, name, Type) {\r\n const handler = cameraByMap.get(map)[name] = /* alloc */ new Type(map);\r\n map._handlers.push(handler);\r\n if (map.options[name]) handler.enable();\r\n}\r\n", "import { L } from '../globals/L.js';\nimport { Compass } from '../globals/Compass.js';\nimport { ContainerResize } from '../globals/ContainerResize.js';\nimport { PitchDrag } from '../globals/PitchDrag.js';\nimport { ShiftRotate } from '../globals/ShiftRotate.js';\nimport { TouchMode } from '../globals/TouchMode.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\nimport { touchByContainer } from '../globals/touchByContainer.js';\nimport { cameraTouchStates } from '../globals/cameraTouchStates.js';\nimport { cameraListenerOptions } from '../globals/cameraListenerOptions.js';\nimport { cameraEmptyOptions } from '../globals/cameraEmptyOptions.js';\nimport { notifyCameraTouchChange } from './notifyCameraTouchChange.js';\n\n\n\nimport { rotateOnAdd } from './rotateOnAdd.js';\nimport { rotateOnRemove } from './rotateOnRemove.js';\nimport { rotateControl } from './rotateControl.js';\nimport { shiftRotateAddHooks } from './shiftRotateAddHooks.js';\nimport { shiftRotateRemoveHooks } from './shiftRotateRemoveHooks.js';\nimport { pitchDragAddHooks } from './pitchDragAddHooks.js';\nimport { pitchDragRemoveHooks } from './pitchDragRemoveHooks.js';\nimport { compassAddHooks } from './compassAddHooks.js';\nimport { compassRemoveHooks } from './compassRemoveHooks.js';\nimport { containerResizeAddHooks } from './containerResizeAddHooks.js';\nimport { containerResizeRemoveHooks } from './containerResizeRemoveHooks.js';\nimport { startCameraTouch } from './startCameraTouch.js';\nimport { moveCameraTouch } from './moveCameraTouch.js';\nimport { endCameraTouchEvent } from './endCameraTouchEvent.js';\nimport { changeCameraTouch } from './changeCameraTouch.js';\nimport { cleanupCameraTouch } from './cleanupCameraTouch.js';\nimport { endAllCameraTouches } from './endAllCameraTouches.js';\nimport { addCameraHandler } from './addCameraHandler.js';\n\nCompass.value = L.Handler.extend({\n addHooks: compassAddHooks,\n removeHooks: compassRemoveHooks,\n});\n\nContainerResize.value = L.Handler.extend({\n addHooks: containerResizeAddHooks,\n removeHooks: containerResizeRemoveHooks,\n});\n\nPitchDrag.value = L.Handler.extend({\n addHooks: pitchDragAddHooks,\n removeHooks: pitchDragRemoveHooks,\n});\n\nShiftRotate.value = L.Handler.extend({\n addHooks: shiftRotateAddHooks,\n removeHooks: shiftRotateRemoveHooks,\n});\n\nTouchMode.value = L.Handler.extend({\n addHooks: notifyCameraTouchChange,\n removeHooks: notifyCameraTouchChange,\n});\n\nL.Control.Rotate = L.Control.extend({\n options: { position: 'topleft', closeOnZeroBearing: true, visualizePitch: true },\n onAdd: rotateOnAdd,\n onRemove: rotateOnRemove,\n});\n\nif (L.control) L.control.rotate = rotateControl;\n\nexport function cameraControls(map) {\n addCameraHandler(map, 'trackContainerMutation', ContainerResize.value);\n if (!map.options.rotate) return;\n addCameraHandler(map, 'shiftKeyRotate', ShiftRotate.value);\n addCameraHandler(map, 'pitchDrag', PitchDrag.value);\n addCameraHandler(map, 'compassBearing', Compass.value);\n addCameraHandler(map, 'touchRotate', TouchMode.value);\n addCameraHandler(map, 'touchPitch', TouchMode.value);\n const container = map.getContainer();\n const state = cameraByMap.get(map)._cameraTouchState = /* alloc */ { map, container, touch: null, nativeZoom: undefined };\n touchByContainer.set(container, state);\n cameraTouchStates.add(state);\n container.addEventListener('touchstart', startCameraTouch, cameraListenerOptions);\n container.addEventListener('touchmove', moveCameraTouch, cameraListenerOptions);\n container.addEventListener('touchend', endCameraTouchEvent, true);\n container.addEventListener('touchcancel', endCameraTouchEvent, true);\n window.addEventListener('blur', endAllCameraTouches);\n map.on('cameratouchchange', changeCameraTouch, map);\n if (map.options.rotateControl) {\n cameraByMap.get(map).rotateControl = /* alloc */ new L.Control.Rotate(typeof map.options.rotateControl === 'object' ? map.options.rotateControl : cameraEmptyOptions);\n cameraByMap.get(map).rotateControl.addTo(map);\n }\n map.once('unload', cleanupCameraTouch, map);\n}\n", "import { L } from './globals/L.js';\nimport { layerProto } from './globals/layerProto.js';\nimport { layerCallInitHooks as sharedLayerCallInitHooks } from './globals/layerCallInitHooks.js';\nimport { removeLayer as sharedRemoveLayer } from './globals/removeLayer.js';\n\nimport './camera/mapCamera.js';\nimport { init3D } from './scene/init3D.js';\nimport { initNativeGPU } from './core/initNativeGPU.js';\nimport { initRaster } from './raster/initRaster.js';\nimport { setGeoJSONData } from './sources/setGeoJSONData.js';\nimport { initTerrain } from './terrain/initTerrain.js';\nimport './sunlight/initSunlight.js';\nimport { initTraffic } from './traffic/initTraffic.js';\nimport './walk/initWalk.js';\n\nimport { initializeNativeLayer } from './core/initializeNativeLayer.js';\nimport { layerLayerAdd } from './scene/layerLayerAdd.js';\nimport { layerInitialize } from './scene/layerInitialize.js';\nimport { removeLayer } from './core/removeLayer.js';\nimport { getPitch } from './camera/getPitch.js';\nimport { getBearing } from './camera/getBearing.js';\nimport { setRotation } from './core/setRotation.js';\nimport { layerCallInitHooks } from './core/layerCallInitHooks.js';\n\n/**\n * `new L.Layer({ source: { type, url, ...settings }, pane, attribution })`: layers with a `source`\n * initialize their specialized behavior on first use. Native map layers also join the WebGPU scene.\n */\n\n/**\n * Router for `new L.Layer({ source: { type, url, ...settings }, pane, attribution })`.\n * It initializes a native instance from the bundled source modules;\n * types receive flat options (`{ ...source, pane, attribution }`); plugin state remains external.\n *\n * Folder layout:\n * - scene/: source routing, lifecycle and graph; initializers live in their domain folders.\n * - core/: Leaflet layer integration; camera/ and controls/: camera and interaction.\n * - sources/ and picking/: source geometry and feature interaction.\n * - rendering/, shaders/, shadows/ and lighting/: WebGPU drawing and illumination.\n * - geometry/, triangulation/ and collision/: mesh operations and spatial queries.\n * - models/, archives/ and raster/: glTF loading, archive access and raster tiles.\n * - globals/: one shared value per module, imported directly by its consumers.\n * - terrain/, sunlight/, traffic/ and walk/: feature-specific operations.\n * Operations receive the layer explicitly, without subclasses or prototype replacement.\n * Dataset-specific code and data (routes, timetables, API loaders) belong to the application, e.g. misc/.\n *\n * When `type` is omitted, inline FeatureCollections use 'geojson'; *.pmtiles URLs use\n * 'pmtiles', *.tif/*.tiff URLs use 'cog', and other sources use '3d'.\n */\n\nlayerProto.value = Object.defineProperties({}, Object.getOwnPropertyDescriptors(L.Layer.prototype));\nsharedLayerCallInitHooks.value = L.Layer.prototype.callInitHooks;\n\n/**\n * The '3d' layer type: native WebGPU scene synchronized with the map camera.\n * Layers on one map share a canvas, scene and camera; each has its own root transform.\n *\n * @typedef {Object} Layer3DOptions Layer options; pane and attribution remain standard L.Layer options.\n * @property {string} [type] '3d', 'geojson', 'pmtiles', 'cog', 'terrain' or 'traffic'.\n * @property {number[]} [center] Local origin [lat,lng]; defaults to the first map center.\n * @property {number} [terrainOffset=0] Vertical offset in metres when terrain is enabled.\n * @property {boolean} [terrainConform=false] Fit lower model geometry to local terrain elevation.\n * @property {'OPAQUE'|'MASK'|'BLEND'} [alphaMode] Override every glTF material's alpha mode.\n * @property {number[]} [rotation] Model Euler rotation [x,y,z] in radians, YXZ order.\n * @property {number[]} [scale] Model scale [x,y,z].\n * @property {string} [url] GLB/glTF model URL, PMTiles archive URL or supported COG URL.\n * @property {boolean} [doubleSided=false] Show raster/terrain surfaces from below.\n * @property {{x:number,y:number,radius:number,outside?:boolean}} [cutout] Raster screen-space circle in CSS pixels; outside keeps only the circle.\n * @property {function(Object): (ExtrusionStyle|null)} [style] Source styling; null skips a feature.\n * @property {function(PickedFeature): (Node|string)} [tooltip] Tooltip content; strings are text.\n * @property {string} [ariaLabel='3D scene'] Shared canvas accessible name.\n * @property {boolean} [nightLight=false] Point sources: emissive bulbs and local illumination.\n * @property {boolean} [nightSparkle=false] Model: sparse luminous points at night.\n *\n * @typedef {Object} ExtrusionStyle\n * @property {number} top Roof height in metres; must exceed bottom.\n * @property {number} [bottom=0] Nonnegative base height.\n * @property {number|string|Object} [color=0xd9b38c] RGB/CSS color or linear-space {h,s,l}.\n * @property {number} [trunkRadius] Point tree trunk radius in metres.\n * @property {number} [crownRadius] Point tree crown radius in metres.\n * @property {number} [crownBottom] Point tree crown base in metres.\n * @property {string} [crownShape='round'] Point tree crown shape.\n * @property {number|string|Object} [trunkColor=0x72513a] Point tree bark color.\n * @property {number} [lightRadius] Point light estimated ground reach in metres.\n * @property {number} [lightFlux] Point light luminous flux in lumens.\n *\n * @typedef {Object} PickedFeature\n * @property {string|number} id Source feature id or configured model URL.\n * @property {Object} properties GeoJSON properties or model-level glTF extras.\n * @property {Object} mesh Intersected mesh.\n * @property {number[]} point Intersection [x,y,z] in shared scene metres.\n * @property {Object} [model] Configured model root; absent for source polygons.\n * @property {number} [vertexStart] First polygon vertex in the batched mesh.\n * @property {number} [vertexEnd] Exclusive end of the polygon's vertex range.\n *\n * @typedef {Object} SourceArea\n * @property {Object} coords Archive block {z,x,y}.\n * @property {AbortController} request Cancellation prevents attaching obsolete results.\n * @property {boolean} [done] Geometry built successfully, including empty blocks.\n * @property {Object|null} [mesh] Batched GPU mesh.\n * @property {number} [buildings] Emitted feature count.\n * @property {number} [skipped] Features skipped by style.\n * @property {string} [error] Failed load/build message.\n *\n * @param {L.Layer} backend\n * @param {Layer3DOptions} [options] World origin comes from center or the first map centre.\n */\n\nL.Layer.include({\n initialize: layerInitialize,\n _layerAdd: layerLayerAdd,\n callInitHooks: layerCallInitHooks,\n});\n\nsharedRemoveLayer.value = L.Map.prototype.removeLayer;\nL.Map.include({ removeLayer, getPitch, getBearing });\nL.Marker.include({ setRotation });", "export const layerProto = { value: undefined };\n", "export const layerCallInitHooks = { value: undefined };\n", "export const removeLayer = { value: undefined };\n", "import { L } from '../globals/L.js';\nimport { mapMethods } from '../globals/mapMethods.js';\nimport { markerMethods } from '../globals/markerMethods.js';\nimport { popupEvents } from '../globals/popupEvents.js';\nimport { tooltipEvents } from '../globals/tooltipEvents.js';\nimport { popupPosition } from '../globals/popupPosition.js';\nimport { popupPan } from '../globals/popupPan.js';\nimport { tooltipPosition } from '../globals/tooltipPosition.js';\nimport { tiledBounds } from '../globals/tiledBounds.js';\nimport { gridEvents } from '../globals/gridEvents.js';\n\nimport { initNativeGPU } from '../core/initNativeGPU.js';\n\nimport { mapLayerPointToContainerPoint } from './mapLayerPointToContainerPoint.js';\nimport { mapContainerPointToLayerPoint } from './mapContainerPointToLayerPoint.js';\nimport { mapGetCenterLayerPoint } from './mapGetCenterLayerPoint.js';\nimport { mapPanBy } from './mapPanBy.js';\nimport { mapSetZoomAround } from './mapSetZoomAround.js';\nimport { mapPanInside } from './mapPanInside.js';\nimport { mapLimitCenter } from './mapLimitCenter.js';\nimport { mapLimitOffset } from './mapLimitOffset.js';\nimport { mapGetBoundsCenterZoom } from './mapGetBoundsCenterZoom.js';\nimport { mapGetBoundsZoom } from './mapGetBoundsZoom.js';\nimport { mapTryAnimatedPan } from './mapTryAnimatedPan.js';\nimport { mapGetBounds } from './mapGetBounds.js';\nimport { initializeCameraMap } from './initializeCameraMap.js';\nimport { markerSetIcon } from '../core/markerSetIcon.js';\nimport { markerGetEvents } from '../core/markerGetEvents.js';\nimport { markerSetPos } from '../core/markerSetPos.js';\nimport { markerUpdateZIndex } from '../core/markerUpdateZIndex.js';\nimport { markerInitInteraction } from '../core/markerInitInteraction.js';\nimport { popupGetEvents } from '../core/popupGetEvents.js';\nimport { tooltipGetEvents } from '../core/tooltipGetEvents.js';\nimport { popupAdjustPan } from '../core/popupAdjustPan.js';\nimport { popupUpdatePosition } from '../core/popupUpdatePosition.js';\nimport { tooltipSetPosition } from '../core/tooltipSetPosition.js';\nimport { gridlayerGetEvents } from '../core/gridlayerGetEvents.js';\nimport { gridlayerGetTiledPixelBounds } from '../core/gridlayerGetTiledPixelBounds.js';\n\nmapMethods.value = Object.defineProperties({}, Object.getOwnPropertyDescriptors(L.Map.prototype));\n\nL.Map.mergeOptions({\n rotate: true, bearing: 0, pitch: 0, maxPitch: 85, pitchMaxDistance: 3,\n rotateControl: true, shiftKeyRotate: true, pitchDrag: true,\n touchRotate: false, touchPitch: false, compassBearing: false,\n});\n\n// Ground coordinates only: the GPU camera handles elevated geometry, never CSS transforms.\n\nL.Map.include({\n layerPointToContainerPoint: mapLayerPointToContainerPoint,\n containerPointToLayerPoint: mapContainerPointToLayerPoint,\n _getCenterLayerPoint: mapGetCenterLayerPoint,\n panBy: mapPanBy,\n setZoomAround: mapSetZoomAround,\n panInside: mapPanInside,\n _limitCenter: mapLimitCenter,\n _limitOffset: mapLimitOffset,\n _getBoundsCenterZoom: mapGetBoundsCenterZoom,\n getBoundsZoom: mapGetBoundsZoom,\n _tryAnimatedPan: mapTryAnimatedPan,\n getBounds: mapGetBounds,\n});\n\nL.Map.addInitHook(initializeCameraMap);\n\nmarkerMethods.value = Object.defineProperties({}, Object.getOwnPropertyDescriptors(L.Marker.prototype));\nL.Marker.mergeOptions({ rotation: 0, rotateWithView: false, keepUpright: false, scale: 1 });\nL.Marker.include({\n setIcon: markerSetIcon,\n getEvents: markerGetEvents,\n _setPos: markerSetPos,\n _updateZIndex: markerUpdateZIndex,\n _initInteraction: markerInitInteraction,\n});\n\n// Keep Leaflet's focusable marker and its drag events; only translate its screen position back to ground.\n\npopupEvents.value = L.Popup.prototype.getEvents;\nL.Popup.include({\n getEvents: popupGetEvents,\n});\ntooltipEvents.value = L.Tooltip.prototype.getEvents;\nL.Tooltip.include({\n getEvents: tooltipGetEvents,\n});\npopupPosition.value = L.Popup.prototype._updatePosition;\npopupPan.value = L.Popup.prototype._adjustPan;\nL.Popup.include({\n _adjustPan: popupAdjustPan,\n _updatePosition: popupUpdatePosition,\n});\ntooltipPosition.value = L.Tooltip.prototype._setPosition;\nL.Tooltip.include({\n _setPosition: tooltipSetPosition,\n});\n\ntiledBounds.value = L.GridLayer.prototype._getTiledPixelBounds;\ngridEvents.value = L.GridLayer.prototype.getEvents;\nL.GridLayer.include({\n getEvents: gridlayerGetEvents,\n _getTiledPixelBounds: gridlayerGetTiledPixelBounds,\n});\n", "export const mapMethods = { value: undefined };\n", "export const markerMethods = { value: undefined };\n", "export const popupEvents = { value: undefined };\n", "export const tooltipEvents = { value: undefined };\n", "export const popupPosition = { value: undefined };\n", "export const popupPan = { value: undefined };\n", "export const tooltipPosition = { value: undefined };\n", "export const tiledBounds = { value: undefined };\n", "export const gridEvents = { value: undefined };\n", "export const sceneByLayer = new WeakMap();\n", "import { L } from '../globals/L.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\nimport { nativeMethodHandlers } from '../globals/nativeMethodHandlers.js';\nimport { nativeRenderByLayer } from '../globals/nativeRenderByLayer.js';\n\nimport { createLayer } from '../scene/createLayer.js';\n\n\nimport { createMesh } from '../rendering/createMesh.js';\nimport { destroyTexture } from '../rendering/destroyTexture.js';\nimport { disposeMesh } from '../rendering/disposeMesh.js';\nimport { nativeGeometry } from '../geometry/nativeGeometry.js';\nimport { nativeEvents } from './nativeEvents.js';\nimport { removeNativeEvents } from './removeNativeEvents.js';\nimport { parseColor } from '../utils/parseColor.js';\nimport { update } from '../scene/update.js';\n\nimport { current } from './current.js';\nimport { refreshNativeLayer } from './refreshNativeLayer.js';\nimport { refreshNativeEvent } from './refreshNativeEvent.js';\nimport { reorderNativeLayer } from './reorderNativeLayer.js';\nimport { nativeSetLatLng } from './nativeSetLatLng.js';\nimport { nativeSetLatLngs } from './nativeSetLatLngs.js';\nimport { nativeAddLatLng } from './nativeAddLatLng.js';\nimport { nativeSetRadius } from './nativeSetRadius.js';\nimport { nativeSetStyle } from './nativeSetStyle.js';\nimport { nativeRedraw } from './nativeRedraw.js';\nimport { nativeSetIcon } from './nativeSetIcon.js';\nimport { nativeSetUrl } from './nativeSetUrl.js';\nimport { nativeSetBounds } from './nativeSetBounds.js';\nimport { nativeSetOpacity } from './nativeSetOpacity.js';\nimport { nativeSetZIndex } from './nativeSetZIndex.js';\nimport { nativeSetZIndexOffset } from './nativeSetZIndexOffset.js';\nimport { nativeBringToFront } from './nativeBringToFront.js';\nimport { nativeBringToBack } from './nativeBringToBack.js';\nimport { disposeNativeLayer } from './disposeNativeLayer.js';\nimport { resolveNativeReady } from './resolveNativeReady.js';\nimport { rejectNativeReady } from './rejectNativeReady.js';\nimport { forwardNativeError } from './forwardNativeError.js';\nimport { updateNativeLayerView } from './updateNativeLayerView.js';\nimport { synchronizeNativeLayer } from './synchronizeNativeLayer.js';\nimport { beforeNativeRender } from './beforeNativeRender.js';\n\n/** Render from coordinates and detached raster sources; only accessible marker controls remain DOM. */\nexport async function nativeLayer(state) {\n const { source, map } = state;\n const backend = state.backend = createLayer(/* alloc */ {\n source: /* alloc */ { type: '3d' },\n });\n state.meshes = /* alloc */ new Map();\n state.textures = /* alloc */ new Map();\n state.methods = /* alloc */ new Map();\n state.originalMethods = /* alloc */ new Map();\n state.images = /* alloc */ new Set();\n cameraByMap.get(map)._nativeGPUOrder ||= 0;\n cameraByMap.get(map)._nativeGPUBack ||= 0;\n state.dirty = true;\n state.viewDirty = true;\n state.failed = false;\n state.order = ++cameraByMap.get(map)._nativeGPUOrder;\n state.marker = source instanceof L.Marker;\n state.paneOrder = Number(getComputedStyle(source.getPane()).zIndex) || 0;\n state.disposed = false;\n const currentEvents = 'load tileload tileunload move drag';\n source.on(currentEvents, refreshNativeEvent, state);\n map.on('zoomend', refreshNativeEvent, state);\n if (state.marker) map.on('move zoom rotate pitch resize viewreset', updateNativeLayerView, state);\n nativeEvents(state);\n let name, own, original;\n for (name in nativeMethodHandlers) {\n if (typeof source[name] !== 'function') continue;\n own = Object.getOwnPropertyDescriptor(source, name), original = source[name];\n state.methods.set(name, /* alloc */ { own, original });\n state.originalMethods.set(name, original);\n source[name] = nativeMethodHandlers[name];\n }\n const ready = state.ready = Promise.withResolvers();\n backend.once('ready', resolveNativeReady, state);\n backend.once('error', rejectNativeReady, state);\n backend.on('error', forwardNativeError, state);\n refreshNativeLayer(state);\n backend.addTo(map);\n try {\n await ready.promise;\n } catch (error) {\n disposeNativeLayer.call(state);\n throw error;\n }\n if (!current(state)) return source;\n\n nativeRenderByLayer.set(backend, state);\n try {\n synchronizeNativeLayer(state);\n } catch (error) {\n disposeNativeLayer.call(state);\n throw error;\n }\n update(state.backend);\n return source;\n}\n", "import { L } from '../globals/L.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\n\n\nimport { refreshNativeLayer } from './refreshNativeLayer.js';\n\nexport function nativeLayerMethod(name, source, args) {\n const state = sceneByLayer.get(source)._nativeGPU, original = state.originalMethods.get(name);\n const result = original.apply(source, args);\n let layer, zIndex;\n if ((name === 'bringToFront' || name === 'bringToBack') && source instanceof L.GridLayer) {\n let extreme = name === 'bringToFront' ? -Infinity : Infinity;\n for (layer of Object.values(state.map._layers)) {\n if (layer === source || !(layer instanceof L.GridLayer) || layer.getPane() !== source.getPane()) continue;\n zIndex = layer.options.zIndex || 0;\n extreme = name === 'bringToFront' ? Math.max(extreme, zIndex) : Math.min(extreme, zIndex);\n }\n const edge = name === 'bringToFront' ? extreme + 1 : extreme - 1;\n if (Number.isFinite(edge)) source.setZIndex(edge);\n }\n if (name === 'bringToFront') state.order = ++cameraByMap.get(state.map)._nativeGPUOrder;\n if (name === 'bringToBack') state.order = --cameraByMap.get(state.map)._nativeGPUBack;\n refreshNativeLayer(state);\n return result;\n}\n", "export const imageStates = new WeakMap();\n", "import { imageStates } from '../globals/imageStates.js';\n\n\nimport { refreshNativeLayer } from './refreshNativeLayer.js';\n\nexport function nativeImageRefresh(event) {\n const states = imageStates.get(event.currentTarget);\n if (!states) return;\n let state;\n for (state of states) refreshNativeLayer(state);\n}\n", "import { imageStates } from '../globals/imageStates.js';\n\n\nexport function nativeImageError(event) {\n const states = imageStates.get(event.currentTarget);\n if (!states) return;\n let state;\n for (state of states) {\n state.source.fire('error', /* alloc */ {\n error: /* alloc */ new Error('Unable to load native layer image'),\n });\n }\n}\n", "import { imageStates } from '../globals/imageStates.js';\n\n\nexport function removeImageState(image, state) {\r\n const states = imageStates.get(image);\r\n if (!states) return;\r\n states.delete(state);\r\n if (!states.size) imageStates.delete(image);\r\n}\n", "import { imageStates } from '../globals/imageStates.js';\n\r\n\r\nexport function addImageState(image, state) {\r\n let states = imageStates.get(image);\r\n if (!states) imageStates.set(image, states = /* alloc */ new Set());\r\n states.add(state);\r\n}\r\n", "export const pendingUpdates = new Set();\n", "export const frameCommands = [null];\n", "export const nativeRenderByLayer = new WeakMap();\n", "import { frameCommands } from '../globals/frameCommands.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { nativeRenderByLayer } from '../globals/nativeRenderByLayer.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\n\n\nimport { synchronizeZoomView } from './synchronizeZoomView.js';\nimport { resizeRenderer } from './resizeRenderer.js';\nimport { updateMapCamera } from './updateMapCamera.js';\nimport { collectFrameMeshes } from './collectFrameMeshes.js';\nimport { updateRoofRaster } from './updateRoofRaster.js';\nimport { prepareFrameMeshes } from './prepareFrameMeshes.js';\nimport { prepareFrameUniforms } from './prepareFrameUniforms.js';\nimport { drawSceneMeshes } from './drawSceneMeshes.js';\nimport { updateWorldMatrix } from \"../scene/updateWorldMatrix.js\";\nimport { renderSunlight } from '../shadows/renderSunlight.js';\nimport { cancelUpdate } from '../scene/cancelUpdate.js';\nimport { update } from '../scene/update.js';\nimport { pruneRasterTiles } from '../raster/pruneRasterTiles.js';\nimport { beforeNativeRender } from '../core/beforeNativeRender.js';\n\n/**\n * Rendering owner: CSS pixels -> scene metres -> perspective camera.\n * Lights and transparent sort centers are converted into the current camera space.\n * Without raster tiles, logical map projection supplies the same static alignment.\n */\n\nexport function render(backend) {\n cancelUpdate(backend);\n if (sceneByLayer.get(backend)._shared !== backend || !sceneByLayer.get(backend).renderer) return;\n const map = backend._map;\n const now = performance.now();\n const size = map.getSize();\n if (!size.x || !size.y) return;\n synchronizeZoomView(backend, now);\n resizeRenderer(backend, size);\n updateMapCamera(backend, size);\n updateWorldMatrix(sceneByLayer.get(backend).scene);\n let sceneChanged = false;\n let layer, native;\n for (layer of sceneByLayer.get(backend)._layers) {\n native = nativeRenderByLayer.get(layer);\n if (!native) continue;\n beforeNativeRender(native);\n sceneChanged = true;\n }\n const sunlight = cameraByMap.get(map)._sunlight;\n collectFrameMeshes(backend, sunlight, sceneChanged);\n const shadowMeshes = sceneByLayer.get(backend)._shadowMeshes;\n const renderer = sceneByLayer.get(backend).renderer;\n const rasters = updateRoofRaster(backend, now);\n const meshes = renderer.frameMeshes ||= /* alloc */ [];\n meshes.length = 0;\n let appearing = prepareFrameMeshes(backend, rasters, now, meshes);\n const encoder = renderer.device.createCommandEncoder();\n prepareFrameUniforms(backend, meshes, shadowMeshes, sunlight);\n renderSunlight(backend, encoder, shadowMeshes, sunlight);\n drawSceneMeshes(backend, encoder, meshes);\n renderer.device.queue.writeBuffer(renderer.uniformBuffer, 0, renderer.uniformData, 0, renderer.uniformSlot * 64);\n renderer.device.queue.submit((\n frameCommands[0] = encoder.finish(),\n frameCommands\n ));\n frameCommands[0] = null;\n for (layer of sceneByLayer.get(backend)._layers) {\n if (sceneByLayer.get(layer)._wantedRasterTiles) appearing = pruneRasterTiles(layer) || appearing;\n }\n if (map._animatingZoom || appearing) update(backend);\n}\n", "export const meshStack = {\n subtree: true\n};\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { cameraByMap } from '../globals/cameraByMap.js';\r\nimport { mapUpdateCameraOverlays } from '../camera/mapUpdateCameraOverlays.js';\r\n\r\nexport function updateZoomCamera(backend, now) {\r\n const map = backend._map;\r\n const view = sceneByLayer.get(backend)._zoomView;\r\n let proxy, animation;\r\n for (animation of sceneByLayer.get(backend)._zoomTransitions.keys()) {\r\n if (animation.effect.target === map._proxy) { proxy = animation; break; }\r\n }\r\n const progress = proxy?.effect.getComputedTiming().progress ?? Math.min(1, (now - view.start) / 250);\r\n const targetScale = map.getZoomScale(view.targetZoom, view.zoom), scale = 1 + (targetScale - 1) * progress;\r\n const from = map.project(view.from, view.zoom), to = map.project(view.to, view.zoom);\r\n cameraByMap.get(map)._cameraView = /* alloc */ { zoom: map.getScaleZoom(scale, view.zoom),\r\n center: map.unproject(from.add(to.subtract(from).multiplyBy(targetScale * progress / scale)), view.zoom) };\r\n mapUpdateCameraOverlays(map);\r\n}\r\n", "import { L } from '../globals/L.js';\nexport function mapUpdateCameraOverlays(map) {\n let layer;\n for (layer of Object.values(map._layers)) {\n if (layer instanceof L.Marker) layer.update();\n else if (layer instanceof L.Popup || layer instanceof L.Tooltip) layer._updatePosition();\n }\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { meshStack } from '../globals/meshStack.js';\nimport { updateZoomCamera } from './updateZoomCamera.js';\n\nexport function synchronizeZoomView(backend, now) {\n const map = backend._map;\n let animation, time, start;\n if (map._animatingZoom) {\n sceneByLayer.get(backend)._zoomTransitions ||= /* alloc */ new Map();\n for (animation of map.getContainer().getAnimations(meshStack)) {\n if (!(animation instanceof CSSTransition) || animation.transitionProperty !== 'transform' ||\n !animation.effect.target.classList.contains('leaflet-zoom-animated') ||\n sceneByLayer.get(backend)._zoomTransitions.has(animation)) {\n continue;\n }\n time = animation.currentTime || 0;\n animation.pause();\n sceneByLayer.get(backend)._zoomTransitions.set(animation, /* alloc */ { start: now, time });\n }\n // Freeze CSS between rendered frames: the compositor must not outrun the canvas.\n for ([animation, { start, time }] of sceneByLayer.get(backend)._zoomTransitions) {\n animation.currentTime = Math.min(animation.effect.getComputedTiming().endTime, time + now - start);\n }\n if (sceneByLayer.get(backend)._zoomView) updateZoomCamera(backend, now);\n }\n}\n", "export const depthTexture = {\n size: [null, null],\n format: 'depth24plus',\n usage: null\n};\n", "export async function destroyAfterSubmission(layer, texture, submitted) {\n try {\n await submitted;\n } catch (error) {\n layer.fire('error', /* alloc */ { error });\n }\n texture.destroy();\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\n\nimport { destroyAfterSubmission } from './destroyAfterSubmission.js';\n\nexport function destroyTexture(layer, texture) {\n destroyAfterSubmission(layer, texture, sceneByLayer.get(layer).renderer.device.queue.onSubmittedWorkDone());\n}\n", "import { depthTexture as sharedDepthTexture } from '../globals/depthTexture.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { destroyTexture } from './destroyTexture.js';\n\nexport function resizeRenderer(backend, size) {\n if (!sceneByLayer.get(backend)._size || !sceneByLayer.get(backend)._size.equals(size)) {\n sceneByLayer.get(backend).renderer.width = size.x;\n sceneByLayer.get(backend).renderer.height = size.y;\n sceneByLayer.get(backend).renderer.canvas.width = Math.round(size.x * sceneByLayer.get(backend).renderer.dpr);\n sceneByLayer.get(backend).renderer.canvas.height = Math.round(size.y * sceneByLayer.get(backend).renderer.dpr);\n sceneByLayer.get(backend).renderer.canvas.style.width = `${size.x}px`;\n sceneByLayer.get(backend).renderer.canvas.style.height = `${size.y}px`;\n if (sceneByLayer.get(backend).renderer.depthTexture) destroyTexture(backend, sceneByLayer.get(backend).renderer.depthTexture);\n sceneByLayer.get(backend).renderer.depthTexture = sceneByLayer.get(backend).renderer.device.createTexture((\n sharedDepthTexture.size[0] = sceneByLayer.get(backend).renderer.canvas.width,\n sharedDepthTexture.size[1] = sceneByLayer.get(backend).renderer.canvas.height,\n sharedDepthTexture.usage = GPUTextureUsage.RENDER_ATTACHMENT,\n sharedDepthTexture\n ));\n sceneByLayer.get(backend)._size = size;\n }\n}\n", "import { radians } from '../globals/radians.js';\nimport { cameraFov } from '../globals/cameraFov.js';\nimport { earthCirc } from '../globals/earthCirc.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { mapMethods } from '../globals/mapMethods.js';\nimport { walkByMap } from '../globals/walkByMap.js';\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\n\nimport { updateCamera } from \"../scene/updateCamera.js\";\nimport { getElevation } from \"../terrain/getElevation.js\";\n\nimport { animationPoint } from '../camera/animationPoint.js';\n\nexport function updateMapCamera(backend, size) {\n const map = backend._map;\n // Match the map's perspective, including the intermediate view of an animated zoom.\n const zoom = cameraByMap.get(map)._cameraView?.zoom ?? map.getZoom();\n const pixelsPerMeter = map.options.crs.scale(zoom) / (earthCirc * Math.cos(sceneByLayer.get(backend)._sceneOrigin.lat * radians));\n const origin = animationPoint(map, mapMethods.value.layerPointToContainerPoint.call(map,\n map.project(sceneByLayer.get(backend)._sceneOrigin).subtract(map.getPixelOrigin())));\n const distance = size.y * 1.5 / pixelsPerMeter;\n const targetX = (size.x / 2 - origin.x) / pixelsPerMeter;\n // CSS zoom keeps the logical view's ground plane until zoomend.\n const walker = walkByMap.get(map)?.control?._walk;\n const targetY = ((cameraByMap.get(map)._terrain3D ? getElevation(cameraByMap.get(map)._terrain3D, map.getCenter()): undefined) ?? 0) +\n (walker?.saved ? walker.state.height : 0);\n const targetZ = (size.y / 2 - origin.y) / pixelsPerMeter;\n const pitch = mapGetPitch(map) * radians;\n const bearing = mapGetBearing(map) * radians;\n const camera = sceneByLayer.get(backend).camera;\n camera.fov = cameraFov;\n camera.aspect = size.x / size.y;\n camera.near = Math.max(0.1, distance / 10000);\n camera.far = Math.max(10000, distance * 10);\n camera.position[0] = targetX + Math.sin(bearing) * Math.sin(pitch) * distance;\n camera.position[1] = targetY + Math.cos(pitch) * distance;\n camera.position[2] = targetZ + Math.cos(bearing) * Math.sin(pitch) * distance;\n camera.up[0] = -Math.sin(bearing) * Math.cos(pitch);\n camera.up[1] = Math.sin(pitch);\n camera.up[2] = -Math.cos(bearing) * Math.cos(pitch);\n camera.target[0] = targetX; camera.target[1] = targetY; camera.target[2] = targetZ;\n // Refresh the camera view, projection and combined projection-view matrices.\n updateCamera(camera);\n}\n", "import { degrees } from './degrees.js';\r\n\r\nexport const cameraFov = 2 * Math.atan(1 / 3) * degrees;\r\n", "export const earthCirc = 2 * Math.PI * 6378137;\r\n", "export const walkByMap = new WeakMap();\r\n", "export const halfRadians = Math.PI / 360;\r\n", "import { halfRadians } from '../globals/halfRadians.js';\n/** Orthonormal view basis plus perspective matrices, refreshed before projecting/drawing. */\n\nexport function updateCamera(camera) {\n camera.x ||= /* alloc */ [0, 0, 0];\n camera.y ||= /* alloc */ [0, 0, 0];\n camera.z ||= /* alloc */ [0, 0, 0];\n camera.viewTransform ||= /* alloc */ new DOMMatrix();\n camera.projectionTransform ||= /* alloc */ new DOMMatrix();\n camera.projectionViewTransform ||= /* alloc */ new DOMMatrix();\n const { position, target, up, x, y, z, viewMatrix, projectionMatrix, projectionViewMatrix } = camera;\n let i, value;\n z[0] = position[0] - target[0], z[1] = position[1] - target[1], z[2] = position[2] - target[2];\n const zLength = Math.hypot(z[0], z[1], z[2]) || 1;\n z[0] /= zLength, z[1] /= zLength, z[2] /= zLength;\n x[0] = up[1] * z[2] - up[2] * z[1];\n x[1] = up[2] * z[0] - up[0] * z[2];\n x[2] = up[0] * z[1] - up[1] * z[0];\n const xLength = Math.hypot(x[0], x[1], x[2]) || 1;\n x[0] /= xLength, x[1] /= xLength, x[2] /= xLength;\n y[0] = z[1] * x[2] - z[2] * x[1];\n y[1] = z[2] * x[0] - z[0] * x[2];\n y[2] = z[0] * x[1] - z[1] * x[0];\n const viewTransform = camera.viewTransform;\n viewTransform.m11 = x[0], viewTransform.m12 = x[1], viewTransform.m13 = x[2], viewTransform.m14 = 0;\n viewTransform.m21 = y[0], viewTransform.m22 = y[1], viewTransform.m23 = y[2], viewTransform.m24 = 0;\n viewTransform.m31 = z[0], viewTransform.m32 = z[1], viewTransform.m33 = z[2], viewTransform.m34 = 0;\n viewTransform.m41 = position[0], viewTransform.m42 = position[1], viewTransform.m43 = position[2], viewTransform.m44 = 1;\n viewTransform.invertSelf();\n viewMatrix[0] = viewTransform.m11, viewMatrix[1] = viewTransform.m12, viewMatrix[2] = viewTransform.m13, viewMatrix[3] = viewTransform.m14;\n viewMatrix[4] = viewTransform.m21, viewMatrix[5] = viewTransform.m22, viewMatrix[6] = viewTransform.m23, viewMatrix[7] = viewTransform.m24;\n viewMatrix[8] = viewTransform.m31, viewMatrix[9] = viewTransform.m32, viewMatrix[10] = viewTransform.m33, viewMatrix[11] = viewTransform.m34;\n viewMatrix[12] = viewTransform.m41, viewMatrix[13] = viewTransform.m42, viewMatrix[14] = viewTransform.m43, viewMatrix[15] = viewTransform.m44;\n for (value of viewMatrix) {\n if (!Number.isFinite(value)) throw /* alloc */ new Error('Singular 3D transform');\n }\n const f = 1 / Math.tan(camera.fov * halfRadians), n = camera.near, r = camera.far;\n projectionMatrix[0] = f / camera.aspect, projectionMatrix[1] = 0, projectionMatrix[2] = 0, projectionMatrix[3] = 0;\n projectionMatrix[4] = 0, projectionMatrix[5] = f, projectionMatrix[6] = 0, projectionMatrix[7] = 0;\n projectionMatrix[8] = 0, projectionMatrix[9] = 0, projectionMatrix[10] = r / (n - r), projectionMatrix[11] = -1;\n projectionMatrix[12] = 0, projectionMatrix[13] = 0, projectionMatrix[14] = r * n / (n - r), projectionMatrix[15] = 0;\n const projectionTransform = camera.projectionTransform;\n projectionTransform.m11 = projectionMatrix[0], projectionTransform.m12 = projectionMatrix[1], projectionTransform.m13 = projectionMatrix[2], projectionTransform.m14 = projectionMatrix[3];\n projectionTransform.m21 = projectionMatrix[4], projectionTransform.m22 = projectionMatrix[5], projectionTransform.m23 = projectionMatrix[6], projectionTransform.m24 = projectionMatrix[7];\n projectionTransform.m31 = projectionMatrix[8], projectionTransform.m32 = projectionMatrix[9], projectionTransform.m33 = projectionMatrix[10], projectionTransform.m34 = projectionMatrix[11];\n projectionTransform.m41 = projectionMatrix[12], projectionTransform.m42 = projectionMatrix[13], projectionTransform.m43 = projectionMatrix[14], projectionTransform.m44 = projectionMatrix[15];\n const combined = camera.projectionViewTransform;\n combined.m11 = projectionTransform.m11, combined.m12 = projectionTransform.m12, combined.m13 = projectionTransform.m13, combined.m14 = projectionTransform.m14;\n combined.m21 = projectionTransform.m21, combined.m22 = projectionTransform.m22, combined.m23 = projectionTransform.m23, combined.m24 = projectionTransform.m24;\n combined.m31 = projectionTransform.m31, combined.m32 = projectionTransform.m32, combined.m33 = projectionTransform.m33, combined.m34 = projectionTransform.m34;\n combined.m41 = projectionTransform.m41, combined.m42 = projectionTransform.m42, combined.m43 = projectionTransform.m43, combined.m44 = projectionTransform.m44;\n combined.multiplySelf(viewTransform);\n projectionViewMatrix[0] = combined.m11, projectionViewMatrix[1] = combined.m12, projectionViewMatrix[2] = combined.m13, projectionViewMatrix[3] = combined.m14;\n projectionViewMatrix[4] = combined.m21, projectionViewMatrix[5] = combined.m22, projectionViewMatrix[6] = combined.m23, projectionViewMatrix[7] = combined.m24;\n projectionViewMatrix[8] = combined.m31, projectionViewMatrix[9] = combined.m32, projectionViewMatrix[10] = combined.m33, projectionViewMatrix[11] = combined.m34;\n projectionViewMatrix[12] = combined.m41, projectionViewMatrix[13] = combined.m42, projectionViewMatrix[14] = combined.m43, projectionViewMatrix[15] = combined.m44;\n}\n", "import { L } from '../globals/L.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { bridgeElevation } from '../geometry/bridgeElevation.js';\nimport { terrainElevation } from './terrainElevation.js';\n\n/** @param {L.LatLng|L.Point} location LatLng, or a pixel point at the terrain zoom. */\n\nexport function getElevation(backend, location) {\n if (!backend._map || !sceneByLayer.get(backend)._terrainReady) return null;\n const point = location instanceof L.Point ? location : backend._map.project(location, sceneByLayer.get(backend)._terrainZoom);\n return bridgeElevation(point, sceneByLayer.get(backend)._bridges) ?? terrainElevation(point, sceneByLayer.get(backend)._terrainTiles);\n}\n", "/** Height inside a bridge deck, or null outside its triangles. */\nexport function bridgeElevation(point, bridges) {\n // Bridges bucketed by 64 DEM pixels.\n const bucket = bridges?.get(`${Math.floor(point.x / 64)}/${Math.floor(point.y / 64)}`);\n if (!bucket) return null;\n let bridge, a, b, c, d, u, v;\n for (bridge of bucket) {\n if (point.x < bridge.min[0] || point.x > bridge.max[0] || point.y < bridge.min[1] || point.y > bridge.max[1]) {\n continue;\n }\n for ([a, b, c] of bridge.triangles) {\n d = (b[1] - c[1]) * (a[0] - c[0]) + (c[0] - b[0]) * (a[1] - c[1]);\n u = ((b[1] - c[1]) * (point.x - c[0]) + (c[0] - b[0]) * (point.y - c[1])) / d;\n v = ((c[1] - a[1]) * (point.x - c[0]) + (a[0] - c[0]) * (point.y - c[1])) / d;\n if (u >= 0 && v >= 0 && u + v <= 1) {\n return u * a[2] + v * b[2] + (1 - u - v) * c[2];\n }\n }\n }\n return null;\n}\n", "export function sample(tiles, px, py) {\r\n const tileX = Math.floor(px / 256), tileY = Math.floor(py / 256);\r\n const tile = tiles.get(`${tileX}/${tileY}`);\r\n if (!tile) return null;\r\n const elevation = tile[(py - tileY * 256) * 256 + px - tileX * 256];\r\n return Number.isFinite(elevation) && elevation > -1000 ? elevation : null;\r\n}\r\n", "import { sample } from './sample.js';\n\n/** Bilinear DEM sampling, with the original first-valid-neighbour no-data rule. */\n\nexport function terrainElevation(point, tiles) {\n const x = point.x - 0.5, y = point.y - 0.5;\n const x0 = Math.floor(x), y0 = Math.floor(y);\n const fx = x - x0, fy = y - y0;\n const a = sample(tiles, x0, y0), b = sample(tiles, x0 + 1, y0);\n const c = sample(tiles, x0, y0 + 1), d = sample(tiles, x0 + 1, y0 + 1);\n if (!Number.isFinite(a) || !Number.isFinite(b) || !Number.isFinite(c) || !Number.isFinite(d)) {\n return Number.isFinite(a) ? a : Number.isFinite(b) ? b : Number.isFinite(c) ? c : Number.isFinite(d) ? d : null;\n }\n return (a * (1 - fx) + b * fx) * (1 - fy) + (c * (1 - fx) + d * fx) * fy;\n}\n", "import { cameraByMap } from '../globals/cameraByMap.js';\n\n\nexport function animationPoint(map, point, inverse = false) {\r\n const view = cameraByMap.get(map)._cameraView;\r\n if (!view) return point;\r\n const half = map.getSize().divideBy(2), scale = map.getZoomScale(view.zoom);\r\n const shift = map.project(map.getCenter(), view.zoom).subtract(map.project(view.center, view.zoom));\r\n return inverse ? point.subtract(half).subtract(shift).divideBy(scale).add(half) :\r\n point.subtract(half).multiplyBy(scale).add(shift).add(half);\r\n}\n", "export function worldMatrixChanged(node, changed) {\r\n let i, value;\r\n if (node.matrix) {\r\n const state = node._matrixState ||= /* alloc */ new Float64Array(16);\r\n for (i = 0; i < 16; i++) {\r\n if (state[i] !== node.matrix[i]) changed = true;\r\n state[i] = node.matrix[i];\r\n }\r\n } else {\r\n const state = node._transformState ||= /* alloc */ new Float64Array(9);\r\n for (i = 0; i < 9; i++) {\r\n value = i < 3 ? node.position[i] : i < 6 ? node.rotation[i - 3] : node.scale[i - 6];\r\n if (state[i] !== value) changed = true;\r\n state[i] = value;\r\n }\r\n }\r\n return changed;\r\n}\r\n", "import { degrees } from '../globals/degrees.js';\r\n\r\nexport function composeLocalTransform(node) {\r\n const matrix = node._localTransform ||= /* alloc */ new DOMMatrix();\r\n matrix.m11 = 1, matrix.m12 = 0, matrix.m13 = 0, matrix.m14 = 0;\r\n matrix.m21 = 0, matrix.m22 = 1, matrix.m23 = 0, matrix.m24 = 0;\r\n matrix.m31 = 0, matrix.m32 = 0, matrix.m33 = 1, matrix.m34 = 0;\r\n matrix.m41 = 0, matrix.m42 = 0, matrix.m43 = 0, matrix.m44 = 1;\r\n matrix.translateSelf(node.position[0], node.position[1], node.position[2]);\r\n // Node rotations use YXZ, as did the previous renderer.\r\n matrix.rotateAxisAngleSelf(0, 1, 0, node.rotation[1] * degrees);\r\n matrix.rotateAxisAngleSelf(1, 0, 0, node.rotation[0] * degrees);\r\n matrix.rotateAxisAngleSelf(0, 0, 1, node.rotation[2] * degrees);\r\n matrix.scaleSelf(node.scale[0], node.scale[1], node.scale[2]);\r\n return matrix;\r\n}\r\n", "import { worldMatrixChanged } from './worldMatrixChanged.js';\nimport { composeLocalTransform } from './composeLocalTransform.js';\n\n/** Compose parent*local matrices; a node.matrix overrides its position/rotation/scale. */\n\nexport function updateWorldMatrix(node) {\n const parent = node.parent;\n const parentVersion = parent?._worldMatrixVersion || 0;\n const matrixMode = Boolean(node.matrix);\n let changed = node._worldParent !== parent || node._parentWorldVersion !== parentVersion ||\n node._worldMatrixMode !== matrixMode;\n let child;\n changed = worldMatrixChanged(node, changed);\n if (!changed) {\n for (child of node.children) updateWorldMatrix(child);\n return;\n }\n let local, world;\n if (node.matrix) local = node.matrix;\n else local = composeLocalTransform(node);\n world = node._worldTransform ||= /* alloc */ new DOMMatrix();\n if (local instanceof DOMMatrix) {\n world.m11 = local.m11, world.m12 = local.m12, world.m13 = local.m13, world.m14 = local.m14;\n world.m21 = local.m21, world.m22 = local.m22, world.m23 = local.m23, world.m24 = local.m24;\n world.m31 = local.m31, world.m32 = local.m32, world.m33 = local.m33, world.m34 = local.m34;\n world.m41 = local.m41, world.m42 = local.m42, world.m43 = local.m43, world.m44 = local.m44;\n } else {\n world.m11 = local[0], world.m12 = local[1], world.m13 = local[2], world.m14 = local[3];\n world.m21 = local[4], world.m22 = local[5], world.m23 = local[6], world.m24 = local[7];\n world.m31 = local[8], world.m32 = local[9], world.m33 = local[10], world.m34 = local[11];\n world.m41 = local[12], world.m42 = local[13], world.m43 = local[14], world.m44 = local[15];\n }\n if (parent) world.preMultiplySelf(parent._worldTransform);\n node.worldMatrix[0] = world.m11, node.worldMatrix[1] = world.m12, node.worldMatrix[2] = world.m13, node.worldMatrix[3] = world.m14;\n node.worldMatrix[4] = world.m21, node.worldMatrix[5] = world.m22, node.worldMatrix[6] = world.m23, node.worldMatrix[7] = world.m24;\n node.worldMatrix[8] = world.m31, node.worldMatrix[9] = world.m32, node.worldMatrix[10] = world.m33, node.worldMatrix[11] = world.m34;\n node.worldMatrix[12] = world.m41, node.worldMatrix[13] = world.m42, node.worldMatrix[14] = world.m43, node.worldMatrix[15] = world.m44;\n node._worldParent = parent;\n node._parentWorldVersion = parentVersion;\n node._worldMatrixMode = matrixMode;\n node._worldMatrixVersion = (node._worldMatrixVersion || 0) + 1;\n for (child of node.children) updateWorldMatrix(child);\n}\n", "/** Cache local AABB and center for ray picking and transparent mesh sorting. */\n\nexport function computeBounds(geometry) {\n const min = /* alloc */ [Infinity, Infinity, Infinity];\n const max = /* alloc */ [-Infinity, -Infinity, -Infinity];\n const data = geometry.attributes.position.data;\n let i;\n for (i = 0; i < data.length; i++) {\n min[i % 3] = Math.min(min[i % 3], data[i]);\n max[i % 3] = Math.max(max[i % 3], data[i]);\n }\n const instances = geometry.attributes.instanceOffset;\n if (instances) {\n let axis, offset, low, high;\n for (axis = 0; axis < 3; axis++) {\n low = Infinity;\n high = -Infinity;\n for (offset = axis; offset < instances.data.length; offset += instances.size) {\n low = Math.min(low, instances.data[offset]);\n high = Math.max(high, instances.data[offset]);\n }\n min[axis] = Math.fround(min[axis] + low);\n max[axis] = Math.fround(max[axis] + high);\n }\n }\n const center = /* alloc */ [\n (min[0] + max[0]) / 2,\n (min[1] + max[1]) / 2,\n (min[2] + max[2]) / 2,\n ];\n let radius = instances ? Math.hypot(max[0] - min[0], max[1] - min[1], max[2] - min[2]) / 2 : 0;\n for (i = 0; !instances && i < data.length; i += 3) {\n radius = Math.max(radius, Math.hypot(\n data[i] - center[0], data[i + 1] - center[1], data[i + 2] - center[2]\n ));\n }\n geometry.bounds = /* alloc */ { min, max, center, radius };\n}\n", "import { computeBounds } from '../geometry/computeBounds.js';\r\n\r\nexport function collectVisibleMesh(mesh, projection, frustum, frustumLengths, candidates) {\r\n if (!mesh.geometry.bounds) computeBounds(mesh.geometry);\r\n const bounds = mesh.geometry.bounds;\r\n const world = mesh.worldMatrix;\r\n const center = bounds.center;\r\n const x = world[0] * center[0] + world[4] * center[1] + world[8] * center[2] + world[12];\r\n const y = world[1] * center[0] + world[5] * center[1] + world[9] * center[2] + world[13];\r\n const z = world[2] * center[0] + world[6] * center[1] + world[10] * center[2] + world[14];\r\n const clipZ = projection[2] * x + projection[6] * y + projection[10] * z + projection[14];\r\n const clipW = projection[3] * x + projection[7] * y + projection[11] * z + projection[15];\r\n mesh._sortDepth = clipZ / clipW;\r\n const radius = bounds.radius * Math.max(\r\n Math.hypot(world[0], world[1], world[2]),\r\n Math.hypot(world[4], world[5], world[6]),\r\n Math.hypot(world[8], world[9], world[10])\r\n );\r\n mesh._visibleInFrame =\r\n frustum[0][0] * x + frustum[0][1] * y + frustum[0][2] * z + frustum[0][3] >= -radius * frustumLengths[0] &&\r\n frustum[1][0] * x + frustum[1][1] * y + frustum[1][2] * z + frustum[1][3] >= -radius * frustumLengths[1] &&\r\n frustum[2][0] * x + frustum[2][1] * y + frustum[2][2] * z + frustum[2][3] >= -radius * frustumLengths[2] &&\r\n frustum[3][0] * x + frustum[3][1] * y + frustum[3][2] * z + frustum[3][3] >= -radius * frustumLengths[3] &&\r\n frustum[4][0] * x + frustum[4][1] * y + frustum[4][2] * z + frustum[4][3] >= -radius * frustumLengths[4] &&\r\n frustum[5][0] * x + frustum[5][1] * y + frustum[5][2] * z + frustum[5][3] >= -radius * frustumLengths[5];\r\n if (mesh._visibleInFrame) candidates.push(mesh);\r\n}\r\n", "import { collectVisibleMesh } from './collectVisibleMesh.js';\n\nexport function collectMeshes(mesh, sunlight, projection, frustum, frustumLengths, candidates, shadowMeshes) {\n if (!mesh.visible) return;\n if (mesh.geometry) {\n if (sunlight?.altitude >= 3 && !mesh.tile && mesh._appearance !== 0 &&\n !mesh.program.nightLight && mesh.program.depthTest !== false) shadowMeshes.push(mesh);\n collectVisibleMesh(mesh, projection, frustum, frustumLengths, candidates);\n }\n let child;\n for (child of mesh.children) {\n collectMeshes(child, sunlight, projection, frustum, frustumLengths, candidates, shadowMeshes);\n }\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { updateWorldMatrix } from \"../scene/updateWorldMatrix.js\";\nimport { collectMeshes } from './collectMeshes.js';\n\nexport function collectFrameMeshes(backend, sunlight, sceneChanged) {\n const camera = sceneByLayer.get(backend).camera;\n const projection = camera.projectionViewMatrix;\n const renderer = sceneByLayer.get(backend).renderer;\n const frustum = renderer.frustum ||= /* alloc */ [\n /* alloc */ new Float64Array(4),\n /* alloc */ new Float64Array(4),\n /* alloc */ new Float64Array(4),\n /* alloc */ new Float64Array(4),\n /* alloc */ new Float64Array(4),\n /* alloc */ new Float64Array(4),\n ];\n const frustumLengths = renderer.frustumLengths ||= /* alloc */ new Float64Array(6);\n let i, axis, plane, j, offset;\n for (i = 0; i < 6; i++) {\n axis = Math.floor(i / 2);\n plane = frustum[i];\n for (j = 0; j < 4; j++) {\n offset = j * 4;\n plane[j] = i === 4 ? projection[offset + 2]\n : i % 2 ? projection[offset + 3] - projection[offset + axis]\n : projection[offset + 3] + projection[offset + axis];\n }\n frustumLengths[i] = Math.hypot(plane[0], plane[1], plane[2]);\n }\n const candidates = sceneByLayer.get(backend)._visibleMeshes ||= /* alloc */ [];\n candidates.length = 0;\n const shadowMeshes = sceneByLayer.get(backend)._shadowMeshes ||= /* alloc */ [];\n shadowMeshes.length = 0;\n if (sceneChanged) updateWorldMatrix(sceneByLayer.get(backend).scene);\n collectMeshes(sceneByLayer.get(backend).scene, sunlight, projection, frustum, frustumLengths, candidates, shadowMeshes);\n}\n", "import { L } from '../globals/L.js';\r\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { roofSignatures } from '../globals/roofSignatures.js';\r\nimport { rebuildRoofAtlas } from './rebuildRoofAtlas.js';\r\n\r\nexport function updateRoofAtlas(backend, rasters, now) {\r\n const signatures = roofSignatures;\r\n signatures.length = 0;\r\n let loading = false, layer;\r\n for (layer of rasters) {\r\n signatures.push(`${L.Util.stamp(layer)}:${sceneByLayer.get(layer)._rasterVersion || 0}:${layer.options.opacity}:${layer.options.zIndex}`);\r\n loading ||= Boolean(sceneByLayer.get(layer)._loadingTiles);\r\n }\r\n const signature = signatures.join('|');\r\n signatures.length = 0;\r\n if (!sceneByLayer.get(backend)._roofRaster || sceneByLayer.get(backend)._roofRaster.signature !== signature &&\r\n (!loading || now - sceneByLayer.get(backend)._roofRaster.updatedAt >= 50)) {\r\n rebuildRoofAtlas(backend, rasters, signature, now);\r\n }\r\n}\r\n", "export const roofSignatures = [];\n", "import { radians } from '../globals/radians.js';\nimport { earthCirc } from '../globals/earthCirc.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { roofTiles } from '../globals/roofTiles.js';\nimport { TILE_SIZE } from '../globals/TILE_SIZE.js';\nimport { roofMin } from '../globals/roofMin.js';\nimport { roofSize } from '../globals/roofSize.js';\n\n\nimport { ensureRoofBlit } from './ensureRoofBlit.js';\nimport { composeRoofAtlas } from './composeRoofAtlas.js';\nimport { collectRoofTiles } from './collectRoofTiles.js';\nimport { resizeRoofTexture } from './resizeRoofTexture.js';\n\nexport function rebuildRoofAtlas(backend, rasters, signature, now) {\n const map = backend._map, renderer = sceneByLayer.get(backend).renderer;\n const tiles = roofTiles;\n tiles.length = 0;\n let zoom = collectRoofTiles(rasters, tiles);\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n let coords, tileSize;\n if (!tiles.length) zoom = map.getZoom();\n for ({ tile: { coords } } of tiles) {\n tileSize = TILE_SIZE * map.getZoomScale(zoom, coords.z);\n minX = Math.min(minX, coords.x * tileSize); minY = Math.min(minY, coords.y * tileSize);\n maxX = Math.max(maxX, (coords.x + 1) * tileSize); maxY = Math.max(maxY, (coords.y + 1) * tileSize);\n }\n const origin = map.project(sceneByLayer.get(backend)._sceneOrigin, zoom);\n const min = roofMin, size = roofSize;\n min.x = tiles.length ? minX : origin.x; min.y = tiles.length ? minY : origin.y;\n size.x = tiles.length ? maxX - minX : 1; size.y = tiles.length ? maxY - minY : 1;\n // ponytail: cap at 4096 px; virtual textures if wide views need native detail.\n const scale = Math.min(1, 4096 / Math.max(size.x, size.y));\n const width = Math.max(1, Math.ceil(size.x * scale)), height = Math.max(1, Math.ceil(size.y * scale));\n const pixels = map.options.crs.scale(zoom) / (earthCirc * Math.cos(sceneByLayer.get(backend)._sceneOrigin.lat * radians));\n const roof = /* alloc */ {\n matrix: /* alloc */ [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\n texture: sceneByLayer.get(backend)._roofRaster?.texture,\n };\n sceneByLayer.get(backend)._roofRaster = roof;\n roof.signature = signature; roof.updatedAt = now;\n roof.matrix[0] = pixels / size.x; roof.matrix[10] = pixels / size.y;\n roof.matrix[12] = (origin.x - min.x) / size.x; roof.matrix[14] = (origin.y - min.y) / size.y;\n resizeRoofTexture(backend, roof, width, height);\n // Compose the atlas on the GPU: re-uploading a large canvas stalls Firefox for hundreds of ms.\n ensureRoofBlit(renderer);\n try {\n composeRoofAtlas(backend, tiles, zoom, min, size, width, height);\n } finally {\n tiles.length = 0;\n }\n}\n", "export const roofTiles = [];\n", "export const TILE_SIZE = 256;\n", "export const roofMin = {\n x: 0,\n y: 0\n};\n", "export const roofSize = {\n x: 1,\n y: 1\n};\n", "export const roofShader = {\n code: /* wgsl */`\n @group(0) @binding(0) var source: texture_2d<f32>;\n @group(0) @binding(1) var sourceSampler: sampler;\n @group(0) @binding(2) var<uniform> opacity: f32;\n struct Varyings { @builtin(position) position: vec4f, @location(0) uv: vec2f };\n @vertex fn vertexMain(@builtin(vertex_index) index: u32) -> Varyings {\n let uv = vec2f(f32(index & 1u), f32(index >> 1u));\n return Varyings(vec4f(uv.x * 2.0 - 1.0, 1.0 - uv.y * 2.0, 0.0, 1.0), uv);\n }\n @fragment fn fragmentMain(input: Varyings) -> @location(0) vec4f {\n let color = textureSample(source, sourceSampler, input.uv);\n return vec4f(color.rgb, color.a * opacity);\n }\n `\n};\n", "export const roofPipeline = {\n layout: 'auto',\n vertex: {\n module: null,\n entryPoint: 'vertexMain'\n },\n fragment: {\n module: null,\n entryPoint: 'fragmentMain',\n targets: [{\n format: 'rgba8unorm',\n blend: {\n color: {\n srcFactor: 'src-alpha',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add'\n },\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add'\n }\n }\n }]\n },\n primitive: {\n topology: 'triangle-strip'\n }\n};\n", "export const roofBlitSampler = {\n magFilter: 'linear',\n minFilter: 'linear'\n};\n", "import { roofShader } from '../globals/roofShader.js';\nimport { roofPipeline } from '../globals/roofPipeline.js';\nimport { roofBlitSampler } from '../globals/roofBlitSampler.js';\n\nexport function ensureRoofBlit(renderer) {\n const device = renderer.device;\n if (!renderer.roofBlit) {\n const module = device.createShaderModule(roofShader);\n renderer.roofBlit = /* alloc */ {\n pipeline: device.createRenderPipeline((\n roofPipeline.vertex.module = module,\n roofPipeline.fragment.module = module,\n roofPipeline\n )),\n sampler: device.createSampler(roofBlitSampler),\n };\n roofPipeline.vertex.module = null;\n roofPipeline.fragment.module = null;\n }\n}\n", "export const roofBuffer = {\n size: null,\n usage: null\n};\n", "export const roofPass = {\n colorAttachments: [{\n view: null,\n clearValue: {\n r: 0,\n g: 0,\n b: 0,\n a: 0\n },\n loadOp: 'clear',\n storeOp: 'store'\n }]\n};\n", "export const roofImage = {\n source: null\n};\n", "export const roofTarget = {\n texture: null\n};\n", "export const roofCopySize = [null, null];\n", "import { roofImage } from '../globals/roofImage.js';\r\nimport { roofTarget } from '../globals/roofTarget.js';\r\nimport { roofCopySize } from '../globals/roofCopySize.js';\r\n\r\nexport function uploadRoofTile(device, tile) {\r\n const source = tile.texture;\r\n if (source.uploaded !== source.image) {\r\n device.queue.copyExternalImageToTexture((\r\n roofImage.source = tile.image,\r\n roofImage\r\n ), (\r\n roofTarget.texture = source.texture,\r\n roofTarget\r\n ), (\r\n roofCopySize[0] = source.texture.width,\r\n roofCopySize[1] = source.texture.height,\r\n roofCopySize\r\n ));\r\n roofImage.source = null;\r\n roofTarget.texture = null;\r\n source.uploaded = source.image;\r\n }\r\n}\r\n", "export const roofBindGroup = {\n layout: null,\n entries: [{\n binding: 0,\n resource: null\n }, {\n binding: 1,\n resource: null\n }, {\n binding: 2,\n resource: {\n buffer: null,\n offset: null,\n size: 4\n }\n }]\n};\n", "export const roofCommands = [null];\n", "export const roofOpacities = { value: new Float32Array(64) };\n", "export function compareRoofTiles(a, b) {\n return (a.layer.options.zIndex || 0) - (b.layer.options.zIndex || 0) ||\n a.tile.coords.z - b.tile.coords.z;\n}\n", "import { roofBuffer } from '../globals/roofBuffer.js';\nimport { roofPass } from '../globals/roofPass.js';\nimport { uploadRoofTile } from './uploadRoofTile.js';\nimport { roofBindGroup } from '../globals/roofBindGroup.js';\nimport { roofCommands } from '../globals/roofCommands.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { roofOpacities } from '../globals/roofOpacities.js';\nimport { TILE_SIZE } from '../globals/TILE_SIZE.js';\n\n\nimport { compareRoofTiles } from './compareRoofTiles.js';\n\nexport function composeRoofAtlas(backend, tiles, zoom, min, size, width, height) {\n const renderer = sceneByLayer.get(backend).renderer, device = renderer.device, map = backend._map;\n const opacityLength = Math.max(1, tiles.length) * 64;\n if (roofOpacities.value.length < opacityLength) {\n roofOpacities.value = /* alloc */ new Float32Array(opacityLength);\n }\n const opacities = roofOpacities.value;\n const opacityBuffer = device.createBuffer((\n roofBuffer.size = opacities.byteLength,\n roofBuffer.usage = GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n roofBuffer\n ));\n\n const encoder = device.createCommandEncoder();\n const atlasPass = encoder.beginRenderPass((\n roofPass.colorAttachments[0].view = sceneByLayer.get(backend)._roofRaster.texture.texture.createView(),\n roofPass\n ));\n roofPass.colorAttachments[0].view = null;\n atlasPass.setPipeline(renderer.roofBlit.pipeline);\n tiles.sort(compareRoofTiles);\n let i, tile, layer, coords, source, tileSize, x, y;\n for ([i, { tile, layer }] of tiles.entries()) {\n ({ coords } = tile);\n source = tile.texture;\n uploadRoofTile(device, tile);\n\n opacities[i * 64] = layer.options.opacity;\n tileSize = TILE_SIZE * map.getZoomScale(zoom, coords.z);\n x = (coords.x * tileSize - min.x) * width / size.x;\n y = (coords.y * tileSize - min.y) * height / size.y;\n atlasPass.setViewport(x, y, Math.min(tileSize * width / size.x, width - x),\n Math.min(tileSize * height / size.y, height - y), 0, 1);\n atlasPass.setBindGroup(0, device.createBindGroup((\n roofBindGroup.layout = renderer.roofBlit.pipeline.getBindGroupLayout(0),\n roofBindGroup.entries[0].resource = source.texture.createView(),\n roofBindGroup.entries[1].resource = renderer.roofBlit.sampler,\n roofBindGroup.entries[2].resource.buffer = opacityBuffer,\n roofBindGroup.entries[2].resource.offset = i * 256,\n roofBindGroup\n )));\n roofBindGroup.layout = null;\n roofBindGroup.entries[0].resource = null;\n roofBindGroup.entries[1].resource = null;\n roofBindGroup.entries[2].resource.buffer = null;\n\n atlasPass.draw(4);\n }\n atlasPass.end();\n device.queue.writeBuffer(opacityBuffer, 0, opacities);\n device.queue.submit((\n roofCommands[0] = encoder.finish(),\n roofCommands\n ));\n roofCommands[0] = null;\n opacityBuffer.destroy();\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\r\n\r\nexport function collectRoofTiles(rasters, tiles) {\r\n let zoom = -Infinity, layer, tile;\r\n for (layer of rasters) {\r\n for (tile of sceneByLayer.get(layer)._rasterTiles.values()) {\r\n if (tile.done && !tile.request.signal.aborted && tile.image) {\r\n tile._roofEntry ||= /* alloc */ { tile, layer };\r\n tiles.push(tile._roofEntry);\r\n zoom = Math.max(zoom, tile.coords.z);\r\n }\r\n }\r\n }\r\n return zoom;\r\n}\r\n", "export const roofTexture = {\n size: [null, null],\n format: 'rgba8unorm',\n usage: null\n};\n", "export const roofSampler = {\n addressModeU: 'clamp-to-edge',\n addressModeV: 'clamp-to-edge'\n};\n", "import { roofTexture } from '../globals/roofTexture.js';\r\nimport { roofSampler } from '../globals/roofSampler.js';\r\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { destroyTexture } from './destroyTexture.js';\r\n\r\nexport function resizeRoofTexture(backend, roof, width, height) {\r\n const renderer = sceneByLayer.get(backend).renderer;\r\n const descriptor = roofTexture;\r\n descriptor.size[0] = width; descriptor.size[1] = height;\r\n descriptor.usage = GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT;\r\n if (roof.texture && (roof.texture.width !== width || roof.texture.height !== height)) {\r\n destroyTexture(backend, roof.texture.texture);\r\n roof.texture.texture = renderer.device.createTexture(descriptor);\r\n roof.texture.width = width; roof.texture.height = height;\r\n }\r\n roof.texture ||= /* alloc */ {\r\n device: renderer.device,\r\n texture: renderer.device.createTexture(descriptor),\r\n sampler: renderer.device.createSampler(roofSampler),\r\n samplerOptions: /* alloc */ { addressModeU: 'clamp-to-edge', addressModeV: 'clamp-to-edge' },\r\n image: null, width, height,\r\n format: 'rgba8unorm', srgb: false, flipY: false, uploaded: null,\r\n };\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\nimport { updateRoofAtlas } from './updateRoofAtlas.js';\nimport { destroyTexture } from './destroyTexture.js';\n\nexport function updateRoofRaster(backend, now) {\n const map = backend._map;\n const rasters = sceneByLayer.get(backend)._roofRasters ||= /* alloc */ [];\n rasters.length = 0;\n let hasRoofTexture = false;\n let layer;\n for (layer of sceneByLayer.get(backend)._layers) {\n if (layer.options.roofTexture || layer.options.wallTexture) { hasRoofTexture = true; break; }\n }\n if (hasRoofTexture) {\n for (layer of Object.values(map._layers)) {\n if (sceneByLayer.get(layer).kind === 'raster' && sceneByLayer.get(layer)._rasterTiles && layer.options.opacity > 0) rasters.push(layer);\n }\n updateRoofAtlas(backend, rasters, now);\n } else if (sceneByLayer.get(backend)._roofRaster) {\n destroyTexture(backend, sceneByLayer.get(backend)._roofRaster.texture.texture);\n sceneByLayer.get(backend)._roofRaster = null;\n }\n return rasters;\n}\n", "export function compareMeshDepth(a, b) {\r\n return a.program.transparent\r\n ? (a.renderOrder || 0) - (b.renderOrder || 0) ||\r\n b._sortDepth - a._sortDepth || a.id - b.id\r\n : (a._sortDepth ?? 0) - (b._sortDepth ?? 0) || a.id - b.id;\r\n}\r\n", "export function compareMeshes(a, b) {\n return Number(Boolean(b.ground)) - Number(Boolean(a.ground)) ||\n (a.ground && b.ground ? (a.renderOrder || 0) - (b.renderOrder || 0) ||\n a.tile.coords.z - b.tile.coords.z : 0) ||\n Number(a.program.transparent) - Number(b.program.transparent) ||\n compareMeshDepth(a, b);\n}\nimport { compareMeshDepth } from './compareMeshDepth.js';\n", "\nimport { compareMeshes } from './compareMeshes.js';\n\nexport function sortMeshes(meshes) {\n return meshes.sort(compareMeshes);\n}\n", "import { radians } from '../globals/radians.js';\r\nimport { earthCirc } from '../globals/earthCirc.js';\r\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\r\n\r\nexport function roofFootprint(mesh, backend, layer) {\r\n const map = backend._map, bounds = mesh.geometry.bounds, world = mesh.worldMatrix;\r\n const state = sceneByLayer.get(layer), zoom = state._tileZoom;\r\n const origin = map.project(sceneByLayer.get(backend)._sceneOrigin, zoom);\r\n const scale = map.options.crs.scale(zoom) / (earthCirc * Math.cos(sceneByLayer.get(backend)._sceneOrigin.lat * radians));\r\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\r\n let i, x, y, z, px, py, nw, se;\r\n for (i = 0; i < 8; i++) {\r\n x = i & 1 ? bounds.max[0] : bounds.min[0], y = i & 2 ? bounds.max[1] : bounds.min[1];\r\n z = i & 4 ? bounds.max[2] : bounds.min[2];\r\n px = origin.x + (world[0] * x + world[4] * y + world[8] * z + world[12]) * scale;\r\n py = origin.y + (world[2] * x + world[6] * y + world[10] * z + world[14]) * scale;\r\n minX = Math.min(minX, px); minY = Math.min(minY, py);\r\n maxX = Math.max(maxX, px); maxY = Math.max(maxY, py);\r\n }\r\n if (state.header.maxLat !== undefined && state.header.minLon !== undefined &&\r\n state.header.minLat !== undefined && state.header.maxLon !== undefined) {\r\n nw = map.project(/* alloc */ [state.header.maxLat, state.header.minLon], zoom);\r\n se = map.project(/* alloc */ [state.header.minLat, state.header.maxLon], zoom);\r\n minX = Math.max(minX, nw.x); minY = Math.max(minY, nw.y);\r\n maxX = Math.min(maxX, se.x); maxY = Math.min(maxY, se.y);\r\n if (minX >= maxX || minY >= maxY) return null;\r\n }\r\n return /* alloc */ [minX, minY, maxX, maxY];\r\n}\r\n", "export function subtractRoofTile(remaining, tile, zoom) {\r\n const size = 256 * 2 ** (zoom - tile.coords.z);\r\n const left = tile.coords.x * size, top = tile.coords.y * size;\r\n const pieces = /* alloc */ [];\r\n let x0, y0, x1, y1, l, t, r, b;\r\n for ([x0, y0, x1, y1] of remaining) {\r\n l = Math.max(x0, left), t = Math.max(y0, top);\r\n r = Math.min(x1, left + size), b = Math.min(y1, top + size);\r\n if (l >= r || t >= b) {\r\n pieces.push(/* alloc */ [x0, y0, x1, y1]);\r\n continue;\r\n }\r\n if (y0 < t) pieces.push(/* alloc */ [x0, y0, x1, t]);\r\n if (b < y1) pieces.push(/* alloc */ [x0, b, x1, y1]);\r\n if (x0 < l) pieces.push(/* alloc */ [x0, t, l, b]);\r\n if (r < x1) pieces.push(/* alloc */ [r, t, x1, b]);\r\n }\r\n return pieces;\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { roofFootprint } from './roofFootprint.js';\r\nimport { subtractRoofTile } from './subtractRoofTile.js';\r\n\r\n/** Test the mesh's ground footprint against loaded imagery, including coarse parent tiles. */\r\nexport function roofCoverage(mesh, backend, rasters) {\r\n let intersectsArchive = false, pending = false;\r\n let layer, footprint, remaining, tile;\r\n for (layer of rasters) {\r\n if (!sceneByLayer.get(layer).header) { pending = true; continue; }\r\n footprint = roofFootprint(mesh, backend, layer);\r\n if (!footprint) continue;\r\n intersectsArchive = true;\r\n remaining = /* alloc */ [footprint];\r\n for (tile of sceneByLayer.get(layer)._rasterTiles.values()) {\r\n // Failed imagery already reports an error; do not hide the building indefinitely.\r\n if (!tile.done && !tile.error) continue;\r\n remaining = subtractRoofTile(remaining, tile, sceneByLayer.get(layer)._tileZoom);\r\n if (!remaining.length) return true;\r\n }\r\n }\r\n return !intersectsArchive && !pending;\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { roofCoverage } from '../geometry/roofCoverage.js';\r\n\r\nexport function revealRoofMesh(backend, mesh, rasters) {\r\n if (mesh.program.uniforms.roofTexture && !rasters.length) mesh._roofRevealed = true;\r\n if (mesh.program.uniforms.roofTexture && !mesh._roofRevealed && rasters.length) {\r\n if (mesh._roofCoverageSignature !== sceneByLayer.get(backend)._roofRaster?.signature) {\r\n mesh._roofCoverageSignature = sceneByLayer.get(backend)._roofRaster?.signature;\r\n mesh._roofCovered = roofCoverage(mesh, backend, rasters);\r\n }\r\n if (!mesh._roofCovered) { mesh._appearance = 0; return false; }\r\n mesh._roofRevealed = true;\r\n }\r\n return true;\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { sortMeshes } from \"./sortMeshes.js\";\nimport { revealRoofMesh } from './revealRoofMesh.js';\n\nexport function prepareFrameMeshes(backend, rasters, now, meshes) {\n const candidates = sceneByLayer.get(backend)._visibleMeshes, shadowMeshes = sceneByLayer.get(backend)._shadowMeshes, renderer = sceneByLayer.get(backend).renderer;\n let appearing = false;\n // Visible meshes: opaque first, transparent surfaces back-to-front.\n let mesh, progress;\n for (mesh of candidates) {\n if (!revealRoofMesh(backend, mesh, rasters)) continue;\n if (mesh.fadeDuration) {\n mesh.fadeStart ??= mesh.tile?.loadedAt ?? now;\n progress = Math.min(1, (now - mesh.fadeStart) / mesh.fadeDuration);\n mesh._appearance = progress * progress * (3 - 2 * progress);\n appearing ||= progress < 1;\n }\n meshes.push(mesh);\n }\n candidates.length = 0;\n sortMeshes(meshes);\n let minGroundZoom = Infinity, maxGroundZoom = -Infinity;\n for (mesh of meshes) {\n if (!mesh.ground) continue;\n minGroundZoom = Math.min(minGroundZoom, mesh.tile.coords.z);\n maxGroundZoom = Math.max(maxGroundZoom, mesh.tile.coords.z);\n }\n renderer.groundOverlap = minGroundZoom !== maxGroundZoom;\n let shadowCount = 0;\n for (mesh of shadowMeshes) {\n if (mesh.visible && mesh._appearance !== 0) shadowMeshes[shadowCount++] = mesh;\n }\n shadowMeshes.length = shadowCount;\n return appearing;\n}\n", "export const frameBuffer = {\n size: null,\n usage: null\n};\n", "import { frameBuffer } from '../globals/frameBuffer.js';\r\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { destroyTexture } from './destroyTexture.js';\r\n\r\nexport function prepareFrameBuffer(backend, meshes, shadowMeshes) {\r\n const renderer = sceneByLayer.get(backend).renderer;\r\n // Slot 0 holds the camera; 256-byte mesh slots follow (double-sided meshes use two).\r\n if (!renderer.uniformBuffer || renderer.uniformBuffer.size < (meshes.length * 2 + shadowMeshes.length + 1) * 256) {\r\n if (renderer.uniformBuffer) destroyTexture(backend, renderer.uniformBuffer);\r\n renderer.uniformBuffer = renderer.device.createBuffer((\r\n frameBuffer.size = Math.max(64, meshes.length * 4 + shadowMeshes.length * 2) * 256,\r\n frameBuffer.usage = GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\r\n frameBuffer\r\n ));\r\n renderer.uniformData = /* alloc */ new Float32Array(renderer.uniformBuffer.size / 4);\r\n }\r\n}\r\n", "export const sunBindGroup = {\n layout: null,\n entries: [{\n binding: 0,\n resource: {\n buffer: null\n }\n }, {\n binding: 1,\n resource: null\n }, {\n binding: 2,\n resource: null\n }, {\n binding: 3,\n resource: {\n buffer: null\n }\n }]\n};\n", "import { sunBindGroup } from '../globals/sunBindGroup.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\n\nexport function bindSunlight(layer) {\n const sun = sceneByLayer.get(layer).renderer.sunlight;\n sun.bindGroup = sceneByLayer.get(layer).renderer.device.createBindGroup((\n sunBindGroup.layout = sun.layout,\n sunBindGroup.entries[0].resource.buffer = sun.buffer,\n sunBindGroup.entries[1].resource = sun.texture.createView(),\n sunBindGroup.entries[2].resource = sun.sampler,\n sunBindGroup.entries[3].resource.buffer = sun.lights,\n sunBindGroup\n ));\n sunBindGroup.layout = null;\n sunBindGroup.entries[0].resource.buffer = null;\n sunBindGroup.entries[1].resource = null;\n sunBindGroup.entries[2].resource = null;\n sunBindGroup.entries[3].resource.buffer = null;\n}\n", "export function writeLightCell(values, i, key, offsets, data) {\r\n let j, o;\r\n for (j = 0, o = offsets[key] * 4; j < 8; j++) data[o + j] = values[i + j];\r\n offsets[key] += 2;\r\n}\r\n", "export function visitLightCells(values, i, minX, minZ, cellSize, columns, offsets, data) {\r\n const radius = values[i + 3], x = values[i] - minX, z = values[i + 2] - minZ;\r\n let y, c, key;\r\n for (y = Math.floor((z - radius) / cellSize); y <= Math.floor((z + radius) / cellSize); y++) {\r\n for (c = Math.floor((x - radius) / cellSize); c <= Math.floor((x + radius) / cellSize); c++) {\r\n key = y * columns + c;\r\n if (data) {\r\n writeLightCell(values, i, key, offsets, data);\r\n } else offsets[key]++;\r\n }\r\n }\r\n}\r\nimport { writeLightCell } from './writeLightCell.js';\r\n", "import { visitLightCells } from './visitLightCells.js';\n\nexport function visitCells(packed, minX, minZ, cellSize, columns, offsets, data) {\n let values, i;\n for (values of packed) for (i = 0; i < values.length; i += 8) {\n visitLightCells(values, i, minX, minZ, cellSize, columns, offsets, data);\n }\n}\n", "import { visitCells } from './visitCells.js';\n\n/** Pack world-space point lights into the shader's spatial grid. */\nexport function lightGrid(packed, maxBytes) {\n let count = 0;\n let values, i, value, key;\n for (values of packed) count += values.length / 8;\n const cellSize = 32;\n let data;\n if (count) {\n let minX = Infinity, minZ = Infinity, maxX = -Infinity, maxZ = -Infinity;\n for (values of packed) for (i = 0; i < values.length; i += 8) {\n minX = Math.min(minX, values[i] - values[i + 3]);\n maxX = Math.max(maxX, values[i] + values[i + 3]);\n minZ = Math.min(minZ, values[i + 2] - values[i + 3]);\n maxZ = Math.max(maxZ, values[i + 2] + values[i + 3]);\n }\n const columns = Math.ceil((maxX - minX) / cellSize) + 1,\n rows = Math.ceil((maxZ - minZ) / cellSize) + 1;\n // Counting sort: count the lights of each cell, then fill each cell's slice.\n const counts = /* alloc */ new Uint32Array(columns * rows),\n next = /* alloc */ new Uint32Array(columns * rows);\n visitCells(packed, minX, minZ, cellSize, columns, counts);\n let entries = 0;\n for (value of counts) entries += value;\n const length = (2 + columns * rows + entries * 2) * 4;\n if (length * 4 > maxBytes) {\n throw /* alloc */ new Error('Streetlight grid exceeds GPU storage limit');\n }\n data = /* alloc */ new Float32Array(length);\n data[0] = minX; data[1] = minZ; data[2] = cellSize;\n data[3] = columns; data[4] = rows; data[5] = count;\n let offset = 2 + columns * rows;\n for (key = 0; key < counts.length; key++) if (counts[key]) {\n data[(2 + key) * 4] = next[key] = offset;\n data[(2 + key) * 4 + 1] = counts[key];\n offset += counts[key] * 2;\n }\n visitCells(packed, minX, minZ, cellSize, columns, next, data);\n } else data = /* alloc */ new Float32Array(8);\n\n return /* alloc */ { data, count };\n}\n", "export const lightScale = 0.03 / (4 * Math.PI);\r\n", "import { lightScale } from '../globals/lightScale.js';\n\n/** World-space [x, y, z, radius, r, g, b, intensity] for one mesh's point lights. */\nexport function worldLights(lights, m) {\n const values = /* alloc */ new Float32Array(lights.length * 8);\n let i, x, y, z, radius, color, flux, w;\n for (i = 0; i < lights.length; i++) {\n ({\n position: [x, y, z],\n radius,\n color,\n flux\n } = lights[i]);\n w = m[3] * x + m[7] * y + m[11] * z + m[15];\n values[i * 8] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n values[i * 8 + 1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n values[i * 8 + 2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n values[i * 8 + 3] = radius;\n values[i * 8 + 4] = color[0];\n values[i * 8 + 5] = color[1];\n values[i * 8 + 6] = color[2];\n values[i * 8 + 7] = flux * lightScale;\n }\n return values;\n}", "import { lightGrid } from './lightGrid.js';\nimport { worldLights } from './worldLights.js';\n\n/** Keep fixed lamps cached when moving headlights change. */\nexport function cacheLightGrid(meshes, previous, maxBytes) {\n let unchanged = previous?.meshes.length === meshes.length;\n let i, mesh, matrix, lights, cache, sameMatrix, j;\n for (i = 0; i < meshes.length; i++) {\n mesh = meshes[i], matrix = mesh.worldMatrix, lights = mesh.extras.lights;\n cache = mesh._worldLights;\n sameMatrix = Boolean(cache);\n for (j = 0; j < matrix.length && sameMatrix; j++) sameMatrix = matrix[j] === cache.matrix[j];\n if (!sameMatrix || cache.lights !== lights) {\n cache = mesh._worldLights = /* alloc */ {\n lights,\n matrix: /* alloc */ [...matrix],\n data: worldLights(lights, matrix),\n };\n }\n unchanged &&= previous.meshes[i].mesh === mesh && previous.meshes[i].cache === cache;\n }\n if (unchanged) return previous;\n const packed = /* alloc */ new Array(meshes.length);\n const snapshots = /* alloc */ new Array(meshes.length);\n for (i = 0; i < meshes.length; i++) {\n mesh = meshes[i];\n cache = mesh._worldLights;\n packed[i] = cache.data;\n snapshots[i] = /* alloc */ { mesh, cache };\n }\n return /* alloc */ { ...lightGrid(packed, maxBytes), meshes: snapshots };\n}\n", "export const geometryEmpty = [];\n", "import { geometryEmpty } from '../globals/geometryEmpty.js';\n\n\nexport function collectLightMeshes(node, fixed, moving) {\n if (!node.visible) return;\n if (node.extras?.lights) (node.extras.dynamicLights ? moving : fixed).push(node);\n let child;\n for (child of node.children || geometryEmpty) collectLightMeshes(child, fixed, moving);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { destroyTexture } from '../rendering/destroyTexture.js';\nimport { bindSunlight } from '../shadows/bindSunlight.js';\nimport { cacheLightGrid } from './cacheLightGrid.js';\nimport { collectLightMeshes } from './collectLightMeshes.js';\n\nexport function updatePointLights(backend) {\n const { device, sunlight: sun } = sceneByLayer.get(backend).renderer;\n const fixed = /* alloc */ [];\n const moving = /* alloc */ [];\n let layer;\n for (layer of sceneByLayer.get(backend)._layers) {\n if (!layer.options.nightLight || !sceneByLayer.get(layer).root.visible) continue;\n collectLightMeshes(sceneByLayer.get(layer).root, fixed, moving);\n }\n const maxBytes = device.limits.maxStorageBufferBindingSize;\n const staticGrid = cacheLightGrid(fixed, sun.staticLightGrid, maxBytes);\n const dynamicGrid = cacheLightGrid(moving, sun.dynamicLightGrid, maxBytes);\n if (staticGrid === sun.staticLightGrid && dynamicGrid === sun.dynamicLightGrid) return;\n const size = staticGrid.data.byteLength + dynamicGrid.data.byteLength;\n if (size > maxBytes) throw /* alloc */ new Error('Streetlight grid exceeds GPU storage limit');\n let uploadStatic = staticGrid !== sun.staticLightGrid;\n if (sun.lights.size < size) {\n destroyTexture(backend, sun.lights);\n sun.lights = device.createBuffer(/* alloc */ { size, usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST });\n bindSunlight(backend);\n uploadStatic = true;\n }\n // The spare header component points to a second grid in the same storage binding.\n staticGrid.data[6] = staticGrid.data.length / 4;\n if (uploadStatic) device.queue.writeBuffer(sun.lights, 0, staticGrid.data);\n device.queue.writeBuffer(sun.lights, staticGrid.data.byteLength, dynamicGrid.data);\n sun.lightCount = staticGrid.count + dynamicGrid.count;\n sun.staticLightGrid = staticGrid;\n sun.dynamicLightGrid = dynamicGrid;\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { prepareFrameBuffer } from './prepareFrameBuffer.js';\nimport { updatePointLights } from '../lighting/updatePointLights.js';\n\nexport function prepareFrameUniforms(backend, meshes, shadowMeshes, sunlight) {\n const renderer = sceneByLayer.get(backend).renderer, camera = sceneByLayer.get(backend).camera;\n const view = camera.viewMatrix, direction = sunlight?.direction;\n const x = direction ? direction[0] : -300;\n const y = direction ? direction[1] : 500;\n const z = direction ? direction[2] : 300;\n const lightX = view[0] * x + view[4] * y + view[8] * z;\n const lightY = view[1] * x + view[5] * y + view[9] * z;\n const lightZ = view[2] * x + view[6] * y + view[10] * z;\n const lightLength = Math.hypot(lightX, lightY, lightZ) || 1;\n const skyLength = Math.hypot(view[4], view[5], view[6]) || 1;\n // One uniform upload per frame: per-mesh writeBuffer calls dominate Firefox's GPU process.\n prepareFrameBuffer(backend, meshes, shadowMeshes);\n const frameData = renderer.uniformData;\n frameData.set(camera.viewMatrix, 0);\n frameData.set(camera.projectionMatrix, 16);\n if (sceneByLayer.get(backend)._roofRaster?.matrix) frameData.set(sceneByLayer.get(backend)._roofRaster.matrix, 32);\n else {\n frameData.fill(0, 32, 48);\n frameData[32] = frameData[37] = frameData[42] = frameData[47] = 1;\n }\n frameData[48] = lightX / lightLength;\n frameData[49] = lightY / lightLength;\n frameData[50] = lightZ / lightLength;\n frameData[51] = sunlight && sunlight.altitude <= 0 ? 0 : 1;\n frameData[52] = view[4] / skyLength;\n frameData[53] = view[5] / skyLength;\n frameData[54] = view[6] / skyLength;\n const night = sunlight ? Math.max(0, Math.min(1, (3 - sunlight.altitude) / 9)) : 0;\n frameData[55] = night * night * (3 - 2 * night);\n const tint = sunlight?.tint;\n frameData[56] = tint ? tint[0] : 1;\n frameData[57] = tint ? tint[1] : 1;\n frameData[58] = tint ? tint[2] : 1;\n frameData[59] = 0;\n if (night > 0) updatePointLights(backend);\n renderer.uniformSlot = 1;\n}\n", "export const scenePass = {\n colorAttachments: [{\n view: null,\n clearValue: {\n r: 0,\n g: 0,\n b: 0,\n a: 0\n },\n loadOp: 'clear',\n storeOp: 'store'\n }],\n depthStencilAttachment: {\n view: null,\n depthClearValue: 1,\n depthLoadOp: 'clear',\n depthStoreOp: 'store'\n }\n};\n", "export const meshOffsets = [null];\n", "export const meshPipeline = {\n layout: null,\n vertex: {\n module: null,\n entryPoint: 'vertexMain',\n buffers: null\n },\n fragment: {\n module: null,\n entryPoint: 'fragmentMain',\n targets: [{\n format: null,\n blend: null,\n writeMask: null\n }]\n },\n primitive: {\n topology: 'triangle-list',\n cullMode: null,\n frontFace: null\n },\n depthStencil: {\n format: 'depth24plus',\n depthWriteEnabled: null,\n depthCompare: null\n }\n};\n", "export const alphaBlend = {\n color: {\n srcFactor: 'src-alpha',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add'\n },\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add'\n },\n};\n", "import { meshPipeline } from '../globals/meshPipeline.js';\r\nimport { alphaBlend } from '../globals/alphaBlend.js';\r\n\r\nexport function drawPipeline(renderer, mesh, cullMode, frontFace) {\r\n const { program } = mesh;\r\n // Mixed-LOD imagery composites coarse-to-fine; its depth still occludes later 3D objects.\r\n // ponytail: self-occlusion during LOD blending needs separate per-LOD depth passes.\r\n const depthCompare = program.depthTest === false || (mesh.ground && renderer.groundOverlap)\r\n ? 'always' : 'less-equal';\r\n const pipelineKey = `${cullMode}:${frontFace}:${depthCompare}`;\r\n let pipeline = program.pipelineCache.get(pipelineKey);\r\n if (!pipeline) {\r\n pipeline = renderer.device.createRenderPipeline((\r\n meshPipeline.layout = program.pipelineLayout,\r\n meshPipeline.vertex.module = program.vertex,\r\n meshPipeline.vertex.buffers = program.vertexBuffers,\r\n meshPipeline.fragment.module = program.fragment,\r\n meshPipeline.fragment.targets[0].format = renderer.format,\r\n meshPipeline.fragment.targets[0].blend = program.transparent ? alphaBlend : undefined,\r\n meshPipeline.fragment.targets[0].writeMask = GPUColorWrite.ALL,\r\n meshPipeline.primitive.cullMode = cullMode,\r\n meshPipeline.primitive.frontFace = frontFace,\r\n meshPipeline.depthStencil.depthWriteEnabled = program.depthWrite,\r\n meshPipeline.depthStencil.depthCompare = depthCompare,\r\n meshPipeline\r\n ));\r\n meshPipeline.layout = null;\r\n meshPipeline.vertex.module = null;\r\n meshPipeline.vertex.buffers = null;\r\n meshPipeline.fragment.module = null;\r\n program.pipelineCache.set(pipelineKey, pipeline);\r\n }\r\n return pipeline;\r\n}\r\n", "export function prepareMeshCutout(renderer, mesh, base) {\r\n const data = renderer.uniformData;\r\n const cutout = (mesh._nativeSource || mesh._rasterSource)?.options.cutout;\r\n if (cutout && (!Number.isFinite(cutout.x) || !Number.isFinite(cutout.y) ||\r\n !Number.isFinite(cutout.radius) || cutout.radius < 0)) {\r\n throw /* alloc */ new Error('cutout requires finite x, y and a non-negative radius in CSS pixels');\r\n }\r\n data[base + 36] = (cutout?.x ?? 0) * renderer.dpr;\r\n data[base + 37] = (cutout?.y ?? 0) * renderer.dpr;\r\n data[base + 38] = (cutout?.radius ?? 0) * renderer.dpr;\r\n data[base + 39] = cutout?.outside ? 1 : 0;\r\n}\r\n", "export function prepareMeshUniforms(renderer, mesh) {\r\n const uniforms = mesh.program.uniforms;\r\n const offset = renderer.uniformSlot++ * 256;\r\n const data = renderer.uniformData, base = offset / 4;\r\n data.set(mesh.worldMatrix, base);\r\n data.set(uniforms.baseColor.value, base + 16);\r\n data[base + 19] = 1;\r\n data[base + 20] = uniforms.metallic.value;\r\n data[base + 21] = uniforms.roughness.value;\r\n data[base + 22] = uniforms.opacity.value * (mesh.ground ? mesh._appearance ?? 1 : 1);\r\n data[base + 23] = uniforms.alphaCutoff.value;\r\n data.set(uniforms.emissive.value, base + 24);\r\n data[base + 27] = uniforms.occlusionStrength.value;\r\n data[base + 28] = mesh.terrain?.[0] ?? 0;\r\n data[base + 29] = mesh.terrain?.[1] ?? 0;\r\n data[base + 30] = mesh.terrain?.[2] ?? 0;\r\n data[base + 31] = mesh.terrain?.[3] ?? 0;\r\n data[base + 32] = mesh.highlight?.[0] ?? 0;\r\n data[base + 33] = mesh.highlight?.[1] ?? 0;\r\n data[base + 34] = mesh.program.nightSparkle ? data[55] : 0;\r\n data[base + 35] = mesh.ground ? 1 : mesh._appearance ?? 1;\r\n prepareMeshCutout(renderer, mesh, base);\r\n return offset;\r\n}\r\nimport { prepareMeshCutout } from './prepareMeshCutout.js';\r\n", "export const meshImage = {\n source: null,\n flipY: null\n};\n", "export const meshTarget = {\n texture: null\n};\n", "export const meshCopySize = [null, null];\n", "import { meshImage } from '../globals/meshImage.js';\r\nimport { meshTarget } from '../globals/meshTarget.js';\r\nimport { meshCopySize } from '../globals/meshCopySize.js';\r\n\r\nexport function uploadMeshTexture(device, texture) {\r\n if (texture.uploaded === texture.image) return;\r\n device.queue.copyExternalImageToTexture(\r\n (\r\n meshImage.source = texture.image,\r\n meshImage.flipY = Boolean(texture.flipY),\r\n meshImage\r\n ),\r\n (\r\n meshTarget.texture = texture.texture,\r\n meshTarget\r\n ),\r\n (\r\n meshCopySize[0] = texture.image.width,\r\n meshCopySize[1] = texture.image.height,\r\n meshCopySize\r\n )\r\n );\r\n meshImage.source = null;\r\n meshTarget.texture = null;\r\n texture.uploaded = texture.image;\r\n}\r\n", "export const meshBindGroup = {\n layout: null,\n entries: null\n};\n", "export const drawEntries = [];\n", "export const drawMeshEntry = {\n binding: 0,\n resource: {\n buffer: null,\n size: 160\n }\n};\n", "export const drawFrameEntry = {\n binding: 1,\n resource: {\n buffer: null,\n size: 240\n }\n};\n", "export const drawTerrainEntry = {\n binding: 2,\n resource: null\n};\n", "export const drawTextureEntries = [{\n binding: null,\n resource: null\n }, {\n binding: null,\n resource: null\n }, {\n binding: null,\n resource: null\n },\n {\n binding: null,\n resource: null\n }, {\n binding: null,\n resource: null\n },\n];\n", "export const drawSamplerEntries = [{\n binding: null,\n resource: null\n }, {\n binding: null,\n resource: null\n }, {\n binding: null,\n resource: null\n },\n {\n binding: null,\n resource: null\n }, {\n binding: null,\n resource: null\n },\n];\n", "import { meshBindGroup } from '../globals/meshBindGroup.js';\r\nimport { drawEntries } from '../globals/drawEntries.js';\r\nimport { drawMeshEntry } from '../globals/drawMeshEntry.js';\r\nimport { drawFrameEntry } from '../globals/drawFrameEntry.js';\r\nimport { drawTerrainEntry } from '../globals/drawTerrainEntry.js';\r\nimport { drawTextureEntries } from '../globals/drawTextureEntries.js';\r\nimport { drawSamplerEntries } from '../globals/drawSamplerEntries.js';\r\n\r\nexport function bindMeshTextures(renderer, mesh, textures) {\r\n const { program } = mesh;\r\n const entries = drawEntries;\r\n entries.length = 0;\r\n drawMeshEntry.resource.buffer = renderer.uniformBuffer;\r\n drawFrameEntry.resource.buffer = renderer.uniformBuffer;\r\n entries.push(drawMeshEntry, drawFrameEntry);\r\n if (program.terrain) {\r\n drawTerrainEntry.resource = program.terrain.texture.createView();\r\n entries.push(drawTerrainEntry);\r\n }\r\n mesh.boundBuffer = renderer.uniformBuffer;\r\n const boundTextures = mesh.boundTextures ||= /* alloc */ [];\r\n boundTextures.length = textures.length;\r\n let i, binding, texture;\r\n for (i = 0; i < textures.length; i++) {\r\n binding = program.bindings[i], texture = textures[i];\r\n drawTextureEntries[i].binding = binding.texture;\r\n drawTextureEntries[i].resource = texture.texture.createView();\r\n drawSamplerEntries[i].binding = binding.sampler;\r\n drawSamplerEntries[i].resource = texture.sampler;\r\n entries.push(drawTextureEntries[i], drawSamplerEntries[i]);\r\n boundTextures[i] ||= /* alloc */ [];\r\n boundTextures[i][0] = texture.texture;\r\n boundTextures[i][1] = texture.sampler;\r\n }\r\n mesh.bindGroup = renderer.device.createBindGroup((\r\n meshBindGroup.layout = program.bindGroupLayout,\r\n meshBindGroup.entries = entries,\r\n meshBindGroup\r\n ));\r\n meshBindGroup.layout = null;\r\n meshBindGroup.entries = null;\r\n drawMeshEntry.resource.buffer = null;\r\n drawFrameEntry.resource.buffer = null;\r\n drawTerrainEntry.resource = null;\r\n for (i = 0; i < textures.length; i++) {\r\n drawTextureEntries[i].resource = null;\r\n drawSamplerEntries[i].resource = null;\r\n }\r\n entries.length = 0;\r\n}\r\n", "import { uploadMeshTexture } from './uploadMeshTexture.js';\r\nimport { bindMeshTextures } from './bindMeshTextures.js';\r\n\r\nexport function prepareMeshTextures(renderer, mesh) {\r\n const { program } = mesh;\r\n const { device } = renderer;\r\n const textures = mesh._textures ||= /* alloc */ [];\r\n textures.length = 0;\r\n let binding, texture, i;\r\n for (binding of program.bindings) {\r\n texture = program.uniforms[binding.name]?.value;\r\n if (!texture) throw /* alloc */ new Error(`Missing Layer3D texture: ${binding.name}`);\r\n uploadMeshTexture(device, texture);\r\n textures.push(texture);\r\n }\r\n let bindingsChanged = !mesh.bindGroup || mesh.boundBuffer !== renderer.uniformBuffer ||\r\n textures.length !== mesh.boundTextures.length;\r\n for (i = 0; !bindingsChanged && i < textures.length; i++) {\r\n if (textures[i].texture !== mesh.boundTextures[i][0] ||\r\n textures[i].sampler !== mesh.boundTextures[i][1]) bindingsChanged = true;\r\n }\r\n if (bindingsChanged) bindMeshTextures(renderer, mesh, textures);\r\n}\r\n", "import { meshOffsets } from '../globals/meshOffsets.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { drawPipeline } from './drawPipeline.js';\nimport { prepareMeshUniforms } from './prepareMeshUniforms.js';\nimport { prepareMeshTextures } from './prepareMeshTextures.js';\n\n/** Upload retained CPU data and draw one mesh in the active WebGPU render pass. */\nexport function drawGeometry(backend, mesh, pass, cullMode, frontFace) {\n const { geometry } = mesh;\n const renderer = sceneByLayer.get(backend).renderer;\n const { device } = renderer;\n const pipeline = drawPipeline(renderer, mesh, cullMode, frontFace);\n const offset = prepareMeshUniforms(renderer, mesh);\n prepareMeshTextures(renderer, mesh);\n pass.setPipeline(pipeline);\n pass.setBindGroup(0, mesh.bindGroup, (\n meshOffsets[0] = offset,\n meshOffsets\n ));\n\n pass.setVertexBuffer(0, geometry.attributes.position.buffer);\n pass.setVertexBuffer(1, geometry.attributes.normal.buffer);\n if (geometry.attributes.color) pass.setVertexBuffer(2, geometry.attributes.color.buffer);\n if (geometry.attributes.uv) pass.setVertexBuffer(3, geometry.attributes.uv.buffer);\n const instances = geometry.attributes.instanceOffset;\n if (instances) pass.setVertexBuffer(4, instances.buffer);\n let attribute;\n for (attribute of Object.values(geometry.attributes)) {\n if (!attribute.needsUpdate) continue;\n device.queue.writeBuffer(attribute.buffer, 0, attribute.data);\n attribute.needsUpdate = false;\n geometry.bounds = null;\n }\n const index = geometry.attributes.index;\n if (index) {\n pass.setIndexBuffer(index.buffer, index.indexFormat);\n pass.drawIndexed(geometry.drawRange.count, instances?.count ?? 1, geometry.drawRange.start, 0, 0);\n } else {\n pass.draw(geometry.drawRange.count, instances?.count ?? 1, geometry.drawRange.start, 0);\n }\n}\n", "import { scenePass } from '../globals/scenePass.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { drawGeometry } from './drawGeometry.js';\n\nexport function drawSceneMeshes(backend, encoder, meshes) {\n const renderer = sceneByLayer.get(backend).renderer;\n const pass = encoder.beginRenderPass((\n scenePass.colorAttachments[0].view = renderer.context.getCurrentTexture().createView(),\n scenePass.depthStencilAttachment.view = renderer.depthTexture.createView(),\n scenePass\n ));\n scenePass.colorAttachments[0].view = null;\n scenePass.depthStencilAttachment.view = null;\n pass.setViewport(0, 0, renderer.canvas.width, renderer.canvas.height, 0, 1);\n pass.setBindGroup(1, renderer.sunlight.bindGroup);\n let mesh, world, uniforms, determinant, frontFace, program;\n for (mesh of meshes) {\n world = mesh.worldMatrix;\n if (mesh.texture) {\n mesh.program.uniforms.baseTexture.value = mesh.texture;\n mesh.program.uniforms.opacity.value = mesh.opacity;\n }\n uniforms = mesh.program.uniforms;\n if (uniforms.roofTexture) uniforms.roofTexture.value = sceneByLayer.get(backend)._roofRaster?.texture || renderer.roofFallbackTexture;\n if (!mesh._frontFace || mesh._frontFaceWorldVersion !== mesh._worldMatrixVersion ||\n mesh._worldMatrixVersion === undefined) {\n determinant = world[0] * (world[5] * world[10] - world[6] * world[9]) -\n world[4] * (world[1] * world[10] - world[2] * world[9]) +\n world[8] * (world[1] * world[6] - world[2] * world[5]);\n if (!Number.isFinite(determinant) || determinant === 0) {\n throw /* alloc */ new Error('Singular 3D transform');\n }\n mesh._frontFace = determinant < 0 ? 'cw' : 'ccw';\n mesh._frontFaceWorldVersion = mesh._worldMatrixVersion;\n }\n frontFace = mesh._frontFace;\n program = mesh.program;\n if (program.transparent && program._layerMaterial.doubleSided && !mesh._nativeSource) {\n drawGeometry(backend, mesh, pass, 'front', frontFace);\n drawGeometry(backend, mesh, pass, 'back', frontFace);\n } else {\n drawGeometry(backend, mesh, pass, program.cullMode, frontFace);\n }\n }\n pass.end();\n}\n", "export const disabledShadow = new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0]);\n", "export const shadowValues = new Float32Array(20);\n", "export function shadowMeshMatches(cache, mesh) {\r\n const previous = cache.meshes.get(mesh), range = mesh.geometry.drawRange;\r\n if (!(previous && previous.world === mesh._worldMatrixVersion && previous.geometry === mesh.geometry &&\r\n previous.start === range.start && previous.count === range.count &&\r\n previous.appearance === (mesh._appearance ?? 1))) return false;\r\n let attribute;\r\n for (attribute of Object.values(mesh.geometry.attributes)) {\r\n if (attribute.needsUpdate) return false;\r\n }\r\n return true;\r\n}\r\n", "export function shadowCacheMatches(sun, meshes, sunlight) {\n const cache = sun.cache;\n let unchanged = sun.enabled && cache?.meshes.size === meshes.length;\n let i, mesh;\n if (unchanged) {\n for (i = 0; i < sunlight.direction.length; i++) {\n if (sunlight.direction[i] !== cache.direction[i]) { unchanged = false; break; }\n }\n }\n if (unchanged) {\n for (mesh of meshes) {\n if (!shadowMeshMatches(cache, mesh)) { unchanged = false; break; }\n }\n }\n return unchanged;\n}\nimport { shadowMeshMatches } from './shadowMeshMatches.js';\n", "export const shadowBounds = {\n min: [0, 0, 0],\n max: [0, 0, 0]\n};\n", "export const shadowCamera = {\n position: [0, 0, 0],\n target: [0, 0, 0],\n up: [0, 0, -1],\n x: [0, 0, 0],\n y: [0, 0, 0],\n z: [0, 0, 0],\n fov: 45,\n aspect: 1,\n near: 1,\n far: 500,\n viewMatrix: [],\n projectionMatrix: [],\n projectionViewMatrix: [],\n};\n", "export const shadowLow = [0, 0, 0];\n", "export const shadowHigh = [0, 0, 0];\n", "export function meshShadowBounds(mesh, bounds, matrix) {\r\n let cached = mesh._shadowBounds;\r\n if (!cached || cached.version !== mesh._worldMatrixVersion || cached.bounds !== bounds) {\r\n cached ||= mesh._shadowBounds = /* alloc */ {\r\n min: /* alloc */ [Infinity, Infinity, Infinity],\r\n max: /* alloc */ [-Infinity, -Infinity, -Infinity],\r\n };\r\n cached.version = mesh._worldMatrixVersion;\r\n cached.bounds = bounds;\r\n cached.min.fill(Infinity); cached.max.fill(-Infinity);\r\n let i, x, y, z, w, axis, value;\r\n for (i = 0; i < 8; i++) {\r\n x = i & 1 ? bounds.max[0] : bounds.min[0], y = i & 2 ? bounds.max[1] : bounds.min[1];\r\n z = i & 4 ? bounds.max[2] : bounds.min[2];\r\n w = matrix[3] * x + matrix[7] * y + matrix[11] * z + matrix[15];\r\n for (axis = 0; axis < 3; axis++) {\r\n value = (matrix[axis] * x + matrix[axis + 4] * y + matrix[axis + 8] * z + matrix[axis + 12]) / w;\r\n cached.min[axis] = Math.min(cached.min[axis], value);\r\n cached.max[axis] = Math.max(cached.max[axis], value);\r\n }\r\n }\r\n }\r\n return cached;\r\n}\r\n", "import { computeBounds } from '../geometry/computeBounds.js';\nimport { meshShadowBounds } from './meshShadowBounds.js';\n\nexport function shadowBounds(meshes, output = /* alloc */ {\n min: /* alloc */ [Infinity, Infinity, Infinity],\n max: /* alloc */ [-Infinity, -Infinity, -Infinity],\n}) {\n const { min, max } = output;\n min.fill(Infinity); max.fill(-Infinity);\n let mesh, bounds, matrix, cached, axis;\n for (mesh of meshes) {\n if (!mesh.geometry.bounds || mesh.geometry.attributes.position.needsUpdate) computeBounds(mesh.geometry);\n bounds = mesh.geometry.bounds, matrix = mesh.worldMatrix;\n cached = meshShadowBounds(mesh, bounds, matrix);\n for (axis = 0; axis < 3; axis++) {\n min[axis] = Math.min(min[axis], cached.min[axis]);\n max[axis] = Math.max(max[axis], cached.max[axis]);\n }\n }\n // Include ground receivers below/around the loaded buildings and trees.\n min[1] = Math.min(0, min[1]);\n return output;\n}\n", "import { shadowBounds as sharedShadowBounds } from '../globals/shadowBounds.js';\nimport { shadowCamera } from '../globals/shadowCamera.js';\nimport { shadowLow } from '../globals/shadowLow.js';\nimport { shadowHigh } from '../globals/shadowHigh.js';\n\nimport { shadowBounds } from './shadowBounds.js';\nimport { updateCamera } from '../scene/updateCamera.js';\n\nexport function shadowMatrix(meshes, sunlight) {\n const { min, max } = shadowBounds(meshes, sharedShadowBounds);\n const camera = shadowCamera;\n camera.viewTransform ||= /* alloc */ new DOMMatrix();\n camera.projectionTransform ||= /* alloc */ new DOMMatrix();\n camera.projectionViewTransform ||= /* alloc */ new DOMMatrix();\n const low = shadowLow, high = shadowHigh;\n let i, axis, x, y, z, value;\n const radius = Math.max(100, Math.hypot(max[0] - min[0], max[1] - min[1], max[2] - min[2]));\n for (i = 0; i < 3; i++) {\n camera.target[i] = (min[i] + max[i]) / 2;\n camera.position[i] = camera.target[i] + sunlight.direction[i] * radius * 2;\n }\n camera.far = radius * 5;\n updateCamera(camera);\n const view = camera.viewMatrix;\n low.fill(Infinity); high.fill(-Infinity);\n for (i = 0; i < 8; i++) {\n x = i & 1 ? max[0] : min[0];\n y = i & 2 ? max[1] : min[1];\n z = i & 4 ? max[2] : min[2];\n for (axis = 0; axis < 3; axis++) {\n value = view[axis] * x + view[axis + 4] * y + view[axis + 8] * z + view[axis + 12];\n low[axis] = Math.min(low[axis], value - 20);\n high[axis] = Math.max(high[axis], value + 20);\n }\n }\n const scaleX = 2 / (high[0] - low[0]), scaleY = 2 / (high[1] - low[1]);\n const scaleZ = -1 / (high[2] - low[2]);\n const matrix = /* alloc */ new Float32Array(16);\n for (i = 0; i < 16; i += 4) {\n matrix[i] = view[i] * scaleX;\n matrix[i + 1] = view[i + 1] * scaleY;\n matrix[i + 2] = view[i + 2] * scaleZ;\n matrix[i + 3] = view[i + 3];\n }\n matrix[12] -= (high[0] + low[0]) / (high[0] - low[0]);\n matrix[13] -= (high[1] + low[1]) / (high[1] - low[1]);\n matrix[14] += high[2] / (high[2] - low[2]);\n return matrix;\n}\n", "export const shadowMeshLayout = {\n entries: [{\n binding: 0,\n visibility: null,\n buffer: {\n type: 'uniform',\n hasDynamicOffset: true\n }\n }]\n};\n", "export const shadowDepthLayout = {\n entries: [{\n binding: 0,\n visibility: null,\n buffer: {\n type: 'uniform'\n }\n }]\n};\n", "export const depthBindGroup = {\n layout: null,\n entries: [{\n binding: 0,\n resource: {\n buffer: null\n }\n }]\n};\n", "export const shadowShader = {\n code: null\n};\n", "export const shadowPipeline = {\n layout: null,\n vertex: {\n module: null,\n entryPoint: 'main',\n buffers: null\n },\n fragment: {\n module: null,\n entryPoint: 'fragmentMain',\n targets: []\n },\n primitive: {\n topology: 'triangle-list',\n cullMode: 'none'\n },\n depthStencil: {\n format: 'depth32float',\n depthWriteEnabled: true,\n depthCompare: 'less',\n depthBias: 2,\n depthBiasSlopeScale: 2\n }\n};\n", "export const shadowPipelineLayout = {\n bindGroupLayouts: [null, null]\n};\n", "export const positionLayout = Object.freeze({\n arrayStride: 12,\n attributes: Object.freeze([Object.freeze({\n shaderLocation: 0,\n offset: 0,\n format: 'float32x3'\n })])\n});\n", "export const instanceLayout = Object.freeze({\n arrayStride: 16,\n stepMode: 'instance',\n attributes: Object.freeze([Object.freeze({\n shaderLocation: 4,\n offset: 0,\n format: 'float32x4'\n })])\n});\n", "import { positionLayout as sharedPositionLayout } from './positionLayout.js';\nimport { instanceLayout as sharedInstanceLayout } from './instanceLayout.js';\n\nexport const shadowInstanceLayouts = [sharedPositionLayout, sharedInstanceLayout];\n", "import { positionLayout as sharedPositionLayout } from './positionLayout.js';\n\nexport const shadowLayouts = [sharedPositionLayout];\n", "import { shadowMeshLayout } from '../globals/shadowMeshLayout.js';\nimport { shadowDepthLayout } from '../globals/shadowDepthLayout.js';\nimport { depthBindGroup as sharedDepthBindGroup } from '../globals/depthBindGroup.js';\nimport { shadowShader } from '../globals/shadowShader.js';\nimport { shadowPipeline } from '../globals/shadowPipeline.js';\nimport { shadowPipelineLayout } from '../globals/shadowPipelineLayout.js';\nimport { shadowInstanceLayouts } from '../globals/shadowInstanceLayouts.js';\nimport { shadowLayouts } from '../globals/shadowLayouts.js';\n\nexport function ensureShadowPipeline(device, sun, instanced = false) {\n const key = instanced ? 'instancePipeline' : 'pipeline';\n if (!sun[key]) {\n if (!sun.meshLayout) {\n sun.meshLayout = device.createBindGroupLayout((\n shadowMeshLayout.entries[0].visibility = GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,\n shadowMeshLayout\n ));\n\n // Do not bind the sampled depth texture while it is a render attachment.\n sun.depthLayout = device.createBindGroupLayout((\n shadowDepthLayout.entries[0].visibility = GPUShaderStage.VERTEX,\n shadowDepthLayout\n ));\n\n sun.depthBindGroup = device.createBindGroup((\n sharedDepthBindGroup.layout = sun.depthLayout,\n sharedDepthBindGroup.entries[0].resource.buffer = sun.buffer,\n sharedDepthBindGroup\n ));\n sharedDepthBindGroup.layout = null;\n sharedDepthBindGroup.entries[0].resource.buffer = null;\n }\n const shader = device.createShaderModule((\n shadowShader.code = /* wgsl */`\n struct Mesh { world: mat4x4<f32>, padding: array<vec4<f32>, 4>, highlight: vec4<f32> };\n @group(0) @binding(0) var<uniform> mesh: Mesh;\n @group(1) @binding(0) var<uniform> matrix: mat4x4<f32>;\n @vertex fn main(@location(0) position: vec3<f32>${instanced ? ', @location(4) offset: vec4<f32>' : ''}) -> @builtin(position) vec4<f32> {\n return matrix * mesh.world * vec4<f32>(position${instanced ? ' + offset.xyz' : ''}, 1.0);\n }\n @fragment fn fragmentMain(@builtin(position) position: vec4<f32>) {\n let noise = fract(52.9829189 * fract(dot(floor(position.xy), vec2<f32>(0.06711056, 0.00583715))));\n if (mesh.highlight.w < 1.0 && noise >= mesh.highlight.w) { discard; }\n }\n `,\n shadowShader\n ));\n shadowShader.code = null;\n const buffers = instanced ? shadowInstanceLayouts : shadowLayouts;\n sun[key] = device.createRenderPipeline((\n shadowPipeline.layout = device.createPipelineLayout((shadowPipelineLayout.bindGroupLayouts[0] = sun.meshLayout, shadowPipelineLayout.bindGroupLayouts[1] = sun.depthLayout, shadowPipelineLayout)),\n shadowPipeline.vertex.module = shader,\n shadowPipeline.vertex.buffers = buffers,\n shadowPipeline.fragment.module = shader,\n shadowPipeline\n ));\n shadowPipelineLayout.bindGroupLayouts[0] = null;\n shadowPipelineLayout.bindGroupLayouts[1] = null;\n shadowPipeline.layout = null;\n shadowPipeline.vertex.module = null;\n shadowPipeline.vertex.buffers = null;\n shadowPipeline.fragment.module = null;\n }\n}\n", "export const shadowPass = {\n colorAttachments: [],\n depthStencilAttachment: {\n view: null,\n depthClearValue: 1,\n depthLoadOp: 'clear',\n depthStoreOp: 'store'\n }\n};\n", "export const shadowBindGroup = {\n layout: null,\n entries: [{\n binding: 0,\n resource: {\n buffer: null,\n size: 144\n }\n }]\n};\n", "export const shadowOffsets = [null];\n", "import { shadowPass } from '../globals/shadowPass.js';\nimport { shadowBindGroup } from '../globals/shadowBindGroup.js';\nimport { shadowOffsets } from '../globals/shadowOffsets.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nexport function drawShadowMeshes(backend, encoder, meshes) {\n const renderer = sceneByLayer.get(backend).renderer, device = renderer.device, sun = renderer.sunlight;\n const pass = encoder.beginRenderPass((\n shadowPass.depthStencilAttachment.view = sun.texture.createView(),\n shadowPass\n ));\n shadowPass.depthStencilAttachment.view = null;\n let pipeline = sun.pipeline;\n pass.setPipeline(pipeline);\n pass.setBindGroup(1, sun.depthBindGroup);\n let mesh, instances, nextPipeline, offset, attribute, index, range;\n for (mesh of meshes) {\n instances = mesh.geometry.attributes.instanceOffset;\n nextPipeline = instances ? sun.instancePipeline : sun.pipeline;\n if (nextPipeline !== pipeline) {\n pipeline = nextPipeline;\n pass.setPipeline(pipeline);\n }\n offset = renderer.uniformSlot++ * 256;\n renderer.uniformData.set(mesh.worldMatrix, offset / 4);\n renderer.uniformData[offset / 4 + 35] = mesh._appearance ?? 1;\n if (mesh._shadowBuffer !== renderer.uniformBuffer) {\n mesh._shadowBuffer = renderer.uniformBuffer;\n mesh._shadowBindGroup = device.createBindGroup((\n shadowBindGroup.layout = sun.meshLayout,\n shadowBindGroup.entries[0].resource.buffer = renderer.uniformBuffer,\n shadowBindGroup\n ));\n shadowBindGroup.layout = null;\n shadowBindGroup.entries[0].resource.buffer = null;\n }\n for (attribute of Object.values(mesh.geometry.attributes)) {\n if (attribute.needsUpdate) {\n device.queue.writeBuffer(attribute.buffer, 0, attribute.data);\n attribute.needsUpdate = false;\n }\n }\n pass.setBindGroup(0, mesh._shadowBindGroup, (\n shadowOffsets[0] = offset,\n shadowOffsets\n ));\n\n pass.setVertexBuffer(0, mesh.geometry.attributes.position.buffer);\n if (instances) pass.setVertexBuffer(1, instances.buffer);\n index = mesh.geometry.attributes.index, range = mesh.geometry.drawRange;\n if (index) {\n pass.setIndexBuffer(index.buffer, index.indexFormat);\n pass.drawIndexed(range.count, instances?.count ?? 1, range.start, 0, 0);\n } else pass.draw(range.count, instances?.count ?? 1, range.start, 0);\n }\n pass.end();\n}\n", "export const shadowTexture = {\n size: [null, null],\n format: 'depth32float',\n usage: null\n};\n", "import { shadowTexture } from '../globals/shadowTexture.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { bindSunlight } from './bindSunlight.js';\nimport { destroyTexture } from '../rendering/destroyTexture.js';\n\nexport function resizeSunlight(backend, size) {\n const device = sceneByLayer.get(backend).renderer.device, sun = sceneByLayer.get(backend).renderer.sunlight;\n if (sun.size === size) return;\n if (sun.texture) destroyTexture(backend, sun.texture);\n sun.size = size;\n sun.texture = device.createTexture((\n shadowTexture.size[0] = size,\n shadowTexture.size[1] = size,\n shadowTexture.usage = GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC,\n shadowTexture\n ));\n\n bindSunlight(backend);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { disabledShadow } from '../globals/disabledShadow.js';\nimport { shadowValues } from '../globals/shadowValues.js';\n\nimport { shadowCacheMatches } from './shadowCacheMatches.js';\nimport { shadowMatrix } from './shadowMatrix.js';\nimport { ensureShadowPipeline } from './ensureShadowPipeline.js';\nimport { drawShadowMeshes } from './drawShadowMeshes.js';\nimport { resizeSunlight } from './resizeSunlight.js';\n\n/** One shared directional depth map. Off-screen but loaded geometry can cast shadows. */\n\nexport function renderSunlight(backend, encoder, meshes, sunlight) {\n const renderer = sceneByLayer.get(backend).renderer, device = renderer.device, sun = renderer.sunlight;\n if (!meshes.length || !sunlight || sunlight.altitude < 3) {\n if (!sun.enabled) return;\n device.queue.writeBuffer(sun.buffer, 0, disabledShadow);\n sun.enabled = false;\n sun.cache = null;\n return;\n }\n if (shadowCacheMatches(sun, meshes, sunlight)) return;\n const values = shadowValues;\n sun.enabled = true;\n resizeSunlight(backend, Math.min(2048, device.limits.maxTextureDimension2D));\n values.set(shadowMatrix(meshes, sunlight));\n values[16] = 1;\n device.queue.writeBuffer(sun.buffer, 0, values);\n ensureShadowPipeline(device, sun);\n let mesh;\n for (mesh of meshes) {\n if (mesh.geometry.attributes.instanceOffset) {\n ensureShadowPipeline(device, sun, true);\n break;\n }\n }\n drawShadowMeshes(backend, encoder, meshes);\n const snapshots = /* alloc */ new Map();\n let mesh2;\n for (mesh2 of meshes) {\n snapshots.set(mesh2, /* alloc */ {\n world: mesh2._worldMatrixVersion, geometry: mesh2.geometry,\n start: mesh2.geometry.drawRange.start, count: mesh2.geometry.drawRange.count,\n appearance: mesh2._appearance ?? 1,\n });\n }\n sun.cache = /* alloc */ { direction: /* alloc */ [...sunlight.direction], meshes: snapshots };\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { pendingUpdates } from '../globals/pendingUpdates.js';\n\n\n\nexport function cancelUpdate(backend) {\n const frame = sceneByLayer.get(backend)._frame;\n pendingUpdates.delete(backend);\n sceneByLayer.get(backend)._frame = null;\n if (!pendingUpdates.size && frame != null) {\n cancelAnimationFrame(frame);\n }\n}\n", "/** Reparent/detach scene data without drawing or disposing GPU resources. */\n\nexport function setParent(node, parent) {\n if (node.parent) node.parent.children.splice(node.parent.children.indexOf(node), 1);\n node.parent = parent;\n if (parent) parent.children.push(node);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { destroyTexture } from '../rendering/destroyTexture.js';\nimport { setParent } from '../scene/setParent.js';\nimport { update } from '../scene/update.js';\n\nexport function removeRasterTile(layer, tile) {\n sceneByLayer.get(layer)._terrainRequest?.abort();\n const mesh = sceneByLayer.get(layer)._rasterTiles.get(tile);\n if (!mesh) return;\n setParent(mesh, null);\n update(layer);\n if (mesh.texture !== tile.texture) destroyTexture(layer, mesh.texture.texture);\n sceneByLayer.get(layer)._rasterTiles.delete(tile);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { destroyTexture } from '../rendering/destroyTexture.js';\nimport { removeRasterTile } from './removeRasterTile.js';\nimport { setParent } from '../scene/setParent.js';\nimport { update } from '../scene/update.js';\n\nexport function releaseRasterTile(backend, tile) {\n const key = `${tile.coords.z}/${tile.coords.x}/${tile.coords.y}`;\n if (sceneByLayer.get(backend)._rasterTiles.get(key) !== tile) return;\n sceneByLayer.get(backend)._rasterTiles.delete(key);\n sceneByLayer.get(backend)._rasterVersion = (sceneByLayer.get(backend)._rasterVersion || 0) + 1;\n tile.request.abort();\n if(sceneByLayer.get(backend)._terrain3D) removeRasterTile(sceneByLayer.get(backend)._terrain3D, tile);\n if (tile.mesh) setParent(tile.mesh, null);\n if (tile.texture) destroyTexture(backend, tile.texture.texture);\n tile.image?.close();\n backend.fire('tileunload', /* alloc */ { tile, coords: tile.coords });\n update(backend);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { releaseRasterTile } from './releaseRasterTile.js';\n\nexport function pruneRasterTiles(backend) {\n const wanted = sceneByLayer.get(backend)._wantedRasterTiles;\n const now = performance.now();\n if (sceneByLayer.get(backend)._pruneVersion === sceneByLayer.get(backend)._rasterVersion && sceneByLayer.get(backend)._pruneWanted === wanted &&\n now < sceneByLayer.get(backend)._pruneAfter) return Number.isFinite(sceneByLayer.get(backend)._pruneAfter);\n sceneByLayer.get(backend)._pruneVersion = sceneByLayer.get(backend)._rasterVersion;\n sceneByLayer.get(backend)._pruneWanted = wanted;\n sceneByLayer.get(backend)._pruneAfter = Infinity;\n const pending = /* alloc */ [];\n let key, tile, parts, overlaps, coords, zoom;\n for (key of wanted) {\n tile = sceneByLayer.get(backend)._rasterTiles.get(key);\n if (tile?.done && now - tile.loadedAt < 250) {\n sceneByLayer.get(backend)._pruneAfter = Math.min(sceneByLayer.get(backend)._pruneAfter, tile.loadedAt + 250);\n }\n if (!tile?.done || now - tile.loadedAt < 250) {\n parts = key.split('/');\n pending.push(/* alloc */ { z: Number(parts[0]), x: Number(parts[1]), y: Number(parts[2]) });\n }\n }\n for ([key, tile] of sceneByLayer.get(backend)._rasterTiles) {\n if (wanted.has(key)) continue;\n overlaps = false;\n for (coords of pending) {\n zoom = Math.min(coords.z, tile.coords.z);\n if (Math.floor(coords.x / 2 ** (coords.z - zoom)) === Math.floor(tile.coords.x / 2 ** (tile.coords.z - zoom)) &&\n Math.floor(coords.y / 2 ** (coords.z - zoom)) === Math.floor(tile.coords.y / 2 ** (tile.coords.z - zoom))) {\n overlaps = true;\n break;\n }\n }\n if (!overlaps) releaseRasterTile(backend, tile);\n }\n return Number.isFinite(sceneByLayer.get(backend)._pruneAfter);\n}\n", "import { L } from '../globals/L.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { current } from './current.js';\nimport { syncGridLayer } from './syncGridLayer.js';\nimport { syncImageOverlay } from './syncImageOverlay.js';\nimport { syncMarker } from './syncMarker.js';\nimport { syncVectorLayer } from './syncVectorLayer.js';\nimport { pruneNativeResources } from './pruneNativeResources.js';\n\nexport function synchronizeNativeLayer(state) {\n const { source, meshes, textures } = state;\n if (!current(state) || !sceneByLayer.get(state.backend).renderer || state.failed) return;\n if (!state.dirty && (!state.marker || !state.viewDirty)) return;\n state.dirty = false;\n state.viewDirty = false;\n let mesh, texture;\n for (mesh of meshes.values()) mesh._nativeUsed = false;\n for (texture of textures.values()) texture.used = false;\n if (source instanceof L.GridLayer) syncGridLayer(state);\n else if (source instanceof L.ImageOverlay) syncImageOverlay(state);\n else if (state.marker) syncMarker(state);\n else syncVectorLayer(state);\n pruneNativeResources(state);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nexport function current(state) {\r\n return sceneByLayer.get(state.source)._nativeGPU === state && state.map.hasLayer(state.source);\r\n}\n", "import { L } from '../globals/L.js';\nimport { coreWhite } from '../globals/coreWhite.js';\n\nimport { styleNativeMesh } from './styleNativeMesh.js';\nimport { quadNativeMesh } from './quadNativeMesh.js';\nimport { boundsQuad } from './boundsQuad.js';\n\n\nexport function syncGridLayer(state) {\n const { source, textures, meshes } = state;\n let key, tile, opacity, retained, mesh, nw, se;\n for (key in source._tiles) {\n if (!Object.hasOwn(source._tiles, key)) continue;\n tile = source._tiles[key];\n if (!tile.loaded || tile.el instanceof HTMLImageElement && !tile.el.naturalWidth) continue;\n opacity = (source.options.opacity ?? 1) * (tile._gpuOpacity ?? 1);\n retained = textures.get(key);\n mesh = meshes.get(key);\n if (mesh && retained?.image === tile.el && retained.url === (tile.el.currentSrc || tile.el.src)) {\n retained.used = true;\n styleNativeMesh(state, mesh, coreWhite, opacity);\n } else {\n [nw, se] = source._tileCoordsToNwSe(tile.coords);\n mesh = quadNativeMesh(state, key, tile.el, boundsQuad(state,\n /* alloc */ new L.LatLngBounds(nw, se)), opacity);\n }\n if (mesh) mesh.renderOrder += tile.coords.z / 100;\n }\n}\n", "export const coreWhite = Object.freeze([1, 1, 1]);\n", "import { L } from '../globals/L.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nexport function styleNativeMesh(state, mesh, color, opacity) {\r\n const { source, marker, paneOrder, order } = state;\r\n mesh.program.uniforms.baseColor.value = color;\r\n mesh.program.uniforms.opacity.value = opacity;\r\n if (source instanceof L.GridLayer) mesh.opacity = opacity;\r\n const zIndex = marker ? source._zIndex + (sceneByLayer.get(source)._cameraZIndexOffset || 0) : source.options.zIndex;\r\n mesh.renderOrder = paneOrder * 1e6 + (zIndex || 0) * 1000 + order;\r\n mesh._nativeSource = source;\r\n mesh._nativeUsed = true;\r\n}\n", "export const coreQuadIndices = Object.freeze([0, 2, 1, 1, 2, 3]);\n", "export const coreQuadUV = Object.freeze([0, 0, 1, 0, 0, 1, 1, 1]);\n", "export const coreSampler = Object.freeze({\n minFilter: 'linear',\n magFilter: 'linear'\n});\n", "import { setParent } from '../scene/setParent.js';\nimport { update } from '../scene/update.js';\n\nexport function disposeMesh(backend, mesh) {\n if (!mesh) {\n return;\n }\n setParent(mesh, null);\n update(backend);\n let attribute;\n for (attribute of Object.values(mesh.geometry.attributes)) {\n attribute.buffer.destroy();\n }\n}\n", "import { current } from './current.js';\nimport { refreshNativeLayer } from './refreshNativeLayer.js';\n\nexport async function uploadCanvasTexture(state, key, texture, image, device, width, height) {\n let bitmap;\n try {\n bitmap = await createImageBitmap(image);\n if (!current(state) || state.textures.get(key) !== texture) return;\n device.queue.copyExternalImageToTexture(\n /* alloc */ { source: bitmap },\n /* alloc */ { texture: texture.texture },\n /* alloc */ [width, height]);\n texture.uploaded = image;\n texture.pending = false;\n refreshNativeLayer(state);\n } catch (error) {\n state.failed = true;\n state.source.fire('error', /* alloc */ { error });\n } finally {\n bitmap?.close();\n }\n}\n", "export function uploadNativeImage(state, key, texture, image, device, width, height) {\r\n try {\r\n device.queue.copyExternalImageToTexture(\r\n /* alloc */ { source: image },\r\n /* alloc */ { texture: texture.texture },\r\n /* alloc */ [width, height]);\r\n } catch (error) {\r\n texture.texture.destroy();\r\n state.textures.delete(key);\r\n throw error;\r\n }\r\n texture.uploaded = image;\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { coreSampler } from '../globals/coreSampler.js';\n\nimport { disposeMesh } from '../rendering/disposeMesh.js';\nimport { destroyTexture } from '../rendering/destroyTexture.js';\nimport { uploadCanvasTexture } from './uploadCanvasTexture.js';\nimport { uploadNativeImage } from './uploadNativeImage.js';\n\n\nexport function textureFor(state, key, image) {\n if (!(image instanceof HTMLImageElement) && !(image instanceof HTMLCanvasElement)) {\n throw /* alloc */ new Error('WebGPU native raster layers require image or canvas tiles');\n }\n const { backend, textures, meshes } = state;\n let texture = textures.get(key);\n const url = image.currentSrc || image.src;\n if (!texture || texture.image !== image || texture.url !== url) {\n if (texture) {\n const mesh = meshes.get(key);\n if (mesh) disposeMesh(backend, mesh);\n meshes.delete(key);\n destroyTexture(backend, texture.texture);\n textures.delete(key);\n }\n const width = image.naturalWidth || image.width, height = image.naturalHeight || image.height;\n if (!width || !height) return;\n const { device } = sceneByLayer.get(backend).renderer;\n texture = /* alloc */ {\n device, image, url, format: 'rgba8unorm', uploaded: null,\n texture: device.createTexture(/* alloc */ {\n size: /* alloc */ [width, height], format: 'rgba8unorm',\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,\n }),\n sampler: device.createSampler(coreSampler),\n };\n textures.set(key, texture);\n if (image instanceof HTMLCanvasElement) {\n texture.pending = true;\n uploadCanvasTexture(state, key, texture, image, device, width, height);\n } else {\n uploadNativeImage(state, key, texture, image, device, width, height);\n }\n }\n texture.used = true;\n return texture.uploaded === image ? texture : undefined;\n}\n", "import { L } from '../globals/L.js';\nimport { disposeMesh } from '../rendering/disposeMesh.js';\nimport { createMesh } from '../rendering/createMesh.js';\nimport { styleNativeMesh } from './styleNativeMesh.js';\n\nexport function putNativeMesh(state, key, position, color, opacity, texture, uv) {\n const { backend, source, meshes } = state;\n if (!position.length) return;\n let mesh = meshes.get(key);\n if (!mesh || mesh.geometry.attributes.position.data.length !== position.length ||\n mesh.program.uniforms.baseTexture?.value !== texture) {\n const normal = /* alloc */ [];\n let index;\n for (index = 0; index < position.length; index++) normal.push(index % 3 === 1 ? 1 : 0);\n const data = /* alloc */ { position, normal };\n if (uv) data.uv = uv;\n const material = /* alloc */ {\n vertexColors: false, color, opacity, unlit: true, alphaMode: 'BLEND',\n };\n if (texture) material.baseTexture = texture;\n if (mesh) disposeMesh(backend, mesh);\n mesh = createMesh(backend, data, material, 0, source instanceof L.GridLayer ? state.rasterProgram : undefined);\n if (source instanceof L.GridLayer) {\n state.rasterProgram ||= mesh.program;\n mesh.texture = texture;\n }\n meshes.set(key, mesh);\n } else {\n const attribute = mesh.geometry.attributes.position;\n attribute.data.set(position);\n attribute.needsUpdate = true;\n mesh.geometry.bounds = null;\n }\n styleNativeMesh(state, mesh, color, opacity);\n return mesh;\n}\n", "export const defaultMaterial = Object.freeze({});\n", "export const meshBuffer = {\n size: null,\n usage: null\n};\n", "export const nextId = { value: 0 };\n", "/** A fresh, empty scene-graph node. */\nexport function emptyNode() {\n return /* alloc */ {\n position: /* alloc */ [0, 0, 0],\n rotation: /* alloc */ [0, 0, 0],\n scale: /* alloc */ [1, 1, 1],\n worldMatrix: /* alloc */ [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\n children: /* alloc */ [],\n highlightRange: /* alloc */ [0, 0],\n visible: true,\n };\n}\n", "export const vertexShader = {\n code: null\n};\n", "export const fragmentShader = {\n code: null\n};\n", "export const pipelineLayout = {\n bindGroupLayouts: [null, null]\n};\n", "/**\n * WGSL twin of getElevation for the vertex shader: bilinear DEM pixels, or the first valid\n * neighbour near no-data (stored as -1e9), else `base`. Expects `dem: texture_2d<f32>`.\n */\nexport const elevationWGSL = /* wgsl */`\n fn demSample(pixel: vec2<i32>) -> f32 {\n if (any(pixel < vec2<i32>(0)) || any(pixel >= vec2<i32>(textureDimensions(dem)))) { return -1e9; }\n return textureLoad(dem, pixel, 0).r;\n }\n fn elevation(pixel: vec2<f32>, base: f32) -> f32 {\n let p = pixel - vec2<f32>(0.5);\n let f = fract(p);\n let i = vec2<i32>(floor(p));\n let v00 = demSample(i);\n let v10 = demSample(i + vec2<i32>(1, 0));\n let v01 = demSample(i + vec2<i32>(0, 1));\n let v11 = demSample(i + vec2<i32>(1, 1));\n if (v00 > -1000.0 && v10 > -1000.0 && v01 > -1000.0 && v11 > -1000.0) {\n return mix(mix(v00, v10, f.x), mix(v01, v11, f.x), f.y);\n }\n if (v00 > -1000.0) { return v00; }\n if (v10 > -1000.0) { return v10; }\n if (v01 > -1000.0) { return v01; }\n if (v11 > -1000.0) { return v11; }\n return base;\n }\n`;\n", "export const normalLayout = Object.freeze({\n arrayStride: 12,\n attributes: Object.freeze([Object.freeze({\n shaderLocation: 1,\n offset: 0,\n format: 'float32x3'\n })])\n});\n", "export const colorLayout = Object.freeze({\n arrayStride: 12,\n attributes: Object.freeze([Object.freeze({\n shaderLocation: 2,\n offset: 0,\n format: 'float32x3'\n })])\n});\n", "export const uVLayout = Object.freeze({\n arrayStride: 8,\n attributes: Object.freeze([Object.freeze({\n shaderLocation: 3,\n offset: 0,\n format: 'float32x2'\n })])\n});\n", "export const programLayout = {\n entries: null\n};\n", "export const programEntries = [];\n", "export const meshLayoutEntry = {\n binding: 0,\n visibility: null,\n buffer: {\n type: 'uniform',\n hasDynamicOffset: true\n }\n};\n", "export const frameLayoutEntry = {\n binding: 1,\n visibility: null,\n buffer: {\n type: 'uniform'\n }\n};\n", "export const terrainLayoutEntry = {\n binding: 2,\n visibility: null,\n texture: {\n sampleType: 'unfilterable-float',\n viewDimension: '2d'\n }\n};\n", "export const textureLayoutEntries = [{\n binding: null,\n visibility: null,\n texture: {\n sampleType: 'float',\n viewDimension: '2d'\n }\n },\n {\n binding: null,\n visibility: null,\n texture: {\n sampleType: 'float',\n viewDimension: '2d'\n }\n },\n {\n binding: null,\n visibility: null,\n texture: {\n sampleType: 'float',\n viewDimension: '2d'\n }\n },\n {\n binding: null,\n visibility: null,\n texture: {\n sampleType: 'float',\n viewDimension: '2d'\n }\n },\n {\n binding: null,\n visibility: null,\n texture: {\n sampleType: 'float',\n viewDimension: '2d'\n }\n },\n];\n", "export const samplerLayoutEntries = [{\n binding: null,\n visibility: null,\n sampler: {\n type: 'filtering'\n }\n },\n {\n binding: null,\n visibility: null,\n sampler: {\n type: 'filtering'\n }\n },\n {\n binding: null,\n visibility: null,\n sampler: {\n type: 'filtering'\n }\n },\n {\n binding: null,\n visibility: null,\n sampler: {\n type: 'filtering'\n }\n },\n {\n binding: null,\n visibility: null,\n sampler: {\n type: 'filtering'\n }\n },\n];\n", "import { programLayout } from '../globals/programLayout.js';\r\nimport { programEntries } from '../globals/programEntries.js';\r\nimport { meshLayoutEntry } from '../globals/meshLayoutEntry.js';\r\nimport { frameLayoutEntry } from '../globals/frameLayoutEntry.js';\r\nimport { terrainLayoutEntry } from '../globals/terrainLayoutEntry.js';\r\nimport { textureLayoutEntries } from '../globals/textureLayoutEntries.js';\r\nimport { samplerLayoutEntries } from '../globals/samplerLayoutEntries.js';\r\n\r\nexport function createProgramLayout(device, shaders) {\r\n const bindGroupEntries = programEntries;\r\n bindGroupEntries.length = 0;\r\n meshLayoutEntry.visibility = GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT;\r\n frameLayoutEntry.visibility = GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT;\r\n bindGroupEntries.push(meshLayoutEntry, frameLayoutEntry);\r\n if (shaders.hasTerrain) {\r\n terrainLayoutEntry.visibility = GPUShaderStage.VERTEX;\r\n bindGroupEntries.push(terrainLayoutEntry);\r\n }\r\n let texture, entry, index = 0;\r\n for (texture of shaders.bindings) {\r\n entry = textureLayoutEntries[index];\r\n entry.binding = texture.texture;\r\n entry.visibility = GPUShaderStage.FRAGMENT;\r\n bindGroupEntries.push(entry);\r\n entry = samplerLayoutEntries[index++];\r\n entry.binding = texture.sampler;\r\n entry.visibility = GPUShaderStage.FRAGMENT;\r\n bindGroupEntries.push(entry);\r\n }\r\n const layout = device.createBindGroupLayout((\r\n programLayout.entries = bindGroupEntries,\r\n programLayout\r\n ));\r\n programLayout.entries = null;\r\n return layout;\r\n}\r\n", "export function createProgramUniforms(material) {\r\n const uniforms = /* alloc */ {\r\n baseColor: /* alloc */ { value: material.color || /* alloc */ [1, 1, 1] },\r\n metallic: /* alloc */ { value: material.metallic ?? 0 },\r\n roughness: /* alloc */ { value: material.roughness ?? 0.85 },\r\n opacity: /* alloc */ { value: material.opacity ?? 1 },\r\n alphaCutoff: /* alloc */ { value: material.alphaCutoff ?? 0.5 },\r\n occlusionStrength: /* alloc */ { value: material.occlusionStrength ?? 1 },\r\n emissive: /* alloc */ { value: material.emissive || /* alloc */ [0, 0, 0] },\r\n };\r\n if (material.baseTexture) uniforms.baseTexture = /* alloc */ { value: material.baseTexture };\r\n if (material.metalTexture) uniforms.metalTexture = /* alloc */ { value: material.metalTexture };\r\n if (material.emissiveTexture) uniforms.emissiveTexture = /* alloc */ { value: material.emissiveTexture };\r\n if (material.occlusionTexture) uniforms.occlusionTexture = /* alloc */ { value: material.occlusionTexture };\r\n if (material.roofTexture || material.wallTexture) uniforms.roofTexture = /* alloc */ { value: null };\r\n return uniforms;\r\n}\r\n", "export function textureBinding(bindings, name, enabled) {\n if (!enabled) return '';\n const current = 3 + bindings.length * 2;\n bindings.push(/* alloc */ { name, texture: current, sampler: current + 1 });\n return /* wgsl */ `@group(0) @binding(${current}) var ${name}: texture_2d<f32>;\n @group(0) @binding(${current + 1}) var ${name}Sampler: sampler;`;\n}\n", "export function validateRoofMaterial(material) {\r\n let name, value;\r\n for (name of /* alloc */ ['roofTexture', 'wallTexture']) {\r\n value = material[name];\r\n if (value !== undefined && typeof value !== 'boolean' &&\r\n (!Number.isFinite(value) || value < 0 || value > 1)) {\r\n throw /* alloc */ new Error(`${name} must be a boolean or a finite number between 0 and 1`);\r\n }\r\n }\r\n}\r\n", "export function roofVertexShader(material) {\r\n const roofOpacity = Number(material.roofTexture ?? 0);\r\n const wallOpacity = Number(material.wallTexture ?? 0);\r\n return /* wgsl */ `\r\n output.roofUv = (frame.roofMatrix * world).xz;\r\n output.roof = select(0.0, select(${wallOpacity.toFixed(8)}, ${roofOpacity.toFixed(8)}, input.normal.y >= 0.5), ((${Boolean(material.roofTexture)} && input.normal.y >= 0.5) ||\r\n (${Boolean(material.wallTexture)} && abs(input.normal.y) < 0.5)) && !highlighted);\r\n `;\r\n}\r\n", "import { roofVertexShader } from './roofVertexShader.js';\r\n\r\nexport function materialVertexShader(material, sparkle, elevationWGSL, hasTerrain, textured, hasRoof) {\r\n const instanceOffset = material.instanced ? ' + input.instanceOffset.xyz' : '';\r\n return /* wgsl */ `\r\n struct Mesh {\r\n worldMatrix: mat4x4<f32>,\r\n baseColor: vec4<f32>,\r\n material: vec4<f32>,\r\n emissive: vec4<f32>,\r\n terrain: vec4<f32>,\r\n highlight: vec4<f32>,\r\n cutout: vec4<f32>,\r\n };\r\n struct Frame {\r\n viewMatrix: mat4x4<f32>,\r\n projectionMatrix: mat4x4<f32>,\r\n roofMatrix: mat4x4<f32>,\r\n lightDirection: vec4<f32>,\r\n skyDirection: vec4<f32>,\r\n atmosphereTint: vec4<f32>,\r\n };\r\n @group(0) @binding(0) var<uniform> u: Mesh;\r\n @group(0) @binding(1) var<uniform> frame: Frame;\r\n struct Solar { matrix: mat4x4<f32>, params: vec4<f32> };\r\n @group(1) @binding(0) var<uniform> solar: Solar;\r\n ${hasTerrain ? /* wgsl */ `@group(0) @binding(2) var dem: texture_2d<f32>;${elevationWGSL}` : ''}\r\n struct VertexInput {\r\n @location(0) position: vec3<f32>,\r\n @location(1) normal: vec3<f32>,\r\n ${material.instanced ? '@location(4) instanceOffset: vec4<f32>,' : ''}\r\n ${material.vertexColors ? '@location(2) color: vec3<f32>,' : ''}\r\n ${textured ? '@location(3) uv: vec2<f32>,' : ''}\r\n };\r\n struct VertexOutput {\r\n @builtin(position) position: vec4<f32>,\r\n @location(0) color: vec3<f32>,\r\n @location(1) normal: vec3<f32>,\r\n @location(2) viewPosition: vec3<f32>,\r\n @location(6) shadowPosition: vec4<f32>,\r\n @location(7) worldPosition: vec3<f32>,\r\n ${sparkle ? '@location(8) localPosition: vec3<f32>,' : ''}\r\n ${textured ? '@location(3) uv: vec2<f32>,' : ''}\r\n ${hasRoof ? '@location(4) roofUv: vec2<f32>, @location(5) roof: f32,' : ''}\r\n };\r\n @vertex fn vertexMain(input: VertexInput, @builtin(vertex_index) vertexIndex: u32) -> VertexOutput {\r\n var output: VertexOutput;\r\n var position = input.position${instanceOffset};\r\n ${hasTerrain ? 'position.y = elevation(u.terrain.xy + input.uv * u.terrain.z, u.terrain.w) - u.terrain.w;' : ''}\r\n let featureVertex = f32(vertexIndex)${material.instanced ? ' + input.instanceOffset.w' : ''};\r\n let highlighted = featureVertex >= u.highlight.x && featureVertex < u.highlight.y;\r\n output.color = ${material.vertexColors\r\n ? 'select(input.color, vec3<f32>(72.0 / 255.0, 217.0 / 255.0, 1.0), highlighted)'\r\n : 'u.baseColor.rgb'};\r\n // Inverse-transpose from cofactors; the camera view matrix is orthonormal.\r\n let m = mat3x3<f32>(u.worldMatrix[0].xyz, u.worldMatrix[1].xyz, u.worldMatrix[2].xyz);\r\n let normal = (cross(m[1], m[2]) * input.normal.x + cross(m[2], m[0]) * input.normal.y +\r\n cross(m[0], m[1]) * input.normal.z) / determinant(m);\r\n output.normal = (frame.viewMatrix * vec4<f32>(normal, 0.0)).xyz;\r\n let world = u.worldMatrix * vec4<f32>(position, 1.0);\r\n output.shadowPosition = solar.matrix * world;\r\n output.worldPosition = world.xyz / world.w;\r\n ${sparkle ? `output.localPosition = input.position${instanceOffset};` : ''}\r\n let viewPosition = frame.viewMatrix * world;\r\n output.viewPosition = viewPosition.xyz;\r\n ${textured ? 'output.uv = input.uv;' : ''}\r\n ${hasRoof ? roofVertexShader(material) : ''}\r\n output.position = frame.projectionMatrix * viewPosition;\r\n return output;\r\n }\r\n `;\r\n}\r\n", "export function materialBaseShader(material, hasBase, hasRoof) {\r\n return /* wgsl */ `\r\n var normal = normalize(input.normal) * select(-1.0, 1.0, frontFacing);\r\n let texel = ${hasBase ? 'textureSample(baseTexture, baseTextureSampler, input.uv)' : 'vec4<f32>(1.0)'};\r\n let alpha = u.material.z * texel.a;\r\n ${material.alphaMode === 'MASK' ? 'if (alpha < u.material.w) { discard; }' : ''}\r\n ${material.alphaMode === 'BLEND' ? 'if (alpha < 0.01) { discard; }' : ''}\r\n var base = ${material.vertexColors ? 'toLinear(min(input.color, vec3<f32>(1.0)))' : 'input.color'} *\r\n ${material.baseTexture?.srgb ? 'texel.rgb' : 'toLinear(texel.rgb)'};\r\n ${hasRoof ? /* wgsl */ `\r\n if (input.roof > 0.0 && all(input.roofUv >= vec2<f32>(0.0)) &&\r\n all(input.roofUv <= vec2<f32>(1.0))) {\r\n let roof = textureSampleLevel(roofTexture, roofTextureSampler, input.roofUv, 0.0);\r\n base = mix(base, toLinear(roof.rgb), roof.a * input.roof);\r\n }\r\n ` : ''}`;\r\n}\r\n", "import { materialBaseShader } from './materialBaseShader.js';\r\n\r\nexport function materialSurfaceShader(material, sparkle, hasBase, hasMetal, hasEmissive, hasOcclusion, hasRoof) {\r\n return material.unlit ? /* wgsl */ `\r\n let rasterTexel = ${hasBase ? 'textureSample(baseTexture, baseTextureSampler, input.uv)' : 'vec4<f32>(input.color, 1.0)'};\r\n return vec4<f32>(toSRGB(toLinear(rasterTexel.rgb) * (frame.atmosphereTint.rgb * (0.55 + 0.45 * sunlight) + artificial)), ${material.alphaMode === 'BLEND' ? 'u.material.z * rasterTexel.a' : '1.0'});\r\n ` : /* wgsl */ `${materialBaseShader(material, hasBase, hasRoof)}\r\n let mr = ${hasMetal ? 'textureSample(metalTexture, metalTextureSampler, input.uv)' : 'vec4<f32>(1.0)'};\r\n let metal = clamp(u.material.x * mr.b, 0.0, 1.0);\r\n let rough = clamp(u.material.y * mr.g, 0.08, 1.0);\r\n let view = normalize(-input.viewPosition);\r\n let halfVector = normalize(view + frame.lightDirection.xyz);\r\n let nl = max(dot(normal, frame.lightDirection.xyz), 0.0) * frame.lightDirection.w * sunlight;\r\n let nv = max(dot(normal, view), 0.001);\r\n let nh = max(dot(normal, halfVector), 0.0);\r\n let vh = max(dot(view, halfVector), 0.0);\r\n let a2 = pow(rough, 4.0);\r\n let d = a2 / max(PI * pow(nh * nh * (a2 - 1.0) + 1.0, 2.0), 0.0001);\r\n let gv = nl * sqrt(nv * nv * (1.0 - a2) + a2);\r\n let gl = nv * sqrt(nl * nl * (1.0 - a2) + a2);\r\n let visibility = 0.5 / max(gv + gl, 0.0001);\r\n let f0 = mix(vec3<f32>(0.04), base, metal);\r\n let fresnel = f0 + (1.0 - f0) * pow(1.0 - vh, 5.0);\r\n let specular = d * visibility * fresnel;\r\n let diffuse = (1.0 - metal) * base / PI;\r\n let sky = dot(normal, frame.skyDirection.xyz) * 0.5 + 0.5;\r\n let ambient = mix(toLinear(vec3<f32>(0.455, 0.412, 0.322)), vec3<f32>(1.0), sky) * (2.0 / PI);\r\n let ao = ${hasOcclusion ? 'mix(1.0, textureSample(occlusionTexture, occlusionTextureSampler, input.uv).r, u.emissive.w)' : '1.0'};\r\n ${sparkle ? /* wgsl */ `\r\n let lattice = (fract(input.localPosition / 2.5) - 0.5) * 2.5;\r\n let pointGlow = (1.0 - smoothstep(0.16, 0.42, length(lattice))) * u.highlight.z;\r\n ` : ''}\r\n // Vertex colour components above 1 are self-lit (e.g. vehicle lamps): dim by day, bright at night.\r\n let glow = ${sparkle ? 'vec3<f32>(3.0, 2.6, 1.8) * pointGlow +' : ''}${material.vertexColors\r\n ? ' max(input.color - vec3<f32>(1.0), vec3<f32>(0.0)) * (0.3 + 5.0 * frame.skyDirection.w) +' : ''} u.emissive.rgb * ${hasEmissive\r\n ? material.emissiveTexture.srgb\r\n ? 'textureSample(emissiveTexture, emissiveTextureSampler, input.uv).rgb'\r\n : 'toLinear(textureSample(emissiveTexture, emissiveTextureSampler, input.uv).rgb)'\r\n : 'vec3<f32>(1.0)'};\r\n var color = ambient * base * (1.0 - metal) * ao +\r\n (diffuse + specular) * nl * toLinear(vec3<f32>(1.0, 0.937, 0.835)) * 3.0 + glow;\r\n ${material.vertexColors ? 'color = base * (ambient + toLinear(vec3<f32>(1.0, 0.937, 0.835)) * (3.0 / PI) * nl) + glow;' : ''}\r\n color = (color - glow) * frame.atmosphereTint.rgb + base * artificial * (1.0 - metal * 0.5) + glow;\r\n appearance(input.position.xy);\r\n return vec4<f32>(toSRGB(color), ${material.alphaMode === 'BLEND' ? 'alpha' : '1.0'});\r\n `;\r\n}\r\n", "import { defaultMaterial } from '../globals/defaultMaterial.js';\nimport { textureBinding } from '../rendering/textureBinding.js';\nimport { validateRoofMaterial } from './validateRoofMaterial.js';\nimport { materialVertexShader } from './materialVertexShader.js';\nimport { materialSurfaceShader } from './materialSurfaceShader.js';\n\n/** Material WGSL and texture bindings, without a GPU device or Leaflet layer. */\nexport function materialShaders(material = defaultMaterial, sparkle = false, elevationWGSL = '') {\n const hasBase = Boolean(material.baseTexture);\n const hasMetal = Boolean(material.metalTexture);\n const hasEmissive = Boolean(material.emissiveTexture);\n const hasOcclusion = Boolean(material.occlusionTexture);\n const hasRoof = Boolean(material.roofTexture || material.wallTexture);\n validateRoofMaterial(material);\n const hasTerrain = Boolean(material.terrain);\n const textured = hasBase || hasMetal || hasEmissive || hasOcclusion || material.nightLight;\n const vertex = materialVertexShader(material, sparkle, elevationWGSL, hasTerrain, textured, hasRoof);\n const bindings = /* alloc */ [];\n const baseBinding = textureBinding(bindings, 'baseTexture', hasBase);\n const metalBinding = textureBinding(bindings, 'metalTexture', hasMetal);\n const emissiveBinding = textureBinding(bindings, 'emissiveTexture', hasEmissive);\n const occlusionBinding = textureBinding(bindings, 'occlusionTexture', hasOcclusion);\n const roofBinding = textureBinding(bindings, 'roofTexture', hasRoof);\n const fragment = /* wgsl */ `\n struct Mesh {\n worldMatrix: mat4x4<f32>,\n baseColor: vec4<f32>,\n material: vec4<f32>,\n emissive: vec4<f32>,\n terrain: vec4<f32>,\n highlight: vec4<f32>,\n cutout: vec4<f32>,\n };\n struct Frame {\n viewMatrix: mat4x4<f32>,\n projectionMatrix: mat4x4<f32>,\n roofMatrix: mat4x4<f32>,\n lightDirection: vec4<f32>,\n skyDirection: vec4<f32>,\n atmosphereTint: vec4<f32>,\n };\n struct Solar {\n matrix: mat4x4<f32>,\n params: vec4<f32>,\n };\n @group(0) @binding(0) var<uniform> u: Mesh;\n @group(0) @binding(1) var<uniform> frame: Frame;\n @group(1) @binding(0) var<uniform> solar: Solar;\n @group(1) @binding(1) var shadowTexture: texture_depth_2d;\n @group(1) @binding(2) var shadowSampler: sampler_comparison;\n @group(1) @binding(3) var<storage, read> lightGrid: array<vec4<f32>>;\n ${baseBinding}${metalBinding}${emissiveBinding}${occlusionBinding}${roofBinding}\n struct FragmentInput {\n @builtin(position) position: vec4<f32>,\n @location(0) color: vec3<f32>,\n @location(1) normal: vec3<f32>,\n @location(2) viewPosition: vec3<f32>,\n @location(6) shadowPosition: vec4<f32>,\n @location(7) worldPosition: vec3<f32>,\n ${sparkle ? '@location(8) localPosition: vec3<f32>,' : ''}\n ${textured ? '@location(3) uv: vec2<f32>,' : ''}\n ${hasRoof ? '@location(4) roofUv: vec2<f32>, @location(5) roof: f32,' : ''}\n };\n const PI: f32 = 3.14159265;\n fn toLinear(c: vec3<f32>) -> vec3<f32> {\n return select(c / 12.92, pow((c + vec3<f32>(0.055)) / 1.055, vec3<f32>(2.4)), c >= vec3<f32>(0.04045));\n }\n fn toSRGB(c: vec3<f32>) -> vec3<f32> {\n return select(c * 12.92, 1.055 * pow(max(c, vec3<f32>(0.0)), vec3<f32>(1.0 / 2.4)) - vec3<f32>(0.055), c >= vec3<f32>(0.0031308));\n }\n fn sunVisibility(position: vec4<f32>) -> f32 {\n let p = position.xyz / position.w;\n let uv = vec2<f32>(p.x * 0.5 + 0.5, 0.5 - p.y * 0.5);\n if (solar.params.x < 0.5 || any(uv < vec2<f32>(0.0)) || any(uv > vec2<f32>(1.0)) || p.z < 0.0 || p.z > 1.0) {\n return 1.0;\n }\n return textureSampleCompareLevel(shadowTexture, shadowSampler, uv, p.z - 0.0003);\n }\n fn gridLighting(position: vec3<f32>, normal: vec3<f32>, offset: u32) -> vec3<f32> {\n let grid = lightGrid[offset];\n if (grid.w < 1.0) { return vec3<f32>(0.0); }\n let cell = vec2<i32>(floor((position.xz - grid.xy) / grid.z));\n if (any(cell < vec2<i32>(0)) || cell.x >= i32(grid.w) || cell.y >= i32(lightGrid[offset + 1u].x)) {\n return vec3<f32>(0.0);\n }\n let header = lightGrid[offset + 2u + u32(cell.y) * u32(grid.w) + u32(cell.x)];\n var light = vec3<f32>(0.0);\n for (var i = 0u; i < u32(header.y); i++) {\n let source = lightGrid[offset + u32(header.x) + i * 2u];\n let colour = lightGrid[offset + u32(header.x) + i * 2u + 1u];\n let delta = source.xyz - position;\n let distance2 = max(dot(delta, delta), 1.0);\n let falloff = max(0.0, 1.0 - distance2 / (source.w * source.w));\n let lambert = max(0.0, dot(normal, delta / sqrt(distance2)));\n light += toLinear(colour.rgb) * colour.w * lambert * falloff * falloff / distance2;\n }\n return light;\n }\n fn localLighting(position: vec3<f32>, normal: vec3<f32>) -> vec3<f32> {\n if (frame.skyDirection.w <= 0.0) { return vec3<f32>(0.0); }\n var light = gridLighting(position, normal, 0u);\n let moving = u32(lightGrid[1].z);\n if (moving > 0u) { light += gridLighting(position, normal, moving); }\n return light * frame.skyDirection.w;\n }\n fn appearance(position: vec2<f32>) {\n // Screen-door dissolve keeps opaque depth writes and avoids sorting whole buildings as glass.\n let noise = fract(52.9829189 * fract(dot(floor(position), vec2<f32>(0.06711056, 0.00583715))));\n if (u.highlight.w < 1.0 && noise >= u.highlight.w) { discard; }\n }\n @fragment fn fragmentMain(input: FragmentInput, @builtin(front_facing) frontFacing: bool) -> @location(0) vec4<f32> {\n let cutoutDistance = distance(input.position.xy, u.cutout.xy);\n if (select((cutoutDistance < u.cutout.z), (cutoutDistance >= u.cutout.z), u.cutout.w > 0.0)) { discard; }\n ${material.nightLight ? /* wgsl */ `\n if (input.uv.x <= 2.0) {\n let radial = max(0.0, 1.0 - dot(input.uv, input.uv));\n let alpha = radial * radial * frame.skyDirection.w * 0.65;\n if (alpha < 0.005) { discard; }\n appearance(input.position.xy);\n return vec4<f32>(input.color, alpha);\n }\n ` : ''}\n let sunlight = sunVisibility(input.shadowPosition);\n let worldNormal = normalize(transpose(mat3x3<f32>(frame.viewMatrix[0].xyz, frame.viewMatrix[1].xyz, frame.viewMatrix[2].xyz)) * normalize(input.normal)) * select(-1.0, 1.0, frontFacing);\n let artificial = localLighting(input.worldPosition, worldNormal);\n ${materialSurfaceShader(material, sparkle, hasBase, hasMetal, hasEmissive, hasOcclusion, hasRoof)}\n }\n `;\n return /* alloc */ { vertex, fragment, bindings, textured, hasTerrain };\n}\n", "export async function reportCompilation(backend, pending) {\n let info, message;\n try {\n const infos = await Promise.all(pending);\n let errors = '', errorCount = 0;\n for (info of infos) {\n for (message of info.messages) if (message.type === 'error') errors += `${errorCount++ ? '\\n' : ''}${message.message}`;\n }\n if (errorCount) {\n backend.fire('error', /* alloc */ {\n error: /* alloc */ new Error(`Unable to compile Layer3D WGSL: ${errors}`),\n });\n }\n } catch (error) {\n backend.fire('error', /* alloc */ { error });\n }\n}\n", "import { defaultMaterial } from '../globals/defaultMaterial.js';\nimport { vertexShader } from '../globals/vertexShader.js';\nimport { fragmentShader } from '../globals/fragmentShader.js';\nimport { pipelineLayout as sharedPipelineLayout } from '../globals/pipelineLayout.js';\nimport { elevationWGSL } from '../globals/elevationWGSL.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { positionLayout } from '../globals/positionLayout.js';\nimport { normalLayout } from '../globals/normalLayout.js';\nimport { colorLayout } from '../globals/colorLayout.js';\nimport { uVLayout } from '../globals/uVLayout.js';\nimport { instanceLayout } from '../globals/instanceLayout.js';\nimport { createProgramLayout } from './createProgramLayout.js';\nimport { createProgramUniforms } from './createProgramUniforms.js';\n\n\nimport { materialShaders } from '../shaders/materialShaders.js';\n\nimport { reportCompilation } from './reportCompilation.js';\n\nexport function createProgram(backend, material = defaultMaterial) {\n const shaders = materialShaders(\n material,\n !!backend.options.nightSparkle,\n material.terrain ? elevationWGSL : ''\n );\n const vertex = sceneByLayer.get(backend).renderer.device.createShaderModule((\n vertexShader.code = shaders.vertex,\n vertexShader\n ));\n vertexShader.code = null;\n const fragment = sceneByLayer.get(backend).renderer.device.createShaderModule((\n fragmentShader.code = shaders.fragment,\n fragmentShader\n ));\n fragmentShader.code = null;\n reportCompilation(backend, /* alloc */ [\n vertex.getCompilationInfo(),\n fragment.getCompilationInfo()\n ]);\n const vertexBuffers = /* alloc */ [\n positionLayout,\n normalLayout,\n material.vertexColors ? colorLayout : null,\n shaders.textured ? uVLayout : null,\n ];\n if (material.instanced) vertexBuffers.push(instanceLayout);\n const bindGroupLayout = createProgramLayout(sceneByLayer.get(backend).renderer.device, shaders);\n const pipelineLayout = sceneByLayer.get(backend).renderer.device.createPipelineLayout((\n sharedPipelineLayout.bindGroupLayouts[0] = bindGroupLayout,\n sharedPipelineLayout.bindGroupLayouts[1] = sceneByLayer.get(backend).renderer.sunlight.layout,\n sharedPipelineLayout\n ));\n sharedPipelineLayout.bindGroupLayouts[0] = null;\n sharedPipelineLayout.bindGroupLayouts[1] = null;\n const uniforms = createProgramUniforms(material);\n return /* alloc */ {\n device: sceneByLayer.get(backend).renderer.device,\n vertex,\n fragment,\n bindings: shaders.bindings,\n vertexBuffers,\n bindGroupLayout,\n pipelineLayout,\n pipelineCache: /* alloc */ new Map(),\n cullMode: material.doubleSided ? 'none' : 'back',\n transparent: material.alphaMode === 'BLEND',\n depthWrite: material.depthWrite ?? material.alphaMode !== 'BLEND',\n depthTest: material.depthTest !== false,\n terrain: material.terrain,\n nightLight: Boolean(material.nightLight),\n nightSparkle: !!backend.options.nightSparkle,\n uniforms,\n _layerMaterial: material,\n };\n}\n", "import { defaultMaterial } from '../globals/defaultMaterial.js';\nimport { meshBuffer } from '../globals/meshBuffer.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { nextId } from '../globals/nextId.js';\n\n\n\nimport { emptyNode } from '../scene/emptyNode.js';\nimport { createProgram } from './createProgram.js';\nimport { setParent } from '../scene/setParent.js';\nimport { update } from '../scene/update.js';\n\n/**\n * Add a non-indexed, vertex-coloured mesh from flat vec3 arrays `{ position, normal, color }` in layer-local metres.\n * `usage` adds GPUBufferUsage flags to the vertex buffers (e.g. STORAGE for compute passes).\n * A supplied `program` shares compiled shaders and pipelines across compatible meshes.\n */\n\nexport function createMesh(backend, data, material = defaultMaterial, usage = 0, program) {\n const { device } = sceneByLayer.get(backend).renderer, attributes = /* alloc */ {};\n let name, values, array, size, buffer;\n for ([name, values] of Object.entries(data)) {\n array = /* alloc */ new Float32Array(values);\n size = name === 'uv' ? 2 : 3;\n buffer = device.createBuffer((\n meshBuffer.size = Math.max(4, array.byteLength),\n meshBuffer.usage = GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST | usage,\n meshBuffer\n ));\n\n device.queue.writeBuffer(buffer, 0, array);\n attributes[name] = /* alloc */ { size, data: array, count: array.length / size, buffer };\n }\n const mesh = /* alloc */ {\n ...emptyNode(),\n device,\n geometry: /* alloc */ { device, attributes, drawRange: /* alloc */ { start: 0, count: attributes.position.count } },\n program: program || createProgram(backend, /* alloc */ { vertexColors: true, doubleSided: true, ...material }),\n id: nextId.value++, renderOrder: 0, extras: /* alloc */ {},\n };\n setParent(mesh, sceneByLayer.get(backend).root);\n update(backend);\n return mesh;\n}\n", "import { coreQuadIndices } from '../globals/coreQuadIndices.js';\nimport { coreQuadUV } from '../globals/coreQuadUV.js';\nimport { coreWhite } from '../globals/coreWhite.js';\nimport { textureFor } from './textureFor.js';\nimport { putNativeMesh } from './putNativeMesh.js';\n\n\nexport function quadNativeMesh(state, key, image, corners, opacity) {\n const texture = textureFor(state, key, image);\n if (!texture) return;\n const indices = coreQuadIndices;\n const position = /* alloc */ [];\n const uv = /* alloc */ [];\n let index;\n for (index of indices) {\n position.push(...corners[index]);\n uv.push(coreQuadUV[index * 2], coreQuadUV[index * 2 + 1]);\n }\n return putNativeMesh(state, key, position, coreWhite, opacity, texture, uv);\n}\n", "import { radians } from '../globals/radians.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\r\nexport function localPosition(state, latlng) {\r\n const { map, backend } = state, crs = map.options.crs;\r\n const origin = crs.project(sceneByLayer.get(backend).location), point = crs.project(latlng);\r\n const metres = Math.cos(sceneByLayer.get(backend).location.lat * radians);\r\n return /* alloc */ [(point.x - origin.x) * metres, 0, -(point.y - origin.y) * metres];\r\n}\r\n", "import { localPosition } from './localPosition.js';\n\nexport function boundsQuad(state, bounds) {\n const positions = /* alloc */ [];\n let i, corner;\n for (i = 0; i < 4; i++) {\n corner = i === 0 ? bounds.getNorthWest() : i === 1 ? bounds.getNorthEast()\n : i === 2 ? bounds.getSouthWest() : bounds.getSouthEast();\n positions.push(localPosition(state, corner));\n }\n return positions;\n}\n", "import { quadNativeMesh } from './quadNativeMesh.js';\nimport { boundsQuad } from './boundsQuad.js';\n\nexport function syncImageOverlay(state) {\r\n const { source } = state;\r\n if (source._image?.complete && source._image.naturalWidth) {\r\n quadNativeMesh(state, 'image', source._image, boundsQuad(state, source.getBounds()), source.options.opacity ?? 1);\r\n }\r\n}\n", "export const coreMatrixKeys = Object.freeze([\n 'm11', 'm12', 'm13', 'm14', 'm21', 'm22', 'm23', 'm24',\n 'm31', 'm32', 'm33', 'm34', 'm41', 'm42', 'm43', 'm44',\n]);\n", "import { L } from '../globals/L.js';\nimport { radians } from '../globals/radians.js';\n\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\n\nexport function markerCameraIconPoint(marker, x, y) {\n let rotation = marker.options.rotation + (marker.options.rotateWithView ? mapGetBearing(marker._map) * radians : 0);\n if (marker.options.keepUpright && Math.cos(rotation) < 0) rotation += Math.PI;\n const scale = marker.options.scale;\n return /* alloc */ new L.Point((x * Math.cos(rotation) - y * Math.sin(rotation)) * scale,\n (x * Math.sin(rotation) + y * Math.cos(rotation)) * scale);\n}\n", "export function transformNativePoint(target, matrix, x, y, z, w) {\r\n target.x = matrix.m11 * x + matrix.m21 * y + matrix.m31 * z + matrix.m41 * w;\r\n target.y = matrix.m12 * x + matrix.m22 * y + matrix.m32 * z + matrix.m42 * w;\r\n target.z = matrix.m13 * x + matrix.m23 * y + matrix.m33 * z + matrix.m43 * w;\r\n target.w = matrix.m14 * x + matrix.m24 * y + matrix.m34 * z + matrix.m44 * w;\r\n return target;\r\n}\r\n", "export function markerImageBounds(state, key, image) {\r\n const options = state.source.options.icon.options;\r\n const dimensions = options[key === 'shadow' ? 'shadowSize' : 'iconSize'];\r\n const bounds = state.markerImageBounds ||= /* alloc */ [0, 0, 0, 0];\r\n bounds[0] = dimensions ? dimensions.x ?? dimensions[0] : image.naturalWidth;\r\n bounds[1] = dimensions ? dimensions.y ?? dimensions[1] : image.naturalHeight;\r\n const anchor = (key === 'shadow' && options.shadowAnchor) || options.iconAnchor;\r\n bounds[2] = anchor ? anchor.x ?? anchor[0] : Math.floor(bounds[0] / 2);\r\n bounds[3] = anchor ? anchor.y ?? anchor[1] : Math.floor(bounds[1] / 2);\r\n return bounds;\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { coreMatrixKeys } from '../globals/coreMatrixKeys.js';\nimport { markerCameraIconPoint } from './markerCameraIconPoint.js';\n\nimport { localPosition } from './localPosition.js';\n\nimport { transformNativePoint } from './transformNativePoint.js';\nimport { markerImageBounds } from './markerImageBounds.js';\n\nexport function markerQuadCorners(state, key, image) {\n const { source, map, backend } = state;\n const position = localPosition(state, source.getLatLng());\n const size = map.getSize();\n const matrices = state.markerMatrices ||= /* alloc */ {\n root: /* alloc */ new DOMMatrix(),\n camera: /* alloc */ new DOMMatrix(),\n point: /* alloc */ { x: 0, y: 0, z: 0, w: 1 },\n };\n const root = matrices.root, camera = matrices.camera, point = matrices.point;\n const worldMatrix = sceneByLayer.get(backend).root.worldMatrix, projection = sceneByLayer.get(backend).camera.projectionViewMatrix;\n let i, keyName;\n for (i = 0; i < 16; i++) {\n keyName = coreMatrixKeys[i];\n root[keyName] = worldMatrix[i];\n camera[keyName] = projection[i];\n }\n transformNativePoint(point, root, position[0], position[1], position[2], 1);\n transformNativePoint(point, camera, point.x, point.y, point.z, point.w);\n const clipX = point.x, clipY = point.y, clipZ = point.z, clipW = point.w;\n camera.invertSelf();\n root.invertSelf();\n const [width, height, anchorX, anchorY] = markerImageBounds(state, key, image);\n const centerX = (clipX / clipW + 1) * size.x / 2, centerY = (1 - clipY / clipW) * size.y / 2;\n const left = centerX - anchorX;\n const top = centerY - anchorY;\n const corners = /* alloc */ [];\n let pointX, pointY, offset, x, y;\n for (i = 0; i < 4; i++) {\n pointX = left + (i % 2 ? width : 0);\n pointY = top + (i < 2 ? 0 : height);\n offset = markerCameraIconPoint(source, pointX - centerX, pointY - centerY);\n x = centerX + offset.x, y = centerY + offset.y;\n transformNativePoint(point, camera, x / size.x * 2 - 1, 1 - y / size.y * 2, clipZ / clipW, 1);\n transformNativePoint(point, root, point.x / point.w, point.y / point.w, point.z / point.w, 1);\n corners.push(/* alloc */ [point.x, point.y, point.z]);\n }\n return corners;\n}\n", "import { quadNativeMesh } from './quadNativeMesh.js';\nimport { markerQuadCorners } from './markerQuadCorners.js';\n\nexport function syncMarker(state) {\n const { source } = state;\n let i, key, image, mesh;\n for (i = 0; i < 2; i++) {\n key = i ? 'icon' : 'shadow';\n image = i ? source._icon : source._shadow;\n if (!(image instanceof HTMLImageElement) || !image.complete || !image.naturalWidth) continue;\n mesh = quadNativeMesh(state, key, image, markerQuadCorners(state, key, image), source.options.opacity ?? 1);\n if (key === 'shadow' && mesh) mesh.renderOrder -= 100 * 1e6;\n }\n}\n", "export const geometryPixelStates = [];\n", "import { L } from '../globals/L.js';\nimport { visit } from './visit.js';\nimport { dashValues } from './dashValues.js';\nimport { circleGeometry } from './circleGeometry.js';\n\n/** Leaflet paths become flat triangles; pixel-sized strokes are rebuilt on zoom. */\nexport function nativeGeometry(source, map, point) {\n const fill = /* alloc */ [];\n const stroke = /* alloc */ [];\n const options = source.options;\n const width = Number(options.weight) || 0;\n const dash = dashValues(options);\n const context = /* alloc */ { fill, stroke, options, width, dash, point, map };\n if (source instanceof L.CircleMarker) {\n circleGeometry(source, context);\n } else {\n const closed = source instanceof L.Polygon;\n visit(context, source.getLatLngs(), closed);\n }\n return /* alloc */ { fill, stroke };\n}\n", "import { L } from '../globals/L.js';\nimport { polygon } from './polygon.js';\n\nexport function visit(context, coordinates, closed) {\n if (!coordinates.length) return;\n let child;\n if (coordinates[0] instanceof L.LatLng) polygon(context, /* alloc */ [coordinates], closed);\n else if (closed && coordinates[0][0] instanceof L.LatLng) polygon(context, coordinates, closed);\n else for (child of coordinates) visit(context, child, closed);\n}\n", "export function triangle(point, target, a, b, c) {\r\n return target.push(...point(a), ...point(b), ...point(c));\r\n}\r\n", "import { L } from '../globals/L.js';\nimport { triangle } from './nativeTriangle.js';\r\nimport { disk } from './disk.js';\r\n\r\nexport function segment(context, a, b, startCap, endCap) {\r\n const { options, width, stroke, point } = context;\r\n const radius = width / 2;\r\n const length = a.distanceTo(b);\r\n if (!length) return;\r\n const direction = b.subtract(a).divideBy(length);\r\n const normal = /* alloc */ new L.Point(-direction.y * radius, direction.x * radius);\r\n if (options.lineCap === 'square') {\r\n if (startCap) a = a.subtract(direction.multiplyBy(radius));\r\n if (endCap) b = b.add(direction.multiplyBy(radius));\r\n }\r\n triangle(point, stroke, a.add(normal), a.subtract(normal), b.add(normal));\r\n triangle(point, stroke, b.add(normal), a.subtract(normal), b.subtract(normal));\r\n if (options.lineCap === 'round') {\r\n if (startCap) disk(point, a, radius, stroke);\r\n if (endCap) disk(point, b, radius, stroke);\r\n }\r\n}\r\n", "export const tau = 2 * Math.PI;\r\n", "import { tau } from '../globals/tau.js';\nimport { L } from '../globals/L.js';\nexport function diskAt(center, radius, radiusY, count, index) {\r\n return /* alloc */ new L.Point(center.x + radius * Math.cos(index * tau / count),\r\n center.y + radiusY * Math.sin(index * tau / count));\r\n}\r\n", "import { triangle } from './nativeTriangle.js';\nimport { diskAt } from './diskAt.js';\n\nexport function disk(point, center, radius, target, radiusY = radius) {\n if (!(radius > 0) || !(radiusY > 0)) return;\n const count = Math.max(12, Math.min(128, Math.ceil(Math.PI * Math.sqrt(radius))));\n let i;\n for (i = 0; i < count; i++) {\n triangle(point, target, center, diskAt(center, radius, radiusY, count, i), diskAt(center, radius, radiusY, count, i + 1));\n }\n}\n", "import { L } from '../globals/L.js';\r\nimport { triangle } from './nativeTriangle.js';\r\nimport { disk } from './disk.js';\r\n\r\nexport function lineJoin(context, points, i, b, length) {\r\n const { options, width, point, stroke } = context;\r\n const a = points[i], radius = width / 2;\r\n if (options.lineJoin === 'round') {\r\n disk(point, a, radius, stroke);\r\n return;\r\n }\r\n const previous = a.subtract(points[(i + points.length - 1) % points.length]);\r\n const previousLength = Math.hypot(previous.x, previous.y);\r\n if (!previousLength || !length) return;\r\n const incoming = previous.divideBy(previousLength), outgoing = b.subtract(a).divideBy(length);\r\n const side = incoming.x * outgoing.y - incoming.y * outgoing.x > 0 ? -1 : 1;\r\n const n1 = /* alloc */ new L.Point(-incoming.y * side, incoming.x * side);\r\n const n2 = /* alloc */ new L.Point(-outgoing.y * side, outgoing.x * side);\r\n const from = a.add(n1.multiplyBy(radius)), to = a.add(n2.multiplyBy(radius));\r\n const denominator = 1 + n1.x * n2.x + n1.y * n2.y;\r\n const miter = denominator > 0 ? n1.add(n2).multiplyBy(radius / denominator) : null;\r\n triangle(point, stroke, from, a, to);\r\n if (options.lineJoin === 'miter' && miter && Math.hypot(miter.x, miter.y) <= radius * 4) {\r\n triangle(point, stroke, from, a.add(miter), to);\r\n }\r\n}\r\n", "import { segment } from './segment.js';\r\n\r\nexport function dashedSegment(context, a, b, length, distance, period) {\r\n const dash = context.dash;\r\n let offset = 0, phase, index, end, delta;\r\n while (offset < length) {\r\n phase = ((distance + offset) % period + period) % period, index = 0;\r\n while (phase >= dash[index]) phase -= dash[index++];\r\n end = Math.min(length, offset + dash[index] - phase);\r\n if (index % 2 === 0) {\r\n delta = b.subtract(a).divideBy(length);\r\n segment(context, a.add(delta.multiplyBy(offset)), a.add(delta.multiplyBy(end)), true, true);\r\n }\r\n offset = end;\r\n }\r\n}\r\n", "import { segment } from './segment.js';\r\nimport { lineJoin } from './lineJoin.js';\r\nimport { dashedSegment } from './dashedSegment.js';\r\n\r\nexport function line(context, points, closed) {\r\n const { options, width, dash } = context;\r\n if (!options.stroke || width <= 0 || points.length < 2) return;\r\n let distance = Number(options.dashOffset) || 0;\r\n let period = 0, value, i, a, b, length;\r\n for (value of dash) period += value;\r\n for (i = 0; i < points.length - (closed ? 0 : 1); i++) {\r\n a = points[i], b = points[(i + 1) % points.length], length = a.distanceTo(b);\r\n if (!dash.length) {\r\n segment(context, a, b, !closed && i === 0, !closed && i === points.length - 2);\r\n if (closed || i > 0) lineJoin(context, points, i, b, length);\r\n } else {\r\n dashedSegment(context, a, b, length, distance, period);\r\n }\r\n distance += length;\r\n }\r\n}\r\n", "export function minimumX(ring) {\n let minimum = Infinity;\n let point;\n for (point of ring) minimum = Math.min(minimum, point.x);\n return minimum;\n}\n", "export function mergeHoles(source, target, start, width) {\r\n const middle = Math.min(start + width, source.length), end = Math.min(start + width * 2, source.length);\r\n let left = start, right = middle, output;\r\n for (output = start; output < end; output++) {\r\n if (left < middle && (right >= end || source[left].x <= source[right].x)) {\r\n target[output] = source[left++];\r\n } else {\r\n target[output] = source[right++];\r\n }\r\n }\r\n}\r\n", "import { minimumX } from './minimumX.js';\nimport { mergeHoles } from './mergeHoles.js';\n\nexport function sortHoles(holes) {\n if (holes.length < 2) return holes;\n const buffer = /* alloc */ new Array(holes.length);\n const entries = /* alloc */ [];\n let ring, width, start, previous, i;\n for (ring of holes) entries.push(/* alloc */ { ring, x: minimumX(ring) });\n let source = entries, target = buffer;\n for (width = 1; width < entries.length; width *= 2) {\n for (start = 0; start < entries.length; start += width * 2) {\n mergeHoles(source, target, start, width);\n }\n previous = source;\n source = target;\n target = previous;\n }\n for (i = 0; i < holes.length; i++) holes[i] = source[i].ring;\n return holes;\n}\n", "export function cross(a, b, c) {\r\n return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);\r\n}\r\n", "export function equal(a, b) {\r\n return a.x === b.x && a.y === b.y;\r\n}\r\n", "import { cross } from './cross.js';\nimport { equal } from './equal.js';\n\nexport function clean(ring) {\n let changed = true;\n let i, a, b, c;\n while (changed && ring.length > 3) {\n changed = false;\n for (i = 0; i < ring.length; i++) {\n a = ring[(i + ring.length - 1) % ring.length], b = ring[i], c = ring[(i + 1) % ring.length];\n if (equal(a, b) || Math.abs(cross(a, b, c)) < 1e-10) {\n ring.splice(i, 1); changed = true; break;\n }\n }\n }\n if (ring.length < 3) throw /* alloc */ new Error('Degenerate polygon ring');\n return ring;\n}\n", "/**\n * @returns {boolean} Whether the `{x, y}` points are in clockwise order.\n */\n\nexport function isClockWise(points) {\n let area = 0;\n let i, a, b;\n for (i = 0; i < points.length; i++) {\n a = points[i], b = points[(i + 1) % points.length];\n area += a.x * b.y - b.x * a.y;\n }\n return area < 0;\n}\n", "import { clean } from './clean.js';\r\nimport { isClockWise } from './isClockWise.js';\r\n\r\nexport function polygonRings(paths, vertices) {\r\n const rings = /* alloc */ [];\r\n let offset = 0, index, path, ring;\r\n for (index = 0; index < paths.length; index++) {\r\n path = paths[index];\r\n ring = clean(vertices.slice(offset, offset += path.length));\r\n if (isClockWise(ring) !== Boolean(index)) ring.reverse();\r\n rings.push(ring);\r\n }\r\n return rings;\r\n}\r\n", "export function inside(point, ring) {\n let result = false;\n let i, j, a, b;\n for (i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n a = ring[i], b = ring[j];\n if ((a.y > point.y) !== (b.y > point.y) &&\n point.x < (b.x - a.x) * (point.y - a.y) / (b.y - a.y) + a.x) result = !result;\n }\n return result;\n}\n", "import { inside } from './inside.js';\n\nexport function insideHole(point, rings) {\n let i;\n for (i = 1; i < rings.length; i++) if (inside(point, rings[i])) return true;\n return false;\n}\n", "export function on(p, q, r) {\r\n return Math.min(p.x, q.x) <= r.x && r.x <= Math.max(p.x, q.x) &&\r\n Math.min(p.y, q.y) <= r.y && r.y <= Math.max(p.y, q.y);\r\n}\r\n", "import { equal } from './equal.js';\r\nimport { cross } from './cross.js';\r\nimport { on } from './on.js';\r\n\r\nexport function intersects(a, b, c, d) {\r\n if (equal(a, c) || equal(a, d) || equal(b, c) || equal(b, d)) return false;\r\n const abC = cross(a, b, c), abD = cross(a, b, d), cdA = cross(c, d, a), cdB = cross(c, d, b);\r\n return abC * abD < 0 && cdA * cdB < 0 ||\r\n abC === 0 && on(a, b, c) || abD === 0 && on(a, b, d) ||\r\n cdA === 0 && on(c, d, a) || cdB === 0 && on(c, d, b);\r\n}\r\n", "import { intersects } from './intersects.js';\n\nexport function crossesRing(a, b, ring) {\n let i;\n for (i = 0; i < ring.length; i++) {\n if (intersects(a, b, ring[i], ring[(i + 1) % ring.length])) return true;\n }\n return false;\n}\n", "import { crossesRing } from './crossesRing.js';\n\nexport function crossesBoundary(a, b, polygon, rings) {\n if (crossesRing(a, b, polygon)) return true;\n let i;\n for (i = 1; i < rings.length; i++) if (crossesRing(a, b, rings[i])) return true;\n return false;\n}\n", "import { inside } from './inside.js';\r\nimport { insideHole } from './insideHole.js';\r\nimport { crossesBoundary } from './crossesBoundary.js';\r\n\r\nexport function connectHole(polygon, hole, rings, mid) {\r\n let h2 = -1, p2 = -1, distance = Infinity, h, p, a, b, d;\r\n for (h = 0; h < hole.length; h++) for (p = 0; p < polygon.length; p++) {\r\n a = hole[h], b = polygon[p], d = (a.x - b.x) ** 2 + (a.y - b.y) ** 2;\r\n if (d >= distance) continue;\r\n mid.x = (a.x + b.x) / 2; mid.y = (a.y + b.y) / 2;\r\n if (!inside(mid, rings[0]) || insideHole(mid, rings)) continue;\r\n if (crossesBoundary(a, b, polygon, rings)) continue;\r\n h2 = h; p2 = p; distance = d;\r\n }\r\n if (h2 < 0) throw /* alloc */ new Error('Unable to connect polygon hole');\r\n return /* alloc */ [...polygon.slice(0, p2 + 1), ...hole.slice(h2), ...hole.slice(0, h2 + 1),\r\n polygon[p2], ...polygon.slice(p2 + 1)];\r\n}\r\n", "import { equal } from './equal.js';\nimport { cross } from './cross.js';\n\nexport function containsVertex(polygon, a, b, c) {\n let p;\n for (p of polygon) {\n if (!equal(p, a) && !equal(p, b) && !equal(p, c) &&\n cross(a, b, p) >= 0 && cross(b, c, p) >= 0 && cross(c, a, p) >= 0) return true;\n }\n return false;\n}\n", "import { cross } from './cross.js';\r\nimport { containsVertex } from './containsVertex.js';\r\n\r\nexport function clipEars(polygon) {\r\n const result = /* alloc */ [];\r\n let clipped, i, a, b, c, p;\r\n while (polygon.length > 3) {\r\n clipped = false;\r\n for (i = 0; i < polygon.length; i++) {\r\n a = polygon[(i + polygon.length - 1) % polygon.length], b = polygon[i], c = polygon[(i + 1) % polygon.length];\r\n if (cross(a, b, c) <= 1e-10) continue;\r\n if (containsVertex(polygon, a, b, c)) continue;\r\n result.push(/* alloc */ [a.index, b.index, c.index]); polygon.splice(i, 1); clipped = true; break;\r\n }\r\n if (!clipped) throw /* alloc */ new Error('Unable to triangulate polygon: invalid or self-intersecting rings');\r\n }\r\n if (cross(...polygon) > 1e-10) {\r\n const triangle = /* alloc */ [];\r\n for (p of polygon) triangle.push(p.index);\r\n result.push(triangle);\r\n }\r\n return result;\r\n}\r\n", "export function area(ring) {\n let sum = 0;\n let i, p, q;\n for (i = 0; i < ring.length; i++) {\n p = ring[i], q = ring[(i + 1) % ring.length];\n sum += p.x * q.y - q.x * p.y;\n }\n return Math.abs(sum) / 2;\n}\n", "import { area } from './area.js';\r\nimport { cross } from './cross.js';\r\n\r\nexport function validateArea(rings, vertices, result) {\r\n let holeArea = 0, actual = 0, i, triangle;\r\n for (i = 1; i < rings.length; i++) holeArea += area(rings[i]);\r\n const expected = area(rings[0]) - holeArea;\r\n for (triangle of result) actual += cross(vertices[triangle[0]], vertices[triangle[1]], vertices[triangle[2]]) / 2;\r\n if (expected <= 0 || Math.abs(actual - expected) > Math.max(1e-7, expected * 1e-8)) throw /* alloc */ new Error('Polygon triangulation area mismatch');\r\n}\r\n", "import { geometryEmpty } from '../globals/geometryEmpty.js';\nimport { sortHoles } from './sortHoles.js';\nimport { polygonRings } from './polygonRings.js';\nimport { connectHole } from './connectHole.js';\nimport { clipEars } from './clipEars.js';\nimport { validateArea } from './validateArea.js';\n\n\n/**\n * Triangulates a polygon given as `{x, y}` points.\n * Rings omit the repeated closing point; winding is normalized internally.\n * Vertex indices remain relative to the original inputs after duplicate/collinear\n * cleanup. Hole bridges duplicate endpoints, not source vertices.\n * @param {Object[]} contour Outer boundary.\n * @param {Object[][]} [holes] Interior boundaries.\n *\n * @returns {number[][]} Triangles as indices in `[...contour, ...holes.flat()]`.\n */\n\nexport function triangulate(contour, holes = geometryEmpty) {\n const paths = /* alloc */ [contour, ...holes];\n const points = paths.flat();\n let p, index, hole;\n for (p of points) {\n if (!Number.isFinite(p.x) || !Number.isFinite(p.y)) throw /* alloc */ new Error('Invalid polygon coordinates');\n }\n // Translate near the origin to avoid cancellation with geographic coordinates.\n const vertices = /* alloc */ [];\n for (index = 0; index < points.length; index++) {\n p = points[index];\n vertices.push(/* alloc */ { x: p.x - contour[0].x, y: p.y - contour[0].y, index });\n }\n // Remove zero-area corners before connecting holes; keep original vertex indices.\n const rings = polygonRings(paths, vertices);\n let polygon = rings[0].slice();\n // A bridge must stay inside the outer boundary, outside every hole, and cross no edge.\n // ponytail: quadratic ear clipping for building footprints; use spatial indexing for large rings.\n const holesToConnect = sortHoles(rings.slice(1));\n const mid = holesToConnect.length ? /* alloc */ { x: 0, y: 0 } : null;\n for (hole of holesToConnect) {\n polygon = connectHole(polygon, hole, rings, mid);\n }\n // Clip a convex corner only when no other vertex is inside/on its triangle.\n const result = clipEars(polygon);\n // Reject incomplete coverage instead of silently emitting a partial roof.\n validateArea(rings, vertices, result);\n return result;\n}\n", "import { triangle } from './nativeTriangle.js';\nimport { line } from './line.js';\nimport { triangulate } from '../triangulation/triangulate.js';\n\nexport function polygon(context, rings, closed) {\n const { options, fill, point, map } = context;\n const projected = /* alloc */ [];\n let ring, path, latlng, indices;\n for (ring of rings) {\n path = /* alloc */ [];\n for (latlng of ring) path.push(map.project(latlng));\n projected.push(path);\n }\n if (closed && options.fill && projected[0]?.length >= 3) {\n const valid = /* alloc */ [];\n for (ring of projected) if (ring.length >= 3) valid.push(ring);\n const vertices = valid.flat();\n for (indices of triangulate(valid[0], valid.slice(1))) {\n triangle(point, fill, vertices[indices[0]], vertices[indices[1]], vertices[indices[2]]);\n }\n }\n for (ring of projected) line(context, ring, closed);\n}\n", "export function dashValues(options) {\r\n const values = Array.isArray(options.dashArray) ? options.dashArray :\r\n String(options.dashArray || '').trim().split(/[ ,]+/);\r\n const dash = /* alloc */ [];\r\n let value, allZero = true;\r\n for (value of values) dash.push(Number(value));\r\n for (value of dash) {\r\n if (!Number.isFinite(value) || value < 0) throw /* alloc */ new Error('Invalid Leaflet dashArray');\r\n if (value !== 0) allZero = false;\r\n }\r\n if (allZero) dash.length = 0;\r\n if (dash.length % 2) dash.push(...dash);\r\n return dash;\r\n}\r\n", "import { L } from '../globals/L.js';\r\nimport { disk } from './disk.js';\r\nimport { circleAt } from './circleAt.js';\r\nimport { line } from './line.js';\r\nimport { triangle } from './nativeTriangle.js';\r\n\r\nexport function circleGeometry(source, context) {\r\n const { map, point, fill, stroke, options, dash, width } = context;\r\n const center = map.project(source.getLatLng());\r\n let radius = source.getRadius(), radiusY = radius, index, i;\r\n if (source instanceof L.Circle) {\r\n source._project();\r\n const projected = source._point.add(map.getPixelOrigin());\r\n center.x = projected.x;\r\n center.y = projected.y;\r\n radius = source._radius;\r\n radiusY = source._radiusY || radius;\r\n }\r\n if (options.fill) disk(point, center, radius, fill, radiusY);\r\n const count = Math.max(12, Math.min(128, Math.ceil(Math.PI * Math.sqrt(Math.max(radius, radiusY)))));\r\n if (dash.length) {\r\n const points = /* alloc */ [];\r\n for (index = 0; index < count; index++) points.push(circleAt(center, radius, radiusY, count, index));\r\n line(context, points, true);\r\n }\r\n else if (options.stroke && width > 0) {\r\n for (i = 0; i < count; i++) {\r\n triangle(point, stroke, circleAt(center, radius, radiusY, count, i, width / 2),\r\n circleAt(center, radius, radiusY, count, i, -width / 2), circleAt(center, radius, radiusY, count, i + 1, width / 2));\r\n triangle(point, stroke, circleAt(center, radius, radiusY, count, i + 1, width / 2),\r\n circleAt(center, radius, radiusY, count, i, -width / 2), circleAt(center, radius, radiusY, count, i + 1, -width / 2));\r\n }\r\n }\r\n}\r\n", "import { tau } from '../globals/tau.js';\nimport { L } from '../globals/L.js';\nexport function circleAt(center, radius, radiusY, count, index, offset = 0) {\r\n const angle = index * tau / count;\r\n return /* alloc */ new L.Point(center.x + Math.max(0, radius + offset) * Math.cos(angle),\r\n center.y + Math.max(0, radiusY + offset) * Math.sin(angle));\r\n}\r\n", "import { localPosition } from './localPosition.js';\n\nexport function localPixel(state, point) {\r\n return localPosition(state, state.map.unproject(point));\r\n}\n", "import { geometryPixelStates } from '../globals/geometryPixelStates.js';\n\nimport { localPixel } from './localPixel.js';\n\nexport function localPixelForGeometry(point) {\r\n return localPixel(geometryPixelStates[geometryPixelStates.length - 1], point);\r\n}\n", "export function toSRGB(value) {\n return value <= 0.0031308 ? value * 12.92 : 1.055 * value ** (1 / 2.4) - 0.055;\n}\n", "export function channel(n, h, l, a) {\n const k = (n + h * 12) % 12;\n return l - a * Math.max(-1, Math.min(k - 3, 9 - k, 1));\n}\n", "import { toSRGB } from \"./toSRGB.js\";\nimport { channel } from \"./channel.js\";\n\n/**\n * HSL inputs are linear-space to preserve the original building styling.\n * Numeric/CSS/RGB inputs are already sRGB; CSS alpha is not used for extrusion.\n * @param {number|string|Object} value 0xRRGGBB, CSS color, {r,g,b}, or {h,s,l} in 0..1.\n * @returns {Object} sRGB {r,g,b} components in 0..1.\n */\n\nexport function parseColor(value) {\n if (value && typeof value === 'object' && 'h' in value) {\n const a = value.s * Math.min(value.l, 1 - value.l);\n return /* alloc */ {\n r: toSRGB(channel(0, value.h, value.l, a)),\n g: toSRGB(channel(8, value.h, value.l, a)),\n b: toSRGB(channel(4, value.h, value.l, a))\n };\n }\n if (value && typeof value === 'object' && 'r' in value) {\n return value;\n }\n if (typeof value === 'number') {\n return /* alloc */ {\n r: (value >> 16 & 255) / 255,\n g: (value >> 8 & 255) / 255,\n b: (value & 255) / 255,\n };\n }\n if (typeof value !== 'string' || !CSS.supports('color', value)) {\n throw /* alloc */ new Error('Invalid 3D color');\n }\n const context = document.createElement('canvas').getContext('2d');\n context.fillStyle = value;\n context.fillRect(0, 0, 1, 1);\n const [r, g, b] = context.getImageData(0, 0, 1, 1).data;\n return /* alloc */ {\n r: r / 255,\n g: g / 255,\n b: b / 255\n };\n}\n", "import { geometryPixelStates } from '../globals/geometryPixelStates.js';\n\n\nimport { nativeGeometry } from '../geometry/nativeGeometry.js';\nimport { localPixelForGeometry } from './localPixelForGeometry.js';\nimport { parseColor } from '../utils/parseColor.js';\nimport { putNativeMesh } from './putNativeMesh.js';\n\nexport function syncVectorLayer(state) {\n const { source } = state;\n geometryPixelStates.push(state);\n let geometry;\n try {\n geometry = nativeGeometry(source, state.map, localPixelForGeometry);\n } finally {\n geometryPixelStates.pop();\n }\n const { fill, stroke } = geometry;\n let i, key, positions, color, opacity, r, g, b;\n for (i = 0; i < 2; i++) {\n key = i ? 'stroke' : 'fill';\n positions = i ? stroke : fill;\n color = i ? source.options.color : source.options.fillColor || source.options.color;\n opacity = i ? source.options.opacity : source.options.fillOpacity;\n if (!positions.length) continue;\n ({ r, g, b } = parseColor(color));\n putNativeMesh(state, key, positions, /* alloc */ [r, g, b], opacity ?? 1);\n }\n}\n", "import { disposeMesh } from '../rendering/disposeMesh.js';\r\nimport { destroyTexture } from '../rendering/destroyTexture.js';\r\n\r\nexport function pruneNativeResources(state) {\r\n const { meshes, textures, backend } = state;\r\n let mesh, texture, key;\r\n for ([key, mesh] of meshes) {\r\n if (mesh._nativeUsed) continue;\r\n disposeMesh(backend, mesh);\r\n meshes.delete(key);\r\n texture = textures.get(key);\r\n if (texture) destroyTexture(backend, texture.texture);\r\n textures.delete(key);\r\n }\r\n for ([key, texture] of textures) {\r\n if (texture.used) continue;\r\n destroyTexture(backend, texture.texture);\r\n textures.delete(key);\r\n }\r\n}\r\n", "import { synchronizeNativeLayer } from './synchronizeNativeLayer.js';\r\n\r\nexport function beforeNativeRender(state) {\r\n try {\r\n synchronizeNativeLayer(state);\r\n } catch (error) {\r\n state.failed = true;\r\n state.source.fire('error', /* alloc */ { error });\r\n }\r\n}\r\n", "import { pendingUpdates } from '../globals/pendingUpdates.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\n\nimport { render } from '../rendering/render.js';\n\nexport function renderPendingUpdates() {\n const updates = /* alloc */ [...pendingUpdates];\n pendingUpdates.clear();\n let failure;\n let backend;\n for (backend of updates) {\n sceneByLayer.get(backend)._frame = null;\n if (sceneByLayer.get(backend)._shared !== backend || !sceneByLayer.get(backend).renderer) continue;\n try {\n render(backend);\n } catch (error) {\n failure ||= error;\n }\n }\n if (failure) throw failure;\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { pendingUpdates } from '../globals/pendingUpdates.js';\n\n\nimport { render } from \"../rendering/render.js\";\n\nimport { renderPendingUpdates } from './renderPendingUpdates.js';\n\n/** Scene graph, shared camera and frame rendering. */\n/** Content changes: render once on the next animation frame. */\nexport function update(backend) {\n const shared = sceneByLayer.get(backend)._shared;\n if (!shared) return backend;\n if (shared !== backend) {\n update(shared);\n return backend;\n }\n if (sceneByLayer.get(backend)._frame != null) return backend;\n const first = pendingUpdates.values().next().value;\n pendingUpdates.add(backend);\n sceneByLayer.get(backend)._frame = first ? sceneByLayer.get(first)._frame : requestAnimationFrame(renderPendingUpdates);\n return backend;\n}\n", "import { L } from '../globals/L.js';\nexport function hideTargets(state) {\n const { source } = state;\n const htmlIcon = source instanceof L.Marker && source.options.icon instanceof L.DivIcon;\n const icon = htmlIcon ? null : source._icon, shadow = htmlIcon ? null : source._shadow;\n let i, element;\n for (element of state.hidden) {\n if (element === icon || element === shadow) continue;\n element.classList.remove('leaflet-webgpu-target');\n state.hidden.delete(element);\n }\n for (i = 0; i < 2; i++) {\n element = i ? shadow : icon;\n if (!element || state.hidden.has(element)) continue;\n element.classList.add('leaflet-webgpu-target');\n state.hidden.add(element);\n }\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { nativeImageRefresh } from './nativeImageRefresh.js';\nimport { nativeImageError } from './nativeImageError.js';\nimport { removeImageState } from './removeImageState.js';\nimport { addImageState } from './addImageState.js';\nimport { update } from '../scene/update.js';\nimport { hideTargets } from './hideTargets.js';\n\nexport function refreshNativeLayer(state = this) {\n state.dirty = true;\n state.viewDirty = true;\n state.failed = false;\n hideTargets(state);\n const source = state.source;\n let i, image;\n for (image of state.images) {\n if (image === source._icon || image === source._shadow || image === source._image) continue;\n image.removeEventListener('load', nativeImageRefresh);\n image.removeEventListener('error', nativeImageError);\n removeImageState(image, state);\n state.images.delete(image);\n }\n for (i = 0; i < 3; i++) {\n image = i === 0 ? source._icon : i === 1 ? source._shadow : source._image;\n if (!(image instanceof HTMLImageElement) || state.images.has(image)) continue;\n state.images.add(image);\n addImageState(image, state);\n image.addEventListener('load', nativeImageRefresh);\n image.addEventListener('error', nativeImageError);\n }\n if (sceneByLayer.get(state.backend)._shared) update(state.backend);\n}\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetLatLng(...args) { return nativeLayerMethod('setLatLng', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetLatLngs(...args) { return nativeLayerMethod('setLatLngs', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeAddLatLng(...args) { return nativeLayerMethod('addLatLng', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetRadius(...args) { return nativeLayerMethod('setRadius', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetStyle(...args) { return nativeLayerMethod('setStyle', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeRedraw(...args) { return nativeLayerMethod('redraw', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetIcon(...args) { return nativeLayerMethod('setIcon', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetUrl(...args) { return nativeLayerMethod('setUrl', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetBounds(...args) { return nativeLayerMethod('setBounds', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetOpacity(...args) { return nativeLayerMethod('setOpacity', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetZIndex(...args) { return nativeLayerMethod('setZIndex', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetZIndexOffset(...args) { return nativeLayerMethod('setZIndexOffset', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeBringToFront(...args) { return nativeLayerMethod('bringToFront', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeBringToBack(...args) { return nativeLayerMethod('bringToBack', this, args); }\n", "import { nativeSetLatLng } from '../core/nativeSetLatLng.js';\nimport { nativeSetLatLngs } from '../core/nativeSetLatLngs.js';\nimport { nativeAddLatLng } from '../core/nativeAddLatLng.js';\nimport { nativeSetRadius } from '../core/nativeSetRadius.js';\nimport { nativeSetStyle } from '../core/nativeSetStyle.js';\nimport { nativeRedraw } from '../core/nativeRedraw.js';\nimport { nativeSetIcon } from '../core/nativeSetIcon.js';\nimport { nativeSetUrl } from '../core/nativeSetUrl.js';\nimport { nativeSetBounds } from '../core/nativeSetBounds.js';\nimport { nativeSetOpacity } from '../core/nativeSetOpacity.js';\nimport { nativeSetZIndex } from '../core/nativeSetZIndex.js';\nimport { nativeSetZIndexOffset } from '../core/nativeSetZIndexOffset.js';\nimport { nativeBringToFront } from '../core/nativeBringToFront.js';\nimport { nativeBringToBack } from '../core/nativeBringToBack.js';\n\nexport const nativeMethodHandlers = {\n setLatLng: nativeSetLatLng,\n setLatLngs: nativeSetLatLngs,\n addLatLng: nativeAddLatLng,\n setRadius: nativeSetRadius,\n setStyle: nativeSetStyle,\n redraw: nativeRedraw,\n setIcon: nativeSetIcon,\n setUrl: nativeSetUrl,\n setBounds: nativeSetBounds,\n setOpacity: nativeSetOpacity,\n setZIndex: nativeSetZIndex,\n setZIndexOffset: nativeSetZIndexOffset,\n bringToFront: nativeBringToFront,\n bringToBack: nativeBringToBack,\n};\n", "import { L } from '../globals/L.js';\nimport { sceneEmptyOptions } from '../globals/sceneEmptyOptions.js';\r\n\r\n\r\nexport function createLayer(options = sceneEmptyOptions) {\r\n return /* alloc */ new L.Layer(options);\r\n}\r\n", "export const sceneEmptyOptions = Object.freeze({});\n", "import { L } from '../globals/L.js';\nimport { nativeEventMaps } from '../globals/nativeEventMaps.js';\n\n\nimport { raycast } from '../picking/raycast.js';\n\nimport { restoreNativeEvents } from './restoreNativeEvents.js';\nimport { handleNativeMapEvent } from './handleNativeMapEvent.js';\n\n/** One GPU hit test per map event, rather than one invisible SVG path per feature. */\nexport function nativeEvents(state) {\n const { map } = state;\n let context = nativeEventMaps.get(map);\n if (!context) {\n context = /* alloc */ {\n map, states: /* alloc */ new Set(), hovered: null,\n };\n const pointer = L.version.startsWith('2');\n context.move = pointer ? 'pointermove' : 'mousemove';\n context.out = pointer ? 'pointerout' : 'mouseout';\n context.over = pointer ? 'pointerover' : 'mouseover';\n context.descriptor = Object.getOwnPropertyDescriptor(map, '_fireDOMEvent');\n context.fireDOMEvent = map._fireDOMEvent;\n context.handle = handleNativeMapEvent;\n context.restore = restoreNativeEvents;\n nativeEventMaps.set(map, context);\n map._fireDOMEvent = handleNativeMapEvent;\n }\n context.states.add(state);\n state._nativeEventContext = context;\n}\n", "export const nativeEventMaps = new WeakMap();\n", "export const trafficByLayer = new WeakMap();\n", "export function mergeHits(source, target, start, width) {\r\n const middle = Math.min(start + width, source.length), end = Math.min(start + width * 2, source.length);\r\n let left = start, right = middle, output;\r\n for (output = start; output < end; output++) {\r\n if (left < middle && (right >= end || !(source[right].distance < source[left].distance))) {\r\n target[output] = source[left++];\r\n } else {\r\n target[output] = source[right++];\r\n }\r\n }\r\n}\r\n", "export function sortHits(hits) {\n if (hits.length < 2) return hits;\n const buffer = /* alloc */ new Array(hits.length);\n let source = hits, target = buffer;\n let width, start, previous, i;\n for (width = 1; width < hits.length; width *= 2) {\n for (start = 0; start < hits.length; start += width * 2) {\n mergeHits(source, target, start, width);\n }\n previous = source;\n source = target;\n target = previous;\n }\n if (source !== hits) for (i = 0; i < hits.length; i++) hits[i] = source[i];\n return hits;\n}\nimport { mergeHits } from './mergeHits.js';\n", "export function localRay(ray, mesh, origin, direction) {\r\n const inverse = /* alloc */ new DOMMatrix(mesh.worldMatrix).invertSelf();\r\n const inverseValues = inverse.toFloat64Array();\r\n let value, x, y, z, w;\r\n for (value of inverseValues) {\r\n if (!Number.isFinite(value)) throw /* alloc */ new Error('Singular 3D transform');\r\n }\r\n x = ray.origin[0], y = ray.origin[1], z = ray.origin[2];\r\n w = inverseValues[3] * x + inverseValues[7] * y + inverseValues[11] * z + inverseValues[15];\r\n origin[0] = (inverseValues[0] * x + inverseValues[4] * y + inverseValues[8] * z + inverseValues[12]) / w;\r\n origin[1] = (inverseValues[1] * x + inverseValues[5] * y + inverseValues[9] * z + inverseValues[13]) / w;\r\n origin[2] = (inverseValues[2] * x + inverseValues[6] * y + inverseValues[10] * z + inverseValues[14]) / w;\r\n x = ray.direction[0], y = ray.direction[1], z = ray.direction[2];\r\n direction[0] = inverseValues[0] * x + inverseValues[4] * y + inverseValues[8] * z;\r\n direction[1] = inverseValues[1] * x + inverseValues[5] * y + inverseValues[9] * z;\r\n direction[2] = inverseValues[2] * x + inverseValues[6] * y + inverseValues[10] * z;\r\n const directionLength = Math.hypot(...direction) || 1;\r\n direction[0] /= directionLength;\r\n direction[1] /= directionLength;\r\n direction[2] /= directionLength;\r\n}\r\n", "import { computeBounds } from '../geometry/computeBounds.js';\r\n\r\nexport function rayBounds(mesh, origin, direction) {\r\n if (!mesh.geometry.bounds) computeBounds(mesh.geometry);\r\n let near = 0, far = Infinity, i, a, b;\r\n for (i = 0; i < 3; i++) {\r\n if (Math.abs(direction[i]) < 1e-12) {\r\n if (origin[i] < mesh.geometry.bounds.min[i] || origin[i] > mesh.geometry.bounds.max[i]) {\r\n far = -Infinity;\r\n break;\r\n }\r\n } else {\r\n a = (mesh.geometry.bounds.min[i] - origin[i]) / direction[i], b = (mesh.geometry.bounds.max[i] - origin[i]) / direction[i];\r\n near = Math.max(near, Math.min(a, b));\r\n far = Math.min(far, Math.max(a, b));\r\n }\r\n }\r\n return !(far < near);\r\n}\r\n", "export function readTriangle(mesh, i, a, b, c) {\r\n const { position, index, instanceOffset } = mesh.geometry.attributes;\r\n const vertices = index?.count || position.count;\r\n const vertex = instanceOffset ? i % vertices : i;\r\n const offset = instanceOffset ? Math.floor(i / vertices) * instanceOffset.size : 0;\r\n const x = instanceOffset?.data[offset] ?? 0;\r\n const y = instanceOffset?.data[offset + 1] ?? 0;\r\n const z = instanceOffset?.data[offset + 2] ?? 0;\r\n const ai = (index ? index.data[vertex] : vertex) * position.size;\r\n const bi = (index ? index.data[vertex + 1] : vertex + 1) * position.size;\r\n const ci = (index ? index.data[vertex + 2] : vertex + 2) * position.size;\r\n a[0] = position.data[ai]; a[1] = position.data[ai + 1]; a[2] = position.data[ai + 2];\r\n b[0] = position.data[bi]; b[1] = position.data[bi + 1]; b[2] = position.data[bi + 2];\r\n c[0] = position.data[ci]; c[1] = position.data[ci + 1]; c[2] = position.data[ci + 2];\r\n if (instanceOffset) {\r\n a[0] = Math.fround(a[0] + x); a[1] = Math.fround(a[1] + y); a[2] = Math.fround(a[2] + z);\r\n b[0] = Math.fround(b[0] + x); b[1] = Math.fround(b[1] + y); b[2] = Math.fround(b[2] + z);\r\n c[0] = Math.fround(c[0] + x); c[1] = Math.fround(c[1] + y); c[2] = Math.fround(c[2] + z);\r\n }\r\n}\r\n", "export function hiddenLightHit(mesh, i, u, v, night) {\r\n if (!mesh.program.nightLight) return false;\r\n const { index, uv: { data: uv } } = mesh.geometry.attributes;\r\n const idA = index ? index.data[i] : i, idB = index ? index.data[i + 1] : i + 1, idC = index ? index.data[i + 2] : i + 2;\r\n const x = uv[idA * 2] * (1 - u - v) + uv[idB * 2] * u + uv[idC * 2] * v;\r\n const y = uv[idA * 2 + 1] * (1 - u - v) + uv[idB * 2 + 1] * u + uv[idC * 2 + 1] * v;\r\n return x <= 2 && (!night || x * x + y * y > 0.9);\r\n}\r\n", "import { hiddenLightHit } from './hiddenLightHit.js';\r\n\r\n/** Moller-Trumbore with the renderer's culling and light-halo rules. */\r\nexport function triangleDistance(mesh, i, a, b, c, origin, direction, night) {\r\n const ex = b[0] - a[0], ey = b[1] - a[1], ez = b[2] - a[2];\r\n const fx = c[0] - a[0], fy = c[1] - a[1], fz = c[2] - a[2];\r\n const px = direction[1] * fz - direction[2] * fy;\r\n const py = direction[2] * fx - direction[0] * fz;\r\n const pz = direction[0] * fy - direction[1] * fx;\r\n const det = ex * px + ey * py + ez * pz;\r\n if (mesh.program.cullMode === 'none' || mesh.program.cullFace === null\r\n ? Math.abs(det) < 1e-9 : det < 1e-9) return Infinity;\r\n const tx = origin[0] - a[0], ty = origin[1] - a[1], tz = origin[2] - a[2];\r\n const u = (tx * px + ty * py + tz * pz) / det;\r\n if (u < 0 || u > 1) return Infinity;\r\n const qx = ty * ez - tz * ey, qy = tz * ex - tx * ez, qz = tx * ey - ty * ex;\r\n const v = (direction[0] * qx + direction[1] * qy + direction[2] * qz) / det;\r\n if (v < 0 || u + v > 1) return Infinity;\r\n if (hiddenLightHit(mesh, i, u, v, night)) return Infinity;\r\n return (fx * qx + fy * qy + fz * qz) / det;\r\n}\r\n", "export function worldHit(ray, mesh, origin, direction, closest, faceIndex) {\r\n const x = direction[0] * closest + origin[0];\r\n const y = direction[1] * closest + origin[1];\r\n const z = direction[2] * closest + origin[2];\r\n const matrix = mesh.worldMatrix;\r\n const w = matrix[3] * x + matrix[7] * y + matrix[11] * z + matrix[15];\r\n const worldPoint = /* alloc */ [\r\n (matrix[0] * x + matrix[4] * y + matrix[8] * z + matrix[12]) / w,\r\n (matrix[1] * x + matrix[5] * y + matrix[9] * z + matrix[13]) / w,\r\n (matrix[2] * x + matrix[6] * y + matrix[10] * z + matrix[14]) / w,\r\n ];\r\n return /* alloc */ {\r\n faceIndex,\r\n object: mesh,\r\n point: worldPoint,\r\n distance: Math.hypot(worldPoint[0] - ray.origin[0], worldPoint[1] - ray.origin[1], worldPoint[2] - ray.origin[2])\r\n };\r\n}\r\n", "import { sortHits } from './sortHits.js';\r\nimport { localRay } from './localRay.js';\r\nimport { rayBounds } from './rayBounds.js';\r\nimport { readTriangle } from './readTriangle.js';\r\nimport { triangleDistance } from './triangleDistance.js';\r\nimport { worldHit } from './worldHit.js';\r\n\r\n/** Nearest triangle hit per mesh, sorted by world-space distance. */\r\nexport function intersectMeshes(ray, meshes, night = 0) {\r\n const hits = /* alloc */ [];\r\n const a = /* alloc */ [0, 0, 0], b = /* alloc */ [0, 0, 0], c = /* alloc */ [0, 0, 0];\r\n const origin = /* alloc */ [0, 0, 0], direction = /* alloc */ [0, 0, 0];\r\n let mesh, position, index, instanceOffset, vertices, closest, faceIndex, i, distance;\r\n for (mesh of meshes) {\r\n // Test locally, then compare distances in shared world space.\r\n localRay(ray, mesh, origin, direction);\r\n if (!rayBounds(mesh, origin, direction)) continue;\r\n ({ position, index, instanceOffset } = mesh.geometry.attributes);\r\n vertices = index?.count || position.count;\r\n closest = Infinity, faceIndex = void 0;\r\n for (i = 0; i < vertices * (instanceOffset?.count ?? 1); i += 3) {\r\n readTriangle(mesh, i, a, b, c);\r\n distance = triangleDistance(mesh, i, a, b, c, origin, direction, night);\r\n if (distance > 0 && distance < closest) {\r\n closest = distance; faceIndex = i / 3;\r\n }\r\n }\r\n if (faceIndex === undefined) continue;\r\n hits.push(worldHit(ray, mesh, origin, direction, closest, faceIndex));\r\n }\r\n return sortHits(hits);\r\n}\r\n", "/** Depth-first walk; a truthy callback result skips that node's descendants. */\n\nexport function traverse(node, callback, context) {\n if (callback(node, context)) return;\n let child;\n for (child of node.children) traverse(child, callback, context);\n}\n", "export function collectVisibleMesh(mesh, meshes) {\n if (!mesh.visible) return true;\n if (mesh.geometry && mesh._appearance !== 0) meshes.push(mesh);\n}\n", "/** Point and unit direction at distance `s` along `points` ([x, z, y?]) with cumulative `lengths`. */\n\nexport function along(points, lengths, s, target) {\n let i = 1, end = lengths.length - 1;\n let middle;\n while (i < end) {\n middle = i + Math.floor((end - i) / 2);\n if (lengths[middle] < s) i = middle + 1;\n else end = middle;\n }\n const a = points[i - 1], b = points[i], d = lengths[i] - lengths[i - 1] || 1;\n const t = (s - lengths[i - 1]) / d;\n target ||= /* alloc */ {};\n target.x = a[0] + (b[0] - a[0]) * t;\n target.y = (a[2] ?? 0) + ((b[2] ?? 0) - (a[2] ?? 0)) * t;\n target.z = a[1] + (b[1] - a[1]) * t;\n target.dx = (b[0] - a[0]) / d;\n target.dz = (b[1] - a[1]) / d;\n return target;\n}\n", "import { along } from './along.js';\r\n\r\nexport function locateTraffic(state, trip) {\r\n const { points, lengths, length } = trip.lane;\r\n let distance = trip.distance + state.elapsed * trip.speed;\r\n distance -= length * Math.floor(distance / length);\r\n const position = along(points, lengths, distance);\r\n position.x -= position.dz * state.side;\r\n position.z += position.dx * state.side;\r\n return position;\r\n}\r\n", "import { locateTraffic } from './locateTraffic.js';\n\nexport function placeTraffic(state) {\n if (!state.mesh || !state.stale) return;\n state.stale = false;\n const { position, normal } = state.mesh.geometry.attributes;\n let i, trip, cx, y, cz, dx, dz, k, o, lx, lz, nx, nz;\n for (i = 0; i < state.trips.length; i++) {\n trip = state.trips[i];\n ({ x: cx, y, z: cz, dx, dz } = locateTraffic(state, trip));\n for (k = 0, o = i * state.stride; k < state.stride; k += 3, o += 3) {\n lx = state.template.position[k], lz = state.template.position[k + 2], nx = state.template.normal[k], nz = state.template.normal[k + 2];\n position.data[o] = cx - lx * dz - lz * dx;\n position.data[o + 1] = y + state.template.position[k + 1];\n position.data[o + 2] = cz + lx * dx - lz * dz;\n normal.data[o] = -nx * dz - nz * dx;\n normal.data[o + 1] = state.template.normal[k + 1];\n normal.data[o + 2] = nx * dx - nz * dz;\n }\n }\n}\n", "export function validateCameraInverse(matrix) {\r\n let column, row;\r\n for (column = 1; column <= 4; column++) {\r\n for (row = 1; row <= 4; row++) {\r\n if (!Number.isFinite(matrix[`m${column}${row}`])) throw /* alloc */ new Error('Singular 3D transform');\r\n }\r\n }\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { trafficByLayer } from '../globals/trafficByLayer.js';\n\n\nimport { intersectMeshes } from '../collision/intersectMeshes.js';\nimport { traverse } from '../scene/traverse.js';\nimport { updateCamera } from '../scene/updateCamera.js';\nimport { updateWorldMatrix } from '../scene/updateWorldMatrix.js';\nimport { collectVisibleMesh } from './collectVisibleMesh.js';\nimport { placeTraffic } from '../traffic/placeTraffic.js';\nimport { validateCameraInverse } from './validateCameraInverse.js';\n\n/** Raycasting, hover/click highlight and tooltips. */\n/**\n * Finds the objects under a mouse or pointer event, nearest first.\n *\n * @param {MouseEvent} event\n * @param {Object[]} [objects] Defaults to this layer's root children, not all map layers.\n * @param {boolean} [recursive] Also test the descendants of `objects`.\n * @returns {Object[]} Nearest hit per mesh: object, shared-world point/distance and triangle faceIndex.\n */\n\nexport function raycast(backend, event, objects = sceneByLayer.get(backend).root.children, recursive = true) {\n if (!sceneByLayer.get(backend).renderer) {\n return /* alloc */ [];\n }\n const traffic = trafficByLayer.get(backend);\n if (traffic) placeTraffic(traffic);\n const rect = backend._map.getContainer().getBoundingClientRect();\n updateWorldMatrix(sceneByLayer.get(backend).scene);\n updateCamera(sceneByLayer.get(backend).camera);\n // Unproject the mouse (-1..1) into a world-space ray from the camera.\n const inverseCamera = sceneByLayer.get(backend).raycaster.inverse;\n const matrix = sceneByLayer.get(backend).camera.projectionViewMatrix;\n inverseCamera.m11 = matrix[0], inverseCamera.m12 = matrix[1], inverseCamera.m13 = matrix[2], inverseCamera.m14 = matrix[3];\n inverseCamera.m21 = matrix[4], inverseCamera.m22 = matrix[5], inverseCamera.m23 = matrix[6], inverseCamera.m24 = matrix[7];\n inverseCamera.m31 = matrix[8], inverseCamera.m32 = matrix[9], inverseCamera.m33 = matrix[10], inverseCamera.m34 = matrix[11];\n inverseCamera.m41 = matrix[12], inverseCamera.m42 = matrix[13], inverseCamera.m43 = matrix[14], inverseCamera.m44 = matrix[15];\n inverseCamera.invertSelf();\n const x = ((event.clientX - rect.left) / rect.width) * 2 - 1;\n const y = -((event.clientY - rect.top) / rect.height) * 2 + 1;\n const endX = inverseCamera.m11 * x + inverseCamera.m21 * y + inverseCamera.m41;\n const endY = inverseCamera.m12 * x + inverseCamera.m22 * y + inverseCamera.m42;\n const endZ = inverseCamera.m13 * x + inverseCamera.m23 * y + inverseCamera.m43;\n const endW = inverseCamera.m14 * x + inverseCamera.m24 * y + inverseCamera.m44;\n let object;\n validateCameraInverse(inverseCamera);\n sceneByLayer.get(backend).raycaster.origin[0] = sceneByLayer.get(backend).camera.position[0];\n sceneByLayer.get(backend).raycaster.origin[1] = sceneByLayer.get(backend).camera.position[1];\n sceneByLayer.get(backend).raycaster.origin[2] = sceneByLayer.get(backend).camera.position[2];\n sceneByLayer.get(backend).raycaster.direction[0] = endX / endW - sceneByLayer.get(backend).raycaster.origin[0];\n sceneByLayer.get(backend).raycaster.direction[1] = endY / endW - sceneByLayer.get(backend).raycaster.origin[1];\n sceneByLayer.get(backend).raycaster.direction[2] = endZ / endW - sceneByLayer.get(backend).raycaster.origin[2];\n const direction = sceneByLayer.get(backend).raycaster.direction;\n const rayLength = Math.hypot(direction[0], direction[1], direction[2]) || 1;\n sceneByLayer.get(backend).raycaster.direction[0] /= rayLength;\n sceneByLayer.get(backend).raycaster.direction[1] /= rayLength;\n sceneByLayer.get(backend).raycaster.direction[2] /= rayLength;\n const meshes = sceneByLayer.get(backend).raycaster.meshes;\n meshes.length = 0;\n for (object of objects) {\n if (recursive) traverse(object, collectVisibleMesh, meshes);\n else if (object.geometry && object.visible && object._appearance !== 0) meshes.push(object);\n }\n return intersectMeshes(sceneByLayer.get(backend).raycaster, meshes, sceneByLayer.get(backend).renderer.uniformData?.[55]);\n}\n", "export function restoreNativeEvents() {\r\n const { map, descriptor, handle } = this;\r\n if (map._fireDOMEvent !== handle) return;\r\n if (descriptor) Object.defineProperty(map, '_fireDOMEvent', descriptor);\r\n else delete map._fireDOMEvent;\r\n}\n", "/** Rendering owner per map; entries are removed on the last layer removal. */\nexport const renderers = new WeakMap();\n", "export const coreEventTypes = new Set([\n 'click', 'preclick', 'dblclick', 'contextmenu', 'mousedown', 'mouseup', 'mousemove', 'mouseover', 'mouseout',\n 'pointerdown', 'pointerup', 'pointermove', 'pointerover', 'pointerout',\n]);\n", "import { L } from '../globals/L.js';\r\nimport { raycast } from '../picking/raycast.js';\r\nimport { compareNativeHits } from './compareNativeHits.js';\r\n\r\nexport function nativeEventSource(context, event, type) {\r\n const hits = /* alloc */ [];\r\n let candidate, source, backend;\r\n if (type !== context.out) {\r\n for (candidate of context.states) {\r\n ({ source, backend } = candidate);\r\n if (source instanceof L.Marker || source.options.interactive === false ||\r\n !(source instanceof L.Path) && !source.options.interactive) continue;\r\n hits.push(...raycast(backend, event, candidate.meshes.values(), false));\r\n }\r\n }\r\n hits.sort(compareNativeHits);\r\n return hits[0]?.object._nativeSource || null;\r\n}\r\n", "export function compareNativeHits(a, b) {\r\n return b.object.renderOrder - a.object.renderOrder || a.distance - b.distance;\r\n}\n", "export function updateNativeHover(map, context, event, source) {\r\n if (context.hovered === source) return;\r\n if (context.hovered) context.fireDOMEvent.call(map, event, context.out, /* alloc */ [context.hovered]);\r\n context.hovered = source;\r\n if (source) context.fireDOMEvent.call(map, event, context.over, /* alloc */ [source]);\r\n map.getContainer().style.cursor = source ? 'pointer' : '';\r\n}\r\n", "import { updateNativeHover } from './updateNativeHover.js';\r\n\r\nexport function bypassNativeEvent(map, context, event, type) {\r\n const target = event.target;\r\n const dom = target instanceof Element &&\r\n target.closest('.leaflet-marker-icon,.leaflet-popup,.leaflet-tooltip,.leaflet-control');\r\n if (dom && context.hovered && (type === context.move || type === context.out)) {\r\n updateNativeHover(map, context, event, null);\r\n }\r\n return dom || type === context.move && (map.dragging?.moving() || map._animatingZoom);\r\n}\r\n", "import { nativeEventMaps } from '../globals/nativeEventMaps.js';\nimport { renderers } from '../globals/renderers.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { coreEventTypes } from '../globals/coreEventTypes.js';\n\n\n\nimport { nativeEventSource } from './nativeEventSource.js';\nimport { updateNativeHover } from './updateNativeHover.js';\nimport { bypassNativeEvent } from './bypassNativeEvent.js';\n\nexport function handleNativeMapEvent(event, type = event.type, targets) {\n const map = this, context = nativeEventMaps.get(map), fireDOMEvent = context.fireDOMEvent;\n const owner = renderers.get(map);\n if (!sceneByLayer.get(owner)?.renderer || targets || !coreEventTypes.has(type)) {\n return fireDOMEvent.call(this, event, type, targets);\n }\n if (bypassNativeEvent(map, context, event, type)) {\n return fireDOMEvent.call(this, event, type, targets);\n }\n let source = nativeEventSource(context, event, type);\n if ((type === 'click' || type === 'preclick') && source && map._draggableMoved(source)) source = null;\n if (type === context.move || type === context.out) {\n updateNativeHover(map, context, event, source);\n }\n return fireDOMEvent.call(this, event, type, source ? /* alloc */ [source] : undefined);\n}\n", "import { nativeEventMaps } from '../globals/nativeEventMaps.js';\n\n\nexport function removeNativeEvents(state) {\r\n const context = state._nativeEventContext;\r\n if (!context) return;\r\n const { map } = context;\r\n context.states.delete(state);\r\n if (context.hovered === state.source) {\r\n context.hovered = null;\r\n map.getContainer().style.cursor = '';\r\n }\r\n state._nativeEventContext = null;\r\n if (context.states.size) return;\r\n context.restore();\r\n nativeEventMaps.delete(map);\r\n}\n", "import { refreshNativeLayer } from './refreshNativeLayer.js';\n\nexport function refreshNativeEvent() {\r\n refreshNativeLayer(this);\r\n}\n", "import { cameraByMap } from '../globals/cameraByMap.js';\n\n\nimport { refreshNativeLayer } from './refreshNativeLayer.js';\n\nexport function reorderNativeLayer(front) {\r\n this.order = front ? ++cameraByMap.get(this.map)._nativeGPUOrder : --cameraByMap.get(this.map)._nativeGPUBack;\r\n refreshNativeLayer(this);\r\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { update } from '../scene/update.js';\n\nexport function updateNativeLayerView() {\r\n this.viewDirty = true;\r\n if (sceneByLayer.get(this.backend)._shared) update(this.backend);\r\n}\n", "import { nativeRenderByLayer } from '../globals/nativeRenderByLayer.js';\n\n\nimport { refreshNativeEvent } from './refreshNativeEvent.js';\nimport { updateNativeLayerView } from './updateNativeLayerView.js';\nimport { removeNativeEvents } from './removeNativeEvents.js';\nimport { disposeMesh } from '../rendering/disposeMesh.js';\nimport { destroyTexture } from '../rendering/destroyTexture.js';\nimport { nativeImageRefresh } from './nativeImageRefresh.js';\nimport { nativeImageError } from './nativeImageError.js';\nimport { removeImageState } from './removeImageState.js';\n\nexport function disposeNativeLayer() {\n const state = this;\n if (state.disposed) return;\n state.disposed = true;\n const { source, map, backend, meshes, textures, images } = state;\n const events = 'load tileload tileunload move drag';\n source.off(events, refreshNativeEvent, state);\n map.off('zoomend', refreshNativeEvent, state);\n if (state.marker) map.off('move zoom rotate pitch resize viewreset', updateNativeLayerView, state);\n removeNativeEvents(state);\n let name, methods, mesh, texture, image;\n for ([name, methods] of state.methods) {\n if (methods.own) Object.defineProperty(source, name, methods.own);\n else delete source[name];\n }\n for (mesh of meshes.values()) disposeMesh(backend, mesh);\n meshes.clear();\n for (texture of textures.values()) destroyTexture(backend, texture.texture);\n textures.clear();\n for (image of images) {\n image.removeEventListener('load', nativeImageRefresh);\n image.removeEventListener('error', nativeImageError);\n removeImageState(image, state);\n }\n nativeRenderByLayer.delete(backend);\n backend.remove();\n}\n", "\nexport function resolveNativeReady() {\r\n this.ready.resolve();\r\n}\n", "\nexport function rejectNativeReady({ error }) {\r\n this.ready.reject(error);\r\n}\n", "export function forwardNativeError({ error }) {\r\n this.source.fire('error', /* alloc */ { error });\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\nimport { disposeNativeLayer } from './disposeNativeLayer.js';\n\nexport function removeTargets(state) {\n if (sceneByLayer.get(state.source)._nativeGPU === state) sceneByLayer.get(state.source)._nativeGPU = null;\n if (state.backend) disposeNativeLayer.call(state);\n let element;\n for (element of state.hidden) {\n element.classList.remove('leaflet-webgpu-target');\n }\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { nativeLayer } from './nativeLayer.js';\n\nexport function readyNativeGPU(state) {\r\n if (sceneByLayer.get(state.source)._nativeGPU !== state) return state.source;\r\n return nativeLayer(state);\r\n}\n", "export function reportError(source, error) {\r\n source.fire('error', /* alloc */ { error });\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { nativeLayer } from './nativeLayer.js';\nimport { hideTargets } from './hideTargets.js';\nimport { removeTargets } from './removeTargets.js';\nimport { readyNativeGPU } from './readyNativeGPU.js';\nimport { reportError } from '../scene/reportError.js';\n\nexport function initNativeGPU(source, map) {\n if (sceneByLayer.get(source)._nativeGPU) return;\n if (!document.getElementById('leaflet-webgpu-targets')) {\n const style = document.createElement('style');\n style.id = 'leaflet-webgpu-targets';\n style.textContent = '.leaflet-webgpu-target{opacity:0!important}';\n document.head.append(style);\n }\n const state = sceneByLayer.get(source)._nativeGPU = /* alloc */ {\n source, map, hidden: /* alloc */ new Set(),\n };\n hideTargets(state);\n source.once('remove', removeTargets.bind(null, state));\n sceneByLayer.get(source).ready = Promise.resolve().then(readyNativeGPU.bind(null, state));\n sceneByLayer.get(source).ready.catch(reportError.bind(null, source));\n}\n", "export const cameraAngles = [1, 0, 1, 0];\n", "import { L } from '../globals/L.js';\nexport function pointOf(point) {\r\n return /* alloc */ new L.Point(\r\n Array.isArray(point) ? point[0] : point.x, Array.isArray(point) ? point[1] : point.y);\r\n}\r\n", "import { radians } from '../globals/radians.js';\n\nimport { mapGetBearing } from './mapGetBearing.js';\nimport { mapGetPitch } from './mapGetPitch.js';\n\nexport function angles(map, target) {\n const bearing = mapGetBearing(map) * radians, pitch = mapGetPitch(map) * radians;\n target ||= /* alloc */ [];\n target[0] = Math.cos(bearing);\n target[1] = Math.sin(bearing);\n target[2] = Math.cos(pitch);\n target[3] = Math.sin(pitch);\n return target;\n}\n", "import { cameraAngles } from '../globals/cameraAngles.js';\nimport { pointOf } from './pointOf.js';\nimport { angles } from './angles.js';\n\n\nexport function project(map, point, inverse = false, limit = false) {\n const size = map.getSize(), halfX = size.x / 2, halfY = size.y / 2, distance = size.y * 1.5;\n const result = pointOf(point);\n if (!distance) return result;\n const [cos, sin, tilt, rise] = angles(map, cameraAngles);\n const x = result.x - halfX, y = result.y - halfY;\n if (inverse) {\n const far = size.y * map.options.pitchMaxDistance;\n const denominator = tilt * distance + rise * y;\n let v = denominator * tilt > 0 ? y * distance / denominator : -far;\n if (limit) v = Math.max(-far, Math.min(far, v));\n const u = x * (distance - rise * v) / distance;\n result.x = cos * u + sin * v + halfX;\n result.y = -sin * u + cos * v + halfY;\n return result;\n }\n const u = cos * x - sin * y, v = sin * x + cos * y;\n const scale = distance / (distance - rise * v);\n result.x = u * scale + halfX;\n result.y = tilt * v * scale + halfY;\n return result;\n}\n", "import { mapMethods } from '../globals/mapMethods.js';\n\nimport { project } from './project.js';\nimport { animationPoint } from './animationPoint.js';\n\nexport function mapLayerPointToContainerPoint(point) {\n return project(this, animationPoint(this, mapMethods.value.layerPointToContainerPoint.call(this, point)));\n}\n", "import { mapMethods } from '../globals/mapMethods.js';\n\n\nimport { animationPoint } from './animationPoint.js';\nimport { project } from './project.js';\n\nexport function mapContainerPointToLayerPoint(point) {\n return mapMethods.value.containerPointToLayerPoint.call(this, animationPoint(this, project(this, point, true), true));\n}\n", "import { mapMethods } from '../globals/mapMethods.js';\n\n\nexport function mapGetCenterLayerPoint() {\n return mapMethods.value.containerPointToLayerPoint.call(this, this.getSize().divideBy(2));\n}\n", "import { mapMethods } from '../globals/mapMethods.js';\n\nimport { project } from './project.js';\nimport { pointOf } from './pointOf.js';\n\nexport function mapPanBy(offset, options) {\n const half = this.getSize().divideBy(2);\r\n const ground = half.subtract(project(this, half.subtract(pointOf(offset)), true));\r\n return mapMethods.value.panBy.call(this, ground, options);\n}\n", "import { L } from '../globals/L.js';\nimport { mapMethods } from '../globals/mapMethods.js';\n\nimport { mapGetPitch } from './mapGetPitch.js';\nimport { mapGetBearing } from './mapGetBearing.js';\n\nexport function mapSetZoomAround(latlng, zoom, options) {\n if (!mapGetPitch(this) && !mapGetBearing(this)) return mapMethods.value.setZoomAround.call(this, latlng, zoom, options);\n zoom = this._limitZoom(zoom);\n const scale = this.getZoomScale(zoom), half = this.getSize().divideBy(2);\n const screen = latlng instanceof L.Point ? latlng : this.latLngToContainerPoint(latlng);\n const center = this.containerPointToLayerPoint(half), anchor = this.containerPointToLayerPoint(screen);\n const next = center.add(anchor.subtract(center).multiplyBy(1 - 1 / scale));\n return this.setView(this.layerPointToLatLng(next), zoom, /* alloc */ { zoom: options });\n}\n", "export const cameraZeroPadding = Object.freeze([0, 0]);\n", "import { mapMethods } from '../globals/mapMethods.js';\nimport { cameraZeroPadding } from '../globals/cameraZeroPadding.js';\n\nimport { mapGetPitch } from './mapGetPitch.js';\nimport { mapGetBearing } from './mapGetBearing.js';\n\nimport { pointOf } from './pointOf.js';\n\nexport function mapPanInside(latlng, options = /* alloc */ {}) {\n if (!mapGetPitch(this) && !mapGetBearing(this)) return mapMethods.value.panInside.call(this, latlng, options);\n const min = pointOf(options.paddingTopLeft || options.padding || cameraZeroPadding);\n const max = this.getSize().subtract(pointOf(options.paddingBottomRight || options.padding || cameraZeroPadding));\n const screen = this.latLngToContainerPoint(latlng);\n const safe = min;\n safe.x = Math.max(min.x, Math.min(max.x, screen.x));\n safe.y = Math.max(min.y, Math.min(max.y, screen.y));\n if (safe.equals(screen)) return this;\n const delta = this.latLngToLayerPoint(latlng).subtract(this.containerPointToLayerPoint(safe));\n return this.panTo(this.unproject(this.project(this.getCenter()).add(delta)), options);\n}\n", "import { L } from '../globals/L.js';\nimport { mapMethods } from '../globals/mapMethods.js';\n\nimport { mapGetPitch } from './mapGetPitch.js';\nimport { mapGetBearing } from './mapGetBearing.js';\n\nimport { groundBounds } from './groundBounds.js';\n\nexport function mapLimitCenter(center, zoom, bounds) {\n if (!bounds || !this._loaded || !mapGetPitch(this) && !mapGetBearing(this)) {\n return mapMethods.value._limitCenter.call(this, center, zoom, bounds);\n }\n const half = this.getSize().divideBy(2), footprint = groundBounds(this), point = this.project(center, zoom);\n const view = /* alloc */ new L.Bounds(point.add(footprint.min.subtract(half)), point.add(footprint.max.subtract(half)));\n const offset = this._getBoundsOffset(view, bounds, zoom);\n return Math.abs(offset.x) <= 1 && Math.abs(offset.y) <= 1 ? center : this.unproject(point.add(offset), zoom);\n}\n", "import { L } from '../globals/L.js';\nimport { cameraZeroPadding } from '../globals/cameraZeroPadding.js';\nimport { pointOf } from './pointOf.js';\nimport { project } from './project.js';\n\n\nexport function groundBounds(map, padding = cameraZeroPadding) {\n const min = pointOf(padding).divideBy(2), max = map.getSize().subtract(min);\n const bounds = /* alloc */ new L.Bounds();\n const minX = min.x, minY = min.y;\n let i;\n for (i = 0; i < 4; i++) {\n min.x = i % 2 ? max.x : minX;\n min.y = i < 2 ? minY : max.y;\n bounds.extend(project(map, min, true, true));\n }\n return bounds;\n}\n", "import { mapMethods } from '../globals/mapMethods.js';\n\nimport { mapGetPitch } from './mapGetPitch.js';\nimport { mapGetBearing } from './mapGetBearing.js';\n\nimport { project } from './project.js';\n\nexport function mapLimitOffset(offset, bounds) {\n if (!bounds || !mapGetPitch(this) && !mapGetBearing(this)) return mapMethods.value._limitOffset.call(this, offset, bounds);\r\n const half = this.getSize().divideBy(2), ground = half.subtract(project(this, half.subtract(offset), true));\r\n const center = this.project(this.getCenter());\r\n const limited = this.project(this._limitCenter(this.unproject(center.add(ground)), this.getZoom(), bounds));\r\n return half.subtract(project(this, half.subtract(limited.subtract(center))));\n}\n", "import { mapMethods } from '../globals/mapMethods.js';\n\nimport { mapGetPitch } from './mapGetPitch.js';\nimport { mapGetBearing } from './mapGetBearing.js';\nimport { fitCameraBounds } from './fitCameraBounds.js';\n\nexport function mapGetBoundsCenterZoom(bounds, options) {\n return mapGetPitch(this) || mapGetBearing(this) ? fitCameraBounds(this, bounds, options) :\r\n mapMethods.value._getBoundsCenterZoom.call(this, bounds, options);\n}\n", "import { L } from '../globals/L.js';\nimport { cameraEmptyOptions } from '../globals/cameraEmptyOptions.js';\nimport { cameraZeroPadding } from '../globals/cameraZeroPadding.js';\nimport { cameraAngles } from '../globals/cameraAngles.js';\nimport { pointOf } from './pointOf.js';\nimport { angles } from './angles.js';\nimport { verticalGroundY } from './verticalGroundY.js';\n\n\nexport function fitCameraBounds(map, bounds, options = cameraEmptyOptions) {\n bounds = bounds.getBounds ? bounds.getBounds() : bounds instanceof L.LatLngBounds ? bounds\n : /* alloc */ new L.LatLngBounds(bounds);\n const zoom = map.getZoom() ?? 0, half = map.getSize().divideBy(2), distance = map.getSize().y * 1.5;\n const min = pointOf(options.paddingTopLeft || options.padding || cameraZeroPadding).subtract(half);\n const max = half.subtract(pointOf(options.paddingBottomRight || options.padding || cameraZeroPadding));\n const [cos, sin, tilt, rise] = angles(map, cameraAngles);\n if (tilt < 0) {\n const y = min.y;\n min.y = -max.y;\n max.y = -y;\n }\n const far = map.getSize().y * map.options.pitchMaxDistance;\n const top = verticalGroundY(min.y, Math.abs(tilt), distance, rise, far);\n const bottom = verticalGroundY(max.y, Math.abs(tilt), distance, rise, far);\n const origin = map.project(bounds.getNorthWest(), zoom).add(map.project(bounds.getSouthEast(), zoom)).divideBy(2);\n let low = Infinity, high = -Infinity;\n const leftSlope = min.x * rise / distance, rightSlope = max.x * rise / distance;\n const slope = rightSlope - leftSlope;\n let left = Infinity, right = -Infinity;\n const corners = /* alloc */ [bounds.getNorthWest(), bounds.getNorthEast(), bounds.getSouthWest(), bounds.getSouthEast()];\n let i, latlng, p, x, y;\n for (i = 0; i < 4; i++) {\n latlng = corners[i];\n p = map.project(latlng, zoom).subtract(origin);\n x = cos * p.x - sin * p.y;\n y = sin * p.x + cos * p.y;\n low = Math.min(low, y);\n high = Math.max(high, y);\n left = Math.min(left, x + leftSlope * y);\n right = Math.max(right, x + rightSlope * y);\n }\n // Perspective viewport edges are straight lines on the ground: fit all four corners, not their screen midpoint.\n const scale = Math.min((bottom - top) / (high - low),\n (max.x - min.x - slope * top) / (right - left - slope * low));\n let target = map.getScaleZoom(scale, zoom);\n const snap = map.options.zoomSnap;\n if (snap) target = Math.floor(Math.round(target / (snap / 100)) / 100) * snap;\n target = Math.max(map.getMinZoom(), Math.min(map.getMaxZoom(), options.maxZoom ?? Infinity, target));\n if (!Number.isFinite(target)) return /* alloc */ { center: bounds.getCenter(), zoom: target };\n const actual = map.getZoomScale(target, zoom);\n const vMin = high * actual - bottom, vMax = low * actual - top;\n const v = Math.max(vMin, slope ? (actual * (right - left) - max.x + min.x) / slope : vMin);\n const centerY = (Math.min(vMax, v) + vMax) / 2;\n const centerX = (actual * (left + right) - min.x - max.x - (leftSlope + rightSlope) * centerY) / 2;\n origin.x += (cos * centerX + sin * centerY) / actual;\n origin.y += (-sin * centerX + cos * centerY) / actual;\n return /* alloc */ { center: map.unproject(origin, zoom), zoom: target };\n}\n", "export function verticalGroundY(y, tilt, distance, rise, far) {\r\n return tilt * distance + rise * y > 0\r\n ? Math.max(-far, Math.min(far, y * distance / (tilt * distance + rise * y))) : -far;\r\n}\n", "import { L } from '../globals/L.js';\nimport { mapMethods } from '../globals/mapMethods.js';\nimport { cameraZeroPadding } from '../globals/cameraZeroPadding.js';\n\nimport { mapGetPitch } from './mapGetPitch.js';\nimport { mapGetBearing } from './mapGetBearing.js';\n\nimport { fitCameraBounds } from './fitCameraBounds.js';\nimport { pointOf } from './pointOf.js';\nimport { groundBounds } from './groundBounds.js';\n\nexport function mapGetBoundsZoom(bounds, inside, padding) {\n if (!mapGetPitch(this) && !mapGetBearing(this)) return mapMethods.value.getBoundsZoom.call(this, bounds, inside, padding);\n if (!inside) return fitCameraBounds(this, bounds,\n /* alloc */ {\n padding: pointOf(padding || cameraZeroPadding).divideBy(2),\n }).zoom;\n bounds = bounds instanceof L.LatLngBounds ? bounds\n : /* alloc */ new L.LatLngBounds(bounds);\n const footprint = groundBounds(this, padding).getSize(), size = this.project(bounds.getSouthEast()).subtract(this.project(bounds.getNorthWest()));\n const zoom = this.getScaleZoom(Math.max(footprint.x / size.x, footprint.y / size.y));\n const snap = this.options.zoomSnap;\n return Math.max(this.getMinZoom(), Math.min(this.getMaxZoom(), snap ? Math.ceil(zoom / snap) * snap : zoom));\n}\n", "import { mapMethods } from '../globals/mapMethods.js';\n\n\nexport function mapTryAnimatedPan(center, options) {\n // Leaflet's geographic recentering already supplies ground pixels, not screen pixels.\r\n const offset = this._getCenterOffset(center)._trunc();\r\n if (options?.animate !== true && !this.getSize().contains(offset)) return false;\r\n mapMethods.value.panBy.call(this, offset, options);\r\n return true;\n}\n", "import { L } from '../globals/L.js';\nimport { mapMethods } from '../globals/mapMethods.js';\n\nimport { mapGetPitch } from './mapGetPitch.js';\nimport { mapGetBearing } from './mapGetBearing.js';\n\nimport { groundBounds } from './groundBounds.js';\nimport { animationPoint } from './animationPoint.js';\n\nexport function mapGetBounds() {\n if (!mapGetPitch(this) && !mapGetBearing(this)) return mapMethods.value.getBounds.call(this);\n const footprint = groundBounds(this), bounds = /* alloc */ new L.LatLngBounds();\n let i, point, raw;\n for (i = 0; i < 2; i++) {\n point = i ? footprint.max : footprint.min;\n raw = mapMethods.value.containerPointToLayerPoint.call(this, animationPoint(this, point, true));\n bounds.extend(this.layerPointToLatLng(raw));\n }\n return bounds;\n}\n", "import { cameraByMap } from '../globals/cameraByMap.js';\n\nimport { mapSetPitchAndBearing } from './mapSetPitchAndBearing.js';\n\nimport { updateSky } from './updateSky.js';\nimport { constrainCameraToBounds } from './constrainCameraToBounds.js';\nimport { cleanupCameraMap } from './cleanupCameraMap.js';\nimport { cameraMapReady } from './cameraMapReady.js';\nimport { loadCameraControls } from '../controls/loadCameraControls.js';\nimport { noOperation } from '../utils/noOperation.js';\n\nexport function initializeCameraMap() {\n cameraByMap.set(this, /* alloc */ {});\n if (!document.getElementById('leaflet-camera-zoom-style')) {\n const style = document.createElement('style');\n style.id = 'leaflet-camera-zoom-style';\n style.textContent = '.leaflet-camera-zoom .leaflet-marker-icon,.leaflet-camera-zoom .leaflet-marker-shadow,' +\n '.leaflet-camera-zoom .leaflet-popup,.leaflet-camera-zoom .leaflet-tooltip{transition:none!important}';\n document.head.append(style);\n }\n mapSetPitchAndBearing(this, this.options.pitch, this.options.bearing);\n this.on('load resize pitch', updateSky);\n this.on('rotate pitch', constrainCameraToBounds, this);\n this.once('unload', cleanupCameraMap, this);\n this.whenReady(cameraMapReady, this);\n if (this.options.rotate || this.options.trackContainerMutation) {\n cameraByMap.get(this).cameraReady = loadCameraControls(this);\n cameraByMap.get(this).cameraReady.catch(noOperation);\n }\n}\n", "export function constrainCameraToBounds() {\r\n if (this.options.maxBounds) this._panInsideMaxBounds();\r\n}\n", "import { cameraByMap } from '../globals/cameraByMap.js';\n\n\nimport { cancelCameraAnimation } from './cancelCameraAnimation.js';\nimport { adjustCameraDrag } from '../controls/adjustCameraDrag.js';\n\nexport function cleanupCameraMap() {\r\n cancelCameraAnimation(this);\r\n cameraByMap.get(this)._pitchSky?.remove();\r\n if (cameraByMap.get(this)._cameraDraggable) {\r\n cameraByMap.get(this)._cameraDraggable.off('predrag', adjustCameraDrag, this);\r\n delete cameraByMap.get(this)._cameraDraggable;\r\n }\r\n}\n", "import { cameraByMap } from '../globals/cameraByMap.js';\n\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\n\nimport { project } from '../camera/project.js';\n\nexport function adjustCameraDrag() {\r\n const map = this;\r\n const draggable = cameraByMap.get(map)._cameraDraggable;\r\n if (!mapGetPitch(map) && !mapGetBearing(map)) return;\r\n const half = map.getSize().divideBy(2), delta = draggable._newPos.subtract(draggable._startPos);\r\n const ground = half.subtract(project(map, half.subtract(delta), true));\r\n draggable._newPos = draggable._startPos.add(ground);\r\n}\n", "import { cameraByMap } from '../globals/cameraByMap.js';\n\n\nimport { adjustCameraDrag } from '../controls/adjustCameraDrag.js';\n\nexport function cameraMapReady() {\r\n const draggable = this.dragging?._draggable;\r\n if (!draggable) return;\r\n cameraByMap.get(this)._cameraDraggable = draggable;\r\n draggable.on('predrag', adjustCameraDrag, this);\r\n}\n", "export async function loadCameraControls(map) {\r\n try {\r\n const { cameraControls } = await import('./cameraControls.js');\r\n if (map._container?._leaflet_id) cameraControls(map);\r\n } catch (error) {\r\n map.fire('error', /* alloc */ { error });\r\n throw error;\r\n }\r\n}\r\n", "export function noOperation() {}\n", "import { L } from '../globals/L.js';\nimport { markerMethods } from '../globals/markerMethods.js';\n\n\nimport { initNativeGPU } from './initNativeGPU.js';\n\nexport function markerSetIcon(icon) {\n if (!(icon instanceof L.DivIcon)) icon.options.crossOrigin ||= true;\r\n const result = markerMethods.value.setIcon.call(this, icon);\r\n if (this._map && !(icon instanceof L.DivIcon)) initNativeGPU(this, this._map);\r\n return result;\n}\n", "import { markerMethods } from '../globals/markerMethods.js';\n\n\n\nexport function markerGetEvents() {\n const events = markerMethods.value.getEvents.call(this);\n events.rotate = events.pitch = events.move = this.update;\n return events;\n}\n", "export function displayPoint(map, point) {\r\n return map.layerPointToContainerPoint(point).subtract(map._getMapPanePos());\r\n}\n", "import { markerMethods } from '../globals/markerMethods.js';\n\nimport { markerCameraIconPoint } from './markerCameraIconPoint.js';\n\nimport { displayPoint } from '../camera/displayPoint.js';\n\nexport function markerSetPos(point) {\n markerMethods.value._setPos.call(this, displayPoint(this._map, point));\n let i, element, key, direction, options, anchor;\n for (i = 0; i < 2; i++) {\n element = i ? this._shadow : this._icon;\n key = i ? 'shadowAnchor' : 'iconAnchor';\n if (!element) continue;\n direction = markerCameraIconPoint(this, 1, 0), options = this.options.icon.options;\n anchor = options[key] || options.iconAnchor;\n element.style.transformOrigin = anchor ? `${anchor.x ?? anchor[0]}px ${anchor.y ?? anchor[1]}px` : 'center';\n element.style.transform += ` rotate(${Math.atan2(direction.y, direction.x)}rad) scale(${this.options.scale})`;\n }\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\nimport { refreshNativeLayer } from './refreshNativeLayer.js';\n\nexport function refreshNativeLayerContract(layer = this) {\n const native = sceneByLayer.get(layer)?._nativeGPU;\n if (native?.backend && !native.disposed) refreshNativeLayer(native);\n}\n", "import { markerMethods } from '../globals/markerMethods.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\n\nexport function markerUpdateZIndex(offset) {\n markerMethods.value._updateZIndex.call(this, offset);\n const changed = sceneByLayer.get(this)._cameraZIndexOffset !== offset;\n sceneByLayer.get(this)._cameraZIndexOffset = offset;\n if (changed) refreshNativeLayerContract(this);\n}\nimport { refreshNativeLayerContract } from './refreshNativeLayerContract.js';\n", "export const dragByHandler = new WeakMap();\n", "import { L } from '../globals/L.js';\nimport { dragByHandler } from '../globals/dragByHandler.js';\n\n\r\n\r\nexport function cameraMarkerOnDrag(event) {\r\n const map = this._marker._map;\r\n const screen = L.DomUtil.getPosition(this._marker._icon).add(map._getMapPanePos());\r\n const point = map.containerPointToLayerPoint(screen);\r\n L.DomUtil.setPosition(this._marker._icon, point);\r\n dragByHandler.get(this)._cameraOriginalOnDrag.call(this, event);\r\n this._marker._setPos(point);\r\n}\r\n", "import { L } from '../globals/L.js';\nimport { dragByHandler } from '../globals/dragByHandler.js';\n\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\n\nimport { pointOf } from '../camera/pointOf.js';\nimport { scheduleMarkerPan } from './scheduleMarkerPan.js';\n\nexport function adjustCameraMarkerPan(event) {\n const marker = this._marker, map = marker._map;\n if (!mapGetPitch(map) && !mapGetBearing(map)) return dragByHandler.get(this)._cameraOriginalAdjustPan.call(this, event);\n const screen = L.DomUtil.getPosition(marker._icon).add(map._getMapPanePos());\n const size = map.getSize(), padding = pointOf(marker.options.autoPanPadding);\n const speed = marker.options.autoPanSpeed;\n const movement = screen;\n movement.x = (Math.max(0, screen.x - size.x + padding.x) - Math.max(0, padding.x - screen.x)) / Math.max(1, padding.x) * speed;\n movement.y = (Math.max(0, screen.y - size.y + padding.y) - Math.max(0, padding.y - screen.y)) / Math.max(1, padding.y) * speed;\n if (!movement.x && !movement.y) return;\n const pane = map._getMapPanePos();\n map.panBy(movement, /* alloc */ { animate: false });\n const shift = pane.subtract(map._getMapPanePos());\n this._draggable._newPos._add(shift);\n this._draggable._startPos._add(shift);\n L.DomUtil.setPosition(marker._icon, this._draggable._newPos);\n this._onDrag(event);\n scheduleMarkerPan(this, event);\n}\n", "export const pendingMarkerPan = new Map();\n", "export const markerPanFrame = { value: null };\n", "import { markerPanFrame } from '../globals/markerPanFrame.js';\nimport { pendingMarkerPan } from '../globals/pendingMarkerPan.js';\n\n\nexport function runMarkerPanFrame() {\n markerPanFrame.value = null;\n const pending = /* alloc */ [...pendingMarkerPan];\n pendingMarkerPan.clear();\n let drag, event;\n for ([drag, event] of pending) {\n drag._panRequest = null;\n drag._adjustPan(event);\n }\n}\n", "import { pendingMarkerPan } from '../globals/pendingMarkerPan.js';\nimport { markerPanFrame } from '../globals/markerPanFrame.js';\n\n\nimport { runMarkerPanFrame } from './runMarkerPanFrame.js';\n\nexport function scheduleMarkerPan(drag, event) {\r\n pendingMarkerPan.set(drag, event);\r\n if (markerPanFrame.value === null) markerPanFrame.value = requestAnimationFrame(runMarkerPanFrame);\r\n drag._panRequest = markerPanFrame.value;\r\n}\n", "import { dragByHandler } from '../globals/dragByHandler.js';\n\n\nimport { cameraMarkerOnDrag } from './cameraMarkerOnDrag.js';\nimport { adjustCameraMarkerPan } from './adjustCameraMarkerPan.js';\n\nexport function cameraMarkerDrag() {\n if (!this.dragging || dragByHandler.has(this.dragging)) return;\n const drag = this.dragging, original = drag._onDrag, adjustPan = drag._adjustPan;\n dragByHandler.set(drag, /* alloc */ {\n _cameraOriginalOnDrag: original, _cameraOriginalAdjustPan: adjustPan,\n });\n drag._onDrag = cameraMarkerOnDrag;\n drag._adjustPan = adjustCameraMarkerPan;\n // The handler may already be enabled and listening with its original method.\n const enabled = drag.enabled();\n if (enabled) {\n drag._draggable.off('drag', original, drag);\n drag._draggable.on('drag', drag._onDrag, drag);\n }\n}\n", "import { markerMethods } from '../globals/markerMethods.js';\n\n\nimport { cameraMarkerDrag } from './cameraMarkerDrag.js';\n\nexport function markerInitInteraction() {\n const result = markerMethods.value._initInteraction.call(this);\r\n cameraMarkerDrag.call(this);\r\n return result;\n}\n", "import { popupEvents } from '../globals/popupEvents.js';\n\n\nexport function popupGetEvents() {\n const events = popupEvents.value.call(this);\n events.rotate = events.pitch = events.move = this._updatePosition;\n return events;\n}\n", "import { tooltipEvents } from '../globals/tooltipEvents.js';\n\n\nexport function tooltipGetEvents() {\n const events = tooltipEvents.value.call(this);\n events.rotate = events.pitch = events.move = this._updatePosition;\n return events;\n}\n", "import { popupPan } from '../globals/popupPan.js';\n\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\n\nimport { pointOf } from '../camera/pointOf.js';\n\nexport function popupAdjustPan() {\n const map = this._map;\n if (!mapGetPitch(map) && !mapGetBearing(map)) return popupPan.value.call(this);\n if (!this.options.autoPan) return;\n if (map._panAnim) map._panAnim.stop();\n if (this._autopanning) { this._autopanning = false; return; }\n const rect = this._container.getBoundingClientRect(), container = map.getContainer().getBoundingClientRect();\n const min = pointOf(this.options.autoPanPaddingTopLeft || this.options.autoPanPadding);\n const max = map.getSize().subtract(pointOf(this.options.autoPanPaddingBottomRight || this.options.autoPanPadding));\n const left = rect.left - container.left, top = rect.top - container.top;\n const right = rect.right - container.left, bottom = rect.bottom - container.top;\n const dx = Math.min(0, left - min.x) || Math.max(0, right - max.x);\n const dy = Math.min(0, top - min.y) || Math.max(0, bottom - max.y);\n if (!dx && !dy) return;\n if (this.options.keepInView) this._autopanning = true;\n const screen = map.latLngToContainerPoint(this._latlng);\n screen.x -= dx;\n screen.y -= dy;\n const delta = map.latLngToLayerPoint(this._latlng).subtract(map.containerPointToLayerPoint(screen));\n map.fire('autopanstart');\n map.panTo(map.unproject(map.project(map.getCenter()).add(delta)));\n}\n", "import { L } from '../globals/L.js';\nimport { popupPosition } from '../globals/popupPosition.js';\n\n\nimport { displayPoint } from '../camera/displayPoint.js';\n\nexport function popupUpdatePosition() {\n popupPosition.value.call(this);\r\n if (!this._map) return;\r\n const point = this._map.latLngToLayerPoint(this._latlng), delta = displayPoint(this._map, point).subtract(point);\r\n if (this._zoomAnimated) {\r\n L.DomUtil.setPosition(this._container, L.DomUtil.getPosition(this._container).add(delta));\r\n } else {\r\n this._container.style.left = `${this._containerLeft + delta.x}px`;\r\n this._container.style.bottom = `${this._containerBottom - delta.y}px`;\r\n }\n}\n", "import { L } from '../globals/L.js';\nimport { tooltipPosition } from '../globals/tooltipPosition.js';\n\n\nimport { displayPoint } from '../camera/displayPoint.js';\n\nexport function tooltipSetPosition(point) {\n tooltipPosition.value.call(this, point);\r\n const delta = displayPoint(this._map, point).subtract(point);\r\n L.DomUtil.setPosition(this._container, L.DomUtil.getPosition(this._container).add(delta));\n}\n", "import { L } from '../globals/L.js';\nimport { gridEvents } from '../globals/gridEvents.js';\n\n\n\nexport function gridlayerGetEvents() {\n const events = gridEvents.value.call(this);\n events.rotate = events.pitch = L.Util.throttle(this._onMoveEnd, this.options.updateInterval, this);\n return events;\n}\n", "import { L } from '../globals/L.js';\nimport { tiledBounds } from '../globals/tiledBounds.js';\n\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\n\nexport function gridlayerGetTiledPixelBounds(center) {\n if (!mapGetBearing(this._map) && !mapGetPitch(this._map)) return tiledBounds.value.call(this, center);\n const bounds = this._map.getBounds();\n return /* alloc */ new L.Bounds(this._map.project(bounds.getNorthWest(), this._tileZoom),\n this._map.project(bounds.getSouthEast(), this._tileZoom));\n}\n", "import { L } from '../globals/L.js';\nimport { sceneEmptyOptions } from '../globals/sceneEmptyOptions.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { attach } from './attach.js';\nimport { emptyNode } from './emptyNode.js';\nimport { onAdd3DLayer } from './onAdd3DLayer.js';\nimport { onRemove3DLayer } from './onRemove3DLayer.js';\nimport { update } from './update.js';\nimport { updateArea } from '../sources/updateArea.js';\nimport { onTerrainChange } from '../terrain/onTerrainChange.js';\nimport { getHeader } from '../archives/getHeader.js';\nimport { loadModel } from '../models/loadModel.js';\nimport { get3DEvents } from './get3DEvents.js';\nimport { ready3D } from './ready3D.js';\nimport { noOperation } from '../utils/noOperation.js';\nimport { updateLayerCount } from './updateLayerCount.js';\n\nexport function init3D(layer, options = sceneEmptyOptions) {\n sceneByLayer.get(layer)._3d = true;\n L.Util.setOptions(layer, /* alloc */ { ariaLabel: '3D scene', ...options });\n sceneByLayer.get(layer).kind = '3d';\n const isModel = !sceneByLayer.get(layer)._geojson && /\\.(glb|gltf)(?:[?#]|$)/i.test(layer.options.url);\n sceneByLayer.get(layer).modelUrl = isModel ? layer.options.url : null;\n sceneByLayer.get(layer).url = layer.options.url && !isModel && !sceneByLayer.get(layer)._geojson ? /* alloc */ new URL(layer.options.url, document.baseURI).href : null;\n sceneByLayer.get(layer)._directories = /* alloc */ new Map();\n if (layer.options.center) {\n sceneByLayer.get(layer).location = /* alloc */ new L.LatLng(layer.options.center[0], layer.options.center[1]);\n }\n sceneByLayer.get(layer)._areas = /* alloc */ new Map();\n sceneByLayer.get(layer)._inflight = 0;\n if (sceneByLayer.get(layer).url || sceneByLayer.get(layer)._geojson || isModel) {\n const status = L.DomUtil.create('small', 'layer-count');\n status.style.cssText = 'float:right;margin-left:12px;color:#555;font-variant-numeric:tabular-nums';\n sceneByLayer.get(layer)._countStatus = status;\n layer.on('add error', updateLayerCount);\n layer.on('ready progress', L.Util.throttle(updateLayerCount, 250, layer));\n }\n sceneByLayer.get(layer)._added = Promise.withResolvers();\n sceneByLayer.get(layer).ready = Promise.resolve().then(ready3D.bind(null, layer));\n sceneByLayer.get(layer).ready.catch(noOperation);\n}\n", "import { radians } from '../globals/radians.js';\r\nimport { renderers } from '../globals/renderers.js';\r\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { setParent } from './setParent.js';\r\nimport { render } from '../rendering/render.js';\r\nimport { update } from './update.js';\r\nimport { updateArea } from '../sources/updateArea.js';\r\nimport { setTerrainHeight } from '../terrain/setTerrainHeight.js';\r\nimport { noOperation } from '../utils/noOperation.js';\r\nimport { restoreObject } from './restoreObject.js';\r\nimport { traverse } from './traverse.js';\r\nimport { initializeSharedRenderer } from './initializeSharedRenderer.js';\r\n\r\n/**\r\n * Join/create this map's shared scene and rebuild GPU objects if its context changed.\r\n * Buffer/program handles belong to one context; typed arrays and decoded images do not.\r\n * @private\r\n */\r\nexport async function attach(backend, map) {\r\n let shared = renderers.get(map);\r\n if (sceneByLayer.get(shared)?._rendererReady) {\r\n await sceneByLayer.get(shared)._rendererReady.promise;\r\n }\r\n if (!shared) {\r\n shared = backend;\r\n sceneByLayer.get(backend)._rendererReady = Promise.withResolvers();\r\n sceneByLayer.get(backend)._rendererReady.promise.catch(noOperation);\r\n renderers.set(map, shared);\r\n await initializeSharedRenderer(backend, map);\r\n sceneByLayer.get(backend)._rendererReady.resolve();\r\n delete sceneByLayer.get(shared)._rendererReady;\r\n render(shared);\r\n renderers.set(map, shared);\r\n }\r\n const origin = map.options.crs.project(sceneByLayer.get(shared)._sceneOrigin);\r\n const point = map.options.crs.project(sceneByLayer.get(backend).location);\r\n const metres = Math.cos(sceneByLayer.get(shared)._sceneOrigin.lat * radians);\r\n sceneByLayer.get(backend)._terrainBaseY ??= sceneByLayer.get(backend).root.position[1];\r\n sceneByLayer.get(backend).root.position[0] = (point.x - origin.x) * metres;\r\n sceneByLayer.get(backend).root.position[1] = sceneByLayer.get(backend)._terrainBaseY;\r\n sceneByLayer.get(backend).root.position[2] = -(point.y - origin.y) * metres;\r\n setTerrainHeight(backend);\r\n // Each group's metres are measured at its own latitude, not the shared camera origin.\r\n sceneByLayer.get(backend).root.scale.fill(metres / Math.cos(sceneByLayer.get(backend).location.lat * radians));\r\n sceneByLayer.get(backend)._shared = shared;\r\n sceneByLayer.get(backend).renderer = sceneByLayer.get(shared).renderer;\r\n sceneByLayer.get(backend).scene = sceneByLayer.get(shared).scene;\r\n sceneByLayer.get(backend).camera = sceneByLayer.get(shared).camera;\r\n sceneByLayer.get(shared)._layers.add(backend);\r\n setParent(sceneByLayer.get(backend).root, sceneByLayer.get(shared).scene);\r\n traverse(sceneByLayer.get(backend).root, restoreObject, backend);\r\n update(shared);\r\n if ((sceneByLayer.get(backend).header && sceneByLayer.get(backend).kind !== 'raster') || sceneByLayer.get(backend)._geojson) updateArea(backend);\r\n}\r\n", "export const lampDirections = [\r\n { x: Math.cos(0 * Math.PI / 3), y: Math.sin(0 * Math.PI / 3), nx: Math.cos(0.5 * Math.PI / 3), nz: -Math.sin(0.5 * Math.PI / 3) },\r\n { x: Math.cos(1 * Math.PI / 3), y: Math.sin(1 * Math.PI / 3), nx: Math.cos(1.5 * Math.PI / 3), nz: -Math.sin(1.5 * Math.PI / 3) },\r\n { x: Math.cos(2 * Math.PI / 3), y: Math.sin(2 * Math.PI / 3), nx: Math.cos(2.5 * Math.PI / 3), nz: -Math.sin(2.5 * Math.PI / 3) },\r\n { x: Math.cos(3 * Math.PI / 3), y: Math.sin(3 * Math.PI / 3), nx: Math.cos(3.5 * Math.PI / 3), nz: -Math.sin(3.5 * Math.PI / 3) },\r\n { x: Math.cos(4 * Math.PI / 3), y: Math.sin(4 * Math.PI / 3), nx: Math.cos(4.5 * Math.PI / 3), nz: -Math.sin(4.5 * Math.PI / 3) },\r\n { x: Math.cos(5 * Math.PI / 3), y: Math.sin(5 * Math.PI / 3), nx: Math.cos(5.5 * Math.PI / 3), nz: -Math.sin(5.5 * Math.PI / 3) },\r\n];\r\n", "import { lampDirections } from '../globals/lampDirections.js';\n\nexport function ring(point, radius) {\n const points = /* alloc */ new Array(lampDirections.length);\n let i;\n for (i = 0; i < points.length; i++) {\n points[i] = /* alloc */ {\n x: point.x + lampDirections[i].x * radius,\n y: point.y + lampDirections[i].y * radius, ground: point.ground,\n uv: /* alloc */ [3, 3],\n };\n }\n return points;\n}\n", "import { parseColor } from \"../utils/parseColor.js\";\nimport { ring } from './lampRing.js';\nimport { lampDirections } from '../globals/lampDirections.js';\n\n/** Schematic support and lamp head; wall-mounted fixtures do not get an invented pole. */\n\nexport function lampPostGeometry(point, style, addTriangle) {\n const color = parseColor(0x50565a), radius = style.poleRadius;\n if (!Number.isFinite(radius) || radius <= 0) {\n throw /* alloc */ new Error('Invalid lamp pole radius');\n }\n const center = /* alloc */ {\n ...point, uv: /* alloc */ [3, 3],\n };\n let r, low, high, points, i, a, b, nx, nz, section;\n for (section = 0; section < 2; section++) {\n r = section ? radius * 2.5 : radius;\n low = section ? style.top - 0.25 : 0;\n high = section ? style.top + 0.15 : style.top;\n points = ring(point, r);\n for (i = 0; i < 6; i++) {\n a = points[i], b = points[(i + 1) % 6];\n nx = lampDirections[i].nx, nz = lampDirections[i].nz;\n addTriangle(a, low, b, low, b, high, nx, 0, nz, color);\n addTriangle(a, low, b, high, a, high, nx, 0, nz, color);\n addTriangle(center, high, a, high, b, high, 0, 1, 0, color);\n addTriangle(center, low, b, low, a, low, 0, -1, 0, color);\n }\n }\n}\n", "export function quad(addTriangle, color, a, b, c, d, height, nx, ny, nz) {\r\n if (typeof nx !== 'number') {\r\n addTriangle(a, height, b, height, c, height, ...nx, color);\r\n addTriangle(a, height, c, height, d, height, ...nx, color);\r\n } else {\r\n addTriangle(a, height, b, height, c, height, nx, ny, nz, color);\r\n addTriangle(a, height, c, height, d, height, nx, ny, nz, color);\r\n }\r\n}\r\n", "export function emitter(point, u, v, axis) {\r\n const r = 0.65;\r\n return /* alloc */ {\r\n x: point.x + (axis === 2 ? 0 : u * r),\r\n y: point.y + (axis === 1 ? 0 : axis === 2 ? u * r : v * r),\r\n ground: point.ground + (axis === 0 ? 0 : v * r), uv: /* alloc */ [u, v],\r\n };\r\n}\r\n", "import { parseColor } from \"../utils/parseColor.js\";\nimport { quad } from './quad.js';\nimport { emitter } from './emitter.js';\n\n/** Three crossed emitter discs; illumination itself is evaluated on receiving surfaces. */\n\nexport function lightGeometry(point, style, addTriangle) {\n if (!Number.isFinite(style.lightRadius) || style.lightRadius <= 0) throw /* alloc */ new Error('Invalid light radius');\n const color = parseColor(style.color);\n let axis;\n for (axis = 0; axis < 3; axis++) {\n quad(addTriangle, color, emitter(point, -1, -1, axis), emitter(point, 1, -1, axis), emitter(point, 1, 1, axis), emitter(point, -1, 1, axis),\n style.top, axis === 2 ? 1 : 0, axis === 0 ? 1 : 0, axis === 1 ? 1 : 0);\n }\n}\n", "export const roundProfile = [\n [0, 0],\n [0.35, 0.8],\n [0.6, 1],\n [0.85, 0.7],\n [1, 0]\n];\n", "export const ringDirections = [{\n x: Math.cos(0 * Math.PI / 4),\n y: Math.sin(0 * Math.PI / 4),\n nx: Math.cos((0 + 0.5) * Math.PI / 4),\n nz: -Math.sin((0 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(1 * Math.PI / 4),\n y: Math.sin(1 * Math.PI / 4),\n nx: Math.cos((1 + 0.5) * Math.PI / 4),\n nz: -Math.sin((1 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(2 * Math.PI / 4),\n y: Math.sin(2 * Math.PI / 4),\n nx: Math.cos((2 + 0.5) * Math.PI / 4),\n nz: -Math.sin((2 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(3 * Math.PI / 4),\n y: Math.sin(3 * Math.PI / 4),\n nx: Math.cos((3 + 0.5) * Math.PI / 4),\n nz: -Math.sin((3 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(4 * Math.PI / 4),\n y: Math.sin(4 * Math.PI / 4),\n nx: Math.cos((4 + 0.5) * Math.PI / 4),\n nz: -Math.sin((4 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(5 * Math.PI / 4),\n y: Math.sin(5 * Math.PI / 4),\n nx: Math.cos((5 + 0.5) * Math.PI / 4),\n nz: -Math.sin((5 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(6 * Math.PI / 4),\n y: Math.sin(6 * Math.PI / 4),\n nx: Math.cos((6 + 0.5) * Math.PI / 4),\n nz: -Math.sin((6 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(7 * Math.PI / 4),\n y: Math.sin(7 * Math.PI / 4),\n nx: Math.cos((7 + 0.5) * Math.PI / 4),\n nz: -Math.sin((7 + 0.5) * Math.PI / 4)\n },\n];\n", "import { ringDirections } from '../globals/ringDirections.js';\n\n\nexport function ring(point, radius) {\n const result = /* alloc */ new Array(ringDirections.length);\n let i;\n for (i = 0; i < result.length; i++) {\n result[i] = /* alloc */ {\n x: point.x + ringDirections[i].x * radius,\n y: point.y + ringDirections[i].y * radius,\n ground: point.ground,\n };\n }\n return result;\n}\n", "import { ringDirections } from '../globals/ringDirections.js';\n\nimport { ring } from './treeRing.js';\n\nexport function surface(point, addTriangle, lowRadius, low, highRadius, high, color) {\n const lower = ring(point, lowRadius), upper = ring(point, highRadius);\n let i, next, slope, length, nx, nz, ny, normalX, normalZ;\n for (i = 0; i < 8; i++) {\n next = (i + 1) % 8;\n slope = (lowRadius - highRadius) / (high - low);\n length = Math.hypot(1, slope);\n ({ nx, nz } = ringDirections[i]);\n ny = slope / length;\n normalX = nx / length, normalZ = nz / length;\n if (lowRadius) addTriangle(lower[i], low, lower[next], low, upper[next], high, normalX, ny, normalZ, color);\n if (highRadius) addTriangle(lower[i], low, upper[next], high, upper[i], high, normalX, ny, normalZ, color);\n }\n}\n", "export function validateTree(trunkRadius, crownRadius, crownBottom, bottom, top, crownShape) {\r\n if (!Number.isFinite(trunkRadius) || !Number.isFinite(crownRadius) || !Number.isFinite(crownBottom) ||\r\n trunkRadius <= 0 || crownRadius < trunkRadius || crownBottom <= bottom || crownBottom >= top ||\r\n crownShape !== 'round' && crownShape !== 'cone') {\r\n throw /* alloc */ new Error('Invalid tree dimensions or crown shape');\r\n }\r\n}\r\n", "import { roundProfile } from '../globals/roundProfile.js';\n\n\nimport { parseColor } from \"../utils/parseColor.js\";\nimport { ring } from './treeRing.js';\nimport { surface } from './surface.js';\nimport { validateTree } from './validateTree.js';\n\n/** Low-poly tree, sharing the source block's buffers, picking and terrain offset. */\n\nexport function treeGeometry(point, style, addTriangle) {\n const { top, bottom = 0, trunkRadius, crownRadius, crownBottom, crownShape = 'round' } = style;\n validateTree(trunkRadius, crownRadius, crownBottom, bottom, top, crownShape);\n const trunk = parseColor(style.trunkColor ?? 0x72513a);\n const crown = parseColor(style.color ?? 0x4f823b);\n surface(point, addTriangle, trunkRadius, bottom, trunkRadius, crownBottom + (top - crownBottom) * 0.25, trunk);\n let i, low, lr, high, hr;\n if (crownShape === 'cone') {\n const base = ring(point, crownRadius);\n for (i = 0; i < 8; i++) addTriangle(point, crownBottom, base[i], crownBottom,\n base[(i + 1) % 8], crownBottom, 0, -1, 0, crown);\n surface(point, addTriangle, crownRadius, crownBottom, 0, top, crown);\n } else {\n for (i = 1; i < roundProfile.length; i++) {\n [low, lr] = roundProfile[i - 1], [high, hr] = roundProfile[i];\n surface(point, addTriangle, lr * crownRadius, crownBottom + low * (top - crownBottom),\n hr * crownRadius, crownBottom + high * (top - crownBottom), crown);\n }\n }\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\n/** Emit a snapshot for consumers; ready does not wait for all neighborhood tasks. */\nexport function updateStatus(backend, enabled = true) {\n const progress = /* alloc */ { enabled, loaded: 0, skipped: 0, pending: 0, errors: /* alloc */ [] };\n let area;\n for (area of sceneByLayer.get(backend)._areas.values()) {\n if (area.error) progress.errors.push(area.error);\n else if (!area.done) progress.pending++;\n progress.loaded += area.buildings ?? 0;\n progress.skipped += area.skipped ?? 0;\n }\n backend.fire('progress', progress);\n}\n", "export const archiveDecoder = new TextDecoder();\n", "/** Cumulative Hilbert ID for an archive tile. */\n\nexport function tileId(z, x, y) {\n if (!Number.isInteger(z) || !Number.isInteger(x) || !Number.isInteger(y) || z < 0 || z > 26 ||\n x < 0 || y < 0 || x >= 2 ** z || y >= 2 ** z) {\n throw /* alloc */ new Error('Invalid PMTiles tile coordinates');\n }\n let id = (4 ** z - 1) / 3;\n const n = 2 ** z;\n // Same cumulative Hilbert ordering used by build/pmtiles.js.\n let s, rx, ry, swap;\n for (s = n / 2; s >= 1; s /= 2) {\n rx = (x & s) ? 1 : 0, ry = (y & s) ? 1 : 0;\n id += s * s * ((3 * rx) ^ ry);\n if (!ry) {\n if (rx) { x = n - 1 - x; y = n - 1 - y; }\n swap = x;\n x = y;\n y = swap;\n }\n }\n return id;\n}\n", "export const headerOffsets = [\n 'rootDirectoryOffset', 'rootDirectoryLength', 'jsonMetadataOffset', 'jsonMetadataLength',\n 'leafDirectoryOffset', 'leafDirectoryLength', 'tileDataOffset', 'tileDataLength',\n 'numAddressedTiles', 'numTileEntries', 'numTileContents',\n];\n", "export const headerFlags = ['clustered', 'internalCompression', 'tileCompression', 'tileType', 'minZoom', 'maxZoom'];\n", "export const headerBounds = ['minLon', 'minLat', 'maxLon', 'maxLat'];\n", "import { headerOffsets } from '../globals/headerOffsets.js';\nimport { headerFlags } from '../globals/headerFlags.js';\nimport { headerBounds } from '../globals/headerBounds.js';\n\n\n/** Decode the PMTiles v3 header. */\nexport function decodeHeader(data) {\n const view = data.byteLength >= 127\n ? /* alloc */ new DataView(data) : null;\n // \"PMTiles\" followed by version 3, read as two little-endian words.\n if (!view || view.getUint32(0, true) !== 0x69544d50 || view.getUint32(4, true) !== 0x0373656c) {\n throw /* alloc */ new Error('Expected a PMTiles v3 archive');\n }\n const header = /* alloc */ {};\n let i;\n for (i = 0; i < headerOffsets.length; i++) header[headerOffsets[i]] = Number(view.getBigUint64(8 + i * 8, true));\n for (i = 0; i < headerFlags.length; i++) header[headerFlags[i]] = view.getUint8(96 + i);\n for (i = 0; i < headerBounds.length; i++) header[headerBounds[i]] = view.getInt32(102 + i * 4, true) / 1e7;\n header.centerZoom = view.getUint8(118);\n header.centerLon = view.getInt32(119, true) / 1e7;\n header.centerLat = view.getInt32(123, true) / 1e7;\n return header;\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\r\nexport async function read(backend, offset, length, signal) {\r\n signal?.throwIfAborted();\r\n if (!Number.isSafeInteger(offset) || !Number.isSafeInteger(length) ||\r\n offset < 0 || length <= 0 || !Number.isSafeInteger(offset + length)) {\r\n throw /* alloc */ new Error('Invalid PMTiles byte range');\r\n }\r\n const response = await fetch(sceneByLayer.get(backend).url, /* alloc */ {\r\n headers: /* alloc */ { Range: `bytes=${offset}-${offset + length - 1}` }, signal,\r\n });\r\n if (!response.ok) {\r\n throw /* alloc */ new Error(`Unable to read PMTiles: HTTP ${response.status}`);\r\n }\r\n const etag = response.headers.get('ETag');\r\n if (sceneByLayer.get(backend)._etag && etag !== sceneByLayer.get(backend)._etag) {\r\n throw /* alloc */ new Error('PMTiles archive changed; recreate the layer');\r\n }\r\n if (etag) sceneByLayer.get(backend)._etag = etag;\r\n let data = await response.arrayBuffer();\r\n if (response.status === 200) {\r\n data = data.slice(offset, offset + length);\r\n } else if (response.status !== 206 ||\r\n !response.headers.get('Content-Range')?.startsWith(`bytes ${offset}-${offset + length - 1}/`)) {\r\n throw /* alloc */ new Error('Invalid PMTiles range response');\r\n }\r\n if (data.byteLength !== length) {\r\n throw /* alloc */ new Error('Truncated PMTiles range');\r\n }\r\n return data;\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { decodeHeader } from './decodeHeader.js';\nimport { read } from './read.js';\n\n/** Cache header initialization; failures remain visible to all callers. */\n\nexport function getHeader(layer) {\n if (!sceneByLayer.has(layer)) return layer.getHeader();\n if (layer.options.archive && layer.options.archive !== layer) return getHeader(layer.options.archive);\n return sceneByLayer.get(layer)._header ||= read(layer, 0, 127).then(decodeHeader);\n}\n", "export const directoryReader = {\n bytes: null,\n cursor: 0\n};\n", "\n\nexport function varint(reader) {\n const { bytes } = reader;\n let value = 0;\n let factor, byte;\n for (factor = 1; factor <= 2 ** 49; factor *= 128) {\n if (reader.cursor >= bytes.length) {\n throw /* alloc */ new Error('Truncated PMTiles directory');\n }\n byte = bytes[reader.cursor++];\n value += (byte & 127) * factor;\n if (!Number.isSafeInteger(value)) {\n throw /* alloc */ new Error('Invalid PMTiles directory integer');\n }\n if (byte < 128) return value;\n }\n throw /* alloc */ new Error('Invalid PMTiles directory integer');\n}\n", "import { directoryReader } from '../globals/directoryReader.js';\nimport { varint } from './varint.js';\n\n/** Decode delta/varint directory columns, rejecting malformed entries. */\n\nexport function decodeDirectory(data) {\n const reader = directoryReader;\n const bytes = /* alloc */ new Uint8Array(data);\n reader.bytes = bytes;\n reader.cursor = 0;\n try {\n const count = varint(reader);\n if (count > (bytes.length - reader.cursor) / 4) {\n throw /* alloc */ new Error('Invalid PMTiles directory count');\n }\n const entries = /* alloc */ new Array(count);\n let tileId = 0;\n let i, entry, value;\n for (i = 0; i < count; i++) {\n tileId += varint(reader);\n if (!Number.isSafeInteger(tileId) || (i && tileId <= entries[i - 1].tileId)) {\n throw /* alloc */ new Error('Invalid PMTiles directory tile IDs');\n }\n entries[i] = /* alloc */ { tileId, runLength: 0, length: 0, offset: 0 };\n }\n for (entry of entries) entry.runLength = varint(reader);\n for (entry of entries) {\n entry.length = varint(reader);\n if (!entry.length) {\n throw /* alloc */ new Error('Invalid PMTiles directory length');\n }\n }\n for (i = 0; i < entries.length; i++) {\n entry = entries[i];\n value = varint(reader);\n if (!value && !i) {\n throw /* alloc */ new Error('Invalid PMTiles directory offset');\n }\n entry.offset = value ? value - 1 : entries[i - 1].offset + entries[i - 1].length;\n }\n if (reader.cursor !== bytes.length) {\n throw /* alloc */ new Error('Trailing PMTiles directory data');\n }\n return entries;\n } finally {\n // Decoding is synchronous; release the input before reusing this reader.\n reader.bytes = null;\n reader.cursor = 0;\n }\n}\n", "export async function decompress(data, compression) {\n if (compression === 1) return data;\n if (compression !== 2) {\n throw /* alloc */ new Error(`Unsupported PMTiles compression: ${compression}`);\n }\n const blob = /* alloc */ new Blob(\n /* alloc */ [data]);\n const stream = /* alloc */ new DecompressionStream('gzip');\n return /* alloc */ new Response(blob.stream().pipeThrough(stream)).arrayBuffer();\n}\n", "import { decodeDirectory } from \"./decodeDirectory.js\";\nimport { decompress } from \"./decompress.js\";\nimport { read } from \"./read.js\";\n\nexport async function loadDirectory(backend, offset, length, compression) {\n return decodeDirectory(await decompress(await read(backend, offset, length), compression));\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { loadDirectory } from './loadDirectory.js';\r\n\r\nexport async function getDirectoryEntries(backend, offset, length, compression) {\r\n const directories = sceneByLayer.get(backend)._directories;\r\n const key = `${offset}:${length}`;\r\n if (!directories.has(key)) {\r\n if (directories.size >= 32) directories.delete(directories.keys().next().value);\r\n directories.set(key, loadDirectory(backend, offset, length, compression));\r\n }\r\n const pending = directories.get(key);\r\n try {\r\n return await pending;\r\n } catch (error) {\r\n if (directories.get(key) === pending) directories.delete(key);\r\n throw error;\r\n }\r\n}\r\n", "export function findDirectoryEntry(entries, id) {\r\n let low = 0, high = entries.length - 1, mid;\r\n while (low <= high) {\r\n mid = (low + high) >> 1;\r\n if (entries[mid].tileId <= id) low = mid + 1;\r\n else high = mid - 1;\r\n }\r\n return entries[high];\r\n}\r\n", "import { decompress } from './decompress.js';\r\nimport { read } from './read.js';\r\n\r\nexport async function getTileData(backend, header, entry, id, signal) {\r\n if (id - entry.tileId >= entry.runLength) return;\r\n if (entry.offset + entry.length > header.tileDataLength) {\r\n throw /* alloc */ new Error('PMTiles tile outside data section');\r\n }\r\n const data = await decompress(await read(backend, header.tileDataOffset + entry.offset, entry.length, signal),\r\n header.tileCompression);\r\n signal?.throwIfAborted();\r\n return /* alloc */ { data };\r\n}\r\n", "import { getDirectoryEntries } from './getDirectoryEntries.js';\r\nimport { findDirectoryEntry } from './findDirectoryEntry.js';\r\nimport { getTileData } from './getTileData.js';\r\n\r\nexport async function findTile(backend, header, id, signal) {\r\n let offset = header.rootDirectoryOffset, length = header.rootDirectoryLength;\r\n let firstOffset = -1, secondOffset = -1, thirdOffset = -1;\r\n let depth, entries, entry, tile;\r\n for (depth = 0; depth < 4; depth++) {\r\n if (offset === firstOffset || offset === secondOffset || offset === thirdOffset) {\r\n throw /* alloc */ new Error('Cyclic PMTiles directory');\r\n }\r\n if (depth === 0) firstOffset = offset;\r\n else if (depth === 1) secondOffset = offset;\r\n else if (depth === 2) thirdOffset = offset;\r\n entries = await getDirectoryEntries(backend, offset, length, header.internalCompression);\r\n signal?.throwIfAborted();\r\n entry = findDirectoryEntry(entries, id);\r\n if (!entry) return;\r\n if (entry.runLength) {\r\n tile = await getTileData(backend, header, entry, id, signal);\r\n return tile;\r\n }\r\n if (entry.offset + entry.length > header.leafDirectoryLength) {\r\n throw /* alloc */ new Error('PMTiles directory outside leaf section');\r\n }\r\n offset = header.leafDirectoryOffset + entry.offset;\r\n length = entry.length;\r\n }\r\n throw /* alloc */ new Error('PMTiles directory depth exceeds four levels');\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { tileId } from './tileId.js';\nimport { getHeader } from './getHeader.js';\nimport { findTile } from './findTile.js';\n\n/** Nearest directory entry at/before the Hilbert ID, then follow leaf pointers. */\n\nexport async function getZxy(backend, z, x, y, signal) {\n if (!sceneByLayer.has(backend)) return backend.getZxy(z, x, y, signal);\n if (backend.options.archive && backend.options.archive !== backend) {\n return getZxy(backend.options.archive, z, x, y, signal);\n }\n const id = tileId(z, x, y);\n signal?.throwIfAborted();\n const header = await getHeader(backend);\n signal?.throwIfAborted();\n if (z < header.minZoom || z > header.maxZoom) return;\n return findTile(backend, header, id, signal);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { archiveDecoder } from '../globals/archiveDecoder.js';\n\nimport { getZxy } from './getZxy.js';\n\n\nexport async function loadSource(layer, area) {\n if (sceneByLayer.get(layer)._geojson) {\n const { data, url } = layer.options;\n if (data !== undefined && url) {\n throw /* alloc */ new Error('GeoJSON source requires either data or url');\n }\n if (data !== undefined) return data;\n if (!url) {\n throw /* alloc */ new Error('GeoJSON source requires either data or url');\n }\n const sourceUrl = /* alloc */ new URL(url, document.baseURI);\n const response = await fetch(sourceUrl, /* alloc */ { signal: area.request.signal });\n if (!response.ok) {\n throw /* alloc */ new Error(`Unable to load GeoJSON: HTTP ${response.status}`);\n }\n return response.json();\n }\n const result = await getZxy(layer, area.coords.z, area.coords.x, area.coords.y, area.request.signal);\n return result\n ? JSON.parse(archiveDecoder.decode(result.data))\n : /* alloc */ {\n type: 'FeatureCollection',\n features: /* alloc */ [],\n };\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\n\n\nimport { buildAreaFeature } from './buildAreaFeature.js';\nimport { attachAreaMesh } from './attachAreaMesh.js';\nimport { loadSource } from '../archives/loadSource.js';\nimport { sourceAreaContext } from './sourceAreaContext.js';\nimport { pump } from './pump.js';\n\nexport async function buildArea(backend, area, map) {\n let feature;\n try {\n await /* alloc */ new Promise(requestAnimationFrame);\n await sceneByLayer.get(cameraByMap.get(map)._terrain3D)?._terrainPromise;\n if (area.request.signal.aborted) return;\n const data = await loadSource(backend, area);\n if (area.request.signal.aborted) return;\n if (data?.type !== 'FeatureCollection' || !Array.isArray(data.features)) {\n throw /* alloc */ new Error('Invalid GeoJSON response');\n }\n if (sceneByLayer.get(backend)._geojson && typeof backend.options.style !== 'function') {\n throw /* alloc */ new Error('style must be a function');\n }\n const context = sourceAreaContext(backend, area, map);\n let deadline = performance.now() + 4;\n for (feature of data.features) {\n if (area.request.signal.aborted) return;\n if (performance.now() >= deadline) {\n await /* alloc */ new Promise(requestAnimationFrame);\n if (area.request.signal.aborted) return;\n deadline = performance.now() + 4;\n }\n buildAreaFeature(context, feature);\n }\n attachAreaMesh(context);\n } catch (error) {\n if (!area.request.signal.aborted) {\n area.error = error.message;\n backend.fire('error', /* alloc */ { error });\n }\n } finally {\n sceneByLayer.get(backend)._inflight--;\n pump(backend, map);\n }\n}\n", "import { L } from '../globals/L.js';\nimport { buildAreaPoint } from './buildAreaPoint.js';\nimport { buildAreaPolygon } from './buildAreaPolygon.js';\nimport { parseColor } from '../utils/parseColor.js';\nimport { featureAnchor } from './featureAnchor.js';\nimport { extrusionStyle } from './extrusionStyle.js';\n\nexport function buildAreaFeature(context, feature) {\n const { backend, area, map } = context;\n const coords = area.coords;\n const coordinates = featureAnchor(feature, backend.options.nightLight);\n const geometry = feature.geometry, isTree = geometry.type === 'Point';\n const lon = coordinates[0], lat = coordinates[1];\n if (coords) {\n const anchor = map.project(/* alloc */ new L.LatLng(lat, lon), coords.z);\n if (Math.floor(anchor.x / 256) !== coords.x || Math.floor(anchor.y / 256) !== coords.y) return;\n }\n const style = extrusionStyle(backend, feature);\n if (style === null) {\n context.skipped++;\n return;\n }\n const { top, bottom = 0, color = 0xd9b38c } = style;\n const baseColor = parseColor(color);\n const vertexStart = context.positions.length / 3;\n if (isTree) buildAreaPoint(context, feature, lon, lat, style, baseColor);\n let polygon;\n if (geometry.type === 'Polygon') buildAreaPolygon(context, geometry.coordinates, top, bottom, baseColor);\n else if (geometry.type === 'MultiPolygon') for (polygon of geometry.coordinates) buildAreaPolygon(context, polygon, top, bottom, baseColor);\n const vertexEnd = context.positions.length / 3;\n context.featureFaces.push(/* alloc */ {\n id: feature.id ?? feature.properties?.objectid ?? JSON.stringify(geometry),\n properties: feature.properties, baseColor,\n faceStart: vertexStart / 3, faceEnd: vertexEnd / 3, vertexStart, vertexEnd,\n });\n}\n", "import { L } from '../globals/L.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { getElevation } from '../terrain/getElevation.js';\n\nexport function projectedTree(context, lon, lat) {\n const { backend, crs, origin, metres, map } = context;\n const location = /* alloc */ new L.LatLng(lat, lon);\n const point = crs.project(location);\n const elevation = cameraByMap.get(map)._terrain3D ? getElevation(cameraByMap.get(map)._terrain3D, location) : undefined;\n return /* alloc */ {\n x: (point.x - origin.x) * metres,\n y: (point.y - origin.y) * metres,\n ground: Number.isFinite(elevation) && Number.isFinite(sceneByLayer.get(backend).root.position[1])\n ? elevation - sceneByLayer.get(backend).root.position[1] : 0,\n };\n}\n", "export const triangleContexts = [];\n", "export function groundOffset(point) {\r\n return point.ground || 0;\r\n}\n", "import { groundOffset } from './groundOffset.js';\n\nexport function addTriangle(context, a, ah, b, bh, c, ch, nx, ny, nz, color) {\r\n const { backend, positions, normals, colors, uvs } = context;\r\n const ux = b.x - a.x, uy = bh - ah, uz = a.y - b.y;\r\n const vx = c.x - a.x, vy = ch - ah, vz = a.y - c.y;\r\n if ((uy * vz - uz * vy) * nx + (uz * vx - ux * vz) * ny + (ux * vy - uy * vx) * nz < 0) {\r\n const point = b, height = bh;\r\n b = c; bh = ch; c = point; ch = height;\r\n }\r\n positions.push(a.x, ah + groundOffset(a), -a.y,\r\n b.x, bh + groundOffset(b), -b.y,\r\n c.x, ch + groundOffset(c), -c.y);\r\n normals.push(nx, ny, nz, nx, ny, nz, nx, ny, nz);\r\n colors.push(color.r, color.g, color.b, color.r, color.g, color.b, color.r, color.g, color.b);\r\n if (backend.options.nightLight) uvs.push(...a.uv, ...b.uv, ...c.uv);\r\n}\n", "import { triangleContexts } from '../globals/triangleContexts.js';\n\nimport { addTriangle } from './addTriangle.js';\n\nexport function addGeneratedTriangle(...args) {\r\n addTriangle(triangleContexts[triangleContexts.length - 1], ...args);\r\n}\n", "import { triangleContexts } from '../globals/triangleContexts.js';\n\n\nimport { addGeneratedTriangle } from './addGeneratedTriangle.js';\n\nexport function generateTreeGeometry(context, generator, point, style) {\r\n triangleContexts.push(context);\r\n try {\r\n generator(point, style, addGeneratedTriangle);\r\n } finally {\r\n triangleContexts.pop();\r\n }\r\n}\n", "import { projectedTree } from './projectedTree.js';\nimport { generateTreeGeometry } from './generateTreeGeometry.js';\nimport { lampPostGeometry } from '../geometry/lampPostGeometry.js';\nimport { lightGeometry } from '../geometry/lightGeometry.js';\nimport { treeGeometry } from '../geometry/treeGeometry.js';\n\nexport function buildAreaPoint(context, feature, lon, lat, style, baseColor) {\n const { backend } = context;\n const { top } = style;\n const projected = projectedTree(context, lon, lat);\n if (backend.options.nightLight) {\n if (!Number.isFinite(style.lightFlux) || style.lightFlux <= 0) throw /* alloc */ new Error('Invalid light flux');\n const support = feature.properties?.cod_ouvrag || `${lon},${lat}`;\n if (style.poleRadius > 0 && !context.supports.has(support)) {\n generateTreeGeometry(context, lampPostGeometry, projected, style);\n context.supports.add(support);\n }\n generateTreeGeometry(context, lightGeometry, projected, style);\n context.lights.push(/* alloc */ {\n position: /* alloc */ [projected.x, projected.ground + top, -projected.y],\n radius: Math.hypot(top, style.lightRadius), color: /* alloc */ [baseColor.r, baseColor.g, baseColor.b],\n flux: style.lightFlux,\n });\n } else generateTreeGeometry(context, treeGeometry, projected, style);\n}\n", "import { L } from '../globals/L.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { getElevation } from '../terrain/getElevation.js';\n\nexport function projectRing(context, ring) {\n const { backend, crs, origin, metres, map } = context;\n if (ring.length < 4) throw /* alloc */ new Error('Invalid GeoJSON polygon ring');\n const path = /* alloc */ [];\n let i, lng, lat, location, point, elevation;\n for (i = 0; i < ring.length - 1; i++) {\n lng = ring[i][0], lat = ring[i][1];\n if (!Number.isFinite(lng) || !Number.isFinite(lat)) throw /* alloc */ new Error('Invalid GeoJSON coordinates');\n location = /* alloc */ new L.LatLng(lat, lng);\n point = crs.project(location);\n elevation = cameraByMap.get(map)._terrain3D ? getElevation(cameraByMap.get(map)._terrain3D, location) : undefined;\n path.push(/* alloc */ {\n x: (point.x - origin.x) * metres,\n y: (point.y - origin.y) * metres,\n ground: Number.isFinite(elevation) && Number.isFinite(sceneByLayer.get(backend).root.position[1])\n ? elevation - sceneByLayer.get(backend).root.position[1] : 0,\n });\n }\n return path;\n}\n", "import { projectRing } from './projectRing.js';\nimport { triangulate } from '../triangulation/triangulate.js';\nimport { addTriangle } from './addTriangle.js';\nimport { isClockWise } from '../triangulation/isClockWise.js';\n\nexport function buildAreaPolygon(context, rings, top, bottom, baseColor) {\n if (!rings.length) throw /* alloc */ new Error('Empty GeoJSON polygon');\n const paths = /* alloc */ [];\n let ring, path, point, a, b, c, index, sign, i, length, nx, nz;\n for (ring of rings) paths.push(projectRing(context, ring));\n const points = /* alloc */ [];\n for (path of paths) for (point of path) points.push(point);\n for ([a, b, c] of triangulate(paths[0], paths.slice(1))) {\n addTriangle(context, points[a], top, points[b], top, points[c], top, 0, 1, 0, baseColor);\n if (bottom > 0) addTriangle(context, points[a], bottom, points[b], bottom, points[c], bottom, 0, -1, 0, baseColor);\n }\n for (index = 0; index < paths.length; index++) {\n path = paths[index];\n sign = isClockWise(path) === (index === 0) ? -1 : 1;\n for (i = 0; i < path.length; i++) {\n a = path[i], b = path[(i + 1) % path.length];\n length = Math.hypot(b.x - a.x, b.y - a.y);\n if (!length) continue;\n nx = sign * (b.y - a.y) / length, nz = sign * (b.x - a.x) / length;\n addTriangle(context, a, bottom, b, bottom, b, top, nx, 0, nz, baseColor);\n addTriangle(context, a, bottom, b, top, a, top, nx, 0, nz, baseColor);\n }\n }\n}\n", "export function featureAnchor(feature, nightLight) {\r\n const geometry = feature?.geometry, point = geometry?.type === 'Point';\r\n if (nightLight && !point) throw /* alloc */ new Error('Night lights require Point geometry');\r\n if (geometry?.type !== 'Polygon' && geometry?.type !== 'MultiPolygon' && !point) throw /* alloc */ new Error('Unsupported GeoJSON geometry');\r\n const coordinates = point ? geometry.coordinates :\r\n geometry.type === 'Polygon' ? geometry.coordinates[0]?.[0] : geometry.coordinates[0]?.[0]?.[0];\r\n if (!Number.isFinite(coordinates?.[0]) || !Number.isFinite(coordinates?.[1])) throw /* alloc */ new Error('Invalid GeoJSON coordinates');\r\n return coordinates;\r\n}\r\n", "export function extrusionStyle(backend, feature) {\r\n const style = backend.options.style(feature);\r\n if (style === null) return null;\r\n if (!style || typeof style !== 'object') throw /* alloc */ new Error('style must return an extrusion style or null');\r\n const { top, bottom = 0 } = style;\r\n if (!Number.isFinite(top) || !Number.isFinite(bottom) || bottom < 0 || top <= bottom) {\r\n throw /* alloc */ new Error('Invalid extrusion heights: expected top > bottom >= 0');\r\n }\r\n return style;\r\n}\r\n", "/** Compact repeated features only when reconstructed float32 positions compare equal. */\r\nexport function instanceAreaGeometry(context) {\r\n const { positions, normals, colors, featureFaces } = context;\r\n if (context.backend.options.nightLight || featureFaces.length < 2) return context;\r\n const vertices = featureFaces[0].vertexEnd;\r\n const length = vertices * 3;\r\n if (!vertices || positions.length !== length * featureFaces.length) return context;\r\n const originX = Math.trunc(positions[0]), originY = Math.trunc(positions[1]), originZ = Math.trunc(positions[2]);\r\n const template = /* alloc */ new Float32Array(length);\r\n let i, instance, face, start;\r\n for (i = 0; i < length; i++) template[i] = positions[i] - (i % 3 === 0 ? originX : i % 3 === 1 ? originY : originZ);\r\n const offsets = /* alloc */ new Float32Array(featureFaces.length * 4);\r\n for (instance = 0; instance < featureFaces.length; instance++) {\r\n face = featureFaces[instance];\r\n start = instance * length;\r\n if (face.vertexStart !== instance * vertices || face.vertexEnd !== (instance + 1) * vertices) return context;\r\n offsets[instance * 4] = originX + positions[start] - positions[0];\r\n offsets[instance * 4 + 1] = originY + positions[start + 1] - positions[1];\r\n offsets[instance * 4 + 2] = originZ + positions[start + 2] - positions[2];\r\n offsets[instance * 4 + 3] = instance * vertices;\r\n for (i = 0; i < length; i++) {\r\n if (Math.fround(template[i] + offsets[instance * 4 + i % 3]) !== Math.fround(positions[start + i]) ||\r\n Math.fround(normals[i]) !== Math.fround(normals[start + i]) ||\r\n Math.fround(colors[i]) !== Math.fround(colors[start + i])) return context;\r\n }\r\n }\r\n return /* alloc */ {\r\n positions: template, normals: normals.slice(0, length), colors: colors.slice(0, length),\r\n instanceOffsets: offsets,\r\n };\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { nextId } from '../globals/nextId.js';\n\n\nimport { emptyNode } from '../scene/emptyNode.js';\nimport { createProgram } from '../rendering/createProgram.js';\n\nimport { setParent } from '../scene/setParent.js';\nimport { update } from '../scene/update.js';\nimport { instanceAreaGeometry } from './instanceAreaGeometry.js';\n\nexport function attachAreaMesh(context) {\n const { backend, area } = context;\n if (!context.positions.length) {\n area.mesh = null, area.buildings = 0, area.skipped = context.skipped, area.done = true;\n return;\n }\n const device = sceneByLayer.get(backend).renderer.device;\n const data = instanceAreaGeometry(context);\n const attributes = /* alloc */ {\n position: /* alloc */ { size: 3, data: /* alloc */ new Float32Array(data.positions) },\n normal: /* alloc */ { size: 3, data: /* alloc */ new Float32Array(data.normals) },\n color: /* alloc */ { size: 3, data: /* alloc */ new Float32Array(data.colors) },\n };\n if (data.instanceOffsets) attributes.instanceOffset = /* alloc */ { size: 4, data: data.instanceOffsets };\n if (backend.options.nightLight) attributes.uv = /* alloc */ { size: 2, data: /* alloc */ new Float32Array(context.uvs) };\n let name, attribute;\n for (name in attributes) {\n attribute = attributes[name];\n attribute.count = attribute.data.length / attribute.size;\n attribute.buffer = device.createBuffer(/* alloc */ {\n size: Math.max(4, attribute.data.byteLength),\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n });\n device.queue.writeBuffer(attribute.buffer, 0, attribute.data);\n }\n const meshGeometry = /* alloc */ {\n device,\n attributes,\n drawRange: /* alloc */ { start: 0, count: attributes.position.count },\n };\n area.mesh = /* alloc */ {\n ...emptyNode(),\n device,\n geometry: meshGeometry,\n program: createProgram(backend, /* alloc */ {\n instanced: Boolean(data.instanceOffsets),\n vertexColors: true, roofTexture: backend.options.roofTexture,\n wallTexture: backend.options.wallTexture,\n nightLight: Boolean(backend.options.nightLight),\n alphaMode: backend.options.nightLight ? 'BLEND' : undefined,\n doubleSided: Boolean(backend.options.nightLight),\n }),\n id: nextId.value++,\n renderOrder: 0,\n fadeDuration: 250,\n extras: /* alloc */ { featureFaces: context.featureFaces, lights: context.lights },\n };\n area.buildings = context.featureFaces.length;\n area.skipped = context.skipped;\n area.done = true;\n setParent(area.mesh, sceneByLayer.get(backend).root);\n update(backend);\n}\n", "import { radians } from '../globals/radians.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\r\nexport function sourceAreaContext(backend, area, map) {\r\n const crs = map.options.crs, origin = crs.project(sceneByLayer.get(backend).location);\r\n return /* alloc */ {\r\n backend, area, map, crs, origin,\r\n metres: Math.cos(sceneByLayer.get(backend).location.lat * radians),\r\n positions: /* alloc */ [],\r\n normals: /* alloc */ [],\r\n colors: /* alloc */ [],\r\n uvs: /* alloc */ [],\r\n featureFaces: /* alloc */ [],\r\n lights: /* alloc */ [],\r\n supports: /* alloc */ new Set(),\r\n skipped: 0,\r\n };\r\n}\r\n", "export function compareDistance(a, b) {\r\n return a.distance - b.distance;\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { compareDistance } from '../utils/compareDistance.js';\r\n\r\nexport function pendingSourceAreas(layers, map) {\r\n const pending = /* alloc */ [];\r\n let layer, area, center;\r\n for (layer of layers) {\r\n for (area of sceneByLayer.get(layer)._areas.values()) {\r\n if (area.started || area.request.signal.aborted) continue;\r\n center = area.coords && map.project(map.getCenter(), area.coords.z).divideBy(256);\r\n pending.push(/* alloc */ {\r\n layer, area,\r\n distance: center\r\n ? Math.hypot(area.coords.x + 0.5 - center.x, area.coords.y + 0.5 - center.y) / 2 ** area.coords.z : 0,\r\n });\r\n }\r\n }\r\n pending.sort(compareDistance);\r\n return pending;\r\n}\r\n", "import { renderers } from '../globals/renderers.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\n\nimport { emptyNode } from \"../scene/emptyNode.js\";\nimport { isClockWise } from \"../triangulation/isClockWise.js\";\nimport { lampPostGeometry } from \"../geometry/lampPostGeometry.js\";\nimport { lightGeometry } from \"../geometry/lightGeometry.js\";\nimport { parseColor } from \"../utils/parseColor.js\";\nimport { treeGeometry } from \"../geometry/treeGeometry.js\";\nimport { triangulate } from \"../triangulation/triangulate.js\";\nimport { createProgram } from '../rendering/createProgram.js';\nimport { updateStatus } from './updateStatus.js';\nimport { loadSource } from '../archives/loadSource.js';\nimport { setParent } from '../scene/setParent.js';\nimport { update } from '../scene/update.js';\nimport { getElevation } from \"../terrain/getElevation.js\";\n\nimport { buildArea } from './buildArea.js';\nimport { pendingSourceAreas } from './pendingSourceAreas.js';\n\n/** Share four load/build slots across source layers, nearest ground blocks first. */\nexport function pump(backend, map = backend._map) {\n const shared = map && renderers.get(map);\n if (!shared) return;\n const layers = /* alloc */ [];\n let layer, area, areaBackend;\n for (layer of sceneByLayer.get(shared)._layers) {\n if (Number.isFinite(sceneByLayer.get(layer)._inflight) && sceneByLayer.get(layer)._areas && (sceneByLayer.get(layer).url || sceneByLayer.get(layer)._geojson)) layers.push(layer);\n }\n const pending = pendingSourceAreas(layers, map);\n let inflight = 0;\n for (layer of layers) inflight += sceneByLayer.get(layer)._inflight;\n for ({ layer: areaBackend, area } of pending) {\n if (inflight >= 4) break;\n if (sceneByLayer.get(areaBackend)._inflight >= 2) continue;\n area.started = true;\n sceneByLayer.get(areaBackend)._inflight++;\n inflight++;\n buildArea(areaBackend, area, map);\n }\n for (layer of layers) updateStatus(layer);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { update } from '../scene/update.js';\n\n/** Highlight a source vertex range in the shader; vertex colors stay untouched. */\n\nexport function setHighlight(backend, feature) {\n if (feature?.model) feature = null;\n if (sceneByLayer.get(backend).highlightedFeature?.mesh === feature?.mesh &&\n sceneByLayer.get(backend).highlightedFeature?.vertexStart === feature?.vertexStart) return;\n if (sceneByLayer.get(backend).highlightedFeature) sceneByLayer.get(backend).highlightedFeature.mesh.highlight = null;\n sceneByLayer.get(backend).highlightedFeature = feature;\n if (feature) {\n feature.mesh.highlightRange[0] = feature.vertexStart;\n feature.mesh.highlightRange[1] = feature.vertexEnd;\n feature.mesh.highlight = feature.mesh.highlightRange;\n }\n update(backend);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\n/** Update tooltip content/position and arbitrate cursor ownership across shared layers. */\n\nexport function showFeature(backend, feature, event) {\n const tooltip = sceneByLayer.get(backend)._tooltip;\n if (!tooltip) return;\n if (feature) {\n tooltip.replaceChildren(backend.options.tooltip(feature));\n tooltip.hidden = false;\n const rect = sceneByLayer.get(backend).container.getBoundingClientRect();\n const x = event.clientX - rect.left, y = event.clientY - rect.top;\n tooltip.style.left = `${x + tooltip.offsetWidth + 16 > rect.width ? x - tooltip.offsetWidth - 12 : x + 12}px`;\n tooltip.style.top = `${y + tooltip.offsetHeight + 16 > rect.height ? y - tooltip.offsetHeight - 12 : y + 12}px`;\n } else {\n tooltip.hidden = true;\n }\n const shared = sceneByLayer.get(backend)._shared;\n let layer;\n if (shared) {\n let visible = false;\n for (layer of sceneByLayer.get(shared)._layers) {\n if (sceneByLayer.get(layer)._tooltip && !sceneByLayer.get(layer)._tooltip.hidden) {\n visible = true;\n break;\n }\n }\n if (visible) {\n if (sceneByLayer.get(shared)._cursor === undefined) sceneByLayer.get(shared)._cursor = sceneByLayer.get(backend).container.style.cursor;\n sceneByLayer.get(backend).container.style.cursor = 'pointer';\n } else if (sceneByLayer.get(shared)._cursor !== undefined) {\n sceneByLayer.get(backend).container.style.cursor = sceneByLayer.get(shared)._cursor;\n delete sceneByLayer.get(shared)._cursor;\n }\n }\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { setHighlight } from '../picking/setHighlight.js';\nimport { showFeature } from '../picking/showFeature.js';\nimport { setParent } from '../scene/setParent.js';\nimport { update } from '../scene/update.js';\n\n/** Cancel pending work and dispose this block's GPU data, including any hover highlight. */\nexport function releaseArea(backend, area) {\n area.request.abort();\n let attribute;\n if (area.mesh) {\n if (sceneByLayer.get(backend).highlightedFeature?.mesh === area.mesh) {\n setHighlight(backend, null);\n sceneByLayer.get(backend).hoveredFeature = null;\n showFeature(backend, null);\n }\n setParent(area.mesh, null);\n update(backend);\n const geometry = area.mesh.geometry;\n for (attribute of Object.values(geometry.attributes)) attribute.buffer.destroy();\n area.mesh.program.pipelineCache.clear();\n }\n}\n", "export function compareAreaDistance(a, b) {\n return a.distance - b.distance;\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { pump } from \"./pump.js\";\nimport { releaseArea } from './releaseArea.js';\nimport { compareAreaDistance } from './compareAreaDistance.js';\n\n/** Cover the visible ground bounds and one bordering block, clipped to the archive. */\n\nexport function updateArea(backend) {\n if (!backend._map || !sceneByLayer.get(backend)._shared) return;\n if (sceneByLayer.get(backend)._geojson) {\n if (!sceneByLayer.get(backend)._areas.has('geojson')) {\n sceneByLayer.get(backend)._areas.set('geojson', /* alloc */ { request: /* alloc */ new AbortController() });\n }\n pump(backend);\n return;\n }\n if (!sceneByLayer.get(backend).header) return;\n const z = sceneByLayer.get(backend).header.minZoom;\n const center = backend._map.project(backend._map.getCenter(), z).divideBy(256).floor();\n const bounds = backend._map.getBounds();\n const nw = backend._map.project(bounds.getNorthWest(), z).divideBy(256).floor();\n const se = backend._map.project(bounds.getSouthEast(), z).divideBy(256).floor();\n const archiveNW = backend._map.project(/* alloc */ [sceneByLayer.get(backend).header.maxLat, sceneByLayer.get(backend).header.minLon], z).divideBy(256).floor();\n const archiveSE = backend._map.project(/* alloc */ [sceneByLayer.get(backend).header.minLat, sceneByLayer.get(backend).header.maxLon], z).divideBy(256).floor();\n const wanted = /* alloc */ new Map();\n let x, y, key, area, coords;\n for (x = Math.max(0, nw.x - 1, archiveNW.x); x <= Math.min(2 ** z - 1, se.x + 1, archiveSE.x); x++) {\n for (y = Math.max(0, nw.y - 1, archiveNW.y); y <= Math.min(2 ** z - 1, se.y + 1, archiveSE.y); y++) {\n wanted.set(`${x}/${y}`, /* alloc */ { z, x, y });\n }\n }\n for ([key, area] of sceneByLayer.get(backend)._areas) {\n if (!wanted.has(key)) {\n releaseArea(backend, area);\n sceneByLayer.get(backend)._areas.delete(key);\n }\n }\n // Load the nearest new blocks first without rebuilding retained geometry.\n const areas = /* alloc */ [];\n for ([key, coords] of wanted) {\n coords.distance = Math.hypot(coords.x + 0.5 - center.x, coords.y + 0.5 - center.y) / 2 ** z;\n areas.push(coords);\n }\n areas.sort(compareAreaDistance);\n for (coords of areas) {\n key = `${coords.x}/${coords.y}`;\n if (!sceneByLayer.get(backend)._areas.has(key)) sceneByLayer.get(backend)._areas.set(key, /* alloc */ { coords, request: /* alloc */ new AbortController() });\n }\n pump(backend);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\n\n\nimport { getElevation } from './getElevation.js';\r\n\r\nexport function setTerrainHeight(layer) {\r\n if (!sceneByLayer.get(layer).root || !sceneByLayer.get(layer).location) return;\r\n sceneByLayer.get(layer)._terrainBaseY ??= sceneByLayer.get(layer).root.position[1];\r\n const terrain = cameraByMap.get(layer._map)?._terrain3D;\r\n const elevation = terrain && getElevation(terrain, sceneByLayer.get(layer).location);\r\n const offset = Number.isFinite(elevation) ? layer.options.terrainOffset ?? 0 : 0;\r\n sceneByLayer.get(layer).root.position[1] = sceneByLayer.get(layer)._terrainBaseY + (elevation ?? 0) + offset;\r\n}\r\n", "export function restoreGeometry(geometry, device) {\r\n if (geometry.attributes.index?.data instanceof Uint8Array) {\r\n geometry.attributes.index.data = /* alloc */ new Uint16Array(geometry.attributes.index.data);\r\n }\r\n let name, attribute, oldBuffer;\r\n for (name in geometry.attributes) {\r\n attribute = geometry.attributes[name];\r\n attribute.size ||= 1;\r\n attribute.count = attribute.data.length / attribute.size;\r\n attribute.indexFormat = attribute.data instanceof Uint32Array ? 'uint32' : 'uint16';\r\n oldBuffer = attribute.buffer;\r\n attribute.buffer = device.createBuffer(/* alloc */ {\r\n size: Math.max(4, attribute.data.byteLength),\r\n usage: name === 'index'\r\n ? GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST\r\n : GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\r\n });\r\n device.queue.writeBuffer(attribute.buffer, 0, attribute.data);\r\n oldBuffer?.destroy();\r\n }\r\n geometry.device = device;\r\n geometry.drawRange.count = geometry.attributes.index?.count || geometry.attributes.position.count;\r\n}\r\n", "export function restoreMaterialTextures(material, device) {\r\n let name, texture;\r\n for (name in material) {\r\n if (name !== 'baseTexture' && name !== 'metalTexture' && name !== 'emissiveTexture' && name !== 'occlusionTexture') continue;\r\n texture = material[name];\r\n if (!texture || texture.device === device) continue;\r\n texture.device = device;\r\n texture.texture = device.createTexture(/* alloc */ {\r\n size: /* alloc */ [texture.image.width, texture.image.height],\r\n format: texture.format,\r\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,\r\n });\r\n texture.sampler = device.createSampler(texture.samplerOptions);\r\n texture.uploaded = null;\r\n }\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { createProgram } from '../rendering/createProgram.js';\nimport { restoreGeometry } from './restoreGeometry.js';\nimport { restoreMaterialTextures } from './restoreMaterialTextures.js';\n\nexport function restoreObject(object, backend) {\n const shared = sceneByLayer.get(backend)._shared;\n let texture;\n if (object.geometry && object.geometry.device !== sceneByLayer.get(shared).renderer.device) {\n const geometry = object.geometry;\n const material = object.program._layerMaterial;\n const device = sceneByLayer.get(shared).renderer.device;\n restoreGeometry(geometry, device);\n object.bindGroup = null;\n if (object.boundTextures) object.boundTextures.length = 0;\n else object.boundTextures = /* alloc */ [];\n restoreMaterialTextures(material, device);\n object.program.pipelineCache.clear();\n object.program = createProgram(backend, material);\n object.device = device;\n }\n if (object.texture && object.texture.device !== sceneByLayer.get(shared).renderer.device) {\n texture = object.texture;\n texture.device = sceneByLayer.get(shared).renderer.device;\n texture.texture = sceneByLayer.get(shared).renderer.device.createTexture(/* alloc */ {\n size: /* alloc */ [object.texture.image.width, object.texture.image.height],\n format: object.texture.format,\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,\n });\n texture.sampler = sceneByLayer.get(shared).renderer.device.createSampler(texture.samplerOptions);\n texture.uploaded = null;\n }\n}\n", "export const rendererDevices = new WeakMap();\n", "export function showWebGPUWarning(map) {\n const container = map.getContainer();\n if (container.querySelector('.leaflet-webgpu-warning')) return;\n const warning = document.createElement('div');\n warning.className = 'leaflet-webgpu-warning';\n warning.setAttribute('role', 'alert');\n warning.style.cssText = 'position:absolute;z-index:1000;top:50%;left:50%;transform:translate(-50%,-50%);max-width:calc(100% - 32px);box-sizing:border-box;padding:12px 16px;border:1px solid #c98b24;border-radius:6px;background:#fff8e6;box-shadow:0 3px 12px #0005;color:#30251d;font:14px/1.5 sans-serif;text-align:center;pointer-events:auto';\n warning.append('WebGPU is not available in this browser or device. ');\n const link = document.createElement('a');\n link.href = 'https://developer.mozilla.org/en-US/docs/Web/API/WebGPU_API#browser_compatibility';\n link.target = '_blank';\n link.rel = 'noopener noreferrer';\n link.textContent = 'Learn more';\n warning.append(link);\n container.append(warning);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { renderers } from '../globals/renderers.js';\n\n\nimport { showWebGPUWarning } from './showWebGPUWarning.js';\n\nexport function failAttachment(error, backend, map) {\n showWebGPUWarning(map);\n sceneByLayer.get(backend)._rendererReady.reject(error);\n renderers.delete(map);\n throw error;\n}\n", "import { failAttachment } from './failAttachment.js';\n\nexport async function requestAdapter(backend, map) {\n let adapter;\n try {\n adapter = await navigator.gpu.requestAdapter();\n } catch (error) {\n failAttachment(error, backend, map);\n }\n if (!adapter) failAttachment(/* alloc */ new Error('Unable to acquire a WebGPU adapter'), backend, map);\n return adapter;\n}\n", "import { failAttachment } from './failAttachment.js';\n\nexport async function requestDevice(adapter, backend, map) {\n try {\n return await adapter.requestDevice();\n } catch (error) {\n failAttachment(error, backend, map);\n }\n}\n", "import { rendererDevices } from '../globals/rendererDevices.js';\nimport { renderers } from '../globals/renderers.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\n\nexport function rendererDeviceError(event) {\n const map = rendererDevices.get(event.currentTarget);\n const owner = renderers.get(map);\n if (sceneByLayer.get(owner)?.renderer?.device !== event.currentTarget) return;\n if (!sceneByLayer.get(owner)._layers) return;\n let layer;\n for (layer of sceneByLayer.get(owner)._layers) layer.fire('error', /* alloc */ { error: event.error });\n}\n", "import { rendererDevices } from '../globals/rendererDevices.js';\nimport { renderers } from '../globals/renderers.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\n\nexport function rendererDeviceLost([info, device]) {\n const map = rendererDevices.get(device);\n const owner = renderers.get(map);\n if (!owner || sceneByLayer.get(owner).renderer?.device !== device) return;\n const error = /* alloc */ new Error(`WebGPU device lost: ${info.message || info.reason}`);\n let layer;\n for (layer of sceneByLayer.get(owner)._layers) layer.fire('error', /* alloc */ { error });\n}\n", "/** Perspective camera state: fov in degrees, near/far in scene metres. */\r\nexport function createSceneCamera() {\r\n return /* alloc */ {\r\n position: /* alloc */ [0, 0, 0],\r\n up: /* alloc */ [0, 1, 0],\r\n target: /* alloc */ [0, 0, 0],\r\n x: /* alloc */ [0, 0, 0],\r\n y: /* alloc */ [0, 0, 0],\r\n z: /* alloc */ [0, 0, 0],\r\n viewMatrix: /* alloc */ [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\r\n projectionMatrix: /* alloc */ [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\r\n projectionViewMatrix: /* alloc */ [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\r\n viewTransform: /* alloc */ new DOMMatrix(),\r\n projectionTransform: /* alloc */ new DOMMatrix(),\r\n projectionViewTransform: /* alloc */ new DOMMatrix(),\r\n fov: 45,\r\n aspect: 1,\r\n near: 0.1,\r\n far: 10000,\r\n };\r\n}\r\n", "export const sceneSunlightUniforms = new Float32Array(20);\nsceneSunlightUniforms[0] = sceneSunlightUniforms[5] =\n sceneSunlightUniforms[10] = sceneSunlightUniforms[15] = 1;\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { sceneSunlightUniforms } from '../globals/sceneSunlightUniforms.js';\r\nimport { resizeSunlight } from '../shadows/resizeSunlight.js';\r\n\r\nexport function initializeRendererResources(backend, device) {\r\n const layout = device.createBindGroupLayout(/* alloc */ {\r\n entries: /* alloc */ [\r\n /* alloc */ { binding: 0, visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT, buffer: /* alloc */ { type: 'uniform' } },\r\n /* alloc */ { binding: 1, visibility: GPUShaderStage.FRAGMENT, texture: /* alloc */ { sampleType: 'depth' } },\r\n /* alloc */ { binding: 2, visibility: GPUShaderStage.FRAGMENT, sampler: /* alloc */ { type: 'comparison' } },\r\n /* alloc */ { binding: 3, visibility: GPUShaderStage.FRAGMENT, buffer: /* alloc */ { type: 'read-only-storage' } },\r\n ]\r\n });\r\n const buffer = sceneByLayer.get(backend).renderer.device.createBuffer(/* alloc */ { size: 80, usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST });\r\n const sampler = sceneByLayer.get(backend).renderer.device.createSampler(/* alloc */ { compare: 'less-equal', minFilter: 'linear', magFilter: 'linear' });\r\n const lights = sceneByLayer.get(backend).renderer.device.createBuffer(/* alloc */ { size: 32, usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST });\r\n sceneByLayer.get(backend).renderer.sunlight = /* alloc */ { layout, buffer, sampler, lights, size: 0 };\r\n sceneByLayer.get(backend).renderer.device.queue.writeBuffer(buffer, 0, sceneSunlightUniforms);\r\n resizeSunlight(backend, 1);\r\n const emptyImage = document.createElement('canvas');\r\n emptyImage.width = 1;\r\n emptyImage.height = 1;\r\n sceneByLayer.get(backend).renderer.roofFallbackTexture = /* alloc */ {\r\n device,\r\n texture: device.createTexture(/* alloc */ {\r\n size: /* alloc */ [1, 1],\r\n format: 'rgba8unorm',\r\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,\r\n }),\r\n sampler: device.createSampler(/* alloc */ {\r\n addressModeU: 'clamp-to-edge', addressModeV: 'clamp-to-edge',\r\n }),\r\n image: emptyImage, format: 'rgba8unorm', srgb: false, uploaded: null,\r\n };\r\n}\r\n", "export const pendingMapChanges = [];\n", "import { pendingMapChanges } from '../globals/pendingMapChanges.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\n\nimport { update } from './update.js';\nimport { render } from '../rendering/render.js';\n\nexport function renderPendingMapChange() {\n const layer = pendingMapChanges.shift();\n sceneByLayer.get(layer)._queued = false;\n if (sceneByLayer.get(layer)._shared !== layer || !sceneByLayer.get(layer).renderer) return;\n if (layer._map._animatingZoom) update(layer);\n else render(layer);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { pendingMapChanges } from '../globals/pendingMapChanges.js';\n\n\nimport { update } from './update.js';\nimport { render } from \"../rendering/render.js\";\n\nimport { renderPendingMapChange } from './renderPendingMapChange.js';\n\n/** Map movement: render within the frame of Leaflet's CSS transforms, coalescing same-tick events. */\n\nexport function onMapChange() {\n const layer = this;\n if (sceneByLayer.get(layer)._queued) return;\n sceneByLayer.get(layer)._queued = true;\n pendingMapChanges.push(layer);\n queueMicrotask(renderPendingMapChange);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\n/** Preserve the outgoing tile level before Leaflet changes its logical zoom. */\n\nexport function startZoom() {\n sceneByLayer.get(this)._zoomLevel = null;\n}\n", "export const pendingZoomAnimations = [];\n", "import { pendingZoomAnimations } from '../globals/pendingZoomAnimations.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\n\nimport { render } from '../rendering/render.js';\n\nexport function renderPendingZoomAnimation() {\n const layer = pendingZoomAnimations.shift();\n if (sceneByLayer.get(layer)._shared === layer && sceneByLayer.get(layer).renderer) render(layer);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { pendingZoomAnimations } from '../globals/pendingZoomAnimations.js';\n\n\nimport { render } from \"../rendering/render.js\";\n\nimport { renderPendingZoomAnimation } from './renderPendingZoomAnimation.js';\n\nexport function onZoomAnim(event) {\n const map = this._map;\n if (event && !sceneByLayer.get(this)._zoomView) {\n sceneByLayer.get(this)._zoomView = /* alloc */ { from: map.getCenter(), zoom: map.getZoom(), to: event.center,\n targetZoom: event.zoom, start: performance.now() };\n map.getContainer().classList.add('leaflet-camera-zoom');\n }\n pendingZoomAnimations.push(this);\n queueMicrotask(renderPendingZoomAnimation);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\n\nimport { mapUpdateCameraOverlays } from '../camera/mapUpdateCameraOverlays.js';\n\nimport { update } from './update.js';\n\n/** Stop using the outgoing level after zoomend; the next redraw uses current tiles. */\n\nexport function endZoom() {\n const backend = this;\n let animation;\n if (sceneByLayer.get(backend)._zoomTransitions) {\n for (animation of sceneByLayer.get(backend)._zoomTransitions.keys()) animation.finish();\n }\n sceneByLayer.get(backend)._zoomTransitions = null;\n sceneByLayer.get(backend)._zoomView = null;\n delete cameraByMap.get(backend._map)._cameraView;\n backend._map.getContainer().classList.remove('leaflet-camera-zoom');\n mapUpdateCameraOverlays(backend._map);\n sceneByLayer.get(backend)._zoomLevel = null;\n update(backend);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { onMapChange } from './onMapChange.js';\r\nimport { startZoom } from './startZoom.js';\r\nimport { onZoomAnim } from './onZoomAnim.js';\r\nimport { endZoom } from './endZoom.js';\r\n\r\nexport function mountRenderer(backend, map, canvas) {\r\n sceneByLayer.get(backend)._size = null;\r\n canvas.className = 'leaflet-3d';\r\n canvas.style.cssText = 'position:absolute;top:0;left:0;pointer-events:none';\r\n canvas.setAttribute('role', 'img');\r\n canvas.setAttribute('aria-label', backend.options.ariaLabel ?? '3D scene');\r\n let pane = map.getPane('webgpuPane');\r\n if (!pane) {\r\n pane = map.createPane('webgpuPane', map.getContainer());\r\n // The pitch sky uses 0 and may be inserted after this pane.\r\n pane.style.zIndex = 1;\r\n pane.style.pointerEvents = 'none';\r\n }\r\n pane.append(canvas);\r\n map.on('move zoom rotate pitch resize viewreset layeradd layerremove', onMapChange, backend);\r\n map.on('zoomstart', startZoom, backend);\r\n map.on('zoomanim', onZoomAnim, backend);\r\n map.on('zoomend', endZoom, backend);\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { rendererDevices } from '../globals/rendererDevices.js';\r\nimport { emptyNode } from './emptyNode.js';\r\nimport { failAttachment } from './failAttachment.js';\r\nimport { requestAdapter } from './requestAdapter.js';\r\nimport { requestDevice } from './requestDevice.js';\r\nimport { rendererDeviceError } from './rendererDeviceError.js';\r\nimport { rendererDeviceLost } from './rendererDeviceLost.js';\r\nimport { createSceneCamera } from './createSceneCamera.js';\r\nimport { initializeRendererResources } from './initializeRendererResources.js';\r\nimport { mountRenderer } from './mountRenderer.js';\r\n\r\nexport async function initializeSharedRenderer(backend, map) {\r\n const canvas = document.createElement('canvas');\r\n if (!navigator.gpu) {\r\n failAttachment(/* alloc */ new Error('Layer3D requires WebGPU'), backend, map);\r\n }\r\n const adapter = await requestAdapter(backend, map);\r\n const device = await requestDevice(adapter, backend, map);\r\n rendererDevices.set(device, map);\r\n device.addEventListener('uncapturederror', rendererDeviceError);\r\n Promise.all(/* alloc */ [device.lost, Promise.resolve(device)]).then(rendererDeviceLost);\r\n const context = canvas.getContext('webgpu');\r\n if (!context) {\r\n device.destroy();\r\n failAttachment(/* alloc */ new Error('Unable to create a WebGPU canvas context'), backend, map);\r\n }\r\n const format = navigator.gpu.getPreferredCanvasFormat();\r\n context.configure(/* alloc */ { device, format, alphaMode: 'premultiplied' });\r\n map.getContainer().querySelector('.leaflet-webgpu-warning')?.remove();\r\n sceneByLayer.get(backend)._shared = backend;\r\n sceneByLayer.get(backend)._layers = /* alloc */ new Set();\r\n sceneByLayer.get(backend)._sceneOrigin = sceneByLayer.get(backend).location;\r\n sceneByLayer.get(backend).scene = emptyNode();\r\n sceneByLayer.get(backend).camera = createSceneCamera();\r\n sceneByLayer.get(backend).renderer = /* alloc */ {\r\n device,\r\n context,\r\n format,\r\n canvas,\r\n dpr: Math.min(window.devicePixelRatio, 2)\r\n };\r\n initializeRendererResources(backend, device);\r\n mountRenderer(backend, map, canvas);\r\n}\r\n", "import { L } from '../globals/L.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport * as attach from './attach.js';\nimport * as onClick from '../picking/onClick.js';\nimport * as onPointerLeave from '../picking/onPointerLeave.js';\nimport * as onPointerMove from '../picking/onPointerMove.js';\nimport { pointerMove } from '../picking/pointerMove.js';\nimport { pointerClick } from '../picking/pointerClick.js';\nimport { pointerLeave } from '../picking/pointerLeave.js';\nimport { attachLayer } from './attachLayer.js';\n\n/** Attach interaction immediately; initialization may finish before or after onAdd. */\nexport function onAdd3DLayer(backend, map) {\n if (!sceneByLayer.get(backend).location) {\n const center = map.getCenter();\n sceneByLayer.get(backend).location = /* alloc */ new L.LatLng(center.lat, center.lng);\n }\n if (sceneByLayer.get(backend).url || sceneByLayer.get(backend)._geojson || backend.options.tooltip || sceneByLayer.get(backend).modelUrl) {\n sceneByLayer.get(backend).container = map.getContainer();\n sceneByLayer.get(backend)._pointerEvents ||= /* alloc */ {\n mousemove: pointerMove,\n click: pointerClick,\n mouseleave: pointerLeave,\n };\n if (backend.options.tooltip) {\n sceneByLayer.get(backend)._tooltip = L.DomUtil.create('div', 'leaflet-3d-tooltip', sceneByLayer.get(backend).container);\n sceneByLayer.get(backend)._tooltip.hidden = true;\n sceneByLayer.get(backend)._tooltip.setAttribute('role', 'tooltip');\n sceneByLayer.get(backend)._tooltip.setAttribute('aria-live', 'polite');\n sceneByLayer.get(backend)._tooltip.style.cssText = 'position:absolute;z-index:600;max-width:220px;padding:10px 12px;border:1px solid #6b5140;border-radius:6px;background:#fffaf0;box-shadow:0 3px 12px #0005;color:#30251d;font:13px/1.45 sans-serif;pointer-events:none';\n }\n L.DomEvent.on(sceneByLayer.get(backend).container, sceneByLayer.get(backend)._pointerEvents, backend);\n }\n if (sceneByLayer.get(backend).root) {\n attachLayer(backend, map);\n }\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { raycast } from './raycast.js';\n\n/**\n * Translate a geometry hit into a configured model or batched source feature.\n * Sorted half-open face ranges permit binary search without a feature per triangle.\n * @returns {PickedFeature|null}\n */\n\nexport function findFeature(backend, event) {\n if (!sceneByLayer.get(backend).root || !sceneByLayer.get(backend).camera) {\n return null;\n }\n let hit, object, ranges, low, high, middle, range;\n for (hit of raycast(backend, event, sceneByLayer.get(backend).root.children, Boolean(sceneByLayer.get(backend).model))) {\n if (sceneByLayer.get(backend).model) {\n object = hit.object;\n while (object && object !== sceneByLayer.get(backend).model) {\n object = object.parent;\n }\n if (object === sceneByLayer.get(backend).model) {\n return /* alloc */ {\n id: sceneByLayer.get(backend).model.id, properties: sceneByLayer.get(backend).model.extras,\n model: sceneByLayer.get(backend).model, mesh: hit.object, point: hit.point\n };\n }\n }\n ranges = hit.object.extras?.featureFaces;\n if (!ranges) {\n continue;\n }\n low = 0, high = ranges.length - 1;\n while (low <= high) {\n middle = (low + high) >> 1;\n range = ranges[middle];\n if (hit.faceIndex < range.faceStart) {\n high = middle - 1;\n } else if (hit.faceIndex >= range.faceEnd) {\n low = middle + 1;\n } else {\n return /* alloc */ {\n ...range,\n mesh: hit.object,\n point: hit.point\n };\n }\n }\n }\n return null;\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { findFeature } from './findFeature.js';\nimport { setHighlight } from './setHighlight.js';\nimport { showFeature } from './showFeature.js';\n\n/** Emit click without moving the map or pinning the tooltip. */\n\nexport function onClick(layer, event) {\n const feature = findFeature(layer, event);\n sceneByLayer.get(layer).hoveredFeature = feature;\n setHighlight(layer, feature);\n showFeature(layer, feature, event);\n layer.fire('featureclick', /* alloc */ { feature, originalEvent: event });\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { setHighlight } from './setHighlight.js';\nimport { showFeature } from './showFeature.js';\n\n/** Clear hover, highlight and tooltip without retaining a selected feature. */\n\nexport function onPointerLeave(layer) {\n sceneByLayer.get(layer).hoveredFeature = null;\n setHighlight(layer, null);\n showFeature(layer, null);\n layer.fire('featurehover', /* alloc */ { feature: null });\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { findFeature } from './findFeature.js';\nimport { setHighlight } from './setHighlight.js';\nimport { showFeature } from './showFeature.js';\n\n/** Hover is transient; featurehover also reports misses with feature:null. */\n\nexport function onPointerMove(layer, event) {\n sceneByLayer.get(layer).hoveredFeature = findFeature(layer, event);\n setHighlight(layer, sceneByLayer.get(layer).hoveredFeature);\n showFeature(layer, sceneByLayer.get(layer).hoveredFeature, event);\n layer.fire('featurehover', /* alloc */ {\n feature: sceneByLayer.get(layer).hoveredFeature,\n originalEvent: event\n });\n}\n", "import * as onPointerMove from './onPointerMove.js';\n\nexport function pointerMove(event) {\n onPointerMove.onPointerMove(this, event);\n}\n", "import * as onClick from './onClick.js';\n\nexport function pointerClick(event) {\n onClick.onClick(this, event);\n}\n", "import * as onPointerLeave from './onPointerLeave.js';\n\nexport function pointerLeave() {\n onPointerLeave.onPointerLeave(this);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport * as attach from './attach.js';\n\nexport async function attachLayer(backend, map) {\n try {\n await attach.attach(backend, map);\n sceneByLayer.get(backend)._added.resolve();\n } catch (error) {\n backend.fire('error', /* alloc */ { error });\n }\n}\n", "import { L } from '../globals/L.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { sceneTransferFields } from '../globals/sceneTransferFields.js';\nimport { renderers } from '../globals/renderers.js';\n\n\n\nimport * as endZoom from './endZoom.js';\nimport * as onMapChange from './onMapChange.js';\nimport * as onPointerLeave from '../picking/onPointerLeave.js';\nimport * as onZoomAnim from './onZoomAnim.js';\nimport { releaseArea } from '../sources/releaseArea.js';\nimport { updateStatus } from '../sources/updateStatus.js';\nimport { setParent } from './setParent.js';\nimport * as startZoom from './startZoom.js';\nimport { cancelUpdate } from './cancelUpdate.js';\nimport { update } from './update.js';\nimport { releaseSharedScene } from './releaseSharedScene.js';\n\n/** Release source meshes/UI; retain manually added objects and model CPU data. */\nexport function onRemove3DLayer(backend, map) {\n sceneByLayer.get(backend)._added = Promise.withResolvers();\n if (sceneByLayer.get(backend).container) {\n onPointerLeave.onPointerLeave(backend);\n L.DomEvent.off(sceneByLayer.get(backend).container, sceneByLayer.get(backend)._pointerEvents, backend);\n sceneByLayer.get(backend).container = null;\n }\n let area, key, layer;\n for (area of sceneByLayer.get(backend)._areas.values()) releaseArea(backend, area);\n sceneByLayer.get(backend)._areas.clear();\n sceneByLayer.get(backend)._tooltip?.remove();\n sceneByLayer.get(backend)._tooltip = null;\n if (sceneByLayer.get(backend).url || sceneByLayer.get(backend)._geojson) updateStatus(backend, false);\n const shared = sceneByLayer.get(backend)._shared;\n if (!shared) return;\n setParent(sceneByLayer.get(backend).root, null);\n sceneByLayer.get(shared)._layers.delete(backend);\n if (shared === backend) {\n map.off('move zoom rotate pitch resize viewreset layeradd layerremove', onMapChange.onMapChange, backend);\n map.off('zoomstart', startZoom.startZoom, backend);\n map.off('zoomanim', onZoomAnim.onZoomAnim, backend);\n map.off('zoomend', endZoom.endZoom, backend);\n cancelUpdate(backend);\n if (sceneByLayer.get(backend)._layers.size) {\n // Keep the original scene origin and GPU resources when ownership changes.\n const next = sceneByLayer.get(backend)._layers.values().next().value;\n for (key of sceneTransferFields) {\n sceneByLayer.get(next)[key] = sceneByLayer.get(backend)[key];\n delete sceneByLayer.get(backend)[key];\n }\n for (layer of sceneByLayer.get(next)._layers) sceneByLayer.get(layer)._shared = next;\n renderers.set(map, next);\n map.on('move zoom rotate pitch resize viewreset layeradd layerremove', onMapChange.onMapChange, next);\n map.on('zoomstart', startZoom.startZoom, next);\n map.on('zoomanim', onZoomAnim.onZoomAnim, next);\n map.on('zoomend', endZoom.endZoom, next);\n update(next);\n } else {\n releaseSharedScene(backend, map);\n }\n } else update(shared);\n sceneByLayer.get(backend)._shared = sceneByLayer.get(backend).renderer = sceneByLayer.get(backend).scene = sceneByLayer.get(backend).camera = null;\n}\n", "export const sceneTransferFields = ['_layers', '_sceneOrigin', '_size', '_zoomLevel', '_zoomTransitions', '_zoomView', '_cursor', '_roofRaster'];\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { renderers } from '../globals/renderers.js';\r\nimport { cameraByMap } from '../globals/cameraByMap.js';\r\nimport { sceneCleanupFields } from '../globals/sceneCleanupFields.js';\r\nimport { destroyTexture } from '../rendering/destroyTexture.js';\r\nimport { releaseRenderer } from './releaseRenderer.js';\r\n\r\nexport function releaseSharedScene(backend, map) {\r\n if (sceneByLayer.get(backend)._roofRaster) destroyTexture(backend, sceneByLayer.get(backend)._roofRaster.texture.texture);\r\n sceneByLayer.get(backend)._roofRaster = null;\r\n if (sceneByLayer.get(backend)._zoomTransitions) {\r\n let animation;\r\n for (animation of sceneByLayer.get(backend)._zoomTransitions.keys()) animation.play();\r\n }\r\n sceneByLayer.get(backend)._zoomTransitions = null;\r\n sceneByLayer.get(backend)._zoomView = null;\r\n delete cameraByMap.get(map)._cameraView;\r\n map.getContainer().classList.remove('leaflet-camera-zoom');\r\n const renderer = sceneByLayer.get(backend).renderer;\r\n renderer.canvas.remove();\r\n releaseRenderer(renderer, backend);\r\n renderers.delete(map);\r\n let key;\r\n for (key of sceneCleanupFields) delete sceneByLayer.get(backend)[key];\r\n}\r\n", "export const sceneCleanupFields = ['_layers', '_sceneOrigin', '_size', '_zoomLevel', '_cursor'];\n", "export async function releaseRenderer(renderer, backend) {\n try {\n await renderer.device.queue.onSubmittedWorkDone();\n renderer.depthTexture?.destroy();\n renderer.roofFallbackTexture?.texture?.destroy();\n renderer.uniformBuffer?.destroy();\n renderer.sunlight?.texture?.destroy();\n renderer.sunlight?.buffer?.destroy();\n renderer.sunlight?.lights?.destroy();\n } catch (error) {\n backend.fire('error', /* alloc */ { error });\n }\n renderer.device.destroy();\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { releaseArea } from '../sources/releaseArea.js';\nimport { updateArea } from \"../sources/updateArea.js\";\n\n/** GeoJSON source areas: loading, building and releasing. */\n\nexport function onTerrainChange(layer) {\n if (!layer._map) return;\n let area;\n for (area of sceneByLayer.get(layer)._areas.values()) {\n releaseArea(layer, area);\n }\n sceneByLayer.get(layer)._areas.clear();\n updateArea(layer);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\n\nimport { decodeModel } from './decodeModel.js';\nimport { setParent } from '../scene/setParent.js';\nimport { emptyNode } from '../scene/emptyNode.js';\nimport { conformModelToTerrain } from '../geometry/conformModelToTerrain.js';\nimport { loadModelResources } from './loadModelResources.js';\nimport { createModelContext } from './createModelContext.js';\nimport { buildModelNodes } from './buildModelNodes.js';\nimport { applyModelTransform } from './applyModelTransform.js';\n\n\n/** glTF/GLB model loading. */\n/** Load the configured GLB/glTF (static triangles) under `root`; GPU resources need attachment. */\n\nexport async function loadModel(backend) {\n await sceneByLayer.get(backend)._added.promise;\n const url = /* alloc */ new URL(sceneByLayer.get(backend).modelUrl, document.baseURI).href;\n const response = await fetch(url);\n if (!response.ok) {\n throw /* alloc */ new Error(`Unable to load model: HTTP ${response.status}`);\n }\n const data = await response.arrayBuffer();\n const description = decodeModel(data);\n const directory = /* alloc */ new URL('.', url).href;\n const images = await loadModelResources(backend, description, directory);\n const context = createModelContext(backend, description, images);\n const scene = description.scenes?.[description.scene || 0];\n if (!scene) throw /* alloc */ new Error('Missing glTF scene');\n const nodes = buildModelNodes(context, scene);\n const model = /* alloc */ {\n ...emptyNode(),\n id: url,\n extras: description.extras || /* alloc */ {},\n };\n if (!nodes.length) throw /* alloc */ new Error('Expected a glTF model with a non-empty scene');\n let node;\n for (node of nodes) setParent(node, model);\n sceneByLayer.get(backend).model = model;\n applyModelTransform(backend);\n setParent(sceneByLayer.get(backend).model, sceneByLayer.get(backend).root);\n conformModelToTerrain(backend, cameraByMap.get(backend._map)?._terrain3D);\n}\n", "export const geometryDecoder = new TextDecoder();\n", "export function hasUnsupportedPrimitives(meshes) {\n if (!meshes) return false;\n let mesh, primitive;\n for (mesh of meshes) {\n for (primitive of mesh.primitives) {\n if (primitive.targets || (primitive.mode !== undefined && primitive.mode !== 4)) return true;\n }\n }\n return false;\n}\n", "import { geometryDecoder } from '../globals/geometryDecoder.js';\n/** Decode a static glTF JSON document or GLB v2 container. */\nimport { hasUnsupportedPrimitives } from './hasUnsupportedPrimitives.js';\n\n\nexport function decodeModel(data) {\n const view = /* alloc */ new DataView(data);\n const decoder = geometryDecoder;\n let description;\n let offset, length, type, chunk;\n if (view.getUint32(0, true) === 0x46546c67) {\n // Decode GLB v2 chunks; unknown types are skipped.\n if (view.getUint32(4, true) !== 2 || view.getUint32(8, true) !== data.byteLength) {\n throw /* alloc */ new Error('Invalid GLB header');\n }\n let binary;\n for (offset = 12; offset < data.byteLength;) {\n if (offset + 8 > data.byteLength) {\n throw /* alloc */ new Error('Truncated GLB chunk');\n }\n length = view.getUint32(offset, true), type = view.getUint32(offset + 4, true);\n offset += 8;\n if (offset + length > data.byteLength) {\n throw /* alloc */ new Error('Truncated GLB data');\n }\n chunk = data.slice(offset, offset + length);\n if (type === 0x4e4f534a) {\n description = JSON.parse(decoder.decode(chunk));\n }\n if (type === 0x004e4942) {\n binary = chunk;\n }\n offset += length;\n }\n if (!description) {\n throw /* alloc */ new Error('Missing GLB JSON');\n }\n if (binary) {\n description.buffers[0].binary = binary;\n }\n } else {\n description = JSON.parse(decoder.decode(data));\n }\n if (description.skins?.length || description.animations?.length || description.extensionsRequired?.length || hasUnsupportedPrimitives(description.meshes)) {\n throw /* alloc */ new Error('Layer3D supports static triangle glTF models without required extensions');\n }\n return description;\n}\n", "import { radians } from '../globals/radians.js';\nimport { L } from '../globals/L.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { HEIGHT } from '../globals/HEIGHT.js';\n\n\nimport { computeBounds } from './computeBounds.js';\nimport { getElevation } from '../terrain/getElevation.js';\nimport { update } from '../scene/update.js';\nimport { updateWorldMatrix } from '../scene/updateWorldMatrix.js';\nimport { vertexNormals } from './vertexNormals.js';\nimport { collectMeshes } from '../collision/collectMeshes.js';\n\nexport function conformModelToTerrain(layer, terrain) {\n if (!sceneByLayer.get(layer).model) return;\n const meshes = /* alloc */ [];\n collectMeshes(sceneByLayer.get(layer).model, meshes);\n let mesh, positions, geometry, position, normals, attribute, normal, world, inverse, i, x, y, z;\n let worldY, weight, worldX, worldZ, point, elevation, offset;\n if (!sceneByLayer.get(terrain)?._terrainReady || !layer.options.terrainConform) {\n for (mesh of meshes) {\n positions = mesh.geometry._terrainBasePositions;\n if (!positions) continue;\n geometry = mesh.geometry, position = geometry.attributes.position;\n position.data.set(positions);\n mesh.device.queue.writeBuffer(position.buffer, 0, positions);\n normals = geometry._terrainBaseNormals;\n if (normals) {\n geometry.attributes.normal.data.set(normals);\n mesh.device.queue.writeBuffer(geometry.attributes.normal.buffer, 0, normals);\n }\n computeBounds(geometry);\n }\n return;\n }\n\n updateWorldMatrix(sceneByLayer.get(layer).root);\n const map = layer._map, crs = map.options.crs;\n const origin = crs.project(sceneByLayer.get(sceneByLayer.get(layer)._shared)._sceneOrigin);\n const metres = Math.cos(sceneByLayer.get(sceneByLayer.get(layer)._shared)._sceneOrigin.lat * radians);\n const pixelScale = crs.scale(sceneByLayer.get(terrain)._terrainZoom);\n\n for (mesh of meshes) {\n geometry = mesh.geometry, attribute = geometry.attributes.position;\n geometry._terrainBasePositions ||= attribute.data.slice();\n normal = geometry.attributes.normal;\n geometry._terrainBaseNormals ||= normal.data.slice();\n attribute.data.set(geometry._terrainBasePositions);\n world = mesh.worldMatrix, inverse = /* alloc */ new DOMMatrix(world).inverse().toFloat64Array();\n for (i = 0; i < attribute.data.length; i += 3) {\n x = attribute.data[i], y = attribute.data[i + 1], z = attribute.data[i + 2];\n worldY = world[1] * x + world[5] * y + world[9] * z + world[13];\n weight = Math.max(0, Math.min(1, 1 - (worldY - sceneByLayer.get(layer).root.position[1]) / HEIGHT));\n if (!weight) continue;\n worldX = world[0] * x + world[4] * y + world[8] * z + world[12];\n worldZ = world[2] * x + world[6] * y + world[10] * z + world[14];\n point = crs.transformation.transform(/* alloc */ new L.Point(\n origin.x + worldX / metres, origin.y - worldZ / metres), pixelScale);\n elevation = getElevation(terrain, point);\n if (!Number.isFinite(elevation)) continue;\n offset = (elevation - worldY) * weight;\n attribute.data[i] += inverse[4] * offset;\n attribute.data[i + 1] += inverse[5] * offset;\n attribute.data[i + 2] += inverse[6] * offset;\n }\n mesh.device.queue.writeBuffer(attribute.buffer, 0, attribute.data);\n normal.data.set(vertexNormals(attribute.data, geometry.attributes.index?.data));\n mesh.device.queue.writeBuffer(normal.buffer, 0, normal.data);\n computeBounds(geometry);\n }\n update(layer);\n}\n", "export const HEIGHT = 8;\n", "/** Area-weighted vertex normals, for indexed or non-indexed triangles. */\n\nexport function vertexNormals(p, indices) {\n // Accumulate area-weighted face normals for shared vertices, then normalize.\n const normals = /* alloc */ new Float32Array(p.length);\n let i, a, b, c, ux, uy, uz, vx, vy, vz, j, nx, ny, nz, index, length;\n for (i = 0; i < (indices?.length || p.length / 3); i += 3) {\n a = indices ? indices[i] : i, b = indices ? indices[i + 1] : i + 1, c = indices ? indices[i + 2] : i + 2;\n ux = p[b * 3] - p[a * 3], uy = p[b * 3 + 1] - p[a * 3 + 1], uz = p[b * 3 + 2] - p[a * 3 + 2];\n vx = p[c * 3] - p[a * 3], vy = p[c * 3 + 1] - p[a * 3 + 1], vz = p[c * 3 + 2] - p[a * 3 + 2];\n nx = uy * vz - uz * vy, ny = uz * vx - ux * vz, nz = ux * vy - uy * vx;\n for (j = 0; j < 3; j++) {\n index = j === 0 ? a : j === 1 ? b : c;\n normals[index * 3] += nx;\n normals[index * 3 + 1] += ny;\n normals[index * 3 + 2] += nz;\n }\n }\n for (i = 0; i < normals.length; i += 3) {\n length = Math.hypot(normals[i], normals[i + 1], normals[i + 2]) || 1;\n for (j = 0; j < 3; j++) {\n normals[i + j] /= length;\n }\n }\n return normals;\n}\n", "export function collectMeshes(node, meshes) {\n if (node.geometry?.attributes.position) meshes.push(node);\n let child;\n for (child of node.children) collectMeshes(child, meshes);\n}\n", "import { geometryEmpty } from '../globals/geometryEmpty.js';\r\nimport { cameraByMap } from '../globals/cameraByMap.js';\r\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { loadBuffer } from './loadBuffer.js';\r\nimport { loadImage } from './loadImage.js';\r\n\r\nexport async function loadModelResources(backend, description, directory) {\r\n const bufferRequests = /* alloc */ [];\r\n let buffer;\r\n for (buffer of description.buffers || geometryEmpty) bufferRequests.push(loadBuffer(buffer, directory));\r\n await Promise.all(bufferRequests);\r\n await sceneByLayer.get(backend)._added.promise;\r\n const imageRequests = /* alloc */ [];\r\n let image;\r\n for (image of description.images || geometryEmpty) imageRequests.push(loadImage(description, directory, image));\r\n const images = await Promise.all(imageRequests);\r\n await sceneByLayer.get(cameraByMap.get(backend._map)?._terrain3D)?._terrainPromise;\r\n return images;\r\n}\r\n", "export async function loadBuffer(buffer, directory) {\r\n if (buffer.binary) return;\r\n const response = await fetch(/* alloc */ new URL(buffer.uri, directory).href);\r\n if (!response.ok) throw /* alloc */ new Error(`Unable to load model buffer: HTTP ${response.status}`);\r\n buffer.binary = await response.arrayBuffer();\r\n}\r\n", "export const geometryImageOptions = {\n premultiplyAlpha: 'none',\n colorSpaceConversion: 'none'\n};\n", "import { geometryImageOptions } from '../globals/geometryImageOptions.js';\n\r\n\r\nexport async function loadImage(description, directory, image) {\r\n let blob;\r\n if (image.bufferView !== undefined) {\r\n const view = description.bufferViews[image.bufferView];\r\n const buffer = description.buffers[view.buffer].binary;\r\n blob = /* alloc */ new Blob(\r\n /* alloc */ [buffer.slice(view.byteOffset || 0, (view.byteOffset || 0) + view.byteLength)],\r\n /* alloc */ { type: image.mimeType });\r\n } else {\r\n const response = await fetch(/* alloc */ new URL(image.uri, directory).href);\r\n if (!response.ok) throw /* alloc */ new Error(`Unable to load model texture: HTTP ${response.status}`);\r\n blob = await response.blob();\r\n }\r\n // Preserve straight alpha and raw samples; GPU sRGB formats do color decoding.\r\n return createImageBitmap(blob, geometryImageOptions);\r\n}\r\n", "/** Translate glTF sampler constants into WebGPU sampler options. */\n\nexport function textureSampler(sampler) {\n return /* alloc */ {\n addressModeU: sampler?.wrapS === 33071 ? 'clamp-to-edge' : sampler?.wrapS === 33648 ? 'mirror-repeat' : 'repeat',\n addressModeV: sampler?.wrapT === 33071 ? 'clamp-to-edge' : sampler?.wrapT === 33648 ? 'mirror-repeat' : 'repeat',\n magFilter: sampler?.magFilter === 9728 ? 'nearest' : 'linear',\n minFilter: sampler?.minFilter === 9728 || sampler?.minFilter === 9984 || sampler?.minFilter === 9986 ? 'nearest' : 'linear',\n };\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\r\nimport { textureSampler } from './textureSampler.js';\r\n\r\nexport function textureFor(context, reference, color = false) {\r\n const { backend, description, images, textures } = context;\r\n if (!reference) return null;\r\n if ((reference.texCoord || 0) !== 0 || reference.extensions) {\r\n throw /* alloc */ new Error('Model textures currently require untransformed TEXCOORD_0 UVs');\r\n }\r\n const device = sceneByLayer.get(backend).renderer.device;\r\n // A glTF image may serve both color and data maps: those cannot share a GPU format.\r\n const key = `${reference.index}:${color}`;\r\n if (!textures.has(key)) {\r\n const texture = description.textures[reference.index];\r\n const sampler = description.samplers?.[texture.sampler];\r\n const image = images[texture.source];\r\n const format = color ? 'rgba8unorm-srgb' : 'rgba8unorm';\r\n const samplerOptions = textureSampler(sampler);\r\n textures.set(key, /* alloc */ {\r\n device,\r\n texture: device.createTexture(/* alloc */ {\r\n size: /* alloc */ [image.width, image.height],\r\n format,\r\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,\r\n }),\r\n sampler: device.createSampler(samplerOptions),\r\n samplerOptions,\r\n format,\r\n srgb: color,\r\n image,\r\n flipY: false,\r\n uploaded: null,\r\n });\r\n }\r\n return textures.get(key);\r\n}\r\n", "import { textureFor } from './textureFor.js';\r\n\r\nexport function materialFor(context, material) {\r\n const { backend } = context;\r\n const pbr = material.pbrMetallicRoughness;\r\n return /* alloc */ {\r\n color: pbr?.baseColorFactor ? pbr.baseColorFactor.slice(0, 3) : /* alloc */ [1, 1, 1],\r\n opacity: pbr?.baseColorFactor?.[3] ?? 1,\r\n metallic: pbr?.metallicFactor ?? 1,\r\n roughness: pbr?.roughnessFactor ?? 1,\r\n baseTexture: textureFor(context, pbr?.baseColorTexture, true),\r\n metalTexture: textureFor(context, pbr?.metallicRoughnessTexture),\r\n emissiveTexture: textureFor(context, material.emissiveTexture, true),\r\n occlusionTexture: textureFor(context, material.occlusionTexture),\r\n emissive: material.emissiveFactor || /* alloc */ [0, 0, 0],\r\n occlusionStrength: material.occlusionTexture?.strength ?? 1,\r\n alphaMode: backend.options.alphaMode || material.alphaMode || 'OPAQUE',\r\n alphaCutoff: material.alphaCutoff ?? 0.5,\r\n doubleSided: material.doubleSided,\r\n };\r\n}\r\n", "import { geometryEmpty } from '../globals/geometryEmpty.js';\r\nimport { materialFor } from './materialFor.js';\r\n\r\nexport function createModelContext(backend, description, images) {\r\n const context = /* alloc */ {\r\n backend, description, images,\r\n textures: /* alloc */ new Map(),\r\n materials: /* alloc */ [],\r\n active: /* alloc */ new Set(),\r\n resources: /* alloc */ [],\r\n };\r\n let material;\r\n for (material of description.materials || geometryEmpty) context.materials.push(materialFor(context, material));\r\n return context;\r\n}\r\n", "export const geometryQuaternion = [0, 0, 0, 1];\n", "export const geometryScale = [1, 1, 1];\n", "export const geometryTranslation = [0, 0, 0];\n", "import { geometryQuaternion } from '../globals/geometryQuaternion.js';\nimport { geometryScale } from '../globals/geometryScale.js';\nimport { geometryTranslation } from '../globals/geometryTranslation.js';\n/** glTF quaternion/translation/scale to a column-major matrix. */\n\n\nexport function nodeMatrix(spec) {\n if (spec.matrix) return Array.from(spec.matrix);\n // glTF stores quaternions [x,y,z,w]; convert directly to a scaled column-major matrix.\n const [x, y, z, w] = spec.rotation || geometryQuaternion;\n const [sx, sy, sz] = spec.scale || geometryScale;\n return /* alloc */ [\n (1 - 2 * (y * y + z * z)) * sx,\n 2 * (x * y + z * w) * sx,\n 2 * (x * z - y * w) * sx,\n 0,\n 2 * (x * y - z * w) * sy,\n (1 - 2 * (x * x + z * z)) * sy,\n 2 * (y * z + x * w) * sy, 0,\n 2 * (x * z + y * w) * sz,\n 2 * (y * z - x * w) * sz,\n (1 - 2 * (x * x + y * y)) * sz,\n 0,\n ...(spec.translation || geometryTranslation),\n 1,\n ];\n}\n", "export const geometrySemantics = [\n ['POSITION', 'position'],\n ['NORMAL', 'normal'],\n ['TEXCOORD_0', 'uv']\n];\n", "export const types = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array,\n};\n", "export const sizes = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4\n};\n", "export function readAccessorValue(input, Type, at) {\r\n return Type === Int8Array ? input.getInt8(at) :\r\n Type === Uint8Array ? input.getUint8(at) :\r\n Type === Int16Array ? input.getInt16(at, true) :\r\n Type === Uint16Array ? input.getUint16(at, true) :\r\n Type === Uint32Array ? input.getUint32(at, true) : input.getFloat32(at, true);\r\n}\r\n", "import { readAccessorValue } from './readAccessorValue.js';\n\nexport function readAccessorValues(description, Type, size, data, accessorCount, indices, viewIndex, offset, count, stride) {\n const view = description.bufferViews[viewIndex], bytes = Type.BYTES_PER_ELEMENT;\n const buffer = description.buffers[view.buffer].binary;\n stride ||= size * bytes;\n if (!buffer || stride < size * bytes || offset < 0 ||\n (view.byteOffset || 0) + view.byteLength > buffer.byteLength ||\n (count - 1) * stride + size * bytes + offset > view.byteLength) throw /* alloc */ new Error('glTF accessor outside buffer view');\n const input = /* alloc */ new DataView(buffer);\n let i, j, at, output;\n for (i = 0; i < count; i++) {\n output = indices ? indices[i] : i;\n if (indices && output >= accessorCount) throw /* alloc */ new Error('Invalid sparse glTF index');\n for (j = 0; j < size; j++) {\n at = (view.byteOffset || 0) + offset + i * stride + j * bytes;\n data[output * size + j] = readAccessorValue(input, Type, at);\n }\n }\n}\n", "import { types } from '../globals/types.js';\r\nimport { readAccessorValues } from './readAccessorValues.js';\r\n\r\nexport function readSparseAccessor(description, spec, Type, size, data) {\r\n const sparse = spec.sparse, Index = types[sparse.indices.componentType];\r\n if (Index !== Uint8Array && Index !== Uint16Array && Index !== Uint32Array) {\r\n throw /* alloc */ new Error('Invalid sparse glTF indices');\r\n }\r\n const view = description.bufferViews[sparse.indices.bufferView];\r\n const offset = (view.byteOffset || 0) + (sparse.indices.byteOffset || 0);\r\n if (sparse.count > spec.count ||\r\n (sparse.indices.byteOffset || 0) + sparse.count * Index.BYTES_PER_ELEMENT > view.byteLength) {\r\n throw /* alloc */ new Error('Invalid sparse glTF indices');\r\n }\r\n const indices = /* alloc */ new Index(description.buffers[view.buffer].binary.slice(\r\n offset, offset + sparse.count * Index.BYTES_PER_ELEMENT));\r\n readAccessorValues(description, Type, size, data, spec.count, indices, sparse.values.bufferView,\r\n sparse.values.byteOffset || 0, sparse.count, 0);\r\n}\r\n", "export function normalizeAccessor(spec, Type, data, size) {\r\n const normalized = /* alloc */ new Float32Array(data.length);\r\n let i;\r\n for (i = 0; i < data.length; i++) {\r\n normalized[i] = spec.normalized\r\n ? Math.max(-1, data[i] / (Type === Int8Array ? 127 : Type === Int16Array ? 32767 :\r\n Type === Uint8Array ? 255 : Type === Uint32Array ? 4294967295 : 65535))\r\n : data[i];\r\n }\r\n return /* alloc */ { data: normalized, size, indices: data };\r\n}\r\n", "import { types } from '../globals/types.js';\nimport { sizes } from '../globals/sizes.js';\n\n\nimport { readAccessorValues } from './readAccessorValues.js';\nimport { readSparseAccessor } from './readSparseAccessor.js';\nimport { normalizeAccessor } from './normalizeAccessor.js';\n\n/** Decode packed, interleaved, normalized or sparse glTF accessor data. */\n\nexport function readAccessor(description, index) {\n const spec = description.accessors[index], Type = types[spec.componentType], size = sizes[spec.type];\n if (!Type || !size || !Number.isInteger(spec.count) || spec.count < 0) {\n throw /* alloc */ new Error('Invalid glTF accessor');\n }\n const data = /* alloc */ new Type(spec.count * size);\n if (spec.bufferView !== undefined) {\n readAccessorValues(\n description, Type, size, data, spec.count, null,\n spec.bufferView,\n spec.byteOffset || 0,\n spec.count,\n description.bufferViews[spec.bufferView].byteStride\n );\n }\n if (spec.sparse) {\n readSparseAccessor(description, spec, Type, size, data);\n }\n if (spec.componentType === 5126) {\n return /* alloc */ { data, size };\n }\n return normalizeAccessor(spec, Type, data, size);\n}\n", "import { geometrySemantics } from '../globals/geometrySemantics.js';\r\nimport { readAccessor } from './readAccessor.js';\r\n\r\nexport function readModelAttributes(description, primitive) {\r\n const attributes = /* alloc */ {};\r\n let semantic, name;\r\n for ([semantic, name] of geometrySemantics) {\r\n if (primitive.attributes[semantic] !== undefined) {\r\n attributes[name] = readAccessor(description, primitive.attributes[semantic]);\r\n }\r\n }\r\n if (!attributes.position) throw /* alloc */ new Error('glTF mesh has no positions');\r\n const vertexCount = attributes.position.data.length / 3;\r\n if (attributes.position.size !== 3 || vertexCount < 3) throw /* alloc */ new Error('Invalid glTF vertex attributes');\r\n let attribute;\r\n for (attribute of Object.values(attributes)) {\r\n if (attribute.data.length / attribute.size !== vertexCount) throw /* alloc */ new Error('Invalid glTF vertex attributes');\r\n }\r\n return /* alloc */ { attributes, vertexCount };\r\n}\r\n", "import { readAccessor } from './readAccessor.js';\r\n\r\nexport function readModelIndices(description, primitive, attributes, vertexCount) {\r\n if (primitive.indices !== undefined) {\r\n const index = readAccessor(description, primitive.indices);\r\n attributes.index = /* alloc */ { size: 1, data: index.indices };\r\n if (!(index.indices instanceof Uint8Array || index.indices instanceof Uint16Array ||\r\n index.indices instanceof Uint32Array) || index.size !== 1 || index.indices.length % 3) {\r\n throw /* alloc */ new Error('Invalid glTF triangle indices');\r\n }\r\n let value;\r\n for (value of index.indices) if (value >= vertexCount) throw /* alloc */ new Error('Invalid glTF triangle indices');\r\n } else if (vertexCount % 3) {\r\n throw /* alloc */ new Error('Incomplete glTF triangle');\r\n }\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { vertexNormals } from '../geometry/vertexNormals.js';\r\nimport { createProgram } from '../rendering/createProgram.js';\r\n\r\nexport function createModelGeometry(context, primitive, attributes) {\r\n let normals;\r\n if (!attributes.normal) {\r\n normals = vertexNormals(attributes.position.data, attributes.index?.data);\r\n attributes.normal = /* alloc */ { size: 3, data: normals };\r\n }\r\n const style = context.materials[primitive.material] || /* alloc */ {\r\n color: /* alloc */ [1, 1, 1], metallic: 1,\r\n };\r\n if ((style.baseTexture || style.metalTexture || style.emissiveTexture || style.occlusionTexture) && !attributes.uv) {\r\n throw /* alloc */ new Error('Textured model mesh requires UV coordinates');\r\n }\r\n const program = createProgram(context.backend, style);\r\n context.resources.push(program);\r\n const device = sceneByLayer.get(context.backend).renderer.device;\r\n if (attributes.index?.data instanceof Uint8Array) attributes.index.data = Uint16Array.from(attributes.index.data);\r\n let name, attribute;\r\n for ([name, attribute] of Object.entries(attributes)) {\r\n attribute.size ||= 1;\r\n attribute.count = attribute.data.length / attribute.size;\r\n attribute.indexFormat = attribute.data instanceof Uint32Array ? 'uint32' : 'uint16';\r\n attribute.buffer = device.createBuffer(/* alloc */ {\r\n size: Math.max(4, attribute.data.byteLength),\r\n usage: name === 'index'\r\n ? GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST\r\n : GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\r\n });\r\n device.queue.writeBuffer(attribute.buffer, 0, attribute.data);\r\n }\r\n const geometry = /* alloc */ {\r\n device, attributes,\r\n drawRange: /* alloc */ { start: 0, count: attributes.index?.count || attributes.position.count },\r\n };\r\n context.resources.push(geometry);\r\n return /* alloc */ { device, geometry, program };\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { nextId } from '../globals/nextId.js';\nimport { geometryEmpty } from '../globals/geometryEmpty.js';\n\nimport { emptyNode } from '../scene/emptyNode.js';\nimport { nodeMatrix } from './nodeMatrix.js';\nimport { setParent } from '../scene/setParent.js';\nimport { readModelAttributes } from './readModelAttributes.js';\nimport { readModelIndices } from './readModelIndices.js';\nimport { createModelGeometry } from './createModelGeometry.js';\n\nexport function modelNode(context, index) {\n const { backend, description, active } = context;\n // Track only the recursion path: shared mesh references are valid, cycles are not.\n if (active.has(index)) throw /* alloc */ new Error('Cyclic glTF nodes');\n const spec = description.nodes[index];\n if (!spec) throw /* alloc */ new Error('Invalid glTF node');\n active.add(index);\n const group = /* alloc */ {\n ...emptyNode(),\n name: spec.name\n };\n group.matrix = nodeMatrix(spec);\n let primitive, attributeData, attributes, vertexCount, built, mesh, child;\n if (spec.mesh !== undefined) {\n for (primitive of description.meshes[spec.mesh].primitives) {\n attributeData = readModelAttributes(description, primitive);\n attributes = attributeData.attributes;\n vertexCount = attributeData.vertexCount;\n readModelIndices(description, primitive, attributes, vertexCount);\n built = createModelGeometry(context, primitive, attributes);\n mesh = /* alloc */ {\n ...emptyNode(),\n device: built.device,\n geometry: built.geometry,\n program: built.program,\n fadeDuration: 250,\n id: nextId.value++,\n renderOrder: 0\n };\n mesh.name = description.meshes[spec.mesh].name;\n mesh.extras = spec.extras || /* alloc */ {};\n setParent(mesh, group);\n }\n }\n for (child of spec.children || geometryEmpty) setParent(modelNode(context, child), group);\n active.delete(index);\n return group;\n}\n", "export function releaseModelResources(context) {\r\n let resource, attribute;\r\n for (resource of context.resources) {\r\n if (resource.attributes) {\r\n for (attribute of Object.values(resource.attributes)) attribute.buffer.destroy();\r\n } else {\r\n resource.pipelineCache.clear();\r\n }\r\n }\r\n}\r\n", "import { modelNode } from './modelNode.js';\r\nimport { releaseModelResources } from './releaseModelResources.js';\r\n\r\nexport function buildModelNodes(context, scene) {\r\n const nodes = /* alloc */ [];\r\n let index;\r\n try {\r\n for (index of scene.nodes) nodes.push(modelNode(context, index));\r\n } catch (error) {\r\n releaseModelResources(context);\r\n throw error;\r\n }\r\n return nodes;\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\r\n\r\nexport function applyModelTransform(backend) {\r\n const model = sceneByLayer.get(backend).model;\r\n if (backend.options.rotation) {\r\n const [x, y = x, z = x] = backend.options.rotation;\r\n model.rotation[0] = x; model.rotation[1] = y; model.rotation[2] = z;\r\n }\r\n if (backend.options.scale) {\r\n const [x, y = x, z = x] = backend.options.scale;\r\n model.scale[0] = x; model.scale[1] = y; model.scale[2] = z;\r\n }\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { updateArea } from '../sources/updateArea.js';\nimport { onTerrainChange } from '../terrain/onTerrainChange.js';\n\nexport function get3DEvents(layer) {\n const events = /* alloc */ {};\n if (sceneByLayer.get(layer).url) {\n events.moveend = events.zoomend = events.rotate = events.pitch = events.resize = updateArea.bind(null, layer);\n }\n if (sceneByLayer.get(layer)._geojson || sceneByLayer.get(layer).url) {\n events.terrainchange = onTerrainChange.bind(null, layer);\n }\n return events;\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { emptyNode } from './emptyNode.js';\nimport { getHeader } from '../archives/getHeader.js';\nimport { attach } from './attach.js';\nimport { loadModel } from '../models/loadModel.js';\nimport { update } from './update.js';\n\nexport async function ready3D(layer) {\n try {\n sceneByLayer.get(layer).root = emptyNode();\n sceneByLayer.get(layer).raycaster = /* alloc */ {\n origin: /* alloc */ [0, 0, 0],\n direction: /* alloc */ [0, 0, 0],\n inverse: /* alloc */ new DOMMatrix(),\n meshes: /* alloc */ [],\n };\n if (sceneByLayer.get(layer).url || sceneByLayer.get(layer)._geojson) {\n sceneByLayer.get(layer).group = sceneByLayer.get(layer).root;\n if (sceneByLayer.get(layer).url) sceneByLayer.get(layer).header = await getHeader(layer);\n }\n if (layer._map) {\n await attach(layer, layer._map);\n sceneByLayer.get(layer)._added.resolve();\n }\n if (sceneByLayer.get(layer).modelUrl) await loadModel(layer);\n if (sceneByLayer.get(layer)._shared) update(layer);\n layer.fire('ready');\n return layer;\n } catch (error) {\n layer.fire('error', /* alloc */ { error });\n throw error;\n }\n}\n", "import { L } from '../globals/L.js';\nimport { placeEntryElement } from './placeEntryElement.js';\nexport function placeEntry(map, layer, element) {\n let input, entry;\n for (input of map.getContainer().querySelectorAll('.leaflet-control-layers-selector')) {\n entry = map._layers[input.layerId];\n if (input.layerId === L.Util.stamp(layer) || entry instanceof L.LayerGroup && entry.hasLayer(layer)) {\n placeEntryElement(input, layer, element);\n return true;\n }\n }\n return false;\n}\n", "import { L } from '../globals/L.js';\r\n\r\nexport function placeEntryElement(input, layer, element) {\r\n const label = input.closest('label');\r\n if (element.classList.contains('layer-count')) {\r\n if (!input.hasAttribute('aria-label')) input.setAttribute('aria-label', label.textContent.trim());\r\n element.id = `leaflet-layer-count-${L.Util.stamp(layer)}`;\r\n input.setAttribute('aria-describedby', element.id);\r\n label.append(element);\r\n }\r\n else if (element.classList.contains('traffic-status')) {\r\n let group = label.nextElementSibling;\r\n if (!group?.classList.contains('traffic-status-group')) {\r\n group = L.DomUtil.create('div', 'traffic-status-group');\r\n group.style.cssText = 'display:flex;flex-wrap:wrap;gap:4px 8px;max-width:200px;margin:2px 0 6px 20px;';\r\n group.setAttribute('role', 'group');\r\n group.setAttribute('aria-label', 'Traffic counts');\r\n label.after(group);\r\n }\r\n group.append(element);\r\n } else label.after(element);\r\n}\r\n", "import { placeEntry } from './placeEntry.js';\n\nexport function placeUnderEntry(state) {\n const nested = placeEntry(state.map, state.layer, state.element);\n const onPlace = state.onPlace;\n onPlace?.(nested);\n return nested;\n}\n", "export const pendingPlacements = [];\n", "import { pendingPlacements } from '../globals/pendingPlacements.js';\n\n\nimport { placeUnderEntry } from './placeUnderEntry.js';\n\nexport function runPlacements() {\n const state = pendingPlacements.shift();\n if (state?.map.hasLayer(state.layer)) placeUnderEntry(state);\n}\n", "import { pendingPlacements } from '../globals/pendingPlacements.js';\n\n\nimport { runPlacements } from './runPlacements.js';\n\nexport function replaceEntry() {\n pendingPlacements.push(this);\n queueMicrotask(runPlacements);\n}\n", "import { replaceEntry } from './replaceEntry.js';\n\nexport function removeEntry() {\n this.map.off('layeradd layerremove', replaceEntry, this);\n const group = this.element.parentElement;\n this.element.remove();\n if (group?.classList.contains('traffic-status-group') && !group.childElementCount) group.remove();\n}\n", "\nimport { placeUnderEntry } from './placeUnderEntry.js';\nimport { replaceEntry } from './replaceEntry.js';\nimport { removeEntry } from './removeEntry.js';\n\n/**\n * Keeps `element` right under `layer`'s entry in the map's layers control while the layer is on the map.\n * Returns false when no layers control lists the layer.\n */\n\nexport function underEntry(layer, element, onPlace) {\n const state = /* alloc */ { map: layer._map, layer, element, onPlace };\n state.map.on('layeradd layerremove', replaceEntry, state);\n layer.once('remove', removeEntry, state);\n return placeUnderEntry(state);\n}\n", "export function layerCountTitle(scene, formatted, pending, error) {\r\n return error ? `Unable to load: ${typeof error === 'string' ? error : error.message}` :\r\n `${formatted} loaded ${scene.modelUrl ? 'models' : 'elements'} in the current area${pending ? `; ${pending} blocks loading` : ''}`;\r\n}\r\n", "export function renderLayerCount(scene, count, pending, error) {\r\n const status = scene._countStatus;\r\n if (scene.modelUrl) count = scene.model ? 1 : 0;\r\n const loading = pending || (scene.modelUrl ? !scene.model : !scene.header && !scene._geojson);\r\n const formatted = count.toLocaleString('en-US');\r\n const text = error ? 'Error' : `${formatted}${loading ? '\u2026' : ''}`;\r\n const title = layerCountTitle(scene, formatted, pending, error);\r\n if (status.textContent !== text) status.textContent = text;\r\n if (status.title !== title) status.title = title;\r\n if (error && status.getAttribute('role') !== 'alert') status.setAttribute('role', 'alert');\r\n else if (!error && status.hasAttribute('role')) status.removeAttribute('role');\r\n}\r\nimport { layerCountTitle } from './layerCountTitle.js';\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { underEntry } from './underEntry.js';\r\nimport { renderLayerCount } from './renderLayerCount.js';\r\n\r\nexport function updateLayerCount(event) {\r\n const layer = event.target, scene = sceneByLayer.get(layer), status = scene._countStatus;\r\n if (!layer._map) return;\r\n if (event.type === 'add') underEntry(layer, status);\r\n let count = 0, pending = 0, error = event.error, area;\r\n if (Number.isFinite(event.loaded)) {\r\n count = event.loaded;\r\n pending = event.pending ?? 0;\r\n error ||= event.errors?.[0];\r\n } else {\r\n for (area of scene._areas.values()) {\r\n count += area.buildings ?? 0;\r\n if (!area.done && !area.error) pending++;\r\n error ||= area.error;\r\n }\r\n }\r\n renderLayerCount(scene, count, pending, error);\r\n}\r\n", "import { L } from '../globals/L.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { isLoading } from './isLoading.js';\nimport { getRasterEvents } from './getRasterEvents.js';\nimport { readyRaster } from './readyRaster.js';\nimport { reportError } from './reportError.js';\nimport { emptyNode } from '../scene/emptyNode.js';\nimport { read } from '../archives/read.js';\nimport { getHeader } from '../archives/getHeader.js';\nimport { getZxy } from '../archives/getZxy.js';\nimport { onPMTileAdd } from './onPMTileAdd.js';\nimport { onPMTileRemove } from './onPMTileRemove.js';\nimport { getRasterTileSize } from './getRasterTileSize.js';\nimport { setPMTileOpacity } from './setPMTileOpacity.js';\nimport { setPMTileZIndex } from './setPMTileZIndex.js';\n\nexport function initRaster(layer, options) {\n sceneByLayer.get(layer).kind = 'raster';\n options = /* alloc */ { ariaLabel: 'PMTiles raster', maxZoom: 18, opacity: 1, zIndex: 0, ...options };\n L.Util.setOptions(layer, options);\n sceneByLayer.get(layer).root = emptyNode();\n sceneByLayer.get(layer)._areas = /* alloc */ new Map();\n sceneByLayer.get(layer)._rasterTiles = /* alloc */ new Map();\n sceneByLayer.get(layer)._loadingTiles = 0;\n sceneByLayer.get(layer)._added = Promise.withResolvers();\n sceneByLayer.get(layer).url = /* alloc */ new URL(options.url, document.baseURI).href;\n sceneByLayer.get(layer)._directories = /* alloc */ new Map();\n sceneByLayer.get(layer).ready = Promise.resolve(layer.options.archive || layer)\n .then(readyRaster.bind(null, layer))\n .catch(reportError.bind(null, layer));\n}\n", "export const wantedTiles = new Map();\n", "export const coverageTiles = new Map();\n", "\n\nexport function comparePendingTiles(a, b) {\n return a.tile.coords.z - b.tile.coords.z || a.distance - b.distance;\n}\n", "export const blobParts = [null];\n", "import { radians } from '../globals/radians.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\nimport { rasterPoint } from '../globals/rasterPoint.js';\nimport { nextId } from '../globals/nextId.js';\nimport { rasterProgram } from '../terrain/rasterProgram.js';\nimport { terrainBuffers } from '../terrain/terrainBuffers.js';\nimport { setParent } from '../scene/setParent.js';\nimport { update } from '../scene/update.js';\nimport { terrainTileGeometry } from './terrainTileGeometry.js';\n\nexport async function addRasterTile(backend, layer, coords, tile) {\n const ready = await sceneByLayer.get(backend)._terrainPromise;\n if (!ready || !backend._map || cameraByMap.get(backend._map)._terrain3D !== backend || sceneByLayer.get(layer)._terrain3D !== backend ||\n tile.request.signal.aborted || !sceneByLayer.get(layer)._rasterTiles.has(`${coords.z}/${coords.x}/${coords.y}`) ||\n sceneByLayer.get(backend)._rasterTiles.has(tile)) {\n return;\n }\n // Match DEM pixel spacing, capped at 64 subdivisions per tile.\n const divisions = Math.max(1, Math.min(64, 256 / 2 ** (coords.z - sceneByLayer.get(backend)._terrainZoom)));\n const map = backend._map, crs = map.options.crs;\n const origin = crs.project(sceneByLayer.get(backend).location), metres = Math.cos(sceneByLayer.get(backend).location.lat * radians);\n // Tile pixels map linearly to projected metres: one scaled unit grid per tile, elevation in the vertex shader.\n const scale = crs.scale(coords.z), terrainScale = 2 ** (sceneByLayer.get(backend)._terrainZoom - coords.z);\n const point = rasterPoint;\n point.x = coords.x * 256; point.y = coords.y * 256;\n const corner = crs.transformation.untransform(point, scale);\n point.x = (coords.x + 1) * 256; point.y = (coords.y + 1) * 256;\n const opposite = crs.transformation.untransform(point, scale);\n const device = sceneByLayer.get(backend).renderer.device;\n const texture = tile.texture;\n const program = rasterProgram(backend, texture);\n const attributes = terrainBuffers(backend, divisions);\n const base = sceneByLayer.get(backend)._terrainOriginElevation;\n const sizeX = (opposite.x - corner.x) * metres, sizeZ = -(opposite.y - corner.y) * metres;\n // ponytail: ray picking sees the flat unit grid; read the DEM back if terrain must be pickable.\n const geometry = terrainTileGeometry(backend, attributes, sizeX, sizeZ);\n const mesh = /* alloc */ {\n position: /* alloc */ [(corner.x - origin.x) * metres, 0, -(corner.y - origin.y) * metres],\n rotation: /* alloc */ [0, 0, 0],\n scale: /* alloc */ [sizeX, 1, sizeZ],\n worldMatrix: /* alloc */ [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\n children: /* alloc */ [],\n visible: true,\n device,\n geometry,\n program,\n texture,\n // DEM pixel of the tile's corner, DEM pixels per tile, and the elevation at the layer origin.\n terrain: /* alloc */ [\n coords.x * 256 * terrainScale - sceneByLayer.get(backend)._terrainBounds.min.x * 256,\n coords.y * 256 * terrainScale - sceneByLayer.get(backend)._terrainBounds.min.y * 256,\n 256 * terrainScale,\n base,\n ],\n tile,\n opacity: layer.options.opacity ?? 1,\n id: nextId.value++,\n renderOrder: layer.options.zIndex || 0,\n fadeDuration: 250,\n fadeStart: tile.loadedAt,\n ground: true,\n _rasterSource: layer,\n };\n tile.mesh.visible = false;\n setParent(mesh, sceneByLayer.get(backend).root);\n update(backend);\n sceneByLayer.get(backend)._rasterTiles.set(tile, mesh);\n}\n", "export const rasterPoint = {\n x: 0,\n y: 0\n};\n", "export const demTexture = {\n size: [null, null],\n format: 'r32float',\n usage: null\n};\n", "export const demTarget = {\n texture: null\n};\n", "export const demLayout = {\n bytesPerRow: null\n};\n", "export const demSize = [null, null];\n", "export function copyTerrainTile(atlas, values, start, columns) {\r\n let row, column, value;\r\n for (row = 0; row < 256; row++) {\r\n for (column = 0; column < 256; column++) {\r\n value = values[row * 256 + column];\r\n if (!Number.isFinite(value) || value <= -1000) continue;\r\n atlas.elevations[start + row * columns * 256 + column] = value;\r\n atlas.low = Math.min(atlas.low, value);\r\n atlas.high = Math.max(atlas.high, value);\r\n }\r\n }\r\n}\r\n", "import { copyTerrainTile } from './copyTerrainTile.js';\n\n/** Float32 DEM atlas; missing samples retain the shader no-data sentinel. */\n\nexport function terrainAtlas(tiles, bounds) {\n const columns = bounds.max.x - bounds.min.x + 1, rows = bounds.max.y - bounds.min.y + 1;\n const elevations = /* alloc */ new Float32Array(columns * rows * 65536).fill(-1e9);\n const atlas = /* alloc */ { elevations, low: Infinity, high: -Infinity };\n let key, values, coordinates, x, y, start;\n for ([key, values] of tiles) {\n coordinates = key.split('/');\n x = Number(coordinates[0]), y = Number(coordinates[1]);\n start = (y - bounds.min.y) * 256 * columns * 256 + (x - bounds.min.x) * 256;\n copyTerrainTile(atlas, values, start, columns);\n }\n return atlas;\n}\n", "import { demTexture } from '../globals/demTexture.js';\r\nimport { demTarget } from '../globals/demTarget.js';\r\nimport { demLayout } from '../globals/demLayout.js';\r\nimport { demSize } from '../globals/demSize.js';\r\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { createProgram } from '../rendering/createProgram.js';\r\nimport { destroyTexture } from '../rendering/destroyTexture.js';\r\nimport { terrainAtlas } from './terrainAtlas.js';\r\n\r\nexport function rasterProgram(backend, texture) {\r\n const state = sceneByLayer.get(backend), device = state.renderer.device;\r\n if (state._rasterProgram?.device === device) return state._rasterProgram;\r\n // DEM atlas over the archive's tile grid; invalid or missing samples become -1e9 (the shader's no-data).\r\n // ponytail: one texture, capped by maxTextureDimension2D (32x32 DEM tiles at 8192 px); split it for larger archives.\r\n const bounds = state._terrainBounds, columns = bounds.max.x - bounds.min.x + 1, rows = bounds.max.y - bounds.min.y + 1;\r\n const { elevations, low, high } = terrainAtlas(state._terrainTiles, bounds);\r\n if (state._dem) destroyTexture(backend, state._dem.texture);\r\n state._dem = /* alloc */ {\r\n texture: device.createTexture((\r\n demTexture.size[0] = columns * 256,\r\n demTexture.size[1] = rows * 256,\r\n demTexture.usage = GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST,\r\n demTexture\r\n )),\r\n low: Number.isFinite(low) ? low : state._terrainOriginElevation,\r\n high: Number.isFinite(high) ? high : state._terrainOriginElevation,\r\n };\r\n device.queue.writeTexture((\r\n demTarget.texture = state._dem.texture,\r\n demTarget\r\n ), elevations,\r\n (\r\n demLayout.bytesPerRow = columns * 1024,\r\n demLayout\r\n ), (\r\n demSize[0] = columns * 256,\r\n demSize[1] = rows * 256,\r\n demSize\r\n ));\r\n demTarget.texture = null;\r\n state._terrainGrids = /* alloc */ new Map();\r\n state._rasterProgram = createProgram(backend, /* alloc */ {\r\n baseTexture: texture,\r\n unlit: true,\r\n terrain: state._dem,\r\n alphaMode: 'BLEND',\r\n depthWrite: true,\r\n doubleSided: backend.options.doubleSided,\r\n });\r\n return state._rasterProgram;\r\n}\r\n", "export const demBuffer = {\n size: null,\n usage: null\n};\n", "/** Unit tile grid; the vertex shader supplies the elevation. */\n\nexport function terrainGrid(divisions) {\n const vertices = (divisions + 1) ** 2;\n const positions = /* alloc */ new Float32Array(vertices * 3);\n const normals = /* alloc */ new Float32Array(vertices * 3);\n const uvs = /* alloc */ new Float32Array(vertices * 2);\n const indices = /* alloc */ new Uint16Array(divisions * divisions * 6);\n let row, column, a, b, c, d, vertex = 0, index = 0;\n for (row = 0; row <= divisions; row++) {\n for (column = 0; column <= divisions; column++) {\n positions[vertex * 3] = column / divisions;\n positions[vertex * 3 + 2] = row / divisions;\n normals[vertex * 3 + 1] = 1;\n uvs[vertex * 2] = column / divisions;\n uvs[vertex * 2 + 1] = row / divisions;\n vertex++;\n if (row < divisions && column < divisions) {\n a = row * (divisions + 1) + column;\n b = a + 1, c = a + divisions + 1, d = c + 1;\n indices[index++] = a; indices[index++] = c; indices[index++] = b;\n indices[index++] = b; indices[index++] = c; indices[index++] = d;\n }\n }\n }\n return /* alloc */ {\n position: /* alloc */ { size: 3, data: positions },\n normal: /* alloc */ { size: 3, data: normals },\n uv: /* alloc */ { size: 2, data: uvs },\n index: /* alloc */ { data: indices },\n };\n}\n", "import { demBuffer } from '../globals/demBuffer.js';\r\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { terrainGrid } from './terrainGrid.js';\r\n\r\nexport function terrainBuffers(backend, divisions) {\r\n const state = sceneByLayer.get(backend), device = state.renderer.device;\r\n let attributes = state._terrainGrids.get(divisions);\r\n if (!attributes) {\r\n attributes = terrainGrid(divisions);\r\n let name, attribute;\r\n for ([name, attribute] of Object.entries(attributes)) {\r\n attribute.size ||= 1;\r\n attribute.count = attribute.data.length / attribute.size;\r\n attribute.indexFormat = 'uint16';\r\n attribute.buffer = device.createBuffer((\r\n demBuffer.size = Math.max(4, attribute.data.byteLength),\r\n demBuffer.usage = name === 'index'\r\n ? GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST\r\n : GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\r\n demBuffer\r\n ));\r\n device.queue.writeBuffer(attribute.buffer, 0, attribute.data);\r\n }\r\n state._terrainGrids.set(divisions, attributes);\r\n }\r\n return attributes;\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\r\n\r\nexport function terrainTileGeometry(backend, attributes, sizeX, sizeZ) {\r\n const scene = sceneByLayer.get(backend), base = scene._terrainOriginElevation;\r\n const bottom = Math.min(scene._dem.low, base) - base, top = Math.max(scene._dem.high, base) - base;\r\n return /* alloc */ {\r\n device: scene.renderer.device,\r\n attributes,\r\n drawRange: /* alloc */ { start: 0, count: attributes.index.count },\r\n // Bounds must cover the DEM-displaced tile, although picking uses the flat grid.\r\n bounds: /* alloc */ {\r\n min: /* alloc */ [0, bottom, 0], max: /* alloc */ [1, top, 1], center: /* alloc */ [0.5, (bottom + top) / 2, 0.5],\r\n radius: Math.hypot(sizeX, top - bottom, sizeZ) / 2 / Math.max(sizeX, 1, sizeZ),\r\n },\r\n };\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { addRasterTile } from './addRasterTile.js';\n\nexport async function registerTerrainTile(backend, coords, tile) {\n if (sceneByLayer.get(backend)._terrain3D && tile.done && !tile.request.signal.aborted &&\n sceneByLayer.get(backend)._rasterTiles.get(`${coords.z}/${coords.x}/${coords.y}`) === tile) {\n try {\n await addRasterTile(sceneByLayer.get(backend)._terrain3D, backend, coords, tile);\n } catch (error) {\n backend.fire('tileerror', /* alloc */ { tile, coords, error });\n }\n }\n}\n", "import { radians } from '../globals/radians.js';\nimport { rasterTexture } from '../globals/rasterTexture.js';\nimport { rasterSampler } from '../globals/rasterSampler.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { meshImage } from '../globals/meshImage.js';\nimport { meshTarget } from '../globals/meshTarget.js';\nimport { meshCopySize } from '../globals/meshCopySize.js';\nimport { rasterPoint } from '../globals/rasterPoint.js';\nimport { TILE_SIZE } from '../globals/TILE_SIZE.js';\nimport { nextId } from '../globals/nextId.js';\n\n\n\nimport { createProgram } from \"../rendering/createProgram.js\";\nimport { setParent } from \"../scene/setParent.js\";\n\nimport { createGeometry } from './createGeometry.js';\n\nexport function createRasterMesh(backend, tile) {\n const device = sceneByLayer.get(backend).renderer.device;\n const texture = /* alloc */ {\n device,\n texture: device.createTexture((\n rasterTexture.size[0] = tile.image.width,\n rasterTexture.size[1] = tile.image.height,\n rasterTexture.usage = GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,\n rasterTexture\n )),\n sampler: device.createSampler(rasterSampler),\n image: tile.image, format: 'rgba8unorm', srgb: false, uploaded: null,\n };\n const source = meshImage;\n const destination = meshTarget;\n const dimensions = meshCopySize;\n source.source = tile.image;\n source.flipY = false;\n destination.texture = texture.texture;\n dimensions[0] = tile.image.width;\n dimensions[1] = tile.image.height;\n device.queue.copyExternalImageToTexture(source, destination, dimensions);\n source.source = null;\n destination.texture = null;\n texture.uploaded = tile.image;\n\n if (!sceneByLayer.get(backend)._rasterProgram) {\n sceneByLayer.get(backend)._rasterProgram = createProgram(backend, /* alloc */ {\n baseTexture: texture, unlit: true, alphaMode: 'BLEND', doubleSided: backend.options.doubleSided,\n });\n }\n if (!sceneByLayer.get(backend)._rasterGeometry) sceneByLayer.get(backend)._rasterGeometry = createGeometry(device);\n const { coords } = tile;\n const crs = backend._map.options.crs;\n const origin = crs.project(sceneByLayer.get(backend).location);\n const metres = Math.cos(sceneByLayer.get(backend).location.lat * radians);\n const scale = crs.scale(coords.z);\n const point = rasterPoint;\n point.x = coords.x * TILE_SIZE; point.y = coords.y * TILE_SIZE;\n const corner = crs.transformation.untransform(point, scale);\n point.x = (coords.x + 1) * TILE_SIZE; point.y = (coords.y + 1) * TILE_SIZE;\n const opposite = crs.transformation.untransform(point, scale);\n const sizeX = (opposite.x - corner.x) * metres;\n const sizeZ = -(opposite.y - corner.y) * metres;\n tile.texture = texture;\n tile.mesh = /* alloc */ {\n position: /* alloc */ [(corner.x - origin.x) * metres, 0, -(corner.y - origin.y) * metres],\n rotation: /* alloc */ [0, 0, 0],\n scale: /* alloc */ [sizeX, 1, sizeZ],\n worldMatrix: /* alloc */ [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\n children: /* alloc */ [], visible: true, device, geometry: sceneByLayer.get(backend)._rasterGeometry,\n program: sceneByLayer.get(backend)._rasterProgram, texture,\n opacity: backend.options.opacity, id: nextId.value++,\n renderOrder: backend.options.zIndex || 0, tile, fadeDuration: 250, ground: true,\n _rasterSource: backend,\n };\n setParent(tile.mesh, sceneByLayer.get(backend).root);\n}\n", "export const rasterTexture = {\n size: [null, null],\n format: 'rgba8unorm',\n usage: null\n};\n", "export const rasterSampler = {\n addressModeU: 'clamp-to-edge',\n addressModeV: 'clamp-to-edge',\n magFilter: 'linear',\n minFilter: 'linear'\n};\n", "export const rasterBuffer = {\n size: null,\n usage: null\n};\n", "export const rasterPositions = [0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1];\n", "export const rasterNormals = [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0];\n", "export const rasterUVs = [0, 0, 1, 0, 0, 1, 1, 1];\n", "export const rasterIndices = [0, 2, 1, 1, 2, 3];\n", "import { rasterBuffer } from '../globals/rasterBuffer.js';\nimport { rasterPositions } from '../globals/rasterPositions.js';\nimport { rasterNormals } from '../globals/rasterNormals.js';\nimport { rasterUVs } from '../globals/rasterUVs.js';\nimport { rasterIndices } from '../globals/rasterIndices.js';\n\n\nexport function createGeometry(device) {\n const attributes = /* alloc */ {\n position: /* alloc */ { size: 3, data: /* alloc */ new Float32Array(rasterPositions) },\n normal: /* alloc */ { size: 3, data: /* alloc */ new Float32Array(rasterNormals) },\n uv: /* alloc */ { size: 2, data: /* alloc */ new Float32Array(rasterUVs) },\n index: /* alloc */ { data: /* alloc */ new Uint16Array(rasterIndices) },\n };\n let name, attribute;\n for ([name, attribute] of Object.entries(attributes)) {\n attribute.count = attribute.data.length / (attribute.size || 1);\n attribute.indexFormat = 'uint16';\n attribute.buffer = device.createBuffer((\n rasterBuffer.size = attribute.data.byteLength,\n rasterBuffer.usage = name === 'index' ? GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST\n : GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n rasterBuffer\n ));\n\n device.queue.writeBuffer(attribute.buffer, 0, attribute.data);\n }\n return /* alloc */ { device, attributes, drawRange: /* alloc */ { start: 0, count: attributes.index.count } };\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { blobParts } from '../globals/blobParts.js';\n\nimport { update } from \"../scene/update.js\";\nimport { registerTerrainTile } from \"./registerTerrainTile.js\";\nimport { pruneRasterTiles } from \"./pruneRasterTiles.js\";\nimport { pumpRasterTiles } from './pumpRasterTiles.js';\nimport { createRasterMesh } from './createRasterMesh.js';\nimport { getZxy } from '../archives/getZxy.js';\n\nexport async function finishRasterTile(backend, tile) {\n try {\n await sceneByLayer.get(backend).ready;\n const result = await getZxy(backend.options.archive,\n tile.coords.z, tile.coords.x, tile.coords.y, tile.request.signal\n );\n if (tile.request.signal.aborted) {\n result?.image?.close();\n return;\n }\n if (!result) throw /* alloc */ new Error(`Tile ${tile.coords.z}/${tile.coords.x}/${tile.coords.y} is not in the offline archive`);\n try {\n if (result.image) tile.image = result.image;\n else {\n blobParts[0] = result.data;\n const blob = /* alloc */ new Blob(blobParts);\n blobParts[0] = null;\n tile.image = await createImageBitmap(blob);\n }\n } catch {\n blobParts[0] = null;\n throw /* alloc */ new Error(`Unable to decode tile ${tile.coords.z}/${tile.coords.x}/${tile.coords.y}`);\n }\n if (tile.request.signal.aborted) {\n tile.image.close();\n tile.image = null;\n return;\n }\n createRasterMesh(backend, tile);\n tile.loadedAt = performance.now();\n tile.done = true;\n sceneByLayer.get(backend)._rasterVersion = (sceneByLayer.get(backend)._rasterVersion || 0) + 1;\n registerTerrainTile(backend, tile.coords, tile);\n backend.fire('tileload', /* alloc */ { tile, coords: tile.coords });\n update(backend);\n } catch (error) {\n if (tile.request.signal.aborted) return;\n tile.error = error.message;\n sceneByLayer.get(backend)._rasterVersion = (sceneByLayer.get(backend)._rasterVersion || 0) + 1;\n backend.fire('tileerror', /* alloc */ { tile, coords: tile.coords, error });\n backend.fire('error', /* alloc */ { error, coords: tile.coords });\n } finally {\n sceneByLayer.get(backend)._loadingTiles--;\n if (backend._map) {\n pumpRasterTiles(backend);\n pruneRasterTiles(backend);\n if (!sceneByLayer.get(backend)._loadingTiles) backend.fire('load');\n update(backend);\n }\n }\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { finishRasterTile } from './finishRasterTile.js';\n\nexport function loadRasterTile(backend, tile) {\n tile.started = true;\n const first = sceneByLayer.get(backend)._loadingTiles === 0;\n sceneByLayer.get(backend)._loadingTiles++;\n backend.fire('tileloadstart', /* alloc */ { tile, coords: tile.coords });\n if (first) backend.fire('loading');\n return finishRasterTile(backend, tile);\n}\n", "import { TILE_SIZE } from '../globals/TILE_SIZE.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\n\nimport { comparePendingTiles } from './comparePendingTiles.js';\nimport { loadRasterTile } from './loadRasterTile.js';\n\nexport function pumpRasterTiles(backend) {\n const map = backend._map;\n if (!map) return;\n const center = map.project(map.getCenter(), 0).divideBy(TILE_SIZE);\n const pending = /* alloc */ [];\n let tile, coords;\n for (tile of sceneByLayer.get(backend)._rasterTiles.values()) {\n if (tile.started || tile.request.signal.aborted) continue;\n ({ coords } = tile);\n pending.push(/* alloc */ { tile, distance: Math.hypot((coords.x + 0.5) / 2 ** coords.z - center.x,\n (coords.y + 0.5) / 2 ** coords.z - center.y) });\n }\n pending.sort(comparePendingTiles);\n for ({ tile } of pending) {\n if (sceneByLayer.get(backend)._loadingTiles >= 4) break;\n loadRasterTile(backend, tile);\n }\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { releaseRasterTile } from './releaseRasterTile.js';\r\n\r\nexport function retainRasterTiles(backend, required) {\r\n const tiles = sceneByLayer.get(backend)._rasterTiles;\r\n let key, tile, coords;\r\n for ([key, tile] of tiles) {\r\n if (!required.has(key) && !tile.done) releaseRasterTile(backend, tile);\r\n }\r\n for ([key, coords] of required) {\r\n if (tiles.has(key)) continue;\r\n tile = /* alloc */ { coords, request: /* alloc */ new AbortController(), done: false };\r\n tiles.set(key, tile);\r\n }\r\n}\r\n", "export const TILE_RADIUS = 6;\n", "export const archiveNorthWest = [0, 0];\n", "export const archiveSouthEast = [0, 0];\n", "import { TILE_SIZE } from '../globals/TILE_SIZE.js';\r\nimport { TILE_RADIUS } from '../globals/TILE_RADIUS.js';\r\nimport { archiveNorthWest } from '../globals/archiveNorthWest.js';\r\nimport { archiveSouthEast } from '../globals/archiveSouthEast.js';\r\n\r\nexport function rasterTileRange(map, header, zoom) {\r\n const bounds = map.getBounds();\r\n const northwest = map.project(bounds.getNorthWest(), zoom).divideBy(TILE_SIZE).floor();\r\n const southeast = map.project(bounds.getSouthEast(), zoom).divideBy(TILE_SIZE).floor();\r\n archiveNorthWest[0] = header.maxLat; archiveNorthWest[1] = header.minLon;\r\n archiveSouthEast[0] = header.minLat; archiveSouthEast[1] = header.maxLon;\r\n const archiveMin = header.maxLat === undefined || header.minLon === undefined\r\n ? null : map.project(archiveNorthWest, zoom).divideBy(TILE_SIZE).floor();\r\n const archiveMax = header.minLat === undefined || header.maxLon === undefined\r\n ? null : map.project(archiveSouthEast, zoom).divideBy(TILE_SIZE).floor();\r\n const center = map.project(map.getCenter(), zoom).divideBy(TILE_SIZE).floor();\r\n return /* alloc */ {\r\n minX: Math.max(0, northwest.x, archiveMin?.x ?? 0, center.x - TILE_RADIUS),\r\n maxX: Math.min(2 ** zoom - 1, southeast.x, archiveMax?.x ?? 2 ** zoom - 1, center.x + TILE_RADIUS),\r\n minY: Math.max(0, northwest.y, archiveMin?.y ?? 0, center.y - TILE_RADIUS),\r\n maxY: Math.min(2 ** zoom - 1, southeast.y, archiveMax?.y ?? 2 ** zoom - 1, center.y + TILE_RADIUS),\r\n };\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { wantedTiles } from '../globals/wantedTiles.js';\nimport { coverageTiles } from '../globals/coverageTiles.js';\n\n\n\nimport { pumpRasterTiles } from './pumpRasterTiles.js';\n\nimport { retainRasterTiles } from './retainRasterTiles.js';\nimport { pruneRasterTiles } from './pruneRasterTiles.js';\nimport { rasterTileRange } from './rasterTileRange.js';\n\n// ponytail: cap horizon views at 169 tiles; raise the radius if extreme pitches need more.\n\nexport function updateRasterTiles(backend) {\n const map = backend._map;\n if (!map || !sceneByLayer.get(backend)._shared || !sceneByLayer.get(backend).header) return;\n\n const zoom = Math.max(sceneByLayer.get(backend).header.minZoom ?? 0, Math.min(\n Math.round(map.getZoom()),\n backend.options.maxZoom,\n backend.options.maxNativeZoom\n ));\n sceneByLayer.get(backend)._tileZoom = zoom;\n const range = rasterTileRange(map, sceneByLayer.get(backend).header, zoom);\n const wanted = wantedTiles;\n wanted.clear();\n let x, y, key, coords, parent;\n for (x = range.minX; x <= range.maxX; x++) {\n for (y = range.minY; y <= range.maxY; y++) {\n wanted.set(`${zoom}/${x}/${y}`, /* alloc */ { z: zoom, x, y });\n }\n }\n sceneByLayer.get(backend)._wantedRasterTiles = /* alloc */ new Set(wanted.keys());\n const coverage = coverageTiles;\n coverage.clear();\n const parentZoom = Math.max(sceneByLayer.get(backend).header.minZoom ?? 0, zoom - 2), factor = 2 ** (zoom - parentZoom);\n if (parentZoom < zoom) {\n for ([key, coords] of wanted) {\n if (sceneByLayer.get(backend)._rasterTiles.get(key)?.done) continue;\n parent = /* alloc */ { z: parentZoom, x: Math.floor(coords.x / factor), y: Math.floor(coords.y / factor) };\n coverage.set(`${parent.z}/${parent.x}/${parent.y}`, parent);\n }\n }\n const required = /* alloc */ new Map(coverage);\n for ([key, coords] of wanted) required.set(key, coords);\n wanted.clear(); coverage.clear();\n retainRasterTiles(backend, required);\n pumpRasterTiles(backend);\n pruneRasterTiles(backend);\n}\n", "import { updateRasterTiles } from \"./updateRasterTiles.js\";\n\nexport function getRasterEvents(layer) {\n const update = updateRasterTiles.bind(null, layer);\n return /* alloc */ { moveend: update, zoomend: update, rotate: update, pitch: update, resize: update };\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { getHeader } from \"../archives/getHeader.js\";\n\nexport async function readyRaster(layer, archive) {\n const header = await getHeader(archive);\n layer.options.archive = archive;\n sceneByLayer.get(layer).header = header;\n if (layer.options.maxNativeZoom === undefined) {\n layer.options.maxNativeZoom = header.maxZoom;\n }\n layer.options.maxZoom = Math.max(layer.options.minZoom || 0, layer.options.maxZoom);\n layer.fire('ready');\n return layer;\n}\n", "\n\nexport function reportError(layer, error) {\n layer.fire('error', /* alloc */ { error });\n throw error;\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\n\n\nimport { setRasterTerrain } from \"./setRasterTerrain.js\";\n\nexport async function finishAttachment(backend, map, attached) {\n try {\n await attached;\n sceneByLayer.get(backend)._added.resolve();\n setRasterTerrain(backend, cameraByMap.get(map)._terrain3D);\n } catch (error) {\n backend.fire('error', /* alloc */ { error });\n }\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { removeRasterTile } from './removeRasterTile.js';\nimport { setParent } from '../scene/setParent.js';\nimport { registerTerrainTile } from './registerTerrainTile.js';\n\nexport function setRasterTerrain(backend, terrain) {\n // Pending sources bind the current terrain when their raster attachment is ready.\n if (!sceneByLayer.get(backend)._rasterTiles || sceneByLayer.get(backend)._terrain3D === terrain) return;\n let tile;\n for (tile of sceneByLayer.get(backend)._rasterTiles.values()) {\n if(sceneByLayer.get(backend)._terrain3D) removeRasterTile(sceneByLayer.get(backend)._terrain3D, tile);\n if (tile.mesh) {\n tile.mesh.visible = true;\n setParent(tile.mesh, sceneByLayer.get(backend).root);\n }\n }\n sceneByLayer.get(backend)._terrain3D = terrain || null;\n if (terrain) {\n for (tile of sceneByLayer.get(backend)._rasterTiles.values()) {\n if (tile.done) registerTerrainTile(backend, tile.coords, tile);\n }\n }\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { updateRasterTiles } from \"./updateRasterTiles.js\";\n\nexport async function updateAttachedTiles(backend, map, attached) {\n try {\n await Promise.all(/* alloc */ [attached, sceneByLayer.get(backend).ready]);\n if (backend._map === map && map.hasLayer(backend)) updateRasterTiles(backend);\n } catch (error) {\n backend.fire('error', /* alloc */ { error });\n }\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { finishAttachment } from './finishAttachment.js';\nimport { updateAttachedTiles } from './updateAttachedTiles.js';\nimport { attach } from '../scene/attach.js';\n\nexport function onPMTileAdd(backend, map) {\n if (!sceneByLayer.get(backend).location) sceneByLayer.get(backend).location = map.getCenter();\n const attached = attach(backend, map);\n finishAttachment(backend, map, attached);\n updateAttachedTiles(backend, map, attached);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { destroyTexture } from '../rendering/destroyTexture.js';\nimport { releaseRasterTile } from './releaseRasterTile.js';\n\nexport function releaseRasterTiles(backend) {\n let tile, attribute;\n for (tile of sceneByLayer.get(backend)._rasterTiles.values()) releaseRasterTile(backend, tile);\n sceneByLayer.get(backend)._rasterProgram?.pipelineCache.clear();\n sceneByLayer.get(backend)._rasterProgram = null;\n if (sceneByLayer.get(backend)._rasterGeometry) {\n for (attribute of Object.values(sceneByLayer.get(backend)._rasterGeometry.attributes)) {\n destroyTexture(backend, attribute.buffer);\n }\n sceneByLayer.get(backend)._rasterGeometry = null;\n }\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { releaseRasterTiles } from './releaseRasterTiles.js';\nimport { onRemove3DLayer } from '../scene/onRemove3DLayer.js';\n\nexport function onPMTileRemove(backend, map) {\n releaseRasterTiles(backend);\n sceneByLayer.get(backend)._terrain3D = null;\n onRemove3DLayer(backend, map);\n}\n", "import { L } from '../globals/L.js';\nimport { TILE_SIZE } from '../globals/TILE_SIZE.js';\n\n\nexport function getRasterTileSize() {\n return /* alloc */ new L.Point(TILE_SIZE, TILE_SIZE);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\nimport { renderEmpty } from '../globals/renderEmpty.js';\n\nimport { destroyTexture } from '../rendering/destroyTexture.js';\nimport { conformModelToTerrain } from '../geometry/conformModelToTerrain.js';\nimport { disposeMesh } from '../rendering/disposeMesh.js';\nimport { setRasterTerrain } from '../raster/setRasterTerrain.js';\nimport { removeRasterTile } from '../raster/removeRasterTile.js';\nimport { setTerrainHeight } from './setTerrainHeight.js';\nimport { onRemove3DLayer } from '../scene/onRemove3DLayer.js';\nimport { clearLayerTerrain } from './clearLayerTerrain.js';\n\nexport function onTerrainRemove(layer, map) {\n sceneByLayer.get(layer)._terrainController?.abort();\n sceneByLayer.get(layer)._terrainLoading = false;\n sceneByLayer.get(layer)._terrainReady = false;\n map.eachLayer(clearLayerTerrain);\n let tile, l, grid, attribute;\n for (tile of sceneByLayer.get(layer)._rasterTiles.keys()) removeRasterTile(layer, tile);\n if (cameraByMap.get(map)._terrain3D === layer) delete cameraByMap.get(map)._terrain3D;\n for (l of Object.values(map._layers)) {\n conformModelToTerrain(l, null);\n setTerrainHeight(l);\n }\n\n map.fire('terrainchange');\n sceneByLayer.get(layer)._terrainTiles.clear();\n sceneByLayer.get(layer)._terrainOriginElevation = 0;\n sceneByLayer.get(layer)._terrainPromise = null;\n if (sceneByLayer.get(layer)._rasterProgram) {\n sceneByLayer.get(layer)._rasterProgram.pipelineCache.clear();\n }\n sceneByLayer.get(layer)._rasterProgram = null;\n if (sceneByLayer.get(layer)._dem) destroyTexture(layer, sceneByLayer.get(layer)._dem.texture);\n sceneByLayer.get(layer)._dem = null;\n for (grid of sceneByLayer.get(layer)._terrainGrids?.values() || renderEmpty) {\n for (attribute of Object.values(grid)) destroyTexture(layer, attribute.buffer);\n }\n sceneByLayer.get(layer)._terrainGrids = null;\n sceneByLayer.get(layer)._bridges = null;\n disposeMesh(layer, sceneByLayer.get(layer)._bridgeMesh);\n sceneByLayer.get(layer)._bridgeMesh = null;\n onRemove3DLayer(layer, map);\n}\n", "export const renderEmpty = Object.freeze([]);\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { setRasterTerrain } from '../raster/setRasterTerrain.js';\n\nexport function clearLayerTerrain(layer) {\n if (sceneByLayer.get(layer).kind === 'raster') setRasterTerrain(layer, null);\n}\n", "import { cameraByMap } from '../globals/cameraByMap.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { loadTerrain } from \"./loadTerrain.js\";\nimport { setRasterTerrain } from '../raster/setRasterTerrain.js';\nimport { onAdd3DLayer } from '../scene/onAdd3DLayer.js';\nimport { loadReadyTerrain } from './loadReadyTerrain.js';\nimport { setLayerTerrain } from './setLayerTerrain.js';\n\nexport function onTerrainAdd(backend, map) {\n if (cameraByMap.get(map)._terrain3D && cameraByMap.get(map)._terrain3D !== backend) {\n throw /* alloc */ new Error('Only one terrain layer can be active per map');\n }\n cameraByMap.get(map)._terrain3D = backend;\n onAdd3DLayer(backend, map);\n if (sceneByLayer.get(backend).root) sceneByLayer.get(backend)._terrainPromise = loadTerrain(backend);\n else {\n const pending = Promise.withResolvers();\n sceneByLayer.get(backend)._terrainPromise = pending.promise;\n backend.once('ready', loadReadyTerrain, /* alloc */ { backend, ...pending });\n }\n map.eachLayer(setLayerTerrain, backend);\n map.fire('terrainchange');\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nexport async function loadTerrainTiles(state) {\n const { backend, archive, controller, tiles } = state;\n let coords, result;\n while (state.next < tiles.length) {\n controller.signal.throwIfAborted();\n coords = tiles[state.next++];\n result = await getZxy(archive, coords.z, coords.x, coords.y, controller.signal);\n if (!result || result.data.byteLength !== 256 * 256 * 4) {\n throw /* alloc */ new Error(`Missing or invalid Float32 terrain tile ${coords.z}/${coords.x}/${coords.y}`);\n }\n sceneByLayer.get(backend)._terrainTiles.set(`${coords.x}/${coords.y}`, /* alloc */ new Float32Array(result.data));\n }\n}\nimport { getZxy } from '../archives/getZxy.js';\n", "export function readBridges(response) {\r\n if (!response.ok) throw /* alloc */ new Error(`Bridges: HTTP ${response.status}`);\r\n return response.json();\r\n}\r\n", "import { L } from '../globals/L.js';\r\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { archiveNorthWest } from '../globals/archiveNorthWest.js';\r\nimport { archiveSouthEast } from '../globals/archiveSouthEast.js';\r\nimport { compareDistance } from '../utils/compareDistance.js';\r\n\r\nexport function terrainTileQueue(backend, header) {\r\n const scene = sceneByLayer.get(backend), map = backend._map;\r\n scene._terrainZoom = header.maxZoom;\r\n archiveNorthWest[0] = header.maxLat; archiveNorthWest[1] = header.minLon;\r\n const northwest = map.project(archiveNorthWest, scene._terrainZoom).divideBy(256).floor();\r\n archiveSouthEast[0] = header.minLat; archiveSouthEast[1] = header.maxLon;\r\n const southeast = map.project(archiveSouthEast, scene._terrainZoom).divideBy(256).floor();\r\n scene._terrainBounds = /* alloc */ new L.Bounds(northwest, southeast);\r\n const tiles = /* alloc */ [];\r\n const center = map.project(map.getCenter(), scene._terrainZoom).divideBy(256);\r\n let x, y;\r\n for (x = northwest.x; x <= southeast.x; x++) {\r\n for (y = northwest.y; y <= southeast.y; y++) {\r\n tiles.push(/* alloc */ { z: scene._terrainZoom, x, y, distance: Math.hypot(x + 0.5 - center.x, y + 0.5 - center.y) });\r\n }\r\n }\r\n tiles.sort(compareDistance);\r\n return tiles;\r\n}\r\n", "import { radians } from '../globals/radians.js';\r\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { createMesh } from '../rendering/createMesh.js';\r\nimport { bridgePolygon } from './bridgePolygon.js';\r\n\r\n/**\r\n * Bare-earth DEMs drop bridges: `getElevation` returns the deck height inside these polygons (GeoJSON\r\n * Polygon/MultiPolygon with Z, e.g. IGN BD TOPO), and one mesh draws the 1.2 m thick decks.\r\n * ponytail: anything under a deck (quays, boats asking `getElevation`) also gets the deck height.\r\n */\r\nexport function addBridges(backend, geojson) {\r\n const map = backend._map, crs = map.options.crs, zoom = sceneByLayer.get(backend)._terrainZoom;\r\n const origin = crs.project(sceneByLayer.get(backend).location), metres = Math.cos(sceneByLayer.get(backend).location.lat * radians);\r\n const base = sceneByLayer.get(backend).root.position[1];\r\n const position = /* alloc */ [], normal = /* alloc */ [], color = /* alloc */ [];\r\n sceneByLayer.get(backend)._bridges = /* alloc */ new Map();\r\n const context = /* alloc */ { backend, map, crs, zoom, origin, metres, base, position, normal, color };\r\n let geometry, polygons, polygonIndex;\r\n for ({ geometry } of geojson.features) {\r\n if (geometry.type !== 'Polygon' && geometry.type !== 'MultiPolygon') continue;\r\n polygons = geometry.coordinates;\r\n for (polygonIndex = 0; polygonIndex < (geometry.type === 'Polygon' ? 1 : polygons.length); polygonIndex++) {\r\n bridgePolygon(context, geometry.type === 'Polygon' ? polygons : polygons[polygonIndex]);\r\n }\r\n }\r\n if (position.length) {\r\n sceneByLayer.get(backend)._bridgeMesh = createMesh(backend, /* alloc */ { position, normal, color });\r\n }\r\n}\r\n", "import { L } from '../globals/L.js';\nexport function local([lng, lat, z], crs, origin, metres, base) {\r\n const p = crs.project(/* alloc */ new L.LatLng(lat, lng));\r\n return /* alloc */ [(p.x - origin.x) * metres, z - base, -(p.y - origin.y) * metres];\r\n}\r\n", "export function bridgePaths(rings, pixels) {\r\n const paths = /* alloc */ [];\r\n let start = 0, ring, path, i;\r\n for (ring of rings) {\r\n path = /* alloc */ [];\r\n for (i = 0; i < ring.length; i++) path.push(/* alloc */ { x: pixels[start + i][0], y: pixels[start + i][1] });\r\n paths.push(path);\r\n start += ring.length;\r\n }\r\n return paths;\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\r\n\r\nexport function indexBridge(backend, pixels, triangles) {\r\n const bridgeTriangles = /* alloc */ [];\r\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\r\n let t, triangle, i, p, x, y, key, bucket;\r\n for (t of triangles) {\r\n triangle = /* alloc */ [];\r\n for (i of t) triangle.push(pixels[i]);\r\n bridgeTriangles.push(triangle);\r\n }\r\n for (p of pixels) {\r\n minX = Math.min(minX, p[0]); minY = Math.min(minY, p[1]);\r\n maxX = Math.max(maxX, p[0]); maxY = Math.max(maxY, p[1]);\r\n }\r\n const bridge = /* alloc */ {\r\n triangles: bridgeTriangles,\r\n min: /* alloc */ [minX, minY],\r\n max: /* alloc */ [maxX, maxY],\r\n };\r\n for (x = Math.floor(bridge.min[0] / 64); x <= Math.floor(bridge.max[0] / 64); x++) {\r\n for (y = Math.floor(bridge.min[1] / 64); y <= Math.floor(bridge.max[1] / 64); y++) {\r\n key = `${x}/${y}`;\r\n bucket = sceneByLayer.get(backend)._bridges.get(key);\r\n if (!bucket) sceneByLayer.get(backend)._bridges.set(key, bucket = /* alloc */ []);\r\n bucket.push(bridge);\r\n }\r\n }\r\n}\r\n", "export function bridgeFaces(context, points, triangles) {\r\n const { position, normal, color } = context;\r\n let a, b, c, pa, pb, pc, i, k, p;\r\n for ([a, b, c] of triangles) {\r\n // Counter-clockwise seen from above, so double-sided shading keeps the top lit.\r\n pa = points[a]; pb = points[b]; pc = points[c];\r\n if ((pb[2] - pa[2]) * (pc[0] - pa[0]) - (pb[0] - pa[0]) * (pc[2] - pa[2]) < 0) { i = b; b = c; c = i; }\r\n for (k = 0; k < 6; k++) {\r\n i = k === 0 || k === 3 ? a : k === 1 || k === 5 ? b : c;\r\n p = points[i];\r\n position.push(p[0], p[1] - (k >= 3 ? 1.2 : 0), p[2]);\r\n normal.push(0, k >= 3 ? -1 : 1, 0); color.push(0.6, 0.58, 0.54);\r\n }\r\n }\r\n}\r\n", "export function bridgeEdge(context, p, q) {\r\n const { position, normal, color } = context;\r\n const length = Math.hypot(q[0] - p[0], q[2] - p[2]) || 1;\r\n const nx = (q[2] - p[2]) / length, nz = -(q[0] - p[0]) / length;\r\n let k, corner;\r\n for (k = 0; k < 6; k++) {\r\n corner = k === 0 || k === 3 || k === 5 ? p : q;\r\n position.push(corner[0], corner[1] - (k === 2 || k >= 4 ? 1.2 : 0), corner[2]);\r\n normal.push(nx, 0, nz); color.push(0.6, 0.58, 0.54);\r\n }\r\n}\r\n", "import { bridgeEdge } from './bridgeEdge.js';\r\n\r\nexport function bridgeSides(context, points, rings) {\r\n let start = 0, ring, i;\r\n for (ring of rings) {\r\n for (i = 0; i < ring.length; i++) {\r\n bridgeEdge(context, points[start + i], points[start + (i + 1) % ring.length]);\r\n }\r\n start += ring.length;\r\n }\r\n}\r\n", "import { triangulate } from '../triangulation/triangulate.js';\r\nimport { local } from './bridgeLocal.js';\r\nimport { bridgePaths } from './bridgePaths.js';\r\nimport { indexBridge } from './indexBridge.js';\r\nimport { bridgeFaces } from './bridgeFaces.js';\r\nimport { bridgeSides } from './bridgeSides.js';\r\n\r\nexport function bridgePolygon(context, polygon) {\r\n const { backend, map, zoom, crs, origin, metres, base } = context;\r\n const rings = /* alloc */ [];\r\n let ring, path, lng, lat, z, p, coordinate, paths, contour, holes, triangles;\r\n for (ring of polygon) {\r\n path = ring.slice(0, -1);\r\n if (path.length >= 3) rings.push(path);\r\n }\r\n if (!rings.length) return;\r\n const pixels = /* alloc */ [], points = /* alloc */ [];\r\n for (ring of rings) for ([lng, lat, z] of ring) {\r\n p = map.project(/* alloc */ [lat, lng], zoom);\r\n pixels.push(/* alloc */ [p.x, p.y, z]);\r\n }\r\n for (ring of rings) for (coordinate of ring) points.push(local(coordinate, crs, origin, metres, base));\r\n try {\r\n paths = bridgePaths(rings, pixels);\r\n [contour, ...holes] = paths;\r\n triangles = triangulate(contour, holes);\r\n } catch { return; }\r\n indexBridge(backend, pixels, triangles);\r\n bridgeFaces(context, points, triangles);\r\n bridgeSides(context, points, rings);\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { addBridges } from '../geometry/addBridges.js';\r\nimport { conformModelToTerrain } from '../geometry/conformModelToTerrain.js';\r\nimport { getElevation } from './getElevation.js';\r\nimport { setTerrainHeight } from './setTerrainHeight.js';\r\nimport { update } from '../scene/update.js';\r\n\r\nexport function applyTerrain(backend, map, bridges) {\r\n const scene = sceneByLayer.get(backend);\r\n scene._terrainReady = true;\r\n scene._terrainOriginElevation = getElevation(backend, scene.location) ?? 0;\r\n let layer;\r\n for (layer of Object.values(map._layers)) {\r\n setTerrainHeight(layer);\r\n conformModelToTerrain(layer, backend);\r\n }\r\n if (bridges) addBridges(backend, bridges);\r\n map.fire('terrainchange');\r\n update(backend);\r\n backend.fire('terrainready');\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { createLayer } from '../scene/createLayer.js';\n\nimport { loadTerrainTiles } from './loadTerrainTiles.js';\nimport { readBridges } from './readBridges.js';\nimport { terrainTileQueue } from './terrainTileQueue.js';\nimport { applyTerrain } from './applyTerrain.js';\n\nexport async function loadTerrain(backend) {\n if (sceneByLayer.get(backend)._terrainLoading || !backend._map) return;\n sceneByLayer.get(backend)._terrainLoading = true;\n sceneByLayer.get(backend)._terrainReady = false;\n const controller = sceneByLayer.get(backend)._terrainController = /* alloc */ new AbortController();\n let i;\n try {\n if (!sceneByLayer.get(backend).terrainSource) throw /* alloc */ new Error('Terrain layer requires a PMTiles or COG elevation archive');\n const archive = sceneByLayer.get(backend)._terrainArchive = createLayer(/* alloc */ { source: /* alloc */ {\n type: backend.options.asset !== undefined || /\\.tiff?(?:[?#]|$)/i.test(sceneByLayer.get(backend).terrainSource) ? 'cog' : 'pmtiles',\n url: sceneByLayer.get(backend).terrainSource, archive: backend.options.archive, asset: backend.options.asset,\n } });\n await sceneByLayer.get(archive).ready;\n const header = sceneByLayer.get(archive).header;\n if (header.tileType !== 0 || header.minZoom !== header.maxZoom) {\n throw /* alloc */ new Error('Expected a single-zoom Float32 terrain archive');\n }\n const map = backend._map;\n const tiles = terrainTileQueue(backend, header);\n const state = /* alloc */ { backend, archive, controller, tiles, next: 0 };\n const workers = /* alloc */ [];\n for (i = 0; i < Math.min(4, tiles.length); i++) workers.push(loadTerrainTiles(state));\n await Promise.all(workers);\n const bridges = backend.options.bridges && await fetch(backend.options.bridges, /* alloc */ { signal: controller.signal })\n .then(readBridges);\n if (controller.signal.aborted || backend._map !== map) return;\n applyTerrain(backend, map, bridges);\n return true;\n } catch (error) {\n if (!controller.signal.aborted) backend.fire('error', /* alloc */ { error });\n return false;\n } finally {\n sceneByLayer.get(backend)._terrainLoading = false;\n }\n}\n", "import { loadTerrain } from './loadTerrain.js';\r\n\r\nexport function loadReadyTerrain() {\r\n loadTerrain(this.backend).then(this.resolve, this.reject);\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { setRasterTerrain } from '../raster/setRasterTerrain.js';\n\nexport function setLayerTerrain(layer) {\n if (sceneByLayer.get(layer).kind === 'raster') setRasterTerrain(layer, this);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { onTerrainRemove } from './onTerrainRemove.js';\nimport { onTerrainAdd } from './onTerrainAdd.js';\nimport { init3D } from '../scene/init3D.js';\n\n/**\n * Renders Float32 DEM tiles and archived raster basemaps in the shared WebGPU scene.\n * Source options: `url` (single-zoom Float32 PMTiles or supported COG DEM);\n * `bridges` (optional GeoJSON deck polygons with Z, see _addBridges).\n */\nexport function initTerrain(layer, options) {\n const terrainSource = options.url;\n const layerOptions = /* alloc */ { ...options };\n delete layerOptions.url;\n init3D(layer, layerOptions);\n sceneByLayer.get(layer).terrainSource = terrainSource;\n sceneByLayer.get(layer)._terrainTiles = /* alloc */ new Map();\n sceneByLayer.get(layer)._rasterTiles = /* alloc */ new Map();\n sceneByLayer.get(layer)._terrainReady = false;\n sceneByLayer.get(layer).kind = 'terrain';\n}\n", "import { L } from '../globals/L.js';\nimport { onAddSun } from './onAddSun.js';\nimport { underEntry } from '../scene/underEntry.js';\nimport { initialize } from './initialize.js';\nimport { onAdd } from './onAdd.js';\nimport { addTo } from './addTo.js';\nimport { remove } from './remove.js';\nimport { onRemoveSun } from './onRemoveSun.js';\n\nL.Control.Time = L.Control.extend({\n options: { position: 'bottomright' },\n initialize,\n onAdd,\n onRemove: onRemoveSun,\n addTo,\n remove,\n});", "import { cameraByMap } from '../globals/cameraByMap.js';\r\nimport { sunlightByControl } from '../globals/sunlightByControl.js';\r\nimport { sunByMap } from '../globals/sunByMap.js';\r\nimport { createSun } from './createSun.js';\r\nimport { tickSun } from './tickSun.js';\r\n\r\nexport function onAddSun(control, map) {\r\n let state = sunByMap.get(map);\r\n if (state?.control && state.control !== control) {\r\n control._map = null;\r\n if (control.layer._map === map) map.removeLayer(control.layer);\r\n throw /* alloc */ new Error('Only one Time control can be active per map');\r\n }\r\n if (!state) {\r\n state = createSun(map);\r\n sunByMap.set(map, state);\r\n }\r\n state.control = control;\r\n state.originalSky = map.getContainer().style.getPropertyValue('--leaflet-sky-background');\r\n cameraByMap.get(map)._timeControl = control;\r\n sunlightByControl.set(control, state);\r\n state.update();\r\n state.timer = setInterval(tickSun, 60000, state);\r\n map.on('moveend', state.update);\r\n map.on('move rotate pitch resize', state.updateSky);\r\n return state.container;\r\n}\r\n", "export const sunlightByControl = new WeakMap();\n", "export const sunByMap = new WeakMap();\r\n", "import { L } from '../globals/L.js';\nimport { updateSky } from './updateSky.js';\nimport { updateSun } from './updateSun.js';\nimport { useLiveTime } from './useLiveTime.js';\nimport { useSelectedTime } from './useSelectedTime.js';\n\nexport function createSun(map) {\n const disc = 'position:absolute;width:18px;height:18px;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;';\n const sunDisc = L.DomUtil.create('div', 'sunlight-sun');\n const moonDisc = L.DomUtil.create('div', 'sunlight-moon');\n sunDisc.style.cssText = disc + 'background:#fff3bd;box-shadow:0 0 18px 7px #ffd27699;';\n moonDisc.style.cssText = disc + 'background:#dce5f2;box-shadow:0 0 10px 2px #cbdcff55;';\n sunDisc.setAttribute('role', 'img'); sunDisc.setAttribute('aria-label', 'Sun');\n moonDisc.setAttribute('role', 'img'); moonDisc.setAttribute('aria-label', 'Moon');\n const container = L.DomUtil.create('div', 'sunlight-control');\n container.style.cssText = 'color:#222;width:min(200px,calc(100vw - 60px));font:12px/1.4 sans-serif;';\n const date = document.createElement('input');\n date.type = 'date';\n date.style.cssText = 'width:100%;box-sizing:border-box;';\n date.setAttribute('aria-label', 'Solar date (UTC)');\n const slider = document.createElement('input');\n slider.type = 'range';\n slider.style.cssText = 'width:100%;box-sizing:border-box;margin:10px 0 4px;cursor:pointer;';\n slider.min = '0'; slider.max = '1439'; slider.step = '1';\n slider.setAttribute('aria-label', 'Time of day (UTC)');\n const output = document.createElement('output');\n output.style.cssText = 'font-weight:bold;font-variant-numeric:tabular-nums;';\n output.setAttribute('aria-live', 'off');\n const now = document.createElement('button');\n now.type = 'button'; now.textContent = 'Now';\n const timeRow = document.createElement('div');\n timeRow.className = 'sunlight-time';\n timeRow.style.cssText = 'display:flex;justify-content:space-between;align-items:center;';\n timeRow.append(output, now);\n const status = document.createElement('div');\n status.className = 'sunlight-status';\n status.style.marginTop = '5px';\n status.setAttribute('role', 'status');\n const note = document.createElement('small');\n note.style.color = '#555';\n note.textContent = 'Indicative \u00B7 loaded geometry only. Streetlight illumination is estimated, not measured lux.';\n container.append(date, slider, timeRow, status, note);\n const state = /* alloc */ {\n control: null, map, originalSky: '', container, sunDisc, moonDisc, date, slider, output, status,\n projection: /* alloc */ { left: 0, top: 0 },\n };\n state.update = updateSun.bind(null, state);\n state.updateSky = updateSky.bind(null, state);\n now.onclick = useLiveTime.bind(null, state);\n date.onchange = slider.oninput = useSelectedTime.bind(null, state);\n L.DomEvent.disableClickPropagation(container);\n L.DomEvent.disableScrollPropagation(container);\n return state;\n}\n", "import { radians } from '../globals/radians.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\n\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\n\nimport { updateCelestialDisc } from './updateCelestialDisc.js';\n\nexport function updateSky({ map, originalSky, sunDisc, moonDisc, projection }) {\n const sun = cameraByMap.get(map)._sunlight, sky = cameraByMap.get(map)._pitchSky;\n if (sun) map.getContainer().style.setProperty('--leaflet-sky-background', sun.background);\n else if (originalSky) map.getContainer().style.setProperty('--leaflet-sky-background', originalSky);\n else map.getContainer().style.removeProperty('--leaflet-sky-background');\n const size = map.getSize(), pitch = mapGetPitch(map) * radians, bearing = mapGetBearing(map) * radians;\n updateCelestialDisc(sunDisc, sun, sky, size, pitch, bearing, projection);\n updateCelestialDisc(moonDisc, sun?.moon, sky, size, pitch, bearing, projection);\n}\n", "/** Perspective projection of a celestial direction; null when behind the camera. */\n\nexport function projectCelestialBody(dir, size, pitch, bearing, target) {\n const [x, y, z] = dir;\n const forward = -x * Math.sin(bearing) * Math.sin(pitch) - y * Math.cos(pitch) - z * Math.cos(bearing) * Math.sin(pitch);\n if (forward > 0) {\n target ||= /* alloc */ {};\n target.left = size.x / 2 + size.y * 1.5 * (x * Math.cos(bearing) - z * Math.sin(bearing)) / forward;\n target.top = size.y / 2 - size.y * 1.5 * (-x * Math.sin(bearing) * Math.cos(pitch) + y * Math.sin(pitch) - z * Math.cos(bearing) * Math.cos(pitch)) / forward;\n return target;\n }\n return null;\n}\n", "import { projectCelestialBody } from './projectCelestialBody.js';\r\n\r\nexport function updateCelestialDisc(disc, body, sky, size, pitch, bearing, projection) {\r\n disc.hidden = true;\r\n if (!sky || !body || body.altitude <= 0) return;\r\n if (disc.parentNode !== sky) sky.append(disc);\r\n const point = projectCelestialBody(body.direction, size, pitch, bearing, projection);\r\n if (!point) return;\r\n const { left, top } = point;\r\n disc.hidden = left < 0 || left > size.x || top < 0 || top > sky.clientHeight || sky.style.display === 'none';\r\n disc.style.left = `${left}px`; disc.style.top = `${top}px`;\r\n}\r\n", "import { cameraByMap } from '../globals/cameraByMap.js';\n\n\r\nimport { atmosphere } from './atmosphere.js';\r\nimport { moonPosition } from './moonPosition.js';\r\nimport { solarPosition } from './solarPosition.js';\r\nimport { render } from './render.js';\r\nimport { updateSky } from './updateSky.js';\r\n\r\nexport function updateSun(state) {\r\n const { control, map, date, slider, output, status } = state;\r\n try {\r\n if (control.live) control.time = /* alloc */ new Date();\r\n const time = control.time.toISOString();\r\n date.value = time.slice(0, 10);\r\n slider.value = String(control.time.getUTCHours() * 60 + control.time.getUTCMinutes());\r\n output.textContent = `${time.slice(11, 16)} UTC${control.live ? ' \u00B7 now' : ''}`;\r\n const center = map.getCenter();\r\n const sun = cameraByMap.get(map)._sunlight = solarPosition(control.time, center.lat, center.lng);\r\n Object.assign(sun, atmosphere(sun.altitude));\r\n sun.moon = moonPosition(control.time, center.lat, center.lng);\r\n status.textContent = sun.altitude <= 0\r\n ? 'Night \u00B7 no direct sunlight'\r\n : sun.altitude < 3\r\n ? 'Low sun \u00B7 shadows paused'\r\n : `Sun altitude ${sun.altitude.toFixed(1)}\u00B0`;\r\n map.fire('simulationtimechange', /* alloc */ {\r\n time: /* alloc */ new Date(control.time),\r\n live: control.live,\r\n });\r\n updateSky(state);\r\n render(map);\r\n } catch (error) {\r\n delete cameraByMap.get(map)._sunlight;\r\n updateSky(state);\r\n render(map);\r\n status.textContent = `Error: ${error.message}`;\r\n console.error('Solar simulation', error);\r\n }\r\n}\r\n", "export const atmosphereStops = [\n [-18, [3, 7, 20],\n [17, 28, 54],\n [0.025, 0.04, 0.09]\n ],\n [-6, [37, 53, 84],\n [182, 106, 86],\n [0.12, 0.10, 0.14]\n ],\n [0, [101, 131, 171],\n [246, 170, 115],\n [0.38, 0.24, 0.18]\n ],\n [10, [74, 147, 208],\n [197, 221, 237],\n [0.80, 0.75, 0.68]\n ],\n [25, [53, 144, 213],\n [223, 238, 250],\n [1, 1, 1]\n ],\n];\n", "export const atmosphereColor = [0, 0, 0];\n", "export function mix(a, b, t, values) {\n values ||= /* alloc */ [];\n values.length = a.length;\n let i;\n for (i = 0; i < a.length; i++) values[i] = a[i] + (b[i] - a[i]) * t;\n return values;\n}\n", "export function rgb(values) {\n let rounded = '', i;\n for (i = 0; i < values.length; i++) {\n if (i) rounded += ', ';\n rounded += Math.round(values[i]);\n }\n return `rgb(${rounded})`;\n}\n", "import { atmosphereStops } from '../globals/atmosphereStops.js';\nimport { atmosphereColor } from '../globals/atmosphereColor.js';\n\nimport { mix } from './mix.js';\nimport { rgb } from './rgb.js';\n\n\nexport function atmosphere(altitude) {\n if (!Number.isFinite(altitude)) {\n throw /* alloc */ new Error('Invalid solar altitude');\n }\n const stops = atmosphereStops;\n let upper = -1;\n let i;\n for (i = 0; i < stops.length; i++) {\n if (stops[i][0] >= altitude) { upper = i; break; }\n }\n const b = stops[upper < 0 ? stops.length - 1 : upper],\n a = stops[Math.max(0, upper - 1)];\n const t = a === b || upper < 0 ? 1 : (altitude - a[0]) / (b[0] - a[0]);\n return /* alloc */ {\n background: `linear-gradient(${rgb(mix(a[1], b[1], t, atmosphereColor))}, ${rgb(mix(a[2], b[2], t, atmosphereColor))})`,\n tint: mix(a[3], b[3], t),\n };\n}\n", "/** Normalize dates and validate the observer without calculating a celestial position. */\r\nexport function solarTime(date, lat, lng) {\r\n const time = date instanceof Date ? Date.prototype.getTime.call(date)\r\n : typeof date === 'string' ? Date.parse(date)\r\n : (/* alloc */ new Date(date)).getTime();\r\n if (!Number.isFinite(time) || !Number.isFinite(lat) || Math.abs(lat) > 90 ||\r\n !Number.isFinite(lng) || Math.abs(lng) > 180) {\r\n throw /* alloc */ new Error('Invalid solar date or location');\r\n }\r\n return time;\r\n}\r\n", "import { radians } from '../globals/radians.js';\n\nexport function horizontalPosition(d, lat, lng, ascension, declination) {\n const hourAngle = (280.16 + 360.9856235 * d + lng) * radians - ascension;\n const latitude = lat * radians;\n const altitude = Math.asin(Math.sin(latitude) * Math.sin(declination) +\n Math.cos(latitude) * Math.cos(declination) * Math.cos(hourAngle));\n const southAzimuth = Math.atan2(Math.sin(hourAngle),\n Math.cos(hourAngle) * Math.sin(latitude) - Math.tan(declination) * Math.cos(latitude));\n const azimuth = (southAzimuth / radians + 180 + 360) % 360;\n return /* alloc */ {\n altitude: altitude / radians, azimuth,\n direction: /* alloc */ [Math.sin(azimuth * radians) * Math.cos(altitude), Math.sin(altitude),\n -Math.cos(azimuth * radians) * Math.cos(altitude)]\n };\n}\n", "import { solarTime } from './solarTime.js';\nimport { horizontalPosition } from \"./horizontalPosition.js\";\nimport { radians } from '../globals/radians.js';\nimport { sinObliquity } from '../globals/sinObliquity.js';\nimport { cosObliquity } from '../globals/cosObliquity.js';\n\n// Low-precision geocentric lunar orbit; no parallax or atmospheric refraction.\n\nexport function moonPosition(date, lat, lng) {\n const d = solarTime(date, lat, lng) / 86400000 - 10957.5;\n const anomaly = (134.963 + 13.064993 * d) * radians;\n const longitude = (218.316 + 13.176396 * d + 6.289 * Math.sin(anomaly)) * radians;\n const latitude = 5.128 * Math.sin((93.272 + 13.229350 * d) * radians) * radians;\n const x = Math.cos(latitude) * Math.cos(longitude);\n const y = Math.cos(latitude) * Math.sin(longitude) * cosObliquity - Math.sin(latitude) * sinObliquity;\n const z = Math.cos(latitude) * Math.sin(longitude) * sinObliquity + Math.sin(latitude) * cosObliquity;\n return horizontalPosition(d, lat, lng, Math.atan2(y, x), Math.asin(z));\n}\n", "import { radians } from './radians.js';\r\n\r\nexport const sinObliquity = Math.sin(23.4397 * radians);\r\n", "import { radians } from './radians.js';\r\n\r\nexport const cosObliquity = Math.cos(23.4397 * radians);\r\n", "import { horizontalPosition } from \"./horizontalPosition.js\";\nimport { solarTime } from './solarTime.js';\nimport { radians } from '../globals/radians.js';\nimport { sinObliquity } from '../globals/sinObliquity.js';\nimport { cosObliquity } from '../globals/cosObliquity.js';\n\n// Solar centre, without atmospheric refraction.\n\nexport function solarPosition(date, lat, lng) {\n const time = solarTime(date, lat, lng);\n const d = time / 86400000 - 10957.5;\n const mean = (357.5291 + 0.98560028 * d) * radians;\n const longitude = mean + (1.9148 * Math.sin(mean) + 0.02 * Math.sin(2 * mean) +\n 0.0003 * Math.sin(3 * mean) + 102.9372 + 180) * radians;\n const declination = Math.asin(Math.sin(longitude) * sinObliquity);\n const ascension = Math.atan2(Math.sin(longitude) * cosObliquity, Math.cos(longitude));\n return horizontalPosition(d, lat, lng, ascension, declination);\n}\n", "import { renderers } from '../globals/renderers.js';\n\n\r\nimport { update as updateScene } from '../scene/update.js';\r\n\r\nexport function render(map) {\r\n const renderer = renderers.get(map);\r\n if (renderer) updateScene(renderer);\r\n}\r\n", "import { updateSun } from './updateSun.js';\r\n\r\nexport function useLiveTime(state) {\r\n state.control.live = true;\r\n updateSun(state);\r\n}\r\n", "import { cameraByMap } from '../globals/cameraByMap.js';\n\n\r\nimport { render } from './render.js';\r\nimport { updateSky } from './updateSky.js';\r\nimport { updateSun } from './updateSun.js';\r\n\r\nexport function useSelectedTime(state) {\r\n const { control, map, date, slider, status } = state;\r\n control.live = false;\r\n if (!date.value || !date.validity.valid) {\r\n control.time = /* alloc */ new Date(NaN);\r\n map.fire('simulationtimechange', /* alloc */ { time: null, live: false });\r\n delete cameraByMap.get(map)._sunlight;\r\n updateSky(state);\r\n render(map);\r\n status.textContent = 'Error: choose a valid solar date';\r\n return;\r\n }\r\n control.time = /* alloc */ new Date(`${date.value}T00:00:00Z`);\r\n control.time.setUTCMinutes(Number(slider.value));\r\n updateSun(state);\r\n}\r\n", "import { updateSun } from './updateSun.js';\r\n\r\nexport function tickSun(state) {\r\n if (state.control.live) updateSun(state);\r\n}\r\n", "import { L } from '../globals/L.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\r\n\r\nimport { addTimeLayer } from './addTimeLayer.js';\r\nimport { removeTimeLayer } from './removeTimeLayer.js';\r\n\r\nexport function initialize(options) {\r\n L.Util.setOptions(this, options);\r\n this.live = true;\r\n this.layer = /* alloc */ new L.Layer();\r\n sceneByLayer.get(this.layer).control = this;\r\n sceneByLayer.get(this.layer).kind = 'time';\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nexport function addTimeLayer(map) {\r\n return sceneByLayer.get(this).control.addTo(map);\r\n}\r\n", "import { L } from '../globals/L.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nexport function removeTimeLayer() {\r\n return L.Control.prototype.remove.call(sceneByLayer.get(this).control);\r\n}\r\n", "import { onAddSun } from './onAddSun.js';\r\n\r\nexport function onAdd(map) {\r\n return onAddSun(this, map);\r\n}\r\n", "import { L } from '../globals/L.js';\nimport { underEntry } from '../scene/underEntry.js';\r\nimport { styleTimeControl } from './styleTimeControl.js';\r\n\r\nexport function addTo(map) {\r\n L.Control.prototype.addTo.call(this, map);\r\n const container = this.getContainer();\r\n if (this.layer._map === map) underEntry(this.layer, container, styleTimeControl.bind(null, container));\r\n else styleTimeControl(container, false);\r\n return this;\r\n}\r\n", "export function styleTimeControl(container, nested) {\r\n container.classList.toggle('leaflet-control', !nested);\r\n container.classList.toggle('leaflet-bar', !nested);\r\n container.style.background = nested ? '' : '#fff';\r\n container.style.padding = nested ? '2px 0 6px 20px' : '8px';\r\n container.style.margin = nested ? '0' : '';\r\n}\r\n", "import { L } from '../globals/L.js';\nexport function remove() {\r\n if (this._map?.hasLayer(this.layer)) {\r\n this._map.removeLayer(this.layer);\r\n return this;\r\n }\r\n return L.Control.prototype.remove.call(this);\r\n}\r\n", "import { cameraByMap } from '../globals/cameraByMap.js';\r\nimport { sunByMap } from '../globals/sunByMap.js';\r\n\r\n\r\nimport { render } from './render.js';\r\nimport { updateSky } from './updateSky.js';\r\n\r\nexport function removeSun(state) {\r\n const { map, timer, sunDisc, moonDisc } = state;\r\n const shared = sunByMap.get(map);\r\n clearInterval(timer);\r\n delete cameraByMap.get(map)._timeControl;\r\n map.fire('simulationtimechange', /* alloc */ { time: null, live: false });\r\n map.off('moveend', state.update);\r\n map.off('move rotate pitch resize', state.updateSky);\r\n delete cameraByMap.get(map)._sunlight;\r\n updateSky(state);\r\n sunDisc.remove(); moonDisc.remove();\r\n render(map);\r\n if (shared === state) shared.control = null;\r\n}\r\n", "import { sunlightByControl } from '../globals/sunlightByControl.js';\r\n\r\nimport { removeSun } from './removeSun.js';\r\n\r\nexport function onRemoveSun() {\r\n const sunlight = sunlightByControl.get(this);\r\n if (!sunlight) return;\r\n removeSun(sunlight);\r\n sunlightByControl.delete(this);\r\n}\r\n", "import { L } from '../globals/L.js';\nimport { speed as sharedSpeed } from '../globals/speed.js';\nimport { trafficEmptyOptions } from '../globals/trafficEmptyOptions.js';\nimport { vehicles } from '../globals/vehicles.js';\nimport { trafficShader } from '../globals/trafficShader.js';\nimport { trafficByLayer } from '../globals/trafficByLayer.js';\n\n\n\uFEFF/**\n * Vehicles moving along GeoJSON lanes; a compute pass places them on the GPU every frame.\n * Source options:\n * - `url`: GeoJSON (Multi)LineStrings, or a JS module whose default export `(time, layer, signal)` returns them (time-dependent data);\n * - `vehicle`: 'car' (default), 'boat', 'bus', 'tram', 'metro', 'bicycle' or 'pedestrian'; `side`: offset right of the lane centreline in metres (vehicle default);\n * - `speed`: m/s of `flow` lanes; `outline`: draw the lanes.\n * Lane properties: `flow` (vehicles/h) or `timetable` (see scheduledTrips.js), optional fixed `elevation`\n * in metres, `name`/`description` for the default tooltip. The status line (count and vehicle type) sits under the layer's entry in the layers control.\n * L.Control.Time on the same map drives the time; without one, vehicles run live.\n */\nimport { build } from '../geometry/build.js';\nimport { init3D } from '../scene/init3D.js';\nimport { tooltip } from './tooltip.js';\n\n\n\nimport { addTraffic } from './addTraffic.js';\nimport { placeTraffic } from './placeTraffic.js';\nimport { removeTraffic } from './removeTraffic.js';\nimport { readyTraffic } from './readyTraffic.js';\nimport { tickTraffic } from './tickTraffic.js';\nimport { updateTraffic } from './updateTraffic.js';\nimport { updateTrafficTerrain } from './updateTrafficTerrain.js';\n\nexport function initTraffic(layer, { url, vehicle = 'car', side, outline, speed: velocity = sharedSpeed, ...options } = trafficEmptyOptions) {\n const { model, lights, side: defaultSide } = vehicles[vehicle];\n side ??= defaultSide;\n init3D(layer, /* alloc */ {\n tooltip,\n nightLight: Boolean(lights),\n ...options,\n });\n const status = L.DomUtil.create('small', 'traffic-status');\n status.style.cssText = 'flex:0 1 auto;padding:1px 5px;border-radius:3px;background:#00000008;color:#555;';\n status.title = vehicle;\n status.textContent = `${vehicle}: loading\u2026`;\n const template = build(model(0)), stride = template.position.length, vertices = stride / 3;\n const params = /* alloc */ new ArrayBuffer(16);\n const paramFloats = /* alloc */ new Float32Array(params);\n const paramInts = /* alloc */ new Uint32Array(params);\n const state = /* alloc */ {\n layer, url, model, lights, side, outline, velocity, vehicle, status, template, stride, vertices,\n params, paramFloats, paramInts,\n ready: false, frame: undefined, request: undefined, lanes: /* alloc */ [], tripsKey: undefined,\n mesh: undefined, route: undefined, litAt: -Infinity,\n trips: /* alloc */ [], rebasedAt: 0, nextCheck: -Infinity, elapsed: 0, gpu: null,\n lanesDirty: true, stale: false, loaded: undefined, file: undefined,\n };\n // Lane points are [x, z, ground, cumulative length]. Mirrors along() and place().\n state.shader = trafficShader;\n state.tick = tickTraffic.bind(null, state);\n state.update = updateTraffic.bind(null, state);\n state.terrain = updateTrafficTerrain.bind(null, state);\n trafficByLayer.set(layer, state);\n layer.on('ready', readyTraffic.bind(null, state));\n layer.on('add', addTraffic.bind(null, state));\n layer.on('remove', removeTraffic.bind(null, state));\n}\n", "// Pure helpers of the 'traffic' type: lane interpolation and vehicle scheduling.\n/** Default urban speed (m/s) used to turn a lane's hourly `flow` into vehicles on the road. */\nexport const speed = 8;\n", "export const trafficEmptyOptions = Object.freeze({});\n", "// Built-in vehicles for the 'traffic' type. Models are [ring of [x, z], bottom, top, rgb, topRing?] convex prisms in metres;\n// forward is -z, right is +x. `topRing` (same length as `ring`) tapers the prism; rgb components above 1 are self-lit lamps.\nexport const paints = [\n [0.86, 0.86, 0.88],\n [0.1, 0.1, 0.12],\n [0.5, 0.53, 0.57],\n [0.65, 0.1, 0.08],\n [0.12, 0.25, 0.55],\n [0.85, 0.7, 0.15]\n];\n", "export const dark = [0.08, 0.07, 0.06];\n", "// Pedestrian, about 1.77 m tall, prisms as in utils/vehicles.js (forward -z). Limbs hang from their pivot at y = 0.\nexport const skin = [0.85, 0.64, 0.5];\n", "export const trousers = [0.16, 0.2, 0.32];\n", "export function box(x0, x1, z0, z1) {\n return /* alloc */ [\n /* alloc */ [x0, z0],\n /* alloc */ [x1, z0],\n /* alloc */ [x1, z1],\n /* alloc */ [x0, z1],\n ];\n}\n", "import { paints } from '../globals/paints.js';\nimport { dark } from '../globals/dark.js';\nimport { skin } from '../globals/skin.js';\nimport { trousers } from '../globals/trousers.js';\n\nimport { box } from '../geometry/box.js';\n\nexport function bicycleModel(index) {\n const paint = paints[index % paints.length];\n return /* alloc */ [\n /* alloc */ [box(-0.045, 0.045, -0.85, -0.25), 0.02, 0.62, dark],\n /* alloc */ [box(-0.045, 0.045, 0.25, 0.85), 0.02, 0.62, dark],\n /* alloc */ [box(-0.06, 0.06, -0.5, 0.5), 0.4, 0.65, paint],\n /* alloc */ [box(-0.32, 0.32, -0.58, -0.5), 0.95, 1.02, dark],\n /* alloc */ [box(-0.1, 0.1, 0.15, 0.4), 0.85, 0.92, dark],\n /* alloc */ [box(-0.18, 0.18, -0.12, 0.28), 1, 1.5, paint],\n /* alloc */ [box(-0.11, 0.11, -0.22, 0), 1.5, 1.72, skin],\n /* alloc */ [box(-0.13, 0.13, -0.23, 0.01), 1.72, 1.8, paint],\n /* alloc */ [box(-0.25, -0.15, -0.5, -0.05), 1, 1.25, skin],\n /* alloc */ [box(0.15, 0.25, -0.5, -0.05), 1, 1.25, skin],\n /* alloc */ [box(-0.2, -0.08, 0, 0.32), 0.3, 1, trousers],\n /* alloc */ [box(0.08, 0.2, -0.25, 0.07), 0.3, 1, trousers],\n ];\n}\n", "export const shirt = [0.75, 0.2, 0.15];\n", "import { box } from '../geometry/box.js';\nimport { trousers as sharedTrousers } from './trousers.js';\nimport { shirt as sharedShirt } from './shirt.js';\nimport { skin as sharedSkin } from './skin.js';\nimport { dark as sharedDark } from './dark.js';\n\nexport const parts = {\n body: [\n [box(-0.17, 0.17, -0.1, 0.1), 0.82, 0.95, sharedTrousers],\n [box(-0.19, 0.19, -0.11, 0.11), 0.95, 1.44, sharedShirt],\n [box(-0.05, 0.05, -0.05, 0.05), 1.44, 1.5, sharedSkin],\n [box(-0.1, 0.1, -0.11, 0.1), 1.5, 1.72, sharedSkin],\n [box(-0.105, 0.105, -0.06, 0.115), 1.58, 1.77, sharedDark],\n [box(-0.105, 0.105, -0.115, -0.06), 1.7, 1.77, sharedDark],\n ],\n leg: [\n [box(-0.07, 0.07, -0.07, 0.07), -0.82, 0, sharedTrousers],\n [box(-0.07, 0.07, -0.17, 0.07), -0.9, -0.82, sharedDark]\n ],\n arm: [\n [box(-0.05, 0.05, -0.05, 0.05), -0.55, 0, sharedShirt],\n [box(-0.045, 0.045, -0.045, 0.045), -0.66, -0.55, sharedSkin]\n ],\n};\n", "import { parts } from '../globals/parts.js';\nimport { paints } from '../globals/paints.js';\nimport { trousers } from '../globals/trousers.js';\nimport { skin } from '../globals/skin.js';\n\nimport { box } from '../geometry/box.js';\n\nexport function pedestrianModel(index) {\n const model = parts.body.slice();\n model[1] = /* alloc */ [model[1][0], model[1][1], model[1][2], paints[index % paints.length]];\n model.push(\n /* alloc */ [box(-0.16, -0.02, -0.07, 0.07), 0.08, 0.9, trousers],\n /* alloc */ [box(0.02, 0.16, -0.07, 0.07), 0.08, 0.9, trousers],\n /* alloc */ [box(-0.3, -0.2, -0.05, 0.05), 0.76, 1.42, skin],\n /* alloc */ [box(0.2, 0.3, -0.05, 0.05), 0.76, 1.42, skin],\n );\n return model;\n}\n", "export function routeColor(properties) {\r\n const color = properties?.route_color;\r\n if (!/^[\\da-f]{6}$/i.test(color)) return /* alloc */ [0.1, 0.55, 0.65];\r\n const value = Number.parseInt(color, 16);\r\n return /* alloc */ [(value >> 16 & 255) / 255, (value >> 8 & 255) / 255, (value & 255) / 255];\r\n}\r\n", "export const glass = [0.12, 0.15, 0.18];\n", "export const white = [0.92, 0.93, 0.92];\n", "export const tyre = [0.05, 0.05, 0.05];\n", "export const headlight = [1.9, 1.85, 1.7];\n", "export const taillight = [1.7, 0.06, 0.05];\n", "import { glass } from '../globals/glass.js';\nimport { white } from '../globals/white.js';\nimport { tyre } from '../globals/tyre.js';\nimport { headlight } from '../globals/headlight.js';\nimport { taillight } from '../globals/taillight.js';\n\nimport { box } from '../geometry/box.js';\n\nexport function carriage(center, length, color) {\n const front = center - length / 2, rear = center + length / 2;\n return /* alloc */ [\n /* alloc */ [box(-1.25, 1.25, front, rear), 0.45, 1.25, color],\n /* alloc */ [box(-1.2, 1.2, front + 0.15, rear - 0.15), 1.25, 2.65, glass],\n /* alloc */ [box(-1.25, 1.25, front, rear), 2.65, 3.1, white],\n /* alloc */ [box(-1.15, -0.85, front + 1, front + 2), 0, 0.7, tyre],\n /* alloc */ [box(0.85, 1.15, rear - 2, rear - 1), 0, 0.7, tyre],\n /* alloc */ [box(-0.9, 0.9, front - 0.03, front), 0.8, 1.05, headlight],\n /* alloc */ [box(-0.9, 0.9, rear, rear + 0.03), 0.8, 1.05, taillight],\n ];\n}\n", "import { routeColor } from '../traffic/routeColor.js';\nimport { carriage } from './carriage.js';\n\nexport function busModel(index, properties) {\r\n return carriage(0, 12, routeColor(properties));\r\n}\n", "import { routeColor } from '../traffic/routeColor.js';\nimport { carriage } from './carriage.js';\n\nexport function tramModel(index, properties) {\n const color = routeColor(properties), parts = /* alloc */ [];\n let car;\n for (car = 0; car < 5; car++) parts.push(...carriage((car - 2) * 6.5, 6, color));\n return parts;\n}\n", "import { routeColor } from '../traffic/routeColor.js';\nimport { carriage } from './carriage.js';\n\nexport function metroModel(index, properties) {\n const color = routeColor(properties), parts = /* alloc */ [];\n let car;\n for (car = 0; car < 5; car++) parts.push(...carriage((car - 2) * 15, 14, color));\n return parts;\n}\n", "import { box } from \"../geometry/box.js\";\n\nexport function mirror(x0, x1, z0, z1, ...rest) {\n return /* alloc */ [\n /* alloc */ [box(x0, x1, z0, z1), ...rest],\n /* alloc */ [box(-x1, -x0, z0, z1), ...rest]\n ];\n}\n", "import { paints } from '../globals/paints.js';\nimport { tyre } from '../globals/tyre.js';\nimport { glass } from '../globals/glass.js';\nimport { headlight } from '../globals/headlight.js';\nimport { taillight } from '../globals/taillight.js';\n\r\nimport { box } from '../geometry/box.js';\r\n\r\n\r\nimport { mirror } from './mirror.js';\r\n\r\n\r\n\r\n\r\nexport function carModel(i) {\r\n const paint = paints[i % paints.length];\r\n return /* alloc */ [\r\n ...mirror(0.7, 0.92, -1.68, -1.02, 0, 0.64, tyre),\r\n ...mirror(0.7, 0.92, 1.02, 1.68, 0, 0.64, tyre),\r\n /* alloc */ [\r\n /* alloc */ [\r\n /* alloc */ [-0.9, -1.95],\r\n /* alloc */ [-0.72, -2.25],\r\n /* alloc */ [0.72, -2.25],\r\n /* alloc */ [0.9, -1.95],\r\n /* alloc */ [0.9, 2.05],\r\n /* alloc */ [0.76, 2.25],\r\n /* alloc */ [-0.76, 2.25],\r\n /* alloc */ [-0.9, 2.05],\r\n ],\r\n 0.28, 0.82, paint],\r\n // Greenhouse: the windscreen leans back, the rear window less.\r\n /* alloc */ [box(-0.84, 0.84, -0.75, 1.6), 0.82, 1.38, glass, box(-0.7, 0.7, -0.05, 1.3)],\r\n /* alloc */ [box(-0.71, 0.71, -0.06, 1.31), 1.38, 1.46, paint],\r\n ...mirror(0.38, 0.8, -2.3, -2.16, 0.56, 0.76, headlight),\r\n /* alloc */ [box(-0.78, 0.78, 2.16, 2.3), 0.6, 0.76, taillight],\r\n ];\r\n}\r\n", "export const hull = [\n [-5.5, 30],\n [5.5, 30],\n [5.5, -20],\n [4, -26],\n [1.5, -30],\n [-1.5, -30],\n [-4, -26],\n [-5.5, -20]\n];\n", "import { mirror } from './mirror.js';\n\nexport function boatBenches() {\n const benches = /* alloc */ [];\n let i;\n for (i = 0; i < 12; i++) benches.push(...mirror(0.5, 3.8, -12 + i * 3, -11.3 + i * 3, 3.9, 4.4,\n /* alloc */ [0.62, 0.1, 0.1]));\n return benches;\n}\n", "import { hull } from '../globals/hull.js';\nimport { white } from '../globals/white.js';\nimport { glass } from '../globals/glass.js';\n\r\n\r\nimport { box } from '../geometry/box.js';\r\n\r\nimport { mirror } from './mirror.js';\r\n\r\nimport { boatBenches } from './boatBenches.js';\r\n\r\n// Panoramic river cruiser, about 60 x 11 m.\r\nexport function boatModel() {\r\n return /* alloc */ [\r\n /* alloc */ [\r\n hull, 0, 0.8, /* alloc */ [0.1, 0.16, 0.26]],\r\n /* alloc */ [hull, 0.8, 1.4, white],\r\n /* alloc */ [box(-5, 5, -18, 26), 1.4, 3.7, glass, box(-4.6, 4.6, -17.4, 25.6)],\r\n ...mirror(4.64, 4.74, -17, 25, 3.25, 3.45, /* alloc */ [1.6, 1.25, 0.8]),\r\n /* alloc */ [box(-4.8, 4.8, -17.8, 25.8), 3.7, 3.9, white],\r\n ...boatBenches(),\r\n ...mirror(4.65, 4.8, -13.6, 25.8, 3.9, 4.8, white),\r\n /* alloc */ [box(-4.8, 4.8, 25.65, 25.8), 3.9, 4.8, white],\r\n /* alloc */ [box(-2.2, 2.2, -17.6, -14), 3.9, 4.7, white],\r\n /* alloc */ [box(-2.2, 2.2, -17.6, -14), 4.7, 5.5, glass],\r\n /* alloc */ [box(-2.5, 2.5, -18, -13.6), 5.5, 5.7, white],\r\n /* alloc */ [\r\n box(-2.45, -2.2, -16.2, -15.8), 5, 5.3, /* alloc */ [2, 0.15, 0.1]],\r\n /* alloc */ [\r\n box(2.2, 2.45, -16.2, -15.8), 5, 5.3, /* alloc */ [0.1, 2, 0.4]],\r\n /* alloc */ [box(-0.1, 0.1, -15.9, -15.7), 5.7, 6.6, white],\r\n /* alloc */ [\r\n box(-0.15, 0.15, -15.95, -15.65), 6.6, 6.8, /* alloc */ [2, 2, 1.9]],\r\n ];\r\n}\r\n", "import { bicycleModel } from '../vehicles/bicycleModel.js';\nimport { pedestrianModel } from '../vehicles/pedestrianModel.js';\nimport { busModel } from '../vehicles/busModel.js';\nimport { tramModel } from '../vehicles/tramModel.js';\nimport { metroModel } from '../vehicles/metroModel.js';\nimport { carModel } from '../vehicles/carModel.js';\nimport { boatModel } from '../vehicles/boatModel.js';\n\n/**\n * `side`: default offset (metres) to the right of the lane centreline. `model(i)` gives the prisms of the i-th vehicle.\n * `lights`: night point lights in model space (see the night lighting grid), e.g. the pool cast by the headlights.\n */\nexport const vehicles = {\n bicycle: {\n side: 0.4,\n model: bicycleModel\n },\n pedestrian: {\n side: 0.3,\n model: pedestrianModel\n },\n bus: {\n side: 1.5,\n model: busModel\n },\n tram: {\n side: 0,\n model: tramModel\n },\n metro: {\n side: 0,\n model: metroModel\n },\n car: {\n side: 1.8,\n model: carModel,\n lights: [{\n position: [0, 1.2, -6],\n radius: 10,\n color: [1, 0.94, 0.82],\n flux: 800\n }]\n },\n // Panoramic river cruiser, about 60 \u00D7 11 m: glass saloon, open upper deck with benches, wheelhouse forward.\n boat: {\n side: 0,\n model: boatModel,\n lights: [{\n position: [0, 8, 4],\n radius: 30,\n color: [1, 0.8, 0.55],\n flux: 20000\n }]\n },\n};\n", "// One workgroup per vehicle shares its lane lookup and pose across all model vertices.\nexport const trafficShader = /* wgsl */`\n struct Params { seconds: f32, side: f32, vertices: u32, total: u32 }\n struct Vehicle { start: u32, count: u32, base: f32, speed: f32 }\n @group(0) @binding(0) var<uniform> params: Params;\n @group(0) @binding(1) var<storage, read> model: array<f32>;\n @group(0) @binding(2) var<storage, read> points: array<vec4f>;\n @group(0) @binding(3) var<storage, read> vehicles: array<Vehicle>;\n @group(0) @binding(4) var<storage, read_write> position: array<f32>;\n @group(0) @binding(5) var<storage, read_write> normal: array<f32>;\n var<workgroup> center: vec3f;\n var<workgroup> heading: vec2f;\n @compute @workgroup_size(64)\n fn main(@builtin(workgroup_id) group: vec3u, @builtin(local_invocation_index) thread: u32) {\n let vehicleIndex = group.x;\n if (thread == 0u) {\n let vehicle = vehicles[vehicleIndex];\n let last = vehicle.start + vehicle.count - 1u;\n let length = points[last].w;\n var s = vehicle.base + params.seconds * vehicle.speed;\n s -= length * floor(s / length);\n var i = vehicle.start + 1u;\n var end = last;\n while (i < end) {\n let middle = i + (end - i) / 2u;\n if (points[middle].w < s) { i = middle + 1u; }\n else { end = middle; }\n }\n let a = points[i - 1u];\n let b = points[i];\n let d = select(b.w - a.w, 1.0, b.w == a.w);\n let t = (s - a.w) / d;\n heading = (b.xy - a.xy) / d;\n center = vec3f(a.x + (b.x - a.x) * t - heading.y * params.side,\n a.z + (b.z - a.z) * t, a.y + (b.y - a.y) * t + heading.x * params.side);\n }\n workgroupBarrier();\n for (var vertex = thread; vertex < params.vertices; vertex += 64u) {\n let k = vertex * 3u;\n let n = params.vertices * 3u + k;\n let o = (vehicleIndex * params.vertices + vertex) * 3u;\n position[o] = center.x - model[k] * heading.y - model[k + 2u] * heading.x;\n position[o + 1u] = center.y + model[k + 1u];\n position[o + 2u] = center.z + model[k] * heading.x - model[k + 2u] * heading.y;\n normal[o] = -model[n] * heading.y - model[n + 2u] * heading.x;\n normal[o + 1u] = model[n + 1u];\n normal[o + 2u] = model[n] * heading.x - model[n + 2u] * heading.y;\n }\n }`;\n", "export function triangle(position, normal, color, a, b, c, tint) {\n const ux = b[0] - a[0], uy = b[1] - a[1], uz = b[2] - a[2];\n const vx = c[0] - a[0], vy = c[1] - a[1], vz = c[2] - a[2];\n const nx = uy * vz - uz * vy, ny = uz * vx - ux * vz, nz = ux * vy - uy * vx;\n const length = Math.hypot(nx, ny, nz);\n let i, point;\n for (i = 0; i < 3; i++) {\n point = i === 0 ? a : i === 1 ? b : c;\n position.push(...point);\n normal.push(nx / length, ny / length, nz / length);\n color.push(...tint);\n }\n}\n", "import { triangle } from './triangle.js';\n\nexport function build(parts) {\n const position = /* alloc */ [];\n const normal = /* alloc */ [];\n const color = /* alloc */ [];\n const low = /* alloc */ [];\n const high = /* alloc */ [];\n let ring, bottom, top, tint, topRing, x, z, i, j;\n for ([ring, bottom, top, tint, topRing = ring] of parts) {\n low.length = high.length = 0;\n for ([x, z] of ring) low.push(/* alloc */ [x, bottom, z]);\n for ([x, z] of topRing) high.push(/* alloc */ [x, top, z]);\n for (i = 0; i < ring.length; i++) {\n j = (i + 1) % ring.length;\n triangle(position, normal, color, low[i], low[j], high[j], tint); triangle(position, normal, color, low[i], high[j], high[i], tint);\n }\n for (i = 1; i < ring.length - 1; i++) {\n triangle(position, normal, color, high[0], high[i], high[i + 1], tint); triangle(position, normal, color, low[0], low[i + 1], low[i], tint);\n }\n }\n return /* alloc */ { position, normal, color };\n}\n", "export function tooltip({ properties: p }) {\n const content = document.createElement('div');\n content.style.whiteSpace = 'pre-line';\n let text = p.name ? String(p.name) : '';\n if (p.departure) text += `${text ? '\\n' : ''}Departure ${p.departure} ${p.timetable.timeZone}`;\n if (p.description) text += `${text ? '\\n' : ''}${p.description}`;\n content.textContent = text;\n return content;\n}\n", "import { underEntry } from '../scene/underEntry.js';\n\nexport function startTraffic(state) {\r\n state.layer._map.off('simulationtimechange layerremove', state.update).on('simulationtimechange layerremove', state.update);\r\n state.layer._map.off('terrainchange', state.terrain).on('terrainchange', state.terrain);\r\n underEntry(state.layer, state.status);\r\n state.update();\r\n}\n", "import { trafficByLayer } from '../globals/trafficByLayer.js';\n\n\nimport { placeTraffic } from './placeTraffic.js';\nimport { startTraffic } from './startTraffic.js';\n\nexport function addTraffic(state) {\n trafficByLayer.set(state.layer, state);\n if (state.ready) startTraffic(state);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport * as disposeMesh from '../rendering/disposeMesh.js';\nimport * as setHighlight from '../picking/setHighlight.js';\nimport * as showFeature from '../picking/showFeature.js';\n\nexport function disposeTrafficObject(state, object) {\r\n if (!object) return;\r\n if (sceneByLayer.get(state.layer).highlightedFeature?.mesh === object) {\r\n setHighlight.setHighlight(state.layer, null);\r\n sceneByLayer.get(state.layer).hoveredFeature = null;\r\n showFeature.showFeature(state.layer, null);\r\n };\r\n disposeMesh.disposeMesh(state.layer, object);\r\n}\n", "export function destroyTrafficGpu(state) {\n state.gpu?.params?.destroy();\n state.gpu?.template?.destroy();\n state.gpu?.points?.destroy();\n state.gpu?.vehicles?.destroy();\n state.gpu = null;\n}\n", "import { trafficByLayer } from '../globals/trafficByLayer.js';\n\n\nimport { disposeTrafficObject } from './disposeTrafficObject.js';\nimport { destroyTrafficGpu } from './destroyTrafficGpu.js';\n\nexport function removeTraffic(state) {\n state.request?.abort();\n cancelAnimationFrame(state.frame);\n state.frame = undefined;\n state.layer._map.off('simulationtimechange layerremove', state.update).off('terrainchange', state.terrain);\n disposeTrafficObject(state, state.mesh);\n disposeTrafficObject(state, state.route);\n state.mesh = state.route = null;\n trafficByLayer.delete(state.layer);\n destroyTrafficGpu(state);\n state.lanes.length = 0;\n state.trips.length = 0;\n state.tripsKey = state.loaded = null;\n}\n", "import { startTraffic } from './startTraffic.js';\n\nexport function readyTraffic(state) {\r\n state.ready = true;\r\n if (state.layer._map) startTraffic(state);\r\n}\n", "import { cameraByMap } from '../globals/cameraByMap.js';\n\n\r\nexport function trafficNow(state) {\r\n const control = cameraByMap.get(state.layer._map)?._timeControl;\r\n const live = control ? control.live : true;\r\n return /* alloc */ {\r\n live, time: live ? /* alloc */ new Date() : control.time,\r\n };\r\n}\r\n", "import { speed } from '../globals/speed.js';\n\n\n/** Evenly spaced starting offsets (metres) for `flow` vehicles/h moving at `velocity` m/s on a `length` metres lane. */\n\nexport function vehicleOffsets(length, flow, velocity = speed) {\n const count = Math.round(length * flow / 3600 / velocity);\n const offsets = Array.from(/* alloc */ { length: count });\n let i;\n for (i = 0; i < offsets.length; i++) offsets[i] = (i + 0.5) * length / count;\n return offsets;\n}\n", "export const trafficClocks = new Map();\n", "\n\nexport function clockMinutes(clockTime) {\n const parts = clockTime.split(':');\n return Number(parts[0]) * 60 + Number(parts[1]);\n}\n", "\n\nexport function compareDepartures(a, b) {\n return a - b;\n}\n", "import { trafficClocks } from '../globals/trafficClocks.js';\nimport { clockMinutes } from './clockMinutes.js';\nimport { compareDepartures } from './compareDepartures.js';\n\n\n/**\n * Trips of a frequency-based timetable (like GTFS frequencies.txt) underway at `date`, in the timetable's local time.\n * @param {{timeZone: string, duration: number, services: Array<{from: string, to: string, every?: number, months?: number[], weekdays?: number[]}>}} timetable\n * `duration` and `every` are minutes; `from`/`to` are 'HH:MM' first/last departures; months are 1-12, weekdays 0 (Sunday)-6.\n * @returns {Array<{id: string, departure: string, progress: number}>} `progress` is 0-1 along the lane.\n */\n\nexport function scheduledTrips(date, { timeZone, duration, services }) {\n const time = date instanceof Date ? date\n : /* alloc */ new Date(date);\n if (!Number.isFinite(time.getTime())) throw /* alloc */ new Error('Invalid date');\n let clock = trafficClocks.get(timeZone);\n if (!clock) {\n clock = /* alloc */ new Intl.DateTimeFormat('en-GB',\n /* alloc */ {\n timeZone, year: 'numeric', month: '2-digit', day: '2-digit',\n hour: '2-digit', minute: '2-digit', second: '2-digit', hourCycle: 'h23',\n });\n if (trafficClocks.size >= 32) {\n trafficClocks.delete(trafficClocks.keys().next().value);\n }\n trafficClocks.set(timeZone, clock);\n }\n const parts = /* alloc */ {};\n let part, from, to, every, months, weekdays, departure;\n for (part of clock.formatToParts(time)) {\n if (part.type !== 'literal') parts[part.type] = Number(part.value);\n }\n const minute = parts.hour * 60 + parts.minute + (parts.second + time.getUTCMilliseconds() / 1000) / 60;\n const weekday = ((Math.floor(Date.UTC(parts.year, parts.month - 1, parts.day) / 86400000) + 4) % 7 + 7) % 7;\n const departures = /* alloc */ [];\n for ({ from, to, every = Infinity, months, weekdays } of services) {\n if (months?.includes(parts.month) === false || weekdays?.includes(weekday) === false) continue;\n for (departure = clockMinutes(from); departure <= clockMinutes(to); departure += every) departures.push(departure);\n }\n departures.sort(compareDepartures);\n const trips = /* alloc */ [];\n for (departure of departures) {\n if (minute >= departure && minute < departure + duration) trips.push(/* alloc */ {\n id: `${parts.year}-${parts.month}-${parts.day}-${departure}`,\n departure: `${String(Math.floor(departure / 60)).padStart(2, '0')}:${String(departure % 60).padStart(2, '0')}`,\n progress: (minute - departure) / duration,\n });\n }\n return trips;\n}\n", "import { vehicleOffsets } from \"./vehicleOffsets.js\";\nimport { scheduledTrips } from \"./scheduledTrips.js\";\n\n// A lane with a `timetable` runs scheduled trips end to end; one with a `flow` (vehicles/h) loops evenly spaced vehicles.\n\nexport function tripsAt(time, lanes, velocity) {\n const trips = /* alloc */ [];\n let l, lane, timetable, flow, trip, travelled, offsets, k;\n for (l = 0; l < lanes.length; l++) {\n lane = lanes[l];\n ({ timetable, flow = 0 } = lane.properties);\n if (!lane.length) continue;\n if (timetable) {\n for (trip of scheduledTrips(time, timetable)) trips.push(/* alloc */ {\n id: `${l}-${trip.id}`, lane, distance: trip.progress * lane.length, speed: lane.length / (timetable.duration * 60),\n properties: /* alloc */ { ...lane.properties, departure: trip.departure },\n });\n } else {\n travelled = time / 1000 * velocity;\n offsets = lane.offsets ||= vehicleOffsets(lane.length, flow, velocity);\n for (k = 0; k < offsets.length; k++) trips.push(/* alloc */ {\n id: `${l}-${k}`, lane, distance: (offsets[k] + travelled) % lane.length, speed: velocity, properties: lane.properties,\n });\n }\n }\n return trips;\n}\n", "export function failTraffic(state, error) {\r\n state.error = error;\r\n state.status.textContent = `${state.vehicle}: Error: ${error.message}`;\r\n state.status.setAttribute('role', 'alert');\r\n console.error('Traffic layer', error);\r\n}\r\n", "export const trafficRouteMaterial = Object.freeze({ unlit: true });\n", "export function appendRouteDash(position, normal, color, a, b, dx, dz, x, z, start, end, r, g, blue) {\r\n const px = a[0] + dx * start, pz = a[1] + dz * start;\r\n const py = a[2] + (b[2] - a[2]) * start + 0.4;\r\n const qx = a[0] + dx * end, qz = a[1] + dz * end;\r\n const qy = a[2] + (b[2] - a[2]) * end + 0.4;\r\n let vertex;\r\n for (vertex = 0; vertex < 6; vertex++) {\r\n if (vertex === 0 || vertex === 3) position.push(px - x, py, pz - z);\r\n else if (vertex === 1) position.push(px + x, py, pz + z);\r\n else if (vertex === 5) position.push(qx - x, qy, qz - z);\r\n else position.push(qx + x, qy, qz + z);\r\n normal.push(0, 1, 0);\r\n color.push(r, g, blue);\r\n }\r\n}\r\n", "import { appendRouteDash } from './appendRouteDash.js';\r\n\r\nexport function appendRouteSegment(position, normal, color, points, lengths, i, r, g, blue) {\r\n const a = points[i - 1], b = points[i];\r\n const dx = b[0] - a[0], dz = b[1] - a[1], length = lengths[i] - lengths[i - 1];\r\n if (!length) return;\r\n const x = -dz / length * 2.5, z = dx / length * 2.5;\r\n let distance, start, end;\r\n for (distance = Math.floor(lengths[i - 1] / 30) * 30; distance < lengths[i]; distance += 30) {\r\n start = Math.max(0, (distance - lengths[i - 1]) / length);\r\n end = Math.min(1, (distance + 18 - lengths[i - 1]) / length);\r\n if (end <= start) continue;\r\n appendRouteDash(position, normal, color, a, b, dx, dz, x, z, start, end, r, g, blue);\r\n }\r\n}\r\n", "import { appendRouteSegment } from './appendRouteSegment.js';\n\n/** Dashed lane outline, in layer-local metres. */\n\nexport function routeGeometry(lanes) {\n const position = /* alloc */ [];\n const normal = /* alloc */ [];\n const color = /* alloc */ [];\n let points, lengths, properties, raw, rgb, r, g, blue, i;\n for ({ points, lengths, properties } of lanes) {\n raw = properties?.route_color;\n rgb = /^[\\da-f]{6}$/i.test(raw) ? Number.parseInt(raw, 16) : null;\n r = rgb === null ? 0.08 : (rgb >> 16 & 255) / 255;\n g = rgb === null ? 0.7 : (rgb >> 8 & 255) / 255;\n blue = rgb === null ? 0.85 : (rgb & 255) / 255;\n for (i = 1; i < points.length; i++) {\n appendRouteSegment(position, normal, color, points, lengths, i, r, g, blue);\n }\n }\n return /* alloc */ { position, normal, color };\n}\n", "import * as createMeshApi from '../rendering/createMesh.js';\n\nexport function createTrafficMesh(state, data, featureFaces, material, usage = 0) {\r\n const result = createMeshApi.createMesh(state.layer, data, material, usage);\r\n result.extras.featureFaces = featureFaces;\r\n return result;\r\n}\n", "import { trafficRouteMaterial } from '../globals/trafficRouteMaterial.js';\nimport { routeGeometry } from './routeGeometry.js';\nimport { createTrafficMesh } from './createTrafficMesh.js';\n\n\nexport function drawTrafficRoute(state) {\n state.route = createTrafficMesh(state, routeGeometry(state.lanes),\n /* alloc */ [], trafficRouteMaterial);\n}\n", "import { computeBounds } from '../geometry/computeBounds.js';\n\nexport function trafficBounds(state) {\n let radius = 20, height = 5;\n let i, lane, x, z, y;\n for (i = 0; i < state.template.position.length; i += 3) {\n radius = Math.max(radius, Math.hypot(state.template.position[i], state.template.position[i + 2]) + Math.abs(state.side));\n height = Math.max(height, state.template.position[i + 1]);\n }\n const data = /* alloc */ [];\n for (lane of state.lanes) {\n for ([x, z, y] of lane.points) data.push(x - radius, y, z - radius, x + radius, y + height, z + radius);\n }\n const extent = /* alloc */ {\n attributes: /* alloc */ {\n position: /* alloc */ { data },\n },\n };\n computeBounds(extent);\n state.mesh.geometry.bounds = extent.bounds;\n}\n", "import { trafficEmptyOptions } from '../globals/trafficEmptyOptions.js';\nimport { build } from '../geometry/build.js';\nimport { createTrafficMesh } from './createTrafficMesh.js';\nimport { disposeTrafficObject } from './disposeTrafficObject.js';\nimport { trafficBounds } from './trafficBounds.js';\n\n\nexport function rebuildTrafficMesh(state) {\n const { trips, model, vertices } = state;\n disposeTrafficObject(state, state.mesh);\n state.mesh = null;\n if (!trips.length) return;\n const color = /* alloc */ [];\n const featureFaces = /* alloc */ [];\n let i, trip, component;\n for (i = 0; i < trips.length; i++) {\n trip = trips[i];\n for (component of build(model(i, trip.properties)).color) color.push(component);\n featureFaces.push(/* alloc */ {\n id: trip.id, properties: trip.properties, faceStart: i * vertices / 3, faceEnd: (i + 1) * vertices / 3,\n vertexStart: i * vertices, vertexEnd: (i + 1) * vertices\n });\n }\n const count = color.length / 3;\n state.mesh = createTrafficMesh(state, /* alloc */ {\n position: /* alloc */ new Array(color.length).fill(0),\n normal: /* alloc */ new Array(color.length).fill(0), color,\n }, featureFaces, trafficEmptyOptions, GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC);\n state.mesh.geometry.drawRange.count = count;\n state.mesh.extras.dynamicLights = true;\n trafficBounds(state);\n}\n", "export function trafficStorage(device, data) {\r\n const buffer = device.createBuffer(/* alloc */ { size: Math.max(16, data.byteLength), usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST });\r\n device.queue.writeBuffer(buffer, 0, data);\r\n return buffer;\r\n}\r\n", "import { trafficStorage } from './trafficStorage.js';\r\n\r\nexport function uploadTrafficLanes(state, device) {\r\n let lane, i, point, count = 0;\r\n for (lane of state.lanes) count += lane.points.length;\r\n const data = /* alloc */ new Float32Array(count * 4);\r\n let offset = 0;\r\n for (lane of state.lanes) {\r\n lane.start = offset / 4;\r\n for (i = 0; i < lane.points.length; i++) {\r\n point = lane.points[i];\r\n data[offset++] = point[0];\r\n data[offset++] = point[1];\r\n data[offset++] = point[2];\r\n data[offset++] = lane.lengths[i];\r\n }\r\n }\r\n state.gpu.points?.destroy();\r\n state.gpu.points = trafficStorage(device, data);\r\n state.lanesDirty = false;\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { destroyTrafficGpu } from './destroyTrafficGpu.js';\nimport { trafficStorage } from './trafficStorage.js';\nimport { uploadTrafficLanes } from './uploadTrafficLanes.js';\n\nexport function rebaseTraffic(state) {\n const { device } = sceneByLayer.get(state.layer).renderer;\n if (state.gpu?.device !== device) {\n destroyTrafficGpu(state);\n const template = /* alloc */ new Float32Array(\n state.template.position.length + state.template.normal.length);\n template.set(state.template.position);\n template.set(state.template.normal, state.template.position.length);\n state.gpu = /* alloc */ {\n device,\n pipeline: device.createComputePipeline(/* alloc */ {\n layout: 'auto', compute: /* alloc */ {\n module: device.createShaderModule(/* alloc */ { code: state.shader }), entryPoint: 'main',\n },\n }),\n params: device.createBuffer(/* alloc */ { size: 16, usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST }),\n template: trafficStorage(device, template),\n };\n state.lanesDirty = true;\n }\n let i, trip, binding;\n if (state.lanesDirty) uploadTrafficLanes(state, device);\n const data = /* alloc */ new Float32Array(state.trips.length * 4);\n const index = /* alloc */ new Uint32Array(data.buffer);\n for (i = 0; i < state.trips.length; i++) {\n trip = state.trips[i];\n index[i * 4] = trip.lane.start;\n index[i * 4 + 1] = trip.lane.points.length;\n data[i * 4 + 2] = trip.distance;\n data[i * 4 + 3] = trip.speed;\n state.mesh.extras.featureFaces[i].properties = trip.properties;\n }\n if (state.gpu.vehicles?.size >= data.byteLength) device.queue.writeBuffer(state.gpu.vehicles, 0, data);\n else {\n state.gpu.vehicles?.destroy();\n state.gpu.vehicles = trafficStorage(device, data);\n }\n const { position, normal } = state.mesh.geometry.attributes;\n const entries = /* alloc */ [];\n let buffer;\n for (binding = 0; binding < 6; binding++) {\n buffer = binding === 0 ? state.gpu.params : binding === 1 ? state.gpu.template\n : binding === 2 ? state.gpu.points : binding === 3 ? state.gpu.vehicles\n : binding === 4 ? position.buffer : normal.buffer;\n entries.push(/* alloc */ {\n binding, resource: /* alloc */ { buffer },\n });\n }\n state.gpu.bindGroup = device.createBindGroup(/* alloc */ {\n layout: state.gpu.pipeline.getBindGroupLayout(0),\n entries,\n });\n}\n", "export function trafficStatusText(state, valid) {\r\n if (!valid) return `${state.vehicle}: select a valid simulation date`;\r\n if (!state.loaded) return `${state.vehicle}: loading\u2026`;\r\n return `${state.trips.length} ${state.vehicle === 'boat' ? 'boats' : state.vehicle}`;\r\n}\r\n", "import { tripsAt } from './tripsAt.js';\r\nimport { failTraffic } from './failTraffic.js';\r\nimport { drawTrafficRoute } from './drawTrafficRoute.js';\r\nimport { rebuildTrafficMesh } from './rebuildTrafficMesh.js';\r\nimport { rebaseTraffic } from './rebaseTraffic.js';\r\nimport { trafficStatusText } from './trafficStatusText.js';\r\n\r\nexport function refreshTrafficTrips(state, time, ms, valid) {\r\n let text;\r\n try {\r\n if (valid) state.trips = tripsAt(time, state.lanes, state.velocity);\r\n else state.trips.length = 0;\r\n text = trafficStatusText(state, valid);\r\n } catch (error) {\r\n failTraffic(state, error);\r\n return;\r\n }\r\n state.rebasedAt = ms;\r\n state.nextCheck = ms + 1000;\r\n let key = '', trip;\r\n for (trip of state.trips) key += `${key ? ',' : ''}${trip.id}`;\r\n const routeNeeded = state.outline && !state.route && state.lanes.length;\r\n const changed = key !== state.tripsKey || Boolean(routeNeeded);\r\n if (routeNeeded) drawTrafficRoute(state);\r\n if (key !== state.tripsKey) { rebuildTrafficMesh(state); state.tripsKey = key; }\r\n if (state.mesh) rebaseTraffic(state);\r\n if (!state.error) {\r\n if (state.status.textContent !== text) state.status.textContent = text;\r\n state.status.removeAttribute('role');\r\n }\r\n return changed;\r\n}\r\n", "export function moveTraffic(state, seconds) {\r\n const { device } = state.gpu;\r\n state.paramFloats[0] = state.elapsed = seconds;\r\n state.paramFloats[1] = state.side;\r\n state.paramInts[2] = state.vertices;\r\n state.paramInts[3] = state.trips.length * state.vertices;\r\n device.queue.writeBuffer(state.gpu.params, 0, state.params);\r\n const encoder = device.createCommandEncoder(), pass = encoder.beginComputePass();\r\n pass.setPipeline(state.gpu.pipeline);\r\n pass.setBindGroup(0, state.gpu.bindGroup);\r\n pass.dispatchWorkgroups(state.trips.length);\r\n pass.end();\r\n device.queue.submit(/* alloc */ [encoder.finish()]);\r\n state.stale = true;\r\n}\r\n", "import { locateTraffic } from './locateTraffic.js';\r\n\r\nexport function updateTrafficLights(state) {\r\n state.litAt = performance.now();\r\n const lights = /* alloc */ [];\r\n let trip, x, y, z, dx, dz, lx, ly, lz, light;\r\n for (trip of state.trips) {\r\n ({ x, y, z, dx, dz } = locateTraffic(state, trip));\r\n for ({ position: [lx, ly, lz], ...light } of state.lights) {\r\n lights.push(/* alloc */ {\r\n ...light, position: /* alloc */ [x - lx * dz - lz * dx, y + ly, z + lx * dx - lz * dz],\r\n });\r\n }\r\n }\r\n state.mesh.extras.lights = lights;\r\n}\r\n", "import { moveTraffic } from './moveTraffic.js';\r\nimport { updateTrafficLights } from './updateTrafficLights.js';\r\n\r\nexport function updateTrafficPose(state, ms, live) {\r\n if (!state.mesh) return;\r\n moveTraffic(state, (ms - state.rebasedAt) / 1000);\r\n if (state.lights && (!live || !(performance.now() - state.litAt < 100))) updateTrafficLights(state);\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { update as updateScene } from '../scene/update.js';\nimport { trafficNow } from './trafficNow.js';\nimport { refreshTrafficTrips } from './refreshTrafficTrips.js';\nimport { updateTrafficPose } from './updateTrafficPose.js';\n\nexport function tickTraffic(state) {\n state.frame = undefined;\n if (!state.ready || !state.layer._map) return;\n if (!sceneByLayer.get(state.layer).renderer) { state.frame = requestAnimationFrame(state.tick); return; }\n if (state.mesh && !(state.mesh.geometry.attributes.position.buffer.usage & GPUBufferUsage.STORAGE)) {\n state.tripsKey = null;\n state.nextCheck = -Infinity;\n }\n const { live, time } = trafficNow(state), ms = time?.getTime(), valid = Number.isFinite(ms);\n let changed = false;\n if (!live || !valid || !(ms >= state.rebasedAt && ms < state.nextCheck)) {\n changed = refreshTrafficTrips(state, time, ms, valid);\n if (changed === undefined) return;\n }\n updateTrafficPose(state, ms, live);\n if (state.mesh || changed) updateScene(state.layer);\n if (live && valid) state.frame = requestAnimationFrame(state.tick);\n}\n", "export async function fetchTrafficLanes(state, time, signal) {\r\n const href = /* alloc */ new URL(state.url, document.baseURI).href;\r\n if (/\\.m?js(?:[?#]|$)/i.test(state.url)) return (await import(href)).default(time, state.layer, signal);\r\n if (!state.file) {\r\n const response = await fetch(href, /* alloc */ { signal });\r\n if (!response.ok) throw /* alloc */ new Error(`HTTP ${response.status}`);\r\n state.file = await response.json();\r\n }\r\n return state.file;\r\n}\r\n", "export const trafficEmptyList = Object.freeze([]);\n", "import { trafficEmptyList } from '../globals/trafficEmptyList.js';\n// GeoJSON (Multi)LineStrings become lanes ({latlngs, properties, elevation?}); prepare() adds `points` ([x, z, ground]),\n// `lengths` and `length` in layer-local metres.\n\n\n\nexport function toLanes({ features = trafficEmptyList }) {\n const lanes = /* alloc */ [];\n let geometry, properties, lines, line, latlngs, lng, lat, i;\n for ({ geometry, properties } of features) {\n if (geometry?.type !== 'LineString' && geometry?.type !== 'MultiLineString') continue;\n lines = geometry.type === 'MultiLineString' ? geometry.coordinates : null;\n for (i = 0; i < (lines ? lines.length : 1); i++) {\n line = lines ? lines[i] : geometry.coordinates;\n latlngs = /* alloc */ [];\n for ([lng, lat] of line) latlngs.push(/* alloc */ [lat, lng]);\n lanes.push(/* alloc */ {\n latlngs, properties: properties ?? /* alloc */ {},\n elevation: properties?.elevation,\n });\n }\n }\n return lanes;\n}\n", "import { radians } from '../globals/radians.js';\nimport { L } from '../globals/L.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { disposeTrafficObject } from './disposeTrafficObject.js';\nimport { groundTraffic } from './groundTraffic.js';\n\nexport function prepareTraffic(state) {\n const { layer, lanes } = state;\n const crs = layer._map.options.crs, origin = crs.project(sceneByLayer.get(layer).location);\n const metres = Math.cos(sceneByLayer.get(layer).location.lat * radians);\n let lane, lat, lng, point, i;\n for (lane of lanes) {\n lane.points = /* alloc */ [];\n for ([lat, lng] of lane.latlngs) {\n point = crs.project(/* alloc */ new L.LatLng(lat, lng));\n lane.points.push(/* alloc */ [(point.x - origin.x) * metres, -(point.y - origin.y) * metres, 0]);\n }\n lane.lengths = /* alloc */ [0];\n for (i = 1; i < lane.points.length; i++) {\n lane.lengths.push(lane.lengths[i - 1] + Math.hypot(lane.points[i][0] - lane.points[i - 1][0], lane.points[i][1] - lane.points[i - 1][1]));\n }\n lane.length = lane.lengths.at(-1);\n }\n groundTraffic(state);\n disposeTrafficObject(state, state.route);\n state.route = null;\n state.tripsKey = null;\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\n\n\nimport { getElevation } from '../terrain/getElevation.js';\n\nexport function groundTraffic(state) {\n const { layer, lanes } = state;\n const terrain = sceneByLayer.get(cameraByMap.get(layer._map)._terrain3D)?._terrainReady && cameraByMap.get(layer._map)._terrain3D, base = sceneByLayer.get(layer).root.position[1];\n let lane, i, elevation;\n for (lane of lanes) {\n for (i = 0; i < lane.points.length; i++) {\n elevation = terrain && (lane.elevation ?? getElevation(terrain, lane.latlngs[i]));\n lane.points[i][2] = Number.isFinite(elevation) && Number.isFinite(base) ? elevation - base : 0;\n }\n }\n state.lanesDirty = true;\n state.nextCheck = -Infinity;\n}\n", "import { toLanes } from './toLanes.js';\nimport { prepareTraffic } from './prepareTraffic.js';\n\nexport function loadedTrafficLanes(state, signal, data) {\r\n if (signal.aborted || !state.layer._map) return;\r\n state.error = null;\r\n if (data === state.loaded) {\r\n state.nextCheck = -Infinity;\r\n if (!state.frame) state.tick();\r\n return;\r\n }\r\n state.loaded = data;\r\n state.lanes = toLanes(data);\r\n prepareTraffic(state);\r\n if (!state.frame) state.tick();\r\n}\n", "import { failTraffic } from './failTraffic.js';\n\nexport function failedTrafficLoad(state, signal, error) {\r\n if (!signal.aborted && error.name !== 'AbortError') failTraffic(state, error);\r\n}\n", "import { trafficNow } from './trafficNow.js';\nimport { fetchTrafficLanes } from './fetchTrafficLanes.js';\nimport { loadedTrafficLanes } from './loadedTrafficLanes.js';\nimport { failedTrafficLoad } from './failedTrafficLoad.js';\n\nexport function loadTraffic(state) {\n const { time } = trafficNow(state);\n if (!Number.isFinite(time?.getTime())) return;\n state.request?.abort();\n const { signal } = state.request = /* alloc */ new AbortController();\n fetchTrafficLanes(state, time, signal).then(\n loadedTrafficLanes.bind(null, state, signal),\n failedTrafficLoad.bind(null, state, signal),\n );\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { loadTraffic } from './loadTraffic.js';\n\nexport function updateTraffic(state, event) {\r\n if (event?.layer && !sceneByLayer.get(event.layer).control?.time) return;\r\n cancelAnimationFrame(state.frame);\r\n loadTraffic(state);\r\n state.tick();\r\n}\n", "import { disposeTrafficObject } from './disposeTrafficObject.js';\nimport { groundTraffic } from './groundTraffic.js';\nimport { trafficBounds } from './trafficBounds.js';\n\nexport function updateTrafficTerrain(state) {\r\n if (!state.lanes.length) return;\r\n groundTraffic(state);\r\n disposeTrafficObject(state, state.route);\r\n state.route = null;\r\n if (state.mesh) trafficBounds(state);\r\n if (!state.frame) state.tick();\r\n}\n", "import { L } from '../globals/L.js';\nimport { initialize } from './initialize.js';\nimport { onAdd } from './onAdd.js';\nimport { onRemove } from './onRemove.js';\n\n/**\n * Third-person walk mode, toggled by a map button (and Esc): a pedestrian at the map centre runs with W/S (or \u2191/\u2193) and\n * turns with A/D (or \u2190/\u2192); the camera swings back behind it while it moves. Dragging the map only turns the camera\n * (bearing, pitch); the wheel changes the camera distance.\n * The walker follows the terrain, bridges included, and `control.walker` exposes `{ latlng, heading, phase }`.\n * Options: `speed` (m/s, default 70), `distance` (camera distance in metres, default 20), `position` (button corner, default 'bottomright').\n * Visible meshes of the other 3D layers (buildings, trees, models, streetlights) are solid; terrain and traffic are not.\n */\nL.Control.Walk = L.Control.extend({\n options: { position: 'bottomright', speed: 70, distance: 20 },\n initialize,\n onAdd,\n onRemove,\n});\n", "import { L } from '../globals/L.js';\nimport { createWalk } from './createWalk.js';\r\n\r\nexport function initialize(options) {\r\n L.Util.setOptions(this, options);\r\n createWalk(this, this.options);\r\n}\r\n", "import { L } from '../globals/L.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { init3D } from '../scene/init3D.js';\nimport { onBlur } from './onBlur.js';\nimport { onKey } from './onKey.js';\nimport { onPointer } from './onPointer.js';\nimport { onTerrain } from './onTerrain.js';\nimport { start } from './start.js';\nimport { step } from './step.js';\nimport { stop } from './stop.js';\nimport { toggle } from './toggle.js';\n\nexport function createWalk(control, {\n speed,\n distance,\n ...options\n}) {\n const layer = /* alloc */ new L.Layer();\n sceneByLayer.get(layer)._type = 'walk';\n init3D(layer, options);\n const keys = /* alloc */ new Set();\n const container = L.DomUtil.create('div', 'leaflet-bar leaflet-control');\n container.style.cssText = 'display:flex;align-items:center;background:#fff;';\n const button = L.DomUtil.create('button', '', container);\n button.type = 'button';\n button.title = 'Walk';\n button.setAttribute('aria-label', 'Walk');\n button.setAttribute('aria-pressed', 'false');\n button.textContent = '\uD83D\uDEB6';\n button.style.cssText = 'width:30px;height:30px;padding:0;border:0;border-radius:4px;background:#fff;font-size:18px;line-height:30px;cursor:pointer;';\n const hint = L.DomUtil.create('small', '', container);\n hint.style.cssText = 'display:none;padding:0 8px;color:#333;white-space:nowrap;';\n hint.textContent = 'W/S: run \u00B7 A/D: turn \u00B7 hold Space: ascend \u00B7 drag: look around \u00B7 Esc: exit';\n L.DomEvent.disableClickPropagation(container);\n\n const context = /* alloc */ {\n layer,\n speed,\n distance,\n keys,\n container,\n button,\n hint,\n meshes: null,\n frame: null,\n last: undefined,\n swing: 0,\n verticalSpeed: 0,\n saved: null,\n hitData: null,\n local: null,\n state: control.walker = sceneByLayer.get(layer).walker = /* alloc */ { latlng: null, heading: 0, phase: 0, height: 0 }\n }\n context.step = step.bind(context);\n context.onKey = onKey.bind(context);\n context.onBlur = onBlur.bind(context);\n context.onPointer = onPointer.bind(context);\n context.onTerrain = onTerrain.bind(context);\n context.start = start.bind(context);\n context.stop = stop.bind(context);\n context.toggle = toggle.bind(context);\n control._walk = context;\n L.DomEvent.on(button, 'click', context.toggle);\n}\n", "export function onBlur() {\r\n this.keys.clear();\r\n}\n", "// W/S (\u2191/\u2193) run forward/back along the heading, A/D (\u2190/\u2192) turn: [forward, turn].\nexport const moves = {\n KeyW: [1, 0],\n ArrowUp: [1, 0],\n KeyS: [-1, 0],\n ArrowDown: [-1, 0],\n KeyD: [0, 1],\n ArrowRight: [0, 1],\n KeyA: [0, -1],\n ArrowLeft: [0, -1]\n};\n", "import { L } from '../globals/L.js';\nimport { mapSetPitch } from '../camera/mapSetPitch.js';\nimport * as disposeMesh from '../rendering/disposeMesh.js';\nimport { onKey } from './onKey.js';\nimport { onBlur } from './onBlur.js';\nimport { onPointer } from './onPointer.js';\nimport { onTerrain } from './onTerrain.js';\n\nexport function stop() {\n const map = this.layer._map;\n cancelAnimationFrame(this.frame);\n this.keys.clear(); this.dragging = false;\n this.state.height = this.verticalSpeed = 0;\n L.DomEvent.off(document, 'keydown keyup', this.onKey);\n L.DomEvent.off(window, 'blur', this.onBlur);\n let mesh, name;\n if (this.meshes) for (mesh of this.meshes) disposeMesh.disposeMesh(this.layer, mesh);\n this.meshes = null;\n this.button.setAttribute('aria-pressed', 'false');\n this.button.style.background = '#fff';\n this.hint.style.display = 'none';\n if (!map || !this.saved) return;\n L.DomEvent.off(map.getContainer(), 'pointerdown pointermove pointerup pointercancel', this.onPointer);\n map.off('terrainchange', this.onTerrain);\n map.options.scrollWheelZoom = this.saved.scrollWheelZoom;\n for (name of this.saved.handlers) map[name].enable();\n map.setView(this.state.latlng, this.saved.zoom, /* alloc */ { animate: false });\n mapSetPitch(map, this.saved.pitch);\n this.saved = null;\n}\n", "import { mapSetPitchAndBearing } from '../camera/mapSetPitchAndBearing.js';\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\nexport function onPointer(event) {\n // Dragging only turns the camera around the walker: horizontal = bearing, vertical = pitch.\n const map = this.layer._map;\n if (event.type === 'pointerdown') {\n if (event.button !== 0 || event.target.closest('.leaflet-control')) return;\n this.dragX = event.clientX;\n this.dragY = event.clientY;\n this.dragging = true;\n map.getContainer().setPointerCapture(event.pointerId);\n } else if (this.dragging && event.type === 'pointermove') {\n mapSetPitchAndBearing(map, Math.max(20, Math.min(85, mapGetPitch(map) - (event.clientY - this.dragY) * 0.2)), mapGetBearing(map) - (event.clientX - this.dragX) * 0.25);\n this.dragX = event.clientX;\n this.dragY = event.clientY;\n } else this.dragging = false;\n}\n", "// [part, pivot x, pivot y, swing sign]\nexport const limbs = [\n ['body', 0, 0, 0],\n ['leg', -0.09, 0.9, 1],\n ['leg', 0.09, 0.9, -1],\n ['arm', -0.25, 1.42, -1],\n ['arm', 0.25, 1.42, 1]\n];\n", "import { radians } from '../globals/radians.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { cameraByMap } from '../globals/cameraByMap.js';\n\n\nimport { getElevation } from '../terrain/getElevation.js';\n\nexport function local(output) {\n const { layer, state } = this;\n const map = layer._map, crs = map.options.crs, origin = crs.project(sceneByLayer.get(layer).location);\n const metres = Math.cos(sceneByLayer.get(layer).location.lat * radians);\n const p = crs.project(state.latlng), terrain = sceneByLayer.get(cameraByMap.get(map)._terrain3D)?._terrainReady && cameraByMap.get(map)._terrain3D;\n const ground = (terrain && getElevation(terrain, state.latlng)) || 0;\n output[0] = (p.x - origin.x) * metres;\n output[1] = ground + (state.height ?? 0) - sceneByLayer.get(layer).root.position[1];\n output[2] = -(p.y - origin.y) * metres;\n return output;\n}\n", "import { limbs } from '../globals/limbs.js';\n\nimport { update } from '../scene/update.js';\n\nimport { local } from './local.js';\n\nexport function place() {\n const [x, y, z] = local.call(this, this.local);\n // Model forward is -z; a yaw of -heading turns it to the compass heading (x east, -z north).\n const yaw = -this.state.heading, cos = Math.cos(yaw), sin = Math.sin(yaw);\n let i, px, py, sign, mesh;\n for (i = 0; i < limbs.length; i++) {\n [, px, py, sign] = limbs[i];\n mesh = this.meshes[i];\n mesh.position[0] = x + px * cos; mesh.position[1] = y + py; mesh.position[2] = z - px * sin;\n mesh.rotation[0] = sign * this.swing * Math.sin(this.state.phase);\n mesh.rotation[1] = yaw;\n }\n update(this.layer);\n}\n", "import { place } from './place.js';\n\nexport function onTerrain() {\r\n if (this.meshes) place.call(this);\r\n}\n", "import { moves } from '../globals/moves.js';\n\n\nimport { stop } from './stop.js';\n\nexport function onKey(event) {\n if (event.type === 'keyup' && event.code === 'Space') this.keys.delete('Space');\n // Text fields and sliders keep their keys; buttons and checkboxes don't.\n if (event.target.closest?.('input:not([type=checkbox], [type=radio]), select, textarea, [contenteditable]') ||\n event.ctrlKey || event.altKey || event.metaKey) return;\n if (event.type === 'keydown' && event.code === 'Escape') { this.stop(); return; }\n if (!moves[event.code] && event.code !== 'Space') return;\n event.preventDefault();\n if (event.type === 'keydown') this.keys.add(event.code); else this.keys.delete(event.code);\n}\n", "import { radians } from '../globals/radians.js';\nimport { earthCirc } from '../globals/earthCirc.js';\nimport { L } from '../globals/L.js';\nimport { sceneWalkHandlers } from '../globals/sceneWalkHandlers.js';\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\nimport { mapSetPitch } from '../camera/mapSetPitch.js';\nimport { step } from './step.js';\nimport { onKey } from './onKey.js';\nimport { onBlur } from './onBlur.js';\nimport { onPointer } from './onPointer.js';\nimport { onTerrain } from './onTerrain.js';\n\n\nexport function start() {\n const map = this.layer._map;\n if (this.saved || !map) return;\n this.state.latlng = map.getCenter();\n this.state.height = this.verticalSpeed = 0;\n // Zoom whose camera distance (1.5 viewport heights, as in scene/render.js) is about `distance` metres behind the walker.\n const pixelsPerMetre = map.getSize().y * 1.5 / this.distance;\n const zoom = Math.min(map.getMaxZoom(), Math.log2(pixelsPerMetre * earthCirc * Math.cos(this.state.latlng.lat * radians) / 256));\n let name;\n this.saved = /* alloc */ {\n zoom: map.getZoom(), pitch: mapGetPitch(map), scrollWheelZoom: map.options.scrollWheelZoom,\n handlers: /* alloc */ [],\n };\n for (name of sceneWalkHandlers) {\n if (map[name]?.enabled()) this.saved.handlers.push(name);\n }\n for (name of this.saved.handlers) map[name].disable();\n // Wheel zoom moves the camera closer or farther, keeping the walker centred.\n map.options.scrollWheelZoom = this.saved.scrollWheelZoom && 'center';\n this.state.heading = -mapGetBearing(map) * radians;\n map.setView(this.state.latlng, zoom, /* alloc */ { animate: false });\n mapSetPitch(map, 75);\n L.DomEvent.on(document, 'keydown keyup', this.onKey);\n L.DomEvent.on(window, 'blur', this.onBlur);\n L.DomEvent.on(map.getContainer(), 'pointerdown pointermove pointerup pointercancel', this.onPointer);\n map.on('terrainchange', this.onTerrain);\n this.button.setAttribute('aria-pressed', 'true');\n this.button.style.background = '#e4e4e4';\n this.hint.style.display = '';\n this.last = undefined;\n this.frame = requestAnimationFrame(this.step);\n}\n", "export const sceneWalkHandlers = ['dragging', 'keyboard', 'doubleClickZoom', 'boxZoom'];\n", "export function wrap(angle) {\n return Math.atan2(Math.sin(angle), Math.cos(angle));\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nexport function shouldSkipOther(other, layer) {\n return other === layer || sceneByLayer.get(other)._type === 'terrain' || sceneByLayer.get(other)._type === 'traffic';\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { intersectMeshes } from '../collision/intersectMeshes.js';\r\nimport { traverse } from '../scene/traverse.js';\r\nimport { updateWorldMatrix } from '../scene/updateWorldMatrix.js';\r\nimport { collectVisibleMesh } from '../picking/collectVisibleMesh.js';\r\nimport { shouldSkipOther } from '../picking/shouldSkipOther.js';\r\nimport { local } from './local.js';\r\n\r\nexport function land(previousY) {\r\n const state = sceneByLayer.get(this.layer), ray = state.raycaster;\r\n const feet = local.call(this, this.local), root = state.root;\r\n const x = root.position[0] + feet[0] * root.scale[0];\r\n const y = root.position[1] + feet[1] * root.scale[1];\r\n const z = root.position[2] + feet[2] * root.scale[2];\r\n if (y > previousY || this.verticalSpeed > 0) return;\r\n updateWorldMatrix(state.scene);\r\n ray.origin[0] = x; ray.origin[1] = previousY + 0.01; ray.origin[2] = z;\r\n ray.direction[0] = 0; ray.direction[1] = -1; ray.direction[2] = 0;\r\n ray.meshes.length = 0;\r\n let layer, hit;\r\n for (layer of sceneByLayer.get(state._shared)._layers) {\r\n if (shouldSkipOther(layer, this.layer) || sceneByLayer.get(layer).kind === 'raster' || layer.options.nightLight) continue;\r\n traverse(sceneByLayer.get(layer).root, collectVisibleMesh, ray.meshes);\r\n }\r\n for (hit of intersectMeshes(ray, ray.meshes)) {\r\n if (hit.point[1] < y - 0.001) break;\r\n this.state.height += (hit.point[1] - y) / root.scale[1];\r\n this.verticalSpeed = 0;\r\n break;\r\n }\r\n ray.meshes.length = 0;\r\n}\r\n", "import { L } from '../globals/L.js';\r\nimport { radians } from '../globals/radians.js';\r\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\r\nimport { local } from './local.js';\r\nimport { blocked } from './blocked.js';\r\n\r\nexport function moveWalker(forward, dt) {\r\n const metres = forward * this.speed * dt, { lat, lng } = this.state.latlng;\r\n const { position, scale } = sceneByLayer.get(this.layer).root;\r\n let east = Math.sin(this.state.heading) * metres, north = Math.cos(this.state.heading) * metres;\r\n const feet = local.call(this, this.local);\r\n let i;\r\n for (i = 0; i < feet.length; i++) feet[i] = position[i] + scale[i] * feet[i];\r\n // World x is east, z south; keep 0.3 m from walls and slide along them.\r\n const wall = blocked.call(this, east, north, feet);\r\n if (wall) {\r\n const into = east * wall[0] - north * wall[1];\r\n east -= into * wall[0]; north += into * wall[1];\r\n if (blocked.call(this, east, north, feet)) east = north = 0;\r\n }\r\n this.state.latlng = /* alloc */ new L.LatLng(lat + north / 111320, lng + east / (111320 * Math.cos(lat * radians)));\r\n this.state.phase += Math.hypot(east, north) / 1.6 * Math.PI;\r\n}\r\n", "// Walls (non-horizontal triangles) of a mesh in world space, bucketed by 8 m cells; `origin` is the world translation\n// at build time, since layer roots only move vertically with the terrain afterwards.\nexport const CELL = 8;\n", "export const colliders = new WeakMap();\n", "export function transformTriangle(v, p, index, i, m) {\r\n let k, j, x, y, z;\r\n for (k = 0; k < 3; k++) {\r\n j = (index ? index.data[i + k] : i + k) * 3, x = p[j], y = p[j + 1], z = p[j + 2];\r\n v[k * 3] = m[0] * x + m[4] * y + m[8] * z + m[12];\r\n v[k * 3 + 1] = m[1] * x + m[5] * y + m[9] * z + m[13];\r\n v[k * 3 + 2] = m[2] * x + m[6] * y + m[10] * z + m[14];\r\n }\r\n}\r\n", "import { CELL } from '../globals/CELL.js';\r\n\r\nexport function indexTriangle(cells, v, t) {\r\n let ix, iz, key;\r\n for (ix = Math.floor(Math.min(v[0], v[3], v[6]) / CELL); ix <= Math.floor(Math.max(v[0], v[3], v[6]) / CELL); ix++)\r\n for (iz = Math.floor(Math.min(v[2], v[5], v[8]) / CELL); iz <= Math.floor(Math.max(v[2], v[5], v[8]) / CELL); iz++) {\r\n key = ix + ',' + iz;\r\n if (!cells.has(key)) cells.set(key, /* alloc */ []);\r\n cells.get(key).push(t);\r\n }\r\n}\r\n", "import { colliders } from '../globals/colliders.js';\nimport { transformTriangle } from './transformTriangle.js';\nimport { indexTriangle } from './indexTriangle.js';\n\n\nexport function collider(mesh) {\n let c = colliders.get(mesh.geometry);\n if (c) return c;\n const m = mesh.worldMatrix, { position: { data: p }, index, normal, uv } = mesh.geometry.attributes;\n\n const count = index ? index.count : p.length / 3;\n const tri = /* alloc */ [];\n const nrm = /* alloc */ [];\n const cells = /* alloc */ new Map();\n const v = /* alloc */ [];\n\n let i, first, j, ex, ey, ez, fx, fy, fz, nx, nz, ny, length, a, h, t;\n for (i = 0; i < count; i += 3) {\n first = index ? index.data[i] : i;\n // Streetlight halos (uv.x <= 2, see scene/picking.js) are light, not matter.\n if (mesh.program.nightLight && uv && uv.data[first * 2] <= 2) {\n continue;\n }\n transformTriangle(v, p, index, i, m);\n ex = v[3] - v[0], ey = v[4] - v[1], ez = v[5] - v[2], fx = v[6] - v[0], fy = v[7] - v[1], fz = v[8] - v[2];\n\n nx = ey * fz - ez * fy, nz = ex * fy - ey * fx;\n\n ny = ez * fx - ex * fz, length = Math.hypot(nx, ny, nz);\n\n if (!length || Math.abs(ny) > 0.9 * length) {\n continue;\n }\n\n if (normal) {\n // The stored normal tells the outside, whatever the winding.\n j = first * 3, a = normal.data;\n if ((m[0] * a[j] + m[4] * a[j + 1] + m[8] * a[j + 2]) * nx + (m[2] * a[j] + m[6] * a[j + 1] + m[10] * a[j + 2]) * nz < 0) { nx = -nx; nz = -nz; }\n }\n\n h = Math.hypot(nx, nz), t = nrm.length / 2;\n\n tri.push(...v);\n nrm.push(nx / h, nz / h);\n\n indexTriangle(cells, v, t);\n }\n c = /* alloc */ {\n tri: Float32Array.from(tri),\n nrm: Float32Array.from(nrm),\n cells,\n origin: /* alloc */ [m[12], m[13], m[14]]\n };\n colliders.set(mesh.geometry, c);\n return c;\n}\n", "// M\u00F6ller-Trumbore for the horizontal ray (ox, oy, oz) + d\u00B7(dx, 0, dz) against triangle t; returns d or -1.\nexport function horizontalRay(v, t, ox, oy, oz, dx, dz) {\n const i = t * 9, ex = v[i + 3] - v[i], ey = v[i + 4] - v[i + 1], ez = v[i + 5] - v[i + 2];\n const fx = v[i + 6] - v[i], fy = v[i + 7] - v[i + 1], fz = v[i + 8] - v[i + 2];\n const px = -dz * fy, py = dz * fx - dx * fz, pz = dx * fy, det = ex * px + ey * py + ez * pz;\n if (Math.abs(det) < 1e-9) return -1;\n const tx = ox - v[i], ty = oy - v[i + 1], tz = oz - v[i + 2], u = (tx * px + ty * py + tz * pz) / det;\n if (u < 0 || u > 1) return -1;\n const qx = ty * ez - tz * ey, qy = tz * ex - tx * ez, qz = tx * ey - ty * ex, w = (dx * qx + dz * qz) / det;\n if (w < 0 || u + w > 1) return -1;\n return (fx * qx + fy * qy + fz * qz) / det;\n}\n", "import { horizontalRay } from '../collision/horizontalRay.js';\r\n\r\nexport function hitColliderCell(cell, c, data, ox, oy, oz) {\r\n const { dx, dz, seen } = data;\r\n let t, height, d;\r\n for (t of cell) {\r\n if (seen.has(t) || dx * c.nrm[t * 2] + dz * c.nrm[t * 2 + 1] >= 0) continue;\r\n seen.add(t);\r\n for (height = 0.4; height < 2; height += 1.1) {\r\n d = horizontalRay(c.tri, t, ox, oy + height, oz, dx, dz);\r\n if (d >= 0 && d < data.best) {\r\n data.best = d;\r\n data.found = true;\r\n data.normal[0] = c.nrm[t * 2];\r\n data.normal[1] = c.nrm[t * 2 + 1];\r\n }\r\n }\r\n }\r\n}\r\n", "import { CELL } from '../globals/CELL.js';\n\nimport { computeBounds } from '../geometry/computeBounds.js';\nimport { collider } from '../collision/collider.js';\n\nimport { hitColliderCell } from './hitColliderCell.js';\n\nexport function hitMesh(mesh, data) {\n if (!mesh.visible) return true;\n if (!mesh.geometry?.attributes?.position?.data || mesh.program?.depthTest === false) return;\n if (!mesh.geometry.bounds) computeBounds(mesh.geometry);\n const m = mesh.worldMatrix, { center: k, radius } = mesh.geometry.bounds;\n const { x, y, z, dx, dz, reach } = data;\n if (Math.hypot(m[0] * k[0] + m[4] * k[1] + m[8] * k[2] + m[12] - x, m[2] * k[0] + m[6] * k[1] + m[10] * k[2] + m[14] - z) >\n radius * Math.hypot(m[0], m[1], m[2]) + reach) return;\n const c = collider(mesh), ox = x - m[12] + c.origin[0], oy = y - m[13] + c.origin[1], oz = z - m[14] + c.origin[2];\n const seen = data.seen;\n seen.clear();\n let ix, iz, cell;\n for (ix = Math.floor(Math.min(ox, ox + dx * reach) / CELL); ix <= Math.floor(Math.max(ox, ox + dx * reach) / CELL); ix++)\n for (iz = Math.floor(Math.min(oz, oz + dz * reach) / CELL); iz <= Math.floor(Math.max(oz, oz + dz * reach) / CELL); iz++) {\n cell = c.cells.get(ix + ',' + iz);\n if (!cell) continue;\n hitColliderCell(cell, c, data, ox, oy, oz);\n }\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\n\nimport { traverse } from '../scene/traverse.js';\nimport { updateWorldMatrix } from '../scene/updateWorldMatrix.js';\nimport { shouldSkipOther } from './shouldSkipOther.js';\nimport { hitMesh } from './hitMesh.js';\n\n// Horizontal normal of the nearest wall faced within `reach` metres of the feet at world (x, y, z), walking along\n// the unit (dx, dz); knee and chest rays, so arches and tree crowns above the head let the walker through.\n// ponytail: traffic vehicles and boats move on the GPU and are not obstacles.\n\nexport function hit(layer, x, y, z, dx, dz, reach, data) {\n updateWorldMatrix(sceneByLayer.get(layer).scene);\n data.x = x, data.y = y, data.z = z, data.dx = dx, data.dz = dz, data.reach = reach;\n data.best = reach, data.found = false;\n let other;\n for (other of sceneByLayer.get(sceneByLayer.get(layer)._shared)._layers) {\n if (shouldSkipOther(other, layer)) continue;\n traverse(sceneByLayer.get(other).root, hitMesh, data);\n }\n return data.found ? data.normal : null;\n}\n", "import { hit } from '../picking/hit.js';\r\n\r\nexport function blocked(east, north, feet) {\r\n const length = Math.hypot(east, north);\r\n return length > 1e-6 && hit(this.layer, feet[0], feet[1], feet[2], east / length, -north / length, length + 0.3, this.hitData);\r\n}\r\n", "export function stepWalkerHeight(dt) {\r\n if (this.keys.has('Space')) {\r\n this.verticalSpeed = 6;\r\n this.state.height += this.verticalSpeed * dt;\r\n return true;\r\n }\r\n if (!this.verticalSpeed && !this.state.height) return false;\r\n this.state.height = Math.max(0, this.state.height + this.verticalSpeed * dt - 9.81 * dt * dt / 2);\r\n this.verticalSpeed = this.state.height > 0 ? this.verticalSpeed - 9.81 * dt : 0;\r\n return true;\r\n}\r\n", "import { degrees } from '../globals/degrees.js';\r\nimport { radians } from '../globals/radians.js';\r\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\r\nimport { mapSetPitchAndBearing } from '../camera/mapSetPitchAndBearing.js';\r\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\r\nimport { wrap } from '../utils/wrap.js';\r\n\r\nexport function updateWalkerView(forward, turn, dt) {\r\n const map = this.layer._map;\r\n if (forward || turn) {\r\n // Swing the camera behind the walker.\r\n const bearing = mapGetBearing(map) * radians, behind = wrap(-this.state.heading - bearing);\r\n if (Math.abs(behind) > 1e-3) mapSetPitchAndBearing(map, mapGetPitch(map), (bearing + behind * Math.min(1, dt * 4)) * degrees);\r\n map.setView(this.state.latlng, map.getZoom(), /* alloc */ { animate: false });\r\n }\r\n const target = forward ? 0.9 : 0;\r\n if (Math.abs(this.swing - target) > 1e-3) {\r\n this.swing += (target - this.swing) * Math.min(1, dt * 10);\r\n return true;\r\n }\r\n return false;\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { limbs } from '../globals/limbs.js';\nimport { parts } from '../globals/parts.js';\nimport { moves } from '../globals/moves.js';\n\n\nimport * as createMesh from '../rendering/createMesh.js';\nimport { build } from '../geometry/build.js';\n\nimport { wrap } from '../utils/wrap.js';\nimport { local } from './local.js';\nimport { place } from './place.js';\nimport { land } from './land.js';\nimport { moveWalker } from './moveWalker.js';\nimport { stepWalkerHeight } from './stepWalkerHeight.js';\nimport { updateWalkerView } from './updateWalkerView.js';\n\nexport function step(now) {\n const layer = this.layer;\n this.frame = requestAnimationFrame(this.step);\n const dt = Math.min(0.1, (now - (this.last ?? now)) / 1000);\n this.last = now;\n if (!sceneByLayer.get(layer).renderer) return;\n let changed = false;\n let part, key;\n if (!this.meshes) {\n this.meshes = /* alloc */ [];\n for ([part] of limbs) this.meshes.push(createMesh.createMesh(layer, build(parts[part])));\n changed = true;\n }\n const previousY = sceneByLayer.get(layer).root.position[1] +\n local.call(this, this.local)[1] * sceneByLayer.get(layer).root.scale[1];\n if (stepWalkerHeight.call(this, dt)) changed = true;\n let forward = 0, turn = 0;\n for (key of this.keys) { forward += moves[key]?.[0] || 0; turn += moves[key]?.[1] || 0; }\n forward = Math.sign(forward); turn = Math.sign(turn);\n if (turn) { this.state.heading = wrap(this.state.heading + turn * 2.5 * dt); changed = true; }\n if (forward) {\n moveWalker.call(this, forward, dt);\n changed = true;\n }\n if (changed) land.call(this, previousY);\n if (updateWalkerView.call(this, forward, turn, dt)) changed = true;\n if (changed) place.call(this);\n}\n", "import { start } from './start.js';\nimport { stop } from './stop.js';\n\nexport function toggle() {\r\n if (this.saved) stop.call(this); else start.call(this);\r\n}\n", "import { walkByMap } from '../globals/walkByMap.js';\r\n\r\nexport function onAdd(map) {\r\n let state = walkByMap.get(map);\r\n if (state?.control && state.control !== this) {\r\n this._map = null;\r\n throw /* alloc */ new Error('Only one Walk control can be active per map');\r\n }\r\n if (!state) {\r\n state = /* alloc */ {\r\n control: null,\r\n hitData: /* alloc */ {\r\n x: 0, y: 0, z: 0, dx: 0, dz: 0, reach: 0, best: 0, found: false,\r\n seen: /* alloc */ new Set(),\r\n normal: /* alloc */ [0, 0],\r\n },\r\n local: /* alloc */ [0, 0, 0],\r\n };\r\n walkByMap.set(map, state);\r\n }\r\n state.control = this;\r\n state.local.fill(0);\r\n state.hitData.seen.clear();\r\n state.hitData.normal.fill(0);\r\n this._walk.hitData = state.hitData;\r\n this._walk.local = state.local;\r\n this._walk.layer.addTo(map);\r\n return this._walk.container;\r\n}\r\n", "import { walkByMap } from '../globals/walkByMap.js';\r\n\r\nexport function onRemove(map) {\r\n const state = walkByMap.get(map);\r\n if (state?.control !== this) return;\r\n this._walk.stop();\r\n this._walk.layer.remove();\r\n state.control = null;\r\n state.hitData.seen.clear();\r\n this._walk.hitData = null;\r\n this._walk.local = null;\r\n}\r\n", "import { L } from '../globals/L.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { closestMethods } from '../globals/closestMethods.js';\nimport { boundsMethods } from '../globals/boundsMethods.js';\nimport { gridInitializers } from '../globals/gridInitializers.js';\n\n\nimport { noOperation } from '../utils/noOperation.js';\nimport { emptyEvents } from '../scene/emptyEvents.js';\nimport { refreshNativeLayerContract } from './refreshNativeLayerContract.js';\n\nimport { closestCameraLayerPoint } from './closestCameraLayerPoint.js';\nimport { cameraCircleBounds } from './cameraCircleBounds.js';\nimport { initializeGridContainer } from './initializeGridContainer.js';\nimport { updateGridOpacity } from './updateGridOpacity.js';\nimport { addRasterImage } from './addRasterImage.js';\nimport { redrawPath } from './redrawPath.js';\n\nexport function initializeNativeLayer() {\n if (this instanceof L.Polyline || this instanceof L.CircleMarker) {\n this.beforeAdd = this._updateBounds = noOperation;\n this.redraw = redrawPath;\n sceneByLayer.get(this).kind = 'path';\n if (this instanceof L.Polyline) {\n closestMethods.set(this, this.closestLayerPoint);\n this.closestLayerPoint = closestCameraLayerPoint;\n }\n if (this instanceof L.Circle) {\n boundsMethods.set(this, this.getBounds);\n this.getBounds = cameraCircleBounds;\n }\n } else if (this instanceof L.GridLayer) {\n gridInitializers.set(this, this._initContainer);\n this._initContainer = initializeGridContainer;\n this._updateOpacity = updateGridOpacity;\n } else if (this instanceof L.ImageOverlay && !(this instanceof L.VideoOverlay) && !(this instanceof L.SVGOverlay)) {\n sceneByLayer.get(this).kind = 'image';\n this._reset = refreshNativeLayerContract;\n }\n}\n", "export const closestMethods = new WeakMap();\n", "export const boundsMethods = new WeakMap();\n", "export const gridInitializers = new WeakMap();\n", "export function emptyEvents() {\n return /* alloc */ {};\n}\n", "import { closestMethods } from '../globals/closestMethods.js';\n\n\nexport function closestCameraLayerPoint(point) {\n this._project();\n this._parts = this._rings;\n return closestMethods.get(this).call(this, point);\n}\n", "import { boundsMethods } from '../globals/boundsMethods.js';\n\n\nexport function cameraCircleBounds() {\n this._project();\n return boundsMethods.get(this).call(this);\n}\n", "import { gridInitializers } from '../globals/gridInitializers.js';\n\n\nexport function initializeGridContainer() {\n gridInitializers.get(this).call(this);\n this._container.remove();\n}\n", "export const pendingGridFades = new Map();\n", "export const gridFadeFrame = { value: null };\n", "import { pendingGridFades } from '../globals/pendingGridFades.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { gridFadeFrame } from '../globals/gridFadeFrame.js';\n\n\n\nexport function cancelGridFade(layer) {\n pendingGridFades.delete(layer);\n sceneByLayer.get(layer)._fadeFrame = null;\n if (!pendingGridFades.size && gridFadeFrame.value !== null) {\n cancelAnimationFrame(gridFadeFrame.value);\n gridFadeFrame.value = null;\n }\n}\n", "import { gridFadeFrame } from '../globals/gridFadeFrame.js';\nimport { pendingGridFades } from '../globals/pendingGridFades.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\n\nimport { updateGridOpacity } from './updateGridOpacity.js';\n\nexport function runGridFades() {\n gridFadeFrame.value = null;\n const layers = /* alloc */ [...pendingGridFades];\n let layer, version;\n for ([layer, version] of layers) {\n if (pendingGridFades.get(layer) !== version) continue;\n pendingGridFades.delete(layer);\n sceneByLayer.get(layer)._fadeFrame = null;\n updateGridOpacity.call(layer);\n }\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { pendingGridFades } from '../globals/pendingGridFades.js';\nimport { gridFadeFrame } from '../globals/gridFadeFrame.js';\n\n\n\nimport { runGridFades } from './runGridFades.js';\n\nexport function scheduleGridFade(layer) {\n sceneByLayer.get(layer)._fadeVersion = (sceneByLayer.get(layer)._fadeVersion || 0) + 1;\n pendingGridFades.set(layer, sceneByLayer.get(layer)._fadeVersion);\n if (gridFadeFrame.value === null) gridFadeFrame.value = requestAnimationFrame(runGridFades);\n sceneByLayer.get(layer)._fadeFrame = gridFadeFrame.value;\n}\n", "\nimport { cancelGridFade } from './cancelGridFade.js';\nimport { scheduleGridFade } from './scheduleGridFade.js';\n\nexport function updateGridOpacity() {\n if (!this._map) return;\n const layer = this, now = Date.now();\n let fading = false, prune = false;\n let key, tile;\n for (key in this._tiles) {\n if (!Object.hasOwn(this._tiles, key)) continue;\n tile = this._tiles[key];\n if (!tile.current || !tile.loaded) continue;\n tile._gpuOpacity = this._map._fadeAnimated ? Math.min(1, (now - tile.loaded) / 200) : 1;\n if (tile._gpuOpacity < 1) fading = true;\n else if (!tile.active) {\n this._onOpaqueTile(tile);\n tile.active = true;\n prune = true;\n }\n }\n if (prune && !this._noPrune) this._pruneTiles();\n refreshNativeLayerContract(this);\n cancelGridFade(layer);\n if (fading) scheduleGridFade(layer);\n}\nimport { refreshNativeLayerContract } from './refreshNativeLayerContract.js';\n", "export const pendingRasterLoads = [];\n", "import { pendingRasterLoads } from '../globals/pendingRasterLoads.js';\n\n\nexport function fireRasterLoad() {\n pendingRasterLoads.shift()?.fire('load');\n}\n", "import { pendingRasterLoads } from '../globals/pendingRasterLoads.js';\n\n\nimport { fireRasterLoad } from './fireRasterLoad.js';\n\nexport function addRasterImage() {\n if (!this._image) this._initImage();\n if (this._image.complete && this._image.naturalWidth) {\n pendingRasterLoads.push(this);\n queueMicrotask(fireRasterLoad);\n }\n}\n", "import { refreshNativeLayerContract } from './refreshNativeLayerContract.js';\r\n\r\nexport function redrawPath() {\r\n refreshNativeLayerContract(this);\r\n return this;\r\n}\r\n", "import { L } from '../globals/L.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { layerProto } from '../globals/layerProto.js';\n\n\n\nimport { initNativeGPU } from '../core/initNativeGPU.js';\nimport { removeLayerEvents } from './removeLayerEvents.js';\nimport { addSceneLayer } from './addSceneLayer.js';\nimport { get3DEvents } from './get3DEvents.js';\nimport { getRasterEvents } from '../raster/getRasterEvents.js';\nimport { emptyEvents } from './emptyEvents.js';\nimport { isNativeLayer } from './isNativeLayer.js';\n\nexport function layerLayerAdd(event) {\n const native = isNativeLayer(this);\n if (native) {\n if (this instanceof L.GridLayer || this instanceof L.ImageOverlay) {\n this.options.crossOrigin ||= true;\n }\n if (this instanceof L.Marker) this.options.icon.options.crossOrigin ||= true;\n }\n const map = event.target, state = sceneByLayer.get(this);\n if (!map.hasLayer(this)) return;\n if (state.kind) {\n this._map = map;\n this._zoomAnimated = map._zoomAnimated;\n if (state.kind !== 'pending' && state.kind !== 'time') {\n state.events = state.kind === 'raster' ? getRasterEvents(this) :\n state._3d ? get3DEvents(this) : emptyEvents();\n state.eventMap = map;\n map.on(state.events, this);\n this.once('remove', removeLayerEvents, this);\n }\n addSceneLayer(this, map);\n this.fire('add');\n map.fire('layeradd', /* alloc */ { layer: this });\n } else {\n layerProto.value._layerAdd.call(this, event);\n }\n if (!native || !event.target.hasLayer(this)) return;\n initNativeGPU(this, event.target);\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\r\n\r\nexport function removeLayerEvents() {\r\n const state = sceneByLayer.get(this);\r\n state.eventMap.off(state.events, this);\r\n state.events = state.eventMap = null;\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\r\nimport { onAdd3DLayer } from './onAdd3DLayer.js';\r\nimport { onPMTileAdd } from '../raster/onPMTileAdd.js';\r\nimport { onTerrainAdd } from '../terrain/onTerrainAdd.js';\r\nimport { addRasterImage } from '../core/addRasterImage.js';\r\nimport { addTimeLayer } from '../sunlight/addTimeLayer.js';\r\n\r\nexport function addSceneLayer(layer, map) {\r\n switch (sceneByLayer.get(layer).kind) {\r\n case '3d': return onAdd3DLayer(layer, map);\r\n case 'raster': return onPMTileAdd(layer, map);\r\n case 'terrain': return onTerrainAdd(layer, map);\r\n case 'image': return addRasterImage.call(layer, map);\r\n case 'time': return addTimeLayer.call(layer, map);\r\n }\r\n}\r\n", "import { L } from '../globals/L.js';\r\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\r\n\r\nexport function isNativeLayer(layer) {\r\n return !sceneByLayer.get(layer)._3d && (\r\n layer instanceof L.GridLayer ||\r\n layer instanceof L.Polyline ||\r\n layer instanceof L.CircleMarker ||\r\n layer instanceof L.Marker && !(layer.options.icon instanceof L.DivIcon) ||\r\n layer instanceof L.ImageOverlay && !(layer instanceof L.VideoOverlay) && !(layer instanceof L.SVGOverlay)\r\n );\r\n}\r\n", "import { L } from '../globals/L.js';\nimport { sceneEmptyOptions } from '../globals/sceneEmptyOptions.js';\nimport { layerProto } from '../globals/layerProto.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { pendingInitializations } from '../globals/pendingInitializations.js';\nimport { loading } from '../globals/loading.js';\n\n\n\nimport { init3D } from './init3D.js';\nimport { noOperation } from '../utils/noOperation.js';\nimport { resolveNextInitialization } from './resolveNextInitialization.js';\nimport { initializeLayer } from './initializeLayer.js';\n\nexport function layerInitialize(options = sceneEmptyOptions) {\n if (!sceneByLayer.has(this)) {\n sceneByLayer.set(this, /* alloc */ {});\n }\n if (Object.getPrototypeOf(this) !== L.Layer.prototype || !options?.source) {\n if (layerProto.value.initialize) return layerProto.value.initialize.apply(this, arguments);\n L.Util.setOptions(this, options);\n return;\n }\n const {\n source: {\n type = options.source.data?.type === 'FeatureCollection'\n ? 'geojson'\n : /\\.pmtiles(?:[?#]|$)/i.test(options.source.url) ? 'pmtiles'\n : /\\.tiff?(?:[?#]|$)/i.test(options.source.url) ? 'cog' : '3d',\n ...source\n },\n ...core\n } = options;\n const settings = /* alloc */ { ...source, ...core };\n L.Util.setOptions(this, core);\n sceneByLayer.get(this)._type = type;\n if (type === '3d') {\n init3D(this, settings);\n return;\n }\n sceneByLayer.get(this).kind = 'pending';\n const task = /* alloc */ { layer: this, type, settings, ready: null };\n pendingInitializations.push(task);\n loading.value = loading.value.catch(noOperation).then(resolveNextInitialization);\n const ready = sceneByLayer.get(this).ready = loading.value.then(initializeLayer);\n task.ready = ready;\n ready.catch(noOperation);\n}\n", "export const pendingInitializations = [];\n", "export const loading = { value: Promise.resolve() };\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\n\nimport { setGeoJSONLayerData } from './setGeoJSONLayerData.js';\nimport { init3D } from '../scene/init3D.js';\n\nexport function initializeGeoJSON(layer, options) {\n sceneByLayer.get(layer)._geojson = true;\n init3D(layer, options);\n}\n", "export function validateCogRange(source, offset, length) {\r\n if (!Number.isSafeInteger(offset) || !Number.isSafeInteger(length) || offset < 0 ||\r\n length <= 0 || length > 32000000 || !Number.isSafeInteger(offset + length) ||\r\n source.size !== undefined && offset + length > source.size) {\r\n throw /* alloc */ new Error('Invalid COG byte range');\r\n }\r\n}\r\n", "export function validateCogContentRange(source, range, rangeStart, length) {\r\n if (!range || Number(range[1]) !== rangeStart || Number(range[2]) !== rangeStart + length - 1 ||\r\n !Number.isSafeInteger(Number(range[3])) || Number(range[3]) < rangeStart + length ||\r\n (source.containerSize ?? source.size) !== undefined &&\r\n (source.containerSize ?? source.size) !== Number(range[3])) {\r\n throw /* alloc */ new Error('Invalid COG range response');\r\n }\r\n}\r\n", "export function invalidCogFullResponse(response) {\r\n return response.status !== 200 || Number(response.headers.get('Content-Length')) > 32000000;\r\n}\r\n", "import { validateCogContentRange } from './validateCogContentRange.js';\r\nimport { invalidCogFullResponse } from './invalidCogFullResponse.js';\r\n\r\nexport function validateCogResponse(source, response, rangeStart, length) {\r\n const etag = response.headers.get('ETag');\r\n if (source.etag && source.etag !== etag) throw /* alloc */ new Error('COG changed; recreate the layer');\r\n if (etag) source.etag = etag;\r\n const range = /^bytes (\\d+)-(\\d+)\\/(\\d+)$/.exec(response.headers.get('Content-Range') || '');\r\n if (response.status === 206) {\r\n validateCogContentRange(source, range, rangeStart, length);\r\n if (source.baseOffset === undefined) source.size = Number(range[3]);\r\n } else if (invalidCogFullResponse(response)) {\r\n throw /* alloc */ new Error('COG server must support byte ranges for files over 32 MB');\r\n }\r\n}\r\n", "export async function readCogBody(response, length) {\r\n const reader = response.body.getReader(), chunks = /* alloc */ [];\r\n let total = 0, part;\r\n try {\r\n while (!(part = await reader.read()).done) {\r\n total += part.value.byteLength;\r\n if (total > (response.status === 206 ? length : 32000000)) {\r\n await reader.cancel();\r\n throw /* alloc */ new Error('Oversized COG response');\r\n }\r\n chunks.push(part.value);\r\n }\r\n } finally {\r\n reader.releaseLock();\r\n }\r\n const data = /* alloc */ new Uint8Array(total);\r\n let start = 0, chunk;\r\n for (chunk of chunks) { data.set(chunk, start); start += chunk.length; }\r\n return data;\r\n}\r\n", "import { validateCogRange } from './validateCogRange.js';\r\nimport { validateCogResponse } from './validateCogResponse.js';\r\nimport { readCogBody } from './readCogBody.js';\r\n\r\nexport async function readCog(source, offset, length, signal) {\r\n signal?.throwIfAborted();\r\n validateCogRange(source, offset, length);\r\n if (source.full) return source.full.slice(offset, offset + length);\r\n const rangeStart = (source.baseOffset || 0) + offset;\r\n const response = await fetch(source.url, /* alloc */ {\r\n headers: /* alloc */ { Range: `bytes=${rangeStart}-${rangeStart + length - 1}` }, signal,\r\n });\r\n if (!response.ok) throw /* alloc */ new Error(`Unable to read COG: HTTP ${response.status}`);\r\n validateCogResponse(source, response, rangeStart, length);\r\n const data = await readCogBody(response, length);\r\n if (response.status === 200) {\r\n if (source.baseOffset === undefined) source.size = data.byteLength;\r\n else if (data.byteLength !== source.containerSize) throw /* alloc */ new Error('Truncated PMTiles COG container');\r\n source.full = source.baseOffset === undefined ? data.buffer\r\n : data.slice(source.baseOffset, source.baseOffset + source.size);\r\n }\r\n const result = response.status === 200 ? source.full.slice(offset, offset + length) : data.buffer;\r\n if (result.byteLength !== length) throw /* alloc */ new Error('Truncated COG byte range');\r\n return result;\r\n}\r\n", "export const cogTags = [256, 257, 258, 259, 262, 277, 284, 317, 322, 323, 324, 325, 339, 33550, 33922, 34735];\r\n", "import { readCog } from './readCog.js';\r\n\r\nexport async function readCogTag(source, entries, i, tag, little) {\r\n const type = entries.getUint16(i * 12 + 2, little);\r\n const size = type === 3 ? 2 : type === 4 ? 4 : type === 12 ? 8 : 0;\r\n const length = entries.getUint32(i * 12 + 4, little);\r\n if (!size || !length || length > 1048576) throw /* alloc */ new Error(`Unsupported COG tag ${tag}`);\r\n const data = size * length <= 4 ? /* alloc */ new DataView(entries.buffer, i * 12 + 8, 4)\r\n : /* alloc */ new DataView(await readCog(source, entries.getUint32(i * 12 + 8, little), size * length));\r\n const values = /* alloc */ [];\r\n let j;\r\n for (j = 0; j < length; j++) values.push(type === 3 ? data.getUint16(j * size, little)\r\n : type === 4 ? data.getUint32(j * size, little) : data.getFloat64(j * size, little));\r\n return values;\r\n}\r\n", "import { readCog } from './readCog.js';\r\nimport { cogTags } from '../globals/cogTags.js';\r\nimport { readCogTag } from './readCogTag.js';\r\n\r\nexport async function readCogDirectory(source, offset) {\r\n const little = source.little;\r\n const count = /* alloc */ new DataView(await readCog(source, offset, 2)).getUint16(0, little);\r\n if (!count || count > 128) throw /* alloc */ new Error('Invalid COG directory size');\r\n const entries = /* alloc */ new DataView(await readCog(source, offset + 2, count * 12 + 4));\r\n const tags = /* alloc */ new Map();\r\n let i, tag;\r\n for (i = 0; i < count; i++) {\r\n tag = entries.getUint16(i * 12, little);\r\n if (tag === 42113) throw /* alloc */ new Error('COG nodata tags are not supported; export complete tiles');\r\n if (tag === 34264) throw /* alloc */ new Error('COG affine transformation matrices are not supported');\r\n if (!cogTags.includes(tag)) continue;\r\n if (tags.has(tag)) throw /* alloc */ new Error('Duplicate COG tag');\r\n tags.set(tag, await readCogTag(source, entries, i, tag, little));\r\n }\r\n return /* alloc */ { tags, next: entries.getUint32(count * 12, little) };\r\n}\r\n", "export function validCogDimensions(tags, width, height) {\r\n return !!width && !!height && width % 256 === 0 && height % 256 === 0 &&\r\n tags.get(322)?.[0] === 256 && tags.get(323)?.[0] === 256 &&\r\n (tags.get(259)?.[0] === 1 || tags.get(259)?.[0] === 8) &&\r\n (tags.get(284)?.[0] ?? 1) === 1 && (tags.get(317)?.[0] ?? 1) === 1;\r\n}\r\n", "export function validCogEncoding(tags, samples, bits, format, elevation, bytes, unsigned) {\r\n if (elevation) return tags.get(262)?.[0] === 1;\r\n return (samples === 3 || samples === 4) && bits?.length === samples && bytes && unsigned &&\r\n tags.get(262)?.[0] === 2;\r\n}\r\n", "import { validCogDimensions } from './validCogDimensions.js';\r\nimport { validCogEncoding } from './validCogEncoding.js';\r\n\r\nexport function getCogProfile(tags) {\r\n const width = tags.get(256)?.[0], height = tags.get(257)?.[0], samples = tags.get(277)?.[0] ?? 1;\r\n const bits = tags.get(258), format = tags.get(339) || /* alloc */ [1];\r\n let bytes = true, unsigned = true, floating = true, value;\r\n for (value of bits || /* alloc */ []) bytes &&= value === 8;\r\n for (value of format) { unsigned &&= value === 1; floating &&= value === 3; }\r\n const elevation = samples === 1 && bits?.length === 1 && bits[0] === 32 && floating;\r\n if (!validCogDimensions(tags, width, height) ||\r\n !validCogEncoding(tags, samples, bits, format, elevation, bytes, unsigned)) {\r\n throw /* alloc */ new Error('Unsupported COG profile: expected tiled 256px RGB(A) Uint8 or Float32, DEFLATE without predictor');\r\n }\r\n return /* alloc */ { width, height, samples, elevation };\r\n}\r\n", "export function hasCogProjection(keys) {\r\n let projected = false, area = false, i;\r\n if (keys) for (i = 4; i < keys.length; i += 4) {\r\n if (keys[i + 1] !== 0 || keys[i + 2] !== 1) continue;\r\n if (keys[i] === 3072 && keys[i + 3] === 3857) projected = true;\r\n if (keys[i] === 1025 && keys[i + 3] === 1) area = true;\r\n }\r\n return projected && area;\r\n}\r\n", "export function finiteCogValues(values) {\r\n let value;\r\n for (value of values || /* alloc */ []) if (!Number.isFinite(value)) return false;\r\n return true;\r\n}\r\n", "import { finiteCogValues } from './finiteCogValues.js';\r\n\r\nexport function validCogGeoArrays(keys, scale, tie) {\r\n return !!keys && keys[0] === 1 && keys.length === 4 + keys[3] * 4 &&\r\n !!scale && scale.length === 3 && finiteCogValues(scale) &&\r\n scale[0] > 0 && Math.abs(scale[0] - scale[1]) <= 1e-8 &&\r\n !!tie && tie.length === 6 && finiteCogValues(tie) && tie[0] === 0 && tie[1] === 0;\r\n}\r\n", "import { hasCogProjection } from './hasCogProjection.js';\r\nimport { validCogGeoArrays } from './validCogGeoArrays.js';\r\n\r\nexport function getCogBase(tags, width, height, elevation) {\r\n const keys = tags.get(34735), scale = tags.get(33550), tie = tags.get(33922);\r\n if (!validCogGeoArrays(keys, scale, tie) || !hasCogProjection(keys)) {\r\n throw /* alloc */ new Error('COG must use north-up EPSG:3857 PixelIsArea georeferencing');\r\n }\r\n return /* alloc */ { width, height, resolution: scale[0], left: tie[3], top: tie[4], elevation };\r\n}\r\n", "export function validCogGrid(source, base, profile, zoom, x, y, resolution) {\r\n return zoom >= 0 && zoom <= 24 &&\r\n Math.abs(20037508.342789244 * 2 / (256 * 2 ** zoom) - resolution) <= resolution * 1e-7 &&\r\n (!profile.elevation || Number.isInteger(x) && Number.isInteger(y)) &&\r\n Math.abs(base.width / profile.width - base.height / profile.height) <= 1e-7 &&\r\n profile.elevation === base.elevation &&\r\n x >= 0 && y >= 0 && x + profile.width / 256 <= 2 ** zoom && y + profile.height / 256 <= 2 ** zoom &&\r\n !source.levels.has(zoom) && !(base.elevation && source.levels.size);\r\n}\r\n", "export function validateCogOffsets(source, level) {\r\n if (level.offsets?.length !== level.columns * level.rows || level.lengths?.length !== level.offsets.length) {\r\n throw /* alloc */ new Error('Invalid COG tile offsets or lengths');\r\n }\r\n let i;\r\n for (i = 0; i < level.offsets.length; i++) {\r\n if (!level.offsets[i] || !level.lengths[i] || level.lengths[i] > 1048576 ||\r\n level.offsets[i] + level.lengths[i] > source.size) throw /* alloc */ new Error('Invalid COG tile offsets or lengths');\r\n }\r\n}\r\n", "import { getCogProfile } from './getCogProfile.js';\r\nimport { getCogBase } from './getCogBase.js';\r\nimport { validCogGrid } from './validCogGrid.js';\r\nimport { validateCogOffsets } from './validateCogOffsets.js';\r\n\r\nexport function readCogLevel(source, directory, state) {\r\n const tags = directory.tags, profile = getCogProfile(tags);\r\n if (!state.base) state.base = getCogBase(tags, profile.width, profile.height, profile.elevation);\r\n const base = state.base, resolution = base.resolution * base.width / profile.width;\r\n const zoom = Math.round(Math.log2(20037508.342789244 * 2 / (256 * resolution)));\r\n const span = 20037508.342789244 * 2 / 2 ** zoom;\r\n let x = (base.left + 20037508.342789244) / span;\r\n let y = (20037508.342789244 - base.top) / span;\r\n if (Math.abs(x - Math.round(x)) < 1e-6) x = Math.round(x);\r\n if (Math.abs(y - Math.round(y)) < 1e-6) y = Math.round(y);\r\n if (!validCogGrid(source, base, profile, zoom, x, y, resolution)) {\r\n throw /* alloc */ new Error('COG levels must align with the Web Mercator XYZ tile grid');\r\n }\r\n const level = /* alloc */ {\r\n x, y, columns: profile.width / 256, rows: profile.height / 256, samples: profile.samples,\r\n elevation: profile.elevation, compression: tags.get(259)[0], offsets: tags.get(324), lengths: tags.get(325),\r\n };\r\n validateCogOffsets(source, level);\r\n source.levels.set(zoom, level);\r\n state.minZoom = Math.min(state.minZoom, zoom);\r\n state.maxZoom = Math.max(state.maxZoom, zoom);\r\n}\r\n", "import { readCogDirectory } from './readCogDirectory.js';\r\nimport { readCogLevel } from './readCogLevel.js';\r\n\r\nexport async function readCogDirectories(source, offset) {\r\n const state = /* alloc */ { base: null, minZoom: Infinity, maxZoom: -Infinity };\r\n const seen = /* alloc */ new Set();\r\n let directory;\r\n while (offset) {\r\n if (seen.has(offset) || seen.size >= 24) throw /* alloc */ new Error('Cyclic or excessive COG directories');\r\n seen.add(offset);\r\n directory = await readCogDirectory(source, offset);\r\n readCogLevel(source, directory, state);\r\n offset = directory.next;\r\n }\r\n if (!state.base) throw /* alloc */ new Error('COG has no image directory');\r\n if (source.levels.size !== state.maxZoom - state.minZoom + 1) {\r\n throw /* alloc */ new Error('COG overview zooms must be contiguous');\r\n }\r\n return /* alloc */ { base: state.base, minZoom: state.minZoom, maxZoom: state.maxZoom };\r\n}\r\n", "export async function decodeCogTile(data, length, compression) {\r\n if (compression === 1) {\r\n if (data.byteLength !== length) throw /* alloc */ new Error('Invalid uncompressed COG tile size');\r\n return data;\r\n }\r\n const stream = /* alloc */ new Blob(/* alloc */ [data]).stream()\r\n .pipeThrough(/* alloc */ new DecompressionStream('deflate'));\r\n const reader = stream.getReader(), result = /* alloc */ new Uint8Array(length);\r\n let offset = 0, chunk;\r\n try {\r\n while (!(chunk = await reader.read()).done) {\r\n if (offset + chunk.value.length > length) {\r\n await reader.cancel();\r\n throw /* alloc */ new Error('Oversized decoded COG tile');\r\n }\r\n result.set(chunk.value, offset);\r\n offset += chunk.value.length;\r\n }\r\n } finally {\r\n reader.releaseLock();\r\n }\r\n if (offset !== length) throw /* alloc */ new Error('Truncated decoded COG tile');\r\n return result.buffer;\r\n}\r\n", "import { readCog } from './readCog.js';\r\nimport { decodeCogTile } from './decodeCogTile.js';\r\n\r\nexport async function readCogBlock(source, level, x, y, signal) {\r\n const index = y * level.columns + x;\r\n return decodeCogTile(await readCog(source, level.offsets[index], level.lengths[index], signal),\r\n 256 * 256 * (level.elevation ? 4 : level.samples), level.compression);\r\n}\r\n", "import { readCogBlock } from './readCogBlock.js';\r\n\r\nexport async function getElevationTile(source, level, x, y, signal) {\r\n const data = await readCogBlock(source, level, x - level.x, y - level.y, signal);\r\n signal?.throwIfAborted();\r\n const view = /* alloc */ new DataView(data), heights = /* alloc */ new Float32Array(256 * 256);\r\n let i, height;\r\n for (i = 0; i < heights.length; i++) {\r\n height = view.getFloat32(i * 4, source.little);\r\n if (!Number.isFinite(height) || height < -12000 || height > 10000) {\r\n throw /* alloc */ new Error('Invalid or missing COG elevation sample');\r\n }\r\n heights[i] = height;\r\n }\r\n return /* alloc */ { data: heights.buffer };\r\n}\r\n", "import { readCogBlock } from './readCogBlock.js';\r\n\r\nexport async function getColorTile(source, level, x, y, signal) {\r\n const canvas = /* alloc */ new OffscreenCanvas(256, 256), context = canvas.getContext('2d');\r\n if (!context) throw /* alloc */ new Error('Unable to create COG tile canvas');\r\n const left = (x - level.x) * 256, top = (y - level.y) * 256;\r\n let bx, by, pixels, rgba, i, j, bitmap;\r\n for (by = Math.max(0, Math.floor(top / 256)); by < Math.min(level.rows, Math.ceil(top / 256 + 1)); by++) {\r\n for (bx = Math.max(0, Math.floor(left / 256)); bx < Math.min(level.columns, Math.ceil(left / 256 + 1)); bx++) {\r\n pixels = /* alloc */ new Uint8Array(await readCogBlock(source, level, bx, by, signal));\r\n signal?.throwIfAborted();\r\n rgba = /* alloc */ new Uint8ClampedArray(256 * 256 * 4);\r\n for (i = 0, j = 0; i < pixels.length; i += level.samples, j += 4) {\r\n rgba[j] = pixels[i]; rgba[j + 1] = pixels[i + 1]; rgba[j + 2] = pixels[i + 2];\r\n rgba[j + 3] = level.samples === 4 ? pixels[i + 3] : 255;\r\n }\r\n bitmap = await createImageBitmap(/* alloc */ new ImageData(rgba, 256, 256));\r\n context.drawImage(bitmap, bx * 256 - left, by * 256 - top);\r\n bitmap.close();\r\n }\r\n }\r\n const image = canvas.transferToImageBitmap();\r\n if (signal?.aborted) { image.close(); signal.throwIfAborted(); }\r\n return /* alloc */ { image };\r\n}\r\n", "export function validCogTileCoordinates(z, x, y) {\r\n return Number.isSafeInteger(z) && Number.isSafeInteger(x) && Number.isSafeInteger(y) &&\r\n z >= 0 && z <= 24 && x >= 0 && y >= 0 && x < 2 ** z && y < 2 ** z;\r\n}\r\n", "import { getElevationTile } from './getElevationTile.js';\r\nimport { getColorTile } from './getColorTile.js';\r\nimport { validCogTileCoordinates } from './validCogTileCoordinates.js';\r\n\r\nexport async function getCogTile(source, z, x, y, signal) {\r\n signal?.throwIfAborted();\r\n if (!validCogTileCoordinates(z, x, y)) throw /* alloc */ new Error('Invalid COG tile coordinates');\r\n const level = source.levels.get(z);\r\n if (!level || x + 1 <= level.x || y + 1 <= level.y || x >= level.x + level.columns || y >= level.y + level.rows) return;\r\n if (level.elevation) return getElevationTile(source, level, x, y, signal);\r\n return getColorTile(source, level, x, y, signal);\r\n}\r\n", "export function getCogHeader(source) {\r\n return source.header;\r\n}\r\n", "export function validateCogContainer(container, header) {\r\n if (header.tileType !== 0 || header.tileCompression !== 1 ||\r\n !Number.isSafeInteger(header.jsonMetadataOffset) || !Number.isSafeInteger(header.jsonMetadataLength) ||\r\n header.jsonMetadataLength <= 0 || header.jsonMetadataLength > 1048576 ||\r\n !Number.isSafeInteger(header.tileDataOffset) || !Number.isSafeInteger(header.tileDataLength) ||\r\n header.tileDataOffset < 127 || header.tileDataOffset + header.tileDataLength > container.size) {\r\n throw /* alloc */ new Error('Invalid PMTiles COG asset container');\r\n }\r\n}\r\n", "import { decompress } from '../archives/decompress.js';\r\nimport { readCog } from './readCog.js';\r\n\r\nexport async function getCogAssetEntry(container, header, asset) {\r\n const metadata = JSON.parse(/* alloc */ new TextDecoder().decode(await decompress(\r\n await readCog(container, header.jsonMetadataOffset, header.jsonMetadataLength), header.internalCompression)));\r\n const assets = metadata.cog_assets || /* alloc */ {};\r\n const entry = Object.hasOwn(assets, asset) ? metadata.cog_assets[asset] : null;\r\n if (metadata.format !== 'cog-assets-v1' || !entry || !Number.isSafeInteger(entry.offset) ||\r\n !Number.isSafeInteger(entry.length) || entry.offset < 0 || entry.length < 8 ||\r\n entry.offset + entry.length > header.tileDataLength) {\r\n throw /* alloc */ new Error(`Invalid or missing PMTiles COG asset: ${asset}`);\r\n }\r\n return entry;\r\n}\r\n", "import { decodeHeader } from '../archives/decodeHeader.js';\r\nimport { readCog } from './readCog.js';\r\nimport { validateCogContainer } from './validateCogContainer.js';\r\nimport { getCogAssetEntry } from './getCogAssetEntry.js';\r\n\r\nexport async function openCogAsset(url, asset) {\r\n const container = /* alloc */ { url };\r\n const header = decodeHeader(await readCog(container, 0, 127));\r\n validateCogContainer(container, header);\r\n const entry = await getCogAssetEntry(container, header, asset);\r\n const baseOffset = header.tileDataOffset + entry.offset;\r\n return /* alloc */ { url, baseOffset, size: entry.length, containerSize: container.size,\r\n etag: container.etag, full: container.full?.slice(baseOffset, baseOffset + entry.length) };\r\n}\r\n", "import { readCog } from './readCog.js';\r\nimport { readCogDirectories } from './readCogDirectories.js';\r\nimport { getCogTile } from './getCogTile.js';\r\nimport { getCogHeader } from './getCogHeader.js';\r\nimport { openCogAsset } from './openCogAsset.js';\r\n\r\n/** EPSG:3857 COGs, standalone or named assets in a PMTiles container. */\r\nexport async function openCog(url, asset) {\r\n const source = asset === undefined ? /* alloc */ { url } : await openCogAsset(url, asset);\r\n source.levels = /* alloc */ new Map();\r\n const header = /* alloc */ new DataView(await readCog(source, 0, 8));\r\n const order = header.getUint16(0);\r\n if (order !== 0x4949 && order !== 0x4d4d) throw /* alloc */ new Error('Invalid TIFF byte order');\r\n source.little = order === 0x4949;\r\n if (header.getUint16(2, source.little) !== 42) throw /* alloc */ new Error('Expected classic TIFF (BigTIFF is not supported)');\r\n const { base, minZoom, maxZoom } = await readCogDirectories(source, header.getUint32(4, source.little));\r\n const half = 20037508.342789244;\r\n const left = base.left + base.resolution / 2, right = base.left + (base.width - 0.5) * base.resolution;\r\n const top = base.top - base.resolution / 2, bottom = base.top - (base.height - 0.5) * base.resolution;\r\n source.header = /* alloc */ {\r\n minZoom, maxZoom, tileType: base.elevation ? 0 : 2,\r\n minLon: left / half * 180, maxLon: right / half * 180,\r\n minLat: Math.atan(Math.sinh(bottom / half * Math.PI)) * 180 / Math.PI,\r\n maxLat: Math.atan(Math.sinh(top / half * Math.PI)) * 180 / Math.PI,\r\n };\r\n return /* alloc */ {\r\n getHeader: getCogHeader.bind(null, source),\r\n getZxy: getCogTile.bind(null, source),\r\n };\r\n}\r\n", "import { initRaster } from '../raster/initRaster.js';\r\nimport { openCog } from './openCog.js';\r\n\r\nexport function initCog(layer, options) {\r\n initRaster(layer, /* alloc */ { ariaLabel: 'COG raster', ...options,\r\n archive: options.archive || openCog(/* alloc */ new URL(options.url, document.baseURI).href, options.asset) });\r\n}\r\n", "import { initializeGeoJSON } from '../sources/initializeGeoJSON.js';\nimport { initRaster } from '../raster/initRaster.js';\nimport { initTerrain } from '../terrain/initTerrain.js';\nimport { initTraffic } from '../traffic/initTraffic.js';\nimport { initCog } from '../cog/initCog.js';\n\nexport function initializerFor(type) {\n switch (type) {\n case 'geojson': return initializeGeoJSON;\n case 'pmtiles': return initRaster;\n case 'cog': return initCog;\n case 'terrain': return initTerrain;\n case 'traffic': return initTraffic;\n default: return null;\n }\n}\n", "import { pendingInitializations } from '../globals/pendingInitializations.js';\n\n\nimport { initializerFor } from './initializerFor.js';\n\nexport function resolveNextInitialization() {\n const task = pendingInitializations.shift();\n task.initialize = initializerFor(task.type);\n if (!task.initialize) {\n task.error = /* alloc */ new Error(`Unknown layer type: ${task.type}`);\n }\n return task;\n}\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { reportError } from './reportError.js';\n\n\nexport function initializeLayer(task) {\n const { layer, ready } = task;\n if (task.error) {\n reportError(layer, task.error);\n return Promise.reject(task.error);\n }\n try {\n const map = layer._map;\n map?.removeLayer(layer);\n delete sceneByLayer.get(layer).kind;\n task.initialize(layer, task.settings);\n map?.addLayer(layer);\n return sceneByLayer.get(layer).ready === ready ? layer : sceneByLayer.get(layer).ready;\n } catch (error) {\n layer.fire('error', /* alloc */ { error });\n throw error;\n }\n}\n", "import { L } from '../globals/L.js';\nimport { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { removeLayer as sharedRemoveLayer } from '../globals/removeLayer.js';\n\r\nimport { removeSceneLayer } from '../scene/removeSceneLayer.js';\r\n\r\n\r\n\r\nexport function removeLayer(layer) {\r\n const id = L.Util.stamp(layer);\r\n if (!this._layers[id]) return this;\r\n const state = sceneByLayer.get(layer);\r\n if (!state.kind) return sharedRemoveLayer.value.call(this, layer);\r\n if (this._loaded) removeSceneLayer(layer, this);\r\n delete this._layers[id];\r\n if (this._loaded) {\r\n this.fire('layerremove', /* alloc */ { layer });\r\n layer.fire('remove');\r\n }\r\n layer._map = layer._mapToAdd = null;\r\n return this;\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\n\r\nimport { onRemove3DLayer } from './onRemove3DLayer.js';\r\nimport { onPMTileRemove } from '../raster/onPMTileRemove.js';\r\nimport { onTerrainRemove } from '../terrain/onTerrainRemove.js';\r\nimport { removeTimeLayer } from '../sunlight/removeTimeLayer.js';\r\n\r\nexport function removeSceneLayer(layer, map) {\r\n switch (sceneByLayer.get(layer).kind) {\r\n case '3d': return onRemove3DLayer(layer, map);\r\n case 'raster': return onPMTileRemove(layer, map);\r\n case 'terrain': return onTerrainRemove(layer, map);\r\n case 'time': return removeTimeLayer.call(layer, map);\r\n }\r\n}\r\n", "import { mapGetPitch } from './mapGetPitch.js';\r\n\r\nexport function getPitch() {\r\n return mapGetPitch(this);\r\n}\r\n", "import { mapGetBearing } from './mapGetBearing.js';\r\n\r\nexport function getBearing() {\r\n return mapGetBearing(this);\r\n}\r\n", "import { refreshNativeLayerContract } from './refreshNativeLayerContract.js';\r\n\r\nexport function markerSetRotation(marker, rotation) {\r\n if (!Number.isFinite(rotation)) throw /* alloc */ new TypeError('Marker rotation must be finite');\r\n marker.options.rotation = rotation;\r\n marker.update();\r\n refreshNativeLayerContract(marker);\r\n return marker;\r\n}\r\n", "import { markerSetRotation } from './markerSetRotation.js';\r\n\r\nexport function setRotation(rotation) {\r\n return markerSetRotation(this, rotation);\r\n}\r\n", "import { sceneByLayer } from '../globals/sceneByLayer.js';\nimport { layerCallInitHooks as sharedLayerCallInitHooks } from '../globals/layerCallInitHooks.js';\n\r\n\r\nimport { initializeNativeLayer } from './initializeNativeLayer.js';\r\n\r\nexport function layerCallInitHooks() {\r\n if (!sceneByLayer.has(this)) {\r\n sceneByLayer.set(this, /* alloc */ {});\r\n }\r\n const initialized = this._initHooksCalled;\r\n sharedLayerCallInitHooks.value.call(this);\r\n if (!initialized) initializeNativeLayer.call(this);\r\n}\r\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["start", "step", "start", "local", "loading", "shadowBounds", "shadowBounds", "parts", "current", "elevationWGSL", "elevationWGSL", "pipelineLayout", "ring", "start", "ring", "start", "ring", "area", "ring", "ring", "ring", "polygon", "polygon", "polygon", "polygon", "triangle", "ring", "triangle", "polygon", "ring", "start", "start", "collectVisibleMesh", "collectVisibleMesh", "v", "u", "screen", "screen", "y", "inside", "cameraControls", "screen", "screen", "speed", "screen", "addTriangle", "addTriangle", "addTriangle", "ring", "addTriangle", "ring", "addTriangle", "ring", "area", "tileId", "area", "ring", "ring", "area", "polygon", "start", "area", "area", "area", "area", "area", "tooltip", "area", "area", "hit", "area", "area", "collectMeshes", "collectMeshes", "textureFor", "textureFor", "loading", "area", "start", "start", "update", "reportError", "reportError", "start", "ring", "triangle", "start", "ring", "polygon", "ring", "updateSky", "render", "updateSky", "render", "updateSky", "render", "updateSky", "updateSky", "render", "parts", "parts", "triangle", "parts", "ring", "triangle", "parts", "parts", "start", "start", "rgb", "line", "local", "local", "local", "hit", "collectVisibleMesh", "local", "local", "speed", "initialize", "onAdd", "initialize", "onAdd", "start", "area", "removeLayer", "layerCallInitHooks", "layerCallInitHooks", "removeLayer"]
|
|
7
|
+
}
|