leaflet-city-mapper 0.0.9 → 0.1.1
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 +6 -46
- package/dist/README.md +18 -0
- package/dist/leaflet-city-mapper-src.js +279 -110
- package/dist/leaflet-city-mapper-src.js.map +4 -4
- package/dist/leaflet-city-mapper-worker-src.js.map +2 -2
- package/dist/leaflet-city-mapper-worker.js.map +2 -2
- package/dist/leaflet-city-mapper.js +5 -5
- package/dist/leaflet-city-mapper.js.map +4 -4
- package/libs/README.md +18 -0
- package/libs/leaflet-lens.js +151 -151
- package/libs/leaflet.js +3 -3
- package/libs/openlayers-bindings.js +1129 -1129
- package/libs/openlayers-bindings.min.js.map +1 -1
- package/package.json +2 -4
- package/src/README.md +148 -0
- package/src/animations/README.md +30 -0
- package/src/animations/cancelCameraAnimation.js +13 -11
- package/src/animations/cancelGridFade.js +5 -3
- package/src/animations/endZoom.js +0 -5
- package/src/animations/mapAnimateCamera.js +13 -3
- package/src/animations/mapStopPitchBearingAnimation.js +8 -1
- package/src/animations/onZoomAnim.js +5 -4
- package/src/animations/renderPendingZoomAnimation.js +1 -4
- package/src/animations/runCameraAnimations.js +7 -4
- package/src/animations/runGridFades.js +1 -4
- package/src/animations/runMarkerPanFrame.js +1 -1
- package/src/animations/scheduleCameraAnimation.js +10 -8
- package/src/animations/scheduleGridFade.js +5 -4
- package/src/animations/scheduleMarkerPan.js +10 -6
- package/src/animations/startZoom.js +0 -3
- package/src/animations/synchronizeZoomView.js +6 -1
- package/src/animations/updateZoomCamera.js +21 -17
- package/src/archives/README.md +28 -0
- package/src/archives/decodeDirectory.js +13 -2
- package/src/archives/decodeHeader.js +9 -2
- package/src/archives/decompress.js +10 -0
- package/src/archives/findDirectoryEntry.js +17 -9
- package/src/archives/findTile.js +45 -31
- package/src/archives/getDirectoryEntries.js +28 -17
- package/src/archives/getHeader.js +7 -2
- package/src/archives/getTileData.js +26 -13
- package/src/archives/getZxy.js +11 -3
- package/src/archives/loadDirectory.js +10 -0
- package/src/archives/loadSource.js +12 -3
- package/src/archives/readArchiveRange.js +45 -31
- package/src/archives/readVarint.js +11 -2
- package/src/archives/tileId.js +11 -2
- package/src/astronomy/README.md +25 -0
- package/src/astronomy/horizontalPosition.js +11 -0
- package/src/astronomy/moonPosition.js +9 -2
- package/src/astronomy/solarPosition.js +9 -2
- package/src/astronomy/solarTime.js +21 -11
- package/src/camera/README.md +30 -0
- package/src/camera/cameraMapReady.js +6 -8
- package/src/camera/cleanupCameraMap.js +8 -10
- package/src/camera/constrainCameraToBounds.js +3 -2
- package/src/camera/createSceneCamera.js +25 -21
- package/src/camera/fitCameraBounds.js +9 -1
- package/src/camera/getBearing.js +10 -5
- package/src/camera/getPitch.js +10 -5
- package/src/camera/initializeCameraMap.js +1 -3
- package/src/camera/mapCamera.js +0 -2
- package/src/camera/mapContainerPointToLayerPoint.js +7 -2
- package/src/camera/mapGetBearing.js +7 -2
- package/src/camera/mapGetBounds.js +5 -2
- package/src/camera/mapGetBoundsCenterZoom.js +9 -2
- package/src/camera/mapGetBoundsZoom.js +9 -2
- package/src/camera/mapGetCenterLayerPoint.js +5 -1
- package/src/camera/mapGetPitch.js +7 -2
- package/src/camera/mapLayerPointToContainerPoint.js +7 -1
- package/src/camera/mapLimitCenter.js +9 -2
- package/src/camera/mapLimitOffset.js +12 -6
- package/src/camera/mapPanBy.js +10 -3
- package/src/camera/mapPanInside.js +8 -2
- package/src/camera/mapResetNorth.js +8 -0
- package/src/camera/mapResetNorthPitch.js +8 -0
- package/src/camera/mapSetBearing.js +10 -0
- package/src/camera/mapSetPitch.js +10 -0
- package/src/camera/mapSetPitchAndBearing.js +12 -3
- package/src/camera/mapSetZoomAround.js +9 -1
- package/src/camera/mapTryAnimatedPan.js +8 -1
- package/src/camera/mapUpdateCameraOverlays.js +6 -0
- package/src/camera/setBearing.js +13 -5
- package/src/camera/setPitch.js +13 -5
- package/src/camera/updateMapCamera.js +6 -4
- package/src/camera/updateSceneCamera.js +7 -1
- package/src/camera/updateSky.js +1 -3
- package/src/cog/README.md +29 -0
- package/src/cog/decodeCogTile.js +37 -24
- package/src/cog/finiteCogValues.js +12 -5
- package/src/cog/getCogAssetEntry.js +26 -15
- package/src/cog/getCogBase.js +22 -10
- package/src/cog/getCogHeader.js +10 -3
- package/src/cog/getCogProfile.js +25 -16
- package/src/cog/getCogTile.js +25 -12
- package/src/cog/getColorTile.js +38 -25
- package/src/cog/getElevationTile.js +29 -16
- package/src/cog/hasCogProjection.js +16 -9
- package/src/cog/initCog.js +13 -7
- package/src/cog/invalidCogFullResponse.js +10 -3
- package/src/cog/openCog.js +40 -30
- package/src/cog/openCogAsset.js +22 -14
- package/src/cog/readCog.js +39 -25
- package/src/cog/readCogBlock.js +19 -8
- package/src/cog/readCogBody.js +30 -20
- package/src/cog/readCogDirectories.js +32 -20
- package/src/cog/readCogDirectory.js +34 -21
- package/src/cog/readCogLevel.js +36 -27
- package/src/cog/readCogTag.js +28 -15
- package/src/cog/validCogDimensions.js +15 -6
- package/src/cog/validCogEncoding.js +18 -5
- package/src/cog/validCogGeoArrays.js +17 -8
- package/src/cog/validCogGrid.js +22 -9
- package/src/cog/validCogTileCoordinates.js +13 -4
- package/src/cog/validateCogContainer.js +17 -9
- package/src/cog/validateCogContentRange.js +18 -8
- package/src/cog/validateCogOffsets.js +19 -10
- package/src/cog/validateCogRange.js +16 -7
- package/src/cog/validateCogResponse.js +26 -15
- package/src/collision/README.md +28 -0
- package/src/collision/advanceFeature.js +13 -0
- package/src/collision/boxNormal.js +29 -0
- package/src/collision/cachedCollider.js +18 -0
- package/src/collision/collectIntersections.js +41 -16
- package/src/collision/collectMeshes.js +6 -0
- package/src/collision/collideTrip.js +56 -0
- package/src/collision/collider.js +28 -18
- package/src/collision/countCrossings.js +35 -15
- package/src/collision/enclosesOrigin.js +13 -0
- package/src/collision/flipsNormal.js +15 -0
- package/src/collision/hiddenLightHit.js +19 -8
- package/src/collision/horizontalRay.js +13 -1
- package/src/collision/indexTriangle.js +18 -11
- package/src/collision/insideMesh.js +47 -33
- package/src/collision/insideWalker.js +52 -46
- package/src/collision/intersectMeshes.js +40 -32
- package/src/collision/localRay.js +31 -21
- package/src/collision/mergeHits.js +19 -11
- package/src/collision/missesBox.js +13 -0
- package/src/collision/rayBounds.js +28 -19
- package/src/collision/readTriangle.js +32 -23
- package/src/collision/slabDistance.js +14 -0
- package/src/collision/slabMiss.js +14 -0
- package/src/collision/sortCrossings.js +17 -0
- package/src/collision/sortHits.js +9 -1
- package/src/collision/trafficBounds.js +24 -0
- package/src/collision/trafficCollision.js +30 -55
- package/src/collision/trafficRay.js +21 -0
- package/src/collision/transformTriangle.js +18 -9
- package/src/collision/transformVertices.js +18 -0
- package/src/collision/triangleDistance.js +34 -21
- package/src/collision/vertexCount.js +11 -3
- package/src/collision/worldHit.js +30 -18
- package/src/colors/README.md +25 -0
- package/src/colors/formatRGB.js +7 -0
- package/src/colors/hslChannel.js +10 -0
- package/src/colors/mixColor.js +10 -0
- package/src/colors/parseColor.js +4 -1
- package/src/colors/toSRGB.js +7 -0
- package/src/controls/README.md +26 -0
- package/src/controls/acceptPitchDrag.js +10 -3
- package/src/controls/acceptRotateDrag.js +9 -2
- package/src/controls/addCameraHandler.js +18 -11
- package/src/controls/adjustCameraDrag.js +8 -10
- package/src/controls/cameraControls.js +5 -4
- package/src/controls/cameraDragClick.js +5 -1
- package/src/controls/cameraDragContextMenu.js +10 -6
- package/src/controls/cameraDragDown.js +5 -2
- package/src/controls/cameraDragEnd.js +7 -3
- package/src/controls/cameraDragMove.js +24 -20
- package/src/controls/changeCameraTouch.js +12 -14
- package/src/controls/cleanupCameraTouch.js +1 -4
- package/src/controls/compassAddHooks.js +1 -0
- package/src/controls/compassOrientation.js +11 -5
- package/src/controls/compassRemoveHooks.js +3 -2
- package/src/controls/containerResizeAddHooks.js +1 -0
- package/src/controls/containerResizeRemoveHooks.js +3 -2
- package/src/controls/dragCamera.js +11 -2
- package/src/controls/endAllCameraDrags.js +1 -2
- package/src/controls/endAllCameraTouches.js +1 -2
- package/src/controls/endCameraTouch.js +18 -12
- package/src/controls/endCameraTouchEvent.js +5 -2
- package/src/controls/failCompassPermission.js +10 -4
- package/src/controls/finishCameraDrag.js +14 -8
- package/src/controls/finishCompassPermission.js +24 -17
- package/src/controls/isEditableTarget.js +9 -2
- package/src/controls/loadCameraControls.js +18 -9
- package/src/controls/moveCameraTouch.js +30 -27
- package/src/controls/notifyCameraTouchChange.js +1 -0
- package/src/controls/pitchDragAddHooks.js +1 -1
- package/src/controls/pitchDragRemoveHooks.js +1 -0
- package/src/controls/refreshRotateControl.js +2 -0
- package/src/controls/refreshRotateFocus.js +3 -2
- package/src/controls/removeCameraDrag.js +18 -15
- package/src/controls/resizeMap.js +7 -2
- package/src/controls/rotateButtonClick.js +15 -10
- package/src/controls/rotateButtonKeydown.js +16 -10
- package/src/controls/rotateControl.js +11 -3
- package/src/controls/rotateOnAdd.js +7 -1
- package/src/controls/rotateOnRemove.js +5 -0
- package/src/controls/shiftRotateAddHooks.js +1 -1
- package/src/controls/shiftRotateRemoveHooks.js +3 -2
- package/src/controls/shiftRotateWheel.js +11 -6
- package/src/controls/startCameraTouch.js +5 -2
- package/src/core/README.md +28 -0
- package/src/core/adjustCameraMarkerPan.js +7 -2
- package/src/core/cameraCircleBounds.js +5 -1
- package/src/core/cameraMarkerDrag.js +1 -2
- package/src/core/cameraMarkerOnDrag.js +13 -10
- package/src/core/closestCameraLayerPoint.js +7 -1
- package/src/core/constructLayer.js +16 -9
- package/src/core/extendLeafletClass.js +12 -5
- package/src/core/extendTerrainPixelBounds.js +41 -31
- package/src/core/fireRasterLoad.js +1 -1
- package/src/core/gridlayerGetEvents.js +5 -2
- package/src/core/gridlayerGetTiledPixelBounds.js +7 -1
- package/src/core/initializeGridContainer.js +1 -1
- package/src/core/initializeNativeLayer.js +1 -4
- package/src/core/layerAddInitHook.js +12 -7
- package/src/core/layerCallInitHooks.js +1 -2
- package/src/core/layerMergeOptions.js +14 -7
- package/src/core/markerGetEvents.js +5 -2
- package/src/core/markerInitInteraction.js +7 -4
- package/src/core/markerSetIcon.js +10 -5
- package/src/core/markerSetPos.js +5 -2
- package/src/core/markerSetRotation.js +19 -9
- package/src/core/markerUpdateZIndex.js +6 -4
- package/src/core/popupAdjustPan.js +5 -2
- package/src/core/popupGetEvents.js +5 -1
- package/src/core/popupUpdatePosition.js +1 -2
- package/src/core/projectNativePath.js +30 -23
- package/src/core/redrawPath.js +11 -6
- package/src/core/removeLayer.js +23 -20
- package/src/core/setRotation.js +12 -5
- package/src/core/tooltipGetEvents.js +5 -1
- package/src/core/tooltipSetPosition.js +5 -2
- package/src/core/updateGridOpacity.js +2 -1
- package/src/core/whenReady.js +11 -8
- package/src/geometry/README.md +29 -0
- package/src/geometry/addBridges.js +30 -28
- package/src/geometry/addGeneratedTriangle.js +7 -3
- package/src/geometry/appendAreaTriangle.js +32 -17
- package/src/geometry/appendNativeTriangle.js +17 -3
- package/src/geometry/appendRouteDash.js +33 -15
- package/src/geometry/appendRouteSegment.js +28 -15
- package/src/geometry/assembleAreaGeometry.js +48 -41
- package/src/geometry/boundsQuad.js +8 -0
- package/src/geometry/box.js +10 -0
- package/src/geometry/bridgeEdge.js +18 -11
- package/src/geometry/bridgeElevation.js +8 -1
- package/src/geometry/bridgeFaces.js +22 -15
- package/src/geometry/bridgePaths.js +19 -11
- package/src/geometry/bridgePolygon.js +37 -31
- package/src/geometry/bridgeSides.js +18 -11
- package/src/geometry/buildGeometryParts.js +7 -0
- package/src/geometry/buildProjectedPoint.js +32 -21
- package/src/geometry/buildProjectedPolygon.js +34 -25
- package/src/geometry/circleAt.js +18 -5
- package/src/geometry/circleGeometry.js +41 -35
- package/src/geometry/clipLine.js +8 -1
- package/src/geometry/clipSegment.js +9 -0
- package/src/geometry/computeBounds.js +5 -2
- package/src/geometry/conformModelToTerrain.js +6 -3
- package/src/geometry/createLampRing.js +8 -0
- package/src/geometry/createModelGeometry.js +44 -34
- package/src/geometry/createRasterQuadGeometry.js +7 -1
- package/src/geometry/createTreeRing.js +8 -1
- package/src/geometry/crossVector.js +15 -7
- package/src/geometry/dashValues.js +23 -14
- package/src/geometry/dashedSegment.js +33 -21
- package/src/geometry/disk.js +9 -0
- package/src/geometry/diskAt.js +16 -4
- package/src/geometry/emitter.js +18 -8
- package/src/geometry/fillNativePolygon.js +28 -20
- package/src/geometry/generateTreeGeometry.js +15 -9
- package/src/geometry/indexBridge.js +34 -28
- package/src/geometry/instanceAreaGeometry.js +37 -31
- package/src/geometry/interpolateRoute.js +10 -2
- package/src/geometry/lampPostGeometry.js +9 -2
- package/src/geometry/lightGeometry.js +9 -2
- package/src/geometry/line.js +28 -21
- package/src/geometry/lineJoin.js +35 -26
- package/src/geometry/markerImageBounds.js +20 -11
- package/src/geometry/markerQuadCorners.js +9 -3
- package/src/geometry/meshShadowBounds.js +33 -24
- package/src/geometry/nativeGeometry.js +9 -1
- package/src/geometry/offsetBelowGround.js +10 -3
- package/src/geometry/polygon.js +7 -0
- package/src/geometry/quad.js +23 -9
- package/src/geometry/restoreGeometry.js +29 -23
- package/src/geometry/roofCoverage.js +29 -22
- package/src/geometry/roofFootprint.js +36 -28
- package/src/geometry/routeGeometry.js +7 -2
- package/src/geometry/samePoint.js +11 -3
- package/src/geometry/segment.js +32 -23
- package/src/geometry/setVertexColor.js +1 -1
- package/src/geometry/shadowBounds.js +8 -0
- package/src/geometry/subtractRoofTile.js +28 -19
- package/src/geometry/subtractVector.js +8 -0
- package/src/geometry/surface.js +11 -1
- package/src/geometry/terrainBuffers.js +33 -26
- package/src/geometry/terrainGrid.js +7 -2
- package/src/geometry/terrainTileGeometry.js +24 -15
- package/src/geometry/treeGeometry.js +7 -4
- package/src/geometry/triangle.js +11 -0
- package/src/geometry/validateTree.js +19 -7
- package/src/geometry/vertexNormals.js +8 -2
- package/src/geometry/visitNativeCoordinates.js +7 -0
- package/src/globals/CELL.js +6 -2
- package/src/globals/Compass.js +5 -0
- package/src/globals/ContainerResize.js +5 -0
- package/src/globals/HEIGHT.js +5 -0
- package/src/globals/L.js +6 -1
- package/src/globals/PitchDrag.js +5 -0
- package/src/globals/README.md +28 -0
- package/src/globals/ShiftRotate.js +5 -0
- package/src/globals/TILE_RADIUS.js +5 -0
- package/src/globals/TILE_SIZE.js +5 -0
- package/src/globals/TouchMode.js +5 -0
- package/src/globals/alphaBlend.js +5 -0
- package/src/globals/archiveDecoder.js +5 -0
- package/src/globals/archiveNorthWest.js +5 -0
- package/src/globals/archiveSouthEast.js +5 -0
- package/src/globals/atmosphereColor.js +5 -0
- package/src/globals/atmosphereStops.js +5 -0
- package/src/globals/blobParts.js +5 -0
- package/src/globals/cameraAngles.js +5 -0
- package/src/globals/cameraAnimatedOptions.js +5 -0
- package/src/globals/cameraAnimationFrame.js +5 -0
- package/src/globals/cameraAnimations.js +5 -0
- package/src/globals/cameraBearingSensitivity.js +5 -0
- package/src/globals/cameraDragSensitivity.js +5 -0
- package/src/globals/cameraDrags.js +5 -0
- package/src/globals/cameraEmptyOptions.js +5 -0
- package/src/globals/cameraFocusOptions.js +5 -0
- package/src/globals/cameraFov.js +8 -3
- package/src/globals/cameraListenerOptions.js +5 -0
- package/src/globals/cameraTouchStates.js +5 -0
- package/src/globals/cameraZeroPadding.js +5 -0
- package/src/globals/cogTags.js +6 -1
- package/src/globals/colorLayout.js +5 -0
- package/src/globals/colorTexture.js +11 -6
- package/src/globals/coreEventTypes.js +5 -0
- package/src/globals/coreMatrixKeys.js +5 -0
- package/src/globals/coreQuadIndices.js +5 -0
- package/src/globals/coreQuadUV.js +5 -0
- package/src/globals/coreSampler.js +5 -0
- package/src/globals/coreWhite.js +5 -0
- package/src/globals/cosObliquity.js +8 -3
- package/src/globals/coverageTiles.js +5 -0
- package/src/globals/dark.js +5 -0
- package/src/globals/defaultMaterial.js +5 -0
- package/src/globals/degrees.js +6 -1
- package/src/globals/demBuffer.js +5 -0
- package/src/globals/demLayout.js +5 -0
- package/src/globals/demSize.js +5 -0
- package/src/globals/demTarget.js +5 -0
- package/src/globals/demTexture.js +5 -0
- package/src/globals/depthBindGroup.js +5 -0
- package/src/globals/depthTexture.js +5 -0
- package/src/globals/directoryReader.js +5 -0
- package/src/globals/disabledShadow.js +5 -0
- package/src/globals/drawEntries.js +5 -0
- package/src/globals/drawFrameEntry.js +5 -0
- package/src/globals/drawMeshEntry.js +5 -0
- package/src/globals/drawSamplerEntries.js +5 -0
- package/src/globals/drawTerrainEntry.js +5 -0
- package/src/globals/drawTextureEntries.js +5 -0
- package/src/globals/earthCirc.js +6 -1
- package/src/globals/elevationWGSL.js +2 -0
- package/src/globals/fragmentShader.js +5 -0
- package/src/globals/frameBuffer.js +5 -0
- package/src/globals/frameCommands.js +5 -0
- package/src/globals/frameLayoutEntry.js +5 -0
- package/src/globals/geometryDecoder.js +5 -0
- package/src/globals/geometryEmpty.js +5 -0
- package/src/globals/geometryImageOptions.js +5 -0
- package/src/globals/geometryPixelStates.js +5 -0
- package/src/globals/geometryQuaternion.js +5 -0
- package/src/globals/geometryScale.js +5 -0
- package/src/globals/geometrySemantics.js +5 -0
- package/src/globals/geometryTranslation.js +5 -0
- package/src/globals/geometryWorkerUrl.js +8 -3
- package/src/globals/glass.js +5 -0
- package/src/globals/gridEvents.js +5 -0
- package/src/globals/gridFadeFrame.js +5 -0
- package/src/globals/halfRadians.js +6 -1
- package/src/globals/headerBounds.js +5 -0
- package/src/globals/headerFlags.js +5 -0
- package/src/globals/headerOffsets.js +5 -0
- package/src/globals/headlight.js +5 -0
- package/src/globals/hull.js +5 -0
- package/src/globals/instanceLayout.js +5 -0
- package/src/globals/lampDirections.js +13 -8
- package/src/globals/layerControlAddItem.js +8 -3
- package/src/globals/layerProto.js +5 -0
- package/src/globals/leafletLayer.js +8 -3
- package/src/globals/lightScale.js +6 -1
- package/src/globals/limbs.js +5 -1
- package/src/globals/loading.js +5 -0
- package/src/globals/mapMethods.js +5 -0
- package/src/globals/markerMethods.js +5 -0
- package/src/globals/markerPanFrame.js +5 -0
- package/src/globals/meshBindGroup.js +5 -0
- package/src/globals/meshBuffer.js +5 -0
- package/src/globals/meshCopySize.js +5 -0
- package/src/globals/meshImage.js +5 -0
- package/src/globals/meshLayoutEntry.js +5 -0
- package/src/globals/meshOffsets.js +5 -0
- package/src/globals/meshPipeline.js +5 -0
- package/src/globals/meshStack.js +5 -0
- package/src/globals/meshTarget.js +5 -0
- package/src/globals/moves.js +5 -1
- package/src/globals/mvtTextDecoder.js +6 -1
- package/src/globals/nativeMethodHandlers.js +5 -0
- package/src/globals/nativeScalableStyleKeys.js +6 -1
- package/src/globals/nextId.js +5 -0
- package/src/globals/normalLayout.js +5 -0
- package/src/globals/paints.js +5 -0
- package/src/globals/parts.js +5 -0
- package/src/globals/pendingGridFades.js +5 -0
- package/src/globals/pendingInitializations.js +5 -0
- package/src/globals/pendingMapChanges.js +5 -0
- package/src/globals/pendingMarkerPan.js +5 -0
- package/src/globals/pendingPlacements.js +5 -0
- package/src/globals/pendingRasterLoads.js +5 -0
- package/src/globals/pendingUpdates.js +5 -0
- package/src/globals/pendingZoomAnimations.js +5 -0
- package/src/globals/pipelineLayout.js +5 -0
- package/src/globals/popupEvents.js +5 -0
- package/src/globals/popupPan.js +5 -0
- package/src/globals/popupPosition.js +5 -0
- package/src/globals/positionLayout.js +5 -0
- package/src/globals/programEntries.js +5 -0
- package/src/globals/programLayout.js +5 -0
- package/src/globals/radians.js +5 -0
- package/src/globals/rasterBuffer.js +5 -0
- package/src/globals/rasterIndices.js +5 -0
- package/src/globals/rasterNormals.js +5 -0
- package/src/globals/rasterPoint.js +5 -0
- package/src/globals/rasterPositions.js +5 -0
- package/src/globals/rasterSampler.js +5 -0
- package/src/globals/rasterTexture.js +5 -0
- package/src/globals/rasterUVs.js +5 -0
- package/src/globals/removeLayer.js +5 -0
- package/src/globals/renderEmpty.js +5 -0
- package/src/globals/ringDirections.js +5 -0
- package/src/globals/roofBindGroup.js +5 -0
- package/src/globals/roofBlitSampler.js +5 -0
- package/src/globals/roofBuffer.js +5 -0
- package/src/globals/roofCommands.js +5 -0
- package/src/globals/roofCopySize.js +5 -0
- package/src/globals/roofImage.js +5 -0
- package/src/globals/roofMin.js +5 -0
- package/src/globals/roofOpacities.js +5 -0
- package/src/globals/roofPass.js +5 -0
- package/src/globals/roofPipeline.js +5 -0
- package/src/globals/roofSampler.js +5 -0
- package/src/globals/roofShader.js +5 -0
- package/src/globals/roofSignatures.js +5 -0
- package/src/globals/roofSize.js +5 -0
- package/src/globals/roofTarget.js +5 -0
- package/src/globals/roofTexture.js +5 -0
- package/src/globals/roofTiles.js +5 -0
- package/src/globals/roundProfile.js +5 -0
- package/src/globals/samplerLayoutEntries.js +5 -0
- package/src/globals/sceneCleanupFields.js +5 -0
- package/src/globals/sceneEmptyOptions.js +5 -0
- package/src/globals/scenePass.js +5 -0
- package/src/globals/sceneSunlightUniforms.js +5 -0
- package/src/globals/sceneTransferFields.js +5 -0
- package/src/globals/sceneWalkHandlers.js +5 -0
- package/src/globals/shadowBindGroup.js +5 -0
- package/src/globals/shadowBounds.js +5 -0
- package/src/globals/shadowCamera.js +5 -0
- package/src/globals/shadowDepthLayout.js +5 -0
- package/src/globals/shadowHigh.js +5 -0
- package/src/globals/shadowInstanceLayouts.js +5 -0
- package/src/globals/shadowLayouts.js +5 -0
- package/src/globals/shadowLow.js +5 -0
- package/src/globals/shadowMeshLayout.js +5 -0
- package/src/globals/shadowOffsets.js +5 -0
- package/src/globals/shadowPass.js +5 -0
- package/src/globals/shadowPipeline.js +5 -0
- package/src/globals/shadowPipelineLayout.js +5 -0
- package/src/globals/shadowShader.js +5 -0
- package/src/globals/shadowTexture.js +5 -0
- package/src/globals/shadowValues.js +5 -0
- package/src/globals/shirt.js +5 -0
- package/src/globals/sinObliquity.js +8 -3
- package/src/globals/sizes.js +5 -0
- package/src/globals/skin.js +5 -0
- package/src/globals/speed.js +5 -1
- package/src/globals/sunBindGroup.js +5 -0
- package/src/globals/taillight.js +5 -0
- package/src/globals/tau.js +6 -1
- package/src/globals/terrainLayoutEntry.js +5 -0
- package/src/globals/textureLayoutEntries.js +5 -0
- package/src/globals/tiledBounds.js +5 -0
- package/src/globals/tooltipEvents.js +5 -0
- package/src/globals/tooltipPosition.js +5 -0
- package/src/globals/trafficClocks.js +5 -0
- package/src/globals/trafficEmptyList.js +5 -0
- package/src/globals/trafficEmptyOptions.js +5 -0
- package/src/globals/trafficRouteMaterial.js +5 -0
- package/src/globals/trafficShader.js +5 -1
- package/src/globals/triangleContexts.js +5 -0
- package/src/globals/trousers.js +5 -0
- package/src/globals/types.js +5 -0
- package/src/globals/tyre.js +5 -0
- package/src/globals/uVLayout.js +5 -0
- package/src/globals/vectorStyleNamedColors.js +13 -8
- package/src/globals/vectorTileEvents.js +6 -1
- package/src/globals/vehicles.js +2 -0
- package/src/globals/vertexShader.js +5 -0
- package/src/globals/wantedTiles.js +5 -0
- package/src/globals/white.js +5 -0
- package/src/globals/workerCogSource.js +6 -1
- package/src/gpu/README.md +29 -0
- package/src/gpu/initializeRendererResources.js +39 -34
- package/src/gpu/initializeSharedRenderer.js +51 -44
- package/src/gpu/mountRenderer.js +25 -19
- package/src/gpu/releaseRenderer.js +8 -0
- package/src/gpu/rendererDeviceError.js +5 -3
- package/src/gpu/rendererDeviceLost.js +5 -3
- package/src/gpu/reportShaderCompilation.js +8 -0
- package/src/gpu/requestAdapter.js +8 -0
- package/src/gpu/requestDevice.js +9 -0
- package/src/gpu/showWebGPUWarning.js +5 -0
- package/src/index.js +0 -2
- package/src/layer-controls/README.md +25 -0
- package/src/layer-controls/layerControlInputId.js +18 -11
- package/src/layer-controls/layerCountTitle.js +16 -6
- package/src/layer-controls/placeEntry.js +9 -0
- package/src/layer-controls/placeEntryElement.js +29 -22
- package/src/layer-controls/placeUnderEntry.js +7 -0
- package/src/layer-controls/removeEntry.js +1 -0
- package/src/layer-controls/renderLayerCount.js +28 -20
- package/src/layer-controls/replaceEntry.js +1 -2
- package/src/layer-controls/runPlacements.js +1 -2
- package/src/layer-controls/underEntry.js +6 -2
- package/src/layer-controls/updateLayerCount.js +5 -1
- package/src/lighting/README.md +28 -0
- package/src/lighting/cacheLightGrid.js +9 -1
- package/src/lighting/collectLightMeshes.js +7 -1
- package/src/lighting/lightGrid.js +10 -1
- package/src/lighting/updatePointLights.js +7 -3
- package/src/lighting/visitLightCells.js +26 -13
- package/src/lighting/visitLightGridCells.js +11 -0
- package/src/lighting/worldLights.js +8 -1
- package/src/lighting/writeLightCell.js +14 -5
- package/src/materials/README.md +28 -0
- package/src/materials/createProgram.js +8 -4
- package/src/materials/createProgramLayout.js +44 -36
- package/src/materials/createProgramUniforms.js +25 -18
- package/src/materials/modelMaterialFor.js +29 -21
- package/src/materials/prepareMeshCutout.js +21 -12
- package/src/materials/terrainRasterProgram.js +57 -50
- package/src/materials/validateRoofMaterial.js +17 -10
- package/src/models/README.md +27 -0
- package/src/models/applyModelTransform.js +16 -12
- package/src/models/buildModelNodes.js +24 -14
- package/src/models/createModelContext.js +24 -15
- package/src/models/decodeModel.js +13 -2
- package/src/models/hasUnsupportedPrimitives.js +7 -0
- package/src/models/loadBuffer.js +16 -6
- package/src/models/loadModel.js +10 -7
- package/src/models/loadModelResources.js +22 -14
- package/src/models/modelNode.js +11 -1
- package/src/models/normalizeAccessor.js +21 -11
- package/src/models/prepareModel.js +29 -19
- package/src/models/prepareModelGeometry.js +35 -25
- package/src/models/prepareModelPrimitive.js +25 -17
- package/src/models/readAccessor.js +10 -4
- package/src/models/readAccessorValue.js +16 -7
- package/src/models/readAccessorValues.js +17 -0
- package/src/models/readModelAttributes.js +32 -20
- package/src/models/readModelIndices.js +28 -16
- package/src/models/readSparseAccessor.js +31 -19
- package/src/models/releaseModelResources.js +15 -10
- package/src/mvt/README.md +28 -0
- package/src/mvt/addMvtCrossings.js +23 -17
- package/src/mvt/appendMvtBandTriangles.js +42 -31
- package/src/mvt/appendMvtCoordinates.js +20 -11
- package/src/mvt/appendMvtPolygonTriangles.js +29 -19
- package/src/mvt/beginMvtPath.js +19 -9
- package/src/mvt/closeMvtPath.js +16 -7
- package/src/mvt/collectMvtEdges.js +29 -19
- package/src/mvt/createMvtReader.js +14 -7
- package/src/mvt/decodeVectorTile.js +39 -32
- package/src/mvt/expectMvtWire.js +11 -3
- package/src/mvt/finishMvtPath.js +14 -5
- package/src/mvt/finiteMvtCoordinate.js +14 -7
- package/src/mvt/groupMvtPolygons.js +35 -25
- package/src/mvt/isMvtFallbackError.js +13 -6
- package/src/mvt/mergeMvtActiveEdges.js +18 -9
- package/src/mvt/mvtEdgeX.js +12 -4
- package/src/mvt/mvtPathsVertices.js +15 -8
- package/src/mvt/mvtPolygonPaths.js +19 -12
- package/src/mvt/numericMvtValue.js +11 -4
- package/src/mvt/readMvtFeature.js +46 -34
- package/src/mvt/readMvtField.js +17 -8
- package/src/mvt/readMvtGeometry.js +42 -29
- package/src/mvt/readMvtInteger.js +22 -12
- package/src/mvt/readMvtKnownValue.js +30 -21
- package/src/mvt/readMvtLayer.js +40 -31
- package/src/mvt/readMvtMessage.js +18 -10
- package/src/mvt/readMvtNumber.js +18 -9
- package/src/mvt/readMvtNumbers.js +18 -11
- package/src/mvt/readMvtString.js +14 -6
- package/src/mvt/readMvtValue.js +29 -19
- package/src/mvt/skipMvtField.js +22 -14
- package/src/mvt/sortMvtActiveEdges.js +20 -15
- package/src/mvt/sortedMvtLevels.js +29 -22
- package/src/mvt/takeMvtBytes.js +18 -8
- package/src/mvt/tessellateVectorRings.js +26 -19
- package/src/mvt/triangulateVectorRings.js +23 -19
- package/src/native/README.md +27 -0
- package/src/native/beforeNativeRender.js +21 -16
- package/src/native/bypassNativeEvent.js +21 -11
- package/src/native/canScaleNativeStyle.js +26 -17
- package/src/native/compareNativeHits.js +10 -2
- package/src/native/createNativeMesh.js +46 -31
- package/src/native/disposeNativeLayer.js +3 -2
- package/src/native/forwardNativeError.js +8 -3
- package/src/native/getGridTerrainTile.js +47 -34
- package/src/native/gridTerrainElevation.js +34 -26
- package/src/native/handleNativeMapEvent.js +9 -4
- package/src/native/hideTargets.js +6 -0
- package/src/native/initNativeGPU.js +6 -3
- package/src/native/isCurrentNativeLayer.js +9 -4
- package/src/native/loadGridTerrain.js +36 -26
- package/src/native/nativeAddLatLng.js +7 -0
- package/src/native/nativeBringToBack.js +7 -0
- package/src/native/nativeBringToFront.js +7 -0
- package/src/native/nativeEventSource.js +27 -18
- package/src/native/nativeEvents.js +5 -4
- package/src/native/nativeLayer.js +10 -6
- package/src/native/nativeLayerMethod.js +9 -2
- package/src/native/nativeProgram.js +28 -20
- package/src/native/nativeRedraw.js +7 -0
- package/src/native/nativeSetBounds.js +7 -0
- package/src/native/nativeSetIcon.js +7 -0
- package/src/native/nativeSetLatLng.js +7 -0
- package/src/native/nativeSetLatLngs.js +7 -0
- package/src/native/nativeSetOpacity.js +7 -0
- package/src/native/nativeSetRadius.js +7 -0
- package/src/native/nativeSetStyle.js +7 -0
- package/src/native/nativeSetUrl.js +7 -0
- package/src/native/nativeSetZIndex.js +7 -0
- package/src/native/nativeSetZIndexOffset.js +7 -0
- package/src/native/nativeTerrainElevation.js +27 -16
- package/src/native/nativeVectorGeometry.js +30 -23
- package/src/native/orderNativeGridLayer.js +20 -14
- package/src/native/prepareGridTerrainRequests.js +23 -16
- package/src/native/pruneNativeResources.js +25 -20
- package/src/native/putNativeMesh.js +14 -0
- package/src/native/quadNativeMesh.js +11 -1
- package/src/native/readyNativeGPU.js +10 -6
- package/src/native/refreshNativeEvent.js +5 -0
- package/src/native/refreshNativeLayer.js +5 -3
- package/src/native/refreshNativeLayerContract.js +5 -2
- package/src/native/rejectNativeReady.js +7 -2
- package/src/native/removeNativeEvents.js +18 -14
- package/src/native/removeTargets.js +5 -2
- package/src/native/reorderNativeLayer.js +5 -3
- package/src/native/resolveNativeReady.js +5 -2
- package/src/native/restoreNativeEvents.js +8 -5
- package/src/native/retainGridTerrain.js +15 -10
- package/src/native/styleNativeMesh.js +17 -11
- package/src/native/syncGridLayer.js +5 -1
- package/src/native/syncGridTile.js +28 -18
- package/src/native/syncImageOverlay.js +10 -5
- package/src/native/syncMarker.js +5 -0
- package/src/native/syncNativeStrokeAnchors.js +18 -12
- package/src/native/syncNativeStrokeZoom.js +34 -29
- package/src/native/syncTerrainGridTile.js +38 -28
- package/src/native/syncVectorLayer.js +5 -0
- package/src/native/synchronizeNativeLayer.js +5 -3
- package/src/native/terrainGridMesh.js +47 -34
- package/src/native/updateNativeHover.js +15 -7
- package/src/native/updateNativeLayerView.js +3 -3
- package/src/native/updateNativeStrokeRadius.js +14 -9
- package/src/picking/README.md +29 -0
- package/src/picking/collectVisibleMesh.js +8 -0
- package/src/picking/findFeature.js +4 -4
- package/src/picking/hit.js +14 -7
- package/src/picking/hitColliderCell.js +29 -19
- package/src/picking/hitMesh.js +8 -2
- package/src/picking/onClick.js +6 -5
- package/src/picking/onPointerLeave.js +5 -5
- package/src/picking/onPointerMove.js +6 -5
- package/src/picking/pointerClick.js +5 -0
- package/src/picking/pointerLeave.js +1 -0
- package/src/picking/pointerMove.js +5 -0
- package/src/picking/raycast.js +2 -4
- package/src/picking/setHighlight.js +6 -5
- package/src/picking/shouldSkipOther.js +8 -2
- package/src/picking/showFeature.js +7 -4
- package/src/picking/validateCameraInverse.js +15 -8
- package/src/projections/README.md +28 -0
- package/src/projections/cameraAngles.js +8 -1
- package/src/projections/displayContainerPoint.js +32 -23
- package/src/projections/groundBounds.js +9 -1
- package/src/projections/localPixel.js +8 -0
- package/src/projections/localPixelForGeometry.js +8 -1
- package/src/projections/localPosition.js +8 -2
- package/src/projections/markerCameraIconPoint.js +9 -1
- package/src/projections/projectBridgePoint.js +16 -4
- package/src/projections/projectCameraPoint.js +11 -1
- package/src/projections/projectCelestialBody.js +11 -2
- package/src/projections/projectRing.js +11 -1
- package/src/projections/projectTreePoint.js +9 -1
- package/src/projections/toPoint.js +12 -4
- package/src/projections/transformZoomAnimationPoint.js +16 -9
- package/src/projections/verticalGroundY.js +14 -3
- package/src/projections/walkerLocalPosition.js +7 -0
- package/src/raster/README.md +28 -0
- package/src/raster/addRasterTile.js +10 -2
- package/src/raster/comparePendingTiles.js +8 -0
- package/src/raster/createRasterMesh.js +6 -5
- package/src/raster/finishRasterAttachment.js +9 -4
- package/src/raster/finishRasterTile.js +11 -2
- package/src/raster/getRasterEvents.js +7 -0
- package/src/raster/getRasterTileSize.js +5 -1
- package/src/raster/initRaster.js +6 -3
- package/src/raster/isRasterLoading.js +7 -3
- package/src/raster/loadRasterTile.js +8 -3
- package/src/raster/onPMTileAdd.js +6 -3
- package/src/raster/onPMTileRemove.js +6 -3
- package/src/raster/pruneRasterTiles.js +7 -3
- package/src/raster/pumpRasterTiles.js +5 -4
- package/src/raster/rasterTileRange.js +32 -23
- package/src/raster/readyRaster.js +8 -3
- package/src/raster/registerTerrainTile.js +9 -3
- package/src/raster/releaseRasterTile.js +6 -3
- package/src/raster/releaseRasterTiles.js +5 -3
- package/src/raster/removeRasterTile.js +6 -3
- package/src/raster/reportRasterError.js +8 -0
- package/src/raster/retainRasterTiles.js +19 -14
- package/src/raster/setPMTileOpacity.js +8 -0
- package/src/raster/setPMTileZIndex.js +8 -0
- package/src/raster/setRasterOpacity.js +6 -3
- package/src/raster/setRasterTerrain.js +6 -3
- package/src/raster/setRasterZIndex.js +6 -3
- package/src/raster/updateAttachedTiles.js +9 -3
- package/src/raster/updateRasterTiles.js +5 -5
- package/src/rendering/README.md +32 -0
- package/src/rendering/collectFrameMeshes.js +7 -3
- package/src/rendering/collectMeshes.js +11 -0
- package/src/rendering/collectVisibleMesh.js +48 -39
- package/src/rendering/compareMeshDepth.js +14 -6
- package/src/rendering/compareMeshes.js +10 -1
- package/src/rendering/createMesh.js +8 -5
- package/src/rendering/disposeMesh.js +6 -0
- package/src/rendering/drawGeometry.js +9 -2
- package/src/rendering/drawPipeline.js +44 -34
- package/src/rendering/drawSceneMeshes.js +9 -3
- package/src/rendering/nativeStrokeExpansion.js +11 -4
- package/src/rendering/prepareFrameBuffer.js +22 -16
- package/src/rendering/prepareFrameMeshes.js +10 -3
- package/src/rendering/prepareFrameUniforms.js +8 -3
- package/src/rendering/prepareMeshUniforms.js +36 -27
- package/src/rendering/render.js +2 -5
- package/src/rendering/resizeRenderer.js +6 -3
- package/src/rendering/revealRoofMesh.js +43 -34
- package/src/scene/README.md +36 -0
- package/src/scene/addRegisteredLayer.js +5 -4
- package/src/scene/addSceneLayer.js +22 -16
- package/src/scene/attachLayer.js +8 -3
- package/src/scene/attachSharedScene.js +6 -1
- package/src/scene/callLayer.js +31 -25
- package/src/scene/cancelUpdate.js +5 -3
- package/src/scene/createLayer.js +12 -6
- package/src/scene/createSceneNode.js +5 -1
- package/src/scene/emptyEvents.js +5 -0
- package/src/scene/failAttachment.js +9 -3
- package/src/scene/get3DEvents.js +7 -3
- package/src/scene/getLocation.js +10 -6
- package/src/scene/init3D.js +6 -3
- package/src/scene/initializeLayer.js +9 -2
- package/src/scene/initializerFor.js +8 -0
- package/src/scene/isNativeLayer.js +17 -11
- package/src/scene/layerInitialize.js +7 -4
- package/src/scene/onAdd3DLayer.js +6 -4
- package/src/scene/onMapChange.js +0 -5
- package/src/scene/onRemove3DLayer.js +6 -5
- package/src/scene/ready3D.js +9 -3
- package/src/scene/releaseSharedScene.js +6 -2
- package/src/scene/removeLayerEvents.js +1 -3
- package/src/scene/removeSceneLayer.js +20 -14
- package/src/scene/renderPendingMapChange.js +1 -4
- package/src/scene/renderPendingUpdates.js +5 -4
- package/src/scene/reportLayerError.js +9 -3
- package/src/scene/resolveNextInitialization.js +5 -2
- package/src/scene/restoreObject.js +6 -3
- package/src/scene/scheduleSceneUpdate.js +7 -6
- package/src/scene/setParent.js +6 -2
- package/src/scene/traverse.js +7 -2
- package/src/shaders/README.md +29 -0
- package/src/shaders/materialBaseShader.js +26 -17
- package/src/shaders/materialShaders.js +9 -1
- package/src/shaders/materialSurfaceShader.js +60 -47
- package/src/shaders/materialVertexShader.js +89 -77
- package/src/shaders/nativeStrokeShader.js +13 -6
- package/src/shaders/roofVertexShader.js +16 -9
- package/src/shadows/README.md +28 -0
- package/src/shadows/bindSunlight.js +5 -3
- package/src/shadows/drawShadowMeshes.js +7 -2
- package/src/shadows/ensureShadowPipeline.js +7 -0
- package/src/shadows/renderSunlight.js +8 -4
- package/src/shadows/resizeSunlight.js +6 -3
- package/src/shadows/shadowCacheMatches.js +11 -1
- package/src/shadows/shadowMatrix.js +8 -1
- package/src/shadows/shadowMeshMatches.js +19 -11
- package/src/sources/README.md +33 -0
- package/src/sources/attachAreaMesh.js +5 -4
- package/src/sources/buildArea.js +13 -2
- package/src/sources/buildAreaFeature.js +7 -1
- package/src/sources/buildAreaFeatures.js +23 -14
- package/src/sources/compareAreaDistance.js +8 -0
- package/src/sources/extrusionStyle.js +21 -10
- package/src/sources/featureAnchor.js +21 -9
- package/src/sources/groundOffset.js +9 -2
- package/src/sources/initVectorTiles.js +21 -15
- package/src/sources/initializeGeoJSON.js +6 -3
- package/src/sources/isVectorTileSource.js +11 -4
- package/src/sources/matchesAreaTile.js +17 -7
- package/src/sources/pendingSourceAreas.js +26 -19
- package/src/sources/prepareAreaGeometryJob.js +34 -24
- package/src/sources/projectAreaPolygons.js +25 -15
- package/src/sources/pumpSourceAreas.js +6 -6
- package/src/sources/readyVectorTiles.js +17 -10
- package/src/sources/releaseArea.js +6 -4
- package/src/sources/setGeoJSONData.js +8 -3
- package/src/sources/setGeoJSONLayerData.js +7 -0
- package/src/sources/sourceAreaContext.js +9 -2
- package/src/sources/updateArea.js +5 -5
- package/src/sources/updateSourceStatus.js +6 -3
- package/src/sunlight/README.md +28 -0
- package/src/sunlight/addTimeControlToMap.js +17 -10
- package/src/sunlight/addTimeLayer.js +10 -5
- package/src/sunlight/atmosphere.js +9 -2
- package/src/sunlight/createSun.js +7 -0
- package/src/sunlight/initSunlight.js +5 -0
- package/src/sunlight/initializeTimeControl.js +15 -13
- package/src/sunlight/onAddSun.js +35 -26
- package/src/sunlight/onAddTimeControl.js +12 -5
- package/src/sunlight/onRemoveSun.js +10 -10
- package/src/sunlight/removeSun.js +22 -20
- package/src/sunlight/removeTimeControl.js +13 -7
- package/src/sunlight/removeTimeLayer.js +8 -5
- package/src/sunlight/requestSunlightRender.js +10 -7
- package/src/sunlight/styleTimeControl.js +13 -7
- package/src/sunlight/tickSun.js +10 -5
- package/src/sunlight/updateCelestialDisc.js +23 -12
- package/src/sunlight/updateSky.js +5 -3
- package/src/sunlight/updateSun.js +42 -40
- package/src/sunlight/useLiveTime.js +11 -6
- package/src/sunlight/useSelectedTime.js +24 -22
- package/src/terrain/README.md +30 -0
- package/src/terrain/applyTerrain.js +26 -20
- package/src/terrain/clearLayerTerrain.js +5 -3
- package/src/terrain/copyTerrainTile.js +20 -12
- package/src/terrain/getElevation.js +8 -5
- package/src/terrain/initTerrain.js +5 -3
- package/src/terrain/loadReadyTerrain.js +6 -5
- package/src/terrain/loadTerrain.js +10 -2
- package/src/terrain/loadTerrainTiles.js +10 -3
- package/src/terrain/mapElevationOf.js +19 -11
- package/src/terrain/onTerrainAdd.js +8 -4
- package/src/terrain/onTerrainChange.js +5 -5
- package/src/terrain/onTerrainRemove.js +6 -3
- package/src/terrain/readBridges.js +13 -4
- package/src/terrain/readyTerrainOf.js +14 -7
- package/src/terrain/sampleTerrainTile.js +16 -7
- package/src/terrain/setLayerTerrain.js +5 -3
- package/src/terrain/setTerrainHeight.js +5 -4
- package/src/terrain/terrainAtlas.js +8 -2
- package/src/terrain/terrainElevation.js +8 -2
- package/src/terrain/terrainTileQueue.js +31 -24
- package/src/textures/README.md +29 -0
- package/src/textures/addImageState.js +12 -7
- package/src/textures/attachRasterImage.js +1 -2
- package/src/textures/bindMeshTextures.js +57 -50
- package/src/textures/collectRoofTiles.js +21 -14
- package/src/textures/compareRoofTiles.js +8 -0
- package/src/textures/composeRoofAtlas.js +11 -3
- package/src/textures/destroyTexture.js +6 -4
- package/src/textures/destroyTextureAfterSubmission.js +9 -0
- package/src/textures/ensureRoofBlit.js +5 -0
- package/src/textures/loadModelImage.js +28 -18
- package/src/textures/modelTextureFor.js +45 -37
- package/src/textures/modelTextureSampler.js +7 -2
- package/src/textures/nativeImageError.js +5 -1
- package/src/textures/nativeImageRefresh.js +5 -2
- package/src/textures/nativeTextureFor.js +11 -3
- package/src/textures/prepareMeshTextures.js +31 -23
- package/src/textures/rebuildRoofAtlas.js +8 -3
- package/src/textures/removeImageState.js +11 -6
- package/src/textures/resizeRoofTexture.js +30 -23
- package/src/textures/restoreMaterialTextures.js +22 -16
- package/src/textures/textureBinding.js +9 -0
- package/src/textures/updateRoofAtlas.js +25 -19
- package/src/textures/updateRoofRaster.js +8 -0
- package/src/textures/uploadCanvasTexture.js +15 -0
- package/src/textures/uploadMeshTexture.js +32 -26
- package/src/textures/uploadNativeImage.js +26 -13
- package/src/textures/uploadRoofTile.js +29 -23
- package/src/traffic/README.md +30 -0
- package/src/traffic/addTraffic.js +5 -2
- package/src/traffic/clockMinutes.js +7 -0
- package/src/traffic/compareDepartures.js +8 -0
- package/src/traffic/createTrafficMesh.js +15 -4
- package/src/traffic/destroyTrafficGpu.js +5 -0
- package/src/traffic/disposeTrafficObject.js +14 -11
- package/src/traffic/drawTrafficRoute.js +5 -1
- package/src/traffic/failTraffic.js +12 -6
- package/src/traffic/failedTrafficLoad.js +9 -2
- package/src/traffic/featuresToTrafficLanes.js +8 -0
- package/src/traffic/fetchTrafficLanes.js +21 -10
- package/src/traffic/groundTraffic.js +5 -1
- package/src/traffic/initTraffic.js +17 -15
- package/src/traffic/loadTraffic.js +5 -0
- package/src/traffic/loadedTrafficLanes.js +19 -12
- package/src/traffic/locateTraffic.js +20 -11
- package/src/traffic/moveTraffic.js +21 -15
- package/src/traffic/placeTraffic.js +5 -0
- package/src/traffic/prepareTraffic.js +5 -3
- package/src/traffic/readyTraffic.js +8 -3
- package/src/traffic/rebaseTraffic.js +5 -3
- package/src/traffic/rebuildTrafficMesh.js +5 -1
- package/src/traffic/refreshTrafficTrips.js +42 -32
- package/src/traffic/removeTraffic.js +5 -2
- package/src/traffic/routeColor.js +13 -6
- package/src/traffic/scheduledTrips.js +5 -2
- package/src/traffic/startTraffic.js +10 -5
- package/src/traffic/tickTraffic.js +5 -3
- package/src/traffic/trafficBounds.js +5 -0
- package/src/traffic/trafficNow.js +14 -9
- package/src/traffic/trafficStatusText.js +13 -5
- package/src/traffic/trafficStorage.js +13 -5
- package/src/traffic/trafficTooltip.js +7 -0
- package/src/traffic/tripsAt.js +9 -2
- package/src/traffic/updateTraffic.js +11 -8
- package/src/traffic/updateTrafficLights.js +23 -18
- package/src/traffic/updateTrafficPose.js +15 -8
- package/src/traffic/updateTrafficTerrain.js +12 -7
- package/src/traffic/uploadTrafficLanes.js +27 -21
- package/src/traffic/vehicleOffsets.js +9 -3
- package/src/transforms/README.md +27 -0
- package/src/transforms/composeLocalTransform.js +23 -16
- package/src/transforms/modelNodeMatrix.js +7 -2
- package/src/transforms/transformNativePoint.js +19 -7
- package/src/transforms/updateWorldMatrix.js +5 -2
- package/src/transforms/worldMatrixChanged.js +26 -18
- package/src/triangulation/README.md +26 -0
- package/src/triangulation/area.js +7 -0
- package/src/triangulation/clean.js +9 -0
- package/src/triangulation/clipEars.js +32 -23
- package/src/triangulation/connectHole.js +30 -18
- package/src/triangulation/containsVertex.js +10 -0
- package/src/triangulation/cross.js +12 -3
- package/src/triangulation/crossesBoundary.js +10 -0
- package/src/triangulation/crossesRing.js +9 -0
- package/src/triangulation/equal.js +11 -3
- package/src/triangulation/inside.js +8 -0
- package/src/triangulation/insideHole.js +8 -0
- package/src/triangulation/intersects.js +21 -11
- package/src/triangulation/isClockWise.js +4 -1
- package/src/triangulation/mergeHoles.js +19 -11
- package/src/triangulation/minimumX.js +7 -0
- package/src/triangulation/on.js +13 -4
- package/src/triangulation/polygonRings.js +22 -14
- package/src/triangulation/sortHoles.js +7 -0
- package/src/triangulation/triangulate.js +3 -2
- package/src/triangulation/validateArea.js +19 -10
- package/src/utils/README.md +16 -0
- package/src/utils/compareDistance.js +11 -3
- package/src/utils/noOperation.js +1 -0
- package/src/utils/wrap.js +7 -0
- package/src/utils/yieldTask.js +12 -5
- package/src/vector-style/README.md +27 -0
- package/src/vector-style/appendQuotedStyleCharacter.js +30 -22
- package/src/vector-style/arrayContainsRange.js +18 -8
- package/src/vector-style/evaluateBoolean.js +31 -18
- package/src/vector-style/evaluateCoalesceOrCase.js +34 -21
- package/src/vector-style/evaluateComparison.js +29 -16
- package/src/vector-style/evaluateIExpression.js +21 -8
- package/src/vector-style/evaluateInput.js +16 -6
- package/src/vector-style/evaluateInterpolate.js +36 -27
- package/src/vector-style/evaluateMatch.js +21 -12
- package/src/vector-style/evaluateMath.js +26 -14
- package/src/vector-style/evaluateMembership.js +29 -18
- package/src/vector-style/evaluateNegation.js +26 -13
- package/src/vector-style/evaluatePrimitive.js +21 -9
- package/src/vector-style/evaluateStep.js +20 -11
- package/src/vector-style/evaluateStyle.js +43 -33
- package/src/vector-style/evaluateToExpression.js +27 -14
- package/src/vector-style/fillVectorPaint.js +26 -17
- package/src/vector-style/lineVectorPaint.js +31 -21
- package/src/vector-style/parseFunctionalColor.js +23 -14
- package/src/vector-style/parseHexColor.js +20 -13
- package/src/vector-style/parseVectorStyle.js +20 -13
- package/src/vector-style/readPaintValue.js +17 -6
- package/src/vector-style/removeTrailingCommas.js +19 -12
- package/src/vector-style/scaleDashArray.js +25 -13
- package/src/vector-style/skipStyleComment.js +20 -9
- package/src/vector-style/stripStyleComments.js +28 -21
- package/src/vector-style/styleColor.js +18 -11
- package/src/vector-style/validateVectorLayers.js +18 -10
- package/src/vector-style/vectorPaint.js +17 -8
- package/src/vector-style/visibleStyle.js +16 -7
- package/src/vector-tiles/README.md +30 -0
- package/src/vector-tiles/appendVectorBatch.js +34 -22
- package/src/vector-tiles/attachVectorTileBatch.js +25 -17
- package/src/vector-tiles/attachVectorTileBatches.js +26 -15
- package/src/vector-tiles/compareVectorLabelPriority.js +11 -3
- package/src/vector-tiles/compareVectorTileDistance.js +11 -3
- package/src/vector-tiles/configureVectorTileLayer.js +8 -0
- package/src/vector-tiles/createVectorLabel.js +37 -22
- package/src/vector-tiles/forwardVectorTileError.js +10 -5
- package/src/vector-tiles/loadVectorSprite.js +14 -5
- package/src/vector-tiles/loadVectorTile.js +45 -36
- package/src/vector-tiles/onVectorTileAdd.js +44 -39
- package/src/vector-tiles/onVectorTileMessage.js +15 -10
- package/src/vector-tiles/onVectorTileRemove.js +25 -20
- package/src/vector-tiles/onVectorTileWorkerError.js +16 -11
- package/src/vector-tiles/paintVectorTileBatch.js +18 -12
- package/src/vector-tiles/prepareVectorLabel.js +34 -25
- package/src/vector-tiles/prepareVectorStyleLayer.js +38 -30
- package/src/vector-tiles/prepareVectorTile.js +29 -16
- package/src/vector-tiles/projectVectorPaths.js +25 -15
- package/src/vector-tiles/projectVectorPoint.js +15 -6
- package/src/vector-tiles/projectVectorTriangles.js +28 -18
- package/src/vector-tiles/pruneVectorTiles.js +14 -11
- package/src/vector-tiles/pumpVectorTiles.js +21 -18
- package/src/vector-tiles/readTileJSON.js +27 -17
- package/src/vector-tiles/readVectorStyle.js +28 -17
- package/src/vector-tiles/refreshVectorTiles.js +8 -5
- package/src/vector-tiles/reserveVectorLabelCells.js +14 -6
- package/src/vector-tiles/retireVectorTileGroup.js +20 -13
- package/src/vector-tiles/revokeVectorWorkerUrl.js +14 -9
- package/src/vector-tiles/rotateVectorLabel.js +19 -12
- package/src/vector-tiles/rotateVectorLabels.js +9 -6
- package/src/vector-tiles/simplifyVectorPath.js +29 -21
- package/src/vector-tiles/updateVectorLabelMarker.js +36 -27
- package/src/vector-tiles/updateVectorLabelStyle.js +14 -8
- package/src/vector-tiles/updateVectorTileLabels.js +33 -28
- package/src/vector-tiles/updateVectorTilePaint.js +25 -20
- package/src/vector-tiles/updateVectorTiles.js +32 -29
- package/src/vector-tiles/validateVectorTileZooms.js +15 -6
- package/src/vector-tiles/vectorFeaturePaint.js +25 -15
- package/src/vector-tiles/vectorFeaturePaths.js +26 -16
- package/src/vector-tiles/vectorFeatureZoom.js +18 -8
- package/src/vector-tiles/vectorLabelAnchors.js +31 -24
- package/src/vector-tiles/vectorLabelCandidates.js +18 -11
- package/src/vector-tiles/vectorLabelCells.js +32 -23
- package/src/vector-tiles/vectorLabelIcon.js +38 -30
- package/src/vector-tiles/vectorLabelProperty.js +12 -3
- package/src/vector-tiles/vectorLabelText.js +19 -10
- package/src/vector-tiles/vectorSpriteIcon.js +19 -11
- package/src/vector-tiles/vectorStraightRun.js +23 -14
- package/src/vector-tiles/vectorStyleDependencies.js +22 -15
- package/src/vector-tiles/vectorStyleValue.js +16 -5
- package/src/vector-tiles/vectorStyleZoom.js +12 -6
- package/src/vector-tiles/vectorTileAwaited.js +17 -9
- package/src/vector-tiles/vectorTileOverlaps.js +12 -4
- package/src/vector-tiles/vectorTilePaint.js +18 -10
- package/src/vector-tiles/vectorTileSettings.js +27 -17
- package/src/vector-tiles/vectorTilesIdle.js +11 -3
- package/src/vector-tiles/vectorTolerance.js +11 -4
- package/src/vector-tiles/wrapVectorLabel.js +17 -11
- package/src/vehicles/README.md +27 -0
- package/src/vehicles/bicycleModel.js +7 -1
- package/src/vehicles/boatBenches.js +5 -0
- package/src/vehicles/boatModel.js +32 -32
- package/src/vehicles/buildCarriage.js +9 -1
- package/src/vehicles/busModel.js +10 -2
- package/src/vehicles/carModel.js +34 -33
- package/src/vehicles/metroModel.js +8 -0
- package/src/vehicles/mirrorVehiclePart.js +11 -0
- package/src/vehicles/pedestrianModel.js +7 -1
- package/src/vehicles/tramModel.js +8 -0
- package/src/walk/README.md +30 -0
- package/src/walk/animateWalker.js +5 -4
- package/src/walk/createWalk.js +6 -3
- package/src/walk/initWalk.js +5 -0
- package/src/walk/initializeWalkControl.js +11 -6
- package/src/walk/isWalkBlocked.js +15 -6
- package/src/walk/landWalker.js +35 -31
- package/src/walk/moveWalker.js +35 -22
- package/src/walk/onAddWalkControl.js +40 -31
- package/src/walk/onRemoveWalkControl.js +17 -12
- package/src/walk/onWalkBlur.js +3 -2
- package/src/walk/onWalkKey.js +5 -2
- package/src/walk/onWalkPointer.js +6 -0
- package/src/walk/onWalkTerrain.js +3 -2
- package/src/walk/placeWalker.js +1 -2
- package/src/walk/resolveWalkerPosition.js +33 -28
- package/src/walk/startWalking.js +1 -1
- package/src/walk/stepWalkerHeight.js +18 -11
- package/src/walk/stopWalking.js +1 -0
- package/src/walk/toggleWalking.js +3 -2
- package/src/walk/updateWalkerFrame.js +29 -19
- package/src/walk/updateWalkerView.js +31 -22
- package/src/weakmaps/README.md +33 -0
- package/src/weakmaps/addedByLayer.js +5 -0
- package/src/weakmaps/archiveHeaderByLayer.js +5 -0
- package/src/weakmaps/areasByLayer.js +5 -0
- package/src/weakmaps/boundsMethods.js +5 -0
- package/src/weakmaps/bridgeMeshByLayer.js +5 -0
- package/src/weakmaps/bridgesByLayer.js +5 -0
- package/src/weakmaps/cameraAnimationByMap.js +5 -0
- package/src/weakmaps/cameraBearingByMap.js +5 -0
- package/src/weakmaps/cameraByLayer.js +5 -0
- package/src/weakmaps/cameraDraggableByMap.js +5 -0
- package/src/weakmaps/cameraFields.js +5 -0
- package/src/weakmaps/cameraFrameByMap.js +5 -0
- package/src/weakmaps/cameraHandlersByMap.js +6 -1
- package/src/weakmaps/cameraMaps.js +5 -0
- package/src/weakmaps/cameraPitchByMap.js +5 -0
- package/src/weakmaps/cameraReadyByMap.js +5 -0
- package/src/weakmaps/cameraTouchStateByMap.js +5 -0
- package/src/weakmaps/cameraViewByMap.js +5 -0
- package/src/weakmaps/cameraZIndexOffsetByLayer.js +5 -0
- package/src/weakmaps/closestMethods.js +5 -0
- package/src/weakmaps/colliders.js +5 -0
- package/src/weakmaps/containerByLayer.js +5 -0
- package/src/weakmaps/controlByLayer.js +5 -0
- package/src/weakmaps/countStatusByLayer.js +5 -0
- package/src/weakmaps/cursorByLayer.js +5 -0
- package/src/weakmaps/demByLayer.js +5 -0
- package/src/weakmaps/directoriesByLayer.js +5 -0
- package/src/weakmaps/dragByHandler.js +5 -0
- package/src/weakmaps/dragStates.js +5 -0
- package/src/weakmaps/etagByLayer.js +5 -0
- package/src/weakmaps/eventMapByLayer.js +5 -0
- package/src/weakmaps/eventsByLayer.js +5 -0
- package/src/weakmaps/fadeFrameByLayer.js +5 -0
- package/src/weakmaps/fadeVersionByLayer.js +5 -0
- package/src/weakmaps/frameByLayer.js +5 -0
- package/src/weakmaps/geojsonByLayer.js +5 -0
- package/src/weakmaps/geometryWorkersByMap.js +6 -1
- package/src/weakmaps/gridInitializers.js +5 -0
- package/src/weakmaps/groupByLayer.js +5 -0
- package/src/weakmaps/headerByLayer.js +5 -0
- package/src/weakmaps/highlightedFeatureByLayer.js +5 -0
- package/src/weakmaps/hoveredFeatureByLayer.js +5 -0
- package/src/weakmaps/imageStates.js +5 -0
- package/src/weakmaps/inflightByLayer.js +5 -0
- package/src/weakmaps/kindByLayer.js +5 -0
- package/src/weakmaps/layersByLayer.js +5 -0
- package/src/weakmaps/loadingTilesByLayer.js +5 -0
- package/src/weakmaps/locationByLayer.js +5 -0
- package/src/weakmaps/modelByLayer.js +5 -0
- package/src/weakmaps/modelUrlByLayer.js +5 -0
- package/src/weakmaps/nativeEventMaps.js +5 -0
- package/src/weakmaps/nativeGPUBackByMap.js +5 -0
- package/src/weakmaps/nativeGPUByLayer.js +5 -0
- package/src/weakmaps/nativeGPUOrderByMap.js +5 -0
- package/src/weakmaps/nativeProgramsByRenderer.js +6 -1
- package/src/weakmaps/nativeRenderByLayer.js +5 -0
- package/src/weakmaps/pathProjectionByMap.js +6 -1
- package/src/weakmaps/pitchSkyByMap.js +5 -0
- package/src/weakmaps/pointerEventsByLayer.js +5 -0
- package/src/weakmaps/pruneAfterByLayer.js +5 -0
- package/src/weakmaps/pruneVersionByLayer.js +5 -0
- package/src/weakmaps/pruneWantedByLayer.js +5 -0
- package/src/weakmaps/queuedByLayer.js +5 -0
- package/src/weakmaps/rasterGeometryByLayer.js +5 -0
- package/src/weakmaps/rasterProgramByLayer.js +5 -0
- package/src/weakmaps/rasterTilesByLayer.js +5 -0
- package/src/weakmaps/rasterVersionByLayer.js +5 -0
- package/src/weakmaps/raycasterByLayer.js +5 -0
- package/src/weakmaps/readyByLayer.js +5 -0
- package/src/weakmaps/rendererByLayer.js +5 -0
- package/src/weakmaps/rendererDevices.js +5 -0
- package/src/weakmaps/rendererReadyByLayer.js +5 -0
- package/src/weakmaps/renderers.js +5 -0
- package/src/weakmaps/roofRasterByLayer.js +5 -0
- package/src/weakmaps/roofRastersByLayer.js +5 -0
- package/src/weakmaps/rootByLayer.js +5 -0
- package/src/weakmaps/rotateControlByMap.js +5 -0
- package/src/weakmaps/sceneByLayer.js +5 -0
- package/src/weakmaps/sceneFields.js +5 -0
- package/src/weakmaps/sceneLayers.js +5 -0
- package/src/weakmaps/sceneOriginByLayer.js +5 -0
- package/src/weakmaps/shadowMeshesByLayer.js +5 -0
- package/src/weakmaps/sharedByLayer.js +5 -0
- package/src/weakmaps/sizeByLayer.js +5 -0
- package/src/weakmaps/state3dByLayer.js +5 -0
- package/src/weakmaps/streamTerrainByLayer.js +6 -1
- package/src/weakmaps/streamTerrainByMap.js +6 -1
- package/src/weakmaps/sunByMap.js +6 -1
- package/src/weakmaps/sunlightByControl.js +5 -0
- package/src/weakmaps/sunlightByMap.js +5 -0
- package/src/weakmaps/terrain3DByLayer.js +5 -0
- package/src/weakmaps/terrain3DByMap.js +5 -0
- package/src/weakmaps/terrainArchiveByLayer.js +5 -0
- package/src/weakmaps/terrainBaseYByLayer.js +5 -0
- package/src/weakmaps/terrainBoundsByLayer.js +5 -0
- package/src/weakmaps/terrainControllerByLayer.js +5 -0
- package/src/weakmaps/terrainGridsByLayer.js +5 -0
- package/src/weakmaps/terrainLoadingByLayer.js +5 -0
- package/src/weakmaps/terrainOriginElevationByLayer.js +5 -0
- package/src/weakmaps/terrainPromiseByLayer.js +5 -0
- package/src/weakmaps/terrainReadyByLayer.js +5 -0
- package/src/weakmaps/terrainRequestByLayer.js +5 -0
- package/src/weakmaps/terrainSourceByLayer.js +5 -0
- package/src/weakmaps/terrainTilesByLayer.js +5 -0
- package/src/weakmaps/terrainZoomByLayer.js +5 -0
- package/src/weakmaps/tileZoomByLayer.js +5 -0
- package/src/weakmaps/timeControlByMap.js +5 -0
- package/src/weakmaps/tooltipByLayer.js +5 -0
- package/src/weakmaps/touchByContainer.js +5 -0
- package/src/weakmaps/touchPitchByMap.js +5 -0
- package/src/weakmaps/touchRotateByMap.js +5 -0
- package/src/weakmaps/trafficByLayer.js +5 -0
- package/src/weakmaps/typeByLayer.js +5 -0
- package/src/weakmaps/urlByLayer.js +5 -0
- package/src/weakmaps/vectorTileOptionsByLayer.js +6 -1
- package/src/weakmaps/vectorWorkerByLayer.js +6 -1
- package/src/weakmaps/visibleMeshesByLayer.js +5 -0
- package/src/weakmaps/walkByMap.js +6 -1
- package/src/weakmaps/walkerByLayer.js +5 -0
- package/src/weakmaps/wantedRasterTilesByLayer.js +5 -0
- package/src/weakmaps/workerMapByLayer.js +6 -1
- package/src/weakmaps/zoomLevelByLayer.js +5 -0
- package/src/weakmaps/zoomTransitionsByLayer.js +5 -0
- package/src/weakmaps/zoomViewByLayer.js +5 -0
- package/src/workers/README.md +33 -0
- package/src/workers/acquireGeometryWorker.js +39 -29
- package/src/workers/buildAreaInWorker.js +24 -16
- package/src/workers/closeGeometryWorkers.js +16 -11
- package/src/workers/cogWorker.js +27 -20
- package/src/workers/createGeometryWorker.js +30 -20
- package/src/workers/geometryWorker.js +34 -29
- package/src/workers/getCogInWorker.js +18 -7
- package/src/workers/modelWorker.js +17 -10
- package/src/workers/openCogInWorker.js +22 -14
- package/src/workers/runSourceWorker.js +44 -32
- package/src/workers/settleGeometryWorker.js +16 -10
- package/src/workers/startGeometryWorker.js +23 -16
- package/src/workers/vectorTileWorker.js +15 -10
- package/src/collision/setTrafficNormal.js +0 -9
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/globals/geometryEmpty.js", "../src/triangulation/minimumX.js", "../src/triangulation/mergeHoles.js", "../src/triangulation/sortHoles.js", "../src/triangulation/cross.js", "../src/triangulation/equal.js", "../src/triangulation/clean.js", "../src/triangulation/isClockWise.js", "../src/triangulation/polygonRings.js", "../src/triangulation/inside.js", "../src/triangulation/insideHole.js", "../src/triangulation/on.js", "../src/triangulation/intersects.js", "../src/triangulation/crossesRing.js", "../src/triangulation/crossesBoundary.js", "../src/triangulation/connectHole.js", "../src/triangulation/containsVertex.js", "../src/triangulation/clipEars.js", "../src/triangulation/area.js", "../src/triangulation/validateArea.js", "../src/triangulation/triangulate.js", "../src/sources/groundOffset.js", "../src/geometry/appendAreaTriangle.js", "../src/geometry/buildProjectedPolygon.js", "../src/globals/triangleContexts.js", "../src/geometry/addGeneratedTriangle.js", "../src/geometry/generateTreeGeometry.js", "../src/colors/toSRGB.js", "../src/colors/hslChannel.js", "../src/colors/parseColor.js", "../src/globals/lampDirections.js", "../src/geometry/createLampRing.js", "../src/geometry/lampPostGeometry.js", "../src/geometry/quad.js", "../src/geometry/emitter.js", "../src/geometry/lightGeometry.js", "../src/globals/roundProfile.js", "../src/globals/ringDirections.js", "../src/geometry/createTreeRing.js", "../src/geometry/surface.js", "../src/geometry/validateTree.js", "../src/geometry/treeGeometry.js", "../src/geometry/buildProjectedPoint.js", "../src/geometry/instanceAreaGeometry.js", "../src/geometry/computeBounds.js", "../src/geometry/assembleAreaGeometry.js", "../src/mvt/createMvtReader.js", "../src/mvt/takeMvtBytes.js", "../src/mvt/readMvtInteger.js", "../src/mvt/readMvtNumber.js", "../src/mvt/readMvtField.js", "../src/mvt/expectMvtWire.js", "../src/mvt/numericMvtValue.js", "../src/mvt/finishMvtPath.js", "../src/mvt/appendMvtCoordinates.js", "../src/mvt/beginMvtPath.js", "../src/mvt/closeMvtPath.js", "../src/mvt/readMvtGeometry.js", "../src/mvt/readMvtMessage.js", "../src/mvt/readMvtNumbers.js", "../src/mvt/skipMvtField.js", "../src/mvt/readMvtFeature.js", "../src/globals/mvtTextDecoder.js", "../src/mvt/readMvtString.js", "../src/mvt/readMvtKnownValue.js", "../src/mvt/readMvtValue.js", "../src/mvt/readMvtLayer.js", "../src/mvt/decodeVectorTile.js", "../src/vector-tiles/vectorStyleDependencies.js", "../src/vector-style/evaluateBoolean.js", "../src/vector-style/evaluateCoalesceOrCase.js", "../src/vector-style/evaluateInput.js", "../src/vector-style/evaluateComparison.js", "../src/globals/vectorStyleNamedColors.js", "../src/vector-style/parseFunctionalColor.js", "../src/vector-style/parseHexColor.js", "../src/vector-style/styleColor.js", "../src/vector-style/evaluateInterpolate.js", "../src/vector-style/arrayContainsRange.js", "../src/vector-style/evaluateMembership.js", "../src/vector-style/evaluateIExpression.js", "../src/vector-style/evaluateMath.js", "../src/vector-style/evaluateMatch.js", "../src/vector-style/evaluateNegation.js", "../src/vector-style/evaluatePrimitive.js", "../src/vector-style/evaluateStep.js", "../src/vector-style/evaluateToExpression.js", "../src/vector-style/evaluateStyle.js", "../src/vector-style/visibleStyle.js", "../src/vector-tiles/vectorFeatureZoom.js", "../src/vector-tiles/vectorStyleValue.js", "../src/vector-tiles/vectorStraightRun.js", "../src/vector-tiles/vectorLabelAnchors.js", "../src/vector-tiles/vectorLabelProperty.js", "../src/vector-tiles/vectorLabelText.js", "../src/vector-tiles/projectVectorPoint.js", "../src/vector-tiles/createVectorLabel.js", "../src/vector-tiles/prepareVectorLabel.js", "../src/vector-style/readPaintValue.js", "../src/vector-style/fillVectorPaint.js", "../src/vector-style/scaleDashArray.js", "../src/vector-style/lineVectorPaint.js", "../src/vector-style/vectorPaint.js", "../src/vector-tiles/vectorFeaturePaint.js", "../src/mvt/mvtEdgeX.js", "../src/mvt/addMvtCrossings.js", "../src/mvt/mergeMvtActiveEdges.js", "../src/mvt/sortMvtActiveEdges.js", "../src/mvt/appendMvtBandTriangles.js", "../src/mvt/finiteMvtCoordinate.js", "../src/mvt/collectMvtEdges.js", "../src/mvt/sortedMvtLevels.js", "../src/mvt/tessellateVectorRings.js", "../src/mvt/isMvtFallbackError.js", "../src/mvt/appendMvtPolygonTriangles.js", "../src/mvt/groupMvtPolygons.js", "../src/mvt/mvtPathsVertices.js", "../src/mvt/mvtPolygonPaths.js", "../src/mvt/triangulateVectorRings.js", "../src/vector-tiles/simplifyVectorPath.js", "../src/vector-tiles/projectVectorTriangles.js", "../src/vector-tiles/projectVectorPaths.js", "../src/vector-tiles/vectorTolerance.js", "../src/vector-tiles/vectorFeaturePaths.js", "../src/vector-tiles/appendVectorBatch.js", "../src/vector-tiles/prepareVectorStyleLayer.js", "../src/vector-tiles/prepareVectorTile.js", "../src/workers/vectorTileWorker.js", "../src/cog/validateCogRange.js", "../src/cog/validateCogContentRange.js", "../src/cog/invalidCogFullResponse.js", "../src/cog/validateCogResponse.js", "../src/cog/readCogBody.js", "../src/cog/readCog.js", "../src/globals/cogTags.js", "../src/cog/readCogTag.js", "../src/cog/readCogDirectory.js", "../src/cog/validCogDimensions.js", "../src/cog/validCogEncoding.js", "../src/cog/getCogProfile.js", "../src/cog/hasCogProjection.js", "../src/cog/finiteCogValues.js", "../src/cog/validCogGeoArrays.js", "../src/cog/getCogBase.js", "../src/cog/validCogGrid.js", "../src/cog/validateCogOffsets.js", "../src/cog/readCogLevel.js", "../src/cog/readCogDirectories.js", "../src/cog/decodeCogTile.js", "../src/cog/readCogBlock.js", "../src/cog/getElevationTile.js", "../src/cog/getColorTile.js", "../src/cog/validCogTileCoordinates.js", "../src/cog/getCogTile.js", "../src/cog/getCogHeader.js", "../src/globals/headerOffsets.js", "../src/globals/headerFlags.js", "../src/globals/headerBounds.js", "../src/archives/decodeHeader.js", "../src/cog/validateCogContainer.js", "../src/archives/decompress.js", "../src/cog/getCogAssetEntry.js", "../src/cog/openCogAsset.js", "../src/cog/openCog.js", "../src/globals/workerCogSource.js", "../src/workers/cogWorker.js", "../src/globals/geometryDecoder.js", "../src/models/hasUnsupportedPrimitives.js", "../src/models/decodeModel.js", "../src/models/loadBuffer.js", "../src/globals/geometryImageOptions.js", "../src/textures/loadModelImage.js", "../src/models/loadModelResources.js", "../src/globals/geometrySemantics.js", "../src/globals/types.js", "../src/globals/sizes.js", "../src/models/readAccessorValue.js", "../src/models/readAccessorValues.js", "../src/models/readSparseAccessor.js", "../src/models/normalizeAccessor.js", "../src/models/readAccessor.js", "../src/models/readModelAttributes.js", "../src/models/readModelIndices.js", "../src/geometry/vertexNormals.js", "../src/models/prepareModelPrimitive.js", "../src/models/prepareModelGeometry.js", "../src/models/prepareModel.js", "../src/workers/modelWorker.js", "../src/workers/geometryWorker.js"],
|
|
4
|
-
"sourcesContent": ["export const geometryEmpty = [];\n", "export function minimumX(ring) {\n let minimum = Infinity;\n let point;\n for (point of ring) minimum = Math.min(minimum, point.x);\n return minimum;\n}\n", "export function mergeHoles(source, target, start, width) {\r\n const middle = Math.min(start + width, source.length), end = Math.min(start + width * 2, source.length);\r\n let left = start, right = middle, output;\r\n for (output = start; output < end; output++) {\r\n if (left < middle && (right >= end || source[left].x <= source[right].x)) {\r\n target[output] = source[left++];\r\n } else {\r\n target[output] = source[right++];\r\n }\r\n }\r\n}\r\n", "import { minimumX } from './minimumX.js';\nimport { mergeHoles } from './mergeHoles.js';\n\nexport function sortHoles(holes) {\n if (holes.length < 2) return holes;\n const buffer = /* alloc */ new Array(holes.length);\n const entries = /* alloc */ [];\n let ring, width, start, previous, i;\n for (ring of holes) entries.push(/* alloc */ { ring, x: minimumX(ring) });\n let source = entries, target = buffer;\n for (width = 1; width < entries.length; width *= 2) {\n for (start = 0; start < entries.length; start += width * 2) {\n mergeHoles(source, target, start, width);\n }\n previous = source;\n source = target;\n target = previous;\n }\n for (i = 0; i < holes.length; i++) holes[i] = source[i].ring;\n return holes;\n}\n", "export function cross(a, b, c) {\r\n return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);\r\n}\r\n", "export function equal(a, b) {\r\n return a.x === b.x && a.y === b.y;\r\n}\r\n", "import { cross } from './cross.js';\nimport { equal } from './equal.js';\n\nexport function clean(ring) {\n let changed = true;\n let i, a, b, c;\n while (changed && ring.length > 3) {\n changed = false;\n for (i = 0; i < ring.length; i++) {\n a = ring[(i + ring.length - 1) % ring.length], b = ring[i], c = ring[(i + 1) % ring.length];\n if (equal(a, b) || Math.abs(cross(a, b, c)) < 1e-10) {\n ring.splice(i, 1); changed = true; break;\n }\n }\n }\n if (ring.length < 3) throw /* alloc */ new Error('Degenerate polygon ring');\n return ring;\n}\n", "/**\n * @returns {boolean} Whether the `{x, y}` points are in clockwise order.\n */\n\nexport function isClockWise(points) {\n let area = 0;\n let i, a, b;\n for (i = 0; i < points.length; i++) {\n a = points[i], b = points[(i + 1) % points.length];\n area += a.x * b.y - b.x * a.y;\n }\n return area < 0;\n}\n", "import { clean } from './clean.js';\r\nimport { isClockWise } from './isClockWise.js';\r\n\r\nexport function polygonRings(paths, vertices) {\r\n const rings = /* alloc */ [];\r\n let offset = 0, index, path, ring;\r\n for (index = 0; index < paths.length; index++) {\r\n path = paths[index];\r\n ring = clean(vertices.slice(offset, offset += path.length));\r\n if (isClockWise(ring) !== Boolean(index)) ring.reverse();\r\n rings.push(ring);\r\n }\r\n return rings;\r\n}\r\n", "export function inside(point, ring) {\n let result = false;\n let i, j, a, b;\n for (i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n a = ring[i], b = ring[j];\n if ((a.y > point.y) !== (b.y > point.y) &&\n point.x < (b.x - a.x) * (point.y - a.y) / (b.y - a.y) + a.x) result = !result;\n }\n return result;\n}\n", "import { inside } from './inside.js';\n\nexport function insideHole(point, rings) {\n let i;\n for (i = 1; i < rings.length; i++) if (inside(point, rings[i])) return true;\n return false;\n}\n", "export function on(p, q, r) {\r\n return Math.min(p.x, q.x) <= r.x && r.x <= Math.max(p.x, q.x) &&\r\n Math.min(p.y, q.y) <= r.y && r.y <= Math.max(p.y, q.y);\r\n}\r\n", "import { equal } from './equal.js';\r\nimport { cross } from './cross.js';\r\nimport { on } from './on.js';\r\n\r\nexport function intersects(a, b, c, d) {\r\n if (equal(a, c) || equal(a, d) || equal(b, c) || equal(b, d)) return false;\r\n const abC = cross(a, b, c), abD = cross(a, b, d), cdA = cross(c, d, a), cdB = cross(c, d, b);\r\n return abC * abD < 0 && cdA * cdB < 0 ||\r\n abC === 0 && on(a, b, c) || abD === 0 && on(a, b, d) ||\r\n cdA === 0 && on(c, d, a) || cdB === 0 && on(c, d, b);\r\n}\r\n", "import { intersects } from './intersects.js';\n\nexport function crossesRing(a, b, ring) {\n let i;\n for (i = 0; i < ring.length; i++) {\n if (intersects(a, b, ring[i], ring[(i + 1) % ring.length])) return true;\n }\n return false;\n}\n", "import { crossesRing } from './crossesRing.js';\n\nexport function crossesBoundary(a, b, polygon, rings) {\n if (crossesRing(a, b, polygon)) return true;\n let i;\n for (i = 1; i < rings.length; i++) if (crossesRing(a, b, rings[i])) return true;\n return false;\n}\n", "import { inside } from './inside.js';\r\nimport { insideHole } from './insideHole.js';\r\nimport { crossesBoundary } from './crossesBoundary.js';\r\n\r\nexport function connectHole(polygon, hole, rings, mid) {\r\n let h2 = -1, p2 = -1, distance = Infinity, h, p, a, b, d;\r\n for (h = 0; h < hole.length; h++) for (p = 0; p < polygon.length; p++) {\r\n a = hole[h], b = polygon[p], d = (a.x - b.x) ** 2 + (a.y - b.y) ** 2;\r\n if (d >= distance) continue;\r\n mid.x = (a.x + b.x) / 2; mid.y = (a.y + b.y) / 2;\r\n if (!inside(mid, rings[0]) || insideHole(mid, rings)) continue;\r\n if (crossesBoundary(a, b, polygon, rings)) continue;\r\n h2 = h; p2 = p; distance = d;\r\n }\r\n if (h2 < 0) throw /* alloc */ new Error('Unable to connect polygon hole');\r\n return /* alloc */ [...polygon.slice(0, p2 + 1), ...hole.slice(h2), ...hole.slice(0, h2 + 1),\r\n polygon[p2], ...polygon.slice(p2 + 1)];\r\n}\r\n", "import { equal } from './equal.js';\nimport { cross } from './cross.js';\n\nexport function containsVertex(polygon, a, b, c) {\n let p;\n for (p of polygon) {\n if (!equal(p, a) && !equal(p, b) && !equal(p, c) &&\n cross(a, b, p) >= 0 && cross(b, c, p) >= 0 && cross(c, a, p) >= 0) return true;\n }\n return false;\n}\n", "import { cross } from './cross.js';\r\nimport { containsVertex } from './containsVertex.js';\r\n\r\nexport function clipEars(polygon) {\r\n const result = /* alloc */ [];\r\n let clipped, i, a, b, c, p;\r\n while (polygon.length > 3) {\r\n clipped = false;\r\n for (i = 0; i < polygon.length; i++) {\r\n a = polygon[(i + polygon.length - 1) % polygon.length], b = polygon[i], c = polygon[(i + 1) % polygon.length];\r\n if (cross(a, b, c) <= 1e-10) continue;\r\n if (containsVertex(polygon, a, b, c)) continue;\r\n result.push(/* alloc */ [a.index, b.index, c.index]); polygon.splice(i, 1); clipped = true; break;\r\n }\r\n if (!clipped) throw /* alloc */ new Error('Unable to triangulate polygon: invalid or self-intersecting rings');\r\n }\r\n if (cross(...polygon) > 1e-10) {\r\n const triangle = /* alloc */ [];\r\n for (p of polygon) triangle.push(p.index);\r\n result.push(triangle);\r\n }\r\n return result;\r\n}\r\n", "export function area(ring) {\n let sum = 0;\n let i, p, q;\n for (i = 0; i < ring.length; i++) {\n p = ring[i], q = ring[(i + 1) % ring.length];\n sum += p.x * q.y - q.x * p.y;\n }\n return Math.abs(sum) / 2;\n}\n", "import { area } from './area.js';\r\nimport { cross } from './cross.js';\r\n\r\nexport function validateArea(rings, vertices, result) {\r\n let holeArea = 0, actual = 0, i, triangle;\r\n for (i = 1; i < rings.length; i++) holeArea += area(rings[i]);\r\n const expected = area(rings[0]) - holeArea;\r\n for (triangle of result) actual += cross(vertices[triangle[0]], vertices[triangle[1]], vertices[triangle[2]]) / 2;\r\n if (expected <= 0 || Math.abs(actual - expected) > Math.max(1e-7, expected * 1e-8)) throw /* alloc */ new Error('Polygon triangulation area mismatch');\r\n}\r\n", "import { geometryEmpty } from '../globals/geometryEmpty.js';\nimport { sortHoles } from './sortHoles.js';\nimport { polygonRings } from './polygonRings.js';\nimport { connectHole } from './connectHole.js';\nimport { clipEars } from './clipEars.js';\nimport { validateArea } from './validateArea.js';\n\n\n/**\n * Triangulates a polygon given as `{x, y}` points.\n * Rings omit the repeated closing point; winding is normalized internally.\n * Vertex indices remain relative to the original inputs after duplicate/collinear\n * cleanup. Hole bridges duplicate endpoints, not source vertices.\n * @param {Object[]} contour Outer boundary.\n * @param {Object[][]} [holes] Interior boundaries.\n *\n * @returns {number[][]} Triangles as indices in `[...contour, ...holes.flat()]`.\n */\n\nexport function triangulate(contour, holes = geometryEmpty) {\n const paths = /* alloc */ [contour, ...holes];\n const points = paths.flat();\n let p, index, hole;\n for (p of points) {\n if (!Number.isFinite(p.x) || !Number.isFinite(p.y)) throw /* alloc */ new Error('Invalid polygon coordinates');\n }\n // Translate near the origin to avoid cancellation with geographic coordinates.\n const vertices = /* alloc */ [];\n for (index = 0; index < points.length; index++) {\n p = points[index];\n vertices.push(/* alloc */ { x: p.x - contour[0].x, y: p.y - contour[0].y, index });\n }\n // Remove zero-area corners before connecting holes; keep original vertex indices.\n const rings = polygonRings(paths, vertices);\n let polygon = rings[0].slice();\n // A bridge must stay inside the outer boundary, outside every hole, and cross no edge.\n // ponytail: quadratic ear clipping for building footprints; use spatial indexing for large rings.\n const holesToConnect = sortHoles(rings.slice(1));\n const mid = holesToConnect.length ? /* alloc */ { x: 0, y: 0 } : null;\n for (hole of holesToConnect) {\n polygon = connectHole(polygon, hole, rings, mid);\n }\n // Clip a convex corner only when no other vertex is inside/on its triangle.\n const result = clipEars(polygon);\n // Reject incomplete coverage instead of silently emitting a partial roof.\n validateArea(rings, vertices, result);\n return result;\n}\n", "export function groundOffset(point) {\r\n return point.ground || 0;\r\n}\n", "import { groundOffset } from '../sources/groundOffset.js';\r\n\r\nexport function addTriangle(context, a, ah, b, bh, c, ch, nx, ny, nz, color) {\r\n const { backend: layer, positions, normals, colors, uvs } = context;\r\n const ux = b.x - a.x, uy = bh - ah, uz = a.y - b.y;\r\n const vx = c.x - a.x, vy = ch - ah, vz = a.y - c.y;\r\n if ((uy * vz - uz * vy) * nx + (uz * vx - ux * vz) * ny + (ux * vy - uy * vx) * nz < 0) {\r\n const point = b, height = bh;\r\n b = c; bh = ch; c = point; ch = height;\r\n }\r\n positions.push(a.x, ah + groundOffset(a), -a.y,\r\n b.x, bh + groundOffset(b), -b.y,\r\n c.x, ch + groundOffset(c), -c.y);\r\n normals.push(nx, ny, nz, nx, ny, nz, nx, ny, nz);\r\n colors.push(color.r, color.g, color.b, color.r, color.g, color.b, color.r, color.g, color.b);\r\n if (layer.options.nightLight) uvs.push(...a.uv, ...b.uv, ...c.uv);\r\n}\r\n", "import { triangulate } from '../triangulation/triangulate.js';\r\nimport { addTriangle } from './appendAreaTriangle.js';\r\nimport { isClockWise } from '../triangulation/isClockWise.js';\r\n\r\nexport function buildProjectedPolygon(context, paths, top, bottom, baseColor) {\r\n const points = /* alloc */ [];\r\n let path, point, a, b, c, index, sign, i, length, nx, nz;\r\n for (path of paths) for (point of path) points.push(point);\r\n for ([a, b, c] of triangulate(paths[0], paths.slice(1))) {\r\n addTriangle(context, points[a], top, points[b], top, points[c], top, 0, 1, 0, baseColor);\r\n if (bottom > 0) addTriangle(context, points[a], bottom, points[b], bottom, points[c], bottom, 0, -1, 0, baseColor);\r\n }\r\n for (index = 0; index < paths.length; index++) {\r\n path = paths[index];\r\n sign = isClockWise(path) === (index === 0) ? -1 : 1;\r\n for (i = 0; i < path.length; i++) {\r\n a = path[i], b = path[(i + 1) % path.length];\r\n length = Math.hypot(b.x - a.x, b.y - a.y);\r\n if (!length) continue;\r\n nx = sign * (b.y - a.y) / length, nz = sign * (b.x - a.x) / length;\r\n addTriangle(context, a, bottom, b, bottom, b, top, nx, 0, nz, baseColor);\r\n addTriangle(context, a, bottom, b, top, a, top, nx, 0, nz, baseColor);\r\n }\r\n }\r\n}\r\n", "export const triangleContexts = [];\n", "import { triangleContexts } from '../globals/triangleContexts.js';\n\nimport { addTriangle } from './appendAreaTriangle.js';\n\nexport function addGeneratedTriangle(...args) {\r\n addTriangle(triangleContexts[triangleContexts.length - 1], ...args);\r\n}\n", "import { triangleContexts } from '../globals/triangleContexts.js';\n\n\nimport { addGeneratedTriangle } from './addGeneratedTriangle.js';\n\nexport function generateTreeGeometry(context, generator, point, style) {\r\n triangleContexts.push(context);\r\n try {\r\n generator(point, style, addGeneratedTriangle);\r\n } finally {\r\n triangleContexts.pop();\r\n }\r\n}\n", "export function toSRGB(value) {\n return value <= 0.0031308 ? value * 12.92 : 1.055 * value ** (1 / 2.4) - 0.055;\n}\n", "export function channel(n, h, l, a) {\n const k = (n + h * 12) % 12;\n return l - a * Math.max(-1, Math.min(k - 3, 9 - k, 1));\n}\n", "import { toSRGB } from \"./toSRGB.js\";\nimport { channel } from \"./hslChannel.js\";\n\n/**\n * HSL inputs are linear-space to preserve the original building styling.\n * Numeric/CSS/RGB inputs are already sRGB; CSS alpha is not used for extrusion.\n * @param {number|string|Object} value 0xRRGGBB, CSS color, {r,g,b}, or {h,s,l} in 0..1.\n * @returns {Object} sRGB {r,g,b} components in 0..1.\n */\n\nexport function parseColor(value) {\n if (value && typeof value === 'object' && 'h' in value) {\n const a = value.s * Math.min(value.l, 1 - value.l);\n return /* alloc */ {\n r: toSRGB(channel(0, value.h, value.l, a)),\n g: toSRGB(channel(8, value.h, value.l, a)),\n b: toSRGB(channel(4, value.h, value.l, a))\n };\n }\n if (value && typeof value === 'object' && 'r' in value) {\n return value;\n }\n if (typeof value === 'number') {\n return /* alloc */ {\n r: (value >> 16 & 255) / 255,\n g: (value >> 8 & 255) / 255,\n b: (value & 255) / 255,\n };\n }\n if (typeof value !== 'string' || !CSS.supports('color', value)) {\n throw /* alloc */ new Error('Invalid 3D color');\n }\n const context = document.createElement('canvas').getContext('2d');\n context.fillStyle = value;\n context.fillRect(0, 0, 1, 1);\n const [r, g, b] = context.getImageData(0, 0, 1, 1).data;\n return /* alloc */ {\n r: r / 255,\n g: g / 255,\n b: b / 255\n };\n}\n", "export const lampDirections = [\r\n { x: Math.cos(0 * Math.PI / 3), y: Math.sin(0 * Math.PI / 3), nx: Math.cos(0.5 * Math.PI / 3), nz: -Math.sin(0.5 * Math.PI / 3) },\r\n { x: Math.cos(1 * Math.PI / 3), y: Math.sin(1 * Math.PI / 3), nx: Math.cos(1.5 * Math.PI / 3), nz: -Math.sin(1.5 * Math.PI / 3) },\r\n { x: Math.cos(2 * Math.PI / 3), y: Math.sin(2 * Math.PI / 3), nx: Math.cos(2.5 * Math.PI / 3), nz: -Math.sin(2.5 * Math.PI / 3) },\r\n { x: Math.cos(3 * Math.PI / 3), y: Math.sin(3 * Math.PI / 3), nx: Math.cos(3.5 * Math.PI / 3), nz: -Math.sin(3.5 * Math.PI / 3) },\r\n { x: Math.cos(4 * Math.PI / 3), y: Math.sin(4 * Math.PI / 3), nx: Math.cos(4.5 * Math.PI / 3), nz: -Math.sin(4.5 * Math.PI / 3) },\r\n { x: Math.cos(5 * Math.PI / 3), y: Math.sin(5 * Math.PI / 3), nx: Math.cos(5.5 * Math.PI / 3), nz: -Math.sin(5.5 * Math.PI / 3) },\r\n];\r\n", "import { lampDirections } from '../globals/lampDirections.js';\n\nexport function ring(point, radius) {\n const points = /* alloc */ new Array(lampDirections.length);\n let i;\n for (i = 0; i < points.length; i++) {\n points[i] = /* alloc */ {\n x: point.x + lampDirections[i].x * radius,\n y: point.y + lampDirections[i].y * radius, ground: point.ground,\n uv: /* alloc */ [3, 3],\n };\n }\n return points;\n}\n", "import { parseColor } from \"../colors/parseColor.js\";\nimport { ring } from './createLampRing.js';\nimport { lampDirections } from '../globals/lampDirections.js';\n\n/** Schematic support and lamp head; wall-mounted fixtures do not get an invented pole. */\n\nexport function lampPostGeometry(point, style, addTriangle) {\n const color = parseColor(0x50565a), radius = style.poleRadius;\n if (!Number.isFinite(radius) || radius <= 0) {\n throw /* alloc */ new Error('Invalid lamp pole radius');\n }\n const center = /* alloc */ {\n ...point, uv: /* alloc */ [3, 3],\n };\n let r, low, high, points, i, a, b, nx, nz, section;\n for (section = 0; section < 2; section++) {\n r = section ? radius * 2.5 : radius;\n low = section ? style.top - 0.25 : 0;\n high = section ? style.top + 0.15 : style.top;\n points = ring(point, r);\n for (i = 0; i < 6; i++) {\n a = points[i], b = points[(i + 1) % 6];\n nx = lampDirections[i].nx, nz = lampDirections[i].nz;\n addTriangle(a, low, b, low, b, high, nx, 0, nz, color);\n addTriangle(a, low, b, high, a, high, nx, 0, nz, color);\n addTriangle(center, high, a, high, b, high, 0, 1, 0, color);\n addTriangle(center, low, b, low, a, low, 0, -1, 0, color);\n }\n }\n}\n", "export function quad(addTriangle, color, a, b, c, d, height, nx, ny, nz) {\r\n if (typeof nx !== 'number') {\r\n addTriangle(a, height, b, height, c, height, ...nx, color);\r\n addTriangle(a, height, c, height, d, height, ...nx, color);\r\n } else {\r\n addTriangle(a, height, b, height, c, height, nx, ny, nz, color);\r\n addTriangle(a, height, c, height, d, height, nx, ny, nz, color);\r\n }\r\n}\r\n", "export function emitter(point, u, v, axis) {\r\n const r = 0.65;\r\n return /* alloc */ {\r\n x: point.x + (axis === 2 ? 0 : u * r),\r\n y: point.y + (axis === 1 ? 0 : axis === 2 ? u * r : v * r),\r\n ground: point.ground + (axis === 0 ? 0 : v * r), uv: /* alloc */ [u, v],\r\n };\r\n}\r\n", "import { parseColor } from \"../colors/parseColor.js\";\nimport { quad } from './quad.js';\nimport { emitter } from './emitter.js';\n\n/** Three crossed emitter discs; illumination itself is evaluated on receiving surfaces. */\n\nexport function lightGeometry(point, style, addTriangle) {\n if (!Number.isFinite(style.lightRadius) || style.lightRadius <= 0) throw /* alloc */ new Error('Invalid light radius');\n const color = parseColor(style.color);\n let axis;\n for (axis = 0; axis < 3; axis++) {\n quad(addTriangle, color, emitter(point, -1, -1, axis), emitter(point, 1, -1, axis), emitter(point, 1, 1, axis), emitter(point, -1, 1, axis),\n style.top, axis === 2 ? 1 : 0, axis === 0 ? 1 : 0, axis === 1 ? 1 : 0);\n }\n}\n", "export const roundProfile = [\n [0, 0],\n [0.35, 0.8],\n [0.6, 1],\n [0.85, 0.7],\n [1, 0]\n];\n", "export const ringDirections = [{\n x: Math.cos(0 * Math.PI / 4),\n y: Math.sin(0 * Math.PI / 4),\n nx: Math.cos((0 + 0.5) * Math.PI / 4),\n nz: -Math.sin((0 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(1 * Math.PI / 4),\n y: Math.sin(1 * Math.PI / 4),\n nx: Math.cos((1 + 0.5) * Math.PI / 4),\n nz: -Math.sin((1 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(2 * Math.PI / 4),\n y: Math.sin(2 * Math.PI / 4),\n nx: Math.cos((2 + 0.5) * Math.PI / 4),\n nz: -Math.sin((2 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(3 * Math.PI / 4),\n y: Math.sin(3 * Math.PI / 4),\n nx: Math.cos((3 + 0.5) * Math.PI / 4),\n nz: -Math.sin((3 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(4 * Math.PI / 4),\n y: Math.sin(4 * Math.PI / 4),\n nx: Math.cos((4 + 0.5) * Math.PI / 4),\n nz: -Math.sin((4 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(5 * Math.PI / 4),\n y: Math.sin(5 * Math.PI / 4),\n nx: Math.cos((5 + 0.5) * Math.PI / 4),\n nz: -Math.sin((5 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(6 * Math.PI / 4),\n y: Math.sin(6 * Math.PI / 4),\n nx: Math.cos((6 + 0.5) * Math.PI / 4),\n nz: -Math.sin((6 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(7 * Math.PI / 4),\n y: Math.sin(7 * Math.PI / 4),\n nx: Math.cos((7 + 0.5) * Math.PI / 4),\n nz: -Math.sin((7 + 0.5) * Math.PI / 4)\n },\n];\n", "import { ringDirections } from '../globals/ringDirections.js';\n\n\nexport function ring(point, radius) {\n const result = /* alloc */ new Array(ringDirections.length);\n let i;\n for (i = 0; i < result.length; i++) {\n result[i] = /* alloc */ {\n x: point.x + ringDirections[i].x * radius,\n y: point.y + ringDirections[i].y * radius,\n ground: point.ground,\n };\n }\n return result;\n}\n", "import { ringDirections } from '../globals/ringDirections.js';\n\nimport { ring } from './createTreeRing.js';\n\nexport function surface(point, addTriangle, lowRadius, low, highRadius, high, color) {\n const lower = ring(point, lowRadius), upper = ring(point, highRadius);\n let i, next, slope, length, nx, nz, ny, normalX, normalZ;\n for (i = 0; i < 8; i++) {\n next = (i + 1) % 8;\n slope = (lowRadius - highRadius) / (high - low);\n length = Math.hypot(1, slope);\n ({ nx, nz } = ringDirections[i]);\n ny = slope / length;\n normalX = nx / length, normalZ = nz / length;\n if (lowRadius) addTriangle(lower[i], low, lower[next], low, upper[next], high, normalX, ny, normalZ, color);\n if (highRadius) addTriangle(lower[i], low, upper[next], high, upper[i], high, normalX, ny, normalZ, color);\n }\n}\n", "export function validateTree(trunkRadius, crownRadius, crownBottom, bottom, top, crownShape) {\r\n if (!Number.isFinite(trunkRadius) || !Number.isFinite(crownRadius) || !Number.isFinite(crownBottom) ||\r\n trunkRadius <= 0 || crownRadius < trunkRadius || crownBottom <= bottom || crownBottom >= top ||\r\n crownShape !== 'round' && crownShape !== 'cone') {\r\n throw /* alloc */ new Error('Invalid tree dimensions or crown shape');\r\n }\r\n}\r\n", "import { roundProfile } from '../globals/roundProfile.js';\n\n\nimport { parseColor } from \"../colors/parseColor.js\";\nimport { ring } from './createTreeRing.js';\nimport { surface } from './surface.js';\nimport { validateTree } from './validateTree.js';\n\n/** Low-poly tree, sharing the source block's buffers, picking and terrain offset. */\n\nexport function treeGeometry(point, style, addTriangle) {\n const { top, bottom = 0, trunkRadius, crownRadius, crownBottom, crownShape = 'round' } = style;\n validateTree(trunkRadius, crownRadius, crownBottom, bottom, top, crownShape);\n const trunk = parseColor(style.trunkColor ?? 0x72513a);\n const crown = parseColor(style.color ?? 0x4f823b);\n surface(point, addTriangle, trunkRadius, bottom, trunkRadius, crownBottom + (top - crownBottom) * 0.25, trunk);\n let i, low, lr, high, hr;\n if (crownShape === 'cone') {\n const base = ring(point, crownRadius);\n for (i = 0; i < 8; i++) addTriangle(point, crownBottom, base[i], crownBottom,\n base[(i + 1) % 8], crownBottom, 0, -1, 0, crown);\n surface(point, addTriangle, crownRadius, crownBottom, 0, top, crown);\n } else {\n for (i = 1; i < roundProfile.length; i++) {\n [low, lr] = roundProfile[i - 1], [high, hr] = roundProfile[i];\n surface(point, addTriangle, lr * crownRadius, crownBottom + low * (top - crownBottom),\n hr * crownRadius, crownBottom + high * (top - crownBottom), crown);\n }\n }\n}\n", "import { generateTreeGeometry } from './generateTreeGeometry.js';\r\nimport { lampPostGeometry } from './lampPostGeometry.js';\r\nimport { lightGeometry } from './lightGeometry.js';\r\nimport { treeGeometry } from './treeGeometry.js';\r\n\r\nexport function buildProjectedPoint(context, projected, style, baseColor, support) {\r\n const { top } = style;\r\n if (context.backend.options.nightLight) {\r\n if (!Number.isFinite(style.lightFlux) || style.lightFlux <= 0) throw /* alloc */ new Error('Invalid light flux');\r\n if (style.poleRadius > 0 && !context.supports.has(support)) {\r\n generateTreeGeometry(context, lampPostGeometry, projected, style);\r\n context.supports.add(support);\r\n }\r\n generateTreeGeometry(context, lightGeometry, projected, style);\r\n context.lights.push(/* alloc */ {\r\n position: /* alloc */ [projected.x, projected.ground + top, -projected.y],\r\n radius: Math.hypot(top, style.lightRadius), color: /* alloc */ [baseColor.r, baseColor.g, baseColor.b],\r\n flux: style.lightFlux,\r\n });\r\n } else generateTreeGeometry(context, treeGeometry, projected, style);\r\n}\r\n", "/** Compact repeated features only when reconstructed float32 positions compare equal. */\r\nexport function instanceAreaGeometry(context) {\r\n const { positions, normals, colors, featureFaces } = context;\r\n if (context.backend.options.nightLight || featureFaces.length < 2) return context;\r\n const vertices = featureFaces[0].vertexEnd;\r\n const length = vertices * 3;\r\n if (!vertices || positions.length !== length * featureFaces.length) return context;\r\n const originX = Math.trunc(positions[0]), originY = Math.trunc(positions[1]), originZ = Math.trunc(positions[2]);\r\n const template = /* alloc */ new Float32Array(length);\r\n let i, instance, face, start;\r\n for (i = 0; i < length; i++) template[i] = positions[i] - (i % 3 === 0 ? originX : i % 3 === 1 ? originY : originZ);\r\n const offsets = /* alloc */ new Float32Array(featureFaces.length * 4);\r\n for (instance = 0; instance < featureFaces.length; instance++) {\r\n face = featureFaces[instance];\r\n start = instance * length;\r\n if (face.vertexStart !== instance * vertices || face.vertexEnd !== (instance + 1) * vertices) return context;\r\n offsets[instance * 4] = originX + positions[start] - positions[0];\r\n offsets[instance * 4 + 1] = originY + positions[start + 1] - positions[1];\r\n offsets[instance * 4 + 2] = originZ + positions[start + 2] - positions[2];\r\n offsets[instance * 4 + 3] = instance * vertices;\r\n for (i = 0; i < length; i++) {\r\n if (Math.fround(template[i] + offsets[instance * 4 + i % 3]) !== Math.fround(positions[start + i]) ||\r\n Math.fround(normals[i]) !== Math.fround(normals[start + i]) ||\r\n Math.fround(colors[i]) !== Math.fround(colors[start + i])) return context;\r\n }\r\n }\r\n return /* alloc */ {\r\n positions: template, normals: normals.slice(0, length), colors: colors.slice(0, length),\r\n instanceOffsets: offsets,\r\n };\r\n}\r\n", "/** Cache local AABB and center for ray picking and transparent mesh sorting. */\n\nexport function computeBounds(geometry) {\n const min = /* alloc */ [Infinity, Infinity, Infinity];\n const max = /* alloc */ [-Infinity, -Infinity, -Infinity];\n const data = geometry.attributes.position.data;\n let i, x, y, z;\n for (i = 0; i < data.length; i += 3) {\n x = data[i], y = data[i + 1], z = data[i + 2];\n min[0] = Math.min(min[0], x), max[0] = Math.max(max[0], x);\n min[1] = Math.min(min[1], y), max[1] = Math.max(max[1], y);\n min[2] = Math.min(min[2], z), max[2] = Math.max(max[2], z);\n }\n const instances = geometry.attributes.instanceOffset;\n if (instances) {\n let axis, offset, low, high;\n for (axis = 0; axis < 3; axis++) {\n low = Infinity;\n high = -Infinity;\n for (offset = axis; offset < instances.data.length; offset += instances.size) {\n low = Math.min(low, instances.data[offset]);\n high = Math.max(high, instances.data[offset]);\n }\n min[axis] = Math.fround(min[axis] + low);\n max[axis] = Math.fround(max[axis] + high);\n }\n }\n const center = /* alloc */ [\n (min[0] + max[0]) / 2,\n (min[1] + max[1]) / 2,\n (min[2] + max[2]) / 2,\n ];\n let radiusSquared = 0;\n for (i = 0; !instances && i < data.length; i += 3) {\n x = data[i] - center[0], y = data[i + 1] - center[1], z = data[i + 2] - center[2];\n radiusSquared = Math.max(radiusSquared, x * x + y * y + z * z);\n }\n let radius = instances ? Math.hypot(max[0] - min[0], max[1] - min[1], max[2] - min[2]) / 2\n : Math.sqrt(radiusSquared);\n // Preserve hypot's scaling for extreme coordinates in non-Float32 CPU geometry.\n if (!instances && (radiusSquared === Infinity || radiusSquared < Number.MIN_VALUE / Number.EPSILON)) {\n radius = 0;\n for (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 = /* alloc */ { min, max, center, radius };\n}\n", "import { buildProjectedPolygon } from './buildProjectedPolygon.js';\r\nimport { buildProjectedPoint } from './buildProjectedPoint.js';\r\nimport { instanceAreaGeometry } from './instanceAreaGeometry.js';\r\nimport { computeBounds } from './computeBounds.js';\r\n\r\nexport function assembleAreaGeometry({ jobs, nightLight }) {\r\n const context = /* alloc */ {\r\n backend: /* alloc */ { options: /* alloc */ { nightLight } },\r\n positions: /* alloc */ [], normals: /* alloc */ [], colors: /* alloc */ [], uvs: /* alloc */ [],\r\n featureFaces: /* alloc */ [], lights: /* alloc */ [], supports: /* alloc */ new Set(),\r\n };\r\n let job, polygon, start, end;\r\n for (job of jobs) {\r\n start = context.positions.length / 3;\r\n if (job.point) buildProjectedPoint(context, job.point, job.style, job.baseColor, job.support);\r\n for (polygon of job.polygons) {\r\n buildProjectedPolygon(context, polygon, job.style.top, job.style.bottom, job.baseColor);\r\n }\r\n end = context.positions.length / 3;\r\n context.featureFaces.push(/* alloc */ { vertexStart: start, vertexEnd: end, faceStart: start / 3, faceEnd: end / 3 });\r\n }\r\n const data = instanceAreaGeometry(context);\r\n const result = /* alloc */ {\r\n positions: /* alloc */ new Float32Array(data.positions),\r\n normals: /* alloc */ new Float32Array(data.normals),\r\n colors: /* alloc */ new Float32Array(data.colors),\r\n uvs: /* alloc */ new Float32Array(context.uvs),\r\n instanceOffsets: data.instanceOffsets,\r\n ranges: context.featureFaces,\r\n lights: context.lights,\r\n };\r\n if (result.positions.length) {\r\n const geometry = /* alloc */ { attributes: /* alloc */ {\r\n position: /* alloc */ { data: result.positions },\r\n instanceOffset: result.instanceOffsets ? /* alloc */ { data: result.instanceOffsets, size: 4 } : undefined,\r\n } };\r\n computeBounds(geometry);\r\n result.bounds = geometry.bounds;\r\n }\r\n return result;\r\n}\r\n", "export function createMvtReader(bytes) {\r\n return /* alloc */ {\r\n bytes,\r\n view: /* alloc */ new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength),\r\n pos: 0,\r\n };\r\n}\r\n", "export function takeMvtBytes(reader, size) {\r\n if (!Number.isSafeInteger(size) || size < 0 || size > reader.bytes.length - reader.pos) {\r\n throw /* alloc */ new Error('Truncated MVT field');\r\n }\r\n const start = reader.pos;\r\n reader.pos += size;\r\n return start;\r\n}\r\n", "import { takeMvtBytes } from './takeMvtBytes.js';\r\n\r\nexport function readMvtInteger(reader) {\r\n let value = 0n, i = 0, byte;\r\n for (; i < 10; i++) {\r\n byte = reader.bytes[takeMvtBytes(reader, 1)];\r\n if (i === 9 && byte > 1) throw /* alloc */ new Error('Invalid MVT varint');\r\n value |= BigInt(byte & 127) << BigInt(i * 7);\r\n if (byte < 128) return value;\r\n }\r\n throw /* alloc */ new Error('Invalid MVT varint');\r\n}\r\n", "import { readMvtInteger } from './readMvtInteger.js';\r\n\r\nexport function readMvtNumber(reader) {\r\n const value = readMvtInteger(reader);\r\n if (value > BigInt(Number.MAX_SAFE_INTEGER)) {\r\n throw /* alloc */ new Error('MVT integer exceeds safe range');\r\n }\r\n return Number(value);\r\n}\r\n", "import { readMvtNumber } from './readMvtNumber.js';\r\n\r\nexport function readMvtField(reader) {\r\n const tag = readMvtNumber(reader);\r\n const field = Math.floor(tag / 8), wire = tag % 8;\r\n if (!field || field > 536870911) throw /* alloc */ new Error('Invalid MVT field number');\r\n return /* alloc */ [field, wire];\r\n}\r\n", "export function expectMvtWire(wire, expected) {\r\n if (wire !== expected) throw /* alloc */ new Error('Invalid MVT wire type');\r\n}\r\n", "export function numericMvtValue(value) {\r\n return value >= BigInt(Number.MIN_SAFE_INTEGER) && value <= BigInt(Number.MAX_SAFE_INTEGER)\r\n ? Number(value) : value.toString();\r\n}\r\n", "export function finishMvtPath(path, type, closed) {\r\n if (path && (type === 2 && path.length < 2 || type === 3 && !closed)) {\r\n throw /* alloc */ new Error('Incomplete MVT geometry');\r\n }\r\n}\r\n", "export function appendMvtCoordinates(commands, state, count) {\r\n let i = 0, dx, dy;\r\n for (; i < count; i++) {\r\n dx = commands[state.index++];\r\n dy = commands[state.index++];\r\n if (dx > 0xffffffff || dy > 0xffffffff) throw /* alloc */ new Error('Invalid MVT coordinate');\r\n state.x += dx % 2 ? -(dx + 1) / 2 : dx / 2;\r\n state.y += dy % 2 ? -(dy + 1) / 2 : dy / 2;\r\n state.path.push(/* alloc */ [state.x, state.y]);\r\n }\r\n}\r\n", "import { finishMvtPath } from './finishMvtPath.js';\r\n\r\nexport function beginMvtPath(state, paths, type, count) {\r\n finishMvtPath(state.path, type, state.closed);\r\n if (type !== 1 && count !== 1) throw /* alloc */ new Error('Invalid MVT MoveTo');\r\n state.path = /* alloc */ [];\r\n paths.push(state.path);\r\n state.closed = false;\r\n}\r\n", "export function closeMvtPath(state, type, count) {\r\n if (type !== 3 || count !== 1 || !state.path || state.closed || state.path.length < 3) {\r\n throw /* alloc */ new Error('Invalid MVT ClosePath');\r\n }\r\n state.path.push(/* alloc */ [...state.path[0]]);\r\n state.closed = true;\r\n}\r\n", "import { finishMvtPath } from './finishMvtPath.js';\r\nimport { appendMvtCoordinates } from './appendMvtCoordinates.js';\r\nimport { beginMvtPath } from './beginMvtPath.js';\r\nimport { closeMvtPath } from './closeMvtPath.js';\r\n\r\nexport function readMvtGeometry(commands, type) {\r\n const paths = /* alloc */ [];\r\n const state = /* alloc */ { x: 0, y: 0, path: null, closed: false, index: 0 };\r\n let command, id, count;\r\n while (state.index < commands.length) {\r\n command = commands[state.index++];\r\n id = command % 8;\r\n count = Math.floor(command / 8);\r\n if (!count || command > 0xffffffff) throw /* alloc */ new Error('Invalid MVT geometry command');\r\n if (id === 7) {\r\n closeMvtPath(state, type, count);\r\n continue;\r\n }\r\n if (id !== 1 && id !== 2 || count > Math.floor((commands.length - state.index) / 2)) {\r\n throw /* alloc */ new Error('Invalid MVT geometry parameters');\r\n }\r\n if (id === 1) beginMvtPath(state, paths, type, count);\r\n else if (type === 1 || !state.path || state.closed) throw /* alloc */ new Error('Invalid MVT LineTo');\r\n appendMvtCoordinates(commands, state, count);\r\n }\r\n finishMvtPath(state.path, type, state.closed);\r\n if (!paths.length) throw /* alloc */ new Error('Empty MVT geometry');\r\n return paths;\r\n}\r\n", "import { createMvtReader } from './createMvtReader.js';\r\nimport { expectMvtWire } from './expectMvtWire.js';\r\nimport { readMvtNumber } from './readMvtNumber.js';\r\nimport { takeMvtBytes } from './takeMvtBytes.js';\r\n\r\nexport function readMvtMessage(reader, wire) {\r\n expectMvtWire(wire, 2);\r\n const size = readMvtNumber(reader), start = takeMvtBytes(reader, size);\r\n return createMvtReader(reader.bytes.subarray(start, start + size));\r\n}\r\n", "import { readMvtMessage } from './readMvtMessage.js';\r\nimport { readMvtNumber } from './readMvtNumber.js';\r\n\r\nexport function readMvtNumbers(reader, wire, target) {\r\n let packed;\r\n if (wire === 0) target.push(readMvtNumber(reader));\r\n else {\r\n packed = readMvtMessage(reader, wire);\r\n while (packed.pos < packed.bytes.length) target.push(readMvtNumber(packed));\r\n }\r\n}\r\n", "import { expectMvtWire } from './expectMvtWire.js';\r\nimport { readMvtInteger } from './readMvtInteger.js';\r\nimport { readMvtNumber } from './readMvtNumber.js';\r\nimport { takeMvtBytes } from './takeMvtBytes.js';\r\n\r\nexport function skipMvtField(reader, wire) {\r\n switch (wire) {\r\n case 0: readMvtInteger(reader); break;\r\n case 1: takeMvtBytes(reader, 8); break;\r\n case 2: takeMvtBytes(reader, readMvtNumber(reader)); break;\r\n case 5: takeMvtBytes(reader, 4); break;\r\n default: throw /* alloc */ new Error('Unsupported MVT wire type');\r\n }\r\n}\r\n", "import { expectMvtWire } from './expectMvtWire.js';\r\nimport { numericMvtValue } from './numericMvtValue.js';\r\nimport { readMvtField } from './readMvtField.js';\r\nimport { readMvtGeometry } from './readMvtGeometry.js';\r\nimport { readMvtInteger } from './readMvtInteger.js';\r\nimport { readMvtNumber } from './readMvtNumber.js';\r\nimport { readMvtNumbers } from './readMvtNumbers.js';\r\nimport { skipMvtField } from './skipMvtField.js';\r\n\r\nexport function readMvtFeature(reader, keys, values) {\r\n let id, type = 0, field, wire, i = 0;\r\n const tags = /* alloc */ [], commands = /* alloc */ [];\r\n while (reader.pos < reader.bytes.length) {\r\n [field, wire] = readMvtField(reader);\r\n if (field === 1) {\r\n expectMvtWire(wire, 0);\r\n id = numericMvtValue(readMvtInteger(reader));\r\n } else if (field === 2) readMvtNumbers(reader, wire, tags);\r\n else if (field === 3) {\r\n expectMvtWire(wire, 0);\r\n type = readMvtNumber(reader);\r\n } else if (field === 4) readMvtNumbers(reader, wire, commands);\r\n else skipMvtField(reader, wire);\r\n }\r\n if (tags.length % 2 || type > 3) throw /* alloc */ new Error('Invalid MVT feature');\r\n const properties = Object.create(null);\r\n for (; i < tags.length; i += 2) {\r\n if (tags[i] >= keys.length || tags[i + 1] >= values.length) {\r\n throw /* alloc */ new Error('Invalid MVT property index');\r\n }\r\n properties[keys[tags[i]]] = values[tags[i + 1]];\r\n }\r\n return /* alloc */ { id, type, properties, geometry: type ? readMvtGeometry(commands, type) : /* alloc */ [] };\r\n}\r\n", "export const mvtTextDecoder = new TextDecoder('utf-8', { fatal: true });\r\n", "import { mvtTextDecoder } from '../globals/mvtTextDecoder.js';\r\nimport { readMvtMessage } from './readMvtMessage.js';\r\n\r\nexport function readMvtString(reader, wire) {\r\n return mvtTextDecoder.decode(readMvtMessage(reader, wire).bytes);\r\n}\r\n", "import { expectMvtWire } from './expectMvtWire.js';\r\nimport { numericMvtValue } from './numericMvtValue.js';\r\nimport { readMvtInteger } from './readMvtInteger.js';\r\nimport { readMvtString } from './readMvtString.js';\r\nimport { takeMvtBytes } from './takeMvtBytes.js';\r\n\r\nexport function readMvtKnownValue(reader, field, wire) {\r\n let offset, integer;\r\n if (field === 1) return readMvtString(reader, wire);\r\n if (field === 2 || field === 3) {\r\n expectMvtWire(wire, field === 2 ? 5 : 1);\r\n offset = takeMvtBytes(reader, field === 2 ? 4 : 8);\r\n return field === 2 ? reader.view.getFloat32(offset, true) : reader.view.getFloat64(offset, true);\r\n }\r\n expectMvtWire(wire, 0);\r\n integer = readMvtInteger(reader);\r\n if (field === 4) return numericMvtValue(BigInt.asIntN(64, integer));\r\n if (field === 5) return numericMvtValue(integer);\r\n if (field === 6) return numericMvtValue((integer >> 1n) ^ -(integer & 1n));\r\n return integer !== 0n;\r\n}\r\n", "import { readMvtField } from './readMvtField.js';\r\nimport { skipMvtField } from './skipMvtField.js';\r\nimport { readMvtKnownValue } from './readMvtKnownValue.js';\r\n\r\nexport function readMvtValue(reader) {\r\n let value, found = false, field, wire;\r\n while (reader.pos < reader.bytes.length) {\r\n [field, wire] = readMvtField(reader);\r\n if (field < 1 || field > 7) {\r\n skipMvtField(reader, wire);\r\n continue;\r\n }\r\n if (found) throw /* alloc */ new Error('Multiple MVT value types');\r\n found = true;\r\n value = readMvtKnownValue(reader, field, wire);\r\n }\r\n if (!found) throw /* alloc */ new Error('Empty MVT value');\r\n return value;\r\n}\r\n", "import { expectMvtWire } from './expectMvtWire.js';\r\nimport { readMvtFeature } from './readMvtFeature.js';\r\nimport { readMvtField } from './readMvtField.js';\r\nimport { readMvtMessage } from './readMvtMessage.js';\r\nimport { readMvtNumber } from './readMvtNumber.js';\r\nimport { readMvtString } from './readMvtString.js';\r\nimport { readMvtValue } from './readMvtValue.js';\r\nimport { skipMvtField } from './skipMvtField.js';\r\n\r\nexport function readMvtLayer(reader) {\r\n let name, version, extent = 4096, field, wire, value, i = 0;\r\n const keys = /* alloc */ [], values = /* alloc */ [], features = /* alloc */ [];\r\n while (reader.pos < reader.bytes.length) {\r\n [field, wire] = readMvtField(reader);\r\n if (field === 1) name = readMvtString(reader, wire);\r\n else if (field === 2) features.push(readMvtMessage(reader, wire));\r\n else if (field === 3) keys.push(readMvtString(reader, wire));\r\n else if (field === 4) values.push(readMvtValue(readMvtMessage(reader, wire)));\r\n else if (field === 5 || field === 15) {\r\n expectMvtWire(wire, 0);\r\n value = readMvtNumber(reader);\r\n if (field === 5) extent = value;\r\n else version = value;\r\n } else skipMvtField(reader, wire);\r\n }\r\n if (!name || !/* alloc */ [1, 2].includes(version) || !extent || extent > 0xffffffff) {\r\n throw /* alloc */ new Error('Invalid MVT layer metadata');\r\n }\r\n for (; i < features.length; i++) features[i] = readMvtFeature(features[i], keys, values);\r\n return /* alloc */ { name, extent, features };\r\n}\r\n", "import { createMvtReader } from './createMvtReader.js';\r\nimport { readMvtField } from './readMvtField.js';\r\nimport { readMvtLayer } from './readMvtLayer.js';\r\nimport { readMvtMessage } from './readMvtMessage.js';\r\nimport { skipMvtField } from './skipMvtField.js';\r\n\r\n/**\r\n * Decode an uncompressed MVT ArrayBuffer/Uint8Array into tile-local layers.\r\n * Feature types: 0 unknown, 1 points, 2 lines, 3 polygon rings (including holes).\r\n * Integers outside JavaScript's safe range are returned as decimal strings.\r\n */\r\nexport function decodeVectorTile(buffer) {\r\n if (!(buffer instanceof ArrayBuffer) && !(buffer instanceof Uint8Array)) {\r\n throw /* alloc */ new TypeError('MVT input must be an ArrayBuffer or Uint8Array');\r\n }\r\n const bytes = buffer instanceof Uint8Array ? buffer : /* alloc */ new Uint8Array(buffer);\r\n const reader = createMvtReader(bytes);\r\n const layers = /* alloc */ [], names = /* alloc */ new Set();\r\n let field, wire, layer;\r\n while (reader.pos < reader.bytes.length) {\r\n [field, wire] = readMvtField(reader);\r\n if (field !== 3) {\r\n skipMvtField(reader, wire);\r\n continue;\r\n }\r\n layer = readMvtLayer(readMvtMessage(reader, wire));\r\n if (names.has(layer.name)) throw /* alloc */ new Error('Duplicate MVT layer name');\r\n names.add(layer.name);\r\n layers.push(layer);\r\n }\r\n return layers;\r\n}\r\n", "export function vectorStyleDependencies(entry) {\r\n const dependencies = /* alloc */ new Set();\r\n const expressions = /* alloc */ [entry.paint, entry.filter];\r\n let value, child;\r\n while (expressions.length) {\r\n value = expressions.pop();\r\n if (!value || typeof value !== 'object') continue;\r\n if (Array.isArray(value) && typeof value[1] === 'string' &&\r\n /* alloc */ ['get', 'has', '==', '!=', '<', '>', '<=', '>=', 'in', '!in'].includes(value[0])) {\r\n dependencies.add(value[1]);\r\n }\r\n for (child of Object.values(value)) expressions.push(child);\r\n }\r\n return dependencies;\r\n}\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateBoolean(op, args, properties, zoom, legacy) {\r\n let i = 0;\r\n if (op === 'all') {\r\n for (i = 0; i < args.length; i++) {\r\n if (!evaluateStyle(args[i], properties, zoom, legacy)) return false;\r\n }\r\n return true;\r\n }\r\n if (op === 'any') {\r\n for (i = 0; i < args.length; i++) {\r\n if (evaluateStyle(args[i], properties, zoom, legacy)) return true;\r\n }\r\n return false;\r\n }\r\n throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\r\n}\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateCoalesceOrCase(op, args, properties, zoom, legacy) {\r\n let i = 0, result = null;\r\n if (op === 'coalesce') {\r\n for (i = 0; i < args.length; i++) {\r\n result = evaluateStyle(args[i], properties, zoom);\r\n if (result !== null && result !== undefined) return result;\r\n }\r\n return null;\r\n }\r\n if (op === 'case') {\r\n for (i = 0; i < args.length - 1; i += 2) {\r\n if (evaluateStyle(args[i], properties, zoom)) {\r\n return evaluateStyle(args[i + 1], properties, zoom);\r\n }\r\n }\r\n return evaluateStyle(args[args.length - 1], properties, zoom);\r\n }\r\n throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\r\n}\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateInput(value, properties, zoom, legacy) {\r\n if (legacy && typeof value === 'string') return properties[value];\r\n return evaluateStyle(value, properties, zoom);\r\n}\r\n", "import { evaluateInput } from './evaluateInput.js';\r\nimport { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateComparison(op, args, properties, zoom, legacy) {\r\n const left = evaluateInput(args[0], properties, zoom, legacy);\r\n const right = evaluateStyle(args[1], properties, zoom);\r\n switch (op) {\r\n case '==': return left === right;\r\n case '!=': return left !== right;\r\n case '<=': return left <= right;\r\n case '>=': return left >= right;\r\n case '<': return left < right;\r\n case '>': return left > right;\r\n default: throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\r\n }\r\n}\r\n", "export const vectorStyleNamedColors = {\r\n black: [0, 0, 0, 1],\r\n white: [255, 255, 255, 1],\r\n gray: [128, 128, 128, 1],\r\n blue: [0, 0, 255, 1],\r\n red: [255, 0, 0, 1],\r\n green: [0, 128, 0, 1]\r\n};\r\n", "export function parseFunctionalColor(value) {\r\n const match = /^rgba?\\(([^)]+)\\)$/.exec(value);\r\n if (match) {\r\n const values = match[1].split(',');\r\n let i = 0, finite = true;\r\n for (i = 0; i < values.length; i++) values[i] = Number(values[i]);\r\n if (values.length === 3) values.push(1);\r\n for (i = 0; i < values.length; i++) {\r\n if (!Number.isFinite(values[i])) finite = false;\r\n }\r\n if (values.length === 4 && finite) return values;\r\n }\r\n throw /* alloc */ new Error(`Unsupported interpolated style color: ${value}`);\r\n}\r\n", "export function parseHexColor(value) {\r\n let i = 0, offset = 0;\r\n if (value.length === 4) {\r\n value = '#' + value[1] + value[1] + value[2] + value[2] + value[3] + value[3];\r\n }\r\n const color = /* alloc */ [];\r\n for (i = 1; i < 6; i += 2) {\r\n offset = parseInt(value.slice(i, i + 2), 16);\r\n color.push(offset);\r\n }\r\n color.push(1);\r\n return color;\r\n}\r\n", "import { vectorStyleNamedColors } from '../globals/vectorStyleNamedColors.js';\r\nimport { parseFunctionalColor } from './parseFunctionalColor.js';\r\nimport { parseHexColor } from './parseHexColor.js';\r\n\r\nexport function styleColor(value) {\r\n if (Object.hasOwn(vectorStyleNamedColors, value)) return vectorStyleNamedColors[value];\r\n if (/^#[0-9a-f]{3}$/i.test(value) || /^#[0-9a-f]{6}$/i.test(value)) {\r\n return parseHexColor(value);\r\n }\r\n return parseFunctionalColor(value);\r\n}\r\n", "import { styleColor } from './styleColor.js';\r\nimport { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateInterpolate(args, properties, zoom) {\r\n const result = evaluateStyle(args[1], properties, zoom);\r\n const base = args[0][0] === 'exponential' ? args[0][1] : 1;\r\n let i = 0, lower = 0, upper = 0, ratio = 0, left = null, right = null, j = 0, color = '';\r\n if (result <= args[2]) return evaluateStyle(args[3], properties, zoom);\r\n for (i = 4; i < args.length; i += 2) {\r\n if (result > args[i]) continue;\r\n lower = args[i - 2];\r\n upper = args[i];\r\n ratio = base === 1 ? (result - lower) / (upper - lower)\r\n : (base ** (result - lower) - 1) / (base ** (upper - lower) - 1);\r\n left = evaluateStyle(args[i - 1], properties, zoom);\r\n right = evaluateStyle(args[i + 1], properties, zoom);\r\n if (typeof left === 'number' && typeof right === 'number') return left + (right - left) * ratio;\r\n left = styleColor(left);\r\n right = styleColor(right);\r\n for (j = 0; j < 3; j++) {\r\n if (j) color += ',';\r\n color += Math.round(left[j] + (right[j] - left[j]) * ratio);\r\n }\r\n return `rgba(${color},${left[3] + (right[3] - left[3]) * ratio})`;\r\n }\r\n return evaluateStyle(args.at(-1), properties, zoom);\r\n}\r\n", "export function arrayContainsRange(values, start, end, target) {\r\n let i = 0, value = null;\r\n for (i = start; i < end; i++) {\r\n value = values[i];\r\n if (value === target || (value !== value && target !== target)) return true;\r\n }\r\n return false;\r\n}\r\n", "import { arrayContainsRange } from './arrayContainsRange.js';\r\nimport { evaluateInput } from './evaluateInput.js';\r\nimport { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateMembership(op, args, properties, zoom, legacy) {\r\n let target = null;\r\n if (op === '!in') {\r\n target = evaluateInput(args[0], properties, zoom, legacy);\r\n return !arrayContainsRange(args, 1, args.length, target);\r\n }\r\n if (legacy) {\r\n target = evaluateInput(args[0], properties, zoom, true);\r\n return arrayContainsRange(args, 1, args.length, target);\r\n }\r\n const values = evaluateStyle(args[1], properties, zoom);\r\n target = evaluateInput(args[0], properties, zoom, false);\r\n return values.includes(target);\r\n}\r\n", "import { evaluateInterpolate } from './evaluateInterpolate.js';\r\nimport { evaluateMembership } from './evaluateMembership.js';\r\n\r\nexport function evaluateIExpression(op, args, properties, zoom, legacy) {\r\n if (op === 'in') return evaluateMembership(op, args, properties, zoom, legacy);\r\n if (op === 'interpolate') return evaluateInterpolate(args, properties, zoom);\r\n throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\r\n}\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateMath(op, args, properties, zoom) {\r\n let i = 0, sum = 0;\r\n if (op === '+') {\r\n for (i = 0; i < args.length; i++) sum += evaluateStyle(args[i], properties, zoom);\r\n return sum;\r\n }\r\n if (op === '-') {\r\n if (args.length === 1) return -evaluateStyle(args[0], properties, zoom);\r\n return evaluateStyle(args[0], properties, zoom) - evaluateStyle(args[1], properties, zoom);\r\n }\r\n throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\r\n}\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateMatch(args, properties, zoom) {\r\n const result = evaluateStyle(args[0], properties, zoom);\r\n let i = 0, matched = false;\r\n for (i = 1; i < args.length - 1; i += 2) {\r\n if (Array.isArray(args[i])) matched = args[i].includes(result);\r\n else matched = args[i] === result;\r\n if (matched) return evaluateStyle(args[i + 1], properties, zoom);\r\n }\r\n return evaluateStyle(args[args.length - 1], properties, zoom);\r\n}\r\n", "import { evaluateInput } from './evaluateInput.js';\r\nimport { evaluateMembership } from './evaluateMembership.js';\r\nimport { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateNegation(op, args, properties, zoom, legacy) {\r\n if (op === '!') return !evaluateStyle(args[0], properties, zoom, legacy);\r\n if (op === '!=') {\r\n return evaluateInput(args[0], properties, zoom, legacy) !==\r\n evaluateStyle(args[1], properties, zoom);\r\n }\r\n if (op === '!in') return evaluateMembership(op, args, properties, zoom, legacy);\r\n throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\r\n}\r\n", "export function evaluatePrimitive(op, args, properties, zoom) {\r\n switch (op) {\r\n case 'literal': return args[0];\r\n case 'get': return properties[args[0]];\r\n case 'has': return Object.hasOwn(properties, args[0]);\r\n case 'zoom': return zoom;\r\n default: throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\r\n }\r\n}\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateStep(args, properties, zoom) {\r\n const result = evaluateStyle(args[0], properties, zoom);\r\n let output = args[1], i = 0;\r\n for (i = 2; i < args.length; i += 2) {\r\n if (result < args[i]) break;\r\n output = args[i + 1];\r\n }\r\n return evaluateStyle(output, properties, zoom);\r\n}\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateToExpression(op, args, properties, zoom) {\r\n if (op === 'to-boolean') return Boolean(evaluateStyle(args[0], properties, zoom));\r\n if (op === 'to-number') {\r\n let i = 0, number = 0;\r\n for (i = 0; i < args.length; i++) {\r\n number = Number(evaluateStyle(args[i], properties, zoom));\r\n if (Number.isFinite(number)) return number;\r\n }\r\n throw /* alloc */ new Error('Invalid numeric style expression');\r\n }\r\n throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\r\n}\r\n", "import { evaluateBoolean } from './evaluateBoolean.js';\r\nimport { evaluateCoalesceOrCase } from './evaluateCoalesceOrCase.js';\r\nimport { evaluateComparison } from './evaluateComparison.js';\r\nimport { evaluateIExpression } from './evaluateIExpression.js';\r\nimport { evaluateMath } from './evaluateMath.js';\r\nimport { evaluateMatch } from './evaluateMatch.js';\r\nimport { evaluateNegation } from './evaluateNegation.js';\r\nimport { evaluatePrimitive } from './evaluatePrimitive.js';\r\nimport { evaluateStep } from './evaluateStep.js';\r\nimport { evaluateToExpression } from './evaluateToExpression.js';\r\n\r\nexport function evaluateStyle(value, properties, zoom, legacy = false) {\r\n if (!Array.isArray(value)) return value;\r\n const op = value[0];\r\n const args = value.slice(1);\r\n const operation = String(op);\r\n if (/^(?:literal|get|has|zoom)$/.test(operation)) {\r\n return evaluatePrimitive(op, args, properties, zoom);\r\n }\r\n switch (operation[0]) {\r\n case 'a': return evaluateBoolean(op, args, properties, zoom, legacy);\r\n case '!': return evaluateNegation(op, args, properties, zoom, legacy);\r\n case '=':\r\n case '<':\r\n case '>': return evaluateComparison(op, args, properties, zoom, legacy);\r\n case 'i': return evaluateIExpression(op, args, properties, zoom, legacy);\r\n case 't': return evaluateToExpression(op, args, properties, zoom, legacy);\r\n case 'c': return evaluateCoalesceOrCase(op, args, properties, zoom, legacy);\r\n case 'm': return evaluateMatch(args, properties, zoom);\r\n case 's': return evaluateStep(args, properties, zoom);\r\n default: return evaluateMath(op, args, properties, zoom);\r\n }\r\n}\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function visibleStyle(layer, properties, zoom) {\r\n return zoom >= (layer.minzoom ?? 0) && zoom < (layer.maxzoom ?? Infinity) &&\r\n layer.layout?.visibility !== 'none' &&\r\n (!layer.filter || evaluateStyle(layer.filter, properties, zoom, true));\r\n}\r\n", "import { visibleStyle } from '../vector-style/visibleStyle.js';\r\n\r\nexport function vectorFeatureZoom(entry, properties, zoom, maxZoom) {\r\n if (visibleStyle(entry, properties, zoom)) return zoom;\r\n zoom = maxZoom;\r\n while (zoom >= 0 && !visibleStyle(entry, properties, zoom)) zoom--;\r\n return zoom;\r\n}\r\n", "import { evaluateStyle } from '../vector-style/evaluateStyle.js';\r\n\r\nexport function vectorStyleValue(object, key, fallback, properties, zoom) {\r\n return object?.[key] === undefined ? fallback : evaluateStyle(object[key], properties, zoom);\r\n}\r\n", "/** Distance from a point on segment (i-1, i) along the path until it turns more than ~45 degrees from that segment. */\r\nexport function vectorStraightRun(path, i, point, step) {\r\n const base = Math.atan2(path[i][1] - path[i - 1][1], path[i][0] - path[i - 1][0]);\r\n let j = step > 0 ? i : i - 1, previous = point, run = 0, next;\r\n while (j >= 0 && j < path.length) {\r\n run += Math.hypot(path[j][0] - previous[0], path[j][1] - previous[1]);\r\n previous = path[j];\r\n next = j + step;\r\n if (next < 0 || next >= path.length) break;\r\n if (Math.cos(Math.atan2(path[next][1] - path[j][1], path[next][0] - path[j][0]) - base + (step < 0 ? Math.PI : 0)) < 0.7) break;\r\n j = next;\r\n }\r\n return run;\r\n}\r\n", "import { vectorStraightRun } from './vectorStraightRun.js';\r\n\r\n/** Anchors evenly spread along a path: each is a point on a segment plus that segment's ends. */\r\nexport function vectorLabelAnchors(path, spacing) {\r\n const anchors = /* alloc */ [];\r\n let length = 0, i, walked, target, count, k, segment, t, point;\r\n for (i = 1; i < path.length; i++) length += Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]);\r\n count = Math.max(1, Math.floor(length / spacing));\r\n i = 1; walked = 0;\r\n for (k = 0; k < count; k++) {\r\n target = (k + 0.5) * length / count;\r\n while (i < path.length - 1 && walked + Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]) < target) {\r\n walked += Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]); i++;\r\n }\r\n segment = Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]);\r\n t = segment ? Math.min(1, Math.max(0, (target - walked) / segment)) : 0;\r\n point = /* alloc */ [\r\n path[i - 1][0] + (path[i][0] - path[i - 1][0]) * t, path[i - 1][1] + (path[i][1] - path[i - 1][1]) * t,\r\n ];\r\n anchors.push(/* alloc */ { point, a: path[i - 1], b: path[i],\r\n length: vectorStraightRun(path, i, point, 1) + vectorStraightRun(path, i, point, -1) });\r\n }\r\n return anchors;\r\n}\r\n", "export function vectorLabelProperty(properties, match, key) {\r\n return properties[key] ?? '';\r\n}\r\n", "import { evaluateStyle } from '../vector-style/evaluateStyle.js';\r\nimport { vectorLabelProperty } from './vectorLabelProperty.js';\r\n\r\nexport function vectorLabelText(entry, properties, zoom) {\r\n let text = entry.layout?.['text-field'];\r\n if (Array.isArray(text)) text = evaluateStyle(text, properties, zoom);\r\n if (typeof text !== 'string') text = '';\r\n text = text.replace(/\\{([^}]+)\\}/g, vectorLabelProperty.bind(null, properties));\r\n return entry.layout?.['text-transform'] === 'uppercase' ? text.toUpperCase() : text;\r\n}\r\n", "export function projectVectorPoint(point, coords, extent) {\r\n const size = 2 ** coords.z;\r\n const x = (coords.x + point[0] / extent) / size;\r\n const y = (coords.y + point[1] / extent) / size;\r\n return /* alloc */ [Math.atan(Math.sinh(Math.PI * (1 - 2 * y))) * 180 / Math.PI, x * 360 - 180];\r\n}\r\n", "import { evaluateStyle } from '../vector-style/evaluateStyle.js';\r\nimport { projectVectorPoint } from './projectVectorPoint.js';\r\nimport { vectorStyleValue } from './vectorStyleValue.js';\r\n\r\nexport function createVectorLabel(job, layer, entry, properties, order, text, icon, anchor, size) {\r\n return /* alloc */ {\r\n text, latlng: projectVectorPoint(anchor.point, job.coords, layer.extent),\r\n order, entry, properties, size, pixelBase: anchor.length * 256 / layer.extent / 2 ** job.coords.z,\r\n along: anchor.a ? /* alloc */ [\r\n projectVectorPoint(anchor.a, job.coords, layer.extent),\r\n projectVectorPoint(anchor.b, job.coords, layer.extent),\r\n ] : null,\r\n icon: text.trim() ? null : icon,\r\n iconOffset: evaluateStyle(entry.layout?.['icon-offset'], properties, job.zoom) || /* alloc */ [0, 0],\r\n allowOverlap: entry.layout?.['icon-allow-overlap'] === true,\r\n color: vectorStyleValue(entry.paint, 'text-color', '#000', properties, job.zoom),\r\n halo: vectorStyleValue(entry.paint, 'text-halo-color', '#fff', properties, job.zoom),\r\n haloWidth: vectorStyleValue(entry.paint, 'text-halo-width', 0, properties, job.zoom),\r\n priority: /* alloc */ ['place_labels', 'place'].includes(entry['source-layer']) ? 0\r\n : /* alloc */ ['street_labels', 'transportation_name'].includes(entry['source-layer']) ? 1 : 2,\r\n };\r\n}\r\n", "import { evaluateStyle } from '../vector-style/evaluateStyle.js';\r\nimport { vectorStyleValue } from './vectorStyleValue.js';\r\nimport { vectorLabelAnchors } from './vectorLabelAnchors.js';\r\nimport { vectorLabelText } from './vectorLabelText.js';\r\nimport { createVectorLabel } from './createVectorLabel.js';\r\n\r\nexport function prepareVectorLabel(job, layer, entry, feature, order) {\r\n const { properties } = feature, { zoom } = job;\r\n const text = vectorLabelText(entry, properties, zoom);\r\n const icon = entry.layout?.['symbol-placement'] === 'line' ? null\r\n : evaluateStyle(entry.layout?.['icon-image'], properties, zoom);\r\n if (!text.trim() && typeof icon !== 'string') return;\r\n const size = vectorStyleValue(entry.layout, 'text-size', 12, properties, zoom), line = feature.type === 2 && text.trim();\r\n const spacing = layer.extent / 16, anchors = /* alloc */ [];\r\n let path, anchor;\r\n for (path of line ? feature.geometry : feature.geometry.slice(0, 1)) {\r\n if (!path?.length) continue;\r\n if (!line) anchors.push(/* alloc */ { point: path[Math.floor(path.length / 2)], a: null });\r\n else for (anchor of vectorLabelAnchors(path, spacing)) anchors.push(anchor);\r\n }\r\n for (anchor of anchors) {\r\n if (anchor.point[0] < 0 || anchor.point[0] >= layer.extent || anchor.point[1] < 0 || anchor.point[1] >= layer.extent) continue;\r\n job.labels.push(createVectorLabel(job, layer, entry, properties, order, text, icon, anchor, size));\r\n }\r\n}\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function readPaintValue(paint, key, fallback, properties, zoom) {\r\n if (paint[key] === undefined) return fallback;\r\n return evaluateStyle(paint[key], properties, zoom);\r\n}\r\n", "import { readPaintValue } from './readPaintValue.js';\r\nimport { styleColor } from './styleColor.js';\r\n\r\nexport function fillVectorPaint(paint, properties, zoom) {\r\n const fill = styleColor(readPaintValue(paint, 'fill-color', '#000', properties, zoom));\r\n const outline = readPaintValue(paint, 'fill-outline-color', null, properties, zoom);\r\n const rgb = outline === null ? null : styleColor(outline);\r\n const fillOpacity = readPaintValue(paint, 'fill-opacity', 1, properties, zoom) * fill[3];\r\n const fillColor = /* alloc */ { r: fill[0] / 255, g: fill[1] / 255, b: fill[2] / 255 };\r\n const color = rgb ? /* alloc */ { r: rgb[0] / 255, g: rgb[1] / 255, b: rgb[2] / 255 } : null;\r\n return /* alloc */ {\r\n fillColor,\r\n fillOpacity,\r\n color,\r\n weight: 0.5\r\n };\r\n}\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function scaleDashArray(dash, weight, properties, zoom) {\r\n if (!dash) return undefined;\r\n let values = dash, i = 0, result = '';\r\n if (typeof dash[0] !== 'number') values = evaluateStyle(dash, properties, zoom);\r\n if (!Array.isArray(values)) throw /* alloc */ new TypeError('Style dash array must be an array');\r\n for (i = 0; i < values.length; i++) {\r\n if (i) result += ' ';\r\n result += values[i] * weight;\r\n }\r\n return result;\r\n}\r\n", "import { readPaintValue } from './readPaintValue.js';\r\nimport { scaleDashArray } from './scaleDashArray.js';\r\nimport { styleColor } from './styleColor.js';\r\n\r\nexport function lineVectorPaint(layer, paint, properties, zoom) {\r\n const weight = readPaintValue(paint, 'line-width', 1, properties, zoom);\r\n const rgb = styleColor(readPaintValue(paint, 'line-color', '#000', properties, zoom));\r\n const opacity = readPaintValue(paint, 'line-opacity', 1, properties, zoom) * rgb[3];\r\n const dashArray = scaleDashArray(paint['line-dasharray'], weight, properties, zoom);\r\n const lineCap = layer.layout?.['line-cap'] || 'butt';\r\n const lineJoin = layer.layout?.['line-join'] || 'miter';\r\n const color = /* alloc */ { r: rgb[0] / 255, g: rgb[1] / 255, b: rgb[2] / 255 };\r\n return /* alloc */ {\r\n color,\r\n opacity,\r\n weight,\r\n dashArray,\r\n lineCap,\r\n lineJoin\r\n };\r\n}\r\n", "import { fillVectorPaint } from './fillVectorPaint.js';\r\nimport { lineVectorPaint } from './lineVectorPaint.js';\r\n\r\nexport function vectorPaint(layer, properties, zoom) {\r\n const paint = layer.paint || /* alloc */ {};\r\n if (layer.type === 'fill') return fillVectorPaint(paint, properties, zoom);\r\n return lineVectorPaint(layer, paint, properties, zoom);\r\n}\r\n", "import { vectorPaint } from '../vector-style/vectorPaint.js';\r\nimport { visibleStyle } from '../vector-style/visibleStyle.js';\r\n\r\nexport function vectorFeaturePaint(entry, feature, sampleZoom, maxZoom) {\r\n if (entry.type === 'fill') return feature.type === 3 ? vectorPaint(entry, feature.properties, sampleZoom) : null;\r\n if (entry.type !== 'line' || feature.type !== 2) return null;\r\n let paint = vectorPaint(entry, feature.properties, sampleZoom), candidate;\r\n if (paint.weight > 0 && paint.opacity > 0) return paint;\r\n for (candidate = maxZoom; candidate >= 0; candidate--) {\r\n if (!visibleStyle(entry, feature.properties, candidate)) continue;\r\n paint = vectorPaint(entry, feature.properties, candidate);\r\n if (paint.weight > 0 && paint.opacity > 0) return paint;\r\n }\r\n return null;\r\n}\r\n", "export function mvtEdgeX(edge, y) {\r\n return edge[0][0] + (y - edge[0][1]) *\r\n (edge[1][0] - edge[0][0]) / (edge[1][1] - edge[0][1]);\r\n}\r\n", "import { mvtEdgeX } from './mvtEdgeX.js';\r\n\r\nexport function addMvtCrossings(edges, levels) {\r\n let i = 0, j, a, b, top, bottom, start, end;\r\n for (; i < edges.length; i++) {\r\n a = edges[i];\r\n for (j = i + 1; j < edges.length; j++) {\r\n b = edges[j];\r\n top = Math.max(a[0][1], b[0][1]);\r\n bottom = Math.min(a[1][1], b[1][1]);\r\n if (top >= bottom) continue;\r\n start = mvtEdgeX(a, top) - mvtEdgeX(b, top);\r\n end = mvtEdgeX(a, bottom) - mvtEdgeX(b, bottom);\r\n if (start * end < 0) levels.add(top + (bottom - top) * start / (start - end));\r\n }\r\n }\r\n}\r\n", "export function mergeMvtActiveEdges(active, sorted, left, mid, right) {\r\n let i = left, j = mid, k = left;\r\n while (i < mid && j < right) {\r\n if (active[j].x < active[i].x) sorted[k++] = active[j++];\r\n else sorted[k++] = active[i++];\r\n }\r\n while (i < mid) sorted[k++] = active[i++];\r\n while (j < right) sorted[k++] = active[j++];\r\n}\r\n", "import { mergeMvtActiveEdges } from './mergeMvtActiveEdges.js';\r\n\r\nexport function sortMvtActiveEdges(active) {\r\n const sorted = /* alloc */ new Array(active.length);\r\n let width = 1, left, mid, right, i;\r\n while (width < active.length) {\r\n for (left = 0; left < active.length; left += width * 2) {\r\n mid = Math.min(left + width, active.length);\r\n right = Math.min(left + width * 2, active.length);\r\n mergeMvtActiveEdges(active, sorted, left, mid, right);\r\n }\r\n for (i = 0; i < active.length; i++) active[i] = sorted[i];\r\n width *= 2;\r\n }\r\n}\r\n", "import { mvtEdgeX } from './mvtEdgeX.js';\r\nimport { sortMvtActiveEdges } from './sortMvtActiveEdges.js';\r\n\r\nexport function appendMvtBandTriangles(edges, top, bottom, triangles) {\r\n const mid = (top + bottom) / 2, active = /* alloc */ [];\r\n let edge, i = 0, leftTop, leftBottom, rightTop, rightBottom;\r\n for (edge of edges) {\r\n if (edge[0][1] < mid && edge[1][1] > mid) {\r\n active.push(/* alloc */ { edge, x: mvtEdgeX(edge, mid) });\r\n }\r\n }\r\n sortMvtActiveEdges(active);\r\n if (active.length % 2) throw /* alloc */ new Error('Unbalanced MVT polygon edges');\r\n for (; i < active.length; i += 2) {\r\n leftTop = mvtEdgeX(active[i].edge, top);\r\n leftBottom = mvtEdgeX(active[i].edge, bottom);\r\n rightTop = mvtEdgeX(active[i + 1].edge, top);\r\n rightBottom = mvtEdgeX(active[i + 1].edge, bottom);\r\n if (rightTop < leftTop - 1e-8 || rightBottom < leftBottom - 1e-8) {\r\n throw /* alloc */ new Error('Crossing MVT polygon edges');\r\n }\r\n if ((rightTop - leftTop) * (bottom - top) > 1e-6) {\r\n triangles.push(/* alloc */ [/* alloc */ [leftTop, top], /* alloc */ [rightTop, top],\r\n /* alloc */ [leftBottom, bottom]]);\r\n }\r\n if ((rightBottom - leftBottom) * (bottom - top) > 1e-6) {\r\n triangles.push(/* alloc */ [/* alloc */ [rightTop, top], /* alloc */ [rightBottom, bottom],\r\n /* alloc */ [leftBottom, bottom]]);\r\n }\r\n }\r\n}\r\n", "export function finiteMvtCoordinate(point) {\r\n let i = 0;\r\n for (; i < point.length; i++) {\r\n if (!Number.isFinite(point[i])) return false;\r\n }\r\n return true;\r\n}\r\n", "import { finiteMvtCoordinate } from './finiteMvtCoordinate.js';\r\n\r\nexport function collectMvtEdges(rings, edges, levels) {\r\n let ring, i, a, b;\r\n for (ring of rings) {\r\n if (ring.length < 4 || ring[0][0] !== ring.at(-1)[0] || ring[0][1] !== ring.at(-1)[1]) {\r\n throw /* alloc */ new Error('MVT tessellation requires closed rings');\r\n }\r\n for (i = 1; i < ring.length; i++) {\r\n a = ring[i - 1];\r\n b = ring[i];\r\n if (!finiteMvtCoordinate(a) || !finiteMvtCoordinate(b)) {\r\n throw /* alloc */ new Error('Invalid MVT ring coordinate');\r\n }\r\n levels.add(a[1]);\r\n if (a[1] !== b[1]) edges.push(/* alloc */ [a[1] < b[1] ? a : b, a[1] < b[1] ? b : a]);\r\n }\r\n }\r\n}\r\n", "export function sortedMvtLevels(levels) {\r\n const sorted = /* alloc */ [];\r\n let y, gap = 0, i = 0, j, value, count = 0;\r\n for (y of levels) sorted.push(y);\r\n gap = Math.floor(sorted.length / 2);\r\n for (; gap > 0; gap = Math.floor(gap / 2)) {\r\n for (i = gap; i < sorted.length; i++) {\r\n value = sorted[i];\r\n j = i;\r\n while (j >= gap && sorted[j - gap] > value) {\r\n sorted[j] = sorted[j - gap];\r\n j -= gap;\r\n }\r\n sorted[j] = value;\r\n }\r\n }\r\n for (i = 0; i < sorted.length; i++) {\r\n if (!count || sorted[i] - sorted[count - 1] > 1e-8) sorted[count++] = sorted[i];\r\n }\r\n sorted.length = count;\r\n return sorted;\r\n}\r\n", "import { addMvtCrossings } from './addMvtCrossings.js';\r\nimport { appendMvtBandTriangles } from './appendMvtBandTriangles.js';\r\nimport { collectMvtEdges } from './collectMvtEdges.js';\r\nimport { sortedMvtLevels } from './sortedMvtLevels.js';\r\n\r\nexport function tessellateVectorRings(rings) {\r\n const edges = /* alloc */ [], levels = /* alloc */ new Set(), triangles = /* alloc */ [];\r\n let sorted, i = 1, top, bottom;\r\n collectMvtEdges(rings, edges, levels);\r\n addMvtCrossings(edges, levels);\r\n sorted = sortedMvtLevels(levels);\r\n // ponytail: quadratic edge scan; use a sweep-line index for large datasets.\r\n for (; i < sorted.length; i++) {\r\n top = sorted[i - 1];\r\n bottom = sorted[i];\r\n if (bottom > top) appendMvtBandTriangles(edges, top, bottom, triangles);\r\n }\r\n return triangles;\r\n}\r\n", "export function isMvtFallbackError(error) {\r\n return error.message === 'Polygon triangulation area mismatch' ||\r\n error.message === 'Degenerate polygon ring' ||\r\n error.message === 'Unable to triangulate polygon: invalid or self-intersecting rings' ||\r\n error.message === 'Unable to connect polygon hole';\r\n}\r\n", "import { tessellateVectorRings } from './tessellateVectorRings.js';\r\nimport { triangulate } from '../triangulation/triangulate.js';\r\nimport { isMvtFallbackError } from './isMvtFallbackError.js';\r\n\r\nexport function appendMvtPolygonTriangles(rings, paths, vertices, triangles) {\r\n let indices, index, triangle, points, i = 0;\r\n try {\r\n indices = triangulate(paths[0], paths.slice(1));\r\n for (triangle of indices) {\r\n points = /* alloc */ [];\r\n for (index of triangle) points.push(/* alloc */ [vertices[index].x, vertices[index].y]);\r\n triangles.push(points);\r\n }\r\n } catch (error) {\r\n if (!isMvtFallbackError(error)) throw error;\r\n indices = tessellateVectorRings(rings);\r\n for (; i < indices.length; i++) triangles.push(indices[i]);\r\n }\r\n}\r\n", "import { finiteMvtCoordinate } from './finiteMvtCoordinate.js';\r\n\r\nexport function groupMvtPolygons(rings) {\r\n const polygons = /* alloc */ [];\r\n let polygon, exteriorSign, ring, area, i;\r\n for (ring of rings) {\r\n if (ring.length < 4 || ring[0][0] !== ring.at(-1)[0] || ring[0][1] !== ring.at(-1)[1]) {\r\n throw /* alloc */ new Error('MVT tessellation requires closed rings');\r\n }\r\n area = 0;\r\n for (i = 1; i < ring.length; i++) {\r\n if (!finiteMvtCoordinate(ring[i]) || !finiteMvtCoordinate(ring[i - 1])) {\r\n throw /* alloc */ new Error('Invalid MVT ring coordinate');\r\n }\r\n area += ring[i - 1][0] * ring[i][1] - ring[i][0] * ring[i - 1][1];\r\n }\r\n if (!polygon || area && Math.sign(area) === exteriorSign) {\r\n polygon = /* alloc */ [];\r\n polygons.push(polygon);\r\n exteriorSign = Math.sign(area);\r\n }\r\n polygon.push(ring);\r\n }\r\n return polygons;\r\n}\r\n", "export function mvtPathsVertices(paths) {\r\n const vertices = /* alloc */ [];\r\n let path, point;\r\n for (path of paths) {\r\n for (point of path) vertices.push(point);\r\n }\r\n return vertices;\r\n}\r\n", "export function mvtPolygonPaths(rings) {\r\n const paths = /* alloc */ [];\r\n let ring, i, path;\r\n for (ring of rings) {\r\n path = /* alloc */ [];\r\n for (i = 0; i < ring.length - 1; i++) {\r\n path.push(/* alloc */ { x: ring[i][0], y: ring[i][1] });\r\n }\r\n paths.push(path);\r\n }\r\n return paths;\r\n}\r\n", "import { appendMvtPolygonTriangles } from './appendMvtPolygonTriangles.js';\r\nimport { groupMvtPolygons } from './groupMvtPolygons.js';\r\nimport { mvtPathsVertices } from './mvtPathsVertices.js';\r\nimport { mvtPolygonPaths } from './mvtPolygonPaths.js';\r\n\r\n/**\r\n * Reuse City Mapper's triangulator in tile space, with even-odd tessellation\r\n * for quantized touching/crossing rings. Output triangles omit their closure.\r\n */\r\nexport function triangulateVectorRings(rings) {\r\n const polygons = groupMvtPolygons(rings), triangles = /* alloc */ [];\r\n let polygon, paths, vertices;\r\n for (polygon of polygons) {\r\n paths = mvtPolygonPaths(polygon);\r\n vertices = mvtPathsVertices(paths);\r\n appendMvtPolygonTriangles(polygon, paths, vertices, triangles);\r\n }\r\n return triangles;\r\n}\r\n", "export function simplifyVectorPath(path, tolerance) {\r\n if (path.length < 3) return path;\r\n const keep = /* alloc */ new Uint8Array(path.length);\r\n const stack = /* alloc */ [/* alloc */ [0, path.length - 1]], output = /* alloc */ [];\r\n keep[0] = keep[path.length - 1] = 1;\r\n let start, end, a, b, dx, dy, length, index, distance, i, p, t, squared;\r\n while (stack.length) {\r\n [start, end] = stack.pop(); a = path[start]; b = path[end];\r\n dx = b[0] - a[0]; dy = b[1] - a[1]; length = dx * dx + dy * dy;\r\n index = -1; distance = tolerance * tolerance;\r\n for (i = start + 1; i < end; i++) {\r\n p = path[i];\r\n t = length ? Math.max(0, Math.min(1, ((p[0] - a[0]) * dx + (p[1] - a[1]) * dy) / length)) : 0;\r\n squared = (p[0] - a[0] - t * dx) ** 2 + (p[1] - a[1] - t * dy) ** 2;\r\n if (squared > distance) { distance = squared; index = i; }\r\n }\r\n if (index >= 0) { keep[index] = 1; stack.push(/* alloc */ [start, index], /* alloc */ [index, end]); }\r\n }\r\n for (i = 0; i < path.length; i++) if (keep[i]) output.push(path[i]);\r\n return output;\r\n}\r\n", "import { triangulateVectorRings } from '../mvt/triangulateVectorRings.js';\r\nimport { projectVectorPoint } from './projectVectorPoint.js';\r\nimport { simplifyVectorPath } from './simplifyVectorPath.js';\r\n\r\nexport function projectVectorTriangles(geometry, coords, extent, tolerance) {\r\n const paths = /* alloc */ [], rings = /* alloc */ [];\r\n let triangle, projected, point, ring;\r\n for (ring of geometry) {\r\n ring = simplifyVectorPath(ring, tolerance);\r\n if (ring.length >= 4) rings.push(ring);\r\n }\r\n for (triangle of triangulateVectorRings(rings)) {\r\n projected = /* alloc */ [];\r\n for (point of triangle) projected.push(projectVectorPoint(point, coords, extent));\r\n paths.push(/* alloc */ [projected]);\r\n }\r\n return paths;\r\n}\r\n", "import { projectVectorPoint } from './projectVectorPoint.js';\r\nimport { simplifyVectorPath } from './simplifyVectorPath.js';\r\n\r\nexport function projectVectorPaths(geometry, coords, extent, tolerance) {\r\n const paths = /* alloc */ [];\r\n let path, simplified, projected, point;\r\n for (path of geometry) {\r\n simplified = simplifyVectorPath(path, tolerance);\r\n if (simplified.length < 3 && Math.hypot(simplified.at(-1)[0] - simplified[0][0], simplified.at(-1)[1] - simplified[0][1]) < tolerance * 2) continue;\r\n projected = /* alloc */ [];\r\n for (point of simplified) projected.push(projectVectorPoint(point, coords, extent));\r\n paths.push(projected);\r\n }\r\n return paths;\r\n}\r\n", "/** Simplification tolerance in tile units: about 0.7 screen pixels at the displayed scale. */\r\nexport function vectorTolerance(job, layer) {\r\n return layer.extent / 256 / 2 ** Math.max(-1, job.mapZoom - job.coords.z) * 0.7;\r\n}\r\n", "import { projectVectorTriangles } from './projectVectorTriangles.js';\r\nimport { projectVectorPaths } from './projectVectorPaths.js';\r\nimport { vectorTolerance } from './vectorTolerance.js';\r\n\r\nexport function vectorFeaturePaths(job, layer, entry, feature) {\r\n const cache = entry.type === 'fill' ? job.triangles : job.projected;\r\n let paths = cache.get(feature);\r\n if (!paths) {\r\n const tolerance = vectorTolerance(job, layer);\r\n paths = entry.type === 'fill'\r\n ? projectVectorTriangles(feature.geometry, job.coords, layer.extent, tolerance)\r\n : projectVectorPaths(feature.geometry, job.coords, layer.extent, tolerance);\r\n cache.set(feature, paths);\r\n }\r\n return paths;\r\n}\r\n", "import { vectorFeaturePaths } from './vectorFeaturePaths.js';\r\n\r\nexport function appendVectorBatch(job, layer, entry, feature, order, batches, dependencies, paint) {\r\n const values = /* alloc */ [];\r\n let key, batch, path, count;\r\n for (key of dependencies) values.push(feature.properties[key]);\r\n key = JSON.stringify(/* alloc */ [paint, values]);\r\n batch = batches.get(key);\r\n if (!batch) {\r\n batch = /* alloc */ { kind: entry.type, order, paint, properties: feature.properties, entry,\r\n paths: /* alloc */ [], coordinates: 0 };\r\n batches.set(key, batch);\r\n }\r\n for (path of vectorFeaturePaths(job, layer, entry, feature)) {\r\n count = entry.type === 'fill' ? 3 : path.length;\r\n if (batch.coordinates + count > 6000 && batch.paths.length) {\r\n job.output.push(/* alloc */ { ...batch, paths: batch.paths });\r\n batch.paths = /* alloc */ []; batch.coordinates = 0;\r\n }\r\n batch.paths.push(path); batch.coordinates += count;\r\n }\r\n}\r\n", "import { vectorStyleDependencies } from './vectorStyleDependencies.js';\r\nimport { vectorFeatureZoom } from './vectorFeatureZoom.js';\r\nimport { prepareVectorLabel } from './prepareVectorLabel.js';\r\nimport { vectorFeaturePaint } from './vectorFeaturePaint.js';\r\nimport { vectorPaint } from '../vector-style/vectorPaint.js';\r\nimport { appendVectorBatch } from './appendVectorBatch.js';\r\n\r\nexport function prepareVectorStyleLayer(job, layer, entry, order) {\r\n const batches = /* alloc */ new Map(), dependencies = vectorStyleDependencies(entry);\r\n const outlineColor = entry.type === 'fill' ? entry.paint?.['fill-outline-color'] : null;\r\n const outline = outlineColor ? /* alloc */ { ...entry, type: 'line',\r\n paint: /* alloc */ { 'line-color': outlineColor, 'line-width': 1 } } : null;\r\n let feature, sampleZoom, paint, batch;\r\n for (feature of layer.features) {\r\n sampleZoom = vectorFeatureZoom(entry, feature.properties, job.zoom, job.maxZoom);\r\n if (sampleZoom < 0) continue;\r\n if (entry.type === 'symbol') {\r\n prepareVectorLabel(job, layer, entry, feature, order);\r\n continue;\r\n }\r\n paint = vectorFeaturePaint(entry, feature, sampleZoom, job.maxZoom);\r\n if (!paint) continue;\r\n appendVectorBatch(job, layer, entry, feature, order, batches, dependencies, paint);\r\n if (outline && feature.type === 3) {\r\n appendVectorBatch(job, layer, outline, feature, order, batches, dependencies,\r\n vectorPaint(outline, feature.properties, sampleZoom));\r\n }\r\n }\r\n for (batch of batches.values()) if (batch.paths.length) job.output.push(batch);\r\n}\r\n", "import { decodeVectorTile } from '../mvt/decodeVectorTile.js';\r\nimport { prepareVectorStyleLayer } from './prepareVectorStyleLayer.js';\r\n\r\nexport function prepareVectorTile(buffer, coords, style, zoom, source, maxZoom = 19, mapZoom = zoom) {\r\n const layers = decodeVectorTile(buffer), byName = /* alloc */ new Map();\r\n const job = /* alloc */ { coords, zoom, mapZoom, maxZoom, output: /* alloc */ [], labels: /* alloc */ [],\r\n triangles: /* alloc */ new WeakMap(), projected: /* alloc */ new WeakMap() };\r\n let layer, order, entry;\r\n for (layer of layers) byName.set(layer.name, layer);\r\n for ([order, entry] of style.entries()) {\r\n layer = byName.get(entry['source-layer']);\r\n if (!layer || source !== undefined && entry.source !== source) continue;\r\n prepareVectorStyleLayer(job, layer, entry, order);\r\n }\r\n return /* alloc */ { batches: job.output, labels: job.labels };\r\n}\r\n", "import { prepareVectorTile } from '../vector-tiles/prepareVectorTile.js';\r\n\r\nexport function onVectorTileMessage({ data }) {\r\n try {\r\n const result = prepareVectorTile(data.buffer, data.coords, data.style, data.zoom, data.source, data.maxZoom, data.mapZoom);\r\n self.postMessage(/* alloc */ { id: data.id, ...result });\r\n } catch (error) {\r\n self.postMessage(/* alloc */ { id: data.id, error: error.message });\r\n }\r\n}\r\n", "export function validateCogRange(source, offset, length) {\r\n if (!Number.isSafeInteger(offset) || !Number.isSafeInteger(length) || offset < 0 ||\r\n length <= 0 || length > 32000000 || !Number.isSafeInteger(offset + length) ||\r\n source.size !== undefined && offset + length > source.size) {\r\n throw /* alloc */ new Error('Invalid COG byte range');\r\n }\r\n}\r\n", "export function validateCogContentRange(source, range, rangeStart, length) {\r\n if (!range || Number(range[1]) !== rangeStart || Number(range[2]) !== rangeStart + length - 1 ||\r\n !Number.isSafeInteger(Number(range[3])) || Number(range[3]) < rangeStart + length ||\r\n (source.containerSize ?? source.size) !== undefined &&\r\n (source.containerSize ?? source.size) !== Number(range[3])) {\r\n throw /* alloc */ new Error('Invalid COG range response');\r\n }\r\n}\r\n", "export function invalidCogFullResponse(response) {\r\n return response.status !== 200 || Number(response.headers.get('Content-Length')) > 32000000;\r\n}\r\n", "import { validateCogContentRange } from './validateCogContentRange.js';\r\nimport { invalidCogFullResponse } from './invalidCogFullResponse.js';\r\n\r\nexport function validateCogResponse(source, response, rangeStart, length) {\r\n const etag = response.headers.get('ETag');\r\n if (source.etag && source.etag !== etag) throw /* alloc */ new Error('COG changed; recreate the layer');\r\n if (etag) source.etag = etag;\r\n const range = /^bytes (\\d+)-(\\d+)\\/(\\d+)$/.exec(response.headers.get('Content-Range') || '');\r\n if (response.status === 206) {\r\n validateCogContentRange(source, range, rangeStart, length);\r\n if (source.baseOffset === undefined) source.size = Number(range[3]);\r\n } else if (invalidCogFullResponse(response)) {\r\n throw /* alloc */ new Error('COG server must support byte ranges for files over 32 MB');\r\n }\r\n}\r\n", "export async function readCogBody(response, length) {\r\n const reader = response.body.getReader(), chunks = /* alloc */ [];\r\n let total = 0, part;\r\n try {\r\n while (!(part = await reader.read()).done) {\r\n total += part.value.byteLength;\r\n if (total > (response.status === 206 ? length : 32000000)) {\r\n await reader.cancel();\r\n throw /* alloc */ new Error('Oversized COG response');\r\n }\r\n chunks.push(part.value);\r\n }\r\n } finally {\r\n reader.releaseLock();\r\n }\r\n const data = /* alloc */ new Uint8Array(total);\r\n let start = 0, chunk;\r\n for (chunk of chunks) { data.set(chunk, start); start += chunk.length; }\r\n return data;\r\n}\r\n", "import { validateCogRange } from './validateCogRange.js';\r\nimport { validateCogResponse } from './validateCogResponse.js';\r\nimport { readCogBody } from './readCogBody.js';\r\n\r\nexport async function readCog(source, offset, length, signal) {\r\n signal?.throwIfAborted();\r\n validateCogRange(source, offset, length);\r\n if (source.full) return source.full.slice(offset, offset + length);\r\n const rangeStart = (source.baseOffset || 0) + offset;\r\n const response = await fetch(source.url, /* alloc */ {\r\n headers: /* alloc */ { Range: `bytes=${rangeStart}-${rangeStart + length - 1}` }, signal,\r\n });\r\n if (!response.ok) throw /* alloc */ new Error(`Unable to read COG: HTTP ${response.status}`);\r\n validateCogResponse(source, response, rangeStart, length);\r\n const data = await readCogBody(response, length);\r\n if (response.status === 200) {\r\n if (source.baseOffset === undefined) source.size = data.byteLength;\r\n else if (data.byteLength !== source.containerSize) throw /* alloc */ new Error('Truncated PMTiles COG container');\r\n source.full = source.baseOffset === undefined ? data.buffer\r\n : data.slice(source.baseOffset, source.baseOffset + source.size);\r\n }\r\n const result = response.status === 200 ? source.full.slice(offset, offset + length) : data.buffer;\r\n if (result.byteLength !== length) throw /* alloc */ new Error('Truncated COG byte range');\r\n return result;\r\n}\r\n", "export const cogTags = [256, 257, 258, 259, 262, 277, 284, 317, 322, 323, 324, 325, 339, 33550, 33922, 34735];\r\n", "import { readCog } from './readCog.js';\r\n\r\nexport async function readCogTag(source, entries, i, tag, little) {\r\n const type = entries.getUint16(i * 12 + 2, little);\r\n const size = type === 3 ? 2 : type === 4 ? 4 : type === 12 ? 8 : 0;\r\n const length = entries.getUint32(i * 12 + 4, little);\r\n if (!size || !length || length > 1048576) throw /* alloc */ new Error(`Unsupported COG tag ${tag}`);\r\n const data = size * length <= 4 ? /* alloc */ new DataView(entries.buffer, i * 12 + 8, 4)\r\n : /* alloc */ new DataView(await readCog(source, entries.getUint32(i * 12 + 8, little), size * length));\r\n const values = /* alloc */ [];\r\n let j;\r\n for (j = 0; j < length; j++) values.push(type === 3 ? data.getUint16(j * size, little)\r\n : type === 4 ? data.getUint32(j * size, little) : data.getFloat64(j * size, little));\r\n return values;\r\n}\r\n", "import { readCog } from './readCog.js';\r\nimport { cogTags } from '../globals/cogTags.js';\r\nimport { readCogTag } from './readCogTag.js';\r\n\r\nexport async function readCogDirectory(source, offset) {\r\n const little = source.little;\r\n const count = /* alloc */ new DataView(await readCog(source, offset, 2)).getUint16(0, little);\r\n if (!count || count > 128) throw /* alloc */ new Error('Invalid COG directory size');\r\n const entries = /* alloc */ new DataView(await readCog(source, offset + 2, count * 12 + 4));\r\n const tags = /* alloc */ new Map();\r\n let i, tag;\r\n for (i = 0; i < count; i++) {\r\n tag = entries.getUint16(i * 12, little);\r\n if (tag === 42113) throw /* alloc */ new Error('COG nodata tags are not supported; export complete tiles');\r\n if (tag === 34264) throw /* alloc */ new Error('COG affine transformation matrices are not supported');\r\n if (!cogTags.includes(tag)) continue;\r\n if (tags.has(tag)) throw /* alloc */ new Error('Duplicate COG tag');\r\n tags.set(tag, await readCogTag(source, entries, i, tag, little));\r\n }\r\n return /* alloc */ { tags, next: entries.getUint32(count * 12, little) };\r\n}\r\n", "export function validCogDimensions(tags, width, height) {\r\n return !!width && !!height && width % 256 === 0 && height % 256 === 0 &&\r\n tags.get(322)?.[0] === 256 && tags.get(323)?.[0] === 256 &&\r\n (tags.get(259)?.[0] === 1 || tags.get(259)?.[0] === 8) &&\r\n (tags.get(284)?.[0] ?? 1) === 1 && (tags.get(317)?.[0] ?? 1) === 1;\r\n}\r\n", "export function validCogEncoding(tags, samples, bits, format, elevation, bytes, unsigned) {\r\n if (elevation) return tags.get(262)?.[0] === 1;\r\n return (samples === 3 || samples === 4) && bits?.length === samples && bytes && unsigned &&\r\n tags.get(262)?.[0] === 2;\r\n}\r\n", "import { validCogDimensions } from './validCogDimensions.js';\r\nimport { validCogEncoding } from './validCogEncoding.js';\r\n\r\nexport function getCogProfile(tags) {\r\n const width = tags.get(256)?.[0], height = tags.get(257)?.[0], samples = tags.get(277)?.[0] ?? 1;\r\n const bits = tags.get(258), format = tags.get(339) || /* alloc */ [1];\r\n let bytes = true, unsigned = true, floating = true, value;\r\n for (value of bits || /* alloc */ []) bytes &&= value === 8;\r\n for (value of format) { unsigned &&= value === 1; floating &&= value === 3; }\r\n const elevation = samples === 1 && bits?.length === 1 && bits[0] === 32 && floating;\r\n if (!validCogDimensions(tags, width, height) ||\r\n !validCogEncoding(tags, samples, bits, format, elevation, bytes, unsigned)) {\r\n throw /* alloc */ new Error('Unsupported COG profile: expected tiled 256px RGB(A) Uint8 or Float32, DEFLATE without predictor');\r\n }\r\n return /* alloc */ { width, height, samples, elevation };\r\n}\r\n", "export function hasCogProjection(keys) {\r\n let projected = false, area = false, i;\r\n if (keys) for (i = 4; i < keys.length; i += 4) {\r\n if (keys[i + 1] !== 0 || keys[i + 2] !== 1) continue;\r\n if (keys[i] === 3072 && keys[i + 3] === 3857) projected = true;\r\n if (keys[i] === 1025 && keys[i + 3] === 1) area = true;\r\n }\r\n return projected && area;\r\n}\r\n", "export function finiteCogValues(values) {\r\n let value;\r\n for (value of values || /* alloc */ []) if (!Number.isFinite(value)) return false;\r\n return true;\r\n}\r\n", "import { finiteCogValues } from './finiteCogValues.js';\r\n\r\nexport function validCogGeoArrays(keys, scale, tie) {\r\n return !!keys && keys[0] === 1 && keys.length === 4 + keys[3] * 4 &&\r\n !!scale && scale.length === 3 && finiteCogValues(scale) &&\r\n scale[0] > 0 && Math.abs(scale[0] - scale[1]) <= 1e-8 &&\r\n !!tie && tie.length === 6 && finiteCogValues(tie) && tie[0] === 0 && tie[1] === 0;\r\n}\r\n", "import { hasCogProjection } from './hasCogProjection.js';\r\nimport { validCogGeoArrays } from './validCogGeoArrays.js';\r\n\r\nexport function getCogBase(tags, width, height, elevation) {\r\n const keys = tags.get(34735), scale = tags.get(33550), tie = tags.get(33922);\r\n if (!validCogGeoArrays(keys, scale, tie) || !hasCogProjection(keys)) {\r\n throw /* alloc */ new Error('COG must use north-up EPSG:3857 PixelIsArea georeferencing');\r\n }\r\n return /* alloc */ { width, height, resolution: scale[0], left: tie[3], top: tie[4], elevation };\r\n}\r\n", "export function validCogGrid(source, base, profile, zoom, x, y, resolution) {\r\n return zoom >= 0 && zoom <= 24 &&\r\n Math.abs(20037508.342789244 * 2 / (256 * 2 ** zoom) - resolution) <= resolution * 1e-7 &&\r\n (!profile.elevation || Number.isInteger(x) && Number.isInteger(y)) &&\r\n Math.abs(base.width / profile.width - base.height / profile.height) <= 1e-7 &&\r\n profile.elevation === base.elevation &&\r\n x >= 0 && y >= 0 && x + profile.width / 256 <= 2 ** zoom && y + profile.height / 256 <= 2 ** zoom &&\r\n !source.levels.has(zoom) && !(base.elevation && source.levels.size);\r\n}\r\n", "export function validateCogOffsets(source, level) {\r\n if (level.offsets?.length !== level.columns * level.rows || level.lengths?.length !== level.offsets.length) {\r\n throw /* alloc */ new Error('Invalid COG tile offsets or lengths');\r\n }\r\n let i;\r\n for (i = 0; i < level.offsets.length; i++) {\r\n if (!level.offsets[i] || !level.lengths[i] || level.lengths[i] > 1048576 ||\r\n level.offsets[i] + level.lengths[i] > source.size) throw /* alloc */ new Error('Invalid COG tile offsets or lengths');\r\n }\r\n}\r\n", "import { getCogProfile } from './getCogProfile.js';\r\nimport { getCogBase } from './getCogBase.js';\r\nimport { validCogGrid } from './validCogGrid.js';\r\nimport { validateCogOffsets } from './validateCogOffsets.js';\r\n\r\nexport function readCogLevel(source, directory, state) {\r\n const tags = directory.tags, profile = getCogProfile(tags);\r\n if (!state.base) state.base = getCogBase(tags, profile.width, profile.height, profile.elevation);\r\n const base = state.base, resolution = base.resolution * base.width / profile.width;\r\n const zoom = Math.round(Math.log2(20037508.342789244 * 2 / (256 * resolution)));\r\n const span = 20037508.342789244 * 2 / 2 ** zoom;\r\n let x = (base.left + 20037508.342789244) / span;\r\n let y = (20037508.342789244 - base.top) / span;\r\n if (Math.abs(x - Math.round(x)) < 1e-6) x = Math.round(x);\r\n if (Math.abs(y - Math.round(y)) < 1e-6) y = Math.round(y);\r\n if (!validCogGrid(source, base, profile, zoom, x, y, resolution)) {\r\n throw /* alloc */ new Error('COG levels must align with the Web Mercator XYZ tile grid');\r\n }\r\n const level = /* alloc */ {\r\n x, y, columns: profile.width / 256, rows: profile.height / 256, samples: profile.samples,\r\n elevation: profile.elevation, compression: tags.get(259)[0], offsets: tags.get(324), lengths: tags.get(325),\r\n };\r\n validateCogOffsets(source, level);\r\n source.levels.set(zoom, level);\r\n state.minZoom = Math.min(state.minZoom, zoom);\r\n state.maxZoom = Math.max(state.maxZoom, zoom);\r\n}\r\n", "import { readCogDirectory } from './readCogDirectory.js';\r\nimport { readCogLevel } from './readCogLevel.js';\r\n\r\nexport async function readCogDirectories(source, offset) {\r\n const state = /* alloc */ { base: null, minZoom: Infinity, maxZoom: -Infinity };\r\n const seen = /* alloc */ new Set();\r\n let directory;\r\n while (offset) {\r\n if (seen.has(offset) || seen.size >= 24) throw /* alloc */ new Error('Cyclic or excessive COG directories');\r\n seen.add(offset);\r\n directory = await readCogDirectory(source, offset);\r\n readCogLevel(source, directory, state);\r\n offset = directory.next;\r\n }\r\n if (!state.base) throw /* alloc */ new Error('COG has no image directory');\r\n if (source.levels.size !== state.maxZoom - state.minZoom + 1) {\r\n throw /* alloc */ new Error('COG overview zooms must be contiguous');\r\n }\r\n return /* alloc */ { base: state.base, minZoom: state.minZoom, maxZoom: state.maxZoom };\r\n}\r\n", "export async function decodeCogTile(data, length, compression) {\r\n if (compression === 1) {\r\n if (data.byteLength !== length) throw /* alloc */ new Error('Invalid uncompressed COG tile size');\r\n return data;\r\n }\r\n const stream = /* alloc */ new Blob(/* alloc */ [data]).stream()\r\n .pipeThrough(/* alloc */ new DecompressionStream('deflate'));\r\n const reader = stream.getReader(), result = /* alloc */ new Uint8Array(length);\r\n let offset = 0, chunk;\r\n try {\r\n while (!(chunk = await reader.read()).done) {\r\n if (offset + chunk.value.length > length) {\r\n await reader.cancel();\r\n throw /* alloc */ new Error('Oversized decoded COG tile');\r\n }\r\n result.set(chunk.value, offset);\r\n offset += chunk.value.length;\r\n }\r\n } finally {\r\n reader.releaseLock();\r\n }\r\n if (offset !== length) throw /* alloc */ new Error('Truncated decoded COG tile');\r\n return result.buffer;\r\n}\r\n", "import { readCog } from './readCog.js';\r\nimport { decodeCogTile } from './decodeCogTile.js';\r\n\r\nexport async function readCogBlock(source, level, x, y, signal) {\r\n const index = y * level.columns + x;\r\n return decodeCogTile(await readCog(source, level.offsets[index], level.lengths[index], signal),\r\n 256 * 256 * (level.elevation ? 4 : level.samples), level.compression);\r\n}\r\n", "import { readCogBlock } from './readCogBlock.js';\r\n\r\nexport async function getElevationTile(source, level, x, y, signal) {\r\n const data = await readCogBlock(source, level, x - level.x, y - level.y, signal);\r\n signal?.throwIfAborted();\r\n const view = /* alloc */ new DataView(data), heights = /* alloc */ new Float32Array(256 * 256);\r\n let i, height;\r\n for (i = 0; i < heights.length; i++) {\r\n height = view.getFloat32(i * 4, source.little);\r\n if (!Number.isFinite(height) || height < -12000 || height > 10000) {\r\n throw /* alloc */ new Error('Invalid or missing COG elevation sample');\r\n }\r\n heights[i] = height;\r\n }\r\n return /* alloc */ { data: heights.buffer };\r\n}\r\n", "import { readCogBlock } from './readCogBlock.js';\r\n\r\nexport async function getColorTile(source, level, x, y, signal) {\r\n const canvas = /* alloc */ new OffscreenCanvas(256, 256), context = canvas.getContext('2d');\r\n if (!context) throw /* alloc */ new Error('Unable to create COG tile canvas');\r\n const left = (x - level.x) * 256, top = (y - level.y) * 256;\r\n let bx, by, pixels, rgba, i, j, bitmap;\r\n for (by = Math.max(0, Math.floor(top / 256)); by < Math.min(level.rows, Math.ceil(top / 256 + 1)); by++) {\r\n for (bx = Math.max(0, Math.floor(left / 256)); bx < Math.min(level.columns, Math.ceil(left / 256 + 1)); bx++) {\r\n pixels = /* alloc */ new Uint8Array(await readCogBlock(source, level, bx, by, signal));\r\n signal?.throwIfAborted();\r\n rgba = /* alloc */ new Uint8ClampedArray(256 * 256 * 4);\r\n for (i = 0, j = 0; i < pixels.length; i += level.samples, j += 4) {\r\n rgba[j] = pixels[i]; rgba[j + 1] = pixels[i + 1]; rgba[j + 2] = pixels[i + 2];\r\n rgba[j + 3] = level.samples === 4 ? pixels[i + 3] : 255;\r\n }\r\n bitmap = await createImageBitmap(/* alloc */ new ImageData(rgba, 256, 256));\r\n context.drawImage(bitmap, bx * 256 - left, by * 256 - top);\r\n bitmap.close();\r\n }\r\n }\r\n const image = canvas.transferToImageBitmap();\r\n if (signal?.aborted) { image.close(); signal.throwIfAborted(); }\r\n return /* alloc */ { image };\r\n}\r\n", "export function validCogTileCoordinates(z, x, y) {\r\n return Number.isSafeInteger(z) && Number.isSafeInteger(x) && Number.isSafeInteger(y) &&\r\n z >= 0 && z <= 24 && x >= 0 && y >= 0 && x < 2 ** z && y < 2 ** z;\r\n}\r\n", "import { getElevationTile } from './getElevationTile.js';\r\nimport { getColorTile } from './getColorTile.js';\r\nimport { validCogTileCoordinates } from './validCogTileCoordinates.js';\r\n\r\nexport async function getCogTile(source, z, x, y, signal) {\r\n signal?.throwIfAborted();\r\n if (!validCogTileCoordinates(z, x, y)) throw /* alloc */ new Error('Invalid COG tile coordinates');\r\n const level = source.levels.get(z);\r\n if (!level || x + 1 <= level.x || y + 1 <= level.y || x >= level.x + level.columns || y >= level.y + level.rows) return;\r\n if (level.elevation) return getElevationTile(source, level, x, y, signal);\r\n return getColorTile(source, level, x, y, signal);\r\n}\r\n", "export function getCogHeader(source) {\r\n return source.header;\r\n}\r\n", "export const headerOffsets = [\n 'rootDirectoryOffset', 'rootDirectoryLength', 'jsonMetadataOffset', 'jsonMetadataLength',\n 'leafDirectoryOffset', 'leafDirectoryLength', 'tileDataOffset', 'tileDataLength',\n 'numAddressedTiles', 'numTileEntries', 'numTileContents',\n];\n", "export const headerFlags = ['clustered', 'internalCompression', 'tileCompression', 'tileType', 'minZoom', 'maxZoom'];\n", "export const headerBounds = ['minLon', 'minLat', 'maxLon', 'maxLat'];\n", "import { headerOffsets } from '../globals/headerOffsets.js';\nimport { headerFlags } from '../globals/headerFlags.js';\nimport { headerBounds } from '../globals/headerBounds.js';\n\n\n/** Decode the PMTiles v3 header. */\nexport function decodeHeader(data) {\n const view = data.byteLength >= 127\n ? /* alloc */ new DataView(data) : null;\n // \"PMTiles\" followed by version 3, read as two little-endian words.\n if (!view || view.getUint32(0, true) !== 0x69544d50 || view.getUint32(4, true) !== 0x0373656c) {\n throw /* alloc */ new Error('Expected a PMTiles v3 archive');\n }\n const header = /* alloc */ {};\n let i;\n for (i = 0; i < headerOffsets.length; i++) header[headerOffsets[i]] = Number(view.getBigUint64(8 + i * 8, true));\n for (i = 0; i < headerFlags.length; i++) header[headerFlags[i]] = view.getUint8(96 + i);\n for (i = 0; i < headerBounds.length; i++) header[headerBounds[i]] = view.getInt32(102 + i * 4, true) / 1e7;\n header.centerZoom = view.getUint8(118);\n header.centerLon = view.getInt32(119, true) / 1e7;\n header.centerLat = view.getInt32(123, true) / 1e7;\n return header;\n}\n", "export function validateCogContainer(container, header) {\r\n if (header.tileType !== 0 || header.tileCompression !== 1 ||\r\n !Number.isSafeInteger(header.jsonMetadataOffset) || !Number.isSafeInteger(header.jsonMetadataLength) ||\r\n header.jsonMetadataLength <= 0 || header.jsonMetadataLength > 1048576 ||\r\n !Number.isSafeInteger(header.tileDataOffset) || !Number.isSafeInteger(header.tileDataLength) ||\r\n header.tileDataOffset < 127 || header.tileDataOffset + header.tileDataLength > container.size) {\r\n throw /* alloc */ new Error('Invalid PMTiles COG asset container');\r\n }\r\n}\r\n", "export async function decompress(data, compression) {\n if (compression === 1) return data;\n if (compression !== 2) {\n throw /* alloc */ new Error(`Unsupported PMTiles compression: ${compression}`);\n }\n const blob = /* alloc */ new Blob(\n /* alloc */ [data]);\n const stream = /* alloc */ new DecompressionStream('gzip');\n return /* alloc */ new Response(blob.stream().pipeThrough(stream)).arrayBuffer();\n}\n", "import { decompress } from '../archives/decompress.js';\r\nimport { readCog } from './readCog.js';\r\n\r\nexport async function getCogAssetEntry(container, header, asset) {\r\n const metadata = JSON.parse(/* alloc */ new TextDecoder().decode(await decompress(\r\n await readCog(container, header.jsonMetadataOffset, header.jsonMetadataLength), header.internalCompression)));\r\n const assets = metadata.cog_assets || /* alloc */ {};\r\n const entry = Object.hasOwn(assets, asset) ? metadata.cog_assets[asset] : null;\r\n if (metadata.format !== 'cog-assets-v1' || !entry || !Number.isSafeInteger(entry.offset) ||\r\n !Number.isSafeInteger(entry.length) || entry.offset < 0 || entry.length < 8 ||\r\n entry.offset + entry.length > header.tileDataLength) {\r\n throw /* alloc */ new Error(`Invalid or missing PMTiles COG asset: ${asset}`);\r\n }\r\n return entry;\r\n}\r\n", "import { decodeHeader } from '../archives/decodeHeader.js';\r\nimport { readCog } from './readCog.js';\r\nimport { validateCogContainer } from './validateCogContainer.js';\r\nimport { getCogAssetEntry } from './getCogAssetEntry.js';\r\n\r\nexport async function openCogAsset(url, asset) {\r\n const container = /* alloc */ { url };\r\n const header = decodeHeader(await readCog(container, 0, 127));\r\n validateCogContainer(container, header);\r\n const entry = await getCogAssetEntry(container, header, asset);\r\n const baseOffset = header.tileDataOffset + entry.offset;\r\n return /* alloc */ { url, baseOffset, size: entry.length, containerSize: container.size,\r\n etag: container.etag, full: container.full?.slice(baseOffset, baseOffset + entry.length) };\r\n}\r\n", "import { readCog } from './readCog.js';\r\nimport { readCogDirectories } from './readCogDirectories.js';\r\nimport { getCogTile } from './getCogTile.js';\r\nimport { getCogHeader } from './getCogHeader.js';\r\nimport { openCogAsset } from './openCogAsset.js';\r\n\r\n/** EPSG:3857 COGs, standalone or named assets in a PMTiles container. */\r\nexport async function openCog(url, asset) {\r\n const source = asset === undefined ? /* alloc */ { url } : await openCogAsset(url, asset);\r\n source.levels = /* alloc */ new Map();\r\n const header = /* alloc */ new DataView(await readCog(source, 0, 8));\r\n const order = header.getUint16(0);\r\n if (order !== 0x4949 && order !== 0x4d4d) throw /* alloc */ new Error('Invalid TIFF byte order');\r\n source.little = order === 0x4949;\r\n if (header.getUint16(2, source.little) !== 42) throw /* alloc */ new Error('Expected classic TIFF (BigTIFF is not supported)');\r\n const { base, minZoom, maxZoom } = await readCogDirectories(source, header.getUint32(4, source.little));\r\n const half = 20037508.342789244;\r\n const left = base.left + base.resolution / 2, right = base.left + (base.width - 0.5) * base.resolution;\r\n const top = base.top - base.resolution / 2, bottom = base.top - (base.height - 0.5) * base.resolution;\r\n source.header = /* alloc */ {\r\n minZoom, maxZoom, tileType: base.elevation ? 0 : 2,\r\n minLon: left / half * 180, maxLon: right / half * 180,\r\n minLat: Math.atan(Math.sinh(bottom / half * Math.PI)) * 180 / Math.PI,\r\n maxLat: Math.atan(Math.sinh(top / half * Math.PI)) * 180 / Math.PI,\r\n };\r\n return /* alloc */ {\r\n getHeader: getCogHeader.bind(null, source),\r\n getZxy: getCogTile.bind(null, source),\r\n };\r\n}\r\n", "export const workerCogSource = new Map();\r\n", "import { openCog } from '../cog/openCog.js';\r\nimport { workerCogSource } from '../globals/workerCogSource.js';\r\n\r\nexport async function onCogMessage({ data }) {\r\n try {\r\n const key = JSON.stringify(/* alloc */ [data.url, data.asset]);\r\n if (!workerCogSource.has(key)) {\r\n workerCogSource.set(key, openCog(data.url, data.asset));\r\n if (workerCogSource.size > 4) workerCogSource.delete(workerCogSource.keys().next().value);\r\n }\r\n const archive = await workerCogSource.get(key);\r\n const result = data.z === undefined ? await archive.getHeader() : await archive.getZxy(data.z, data.x, data.y);\r\n const transfers = /* alloc */ [];\r\n if (result?.data) transfers.push(result.data);\r\n if (result?.image) transfers.push(result.image);\r\n self.postMessage(result, transfers);\r\n } catch (error) {\r\n self.postMessage(/* alloc */ { error: /* alloc */ { name: error.name, message: error.message } });\r\n }\r\n}\r\n", "export const geometryDecoder = new TextDecoder();\n", "export function hasUnsupportedPrimitives(meshes) {\n if (!meshes) return false;\n let mesh, primitive;\n for (mesh of meshes) {\n for (primitive of mesh.primitives) {\n if (primitive.targets || (primitive.mode !== undefined && primitive.mode !== 4)) return true;\n }\n }\n return false;\n}\n", "import { geometryDecoder } from '../globals/geometryDecoder.js';\n/** Decode a static glTF JSON document or GLB v2 container. */\nimport { hasUnsupportedPrimitives } from './hasUnsupportedPrimitives.js';\n\n\nexport function decodeModel(data) {\n const view = /* alloc */ new DataView(data);\n const decoder = geometryDecoder;\n let description;\n let offset, length, type, chunk;\n if (view.getUint32(0, true) === 0x46546c67) {\n // Decode GLB v2 chunks; unknown types are skipped.\n if (view.getUint32(4, true) !== 2 || view.getUint32(8, true) !== data.byteLength) {\n throw /* alloc */ new Error('Invalid GLB header');\n }\n let binary;\n for (offset = 12; offset < data.byteLength;) {\n if (offset + 8 > data.byteLength) {\n throw /* alloc */ new Error('Truncated GLB chunk');\n }\n length = view.getUint32(offset, true), type = view.getUint32(offset + 4, true);\n offset += 8;\n if (offset + length > data.byteLength) {\n throw /* alloc */ new Error('Truncated GLB data');\n }\n chunk = data.slice(offset, offset + length);\n if (type === 0x4e4f534a) {\n description = JSON.parse(decoder.decode(chunk));\n }\n if (type === 0x004e4942) {\n binary = chunk;\n }\n offset += length;\n }\n if (!description) {\n throw /* alloc */ new Error('Missing GLB JSON');\n }\n if (binary) {\n description.buffers[0].binary = binary;\n }\n } else {\n description = JSON.parse(decoder.decode(data));\n }\n if (description.skins?.length || description.animations?.length || description.extensionsRequired?.length || hasUnsupportedPrimitives(description.meshes)) {\n throw /* alloc */ new Error('Layer3D supports static triangle glTF models without required extensions');\n }\n return description;\n}\n", "export async function loadBuffer(buffer, directory) {\r\n if (buffer.binary) return;\r\n const response = await fetch(/* alloc */ new URL(buffer.uri, directory).href);\r\n if (!response.ok) throw /* alloc */ new Error(`Unable to load model buffer: HTTP ${response.status}`);\r\n buffer.binary = await response.arrayBuffer();\r\n}\r\n", "export const geometryImageOptions = {\n premultiplyAlpha: 'none',\n colorSpaceConversion: 'none'\n};\n", "import { geometryImageOptions } from '../globals/geometryImageOptions.js';\n\r\n\r\nexport async function loadImage(description, directory, image) {\r\n let blob;\r\n if (image.bufferView !== undefined) {\r\n const view = description.bufferViews[image.bufferView];\r\n const buffer = description.buffers[view.buffer].binary;\r\n blob = /* alloc */ new Blob(\r\n /* alloc */ [buffer.slice(view.byteOffset || 0, (view.byteOffset || 0) + view.byteLength)],\r\n /* alloc */ { type: image.mimeType });\r\n } else {\r\n const response = await fetch(/* alloc */ new URL(image.uri, directory).href);\r\n if (!response.ok) throw /* alloc */ new Error(`Unable to load model texture: HTTP ${response.status}`);\r\n blob = await response.blob();\r\n }\r\n // Preserve straight alpha and raw samples; GPU sRGB formats do color decoding.\r\n return createImageBitmap(blob, geometryImageOptions);\r\n}\r\n", "import { geometryEmpty } from '../globals/geometryEmpty.js';\r\nimport { loadBuffer } from './loadBuffer.js';\r\nimport { loadImage } from '../textures/loadModelImage.js';\r\n\r\nexport async function loadModelResources(description, directory) {\r\n const bufferRequests = /* alloc */ [];\r\n let buffer;\r\n for (buffer of description.buffers || geometryEmpty) bufferRequests.push(loadBuffer(buffer, directory));\r\n await Promise.all(bufferRequests);\r\n const imageRequests = /* alloc */ [];\r\n let image;\r\n for (image of description.images || geometryEmpty) imageRequests.push(loadImage(description, directory, image));\r\n return Promise.all(imageRequests);\r\n}\r\n", "export const geometrySemantics = [\n ['POSITION', 'position'],\n ['NORMAL', 'normal'],\n ['TEXCOORD_0', 'uv']\n];\n", "export const types = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array,\n};\n", "export const sizes = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4\n};\n", "export function readAccessorValue(input, Type, at) {\r\n return Type === Int8Array ? input.getInt8(at) :\r\n Type === Uint8Array ? input.getUint8(at) :\r\n Type === Int16Array ? input.getInt16(at, true) :\r\n Type === Uint16Array ? input.getUint16(at, true) :\r\n Type === Uint32Array ? input.getUint32(at, true) : input.getFloat32(at, true);\r\n}\r\n", "import { readAccessorValue } from './readAccessorValue.js';\n\nexport function readAccessorValues(description, Type, size, data, accessorCount, indices, viewIndex, offset, count, stride) {\n const view = description.bufferViews[viewIndex], bytes = Type.BYTES_PER_ELEMENT;\n const buffer = description.buffers[view.buffer].binary;\n stride ||= size * bytes;\n if (!buffer || stride < size * bytes || offset < 0 ||\n (view.byteOffset || 0) + view.byteLength > buffer.byteLength ||\n (count - 1) * stride + size * bytes + offset > view.byteLength) throw /* alloc */ new Error('glTF accessor outside buffer view');\n const input = /* alloc */ new DataView(buffer);\n let i, j, at, output;\n for (i = 0; i < count; i++) {\n output = indices ? indices[i] : i;\n if (indices && output >= accessorCount) throw /* alloc */ new Error('Invalid sparse glTF index');\n for (j = 0; j < size; j++) {\n at = (view.byteOffset || 0) + offset + i * stride + j * bytes;\n data[output * size + j] = readAccessorValue(input, Type, at);\n }\n }\n}\n", "import { types } from '../globals/types.js';\r\nimport { readAccessorValues } from './readAccessorValues.js';\r\n\r\nexport function readSparseAccessor(description, spec, Type, size, data) {\r\n const sparse = spec.sparse, Index = types[sparse.indices.componentType];\r\n if (Index !== Uint8Array && Index !== Uint16Array && Index !== Uint32Array) {\r\n throw /* alloc */ new Error('Invalid sparse glTF indices');\r\n }\r\n const view = description.bufferViews[sparse.indices.bufferView];\r\n const offset = (view.byteOffset || 0) + (sparse.indices.byteOffset || 0);\r\n if (sparse.count > spec.count ||\r\n (sparse.indices.byteOffset || 0) + sparse.count * Index.BYTES_PER_ELEMENT > view.byteLength) {\r\n throw /* alloc */ new Error('Invalid sparse glTF indices');\r\n }\r\n const indices = /* alloc */ new Index(description.buffers[view.buffer].binary.slice(\r\n offset, offset + sparse.count * Index.BYTES_PER_ELEMENT));\r\n readAccessorValues(description, Type, size, data, spec.count, indices, sparse.values.bufferView,\r\n sparse.values.byteOffset || 0, sparse.count, 0);\r\n}\r\n", "export function normalizeAccessor(spec, Type, data, size) {\r\n const normalized = /* alloc */ new Float32Array(data.length);\r\n let i;\r\n for (i = 0; i < data.length; i++) {\r\n normalized[i] = spec.normalized\r\n ? Math.max(-1, data[i] / (Type === Int8Array ? 127 : Type === Int16Array ? 32767 :\r\n Type === Uint8Array ? 255 : Type === Uint32Array ? 4294967295 : 65535))\r\n : data[i];\r\n }\r\n return /* alloc */ { data: normalized, size, indices: data };\r\n}\r\n", "import { types } from '../globals/types.js';\nimport { sizes } from '../globals/sizes.js';\n\n\nimport { readAccessorValues } from './readAccessorValues.js';\nimport { readSparseAccessor } from './readSparseAccessor.js';\nimport { normalizeAccessor } from './normalizeAccessor.js';\n\n/** Decode packed, interleaved, normalized or sparse glTF accessor data. */\n\nexport function readAccessor(description, index) {\n const spec = description.accessors[index], Type = types[spec.componentType], size = sizes[spec.type];\n if (!Type || !size || !Number.isInteger(spec.count) || spec.count < 0) {\n throw /* alloc */ new Error('Invalid glTF accessor');\n }\n const data = /* alloc */ new Type(spec.count * size);\n if (spec.bufferView !== undefined) {\n readAccessorValues(\n description, Type, size, data, spec.count, null,\n spec.bufferView,\n spec.byteOffset || 0,\n spec.count,\n description.bufferViews[spec.bufferView].byteStride\n );\n }\n if (spec.sparse) {\n readSparseAccessor(description, spec, Type, size, data);\n }\n if (spec.componentType === 5126) {\n return /* alloc */ { data, size };\n }\n return normalizeAccessor(spec, Type, data, size);\n}\n", "import { geometrySemantics } from '../globals/geometrySemantics.js';\r\nimport { readAccessor } from './readAccessor.js';\r\n\r\nexport function readModelAttributes(description, primitive) {\r\n const attributes = /* alloc */ {};\r\n let semantic, name;\r\n for ([semantic, name] of geometrySemantics) {\r\n if (primitive.attributes[semantic] !== undefined) {\r\n attributes[name] = readAccessor(description, primitive.attributes[semantic]);\r\n }\r\n }\r\n if (!attributes.position) throw /* alloc */ new Error('glTF mesh has no positions');\r\n const vertexCount = attributes.position.data.length / 3;\r\n if (attributes.position.size !== 3 || vertexCount < 3) throw /* alloc */ new Error('Invalid glTF vertex attributes');\r\n let attribute;\r\n for (attribute of Object.values(attributes)) {\r\n if (attribute.data.length / attribute.size !== vertexCount) throw /* alloc */ new Error('Invalid glTF vertex attributes');\r\n }\r\n return /* alloc */ { attributes, vertexCount };\r\n}\r\n", "import { readAccessor } from './readAccessor.js';\r\n\r\nexport function readModelIndices(description, primitive, attributes, vertexCount) {\r\n if (primitive.indices !== undefined) {\r\n const index = readAccessor(description, primitive.indices);\r\n attributes.index = /* alloc */ { size: 1, data: index.indices };\r\n if (!(index.indices instanceof Uint8Array || index.indices instanceof Uint16Array ||\r\n index.indices instanceof Uint32Array) || index.size !== 1 || index.indices.length % 3) {\r\n throw /* alloc */ new Error('Invalid glTF triangle indices');\r\n }\r\n let value;\r\n for (value of index.indices) if (value >= vertexCount) throw /* alloc */ new Error('Invalid glTF triangle indices');\r\n } else if (vertexCount % 3) {\r\n throw /* alloc */ new Error('Incomplete glTF triangle');\r\n }\r\n}\r\n", "/** Area-weighted vertex normals, for indexed or non-indexed triangles. */\n\nexport function vertexNormals(p, indices) {\n // Accumulate area-weighted face normals for shared vertices, then normalize.\n const normals = /* alloc */ new Float32Array(p.length);\n let i, a, b, c, ux, uy, uz, vx, vy, vz, j, nx, ny, nz, index, length;\n for (i = 0; i < (indices?.length || p.length / 3); i += 3) {\n a = indices ? indices[i] : i, b = indices ? indices[i + 1] : i + 1, c = indices ? indices[i + 2] : i + 2;\n ux = p[b * 3] - p[a * 3], uy = p[b * 3 + 1] - p[a * 3 + 1], uz = p[b * 3 + 2] - p[a * 3 + 2];\n vx = p[c * 3] - p[a * 3], vy = p[c * 3 + 1] - p[a * 3 + 1], vz = p[c * 3 + 2] - p[a * 3 + 2];\n nx = uy * vz - uz * vy, ny = uz * vx - ux * vz, nz = ux * vy - uy * vx;\n for (j = 0; j < 3; j++) {\n index = j === 0 ? a : j === 1 ? b : c;\n normals[index * 3] += nx;\n normals[index * 3 + 1] += ny;\n normals[index * 3 + 2] += nz;\n }\n }\n for (i = 0; i < normals.length; i += 3) {\n length = Math.hypot(normals[i], normals[i + 1], normals[i + 2]) || 1;\n for (j = 0; j < 3; j++) {\n normals[i + j] /= length;\n }\n }\n return normals;\n}\n", "import { readModelAttributes } from './readModelAttributes.js';\r\nimport { readModelIndices } from './readModelIndices.js';\r\nimport { vertexNormals } from '../geometry/vertexNormals.js';\r\n\r\nexport function prepareModelPrimitive(description, primitive) {\r\n const { attributes, vertexCount } = readModelAttributes(description, primitive);\r\n readModelIndices(description, primitive, attributes, vertexCount);\r\n if (!attributes.normal) {\r\n attributes.normal = /* alloc */ { size: 3,\r\n data: vertexNormals(attributes.position.data, attributes.index?.data) };\r\n }\r\n if (attributes.index?.data instanceof Uint8Array) {\r\n attributes.index.data = Uint16Array.from(attributes.index.data);\r\n }\r\n primitive.preparedAttributes = attributes;\r\n return attributes;\r\n}\r\n", "import { geometryEmpty } from '../globals/geometryEmpty.js';\r\nimport { prepareModelPrimitive } from './prepareModelPrimitive.js';\r\n\r\nexport function prepareModelGeometry(description, scene) {\r\n const pending = scene.nodes.slice(), visited = /* alloc */ new Set();\r\n const meshes = /* alloc */ new Set(), transfers = /* alloc */ new Set();\r\n let index, spec, primitive, attribute, child;\r\n while (pending.length) {\r\n index = pending.pop();\r\n if (visited.has(index)) continue;\r\n visited.add(index);\r\n spec = description.nodes[index];\r\n if (!spec) throw /* alloc */ new Error('Invalid glTF node');\r\n if (spec.mesh !== undefined) meshes.add(spec.mesh);\r\n for (child of spec.children || geometryEmpty) pending.push(child);\r\n }\r\n for (index of meshes) {\r\n for (primitive of description.meshes[index].primitives) {\r\n for (attribute of Object.values(prepareModelPrimitive(description, primitive))) {\r\n transfers.add(attribute.data.buffer);\r\n }\r\n }\r\n }\r\n return /* alloc */ [...transfers];\r\n}\r\n", "import { decodeModel } from './decodeModel.js';\r\nimport { loadModelResources } from './loadModelResources.js';\r\nimport { prepareModelGeometry } from './prepareModelGeometry.js';\r\n\r\nexport async function prepareModel(url) {\r\n const response = await fetch(url);\r\n if (!response.ok) throw /* alloc */ new Error(`Unable to load model: HTTP ${response.status}`);\r\n const description = decodeModel(await response.arrayBuffer());\r\n const scene = description.scenes?.[description.scene || 0];\r\n if (!scene) throw /* alloc */ new Error('Missing glTF scene');\r\n const images = await loadModelResources(description, /* alloc */ new URL('.', url).href);\r\n const transfers = prepareModelGeometry(description, scene);\r\n let image;\r\n for (image of images) transfers.push(image);\r\n delete description.buffers;\r\n delete description.bufferViews;\r\n delete description.accessors;\r\n return /* alloc */ { description, images, transfers };\r\n}\r\n", "import { prepareModel } from '../models/prepareModel.js';\r\n\r\nexport async function onModelMessage({ data }) {\r\n try {\r\n const result = await prepareModel(data.url);\r\n self.postMessage(/* alloc */ { description: result.description, images: result.images }, result.transfers);\r\n } catch (error) {\r\n self.postMessage(/* alloc */ { error: /* alloc */ { name: error.name, message: error.message } });\r\n }\r\n}\r\n", "import { assembleAreaGeometry } from '../geometry/assembleAreaGeometry.js';\r\nimport { onVectorTileMessage } from './vectorTileWorker.js';\r\nimport { onCogMessage } from './cogWorker.js';\r\nimport { onModelMessage } from './modelWorker.js';\r\n\r\nexport function onGeometryMessage(event) {\r\n if (event.data.type === 'model') {\r\n onModelMessage(event);\r\n return;\r\n }\r\n if (event.data.type === 'cog') {\r\n onCogMessage(event);\r\n return;\r\n }\r\n if (event.data.type === 'vector') {\r\n onVectorTileMessage(event);\r\n return;\r\n }\r\n try {\r\n const data = assembleAreaGeometry(event.data);\r\n const transfers = /* alloc */ [data.positions.buffer, data.normals.buffer, data.colors.buffer, data.uvs.buffer];\r\n if (data.instanceOffsets) transfers.push(data.instanceOffsets.buffer);\r\n self.postMessage(data, transfers);\r\n } catch (error) {\r\n self.postMessage(/* alloc */ { error: /* alloc */ { name: error.name, message: error.message } });\r\n }\r\n}\r\n\r\nself.addEventListener('message', onGeometryMessage);\r\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["/**\n * Shared empty list for optional model, geometry and scene collections.\n *\n * @type {Array}\n */\nexport const geometryEmpty = [];\n", "/**\n * Find the smallest x coordinate in a ring.\n *\n * @param {Object[]} ring Points with x coordinates.\n *\n * @returns {number} Minimum x, or Infinity for an empty ring.\n */\nexport function minimumX(ring) {\n let minimum = Infinity;\n let point;\n for (point of ring) minimum = Math.min(minimum, point.x);\n return minimum;\n}\n", "/**\n * Merge two adjacent runs of hole entries by their minimum x coordinate.\n *\n * @param {Object[]} source Sorted runs of hole entries.\n * @param {Object[]} target Array receiving the merged entries.\n * @param {number} start First index of the runs.\n * @param {number} width Maximum length of each run.\n */\nexport function mergeHoles(source, target, start, width) {\n const middle = Math.min(start + width, source.length), end = Math.min(start + width * 2, source.length);\n let left = start, right = middle, output;\n for (output = start; output < end; output++) {\n if (left < middle && (right >= end || source[left].x <= source[right].x)) {\n target[output] = source[left++];\n } else {\n target[output] = source[right++];\n }\n }\n}\n", "import { minimumX } from './minimumX.js';\nimport { mergeHoles } from './mergeHoles.js';\n\n/**\n * Stably sort hole rings in place by their minimum x coordinate.\n *\n * @param {Object[][]} holes Hole rings.\n *\n * @returns {Object[][]} The supplied array of sorted holes.\n */\nexport function sortHoles(holes) {\n if (holes.length < 2) return holes;\n const buffer = /* alloc */ new Array(holes.length);\n const entries = /* alloc */ [];\n let ring, width, start, previous, i;\n for (ring of holes) entries.push(/* alloc */ { ring, x: minimumX(ring) });\n let source = entries, target = buffer;\n for (width = 1; width < entries.length; width *= 2) {\n for (start = 0; start < entries.length; start += width * 2) {\n mergeHoles(source, target, start, width);\n }\n previous = source;\n source = target;\n target = previous;\n }\n for (i = 0; i < holes.length; i++) holes[i] = source[i].ring;\n return holes;\n}\n", "/**\n * Compute the signed 2D cross product of the vectors from a to b and c.\n *\n * @param {Object} a Origin point with x and y coordinates.\n * @param {Object} b First endpoint.\n * @param {Object} c Second endpoint.\n *\n * @returns {number} Signed cross product.\n */\nexport function cross(a, b, c) {\n return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);\n}\n", "/**\n * Compare two planar points by exact coordinates.\n *\n * @param {Object} a First point.\n * @param {Object} b Second point.\n *\n * @returns {boolean} Whether both coordinates match.\n */\nexport function equal(a, b) {\n return a.x === b.x && a.y === b.y;\n}\n", "import { cross } from './cross.js';\nimport { equal } from './equal.js';\n\n/**\n * Remove duplicate and collinear vertices in place while preserving at least three points.\n *\n * @param {Object[]} ring Planar vertices to clean.\n *\n * @returns {Object[]} The supplied ring.\n *\n * @throws {Error} If the ring has fewer than three vertices.\n */\nexport function clean(ring) {\n let changed = true;\n let i, a, b, c;\n while (changed && ring.length > 3) {\n changed = false;\n for (i = 0; i < ring.length; i++) {\n a = ring[(i + ring.length - 1) % ring.length], b = ring[i], c = ring[(i + 1) % ring.length];\n if (equal(a, b) || Math.abs(cross(a, b, c)) < 1e-10) {\n ring.splice(i, 1); changed = true; break;\n }\n }\n }\n if (ring.length < 3) throw /* alloc */ new Error('Degenerate polygon ring');\n return ring;\n}\n", "/**\n * Determine a planar ring's winding from its signed area.\n *\n * @param {Object[]} points Ring points with x and y coordinates.\n *\n * @returns {boolean} Whether the `{x, y}` points are in clockwise order.\n */\nexport function isClockWise(points) {\n let area = 0;\n let i, a, b;\n for (i = 0; i < points.length; i++) {\n a = points[i], b = points[(i + 1) % points.length];\n area += a.x * b.y - b.x * a.y;\n }\n return area < 0;\n}\n", "import { clean } from './clean.js';\nimport { isClockWise } from './isClockWise.js';\n\n/**\n * Split indexed vertices into cleaned rings and normalize outer and hole winding.\n *\n * @param {Object[][]} paths Original polygon paths defining ring lengths.\n * @param {Object[]} vertices Indexed vertices corresponding to the paths.\n *\n * @returns {Object[][]} Cleaned rings with normalized winding.\n */\nexport function polygonRings(paths, vertices) {\n const rings = /* alloc */ [];\n let offset = 0, index, path, ring;\n for (index = 0; index < paths.length; index++) {\n path = paths[index];\n ring = clean(vertices.slice(offset, offset += path.length));\n if (isClockWise(ring) !== Boolean(index)) ring.reverse();\n rings.push(ring);\n }\n return rings;\n}\n", "/**\n * Test a planar point against a ring using crossing parity.\n *\n * @param {Object} point Point with x and y coordinates.\n * @param {Object[]} ring Planar ring vertices.\n *\n * @returns {boolean} Whether the crossing test places the point inside.\n */\nexport function inside(point, ring) {\n let result = false;\n let i, j, a, b;\n for (i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n a = ring[i], b = ring[j];\n if ((a.y > point.y) !== (b.y > point.y) &&\n point.x < (b.x - a.x) * (point.y - a.y) / (b.y - a.y) + a.x) result = !result;\n }\n return result;\n}\n", "import { inside } from './inside.js';\n\n/**\n * Test whether a point is inside any hole ring.\n *\n * @param {Object} point Point with x and y coordinates.\n * @param {Object[][]} rings Outer ring followed by hole rings.\n *\n * @returns {boolean} Whether the point is inside a hole.\n */\nexport function insideHole(point, rings) {\n let i;\n for (i = 1; i < rings.length; i++) if (inside(point, rings[i])) return true;\n return false;\n}\n", "/**\n * Check whether a point lies within a segment's axis-aligned bounding box.\n *\n * @param {Object} p First segment endpoint.\n * @param {Object} q Second segment endpoint.\n * @param {Object} r Point to test.\n *\n * @returns {boolean} Whether the point lies within the bounds.\n */\nexport function on(p, q, r) {\n return Math.min(p.x, q.x) <= r.x && r.x <= Math.max(p.x, q.x) &&\n Math.min(p.y, q.y) <= r.y && r.y <= Math.max(p.y, q.y);\n}\n", "import { equal } from './equal.js';\nimport { cross } from './cross.js';\nimport { on } from './on.js';\n\n/**\n * Test two segments for intersection, excluding shared endpoints.\n *\n * @param {Object} a First endpoint of the first segment.\n * @param {Object} b Second endpoint of the first segment.\n * @param {Object} c First endpoint of the second segment.\n * @param {Object} d Second endpoint of the second segment.\n *\n * @returns {boolean} Whether the segments intersect.\n */\nexport function intersects(a, b, c, d) {\n if (equal(a, c) || equal(a, d) || equal(b, c) || equal(b, d)) return false;\n const abC = cross(a, b, c), abD = cross(a, b, d), cdA = cross(c, d, a), cdB = cross(c, d, b);\n return abC * abD < 0 && cdA * cdB < 0 ||\n abC === 0 && on(a, b, c) || abD === 0 && on(a, b, d) ||\n cdA === 0 && on(c, d, a) || cdB === 0 && on(c, d, b);\n}\n", "import { intersects } from './intersects.js';\n\n/**\n * Test a segment against all edges of a closed ring.\n *\n * @param {Object} a First segment endpoint.\n * @param {Object} b Second segment endpoint.\n * @param {Object[]} ring Planar ring vertices.\n *\n * @returns {boolean} Whether the segment intersects a ring edge away from shared endpoints.\n */\nexport function crossesRing(a, b, ring) {\n let i;\n for (i = 0; i < ring.length; i++) {\n if (intersects(a, b, ring[i], ring[(i + 1) % ring.length])) return true;\n }\n return false;\n}\n", "import { crossesRing } from './crossesRing.js';\n\n/**\n * Test a segment against the current polygon and each hole boundary.\n *\n * @param {Object} a First segment endpoint.\n * @param {Object} b Second segment endpoint.\n * @param {Object[]} polygon Current polygon vertices.\n * @param {Object[][]} rings Outer ring followed by hole rings.\n *\n * @returns {boolean} Whether the segment intersects a boundary.\n */\nexport function crossesBoundary(a, b, polygon, rings) {\n if (crossesRing(a, b, polygon)) return true;\n let i;\n for (i = 1; i < rings.length; i++) if (crossesRing(a, b, rings[i])) return true;\n return false;\n}\n", "import { inside } from './inside.js';\nimport { insideHole } from './insideHole.js';\nimport { crossesBoundary } from './crossesBoundary.js';\n\n/**\n * Connect a hole to the polygon using the shortest valid vertex bridge.\n *\n * @param {Object[]} polygon Current polygon vertices.\n * @param {Object[]} hole Hole vertices to connect.\n * @param {Object[][]} rings Outer ring followed by hole rings.\n * @param {Object} mid Reusable midpoint with x and y fields.\n *\n * @returns {Object[]} Polygon vertices including the bridged hole.\n *\n * @throws {Error} If no valid bridge can be found.\n */\nexport function connectHole(polygon, hole, rings, mid) {\n let h2 = -1, p2 = -1, distance = Infinity, h, p, a, b, d;\n for (h = 0; h < hole.length; h++) for (p = 0; p < polygon.length; p++) {\n a = hole[h], b = polygon[p], d = (a.x - b.x) ** 2 + (a.y - b.y) ** 2;\n if (d >= distance) continue;\n mid.x = (a.x + b.x) / 2; mid.y = (a.y + b.y) / 2;\n if (!inside(mid, rings[0]) || insideHole(mid, rings)) continue;\n if (crossesBoundary(a, b, polygon, rings)) continue;\n h2 = h; p2 = p; distance = d;\n }\n if (h2 < 0) throw /* alloc */ new Error('Unable to connect polygon hole');\n return /* alloc */ [...polygon.slice(0, p2 + 1), ...hole.slice(h2), ...hole.slice(0, h2 + 1),\n polygon[p2], ...polygon.slice(p2 + 1)];\n}\n", "import { equal } from './equal.js';\nimport { cross } from './cross.js';\n\n/**\n * Check whether a polygon has another vertex inside or on a counterclockwise triangle.\n *\n * @param {Object[]} polygon Planar polygon vertices.\n * @param {Object} a First triangle vertex.\n * @param {Object} b Second triangle vertex.\n * @param {Object} c Third triangle vertex.\n *\n * @returns {boolean} Whether a distinct polygon vertex is contained.\n */\nexport function containsVertex(polygon, a, b, c) {\n let p;\n for (p of polygon) {\n if (!equal(p, a) && !equal(p, b) && !equal(p, c) &&\n cross(a, b, p) >= 0 && cross(b, c, p) >= 0 && cross(c, a, p) >= 0) return true;\n }\n return false;\n}\n", "import { cross } from './cross.js';\nimport { containsVertex } from './containsVertex.js';\n\n/**\n * Clip convex ears from a polygon in place to produce indexed triangles.\n *\n * @param {Object[]} polygon Counterclockwise vertices carrying original indices.\n *\n * @returns {number[][]} Triangles of original vertex indices.\n *\n * @throws {Error} If no further ear can be clipped.\n */\nexport function clipEars(polygon) {\n const result = /* alloc */ [];\n let clipped, i, a, b, c, p;\n while (polygon.length > 3) {\n clipped = false;\n for (i = 0; i < polygon.length; i++) {\n a = polygon[(i + polygon.length - 1) % polygon.length], b = polygon[i], c = polygon[(i + 1) % polygon.length];\n if (cross(a, b, c) <= 1e-10) continue;\n if (containsVertex(polygon, a, b, c)) continue;\n result.push(/* alloc */ [a.index, b.index, c.index]); polygon.splice(i, 1); clipped = true; break;\n }\n if (!clipped) throw /* alloc */ new Error('Unable to triangulate polygon: invalid or self-intersecting rings');\n }\n if (cross(...polygon) > 1e-10) {\n const triangle = /* alloc */ [];\n for (p of polygon) triangle.push(p.index);\n result.push(triangle);\n }\n return result;\n}\n", "/**\n * Calculate the unsigned area enclosed by a planar ring.\n *\n * @param {Object[]} ring Points with x and y coordinates.\n *\n * @returns {number} Absolute ring area.\n */\nexport function area(ring) {\n let sum = 0;\n let i, p, q;\n for (i = 0; i < ring.length; i++) {\n p = ring[i], q = ring[(i + 1) % ring.length];\n sum += p.x * q.y - q.x * p.y;\n }\n return Math.abs(sum) / 2;\n}\n", "import { area } from './area.js';\nimport { cross } from './cross.js';\n\n/**\n * Check that triangle area matches the outer ring area minus its holes.\n *\n * @param {Object[][]} rings Outer ring followed by hole rings.\n * @param {Object[]} vertices Indexed planar vertices.\n * @param {number[][]} result Triangles of vertex indices.\n *\n * @throws {Error} If the expected area is nonpositive or the triangle area differs.\n */\nexport function validateArea(rings, vertices, result) {\n let holeArea = 0, actual = 0, i, triangle;\n for (i = 1; i < rings.length; i++) holeArea += area(rings[i]);\n const expected = area(rings[0]) - holeArea;\n for (triangle of result) actual += cross(vertices[triangle[0]], vertices[triangle[1]], vertices[triangle[2]]) / 2;\n if (expected <= 0 || Math.abs(actual - expected) > Math.max(1e-7, expected * 1e-8)) throw /* alloc */ new Error('Polygon triangulation area mismatch');\n}\n", "import { geometryEmpty } from '../globals/geometryEmpty.js';\nimport { sortHoles } from './sortHoles.js';\nimport { polygonRings } from './polygonRings.js';\nimport { connectHole } from './connectHole.js';\nimport { clipEars } from './clipEars.js';\nimport { validateArea } from './validateArea.js';\n\n/**\n * Triangulates a polygon given as `{x, y}` points.\n * Rings omit the repeated closing point; winding is normalized internally.\n * Vertex indices remain relative to the original inputs after duplicate/collinear\n * cleanup. Hole bridges duplicate endpoints, not source vertices.\n *\n * @param {Object[]} contour Outer boundary.\n * @param {Object[][]} [holes] Interior boundaries.\n *\n * @returns {number[][]} Triangles as indices in `[...contour, ...holes.flat()]`.\n *\n * @throws {Error} If a polygon coordinate is not finite.\n */\nexport function triangulate(contour, holes = geometryEmpty) {\n const paths = /* alloc */ [contour, ...holes];\n const points = paths.flat();\n let p, index, hole;\n for (p of points) {\n if (!Number.isFinite(p.x) || !Number.isFinite(p.y)) throw /* alloc */ new Error('Invalid polygon coordinates');\n }\n // Translate near the origin to avoid cancellation with geographic coordinates.\n const vertices = /* alloc */ [];\n for (index = 0; index < points.length; index++) {\n p = points[index];\n vertices.push(/* alloc */ { x: p.x - contour[0].x, y: p.y - contour[0].y, index });\n }\n // Remove zero-area corners before connecting holes; keep original vertex indices.\n const rings = polygonRings(paths, vertices);\n let polygon = rings[0].slice();\n // A bridge must stay inside the outer boundary, outside every hole, and cross no edge.\n // ponytail: quadratic ear clipping for building footprints; use spatial indexing for large rings.\n const holesToConnect = sortHoles(rings.slice(1));\n const mid = holesToConnect.length ? /* alloc */ { x: 0, y: 0 } : null;\n for (hole of holesToConnect) {\n polygon = connectHole(polygon, hole, rings, mid);\n }\n // Clip a convex corner only when no other vertex is inside/on its triangle.\n const result = clipEars(polygon);\n // Reject incomplete coverage instead of silently emitting a partial roof.\n validateArea(rings, vertices, result);\n return result;\n}\n", "/**\n * Read the projected point's ground offset, defaulting to zero.\n *\n * @param {Object} point Projected point.\n *\n * @returns {number} Ground offset.\n */\nexport function groundOffset(point) {\n return point.ground || 0;\n}\n", "import { groundOffset } from '../sources/groundOffset.js';\n\n/**\n * Append an oriented triangle and its normals, colors and optional UVs to an area.\n *\n * @param {Object} context Area geometry buffers and options.\n * @param {Object} a First projected vertex.\n * @param {number} ah First vertex height.\n * @param {Object} b Second projected vertex.\n * @param {number} bh Second vertex height.\n * @param {Object} c Third projected vertex.\n * @param {number} ch Third vertex height.\n * @param {number} nx Normal x component.\n * @param {number} ny Normal y component.\n * @param {number} nz Normal z component.\n * @param {Object} color RGB color.\n */\nexport function addTriangle(context, a, ah, b, bh, c, ch, nx, ny, nz, color) {\n const { backend: layer, positions, normals, colors, uvs } = context;\n const ux = b.x - a.x, uy = bh - ah, uz = a.y - b.y;\n const vx = c.x - a.x, vy = ch - ah, vz = a.y - c.y;\n if ((uy * vz - uz * vy) * nx + (uz * vx - ux * vz) * ny + (ux * vy - uy * vx) * nz < 0) {\n const point = b, height = bh;\n b = c; bh = ch; c = point; ch = height;\n }\n positions.push(a.x, ah + groundOffset(a), -a.y,\n b.x, bh + groundOffset(b), -b.y,\n c.x, ch + groundOffset(c), -c.y);\n normals.push(nx, ny, nz, nx, ny, nz, nx, ny, nz);\n colors.push(color.r, color.g, color.b, color.r, color.g, color.b, color.r, color.g, color.b);\n if (layer.options.nightLight) uvs.push(...a.uv, ...b.uv, ...c.uv);\n}\n", "import { triangulate } from '../triangulation/triangulate.js';\nimport { addTriangle } from './appendAreaTriangle.js';\nimport { isClockWise } from '../triangulation/isClockWise.js';\n\n/**\n * Append roof, optional bottom and side triangles for a projected polygon.\n *\n * @param {Object} context Destination area geometry.\n * @param {Array<Array<Object>>} paths Projected outer ring and holes.\n * @param {number} top Extrusion top height.\n * @param {number} bottom Extrusion bottom height.\n * @param {Object} baseColor Parsed RGB color.\n */\nexport function buildProjectedPolygon(context, paths, top, bottom, baseColor) {\n const points = /* alloc */ [];\n let path, point, a, b, c, index, sign, i, length, nx, nz;\n for (path of paths) for (point of path) points.push(point);\n for ([a, b, c] of triangulate(paths[0], paths.slice(1))) {\n addTriangle(context, points[a], top, points[b], top, points[c], top, 0, 1, 0, baseColor);\n if (bottom > 0) addTriangle(context, points[a], bottom, points[b], bottom, points[c], bottom, 0, -1, 0, baseColor);\n }\n for (index = 0; index < paths.length; index++) {\n path = paths[index];\n sign = isClockWise(path) === (index === 0) ? -1 : 1;\n for (i = 0; i < path.length; i++) {\n a = path[i], b = path[(i + 1) % path.length];\n length = Math.hypot(b.x - a.x, b.y - a.y);\n if (!length) continue;\n nx = sign * (b.y - a.y) / length, nz = sign * (b.x - a.x) / length;\n addTriangle(context, a, bottom, b, bottom, b, top, nx, 0, nz, baseColor);\n addTriangle(context, a, bottom, b, top, a, top, nx, 0, nz, baseColor);\n }\n }\n}\n", "/**\n * Stack of active triangle output contexts during tree geometry generation.\n *\n * @type {Array<Object>}\n */\nexport const triangleContexts = [];\n", "import { triangleContexts } from '../globals/triangleContexts.js';\nimport { addTriangle } from './appendAreaTriangle.js';\n\n/**\n * Append a generated triangle to the current geometry context.\n *\n * @param {...*} args Triangle vertices, heights, normal and color.\n */\nexport function addGeneratedTriangle(...args) {\n addTriangle(triangleContexts[triangleContexts.length - 1], ...args);\n}\n", "import { triangleContexts } from '../globals/triangleContexts.js';\nimport { addGeneratedTriangle } from './addGeneratedTriangle.js';\n\n/**\n * Run a point geometry generator with the current triangle destination context.\n *\n * @param {Object} context Destination area geometry.\n * @param {Function} generator Point geometry generator.\n * @param {Object} point Projected point.\n * @param {Object} style Geometry style.\n */\nexport function generateTreeGeometry(context, generator, point, style) {\n triangleContexts.push(context);\n try {\n generator(point, style, addGeneratedTriangle);\n } finally {\n triangleContexts.pop();\n }\n}\n", "/**\n * Convert a linear color channel to sRGB.\n *\n * @param {number} value Linear channel value.\n *\n * @returns {number} sRGB channel value.\n */\nexport function toSRGB(value) {\n return value <= 0.0031308 ? value * 12.92 : 1.055 * value ** (1 / 2.4) - 0.055;\n}\n", "/**\n * Compute one linear RGB channel from an HSL hue, lightness and chroma factor.\n *\n * @param {number} n Channel offset in the HSL conversion.\n * @param {number} h Hue as a fraction of a turn.\n * @param {number} l Lightness.\n * @param {number} a Saturation-scaled chroma factor.\n *\n * @returns {number} Linear RGB channel value.\n */\nexport function channel(n, h, l, a) {\n const k = (n + h * 12) % 12;\n return l - a * Math.max(-1, Math.min(k - 3, 9 - k, 1));\n}\n", "import { toSRGB } from \"./toSRGB.js\";\nimport { channel } from \"./hslChannel.js\";\n\n/**\n * HSL inputs are linear-space to preserve the original building styling.\n * Numeric/CSS/RGB inputs are already sRGB; CSS alpha is not used for extrusion.\n *\n * @param {number|string|Object} value 0xRRGGBB, CSS color, {r,g,b}, or {h,s,l} in 0..1.\n *\n * @returns {Object} sRGB {r,g,b} components in 0..1.\n *\n * @throws {Error} If the value is not a supported color.\n */\nexport function parseColor(value) {\n if (value && typeof value === 'object' && 'h' in value) {\n const a = value.s * Math.min(value.l, 1 - value.l);\n return /* alloc */ {\n r: toSRGB(channel(0, value.h, value.l, a)),\n g: toSRGB(channel(8, value.h, value.l, a)),\n b: toSRGB(channel(4, value.h, value.l, a))\n };\n }\n if (value && typeof value === 'object' && 'r' in value) {\n return value;\n }\n if (typeof value === 'number') {\n return /* alloc */ {\n r: (value >> 16 & 255) / 255,\n g: (value >> 8 & 255) / 255,\n b: (value & 255) / 255,\n };\n }\n if (typeof value !== 'string' || !CSS.supports('color', value)) {\n throw /* alloc */ new Error('Invalid 3D color');\n }\n const context = document.createElement('canvas').getContext('2d');\n context.fillStyle = value;\n context.fillRect(0, 0, 1, 1);\n const [r, g, b] = context.getImageData(0, 0, 1, 1).data;\n return /* alloc */ {\n r: r / 255,\n g: g / 255,\n b: b / 255\n };\n}\n", "/**\n * Ring vertex directions and face normals for lamp geometry.\n *\n * @type {Array<Object>}\n */\nexport const lampDirections = [\n { x: Math.cos(0 * Math.PI / 3), y: Math.sin(0 * Math.PI / 3), nx: Math.cos(0.5 * Math.PI / 3), nz: -Math.sin(0.5 * Math.PI / 3) },\n { x: Math.cos(1 * Math.PI / 3), y: Math.sin(1 * Math.PI / 3), nx: Math.cos(1.5 * Math.PI / 3), nz: -Math.sin(1.5 * Math.PI / 3) },\n { x: Math.cos(2 * Math.PI / 3), y: Math.sin(2 * Math.PI / 3), nx: Math.cos(2.5 * Math.PI / 3), nz: -Math.sin(2.5 * Math.PI / 3) },\n { x: Math.cos(3 * Math.PI / 3), y: Math.sin(3 * Math.PI / 3), nx: Math.cos(3.5 * Math.PI / 3), nz: -Math.sin(3.5 * Math.PI / 3) },\n { x: Math.cos(4 * Math.PI / 3), y: Math.sin(4 * Math.PI / 3), nx: Math.cos(4.5 * Math.PI / 3), nz: -Math.sin(4.5 * Math.PI / 3) },\n { x: Math.cos(5 * Math.PI / 3), y: Math.sin(5 * Math.PI / 3), nx: Math.cos(5.5 * Math.PI / 3), nz: -Math.sin(5.5 * Math.PI / 3) },\n];\n", "import { lampDirections } from '../globals/lampDirections.js';\n\n/**\n * Create a ring of lamp points with ground height and fixed UVs.\n *\n * @param {Object} point Ring center and ground height.\n * @param {number} radius Ring radius.\n *\n * @returns {Array<Object>} Lamp ring points.\n */\nexport function ring(point, radius) {\n const points = /* alloc */ new Array(lampDirections.length);\n let i;\n for (i = 0; i < points.length; i++) {\n points[i] = /* alloc */ {\n x: point.x + lampDirections[i].x * radius,\n y: point.y + lampDirections[i].y * radius, ground: point.ground,\n uv: /* alloc */ [3, 3],\n };\n }\n return points;\n}\n", "import { parseColor } from \"../colors/parseColor.js\";\nimport { ring } from './createLampRing.js';\nimport { lampDirections } from '../globals/lampDirections.js';\n\n/**\n * Generate a schematic support and lamp head.\n *\n * @param {Object} point Projected position and ground height.\n * @param {Object} style Lamp height and pole radius.\n * @param {Function} addTriangle Triangle destination callback.\n *\n * @throws {Error} If the pole radius is not finite and positive.\n */\nexport function lampPostGeometry(point, style, addTriangle) {\n const color = parseColor(0x50565a), radius = style.poleRadius;\n if (!Number.isFinite(radius) || radius <= 0) {\n throw /* alloc */ new Error('Invalid lamp pole radius');\n }\n const center = /* alloc */ {\n ...point, uv: /* alloc */ [3, 3],\n };\n let r, low, high, points, i, a, b, nx, nz, section;\n for (section = 0; section < 2; section++) {\n r = section ? radius * 2.5 : radius;\n low = section ? style.top - 0.25 : 0;\n high = section ? style.top + 0.15 : style.top;\n points = ring(point, r);\n for (i = 0; i < 6; i++) {\n a = points[i], b = points[(i + 1) % 6];\n nx = lampDirections[i].nx, nz = lampDirections[i].nz;\n addTriangle(a, low, b, low, b, high, nx, 0, nz, color);\n addTriangle(a, low, b, high, a, high, nx, 0, nz, color);\n addTriangle(center, high, a, high, b, high, 0, 1, 0, color);\n addTriangle(center, low, b, low, a, low, 0, -1, 0, color);\n }\n }\n}\n", "/**\n * Append a quad as two triangles at a common height.\n *\n * @param {Function} addTriangle Triangle destination callback.\n * @param {Object} color Triangle color.\n * @param {Object} a First corner.\n * @param {Object} b Second corner.\n * @param {Object} c Third corner.\n * @param {Object} d Fourth corner.\n * @param {number} height Quad height.\n * @param {number|Array<number>} nx Normal x component or complete normal vector.\n * @param {number} ny Normal y component when nx is numeric.\n * @param {number} nz Normal z component when nx is numeric.\n */\nexport function quad(addTriangle, color, a, b, c, d, height, nx, ny, nz) {\n if (typeof nx !== 'number') {\n addTriangle(a, height, b, height, c, height, ...nx, color);\n addTriangle(a, height, c, height, d, height, ...nx, color);\n } else {\n addTriangle(a, height, b, height, c, height, nx, ny, nz, color);\n addTriangle(a, height, c, height, d, height, nx, ny, nz, color);\n }\n}\n", "/**\n * Construct a point on one axis-aligned plane of a light emitter.\n *\n * @param {Object} point Projected center and ground height.\n * @param {number} u First local coordinate.\n * @param {number} v Second local coordinate.\n * @param {number} axis Plane axis index.\n *\n * @returns {Object} Projected point with ground height and UV coordinates.\n */\nexport function emitter(point, u, v, axis) {\n const r = 0.65;\n return /* alloc */ {\n x: point.x + (axis === 2 ? 0 : u * r),\n y: point.y + (axis === 1 ? 0 : axis === 2 ? u * r : v * r),\n ground: point.ground + (axis === 0 ? 0 : v * r), uv: /* alloc */ [u, v],\n };\n}\n", "import { parseColor } from \"../colors/parseColor.js\";\nimport { quad } from './quad.js';\nimport { emitter } from './emitter.js';\n\n/**\n * Generate three crossed emitter quads; illumination is evaluated on receiving surfaces.\n *\n * @param {Object} point Projected position and ground height.\n * @param {Object} style Light radius, height and color.\n * @param {Function} addTriangle Triangle destination callback.\n *\n * @throws {Error} If the light radius is not finite and positive.\n */\nexport function lightGeometry(point, style, addTriangle) {\n if (!Number.isFinite(style.lightRadius) || style.lightRadius <= 0) throw /* alloc */ new Error('Invalid light radius');\n const color = parseColor(style.color);\n let axis;\n for (axis = 0; axis < 3; axis++) {\n quad(addTriangle, color, emitter(point, -1, -1, axis), emitter(point, 1, -1, axis), emitter(point, 1, 1, axis), emitter(point, -1, 1, axis),\n style.top, axis === 2 ? 1 : 0, axis === 0 ? 1 : 0, axis === 1 ? 1 : 0);\n }\n}\n", "/**\n * Height and radius fractions defining round tree crowns.\n *\n * @type {Array<Array<number>>}\n */\nexport const roundProfile = [\n [0, 0],\n [0.35, 0.8],\n [0.6, 1],\n [0.85, 0.7],\n [1, 0]\n];\n", "/**\n * Octagonal ring directions and face normals used for tree geometry.\n *\n * @type {Array<Object>}\n */\nexport const ringDirections = [{\n x: Math.cos(0 * Math.PI / 4),\n y: Math.sin(0 * Math.PI / 4),\n nx: Math.cos((0 + 0.5) * Math.PI / 4),\n nz: -Math.sin((0 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(1 * Math.PI / 4),\n y: Math.sin(1 * Math.PI / 4),\n nx: Math.cos((1 + 0.5) * Math.PI / 4),\n nz: -Math.sin((1 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(2 * Math.PI / 4),\n y: Math.sin(2 * Math.PI / 4),\n nx: Math.cos((2 + 0.5) * Math.PI / 4),\n nz: -Math.sin((2 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(3 * Math.PI / 4),\n y: Math.sin(3 * Math.PI / 4),\n nx: Math.cos((3 + 0.5) * Math.PI / 4),\n nz: -Math.sin((3 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(4 * Math.PI / 4),\n y: Math.sin(4 * Math.PI / 4),\n nx: Math.cos((4 + 0.5) * Math.PI / 4),\n nz: -Math.sin((4 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(5 * Math.PI / 4),\n y: Math.sin(5 * Math.PI / 4),\n nx: Math.cos((5 + 0.5) * Math.PI / 4),\n nz: -Math.sin((5 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(6 * Math.PI / 4),\n y: Math.sin(6 * Math.PI / 4),\n nx: Math.cos((6 + 0.5) * Math.PI / 4),\n nz: -Math.sin((6 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(7 * Math.PI / 4),\n y: Math.sin(7 * Math.PI / 4),\n nx: Math.cos((7 + 0.5) * Math.PI / 4),\n nz: -Math.sin((7 + 0.5) * Math.PI / 4)\n },\n];\n", "import { ringDirections } from '../globals/ringDirections.js';\n\n/**\n * Create a ring of projected tree points around a center.\n *\n * @param {Object} point Ring center and ground height.\n * @param {number} radius Ring radius.\n *\n * @returns {Array<Object>} Tree ring points.\n */\nexport function ring(point, radius) {\n const result = /* alloc */ new Array(ringDirections.length);\n let i;\n for (i = 0; i < result.length; i++) {\n result[i] = /* alloc */ {\n x: point.x + ringDirections[i].x * radius,\n y: point.y + ringDirections[i].y * radius,\n ground: point.ground,\n };\n }\n return result;\n}\n", "import { ringDirections } from '../globals/ringDirections.js';\nimport { ring } from './createTreeRing.js';\n\n/**\n * Generate the side surface between two eight-sided tree rings.\n *\n * @param {Object} point Ring center and ground height.\n * @param {Function} addTriangle Triangle destination callback.\n * @param {number} lowRadius Lower ring radius.\n * @param {number} low Lower ring height.\n * @param {number} highRadius Upper ring radius.\n * @param {number} high Upper ring height.\n * @param {Object} color Surface color.\n */\nexport function surface(point, addTriangle, lowRadius, low, highRadius, high, color) {\n const lower = ring(point, lowRadius), upper = ring(point, highRadius);\n let i, next, slope, length, nx, nz, ny, normalX, normalZ;\n for (i = 0; i < 8; i++) {\n next = (i + 1) % 8;\n slope = (lowRadius - highRadius) / (high - low);\n length = Math.hypot(1, slope);\n ({ nx, nz } = ringDirections[i]);\n ny = slope / length;\n normalX = nx / length, normalZ = nz / length;\n if (lowRadius) addTriangle(lower[i], low, lower[next], low, upper[next], high, normalX, ny, normalZ, color);\n if (highRadius) addTriangle(lower[i], low, upper[next], high, upper[i], high, normalX, ny, normalZ, color);\n }\n}\n", "/**\n * Validate tree radii, crown height and crown shape.\n *\n * @param {number} trunkRadius Trunk radius.\n * @param {number} crownRadius Crown radius.\n * @param {number} crownBottom Height where the crown begins.\n * @param {number} bottom Tree bottom height.\n * @param {number} top Tree top height.\n * @param {string} crownShape Crown shape.\n *\n * @throws {Error} If dimensions or crown shape are invalid.\n */\nexport function validateTree(trunkRadius, crownRadius, crownBottom, bottom, top, crownShape) {\n if (!Number.isFinite(trunkRadius) || !Number.isFinite(crownRadius) || !Number.isFinite(crownBottom) ||\n trunkRadius <= 0 || crownRadius < trunkRadius || crownBottom <= bottom || crownBottom >= top ||\n crownShape !== 'round' && crownShape !== 'cone') {\n throw /* alloc */ new Error('Invalid tree dimensions or crown shape');\n }\n}\n", "import { roundProfile } from '../globals/roundProfile.js';\nimport { parseColor } from \"../colors/parseColor.js\";\nimport { ring } from './createTreeRing.js';\nimport { surface } from './surface.js';\nimport { validateTree } from './validateTree.js';\n\n/**\n * Generate a low-poly tree in the source block's geometry buffers.\n *\n * @param {Object} point Projected position and ground height.\n * @param {Object} style Tree dimensions, crown shape and colors.\n * @param {Function} addTriangle Triangle destination callback.\n */\nexport function treeGeometry(point, style, addTriangle) {\n const { top, bottom = 0, trunkRadius, crownRadius, crownBottom, crownShape = 'round' } = style;\n validateTree(trunkRadius, crownRadius, crownBottom, bottom, top, crownShape);\n const trunk = parseColor(style.trunkColor ?? 0x72513a);\n const crown = parseColor(style.color ?? 0x4f823b);\n surface(point, addTriangle, trunkRadius, bottom, trunkRadius, crownBottom + (top - crownBottom) * 0.25, trunk);\n let i, low, lr, high, hr;\n if (crownShape === 'cone') {\n const base = ring(point, crownRadius);\n for (i = 0; i < 8; i++) addTriangle(point, crownBottom, base[i], crownBottom,\n base[(i + 1) % 8], crownBottom, 0, -1, 0, crown);\n surface(point, addTriangle, crownRadius, crownBottom, 0, top, crown);\n } else {\n for (i = 1; i < roundProfile.length; i++) {\n [low, lr] = roundProfile[i - 1], [high, hr] = roundProfile[i];\n surface(point, addTriangle, lr * crownRadius, crownBottom + low * (top - crownBottom),\n hr * crownRadius, crownBottom + high * (top - crownBottom), crown);\n }\n }\n}\n", "import { generateTreeGeometry } from './generateTreeGeometry.js';\nimport { lampPostGeometry } from './lampPostGeometry.js';\nimport { lightGeometry } from './lightGeometry.js';\nimport { treeGeometry } from './treeGeometry.js';\n\n/**\n * Generate tree or night-light geometry for a projected point.\n *\n * @param {Object} context Area geometry and light state.\n * @param {Object} projected Projected point with ground height.\n * @param {Object} style Point geometry style.\n * @param {Object} baseColor Parsed RGB color.\n * @param {string} support Support identifier used to deduplicate lamp posts.\n *\n * @throws {Error} If a night-light flux is not finite and positive.\n */\nexport function buildProjectedPoint(context, projected, style, baseColor, support) {\n const { top } = style;\n if (context.backend.options.nightLight) {\n if (!Number.isFinite(style.lightFlux) || style.lightFlux <= 0) throw /* alloc */ new Error('Invalid light flux');\n if (style.poleRadius > 0 && !context.supports.has(support)) {\n generateTreeGeometry(context, lampPostGeometry, projected, style);\n context.supports.add(support);\n }\n generateTreeGeometry(context, lightGeometry, projected, style);\n context.lights.push(/* alloc */ {\n position: /* alloc */ [projected.x, projected.ground + top, -projected.y],\n radius: Math.hypot(top, style.lightRadius), color: /* alloc */ [baseColor.r, baseColor.g, baseColor.b],\n flux: style.lightFlux,\n });\n } else generateTreeGeometry(context, treeGeometry, projected, style);\n}\n", "/**\n * Compact repeated features only when reconstructed float32 positions compare equal.\n *\n * @param {Object} context Area geometry buffers and feature ranges.\n *\n * @returns {Object} Instanced buffers, or the original context if compaction is unsuitable.\n */\nexport function instanceAreaGeometry(context) {\n const { positions, normals, colors, featureFaces } = context;\n if (context.backend.options.nightLight || featureFaces.length < 2) return context;\n const vertices = featureFaces[0].vertexEnd;\n const length = vertices * 3;\n if (!vertices || positions.length !== length * featureFaces.length) return context;\n const originX = Math.trunc(positions[0]), originY = Math.trunc(positions[1]), originZ = Math.trunc(positions[2]);\n const template = /* alloc */ new Float32Array(length);\n let i, instance, face, start;\n for (i = 0; i < length; i++) template[i] = positions[i] - (i % 3 === 0 ? originX : i % 3 === 1 ? originY : originZ);\n const offsets = /* alloc */ new Float32Array(featureFaces.length * 4);\n for (instance = 0; instance < featureFaces.length; instance++) {\n face = featureFaces[instance];\n start = instance * length;\n if (face.vertexStart !== instance * vertices || face.vertexEnd !== (instance + 1) * vertices) return context;\n offsets[instance * 4] = originX + positions[start] - positions[0];\n offsets[instance * 4 + 1] = originY + positions[start + 1] - positions[1];\n offsets[instance * 4 + 2] = originZ + positions[start + 2] - positions[2];\n offsets[instance * 4 + 3] = instance * vertices;\n for (i = 0; i < length; i++) {\n if (Math.fround(template[i] + offsets[instance * 4 + i % 3]) !== Math.fround(positions[start + i]) ||\n Math.fround(normals[i]) !== Math.fround(normals[start + i]) ||\n Math.fround(colors[i]) !== Math.fround(colors[start + i])) return context;\n }\n }\n return /* alloc */ {\n positions: template, normals: normals.slice(0, length), colors: colors.slice(0, length),\n instanceOffsets: offsets,\n };\n}\n", "/**\n * Cache local bounds, center and bounding radius, including any instance offsets.\n *\n * @param {Object} geometry Geometry with position and optional instance-offset attributes.\n */\nexport function computeBounds(geometry) {\n const min = /* alloc */ [Infinity, Infinity, Infinity];\n const max = /* alloc */ [-Infinity, -Infinity, -Infinity];\n const data = geometry.attributes.position.data;\n let i, x, y, z;\n for (i = 0; i < data.length; i += 3) {\n x = data[i], y = data[i + 1], z = data[i + 2];\n min[0] = Math.min(min[0], x), max[0] = Math.max(max[0], x);\n min[1] = Math.min(min[1], y), max[1] = Math.max(max[1], y);\n min[2] = Math.min(min[2], z), max[2] = Math.max(max[2], z);\n }\n const instances = geometry.attributes.instanceOffset;\n if (instances) {\n let axis, offset, low, high;\n for (axis = 0; axis < 3; axis++) {\n low = Infinity;\n high = -Infinity;\n for (offset = axis; offset < instances.data.length; offset += instances.size) {\n low = Math.min(low, instances.data[offset]);\n high = Math.max(high, instances.data[offset]);\n }\n min[axis] = Math.fround(min[axis] + low);\n max[axis] = Math.fround(max[axis] + high);\n }\n }\n const center = /* alloc */ [\n (min[0] + max[0]) / 2,\n (min[1] + max[1]) / 2,\n (min[2] + max[2]) / 2,\n ];\n let radiusSquared = 0;\n for (i = 0; !instances && i < data.length; i += 3) {\n x = data[i] - center[0], y = data[i + 1] - center[1], z = data[i + 2] - center[2];\n radiusSquared = Math.max(radiusSquared, x * x + y * y + z * z);\n }\n let radius = instances ? Math.hypot(max[0] - min[0], max[1] - min[1], max[2] - min[2]) / 2\n : Math.sqrt(radiusSquared);\n // Preserve hypot's scaling for extreme coordinates in non-Float32 CPU geometry.\n if (!instances && (radiusSquared === Infinity || radiusSquared < Number.MIN_VALUE / Number.EPSILON)) {\n radius = 0;\n for (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 = /* alloc */ { min, max, center, radius };\n}\n", "import { buildProjectedPolygon } from './buildProjectedPolygon.js';\nimport { buildProjectedPoint } from './buildProjectedPoint.js';\nimport { instanceAreaGeometry } from './instanceAreaGeometry.js';\nimport { computeBounds } from './computeBounds.js';\n\n/**\n * Build area jobs into typed geometry buffers, feature ranges and light metadata.\n *\n * @param {Object} options Geometry jobs and night-light setting.\n *\n * @returns {Object} Prepared area geometry and metadata.\n */\nexport function assembleAreaGeometry({ jobs, nightLight }) {\n const context = /* alloc */ {\n backend: /* alloc */ { options: /* alloc */ { nightLight } },\n positions: /* alloc */ [], normals: /* alloc */ [], colors: /* alloc */ [], uvs: /* alloc */ [],\n featureFaces: /* alloc */ [], lights: /* alloc */ [], supports: /* alloc */ new Set(),\n };\n let job, polygon, start, end;\n for (job of jobs) {\n start = context.positions.length / 3;\n if (job.point) buildProjectedPoint(context, job.point, job.style, job.baseColor, job.support);\n for (polygon of job.polygons) {\n buildProjectedPolygon(context, polygon, job.style.top, job.style.bottom, job.baseColor);\n }\n end = context.positions.length / 3;\n context.featureFaces.push(/* alloc */ { vertexStart: start, vertexEnd: end, faceStart: start / 3, faceEnd: end / 3 });\n }\n const data = instanceAreaGeometry(context);\n const result = /* alloc */ {\n positions: /* alloc */ new Float32Array(data.positions),\n normals: /* alloc */ new Float32Array(data.normals),\n colors: /* alloc */ new Float32Array(data.colors),\n uvs: /* alloc */ new Float32Array(context.uvs),\n instanceOffsets: data.instanceOffsets,\n ranges: context.featureFaces,\n lights: context.lights,\n };\n if (result.positions.length) {\n const geometry = /* alloc */ { attributes: /* alloc */ {\n position: /* alloc */ { data: result.positions },\n instanceOffset: result.instanceOffsets ? /* alloc */ { data: result.instanceOffsets, size: 4 } : undefined,\n } };\n computeBounds(geometry);\n result.bounds = geometry.bounds;\n }\n return result;\n}\n", "/**\n * Create a protobuf reader over the supplied tile bytes.\n *\n * @param {Uint8Array} bytes Input bytes.\n *\n * @returns {Object} Reader with a data view and cursor.\n */\nexport function createMvtReader(bytes) {\n return /* alloc */ {\n bytes,\n view: /* alloc */ new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength),\n pos: 0,\n };\n}\n", "/**\n * Advance an MVT reader over a bounded number of bytes.\n *\n * @param {Object} reader MVT byte reader.\n * @param {number} size Number of bytes to take.\n *\n * @returns {number} Starting byte offset.\n *\n * @throws {Error} If the size is invalid or exceeds remaining bytes.\n */\nexport function takeMvtBytes(reader, size) {\n if (!Number.isSafeInteger(size) || size < 0 || size > reader.bytes.length - reader.pos) {\n throw /* alloc */ new Error('Truncated MVT field');\n }\n const start = reader.pos;\n reader.pos += size;\n return start;\n}\n", "import { takeMvtBytes } from './takeMvtBytes.js';\n\n/**\n * Read an unsigned protobuf varint as a bigint.\n *\n * @param {Object} reader MVT byte reader.\n *\n * @returns {bigint} Decoded integer.\n *\n * @throws {Error} If the tenth byte exceeds the 64-bit range.\n * @throws {Error} If the varint does not terminate within ten bytes.\n */\nexport function readMvtInteger(reader) {\n let value = 0n, i = 0, byte;\n for (; i < 10; i++) {\n byte = reader.bytes[takeMvtBytes(reader, 1)];\n if (i === 9 && byte > 1) throw /* alloc */ new Error('Invalid MVT varint');\n value |= BigInt(byte & 127) << BigInt(i * 7);\n if (byte < 128) return value;\n }\n throw /* alloc */ new Error('Invalid MVT varint');\n}\n", "import { readMvtInteger } from './readMvtInteger.js';\n\n/**\n * Read a protobuf varint as a safe JavaScript number.\n *\n * @param {Object} reader MVT byte reader.\n *\n * @returns {number} Decoded integer.\n *\n * @throws {Error} If the integer exceeds the safe numeric range.\n */\nexport function readMvtNumber(reader) {\n const value = readMvtInteger(reader);\n if (value > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw /* alloc */ new Error('MVT integer exceeds safe range');\n }\n return Number(value);\n}\n", "import { readMvtNumber } from './readMvtNumber.js';\n\n/**\n * Read a protobuf field tag and split its field number and wire type.\n *\n * @param {Object} reader MVT byte reader.\n *\n * @returns {Array<number>} Field number and wire type.\n *\n * @throws {Error} If the field number is invalid.\n */\nexport function readMvtField(reader) {\n const tag = readMvtNumber(reader);\n const field = Math.floor(tag / 8), wire = tag % 8;\n if (!field || field > 536870911) throw /* alloc */ new Error('Invalid MVT field number');\n return /* alloc */ [field, wire];\n}\n", "/**\n * Validate the protobuf wire type for an MVT field.\n *\n * @param {number} wire Actual wire type.\n * @param {number} expected Expected wire type.\n *\n * @throws {Error} If the types differ.\n */\nexport function expectMvtWire(wire, expected) {\n if (wire !== expected) throw /* alloc */ new Error('Invalid MVT wire type');\n}\n", "/**\n * Convert an MVT integer to a number when safe, otherwise to a decimal string.\n *\n * @param {bigint} value Integer value.\n *\n * @returns {number|string} Safely represented integer.\n */\nexport function numericMvtValue(value) {\n return value >= BigInt(Number.MIN_SAFE_INTEGER) && value <= BigInt(Number.MAX_SAFE_INTEGER)\n ? Number(value) : value.toString();\n}\n", "/**\n * Validate a completed MVT line or polygon path.\n *\n * @param {Array|null} path Current path, if any.\n * @param {number} type MVT geometry type.\n * @param {boolean} closed Whether the polygon path is closed.\n *\n * @throws {Error} If a line is too short or a polygon path is open.\n */\nexport function finishMvtPath(path, type, closed) {\n if (path && (type === 2 && path.length < 2 || type === 3 && !closed)) {\n throw /* alloc */ new Error('Incomplete MVT geometry');\n }\n}\n", "/**\n * Decode delta-encoded MVT coordinates into the current path.\n *\n * @param {Array<number>} commands Geometry command integers.\n * @param {Object} state Mutable cursor, coordinate and path state.\n * @param {number} count Number of coordinate pairs.\n *\n * @throws {Error} If a coordinate integer exceeds the MVT 32-bit range.\n */\nexport function appendMvtCoordinates(commands, state, count) {\n let i = 0, dx, dy;\n for (; i < count; i++) {\n dx = commands[state.index++];\n dy = commands[state.index++];\n if (dx > 0xffffffff || dy > 0xffffffff) throw /* alloc */ new Error('Invalid MVT coordinate');\n state.x += dx % 2 ? -(dx + 1) / 2 : dx / 2;\n state.y += dy % 2 ? -(dy + 1) / 2 : dy / 2;\n state.path.push(/* alloc */ [state.x, state.y]);\n }\n}\n", "import { finishMvtPath } from './finishMvtPath.js';\n\n/**\n * Finish the previous geometry path and begin a new MoveTo path.\n *\n * @param {Object} state Mutable geometry decoding state.\n * @param {Array} paths Destination paths.\n * @param {number} type MVT geometry type.\n * @param {number} count MoveTo coordinate count.\n *\n * @throws {Error} If a non-point MoveTo count is not one.\n */\nexport function beginMvtPath(state, paths, type, count) {\n finishMvtPath(state.path, type, state.closed);\n if (type !== 1 && count !== 1) throw /* alloc */ new Error('Invalid MVT MoveTo');\n state.path = /* alloc */ [];\n paths.push(state.path);\n state.closed = false;\n}\n", "/**\n * Close a valid polygon path by repeating its first point.\n *\n * @param {Object} state Mutable geometry decoding state.\n * @param {number} type MVT geometry type.\n * @param {number} count ClosePath command count.\n *\n * @throws {Error} If the close command or path is invalid.\n */\nexport function closeMvtPath(state, type, count) {\n if (type !== 3 || count !== 1 || !state.path || state.closed || state.path.length < 3) {\n throw /* alloc */ new Error('Invalid MVT ClosePath');\n }\n state.path.push(/* alloc */ [...state.path[0]]);\n state.closed = true;\n}\n", "import { finishMvtPath } from './finishMvtPath.js';\nimport { appendMvtCoordinates } from './appendMvtCoordinates.js';\nimport { beginMvtPath } from './beginMvtPath.js';\nimport { closeMvtPath } from './closeMvtPath.js';\n\n/**\n * Decode MVT geometry commands into tile-coordinate paths.\n *\n * @param {Array<number>} commands Geometry command integers.\n * @param {number} type MVT geometry type.\n *\n * @returns {Array} Decoded paths.\n *\n * @throws {Error} If a command or count is invalid.\n * @throws {Error} If geometry command parameters are invalid or truncated.\n * @throws {Error} If a LineTo is invalid for the current path.\n * @throws {Error} If no geometry path was decoded.\n */\nexport function readMvtGeometry(commands, type) {\n const paths = /* alloc */ [];\n const state = /* alloc */ { x: 0, y: 0, path: null, closed: false, index: 0 };\n let command, id, count;\n while (state.index < commands.length) {\n command = commands[state.index++];\n id = command % 8;\n count = Math.floor(command / 8);\n if (!count || command > 0xffffffff) throw /* alloc */ new Error('Invalid MVT geometry command');\n if (id === 7) {\n closeMvtPath(state, type, count);\n continue;\n }\n if (id !== 1 && id !== 2 || count > Math.floor((commands.length - state.index) / 2)) {\n throw /* alloc */ new Error('Invalid MVT geometry parameters');\n }\n if (id === 1) beginMvtPath(state, paths, type, count);\n else if (type === 1 || !state.path || state.closed) throw /* alloc */ new Error('Invalid MVT LineTo');\n appendMvtCoordinates(commands, state, count);\n }\n finishMvtPath(state.path, type, state.closed);\n if (!paths.length) throw /* alloc */ new Error('Empty MVT geometry');\n return paths;\n}\n", "import { createMvtReader } from './createMvtReader.js';\nimport { expectMvtWire } from './expectMvtWire.js';\nimport { readMvtNumber } from './readMvtNumber.js';\nimport { takeMvtBytes } from './takeMvtBytes.js';\n\n/**\n * Read a length-delimited protobuf message into a bounded reader.\n *\n * @param {Object} reader Parent MVT byte reader.\n * @param {number} wire Protobuf wire type.\n *\n * @returns {Object} Reader for the message bytes.\n */\nexport function readMvtMessage(reader, wire) {\n expectMvtWire(wire, 2);\n const size = readMvtNumber(reader), start = takeMvtBytes(reader, size);\n return createMvtReader(reader.bytes.subarray(start, start + size));\n}\n", "import { readMvtMessage } from './readMvtMessage.js';\nimport { readMvtNumber } from './readMvtNumber.js';\n\n/**\n * Append packed or unpacked protobuf integers to a destination array.\n *\n * @param {Object} reader MVT byte reader.\n * @param {number} wire Protobuf wire type.\n * @param {Array<number>} target Destination array.\n */\nexport function readMvtNumbers(reader, wire, target) {\n let packed;\n if (wire === 0) target.push(readMvtNumber(reader));\n else {\n packed = readMvtMessage(reader, wire);\n while (packed.pos < packed.bytes.length) target.push(readMvtNumber(packed));\n }\n}\n", "import { expectMvtWire } from './expectMvtWire.js';\nimport { readMvtInteger } from './readMvtInteger.js';\nimport { readMvtNumber } from './readMvtNumber.js';\nimport { takeMvtBytes } from './takeMvtBytes.js';\n\n/**\n * Skip an unknown protobuf field according to its wire type.\n *\n * @param {Object} reader MVT byte reader.\n * @param {number} wire Protobuf wire type.\n *\n * @throws {Error} If the wire type is unsupported.\n */\nexport function skipMvtField(reader, wire) {\n switch (wire) {\n case 0: readMvtInteger(reader); break;\n case 1: takeMvtBytes(reader, 8); break;\n case 2: takeMvtBytes(reader, readMvtNumber(reader)); break;\n case 5: takeMvtBytes(reader, 4); break;\n default: throw /* alloc */ new Error('Unsupported MVT wire type');\n }\n}\n", "import { expectMvtWire } from './expectMvtWire.js';\nimport { numericMvtValue } from './numericMvtValue.js';\nimport { readMvtField } from './readMvtField.js';\nimport { readMvtGeometry } from './readMvtGeometry.js';\nimport { readMvtInteger } from './readMvtInteger.js';\nimport { readMvtNumber } from './readMvtNumber.js';\nimport { readMvtNumbers } from './readMvtNumbers.js';\nimport { skipMvtField } from './skipMvtField.js';\n\n/**\n * Decode an MVT feature's ID, property tags and geometry.\n *\n * @param {Object} reader Feature message reader.\n * @param {Array<string>} keys Layer property keys.\n * @param {Array} values Layer property values.\n *\n * @returns {Object} Decoded feature.\n *\n * @throws {Error} If feature tags or geometry type are invalid.\n * @throws {Error} If a property index is outside the layer tables.\n */\nexport function readMvtFeature(reader, keys, values) {\n let id, type = 0, field, wire, i = 0;\n const tags = /* alloc */ [], commands = /* alloc */ [];\n while (reader.pos < reader.bytes.length) {\n [field, wire] = readMvtField(reader);\n if (field === 1) {\n expectMvtWire(wire, 0);\n id = numericMvtValue(readMvtInteger(reader));\n } else if (field === 2) readMvtNumbers(reader, wire, tags);\n else if (field === 3) {\n expectMvtWire(wire, 0);\n type = readMvtNumber(reader);\n } else if (field === 4) readMvtNumbers(reader, wire, commands);\n else skipMvtField(reader, wire);\n }\n if (tags.length % 2 || type > 3) throw /* alloc */ new Error('Invalid MVT feature');\n const properties = Object.create(null);\n for (; i < tags.length; i += 2) {\n if (tags[i] >= keys.length || tags[i + 1] >= values.length) {\n throw /* alloc */ new Error('Invalid MVT property index');\n }\n properties[keys[tags[i]]] = values[tags[i + 1]];\n }\n return /* alloc */ { id, type, properties, geometry: type ? readMvtGeometry(commands, type) : /* alloc */ [] };\n}\n", "/**\n * Strict UTF-8 decoder used for vector tile strings.\n *\n * @type {TextDecoder}\n */\nexport const mvtTextDecoder = new TextDecoder('utf-8', { fatal: true });\n", "import { mvtTextDecoder } from '../globals/mvtTextDecoder.js';\nimport { readMvtMessage } from './readMvtMessage.js';\n\n/**\n * Decode a length-delimited UTF-8 string.\n *\n * @param {Object} reader MVT byte reader.\n * @param {number} wire Protobuf wire type.\n *\n * @returns {string} Decoded string.\n */\nexport function readMvtString(reader, wire) {\n return mvtTextDecoder.decode(readMvtMessage(reader, wire).bytes);\n}\n", "import { expectMvtWire } from './expectMvtWire.js';\nimport { numericMvtValue } from './numericMvtValue.js';\nimport { readMvtInteger } from './readMvtInteger.js';\nimport { readMvtString } from './readMvtString.js';\nimport { takeMvtBytes } from './takeMvtBytes.js';\n\n/**\n * Decode a known MVT value field according to its protobuf type.\n *\n * @param {Object} reader MVT byte reader.\n * @param {number} field Value field number.\n * @param {number} wire Protobuf wire type.\n *\n * @returns {string|number|boolean} Decoded value.\n */\nexport function readMvtKnownValue(reader, field, wire) {\n let offset, integer;\n if (field === 1) return readMvtString(reader, wire);\n if (field === 2 || field === 3) {\n expectMvtWire(wire, field === 2 ? 5 : 1);\n offset = takeMvtBytes(reader, field === 2 ? 4 : 8);\n return field === 2 ? reader.view.getFloat32(offset, true) : reader.view.getFloat64(offset, true);\n }\n expectMvtWire(wire, 0);\n integer = readMvtInteger(reader);\n if (field === 4) return numericMvtValue(BigInt.asIntN(64, integer));\n if (field === 5) return numericMvtValue(integer);\n if (field === 6) return numericMvtValue((integer >> 1n) ^ -(integer & 1n));\n return integer !== 0n;\n}\n", "import { readMvtField } from './readMvtField.js';\nimport { skipMvtField } from './skipMvtField.js';\nimport { readMvtKnownValue } from './readMvtKnownValue.js';\n\n/**\n * Decode an MVT value message containing exactly one known value field.\n *\n * @param {Object} reader Value message reader.\n *\n * @returns {string|number|boolean} Decoded value.\n *\n * @throws {Error} If multiple known value fields are present.\n * @throws {Error} If no known value field is present.\n */\nexport function readMvtValue(reader) {\n let value, found = false, field, wire;\n while (reader.pos < reader.bytes.length) {\n [field, wire] = readMvtField(reader);\n if (field < 1 || field > 7) {\n skipMvtField(reader, wire);\n continue;\n }\n if (found) throw /* alloc */ new Error('Multiple MVT value types');\n found = true;\n value = readMvtKnownValue(reader, field, wire);\n }\n if (!found) throw /* alloc */ new Error('Empty MVT value');\n return value;\n}\n", "import { expectMvtWire } from './expectMvtWire.js';\nimport { readMvtFeature } from './readMvtFeature.js';\nimport { readMvtField } from './readMvtField.js';\nimport { readMvtMessage } from './readMvtMessage.js';\nimport { readMvtNumber } from './readMvtNumber.js';\nimport { readMvtString } from './readMvtString.js';\nimport { readMvtValue } from './readMvtValue.js';\nimport { skipMvtField } from './skipMvtField.js';\n\n/**\n * Decode an MVT layer and resolve its features against property tables.\n *\n * @param {Object} reader Layer message reader.\n *\n * @returns {Object} Layer name, extent and features.\n *\n * @throws {Error} If layer name, version or extent is invalid.\n */\nexport function readMvtLayer(reader) {\n let name, version, extent = 4096, field, wire, value, i = 0;\n const keys = /* alloc */ [], values = /* alloc */ [], features = /* alloc */ [];\n while (reader.pos < reader.bytes.length) {\n [field, wire] = readMvtField(reader);\n if (field === 1) name = readMvtString(reader, wire);\n else if (field === 2) features.push(readMvtMessage(reader, wire));\n else if (field === 3) keys.push(readMvtString(reader, wire));\n else if (field === 4) values.push(readMvtValue(readMvtMessage(reader, wire)));\n else if (field === 5 || field === 15) {\n expectMvtWire(wire, 0);\n value = readMvtNumber(reader);\n if (field === 5) extent = value;\n else version = value;\n } else skipMvtField(reader, wire);\n }\n if (!name || !/* alloc */ [1, 2].includes(version) || !extent || extent > 0xffffffff) {\n throw /* alloc */ new Error('Invalid MVT layer metadata');\n }\n for (; i < features.length; i++) features[i] = readMvtFeature(features[i], keys, values);\n return /* alloc */ { name, extent, features };\n}\n", "import { createMvtReader } from './createMvtReader.js';\nimport { readMvtField } from './readMvtField.js';\nimport { readMvtLayer } from './readMvtLayer.js';\nimport { readMvtMessage } from './readMvtMessage.js';\nimport { skipMvtField } from './skipMvtField.js';\n\n/**\n * Decode an uncompressed MVT ArrayBuffer/Uint8Array into tile-local layers.\n * Feature types: 0 unknown, 1 points, 2 lines, 3 polygon rings (including holes).\n * Integers outside JavaScript's safe range are returned as decimal strings.\n *\n * @param {ArrayBuffer|Uint8Array} buffer Uncompressed tile data.\n *\n * @returns {Array<Object>} Decoded tile layers.\n *\n * @throws {TypeError} If the input is not a supported byte buffer.\n * @throws {Error} If layer names are duplicated.\n */\nexport function decodeVectorTile(buffer) {\n if (!(buffer instanceof ArrayBuffer) && !(buffer instanceof Uint8Array)) {\n throw /* alloc */ new TypeError('MVT input must be an ArrayBuffer or Uint8Array');\n }\n const bytes = buffer instanceof Uint8Array ? buffer : /* alloc */ new Uint8Array(buffer);\n const reader = createMvtReader(bytes);\n const layers = /* alloc */ [], names = /* alloc */ new Set();\n let field, wire, layer;\n while (reader.pos < reader.bytes.length) {\n [field, wire] = readMvtField(reader);\n if (field !== 3) {\n skipMvtField(reader, wire);\n continue;\n }\n layer = readMvtLayer(readMvtMessage(reader, wire));\n if (names.has(layer.name)) throw /* alloc */ new Error('Duplicate MVT layer name');\n names.add(layer.name);\n layers.push(layer);\n }\n return layers;\n}\n", "/**\n * Collect feature property names referenced by paint and filter expressions.\n *\n * @param {Object} entry Style layer entry.\n *\n * @returns {Set<string>} Referenced property names.\n */\nexport function vectorStyleDependencies(entry) {\n const dependencies = /* alloc */ new Set();\n const expressions = /* alloc */ [entry.paint, entry.filter];\n let value, child;\n while (expressions.length) {\n value = expressions.pop();\n if (!value || typeof value !== 'object') continue;\n if (Array.isArray(value) && typeof value[1] === 'string' &&\n /* alloc */ ['get', 'has', '==', '!=', '<', '>', '<=', '>=', 'in', '!in'].includes(value[0])) {\n dependencies.add(value[1]);\n }\n for (child of Object.values(value)) expressions.push(child);\n }\n return dependencies;\n}\n", "import { evaluateStyle } from './evaluateStyle.js';\n\n/**\n * Evaluate a short-circuiting all or any style expression.\n *\n * @param {string} op Expression operator.\n * @param {Array} args Expression operands.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n * @param {boolean} legacy Whether to use legacy filter evaluation.\n *\n * @returns {boolean} Expression result.\n *\n * @throws {Error} If the operator is unsupported.\n */\nexport function evaluateBoolean(op, args, properties, zoom, legacy) {\n let i = 0;\n if (op === 'all') {\n for (i = 0; i < args.length; i++) {\n if (!evaluateStyle(args[i], properties, zoom, legacy)) return false;\n }\n return true;\n }\n if (op === 'any') {\n for (i = 0; i < args.length; i++) {\n if (evaluateStyle(args[i], properties, zoom, legacy)) return true;\n }\n return false;\n }\n throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\n}\n", "import { evaluateStyle } from './evaluateStyle.js';\n\n/**\n * Evaluate a coalesce or case style expression.\n *\n * @param {string} op Expression operator.\n * @param {Array} args Expression operands.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n * @param {boolean} legacy Legacy filter flag.\n *\n * @returns {*} Selected expression result.\n *\n * @throws {Error} If the operator is unsupported.\n */\nexport function evaluateCoalesceOrCase(op, args, properties, zoom, legacy) {\n let i = 0, result = null;\n if (op === 'coalesce') {\n for (i = 0; i < args.length; i++) {\n result = evaluateStyle(args[i], properties, zoom);\n if (result !== null && result !== undefined) return result;\n }\n return null;\n }\n if (op === 'case') {\n for (i = 0; i < args.length - 1; i += 2) {\n if (evaluateStyle(args[i], properties, zoom)) {\n return evaluateStyle(args[i + 1], properties, zoom);\n }\n }\n return evaluateStyle(args[args.length - 1], properties, zoom);\n }\n throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\n}\n", "import { evaluateStyle } from './evaluateStyle.js';\n\n/**\n * Evaluate an input or resolve a legacy string operand as a property name.\n *\n * @param {*} value Input value or expression.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n * @param {boolean} legacy Whether string values name properties.\n *\n * @returns {*} Evaluated input.\n */\nexport function evaluateInput(value, properties, zoom, legacy) {\n if (legacy && typeof value === 'string') return properties[value];\n return evaluateStyle(value, properties, zoom);\n}\n", "import { evaluateInput } from './evaluateInput.js';\nimport { evaluateStyle } from './evaluateStyle.js';\n\n/**\n * Evaluate a comparison between style expression operands.\n *\n * @param {string} op Comparison operator.\n * @param {Array} args Expression operands.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n * @param {boolean} legacy Whether the left operand is a legacy property name.\n *\n * @returns {boolean} Comparison result.\n *\n * @throws {Error} If the operator is unsupported.\n */\nexport function evaluateComparison(op, args, properties, zoom, legacy) {\n const left = evaluateInput(args[0], properties, zoom, legacy);\n const right = evaluateStyle(args[1], properties, zoom);\n switch (op) {\n case '==': return left === right;\n case '!=': return left !== right;\n case '<=': return left <= right;\n case '>=': return left >= right;\n case '<': return left < right;\n case '>': return left > right;\n default: throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\n }\n}\n", "/**\n * Supported named vector style colors as red, green, blue and alpha values.\n *\n * @type {Object<string, Array<number>>}\n */\nexport const vectorStyleNamedColors = {\n black: [0, 0, 0, 1],\n white: [255, 255, 255, 1],\n gray: [128, 128, 128, 1],\n blue: [0, 0, 255, 1],\n red: [255, 0, 0, 1],\n green: [0, 128, 0, 1]\n};\n", "/**\n * Parse an rgb or rgba color into numeric components.\n *\n * @param {string} value Color text.\n *\n * @returns {Array<number>} Red, green, blue and alpha components.\n *\n * @throws {Error} If the color syntax or components are unsupported.\n */\nexport function parseFunctionalColor(value) {\n const match = /^rgba?\\(([^)]+)\\)$/.exec(value);\n if (match) {\n const values = match[1].split(',');\n let i = 0, finite = true;\n for (i = 0; i < values.length; i++) values[i] = Number(values[i]);\n if (values.length === 3) values.push(1);\n for (i = 0; i < values.length; i++) {\n if (!Number.isFinite(values[i])) finite = false;\n }\n if (values.length === 4 && finite) return values;\n }\n throw /* alloc */ new Error(`Unsupported interpolated style color: ${value}`);\n}\n", "/**\n * Parse a three- or six-digit hexadecimal color.\n *\n * @param {string} value Validated hexadecimal color text.\n *\n * @returns {Array<number>} Red, green, blue and opaque alpha.\n */\nexport function parseHexColor(value) {\n let i = 0, offset = 0;\n if (value.length === 4) {\n value = '#' + value[1] + value[1] + value[2] + value[2] + value[3] + value[3];\n }\n const color = /* alloc */ [];\n for (i = 1; i < 6; i += 2) {\n offset = parseInt(value.slice(i, i + 2), 16);\n color.push(offset);\n }\n color.push(1);\n return color;\n}\n", "import { vectorStyleNamedColors } from '../globals/vectorStyleNamedColors.js';\nimport { parseFunctionalColor } from './parseFunctionalColor.js';\nimport { parseHexColor } from './parseHexColor.js';\n\n/**\n * Resolve a supported named, hexadecimal or functional style color.\n *\n * @param {string} value Color text.\n *\n * @returns {Array<number>} Red, green, blue and alpha components.\n */\nexport function styleColor(value) {\n if (Object.hasOwn(vectorStyleNamedColors, value)) return vectorStyleNamedColors[value];\n if (/^#[0-9a-f]{3}$/i.test(value) || /^#[0-9a-f]{6}$/i.test(value)) {\n return parseHexColor(value);\n }\n return parseFunctionalColor(value);\n}\n", "import { styleColor } from './styleColor.js';\nimport { evaluateStyle } from './evaluateStyle.js';\n\n/**\n * Interpolate numeric or color style outputs between expression stops.\n *\n * @param {Array} args Interpolation mode, input and stops.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n *\n * @returns {*} Interpolated or endpoint value.\n */\nexport function evaluateInterpolate(args, properties, zoom) {\n const result = evaluateStyle(args[1], properties, zoom);\n const base = args[0][0] === 'exponential' ? args[0][1] : 1;\n let i = 0, lower = 0, upper = 0, ratio = 0, left = null, right = null, j = 0, color = '';\n if (result <= args[2]) return evaluateStyle(args[3], properties, zoom);\n for (i = 4; i < args.length; i += 2) {\n if (result > args[i]) continue;\n lower = args[i - 2];\n upper = args[i];\n ratio = base === 1 ? (result - lower) / (upper - lower)\n : (base ** (result - lower) - 1) / (base ** (upper - lower) - 1);\n left = evaluateStyle(args[i - 1], properties, zoom);\n right = evaluateStyle(args[i + 1], properties, zoom);\n if (typeof left === 'number' && typeof right === 'number') return left + (right - left) * ratio;\n left = styleColor(left);\n right = styleColor(right);\n for (j = 0; j < 3; j++) {\n if (j) color += ',';\n color += Math.round(left[j] + (right[j] - left[j]) * ratio);\n }\n return `rgba(${color},${left[3] + (right[3] - left[3]) * ratio})`;\n }\n return evaluateStyle(args.at(-1), properties, zoom);\n}\n", "/**\n * Check a slice for a value, treating NaN as equal to NaN.\n *\n * @param {Array} values Input values.\n * @param {number} start Inclusive start index.\n * @param {number} end Exclusive end index.\n * @param {*} target Value to find.\n *\n * @returns {boolean} Whether the value occurs in the slice.\n */\nexport function arrayContainsRange(values, start, end, target) {\n let i = 0, value = null;\n for (i = start; i < end; i++) {\n value = values[i];\n if (value === target || (value !== value && target !== target)) return true;\n }\n return false;\n}\n", "import { arrayContainsRange } from './arrayContainsRange.js';\nimport { evaluateInput } from './evaluateInput.js';\nimport { evaluateStyle } from './evaluateStyle.js';\n\n/**\n * Evaluate membership or legacy negated membership in a style filter.\n *\n * @param {string} op Membership operator.\n * @param {Array} args Target and candidate operands.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n * @param {boolean} legacy Whether to use legacy filter semantics.\n *\n * @returns {boolean} Membership result.\n */\nexport function evaluateMembership(op, args, properties, zoom, legacy) {\n let target = null;\n if (op === '!in') {\n target = evaluateInput(args[0], properties, zoom, legacy);\n return !arrayContainsRange(args, 1, args.length, target);\n }\n if (legacy) {\n target = evaluateInput(args[0], properties, zoom, true);\n return arrayContainsRange(args, 1, args.length, target);\n }\n const values = evaluateStyle(args[1], properties, zoom);\n target = evaluateInput(args[0], properties, zoom, false);\n return values.includes(target);\n}\n", "import { evaluateInterpolate } from './evaluateInterpolate.js';\nimport { evaluateMembership } from './evaluateMembership.js';\n\n/**\n * Dispatch an in or interpolate style expression.\n *\n * @param {string} op Expression operator.\n * @param {Array} args Expression operands.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n * @param {boolean} legacy Whether to use legacy membership semantics.\n *\n * @returns {*} Expression result.\n *\n * @throws {Error} If the operator is unsupported.\n */\nexport function evaluateIExpression(op, args, properties, zoom, legacy) {\n if (op === 'in') return evaluateMembership(op, args, properties, zoom, legacy);\n if (op === 'interpolate') return evaluateInterpolate(args, properties, zoom);\n throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\n}\n", "import { evaluateStyle } from './evaluateStyle.js';\n\n/**\n * Evaluate addition or unary/binary subtraction in a style expression.\n *\n * @param {string} op Arithmetic operator.\n * @param {Array} args Expression operands.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n *\n * @returns {number} Arithmetic result.\n *\n * @throws {Error} If the operator is unsupported.\n */\nexport function evaluateMath(op, args, properties, zoom) {\n let i = 0, sum = 0;\n if (op === '+') {\n for (i = 0; i < args.length; i++) sum += evaluateStyle(args[i], properties, zoom);\n return sum;\n }\n if (op === '-') {\n if (args.length === 1) return -evaluateStyle(args[0], properties, zoom);\n return evaluateStyle(args[0], properties, zoom) - evaluateStyle(args[1], properties, zoom);\n }\n throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\n}\n", "import { evaluateStyle } from './evaluateStyle.js';\n\n/**\n * Evaluate a match expression against scalar or array labels.\n *\n * @param {Array} args Input, labels, outputs and fallback.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n *\n * @returns {*} Matched output or fallback.\n */\nexport function evaluateMatch(args, properties, zoom) {\n const result = evaluateStyle(args[0], properties, zoom);\n let i = 0, matched = false;\n for (i = 1; i < args.length - 1; i += 2) {\n if (Array.isArray(args[i])) matched = args[i].includes(result);\n else matched = args[i] === result;\n if (matched) return evaluateStyle(args[i + 1], properties, zoom);\n }\n return evaluateStyle(args[args.length - 1], properties, zoom);\n}\n", "import { evaluateInput } from './evaluateInput.js';\nimport { evaluateMembership } from './evaluateMembership.js';\nimport { evaluateStyle } from './evaluateStyle.js';\n\n/**\n * Evaluate logical negation, inequality or negated membership.\n *\n * @param {string} op Expression operator.\n * @param {Array} args Expression operands.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n * @param {boolean} legacy Whether to use legacy filter semantics.\n *\n * @returns {boolean} Expression result.\n *\n * @throws {Error} If the operator is unsupported.\n */\nexport function evaluateNegation(op, args, properties, zoom, legacy) {\n if (op === '!') return !evaluateStyle(args[0], properties, zoom, legacy);\n if (op === '!=') {\n return evaluateInput(args[0], properties, zoom, legacy) !==\n evaluateStyle(args[1], properties, zoom);\n }\n if (op === '!in') return evaluateMembership(op, args, properties, zoom, legacy);\n throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\n}\n", "/**\n * Evaluate a literal, property lookup, property existence or zoom expression.\n *\n * @param {string} op Expression operator.\n * @param {Array} args Expression operands.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n *\n * @returns {*} Expression result.\n *\n * @throws {Error} If the operator is unsupported.\n */\nexport function evaluatePrimitive(op, args, properties, zoom) {\n switch (op) {\n case 'literal': return args[0];\n case 'get': return properties[args[0]];\n case 'has': return Object.hasOwn(properties, args[0]);\n case 'zoom': return zoom;\n default: throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\n }\n}\n", "import { evaluateStyle } from './evaluateStyle.js';\n\n/**\n * Evaluate the output of the last step whose stop is reached.\n *\n * @param {Array} args Input, default output and stop/output pairs.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n *\n * @returns {*} Selected output.\n */\nexport function evaluateStep(args, properties, zoom) {\n const result = evaluateStyle(args[0], properties, zoom);\n let output = args[1], i = 0;\n for (i = 2; i < args.length; i += 2) {\n if (result < args[i]) break;\n output = args[i + 1];\n }\n return evaluateStyle(output, properties, zoom);\n}\n", "import { evaluateStyle } from './evaluateStyle.js';\n\n/**\n * Evaluate a boolean or numeric conversion expression.\n *\n * @param {string} op Conversion operator.\n * @param {Array} args Candidate expressions.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n *\n * @returns {boolean|number} Converted value.\n *\n * @throws {Error} If no numeric candidate is finite.\n * @throws {Error} If the operator is unsupported.\n */\nexport function evaluateToExpression(op, args, properties, zoom) {\n if (op === 'to-boolean') return Boolean(evaluateStyle(args[0], properties, zoom));\n if (op === 'to-number') {\n let i = 0, number = 0;\n for (i = 0; i < args.length; i++) {\n number = Number(evaluateStyle(args[i], properties, zoom));\n if (Number.isFinite(number)) return number;\n }\n throw /* alloc */ new Error('Invalid numeric style expression');\n }\n throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\n}\n", "import { evaluateBoolean } from './evaluateBoolean.js';\nimport { evaluateCoalesceOrCase } from './evaluateCoalesceOrCase.js';\nimport { evaluateComparison } from './evaluateComparison.js';\nimport { evaluateIExpression } from './evaluateIExpression.js';\nimport { evaluateMath } from './evaluateMath.js';\nimport { evaluateMatch } from './evaluateMatch.js';\nimport { evaluateNegation } from './evaluateNegation.js';\nimport { evaluatePrimitive } from './evaluatePrimitive.js';\nimport { evaluateStep } from './evaluateStep.js';\nimport { evaluateToExpression } from './evaluateToExpression.js';\n\n/**\n * Evaluate a supported vector style expression or return a non-array value unchanged.\n *\n * @param {*} value Style value or expression.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n * @param {boolean} [legacy] Whether to use legacy filter semantics.\n *\n * @returns {*} Evaluated value.\n */\nexport function evaluateStyle(value, properties, zoom, legacy = false) {\n if (!Array.isArray(value)) return value;\n const op = value[0];\n const args = value.slice(1);\n const operation = String(op);\n if (/^(?:literal|get|has|zoom)$/.test(operation)) {\n return evaluatePrimitive(op, args, properties, zoom);\n }\n switch (operation[0]) {\n case 'a': return evaluateBoolean(op, args, properties, zoom, legacy);\n case '!': return evaluateNegation(op, args, properties, zoom, legacy);\n case '=':\n case '<':\n case '>': return evaluateComparison(op, args, properties, zoom, legacy);\n case 'i': return evaluateIExpression(op, args, properties, zoom, legacy);\n case 't': return evaluateToExpression(op, args, properties, zoom, legacy);\n case 'c': return evaluateCoalesceOrCase(op, args, properties, zoom, legacy);\n case 'm': return evaluateMatch(args, properties, zoom);\n case 's': return evaluateStep(args, properties, zoom);\n default: return evaluateMath(op, args, properties, zoom);\n }\n}\n", "import { evaluateStyle } from './evaluateStyle.js';\n\n/**\n * Check a style layer's zoom range, visibility and feature filter.\n *\n * @param {Object} layer Vector style layer.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n *\n * @returns {boolean} Whether the layer is visible for the feature.\n */\nexport function visibleStyle(layer, properties, zoom) {\n return zoom >= (layer.minzoom ?? 0) && zoom < (layer.maxzoom ?? Infinity) &&\n layer.layout?.visibility !== 'none' &&\n (!layer.filter || evaluateStyle(layer.filter, properties, zoom, true));\n}\n", "import { visibleStyle } from '../vector-style/visibleStyle.js';\n\n/**\n * Find a zoom at which the style is visible for a feature.\n *\n * @param {Object} entry Style layer entry.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current style zoom.\n * @param {number} maxZoom Maximum fallback zoom.\n *\n * @returns {number} Visible zoom, or -1 if none is found.\n */\nexport function vectorFeatureZoom(entry, properties, zoom, maxZoom) {\n if (visibleStyle(entry, properties, zoom)) return zoom;\n zoom = maxZoom;\n while (zoom >= 0 && !visibleStyle(entry, properties, zoom)) zoom--;\n return zoom;\n}\n", "import { evaluateStyle } from '../vector-style/evaluateStyle.js';\n\n/**\n * Evaluate a style property or return its fallback when absent.\n *\n * @param {Object} object Style properties.\n * @param {string} key Property name.\n * @param {*} fallback Default value.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Style zoom.\n *\n * @returns {*} Evaluated or fallback value.\n */\nexport function vectorStyleValue(object, key, fallback, properties, zoom) {\n return object?.[key] === undefined ? fallback : evaluateStyle(object[key], properties, zoom);\n}\n", "/**\n * Measure the path from a segment point until it turns about 45 degrees from that segment.\n *\n * @param {Array} path Tile-coordinate points.\n * @param {number} i Segment end index.\n * @param {Array<number>} point Point on the segment.\n * @param {number} step Direction along the path, 1 or -1.\n *\n * @returns {number} Straight-run distance.\n */\nexport function vectorStraightRun(path, i, point, step) {\n const base = Math.atan2(path[i][1] - path[i - 1][1], path[i][0] - path[i - 1][0]);\n let j = step > 0 ? i : i - 1, previous = point, run = 0, next;\n while (j >= 0 && j < path.length) {\n run += Math.hypot(path[j][0] - previous[0], path[j][1] - previous[1]);\n previous = path[j];\n next = j + step;\n if (next < 0 || next >= path.length) break;\n if (Math.cos(Math.atan2(path[next][1] - path[j][1], path[next][0] - path[j][0]) - base + (step < 0 ? Math.PI : 0)) < 0.7) break;\n j = next;\n }\n return run;\n}\n", "import { vectorStraightRun } from './vectorStraightRun.js';\n\n/**\n * Spread anchors along a path, recording segment ends and straight-run lengths.\n *\n * @param {Array} path Tile-coordinate points.\n * @param {number} spacing Desired anchor spacing.\n *\n * @returns {Array} Label anchors.\n */\nexport function vectorLabelAnchors(path, spacing) {\n const anchors = /* alloc */ [];\n let length = 0, i, walked, target, count, k, segment, t, point;\n for (i = 1; i < path.length; i++) length += Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]);\n count = Math.max(1, Math.floor(length / spacing));\n i = 1; walked = 0;\n for (k = 0; k < count; k++) {\n target = (k + 0.5) * length / count;\n while (i < path.length - 1 && walked + Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]) < target) {\n walked += Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]); i++;\n }\n segment = Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]);\n t = segment ? Math.min(1, Math.max(0, (target - walked) / segment)) : 0;\n point = /* alloc */ [\n path[i - 1][0] + (path[i][0] - path[i - 1][0]) * t, path[i - 1][1] + (path[i][1] - path[i - 1][1]) * t,\n ];\n anchors.push(/* alloc */ { point, a: path[i - 1], b: path[i],\n length: vectorStraightRun(path, i, point, 1) + vectorStraightRun(path, i, point, -1) });\n }\n return anchors;\n}\n", "/**\n * Replace a label template placeholder with its feature property.\n *\n * @param {Object} properties Feature properties.\n * @param {string} match Complete placeholder match.\n * @param {string} key Property name inside the placeholder.\n *\n * @returns {*} Property value, or an empty string when absent.\n */\nexport function vectorLabelProperty(properties, match, key) {\n return properties[key] ?? '';\n}\n", "import { evaluateStyle } from '../vector-style/evaluateStyle.js';\nimport { vectorLabelProperty } from './vectorLabelProperty.js';\n\n/**\n * Evaluate a label's text, expand property placeholders and apply uppercase transformation.\n *\n * @param {Object} entry Style layer entry.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Style zoom.\n *\n * @returns {string} Label text.\n */\nexport function vectorLabelText(entry, properties, zoom) {\n let text = entry.layout?.['text-field'];\n if (Array.isArray(text)) text = evaluateStyle(text, properties, zoom);\n if (typeof text !== 'string') text = '';\n text = text.replace(/\\{([^}]+)\\}/g, vectorLabelProperty.bind(null, properties));\n return entry.layout?.['text-transform'] === 'uppercase' ? text.toUpperCase() : text;\n}\n", "/**\n * Project a vector tile point into latitude and longitude.\n *\n * @param {Array<number>} point Tile-local coordinates.\n * @param {Object} coords Tile coordinates.\n * @param {number} extent Tile coordinate extent.\n *\n * @returns {Array<number>} Latitude and longitude.\n */\nexport function projectVectorPoint(point, coords, extent) {\n const size = 2 ** coords.z;\n const x = (coords.x + point[0] / extent) / size;\n const y = (coords.y + point[1] / extent) / size;\n return /* alloc */ [Math.atan(Math.sinh(Math.PI * (1 - 2 * y))) * 180 / Math.PI, x * 360 - 180];\n}\n", "import { evaluateStyle } from '../vector-style/evaluateStyle.js';\nimport { projectVectorPoint } from './projectVectorPoint.js';\nimport { vectorStyleValue } from './vectorStyleValue.js';\n\n/**\n * Construct a projected vector label candidate with evaluated style properties.\n *\n * @param {Object} job Vector tile preparation job.\n * @param {Object} layer Decoded source layer.\n * @param {Object} entry Style layer entry.\n * @param {Object} properties Feature properties.\n * @param {number} order Style layer order.\n * @param {string} text Label text.\n * @param {Object} icon Sprite icon.\n * @param {Object} anchor Label anchor and optional line endpoints.\n * @param {number} size Text size.\n *\n * @returns {Object} Label candidate.\n */\nexport function createVectorLabel(job, layer, entry, properties, order, text, icon, anchor, size) {\n return /* alloc */ {\n text, latlng: projectVectorPoint(anchor.point, job.coords, layer.extent),\n order, entry, properties, size, pixelBase: anchor.length * 256 / layer.extent / 2 ** job.coords.z,\n along: anchor.a ? /* alloc */ [\n projectVectorPoint(anchor.a, job.coords, layer.extent),\n projectVectorPoint(anchor.b, job.coords, layer.extent),\n ] : null,\n icon: text.trim() ? null : icon,\n iconOffset: evaluateStyle(entry.layout?.['icon-offset'], properties, job.zoom) || /* alloc */ [0, 0],\n allowOverlap: entry.layout?.['icon-allow-overlap'] === true,\n color: vectorStyleValue(entry.paint, 'text-color', '#000', properties, job.zoom),\n halo: vectorStyleValue(entry.paint, 'text-halo-color', '#fff', properties, job.zoom),\n haloWidth: vectorStyleValue(entry.paint, 'text-halo-width', 0, properties, job.zoom),\n priority: /* alloc */ ['place_labels', 'place'].includes(entry['source-layer']) ? 0\n : /* alloc */ ['street_labels', 'transportation_name'].includes(entry['source-layer']) ? 1 : 2,\n };\n}\n", "import { evaluateStyle } from '../vector-style/evaluateStyle.js';\nimport { vectorStyleValue } from './vectorStyleValue.js';\nimport { vectorLabelAnchors } from './vectorLabelAnchors.js';\nimport { vectorLabelText } from './vectorLabelText.js';\nimport { createVectorLabel } from './createVectorLabel.js';\n\n/**\n * Add in-tile label candidates for a styled vector feature.\n *\n * @param {Object} job Vector tile preparation job.\n * @param {Object} layer Decoded source layer.\n * @param {Object} entry Style layer entry.\n * @param {Object} feature Decoded feature.\n * @param {number} order Style layer order.\n */\nexport function prepareVectorLabel(job, layer, entry, feature, order) {\n const { properties } = feature, { zoom } = job;\n const text = vectorLabelText(entry, properties, zoom);\n const icon = entry.layout?.['symbol-placement'] === 'line' ? null\n : evaluateStyle(entry.layout?.['icon-image'], properties, zoom);\n if (!text.trim() && typeof icon !== 'string') return;\n const size = vectorStyleValue(entry.layout, 'text-size', 12, properties, zoom), line = feature.type === 2 && text.trim();\n const spacing = layer.extent / 16, anchors = /* alloc */ [];\n let path, anchor;\n for (path of line ? feature.geometry : feature.geometry.slice(0, 1)) {\n if (!path?.length) continue;\n if (!line) anchors.push(/* alloc */ { point: path[Math.floor(path.length / 2)], a: null });\n else for (anchor of vectorLabelAnchors(path, spacing)) anchors.push(anchor);\n }\n for (anchor of anchors) {\n if (anchor.point[0] < 0 || anchor.point[0] >= layer.extent || anchor.point[1] < 0 || anchor.point[1] >= layer.extent) continue;\n job.labels.push(createVectorLabel(job, layer, entry, properties, order, text, icon, anchor, size));\n }\n}\n", "import { evaluateStyle } from './evaluateStyle.js';\n\n/**\n * Evaluate a paint value or return its fallback when absent.\n *\n * @param {Object} paint Paint values.\n * @param {string} key Paint property name.\n * @param {*} fallback Default value.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n *\n * @returns {*} Evaluated paint value or fallback.\n */\nexport function readPaintValue(paint, key, fallback, properties, zoom) {\n if (paint[key] === undefined) return fallback;\n return evaluateStyle(paint[key], properties, zoom);\n}\n", "import { readPaintValue } from './readPaintValue.js';\nimport { styleColor } from './styleColor.js';\n\n/**\n * Resolve fill paint expressions to normalized colors and opacity.\n *\n * @param {Object} paint Vector style paint values.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n *\n * @returns {Object} Fill and outline rendering options.\n */\nexport function fillVectorPaint(paint, properties, zoom) {\n const fill = styleColor(readPaintValue(paint, 'fill-color', '#000', properties, zoom));\n const outline = readPaintValue(paint, 'fill-outline-color', null, properties, zoom);\n const rgb = outline === null ? null : styleColor(outline);\n const fillOpacity = readPaintValue(paint, 'fill-opacity', 1, properties, zoom) * fill[3];\n const fillColor = /* alloc */ { r: fill[0] / 255, g: fill[1] / 255, b: fill[2] / 255 };\n const color = rgb ? /* alloc */ { r: rgb[0] / 255, g: rgb[1] / 255, b: rgb[2] / 255 } : null;\n return /* alloc */ {\n fillColor,\n fillOpacity,\n color,\n weight: 0.5\n };\n}\n", "import { evaluateStyle } from './evaluateStyle.js';\n\n/**\n * Evaluate and scale a style dash array by the line width.\n *\n * @param {Array} dash Dash pattern or expression, if present.\n * @param {number} weight Line width.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n *\n * @returns {string|undefined} Space-separated scaled dashes, or undefined.\n *\n * @throws {TypeError} If the evaluated dash pattern is not an array.\n */\nexport function scaleDashArray(dash, weight, properties, zoom) {\n if (!dash) return undefined;\n let values = dash, i = 0, result = '';\n if (typeof dash[0] !== 'number') values = evaluateStyle(dash, properties, zoom);\n if (!Array.isArray(values)) throw /* alloc */ new TypeError('Style dash array must be an array');\n for (i = 0; i < values.length; i++) {\n if (i) result += ' ';\n result += values[i] * weight;\n }\n return result;\n}\n", "import { readPaintValue } from './readPaintValue.js';\nimport { scaleDashArray } from './scaleDashArray.js';\nimport { styleColor } from './styleColor.js';\n\n/**\n * Resolve line paint and layout to rendering options.\n *\n * @param {Object} layer Vector style layer.\n * @param {Object} paint Vector style paint values.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n *\n * @returns {Object} Line color, opacity, width, dash, cap and join options.\n */\nexport function lineVectorPaint(layer, paint, properties, zoom) {\n const weight = readPaintValue(paint, 'line-width', 1, properties, zoom);\n const rgb = styleColor(readPaintValue(paint, 'line-color', '#000', properties, zoom));\n const opacity = readPaintValue(paint, 'line-opacity', 1, properties, zoom) * rgb[3];\n const dashArray = scaleDashArray(paint['line-dasharray'], weight, properties, zoom);\n const lineCap = layer.layout?.['line-cap'] || 'butt';\n const lineJoin = layer.layout?.['line-join'] || 'miter';\n const color = /* alloc */ { r: rgb[0] / 255, g: rgb[1] / 255, b: rgb[2] / 255 };\n return /* alloc */ {\n color,\n opacity,\n weight,\n dashArray,\n lineCap,\n lineJoin\n };\n}\n", "import { fillVectorPaint } from './fillVectorPaint.js';\nimport { lineVectorPaint } from './lineVectorPaint.js';\n\n/**\n * Resolve a vector style layer's fill or line paint for a feature.\n *\n * @param {Object} layer Vector style layer.\n * @param {Object} properties Feature properties.\n * @param {number} zoom Current zoom.\n *\n * @returns {Object} Resolved rendering options.\n */\nexport function vectorPaint(layer, properties, zoom) {\n const paint = layer.paint || /* alloc */ {};\n if (layer.type === 'fill') return fillVectorPaint(paint, properties, zoom);\n return lineVectorPaint(layer, paint, properties, zoom);\n}\n", "import { vectorPaint } from '../vector-style/vectorPaint.js';\nimport { visibleStyle } from '../vector-style/visibleStyle.js';\n\n/**\n * Find usable fill or line paint for a compatible vector feature.\n *\n * @param {Object} entry Style layer entry.\n * @param {Object} feature Decoded feature.\n * @param {number} sampleZoom Initial style zoom.\n * @param {number} maxZoom Maximum zoom to search for visible line paint.\n *\n * @returns {Object|null} Paint, or null if no compatible visible paint exists.\n */\nexport function vectorFeaturePaint(entry, feature, sampleZoom, maxZoom) {\n if (entry.type === 'fill') return feature.type === 3 ? vectorPaint(entry, feature.properties, sampleZoom) : null;\n if (entry.type !== 'line' || feature.type !== 2) return null;\n let paint = vectorPaint(entry, feature.properties, sampleZoom), candidate;\n if (paint.weight > 0 && paint.opacity > 0) return paint;\n for (candidate = maxZoom; candidate >= 0; candidate--) {\n if (!visibleStyle(entry, feature.properties, candidate)) continue;\n paint = vectorPaint(entry, feature.properties, candidate);\n if (paint.weight > 0 && paint.opacity > 0) return paint;\n }\n return null;\n}\n", "/**\n * Interpolate an edge's x coordinate at a given y.\n *\n * @param {Array<Array<number>>} edge Non-horizontal edge endpoints.\n * @param {number} y Vertical coordinate.\n *\n * @returns {number} Interpolated x coordinate.\n */\nexport function mvtEdgeX(edge, y) {\n return edge[0][0] + (y - edge[0][1]) *\n (edge[1][0] - edge[0][0]) / (edge[1][1] - edge[0][1]);\n}\n", "import { mvtEdgeX } from './mvtEdgeX.js';\n\n/**\n * Add vertical levels where non-horizontal polygon edges cross.\n *\n * @param {Array} edges Ordered edge endpoints.\n * @param {Set<number>} levels Destination set of vertical levels.\n */\nexport function addMvtCrossings(edges, levels) {\n let i = 0, j, a, b, top, bottom, start, end;\n for (; i < edges.length; i++) {\n a = edges[i];\n for (j = i + 1; j < edges.length; j++) {\n b = edges[j];\n top = Math.max(a[0][1], b[0][1]);\n bottom = Math.min(a[1][1], b[1][1]);\n if (top >= bottom) continue;\n start = mvtEdgeX(a, top) - mvtEdgeX(b, top);\n end = mvtEdgeX(a, bottom) - mvtEdgeX(b, bottom);\n if (start * end < 0) levels.add(top + (bottom - top) * start / (start - end));\n }\n }\n}\n", "/**\n * Stably merge two sorted active-edge ranges into a destination array.\n *\n * @param {Array<Object>} active Source active edges.\n * @param {Array<Object>} sorted Destination array.\n * @param {number} left Start of the first range.\n * @param {number} mid Boundary between ranges.\n * @param {number} right Exclusive end of the second range.\n */\nexport function mergeMvtActiveEdges(active, sorted, left, mid, right) {\n let i = left, j = mid, k = left;\n while (i < mid && j < right) {\n if (active[j].x < active[i].x) sorted[k++] = active[j++];\n else sorted[k++] = active[i++];\n }\n while (i < mid) sorted[k++] = active[i++];\n while (j < right) sorted[k++] = active[j++];\n}\n", "import { mergeMvtActiveEdges } from './mergeMvtActiveEdges.js';\n\n/**\n * Stably sort active polygon edges in place by their x coordinate.\n *\n * @param {Array<Object>} active Active edges with x values.\n */\nexport function sortMvtActiveEdges(active) {\n const sorted = /* alloc */ new Array(active.length);\n let width = 1, left, mid, right, i;\n while (width < active.length) {\n for (left = 0; left < active.length; left += width * 2) {\n mid = Math.min(left + width, active.length);\n right = Math.min(left + width * 2, active.length);\n mergeMvtActiveEdges(active, sorted, left, mid, right);\n }\n for (i = 0; i < active.length; i++) active[i] = sorted[i];\n width *= 2;\n }\n}\n", "import { mvtEdgeX } from './mvtEdgeX.js';\nimport { sortMvtActiveEdges } from './sortMvtActiveEdges.js';\n\n/**\n * Tessellate one vertical band using even-odd pairs of polygon edges.\n *\n * @param {Array} edges Polygon edges ordered by endpoint y.\n * @param {number} top Band's upper y.\n * @param {number} bottom Band's lower y.\n * @param {Array} triangles Destination triangles.\n *\n * @throws {Error} If the band has an odd number of active edges.\n * @throws {Error} If paired edges cross inside the band.\n */\nexport function appendMvtBandTriangles(edges, top, bottom, triangles) {\n const mid = (top + bottom) / 2, active = /* alloc */ [];\n let edge, i = 0, leftTop, leftBottom, rightTop, rightBottom;\n for (edge of edges) {\n if (edge[0][1] < mid && edge[1][1] > mid) {\n active.push(/* alloc */ { edge, x: mvtEdgeX(edge, mid) });\n }\n }\n sortMvtActiveEdges(active);\n if (active.length % 2) throw /* alloc */ new Error('Unbalanced MVT polygon edges');\n for (; i < active.length; i += 2) {\n leftTop = mvtEdgeX(active[i].edge, top);\n leftBottom = mvtEdgeX(active[i].edge, bottom);\n rightTop = mvtEdgeX(active[i + 1].edge, top);\n rightBottom = mvtEdgeX(active[i + 1].edge, bottom);\n if (rightTop < leftTop - 1e-8 || rightBottom < leftBottom - 1e-8) {\n throw /* alloc */ new Error('Crossing MVT polygon edges');\n }\n if ((rightTop - leftTop) * (bottom - top) > 1e-6) {\n triangles.push(/* alloc */ [/* alloc */ [leftTop, top], /* alloc */ [rightTop, top],\n /* alloc */ [leftBottom, bottom]]);\n }\n if ((rightBottom - leftBottom) * (bottom - top) > 1e-6) {\n triangles.push(/* alloc */ [/* alloc */ [rightTop, top], /* alloc */ [rightBottom, bottom],\n /* alloc */ [leftBottom, bottom]]);\n }\n }\n}\n", "/**\n * Check every component of a tile coordinate for finiteness.\n *\n * @param {Array<number>} point Tile coordinate.\n *\n * @returns {boolean} Whether all components are finite.\n */\nexport function finiteMvtCoordinate(point) {\n let i = 0;\n for (; i < point.length; i++) {\n if (!Number.isFinite(point[i])) return false;\n }\n return true;\n}\n", "import { finiteMvtCoordinate } from './finiteMvtCoordinate.js';\n\n/**\n * Collect non-horizontal edges and vertical levels from closed MVT rings.\n *\n * @param {Array} rings Closed polygon rings.\n * @param {Array} edges Destination edges.\n * @param {Set<number>} levels Destination vertical levels.\n *\n * @throws {Error} If a ring is not closed or is too short.\n * @throws {Error} If a ring coordinate is non-finite.\n */\nexport function collectMvtEdges(rings, edges, levels) {\n let ring, i, a, b;\n for (ring of rings) {\n if (ring.length < 4 || ring[0][0] !== ring.at(-1)[0] || ring[0][1] !== ring.at(-1)[1]) {\n throw /* alloc */ new Error('MVT tessellation requires closed rings');\n }\n for (i = 1; i < ring.length; i++) {\n a = ring[i - 1];\n b = ring[i];\n if (!finiteMvtCoordinate(a) || !finiteMvtCoordinate(b)) {\n throw /* alloc */ new Error('Invalid MVT ring coordinate');\n }\n levels.add(a[1]);\n if (a[1] !== b[1]) edges.push(/* alloc */ [a[1] < b[1] ? a : b, a[1] < b[1] ? b : a]);\n }\n }\n}\n", "/**\n * Sort vertical levels and collapse values within the tessellation tolerance.\n *\n * @param {Set<number>} levels Unsorted vertical levels.\n *\n * @returns {Array<number>} Sorted distinct levels.\n */\nexport function sortedMvtLevels(levels) {\n const sorted = /* alloc */ [];\n let y, gap = 0, i = 0, j, value, count = 0;\n for (y of levels) sorted.push(y);\n gap = Math.floor(sorted.length / 2);\n for (; gap > 0; gap = Math.floor(gap / 2)) {\n for (i = gap; i < sorted.length; i++) {\n value = sorted[i];\n j = i;\n while (j >= gap && sorted[j - gap] > value) {\n sorted[j] = sorted[j - gap];\n j -= gap;\n }\n sorted[j] = value;\n }\n }\n for (i = 0; i < sorted.length; i++) {\n if (!count || sorted[i] - sorted[count - 1] > 1e-8) sorted[count++] = sorted[i];\n }\n sorted.length = count;\n return sorted;\n}\n", "import { addMvtCrossings } from './addMvtCrossings.js';\nimport { appendMvtBandTriangles } from './appendMvtBandTriangles.js';\nimport { collectMvtEdges } from './collectMvtEdges.js';\nimport { sortedMvtLevels } from './sortedMvtLevels.js';\n\n/**\n * Tessellate closed polygon rings into even-odd horizontal bands.\n *\n * @param {Array} rings Closed tile-coordinate rings.\n *\n * @returns {Array} Triangle coordinate arrays.\n */\nexport function tessellateVectorRings(rings) {\n const edges = /* alloc */ [], levels = /* alloc */ new Set(), triangles = /* alloc */ [];\n let sorted, i = 1, top, bottom;\n collectMvtEdges(rings, edges, levels);\n addMvtCrossings(edges, levels);\n sorted = sortedMvtLevels(levels);\n // ponytail: quadratic edge scan; use a sweep-line index for large datasets.\n for (; i < sorted.length; i++) {\n top = sorted[i - 1];\n bottom = sorted[i];\n if (bottom > top) appendMvtBandTriangles(edges, top, bottom, triangles);\n }\n return triangles;\n}\n", "/**\n * Identify triangulation failures eligible for MVT tessellation fallback.\n *\n * @param {Error} error Triangulation error.\n *\n * @returns {boolean} Whether fallback is allowed.\n */\nexport function isMvtFallbackError(error) {\n return error.message === 'Polygon triangulation area mismatch' ||\n error.message === 'Degenerate polygon ring' ||\n error.message === 'Unable to triangulate polygon: invalid or self-intersecting rings' ||\n error.message === 'Unable to connect polygon hole';\n}\n", "import { tessellateVectorRings } from './tessellateVectorRings.js';\nimport { triangulate } from '../triangulation/triangulate.js';\nimport { isMvtFallbackError } from './isMvtFallbackError.js';\n\n/**\n * Triangulate a polygon, falling back to even-odd tessellation for recognized errors.\n *\n * @param {Array} rings Closed tile-coordinate rings.\n * @param {Array} paths Rings converted to point objects.\n * @param {Array} vertices Flattened path vertices.\n * @param {Array} triangles Destination triangle coordinates.\n *\n * @throws {Error} If triangulation fails with an error not eligible for fallback.\n */\nexport function appendMvtPolygonTriangles(rings, paths, vertices, triangles) {\n let indices, index, triangle, points, i = 0;\n try {\n indices = triangulate(paths[0], paths.slice(1));\n for (triangle of indices) {\n points = /* alloc */ [];\n for (index of triangle) points.push(/* alloc */ [vertices[index].x, vertices[index].y]);\n triangles.push(points);\n }\n } catch (error) {\n if (!isMvtFallbackError(error)) throw error;\n indices = tessellateVectorRings(rings);\n for (; i < indices.length; i++) triangles.push(indices[i]);\n }\n}\n", "import { finiteMvtCoordinate } from './finiteMvtCoordinate.js';\n\n/**\n * Group closed MVT rings into polygons according to exterior winding.\n *\n * @param {Array} rings Closed tile-coordinate rings.\n *\n * @returns {Array} Polygons containing exterior and following hole rings.\n *\n * @throws {Error} If a ring is not closed or is too short.\n * @throws {Error} If a ring coordinate is non-finite.\n */\nexport function groupMvtPolygons(rings) {\n const polygons = /* alloc */ [];\n let polygon, exteriorSign, ring, area, i;\n for (ring of rings) {\n if (ring.length < 4 || ring[0][0] !== ring.at(-1)[0] || ring[0][1] !== ring.at(-1)[1]) {\n throw /* alloc */ new Error('MVT tessellation requires closed rings');\n }\n area = 0;\n for (i = 1; i < ring.length; i++) {\n if (!finiteMvtCoordinate(ring[i]) || !finiteMvtCoordinate(ring[i - 1])) {\n throw /* alloc */ new Error('Invalid MVT ring coordinate');\n }\n area += ring[i - 1][0] * ring[i][1] - ring[i][0] * ring[i - 1][1];\n }\n if (!polygon || area && Math.sign(area) === exteriorSign) {\n polygon = /* alloc */ [];\n polygons.push(polygon);\n exteriorSign = Math.sign(area);\n }\n polygon.push(ring);\n }\n return polygons;\n}\n", "/**\n * Flatten polygon paths into a vertex array.\n *\n * @param {Array<Array<Object>>} paths Polygon paths.\n *\n * @returns {Array<Object>} Flattened vertices.\n */\nexport function mvtPathsVertices(paths) {\n const vertices = /* alloc */ [];\n let path, point;\n for (path of paths) {\n for (point of path) vertices.push(point);\n }\n return vertices;\n}\n", "/**\n * Convert closed coordinate rings to point-object paths without duplicate closing vertices.\n *\n * @param {Array} rings Closed tile-coordinate rings.\n *\n * @returns {Array<Array<Object>>} Polygon point paths.\n */\nexport function mvtPolygonPaths(rings) {\n const paths = /* alloc */ [];\n let ring, i, path;\n for (ring of rings) {\n path = /* alloc */ [];\n for (i = 0; i < ring.length - 1; i++) {\n path.push(/* alloc */ { x: ring[i][0], y: ring[i][1] });\n }\n paths.push(path);\n }\n return paths;\n}\n", "import { appendMvtPolygonTriangles } from './appendMvtPolygonTriangles.js';\nimport { groupMvtPolygons } from './groupMvtPolygons.js';\nimport { mvtPathsVertices } from './mvtPathsVertices.js';\nimport { mvtPolygonPaths } from './mvtPolygonPaths.js';\n\n/**\n * Reuse City Mapper's triangulator in tile space, with even-odd tessellation\n * for quantized touching/crossing rings. Output triangles omit their closure.\n *\n * @param {Array} rings Closed MVT polygon rings.\n *\n * @returns {Array} Triangle coordinate arrays.\n */\nexport function triangulateVectorRings(rings) {\n const polygons = groupMvtPolygons(rings), triangles = /* alloc */ [];\n let polygon, paths, vertices;\n for (polygon of polygons) {\n paths = mvtPolygonPaths(polygon);\n vertices = mvtPathsVertices(paths);\n appendMvtPolygonTriangles(polygon, paths, vertices, triangles);\n }\n return triangles;\n}\n", "/**\n * Simplify a path with a distance tolerance while retaining its endpoints.\n *\n * @param {Array} path Tile-coordinate points.\n * @param {number} tolerance Maximum retained deviation.\n *\n * @returns {Array} Simplified path.\n */\nexport function simplifyVectorPath(path, tolerance) {\n if (path.length < 3) return path;\n const keep = /* alloc */ new Uint8Array(path.length);\n const stack = /* alloc */ [/* alloc */ [0, path.length - 1]], output = /* alloc */ [];\n keep[0] = keep[path.length - 1] = 1;\n let start, end, a, b, dx, dy, length, index, distance, i, p, t, squared;\n while (stack.length) {\n [start, end] = stack.pop(); a = path[start]; b = path[end];\n dx = b[0] - a[0]; dy = b[1] - a[1]; length = dx * dx + dy * dy;\n index = -1; distance = tolerance * tolerance;\n for (i = start + 1; i < end; i++) {\n p = path[i];\n t = length ? Math.max(0, Math.min(1, ((p[0] - a[0]) * dx + (p[1] - a[1]) * dy) / length)) : 0;\n squared = (p[0] - a[0] - t * dx) ** 2 + (p[1] - a[1] - t * dy) ** 2;\n if (squared > distance) { distance = squared; index = i; }\n }\n if (index >= 0) { keep[index] = 1; stack.push(/* alloc */ [start, index], /* alloc */ [index, end]); }\n }\n for (i = 0; i < path.length; i++) if (keep[i]) output.push(path[i]);\n return output;\n}\n", "import { triangulateVectorRings } from '../mvt/triangulateVectorRings.js';\nimport { projectVectorPoint } from './projectVectorPoint.js';\nimport { simplifyVectorPath } from './simplifyVectorPath.js';\n\n/**\n * Simplify polygon rings, triangulate them and project their vertices.\n *\n * @param {Array} geometry Tile coordinate rings.\n * @param {Object} coords Tile coordinates.\n * @param {number} extent Tile coordinate extent.\n * @param {number} tolerance Simplification tolerance.\n *\n * @returns {Array} Projected triangle paths.\n */\nexport function projectVectorTriangles(geometry, coords, extent, tolerance) {\n const paths = /* alloc */ [], rings = /* alloc */ [];\n let triangle, projected, point, ring;\n for (ring of geometry) {\n ring = simplifyVectorPath(ring, tolerance);\n if (ring.length >= 4) rings.push(ring);\n }\n for (triangle of triangulateVectorRings(rings)) {\n projected = /* alloc */ [];\n for (point of triangle) projected.push(projectVectorPoint(point, coords, extent));\n paths.push(/* alloc */ [projected]);\n }\n return paths;\n}\n", "import { projectVectorPoint } from './projectVectorPoint.js';\nimport { simplifyVectorPath } from './simplifyVectorPath.js';\n\n/**\n * Simplify and project tile geometry paths to geographic coordinates.\n *\n * @param {Array} geometry Tile coordinate paths.\n * @param {Object} coords Tile coordinates.\n * @param {number} extent Tile coordinate extent.\n * @param {number} tolerance Simplification tolerance.\n *\n * @returns {Array} Projected paths.\n */\nexport function projectVectorPaths(geometry, coords, extent, tolerance) {\n const paths = /* alloc */ [];\n let path, simplified, projected, point;\n for (path of geometry) {\n simplified = simplifyVectorPath(path, tolerance);\n if (simplified.length < 3 && Math.hypot(simplified.at(-1)[0] - simplified[0][0], simplified.at(-1)[1] - simplified[0][1]) < tolerance * 2) continue;\n projected = /* alloc */ [];\n for (point of simplified) projected.push(projectVectorPoint(point, coords, extent));\n paths.push(projected);\n }\n return paths;\n}\n", "/**\n * Compute a simplification tolerance of about 0.7 screen pixels in tile units.\n *\n * @param {Object} job Vector tile preparation job.\n * @param {Object} layer Decoded source layer.\n *\n * @returns {number} Tolerance in tile units.\n */\nexport function vectorTolerance(job, layer) {\n return layer.extent / 256 / 2 ** Math.max(-1, job.mapZoom - job.coords.z) * 0.7;\n}\n", "import { projectVectorTriangles } from './projectVectorTriangles.js';\nimport { projectVectorPaths } from './projectVectorPaths.js';\nimport { vectorTolerance } from './vectorTolerance.js';\n\n/**\n * Project and cache a feature's paths or fill triangles for the tile job.\n *\n * @param {Object} job Vector tile preparation job.\n * @param {Object} layer Decoded source layer.\n * @param {Object} entry Style layer entry.\n * @param {Object} feature Decoded feature.\n *\n * @returns {Array} Projected feature paths.\n */\nexport function vectorFeaturePaths(job, layer, entry, feature) {\n const cache = entry.type === 'fill' ? job.triangles : job.projected;\n let paths = cache.get(feature);\n if (!paths) {\n const tolerance = vectorTolerance(job, layer);\n paths = entry.type === 'fill'\n ? projectVectorTriangles(feature.geometry, job.coords, layer.extent, tolerance)\n : projectVectorPaths(feature.geometry, job.coords, layer.extent, tolerance);\n cache.set(feature, paths);\n }\n return paths;\n}\n", "import { vectorFeaturePaths } from './vectorFeaturePaths.js';\n\n/**\n * Group feature paths by paint and style dependencies, splitting large batches.\n *\n * @param {Object} job Vector tile preparation job.\n * @param {Object} layer Decoded source layer.\n * @param {Object} entry Style layer entry.\n * @param {Object} feature Decoded feature.\n * @param {number} order Style layer order.\n * @param {Map} batches Batches indexed by paint and property values.\n * @param {Iterable<string>} dependencies Feature properties used by the style.\n * @param {Object} paint Evaluated paint.\n */\nexport function appendVectorBatch(job, layer, entry, feature, order, batches, dependencies, paint) {\n const values = /* alloc */ [];\n let key, batch, path, count;\n for (key of dependencies) values.push(feature.properties[key]);\n key = JSON.stringify(/* alloc */ [paint, values]);\n batch = batches.get(key);\n if (!batch) {\n batch = /* alloc */ { kind: entry.type, order, paint, properties: feature.properties, entry,\n paths: /* alloc */ [], coordinates: 0 };\n batches.set(key, batch);\n }\n for (path of vectorFeaturePaths(job, layer, entry, feature)) {\n count = entry.type === 'fill' ? 3 : path.length;\n if (batch.coordinates + count > 6000 && batch.paths.length) {\n job.output.push(/* alloc */ { ...batch, paths: batch.paths });\n batch.paths = /* alloc */ []; batch.coordinates = 0;\n }\n batch.paths.push(path); batch.coordinates += count;\n }\n}\n", "import { vectorStyleDependencies } from './vectorStyleDependencies.js';\nimport { vectorFeatureZoom } from './vectorFeatureZoom.js';\nimport { prepareVectorLabel } from './prepareVectorLabel.js';\nimport { vectorFeaturePaint } from './vectorFeaturePaint.js';\nimport { vectorPaint } from '../vector-style/vectorPaint.js';\nimport { appendVectorBatch } from './appendVectorBatch.js';\n\n/**\n * Prepare labels or painted geometry batches for a vector style layer.\n *\n * @param {Object} job Vector tile preparation job.\n * @param {Object} layer Decoded source layer.\n * @param {Object} entry Style layer entry.\n * @param {number} order Style layer order.\n */\nexport function prepareVectorStyleLayer(job, layer, entry, order) {\n const batches = /* alloc */ new Map(), dependencies = vectorStyleDependencies(entry);\n const outlineColor = entry.type === 'fill' ? entry.paint?.['fill-outline-color'] : null;\n const outline = outlineColor ? /* alloc */ { ...entry, type: 'line',\n paint: /* alloc */ { 'line-color': outlineColor, 'line-width': 1 } } : null;\n let feature, sampleZoom, paint, batch;\n for (feature of layer.features) {\n sampleZoom = vectorFeatureZoom(entry, feature.properties, job.zoom, job.maxZoom);\n if (sampleZoom < 0) continue;\n if (entry.type === 'symbol') {\n prepareVectorLabel(job, layer, entry, feature, order);\n continue;\n }\n paint = vectorFeaturePaint(entry, feature, sampleZoom, job.maxZoom);\n if (!paint) continue;\n appendVectorBatch(job, layer, entry, feature, order, batches, dependencies, paint);\n if (outline && feature.type === 3) {\n appendVectorBatch(job, layer, outline, feature, order, batches, dependencies,\n vectorPaint(outline, feature.properties, sampleZoom));\n }\n }\n for (batch of batches.values()) if (batch.paths.length) job.output.push(batch);\n}\n", "import { decodeVectorTile } from '../mvt/decodeVectorTile.js';\nimport { prepareVectorStyleLayer } from './prepareVectorStyleLayer.js';\n\n/**\n * Decode a vector tile and prepare its styled geometry and label candidates.\n *\n * @param {ArrayBuffer} buffer Encoded vector tile.\n * @param {Object} coords Tile coordinates.\n * @param {Array} style Style layer entries.\n * @param {number} zoom Style zoom.\n * @param {string} source Optional source identifier.\n * @param {number} maxZoom Maximum map zoom for style evaluation.\n * @param {number} mapZoom Current map zoom.\n *\n * @returns {Object} Prepared batches and labels.\n */\nexport function prepareVectorTile(buffer, coords, style, zoom, source, maxZoom = 19, mapZoom = zoom) {\n const layers = decodeVectorTile(buffer), byName = /* alloc */ new Map();\n const job = /* alloc */ { coords, zoom, mapZoom, maxZoom, output: /* alloc */ [], labels: /* alloc */ [],\n triangles: /* alloc */ new WeakMap(), projected: /* alloc */ new WeakMap() };\n let layer, order, entry;\n for (layer of layers) byName.set(layer.name, layer);\n for ([order, entry] of style.entries()) {\n layer = byName.get(entry['source-layer']);\n if (!layer || source !== undefined && entry.source !== source) continue;\n prepareVectorStyleLayer(job, layer, entry, order);\n }\n return /* alloc */ { batches: job.output, labels: job.labels };\n}\n", "import { prepareVectorTile } from '../vector-tiles/prepareVectorTile.js';\n\n/**\n * Prepare a vector tile in the worker and return its request ID with the result or error.\n *\n * @param {MessageEvent} event Request containing tile data and rendering options.\n */\nexport function onVectorTileMessage({ data }) {\n try {\n const result = prepareVectorTile(data.buffer, data.coords, data.style, data.zoom, data.source, data.maxZoom, data.mapZoom);\n self.postMessage(/* alloc */ { id: data.id, ...result });\n } catch (error) {\n self.postMessage(/* alloc */ { id: data.id, error: error.message });\n }\n}\n", "/**\n * Validate a requested COG byte range against size and numeric limits.\n *\n * @param {Object} source COG source with optional known size.\n * @param {number} offset Source-relative byte offset.\n * @param {number} length Requested byte length.\n *\n * @throws {Error} If the range is invalid or exceeds the supported bounds.\n */\nexport function validateCogRange(source, offset, length) {\n if (!Number.isSafeInteger(offset) || !Number.isSafeInteger(length) || offset < 0 ||\n length <= 0 || length > 32000000 || !Number.isSafeInteger(offset + length) ||\n source.size !== undefined && offset + length > source.size) {\n throw /* alloc */ new Error('Invalid COG byte range');\n }\n}\n", "/**\n * Validate a parsed Content-Range against the requested bytes and known source size.\n *\n * @param {Object} source COG source and optional known size.\n * @param {RegExpExecArray|null} range Parsed Content-Range.\n * @param {number} rangeStart Requested absolute byte offset.\n * @param {number} length Requested byte length.\n *\n * @throws {Error} If the content range or total size is inconsistent.\n */\nexport function validateCogContentRange(source, range, rangeStart, length) {\n if (!range || Number(range[1]) !== rangeStart || Number(range[2]) !== rangeStart + length - 1 ||\n !Number.isSafeInteger(Number(range[3])) || Number(range[3]) < rangeStart + length ||\n (source.containerSize ?? source.size) !== undefined &&\n (source.containerSize ?? source.size) !== Number(range[3])) {\n throw /* alloc */ new Error('Invalid COG range response');\n }\n}\n", "/**\n * Check whether a non-range COG response has an unsupported status or declared size.\n *\n * @param {Response} response HTTP response.\n *\n * @returns {boolean} Whether the full response is unacceptable.\n */\nexport function invalidCogFullResponse(response) {\n return response.status !== 200 || Number(response.headers.get('Content-Length')) > 32000000;\n}\n", "import { validateCogContentRange } from './validateCogContentRange.js';\nimport { invalidCogFullResponse } from './invalidCogFullResponse.js';\n\n/**\n * Validate a COG HTTP response's entity tag, range and full-response size.\n *\n * @param {Object} source COG source whose ETag and size are updated.\n * @param {Response} response HTTP response.\n * @param {number} rangeStart Requested absolute byte offset.\n * @param {number} length Requested byte length.\n *\n * @throws {Error} If the source ETag changes.\n * @throws {Error} If a full response is unsupported or too large.\n */\nexport function validateCogResponse(source, response, rangeStart, length) {\n const etag = response.headers.get('ETag');\n if (source.etag && source.etag !== etag) throw /* alloc */ new Error('COG changed; recreate the layer');\n if (etag) source.etag = etag;\n const range = /^bytes (\\d+)-(\\d+)\\/(\\d+)$/.exec(response.headers.get('Content-Range') || '');\n if (response.status === 206) {\n validateCogContentRange(source, range, rangeStart, length);\n if (source.baseOffset === undefined) source.size = Number(range[3]);\n } else if (invalidCogFullResponse(response)) {\n throw /* alloc */ new Error('COG server must support byte ranges for files over 32 MB');\n }\n}\n", "/**\n * Read a COG HTTP body while enforcing the range or full-response size limit.\n *\n * @param {Response} response HTTP response with a readable body.\n * @param {number} length Expected byte length for a range response.\n *\n * @returns {Promise<Uint8Array>} Response bytes.\n *\n * @throws {Error} If the response exceeds its permitted size.\n */\nexport async function readCogBody(response, length) {\n const reader = response.body.getReader(), chunks = /* alloc */ [];\n let total = 0, part;\n try {\n while (!(part = await reader.read()).done) {\n total += part.value.byteLength;\n if (total > (response.status === 206 ? length : 32000000)) {\n await reader.cancel();\n throw /* alloc */ new Error('Oversized COG response');\n }\n chunks.push(part.value);\n }\n } finally {\n reader.releaseLock();\n }\n const data = /* alloc */ new Uint8Array(total);\n let start = 0, chunk;\n for (chunk of chunks) { data.set(chunk, start); start += chunk.length; }\n return data;\n}\n", "import { validateCogRange } from './validateCogRange.js';\nimport { validateCogResponse } from './validateCogResponse.js';\nimport { readCogBody } from './readCogBody.js';\n\n/**\n * Read a validated byte range from a COG source, caching an accepted full response.\n *\n * @param {Object} source COG byte source and response state.\n * @param {number} offset Byte offset relative to the source.\n * @param {number} length Number of bytes to read.\n * @param {AbortSignal} [signal] Request cancellation signal.\n *\n * @returns {Promise<ArrayBuffer>} Requested bytes.\n *\n * @throws {Error} If the HTTP response is unsuccessful.\n * @throws {Error} If a full PMTiles container response is truncated.\n * @throws {Error} If the resulting byte range is truncated.\n */\nexport async function readCog(source, offset, length, signal) {\n signal?.throwIfAborted();\n validateCogRange(source, offset, length);\n if (source.full) return source.full.slice(offset, offset + length);\n const rangeStart = (source.baseOffset || 0) + offset;\n const response = await fetch(source.url, /* alloc */ {\n headers: /* alloc */ { Range: `bytes=${rangeStart}-${rangeStart + length - 1}` }, signal,\n });\n if (!response.ok) throw /* alloc */ new Error(`Unable to read COG: HTTP ${response.status}`);\n validateCogResponse(source, response, rangeStart, length);\n const data = await readCogBody(response, length);\n if (response.status === 200) {\n if (source.baseOffset === undefined) source.size = data.byteLength;\n else if (data.byteLength !== source.containerSize) throw /* alloc */ new Error('Truncated PMTiles COG container');\n source.full = source.baseOffset === undefined ? data.buffer\n : data.slice(source.baseOffset, source.baseOffset + source.size);\n }\n const result = response.status === 200 ? source.full.slice(offset, offset + length) : data.buffer;\n if (result.byteLength !== length) throw /* alloc */ new Error('Truncated COG byte range');\n return result;\n}\n", "/**\n * TIFF tag identifiers read from COG image directories.\n *\n * @type {Array<number>}\n */\nexport const cogTags = [256, 257, 258, 259, 262, 277, 284, 317, 322, 323, 324, 325, 339, 33550, 33922, 34735];\n", "import { readCog } from './readCog.js';\n\n/**\n * Read the numeric values of a supported TIFF directory entry.\n *\n * @param {Object} source Open COG byte source.\n * @param {DataView} entries Directory entry data.\n * @param {number} i Entry index.\n * @param {number} tag TIFF tag number.\n * @param {boolean} little Whether the TIFF uses little-endian byte order.\n *\n * @returns {Promise<Array<number>>} Decoded tag values.\n *\n * @throws {Error} If the tag type or value count is unsupported.\n */\nexport async function readCogTag(source, entries, i, tag, little) {\n const type = entries.getUint16(i * 12 + 2, little);\n const size = type === 3 ? 2 : type === 4 ? 4 : type === 12 ? 8 : 0;\n const length = entries.getUint32(i * 12 + 4, little);\n if (!size || !length || length > 1048576) throw /* alloc */ new Error(`Unsupported COG tag ${tag}`);\n const data = size * length <= 4 ? /* alloc */ new DataView(entries.buffer, i * 12 + 8, 4)\n : /* alloc */ new DataView(await readCog(source, entries.getUint32(i * 12 + 8, little), size * length));\n const values = /* alloc */ [];\n let j;\n for (j = 0; j < length; j++) values.push(type === 3 ? data.getUint16(j * size, little)\n : type === 4 ? data.getUint32(j * size, little) : data.getFloat64(j * size, little));\n return values;\n}\n", "import { readCog } from './readCog.js';\nimport { cogTags } from '../globals/cogTags.js';\nimport { readCogTag } from './readCogTag.js';\n\n/**\n * Read supported TIFF tags from one image directory.\n *\n * @param {Object} source Open COG byte source.\n * @param {number} offset Directory byte offset.\n *\n * @returns {Promise<Object>} Tag map and next directory offset.\n *\n * @throws {Error} If the directory size is invalid.\n * @throws {Error} If a nodata tag is present.\n * @throws {Error} If an affine transformation tag is present.\n * @throws {Error} If a supported tag is duplicated.\n */\nexport async function readCogDirectory(source, offset) {\n const little = source.little;\n const count = /* alloc */ new DataView(await readCog(source, offset, 2)).getUint16(0, little);\n if (!count || count > 128) throw /* alloc */ new Error('Invalid COG directory size');\n const entries = /* alloc */ new DataView(await readCog(source, offset + 2, count * 12 + 4));\n const tags = /* alloc */ new Map();\n let i, tag;\n for (i = 0; i < count; i++) {\n tag = entries.getUint16(i * 12, little);\n if (tag === 42113) throw /* alloc */ new Error('COG nodata tags are not supported; export complete tiles');\n if (tag === 34264) throw /* alloc */ new Error('COG affine transformation matrices are not supported');\n if (!cogTags.includes(tag)) continue;\n if (tags.has(tag)) throw /* alloc */ new Error('Duplicate COG tag');\n tags.set(tag, await readCogTag(source, entries, i, tag, little));\n }\n return /* alloc */ { tags, next: entries.getUint32(count * 12, little) };\n}\n", "/**\n * Check COG image dimensions, tile size, compression, planar layout and predictor.\n *\n * @param {Map} tags TIFF tags.\n * @param {number} width Image width.\n * @param {number} height Image height.\n *\n * @returns {boolean} Whether the image uses supported dimensions and layout.\n */\nexport function validCogDimensions(tags, width, height) {\n return !!width && !!height && width % 256 === 0 && height % 256 === 0 &&\n tags.get(322)?.[0] === 256 && tags.get(323)?.[0] === 256 &&\n (tags.get(259)?.[0] === 1 || tags.get(259)?.[0] === 8) &&\n (tags.get(284)?.[0] ?? 1) === 1 && (tags.get(317)?.[0] ?? 1) === 1;\n}\n", "/**\n * Check whether a TIFF profile is supported grayscale elevation or unsigned RGB(A).\n *\n * @param {Map} tags TIFF tags.\n * @param {number} samples Samples per pixel.\n * @param {Array<number>} bits Bits per sample.\n * @param {Array<number>} format Sample format values.\n * @param {boolean} elevation Whether the profile is Float32 elevation.\n * @param {boolean} bytes Whether all samples use eight bits.\n * @param {boolean} unsigned Whether all sample formats are unsigned.\n *\n * @returns {boolean} Whether the encoding is supported.\n */\nexport function validCogEncoding(tags, samples, bits, format, elevation, bytes, unsigned) {\n if (elevation) return tags.get(262)?.[0] === 1;\n return (samples === 3 || samples === 4) && bits?.length === samples && bytes && unsigned &&\n tags.get(262)?.[0] === 2;\n}\n", "import { validCogDimensions } from './validCogDimensions.js';\nimport { validCogEncoding } from './validCogEncoding.js';\n\n/**\n * Extract and validate a supported tiled color or elevation TIFF profile.\n *\n * @param {Map} tags TIFF tags.\n *\n * @returns {Object} Image dimensions, sample count and elevation flag.\n *\n * @throws {Error} If the TIFF dimensions or encoding are unsupported.\n */\nexport function getCogProfile(tags) {\n const width = tags.get(256)?.[0], height = tags.get(257)?.[0], samples = tags.get(277)?.[0] ?? 1;\n const bits = tags.get(258), format = tags.get(339) || /* alloc */ [1];\n let bytes = true, unsigned = true, floating = true, value;\n for (value of bits || /* alloc */ []) bytes &&= value === 8;\n for (value of format) { unsigned &&= value === 1; floating &&= value === 3; }\n const elevation = samples === 1 && bits?.length === 1 && bits[0] === 32 && floating;\n if (!validCogDimensions(tags, width, height) ||\n !validCogEncoding(tags, samples, bits, format, elevation, bytes, unsigned)) {\n throw /* alloc */ new Error('Unsupported COG profile: expected tiled 256px RGB(A) Uint8 or Float32, DEFLATE without predictor');\n }\n return /* alloc */ { width, height, samples, elevation };\n}\n", "/**\n * Check GeoTIFF keys for EPSG:3857 and PixelIsArea.\n *\n * @param {ArrayLike<number>} keys GeoKey directory values, if present.\n *\n * @returns {boolean} Whether both required keys are present.\n */\nexport function hasCogProjection(keys) {\n let projected = false, area = false, i;\n if (keys) for (i = 4; i < keys.length; i += 4) {\n if (keys[i + 1] !== 0 || keys[i + 2] !== 1) continue;\n if (keys[i] === 3072 && keys[i + 3] === 3857) projected = true;\n if (keys[i] === 1025 && keys[i + 3] === 1) area = true;\n }\n return projected && area;\n}\n", "/**\n * Check whether all provided values are finite.\n *\n * @param {ArrayLike<number>} values Values to inspect, if present.\n *\n * @returns {boolean} Whether every value is finite.\n */\nexport function finiteCogValues(values) {\n let value;\n for (value of values || /* alloc */ []) if (!Number.isFinite(value)) return false;\n return true;\n}\n", "import { finiteCogValues } from './finiteCogValues.js';\n\n/**\n * Validate the structure and numeric values of GeoTIFF key, pixel scale and tiepoint arrays.\n *\n * @param {Array<number>} keys GeoKey directory.\n * @param {Array<number>} scale Pixel scale values.\n * @param {Array<number>} tie Tiepoint values.\n *\n * @returns {boolean} Whether the arrays describe a supported north-up grid.\n */\nexport function validCogGeoArrays(keys, scale, tie) {\n return !!keys && keys[0] === 1 && keys.length === 4 + keys[3] * 4 &&\n !!scale && scale.length === 3 && finiteCogValues(scale) &&\n scale[0] > 0 && Math.abs(scale[0] - scale[1]) <= 1e-8 &&\n !!tie && tie.length === 6 && finiteCogValues(tie) && tie[0] === 0 && tie[1] === 0;\n}\n", "import { hasCogProjection } from './hasCogProjection.js';\nimport { validCogGeoArrays } from './validCogGeoArrays.js';\n\n/**\n * Extract the base image's north-up Web Mercator georeferencing.\n *\n * @param {Map} tags TIFF tags.\n * @param {number} width Base image width.\n * @param {number} height Base image height.\n * @param {boolean} elevation Whether the image stores elevation.\n *\n * @returns {Object} Base dimensions, resolution, origin and elevation flag.\n *\n * @throws {Error} If georeferencing is not north-up EPSG:3857 PixelIsArea.\n */\nexport function getCogBase(tags, width, height, elevation) {\n const keys = tags.get(34735), scale = tags.get(33550), tie = tags.get(33922);\n if (!validCogGeoArrays(keys, scale, tie) || !hasCogProjection(keys)) {\n throw /* alloc */ new Error('COG must use north-up EPSG:3857 PixelIsArea georeferencing');\n }\n return /* alloc */ { width, height, resolution: scale[0], left: tie[3], top: tie[4], elevation };\n}\n", "/**\n * Check that a COG level aligns with the supported Web Mercator XYZ grid.\n *\n * @param {Object} source COG source and existing levels.\n * @param {Object} base Base image profile and georeferencing.\n * @param {Object} profile Level dimensions and elevation flag.\n * @param {number} zoom Derived XYZ zoom.\n * @param {number} x Level's XYZ column origin.\n * @param {number} y Level's XYZ row origin.\n * @param {number} resolution Level resolution.\n *\n * @returns {boolean} Whether the level is supported and grid-aligned.\n */\nexport function validCogGrid(source, base, profile, zoom, x, y, resolution) {\n return zoom >= 0 && zoom <= 24 &&\n Math.abs(20037508.342789244 * 2 / (256 * 2 ** zoom) - resolution) <= resolution * 1e-7 &&\n (!profile.elevation || Number.isInteger(x) && Number.isInteger(y)) &&\n Math.abs(base.width / profile.width - base.height / profile.height) <= 1e-7 &&\n profile.elevation === base.elevation &&\n x >= 0 && y >= 0 && x + profile.width / 256 <= 2 ** zoom && y + profile.height / 256 <= 2 ** zoom &&\n !source.levels.has(zoom) && !(base.elevation && source.levels.size);\n}\n", "/**\n * Validate the number and bounds of COG tile offsets and lengths.\n *\n * @param {Object} source COG source with known size.\n * @param {Object} level Level dimensions, offsets and lengths.\n *\n * @throws {Error} If the offset or length arrays have invalid counts.\n * @throws {Error} If a tile range is empty, oversized or outside the source.\n */\nexport function validateCogOffsets(source, level) {\n if (level.offsets?.length !== level.columns * level.rows || level.lengths?.length !== level.offsets.length) {\n throw /* alloc */ new Error('Invalid COG tile offsets or lengths');\n }\n let i;\n for (i = 0; i < level.offsets.length; i++) {\n if (!level.offsets[i] || !level.lengths[i] || level.lengths[i] > 1048576 ||\n level.offsets[i] + level.lengths[i] > source.size) throw /* alloc */ new Error('Invalid COG tile offsets or lengths');\n }\n}\n", "import { getCogProfile } from './getCogProfile.js';\nimport { getCogBase } from './getCogBase.js';\nimport { validCogGrid } from './validCogGrid.js';\nimport { validateCogOffsets } from './validateCogOffsets.js';\n\n/**\n * Validate and register one TIFF directory as a COG XYZ level.\n *\n * @param {Object} source Open COG source and level map.\n * @param {Object} directory TIFF directory with parsed tags.\n * @param {Object} state Mutable base image and zoom range.\n *\n * @throws {Error} If the level does not align with the supported Web Mercator grid.\n */\nexport function readCogLevel(source, directory, state) {\n const tags = directory.tags, profile = getCogProfile(tags);\n if (!state.base) state.base = getCogBase(tags, profile.width, profile.height, profile.elevation);\n const base = state.base, resolution = base.resolution * base.width / profile.width;\n const zoom = Math.round(Math.log2(20037508.342789244 * 2 / (256 * resolution)));\n const span = 20037508.342789244 * 2 / 2 ** zoom;\n let x = (base.left + 20037508.342789244) / span;\n let y = (20037508.342789244 - base.top) / span;\n if (Math.abs(x - Math.round(x)) < 1e-6) x = Math.round(x);\n if (Math.abs(y - Math.round(y)) < 1e-6) y = Math.round(y);\n if (!validCogGrid(source, base, profile, zoom, x, y, resolution)) {\n throw /* alloc */ new Error('COG levels must align with the Web Mercator XYZ tile grid');\n }\n const level = /* alloc */ {\n x, y, columns: profile.width / 256, rows: profile.height / 256, samples: profile.samples,\n elevation: profile.elevation, compression: tags.get(259)[0], offsets: tags.get(324), lengths: tags.get(325),\n };\n validateCogOffsets(source, level);\n source.levels.set(zoom, level);\n state.minZoom = Math.min(state.minZoom, zoom);\n state.maxZoom = Math.max(state.maxZoom, zoom);\n}\n", "import { readCogDirectory } from './readCogDirectory.js';\nimport { readCogLevel } from './readCogLevel.js';\n\n/**\n * Read TIFF image directories and register contiguous COG zoom levels.\n *\n * @param {Object} source Open COG byte source.\n * @param {number} offset First TIFF directory offset.\n *\n * @returns {Promise<Object>} Base image and minimum and maximum zoom.\n *\n * @throws {Error} If directories are cyclic or exceed the supported count.\n * @throws {Error} If there is no image directory.\n * @throws {Error} If overview zoom levels are not contiguous.\n */\nexport async function readCogDirectories(source, offset) {\n const state = /* alloc */ { base: null, minZoom: Infinity, maxZoom: -Infinity };\n const seen = /* alloc */ new Set();\n let directory;\n while (offset) {\n if (seen.has(offset) || seen.size >= 24) throw /* alloc */ new Error('Cyclic or excessive COG directories');\n seen.add(offset);\n directory = await readCogDirectory(source, offset);\n readCogLevel(source, directory, state);\n offset = directory.next;\n }\n if (!state.base) throw /* alloc */ new Error('COG has no image directory');\n if (source.levels.size !== state.maxZoom - state.minZoom + 1) {\n throw /* alloc */ new Error('COG overview zooms must be contiguous');\n }\n return /* alloc */ { base: state.base, minZoom: state.minZoom, maxZoom: state.maxZoom };\n}\n", "/**\n * Decode an uncompressed or deflate-compressed COG tile to its expected byte length.\n *\n * @param {ArrayBuffer} data Encoded tile data.\n * @param {number} length Expected decoded byte length.\n * @param {number} compression TIFF compression code.\n *\n * @returns {Promise<ArrayBuffer>} Decoded tile data.\n *\n * @throws {Error} If an uncompressed tile has the wrong size.\n * @throws {Error} If decompressed data exceeds the expected size.\n * @throws {Error} If decompressed data is shorter than expected.\n */\nexport async function decodeCogTile(data, length, compression) {\n if (compression === 1) {\n if (data.byteLength !== length) throw /* alloc */ new Error('Invalid uncompressed COG tile size');\n return data;\n }\n const stream = /* alloc */ new Blob(/* alloc */ [data]).stream()\n .pipeThrough(/* alloc */ new DecompressionStream('deflate'));\n const reader = stream.getReader(), result = /* alloc */ new Uint8Array(length);\n let offset = 0, chunk;\n try {\n while (!(chunk = await reader.read()).done) {\n if (offset + chunk.value.length > length) {\n await reader.cancel();\n throw /* alloc */ new Error('Oversized decoded COG tile');\n }\n result.set(chunk.value, offset);\n offset += chunk.value.length;\n }\n } finally {\n reader.releaseLock();\n }\n if (offset !== length) throw /* alloc */ new Error('Truncated decoded COG tile');\n return result.buffer;\n}\n", "import { readCog } from './readCog.js';\nimport { decodeCogTile } from './decodeCogTile.js';\n\n/**\n * Read and decode one TIFF tile block from a COG level.\n *\n * @param {Object} source Open COG byte source.\n * @param {Object} level COG level with block offsets and lengths.\n * @param {number} x Block column within the level.\n * @param {number} y Block row within the level.\n * @param {AbortSignal} [signal] Request cancellation signal.\n *\n * @returns {Promise<ArrayBuffer>} Decoded block data.\n */\nexport async function readCogBlock(source, level, x, y, signal) {\n const index = y * level.columns + x;\n return decodeCogTile(await readCog(source, level.offsets[index], level.lengths[index], signal),\n 256 * 256 * (level.elevation ? 4 : level.samples), level.compression);\n}\n", "import { readCogBlock } from './readCogBlock.js';\n\n/**\n * Read and validate the Float32 elevation samples for an XYZ tile.\n *\n * @param {Object} source Open COG source.\n * @param {Object} level COG elevation level.\n * @param {number} x XYZ tile column.\n * @param {number} y XYZ tile row.\n * @param {AbortSignal} [signal] Request cancellation signal.\n *\n * @returns {Promise<Object>} Object containing the elevation buffer.\n *\n * @throws {Error} If an elevation sample is non-finite or outside the supported range.\n */\nexport async function getElevationTile(source, level, x, y, signal) {\n const data = await readCogBlock(source, level, x - level.x, y - level.y, signal);\n signal?.throwIfAborted();\n const view = /* alloc */ new DataView(data), heights = /* alloc */ new Float32Array(256 * 256);\n let i, height;\n for (i = 0; i < heights.length; i++) {\n height = view.getFloat32(i * 4, source.little);\n if (!Number.isFinite(height) || height < -12000 || height > 10000) {\n throw /* alloc */ new Error('Invalid or missing COG elevation sample');\n }\n heights[i] = height;\n }\n return /* alloc */ { data: heights.buffer };\n}\n", "import { readCogBlock } from './readCogBlock.js';\n\n/**\n * Composite the COG color blocks overlapping an XYZ tile into an image bitmap.\n *\n * @param {Object} source Open COG source.\n * @param {Object} level COG overview level.\n * @param {number} x XYZ tile column.\n * @param {number} y XYZ tile row.\n * @param {AbortSignal} [signal] Request cancellation signal.\n *\n * @returns {Promise<Object>} Object containing the resulting image bitmap.\n *\n * @throws {Error} If a 2D canvas context cannot be created.\n */\nexport async function getColorTile(source, level, x, y, signal) {\n const canvas = /* alloc */ new OffscreenCanvas(256, 256), context = canvas.getContext('2d');\n if (!context) throw /* alloc */ new Error('Unable to create COG tile canvas');\n const left = (x - level.x) * 256, top = (y - level.y) * 256;\n let bx, by, pixels, rgba, i, j, bitmap;\n for (by = Math.max(0, Math.floor(top / 256)); by < Math.min(level.rows, Math.ceil(top / 256 + 1)); by++) {\n for (bx = Math.max(0, Math.floor(left / 256)); bx < Math.min(level.columns, Math.ceil(left / 256 + 1)); bx++) {\n pixels = /* alloc */ new Uint8Array(await readCogBlock(source, level, bx, by, signal));\n signal?.throwIfAborted();\n rgba = /* alloc */ new Uint8ClampedArray(256 * 256 * 4);\n for (i = 0, j = 0; i < pixels.length; i += level.samples, j += 4) {\n rgba[j] = pixels[i]; rgba[j + 1] = pixels[i + 1]; rgba[j + 2] = pixels[i + 2];\n rgba[j + 3] = level.samples === 4 ? pixels[i + 3] : 255;\n }\n bitmap = await createImageBitmap(/* alloc */ new ImageData(rgba, 256, 256));\n context.drawImage(bitmap, bx * 256 - left, by * 256 - top);\n bitmap.close();\n }\n }\n const image = canvas.transferToImageBitmap();\n if (signal?.aborted) { image.close(); signal.throwIfAborted(); }\n return /* alloc */ { image };\n}\n", "/**\n * Check that XYZ coordinates are safe integers within the supported zoom and tile range.\n *\n * @param {number} z Tile zoom.\n * @param {number} x Tile column.\n * @param {number} y Tile row.\n *\n * @returns {boolean} Whether the coordinates are valid.\n */\nexport function validCogTileCoordinates(z, x, y) {\n return Number.isSafeInteger(z) && Number.isSafeInteger(x) && Number.isSafeInteger(y) &&\n z >= 0 && z <= 24 && x >= 0 && y >= 0 && x < 2 ** z && y < 2 ** z;\n}\n", "import { getElevationTile } from './getElevationTile.js';\nimport { getColorTile } from './getColorTile.js';\nimport { validCogTileCoordinates } from './validCogTileCoordinates.js';\n\n/**\n * Read an XYZ color or elevation tile from an open COG, if covered by a level.\n *\n * @param {Object} source Open COG source.\n * @param {number} z Tile zoom.\n * @param {number} x Tile column.\n * @param {number} y Tile row.\n * @param {AbortSignal} [signal] Request cancellation signal.\n *\n * @returns {Promise<Object|undefined>} Tile image or elevation data, if covered.\n *\n * @throws {Error} If tile coordinates are invalid.\n */\nexport async function getCogTile(source, z, x, y, signal) {\n signal?.throwIfAborted();\n if (!validCogTileCoordinates(z, x, y)) throw /* alloc */ new Error('Invalid COG tile coordinates');\n const level = source.levels.get(z);\n if (!level || x + 1 <= level.x || y + 1 <= level.y || x >= level.x + level.columns || y >= level.y + level.rows) return;\n if (level.elevation) return getElevationTile(source, level, x, y, signal);\n return getColorTile(source, level, x, y, signal);\n}\n", "/**\n * Return the synthesized archive header for a COG source.\n *\n * @param {Object} source Open COG source.\n *\n * @returns {Object} Source header.\n */\nexport function getCogHeader(source) {\n return source.header;\n}\n", "/**\n * Archive header offset, length and tile count field names in encoded order.\n *\n * @type {Array<string>}\n */\nexport const headerOffsets = [\n 'rootDirectoryOffset', 'rootDirectoryLength', 'jsonMetadataOffset', 'jsonMetadataLength',\n 'leafDirectoryOffset', 'leafDirectoryLength', 'tileDataOffset', 'tileDataLength',\n 'numAddressedTiles', 'numTileEntries', 'numTileContents',\n];\n", "/**\n * Archive header byte field names in encoded order.\n *\n * @type {Array<string>}\n */\nexport const headerFlags = ['clustered', 'internalCompression', 'tileCompression', 'tileType', 'minZoom', 'maxZoom'];\n", "/**\n * Archive header bounds field names in encoded order.\n *\n * @type {Array<string>}\n */\nexport const headerBounds = ['minLon', 'minLat', 'maxLon', 'maxLat'];\n", "import { headerOffsets } from '../globals/headerOffsets.js';\nimport { headerFlags } from '../globals/headerFlags.js';\nimport { headerBounds } from '../globals/headerBounds.js';\n\n/**\n * Decode the PMTiles v3 header.\n *\n * @param {ArrayBuffer} data Header bytes.\n *\n * @returns {Object} Archive offsets, flags, bounds and center.\n *\n * @throws {Error} If the header is too short or not PMTiles version 3.\n */\nexport function decodeHeader(data) {\n const view = data.byteLength >= 127\n ? /* alloc */ new DataView(data) : null;\n // \"PMTiles\" followed by version 3, read as two little-endian words.\n if (!view || view.getUint32(0, true) !== 0x69544d50 || view.getUint32(4, true) !== 0x0373656c) {\n throw /* alloc */ new Error('Expected a PMTiles v3 archive');\n }\n const header = /* alloc */ {};\n let i;\n for (i = 0; i < headerOffsets.length; i++) header[headerOffsets[i]] = Number(view.getBigUint64(8 + i * 8, true));\n for (i = 0; i < headerFlags.length; i++) header[headerFlags[i]] = view.getUint8(96 + i);\n for (i = 0; i < headerBounds.length; i++) header[headerBounds[i]] = view.getInt32(102 + i * 4, true) / 1e7;\n header.centerZoom = view.getUint8(118);\n header.centerLon = view.getInt32(119, true) / 1e7;\n header.centerLat = view.getInt32(123, true) / 1e7;\n return header;\n}\n", "/**\n * Validate the PMTiles header and bounds for a COG asset container.\n *\n * @param {Object} container Container source with known size.\n * @param {Object} header Decoded PMTiles header.\n *\n * @throws {Error} If the container metadata or tile data range is invalid.\n */\nexport function validateCogContainer(container, header) {\n if (header.tileType !== 0 || header.tileCompression !== 1 ||\n !Number.isSafeInteger(header.jsonMetadataOffset) || !Number.isSafeInteger(header.jsonMetadataLength) ||\n header.jsonMetadataLength <= 0 || header.jsonMetadataLength > 1048576 ||\n !Number.isSafeInteger(header.tileDataOffset) || !Number.isSafeInteger(header.tileDataLength) ||\n header.tileDataOffset < 127 || header.tileDataOffset + header.tileDataLength > container.size) {\n throw /* alloc */ new Error('Invalid PMTiles COG asset container');\n }\n}\n", "/**\n * Return uncompressed data or decompress gzip data.\n *\n * @param {ArrayBuffer} data Archive data.\n * @param {number} compression PMTiles compression code.\n *\n * @returns {Promise<ArrayBuffer>} Uncompressed bytes.\n *\n * @throws {Error} If the compression code is unsupported.\n */\nexport async function decompress(data, compression) {\n if (compression === 1) return data;\n if (compression !== 2) {\n throw /* alloc */ new Error(`Unsupported PMTiles compression: ${compression}`);\n }\n const blob = /* alloc */ new Blob(\n /* alloc */ [data]);\n const stream = /* alloc */ new DecompressionStream('gzip');\n return /* alloc */ new Response(blob.stream().pipeThrough(stream)).arrayBuffer();\n}\n", "import { decompress } from '../archives/decompress.js';\nimport { readCog } from './readCog.js';\n\n/**\n * Read and validate a named COG asset entry from PMTiles metadata.\n *\n * @param {Object} container Container byte source.\n * @param {Object} header Decoded PMTiles header.\n * @param {string} asset Asset name.\n *\n * @returns {Promise<Object>} Validated asset entry.\n *\n * @throws {Error} If metadata does not contain a valid bounded asset.\n */\nexport async function getCogAssetEntry(container, header, asset) {\n const metadata = JSON.parse(/* alloc */ new TextDecoder().decode(await decompress(\n await readCog(container, header.jsonMetadataOffset, header.jsonMetadataLength), header.internalCompression)));\n const assets = metadata.cog_assets || /* alloc */ {};\n const entry = Object.hasOwn(assets, asset) ? metadata.cog_assets[asset] : null;\n if (metadata.format !== 'cog-assets-v1' || !entry || !Number.isSafeInteger(entry.offset) ||\n !Number.isSafeInteger(entry.length) || entry.offset < 0 || entry.length < 8 ||\n entry.offset + entry.length > header.tileDataLength) {\n throw /* alloc */ new Error(`Invalid or missing PMTiles COG asset: ${asset}`);\n }\n return entry;\n}\n", "import { decodeHeader } from '../archives/decodeHeader.js';\nimport { readCog } from './readCog.js';\nimport { validateCogContainer } from './validateCogContainer.js';\nimport { getCogAssetEntry } from './getCogAssetEntry.js';\n\n/**\n * Open a named COG asset within a PMTiles container as a bounded byte source.\n *\n * @param {string} url Container URL.\n * @param {string} asset Asset name.\n *\n * @returns {Promise<Object>} COG source with container offset and size.\n */\nexport async function openCogAsset(url, asset) {\n const container = /* alloc */ { url };\n const header = decodeHeader(await readCog(container, 0, 127));\n validateCogContainer(container, header);\n const entry = await getCogAssetEntry(container, header, asset);\n const baseOffset = header.tileDataOffset + entry.offset;\n return /* alloc */ { url, baseOffset, size: entry.length, containerSize: container.size,\n etag: container.etag, full: container.full?.slice(baseOffset, baseOffset + entry.length) };\n}\n", "import { readCog } from './readCog.js';\nimport { readCogDirectories } from './readCogDirectories.js';\nimport { getCogTile } from './getCogTile.js';\nimport { getCogHeader } from './getCogHeader.js';\nimport { openCogAsset } from './openCogAsset.js';\n\n/**\n * Open an EPSG:3857 COG, standalone or as a named asset in a PMTiles container.\n *\n * @param {string} url COG or container URL.\n * @param {string} [asset] Named COG asset in the container.\n *\n * @returns {Promise<Object>} Archive-compatible header and XYZ tile methods.\n *\n * @throws {Error} If TIFF byte order is invalid.\n * @throws {Error} If the file is not classic TIFF.\n */\nexport async function openCog(url, asset) {\n const source = asset === undefined ? /* alloc */ { url } : await openCogAsset(url, asset);\n source.levels = /* alloc */ new Map();\n const header = /* alloc */ new DataView(await readCog(source, 0, 8));\n const order = header.getUint16(0);\n if (order !== 0x4949 && order !== 0x4d4d) throw /* alloc */ new Error('Invalid TIFF byte order');\n source.little = order === 0x4949;\n if (header.getUint16(2, source.little) !== 42) throw /* alloc */ new Error('Expected classic TIFF (BigTIFF is not supported)');\n const { base, minZoom, maxZoom } = await readCogDirectories(source, header.getUint32(4, source.little));\n const half = 20037508.342789244;\n const left = base.left + base.resolution / 2, right = base.left + (base.width - 0.5) * base.resolution;\n const top = base.top - base.resolution / 2, bottom = base.top - (base.height - 0.5) * base.resolution;\n source.header = /* alloc */ {\n minZoom, maxZoom, tileType: base.elevation ? 0 : 2,\n minLon: left / half * 180, maxLon: right / half * 180,\n minLat: Math.atan(Math.sinh(bottom / half * Math.PI)) * 180 / Math.PI,\n maxLat: Math.atan(Math.sinh(top / half * Math.PI)) * 180 / Math.PI,\n };\n return /* alloc */ {\n getHeader: getCogHeader.bind(null, source),\n getZxy: getCogTile.bind(null, source),\n };\n}\n", "/**\n * Worker-local cache of open COG sources keyed by URL and asset.\n *\n * @type {Map}\n */\nexport const workerCogSource = new Map();\n", "import { openCog } from '../cog/openCog.js';\nimport { workerCogSource } from '../globals/workerCogSource.js';\n\n/**\n * Read a COG header or tile in the worker, transferring result buffers or reporting the error.\n *\n * @param {MessageEvent} event Request containing the COG URL, asset and optional tile coordinates.\n *\n * @returns {Promise<void>} Resolves after the response is posted.\n */\nexport async function onCogMessage({ data }) {\n try {\n const key = JSON.stringify(/* alloc */ [data.url, data.asset]);\n if (!workerCogSource.has(key)) {\n workerCogSource.set(key, openCog(data.url, data.asset));\n if (workerCogSource.size > 4) workerCogSource.delete(workerCogSource.keys().next().value);\n }\n const archive = await workerCogSource.get(key);\n const result = data.z === undefined ? await archive.getHeader() : await archive.getZxy(data.z, data.x, data.y);\n const transfers = /* alloc */ [];\n if (result?.data) transfers.push(result.data);\n if (result?.image) transfers.push(result.image);\n self.postMessage(result, transfers);\n } catch (error) {\n self.postMessage(/* alloc */ { error: /* alloc */ { name: error.name, message: error.message } });\n }\n}\n", "/**\n * Reusable text decoder for model data.\n *\n * @type {TextDecoder}\n */\nexport const geometryDecoder = new TextDecoder();\n", "/**\n * Check whether any mesh uses morph targets or a non-triangle primitive mode.\n *\n * @param {Array<Object>} meshes glTF meshes, if present.\n *\n * @returns {boolean} Whether unsupported primitives were found.\n */\nexport function hasUnsupportedPrimitives(meshes) {\n if (!meshes) return false;\n let mesh, primitive;\n for (mesh of meshes) {\n for (primitive of mesh.primitives) {\n if (primitive.targets || (primitive.mode !== undefined && primitive.mode !== 4)) return true;\n }\n }\n return false;\n}\n", "import { geometryDecoder } from '../globals/geometryDecoder.js';\nimport { hasUnsupportedPrimitives } from './hasUnsupportedPrimitives.js';\n\n/**\n * Decode a static glTF JSON document or GLB v2 container.\n *\n * @param {ArrayBuffer} data Encoded glTF or GLB data.\n *\n * @returns {Object} Decoded glTF document.\n *\n * @throws {Error} If the GLB header is invalid.\n * @throws {Error} If a GLB chunk header is truncated.\n * @throws {Error} If GLB chunk data is truncated.\n * @throws {Error} If the GLB JSON chunk is missing.\n * @throws {Error} If the model uses unsupported glTF features.\n */\nexport function decodeModel(data) {\n const view = /* alloc */ new DataView(data);\n const decoder = geometryDecoder;\n let description;\n let offset, length, type, chunk;\n if (view.getUint32(0, true) === 0x46546c67) {\n // Decode GLB v2 chunks; unknown types are skipped.\n if (view.getUint32(4, true) !== 2 || view.getUint32(8, true) !== data.byteLength) {\n throw /* alloc */ new Error('Invalid GLB header');\n }\n let binary;\n for (offset = 12; offset < data.byteLength;) {\n if (offset + 8 > data.byteLength) {\n throw /* alloc */ new Error('Truncated GLB chunk');\n }\n length = view.getUint32(offset, true), type = view.getUint32(offset + 4, true);\n offset += 8;\n if (offset + length > data.byteLength) {\n throw /* alloc */ new Error('Truncated GLB data');\n }\n chunk = data.slice(offset, offset + length);\n if (type === 0x4e4f534a) {\n description = JSON.parse(decoder.decode(chunk));\n }\n if (type === 0x004e4942) {\n binary = chunk;\n }\n offset += length;\n }\n if (!description) {\n throw /* alloc */ new Error('Missing GLB JSON');\n }\n if (binary) {\n description.buffers[0].binary = binary;\n }\n } else {\n description = JSON.parse(decoder.decode(data));\n }\n if (description.skins?.length || description.animations?.length || description.extensionsRequired?.length || hasUnsupportedPrimitives(description.meshes)) {\n throw /* alloc */ new Error('Layer3D supports static triangle glTF models without required extensions');\n }\n return description;\n}\n", "/**\n * Fetch a glTF buffer into its binary property unless already loaded.\n *\n * @param {Object} buffer Buffer description and URI.\n * @param {string} directory Base URL for the buffer URI.\n *\n * @returns {Promise<void>} Completion of the buffer load.\n *\n * @throws {Error} If the buffer response is not successful.\n */\nexport async function loadBuffer(buffer, directory) {\n if (buffer.binary) return;\n const response = await fetch(/* alloc */ new URL(buffer.uri, directory).href);\n if (!response.ok) throw /* alloc */ new Error(`Unable to load model buffer: HTTP ${response.status}`);\n buffer.binary = await response.arrayBuffer();\n}\n", "/**\n * Model image decoding options preserving unpremultiplied and unconverted colors.\n *\n * @type {Object}\n */\nexport const geometryImageOptions = {\n premultiplyAlpha: 'none',\n colorSpaceConversion: 'none'\n};\n", "import { geometryImageOptions } from '../globals/geometryImageOptions.js';\n\n/**\n * Load a glTF image from a buffer view or URI as an unpremultiplied image bitmap.\n *\n * @param {Object} description Decoded glTF document with loaded buffers.\n * @param {string} directory Base URL for external image URIs.\n * @param {Object} image glTF image specification.\n *\n * @returns {Promise<ImageBitmap>} Decoded image.\n *\n * @throws {Error} If an external image response is not successful.\n */\nexport async function loadImage(description, directory, image) {\n let blob;\n if (image.bufferView !== undefined) {\n const view = description.bufferViews[image.bufferView];\n const buffer = description.buffers[view.buffer].binary;\n blob = /* alloc */ new Blob(\n /* alloc */ [buffer.slice(view.byteOffset || 0, (view.byteOffset || 0) + view.byteLength)],\n /* alloc */ { type: image.mimeType });\n } else {\n const response = await fetch(/* alloc */ new URL(image.uri, directory).href);\n if (!response.ok) throw /* alloc */ new Error(`Unable to load model texture: HTTP ${response.status}`);\n blob = await response.blob();\n }\n // Preserve straight alpha and raw samples; GPU sRGB formats do color decoding.\n return createImageBitmap(blob, geometryImageOptions);\n}\n", "import { geometryEmpty } from '../globals/geometryEmpty.js';\nimport { loadBuffer } from './loadBuffer.js';\nimport { loadImage } from '../textures/loadModelImage.js';\n\n/**\n * Load the buffers and images referenced by a decoded glTF document.\n *\n * @param {Object} description Decoded glTF document.\n * @param {string} directory Base URL for resource URIs.\n *\n * @returns {Promise<Array>} Loaded images.\n */\nexport async function loadModelResources(description, directory) {\n const bufferRequests = /* alloc */ [];\n let buffer;\n for (buffer of description.buffers || geometryEmpty) bufferRequests.push(loadBuffer(buffer, directory));\n await Promise.all(bufferRequests);\n const imageRequests = /* alloc */ [];\n let image;\n for (image of description.images || geometryEmpty) imageRequests.push(loadImage(description, directory, image));\n return Promise.all(imageRequests);\n}\n", "/**\n * Mapping from glTF attribute semantics to internal geometry attribute names.\n *\n * @type {Array<Array<string>>}\n */\nexport const geometrySemantics = [\n ['POSITION', 'position'],\n ['NORMAL', 'normal'],\n ['TEXCOORD_0', 'uv']\n];\n", "/**\n * Typed array constructors indexed by glTF accessor component type.\n *\n * @type {Object<number, Function>}\n */\nexport const types = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array,\n};\n", "/**\n * Component counts for supported glTF accessor types.\n *\n * @type {Object<string, number>}\n */\nexport const sizes = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4\n};\n", "/**\n * Read one glTF accessor component from a data view using little-endian byte order.\n *\n * @param {DataView} input View containing the component.\n * @param {TypedArrayConstructor} Type Component array constructor.\n * @param {number} at Byte offset in the view.\n *\n * @returns {number} Decoded component.\n */\nexport function readAccessorValue(input, Type, at) {\n return Type === Int8Array ? input.getInt8(at) :\n Type === Uint8Array ? input.getUint8(at) :\n Type === Int16Array ? input.getInt16(at, true) :\n Type === Uint16Array ? input.getUint16(at, true) :\n Type === Uint32Array ? input.getUint32(at, true) : input.getFloat32(at, true);\n}\n", "import { readAccessorValue } from './readAccessorValue.js';\n\n/**\n * Copy packed or strided accessor components into an output array, optionally at sparse indices.\n *\n * @param {Object} description Decoded glTF document with loaded buffers.\n * @param {TypedArrayConstructor} Type Component array constructor.\n * @param {number} size Components per element.\n * @param {TypedArray} data Destination array.\n * @param {number} accessorCount Number of elements in the destination accessor.\n * @param {TypedArray|null} indices Sparse destination indices, or null for sequential output.\n * @param {number} viewIndex Index of the source buffer view.\n * @param {number} offset Byte offset within the buffer view.\n * @param {number} count Number of source elements.\n * @param {number} stride Byte stride between source elements, or zero for packed data.\n *\n * @throws {Error} If data falls outside the buffer view.\n * @throws {Error} If a sparse index is invalid.\n */\nexport function readAccessorValues(description, Type, size, data, accessorCount, indices, viewIndex, offset, count, stride) {\n const view = description.bufferViews[viewIndex], bytes = Type.BYTES_PER_ELEMENT;\n const buffer = description.buffers[view.buffer].binary;\n stride ||= size * bytes;\n if (!buffer || stride < size * bytes || offset < 0 ||\n (view.byteOffset || 0) + view.byteLength > buffer.byteLength ||\n (count - 1) * stride + size * bytes + offset > view.byteLength) throw /* alloc */ new Error('glTF accessor outside buffer view');\n const input = /* alloc */ new DataView(buffer);\n let i, j, at, output;\n for (i = 0; i < count; i++) {\n output = indices ? indices[i] : i;\n if (indices && output >= accessorCount) throw /* alloc */ new Error('Invalid sparse glTF index');\n for (j = 0; j < size; j++) {\n at = (view.byteOffset || 0) + offset + i * stride + j * bytes;\n data[output * size + j] = readAccessorValue(input, Type, at);\n }\n }\n}\n", "import { types } from '../globals/types.js';\nimport { readAccessorValues } from './readAccessorValues.js';\n\n/**\n * Apply sparse glTF accessor values to an existing component array.\n *\n * @param {Object} description Decoded glTF document with loaded buffers.\n * @param {Object} spec glTF accessor specification.\n * @param {TypedArrayConstructor} Type Component array constructor.\n * @param {number} size Components per element.\n * @param {TypedArray} data Destination array to update.\n *\n * @throws {Error} If the sparse index type is invalid.\n * @throws {Error} If the sparse index count or range is invalid.\n */\nexport function readSparseAccessor(description, spec, Type, size, data) {\n const sparse = spec.sparse, Index = types[sparse.indices.componentType];\n if (Index !== Uint8Array && Index !== Uint16Array && Index !== Uint32Array) {\n throw /* alloc */ new Error('Invalid sparse glTF indices');\n }\n const view = description.bufferViews[sparse.indices.bufferView];\n const offset = (view.byteOffset || 0) + (sparse.indices.byteOffset || 0);\n if (sparse.count > spec.count ||\n (sparse.indices.byteOffset || 0) + sparse.count * Index.BYTES_PER_ELEMENT > view.byteLength) {\n throw /* alloc */ new Error('Invalid sparse glTF indices');\n }\n const indices = /* alloc */ new Index(description.buffers[view.buffer].binary.slice(\n offset, offset + sparse.count * Index.BYTES_PER_ELEMENT));\n readAccessorValues(description, Type, size, data, spec.count, indices, sparse.values.bufferView,\n sparse.values.byteOffset || 0, sparse.count, 0);\n}\n", "/**\n * Convert integer accessor data to floats, applying glTF normalization when requested.\n *\n * @param {Object} spec glTF accessor specification.\n * @param {TypedArrayConstructor} Type Integer component array constructor.\n * @param {TypedArray} data Raw accessor components.\n * @param {number} size Components per element.\n *\n * @returns {Object} Float data, element size and original integer data.\n */\nexport function normalizeAccessor(spec, Type, data, size) {\n const normalized = /* alloc */ new Float32Array(data.length);\n let i;\n for (i = 0; i < data.length; i++) {\n normalized[i] = spec.normalized\n ? Math.max(-1, data[i] / (Type === Int8Array ? 127 : Type === Int16Array ? 32767 :\n Type === Uint8Array ? 255 : Type === Uint32Array ? 4294967295 : 65535))\n : data[i];\n }\n return /* alloc */ { data: normalized, size, indices: data };\n}\n", "import { types } from '../globals/types.js';\nimport { sizes } from '../globals/sizes.js';\nimport { readAccessorValues } from './readAccessorValues.js';\nimport { readSparseAccessor } from './readSparseAccessor.js';\nimport { normalizeAccessor } from './normalizeAccessor.js';\n\n/**\n * Decode packed, interleaved, normalized or sparse glTF accessor data.\n *\n * @param {Object} description Decoded glTF document with loaded buffers.\n * @param {number} index Accessor index.\n *\n * @returns {Object} Component data and size, plus original integer data when applicable.\n *\n * @throws {Error} If the accessor component type, shape or count is invalid.\n */\nexport function readAccessor(description, index) {\n const spec = description.accessors[index], Type = types[spec.componentType], size = sizes[spec.type];\n if (!Type || !size || !Number.isInteger(spec.count) || spec.count < 0) {\n throw /* alloc */ new Error('Invalid glTF accessor');\n }\n const data = /* alloc */ new Type(spec.count * size);\n if (spec.bufferView !== undefined) {\n readAccessorValues(\n description, Type, size, data, spec.count, null,\n spec.bufferView,\n spec.byteOffset || 0,\n spec.count,\n description.bufferViews[spec.bufferView].byteStride\n );\n }\n if (spec.sparse) {\n readSparseAccessor(description, spec, Type, size, data);\n }\n if (spec.componentType === 5126) {\n return /* alloc */ { data, size };\n }\n return normalizeAccessor(spec, Type, data, size);\n}\n", "import { geometrySemantics } from '../globals/geometrySemantics.js';\nimport { readAccessor } from './readAccessor.js';\n\n/**\n * Read supported primitive attributes and validate their vertex counts.\n *\n * @param {Object} description Decoded glTF document.\n * @param {Object} primitive glTF mesh primitive.\n *\n * @returns {Object} Attribute map and vertex count.\n *\n * @throws {Error} If positions are missing.\n * @throws {Error} If the position size or vertex count is invalid.\n * @throws {Error} If attribute vertex counts differ.\n */\nexport function readModelAttributes(description, primitive) {\n const attributes = /* alloc */ {};\n let semantic, name;\n for ([semantic, name] of geometrySemantics) {\n if (primitive.attributes[semantic] !== undefined) {\n attributes[name] = readAccessor(description, primitive.attributes[semantic]);\n }\n }\n if (!attributes.position) throw /* alloc */ new Error('glTF mesh has no positions');\n const vertexCount = attributes.position.data.length / 3;\n if (attributes.position.size !== 3 || vertexCount < 3) throw /* alloc */ new Error('Invalid glTF vertex attributes');\n let attribute;\n for (attribute of Object.values(attributes)) {\n if (attribute.data.length / attribute.size !== vertexCount) throw /* alloc */ new Error('Invalid glTF vertex attributes');\n }\n return /* alloc */ { attributes, vertexCount };\n}\n", "import { readAccessor } from './readAccessor.js';\n\n/**\n * Read and validate triangle indices, or validate an unindexed triangle list.\n *\n * @param {Object} description Decoded glTF document.\n * @param {Object} primitive glTF mesh primitive.\n * @param {Object} attributes Destination attribute map.\n * @param {number} vertexCount Number of vertices.\n *\n * @throws {Error} If the index type, size or count is invalid.\n * @throws {Error} If an index is outside the vertex range.\n * @throws {Error} If the unindexed triangle list is incomplete.\n */\nexport function readModelIndices(description, primitive, attributes, vertexCount) {\n if (primitive.indices !== undefined) {\n const index = readAccessor(description, primitive.indices);\n attributes.index = /* alloc */ { size: 1, data: index.indices };\n if (!(index.indices instanceof Uint8Array || index.indices instanceof Uint16Array ||\n index.indices instanceof Uint32Array) || index.size !== 1 || index.indices.length % 3) {\n throw /* alloc */ new Error('Invalid glTF triangle indices');\n }\n let value;\n for (value of index.indices) if (value >= vertexCount) throw /* alloc */ new Error('Invalid glTF triangle indices');\n } else if (vertexCount % 3) {\n throw /* alloc */ new Error('Incomplete glTF triangle');\n }\n}\n", "/**\n * Compute area-weighted vertex normals for indexed or non-indexed triangles.\n *\n * @param {ArrayLike<number>} p Flat vertex positions.\n * @param {ArrayLike<number>} [indices] Optional triangle vertex indices.\n *\n * @returns {Float32Array} Normalized vertex normals.\n */\nexport function vertexNormals(p, indices) {\n // Accumulate area-weighted face normals for shared vertices, then normalize.\n const normals = /* alloc */ new Float32Array(p.length);\n let i, a, b, c, ux, uy, uz, vx, vy, vz, j, nx, ny, nz, index, length;\n for (i = 0; i < (indices?.length || p.length / 3); i += 3) {\n a = indices ? indices[i] : i, b = indices ? indices[i + 1] : i + 1, c = indices ? indices[i + 2] : i + 2;\n ux = p[b * 3] - p[a * 3], uy = p[b * 3 + 1] - p[a * 3 + 1], uz = p[b * 3 + 2] - p[a * 3 + 2];\n vx = p[c * 3] - p[a * 3], vy = p[c * 3 + 1] - p[a * 3 + 1], vz = p[c * 3 + 2] - p[a * 3 + 2];\n nx = uy * vz - uz * vy, ny = uz * vx - ux * vz, nz = ux * vy - uy * vx;\n for (j = 0; j < 3; j++) {\n index = j === 0 ? a : j === 1 ? b : c;\n normals[index * 3] += nx;\n normals[index * 3 + 1] += ny;\n normals[index * 3 + 2] += nz;\n }\n }\n for (i = 0; i < normals.length; i += 3) {\n length = Math.hypot(normals[i], normals[i + 1], normals[i + 2]) || 1;\n for (j = 0; j < 3; j++) {\n normals[i + j] /= length;\n }\n }\n return normals;\n}\n", "import { readModelAttributes } from './readModelAttributes.js';\nimport { readModelIndices } from './readModelIndices.js';\nimport { vertexNormals } from '../geometry/vertexNormals.js';\n\n/**\n * Decode primitive attributes and indices, generating normals when absent.\n *\n * @param {Object} description Decoded glTF document with loaded buffers.\n * @param {Object} primitive glTF mesh primitive to prepare.\n *\n * @returns {Object} Prepared attributes, also stored on the primitive.\n */\nexport function prepareModelPrimitive(description, primitive) {\n const { attributes, vertexCount } = readModelAttributes(description, primitive);\n readModelIndices(description, primitive, attributes, vertexCount);\n if (!attributes.normal) {\n attributes.normal = /* alloc */ { size: 3,\n data: vertexNormals(attributes.position.data, attributes.index?.data) };\n }\n if (attributes.index?.data instanceof Uint8Array) {\n attributes.index.data = Uint16Array.from(attributes.index.data);\n }\n primitive.preparedAttributes = attributes;\n return attributes;\n}\n", "import { geometryEmpty } from '../globals/geometryEmpty.js';\nimport { prepareModelPrimitive } from './prepareModelPrimitive.js';\n\n/**\n * Prepare geometry for meshes reachable from the scene and collect their buffers.\n *\n * @param {Object} description Decoded glTF document with loaded buffers.\n * @param {Object} scene glTF scene containing root node indices.\n *\n * @returns {Array<ArrayBuffer>} Unique geometry buffers to transfer.\n *\n * @throws {Error} If a referenced node is invalid.\n */\nexport function prepareModelGeometry(description, scene) {\n const pending = scene.nodes.slice(), visited = /* alloc */ new Set();\n const meshes = /* alloc */ new Set(), transfers = /* alloc */ new Set();\n let index, spec, primitive, attribute, child;\n while (pending.length) {\n index = pending.pop();\n if (visited.has(index)) continue;\n visited.add(index);\n spec = description.nodes[index];\n if (!spec) throw /* alloc */ new Error('Invalid glTF node');\n if (spec.mesh !== undefined) meshes.add(spec.mesh);\n for (child of spec.children || geometryEmpty) pending.push(child);\n }\n for (index of meshes) {\n for (primitive of description.meshes[index].primitives) {\n for (attribute of Object.values(prepareModelPrimitive(description, primitive))) {\n transfers.add(attribute.data.buffer);\n }\n }\n }\n return /* alloc */ [...transfers];\n}\n", "import { decodeModel } from './decodeModel.js';\nimport { loadModelResources } from './loadModelResources.js';\nimport { prepareModelGeometry } from './prepareModelGeometry.js';\n\n/**\n * Fetch a static model and prepare its images and geometry for transfer from a worker.\n *\n * @param {string} url Model URL.\n *\n * @returns {Promise<Object>} Prepared description, images and transferables.\n *\n * @throws {Error} If the model response is not successful.\n * @throws {Error} If the glTF scene is missing.\n */\nexport async function prepareModel(url) {\n const response = await fetch(url);\n if (!response.ok) throw /* alloc */ new Error(`Unable to load model: HTTP ${response.status}`);\n const description = decodeModel(await response.arrayBuffer());\n const scene = description.scenes?.[description.scene || 0];\n if (!scene) throw /* alloc */ new Error('Missing glTF scene');\n const images = await loadModelResources(description, /* alloc */ new URL('.', url).href);\n const transfers = prepareModelGeometry(description, scene);\n let image;\n for (image of images) transfers.push(image);\n delete description.buffers;\n delete description.bufferViews;\n delete description.accessors;\n return /* alloc */ { description, images, transfers };\n}\n", "import { prepareModel } from '../models/prepareModel.js';\n\n/**\n * Prepare a model in the worker and transfer its buffers, reporting errors to the caller.\n *\n * @param {MessageEvent} event Request containing the model URL.\n *\n * @returns {Promise<void>} Resolves after the response is posted.\n */\nexport async function onModelMessage({ data }) {\n try {\n const result = await prepareModel(data.url);\n self.postMessage(/* alloc */ { description: result.description, images: result.images }, result.transfers);\n } catch (error) {\n self.postMessage(/* alloc */ { error: /* alloc */ { name: error.name, message: error.message } });\n }\n}\n", "import { assembleAreaGeometry } from '../geometry/assembleAreaGeometry.js';\nimport { onVectorTileMessage } from './vectorTileWorker.js';\nimport { onCogMessage } from './cogWorker.js';\nimport { onModelMessage } from './modelWorker.js';\n\n/**\n * Route worker requests to the appropriate source handler or assemble and transfer area geometry.\n *\n * @param {MessageEvent} event Worker request.\n */\nexport function onGeometryMessage(event) {\n if (event.data.type === 'model') {\n onModelMessage(event);\n return;\n }\n if (event.data.type === 'cog') {\n onCogMessage(event);\n return;\n }\n if (event.data.type === 'vector') {\n onVectorTileMessage(event);\n return;\n }\n try {\n const data = assembleAreaGeometry(event.data);\n const transfers = /* alloc */ [data.positions.buffer, data.normals.buffer, data.colors.buffer, data.uvs.buffer];\n if (data.instanceOffsets) transfers.push(data.instanceOffsets.buffer);\n self.postMessage(data, transfers);\n } catch (error) {\n self.postMessage(/* alloc */ { error: /* alloc */ { name: error.name, message: error.message } });\n }\n}\n\nself.addEventListener('message', onGeometryMessage);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["ring", "ring", "ring", "area", "ring", "ring", "ring", "ring", "addTriangle", "addTriangle", "addTriangle", "ring", "addTriangle", "ring", "addTriangle", "ring", "ring", "ring", "area", "ring", "ring", "area"]
|
|
7
7
|
}
|