leaflet-city-mapper 0.1.0 → 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.
Files changed (515) hide show
  1. package/README.md +1 -1
  2. package/dist/leaflet-city-mapper-src.js.map +1 -1
  3. package/dist/leaflet-city-mapper-worker-src.js.map +1 -1
  4. package/dist/leaflet-city-mapper-worker.js.map +1 -1
  5. package/dist/leaflet-city-mapper.js.map +1 -1
  6. package/libs/leaflet-lens.js +151 -151
  7. package/libs/leaflet.js +3 -3
  8. package/libs/openlayers-bindings.js +1129 -1129
  9. package/libs/openlayers-bindings.min.js.map +1 -1
  10. package/package.json +2 -4
  11. package/src/animations/cancelCameraAnimation.js +19 -19
  12. package/src/animations/mapStopPitchBearingAnimation.js +10 -10
  13. package/src/animations/scheduleCameraAnimation.js +15 -15
  14. package/src/animations/scheduleMarkerPan.js +14 -14
  15. package/src/animations/updateZoomCamera.js +25 -25
  16. package/src/archives/findDirectoryEntry.js +17 -17
  17. package/src/archives/findTile.js +45 -45
  18. package/src/archives/getDirectoryEntries.js +30 -30
  19. package/src/archives/getTileData.js +26 -26
  20. package/src/archives/readArchiveRange.js +48 -48
  21. package/src/astronomy/solarTime.js +21 -21
  22. package/src/camera/cameraMapReady.js +9 -9
  23. package/src/camera/cleanupCameraMap.js +13 -13
  24. package/src/camera/constrainCameraToBounds.js +3 -3
  25. package/src/camera/createSceneCamera.js +25 -25
  26. package/src/camera/getBearing.js +10 -10
  27. package/src/camera/getPitch.js +10 -10
  28. package/src/camera/mapGetBoundsCenterZoom.js +14 -14
  29. package/src/camera/mapLimitOffset.js +17 -17
  30. package/src/camera/mapPanBy.js +14 -14
  31. package/src/camera/setBearing.js +13 -13
  32. package/src/camera/setPitch.js +13 -13
  33. package/src/cog/decodeCogTile.js +37 -37
  34. package/src/cog/finiteCogValues.js +12 -12
  35. package/src/cog/getCogAssetEntry.js +26 -26
  36. package/src/cog/getCogBase.js +22 -22
  37. package/src/cog/getCogHeader.js +10 -10
  38. package/src/cog/getCogProfile.js +25 -25
  39. package/src/cog/getCogTile.js +25 -25
  40. package/src/cog/getColorTile.js +38 -38
  41. package/src/cog/getElevationTile.js +29 -29
  42. package/src/cog/hasCogProjection.js +16 -16
  43. package/src/cog/initCog.js +13 -13
  44. package/src/cog/invalidCogFullResponse.js +10 -10
  45. package/src/cog/openCog.js +40 -40
  46. package/src/cog/openCogAsset.js +22 -22
  47. package/src/cog/readCog.js +39 -39
  48. package/src/cog/readCogBlock.js +19 -19
  49. package/src/cog/readCogBody.js +30 -30
  50. package/src/cog/readCogDirectories.js +32 -32
  51. package/src/cog/readCogDirectory.js +34 -34
  52. package/src/cog/readCogLevel.js +36 -36
  53. package/src/cog/readCogTag.js +28 -28
  54. package/src/cog/validCogDimensions.js +15 -15
  55. package/src/cog/validCogEncoding.js +18 -18
  56. package/src/cog/validCogGeoArrays.js +17 -17
  57. package/src/cog/validCogGrid.js +22 -22
  58. package/src/cog/validCogTileCoordinates.js +13 -13
  59. package/src/cog/validateCogContainer.js +17 -17
  60. package/src/cog/validateCogContentRange.js +18 -18
  61. package/src/cog/validateCogOffsets.js +19 -19
  62. package/src/cog/validateCogRange.js +16 -16
  63. package/src/cog/validateCogResponse.js +26 -26
  64. package/src/collision/collectIntersections.js +41 -41
  65. package/src/collision/hiddenLightHit.js +19 -19
  66. package/src/collision/indexTriangle.js +18 -18
  67. package/src/collision/insideMesh.js +47 -47
  68. package/src/collision/insideWalker.js +52 -52
  69. package/src/collision/intersectMeshes.js +40 -40
  70. package/src/collision/localRay.js +31 -31
  71. package/src/collision/mergeHits.js +19 -19
  72. package/src/collision/rayBounds.js +28 -28
  73. package/src/collision/readTriangle.js +32 -32
  74. package/src/collision/trafficCollision.js +23 -23
  75. package/src/collision/transformTriangle.js +18 -18
  76. package/src/collision/triangleDistance.js +34 -34
  77. package/src/collision/vertexCount.js +11 -11
  78. package/src/collision/worldHit.js +30 -30
  79. package/src/controls/acceptPitchDrag.js +10 -10
  80. package/src/controls/acceptRotateDrag.js +9 -9
  81. package/src/controls/addCameraHandler.js +18 -18
  82. package/src/controls/adjustCameraDrag.js +13 -13
  83. package/src/controls/cameraDragContextMenu.js +12 -12
  84. package/src/controls/cameraDragEnd.js +10 -10
  85. package/src/controls/cameraDragMove.js +31 -31
  86. package/src/controls/changeCameraTouch.js +17 -17
  87. package/src/controls/compassOrientation.js +12 -12
  88. package/src/controls/compassRemoveHooks.js +2 -2
  89. package/src/controls/containerResizeRemoveHooks.js +2 -2
  90. package/src/controls/endCameraTouch.js +18 -18
  91. package/src/controls/failCompassPermission.js +10 -10
  92. package/src/controls/finishCameraDrag.js +14 -14
  93. package/src/controls/finishCompassPermission.js +24 -24
  94. package/src/controls/isEditableTarget.js +9 -9
  95. package/src/controls/loadCameraControls.js +18 -18
  96. package/src/controls/moveCameraTouch.js +34 -34
  97. package/src/controls/refreshRotateFocus.js +5 -5
  98. package/src/controls/removeCameraDrag.js +28 -28
  99. package/src/controls/resizeMap.js +7 -7
  100. package/src/controls/rotateButtonClick.js +16 -16
  101. package/src/controls/rotateButtonKeydown.js +20 -20
  102. package/src/controls/rotateControl.js +12 -12
  103. package/src/controls/shiftRotateRemoveHooks.js +2 -2
  104. package/src/controls/shiftRotateWheel.js +15 -15
  105. package/src/core/cameraMarkerOnDrag.js +16 -16
  106. package/src/core/constructLayer.js +16 -16
  107. package/src/core/extendLeafletClass.js +12 -12
  108. package/src/core/extendTerrainPixelBounds.js +41 -41
  109. package/src/core/layerAddInitHook.js +12 -12
  110. package/src/core/layerMergeOptions.js +14 -14
  111. package/src/core/markerInitInteraction.js +10 -10
  112. package/src/core/markerSetIcon.js +14 -14
  113. package/src/core/markerSetRotation.js +19 -19
  114. package/src/core/projectNativePath.js +30 -30
  115. package/src/core/redrawPath.js +11 -11
  116. package/src/core/removeLayer.js +26 -26
  117. package/src/core/setRotation.js +12 -12
  118. package/src/core/whenReady.js +14 -14
  119. package/src/geometry/addBridges.js +36 -36
  120. package/src/geometry/addGeneratedTriangle.js +10 -10
  121. package/src/geometry/appendAreaTriangle.js +32 -32
  122. package/src/geometry/appendNativeTriangle.js +17 -17
  123. package/src/geometry/appendRouteDash.js +33 -33
  124. package/src/geometry/appendRouteSegment.js +28 -28
  125. package/src/geometry/assembleAreaGeometry.js +48 -48
  126. package/src/geometry/bridgeEdge.js +18 -18
  127. package/src/geometry/bridgeFaces.js +22 -22
  128. package/src/geometry/bridgePaths.js +19 -19
  129. package/src/geometry/bridgePolygon.js +37 -37
  130. package/src/geometry/bridgeSides.js +18 -18
  131. package/src/geometry/buildProjectedPoint.js +32 -32
  132. package/src/geometry/buildProjectedPolygon.js +34 -34
  133. package/src/geometry/circleAt.js +20 -20
  134. package/src/geometry/circleGeometry.js +41 -41
  135. package/src/geometry/createModelGeometry.js +44 -44
  136. package/src/geometry/crossVector.js +15 -15
  137. package/src/geometry/dashValues.js +23 -23
  138. package/src/geometry/dashedSegment.js +33 -33
  139. package/src/geometry/diskAt.js +18 -18
  140. package/src/geometry/emitter.js +18 -18
  141. package/src/geometry/fillNativePolygon.js +28 -28
  142. package/src/geometry/generateTreeGeometry.js +18 -18
  143. package/src/geometry/indexBridge.js +36 -36
  144. package/src/geometry/instanceAreaGeometry.js +37 -37
  145. package/src/geometry/line.js +28 -28
  146. package/src/geometry/lineJoin.js +35 -35
  147. package/src/geometry/markerImageBounds.js +20 -20
  148. package/src/geometry/meshShadowBounds.js +33 -33
  149. package/src/geometry/offsetBelowGround.js +10 -10
  150. package/src/geometry/quad.js +23 -23
  151. package/src/geometry/restoreGeometry.js +29 -29
  152. package/src/geometry/roofCoverage.js +33 -33
  153. package/src/geometry/roofFootprint.js +40 -40
  154. package/src/geometry/samePoint.js +11 -11
  155. package/src/geometry/segment.js +32 -32
  156. package/src/geometry/subtractRoofTile.js +28 -28
  157. package/src/geometry/terrainBuffers.js +36 -36
  158. package/src/geometry/terrainTileGeometry.js +28 -28
  159. package/src/geometry/validateTree.js +19 -19
  160. package/src/globals/L.js +6 -6
  161. package/src/globals/cameraFov.js +8 -8
  162. package/src/globals/cogTags.js +6 -6
  163. package/src/globals/colorTexture.js +11 -11
  164. package/src/globals/cosObliquity.js +8 -8
  165. package/src/globals/degrees.js +6 -6
  166. package/src/globals/earthCirc.js +6 -6
  167. package/src/globals/geometryWorkerUrl.js +8 -8
  168. package/src/globals/halfRadians.js +6 -6
  169. package/src/globals/lampDirections.js +13 -13
  170. package/src/globals/layerControlAddItem.js +8 -8
  171. package/src/globals/leafletLayer.js +8 -8
  172. package/src/globals/lightScale.js +6 -6
  173. package/src/globals/mvtTextDecoder.js +6 -6
  174. package/src/globals/nativeScalableStyleKeys.js +6 -6
  175. package/src/globals/sinObliquity.js +8 -8
  176. package/src/globals/tau.js +6 -6
  177. package/src/globals/vectorStyleNamedColors.js +13 -13
  178. package/src/globals/vectorTileEvents.js +6 -6
  179. package/src/globals/workerCogSource.js +6 -6
  180. package/src/gpu/initializeRendererResources.js +39 -39
  181. package/src/gpu/initializeSharedRenderer.js +59 -59
  182. package/src/gpu/mountRenderer.js +25 -25
  183. package/src/layer-controls/layerControlInputId.js +18 -18
  184. package/src/layer-controls/layerCountTitle.js +16 -16
  185. package/src/layer-controls/placeEntryElement.js +29 -29
  186. package/src/layer-controls/renderLayerCount.js +28 -28
  187. package/src/lighting/visitLightCells.js +26 -26
  188. package/src/lighting/writeLightCell.js +14 -14
  189. package/src/materials/createProgramLayout.js +44 -44
  190. package/src/materials/createProgramUniforms.js +25 -25
  191. package/src/materials/modelMaterialFor.js +29 -29
  192. package/src/materials/prepareMeshCutout.js +21 -21
  193. package/src/materials/terrainRasterProgram.js +65 -65
  194. package/src/materials/validateRoofMaterial.js +17 -17
  195. package/src/models/applyModelTransform.js +18 -18
  196. package/src/models/buildModelNodes.js +24 -24
  197. package/src/models/createModelContext.js +24 -24
  198. package/src/models/loadBuffer.js +16 -16
  199. package/src/models/loadModelResources.js +22 -22
  200. package/src/models/normalizeAccessor.js +21 -21
  201. package/src/models/prepareModel.js +29 -29
  202. package/src/models/prepareModelGeometry.js +35 -35
  203. package/src/models/prepareModelPrimitive.js +25 -25
  204. package/src/models/readAccessorValue.js +16 -16
  205. package/src/models/readModelAttributes.js +32 -32
  206. package/src/models/readModelIndices.js +28 -28
  207. package/src/models/readSparseAccessor.js +31 -31
  208. package/src/models/releaseModelResources.js +15 -15
  209. package/src/mvt/addMvtCrossings.js +23 -23
  210. package/src/mvt/appendMvtBandTriangles.js +42 -42
  211. package/src/mvt/appendMvtCoordinates.js +20 -20
  212. package/src/mvt/appendMvtPolygonTriangles.js +29 -29
  213. package/src/mvt/beginMvtPath.js +19 -19
  214. package/src/mvt/closeMvtPath.js +16 -16
  215. package/src/mvt/collectMvtEdges.js +29 -29
  216. package/src/mvt/createMvtReader.js +14 -14
  217. package/src/mvt/decodeVectorTile.js +39 -39
  218. package/src/mvt/expectMvtWire.js +11 -11
  219. package/src/mvt/finishMvtPath.js +14 -14
  220. package/src/mvt/finiteMvtCoordinate.js +14 -14
  221. package/src/mvt/groupMvtPolygons.js +35 -35
  222. package/src/mvt/isMvtFallbackError.js +13 -13
  223. package/src/mvt/mergeMvtActiveEdges.js +18 -18
  224. package/src/mvt/mvtEdgeX.js +12 -12
  225. package/src/mvt/mvtPathsVertices.js +15 -15
  226. package/src/mvt/mvtPolygonPaths.js +19 -19
  227. package/src/mvt/numericMvtValue.js +11 -11
  228. package/src/mvt/readMvtFeature.js +46 -46
  229. package/src/mvt/readMvtField.js +17 -17
  230. package/src/mvt/readMvtGeometry.js +42 -42
  231. package/src/mvt/readMvtInteger.js +22 -22
  232. package/src/mvt/readMvtKnownValue.js +30 -30
  233. package/src/mvt/readMvtLayer.js +40 -40
  234. package/src/mvt/readMvtMessage.js +18 -18
  235. package/src/mvt/readMvtNumber.js +18 -18
  236. package/src/mvt/readMvtNumbers.js +18 -18
  237. package/src/mvt/readMvtString.js +14 -14
  238. package/src/mvt/readMvtValue.js +29 -29
  239. package/src/mvt/skipMvtField.js +22 -22
  240. package/src/mvt/sortMvtActiveEdges.js +20 -20
  241. package/src/mvt/sortedMvtLevels.js +29 -29
  242. package/src/mvt/takeMvtBytes.js +18 -18
  243. package/src/mvt/tessellateVectorRings.js +26 -26
  244. package/src/mvt/triangulateVectorRings.js +23 -23
  245. package/src/native/beforeNativeRender.js +21 -21
  246. package/src/native/bypassNativeEvent.js +21 -21
  247. package/src/native/canScaleNativeStyle.js +26 -26
  248. package/src/native/compareNativeHits.js +10 -10
  249. package/src/native/createNativeMesh.js +46 -46
  250. package/src/native/forwardNativeError.js +8 -8
  251. package/src/native/getGridTerrainTile.js +47 -47
  252. package/src/native/gridTerrainElevation.js +34 -34
  253. package/src/native/isCurrentNativeLayer.js +11 -11
  254. package/src/native/loadGridTerrain.js +36 -36
  255. package/src/native/nativeEventSource.js +27 -27
  256. package/src/native/nativeProgram.js +28 -28
  257. package/src/native/nativeTerrainElevation.js +27 -27
  258. package/src/native/nativeVectorGeometry.js +30 -30
  259. package/src/native/orderNativeGridLayer.js +20 -20
  260. package/src/native/prepareGridTerrainRequests.js +23 -23
  261. package/src/native/pruneNativeResources.js +25 -25
  262. package/src/native/readyNativeGPU.js +13 -13
  263. package/src/native/rejectNativeReady.js +2 -2
  264. package/src/native/removeNativeEvents.js +20 -20
  265. package/src/native/resolveNativeReady.js +2 -2
  266. package/src/native/restoreNativeEvents.js +8 -8
  267. package/src/native/retainGridTerrain.js +15 -15
  268. package/src/native/styleNativeMesh.js +20 -20
  269. package/src/native/syncGridTile.js +28 -28
  270. package/src/native/syncImageOverlay.js +13 -13
  271. package/src/native/syncNativeStrokeAnchors.js +18 -18
  272. package/src/native/syncNativeStrokeZoom.js +34 -34
  273. package/src/native/syncTerrainGridTile.js +38 -38
  274. package/src/native/terrainGridMesh.js +47 -47
  275. package/src/native/updateNativeHover.js +15 -15
  276. package/src/native/updateNativeStrokeRadius.js +14 -14
  277. package/src/picking/hitColliderCell.js +29 -29
  278. package/src/picking/validateCameraInverse.js +15 -15
  279. package/src/projections/displayContainerPoint.js +32 -32
  280. package/src/projections/projectBridgePoint.js +17 -17
  281. package/src/projections/toPoint.js +13 -13
  282. package/src/projections/transformZoomAnimationPoint.js +8 -8
  283. package/src/projections/verticalGroundY.js +14 -14
  284. package/src/raster/rasterTileRange.js +32 -32
  285. package/src/raster/retainRasterTiles.js +21 -21
  286. package/src/rendering/collectVisibleMesh.js +48 -48
  287. package/src/rendering/compareMeshDepth.js +14 -14
  288. package/src/rendering/drawPipeline.js +44 -44
  289. package/src/rendering/nativeStrokeExpansion.js +11 -11
  290. package/src/rendering/prepareFrameBuffer.js +24 -24
  291. package/src/rendering/prepareMeshUniforms.js +36 -36
  292. package/src/rendering/revealRoofMesh.js +43 -43
  293. package/src/scene/addSceneLayer.js +24 -24
  294. package/src/scene/callLayer.js +34 -34
  295. package/src/scene/createLayer.js +13 -13
  296. package/src/scene/getLocation.js +12 -12
  297. package/src/scene/isNativeLayer.js +19 -19
  298. package/src/scene/removeSceneLayer.js +22 -22
  299. package/src/scene/reportLayerError.js +9 -9
  300. package/src/shaders/materialBaseShader.js +26 -26
  301. package/src/shaders/materialSurfaceShader.js +60 -60
  302. package/src/shaders/materialVertexShader.js +89 -89
  303. package/src/shaders/nativeStrokeShader.js +13 -13
  304. package/src/shaders/roofVertexShader.js +16 -16
  305. package/src/shadows/shadowMeshMatches.js +19 -19
  306. package/src/sources/buildAreaFeatures.js +23 -23
  307. package/src/sources/extrusionStyle.js +21 -21
  308. package/src/sources/featureAnchor.js +21 -21
  309. package/src/sources/groundOffset.js +9 -9
  310. package/src/sources/initVectorTiles.js +21 -21
  311. package/src/sources/isVectorTileSource.js +11 -11
  312. package/src/sources/matchesAreaTile.js +17 -17
  313. package/src/sources/pendingSourceAreas.js +28 -28
  314. package/src/sources/prepareAreaGeometryJob.js +34 -34
  315. package/src/sources/projectAreaPolygons.js +25 -25
  316. package/src/sources/readyVectorTiles.js +17 -17
  317. package/src/sunlight/addTimeControlToMap.js +18 -18
  318. package/src/sunlight/addTimeLayer.js +12 -12
  319. package/src/sunlight/initializeTimeControl.js +18 -18
  320. package/src/sunlight/onAddSun.js +37 -37
  321. package/src/sunlight/onAddTimeControl.js +12 -12
  322. package/src/sunlight/onRemoveSun.js +10 -10
  323. package/src/sunlight/removeSun.js +25 -25
  324. package/src/sunlight/removeTimeControl.js +14 -14
  325. package/src/sunlight/removeTimeLayer.js +11 -11
  326. package/src/sunlight/requestSunlightRender.js +12 -12
  327. package/src/sunlight/styleTimeControl.js +13 -13
  328. package/src/sunlight/tickSun.js +10 -10
  329. package/src/sunlight/updateCelestialDisc.js +23 -23
  330. package/src/sunlight/updateSun.js +44 -44
  331. package/src/sunlight/useLiveTime.js +11 -11
  332. package/src/sunlight/useSelectedTime.js +26 -26
  333. package/src/terrain/applyTerrain.js +30 -30
  334. package/src/terrain/copyTerrainTile.js +20 -20
  335. package/src/terrain/loadReadyTerrain.js +6 -6
  336. package/src/terrain/mapElevationOf.js +19 -19
  337. package/src/terrain/readBridges.js +13 -13
  338. package/src/terrain/readyTerrainOf.js +14 -14
  339. package/src/terrain/sampleTerrainTile.js +16 -16
  340. package/src/terrain/terrainTileQueue.js +34 -34
  341. package/src/textures/addImageState.js +13 -13
  342. package/src/textures/bindMeshTextures.js +57 -57
  343. package/src/textures/collectRoofTiles.js +23 -23
  344. package/src/textures/loadModelImage.js +29 -29
  345. package/src/textures/modelTextureFor.js +47 -47
  346. package/src/textures/prepareMeshTextures.js +31 -31
  347. package/src/textures/removeImageState.js +13 -13
  348. package/src/textures/resizeRoofTexture.js +32 -32
  349. package/src/textures/restoreMaterialTextures.js +22 -22
  350. package/src/textures/updateRoofAtlas.js +29 -29
  351. package/src/textures/uploadMeshTexture.js +32 -32
  352. package/src/textures/uploadNativeImage.js +26 -26
  353. package/src/textures/uploadRoofTile.js +29 -29
  354. package/src/traffic/createTrafficMesh.js +17 -17
  355. package/src/traffic/disposeTrafficObject.js +19 -19
  356. package/src/traffic/failTraffic.js +12 -12
  357. package/src/traffic/failedTrafficLoad.js +10 -10
  358. package/src/traffic/fetchTrafficLanes.js +21 -21
  359. package/src/traffic/loadedTrafficLanes.js +21 -21
  360. package/src/traffic/locateTraffic.js +20 -20
  361. package/src/traffic/moveTraffic.js +21 -21
  362. package/src/traffic/readyTraffic.js +10 -10
  363. package/src/traffic/refreshTrafficTrips.js +42 -42
  364. package/src/traffic/routeColor.js +13 -13
  365. package/src/traffic/startTraffic.js +12 -12
  366. package/src/traffic/trafficNow.js +15 -15
  367. package/src/traffic/trafficStatusText.js +13 -13
  368. package/src/traffic/trafficStorage.js +13 -13
  369. package/src/traffic/updateTraffic.js +13 -13
  370. package/src/traffic/updateTrafficLights.js +23 -23
  371. package/src/traffic/updateTrafficPose.js +15 -15
  372. package/src/traffic/updateTrafficTerrain.js +15 -15
  373. package/src/traffic/uploadTrafficLanes.js +27 -27
  374. package/src/transforms/composeLocalTransform.js +23 -23
  375. package/src/transforms/transformNativePoint.js +19 -19
  376. package/src/transforms/worldMatrixChanged.js +26 -26
  377. package/src/triangulation/clipEars.js +32 -32
  378. package/src/triangulation/connectHole.js +30 -30
  379. package/src/triangulation/cross.js +12 -12
  380. package/src/triangulation/equal.js +11 -11
  381. package/src/triangulation/intersects.js +21 -21
  382. package/src/triangulation/mergeHoles.js +19 -19
  383. package/src/triangulation/on.js +13 -13
  384. package/src/triangulation/polygonRings.js +22 -22
  385. package/src/triangulation/validateArea.js +19 -19
  386. package/src/utils/compareDistance.js +11 -11
  387. package/src/utils/yieldTask.js +12 -12
  388. package/src/vector-style/appendQuotedStyleCharacter.js +30 -30
  389. package/src/vector-style/arrayContainsRange.js +18 -18
  390. package/src/vector-style/evaluateBoolean.js +31 -31
  391. package/src/vector-style/evaluateCoalesceOrCase.js +34 -34
  392. package/src/vector-style/evaluateComparison.js +29 -29
  393. package/src/vector-style/evaluateIExpression.js +21 -21
  394. package/src/vector-style/evaluateInput.js +16 -16
  395. package/src/vector-style/evaluateInterpolate.js +36 -36
  396. package/src/vector-style/evaluateMatch.js +21 -21
  397. package/src/vector-style/evaluateMath.js +26 -26
  398. package/src/vector-style/evaluateMembership.js +29 -29
  399. package/src/vector-style/evaluateNegation.js +26 -26
  400. package/src/vector-style/evaluatePrimitive.js +21 -21
  401. package/src/vector-style/evaluateStep.js +20 -20
  402. package/src/vector-style/evaluateStyle.js +43 -43
  403. package/src/vector-style/evaluateToExpression.js +27 -27
  404. package/src/vector-style/fillVectorPaint.js +26 -26
  405. package/src/vector-style/lineVectorPaint.js +31 -31
  406. package/src/vector-style/parseFunctionalColor.js +23 -23
  407. package/src/vector-style/parseHexColor.js +20 -20
  408. package/src/vector-style/parseVectorStyle.js +20 -20
  409. package/src/vector-style/readPaintValue.js +17 -17
  410. package/src/vector-style/removeTrailingCommas.js +19 -19
  411. package/src/vector-style/scaleDashArray.js +25 -25
  412. package/src/vector-style/skipStyleComment.js +20 -20
  413. package/src/vector-style/stripStyleComments.js +28 -28
  414. package/src/vector-style/styleColor.js +18 -18
  415. package/src/vector-style/validateVectorLayers.js +18 -18
  416. package/src/vector-style/vectorPaint.js +17 -17
  417. package/src/vector-style/visibleStyle.js +16 -16
  418. package/src/vector-tiles/appendVectorBatch.js +34 -34
  419. package/src/vector-tiles/attachVectorTileBatch.js +25 -25
  420. package/src/vector-tiles/attachVectorTileBatches.js +26 -26
  421. package/src/vector-tiles/compareVectorLabelPriority.js +11 -11
  422. package/src/vector-tiles/compareVectorTileDistance.js +11 -11
  423. package/src/vector-tiles/createVectorLabel.js +37 -37
  424. package/src/vector-tiles/forwardVectorTileError.js +10 -10
  425. package/src/vector-tiles/loadVectorSprite.js +14 -14
  426. package/src/vector-tiles/loadVectorTile.js +45 -45
  427. package/src/vector-tiles/onVectorTileAdd.js +44 -44
  428. package/src/vector-tiles/onVectorTileMessage.js +15 -15
  429. package/src/vector-tiles/onVectorTileRemove.js +25 -25
  430. package/src/vector-tiles/onVectorTileWorkerError.js +16 -16
  431. package/src/vector-tiles/paintVectorTileBatch.js +18 -18
  432. package/src/vector-tiles/prepareVectorLabel.js +34 -34
  433. package/src/vector-tiles/prepareVectorStyleLayer.js +38 -38
  434. package/src/vector-tiles/prepareVectorTile.js +29 -29
  435. package/src/vector-tiles/projectVectorPaths.js +25 -25
  436. package/src/vector-tiles/projectVectorPoint.js +15 -15
  437. package/src/vector-tiles/projectVectorTriangles.js +28 -28
  438. package/src/vector-tiles/pruneVectorTiles.js +14 -14
  439. package/src/vector-tiles/pumpVectorTiles.js +21 -21
  440. package/src/vector-tiles/readTileJSON.js +27 -27
  441. package/src/vector-tiles/readVectorStyle.js +28 -28
  442. package/src/vector-tiles/refreshVectorTiles.js +8 -8
  443. package/src/vector-tiles/reserveVectorLabelCells.js +14 -14
  444. package/src/vector-tiles/retireVectorTileGroup.js +20 -20
  445. package/src/vector-tiles/revokeVectorWorkerUrl.js +14 -14
  446. package/src/vector-tiles/rotateVectorLabel.js +19 -19
  447. package/src/vector-tiles/rotateVectorLabels.js +9 -9
  448. package/src/vector-tiles/simplifyVectorPath.js +29 -29
  449. package/src/vector-tiles/updateVectorLabelMarker.js +36 -36
  450. package/src/vector-tiles/updateVectorLabelStyle.js +14 -14
  451. package/src/vector-tiles/updateVectorTileLabels.js +33 -33
  452. package/src/vector-tiles/updateVectorTilePaint.js +25 -25
  453. package/src/vector-tiles/updateVectorTiles.js +32 -32
  454. package/src/vector-tiles/validateVectorTileZooms.js +15 -15
  455. package/src/vector-tiles/vectorFeaturePaint.js +25 -25
  456. package/src/vector-tiles/vectorFeaturePaths.js +26 -26
  457. package/src/vector-tiles/vectorFeatureZoom.js +18 -18
  458. package/src/vector-tiles/vectorLabelAnchors.js +31 -31
  459. package/src/vector-tiles/vectorLabelCandidates.js +18 -18
  460. package/src/vector-tiles/vectorLabelCells.js +32 -32
  461. package/src/vector-tiles/vectorLabelIcon.js +38 -38
  462. package/src/vector-tiles/vectorLabelProperty.js +12 -12
  463. package/src/vector-tiles/vectorLabelText.js +19 -19
  464. package/src/vector-tiles/vectorSpriteIcon.js +19 -19
  465. package/src/vector-tiles/vectorStraightRun.js +23 -23
  466. package/src/vector-tiles/vectorStyleDependencies.js +22 -22
  467. package/src/vector-tiles/vectorStyleValue.js +16 -16
  468. package/src/vector-tiles/vectorStyleZoom.js +12 -12
  469. package/src/vector-tiles/vectorTileAwaited.js +17 -17
  470. package/src/vector-tiles/vectorTileOverlaps.js +12 -12
  471. package/src/vector-tiles/vectorTilePaint.js +18 -18
  472. package/src/vector-tiles/vectorTileSettings.js +27 -27
  473. package/src/vector-tiles/vectorTilesIdle.js +11 -11
  474. package/src/vector-tiles/vectorTolerance.js +11 -11
  475. package/src/vector-tiles/wrapVectorLabel.js +17 -17
  476. package/src/vehicles/boatModel.js +35 -35
  477. package/src/vehicles/busModel.js +13 -13
  478. package/src/vehicles/carModel.js +39 -39
  479. package/src/walk/initializeWalkControl.js +12 -12
  480. package/src/walk/isWalkBlocked.js +15 -15
  481. package/src/walk/landWalker.js +41 -41
  482. package/src/walk/moveWalker.js +37 -37
  483. package/src/walk/onAddWalkControl.js +40 -40
  484. package/src/walk/onRemoveWalkControl.js +17 -17
  485. package/src/walk/onWalkBlur.js +3 -3
  486. package/src/walk/onWalkTerrain.js +3 -3
  487. package/src/walk/resolveWalkerPosition.js +33 -33
  488. package/src/walk/stepWalkerHeight.js +18 -18
  489. package/src/walk/toggleWalking.js +4 -4
  490. package/src/walk/updateWalkerFrame.js +29 -29
  491. package/src/walk/updateWalkerView.js +31 -31
  492. package/src/weakmaps/cameraHandlersByMap.js +6 -6
  493. package/src/weakmaps/geometryWorkersByMap.js +6 -6
  494. package/src/weakmaps/nativeProgramsByRenderer.js +6 -6
  495. package/src/weakmaps/pathProjectionByMap.js +6 -6
  496. package/src/weakmaps/streamTerrainByLayer.js +6 -6
  497. package/src/weakmaps/streamTerrainByMap.js +6 -6
  498. package/src/weakmaps/sunByMap.js +6 -6
  499. package/src/weakmaps/vectorTileOptionsByLayer.js +6 -6
  500. package/src/weakmaps/vectorWorkerByLayer.js +6 -6
  501. package/src/weakmaps/walkByMap.js +6 -6
  502. package/src/weakmaps/workerMapByLayer.js +6 -6
  503. package/src/workers/acquireGeometryWorker.js +39 -39
  504. package/src/workers/buildAreaInWorker.js +24 -24
  505. package/src/workers/closeGeometryWorkers.js +16 -16
  506. package/src/workers/cogWorker.js +27 -27
  507. package/src/workers/createGeometryWorker.js +30 -30
  508. package/src/workers/geometryWorker.js +34 -34
  509. package/src/workers/getCogInWorker.js +18 -18
  510. package/src/workers/modelWorker.js +17 -17
  511. package/src/workers/openCogInWorker.js +22 -22
  512. package/src/workers/runSourceWorker.js +44 -44
  513. package/src/workers/settleGeometryWorker.js +16 -16
  514. package/src/workers/startGeometryWorker.js +23 -23
  515. package/src/workers/vectorTileWorker.js +15 -15
