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,31 +1,31 @@
1
- import { degrees } from '../globals/degrees.js';
2
- import { radians } from '../globals/radians.js';
3
- import { mapGetBearing } from '../camera/mapGetBearing.js';
4
- import { mapSetPitchAndBearing } from '../camera/mapSetPitchAndBearing.js';
5
- import { mapGetPitch } from '../camera/mapGetPitch.js';
6
- import { wrap } from '../utils/wrap.js';
7
-
8
- /**
9
- * Follow movement with the map camera and ease the limb swing toward its active or idle amplitude.
10
- *
11
- * @param {number} forward Signed movement direction.
12
- * @param {number} turn Signed turning direction.
13
- * @param {number} dt Frame duration in seconds.
14
- *
15
- * @returns {boolean} Whether the limb swing was updated.
16
- */
17
- export function updateWalkerView(forward, turn, dt) {
18
- const map = this.layer._map;
19
- if (forward || turn) {
20
- // Swing the camera behind the walker.
21
- const bearing = mapGetBearing(map) * radians, behind = wrap(-this.state.heading - bearing);
22
- if (Math.abs(behind) > 1e-3) mapSetPitchAndBearing(map, mapGetPitch(map), (bearing + behind * Math.min(1, dt * 4)) * degrees);
23
- map.setView(this.state.latlng, map.getZoom(), /* alloc */ { animate: false });
24
- }
25
- const target = forward ? 0.9 : 0;
26
- if (Math.abs(this.swing - target) > 1e-3) {
27
- this.swing += (target - this.swing) * Math.min(1, dt * 10);
28
- return true;
29
- }
30
- return false;
31
- }
1
+ import { degrees } from '../globals/degrees.js';
2
+ import { radians } from '../globals/radians.js';
3
+ import { mapGetBearing } from '../camera/mapGetBearing.js';
4
+ import { mapSetPitchAndBearing } from '../camera/mapSetPitchAndBearing.js';
5
+ import { mapGetPitch } from '../camera/mapGetPitch.js';
6
+ import { wrap } from '../utils/wrap.js';
7
+
8
+ /**
9
+ * Follow movement with the map camera and ease the limb swing toward its active or idle amplitude.
10
+ *
11
+ * @param {number} forward Signed movement direction.
12
+ * @param {number} turn Signed turning direction.
13
+ * @param {number} dt Frame duration in seconds.
14
+ *
15
+ * @returns {boolean} Whether the limb swing was updated.
16
+ */
17
+ export function updateWalkerView(forward, turn, dt) {
18
+ const map = this.layer._map;
19
+ if (forward || turn) {
20
+ // Swing the camera behind the walker.
21
+ const bearing = mapGetBearing(map) * radians, behind = wrap(-this.state.heading - bearing);
22
+ if (Math.abs(behind) > 1e-3) mapSetPitchAndBearing(map, mapGetPitch(map), (bearing + behind * Math.min(1, dt * 4)) * degrees);
23
+ map.setView(this.state.latlng, map.getZoom(), /* alloc */ { animate: false });
24
+ }
25
+ const target = forward ? 0.9 : 0;
26
+ if (Math.abs(this.swing - target) > 1e-3) {
27
+ this.swing += (target - this.swing) * Math.min(1, dt * 10);
28
+ return true;
29
+ }
30
+ return false;
31
+ }
@@ -1,6 +1,6 @@
1
- /**
2
- * Camera interaction handlers indexed by name for each map.
3
- *
4
- * @type {WeakMap<Object, Map>}
5
- */
6
- export const cameraHandlersByMap = new WeakMap();
1
+ /**
2
+ * Camera interaction handlers indexed by name for each map.
3
+ *
4
+ * @type {WeakMap<Object, Map>}
5
+ */
6
+ export const cameraHandlersByMap = new WeakMap();
@@ -1,6 +1,6 @@
1
- /**
2
- * Geometry worker pools shared by layers on each map.
3
- *
4
- * @type {WeakMap<Object, Object>}
5
- */
6
- export const geometryWorkersByMap = new WeakMap();
1
+ /**
2
+ * Geometry worker pools shared by layers on each map.
3
+ *
4
+ * @type {WeakMap<Object, Object>}
5
+ */
6
+ export const geometryWorkersByMap = new WeakMap();
@@ -1,6 +1,6 @@
1
- /**
2
- * Cached native material program templates keyed by renderer.
3
- *
4
- * @type {WeakMap<Object, Map>}
5
- */
6
- export const nativeProgramsByRenderer = new WeakMap();
1
+ /**
2
+ * Cached native material program templates keyed by renderer.
3
+ *
4
+ * @type {WeakMap<Object, Map>}
5
+ */
6
+ export const nativeProgramsByRenderer = new WeakMap();
@@ -1,6 +1,6 @@
1
- /**
2
- * Cached native path projection state keyed by map.
3
- *
4
- * @type {WeakMap<Object, Object>}
5
- */
6
- export const pathProjectionByMap = new WeakMap();
1
+ /**
2
+ * Cached native path projection state keyed by map.
3
+ *
4
+ * @type {WeakMap<Object, Object>}
5
+ */
6
+ export const pathProjectionByMap = new WeakMap();
@@ -1,6 +1,6 @@
1
- /**
2
- * Flags identifying terrain layers backed by streaming tile callbacks.
3
- *
4
- * @type {WeakMap<Object, boolean>}
5
- */
6
- export const streamTerrainByLayer = new WeakMap();
1
+ /**
2
+ * Flags identifying terrain layers backed by streaming tile callbacks.
3
+ *
4
+ * @type {WeakMap<Object, boolean>}
5
+ */
6
+ export const streamTerrainByLayer = new WeakMap();
@@ -1,6 +1,6 @@
1
- /**
2
- * Active streamed terrain state keyed by map.
3
- *
4
- * @type {WeakMap<Object, Object>}
5
- */
6
- export const streamTerrainByMap = new WeakMap();
1
+ /**
2
+ * Active streamed terrain state keyed by map.
3
+ *
4
+ * @type {WeakMap<Object, Object>}
5
+ */
6
+ export const streamTerrainByMap = new WeakMap();
@@ -1,6 +1,6 @@
1
- /**
2
- * Shared sunlight control state keyed by map.
3
- *
4
- * @type {WeakMap<Object, Object>}
5
- */
6
- export const sunByMap = new WeakMap();
1
+ /**
2
+ * Shared sunlight control state keyed by map.
3
+ *
4
+ * @type {WeakMap<Object, Object>}
5
+ */
6
+ export const sunByMap = new WeakMap();
@@ -1,6 +1,6 @@
1
- /**
2
- * Resolved vector tile source settings keyed by layer.
3
- *
4
- * @type {WeakMap<Object, Object>}
5
- */
6
- export const vectorTileOptionsByLayer = new WeakMap();
1
+ /**
2
+ * Resolved vector tile source settings keyed by layer.
3
+ *
4
+ * @type {WeakMap<Object, Object>}
5
+ */
6
+ export const vectorTileOptionsByLayer = new WeakMap();
@@ -1,6 +1,6 @@
1
- /**
2
- * Vector tile worker entries and temporary URLs keyed by layer.
3
- *
4
- * @type {WeakMap<Object, Object>}
5
- */
6
- export const vectorWorkerByLayer = new WeakMap();
1
+ /**
2
+ * Vector tile worker entries and temporary URLs keyed by layer.
3
+ *
4
+ * @type {WeakMap<Object, Object>}
5
+ */
6
+ export const vectorWorkerByLayer = new WeakMap();
@@ -1,6 +1,6 @@
1
- /**
2
- * Walking control state shared by each map.
3
- *
4
- * @type {WeakMap<Object, Object>}
5
- */
6
- export const walkByMap = new WeakMap();
1
+ /**
2
+ * Walking control state shared by each map.
3
+ *
4
+ * @type {WeakMap<Object, Object>}
5
+ */
6
+ export const walkByMap = new WeakMap();
@@ -1,6 +1,6 @@
1
- /**
2
- * Map used to obtain shared workers for detached source layers.
3
- *
4
- * @type {WeakMap<Object, Object>}
5
- */
6
- export const workerMapByLayer = new WeakMap();
1
+ /**
2
+ * Map used to obtain shared workers for detached source layers.
3
+ *
4
+ * @type {WeakMap<Object, Object>}
5
+ */
6
+ export const workerMapByLayer = new WeakMap();
@@ -1,39 +1,39 @@
1
- import { geometryWorkersByMap } from '../weakmaps/geometryWorkersByMap.js';
2
- import { closeGeometryWorkers } from './closeGeometryWorkers.js';
3
- import { createGeometryWorker } from './createGeometryWorker.js';
4
-
5
- /**
6
- * Reuse an idle worker for the URL or create one, closing the map's pool on unload.
7
- *
8
- * @param {L.Map|null|undefined} map Owner of the worker pool, if available.
9
- * @param {string} url Worker module URL.
10
- *
11
- * @returns {Object} The acquired worker entry.
12
- *
13
- * @throws {DOMException} If the map's worker pool is closed.
14
- */
15
- export function acquireGeometryWorker(map, url) {
16
- let pool = map && geometryWorkersByMap.get(map);
17
- if (map && !pool) {
18
- pool = /* alloc */ { entries: /* alloc */ new Set(), idle: /* alloc */ [], closed: false };
19
- geometryWorkersByMap.set(map, pool);
20
- map.once('unload', closeGeometryWorkers.bind(null, pool));
21
- }
22
- let entry, i;
23
- if (pool) {
24
- if (pool.closed) throw /* alloc */ new DOMException('Map removed', 'AbortError');
25
- for (i = 0; i < pool.idle.length; i++) {
26
- if (pool.idle[i].url !== url) continue;
27
- entry = pool.idle[i];
28
- pool.idle.splice(i, 1);
29
- return entry;
30
- }
31
- entry = pool.idle.pop();
32
- if (entry) {
33
- entry.closed = true;
34
- entry.worker.terminate();
35
- pool.entries.delete(entry);
36
- }
37
- }
38
- return createGeometryWorker(url, pool);
39
- }
1
+ import { geometryWorkersByMap } from '../weakmaps/geometryWorkersByMap.js';
2
+ import { closeGeometryWorkers } from './closeGeometryWorkers.js';
3
+ import { createGeometryWorker } from './createGeometryWorker.js';
4
+
5
+ /**
6
+ * Reuse an idle worker for the URL or create one, closing the map's pool on unload.
7
+ *
8
+ * @param {L.Map|null|undefined} map Owner of the worker pool, if available.
9
+ * @param {string} url Worker module URL.
10
+ *
11
+ * @returns {Object} The acquired worker entry.
12
+ *
13
+ * @throws {DOMException} If the map's worker pool is closed.
14
+ */
15
+ export function acquireGeometryWorker(map, url) {
16
+ let pool = map && geometryWorkersByMap.get(map);
17
+ if (map && !pool) {
18
+ pool = /* alloc */ { entries: /* alloc */ new Set(), idle: /* alloc */ [], closed: false };
19
+ geometryWorkersByMap.set(map, pool);
20
+ map.once('unload', closeGeometryWorkers.bind(null, pool));
21
+ }
22
+ let entry, i;
23
+ if (pool) {
24
+ if (pool.closed) throw /* alloc */ new DOMException('Map removed', 'AbortError');
25
+ for (i = 0; i < pool.idle.length; i++) {
26
+ if (pool.idle[i].url !== url) continue;
27
+ entry = pool.idle[i];
28
+ pool.idle.splice(i, 1);
29
+ return entry;
30
+ }
31
+ entry = pool.idle.pop();
32
+ if (entry) {
33
+ entry.closed = true;
34
+ entry.worker.terminate();
35
+ pool.entries.delete(entry);
36
+ }
37
+ }
38
+ return createGeometryWorker(url, pool);
39
+ }
@@ -1,24 +1,24 @@
1
- import { runSourceWorker } from './runSourceWorker.js';
2
-
3
- /**
4
- * Prepare area geometry in a worker, copy the returned ranges and buffers, and release queued jobs.
5
- *
6
- * @param {Object} context Area preparation state and queued jobs.
7
- * @param {AbortSignal} signal Cancellation signal.
8
- *
9
- * @returns {Promise<void>} Resolves after the geometry is copied into the context.
10
- */
11
- export async function buildAreaInWorker(context, signal) {
12
- try {
13
- const data = await runSourceWorker(context.map || context.backend._map, context.backend.options.workerUrl,
14
- /* alloc */ { jobs: context.jobs, nightLight: Boolean(context.backend.options.nightLight) }, signal);
15
- let i;
16
- for (i = 0; i < data.ranges.length; i++) Object.assign(context.featureFaces[i], data.ranges[i]);
17
- context.positions = data.positions;
18
- context.uvs = data.uvs;
19
- context.lights = data.lights;
20
- context.preparedGeometry = data;
21
- } finally {
22
- context.jobs = null;
23
- }
24
- }
1
+ import { runSourceWorker } from './runSourceWorker.js';
2
+
3
+ /**
4
+ * Prepare area geometry in a worker, copy the returned ranges and buffers, and release queued jobs.
5
+ *
6
+ * @param {Object} context Area preparation state and queued jobs.
7
+ * @param {AbortSignal} signal Cancellation signal.
8
+ *
9
+ * @returns {Promise<void>} Resolves after the geometry is copied into the context.
10
+ */
11
+ export async function buildAreaInWorker(context, signal) {
12
+ try {
13
+ const data = await runSourceWorker(context.map || context.backend._map, context.backend.options.workerUrl,
14
+ /* alloc */ { jobs: context.jobs, nightLight: Boolean(context.backend.options.nightLight) }, signal);
15
+ let i;
16
+ for (i = 0; i < data.ranges.length; i++) Object.assign(context.featureFaces[i], data.ranges[i]);
17
+ context.positions = data.positions;
18
+ context.uvs = data.uvs;
19
+ context.lights = data.lights;
20
+ context.preparedGeometry = data;
21
+ } finally {
22
+ context.jobs = null;
23
+ }
24
+ }
@@ -1,16 +1,16 @@
1
- /**
2
- * Close a map's worker pool, terminating workers and rejecting pending tasks.
3
- *
4
- * @param {Object} pool Worker pool to close.
5
- */
6
- export function closeGeometryWorkers(pool) {
7
- pool.closed = true;
8
- let entry;
9
- for (entry of pool.entries) {
10
- entry.closed = true;
11
- entry.worker.terminate();
12
- if (entry.task) entry.task.reject(/* alloc */ new DOMException('Map removed', 'AbortError'));
13
- }
14
- pool.entries.clear();
15
- pool.idle.length = 0;
16
- }
1
+ /**
2
+ * Close a map's worker pool, terminating workers and rejecting pending tasks.
3
+ *
4
+ * @param {Object} pool Worker pool to close.
5
+ */
6
+ export function closeGeometryWorkers(pool) {
7
+ pool.closed = true;
8
+ let entry;
9
+ for (entry of pool.entries) {
10
+ entry.closed = true;
11
+ entry.worker.terminate();
12
+ if (entry.task) entry.task.reject(/* alloc */ new DOMException('Map removed', 'AbortError'));
13
+ }
14
+ pool.entries.clear();
15
+ pool.idle.length = 0;
16
+ }
@@ -1,27 +1,27 @@
1
- import { openCog } from '../cog/openCog.js';
2
- import { workerCogSource } from '../globals/workerCogSource.js';
3
-
4
- /**
5
- * Read a COG header or tile in the worker, transferring result buffers or reporting the error.
6
- *
7
- * @param {MessageEvent} event Request containing the COG URL, asset and optional tile coordinates.
8
- *
9
- * @returns {Promise<void>} Resolves after the response is posted.
10
- */
11
- export async function onCogMessage({ data }) {
12
- try {
13
- const key = JSON.stringify(/* alloc */ [data.url, data.asset]);
14
- if (!workerCogSource.has(key)) {
15
- workerCogSource.set(key, openCog(data.url, data.asset));
16
- if (workerCogSource.size > 4) workerCogSource.delete(workerCogSource.keys().next().value);
17
- }
18
- const archive = await workerCogSource.get(key);
19
- const result = data.z === undefined ? await archive.getHeader() : await archive.getZxy(data.z, data.x, data.y);
20
- const transfers = /* alloc */ [];
21
- if (result?.data) transfers.push(result.data);
22
- if (result?.image) transfers.push(result.image);
23
- self.postMessage(result, transfers);
24
- } catch (error) {
25
- self.postMessage(/* alloc */ { error: /* alloc */ { name: error.name, message: error.message } });
26
- }
27
- }
1
+ import { openCog } from '../cog/openCog.js';
2
+ import { workerCogSource } from '../globals/workerCogSource.js';
3
+
4
+ /**
5
+ * Read a COG header or tile in the worker, transferring result buffers or reporting the error.
6
+ *
7
+ * @param {MessageEvent} event Request containing the COG URL, asset and optional tile coordinates.
8
+ *
9
+ * @returns {Promise<void>} Resolves after the response is posted.
10
+ */
11
+ export async function onCogMessage({ data }) {
12
+ try {
13
+ const key = JSON.stringify(/* alloc */ [data.url, data.asset]);
14
+ if (!workerCogSource.has(key)) {
15
+ workerCogSource.set(key, openCog(data.url, data.asset));
16
+ if (workerCogSource.size > 4) workerCogSource.delete(workerCogSource.keys().next().value);
17
+ }
18
+ const archive = await workerCogSource.get(key);
19
+ const result = data.z === undefined ? await archive.getHeader() : await archive.getZxy(data.z, data.x, data.y);
20
+ const transfers = /* alloc */ [];
21
+ if (result?.data) transfers.push(result.data);
22
+ if (result?.image) transfers.push(result.image);
23
+ self.postMessage(result, transfers);
24
+ } catch (error) {
25
+ self.postMessage(/* alloc */ { error: /* alloc */ { name: error.name, message: error.message } });
26
+ }
27
+ }
@@ -1,30 +1,30 @@
1
- /**
2
- * Create a module worker, using a temporary blob for cross-origin URLs, and register it in the pool.
3
- *
4
- * @param {string} url Worker module URL.
5
- * @param {Object|null|undefined} pool Optional owner of the worker entry.
6
- *
7
- * @returns {Object} The worker entry, including its URL and optional blob URL.
8
- *
9
- * @throws {Error} If Web Workers are unavailable.
10
- */
11
- export function createGeometryWorker(url, pool) {
12
- if (typeof Worker === 'undefined') throw /* alloc */ new Error('Web Workers are required to prepare source geometry');
13
- let workerUrl = url, blobUrl, worker;
14
- if (globalThis.location) {
15
- const resolved = /* alloc */ new URL(url, location.href);
16
- if ((resolved.protocol === 'https:' || resolved.protocol === 'http:') && resolved.origin !== location.origin) {
17
- blobUrl = URL.createObjectURL(/* alloc */ new Blob(/* alloc */ [`import ${JSON.stringify(resolved.href)};`],
18
- /* alloc */ { type: 'text/javascript' }));
19
- workerUrl = blobUrl;
20
- }
21
- }
22
- try {
23
- worker = /* alloc */ new Worker(workerUrl, /* alloc */ { type: 'module' });
24
- } finally {
25
- if (!worker && blobUrl) URL.revokeObjectURL(blobUrl);
26
- }
27
- const entry = /* alloc */ { url, pool, worker, blobUrl };
28
- if (pool) pool.entries.add(entry);
29
- return entry;
30
- }
1
+ /**
2
+ * Create a module worker, using a temporary blob for cross-origin URLs, and register it in the pool.
3
+ *
4
+ * @param {string} url Worker module URL.
5
+ * @param {Object|null|undefined} pool Optional owner of the worker entry.
6
+ *
7
+ * @returns {Object} The worker entry, including its URL and optional blob URL.
8
+ *
9
+ * @throws {Error} If Web Workers are unavailable.
10
+ */
11
+ export function createGeometryWorker(url, pool) {
12
+ if (typeof Worker === 'undefined') throw /* alloc */ new Error('Web Workers are required to prepare source geometry');
13
+ let workerUrl = url, blobUrl, worker;
14
+ if (globalThis.location) {
15
+ const resolved = /* alloc */ new URL(url, location.href);
16
+ if ((resolved.protocol === 'https:' || resolved.protocol === 'http:') && resolved.origin !== location.origin) {
17
+ blobUrl = URL.createObjectURL(/* alloc */ new Blob(/* alloc */ [`import ${JSON.stringify(resolved.href)};`],
18
+ /* alloc */ { type: 'text/javascript' }));
19
+ workerUrl = blobUrl;
20
+ }
21
+ }
22
+ try {
23
+ worker = /* alloc */ new Worker(workerUrl, /* alloc */ { type: 'module' });
24
+ } finally {
25
+ if (!worker && blobUrl) URL.revokeObjectURL(blobUrl);
26
+ }
27
+ const entry = /* alloc */ { url, pool, worker, blobUrl };
28
+ if (pool) pool.entries.add(entry);
29
+ return entry;
30
+ }
@@ -1,34 +1,34 @@
1
- import { assembleAreaGeometry } from '../geometry/assembleAreaGeometry.js';
2
- import { onVectorTileMessage } from './vectorTileWorker.js';
3
- import { onCogMessage } from './cogWorker.js';
4
- import { onModelMessage } from './modelWorker.js';
5
-
6
- /**
7
- * Route worker requests to the appropriate source handler or assemble and transfer area geometry.
8
- *
9
- * @param {MessageEvent} event Worker request.
10
- */
11
- export function onGeometryMessage(event) {
12
- if (event.data.type === 'model') {
13
- onModelMessage(event);
14
- return;
15
- }
16
- if (event.data.type === 'cog') {
17
- onCogMessage(event);
18
- return;
19
- }
20
- if (event.data.type === 'vector') {
21
- onVectorTileMessage(event);
22
- return;
23
- }
24
- try {
25
- const data = assembleAreaGeometry(event.data);
26
- const transfers = /* alloc */ [data.positions.buffer, data.normals.buffer, data.colors.buffer, data.uvs.buffer];
27
- if (data.instanceOffsets) transfers.push(data.instanceOffsets.buffer);
28
- self.postMessage(data, transfers);
29
- } catch (error) {
30
- self.postMessage(/* alloc */ { error: /* alloc */ { name: error.name, message: error.message } });
31
- }
32
- }
33
-
34
- self.addEventListener('message', onGeometryMessage);
1
+ import { assembleAreaGeometry } from '../geometry/assembleAreaGeometry.js';
2
+ import { onVectorTileMessage } from './vectorTileWorker.js';
3
+ import { onCogMessage } from './cogWorker.js';
4
+ import { onModelMessage } from './modelWorker.js';
5
+
6
+ /**
7
+ * Route worker requests to the appropriate source handler or assemble and transfer area geometry.
8
+ *
9
+ * @param {MessageEvent} event Worker request.
10
+ */
11
+ export function onGeometryMessage(event) {
12
+ if (event.data.type === 'model') {
13
+ onModelMessage(event);
14
+ return;
15
+ }
16
+ if (event.data.type === 'cog') {
17
+ onCogMessage(event);
18
+ return;
19
+ }
20
+ if (event.data.type === 'vector') {
21
+ onVectorTileMessage(event);
22
+ return;
23
+ }
24
+ try {
25
+ const data = assembleAreaGeometry(event.data);
26
+ const transfers = /* alloc */ [data.positions.buffer, data.normals.buffer, data.colors.buffer, data.uvs.buffer];
27
+ if (data.instanceOffsets) transfers.push(data.instanceOffsets.buffer);
28
+ self.postMessage(data, transfers);
29
+ } catch (error) {
30
+ self.postMessage(/* alloc */ { error: /* alloc */ { name: error.name, message: error.message } });
31
+ }
32
+ }
33
+
34
+ self.addEventListener('message', onGeometryMessage);
@@ -1,18 +1,18 @@
1
- import { workerMapByLayer } from '../weakmaps/workerMapByLayer.js';
2
- import { runSourceWorker } from './runSourceWorker.js';
3
-
4
- /**
5
- * Request a COG header or tile through the shared geometry worker pool.
6
- *
7
- * @param {Object} context Layer, source URL, asset and worker URL.
8
- * @param {number|undefined} z Tile zoom, or undefined for the header.
9
- * @param {number|undefined} x Tile column.
10
- * @param {number|undefined} y Tile row.
11
- * @param {AbortSignal|undefined} signal Cancellation signal.
12
- *
13
- * @returns {Promise<*>} The header or tile returned by the worker.
14
- */
15
- export function getCogInWorker(context, z, x, y, signal) {
16
- return runSourceWorker(context.layer._map || workerMapByLayer.get(context.layer), context.workerUrl,
17
- /* alloc */ { type: 'cog', url: context.url, asset: context.asset, z, x, y }, signal);
18
- }
1
+ import { workerMapByLayer } from '../weakmaps/workerMapByLayer.js';
2
+ import { runSourceWorker } from './runSourceWorker.js';
3
+
4
+ /**
5
+ * Request a COG header or tile through the shared geometry worker pool.
6
+ *
7
+ * @param {Object} context Layer, source URL, asset and worker URL.
8
+ * @param {number|undefined} z Tile zoom, or undefined for the header.
9
+ * @param {number|undefined} x Tile column.
10
+ * @param {number|undefined} y Tile row.
11
+ * @param {AbortSignal|undefined} signal Cancellation signal.
12
+ *
13
+ * @returns {Promise<*>} The header or tile returned by the worker.
14
+ */
15
+ export function getCogInWorker(context, z, x, y, signal) {
16
+ return runSourceWorker(context.layer._map || workerMapByLayer.get(context.layer), context.workerUrl,
17
+ /* alloc */ { type: 'cog', url: context.url, asset: context.asset, z, x, y }, signal);
18
+ }
@@ -1,17 +1,17 @@
1
- import { prepareModel } from '../models/prepareModel.js';
2
-
3
- /**
4
- * Prepare a model in the worker and transfer its buffers, reporting errors to the caller.
5
- *
6
- * @param {MessageEvent} event Request containing the model URL.
7
- *
8
- * @returns {Promise<void>} Resolves after the response is posted.
9
- */
10
- export async function onModelMessage({ data }) {
11
- try {
12
- const result = await prepareModel(data.url);
13
- self.postMessage(/* alloc */ { description: result.description, images: result.images }, result.transfers);
14
- } catch (error) {
15
- self.postMessage(/* alloc */ { error: /* alloc */ { name: error.name, message: error.message } });
16
- }
17
- }
1
+ import { prepareModel } from '../models/prepareModel.js';
2
+
3
+ /**
4
+ * Prepare a model in the worker and transfer its buffers, reporting errors to the caller.
5
+ *
6
+ * @param {MessageEvent} event Request containing the model URL.
7
+ *
8
+ * @returns {Promise<void>} Resolves after the response is posted.
9
+ */
10
+ export async function onModelMessage({ data }) {
11
+ try {
12
+ const result = await prepareModel(data.url);
13
+ self.postMessage(/* alloc */ { description: result.description, images: result.images }, result.transfers);
14
+ } catch (error) {
15
+ self.postMessage(/* alloc */ { error: /* alloc */ { name: error.name, message: error.message } });
16
+ }
17
+ }