leaflet-city-mapper 0.0.2 → 0.0.3
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 +49 -3
- package/cucumber.mjs +1 -1
- package/dist/leaflet-city-mapper.js +3 -1
- package/dist/leaflet-city-mapper.js.map +4 -4
- package/package.json +2 -1
- package/src/archives/decodeDirectory.js +32 -0
- package/src/archives/decodeHeader.js +19 -0
- package/src/archives/getZxy.js +75 -0
- package/src/archives/loadDirectory.js +7 -0
- package/src/archives/tileId.js +19 -0
- package/src/archives/varint.js +15 -0
- package/src/camera/angles.js +6 -0
- package/src/camera/animationPoint.js +8 -0
- package/src/camera/cameraMapReady.js +8 -0
- package/src/camera/cancelCameraAnimation.js +11 -0
- package/src/camera/cleanupCameraMap.js +11 -0
- package/src/camera/constrainCameraToBounds.js +3 -0
- package/src/camera/displayPoint.js +3 -0
- package/src/camera/fitCameraBounds.js +48 -0
- package/src/camera/groundBounds.js +11 -0
- package/src/camera/initializeCameraMap.js +25 -0
- package/src/camera/mapAnimateCamera.js +17 -0
- package/src/camera/mapCamera.js +123 -0
- package/src/camera/mapContainerPointToLayerPoint.js +7 -0
- package/src/camera/mapGetBearing.js +1 -0
- package/src/camera/mapGetBounds.js +14 -0
- package/src/camera/mapGetBoundsCenterZoom.js +7 -0
- package/src/camera/mapGetBoundsZoom.js +14 -0
- package/src/camera/mapGetCenterLayerPoint.js +5 -0
- package/src/camera/mapGetPitch.js +1 -0
- package/src/camera/mapLayerPointToContainerPoint.js +7 -0
- package/src/camera/mapLimitCenter.js +12 -0
- package/src/camera/mapLimitOffset.js +10 -0
- package/src/camera/mapPanBy.js +9 -0
- package/src/camera/mapPanInside.js +14 -0
- package/src/camera/mapResetNorth.js +1 -0
- package/src/camera/mapResetNorthPitch.js +1 -0
- package/src/camera/mapSetBearing.js +1 -0
- package/src/camera/mapSetPitch.js +1 -0
- package/src/camera/mapSetPitchAndBearing.js +14 -0
- package/src/camera/mapSetZoomAround.js +11 -0
- package/src/camera/mapStopPitchBearingAnimation.js +6 -0
- package/src/camera/mapTryAnimatedPan.js +9 -0
- package/src/camera/mapUpdateCameraOverlays.js +7 -0
- package/src/camera/pointOf.js +3 -0
- package/src/camera/project.js +20 -0
- package/src/camera/runCameraAnimations.js +28 -0
- package/src/camera/scheduleCameraAnimation.js +8 -0
- package/src/camera/updateSky.js +16 -0
- package/src/camera/verticalGroundY.js +4 -0
- package/src/collision/collectMeshes.js +5 -0
- package/src/collision/collider.js +63 -0
- package/src/collision/intersectMeshes.js +133 -0
- package/src/collision/sortHits.js +23 -0
- package/src/constants/Compass.js +7 -0
- package/src/constants/ContainerResize.js +7 -0
- package/src/constants/HEIGHT.js +1 -0
- package/src/constants/PitchDrag.js +7 -0
- package/src/constants/ShiftRotate.js +7 -0
- package/src/constants/TILE_RADIUS.js +1 -0
- package/src/constants/TILE_SIZE.js +1 -0
- package/src/constants/TouchMode.js +6 -0
- package/src/constants/attachState.js +1 -0
- package/src/constants/cameraControlsState.js +1 -0
- package/src/constants/cityMapper.js +6 -0
- package/src/constants/dark.js +1 -0
- package/src/constants/elevationWGSL.js +27 -0
- package/src/constants/glass.js +1 -0
- package/src/constants/indexState.js +1 -0
- package/src/constants/mapCameraState.js +1 -0
- package/src/constants/nativeEventMaps.js +1 -0
- package/src/constants/nativeLayerState.js +1 -0
- package/src/constants/nativeMethodHandlers.js +31 -0
- package/src/constants/onMapChangeState.js +1 -0
- package/src/constants/onZoomAnimState.js +1 -0
- package/src/constants/parts.js +19 -0
- package/src/constants/pendingUpdates.js +1 -0
- package/src/constants/pumpState.js +1 -0
- package/src/constants/ringDirections.js +10 -0
- package/src/constants/roundProfile.js +1 -0
- package/src/constants/shirt.js +1 -0
- package/src/constants/skin.js +2 -0
- package/src/constants/trafficShader.js +49 -0
- package/src/constants/trousers.js +1 -0
- package/src/constants/tyre.js +1 -0
- package/src/constants/underEntryState.js +1 -0
- package/src/constants/vehicles.js +40 -0
- package/src/controls/acceptPitchDrag.js +4 -0
- package/src/controls/acceptRotateDrag.js +3 -0
- package/src/controls/adjustCameraDrag.js +10 -0
- package/src/controls/cameraControls.js +60 -0
- package/src/controls/cameraDragClick.js +9 -0
- package/src/controls/cameraDragContextMenu.js +8 -0
- package/src/controls/cameraDragDown.js +20 -0
- package/src/controls/cameraDragEnd.js +6 -0
- package/src/controls/cameraDragMove.js +23 -0
- package/src/controls/changeCameraTouch.js +14 -0
- package/src/controls/cleanupCameraTouch.js +24 -0
- package/src/controls/compassAddHooks.js +15 -0
- package/src/controls/compassOrientation.js +6 -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 +22 -0
- package/src/controls/editable.js +3 -0
- package/src/controls/endAllCameraDrags.js +7 -0
- package/src/controls/endAllCameraTouches.js +7 -0
- package/src/controls/endCameraTouch.js +11 -0
- package/src/controls/endCameraTouchEvent.js +5 -0
- package/src/controls/finishCameraDrag.js +9 -0
- package/src/controls/finishCompassPermission.js +16 -0
- package/src/controls/loadCameraControls.js +9 -0
- package/src/controls/moveCameraTouch.js +22 -0
- package/src/controls/notifyCameraTouchChange.js +1 -0
- package/src/controls/pitchDragAddHooks.js +6 -0
- package/src/controls/pitchDragRemoveHooks.js +5 -0
- package/src/controls/refreshRotateControl.js +7 -0
- package/src/controls/refreshRotateFocus.js +5 -0
- package/src/controls/removeCameraDrag.js +23 -0
- package/src/controls/resizeMap.js +3 -0
- package/src/controls/rotateButtonClick.js +7 -0
- package/src/controls/rotateButtonKeydown.js +11 -0
- package/src/controls/rotateControl.js +3 -0
- package/src/controls/rotateOnAdd.js +38 -0
- package/src/controls/rotateOnRemove.js +6 -0
- package/src/controls/shiftRotateAddHooks.js +8 -0
- package/src/controls/shiftRotateRemoveHooks.js +5 -0
- package/src/controls/shiftRotateWheel.js +9 -0
- package/src/controls/startCameraTouch.js +23 -0
- package/src/core/addImageState.js +7 -0
- package/src/core/addRasterImage.js +10 -0
- package/src/core/adjustCameraMarkerPan.js +22 -0
- package/src/core/beforeNativeRender.js +10 -0
- package/src/core/boundsQuad.js +11 -0
- package/src/core/bringNativeLayerToBack.js +3 -0
- package/src/core/bringNativeLayerToFront.js +3 -0
- package/src/core/cameraCircleBounds.js +6 -0
- package/src/core/cameraMarkerDrag.js +18 -0
- package/src/core/cameraMarkerOnDrag.js +8 -0
- package/src/core/cancelGridFade.js +10 -0
- package/src/core/closestCameraLayerPoint.js +7 -0
- package/src/core/compareNativeHits.js +3 -0
- package/src/core/current.js +3 -0
- package/src/core/disposeNativeLayer.js +35 -0
- package/src/core/fireRasterLoad.js +5 -0
- package/src/core/forwardNativeError.js +3 -0
- package/src/core/gridlayerGetEvents.js +7 -0
- package/src/core/gridlayerGetTiledPixelBounds.js +8 -0
- package/src/core/handleNativeMapEvent.js +47 -0
- package/src/core/hideTargets.js +16 -0
- package/src/core/initNativeGPU.js +21 -0
- package/src/core/initializeGridContainer.js +6 -0
- package/src/core/initializeNativeLayer.js +42 -0
- package/src/core/localPixel.js +5 -0
- package/src/core/localPixelForGeometry.js +6 -0
- package/src/core/localPosition.js +6 -0
- package/src/core/markerCameraIconPoint.js +9 -0
- package/src/core/markerGetEvents.js +5 -0
- package/src/core/markerInitInteraction.js +8 -0
- package/src/core/markerQuadCorners.js +31 -0
- package/src/core/markerSetIcon.js +9 -0
- package/src/core/markerSetPos.js +14 -0
- package/src/core/markerSetRotation.js +7 -0
- package/src/core/markerUpdateZIndex.js +8 -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/nativeEvents.js +26 -0
- package/src/core/nativeImageError.js +8 -0
- package/src/core/nativeImageRefresh.js +7 -0
- package/src/core/nativeLayer.js +97 -0
- package/src/core/nativeLayerMethod.js +21 -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 +23 -0
- package/src/core/popupGetEvents.js +5 -0
- package/src/core/popupUpdatePosition.js +14 -0
- package/src/core/putNativeMesh.js +33 -0
- package/src/core/quadNativeMesh.js +15 -0
- package/src/core/readyNativeGPU.js +6 -0
- package/src/core/refreshNativeEvent.js +5 -0
- package/src/core/refreshNativeLayer.js +29 -0
- package/src/core/refreshNativeLayerContract.js +3 -0
- package/src/core/rejectNativeReady.js +3 -0
- package/src/core/removeImageState.js +8 -0
- package/src/core/removeNativeEvents.js +16 -0
- package/src/core/removeTargets.js +8 -0
- package/src/core/reorderNativeLayer.js +6 -0
- package/src/core/resolveNativeReady.js +3 -0
- package/src/core/restoreNativeEvents.js +6 -0
- package/src/core/runGridFades.js +14 -0
- package/src/core/runMarkerPanFrame.js +12 -0
- package/src/core/scheduleGridFade.js +9 -0
- package/src/core/scheduleMarkerPan.js +8 -0
- package/src/core/styleNativeMesh.js +10 -0
- package/src/core/syncGridLayer.js +22 -0
- package/src/core/syncImageOverlay.js +9 -0
- package/src/core/syncMarker.js +12 -0
- package/src/core/syncVectorLayer.js +26 -0
- package/src/core/synchronizeNativeLayer.js +35 -0
- package/src/core/textureFor.js +48 -0
- package/src/core/tooltipGetEvents.js +5 -0
- package/src/core/tooltipSetPosition.js +8 -0
- package/src/core/updateGridOpacity.js +23 -0
- package/src/core/updateNativeLayerView.js +6 -0
- package/src/core/uploadCanvasTexture.js +19 -0
- package/src/geometry/addBridges.js +88 -0
- package/src/geometry/below.js +3 -0
- package/src/geometry/box.js +3 -0
- package/src/geometry/bridgeElevation.js +19 -0
- package/src/geometry/bridgeLocal.js +4 -0
- package/src/geometry/build.js +19 -0
- package/src/geometry/circleAt.js +5 -0
- package/src/geometry/clipLine.js +23 -0
- package/src/geometry/clipSegment.js +19 -0
- package/src/geometry/computeBounds.js +33 -0
- package/src/geometry/conformModelToTerrain.js +67 -0
- package/src/geometry/cross.js +3 -0
- package/src/geometry/disk.js +11 -0
- package/src/geometry/diskAt.js +4 -0
- package/src/geometry/dot.js +6 -0
- package/src/geometry/emitter.js +8 -0
- package/src/geometry/lampPostGeometry.js +24 -0
- package/src/geometry/lampRing.js +11 -0
- package/src/geometry/lightGeometry.js +15 -0
- package/src/geometry/line.js +54 -0
- package/src/geometry/nativeGeometry.js +55 -0
- package/src/geometry/nativeTriangle.js +3 -0
- package/src/geometry/polygon.js +22 -0
- package/src/geometry/push.js +3 -0
- package/src/geometry/quad.js +4 -0
- package/src/geometry/roofCoverage.js +52 -0
- package/src/geometry/samePoint.js +3 -0
- package/src/geometry/segment.js +21 -0
- package/src/geometry/setVertexColor.js +15 -0
- package/src/geometry/sub.js +6 -0
- package/src/geometry/surface.js +17 -0
- package/src/geometry/treeGeometry.js +31 -0
- package/src/geometry/treeRing.js +14 -0
- package/src/geometry/triangle.js +12 -0
- package/src/geometry/vertexNormals.js +32 -0
- package/src/geometry/visit.js +9 -0
- package/src/index.js +41 -323
- package/src/lighting/cacheLightGrid.js +23 -0
- package/src/lighting/collectLightMeshes.js +6 -0
- package/src/lighting/lightGrid.js +42 -0
- package/src/lighting/updatePointLights.js +34 -0
- package/src/lighting/visitCells.js +15 -0
- package/src/lighting/worldLights.js +27 -0
- package/src/models/decodeModel.js +45 -0
- package/src/models/hasUnsupportedPrimitives.js +10 -0
- package/src/models/loadBuffer.js +6 -0
- package/src/models/loadImage.js +15 -0
- package/src/models/loadModel.js +69 -0
- package/src/models/materialFor.js +21 -0
- package/src/models/modelNode.js +93 -0
- package/src/models/readAccessor.js +53 -0
- package/src/models/readAccessorValues.js +16 -0
- package/src/models/textureFor.js +35 -0
- package/src/picking/collectVisibleMesh.js +4 -0
- package/src/picking/findFeature.js +49 -0
- package/src/picking/hit.js +23 -0
- package/src/picking/hitMesh.js +30 -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 +59 -0
- package/src/picking/setHighlight.js +13 -0
- package/src/picking/shouldSkipOther.js +3 -0
- package/src/picking/showFeature.js +34 -0
- package/src/raster/addRasterTile.js +114 -0
- package/src/raster/comparePendingTiles.js +5 -0
- package/src/raster/createGeometry.js +22 -0
- package/src/raster/createRasterMesh.js +47 -0
- package/src/raster/finishAttachment.js +11 -0
- package/src/raster/finishRasterTile.js +47 -0
- package/src/raster/getRasterEvents.js +6 -0
- package/src/raster/getRasterTileSize.js +5 -0
- package/src/raster/initRaster.js +38 -0
- package/src/raster/isLoading.js +5 -0
- package/src/raster/loadRasterTile.js +10 -0
- package/src/raster/onPMTileAdd.js +10 -0
- package/src/raster/onPMTileRemove.js +8 -0
- package/src/raster/pruneRasterTiles.js +37 -0
- package/src/raster/pumpRasterTiles.js +22 -0
- package/src/raster/readyRaster.js +13 -0
- package/src/raster/registerTerrainTile.js +12 -0
- package/src/raster/releaseRasterTile.js +18 -0
- package/src/raster/releaseRasterTiles.js +15 -0
- package/src/raster/removeRasterTile.js +13 -0
- package/src/raster/reportError.js +6 -0
- package/src/raster/setPMTileOpacity.js +7 -0
- package/src/raster/setPMTileZIndex.js +7 -0
- package/src/raster/setRasterOpacity.js +11 -0
- package/src/raster/setRasterTerrain.js +21 -0
- package/src/raster/setRasterZIndex.js +11 -0
- package/src/raster/updateAttachedTiles.js +10 -0
- package/src/raster/updateRasterTiles.js +59 -0
- package/src/rendering/collectFrameMeshes.js +31 -0
- package/src/rendering/collectMeshes.js +36 -0
- package/src/rendering/compareMeshes.js +10 -0
- package/src/rendering/compareRoofTiles.js +4 -0
- package/src/rendering/composeRoofAtlas.js +52 -0
- package/src/rendering/createMesh.js +33 -0
- package/src/rendering/createProgram.js +92 -0
- package/src/rendering/destroyAfterSubmission.js +8 -0
- package/src/rendering/destroyTexture.js +6 -0
- package/src/rendering/disposeMesh.js +14 -0
- package/src/rendering/drawGeometry.js +129 -0
- package/src/rendering/drawSceneMeshes.js +51 -0
- package/src/rendering/ensureRoofBlit.js +40 -0
- package/src/rendering/prepareFrameMeshes.js +42 -0
- package/src/rendering/prepareFrameUniforms.js +49 -0
- package/src/rendering/rebuildRoofAtlas.js +67 -0
- package/src/rendering/render.js +57 -0
- package/src/rendering/reportCompilation.js +17 -0
- package/src/rendering/resizeRenderer.js +19 -0
- package/src/rendering/sortMeshes.js +6 -0
- package/src/rendering/synchronizeZoomView.js +34 -0
- package/src/rendering/textureBinding.js +7 -0
- package/src/rendering/updateMapCamera.js +32 -0
- package/src/rendering/updateRoofRaster.js +32 -0
- package/src/scene/attach.js +161 -0
- package/src/scene/attachLayer.js +10 -0
- package/src/scene/cancelUpdate.js +10 -0
- package/src/scene/emptyEvents.js +3 -0
- package/src/scene/emptyNode.js +11 -0
- package/src/scene/endZoom.js +16 -0
- package/src/scene/failAttachment.js +9 -0
- package/src/scene/get3DEvents.js +13 -0
- package/src/scene/init3D.js +30 -0
- package/src/scene/initializeLayer.js +16 -0
- package/src/scene/initializerFor.js +14 -0
- package/src/scene/layerInitialize.js +38 -0
- package/src/scene/layerLayerAdd.js +21 -0
- package/src/scene/onAdd3DLayer.js +35 -0
- package/src/scene/onMapChange.js +16 -0
- package/src/scene/onRemove3DLayer.js +69 -0
- package/src/scene/onZoomAnim.js +16 -0
- package/src/scene/placeEntry.js +11 -0
- package/src/scene/placeUnderEntry.js +8 -0
- package/src/scene/ready3D.js +25 -0
- package/src/scene/releaseRenderer.js +14 -0
- package/src/scene/removeEntry.js +6 -0
- package/src/scene/renderPendingMapChange.js +11 -0
- package/src/scene/renderPendingUpdates.js +19 -0
- package/src/scene/renderPendingZoomAnimation.js +7 -0
- package/src/scene/rendererDeviceError.js +10 -0
- package/src/scene/rendererDeviceLost.js +11 -0
- package/src/scene/replaceEntry.js +7 -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 +12 -0
- package/src/scene/restoreObject.js +71 -0
- package/src/scene/runPlacements.js +7 -0
- package/src/scene/showWebGPUWarning.js +16 -0
- package/src/scene/traverse.js +7 -0
- package/src/scene/underEntry.js +17 -0
- package/src/scene/update.js +19 -0
- package/src/scene/updateCamera.js +34 -0
- package/src/scene/updateWorldMatrix.js +48 -0
- package/src/shaders/materialShaders.js +246 -0
- package/src/shadows/bindSunlight.js +12 -0
- package/src/shadows/drawShadowMeshes.js +48 -0
- package/src/shadows/ensureShadowPipeline.js +53 -0
- package/src/shadows/renderSunlight.js +46 -0
- package/src/shadows/resizeSunlight.js +15 -0
- package/src/shadows/shadowBounds.js +32 -0
- package/src/shadows/shadowCacheMatches.js +23 -0
- package/src/shadows/shadowMatrix.js +39 -0
- package/src/sources/addGeneratedTriangle.js +6 -0
- package/src/sources/addTriangle.js +17 -0
- package/src/sources/attachAreaMesh.js +58 -0
- package/src/sources/buildArea.js +42 -0
- package/src/sources/buildAreaFeature.js +41 -0
- package/src/sources/buildAreaPoint.js +25 -0
- package/src/sources/buildAreaPolygon.js +29 -0
- package/src/sources/compareAreaDistance.js +4 -0
- package/src/sources/generateTreeGeometry.js +11 -0
- package/src/sources/groundOffset.js +3 -0
- package/src/sources/initializeGeoJSON.js +8 -0
- package/src/sources/instanceAreaGeometry.js +29 -0
- package/src/sources/projectRing.js +20 -0
- package/src/sources/projectedTree.js +13 -0
- package/src/sources/pump.js +54 -0
- package/src/sources/releaseArea.js +22 -0
- package/src/sources/setGeoJSONData.js +12 -0
- package/src/sources/setGeoJSONLayerData.js +5 -0
- package/src/sources/sourceAreaContext.js +9 -0
- package/src/sources/updateArea.js +45 -0
- package/src/sources/updateStatus.js +12 -0
- package/src/sunlight/addTimeLayer.js +3 -0
- package/src/sunlight/addTo.js +10 -0
- package/src/sunlight/atmosphere.js +28 -0
- package/src/sunlight/initSunlight.js +14 -0
- package/src/sunlight/initialize.js +11 -0
- package/src/sunlight/mix.js +6 -0
- package/src/sunlight/onAdd.js +5 -0
- package/src/sunlight/onAddSun.js +66 -0
- package/src/sunlight/remove.js +7 -0
- package/src/sunlight/removeSun.js +15 -0
- package/src/sunlight/removeTimeLayer.js +3 -0
- package/src/sunlight/render.js +7 -0
- package/src/sunlight/rgb.js +6 -0
- package/src/sunlight/styleTimeControl.js +7 -0
- package/src/sunlight/tickSun.js +5 -0
- package/src/sunlight/updateSky.js +20 -0
- package/src/sunlight/updateSun.js +34 -0
- package/src/sunlight/useLiveTime.js +6 -0
- package/src/sunlight/useSelectedTime.js +20 -0
- package/src/terrain/clearLayerTerrain.js +5 -0
- package/src/terrain/getElevation.js +10 -0
- package/src/terrain/initTerrain.js +20 -0
- package/src/terrain/loadReadyTerrain.js +5 -0
- package/src/terrain/loadTerrain.js +63 -0
- package/src/terrain/loadTerrainTiles.js +13 -0
- package/src/terrain/onTerrainAdd.js +21 -0
- package/src/terrain/onTerrainChange.js +14 -0
- package/src/terrain/onTerrainRemove.js +41 -0
- package/src/terrain/readBridges.js +4 -0
- package/src/terrain/sample.js +7 -0
- package/src/terrain/setLayerTerrain.js +5 -0
- package/src/terrain/terrainAtlas.js +23 -0
- package/src/terrain/terrainElevation.js +20 -0
- package/src/terrain/terrainGrid.js +24 -0
- package/src/traffic/addTraffic.js +7 -0
- package/src/traffic/along.js +14 -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 +5 -0
- package/src/traffic/disposeTrafficObject.js +13 -0
- package/src/traffic/drawTrafficRoute.js +6 -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 +15 -0
- package/src/traffic/initTraffic.js +54 -0
- package/src/traffic/loadTraffic.js +15 -0
- package/src/traffic/loadedTrafficLanes.js +16 -0
- package/src/traffic/locateTraffic.js +9 -0
- package/src/traffic/moveTraffic.js +15 -0
- package/src/traffic/placeTraffic.js +21 -0
- package/src/traffic/prepareTraffic.js +25 -0
- package/src/traffic/readyTraffic.js +6 -0
- package/src/traffic/rebaseTraffic.js +58 -0
- package/src/traffic/rebuildTrafficMesh.js +28 -0
- package/src/traffic/removeTraffic.js +17 -0
- package/src/traffic/routeColor.js +6 -0
- package/src/traffic/routeGeometry.js +31 -0
- package/src/traffic/scheduledTrips.js +40 -0
- package/src/traffic/startTraffic.js +8 -0
- package/src/traffic/tickTraffic.js +57 -0
- package/src/traffic/toLanes.js +16 -0
- package/src/traffic/tooltip.js +11 -0
- package/src/traffic/trafficBounds.js +17 -0
- package/src/traffic/trafficNow.js +4 -0
- package/src/traffic/trafficStorage.js +5 -0
- package/src/traffic/tripsAt.js +27 -0
- package/src/traffic/updateTraffic.js +8 -0
- package/src/traffic/updateTrafficTerrain.js +12 -0
- package/src/traffic/vehicleOffsets.js +11 -0
- package/src/triangulation/area.js +9 -0
- package/src/triangulation/clean.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/minimumX.js +6 -0
- package/src/triangulation/on.js +4 -0
- package/src/triangulation/sortHoles.js +26 -0
- package/src/triangulation/triangulate.js +86 -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/toSRGB.js +3 -1
- package/src/utils/wrap.js +3 -1
- package/src/vehicles/bicycleModel.js +23 -0
- package/src/vehicles/boatBenches.js +8 -0
- package/src/vehicles/boatModel.js +27 -0
- package/src/vehicles/busModel.js +6 -0
- package/src/vehicles/carModel.js +22 -0
- package/src/vehicles/carriage.js +19 -0
- package/src/vehicles/metroModel.js +9 -0
- package/src/vehicles/mirror.js +8 -0
- package/src/vehicles/pedestrianModel.js +17 -0
- package/src/vehicles/tramModel.js +9 -0
- package/src/walk/blocked.js +6 -0
- package/src/walk/createWalk.js +60 -0
- package/src/walk/initWalk.js +18 -0
- package/src/walk/initialize.js +6 -0
- package/src/walk/local.js +10 -0
- package/src/walk/onAdd.js +4 -0
- package/src/walk/onBlur.js +3 -0
- package/src/walk/onKey.js +12 -0
- package/src/walk/onPointer.js +13 -0
- package/src/walk/onRemove.js +4 -0
- package/src/walk/onTerrain.js +5 -0
- package/src/walk/place.js +18 -0
- package/src/walk/start.js +37 -0
- package/src/walk/step.js +53 -0
- package/src/walk/stop.js +27 -0
- package/src/walk/toggle.js +6 -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/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/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/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/getZxy.js +0 -76
- package/src/utils/glass.js +0 -1
- package/src/utils/hit.js +0 -41
- 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/loadModel.js +0 -217
- 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/nativeEvents.js +0 -77
- package/src/utils/nativeGeometry.js +0 -131
- package/src/utils/nativeLayer.js +0 -317
- package/src/utils/onAdd3DLayer.js +0 -31
- package/src/utils/onAddSun.js +0 -147
- package/src/utils/onMapChange.js +0 -16
- package/src/utils/onPMTileAdd.js +0 -15
- package/src/utils/onPMTileRemove.js +0 -8
- 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/pump.js +0 -226
- package/src/utils/rasterTiles.js +0 -285
- package/src/utils/raycast.js +0 -60
- 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/setVertexColor.js +0 -14
- package/src/utils/showFeature.js +0 -27
- package/src/utils/skin.js +0 -2
- package/src/utils/sortMeshes.js +0 -12
- package/src/utils/terrainAtlas.js +0 -21
- package/src/utils/terrainElevation.js +0 -20
- package/src/utils/terrainGrid.js +0 -23
- 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 → archives}/decompress.js +0 -0
- /package/src/{utils → archives}/getHeader.js +0 -0
- /package/src/{utils → archives}/loadSource.js +0 -0
- /package/src/{utils → archives}/read.js +0 -0
- /package/src/{utils → collision}/horizontalRay.js +0 -0
- /package/src/{utils → constants}/CELL.js +0 -0
- /package/src/{utils/sizes.js → constants/accessorSizes.js} +0 -0
- /package/src/{utils/types.js → constants/accessorTypes.js} +0 -0
- /package/src/{utils → constants}/colliders.js +0 -0
- /package/src/{utils → constants}/headlight.js +0 -0
- /package/src/{utils → constants}/hull.js +0 -0
- /package/src/{utils → constants}/limbs.js +0 -0
- /package/src/{utils → constants}/moves.js +0 -0
- /package/src/{utils → constants}/paints.js +0 -0
- /package/src/{utils → constants}/renderers.js +0 -0
- /package/src/{utils → constants}/speed.js +0 -0
- /package/src/{utils → constants}/taillight.js +0 -0
- /package/src/{utils → constants}/white.js +0 -0
- /package/src/{utils → models}/nodeMatrix.js +0 -0
- /package/src/{utils → models}/textureSampler.js +0 -0
- /package/src/{utils → picking}/onClick.js +0 -0
- /package/src/{utils → picking}/onPointerLeave.js +0 -0
- /package/src/{utils → picking}/onPointerMove.js +0 -0
- /package/src/{utils → scene}/setParent.js +0 -0
- /package/src/{utils → scene}/startZoom.js +0 -0
- /package/src/{utils → sunlight}/horizontalPosition.js +0 -0
- /package/src/{utils → sunlight}/moonPosition.js +0 -0
- /package/src/{utils → sunlight}/projectCelestialBody.js +0 -0
- /package/src/{utils → sunlight}/solarPosition.js +0 -0
- /package/src/{utils → terrain}/setTerrainHeight.js +0 -0
package/dist/utils/attach.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/attach.js"],
|
|
4
|
-
"sourcesContent": ["import { emptyNode } from './emptyNode.js';\nimport { setParent } from './setParent.js';\nimport { traverse } from './traverse.js';\nimport { createProgram } from './createProgram.js';\nimport { endZoom } from './endZoom.js';\nimport { onMapChange } from './onMapChange.js';\nimport { onZoomAnim } from './onZoomAnim.js';\nimport { render } from './render.js';\nimport { startZoom } from './startZoom.js';\nimport { update } from './update.js';\nimport { updateArea } from './updateArea.js';\nimport { setTerrainHeight } from './setTerrainHeight.js';\nimport { resizeSunlight } from './resizeSunlight.js';\n\nfunction 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\n/** WebGPU device attachment, materials/pipelines and draw calls. */\n/**\n * Join/create this map's shared scene and rebuild GPU objects if its context changed.\n * Buffer/program handles belong to one context; typed arrays and decoded images do not.\n * @private\n */\n\nexport async function attach(backend, map) {\n let shared = L.Layer._renderers.get(map);\n if (shared?._rendererReady) {\n await shared._rendererReady.promise;\n }\n if (!shared) {\n shared = backend;\n backend._rendererReady = Promise.withResolvers();\n backend._rendererReady.promise.catch(() => { });\n L.Layer._renderers.set(map, shared);\n const fail = error => {\n showWebGPUWarning(map);\n backend._rendererReady.reject(error);\n L.Layer._renderers.delete(map);\n throw error;\n };\n const canvas = document.createElement('canvas');\n if (!navigator.gpu) {\n fail(new Error('Layer3D requires WebGPU'));\n }\n const adapter = await navigator.gpu.requestAdapter().catch(fail);\n if (!adapter) {\n fail(new Error('Unable to acquire a WebGPU adapter'));\n }\n const device = await adapter.requestDevice().catch(fail);\n device.addEventListener('uncapturederror', event => {\n const owner = L.Layer._renderers.get(map);\n if (owner?.renderer?.device !== device) {\n return;\n }\n for (const layer of owner?._layers || []) {\n layer.fire('error', { error: event.error });\n }\n });\n device.lost.then(info => {\n const owner = L.Layer._renderers.get(map);\n if (!owner || owner.renderer?.device !== device) {\n return;\n }\n const error = new Error(`WebGPU device lost: ${info.message || info.reason}`);\n for (const layer of owner._layers) {\n layer.fire('error', { error });\n }\n });\n const context = canvas.getContext('webgpu');\n if (!context) {\n device.destroy();\n fail(new Error('Unable to create a WebGPU canvas context'));\n }\n const format = navigator.gpu.getPreferredCanvasFormat();\n context.configure({ device, format, alphaMode: 'premultiplied' });\n map.getContainer().querySelector('.leaflet-webgpu-warning')?.remove();\n backend._shared = backend;\n backend._layers = new Set();\n backend._sceneOrigin = backend.location;\n backend.scene = emptyNode();\n // Perspective camera state: fov in degrees, near/far in scene metres.\n backend.camera = {\n position: [0, 0, 0],\n up: [0, 1, 0],\n target: [0, 0, 0],\n viewMatrix: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\n projectionMatrix: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\n projectionViewMatrix: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\n fov: 45,\n aspect: 1,\n near: 0.1,\n far: 10000,\n };\n backend.renderer = {\n device,\n context,\n format,\n canvas,\n dpr: Math.min(window.devicePixelRatio, 2)\n };\n const layout = device.createBindGroupLayout({\n entries: [\n { binding: 0, visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT, buffer: { type: 'uniform' } },\n { binding: 1, visibility: GPUShaderStage.FRAGMENT, texture: { sampleType: 'depth' } },\n { binding: 2, visibility: GPUShaderStage.FRAGMENT, sampler: { type: 'comparison' } },\n { binding: 3, visibility: GPUShaderStage.FRAGMENT, buffer: { type: 'read-only-storage' } },\n ]\n });\n const buffer = backend.renderer.device.createBuffer({ size: 80, usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST });\n const sampler = backend.renderer.device.createSampler({ compare: 'less-equal', minFilter: 'linear', magFilter: 'linear' });\n const lights = backend.renderer.device.createBuffer({ size: 32, usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST });\n backend.renderer.sunlight = { layout, buffer, sampler, lights, size: 0 };\n const values = new Float32Array(20);\n values.set([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\n backend.renderer.device.queue.writeBuffer(buffer, 0, values);\n resizeSunlight(backend, 1);\n const emptyImage = document.createElement('canvas');\n emptyImage.width = 1;\n emptyImage.height = 1;\n backend.renderer.roofFallbackTexture = {\n device,\n texture: device.createTexture({\n size: [1, 1],\n format: 'rgba8unorm',\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,\n }),\n sampler: device.createSampler({\n addressModeU: 'clamp-to-edge', addressModeV: 'clamp-to-edge',\n }),\n image: emptyImage, format: 'rgba8unorm', srgb: false, uploaded: null,\n };\n shared._size = null;\n canvas.className = 'leaflet-3d';\n canvas.style.cssText = 'position:absolute;top:0;left:0;pointer-events:none';\n canvas.setAttribute('role', 'img');\n canvas.setAttribute('aria-label', backend.options.ariaLabel ?? '3D scene');\n let pane = map.getPane('webgpuPane');\n if (!pane) {\n pane = map.createPane('webgpuPane', map.getContainer());\n // The pitch sky uses 0 and may be inserted after this pane.\n pane.style.zIndex = 1;\n pane.style.pointerEvents = 'none';\n }\n pane.append(canvas);\n map.on('move zoom rotate pitch resize viewreset layeradd layerremove', onMapChange, shared);\n map.on('zoomstart', startZoom, shared);\n map.on('zoomanim', onZoomAnim, shared);\n map.on('zoomend', endZoom, shared);\n backend._rendererReady.resolve();\n delete shared._rendererReady;\n render(shared);\n L.Layer._renderers.set(map, shared);\n }\n const origin = map.options.crs.project(shared._sceneOrigin);\n const point = map.options.crs.project(backend.location);\n const metres = Math.cos(shared._sceneOrigin.lat * Math.PI / 180);\n backend._terrainBaseY ??= backend.root.position[1];\n backend.root.position[0] = (point.x - origin.x) * metres;\n backend.root.position[1] = backend._terrainBaseY;\n backend.root.position[2] = -(point.y - origin.y) * metres;\n setTerrainHeight(backend);\n // Each group's metres are measured at its own latitude, not the shared camera origin.\n backend.root.scale.fill(metres / Math.cos(backend.location.lat * Math.PI / 180));\n backend._shared = shared;\n backend.renderer = shared.renderer;\n backend.scene = shared.scene;\n backend.camera = shared.camera;\n shared._layers.add(backend);\n setParent(backend.root, shared.scene);\n traverse(backend.root, object => {\n if (object.geometry && object.geometry.device !== shared.renderer.device) {\n const geometry = object.geometry;\n const material = object.program._layerMaterial;\n // Retain packed CPU attributes, never old-context GPU buffer handles.\n const attributes = {};\n for (const name of ['position', 'normal', 'color', 'uv', 'index']) {\n const attribute = geometry.attributes[name];\n if (!attribute) continue;\n const { data, size, count, normalized } = attribute;\n attributes[name] = { data: data.slice(0, count * size), size, normalized };\n }\n const device = shared.renderer.device;\n if (attributes.index?.data instanceof Uint8Array) {\n attributes.index.data = Uint16Array.from(attributes.index.data);\n }\n for (const [name, attribute] of Object.entries(attributes)) {\n attribute.size ||= 1;\n attribute.count = attribute.data.length / attribute.size;\n attribute.indexFormat = attribute.data instanceof Uint32Array ? 'uint32' : 'uint16';\n attribute.buffer = device.createBuffer({\n size: Math.max(4, attribute.data.byteLength),\n usage: name === 'index'\n ? GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST\n : GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n });\n device.queue.writeBuffer(attribute.buffer, 0, attribute.data);\n }\n object.geometry = {\n device,\n attributes,\n drawRange: { start: 0, count: attributes.index?.count || attributes.position.count },\n };\n for (const attribute of Object.values(geometry.attributes)) attribute.buffer.destroy();\n object.bindGroup = null;\n object.boundTextures = [];\n for (const key of ['baseTexture', 'metalTexture', 'emissiveTexture', 'occlusionTexture']) {\n const texture = material[key];\n if (!texture || texture.device === device) continue;\n material[key] = {\n ...texture,\n device,\n texture: device.createTexture({\n size: [texture.image.width, texture.image.height],\n format: texture.format,\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,\n }),\n sampler: device.createSampler(texture.samplerOptions),\n uploaded: null,\n };\n }\n object.program.pipelineCache.clear();\n object.program = createProgram(backend, material);\n object.device = device;\n }\n if (object.texture && object.texture.device !== shared.renderer.device) {\n object.texture = {\n ...object.texture,\n device: shared.renderer.device,\n texture: shared.renderer.device.createTexture({\n size: [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 sampler: shared.renderer.device.createSampler(object.texture.samplerOptions),\n uploaded: null,\n };\n }\n });\n update(shared);\n if ((backend.header && backend._type !== 'pmtiles') || backend._geojson) updateArea(backend);\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["emptyNode", "setParent", "traverse", "createProgram", "endZoom", "onMapChange", "onZoomAnim", "render", "startZoom", "update", "updateArea", "setTerrainHeight", "resizeSunlight", "showWebGPUWarning", "map", "container", "warning", "link", "attach", "backend", "shared", "fail", "error", "canvas", "adapter", "device", "event", "owner", "layer", "info", "context", "format", "layout", "buffer", "sampler", "lights", "values", "emptyImage", "pane", "origin", "point", "metres", "object", "geometry", "material", "attributes", "name", "attribute", "data", "size", "count", "normalized", "key", "texture"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function n(r){const e=r.renderer.sunlight;e.bindGroup=r.renderer.device.createBindGroup({layout:e.layout,entries:[{binding:0,resource:{buffer:e.buffer}},{binding:1,resource:e.texture.createView()},{binding:2,resource:e.sampler},{binding:3,resource:{buffer:e.lights}}]})}export{n as bindSunlight};
|
|
2
|
-
//# sourceMappingURL=bindSunlight.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/bindSunlight.js"],
|
|
4
|
-
"sourcesContent": ["\nexport function bindSunlight(backend) {\n const sun = backend.renderer.sunlight;\n sun.bindGroup = backend.renderer.device.createBindGroup({\n layout: sun.layout, entries: [\n { binding: 0, resource: { buffer: sun.buffer } },\n { binding: 1, resource: sun.texture.createView() },\n { binding: 2, resource: sun.sampler },\n { binding: 3, resource: { buffer: sun.lights } },\n ]\n });\n}\n"],
|
|
5
|
-
"mappings": "AACO,SAASA,EAAaC,EAAS,CACpC,MAAMC,EAAMD,EAAQ,SAAS,SAC7BC,EAAI,UAAYD,EAAQ,SAAS,OAAO,gBAAgB,CACtD,OAAQC,EAAI,OAAQ,QAAS,CAC3B,CAAE,QAAS,EAAG,SAAU,CAAE,OAAQA,EAAI,MAAO,CAAE,EAC/C,CAAE,QAAS,EAAG,SAAUA,EAAI,QAAQ,WAAW,CAAE,EACjD,CAAE,QAAS,EAAG,SAAUA,EAAI,OAAQ,EACpC,CAAE,QAAS,EAAG,SAAU,CAAE,OAAQA,EAAI,MAAO,CAAE,CACjD,CACF,CAAC,CACH",
|
|
6
|
-
"names": ["bindSunlight", "backend", "sun"]
|
|
7
|
-
}
|
package/dist/utils/box.js
DELETED
package/dist/utils/box.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/box.js"],
|
|
4
|
-
"sourcesContent": ["export const box = (x0, x1, z0, z1) => [[x0, z0], [x1, z0], [x1, z1], [x0, z1]];\n"],
|
|
5
|
-
"mappings": "AAAO,MAAMA,EAAM,CAACC,EAAIC,EAAIC,EAAIC,IAAO,CAAC,CAACH,EAAIE,CAAE,EAAG,CAACD,EAAIC,CAAE,EAAG,CAACD,EAAIE,CAAE,EAAG,CAACH,EAAIG,CAAE,CAAC",
|
|
6
|
-
"names": ["box", "x0", "x1", "z0", "z1"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function s(e,l){for(const f of l?.get(`${Math.floor(e.x/64)}/${Math.floor(e.y/64)}`)||[])if(!(e.x<f.min[0]||e.x>f.max[0]||e.y<f.min[1]||e.y>f.max[1]))for(const[c,o,r]of f.triangles){const n=(o[1]-r[1])*(c[0]-r[0])+(r[0]-o[0])*(c[1]-r[1]),x=((o[1]-r[1])*(e.x-r[0])+(r[0]-o[0])*(e.y-r[1]))/n,a=((r[1]-c[1])*(e.x-r[0])+(c[0]-r[0])*(e.y-r[1]))/n;if(x>=0&&a>=0&&x+a<=1)return x*c[2]+a*o[2]+(1-x-a)*r[2]}return null}export{s as bridgeElevation};
|
|
2
|
-
//# sourceMappingURL=bridgeElevation.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/bridgeElevation.js"],
|
|
4
|
-
"sourcesContent": ["/** Height inside a bridge deck, or null outside its triangles. */\nexport function bridgeElevation(point, bridges) {\n // Bridges bucketed by 64 DEM pixels.\n for (const bridge of bridges?.get(`${Math.floor(point.x / 64)}/${Math.floor(point.y / 64)}`) || []) {\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 (const [a, b, c] of bridge.triangles) {\n const d = (b[1] - c[1]) * (a[0] - c[0]) + (c[0] - b[0]) * (a[1] - c[1]);\n const u = ((b[1] - c[1]) * (point.x - c[0]) + (c[0] - b[0]) * (point.y - c[1])) / d;\n const 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"],
|
|
5
|
-
"mappings": "AACO,SAASA,EAAgBC,EAAOC,EAAS,CAE9C,UAAWC,KAAUD,GAAS,IAAI,GAAG,KAAK,MAAMD,EAAM,EAAI,EAAE,CAAC,IAAI,KAAK,MAAMA,EAAM,EAAI,EAAE,CAAC,EAAE,GAAK,CAAC,EAC/F,GAAI,EAAAA,EAAM,EAAIE,EAAO,IAAI,CAAC,GAAKF,EAAM,EAAIE,EAAO,IAAI,CAAC,GAAKF,EAAM,EAAIE,EAAO,IAAI,CAAC,GAAKF,EAAM,EAAIE,EAAO,IAAI,CAAC,GAG3G,SAAW,CAACC,EAAGC,EAAGC,CAAC,IAAKH,EAAO,UAAW,CACxC,MAAMI,GAAKF,EAAE,CAAC,EAAIC,EAAE,CAAC,IAAMF,EAAE,CAAC,EAAIE,EAAE,CAAC,IAAMA,EAAE,CAAC,EAAID,EAAE,CAAC,IAAMD,EAAE,CAAC,EAAIE,EAAE,CAAC,GAC/DE,IAAMH,EAAE,CAAC,EAAIC,EAAE,CAAC,IAAML,EAAM,EAAIK,EAAE,CAAC,IAAMA,EAAE,CAAC,EAAID,EAAE,CAAC,IAAMJ,EAAM,EAAIK,EAAE,CAAC,IAAMC,EAC5EE,IAAMH,EAAE,CAAC,EAAIF,EAAE,CAAC,IAAMH,EAAM,EAAIK,EAAE,CAAC,IAAMF,EAAE,CAAC,EAAIE,EAAE,CAAC,IAAML,EAAM,EAAIK,EAAE,CAAC,IAAMC,EAClF,GAAIC,GAAK,GAAKC,GAAK,GAAKD,EAAIC,GAAK,EAC/B,OAAOD,EAAIJ,EAAE,CAAC,EAAIK,EAAIJ,EAAE,CAAC,GAAK,EAAIG,EAAIC,GAAKH,EAAE,CAAC,CAElD,CAEF,OAAO,IACT",
|
|
6
|
-
"names": ["bridgeElevation", "point", "bridges", "bridge", "a", "b", "c", "d", "u", "v"]
|
|
7
|
-
}
|
package/dist/utils/build.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const u=f=>{const g=[],m=[],a=[],r=(p,c,e,i)=>{const h=c.map((n,l)=>n-p[l]),t=e.map((n,l)=>n-p[l]),s=[h[1]*t[2]-h[2]*t[1],h[2]*t[0]-h[0]*t[2],h[0]*t[1]-h[1]*t[0]],o=Math.hypot(...s);for(const n of[p,c,e])g.push(...n),m.push(...s.map(l=>l/o)),a.push(...i)};for(const[p,c,e,i,h=p]of f){const t=p.map(([o,n])=>[o,c,n]),s=h.map(([o,n])=>[o,e,n]);for(let o=0;o<p.length;o++){const n=(o+1)%p.length;r(t[o],t[n],s[n],i),r(t[o],s[n],s[o],i)}for(let o=1;o<p.length-1;o++)r(s[0],s[o],s[o+1],i),r(t[0],t[o+1],t[o],i)}return{position:g,normal:m,color:a}};export{u as build};
|
|
2
|
-
//# sourceMappingURL=build.js.map
|
package/dist/utils/build.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/build.js"],
|
|
4
|
-
"sourcesContent": ["\nexport const build = parts => {\n const position = [], normal = [], color = [];\n const triangle = (a, b, c, tint) => {\n const u = b.map((v, i) => v - a[i]), v = c.map((w, i) => w - a[i]);\n const n = [u[1] * v[2] - u[2] * v[1], u[2] * v[0] - u[0] * v[2], u[0] * v[1] - u[1] * v[0]], length = Math.hypot(...n);\n for (const point of [a, b, c]) { position.push(...point); normal.push(...n.map(w => w / length)); color.push(...tint); }\n };\n for (const [ring, bottom, top, tint, topRing = ring] of parts) {\n const low = ring.map(([x, z]) => [x, bottom, z]), high = topRing.map(([x, z]) => [x, top, z]);\n for (let i = 0; i < ring.length; i++) {\n const j = (i + 1) % ring.length;\n triangle(low[i], low[j], high[j], tint); triangle(low[i], high[j], high[i], tint);\n }\n for (let i = 1; i < ring.length - 1; i++) {\n triangle(high[0], high[i], high[i + 1], tint); triangle(low[0], low[i + 1], low[i], tint);\n }\n }\n return { position, normal, color };\n};\n"],
|
|
5
|
-
"mappings": "AACO,MAAMA,EAAQC,GAAS,CAC5B,MAAMC,EAAW,CAAC,EAAGC,EAAS,CAAC,EAAGC,EAAQ,CAAC,EACrCC,EAAW,CAACC,EAAGC,EAAGC,EAAGC,IAAS,CAClC,MAAMC,EAAIH,EAAE,IAAI,CAACI,EAAGC,IAAMD,EAAIL,EAAEM,CAAC,CAAC,EAAGD,EAAIH,EAAE,IAAI,CAACK,EAAGD,IAAMC,EAAIP,EAAEM,CAAC,CAAC,EAC3DE,EAAI,CAACJ,EAAE,CAAC,EAAIC,EAAE,CAAC,EAAID,EAAE,CAAC,EAAIC,EAAE,CAAC,EAAGD,EAAE,CAAC,EAAIC,EAAE,CAAC,EAAID,EAAE,CAAC,EAAIC,EAAE,CAAC,EAAGD,EAAE,CAAC,EAAIC,EAAE,CAAC,EAAID,EAAE,CAAC,EAAIC,EAAE,CAAC,CAAC,EAAGI,EAAS,KAAK,MAAM,GAAGD,CAAC,EACrH,UAAWE,IAAS,CAACV,EAAGC,EAAGC,CAAC,EAAKN,EAAS,KAAK,GAAGc,CAAK,EAAGb,EAAO,KAAK,GAAGW,EAAE,IAAID,GAAKA,EAAIE,CAAM,CAAC,EAAGX,EAAM,KAAK,GAAGK,CAAI,CACtH,EACA,SAAW,CAACQ,EAAMC,EAAQC,EAAKV,EAAMW,EAAUH,CAAI,IAAKhB,EAAO,CAC7D,MAAMoB,EAAMJ,EAAK,IAAI,CAAC,CAACK,EAAGC,CAAC,IAAM,CAACD,EAAGJ,EAAQK,CAAC,CAAC,EAAGC,EAAOJ,EAAQ,IAAI,CAAC,CAACE,EAAGC,CAAC,IAAM,CAACD,EAAGH,EAAKI,CAAC,CAAC,EAC5F,QAASX,EAAI,EAAGA,EAAIK,EAAK,OAAQL,IAAK,CACpC,MAAMa,GAAKb,EAAI,GAAKK,EAAK,OACzBZ,EAASgB,EAAIT,CAAC,EAAGS,EAAII,CAAC,EAAGD,EAAKC,CAAC,EAAGhB,CAAI,EAAGJ,EAASgB,EAAIT,CAAC,EAAGY,EAAKC,CAAC,EAAGD,EAAKZ,CAAC,EAAGH,CAAI,CAClF,CACA,QAASG,EAAI,EAAGA,EAAIK,EAAK,OAAS,EAAGL,IACnCP,EAASmB,EAAK,CAAC,EAAGA,EAAKZ,CAAC,EAAGY,EAAKZ,EAAI,CAAC,EAAGH,CAAI,EAAGJ,EAASgB,EAAI,CAAC,EAAGA,EAAIT,EAAI,CAAC,EAAGS,EAAIT,CAAC,EAAGH,CAAI,CAE5F,CACA,MAAO,CAAE,SAAAP,EAAU,OAAAC,EAAQ,MAAAC,CAAM,CACnC",
|
|
6
|
-
"names": ["build", "parts", "position", "normal", "color", "triangle", "a", "b", "c", "tint", "u", "v", "i", "w", "n", "length", "point", "ring", "bottom", "top", "topRing", "low", "x", "z", "high", "j"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function w(t){return t.closest?.('input,textarea,select,[contenteditable="true"]')}function p(t,n,o,i=[.8,.5],r=!1){let a,h=!1;const l=e=>{if(!a||e?.pointerId!==void 0&&e.pointerId!==a.id)return;const d=a;a=null,n.hasPointerCapture?.(d.id)&&n.releasePointerCapture(d.id),d.dragging&&t.getContainer()._leaflet_id&&t.dragging.enable(),n.style.cursor=d.cursor},g=e=>{if(a||!o(e)||w(e.target))return;e.preventDefault(),e.stopPropagation(),h=!1;const d=t.getContainer().getBoundingClientRect();a={id:e.pointerId,x:e.clientX,y:e.clientY,cursor:n.style.cursor,cx:d.left+d.width/2,cy:d.top+d.height/2,dragging:t.dragging?.enabled()},t.dragging?.disable(),n.focus?.({preventScroll:!0}),n.setPointerCapture(e.pointerId),n.style.cursor="grabbing"},u=e=>{if(!a||a.id!==e.pointerId)return;const d=e.clientX-a.x,f=e.clientY-a.y;if(Math.hypot(d,f)<3&&!h)return;t._stopPitchBearingAnimation(),h=!0,e.preventDefault();let b=d*i[0];if(r)if(Math.abs(a.cy-a.y)>100){const v=Math.atan2(e.clientY-a.cy,e.clientX-a.cx)-Math.atan2(e.clientY-a.cy,a.x-a.cx);b=Math.atan2(Math.sin(v),Math.cos(v))*180/Math.PI}else b*=e.clientY<a.cy?1:-1;t._setPitchAndBearing(t.getPitch()-f*i[1],t.getBearing()+b),a.x=e.clientX,a.y=e.clientY},c=e=>{h&&(e.preventDefault(),e.stopPropagation(),h=!1)},s=e=>{(a||h)&&(e.preventDefault(),e.stopPropagation())};return n.addEventListener("pointerdown",g,!0),n.addEventListener("pointermove",u),n.addEventListener("pointerup",l),n.addEventListener("pointercancel",l),n.addEventListener("lostpointercapture",l),n.addEventListener("click",c,!0),n.addEventListener("contextmenu",s),window.addEventListener("blur",l),()=>{l(),n.removeEventListener("pointerdown",g,!0),n.removeEventListener("pointermove",u),n.removeEventListener("pointerup",l),n.removeEventListener("pointercancel",l),n.removeEventListener("lostpointercapture",l),n.removeEventListener("click",c,!0),n.removeEventListener("contextmenu",s),window.removeEventListener("blur",l)}}L.Control.Rotate=L.Control.extend({options:{position:"topleft",closeOnZeroBearing:!0,visualizePitch:!0},onAdd(t){const n=L.DomUtil.create("div","leaflet-control-rotate leaflet-bar"),o=L.DomUtil.create("a","leaflet-control-rotate-toggle",n);o.href="#",o.setAttribute("role","button"),o.title=this.options.visualizePitch?"Reset bearing and pitch":"Reset bearing to north",o.setAttribute("aria-label",o.title),o.style.cssText="cursor:grab;touch-action:none";const i=L.DomUtil.create("span","leaflet-control-rotate-arrow",o);return i.setAttribute("aria-hidden","true"),i.style.cssText="display:block;width:100%;height:100%;pointer-events:none;background: no-repeat center / 29px 29px",i.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")',o.onclick=r=>{r.preventDefault(),this.options.visualizePitch?t.resetNorthPitch():t.resetNorth(),r.detail&&t.getContainer().focus({preventScroll:!0})},o.onkeydown=r=>{const a=r.shiftKey?15:5;if(r.key==="ArrowLeft")t.setBearing(t.getBearing()-a);else if(r.key==="ArrowRight")t.setBearing(t.getBearing()+a);else if(r.key==="ArrowUp"&&this.options.visualizePitch)t.setPitch(t.getPitch()+a);else if(r.key==="ArrowDown"&&this.options.visualizePitch)t.setPitch(t.getPitch()-a);else if(r.key==="Home"||r.key===" ")o.click();else return;r.preventDefault(),r.stopPropagation()},this._refresh=()=>{const r=this.options.visualizePitch?t.getPitch():0;i.style.transform=`scale(${1/Math.sqrt(Math.cos(r*Math.PI/180))}) rotateX(${r}deg) rotate(${t.getBearing()}deg)`,o.setAttribute("aria-description",`Bearing ${Math.round(t.getBearing())} degrees, pitch ${Math.round(t.getPitch())} degrees. Arrow keys adjust the camera; Home resets it.`),n.style.display=this.options.closeOnZeroBearing&&!t.getBearing()&&!r&&!n.contains(document.activeElement)?"none":""},t.on("rotate pitch",this._refresh),this._refresh(),this._endDrag=p(t,o,r=>r.button===0,[.8,this.options.visualizePitch?.5:0]),o.addEventListener("focusout",this._refresh),L.DomEvent.on(o,"dblclick contextmenu",L.DomEvent.stop),L.DomEvent.disableClickPropagation(n),L.DomEvent.disableScrollPropagation(n),n},onRemove(t){t.off("rotate pitch",this._refresh),this._endDrag()}}),L.control&&(L.control.rotate=t=>new L.Control.Rotate(t));const _=L.Handler.extend({addHooks(){this._wheel=t=>{!t.shiftKey||w(t.target)||t.target.closest(".leaflet-control")||(t.preventDefault(),t.stopImmediatePropagation(),this._map.setBearing(this._map.getBearing()+Math.sign(t.deltaY)*5))},this._map.getContainer().addEventListener("wheel",this._wheel,{passive:!1,capture:!0})},removeHooks(){this._map.getContainer().removeEventListener("wheel",this._wheel,!0)}}),C=L.Handler.extend({addHooks(){this._end=p(this._map,this._map.getContainer(),t=>!t.target.closest(".leaflet-control,.leaflet-marker-icon,.leaflet-popup")&&(t.button===2||t.button===0&&t.ctrlKey),[.8,.5],!0)},removeHooks(){this._end()}}),y=L.Handler.extend({addHooks(){const t=this._generation=(this._generation||0)+1;this._orientation=o=>{const i=Number.isFinite(o.webkitCompassHeading)?-o.webkitCompassHeading:o.alpha,r=o.absolute?0:screen.orientation?.angle??window.orientation??0;Number.isFinite(i)&&this._map.setBearing(i-r)};const n=window.DeviceOrientationEvent?.requestPermission;new Promise(o=>o(n?n.call(window.DeviceOrientationEvent):"granted")).then(o=>{if(!(!this.enabled()||this._generation!==t)){if(!window.DeviceOrientationEvent||o!=="granted")throw new Error("Device compass permission unavailable or denied");window.addEventListener("deviceorientation",this._orientation),window.addEventListener("deviceorientationabsolute",this._orientation)}}).catch(o=>{this.disable(),this._map.fire("error",{error:o})})},removeHooks(){this._generation++,window.removeEventListener("deviceorientation",this._orientation),window.removeEventListener("deviceorientationabsolute",this._orientation)}}),M=L.Handler.extend({addHooks(){this._observer=new ResizeObserver(()=>this._map.invalidateSize()),this._observer.observe(this._map.getContainer())},removeHooks(){this._observer.disconnect()}});function k(t){if(t.addHandler("trackContainerMutation",M),!t.options.rotate)return;t.addHandler("shiftKeyRotate",_),t.addHandler("pitchDrag",C),t.addHandler("compassBearing",y);const n=L.Handler.extend({addHooks(){t.fire("cameratouchchange")},removeHooks(){t.fire("cameratouchchange")}});t.addHandler("touchRotate",n),t.addHandler("touchPitch",n);const o=t.getContainer();let i,r;const a=c=>{if(c.touches.length!==2||c.target.closest(".leaflet-control")||!t.touchRotate.enabled()&&!t.touchPitch.enabled())return;const[s,e]=c.touches;if(Math.hypot(e.clientX-s.clientX,e.clientY-s.clientY)<1)return;t._stopPitchBearingAnimation();const d=new L.Point((s.clientX+e.clientX)/2,(s.clientY+e.clientY)/2).subtract(new L.Point(o.getBoundingClientRect().left,o.getBoundingClientRect().top));i={angle:Math.atan2(e.clientY-s.clientY,e.clientX-s.clientX),distance:Math.hypot(e.clientX-s.clientX,e.clientY-s.clientY),middle:d,anchor:t.containerPointToLatLng(d),zoom:t.getZoom(),bearing:t.getBearing(),pitch:t.getPitch(),zooming:t.touchZoom?.enabled(),dragging:t.dragging?.enabled()},t.dragging?.disable(),c.preventDefault(),c.stopImmediatePropagation()},h=c=>{if(!i||c.touches.length!==2)return;const[s,e]=c.touches,d=Math.atan2(e.clientY-s.clientY,e.clientX-s.clientX),f=new L.Point((s.clientX+e.clientX)/2,(s.clientY+e.clientY)/2).subtract(new L.Point(o.getBoundingClientRect().left,o.getBoundingClientRect().top)),b=Math.atan2(Math.sin(d-i.angle),Math.cos(d-i.angle))*180/Math.PI;t._setPitchAndBearing(t.touchPitch.enabled()?i.pitch-(f.y-i.middle.y)*.25:i.pitch,t.touchRotate.enabled()?i.bearing+b:i.bearing);const v=Math.hypot(e.clientX-s.clientX,e.clientY-s.clientY);if(v<1)return;const P=i.zooming?Math.max(t.getMinZoom(),Math.min(t.getMaxZoom(),i.zoom+Math.log2(v/i.distance))):i.zoom;if(t.setView(t.getCenter(),P,{animate:!1}),t.options.touchZoom!=="center"){const E=t.project(i.anchor).subtract(t.project(t.containerPointToLatLng(f)));t.setView(t.unproject(t.project(t.getCenter()).add(E)),t.getZoom(),{animate:!1})}c.preventDefault(),c.stopImmediatePropagation()},l=c=>{if(!i||c?.touches?.length>=2)return;i.dragging&&o._leaflet_id&&t.dragging.enable();const s=i.snap;t.options.zoomSnap=s,i.zooming&&s&&o._leaflet_id&&t.setZoom(Math.round(t.getZoom()/s)*s,{animate:!1}),i=null},g=()=>{const c=t.touchRotate.enabled()||t.touchPitch.enabled();c&&r===void 0?(r=t.touchZoom?.enabled(),t.touchZoom?.disable()):!c&&r!==void 0&&(l(),r&&o._leaflet_id&&t.touchZoom.enable(),r=void 0)};g();const u=c=>{i||(a(c),i&&(r!==void 0&&(i.zooming=r),i.snap=t.options.zoomSnap,t.options.zoomSnap=0))};o.addEventListener("touchstart",u,{capture:!0,passive:!1}),o.addEventListener("touchmove",h,{capture:!0,passive:!1}),o.addEventListener("touchend",l,!0),o.addEventListener("touchcancel",l,!0),window.addEventListener("blur",l),t.on("cameratouchchange",g),t.options.rotateControl&&(t.rotateControl=new L.Control.Rotate(typeof t.options.rotateControl=="object"?t.options.rotateControl:{}),t.rotateControl.addTo(t)),t.once("unload",()=>{l(),o.removeEventListener("touchstart",u,!0),o.removeEventListener("touchmove",h,!0),o.removeEventListener("touchend",l,!0),o.removeEventListener("touchcancel",l,!0),window.removeEventListener("blur",l),t.off("cameratouchchange",g),t.rotateControl?.remove()})}export{k as cameraControls};
|
|
2
|
-
//# sourceMappingURL=cameraControls.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/cameraControls.js"],
|
|
4
|
-
"sourcesContent": ["function editable(target) {\r\n return target.closest?.('input,textarea,select,[contenteditable=\"true\"]');\r\n}\r\n\r\nfunction dragCamera(map, element, accept, sensitivity = [0.8, 0.5], orbit = false) {\r\n let drag, moved = false;\r\n const end = event => {\r\n if (!drag) return;\r\n if (event?.pointerId !== undefined && event.pointerId !== drag.id) return;\r\n const finished = drag;\r\n drag = null;\r\n if (element.hasPointerCapture?.(finished.id)) element.releasePointerCapture(finished.id);\r\n if (finished.dragging && map.getContainer()._leaflet_id) map.dragging.enable();\r\n element.style.cursor = finished.cursor;\r\n };\r\n const down = event => {\r\n if (drag || !accept(event) || editable(event.target)) return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n moved = false;\r\n const rect = map.getContainer().getBoundingClientRect();\r\n drag = { id: event.pointerId, x: event.clientX, y: event.clientY, cursor: element.style.cursor,\r\n cx: rect.left + rect.width / 2, cy: rect.top + rect.height / 2, dragging: map.dragging?.enabled() };\r\n map.dragging?.disable();\r\n element.focus?.({ preventScroll: true });\r\n element.setPointerCapture(event.pointerId);\r\n element.style.cursor = 'grabbing';\r\n };\r\n const move = event => {\r\n if (!drag || drag.id !== event.pointerId) return;\r\n const x = event.clientX - drag.x, y = event.clientY - drag.y;\r\n if (Math.hypot(x, y) < 3 && !moved) return;\r\n map._stopPitchBearingAnimation();\r\n moved = true;\r\n event.preventDefault();\r\n let bearing = x * sensitivity[0];\r\n if (orbit) {\r\n if (Math.abs(drag.cy - drag.y) > 100) {\r\n const angle = Math.atan2(event.clientY - drag.cy, event.clientX - drag.cx) -\r\n Math.atan2(event.clientY - drag.cy, drag.x - drag.cx);\r\n bearing = Math.atan2(Math.sin(angle), Math.cos(angle)) * 180 / Math.PI;\r\n } else bearing *= event.clientY < drag.cy ? 1 : -1;\r\n }\r\n map._setPitchAndBearing(map.getPitch() - y * sensitivity[1], map.getBearing() + bearing);\r\n drag.x = event.clientX; drag.y = event.clientY;\r\n };\r\n const click = event => { if (moved) { event.preventDefault(); event.stopPropagation(); moved = false; } };\r\n const context = event => {\r\n if (drag || moved) { event.preventDefault(); event.stopPropagation(); }\r\n };\r\n element.addEventListener('pointerdown', down, true);\r\n element.addEventListener('pointermove', move);\r\n element.addEventListener('pointerup', end);\r\n element.addEventListener('pointercancel', end);\r\n element.addEventListener('lostpointercapture', end);\r\n element.addEventListener('click', click, true);\r\n element.addEventListener('contextmenu', context);\r\n window.addEventListener('blur', end);\r\n return () => {\r\n end();\r\n element.removeEventListener('pointerdown', down, true);\r\n element.removeEventListener('pointermove', move);\r\n element.removeEventListener('pointerup', end);\r\n element.removeEventListener('pointercancel', end);\r\n element.removeEventListener('lostpointercapture', end);\r\n element.removeEventListener('click', click, true);\r\n element.removeEventListener('contextmenu', context);\r\n window.removeEventListener('blur', end);\r\n };\r\n}\r\n\r\nL.Control.Rotate = L.Control.extend({\r\n options: { position: 'topleft', closeOnZeroBearing: true, visualizePitch: true },\r\n onAdd(map) {\r\n const container = L.DomUtil.create('div', 'leaflet-control-rotate leaflet-bar');\r\n const button = L.DomUtil.create('a', 'leaflet-control-rotate-toggle', container);\r\n button.href = '#';\r\n button.setAttribute('role', 'button');\r\n button.title = this.options.visualizePitch ? 'Reset bearing and pitch' : 'Reset bearing to north';\r\n button.setAttribute('aria-label', button.title);\r\n button.style.cssText = 'cursor:grab;touch-action:none';\r\n const arrow = L.DomUtil.create('span', 'leaflet-control-rotate-arrow', button);\r\n arrow.setAttribute('aria-hidden', 'true');\r\n arrow.style.cssText = 'display:block;width:100%;height:100%;pointer-events:none;background: no-repeat center / 29px 29px';\r\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\")';\r\n button.onclick = event => {\r\n event.preventDefault();\r\n if (this.options.visualizePitch) map.resetNorthPitch();\r\n else map.resetNorth();\r\n if (event.detail) map.getContainer().focus({ preventScroll: true });\r\n };\r\n button.onkeydown = event => {\r\n const step = event.shiftKey ? 15 : 5;\r\n if (event.key === 'ArrowLeft') map.setBearing(map.getBearing() - step);\r\n else if (event.key === 'ArrowRight') map.setBearing(map.getBearing() + step);\r\n else if (event.key === 'ArrowUp' && this.options.visualizePitch) map.setPitch(map.getPitch() + step);\r\n else if (event.key === 'ArrowDown' && this.options.visualizePitch) map.setPitch(map.getPitch() - step);\r\n else if (event.key === 'Home' || event.key === ' ') button.click();\r\n else return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n };\r\n this._refresh = () => {\r\n const pitch = this.options.visualizePitch ? map.getPitch() : 0;\r\n arrow.style.transform = `scale(${1 / Math.sqrt(Math.cos(pitch * Math.PI / 180))}) rotateX(${pitch}deg) rotate(${map.getBearing()}deg)`;\r\n button.setAttribute('aria-description', `Bearing ${Math.round(map.getBearing())} degrees, pitch ${Math.round(map.getPitch())} degrees. Arrow keys adjust the camera; Home resets it.`);\r\n // Do not hide a focused control, even when the caller opts into auto-hiding.\r\n container.style.display = this.options.closeOnZeroBearing && !map.getBearing() && !pitch &&\r\n !container.contains(document.activeElement) ? 'none' : '';\r\n };\r\n map.on('rotate pitch', this._refresh);\r\n this._refresh();\r\n this._endDrag = dragCamera(map, button, event => event.button === 0,\r\n [0.8, this.options.visualizePitch ? 0.5 : 0]);\r\n button.addEventListener('focusout', this._refresh);\r\n L.DomEvent.on(button, 'dblclick contextmenu', L.DomEvent.stop);\r\n L.DomEvent.disableClickPropagation(container);\r\n L.DomEvent.disableScrollPropagation(container);\r\n return container;\r\n },\r\n onRemove(map) {\r\n map.off('rotate pitch', this._refresh);\r\n this._endDrag();\r\n },\r\n});\r\nif (L.control) L.control.rotate = options => new L.Control.Rotate(options);\r\n\r\nconst ShiftRotate = L.Handler.extend({\r\n addHooks() {\r\n this._wheel = event => {\r\n if (!event.shiftKey || editable(event.target) || event.target.closest('.leaflet-control')) return;\r\n event.preventDefault(); event.stopImmediatePropagation();\r\n this._map.setBearing(this._map.getBearing() + Math.sign(event.deltaY) * 5);\r\n };\r\n this._map.getContainer().addEventListener('wheel', this._wheel, { passive: false, capture: true });\r\n },\r\n removeHooks() { this._map.getContainer().removeEventListener('wheel', this._wheel, true); },\r\n});\r\nconst PitchDrag = L.Handler.extend({\r\n addHooks() {\r\n this._end = dragCamera(this._map, this._map.getContainer(), event =>\r\n !event.target.closest('.leaflet-control,.leaflet-marker-icon,.leaflet-popup') &&\r\n (event.button === 2 || event.button === 0 && event.ctrlKey), [0.8, 0.5], true);\r\n },\r\n removeHooks() {\r\n this._end();\r\n },\r\n});\r\nconst Compass = L.Handler.extend({\r\n addHooks() {\r\n const generation = this._generation = (this._generation || 0) + 1;\r\n this._orientation = event => {\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)) this._map.setBearing(bearing - orientation);\r\n };\r\n const permission = window.DeviceOrientationEvent?.requestPermission;\r\n new Promise(resolve => resolve(permission ? permission.call(window.DeviceOrientationEvent) : 'granted')).then(result => {\r\n if (!this.enabled() || this._generation !== generation) return;\r\n if (!window.DeviceOrientationEvent || result !== 'granted') throw new Error('Device compass permission unavailable or denied');\r\n window.addEventListener('deviceorientation', this._orientation);\r\n window.addEventListener('deviceorientationabsolute', this._orientation);\r\n }).catch(error => {\r\n this.disable();\r\n this._map.fire('error', { error });\r\n });\r\n },\r\n removeHooks() {\r\n this._generation++;\r\n window.removeEventListener('deviceorientation', this._orientation);\r\n window.removeEventListener('deviceorientationabsolute', this._orientation);\r\n },\r\n});\r\n\r\nconst ContainerResize = L.Handler.extend({\r\n addHooks() {\r\n this._observer = new ResizeObserver(() => this._map.invalidateSize());\r\n this._observer.observe(this._map.getContainer());\r\n },\r\n removeHooks() { this._observer.disconnect(); },\r\n});\r\n\r\nexport function cameraControls(map) {\r\n map.addHandler('trackContainerMutation', ContainerResize);\r\n if (!map.options.rotate) return;\r\n map.addHandler('shiftKeyRotate', ShiftRotate);\r\n map.addHandler('pitchDrag', PitchDrag);\r\n map.addHandler('compassBearing', Compass);\r\n // Two optional touch modes share one pinch/pan recognizer with Leaflet's zoom setting.\r\n const TouchMode = L.Handler.extend({\r\n addHooks() { map.fire('cameratouchchange'); },\r\n removeHooks() { map.fire('cameratouchchange'); },\r\n });\r\n map.addHandler('touchRotate', TouchMode);\r\n map.addHandler('touchPitch', TouchMode);\r\n const container = map.getContainer();\r\n let touch, nativeZoom;\r\n const start = event => {\r\n if (event.touches.length !== 2 || event.target.closest('.leaflet-control')) return;\r\n if (!map.touchRotate.enabled() && !map.touchPitch.enabled()) return;\r\n const [a, b] = event.touches;\r\n if (Math.hypot(b.clientX - a.clientX, b.clientY - a.clientY) < 1) return;\r\n map._stopPitchBearingAnimation();\r\n const middle = new L.Point((a.clientX + b.clientX) / 2, (a.clientY + b.clientY) / 2)\r\n .subtract(new L.Point(container.getBoundingClientRect().left, container.getBoundingClientRect().top));\r\n touch = { angle: Math.atan2(b.clientY - a.clientY, b.clientX - a.clientX),\r\n distance: Math.hypot(b.clientX - a.clientX, b.clientY - a.clientY), middle,\r\n anchor: map.containerPointToLatLng(middle), zoom: map.getZoom(),\r\n bearing: map.getBearing(), pitch: map.getPitch(), zooming: map.touchZoom?.enabled(),\r\n dragging: map.dragging?.enabled() };\r\n map.dragging?.disable();\r\n event.preventDefault(); event.stopImmediatePropagation();\r\n };\r\n const move = event => {\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 middle = new L.Point((a.clientX + b.clientX) / 2, (a.clientY + b.clientY) / 2)\r\n .subtract(new L.Point(container.getBoundingClientRect().left, container.getBoundingClientRect().top));\r\n const delta = Math.atan2(Math.sin(angle - touch.angle), Math.cos(angle - touch.angle)) * 180 / Math.PI;\r\n map._setPitchAndBearing(map.touchPitch.enabled() ? touch.pitch - (middle.y - touch.middle.y) * 0.25 : touch.pitch,\r\n 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, { 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(), { animate: false });\r\n }\r\n event.preventDefault(); event.stopImmediatePropagation();\r\n };\r\n const end = event => {\r\n if (!touch) return;\r\n if (event?.touches?.length >= 2) return;\r\n if (touch.dragging && container._leaflet_id) map.dragging.enable();\r\n const snap = touch.snap;\r\n map.options.zoomSnap = snap;\r\n if (touch.zooming && snap && container._leaflet_id) {\r\n map.setZoom(Math.round(map.getZoom() / snap) * snap, { animate: false });\r\n }\r\n touch = null;\r\n };\r\n const change = () => {\r\n const active = map.touchRotate.enabled() || map.touchPitch.enabled();\r\n if (active && nativeZoom === undefined) {\r\n nativeZoom = map.touchZoom?.enabled();\r\n map.touchZoom?.disable();\r\n } else if (!active && nativeZoom !== undefined) {\r\n end();\r\n if (nativeZoom && container._leaflet_id) map.touchZoom.enable();\r\n nativeZoom = undefined;\r\n }\r\n };\r\n // Preserve the zoom-enabled setting before handing pinch recognition over.\r\n change();\r\n const startTouch = event => {\r\n if (touch) return;\r\n start(event);\r\n if (touch) {\r\n if (nativeZoom !== undefined) touch.zooming = nativeZoom;\r\n touch.snap = map.options.zoomSnap;\r\n map.options.zoomSnap = 0;\r\n }\r\n };\r\n container.addEventListener('touchstart', startTouch, { capture: true, passive: false });\r\n container.addEventListener('touchmove', move, { capture: true, passive: false });\r\n container.addEventListener('touchend', end, true);\r\n container.addEventListener('touchcancel', end, true);\r\n window.addEventListener('blur', end);\r\n map.on('cameratouchchange', change);\r\n if (map.options.rotateControl) {\r\n map.rotateControl = new L.Control.Rotate(typeof map.options.rotateControl === 'object' ? map.options.rotateControl : {});\r\n map.rotateControl.addTo(map);\r\n }\r\n map.once('unload', () => {\r\n end();\r\n container.removeEventListener('touchstart', startTouch, true);\r\n container.removeEventListener('touchmove', move, true);\r\n container.removeEventListener('touchend', end, true);\r\n container.removeEventListener('touchcancel', end, true);\r\n window.removeEventListener('blur', end);\r\n map.off('cameratouchchange', change);\r\n map.rotateControl?.remove();\r\n });\r\n}\r\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["editable", "target", "dragCamera", "map", "element", "accept", "sensitivity", "orbit", "drag", "moved", "end", "event", "finished", "down", "rect", "move", "x", "y", "bearing", "angle", "click", "context", "container", "button", "arrow", "step", "pitch", "options", "ShiftRotate", "PitchDrag", "Compass", "generation", "orientation", "permission", "resolve", "result", "error", "ContainerResize", "cameraControls", "TouchMode", "touch", "nativeZoom", "start", "a", "b", "middle", "delta", "distance", "zoom", "projected", "snap", "change", "active", "startTouch"]
|
|
7
|
-
}
|
package/dist/utils/channel.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/channel.js"],
|
|
4
|
-
"sourcesContent": ["export const 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"],
|
|
5
|
-
"mappings": "AAAO,MAAMA,EAAU,CAACC,EAAGC,EAAGC,EAAGC,IAAM,CACrC,MAAMC,GAAKJ,EAAIC,EAAI,IAAM,GACzB,OAAOC,EAAIC,EAAI,KAAK,IAAI,GAAI,KAAK,IAAIC,EAAI,EAAG,EAAIA,EAAG,CAAC,CAAC,CACvD",
|
|
6
|
-
"names": ["channel", "n", "h", "l", "a", "k"]
|
|
7
|
-
}
|
package/dist/utils/collider.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{CELL as M}from"./CELL.js";import{colliders as E}from"./colliders.js";function H(h){let c=E.get(h.geometry);if(c)return c;const o=h.worldMatrix,{position:{data:s},index:e,normal:y,uv:x}=h.geometry.attributes,q=e?e.count:s.length/3,d=[],g=[],m=new Map,t=[];for(let i=0;i<q;i+=3){const z=e?e.data[i]:i;if(h.program.nightLight&&x&&x.data[z*2]<=2)continue;for(let r=0;r<3;r++){const a=(e?e.data[i+r]:i+r)*3,n=s[a],p=s[a+1],u=s[a+2];t[r*3]=o[0]*n+o[4]*p+o[8]*u+o[12],t[r*3+1]=o[1]*n+o[5]*p+o[9]*u+o[13],t[r*3+2]=o[2]*n+o[6]*p+o[10]*u+o[14]}const L=t[3]-t[0],b=t[4]-t[1],j=t[5]-t[2],k=t[6]-t[0],v=t[7]-t[1],w=t[8]-t[2];let f=b*w-j*v,l=L*v-b*k;const A=j*k-L*w,F=Math.hypot(f,A,l);if(!F||Math.abs(A)>.9*F)continue;if(y){const r=z*3,a=y.data;(o[0]*a[r]+o[4]*a[r+1]+o[8]*a[r+2])*f+(o[2]*a[r]+o[6]*a[r+1]+o[10]*a[r+2])*l<0&&(f=-f,l=-l)}const C=Math.hypot(f,l),B=g.length/2;d.push(...t),g.push(f/C,l/C);for(let r=Math.floor(Math.min(t[0],t[3],t[6])/M);r<=Math.floor(Math.max(t[0],t[3],t[6])/M);r++)for(let a=Math.floor(Math.min(t[2],t[5],t[8])/M);a<=Math.floor(Math.max(t[2],t[5],t[8])/M);a++){const n=r+","+a;m.has(n)||m.set(n,[]),m.get(n).push(B)}}return c={tri:Float32Array.from(d),nrm:Float32Array.from(g),cells:m,origin:[o[12],o[13],o[14]]},E.set(h.geometry,c),c}export{H as collider};
|
|
2
|
-
//# sourceMappingURL=collider.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/collider.js"],
|
|
4
|
-
"sourcesContent": ["import { CELL } from './CELL.js';\nimport { colliders } from './colliders.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, tri = [], nrm = [], cells = new Map(), v = [];\n\n for (let i = 0; i < count; i += 3) {\n const 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 for (let k = 0; k < 3; k++) {\n const j = (index ? index.data[i + k] : i + k) * 3, x = p[j], y = p[j + 1], z = p[j + 2];\n v[k * 3] = m[0] * x + m[4] * y + m[8] * z + m[12];\n v[k * 3 + 1] = m[1] * x + m[5] * y + m[9] * z + m[13];\n v[k * 3 + 2] = m[2] * x + m[6] * y + m[10] * z + m[14];\n }\n const 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 let nx = ey * fz - ez * fy, nz = ex * fy - ey * fx;\n\n const 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 const 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 const h = Math.hypot(nx, nz), t = nrm.length / 2;\n\n tri.push(...v);\n nrm.push(nx / h, nz / h);\n\n for (let 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++)\n for (let 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++) {\n const key = ix + ',' + iz;\n if (!cells.has(key)) {\n cells.set(key, []);\n }\n cells.get(key).push(t);\n }\n }\n c = {\n tri: Float32Array.from(tri),\n nrm: Float32Array.from(nrm),\n cells,\n origin: [m[12], m[13], m[14]]\n };\n colliders.set(mesh.geometry, c);\n return c;\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["CELL", "colliders", "collider", "mesh", "m", "p", "index", "normal", "uv", "count", "tri", "nrm", "cells", "v", "first", "k", "j", "x", "y", "z", "ex", "ey", "ez", "fx", "fy", "fz", "nx", "nz", "ny", "length", "h", "t", "ix", "iz", "key"]
|
|
7
|
-
}
|
package/dist/utils/colliders.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function s(e){const i=[1/0,1/0,1/0],a=[-1/0,-1/0,-1/0],n=e.attributes.position.data;for(let t=0;t<n.length;t++)i[t%3]=Math.min(i[t%3],n[t]),a[t%3]=Math.max(a[t%3],n[t]);const o=i.map((t,h)=>(t+a[h])/2);let f=0;for(let t=0;t<n.length;t+=3)f=Math.max(f,Math.hypot(n[t]-o[0],n[t+1]-o[1],n[t+2]-o[2]));e.bounds={min:i,max:a,center:o,radius:f}}export{s as computeBounds};
|
|
2
|
-
//# sourceMappingURL=computeBounds.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/computeBounds.js"],
|
|
4
|
-
"sourcesContent": ["/** Cache local AABB and center for ray picking and transparent mesh sorting. */\n\nexport function computeBounds(geometry) {\n const min = [Infinity, Infinity, Infinity], max = [-Infinity, -Infinity, -Infinity], data = geometry.attributes.position.data;\n for (let 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 center = min.map((v, i) => (v + max[i]) / 2);\n let radius = 0;\n for (let i = 0; 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 = { min, max, center, radius };\n}\n"],
|
|
5
|
-
"mappings": "AAEO,SAASA,EAAcC,EAAU,CACtC,MAAMC,EAAM,CAAC,IAAU,IAAU,GAAQ,EAAGC,EAAM,CAAC,KAAW,KAAW,IAAS,EAAGC,EAAOH,EAAS,WAAW,SAAS,KACzH,QAASI,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAC/BH,EAAIG,EAAI,CAAC,EAAI,KAAK,IAAIH,EAAIG,EAAI,CAAC,EAAGD,EAAKC,CAAC,CAAC,EACzCF,EAAIE,EAAI,CAAC,EAAI,KAAK,IAAIF,EAAIE,EAAI,CAAC,EAAGD,EAAKC,CAAC,CAAC,EAE3C,MAAMC,EAASJ,EAAI,IAAI,CAACK,EAAGF,KAAOE,EAAIJ,EAAIE,CAAC,GAAK,CAAC,EACjD,IAAIG,EAAS,EACb,QAASH,EAAI,EAAGA,EAAID,EAAK,OAAQC,GAAK,EACpCG,EAAS,KAAK,IAAIA,EAAQ,KAAK,MAC7BJ,EAAKC,CAAC,EAAIC,EAAO,CAAC,EAAGF,EAAKC,EAAI,CAAC,EAAIC,EAAO,CAAC,EAAGF,EAAKC,EAAI,CAAC,EAAIC,EAAO,CAAC,CACtE,CAAC,EAEHL,EAAS,OAAS,CAAE,IAAAC,EAAK,IAAAC,EAAK,OAAAG,EAAQ,OAAAE,CAAO,CAC/C",
|
|
6
|
-
"names": ["computeBounds", "geometry", "min", "max", "data", "i", "center", "v", "radius"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{computeBounds as x}from"./computeBounds.js";import{getElevation as O}from"./getElevation.js";import{update as T}from"./update.js";import{updateWorldMatrix as y}from"./updateWorldMatrix.js";import{vertexNormals as E}from"./vertexNormals.js";const F=8;function A(i,n){if(!i.model)return;const c=[],h=e=>{e.geometry?.attributes.position&&c.push(e);for(const r of e.children)h(r)};if(h(i.model),!n?._terrainReady||!i.options.terrainConform){for(const e of c){const r=e.geometry._terrainBasePositions;if(!r)continue;const t=e.geometry,a=t.attributes.position;a.data.set(r),e.device.queue.writeBuffer(a.buffer,0,r);const o=t._terrainBaseNormals;o&&(t.attributes.normal.data.set(o),e.device.queue.writeBuffer(t.attributes.normal.buffer,0,o)),x(t)}return}y(i.root);const B=i._map,f=B.options.crs,b=f.project(i._shared._sceneOrigin),g=Math.cos(i._shared._sceneOrigin.lat*Math.PI/180),M=f.scale(n._terrainZoom);for(const e of c){const r=e.geometry,t=r.attributes.position;r._terrainBasePositions||=t.data.slice();const a=r.attributes.normal;r._terrainBaseNormals||=a.data.slice(),t.data.set(r._terrainBasePositions);const o=e.worldMatrix,m=new DOMMatrix(o).inverse().toFloat64Array();for(let s=0;s<t.data.length;s+=3){const d=t.data[s],u=t.data[s+1],p=t.data[s+2],w=o[1]*d+o[5]*u+o[9]*p+o[13],_=Math.max(0,Math.min(1,1-(w-i.root.position[1])/F));if(!_)continue;const P=o[0]*d+o[4]*u+o[8]*p+o[12],q=o[2]*d+o[6]*u+o[10]*p+o[14],N=f.transformation.transform(new L.Point(b.x+P/g,b.y-q/g),M),v=O(n,N);if(!Number.isFinite(v))continue;const l=(v-w)*_;t.data[s]+=m[4]*l,t.data[s+1]+=m[5]*l,t.data[s+2]+=m[6]*l}e.device.queue.writeBuffer(t.buffer,0,t.data),a.data.set(E(t.data,r.attributes.index?.data)),e.device.queue.writeBuffer(a.buffer,0,a.data),x(r)}T(i)}export{A as conformModelToTerrain};
|
|
2
|
-
//# sourceMappingURL=conformModelToTerrain.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/conformModelToTerrain.js"],
|
|
4
|
-
"sourcesContent": ["import { computeBounds } from './computeBounds.js';\r\nimport { getElevation } from './getElevation.js';\r\nimport { update } from './update.js';\r\nimport { updateWorldMatrix } from './updateWorldMatrix.js';\r\nimport { vertexNormals } from './vertexNormals.js';\r\n\r\nconst HEIGHT = 8;\r\n\r\nexport function conformModelToTerrain(layer, terrain) {\r\n if (!layer.model) return;\r\n const meshes = [];\r\n const visit = node => {\r\n if (node.geometry?.attributes.position) meshes.push(node);\r\n for (const child of node.children) visit(child);\r\n };\r\n visit(layer.model);\r\n if (!terrain?._terrainReady || !layer.options.terrainConform) {\r\n for (const mesh of meshes) {\r\n const positions = mesh.geometry._terrainBasePositions;\r\n if (!positions) continue;\r\n const geometry = mesh.geometry, position = geometry.attributes.position;\r\n position.data.set(positions);\r\n mesh.device.queue.writeBuffer(position.buffer, 0, positions);\r\n const normals = geometry._terrainBaseNormals;\r\n if (normals) {\r\n geometry.attributes.normal.data.set(normals);\r\n mesh.device.queue.writeBuffer(geometry.attributes.normal.buffer, 0, normals);\r\n }\r\n computeBounds(geometry);\r\n }\r\n return;\r\n }\r\n\r\n updateWorldMatrix(layer.root);\r\n const map = layer._map, crs = map.options.crs;\r\n const origin = crs.project(layer._shared._sceneOrigin);\r\n const metres = Math.cos(layer._shared._sceneOrigin.lat * Math.PI / 180);\r\n const pixelScale = crs.scale(terrain._terrainZoom);\r\n\r\n for (const mesh of meshes) {\r\n const geometry = mesh.geometry, attribute = geometry.attributes.position;\r\n geometry._terrainBasePositions ||= attribute.data.slice();\r\n const normal = geometry.attributes.normal;\r\n geometry._terrainBaseNormals ||= normal.data.slice();\r\n attribute.data.set(geometry._terrainBasePositions);\r\n const world = mesh.worldMatrix, inverse = new DOMMatrix(world).inverse().toFloat64Array();\r\n for (let i = 0; i < attribute.data.length; i += 3) {\r\n const x = attribute.data[i], y = attribute.data[i + 1], z = attribute.data[i + 2];\r\n const worldY = world[1] * x + world[5] * y + world[9] * z + world[13];\r\n const weight = Math.max(0, Math.min(1, 1 - (worldY - layer.root.position[1]) / HEIGHT));\r\n if (!weight) continue;\r\n const worldX = world[0] * x + world[4] * y + world[8] * z + world[12];\r\n const worldZ = world[2] * x + world[6] * y + world[10] * z + world[14];\r\n const point = crs.transformation.transform(new L.Point(\r\n origin.x + worldX / metres, origin.y - worldZ / metres), pixelScale);\r\n const elevation = getElevation(terrain, point);\r\n if (!Number.isFinite(elevation)) continue;\r\n const offset = (elevation - worldY) * weight;\r\n attribute.data[i] += inverse[4] * offset;\r\n attribute.data[i + 1] += inverse[5] * offset;\r\n attribute.data[i + 2] += inverse[6] * offset;\r\n }\r\n mesh.device.queue.writeBuffer(attribute.buffer, 0, attribute.data);\r\n normal.data.set(vertexNormals(attribute.data, geometry.attributes.index?.data));\r\n mesh.device.queue.writeBuffer(normal.buffer, 0, normal.data);\r\n computeBounds(geometry);\r\n }\r\n update(layer);\r\n}\r\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["computeBounds", "getElevation", "update", "updateWorldMatrix", "vertexNormals", "HEIGHT", "conformModelToTerrain", "layer", "terrain", "meshes", "visit", "node", "child", "mesh", "positions", "geometry", "position", "normals", "map", "crs", "origin", "metres", "pixelScale", "attribute", "normal", "world", "inverse", "i", "x", "y", "z", "worldY", "weight", "worldX", "worldZ", "point", "elevation", "offset"]
|
|
7
|
-
}
|
package/dist/utils/createMesh.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{emptyNode as g}from"./emptyNode.js";import{createProgram as p}from"./createProgram.js";import{setParent as y}from"./setParent.js";import{update as h}from"./update.js";function B(e,f,i={},m=0,c){const{device:r}=e.renderer,o={};for(const[s,d]of Object.entries(f)){const t=new Float32Array(d),n=s==="uv"?2:3,u=r.createBuffer({size:Math.max(4,t.byteLength),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST|m});r.queue.writeBuffer(u,0,t),o[s]={size:n,data:t,count:t.length/n,buffer:u}}const a={...g(),device:r,geometry:{device:r,attributes:o,drawRange:{start:0,count:o.position.count}},program:c||p(e,{vertexColors:!0,doubleSided:!0,...i}),id:L.Layer._nextId++,renderOrder:0,extras:{}};return y(a,e.root),h(e),a}export{B as createMesh};
|
|
2
|
-
//# sourceMappingURL=createMesh.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/createMesh.js"],
|
|
4
|
-
"sourcesContent": ["import { emptyNode } from './emptyNode.js';\nimport { createProgram } from './createProgram.js';\nimport { setParent } from './setParent.js';\nimport { update } from './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 = {}, usage = 0, program) {\n const { device } = backend.renderer, attributes = {};\n for (const [name, values] of Object.entries(data)) {\n const array = new Float32Array(values);\n const size = name === 'uv' ? 2 : 3;\n const buffer = device.createBuffer({ size: Math.max(4, array.byteLength), usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST | usage });\n device.queue.writeBuffer(buffer, 0, array);\n attributes[name] = { size, data: array, count: array.length / size, buffer };\n }\n const mesh = {\n ...emptyNode(),\n device,\n geometry: { device, attributes, drawRange: { start: 0, count: attributes.position.count } },\n program: program || createProgram(backend, { vertexColors: true, doubleSided: true, ...material }),\n id: L.Layer._nextId++, renderOrder: 0, extras: {},\n };\n setParent(mesh, backend.root);\n update(backend);\n return mesh;\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,aAAAA,MAAiB,iBAC1B,OAAS,iBAAAC,MAAqB,qBAC9B,OAAS,aAAAC,MAAiB,iBAC1B,OAAS,UAAAC,MAAc,cAQhB,SAASC,EAAWC,EAASC,EAAMC,EAAW,CAAC,EAAGC,EAAQ,EAAGC,EAAS,CAC3E,KAAM,CAAE,OAAAC,CAAO,EAAIL,EAAQ,SAAUM,EAAa,CAAC,EACnD,SAAW,CAACC,EAAMC,CAAM,IAAK,OAAO,QAAQP,CAAI,EAAG,CACjD,MAAMQ,EAAQ,IAAI,aAAaD,CAAM,EAC/BE,EAAOH,IAAS,KAAO,EAAI,EAC3BI,EAASN,EAAO,aAAa,CAAE,KAAM,KAAK,IAAI,EAAGI,EAAM,UAAU,EAAG,MAAO,eAAe,OAAS,eAAe,SAAWN,CAAM,CAAC,EAC1IE,EAAO,MAAM,YAAYM,EAAQ,EAAGF,CAAK,EACzCH,EAAWC,CAAI,EAAI,CAAE,KAAAG,EAAM,KAAMD,EAAO,MAAOA,EAAM,OAASC,EAAM,OAAAC,CAAO,CAC7E,CACA,MAAMC,EAAO,CACX,GAAGjB,EAAU,EACb,OAAAU,EACA,SAAU,CAAE,OAAAA,EAAQ,WAAAC,EAAY,UAAW,CAAE,MAAO,EAAG,MAAOA,EAAW,SAAS,KAAM,CAAE,EAC1F,QAASF,GAAWR,EAAcI,EAAS,CAAE,aAAc,GAAM,YAAa,GAAM,GAAGE,CAAS,CAAC,EACjG,GAAI,EAAE,MAAM,UAAW,YAAa,EAAG,OAAQ,CAAC,CAClD,EACA,OAAAL,EAAUe,EAAMZ,EAAQ,IAAI,EAC5BF,EAAOE,CAAO,EACPY,CACT",
|
|
6
|
-
"names": ["emptyNode", "createProgram", "setParent", "update", "createMesh", "backend", "data", "material", "usage", "program", "device", "attributes", "name", "values", "array", "size", "buffer", "mesh"]
|
|
7
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{materialShaders as p}from"./materialShaders.js";import{elevationWGSL as h}from"./elevationWGSL.js";function v(r,e={}){const t=p(e,!!r.options.nightSparkle,e.terrain?h:""),s=r.renderer.device.createShaderModule({code:t.vertex}),u=r.renderer.device.createShaderModule({code:t.fragment});Promise.all([s.getCompilationInfo(),u.getCompilationInfo()]).then(o=>{const l=o.flatMap(i=>i.messages).filter(i=>i.type==="error");l.length&&r.fire("error",{error:new Error(`Unable to compile Layer3D WGSL: ${l.map(i=>i.message).join(`
|
|
2
|
-
`)}`)})}).catch(o=>r.fire("error",{error:o}));const f=[{arrayStride:12,attributes:[{shaderLocation:0,offset:0,format:"float32x3"}]},{arrayStride:12,attributes:[{shaderLocation:1,offset:0,format:"float32x3"}]},e.vertexColors?{arrayStride:12,attributes:[{shaderLocation:2,offset:0,format:"float32x3"}]}:null,t.textured?{arrayStride:8,attributes:[{shaderLocation:3,offset:0,format:"float32x2"}]}:null],n=[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform",hasDynamicOffset:!0}},{binding:1,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}];t.hasTerrain&&n.push({binding:2,visibility:GPUShaderStage.VERTEX,texture:{sampleType:"unfilterable-float",viewDimension:"2d"}});for(const o of t.bindings)n.push({binding:o.texture,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float",viewDimension:"2d"}}),n.push({binding:o.sampler,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}});const a=r.renderer.device.createBindGroupLayout({entries:n}),d=r.renderer.device.createPipelineLayout({bindGroupLayouts:[a,r.renderer.sunlight.layout]});return{device:r.renderer.device,vertex:s,fragment:u,bindings:t.bindings,vertexBuffers:f,bindGroupLayout:a,pipelineLayout:d,pipelineCache:new Map,cullMode:e.doubleSided?"none":"back",transparent:e.alphaMode==="BLEND",depthWrite:e.depthWrite??e.alphaMode!=="BLEND",depthTest:e.depthTest!==!1,terrain:e.terrain,nightLight:!!e.nightLight,nightSparkle:!!r.options.nightSparkle,uniforms:{baseColor:{value:e.color||[1,1,1]},metallic:{value:e.metallic??0},roughness:{value:e.roughness??.85},opacity:{value:e.opacity??1},alphaCutoff:{value:e.alphaCutoff??.5},occlusionStrength:{value:e.occlusionStrength??1},emissive:{value:e.emissive||[0,0,0]},...e.baseTexture?{baseTexture:{value:e.baseTexture}}:{},...e.metalTexture?{metalTexture:{value:e.metalTexture}}:{},...e.emissiveTexture?{emissiveTexture:{value:e.emissiveTexture}}:{},...e.occlusionTexture?{occlusionTexture:{value:e.occlusionTexture}}:{},...e.roofTexture?{roofTexture:{value:null}}:{}},_layerMaterial:e}}export{v as createProgram};
|
|
3
|
-
//# sourceMappingURL=createProgram.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/createProgram.js"],
|
|
4
|
-
"sourcesContent": ["import { materialShaders } from './materialShaders.js';\nimport { elevationWGSL } from './elevationWGSL.js';\n\n\nexport function createProgram(backend, material = {}) {\n const shaders = materialShaders(\n material,\n !!backend.options.nightSparkle,\n material.terrain ? elevationWGSL : ''\n );\n const vertex = backend.renderer.device.createShaderModule({ code: shaders.vertex });\n const fragment = backend.renderer.device.createShaderModule({ code: shaders.fragment });\n Promise.all([\n vertex.getCompilationInfo(),\n fragment.getCompilationInfo()\n ]).then(infos => {\n const errors = infos.flatMap(info => info.messages).filter(message => message.type === 'error');\n if (errors.length) {\n backend.fire('error', {\n error: new Error(`Unable to compile Layer3D WGSL: ${errors.map(error => error.message).join('\\n')}`),\n });\n }\n }).catch(error => backend.fire('error', { error }));\n const vertexBuffers = [\n { arrayStride: 12, attributes: [{ shaderLocation: 0, offset: 0, format: 'float32x3' }] },\n { arrayStride: 12, attributes: [{ shaderLocation: 1, offset: 0, format: 'float32x3' }] },\n material.vertexColors ? { arrayStride: 12, attributes: [{ shaderLocation: 2, offset: 0, format: 'float32x3' }] } : null,\n shaders.textured ? { arrayStride: 8, attributes: [{ shaderLocation: 3, offset: 0, format: 'float32x2' }] } : null,\n ];\n const bindGroupEntries = [{\n binding: 0,\n visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,\n buffer: { type: 'uniform', hasDynamicOffset: true },\n }, {\n binding: 1,\n visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,\n buffer: { type: 'uniform' },\n }];\n if (shaders.hasTerrain) {\n bindGroupEntries.push({\n binding: 2,\n visibility: GPUShaderStage.VERTEX,\n texture: { sampleType: 'unfilterable-float', viewDimension: '2d' },\n });\n }\n for (const texture of shaders.bindings) {\n bindGroupEntries.push({\n binding: texture.texture,\n visibility: GPUShaderStage.FRAGMENT,\n texture: { sampleType: 'float', viewDimension: '2d' },\n });\n bindGroupEntries.push({\n binding: texture.sampler,\n visibility: GPUShaderStage.FRAGMENT,\n sampler: { type: 'filtering' },\n });\n }\n const bindGroupLayout = backend.renderer.device.createBindGroupLayout({ entries: bindGroupEntries });\n const pipelineLayout = backend.renderer.device.createPipelineLayout({ bindGroupLayouts: [bindGroupLayout, backend.renderer.sunlight.layout] });\n return {\n device: backend.renderer.device,\n vertex,\n fragment,\n bindings: shaders.bindings,\n vertexBuffers,\n bindGroupLayout,\n pipelineLayout,\n pipelineCache: 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 baseColor: { value: material.color || [1, 1, 1] },\n metallic: { value: material.metallic ?? 0 },\n roughness: { value: material.roughness ?? 0.85 },\n opacity: { value: material.opacity ?? 1 },\n alphaCutoff: { value: material.alphaCutoff ?? 0.5 },\n occlusionStrength: { value: material.occlusionStrength ?? 1 },\n emissive: { value: material.emissive || [0, 0, 0] },\n ...(material.baseTexture ? { baseTexture: { value: material.baseTexture } } : {}),\n ...(material.metalTexture ? { metalTexture: { value: material.metalTexture } } : {}),\n ...(material.emissiveTexture ? { emissiveTexture: { value: material.emissiveTexture } } : {}),\n ...(material.occlusionTexture ? { occlusionTexture: { value: material.occlusionTexture } } : {}),\n ...(material.roofTexture ? { roofTexture: { value: null } } : {}),\n },\n _layerMaterial: material,\n };\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["materialShaders", "elevationWGSL", "createProgram", "backend", "material", "shaders", "vertex", "fragment", "infos", "errors", "info", "message", "error", "vertexBuffers", "bindGroupEntries", "texture", "bindGroupLayout", "pipelineLayout"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function d(f){const i=new Uint8Array(f);let l=0;const n=()=>{let r=0;for(let t=1;t<=2**49;t*=128){if(l>=i.length)throw new Error("Truncated PMTiles directory");const o=i[l++];if(r+=(o&127)*t,!Number.isSafeInteger(r))throw new Error("Invalid PMTiles directory integer");if(o<128)return r}throw new Error("Invalid PMTiles directory integer")},c=n();if(c>(i.length-l)/4)throw new Error("Invalid PMTiles directory count");const e=[];let s=0;for(let r=0;r<c;r++){if(s+=n(),!Number.isSafeInteger(s)||r&&s<=e[r-1].tileId)throw new Error("Invalid PMTiles directory tile IDs");e.push({tileId:s})}for(const r of e)r.runLength=n();for(const r of e)if(r.length=n(),!r.length)throw new Error("Invalid PMTiles directory length");if(e.forEach((r,t)=>{const o=n();if(!o&&!t)throw new Error("Invalid PMTiles directory offset");r.offset=o?o-1:e[t-1].offset+e[t-1].length}),l!==i.length)throw new Error("Trailing PMTiles directory data");return e}export{d as decodeDirectory};
|
|
2
|
-
//# sourceMappingURL=decodeDirectory.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/decodeDirectory.js"],
|
|
4
|
-
"sourcesContent": ["/** Decode delta/varint directory columns, rejecting malformed entries. */\n\nexport function decodeDirectory(data) {\n const bytes = new Uint8Array(data);\n let cursor = 0;\n const varint = () => {\n let value = 0;\n for (let factor = 1; factor <= 2 ** 49; factor *= 128) {\n if (cursor >= bytes.length) throw new Error('Truncated PMTiles directory');\n const byte = bytes[cursor++];\n value += (byte & 127) * factor;\n if (!Number.isSafeInteger(value)) throw new Error('Invalid PMTiles directory integer');\n if (byte < 128) return value;\n }\n throw new Error('Invalid PMTiles directory integer');\n };\n const count = varint();\n if (count > (bytes.length - cursor) / 4) throw new Error('Invalid PMTiles directory count');\n const entries = [];\n let tileId = 0;\n for (let i = 0; i < count; i++) {\n tileId += varint();\n if (!Number.isSafeInteger(tileId) || (i && tileId <= entries[i - 1].tileId)) {\n throw new Error('Invalid PMTiles directory tile IDs');\n }\n entries.push({ tileId });\n }\n for (const entry of entries) entry.runLength = varint();\n for (const entry of entries) {\n entry.length = varint();\n if (!entry.length) throw new Error('Invalid PMTiles directory length');\n }\n entries.forEach((entry, i) => {\n const value = varint();\n if (!value && !i) throw new Error('Invalid PMTiles directory offset');\n entry.offset = value ? value - 1 : entries[i - 1].offset + entries[i - 1].length;\n });\n if (cursor !== bytes.length) throw new Error('Trailing PMTiles directory data');\n return entries;\n}\n"],
|
|
5
|
-
"mappings": "AAEO,SAASA,EAAgBC,EAAM,CACpC,MAAMC,EAAQ,IAAI,WAAWD,CAAI,EACjC,IAAIE,EAAS,EACb,MAAMC,EAAS,IAAM,CACnB,IAAIC,EAAQ,EACZ,QAASC,EAAS,EAAGA,GAAU,GAAK,GAAIA,GAAU,IAAK,CACrD,GAAIH,GAAUD,EAAM,OAAQ,MAAM,IAAI,MAAM,6BAA6B,EACzE,MAAMK,EAAOL,EAAMC,GAAQ,EAE3B,GADAE,IAAUE,EAAO,KAAOD,EACpB,CAAC,OAAO,cAAcD,CAAK,EAAG,MAAM,IAAI,MAAM,mCAAmC,EACrF,GAAIE,EAAO,IAAK,OAAOF,CACzB,CACA,MAAM,IAAI,MAAM,mCAAmC,CACrD,EACMG,EAAQJ,EAAO,EACrB,GAAII,GAASN,EAAM,OAASC,GAAU,EAAG,MAAM,IAAI,MAAM,iCAAiC,EAC1F,MAAMM,EAAU,CAAC,EACjB,IAAIC,EAAS,EACb,QAASC,EAAI,EAAGA,EAAIH,EAAOG,IAAK,CAE9B,GADAD,GAAUN,EAAO,EACb,CAAC,OAAO,cAAcM,CAAM,GAAMC,GAAKD,GAAUD,EAAQE,EAAI,CAAC,EAAE,OAClE,MAAM,IAAI,MAAM,oCAAoC,EAEtDF,EAAQ,KAAK,CAAE,OAAAC,CAAO,CAAC,CACzB,CACA,UAAWE,KAASH,EAASG,EAAM,UAAYR,EAAO,EACtD,UAAWQ,KAASH,EAElB,GADAG,EAAM,OAASR,EAAO,EAClB,CAACQ,EAAM,OAAQ,MAAM,IAAI,MAAM,kCAAkC,EAOvE,GALAH,EAAQ,QAAQ,CAACG,EAAOD,IAAM,CAC5B,MAAMN,EAAQD,EAAO,EACrB,GAAI,CAACC,GAAS,CAACM,EAAG,MAAM,IAAI,MAAM,kCAAkC,EACpEC,EAAM,OAASP,EAAQA,EAAQ,EAAII,EAAQE,EAAI,CAAC,EAAE,OAASF,EAAQE,EAAI,CAAC,EAAE,MAC5E,CAAC,EACGR,IAAWD,EAAM,OAAQ,MAAM,IAAI,MAAM,iCAAiC,EAC9E,OAAOO,CACT",
|
|
6
|
-
"names": ["decodeDirectory", "data", "bytes", "cursor", "varint", "value", "factor", "byte", "count", "entries", "tileId", "i", "entry"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function i(o){if(o.byteLength<127||new TextDecoder().decode(new Uint8Array(o,0,7))!=="PMTiles"||new Uint8Array(o)[7]!==3)throw new Error("Expected a PMTiles v3 archive");const t=new DataView(o),e={};return["rootDirectoryOffset","rootDirectoryLength","jsonMetadataOffset","jsonMetadataLength","leafDirectoryOffset","leafDirectoryLength","tileDataOffset","tileDataLength","numAddressedTiles","numTileEntries","numTileContents"].forEach((n,r)=>{e[n]=Number(t.getBigUint64(8+r*8,!0))}),["clustered","internalCompression","tileCompression","tileType","minZoom","maxZoom"].forEach((n,r)=>{e[n]=t.getUint8(96+r)}),["minLon","minLat","maxLon","maxLat"].forEach((n,r)=>{e[n]=t.getInt32(102+r*4,!0)/1e7}),e.centerZoom=t.getUint8(118),e.centerLon=t.getInt32(119,!0)/1e7,e.centerLat=t.getInt32(123,!0)/1e7,e}export{i as decodeHeader};
|
|
2
|
-
//# sourceMappingURL=decodeHeader.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/decodeHeader.js"],
|
|
4
|
-
"sourcesContent": ["/** Decode the PMTiles v3 header. */\n\nexport function decodeHeader(data) {\n if (data.byteLength < 127 || new TextDecoder().decode(new Uint8Array(data, 0, 7)) !== 'PMTiles' ||\n new Uint8Array(data)[7] !== 3) throw new Error('Expected a PMTiles v3 archive');\n const view = new DataView(data);\n const header = {};\n ['rootDirectoryOffset', 'rootDirectoryLength', 'jsonMetadataOffset', 'jsonMetadataLength', 'leafDirectoryOffset', 'leafDirectoryLength', 'tileDataOffset', 'tileDataLength', 'numAddressedTiles', 'numTileEntries', 'numTileContents'].forEach((name, i) => { header[name] = Number(view.getBigUint64(8 + i * 8, true)); });\n ['clustered', 'internalCompression', 'tileCompression', 'tileType', 'minZoom', 'maxZoom'].forEach((name, i) => { header[name] = view.getUint8(96 + i); });\n ['minLon', 'minLat', 'maxLon', 'maxLat'].forEach((name, i) => { header[name] = 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"],
|
|
5
|
-
"mappings": "AAEO,SAASA,EAAaC,EAAM,CACjC,GAAIA,EAAK,WAAa,KAAO,IAAI,YAAY,EAAE,OAAO,IAAI,WAAWA,EAAM,EAAG,CAAC,CAAC,IAAM,WACpF,IAAI,WAAWA,CAAI,EAAE,CAAC,IAAM,EAAG,MAAM,IAAI,MAAM,+BAA+B,EAChF,MAAMC,EAAO,IAAI,SAASD,CAAI,EACxBE,EAAS,CAAC,EAChB,OAAC,sBAAuB,sBAAuB,qBAAsB,qBAAsB,sBAAuB,sBAAuB,iBAAkB,iBAAkB,oBAAqB,iBAAkB,iBAAiB,EAAE,QAAQ,CAACC,EAAMC,IAAM,CAAEF,EAAOC,CAAI,EAAI,OAAOF,EAAK,aAAa,EAAIG,EAAI,EAAG,EAAI,CAAC,CAAG,CAAC,EAC1T,CAAC,YAAa,sBAAuB,kBAAmB,WAAY,UAAW,SAAS,EAAE,QAAQ,CAACD,EAAMC,IAAM,CAAEF,EAAOC,CAAI,EAAIF,EAAK,SAAS,GAAKG,CAAC,CAAG,CAAC,EACxJ,CAAC,SAAU,SAAU,SAAU,QAAQ,EAAE,QAAQ,CAACD,EAAMC,IAAM,CAAEF,EAAOC,CAAI,EAAIF,EAAK,SAAS,IAAMG,EAAI,EAAG,EAAI,EAAI,GAAK,CAAC,EACxHF,EAAO,WAAaD,EAAK,SAAS,GAAG,EACrCC,EAAO,UAAYD,EAAK,SAAS,IAAK,EAAI,EAAI,IAC9CC,EAAO,UAAYD,EAAK,SAAS,IAAK,EAAI,EAAI,IACvCC,CACT",
|
|
6
|
-
"names": ["decodeHeader", "data", "view", "header", "name", "i"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function d(r){const n=new DataView(r),s=new TextDecoder;let t;if(n.getUint32(0,!0)===1179937895){if(n.getUint32(4,!0)!==2||n.getUint32(8,!0)!==r.byteLength)throw new Error("Invalid GLB header");let o;for(let e=12;e<r.byteLength;){if(e+8>r.byteLength)throw new Error("Truncated GLB chunk");const i=n.getUint32(e,!0),h=n.getUint32(e+4,!0);if(e+=8,e+i>r.byteLength)throw new Error("Truncated GLB data");const c=r.slice(e,e+i);h===1313821514&&(t=JSON.parse(s.decode(c))),h===5130562&&(o=c),e+=i}if(!t)throw new Error("Missing GLB JSON");o&&(t.buffers[0].binary=o)}else t=JSON.parse(s.decode(r));if(t.skins?.length||t.animations?.length||t.extensionsRequired?.length||t.meshes?.some(o=>o.primitives.some(e=>e.targets||e.mode!==void 0&&e.mode!==4)))throw new Error("Layer3D supports static triangle glTF models without required extensions");return t}export{d as decodeModel};
|
|
2
|
-
//# sourceMappingURL=decodeModel.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/decodeModel.js"],
|
|
4
|
-
"sourcesContent": ["/** Decode a static glTF JSON document or GLB v2 container. */\n\nexport function decodeModel(data) {\n const view = new DataView(data), decoder = new TextDecoder();\n let description;\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 new Error('Invalid GLB header');\n }\n let binary;\n for (let offset = 12; offset < data.byteLength;) {\n if (offset + 8 > data.byteLength) {\n throw new Error('Truncated GLB chunk');\n }\n const length = view.getUint32(offset, true), type = view.getUint32(offset + 4, true);\n offset += 8;\n if (offset + length > data.byteLength) {\n throw new Error('Truncated GLB data');\n }\n const 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 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 || description.meshes?.some(mesh => mesh.primitives.some(primitive => primitive.targets || (primitive.mode !== undefined && primitive.mode !== 4)))) {\n throw new Error('Layer3D supports static triangle glTF models without required extensions');\n }\n return description;\n}\n"],
|
|
5
|
-
"mappings": "AAEO,SAASA,EAAYC,EAAM,CAChC,MAAMC,EAAO,IAAI,SAASD,CAAI,EAAGE,EAAU,IAAI,YAC/C,IAAIC,EACJ,GAAIF,EAAK,UAAU,EAAG,EAAI,IAAM,WAAY,CAE1C,GAAIA,EAAK,UAAU,EAAG,EAAI,IAAM,GAAKA,EAAK,UAAU,EAAG,EAAI,IAAMD,EAAK,WACpE,MAAM,IAAI,MAAM,oBAAoB,EAEtC,IAAII,EACJ,QAASC,EAAS,GAAIA,EAASL,EAAK,YAAa,CAC/C,GAAIK,EAAS,EAAIL,EAAK,WACpB,MAAM,IAAI,MAAM,qBAAqB,EAEvC,MAAMM,EAASL,EAAK,UAAUI,EAAQ,EAAI,EAAGE,EAAON,EAAK,UAAUI,EAAS,EAAG,EAAI,EAEnF,GADAA,GAAU,EACNA,EAASC,EAASN,EAAK,WACzB,MAAM,IAAI,MAAM,oBAAoB,EAEtC,MAAMQ,EAAQR,EAAK,MAAMK,EAAQA,EAASC,CAAM,EAC5CC,IAAS,aACXJ,EAAc,KAAK,MAAMD,EAAQ,OAAOM,CAAK,CAAC,GAE5CD,IAAS,UACXH,EAASI,GAEXH,GAAUC,CACZ,CACA,GAAI,CAACH,EACH,MAAM,IAAI,MAAM,kBAAkB,EAEhCC,IACFD,EAAY,QAAQ,CAAC,EAAE,OAASC,EAEpC,MACED,EAAc,KAAK,MAAMD,EAAQ,OAAOF,CAAI,CAAC,EAE/C,GAAIG,EAAY,OAAO,QAAUA,EAAY,YAAY,QAAUA,EAAY,oBAAoB,QAAUA,EAAY,QAAQ,KAAKM,GAAQA,EAAK,WAAW,KAAKC,GAAaA,EAAU,SAAYA,EAAU,OAAS,QAAaA,EAAU,OAAS,CAAE,CAAC,EAC1P,MAAM,IAAI,MAAM,0EAA0E,EAE5F,OAAOP,CACT",
|
|
6
|
-
"names": ["decodeModel", "data", "view", "decoder", "description", "binary", "offset", "length", "type", "chunk", "mesh", "primitive"]
|
|
7
|
-
}
|
package/dist/utils/decompress.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/decompress.js"],
|
|
4
|
-
"sourcesContent": ["export async function decompress(data, compression) {\n if (compression === 1) return data;\n if (compression !== 2) throw new Error(`Unsupported PMTiles compression: ${compression}`);\n return new Response(new Blob([data]).stream().pipeThrough(new DecompressionStream('gzip'))).arrayBuffer();\n}\n"],
|
|
5
|
-
"mappings": "AAAA,eAAsBA,EAAWC,EAAMC,EAAa,CAClD,GAAIA,IAAgB,EAAG,OAAOD,EAC9B,GAAIC,IAAgB,EAAG,MAAM,IAAI,MAAM,oCAAoCA,CAAW,EAAE,EACxF,OAAO,IAAI,SAAS,IAAI,KAAK,CAACD,CAAI,CAAC,EAAE,OAAO,EAAE,YAAY,IAAI,oBAAoB,MAAM,CAAC,CAAC,EAAE,YAAY,CAC1G",
|
|
6
|
-
"names": ["decompress", "data", "compression"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/destroyTexture.js"],
|
|
4
|
-
"sourcesContent": ["\nexport function destroyTexture(layer, texture) {\n layer.renderer.device.queue.onSubmittedWorkDone().then(() => texture.destroy(), error => {\n layer.fire('error', { error });\n texture.destroy();\n });\n}\n"],
|
|
5
|
-
"mappings": "AACO,SAASA,EAAeC,EAAOC,EAAS,CAC7CD,EAAM,SAAS,OAAO,MAAM,oBAAoB,EAAE,KAAK,IAAMC,EAAQ,QAAQ,EAAGC,GAAS,CACvFF,EAAM,KAAK,QAAS,CAAE,MAAAE,CAAM,CAAC,EAC7BD,EAAQ,QAAQ,CAClB,CAAC,CACH",
|
|
6
|
-
"names": ["destroyTexture", "layer", "texture", "error"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/disposeMesh.js"],
|
|
4
|
-
"sourcesContent": ["import { setParent } from './setParent.js';\nimport { update } from './update.js';\n\nexport function disposeMesh(backend, mesh) {\n if (!mesh) {\n return;\n }\n setParent(mesh, null);\n update(backend);\n for (const attribute of Object.values(mesh.geometry.attributes)) {\n attribute.buffer.destroy();\n }\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,aAAAA,MAAiB,iBAC1B,OAAS,UAAAC,MAAc,cAEhB,SAASC,EAAYC,EAASC,EAAM,CACzC,GAAKA,EAGL,CAAAJ,EAAUI,EAAM,IAAI,EACpBH,EAAOE,CAAO,EACd,UAAWE,KAAa,OAAO,OAAOD,EAAK,SAAS,UAAU,EAC5DC,EAAU,OAAO,QAAQ,EAE7B",
|
|
6
|
-
"names": ["setParent", "update", "disposeMesh", "backend", "mesh", "attribute"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function G(b,e,o,m,h){const{geometry:a,program:i}=e,p=b.renderer.device,w=`${m}:${h}`;let c=i.pipelineCache.get(w);c||(c=p.createRenderPipeline({layout:i.pipelineLayout,vertex:{module:i.vertex,entryPoint:"vertexMain",buffers:i.vertexBuffers},fragment:{module:i.fragment,entryPoint:"fragmentMain",targets:[{format:b.renderer.format,blend:i.transparent?{color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}:void 0,writeMask:GPUColorWrite.ALL}]},primitive:{topology:"triangle-list",cullMode:m,frontFace:h},depthStencil:{format:"depth24plus",depthWriteEnabled:i.depthWrite,depthCompare:i.depthTest===!1?"always":"less-equal"}}),i.pipelineCache.set(w,c));const d=i.uniforms,s=b.renderer,B=s.uniformSlot++*256,r=s.uniformData,n=B/4;r.set(e.worldMatrix,n),r.set(d.baseColor.value,n+16),r[n+19]=1,r[n+20]=d.metallic.value,r[n+21]=d.roughness.value,r[n+22]=d.opacity.value*(e.ground?e._appearance??1:1),r[n+23]=d.alphaCutoff.value,r.set(d.emissive.value,n+24),r[n+27]=d.occlusionStrength.value,r[n+28]=e.terrain?.[0]??0,r[n+29]=e.terrain?.[1]??0,r[n+30]=e.terrain?.[2]??0,r[n+31]=e.terrain?.[3]??0,r[n+32]=e.highlight?.[0]??0,r[n+33]=e.highlight?.[1]??0,r[n+34]=i.nightSparkle?r[55]:0,r[n+35]=e.ground?1:e._appearance??1;const f=e._textures||=[];f.length=0;for(const t of i.bindings){const u=d[t.name]?.value;if(!u)throw new Error(`Missing Layer3D texture: ${t.name}`);u.uploaded!==u.image&&(p.queue.copyExternalImageToTexture({source:u.image,flipY:!!u.flipY},{texture:u.texture},[u.image.width,u.image.height]),u.uploaded=u.image),f.push(u)}let x=!e.bindGroup||e.boundBuffer!==s.uniformBuffer||f.length!==e.boundTextures.length;for(let t=0;!x&&t<f.length;t++)(f[t].texture!==e.boundTextures[t][0]||f[t].sampler!==e.boundTextures[t][1])&&(x=!0);if(x){const t=[{binding:0,resource:{buffer:s.uniformBuffer,size:144}},{binding:1,resource:{buffer:s.uniformBuffer,size:240}}];i.terrain&&t.push({binding:2,resource:i.terrain.texture.createView()}),e.boundBuffer=s.uniformBuffer;const u=e.boundTextures||=[];u.length=f.length;for(let l=0;l<f.length;l++){const y=i.bindings[l],g=f[l];t.push({binding:y.texture,resource:g.texture.createView()}),t.push({binding:y.sampler,resource:g.sampler}),u[l]||=[],u[l][0]=g.texture,u[l][1]=g.sampler}e.bindGroup=p.createBindGroup({layout:i.bindGroupLayout,entries:t})}o.setPipeline(c),o.setBindGroup(0,e.bindGroup,[B]),o.setVertexBuffer(0,a.attributes.position.buffer),o.setVertexBuffer(1,a.attributes.normal.buffer),a.attributes.color&&o.setVertexBuffer(2,a.attributes.color.buffer),a.attributes.uv&&o.setVertexBuffer(3,a.attributes.uv.buffer);for(const t of Object.values(a.attributes))t.needsUpdate&&(p.queue.writeBuffer(t.buffer,0,t.data),t.needsUpdate=!1,a.bounds=null);const v=a.attributes.index;v?(o.setIndexBuffer(v.buffer,v.indexFormat),o.drawIndexed(a.drawRange.count,1,a.drawRange.start,0,0)):o.draw(a.drawRange.count,1,a.drawRange.start,0)}export{G as drawGeometry};
|
|
2
|
-
//# sourceMappingURL=drawGeometry.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/drawGeometry.js"],
|
|
4
|
-
"sourcesContent": ["/** Upload retained CPU data and draw one mesh in the active WebGPU render pass. */\n\nexport function drawGeometry(backend, mesh, pass, cullMode, frontFace) {\n const { geometry, program } = mesh;\n const device = backend.renderer.device;\n const pipelineKey = `${cullMode}:${frontFace}`;\n let pipeline = program.pipelineCache.get(pipelineKey);\n if (!pipeline) {\n pipeline = device.createRenderPipeline({\n layout: program.pipelineLayout,\n vertex: {\n module: program.vertex,\n entryPoint: 'vertexMain',\n buffers: program.vertexBuffers,\n },\n fragment: {\n module: program.fragment,\n entryPoint: 'fragmentMain',\n targets: [{\n format: backend.renderer.format,\n blend: program.transparent ? {\n color: { srcFactor: 'src-alpha', dstFactor: 'one-minus-src-alpha', operation: 'add' },\n alpha: { srcFactor: 'one', dstFactor: 'one-minus-src-alpha', operation: 'add' },\n } : undefined,\n writeMask: GPUColorWrite.ALL,\n }],\n },\n primitive: { topology: 'triangle-list', cullMode, frontFace },\n depthStencil: {\n format: 'depth24plus',\n depthWriteEnabled: program.depthWrite,\n depthCompare: program.depthTest === false ? 'always' : 'less-equal',\n },\n });\n program.pipelineCache.set(pipelineKey, pipeline);\n }\n\n const uniforms = program.uniforms;\n const renderer = backend.renderer;\n const offset = renderer.uniformSlot++ * 256;\n const data = renderer.uniformData, base = offset / 4;\n data.set(mesh.worldMatrix, base);\n data.set(uniforms.baseColor.value, base + 16);\n data[base + 19] = 1;\n data[base + 20] = uniforms.metallic.value;\n data[base + 21] = uniforms.roughness.value;\n data[base + 22] = uniforms.opacity.value * (mesh.ground ? mesh._appearance ?? 1 : 1);\n data[base + 23] = uniforms.alphaCutoff.value;\n data.set(uniforms.emissive.value, base + 24);\n data[base + 27] = uniforms.occlusionStrength.value;\n data[base + 28] = mesh.terrain?.[0] ?? 0;\n data[base + 29] = mesh.terrain?.[1] ?? 0;\n data[base + 30] = mesh.terrain?.[2] ?? 0;\n data[base + 31] = mesh.terrain?.[3] ?? 0;\n data[base + 32] = mesh.highlight?.[0] ?? 0;\n data[base + 33] = mesh.highlight?.[1] ?? 0;\n data[base + 34] = program.nightSparkle ? data[55] : 0;\n data[base + 35] = mesh.ground ? 1 : mesh._appearance ?? 1;\n\n const textures = mesh._textures ||= [];\n textures.length = 0;\n for (const binding of program.bindings) {\n const texture = uniforms[binding.name]?.value;\n if (!texture) throw new Error(`Missing Layer3D texture: ${binding.name}`);\n if (texture.uploaded !== texture.image) {\n device.queue.copyExternalImageToTexture(\n { source: texture.image, flipY: Boolean(texture.flipY) },\n { texture: texture.texture },\n [texture.image.width, texture.image.height]\n );\n texture.uploaded = texture.image;\n }\n textures.push(texture);\n }\n let bindingsChanged = !mesh.bindGroup || mesh.boundBuffer !== renderer.uniformBuffer ||\n textures.length !== mesh.boundTextures.length;\n for (let i = 0; !bindingsChanged && i < textures.length; i++) {\n if (textures[i].texture !== mesh.boundTextures[i][0] ||\n textures[i].sampler !== mesh.boundTextures[i][1]) bindingsChanged = true;\n }\n if (bindingsChanged) {\n const entries = [\n { binding: 0, resource: { buffer: renderer.uniformBuffer, size: 144 } },\n { binding: 1, resource: { buffer: renderer.uniformBuffer, size: 240 } },\n ];\n if (program.terrain) entries.push({ binding: 2, resource: program.terrain.texture.createView() });\n mesh.boundBuffer = renderer.uniformBuffer;\n const boundTextures = mesh.boundTextures ||= [];\n boundTextures.length = textures.length;\n for (let i = 0; i < textures.length; i++) {\n const binding = program.bindings[i], texture = textures[i];\n entries.push({ binding: binding.texture, resource: texture.texture.createView() });\n entries.push({ binding: binding.sampler, resource: texture.sampler });\n boundTextures[i] ||= [];\n boundTextures[i][0] = texture.texture;\n boundTextures[i][1] = texture.sampler;\n }\n mesh.bindGroup = device.createBindGroup({\n layout: program.bindGroupLayout,\n entries,\n });\n }\n pass.setPipeline(pipeline);\n pass.setBindGroup(0, mesh.bindGroup, [offset]);\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 for (const 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, 1, geometry.drawRange.start, 0, 0);\n } else {\n pass.draw(geometry.drawRange.count, 1, geometry.drawRange.start, 0);\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["drawGeometry", "backend", "mesh", "pass", "cullMode", "frontFace", "geometry", "program", "device", "pipelineKey", "pipeline", "uniforms", "renderer", "offset", "data", "base", "textures", "binding", "texture", "bindingsChanged", "i", "entries", "boundTextures", "attribute", "index"]
|
|
7
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
const e=`
|
|
2
|
-
fn demSample(pixel: vec2<i32>) -> f32 {
|
|
3
|
-
if (any(pixel < vec2<i32>(0)) || any(pixel >= vec2<i32>(textureDimensions(dem)))) { return -1e9; }
|
|
4
|
-
return textureLoad(dem, pixel, 0).r;
|
|
5
|
-
}
|
|
6
|
-
fn elevation(pixel: vec2<f32>, base: f32) -> f32 {
|
|
7
|
-
let p = pixel - vec2<f32>(0.5);
|
|
8
|
-
let f = fract(p);
|
|
9
|
-
let i = vec2<i32>(floor(p));
|
|
10
|
-
let v00 = demSample(i);
|
|
11
|
-
let v10 = demSample(i + vec2<i32>(1, 0));
|
|
12
|
-
let v01 = demSample(i + vec2<i32>(0, 1));
|
|
13
|
-
let v11 = demSample(i + vec2<i32>(1, 1));
|
|
14
|
-
if (v00 > -1000.0 && v10 > -1000.0 && v01 > -1000.0 && v11 > -1000.0) {
|
|
15
|
-
return mix(mix(v00, v10, f.x), mix(v01, v11, f.x), f.y);
|
|
16
|
-
}
|
|
17
|
-
if (v00 > -1000.0) { return v00; }
|
|
18
|
-
if (v10 > -1000.0) { return v10; }
|
|
19
|
-
if (v01 > -1000.0) { return v01; }
|
|
20
|
-
if (v11 > -1000.0) { return v11; }
|
|
21
|
-
return base;
|
|
22
|
-
}
|
|
23
|
-
`;export{e as elevationWGSL};
|
|
24
|
-
//# sourceMappingURL=elevationWGSL.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/elevationWGSL.js"],
|
|
4
|
-
"sourcesContent": ["/**\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 = `\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"],
|
|
5
|
-
"mappings": "AAIO,MAAMA,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
|
|
6
|
-
"names": ["elevationWGSL"]
|
|
7
|
-
}
|
package/dist/utils/emptyNode.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/emptyNode.js"],
|
|
4
|
-
"sourcesContent": ["/** A fresh, empty scene-graph node. */\nexport const emptyNode = () => ({\n position: [0, 0, 0],\n rotation: [0, 0, 0],\n scale: [1, 1, 1],\n worldMatrix: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\n children: [],\n visible: true,\n});\n"],
|
|
5
|
-
"mappings": "AACO,MAAMA,EAAY,KAAO,CAC9B,SAAU,CAAC,EAAG,EAAG,CAAC,EAClB,SAAU,CAAC,EAAG,EAAG,CAAC,EAClB,MAAO,CAAC,EAAG,EAAG,CAAC,EACf,YAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC5D,SAAU,CAAC,EACX,QAAS,EACX",
|
|
6
|
-
"names": ["emptyNode"]
|
|
7
|
-
}
|
package/dist/utils/endZoom.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{update as a}from"./update.js";function m(){const o=this;for(const e of o._zoomTransitions?.keys()||[])e.finish();o._zoomTransitions=null,o._zoomView=null,delete o._map._cameraView,o._map.getContainer().classList.remove("leaflet-camera-zoom"),o._map._updateCameraOverlays(),o._zoomLevel=null,a(o)}export{m as endZoom};
|
|
2
|
-
//# sourceMappingURL=endZoom.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/endZoom.js"],
|
|
4
|
-
"sourcesContent": ["import { 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 for (const animation of backend._zoomTransitions?.keys() || []) animation.finish();\n backend._zoomTransitions = null;\n backend._zoomView = null;\n delete backend._map._cameraView;\n backend._map.getContainer().classList.remove('leaflet-camera-zoom');\n backend._map._updateCameraOverlays();\n backend._zoomLevel = null;\n update(backend);\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,UAAAA,MAAc,cAIhB,SAASC,GAAU,CACxB,MAAMC,EAAU,KAChB,UAAWC,KAAaD,EAAQ,kBAAkB,KAAK,GAAK,CAAC,EAAGC,EAAU,OAAO,EACjFD,EAAQ,iBAAmB,KAC3BA,EAAQ,UAAY,KACpB,OAAOA,EAAQ,KAAK,YACpBA,EAAQ,KAAK,aAAa,EAAE,UAAU,OAAO,qBAAqB,EAClEA,EAAQ,KAAK,sBAAsB,EACnCA,EAAQ,WAAa,KACrBF,EAAOE,CAAO,CAChB",
|
|
6
|
-
"names": ["update", "endZoom", "backend", "animation"]
|
|
7
|
-
}
|