@@ -1,13 +1,13 @@
1
- /**
2
- * Identify triangulation failures eligible for MVT tessellation fallback.
3
- *
4
- * @param {Error} error Triangulation error.
5
- *
6
- * @returns {boolean} Whether fallback is allowed.
7
- */
8
- export function isMvtFallbackError(error) {
9
- return error.message === 'Polygon triangulation area mismatch' ||
10
- error.message === 'Degenerate polygon ring' ||
11
- error.message === 'Unable to triangulate polygon: invalid or self-intersecting rings' ||
12
- error.message === 'Unable to connect polygon hole';
13
- }
1
+ /**
2
+ * Identify triangulation failures eligible for MVT tessellation fallback.
3
+ *
4
+ * @param {Error} error Triangulation error.
5
+ *
6
+ * @returns {boolean} Whether fallback is allowed.
7
+ */
8
+ export function isMvtFallbackError(error) {
9
+ return error.message === 'Polygon triangulation area mismatch' ||
10
+ error.message === 'Degenerate polygon ring' ||
11
+ error.message === 'Unable to triangulate polygon: invalid or self-intersecting rings' ||
12
+ error.message === 'Unable to connect polygon hole';
13
+ }
@@ -1,18 +1,18 @@
1
- /**
2
- * Stably merge two sorted active-edge ranges into a destination array.
3
- *
4
- * @param {Array<Object>} active Source active edges.
5
- * @param {Array<Object>} sorted Destination array.
6
- * @param {number} left Start of the first range.
7
- * @param {number} mid Boundary between ranges.
8
- * @param {number} right Exclusive end of the second range.
9
- */
10
- export function mergeMvtActiveEdges(active, sorted, left, mid, right) {
11
- let i = left, j = mid, k = left;
12
- while (i < mid && j < right) {
13
- if (active[j].x < active[i].x) sorted[k++] = active[j++];
14
- else sorted[k++] = active[i++];
15
- }
16
- while (i < mid) sorted[k++] = active[i++];
17
- while (j < right) sorted[k++] = active[j++];
18
- }
1
+ /**
2
+ * Stably merge two sorted active-edge ranges into a destination array.
3
+ *
4
+ * @param {Array<Object>} active Source active edges.
5
+ * @param {Array<Object>} sorted Destination array.
6
+ * @param {number} left Start of the first range.
7
+ * @param {number} mid Boundary between ranges.
8
+ * @param {number} right Exclusive end of the second range.
9
+ */
10
+ export function mergeMvtActiveEdges(active, sorted, left, mid, right) {
11
+ let i = left, j = mid, k = left;
12
+ while (i < mid && j < right) {
13
+ if (active[j].x < active[i].x) sorted[k++] = active[j++];
14
+ else sorted[k++] = active[i++];
15
+ }
16
+ while (i < mid) sorted[k++] = active[i++];
17
+ while (j < right) sorted[k++] = active[j++];
18
+ }
@@ -1,12 +1,12 @@
1
- /**
2
- * Interpolate an edge's x coordinate at a given y.
3
- *
4
- * @param {Array<Array<number>>} edge Non-horizontal edge endpoints.
5
- * @param {number} y Vertical coordinate.
6
- *
7
- * @returns {number} Interpolated x coordinate.
8
- */
9
- export function mvtEdgeX(edge, y) {
10
- return edge[0][0] + (y - edge[0][1]) *
11
- (edge[1][0] - edge[0][0]) / (edge[1][1] - edge[0][1]);
12
- }
1
+ /**
2
+ * Interpolate an edge's x coordinate at a given y.
3
+ *
4
+ * @param {Array<Array<number>>} edge Non-horizontal edge endpoints.
5
+ * @param {number} y Vertical coordinate.
6
+ *
7
+ * @returns {number} Interpolated x coordinate.
8
+ */
9
+ export function mvtEdgeX(edge, y) {
10
+ return edge[0][0] + (y - edge[0][1]) *
11
+ (edge[1][0] - edge[0][0]) / (edge[1][1] - edge[0][1]);
12
+ }
@@ -1,15 +1,15 @@
1
- /**
2
- * Flatten polygon paths into a vertex array.
3
- *
4
- * @param {Array<Array<Object>>} paths Polygon paths.
5
- *
6
- * @returns {Array<Object>} Flattened vertices.
7
- */
8
- export function mvtPathsVertices(paths) {
9
- const vertices = /* alloc */ [];
10
- let path, point;
11
- for (path of paths) {
12
- for (point of path) vertices.push(point);
13
- }
14
- return vertices;
15
- }
1
+ /**
2
+ * Flatten polygon paths into a vertex array.
3
+ *
4
+ * @param {Array<Array<Object>>} paths Polygon paths.
5
+ *
6
+ * @returns {Array<Object>} Flattened vertices.
7
+ */
8
+ export function mvtPathsVertices(paths) {
9
+ const vertices = /* alloc */ [];
10
+ let path, point;
11
+ for (path of paths) {
12
+ for (point of path) vertices.push(point);
13
+ }
14
+ return vertices;
15
+ }
@@ -1,19 +1,19 @@
1
- /**
2
- * Convert closed coordinate rings to point-object paths without duplicate closing vertices.
3
- *
4
- * @param {Array} rings Closed tile-coordinate rings.
5
- *
6
- * @returns {Array<Array<Object>>} Polygon point paths.
7
- */
8
- export function mvtPolygonPaths(rings) {
9
- const paths = /* alloc */ [];
10
- let ring, i, path;
11
- for (ring of rings) {
12
- path = /* alloc */ [];
13
- for (i = 0; i < ring.length - 1; i++) {
14
- path.push(/* alloc */ { x: ring[i][0], y: ring[i][1] });
15
- }
16
- paths.push(path);
17
- }
18
- return paths;
19
- }
1
+ /**
2
+ * Convert closed coordinate rings to point-object paths without duplicate closing vertices.
3
+ *
4
+ * @param {Array} rings Closed tile-coordinate rings.
5
+ *
6
+ * @returns {Array<Array<Object>>} Polygon point paths.
7
+ */
8
+ export function mvtPolygonPaths(rings) {
9
+ const paths = /* alloc */ [];
10
+ let ring, i, path;
11
+ for (ring of rings) {
12
+ path = /* alloc */ [];
13
+ for (i = 0; i < ring.length - 1; i++) {
14
+ path.push(/* alloc */ { x: ring[i][0], y: ring[i][1] });
15
+ }
16
+ paths.push(path);
17
+ }
18
+ return paths;
19
+ }
@@ -1,11 +1,11 @@
1
- /**
2
- * Convert an MVT integer to a number when safe, otherwise to a decimal string.
3
- *
4
- * @param {bigint} value Integer value.
5
- *
6
- * @returns {number|string} Safely represented integer.
7
- */
8
- export function numericMvtValue(value) {
9
- return value >= BigInt(Number.MIN_SAFE_INTEGER) && value <= BigInt(Number.MAX_SAFE_INTEGER)
10
- ? Number(value) : value.toString();
11
- }
1
+ /**
2
+ * Convert an MVT integer to a number when safe, otherwise to a decimal string.
3
+ *
4
+ * @param {bigint} value Integer value.
5
+ *
6
+ * @returns {number|string} Safely represented integer.
7
+ */
8
+ export function numericMvtValue(value) {
9
+ return value >= BigInt(Number.MIN_SAFE_INTEGER) && value <= BigInt(Number.MAX_SAFE_INTEGER)
10
+ ? Number(value) : value.toString();
11
+ }
@@ -1,46 +1,46 @@
1
- import { expectMvtWire } from './expectMvtWire.js';
2
- import { numericMvtValue } from './numericMvtValue.js';
3
- import { readMvtField } from './readMvtField.js';
4
- import { readMvtGeometry } from './readMvtGeometry.js';
5
- import { readMvtInteger } from './readMvtInteger.js';
6
- import { readMvtNumber } from './readMvtNumber.js';
7
- import { readMvtNumbers } from './readMvtNumbers.js';
8
- import { skipMvtField } from './skipMvtField.js';
9
-
10
- /**
11
- * Decode an MVT feature's ID, property tags and geometry.
12
- *
13
- * @param {Object} reader Feature message reader.
14
- * @param {Array<string>} keys Layer property keys.
15
- * @param {Array} values Layer property values.
16
- *
17
- * @returns {Object} Decoded feature.
18
- *
19
- * @throws {Error} If feature tags or geometry type are invalid.
20
- * @throws {Error} If a property index is outside the layer tables.
21
- */
22
- export function readMvtFeature(reader, keys, values) {
23
- let id, type = 0, field, wire, i = 0;
24
- const tags = /* alloc */ [], commands = /* alloc */ [];
25
- while (reader.pos < reader.bytes.length) {
26
- [field, wire] = readMvtField(reader);
27
- if (field === 1) {
28
- expectMvtWire(wire, 0);
29
- id = numericMvtValue(readMvtInteger(reader));
30
- } else if (field === 2) readMvtNumbers(reader, wire, tags);
31
- else if (field === 3) {
32
- expectMvtWire(wire, 0);
33
- type = readMvtNumber(reader);
34
- } else if (field === 4) readMvtNumbers(reader, wire, commands);
35
- else skipMvtField(reader, wire);
36
- }
37
- if (tags.length % 2 || type > 3) throw /* alloc */ new Error('Invalid MVT feature');
38
- const properties = Object.create(null);
39
- for (; i < tags.length; i += 2) {
40
- if (tags[i] >= keys.length || tags[i + 1] >= values.length) {
41
- throw /* alloc */ new Error('Invalid MVT property index');
42
- }
43
- properties[keys[tags[i]]] = values[tags[i + 1]];
44
- }
45
- return /* alloc */ { id, type, properties, geometry: type ? readMvtGeometry(commands, type) : /* alloc */ [] };
46
- }
1
+ import { expectMvtWire } from './expectMvtWire.js';
2
+ import { numericMvtValue } from './numericMvtValue.js';
3
+ import { readMvtField } from './readMvtField.js';
4
+ import { readMvtGeometry } from './readMvtGeometry.js';
5
+ import { readMvtInteger } from './readMvtInteger.js';
6
+ import { readMvtNumber } from './readMvtNumber.js';
7
+ import { readMvtNumbers } from './readMvtNumbers.js';
8
+ import { skipMvtField } from './skipMvtField.js';
9
+
10
+ /**
11
+ * Decode an MVT feature's ID, property tags and geometry.
12
+ *
13
+ * @param {Object} reader Feature message reader.
14
+ * @param {Array<string>} keys Layer property keys.
15
+ * @param {Array} values Layer property values.
16
+ *
17
+ * @returns {Object} Decoded feature.
18
+ *
19
+ * @throws {Error} If feature tags or geometry type are invalid.
20
+ * @throws {Error} If a property index is outside the layer tables.
21
+ */
22
+ export function readMvtFeature(reader, keys, values) {
23
+ let id, type = 0, field, wire, i = 0;
24
+ const tags = /* alloc */ [], commands = /* alloc */ [];
25
+ while (reader.pos < reader.bytes.length) {
26
+ [field, wire] = readMvtField(reader);
27
+ if (field === 1) {
28
+ expectMvtWire(wire, 0);
29
+ id = numericMvtValue(readMvtInteger(reader));
30
+ } else if (field === 2) readMvtNumbers(reader, wire, tags);
31
+ else if (field === 3) {
32
+ expectMvtWire(wire, 0);
33
+ type = readMvtNumber(reader);
34
+ } else if (field === 4) readMvtNumbers(reader, wire, commands);
35
+ else skipMvtField(reader, wire);
36
+ }
37
+ if (tags.length % 2 || type > 3) throw /* alloc */ new Error('Invalid MVT feature');
38
+ const properties = Object.create(null);
39
+ for (; i < tags.length; i += 2) {
40
+ if (tags[i] >= keys.length || tags[i + 1] >= values.length) {
41
+ throw /* alloc */ new Error('Invalid MVT property index');
42
+ }
43
+ properties[keys[tags[i]]] = values[tags[i + 1]];
44
+ }
45
+ return /* alloc */ { id, type, properties, geometry: type ? readMvtGeometry(commands, type) : /* alloc */ [] };
46
+ }
@@ -1,17 +1,17 @@
1
- import { readMvtNumber } from './readMvtNumber.js';
2
-
3
- /**
4
- * Read a protobuf field tag and split its field number and wire type.
5
- *
6
- * @param {Object} reader MVT byte reader.
7
- *
8
- * @returns {Array<number>} Field number and wire type.
9
- *
10
- * @throws {Error} If the field number is invalid.
11
- */
12
- export function readMvtField(reader) {
13
- const tag = readMvtNumber(reader);
14
- const field = Math.floor(tag / 8), wire = tag % 8;
15
- if (!field || field > 536870911) throw /* alloc */ new Error('Invalid MVT field number');
16
- return /* alloc */ [field, wire];
17
- }
1
+ import { readMvtNumber } from './readMvtNumber.js';
2
+
3
+ /**
4
+ * Read a protobuf field tag and split its field number and wire type.
5
+ *
6
+ * @param {Object} reader MVT byte reader.
7
+ *
8
+ * @returns {Array<number>} Field number and wire type.
9
+ *
10
+ * @throws {Error} If the field number is invalid.
11
+ */
12
+ export function readMvtField(reader) {
13
+ const tag = readMvtNumber(reader);
14
+ const field = Math.floor(tag / 8), wire = tag % 8;
15
+ if (!field || field > 536870911) throw /* alloc */ new Error('Invalid MVT field number');
16
+ return /* alloc */ [field, wire];
17
+ }
@@ -1,42 +1,42 @@
1
- import { finishMvtPath } from './finishMvtPath.js';
2
- import { appendMvtCoordinates } from './appendMvtCoordinates.js';
3
- import { beginMvtPath } from './beginMvtPath.js';
4
- import { closeMvtPath } from './closeMvtPath.js';
5
-
6
- /**
7
- * Decode MVT geometry commands into tile-coordinate paths.
8
- *
9
- * @param {Array<number>} commands Geometry command integers.
10
- * @param {number} type MVT geometry type.
11
- *
12
- * @returns {Array} Decoded paths.
13
- *
14
- * @throws {Error} If a command or count is invalid.
15
- * @throws {Error} If geometry command parameters are invalid or truncated.
16
- * @throws {Error} If a LineTo is invalid for the current path.
17
- * @throws {Error} If no geometry path was decoded.
18
- */
19
- export function readMvtGeometry(commands, type) {
20
- const paths = /* alloc */ [];
21
- const state = /* alloc */ { x: 0, y: 0, path: null, closed: false, index: 0 };
22
- let command, id, count;
23
- while (state.index < commands.length) {
24
- command = commands[state.index++];
25
- id = command % 8;
26
- count = Math.floor(command / 8);
27
- if (!count || command > 0xffffffff) throw /* alloc */ new Error('Invalid MVT geometry command');
28
- if (id === 7) {
29
- closeMvtPath(state, type, count);
30
- continue;
31
- }
32
- if (id !== 1 && id !== 2 || count > Math.floor((commands.length - state.index) / 2)) {
33
- throw /* alloc */ new Error('Invalid MVT geometry parameters');
34
- }
35
- if (id === 1) beginMvtPath(state, paths, type, count);
36
- else if (type === 1 || !state.path || state.closed) throw /* alloc */ new Error('Invalid MVT LineTo');
37
- appendMvtCoordinates(commands, state, count);
38
- }
39
- finishMvtPath(state.path, type, state.closed);
40
- if (!paths.length) throw /* alloc */ new Error('Empty MVT geometry');
41
- return paths;
42
- }
1
+ import { finishMvtPath } from './finishMvtPath.js';
2
+ import { appendMvtCoordinates } from './appendMvtCoordinates.js';
3
+ import { beginMvtPath } from './beginMvtPath.js';
4
+ import { closeMvtPath } from './closeMvtPath.js';
5
+
6
+ /**
7
+ * Decode MVT geometry commands into tile-coordinate paths.
8
+ *
9
+ * @param {Array<number>} commands Geometry command integers.
10
+ * @param {number} type MVT geometry type.
11
+ *
12
+ * @returns {Array} Decoded paths.
13
+ *
14
+ * @throws {Error} If a command or count is invalid.
15
+ * @throws {Error} If geometry command parameters are invalid or truncated.
16
+ * @throws {Error} If a LineTo is invalid for the current path.
17
+ * @throws {Error} If no geometry path was decoded.
18
+ */
19
+ export function readMvtGeometry(commands, type) {
20
+ const paths = /* alloc */ [];
21
+ const state = /* alloc */ { x: 0, y: 0, path: null, closed: false, index: 0 };
22
+ let command, id, count;
23
+ while (state.index < commands.length) {
24
+ command = commands[state.index++];
25
+ id = command % 8;
26
+ count = Math.floor(command / 8);
27
+ if (!count || command > 0xffffffff) throw /* alloc */ new Error('Invalid MVT geometry command');
28
+ if (id === 7) {
29
+ closeMvtPath(state, type, count);
30
+ continue;
31
+ }
32
+ if (id !== 1 && id !== 2 || count > Math.floor((commands.length - state.index) / 2)) {
33
+ throw /* alloc */ new Error('Invalid MVT geometry parameters');
34
+ }
35
+ if (id === 1) beginMvtPath(state, paths, type, count);
36
+ else if (type === 1 || !state.path || state.closed) throw /* alloc */ new Error('Invalid MVT LineTo');
37
+ appendMvtCoordinates(commands, state, count);
38
+ }
39
+ finishMvtPath(state.path, type, state.closed);
40
+ if (!paths.length) throw /* alloc */ new Error('Empty MVT geometry');
41
+ return paths;
42
+ }
@@ -1,22 +1,22 @@
1
- import { takeMvtBytes } from './takeMvtBytes.js';
2
-
3
- /**
4
- * Read an unsigned protobuf varint as a bigint.
5
- *
6
- * @param {Object} reader MVT byte reader.
7
- *
8
- * @returns {bigint} Decoded integer.
9
- *
10
- * @throws {Error} If the tenth byte exceeds the 64-bit range.
11
- * @throws {Error} If the varint does not terminate within ten bytes.
12
- */
13
- export function readMvtInteger(reader) {
14
- let value = 0n, i = 0, byte;
15
- for (; i < 10; i++) {
16
- byte = reader.bytes[takeMvtBytes(reader, 1)];
17
- if (i === 9 && byte > 1) throw /* alloc */ new Error('Invalid MVT varint');
18
- value |= BigInt(byte & 127) << BigInt(i * 7);
19
- if (byte < 128) return value;
20
- }
21
- throw /* alloc */ new Error('Invalid MVT varint');
22
- }
1
+ import { takeMvtBytes } from './takeMvtBytes.js';
2
+
3
+ /**
4
+ * Read an unsigned protobuf varint as a bigint.
5
+ *
6
+ * @param {Object} reader MVT byte reader.
7
+ *
8
+ * @returns {bigint} Decoded integer.
9
+ *
10
+ * @throws {Error} If the tenth byte exceeds the 64-bit range.
11
+ * @throws {Error} If the varint does not terminate within ten bytes.
12
+ */
13
+ export function readMvtInteger(reader) {
14
+ let value = 0n, i = 0, byte;
15
+ for (; i < 10; i++) {
16
+ byte = reader.bytes[takeMvtBytes(reader, 1)];
17
+ if (i === 9 && byte > 1) throw /* alloc */ new Error('Invalid MVT varint');
18
+ value |= BigInt(byte & 127) << BigInt(i * 7);
19
+ if (byte < 128) return value;
20
+ }
21
+ throw /* alloc */ new Error('Invalid MVT varint');
22
+ }
@@ -1,30 +1,30 @@
1
- import { expectMvtWire } from './expectMvtWire.js';
2
- import { numericMvtValue } from './numericMvtValue.js';
3
- import { readMvtInteger } from './readMvtInteger.js';
4
- import { readMvtString } from './readMvtString.js';
5
- import { takeMvtBytes } from './takeMvtBytes.js';
6
-
7
- /**
8
- * Decode a known MVT value field according to its protobuf type.
9
- *
10
- * @param {Object} reader MVT byte reader.
11
- * @param {number} field Value field number.
12
- * @param {number} wire Protobuf wire type.
13
- *
14
- * @returns {string|number|boolean} Decoded value.
15
- */
16
- export function readMvtKnownValue(reader, field, wire) {
17
- let offset, integer;
18
- if (field === 1) return readMvtString(reader, wire);
19
- if (field === 2 || field === 3) {
20
- expectMvtWire(wire, field === 2 ? 5 : 1);
21
- offset = takeMvtBytes(reader, field === 2 ? 4 : 8);
22
- return field === 2 ? reader.view.getFloat32(offset, true) : reader.view.getFloat64(offset, true);
23
- }
24
- expectMvtWire(wire, 0);
25
- integer = readMvtInteger(reader);
26
- if (field === 4) return numericMvtValue(BigInt.asIntN(64, integer));
27
- if (field === 5) return numericMvtValue(integer);
28
- if (field === 6) return numericMvtValue((integer >> 1n) ^ -(integer & 1n));
29
- return integer !== 0n;
30
- }
1
+ import { expectMvtWire } from './expectMvtWire.js';
2
+ import { numericMvtValue } from './numericMvtValue.js';
3
+ import { readMvtInteger } from './readMvtInteger.js';
4
+ import { readMvtString } from './readMvtString.js';
5
+ import { takeMvtBytes } from './takeMvtBytes.js';
6
+
7
+ /**
8
+ * Decode a known MVT value field according to its protobuf type.
9
+ *
10
+ * @param {Object} reader MVT byte reader.
11
+ * @param {number} field Value field number.
12
+ * @param {number} wire Protobuf wire type.
13
+ *
14
+ * @returns {string|number|boolean} Decoded value.
15
+ */
16
+ export function readMvtKnownValue(reader, field, wire) {
17
+ let offset, integer;
18
+ if (field === 1) return readMvtString(reader, wire);
19
+ if (field === 2 || field === 3) {
20
+ expectMvtWire(wire, field === 2 ? 5 : 1);
21
+ offset = takeMvtBytes(reader, field === 2 ? 4 : 8);
22
+ return field === 2 ? reader.view.getFloat32(offset, true) : reader.view.getFloat64(offset, true);
23
+ }
24
+ expectMvtWire(wire, 0);
25
+ integer = readMvtInteger(reader);
26
+ if (field === 4) return numericMvtValue(BigInt.asIntN(64, integer));
27
+ if (field === 5) return numericMvtValue(integer);
28
+ if (field === 6) return numericMvtValue((integer >> 1n) ^ -(integer & 1n));
29
+ return integer !== 0n;
30
+ }
@@ -1,40 +1,40 @@
1
- import { expectMvtWire } from './expectMvtWire.js';
2
- import { readMvtFeature } from './readMvtFeature.js';
3
- import { readMvtField } from './readMvtField.js';
4
- import { readMvtMessage } from './readMvtMessage.js';
5
- import { readMvtNumber } from './readMvtNumber.js';
6
- import { readMvtString } from './readMvtString.js';
7
- import { readMvtValue } from './readMvtValue.js';
8
- import { skipMvtField } from './skipMvtField.js';
9
-
10
- /**
11
- * Decode an MVT layer and resolve its features against property tables.
12
- *
13
- * @param {Object} reader Layer message reader.
14
- *
15
- * @returns {Object} Layer name, extent and features.
16
- *
17
- * @throws {Error} If layer name, version or extent is invalid.
18
- */
19
- export function readMvtLayer(reader) {
20
- let name, version, extent = 4096, field, wire, value, i = 0;
21
- const keys = /* alloc */ [], values = /* alloc */ [], features = /* alloc */ [];
22
- while (reader.pos < reader.bytes.length) {
23
- [field, wire] = readMvtField(reader);
24
- if (field === 1) name = readMvtString(reader, wire);
25
- else if (field === 2) features.push(readMvtMessage(reader, wire));
26
- else if (field === 3) keys.push(readMvtString(reader, wire));
27
- else if (field === 4) values.push(readMvtValue(readMvtMessage(reader, wire)));
28
- else if (field === 5 || field === 15) {
29
- expectMvtWire(wire, 0);
30
- value = readMvtNumber(reader);
31
- if (field === 5) extent = value;
32
- else version = value;
33
- } else skipMvtField(reader, wire);
34
- }
35
- if (!name || !/* alloc */ [1, 2].includes(version) || !extent || extent > 0xffffffff) {
36
- throw /* alloc */ new Error('Invalid MVT layer metadata');
37
- }
38
- for (; i < features.length; i++) features[i] = readMvtFeature(features[i], keys, values);
39
- return /* alloc */ { name, extent, features };
40
- }
1
+ import { expectMvtWire } from './expectMvtWire.js';
2
+ import { readMvtFeature } from './readMvtFeature.js';
3
+ import { readMvtField } from './readMvtField.js';
4
+ import { readMvtMessage } from './readMvtMessage.js';
5
+ import { readMvtNumber } from './readMvtNumber.js';
6
+ import { readMvtString } from './readMvtString.js';
7
+ import { readMvtValue } from './readMvtValue.js';
8
+ import { skipMvtField } from './skipMvtField.js';
9
+
10
+ /**
11
+ * Decode an MVT layer and resolve its features against property tables.
12
+ *
13
+ * @param {Object} reader Layer message reader.
14
+ *
15
+ * @returns {Object} Layer name, extent and features.
16
+ *
17
+ * @throws {Error} If layer name, version or extent is invalid.
18
+ */
19
+ export function readMvtLayer(reader) {
20
+ let name, version, extent = 4096, field, wire, value, i = 0;
21
+ const keys = /* alloc */ [], values = /* alloc */ [], features = /* alloc */ [];
22
+ while (reader.pos < reader.bytes.length) {
23
+ [field, wire] = readMvtField(reader);
24
+ if (field === 1) name = readMvtString(reader, wire);
25
+ else if (field === 2) features.push(readMvtMessage(reader, wire));
26
+ else if (field === 3) keys.push(readMvtString(reader, wire));
27
+ else if (field === 4) values.push(readMvtValue(readMvtMessage(reader, wire)));
28
+ else if (field === 5 || field === 15) {
29
+ expectMvtWire(wire, 0);
30
+ value = readMvtNumber(reader);
31
+ if (field === 5) extent = value;
32
+ else version = value;
33
+ } else skipMvtField(reader, wire);
34
+ }
35
+ if (!name || !/* alloc */ [1, 2].includes(version) || !extent || extent > 0xffffffff) {
36
+ throw /* alloc */ new Error('Invalid MVT layer metadata');
37
+ }
38
+ for (; i < features.length; i++) features[i] = readMvtFeature(features[i], keys, values);
39
+ return /* alloc */ { name, extent, features };
40
+ }
@@ -1,18 +1,18 @@
1
- import { createMvtReader } from './createMvtReader.js';
2
- import { expectMvtWire } from './expectMvtWire.js';
3
- import { readMvtNumber } from './readMvtNumber.js';
4
- import { takeMvtBytes } from './takeMvtBytes.js';
5
-
6
- /**
7
- * Read a length-delimited protobuf message into a bounded reader.
8
- *
9
- * @param {Object} reader Parent MVT byte reader.
10
- * @param {number} wire Protobuf wire type.
11
- *
12
- * @returns {Object} Reader for the message bytes.
13
- */
14
- export function readMvtMessage(reader, wire) {
15
- expectMvtWire(wire, 2);
16
- const size = readMvtNumber(reader), start = takeMvtBytes(reader, size);
17
- return createMvtReader(reader.bytes.subarray(start, start + size));
18
- }
1
+ import { createMvtReader } from './createMvtReader.js';
2
+ import { expectMvtWire } from './expectMvtWire.js';
3
+ import { readMvtNumber } from './readMvtNumber.js';
4
+ import { takeMvtBytes } from './takeMvtBytes.js';
5
+
6
+ /**
7
+ * Read a length-delimited protobuf message into a bounded reader.
8
+ *
9
+ * @param {Object} reader Parent MVT byte reader.
10
+ * @param {number} wire Protobuf wire type.
11
+ *
12
+ * @returns {Object} Reader for the message bytes.
13
+ */
14
+ export function readMvtMessage(reader, wire) {
15
+ expectMvtWire(wire, 2);
16
+ const size = readMvtNumber(reader), start = takeMvtBytes(reader, size);
17
+ return createMvtReader(reader.bytes.subarray(start, start + size));
18
+ }