leaflet-city-mapper 0.0.3 → 0.0.5

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 (1085) hide show
  1. package/README.md +44 -36
  2. package/cucumber.mjs +9 -9
  3. package/dist/leaflet-city-mapper-src.js +16302 -0
  4. package/dist/leaflet-city-mapper-src.js.map +7 -0
  5. package/dist/leaflet-city-mapper-worker-src.js +955 -0
  6. package/dist/leaflet-city-mapper-worker-src.js.map +7 -0
  7. package/dist/leaflet-city-mapper-worker.js +2 -0
  8. package/dist/leaflet-city-mapper-worker.js.map +7 -0
  9. package/dist/leaflet-city-mapper.js +4 -3
  10. package/dist/leaflet-city-mapper.js.map +4 -4
  11. package/libs/leaflet-lens.js +122 -0
  12. package/libs/leaflet.js +76 -0
  13. package/libs/openlayers-bindings.js +1128 -0
  14. package/libs/openlayers-bindings.min.js +99 -0
  15. package/libs/openlayers-bindings.min.js.map +7 -0
  16. package/package.json +6 -4
  17. package/src/animations/cancelCameraAnimation.js +17 -0
  18. package/src/animations/cancelGridFade.js +15 -0
  19. package/src/animations/endZoom.js +27 -0
  20. package/src/animations/mapAnimateCamera.js +26 -0
  21. package/src/animations/mapStopPitchBearingAnimation.js +6 -0
  22. package/src/animations/onZoomAnim.js +19 -0
  23. package/src/animations/renderPendingZoomAnimation.js +13 -0
  24. package/src/animations/runCameraAnimations.js +33 -0
  25. package/src/animations/runGridFades.js +20 -0
  26. package/src/animations/runMarkerPanFrame.js +14 -0
  27. package/src/animations/scheduleCameraAnimation.js +14 -0
  28. package/src/animations/scheduleGridFade.js +16 -0
  29. package/src/animations/scheduleMarkerPan.js +11 -0
  30. package/src/{scene → animations}/startZoom.js +5 -1
  31. package/src/animations/synchronizeZoomView.js +28 -0
  32. package/src/animations/updateZoomCamera.js +21 -0
  33. package/src/archives/decodeDirectory.js +44 -26
  34. package/src/archives/decodeHeader.js +15 -11
  35. package/src/archives/decompress.js +7 -2
  36. package/src/archives/findDirectoryEntry.js +9 -0
  37. package/src/archives/findTile.js +31 -0
  38. package/src/archives/getDirectoryEntries.js +19 -0
  39. package/src/archives/getHeader.js +12 -4
  40. package/src/archives/getTileData.js +13 -0
  41. package/src/archives/getZxy.js +10 -65
  42. package/src/archives/loadDirectory.js +3 -3
  43. package/src/archives/loadSource.js +25 -10
  44. package/src/archives/readArchiveRange.js +34 -0
  45. package/src/archives/readVarint.js +19 -0
  46. package/src/archives/tileId.js +7 -3
  47. package/src/astronomy/horizontalPosition.js +16 -0
  48. package/src/astronomy/moonPosition.js +18 -0
  49. package/src/astronomy/solarPosition.js +18 -0
  50. package/src/astronomy/solarTime.js +11 -0
  51. package/src/camera/cameraMapReady.js +5 -1
  52. package/src/camera/cleanupCameraMap.js +10 -5
  53. package/src/camera/createSceneCamera.js +21 -0
  54. package/src/camera/fitCameraBounds.js +36 -26
  55. package/src/camera/getBearing.js +5 -0
  56. package/src/camera/getPitch.js +5 -0
  57. package/src/camera/initializeCameraMap.js +10 -3
  58. package/src/camera/mapCamera.js +23 -43
  59. package/src/camera/mapContainerPointToLayerPoint.js +6 -4
  60. package/src/camera/mapGetBearing.js +5 -1
  61. package/src/camera/mapGetBounds.js +14 -8
  62. package/src/camera/mapGetBoundsCenterZoom.js +6 -3
  63. package/src/camera/mapGetBoundsZoom.js +19 -9
  64. package/src/camera/mapGetCenterLayerPoint.js +3 -2
  65. package/src/camera/mapGetPitch.js +5 -1
  66. package/src/camera/mapLayerPointToContainerPoint.js +5 -4
  67. package/src/camera/mapLimitCenter.js +13 -8
  68. package/src/camera/mapLimitOffset.js +7 -3
  69. package/src/camera/mapPanBy.js +5 -4
  70. package/src/camera/mapPanInside.js +17 -11
  71. package/src/camera/mapResetNorth.js +4 -1
  72. package/src/camera/mapResetNorthPitch.js +4 -1
  73. package/src/camera/mapSetBearing.js +3 -1
  74. package/src/camera/mapSetPitch.js +3 -1
  75. package/src/camera/mapSetPitchAndBearing.js +21 -11
  76. package/src/camera/mapSetZoomAround.js +12 -8
  77. package/src/camera/mapTryAnimatedPan.js +3 -2
  78. package/src/camera/mapUpdateCameraOverlays.js +3 -2
  79. package/src/camera/updateMapCamera.js +50 -0
  80. package/src/camera/updateSceneCamera.js +57 -0
  81. package/src/camera/updateSky.js +21 -14
  82. package/src/cog/decodeCogTile.js +24 -0
  83. package/src/cog/finiteCogValues.js +5 -0
  84. package/src/cog/getCogAssetEntry.js +15 -0
  85. package/src/cog/getCogBase.js +10 -0
  86. package/src/cog/getCogHeader.js +3 -0
  87. package/src/cog/getCogProfile.js +16 -0
  88. package/src/cog/getCogTile.js +12 -0
  89. package/src/cog/getColorTile.js +25 -0
  90. package/src/cog/getElevationTile.js +16 -0
  91. package/src/cog/hasCogProjection.js +9 -0
  92. package/src/cog/initCog.js +7 -0
  93. package/src/cog/invalidCogFullResponse.js +3 -0
  94. package/src/cog/openCog.js +30 -0
  95. package/src/cog/openCogAsset.js +14 -0
  96. package/src/cog/readCog.js +25 -0
  97. package/src/cog/readCogBlock.js +8 -0
  98. package/src/cog/readCogBody.js +20 -0
  99. package/src/cog/readCogDirectories.js +20 -0
  100. package/src/cog/readCogDirectory.js +21 -0
  101. package/src/cog/readCogLevel.js +27 -0
  102. package/src/cog/readCogTag.js +15 -0
  103. package/src/cog/validCogDimensions.js +6 -0
  104. package/src/cog/validCogEncoding.js +5 -0
  105. package/src/cog/validCogGeoArrays.js +8 -0
  106. package/src/cog/validCogGrid.js +9 -0
  107. package/src/cog/validCogTileCoordinates.js +4 -0
  108. package/src/cog/validateCogContainer.js +9 -0
  109. package/src/cog/validateCogContentRange.js +8 -0
  110. package/src/cog/validateCogOffsets.js +10 -0
  111. package/src/cog/validateCogRange.js +7 -0
  112. package/src/cog/validateCogResponse.js +15 -0
  113. package/src/collision/collider.js +31 -24
  114. package/src/collision/hiddenLightHit.js +8 -0
  115. package/src/collision/indexTriangle.js +11 -0
  116. package/src/collision/insideMesh.js +53 -0
  117. package/src/collision/insideWalker.js +46 -0
  118. package/src/collision/intersectMeshes.js +32 -133
  119. package/src/collision/localRay.js +21 -0
  120. package/src/collision/mergeHits.js +11 -0
  121. package/src/collision/rayBounds.js +19 -0
  122. package/src/collision/readTriangle.js +20 -0
  123. package/src/collision/sortHits.js +5 -11
  124. package/src/collision/trafficCollision.js +60 -0
  125. package/src/collision/transformTriangle.js +9 -0
  126. package/src/collision/triangleDistance.js +21 -0
  127. package/src/collision/worldHit.js +18 -0
  128. package/src/colors/formatRGB.js +8 -0
  129. package/src/colors/mixColor.js +7 -0
  130. package/src/{utils → colors}/parseColor.js +5 -5
  131. package/src/controls/addCameraHandler.js +11 -0
  132. package/src/controls/adjustCameraDrag.js +9 -3
  133. package/src/controls/cameraControls.js +56 -22
  134. package/src/controls/cameraDragClick.js +8 -7
  135. package/src/controls/cameraDragContextMenu.js +3 -2
  136. package/src/controls/cameraDragDown.js +21 -18
  137. package/src/controls/cameraDragEnd.js +3 -2
  138. package/src/controls/cameraDragMove.js +11 -6
  139. package/src/controls/changeCameraTouch.js +8 -2
  140. package/src/controls/cleanupCameraTouch.js +23 -16
  141. package/src/controls/compassAddHooks.js +13 -10
  142. package/src/controls/compassOrientation.js +2 -1
  143. package/src/controls/containerResizeAddHooks.js +3 -3
  144. package/src/controls/dragCamera.js +18 -14
  145. package/src/controls/endAllCameraDrags.js +4 -2
  146. package/src/controls/endAllCameraTouches.js +4 -2
  147. package/src/controls/endCameraTouch.js +3 -2
  148. package/src/controls/endCameraTouchEvent.js +5 -2
  149. package/src/controls/failCompassPermission.js +4 -0
  150. package/src/controls/finishCompassPermission.js +10 -9
  151. package/src/controls/loadCameraControls.js +2 -2
  152. package/src/controls/moveCameraTouch.js +18 -9
  153. package/src/controls/pitchDragAddHooks.js +3 -1
  154. package/src/controls/refreshRotateControl.js +9 -6
  155. package/src/controls/removeCameraDrag.js +7 -4
  156. package/src/controls/rotateButtonClick.js +8 -4
  157. package/src/controls/rotateButtonKeydown.js +8 -4
  158. package/src/controls/rotateControl.js +3 -2
  159. package/src/controls/rotateOnAdd.js +32 -28
  160. package/src/controls/shiftRotateAddHooks.js +6 -4
  161. package/src/controls/shiftRotateWheel.js +4 -2
  162. package/src/controls/startCameraTouch.js +34 -22
  163. package/src/core/adjustCameraMarkerPan.js +26 -20
  164. package/src/core/cameraCircleBounds.js +3 -2
  165. package/src/core/cameraMarkerDrag.js +16 -13
  166. package/src/core/cameraMarkerOnDrag.js +7 -2
  167. package/src/core/closestCameraLayerPoint.js +3 -2
  168. package/src/core/fireRasterLoad.js +3 -2
  169. package/src/core/gridlayerGetEvents.js +7 -4
  170. package/src/core/gridlayerGetTiledPixelBounds.js +8 -4
  171. package/src/core/initializeGridContainer.js +3 -2
  172. package/src/core/initializeNativeLayer.js +19 -20
  173. package/src/core/layerCallInitHooks.js +15 -0
  174. package/src/core/markerGetEvents.js +6 -2
  175. package/src/core/markerInitInteraction.js +4 -2
  176. package/src/core/markerSetIcon.js +6 -3
  177. package/src/core/markerSetPos.js +11 -6
  178. package/src/core/markerSetRotation.js +9 -7
  179. package/src/core/markerUpdateZIndex.js +10 -5
  180. package/src/core/popupAdjustPan.js +25 -19
  181. package/src/core/popupGetEvents.js +5 -2
  182. package/src/core/popupUpdatePosition.js +6 -3
  183. package/src/core/redrawPath.js +6 -0
  184. package/src/core/removeLayer.js +23 -0
  185. package/src/core/setRotation.js +5 -0
  186. package/src/core/tooltipGetEvents.js +5 -2
  187. package/src/core/tooltipSetPosition.js +6 -3
  188. package/src/core/updateGridOpacity.js +9 -5
  189. package/src/core/whenReady.js +11 -0
  190. package/src/geometry/addBridges.js +33 -87
  191. package/src/geometry/addGeneratedTriangle.js +7 -0
  192. package/src/{sources/addTriangle.js → geometry/appendAreaTriangle.js} +5 -5
  193. package/src/geometry/appendRouteDash.js +15 -0
  194. package/src/geometry/appendRouteSegment.js +15 -0
  195. package/src/geometry/assembleAreaGeometry.js +41 -0
  196. package/src/geometry/boundsQuad.js +12 -0
  197. package/src/geometry/box.js +6 -1
  198. package/src/geometry/bridgeEdge.js +11 -0
  199. package/src/geometry/bridgeElevation.js +3 -1
  200. package/src/geometry/bridgeFaces.js +15 -0
  201. package/src/geometry/bridgePaths.js +11 -0
  202. package/src/geometry/bridgePolygon.js +31 -0
  203. package/src/geometry/bridgeSides.js +11 -0
  204. package/src/geometry/buildExtrudedPolygon.js +10 -0
  205. package/src/geometry/{build.js → buildGeometryParts.js} +10 -6
  206. package/src/geometry/buildProjectedPoint.js +21 -0
  207. package/src/{sources/buildAreaPolygon.js → geometry/buildProjectedPolygon.js} +25 -29
  208. package/src/geometry/circleAt.js +4 -2
  209. package/src/geometry/circleGeometry.js +34 -0
  210. package/src/geometry/clipLine.js +1 -1
  211. package/src/geometry/clipSegment.js +11 -7
  212. package/src/geometry/computeBounds.js +28 -12
  213. package/src/geometry/conformModelToTerrain.js +25 -14
  214. package/src/geometry/createLampRing.js +14 -0
  215. package/src/geometry/createModelGeometry.js +41 -0
  216. package/src/geometry/createRasterQuadGeometry.js +29 -0
  217. package/src/geometry/createTreeRing.js +15 -0
  218. package/src/geometry/crossVector.js +7 -0
  219. package/src/geometry/dashValues.js +14 -0
  220. package/src/geometry/dashedSegment.js +16 -0
  221. package/src/geometry/disk.js +1 -1
  222. package/src/geometry/diskAt.js +4 -2
  223. package/src/geometry/emitter.js +2 -2
  224. package/src/{sources → geometry}/generateTreeGeometry.js +5 -3
  225. package/src/geometry/indexBridge.js +30 -0
  226. package/src/{sources → geometry}/instanceAreaGeometry.js +9 -7
  227. package/src/{traffic/along.js → geometry/interpolateRoute.js} +8 -2
  228. package/src/geometry/lampPostGeometry.js +14 -8
  229. package/src/geometry/lightGeometry.js +3 -3
  230. package/src/geometry/line.js +21 -54
  231. package/src/geometry/lineJoin.js +26 -0
  232. package/src/geometry/markerImageBounds.js +11 -0
  233. package/src/geometry/markerQuadCorners.js +51 -0
  234. package/src/geometry/meshShadowBounds.js +24 -0
  235. package/src/geometry/nativeGeometry.js +11 -45
  236. package/src/geometry/offsetBelowGround.js +3 -0
  237. package/src/geometry/polygon.js +5 -4
  238. package/src/geometry/quad.js +8 -3
  239. package/src/geometry/restoreGeometry.js +23 -0
  240. package/src/geometry/roofCoverage.js +26 -52
  241. package/src/geometry/roofFootprint.js +32 -0
  242. package/src/geometry/routeGeometry.js +21 -0
  243. package/src/geometry/segment.js +3 -2
  244. package/src/geometry/setVertexColor.js +3 -1
  245. package/src/geometry/shadowBounds.js +23 -0
  246. package/src/geometry/subtractRoofTile.js +19 -0
  247. package/src/geometry/subtractVector.js +6 -0
  248. package/src/geometry/surface.js +3 -2
  249. package/src/geometry/terrainBuffers.js +29 -0
  250. package/src/geometry/terrainGrid.js +32 -0
  251. package/src/geometry/terrainTileGeometry.js +19 -0
  252. package/src/geometry/treeGeometry.js +7 -8
  253. package/src/geometry/triangle.js +8 -7
  254. package/src/geometry/validateTree.js +7 -0
  255. package/src/geometry/vertexNormals.js +10 -16
  256. package/src/geometry/{visit.js → visitNativeCoordinates.js} +2 -1
  257. package/src/{constants → globals}/CELL.js +0 -1
  258. package/src/globals/Compass.js +1 -0
  259. package/src/globals/ContainerResize.js +1 -0
  260. package/src/{constants → globals}/HEIGHT.js +1 -1
  261. package/src/globals/L.js +1 -0
  262. package/src/globals/PitchDrag.js +1 -0
  263. package/src/globals/ShiftRotate.js +1 -0
  264. package/src/globals/TouchMode.js +1 -0
  265. package/src/globals/alphaBlend.js +12 -0
  266. package/src/globals/archiveDecoder.js +1 -0
  267. package/src/globals/archiveNorthWest.js +1 -0
  268. package/src/globals/archiveSouthEast.js +1 -0
  269. package/src/globals/atmosphereColor.js +1 -0
  270. package/src/globals/atmosphereStops.js +22 -0
  271. package/src/globals/blobParts.js +1 -0
  272. package/src/globals/cameraAngles.js +1 -0
  273. package/src/globals/cameraAnimatedOptions.js +3 -0
  274. package/src/globals/cameraAnimationFrame.js +1 -0
  275. package/src/globals/cameraAnimations.js +1 -0
  276. package/src/globals/cameraBearingSensitivity.js +1 -0
  277. package/src/globals/cameraDragSensitivity.js +1 -0
  278. package/src/globals/cameraDrags.js +1 -0
  279. package/src/globals/cameraEmptyOptions.js +1 -0
  280. package/src/globals/cameraFocusOptions.js +3 -0
  281. package/src/globals/cameraFov.js +3 -0
  282. package/src/globals/cameraListenerOptions.js +4 -0
  283. package/src/globals/cameraTouchStates.js +1 -0
  284. package/src/globals/cameraZeroPadding.js +1 -0
  285. package/src/globals/cogTags.js +1 -0
  286. package/src/globals/colorLayout.js +8 -0
  287. package/src/globals/coreEventTypes.js +4 -0
  288. package/src/globals/coreMatrixKeys.js +4 -0
  289. package/src/globals/coreQuadIndices.js +1 -0
  290. package/src/globals/coreQuadUV.js +1 -0
  291. package/src/globals/coreSampler.js +4 -0
  292. package/src/globals/coreWhite.js +1 -0
  293. package/src/globals/cosObliquity.js +3 -0
  294. package/src/globals/coverageTiles.js +1 -0
  295. package/src/globals/defaultMaterial.js +1 -0
  296. package/src/globals/degrees.js +1 -0
  297. package/src/globals/demBuffer.js +4 -0
  298. package/src/globals/demLayout.js +3 -0
  299. package/src/globals/demSize.js +1 -0
  300. package/src/globals/demTarget.js +3 -0
  301. package/src/globals/demTexture.js +5 -0
  302. package/src/globals/depthBindGroup.js +9 -0
  303. package/src/globals/depthTexture.js +5 -0
  304. package/src/globals/directoryReader.js +4 -0
  305. package/src/globals/disabledShadow.js +1 -0
  306. package/src/globals/drawEntries.js +1 -0
  307. package/src/globals/drawFrameEntry.js +7 -0
  308. package/src/globals/drawMeshEntry.js +7 -0
  309. package/src/globals/drawSamplerEntries.js +18 -0
  310. package/src/globals/drawTerrainEntry.js +4 -0
  311. package/src/globals/drawTextureEntries.js +18 -0
  312. package/src/globals/earthCirc.js +1 -0
  313. package/src/{constants → globals}/elevationWGSL.js +1 -1
  314. package/src/globals/fragmentShader.js +3 -0
  315. package/src/globals/frameBuffer.js +4 -0
  316. package/src/globals/frameCommands.js +1 -0
  317. package/src/globals/frameLayoutEntry.js +7 -0
  318. package/src/globals/geometryDecoder.js +1 -0
  319. package/src/globals/geometryEmpty.js +1 -0
  320. package/src/globals/geometryImageOptions.js +4 -0
  321. package/src/globals/geometryPixelStates.js +1 -0
  322. package/src/globals/geometryQuaternion.js +1 -0
  323. package/src/globals/geometryScale.js +1 -0
  324. package/src/globals/geometrySemantics.js +5 -0
  325. package/src/globals/geometryTranslation.js +1 -0
  326. package/src/globals/geometryWorkerUrl.js +3 -0
  327. package/src/globals/gridEvents.js +1 -0
  328. package/src/globals/gridFadeFrame.js +1 -0
  329. package/src/globals/halfRadians.js +1 -0
  330. package/src/globals/headerBounds.js +1 -0
  331. package/src/globals/headerFlags.js +1 -0
  332. package/src/globals/headerOffsets.js +5 -0
  333. package/src/globals/hull.js +10 -0
  334. package/src/globals/instanceLayout.js +9 -0
  335. package/src/globals/lampDirections.js +8 -0
  336. package/src/globals/layerCallInitHooks.js +1 -0
  337. package/src/globals/layerProto.js +1 -0
  338. package/src/globals/lightScale.js +1 -0
  339. package/src/{constants → globals}/limbs.js +0 -1
  340. package/src/globals/loading.js +1 -0
  341. package/src/globals/mapMethods.js +1 -0
  342. package/src/globals/markerMethods.js +1 -0
  343. package/src/globals/markerPanFrame.js +1 -0
  344. package/src/globals/meshBindGroup.js +4 -0
  345. package/src/globals/meshBuffer.js +4 -0
  346. package/src/globals/meshCopySize.js +1 -0
  347. package/src/globals/meshImage.js +4 -0
  348. package/src/globals/meshLayoutEntry.js +8 -0
  349. package/src/globals/meshOffsets.js +1 -0
  350. package/src/globals/meshPipeline.js +27 -0
  351. package/src/globals/meshStack.js +3 -0
  352. package/src/globals/meshTarget.js +3 -0
  353. package/src/globals/nativeMethodHandlers.js +31 -0
  354. package/src/globals/nextId.js +1 -0
  355. package/src/globals/normalLayout.js +8 -0
  356. package/src/globals/parts.js +24 -0
  357. package/src/globals/pendingGridFades.js +1 -0
  358. package/src/globals/pendingInitializations.js +1 -0
  359. package/src/globals/pendingMapChanges.js +1 -0
  360. package/src/globals/pendingMarkerPan.js +1 -0
  361. package/src/globals/pendingPlacements.js +1 -0
  362. package/src/globals/pendingRasterLoads.js +1 -0
  363. package/src/globals/pendingZoomAnimations.js +1 -0
  364. package/src/globals/pipelineLayout.js +3 -0
  365. package/src/globals/popupEvents.js +1 -0
  366. package/src/globals/popupPan.js +1 -0
  367. package/src/globals/popupPosition.js +1 -0
  368. package/src/globals/positionLayout.js +8 -0
  369. package/src/globals/programEntries.js +1 -0
  370. package/src/globals/programLayout.js +3 -0
  371. package/src/globals/radians.js +1 -0
  372. package/src/globals/rasterBuffer.js +4 -0
  373. package/src/globals/rasterIndices.js +1 -0
  374. package/src/globals/rasterNormals.js +1 -0
  375. package/src/globals/rasterPoint.js +4 -0
  376. package/src/globals/rasterPositions.js +1 -0
  377. package/src/globals/rasterSampler.js +6 -0
  378. package/src/globals/rasterTexture.js +5 -0
  379. package/src/globals/rasterUVs.js +1 -0
  380. package/src/globals/removeLayer.js +1 -0
  381. package/src/globals/renderEmpty.js +1 -0
  382. package/src/globals/ringDirections.js +49 -0
  383. package/src/globals/roofBindGroup.js +17 -0
  384. package/src/globals/roofBlitSampler.js +4 -0
  385. package/src/globals/roofBuffer.js +4 -0
  386. package/src/globals/roofCommands.js +1 -0
  387. package/src/globals/roofCopySize.js +1 -0
  388. package/src/globals/roofImage.js +3 -0
  389. package/src/globals/roofMin.js +4 -0
  390. package/src/globals/roofOpacities.js +1 -0
  391. package/src/globals/roofPass.js +13 -0
  392. package/src/globals/roofPipeline.js +29 -0
  393. package/src/globals/roofSampler.js +4 -0
  394. package/src/globals/roofShader.js +16 -0
  395. package/src/globals/roofSignatures.js +1 -0
  396. package/src/globals/roofSize.js +4 -0
  397. package/src/globals/roofTarget.js +3 -0
  398. package/src/globals/roofTexture.js +5 -0
  399. package/src/globals/roofTiles.js +1 -0
  400. package/src/globals/roundProfile.js +7 -0
  401. package/src/globals/samplerLayoutEntries.js +36 -0
  402. package/src/globals/sceneCleanupFields.js +1 -0
  403. package/src/globals/sceneEmptyOptions.js +1 -0
  404. package/src/globals/scenePass.js +19 -0
  405. package/src/globals/sceneSunlightUniforms.js +3 -0
  406. package/src/globals/sceneTransferFields.js +1 -0
  407. package/src/globals/sceneWalkHandlers.js +1 -0
  408. package/src/globals/shadowBindGroup.js +10 -0
  409. package/src/globals/shadowBounds.js +4 -0
  410. package/src/globals/shadowCamera.js +15 -0
  411. package/src/globals/shadowDepthLayout.js +9 -0
  412. package/src/globals/shadowHigh.js +1 -0
  413. package/src/globals/shadowInstanceLayouts.js +4 -0
  414. package/src/globals/shadowLayouts.js +3 -0
  415. package/src/globals/shadowLow.js +1 -0
  416. package/src/globals/shadowMeshLayout.js +10 -0
  417. package/src/globals/shadowOffsets.js +1 -0
  418. package/src/globals/shadowPass.js +9 -0
  419. package/src/globals/shadowPipeline.js +24 -0
  420. package/src/globals/shadowPipelineLayout.js +3 -0
  421. package/src/globals/shadowShader.js +3 -0
  422. package/src/globals/shadowTexture.js +5 -0
  423. package/src/globals/shadowValues.js +1 -0
  424. package/src/globals/sinObliquity.js +3 -0
  425. package/src/globals/sizes.js +6 -0
  426. package/src/globals/sunBindGroup.js +20 -0
  427. package/src/globals/tau.js +1 -0
  428. package/src/globals/terrainLayoutEntry.js +8 -0
  429. package/src/globals/textureLayoutEntries.js +41 -0
  430. package/src/globals/tiledBounds.js +1 -0
  431. package/src/globals/tooltipEvents.js +1 -0
  432. package/src/globals/tooltipPosition.js +1 -0
  433. package/src/globals/trafficClocks.js +1 -0
  434. package/src/globals/trafficEmptyList.js +1 -0
  435. package/src/globals/trafficEmptyOptions.js +1 -0
  436. package/src/globals/trafficRouteMaterial.js +1 -0
  437. package/src/{constants → globals}/trafficShader.js +49 -49
  438. package/src/globals/triangleContexts.js +1 -0
  439. package/src/globals/uVLayout.js +8 -0
  440. package/src/{constants → globals}/vehicles.js +24 -9
  441. package/src/globals/vertexShader.js +3 -0
  442. package/src/globals/wantedTiles.js +1 -0
  443. package/src/gpu/initializeRendererResources.js +36 -0
  444. package/src/gpu/initializeSharedRenderer.js +52 -0
  445. package/src/gpu/mountRenderer.js +26 -0
  446. package/src/{scene → gpu}/releaseRenderer.js +2 -2
  447. package/src/gpu/rendererDeviceError.js +16 -0
  448. package/src/gpu/rendererDeviceLost.js +16 -0
  449. package/src/gpu/reportShaderCompilation.js +17 -0
  450. package/src/gpu/requestAdapter.js +12 -0
  451. package/src/gpu/requestDevice.js +9 -0
  452. package/src/index.js +34 -37
  453. package/src/layer-controls/layerCountTitle.js +6 -0
  454. package/src/{scene → layer-controls}/placeEntry.js +3 -1
  455. package/src/layer-controls/placeEntryElement.js +22 -0
  456. package/src/{scene → layer-controls}/removeEntry.js +2 -0
  457. package/src/layer-controls/renderLayerCount.js +20 -0
  458. package/src/{scene → layer-controls}/replaceEntry.js +4 -2
  459. package/src/{scene → layer-controls}/runPlacements.js +4 -2
  460. package/src/{scene → layer-controls}/underEntry.js +2 -3
  461. package/src/layer-controls/updateLayerCount.js +24 -0
  462. package/src/lighting/cacheLightGrid.js +14 -5
  463. package/src/lighting/collectLightMeshes.js +4 -1
  464. package/src/lighting/lightGrid.js +10 -9
  465. package/src/lighting/updatePointLights.js +19 -12
  466. package/src/lighting/visitLightCells.js +13 -0
  467. package/src/lighting/visitLightGridCells.js +8 -0
  468. package/src/lighting/worldLights.js +10 -12
  469. package/src/lighting/writeLightCell.js +5 -0
  470. package/src/materials/createProgram.js +76 -0
  471. package/src/materials/createProgramLayout.js +36 -0
  472. package/src/materials/createProgramUniforms.js +17 -0
  473. package/src/materials/modelMaterialFor.js +21 -0
  474. package/src/materials/prepareMeshCutout.js +12 -0
  475. package/src/materials/terrainRasterProgram.js +58 -0
  476. package/src/materials/validateRoofMaterial.js +10 -0
  477. package/src/models/applyModelTransform.js +14 -0
  478. package/src/models/buildModelNodes.js +14 -0
  479. package/src/models/createModelContext.js +15 -0
  480. package/src/models/decodeModel.js +9 -6
  481. package/src/models/loadBuffer.js +2 -2
  482. package/src/models/loadModel.js +31 -51
  483. package/src/models/loadModelResources.js +20 -0
  484. package/src/models/modelNode.js +26 -71
  485. package/src/models/normalizeAccessor.js +11 -0
  486. package/src/models/readAccessor.js +11 -31
  487. package/src/models/readAccessorValue.js +7 -0
  488. package/src/models/readAccessorValues.js +10 -6
  489. package/src/models/readModelAttributes.js +20 -0
  490. package/src/models/readModelIndices.js +16 -0
  491. package/src/models/readSparseAccessor.js +19 -0
  492. package/src/models/releaseModelResources.js +10 -0
  493. package/src/{core → native}/beforeNativeRender.js +1 -1
  494. package/src/native/bypassNativeEvent.js +11 -0
  495. package/src/{core → native}/disposeNativeLayer.js +14 -10
  496. package/src/native/forwardNativeError.js +3 -0
  497. package/src/native/handleNativeMapEvent.js +28 -0
  498. package/src/{core → native}/hideTargets.js +6 -4
  499. package/src/{core → native}/initNativeGPU.js +14 -7
  500. package/src/native/isCurrentNativeLayer.js +7 -0
  501. package/src/native/nativeEventSource.js +18 -0
  502. package/src/{core → native}/nativeEvents.js +8 -3
  503. package/src/native/nativeLayer.js +79 -0
  504. package/src/{core → native}/nativeLayerMethod.js +17 -3
  505. package/src/native/pruneNativeResources.js +20 -0
  506. package/src/{core → native}/putNativeMesh.js +12 -9
  507. package/src/native/quadNativeMesh.js +20 -0
  508. package/src/native/readyNativeGPU.js +10 -0
  509. package/src/native/refreshNativeLayer.js +35 -0
  510. package/src/native/refreshNativeLayerContract.js +9 -0
  511. package/src/{core → native}/rejectNativeReady.js +1 -0
  512. package/src/{core → native}/removeNativeEvents.js +2 -1
  513. package/src/native/removeTargets.js +13 -0
  514. package/src/native/reorderNativeLayer.js +17 -0
  515. package/src/{core → native}/resolveNativeReady.js +1 -0
  516. package/src/{core → native}/styleNativeMesh.js +6 -1
  517. package/src/{core → native}/syncGridLayer.js +11 -4
  518. package/src/{core → native}/syncImageOverlay.js +1 -1
  519. package/src/{core → native}/syncMarker.js +5 -3
  520. package/src/native/syncVectorLayer.js +29 -0
  521. package/src/{core → native}/synchronizeNativeLayer.js +10 -18
  522. package/src/native/updateNativeHover.js +7 -0
  523. package/src/native/updateNativeLayerView.js +10 -0
  524. package/src/picking/findFeature.js +17 -10
  525. package/src/picking/hit.js +23 -14
  526. package/src/picking/hitColliderCell.js +19 -0
  527. package/src/picking/hitMesh.js +12 -16
  528. package/src/picking/onClick.js +6 -2
  529. package/src/picking/onPointerLeave.js +6 -2
  530. package/src/picking/onPointerMove.js +15 -6
  531. package/src/picking/raycast.js +50 -38
  532. package/src/picking/setHighlight.js +16 -8
  533. package/src/picking/shouldSkipOther.js +5 -1
  534. package/src/picking/showFeature.js +21 -13
  535. package/src/picking/validateCameraInverse.js +8 -0
  536. package/src/projections/cameraAngles.js +14 -0
  537. package/src/projections/groundBounds.js +18 -0
  538. package/src/projections/localPixelForGeometry.js +7 -0
  539. package/src/projections/localPosition.js +11 -0
  540. package/src/projections/markerCameraIconPoint.js +12 -0
  541. package/src/projections/projectBridgePoint.js +5 -0
  542. package/src/projections/projectCameraPoint.js +27 -0
  543. package/src/projections/projectCelestialBody.js +13 -0
  544. package/src/projections/projectRing.js +26 -0
  545. package/src/projections/projectTreePoint.js +17 -0
  546. package/src/projections/toPoint.js +5 -0
  547. package/src/{camera/animationPoint.js → projections/transformZoomAnimationPoint.js} +5 -1
  548. package/src/projections/walkerLocalPosition.js +18 -0
  549. package/src/raster/addRasterTile.js +55 -90
  550. package/src/raster/comparePendingTiles.js +2 -2
  551. package/src/raster/createRasterMesh.js +78 -44
  552. package/src/raster/finishRasterAttachment.js +17 -0
  553. package/src/raster/finishRasterTile.js +58 -41
  554. package/src/raster/getRasterEvents.js +3 -3
  555. package/src/raster/getRasterTileSize.js +5 -3
  556. package/src/raster/initRaster.js +28 -24
  557. package/src/raster/isRasterLoading.js +8 -0
  558. package/src/raster/loadRasterTile.js +11 -7
  559. package/src/raster/onPMTileAdd.js +11 -7
  560. package/src/raster/onPMTileRemove.js +8 -4
  561. package/src/raster/pruneRasterTiles.js +23 -14
  562. package/src/raster/pumpRasterTiles.js +14 -8
  563. package/src/raster/rasterTileRange.js +23 -0
  564. package/src/raster/readyRaster.js +14 -10
  565. package/src/raster/registerTerrainTile.js +14 -9
  566. package/src/raster/releaseRasterTile.js +20 -14
  567. package/src/raster/releaseRasterTiles.js +15 -9
  568. package/src/raster/removeRasterTile.js +10 -5
  569. package/src/raster/{reportError.js → reportRasterError.js} +3 -3
  570. package/src/raster/retainRasterTiles.js +16 -0
  571. package/src/raster/setPMTileOpacity.js +4 -4
  572. package/src/raster/setPMTileZIndex.js +4 -4
  573. package/src/raster/setRasterOpacity.js +10 -5
  574. package/src/raster/setRasterTerrain.js +15 -8
  575. package/src/raster/setRasterZIndex.js +10 -5
  576. package/src/raster/updateAttachedTiles.js +8 -4
  577. package/src/raster/updateRasterTiles.js +40 -43
  578. package/src/rendering/collectFrameMeshes.js +26 -12
  579. package/src/rendering/collectMeshes.js +2 -24
  580. package/src/rendering/collectVisibleMesh.js +36 -0
  581. package/src/rendering/compareMeshDepth.js +6 -0
  582. package/src/rendering/compareMeshes.js +8 -10
  583. package/src/rendering/createMesh.js +28 -15
  584. package/src/rendering/disposeMesh.js +3 -3
  585. package/src/rendering/drawGeometry.js +22 -108
  586. package/src/rendering/drawPipeline.js +34 -0
  587. package/src/rendering/drawSceneMeshes.js +20 -21
  588. package/src/rendering/prepareFrameBuffer.js +18 -0
  589. package/src/rendering/prepareFrameMeshes.js +12 -14
  590. package/src/rendering/prepareFrameUniforms.js +12 -14
  591. package/src/rendering/prepareMeshUniforms.js +25 -0
  592. package/src/rendering/render.js +50 -31
  593. package/src/rendering/resizeRenderer.js +23 -16
  594. package/src/rendering/revealRoofMesh.js +34 -0
  595. package/src/scene/addRegisteredLayer.js +47 -0
  596. package/src/scene/addSceneLayer.js +18 -0
  597. package/src/scene/attachLayer.js +9 -5
  598. package/src/scene/attachSharedScene.js +69 -0
  599. package/src/scene/callLayer.js +28 -0
  600. package/src/scene/cancelUpdate.js +9 -5
  601. package/src/scene/createLayer.js +7 -0
  602. package/src/scene/createSceneNode.js +12 -0
  603. package/src/scene/emptyEvents.js +1 -1
  604. package/src/scene/failAttachment.js +9 -5
  605. package/src/scene/get3DEvents.js +14 -9
  606. package/src/scene/getLocation.js +8 -0
  607. package/src/scene/init3D.js +40 -25
  608. package/src/scene/initializeLayer.js +13 -5
  609. package/src/scene/initializerFor.js +3 -1
  610. package/src/scene/isNativeLayer.js +13 -0
  611. package/src/scene/layerInitialize.js +29 -14
  612. package/src/scene/onAdd3DLayer.js +33 -23
  613. package/src/scene/onMapChange.js +10 -7
  614. package/src/scene/onRemove3DLayer.js +61 -49
  615. package/src/scene/ready3D.js +40 -21
  616. package/src/scene/releaseSharedScene.js +31 -0
  617. package/src/scene/removeLayerEvents.js +12 -0
  618. package/src/scene/removeSceneLayer.js +16 -0
  619. package/src/scene/renderPendingMapChange.js +12 -5
  620. package/src/scene/renderPendingUpdates.js +14 -7
  621. package/src/scene/reportLayerError.js +3 -0
  622. package/src/scene/resolveNextInitialization.js +7 -6
  623. package/src/scene/restoreObject.js +26 -60
  624. package/src/scene/scheduleSceneUpdate.js +25 -0
  625. package/src/shaders/materialBaseShader.js +17 -0
  626. package/src/shaders/materialShaders.js +15 -131
  627. package/src/shaders/materialSurfaceShader.js +47 -0
  628. package/src/shaders/materialVertexShader.js +72 -0
  629. package/src/shaders/roofVertexShader.js +9 -0
  630. package/src/shadows/bindSunlight.js +19 -9
  631. package/src/shadows/drawShadowMeshes.js +26 -15
  632. package/src/shadows/ensureShadowPipeline.js +46 -35
  633. package/src/shadows/renderSunlight.js +14 -11
  634. package/src/shadows/resizeSunlight.js +17 -10
  635. package/src/shadows/shadowCacheMatches.js +3 -9
  636. package/src/shadows/shadowMatrix.js +38 -28
  637. package/src/shadows/shadowMeshMatches.js +11 -0
  638. package/src/sources/attachAreaMesh.js +44 -33
  639. package/src/sources/buildArea.js +25 -13
  640. package/src/sources/buildAreaFeature.js +24 -20
  641. package/src/sources/buildAreaPoint.js +3 -21
  642. package/src/sources/compareAreaDistance.js +1 -2
  643. package/src/sources/extrusionStyle.js +10 -0
  644. package/src/sources/featureAnchor.js +9 -0
  645. package/src/sources/initializeGeoJSON.js +5 -2
  646. package/src/sources/pendingSourceAreas.js +21 -0
  647. package/src/sources/prepareAreaGeometryJob.js +33 -0
  648. package/src/sources/pumpSourceAreas.js +37 -0
  649. package/src/sources/releaseArea.js +12 -7
  650. package/src/sources/setGeoJSONData.js +6 -2
  651. package/src/sources/sourceAreaContext.js +19 -8
  652. package/src/sources/updateArea.js +36 -25
  653. package/src/sources/updateSourceStatus.js +16 -0
  654. package/src/sunlight/{addTo.js → addTimeControlToMap.js} +2 -1
  655. package/src/sunlight/addTimeLayer.js +5 -1
  656. package/src/sunlight/atmosphere.js +9 -12
  657. package/src/sunlight/createSun.js +54 -0
  658. package/src/sunlight/initSunlight.js +8 -5
  659. package/src/sunlight/initializeTimeControl.js +16 -0
  660. package/src/sunlight/onAddSun.js +27 -65
  661. package/src/sunlight/onRemoveSun.js +10 -0
  662. package/src/sunlight/removeSun.js +12 -4
  663. package/src/sunlight/{remove.js → removeTimeControl.js} +1 -0
  664. package/src/sunlight/removeTimeLayer.js +6 -1
  665. package/src/sunlight/requestSunlightRender.js +9 -0
  666. package/src/sunlight/styleTimeControl.js +3 -3
  667. package/src/sunlight/updateCelestialDisc.js +12 -0
  668. package/src/sunlight/updateSky.js +14 -15
  669. package/src/sunlight/updateSun.js +15 -7
  670. package/src/sunlight/useSelectedTime.js +9 -5
  671. package/src/terrain/applyTerrain.js +24 -0
  672. package/src/terrain/clearLayerTerrain.js +9 -5
  673. package/src/terrain/copyTerrainTile.js +12 -0
  674. package/src/terrain/getElevation.js +12 -4
  675. package/src/terrain/initTerrain.js +17 -9
  676. package/src/terrain/loadTerrain.js +37 -48
  677. package/src/terrain/loadTerrainTiles.js +9 -4
  678. package/src/terrain/mapElevationOf.js +7 -0
  679. package/src/terrain/onTerrainAdd.js +17 -9
  680. package/src/terrain/onTerrainChange.js +6 -2
  681. package/src/terrain/onTerrainRemove.js +37 -19
  682. package/src/terrain/readBridges.js +1 -1
  683. package/src/terrain/readyTerrainOf.js +7 -0
  684. package/src/terrain/setLayerTerrain.js +9 -5
  685. package/src/terrain/setTerrainHeight.js +19 -10
  686. package/src/terrain/terrainAtlas.js +7 -13
  687. package/src/terrain/terrainElevation.js +6 -11
  688. package/src/terrain/terrainTileQueue.js +27 -0
  689. package/src/textures/addImageState.js +8 -0
  690. package/src/{core/addRasterImage.js → textures/attachRasterImage.js} +5 -3
  691. package/src/textures/bindMeshTextures.js +50 -0
  692. package/src/textures/collectRoofTiles.js +16 -0
  693. package/src/{rendering → textures}/compareRoofTiles.js +4 -4
  694. package/src/textures/composeRoofAtlas.js +71 -0
  695. package/src/textures/destroyTexture.js +10 -0
  696. package/src/{rendering/destroyAfterSubmission.js → textures/destroyTextureAfterSubmission.js} +8 -8
  697. package/src/textures/ensureRoofBlit.js +20 -0
  698. package/src/textures/loadModelImage.js +19 -0
  699. package/src/{models/textureFor.js → textures/modelTextureFor.js} +12 -8
  700. package/src/textures/modelTextureSampler.js +10 -0
  701. package/src/textures/nativeImageError.js +13 -0
  702. package/src/textures/nativeImageRefresh.js +11 -0
  703. package/src/{core/textureFor.js → textures/nativeTextureFor.js} +43 -44
  704. package/src/textures/prepareMeshTextures.js +23 -0
  705. package/src/textures/rebuildRoofAtlas.js +55 -0
  706. package/src/textures/removeImageState.js +9 -0
  707. package/src/textures/resizeRoofTexture.js +25 -0
  708. package/src/textures/restoreMaterialTextures.js +16 -0
  709. package/src/{rendering → textures}/textureBinding.js +7 -7
  710. package/src/textures/updateRoofAtlas.js +23 -0
  711. package/src/textures/updateRoofRaster.js +29 -0
  712. package/src/{core → textures}/uploadCanvasTexture.js +20 -17
  713. package/src/textures/uploadMeshTexture.js +26 -0
  714. package/src/textures/uploadNativeImage.js +13 -0
  715. package/src/textures/uploadRoofTile.js +23 -0
  716. package/src/traffic/addTraffic.js +6 -3
  717. package/src/traffic/destroyTrafficGpu.js +4 -2
  718. package/src/traffic/disposeTrafficObject.js +7 -2
  719. package/src/traffic/drawTrafficRoute.js +6 -3
  720. package/src/traffic/failTraffic.js +2 -2
  721. package/src/traffic/featuresToTrafficLanes.js +24 -0
  722. package/src/traffic/fetchTrafficLanes.js +4 -4
  723. package/src/traffic/groundTraffic.js +7 -3
  724. package/src/traffic/initTraffic.js +60 -48
  725. package/src/traffic/loadTraffic.js +9 -9
  726. package/src/traffic/loadedTrafficLanes.js +1 -1
  727. package/src/traffic/locateTraffic.js +8 -6
  728. package/src/traffic/moveTraffic.js +2 -2
  729. package/src/traffic/placeTraffic.js +2 -1
  730. package/src/traffic/prepareTraffic.js +12 -6
  731. package/src/traffic/rebaseTraffic.js +33 -30
  732. package/src/traffic/rebuildTrafficMesh.js +10 -6
  733. package/src/traffic/refreshTrafficTrips.js +32 -0
  734. package/src/traffic/removeTraffic.js +16 -13
  735. package/src/traffic/routeColor.js +3 -3
  736. package/src/traffic/scheduledTrips.js +22 -11
  737. package/src/traffic/startTraffic.js +1 -1
  738. package/src/traffic/tickTraffic.js +11 -41
  739. package/src/traffic/trafficBounds.js +6 -2
  740. package/src/traffic/trafficNow.js +10 -3
  741. package/src/traffic/trafficStatusText.js +5 -0
  742. package/src/traffic/trafficStorage.js +2 -2
  743. package/src/traffic/trafficTooltip.js +9 -0
  744. package/src/traffic/tripsAt.js +4 -4
  745. package/src/traffic/updateTraffic.js +5 -1
  746. package/src/traffic/updateTrafficLights.js +18 -0
  747. package/src/traffic/updateTrafficPose.js +8 -0
  748. package/src/traffic/uploadTrafficLanes.js +21 -0
  749. package/src/traffic/vehicleOffsets.js +3 -2
  750. package/src/transforms/composeLocalTransform.js +16 -0
  751. package/src/{models/nodeMatrix.js → transforms/modelNodeMatrix.js} +8 -3
  752. package/src/transforms/transformNativePoint.js +7 -0
  753. package/src/transforms/updateWorldMatrix.js +43 -0
  754. package/src/transforms/worldMatrixChanged.js +18 -0
  755. package/src/triangulation/clean.js +1 -1
  756. package/src/triangulation/clipEars.js +23 -0
  757. package/src/triangulation/connectHole.js +18 -0
  758. package/src/triangulation/mergeHoles.js +11 -0
  759. package/src/triangulation/minimumX.js +3 -3
  760. package/src/triangulation/polygonRings.js +14 -0
  761. package/src/triangulation/sortHoles.js +7 -12
  762. package/src/triangulation/triangulate.js +18 -56
  763. package/src/triangulation/validateArea.js +10 -0
  764. package/src/vehicles/bicycleModel.js +21 -20
  765. package/src/vehicles/boatBenches.js +4 -3
  766. package/src/vehicles/boatModel.js +26 -18
  767. package/src/vehicles/buildCarriage.js +20 -0
  768. package/src/vehicles/busModel.js +1 -1
  769. package/src/vehicles/carModel.js +27 -11
  770. package/src/vehicles/metroModel.js +2 -2
  771. package/src/vehicles/mirrorVehiclePart.js +8 -0
  772. package/src/vehicles/pedestrianModel.js +15 -14
  773. package/src/vehicles/tramModel.js +2 -2
  774. package/src/walk/animateWalker.js +52 -0
  775. package/src/walk/createWalk.js +70 -60
  776. package/src/walk/initWalk.js +5 -4
  777. package/src/walk/{initialize.js → initializeWalkControl.js} +1 -0
  778. package/src/walk/{blocked.js → isWalkBlocked.js} +4 -4
  779. package/src/walk/landWalker.js +38 -0
  780. package/src/walk/moveWalker.js +24 -0
  781. package/src/walk/onAddWalkControl.js +31 -0
  782. package/src/walk/onRemoveWalkControl.js +12 -0
  783. package/src/walk/{onKey.js → onWalkKey.js} +13 -10
  784. package/src/walk/onWalkPointer.js +18 -0
  785. package/src/walk/{onTerrain.js → onWalkTerrain.js} +1 -1
  786. package/src/walk/{place.js → placeWalker.js} +6 -4
  787. package/src/walk/resolveWalkerPosition.js +28 -0
  788. package/src/walk/startWalking.js +49 -0
  789. package/src/walk/stepWalkerHeight.js +11 -0
  790. package/src/walk/{stop.js → stopWalking.js} +11 -8
  791. package/src/walk/{toggle.js → toggleWalking.js} +2 -2
  792. package/src/walk/updateWalkerView.js +22 -0
  793. package/src/weakmaps/addedByLayer.js +1 -0
  794. package/src/weakmaps/archiveHeaderByLayer.js +1 -0
  795. package/src/weakmaps/areasByLayer.js +1 -0
  796. package/src/weakmaps/boundsMethods.js +1 -0
  797. package/src/weakmaps/bridgeMeshByLayer.js +1 -0
  798. package/src/weakmaps/bridgesByLayer.js +1 -0
  799. package/src/weakmaps/cameraAnimationByMap.js +1 -0
  800. package/src/weakmaps/cameraBearingByMap.js +1 -0
  801. package/src/weakmaps/cameraByLayer.js +1 -0
  802. package/src/weakmaps/cameraDraggableByMap.js +1 -0
  803. package/src/weakmaps/cameraFields.js +37 -0
  804. package/src/weakmaps/cameraFrameByMap.js +1 -0
  805. package/src/weakmaps/cameraHandlersByMap.js +1 -0
  806. package/src/weakmaps/cameraMaps.js +1 -0
  807. package/src/weakmaps/cameraPitchByMap.js +1 -0
  808. package/src/weakmaps/cameraReadyByMap.js +1 -0
  809. package/src/weakmaps/cameraTouchStateByMap.js +1 -0
  810. package/src/weakmaps/cameraViewByMap.js +1 -0
  811. package/src/weakmaps/cameraZIndexOffsetByLayer.js +1 -0
  812. package/src/weakmaps/closestMethods.js +1 -0
  813. package/src/{constants → weakmaps}/colliders.js +0 -1
  814. package/src/weakmaps/containerByLayer.js +1 -0
  815. package/src/weakmaps/controlByLayer.js +1 -0
  816. package/src/weakmaps/countStatusByLayer.js +1 -0
  817. package/src/weakmaps/cursorByLayer.js +1 -0
  818. package/src/weakmaps/demByLayer.js +1 -0
  819. package/src/weakmaps/directoriesByLayer.js +1 -0
  820. package/src/weakmaps/dragByHandler.js +1 -0
  821. package/src/weakmaps/dragStates.js +1 -0
  822. package/src/weakmaps/etagByLayer.js +1 -0
  823. package/src/weakmaps/eventMapByLayer.js +1 -0
  824. package/src/weakmaps/eventsByLayer.js +1 -0
  825. package/src/weakmaps/fadeFrameByLayer.js +1 -0
  826. package/src/weakmaps/fadeVersionByLayer.js +1 -0
  827. package/src/weakmaps/frameByLayer.js +1 -0
  828. package/src/weakmaps/geojsonByLayer.js +1 -0
  829. package/src/weakmaps/geometryWorkersByMap.js +1 -0
  830. package/src/weakmaps/gridInitializers.js +1 -0
  831. package/src/weakmaps/groupByLayer.js +1 -0
  832. package/src/weakmaps/headerByLayer.js +1 -0
  833. package/src/weakmaps/highlightedFeatureByLayer.js +1 -0
  834. package/src/weakmaps/hoveredFeatureByLayer.js +1 -0
  835. package/src/weakmaps/imageStates.js +1 -0
  836. package/src/weakmaps/inflightByLayer.js +1 -0
  837. package/src/weakmaps/kindByLayer.js +1 -0
  838. package/src/weakmaps/layersByLayer.js +1 -0
  839. package/src/weakmaps/loadingTilesByLayer.js +1 -0
  840. package/src/weakmaps/locationByLayer.js +1 -0
  841. package/src/weakmaps/modelByLayer.js +1 -0
  842. package/src/weakmaps/modelUrlByLayer.js +1 -0
  843. package/src/weakmaps/nativeGPUBackByMap.js +1 -0
  844. package/src/weakmaps/nativeGPUByLayer.js +1 -0
  845. package/src/weakmaps/nativeGPUOrderByMap.js +1 -0
  846. package/src/weakmaps/nativeRenderByLayer.js +1 -0
  847. package/src/weakmaps/pitchSkyByMap.js +1 -0
  848. package/src/weakmaps/pointerEventsByLayer.js +1 -0
  849. package/src/weakmaps/pruneAfterByLayer.js +1 -0
  850. package/src/weakmaps/pruneVersionByLayer.js +1 -0
  851. package/src/weakmaps/pruneWantedByLayer.js +1 -0
  852. package/src/weakmaps/queuedByLayer.js +1 -0
  853. package/src/weakmaps/rasterGeometryByLayer.js +1 -0
  854. package/src/weakmaps/rasterProgramByLayer.js +1 -0
  855. package/src/weakmaps/rasterTilesByLayer.js +1 -0
  856. package/src/weakmaps/rasterVersionByLayer.js +1 -0
  857. package/src/weakmaps/raycasterByLayer.js +1 -0
  858. package/src/weakmaps/readyByLayer.js +1 -0
  859. package/src/weakmaps/rendererByLayer.js +1 -0
  860. package/src/weakmaps/rendererDevices.js +1 -0
  861. package/src/weakmaps/rendererReadyByLayer.js +1 -0
  862. package/src/weakmaps/roofRasterByLayer.js +1 -0
  863. package/src/weakmaps/roofRastersByLayer.js +1 -0
  864. package/src/weakmaps/rootByLayer.js +1 -0
  865. package/src/weakmaps/rotateControlByMap.js +1 -0
  866. package/src/weakmaps/sceneByLayer.js +1 -0
  867. package/src/weakmaps/sceneFields.js +159 -0
  868. package/src/weakmaps/sceneLayers.js +1 -0
  869. package/src/weakmaps/sceneOriginByLayer.js +1 -0
  870. package/src/weakmaps/shadowMeshesByLayer.js +1 -0
  871. package/src/weakmaps/sharedByLayer.js +1 -0
  872. package/src/weakmaps/sizeByLayer.js +1 -0
  873. package/src/weakmaps/state3dByLayer.js +1 -0
  874. package/src/weakmaps/sunByMap.js +1 -0
  875. package/src/weakmaps/sunlightByControl.js +1 -0
  876. package/src/weakmaps/sunlightByMap.js +1 -0
  877. package/src/weakmaps/terrain3DByLayer.js +1 -0
  878. package/src/weakmaps/terrain3DByMap.js +1 -0
  879. package/src/weakmaps/terrainArchiveByLayer.js +1 -0
  880. package/src/weakmaps/terrainBaseYByLayer.js +1 -0
  881. package/src/weakmaps/terrainBoundsByLayer.js +1 -0
  882. package/src/weakmaps/terrainControllerByLayer.js +1 -0
  883. package/src/weakmaps/terrainGridsByLayer.js +1 -0
  884. package/src/weakmaps/terrainLoadingByLayer.js +1 -0
  885. package/src/weakmaps/terrainOriginElevationByLayer.js +1 -0
  886. package/src/weakmaps/terrainPromiseByLayer.js +1 -0
  887. package/src/weakmaps/terrainReadyByLayer.js +1 -0
  888. package/src/weakmaps/terrainRequestByLayer.js +1 -0
  889. package/src/weakmaps/terrainSourceByLayer.js +1 -0
  890. package/src/weakmaps/terrainTilesByLayer.js +1 -0
  891. package/src/weakmaps/terrainZoomByLayer.js +1 -0
  892. package/src/weakmaps/tileZoomByLayer.js +1 -0
  893. package/src/weakmaps/timeControlByMap.js +1 -0
  894. package/src/weakmaps/tooltipByLayer.js +1 -0
  895. package/src/weakmaps/touchByContainer.js +1 -0
  896. package/src/weakmaps/touchPitchByMap.js +1 -0
  897. package/src/weakmaps/touchRotateByMap.js +1 -0
  898. package/src/weakmaps/trafficByLayer.js +1 -0
  899. package/src/weakmaps/typeByLayer.js +1 -0
  900. package/src/weakmaps/urlByLayer.js +1 -0
  901. package/src/weakmaps/visibleMeshesByLayer.js +1 -0
  902. package/src/weakmaps/walkByMap.js +1 -0
  903. package/src/weakmaps/walkerByLayer.js +1 -0
  904. package/src/weakmaps/wantedRasterTilesByLayer.js +1 -0
  905. package/src/weakmaps/zoomLevelByLayer.js +1 -0
  906. package/src/weakmaps/zoomTransitionsByLayer.js +1 -0
  907. package/src/weakmaps/zoomViewByLayer.js +1 -0
  908. package/src/workers/acquireGeometryWorker.js +32 -0
  909. package/src/workers/buildAreaInWorker.js +36 -0
  910. package/src/workers/closeGeometryWorkers.js +11 -0
  911. package/src/workers/geometryWorker.js +14 -0
  912. package/src/workers/settleGeometryWorker.js +10 -0
  913. package/src/workers/startGeometryWorker.js +16 -0
  914. package/src/archives/read.js +0 -29
  915. package/src/archives/varint.js +0 -15
  916. package/src/camera/angles.js +0 -6
  917. package/src/camera/cancelCameraAnimation.js +0 -11
  918. package/src/camera/groundBounds.js +0 -11
  919. package/src/camera/mapAnimateCamera.js +0 -17
  920. package/src/camera/mapStopPitchBearingAnimation.js +0 -6
  921. package/src/camera/pointOf.js +0 -3
  922. package/src/camera/project.js +0 -20
  923. package/src/camera/runCameraAnimations.js +0 -28
  924. package/src/camera/scheduleCameraAnimation.js +0 -8
  925. package/src/constants/Compass.js +0 -7
  926. package/src/constants/ContainerResize.js +0 -7
  927. package/src/constants/PitchDrag.js +0 -7
  928. package/src/constants/ShiftRotate.js +0 -7
  929. package/src/constants/TouchMode.js +0 -6
  930. package/src/constants/accessorSizes.js +0 -1
  931. package/src/constants/attachState.js +0 -1
  932. package/src/constants/cameraControlsState.js +0 -1
  933. package/src/constants/cityMapper.js +0 -6
  934. package/src/constants/hull.js +0 -1
  935. package/src/constants/indexState.js +0 -1
  936. package/src/constants/mapCameraState.js +0 -1
  937. package/src/constants/nativeLayerState.js +0 -1
  938. package/src/constants/nativeMethodHandlers.js +0 -31
  939. package/src/constants/onMapChangeState.js +0 -1
  940. package/src/constants/onZoomAnimState.js +0 -1
  941. package/src/constants/parts.js +0 -19
  942. package/src/constants/pumpState.js +0 -1
  943. package/src/constants/ringDirections.js +0 -10
  944. package/src/constants/roundProfile.js +0 -1
  945. package/src/constants/underEntryState.js +0 -1
  946. package/src/core/addImageState.js +0 -7
  947. package/src/core/boundsQuad.js +0 -11
  948. package/src/core/bringNativeLayerToBack.js +0 -3
  949. package/src/core/bringNativeLayerToFront.js +0 -3
  950. package/src/core/cancelGridFade.js +0 -10
  951. package/src/core/current.js +0 -3
  952. package/src/core/forwardNativeError.js +0 -3
  953. package/src/core/handleNativeMapEvent.js +0 -47
  954. package/src/core/localPixelForGeometry.js +0 -6
  955. package/src/core/localPosition.js +0 -6
  956. package/src/core/markerCameraIconPoint.js +0 -9
  957. package/src/core/markerQuadCorners.js +0 -31
  958. package/src/core/nativeImageError.js +0 -8
  959. package/src/core/nativeImageRefresh.js +0 -7
  960. package/src/core/nativeLayer.js +0 -97
  961. package/src/core/quadNativeMesh.js +0 -15
  962. package/src/core/readyNativeGPU.js +0 -6
  963. package/src/core/refreshNativeLayer.js +0 -29
  964. package/src/core/refreshNativeLayerContract.js +0 -3
  965. package/src/core/removeImageState.js +0 -8
  966. package/src/core/removeTargets.js +0 -8
  967. package/src/core/reorderNativeLayer.js +0 -6
  968. package/src/core/runGridFades.js +0 -14
  969. package/src/core/runMarkerPanFrame.js +0 -12
  970. package/src/core/scheduleGridFade.js +0 -9
  971. package/src/core/scheduleMarkerPan.js +0 -8
  972. package/src/core/syncVectorLayer.js +0 -26
  973. package/src/core/updateNativeLayerView.js +0 -6
  974. package/src/geometry/below.js +0 -3
  975. package/src/geometry/bridgeLocal.js +0 -4
  976. package/src/geometry/cross.js +0 -3
  977. package/src/geometry/dot.js +0 -6
  978. package/src/geometry/lampRing.js +0 -11
  979. package/src/geometry/push.js +0 -3
  980. package/src/geometry/sub.js +0 -6
  981. package/src/geometry/treeRing.js +0 -14
  982. package/src/lighting/visitCells.js +0 -15
  983. package/src/models/loadImage.js +0 -15
  984. package/src/models/materialFor.js +0 -21
  985. package/src/models/textureSampler.js +0 -10
  986. package/src/raster/createGeometry.js +0 -22
  987. package/src/raster/finishAttachment.js +0 -11
  988. package/src/raster/isLoading.js +0 -5
  989. package/src/rendering/composeRoofAtlas.js +0 -52
  990. package/src/rendering/createProgram.js +0 -92
  991. package/src/rendering/destroyTexture.js +0 -6
  992. package/src/rendering/ensureRoofBlit.js +0 -40
  993. package/src/rendering/rebuildRoofAtlas.js +0 -67
  994. package/src/rendering/reportCompilation.js +0 -17
  995. package/src/rendering/sortMeshes.js +0 -6
  996. package/src/rendering/synchronizeZoomView.js +0 -34
  997. package/src/rendering/updateMapCamera.js +0 -32
  998. package/src/rendering/updateRoofRaster.js +0 -32
  999. package/src/scene/attach.js +0 -161
  1000. package/src/scene/emptyNode.js +0 -11
  1001. package/src/scene/endZoom.js +0 -16
  1002. package/src/scene/layerLayerAdd.js +0 -21
  1003. package/src/scene/onZoomAnim.js +0 -16
  1004. package/src/scene/renderPendingZoomAnimation.js +0 -7
  1005. package/src/scene/rendererDeviceError.js +0 -10
  1006. package/src/scene/rendererDeviceLost.js +0 -11
  1007. package/src/scene/reportError.js +0 -3
  1008. package/src/scene/requestAdapter.js +0 -12
  1009. package/src/scene/requestDevice.js +0 -9
  1010. package/src/scene/update.js +0 -19
  1011. package/src/scene/updateCamera.js +0 -34
  1012. package/src/scene/updateWorldMatrix.js +0 -48
  1013. package/src/shadows/shadowBounds.js +0 -32
  1014. package/src/sources/addGeneratedTriangle.js +0 -6
  1015. package/src/sources/projectRing.js +0 -20
  1016. package/src/sources/projectedTree.js +0 -13
  1017. package/src/sources/pump.js +0 -54
  1018. package/src/sources/updateStatus.js +0 -12
  1019. package/src/sunlight/horizontalPosition.js +0 -16
  1020. package/src/sunlight/initialize.js +0 -11
  1021. package/src/sunlight/mix.js +0 -6
  1022. package/src/sunlight/moonPosition.js +0 -17
  1023. package/src/sunlight/projectCelestialBody.js +0 -13
  1024. package/src/sunlight/render.js +0 -7
  1025. package/src/sunlight/rgb.js +0 -6
  1026. package/src/sunlight/solarPosition.js +0 -17
  1027. package/src/terrain/terrainGrid.js +0 -24
  1028. package/src/traffic/routeGeometry.js +0 -31
  1029. package/src/traffic/toLanes.js +0 -16
  1030. package/src/traffic/tooltip.js +0 -11
  1031. package/src/vehicles/carriage.js +0 -19
  1032. package/src/vehicles/mirror.js +0 -8
  1033. package/src/walk/local.js +0 -10
  1034. package/src/walk/onAdd.js +0 -4
  1035. package/src/walk/onPointer.js +0 -13
  1036. package/src/walk/onRemove.js +0 -4
  1037. package/src/walk/start.js +0 -37
  1038. package/src/walk/step.js +0 -53
  1039. /package/src/{utils/channel.js → colors/hslChannel.js} +0 -0
  1040. /package/src/{utils → colors}/toSRGB.js +0 -0
  1041. /package/src/controls/{editable.js → isEditableTarget.js} +0 -0
  1042. /package/src/geometry/{nativeTriangle.js → appendNativeTriangle.js} +0 -0
  1043. /package/src/{constants → globals}/TILE_RADIUS.js +0 -0
  1044. /package/src/{constants → globals}/TILE_SIZE.js +0 -0
  1045. /package/src/{constants → globals}/dark.js +0 -0
  1046. /package/src/{constants → globals}/glass.js +0 -0
  1047. /package/src/{constants → globals}/headlight.js +0 -0
  1048. /package/src/{constants → globals}/moves.js +0 -0
  1049. /package/src/{constants → globals}/paints.js +0 -0
  1050. /package/src/{constants → globals}/pendingUpdates.js +0 -0
  1051. /package/src/{constants → globals}/shirt.js +0 -0
  1052. /package/src/{constants → globals}/skin.js +0 -0
  1053. /package/src/{constants → globals}/speed.js +0 -0
  1054. /package/src/{constants → globals}/taillight.js +0 -0
  1055. /package/src/{constants → globals}/trousers.js +0 -0
  1056. /package/src/{constants/accessorTypes.js → globals/types.js} +0 -0
  1057. /package/src/{constants → globals}/tyre.js +0 -0
  1058. /package/src/{constants → globals}/white.js +0 -0
  1059. /package/src/{scene → gpu}/showWebGPUWarning.js +0 -0
  1060. /package/src/{scene → layer-controls}/placeUnderEntry.js +0 -0
  1061. /package/src/{core → native}/compareNativeHits.js +0 -0
  1062. /package/src/{core → native}/nativeAddLatLng.js +0 -0
  1063. /package/src/{core → native}/nativeBringToBack.js +0 -0
  1064. /package/src/{core → native}/nativeBringToFront.js +0 -0
  1065. /package/src/{core → native}/nativeRedraw.js +0 -0
  1066. /package/src/{core → native}/nativeSetBounds.js +0 -0
  1067. /package/src/{core → native}/nativeSetIcon.js +0 -0
  1068. /package/src/{core → native}/nativeSetLatLng.js +0 -0
  1069. /package/src/{core → native}/nativeSetLatLngs.js +0 -0
  1070. /package/src/{core → native}/nativeSetOpacity.js +0 -0
  1071. /package/src/{core → native}/nativeSetRadius.js +0 -0
  1072. /package/src/{core → native}/nativeSetStyle.js +0 -0
  1073. /package/src/{core → native}/nativeSetUrl.js +0 -0
  1074. /package/src/{core → native}/nativeSetZIndex.js +0 -0
  1075. /package/src/{core → native}/nativeSetZIndexOffset.js +0 -0
  1076. /package/src/{core → native}/refreshNativeEvent.js +0 -0
  1077. /package/src/{core → native}/restoreNativeEvents.js +0 -0
  1078. /package/src/{camera/displayPoint.js → projections/displayContainerPoint.js} +0 -0
  1079. /package/src/{core → projections}/localPixel.js +0 -0
  1080. /package/src/{camera → projections}/verticalGroundY.js +0 -0
  1081. /package/src/sunlight/{onAdd.js → onAddTimeControl.js} +0 -0
  1082. /package/src/terrain/{sample.js → sampleTerrainTile.js} +0 -0
  1083. /package/src/walk/{onBlur.js → onWalkBlur.js} +0 -0
  1084. /package/src/{constants → weakmaps}/nativeEventMaps.js +0 -0
  1085. /package/src/{constants → weakmaps}/renderers.js +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/globals/L.js", "../src/globals/radians.js", "../src/globals/degrees.js", "../src/weakmaps/cameraPitchByMap.js", "../src/camera/mapGetPitch.js", "../src/weakmaps/cameraBearingByMap.js", "../src/camera/mapGetBearing.js", "../src/globals/cameraEmptyOptions.js", "../src/weakmaps/pitchSkyByMap.js", "../src/camera/updateSky.js", "../src/camera/mapSetPitchAndBearing.js", "../src/weakmaps/cameraAnimationByMap.js", "../src/weakmaps/cameraFrameByMap.js", "../src/globals/cameraAnimations.js", "../src/globals/cameraAnimationFrame.js", "../src/animations/cancelCameraAnimation.js", "../src/weakmaps/cameraTouchStateByMap.js", "../src/weakmaps/rotateControlByMap.js", "../src/globals/Compass.js", "../src/globals/ContainerResize.js", "../src/globals/PitchDrag.js", "../src/globals/ShiftRotate.js", "../src/globals/TouchMode.js", "../src/weakmaps/touchByContainer.js", "../src/globals/cameraTouchStates.js", "../src/globals/cameraListenerOptions.js", "../src/controls/notifyCameraTouchChange.js", "../src/globals/cameraDragSensitivity.js", "../src/globals/cameraBearingSensitivity.js", "../src/globals/cameraFocusOptions.js", "../src/globals/cameraAnimatedOptions.js", "../src/animations/runCameraAnimations.js", "../src/animations/scheduleCameraAnimation.js", "../src/animations/mapAnimateCamera.js", "../src/camera/mapResetNorthPitch.js", "../src/camera/mapSetBearing.js", "../src/camera/mapResetNorth.js", "../src/controls/rotateButtonClick.js", "../src/camera/mapSetPitch.js", "../src/controls/rotateButtonKeydown.js", "../src/controls/refreshRotateControl.js", "../src/weakmaps/dragStates.js", "../src/globals/cameraDrags.js", "../src/controls/isEditableTarget.js", "../src/controls/cameraDragDown.js", "../src/animations/mapStopPitchBearingAnimation.js", "../src/controls/cameraDragMove.js", "../src/controls/finishCameraDrag.js", "../src/controls/cameraDragEnd.js", "../src/controls/cameraDragClick.js", "../src/controls/cameraDragContextMenu.js", "../src/controls/endAllCameraDrags.js", "../src/controls/dragCamera.js", "../src/controls/acceptRotateDrag.js", "../src/controls/refreshRotateFocus.js", "../src/controls/rotateOnAdd.js", "../src/controls/removeCameraDrag.js", "../src/controls/pitchDragRemoveHooks.js", "../src/controls/rotateOnRemove.js", "../src/controls/rotateControl.js", "../src/controls/shiftRotateWheel.js", "../src/controls/shiftRotateAddHooks.js", "../src/controls/shiftRotateRemoveHooks.js", "../src/controls/acceptPitchDrag.js", "../src/controls/pitchDragAddHooks.js", "../src/controls/compassOrientation.js", "../src/controls/failCompassPermission.js", "../src/controls/finishCompassPermission.js", "../src/controls/compassAddHooks.js", "../src/controls/compassRemoveHooks.js", "../src/controls/resizeMap.js", "../src/controls/containerResizeAddHooks.js", "../src/controls/containerResizeRemoveHooks.js", "../src/weakmaps/touchPitchByMap.js", "../src/weakmaps/touchRotateByMap.js", "../src/controls/startCameraTouch.js", "../src/controls/moveCameraTouch.js", "../src/controls/endCameraTouch.js", "../src/controls/endCameraTouchEvent.js", "../src/controls/changeCameraTouch.js", "../src/controls/endAllCameraTouches.js", "../src/controls/cleanupCameraTouch.js", "../src/weakmaps/cameraHandlersByMap.js", "../src/controls/addCameraHandler.js", "../src/controls/cameraControls.js", "../src/index.js", "../src/globals/layerProto.js", "../src/globals/layerCallInitHooks.js", "../src/globals/removeLayer.js", "../src/camera/mapCamera.js", "../src/globals/mapMethods.js", "../src/globals/markerMethods.js", "../src/globals/popupEvents.js", "../src/globals/tooltipEvents.js", "../src/globals/popupPosition.js", "../src/globals/popupPan.js", "../src/globals/tooltipPosition.js", "../src/globals/tiledBounds.js", "../src/globals/gridEvents.js", "../src/weakmaps/nativeGPUByLayer.js", "../src/weakmaps/readyByLayer.js", "../src/weakmaps/nativeGPUBackByMap.js", "../src/weakmaps/nativeGPUOrderByMap.js", "../src/native/nativeLayer.js", "../src/native/nativeLayerMethod.js", "../src/weakmaps/sharedByLayer.js", "../src/weakmaps/imageStates.js", "../src/textures/nativeImageRefresh.js", "../src/textures/nativeImageError.js", "../src/textures/removeImageState.js", "../src/textures/addImageState.js", "../src/weakmaps/frameByLayer.js", "../src/globals/pendingUpdates.js", "../src/weakmaps/layersByLayer.js", "../src/weakmaps/rendererByLayer.js", "../src/weakmaps/sceneByLayer.js", "../src/weakmaps/shadowMeshesByLayer.js", "../src/weakmaps/wantedRasterTilesByLayer.js", "../src/weakmaps/sunlightByMap.js", "../src/globals/frameCommands.js", "../src/weakmaps/nativeRenderByLayer.js", "../src/weakmaps/zoomTransitionsByLayer.js", "../src/weakmaps/zoomViewByLayer.js", "../src/globals/meshStack.js", "../src/weakmaps/cameraViewByMap.js", "../src/camera/mapUpdateCameraOverlays.js", "../src/animations/updateZoomCamera.js", "../src/animations/synchronizeZoomView.js", "../src/weakmaps/sizeByLayer.js", "../src/globals/depthTexture.js", "../src/textures/destroyTextureAfterSubmission.js", "../src/textures/destroyTexture.js", "../src/rendering/resizeRenderer.js", "../src/weakmaps/cameraByLayer.js", "../src/weakmaps/sceneOriginByLayer.js", "../src/camera/updateMapCamera.js", "../src/globals/cameraFov.js", "../src/globals/earthCirc.js", "../src/weakmaps/terrain3DByMap.js", "../src/weakmaps/bridgesByLayer.js", "../src/weakmaps/terrainReadyByLayer.js", "../src/weakmaps/terrainTilesByLayer.js", "../src/weakmaps/terrainZoomByLayer.js", "../src/terrain/getElevation.js", "../src/geometry/bridgeElevation.js", "../src/terrain/sampleTerrainTile.js", "../src/terrain/terrainElevation.js", "../src/terrain/mapElevationOf.js", "../src/weakmaps/walkByMap.js", "../src/globals/halfRadians.js", "../src/camera/updateSceneCamera.js", "../src/projections/transformZoomAnimationPoint.js", "../src/weakmaps/visibleMeshesByLayer.js", "../src/transforms/worldMatrixChanged.js", "../src/transforms/composeLocalTransform.js", "../src/transforms/updateWorldMatrix.js", "../src/geometry/computeBounds.js", "../src/rendering/collectVisibleMesh.js", "../src/rendering/collectMeshes.js", "../src/rendering/collectFrameMeshes.js", "../src/weakmaps/kindByLayer.js", "../src/weakmaps/rasterTilesByLayer.js", "../src/weakmaps/roofRasterByLayer.js", "../src/weakmaps/roofRastersByLayer.js", "../src/weakmaps/loadingTilesByLayer.js", "../src/weakmaps/rasterVersionByLayer.js", "../src/textures/updateRoofAtlas.js", "../src/globals/roofSignatures.js", "../src/textures/rebuildRoofAtlas.js", "../src/globals/roofTiles.js", "../src/globals/TILE_SIZE.js", "../src/globals/roofMin.js", "../src/globals/roofSize.js", "../src/globals/roofShader.js", "../src/globals/roofPipeline.js", "../src/globals/roofBlitSampler.js", "../src/textures/ensureRoofBlit.js", "../src/globals/roofBuffer.js", "../src/globals/roofPass.js", "../src/globals/roofImage.js", "../src/globals/roofTarget.js", "../src/globals/roofCopySize.js", "../src/textures/uploadRoofTile.js", "../src/globals/roofBindGroup.js", "../src/globals/roofCommands.js", "../src/globals/roofOpacities.js", "../src/textures/compareRoofTiles.js", "../src/textures/composeRoofAtlas.js", "../src/textures/collectRoofTiles.js", "../src/globals/roofTexture.js", "../src/globals/roofSampler.js", "../src/textures/resizeRoofTexture.js", "../src/textures/updateRoofRaster.js", "../src/rendering/compareMeshDepth.js", "../src/rendering/compareMeshes.js", "../src/weakmaps/headerByLayer.js", "../src/weakmaps/tileZoomByLayer.js", "../src/geometry/roofFootprint.js", "../src/geometry/subtractRoofTile.js", "../src/geometry/roofCoverage.js", "../src/rendering/revealRoofMesh.js", "../src/rendering/prepareFrameMeshes.js", "../src/globals/frameBuffer.js", "../src/rendering/prepareFrameBuffer.js", "../src/weakmaps/rootByLayer.js", "../src/globals/sunBindGroup.js", "../src/shadows/bindSunlight.js", "../src/lighting/writeLightCell.js", "../src/lighting/visitLightCells.js", "../src/lighting/visitLightGridCells.js", "../src/lighting/lightGrid.js", "../src/globals/lightScale.js", "../src/lighting/worldLights.js", "../src/lighting/cacheLightGrid.js", "../src/globals/geometryEmpty.js", "../src/lighting/collectLightMeshes.js", "../src/lighting/updatePointLights.js", "../src/rendering/prepareFrameUniforms.js", "../src/globals/scenePass.js", "../src/globals/meshOffsets.js", "../src/globals/meshPipeline.js", "../src/globals/alphaBlend.js", "../src/rendering/drawPipeline.js", "../src/materials/prepareMeshCutout.js", "../src/rendering/prepareMeshUniforms.js", "../src/globals/meshImage.js", "../src/globals/meshTarget.js", "../src/globals/meshCopySize.js", "../src/textures/uploadMeshTexture.js", "../src/globals/meshBindGroup.js", "../src/globals/drawEntries.js", "../src/globals/drawMeshEntry.js", "../src/globals/drawFrameEntry.js", "../src/globals/drawTerrainEntry.js", "../src/globals/drawTextureEntries.js", "../src/globals/drawSamplerEntries.js", "../src/textures/bindMeshTextures.js", "../src/textures/prepareMeshTextures.js", "../src/rendering/drawGeometry.js", "../src/rendering/drawSceneMeshes.js", "../src/globals/disabledShadow.js", "../src/globals/shadowValues.js", "../src/shadows/shadowMeshMatches.js", "../src/shadows/shadowCacheMatches.js", "../src/globals/shadowBounds.js", "../src/globals/shadowCamera.js", "../src/globals/shadowLow.js", "../src/globals/shadowHigh.js", "../src/geometry/meshShadowBounds.js", "../src/geometry/shadowBounds.js", "../src/shadows/shadowMatrix.js", "../src/globals/shadowMeshLayout.js", "../src/globals/shadowDepthLayout.js", "../src/globals/depthBindGroup.js", "../src/globals/shadowShader.js", "../src/globals/shadowPipeline.js", "../src/globals/shadowPipelineLayout.js", "../src/globals/positionLayout.js", "../src/globals/instanceLayout.js", "../src/globals/shadowInstanceLayouts.js", "../src/globals/shadowLayouts.js", "../src/shadows/ensureShadowPipeline.js", "../src/globals/shadowPass.js", "../src/globals/shadowBindGroup.js", "../src/globals/shadowOffsets.js", "../src/shadows/drawShadowMeshes.js", "../src/globals/shadowTexture.js", "../src/shadows/resizeSunlight.js", "../src/shadows/renderSunlight.js", "../src/scene/cancelUpdate.js", "../src/weakmaps/pruneAfterByLayer.js", "../src/weakmaps/pruneVersionByLayer.js", "../src/weakmaps/pruneWantedByLayer.js", "../src/weakmaps/terrain3DByLayer.js", "../src/weakmaps/terrainRequestByLayer.js", "../src/scene/setParent.js", "../src/raster/removeRasterTile.js", "../src/raster/releaseRasterTile.js", "../src/raster/pruneRasterTiles.js", "../src/native/synchronizeNativeLayer.js", "../src/native/isCurrentNativeLayer.js", "../src/native/syncGridLayer.js", "../src/globals/coreWhite.js", "../src/weakmaps/cameraZIndexOffsetByLayer.js", "../src/native/styleNativeMesh.js", "../src/globals/coreQuadIndices.js", "../src/globals/coreQuadUV.js", "../src/globals/coreSampler.js", "../src/rendering/disposeMesh.js", "../src/textures/uploadCanvasTexture.js", "../src/textures/uploadNativeImage.js", "../src/textures/nativeTextureFor.js", "../src/native/putNativeMesh.js", "../src/globals/defaultMaterial.js", "../src/globals/meshBuffer.js", "../src/globals/nextId.js", "../src/scene/createSceneNode.js", "../src/globals/vertexShader.js", "../src/globals/fragmentShader.js", "../src/globals/pipelineLayout.js", "../src/globals/elevationWGSL.js", "../src/globals/normalLayout.js", "../src/globals/colorLayout.js", "../src/globals/uVLayout.js", "../src/globals/programLayout.js", "../src/globals/programEntries.js", "../src/globals/meshLayoutEntry.js", "../src/globals/frameLayoutEntry.js", "../src/globals/terrainLayoutEntry.js", "../src/globals/textureLayoutEntries.js", "../src/globals/samplerLayoutEntries.js", "../src/materials/createProgramLayout.js", "../src/materials/createProgramUniforms.js", "../src/textures/textureBinding.js", "../src/materials/validateRoofMaterial.js", "../src/shaders/roofVertexShader.js", "../src/shaders/materialVertexShader.js", "../src/shaders/materialBaseShader.js", "../src/shaders/materialSurfaceShader.js", "../src/shaders/materialShaders.js", "../src/gpu/reportShaderCompilation.js", "../src/materials/createProgram.js", "../src/rendering/createMesh.js", "../src/native/quadNativeMesh.js", "../src/weakmaps/locationByLayer.js", "../src/projections/localPosition.js", "../src/geometry/boundsQuad.js", "../src/native/syncImageOverlay.js", "../src/globals/coreMatrixKeys.js", "../src/projections/markerCameraIconPoint.js", "../src/transforms/transformNativePoint.js", "../src/geometry/markerImageBounds.js", "../src/geometry/markerQuadCorners.js", "../src/native/syncMarker.js", "../src/globals/geometryPixelStates.js", "../src/geometry/nativeGeometry.js", "../src/geometry/visitNativeCoordinates.js", "../src/geometry/appendNativeTriangle.js", "../src/geometry/segment.js", "../src/globals/tau.js", "../src/geometry/diskAt.js", "../src/geometry/disk.js", "../src/geometry/lineJoin.js", "../src/geometry/dashedSegment.js", "../src/geometry/line.js", "../src/triangulation/minimumX.js", "../src/triangulation/mergeHoles.js", "../src/triangulation/sortHoles.js", "../src/triangulation/cross.js", "../src/triangulation/equal.js", "../src/triangulation/clean.js", "../src/triangulation/isClockWise.js", "../src/triangulation/polygonRings.js", "../src/triangulation/inside.js", "../src/triangulation/insideHole.js", "../src/triangulation/on.js", "../src/triangulation/intersects.js", "../src/triangulation/crossesRing.js", "../src/triangulation/crossesBoundary.js", "../src/triangulation/connectHole.js", "../src/triangulation/containsVertex.js", "../src/triangulation/clipEars.js", "../src/triangulation/area.js", "../src/triangulation/validateArea.js", "../src/triangulation/triangulate.js", "../src/geometry/polygon.js", "../src/geometry/dashValues.js", "../src/geometry/circleGeometry.js", "../src/geometry/circleAt.js", "../src/projections/localPixel.js", "../src/projections/localPixelForGeometry.js", "../src/colors/toSRGB.js", "../src/colors/hslChannel.js", "../src/colors/parseColor.js", "../src/native/syncVectorLayer.js", "../src/native/pruneNativeResources.js", "../src/native/beforeNativeRender.js", "../src/rendering/render.js", "../src/scene/renderPendingUpdates.js", "../src/scene/scheduleSceneUpdate.js", "../src/native/hideTargets.js", "../src/native/refreshNativeLayer.js", "../src/native/nativeSetLatLng.js", "../src/native/nativeSetLatLngs.js", "../src/native/nativeAddLatLng.js", "../src/native/nativeSetRadius.js", "../src/native/nativeSetStyle.js", "../src/native/nativeRedraw.js", "../src/native/nativeSetIcon.js", "../src/native/nativeSetUrl.js", "../src/native/nativeSetBounds.js", "../src/native/nativeSetOpacity.js", "../src/native/nativeSetZIndex.js", "../src/native/nativeSetZIndexOffset.js", "../src/native/nativeBringToFront.js", "../src/native/nativeBringToBack.js", "../src/globals/nativeMethodHandlers.js", "../src/scene/createLayer.js", "../src/globals/sceneEmptyOptions.js", "../src/native/nativeEvents.js", "../src/weakmaps/nativeEventMaps.js", "../src/weakmaps/raycasterByLayer.js", "../src/weakmaps/trafficByLayer.js", "../src/collision/mergeHits.js", "../src/collision/sortHits.js", "../src/collision/localRay.js", "../src/collision/rayBounds.js", "../src/collision/readTriangle.js", "../src/collision/hiddenLightHit.js", "../src/collision/triangleDistance.js", "../src/collision/worldHit.js", "../src/collision/intersectMeshes.js", "../src/scene/traverse.js", "../src/picking/collectVisibleMesh.js", "../src/geometry/interpolateRoute.js", "../src/traffic/locateTraffic.js", "../src/traffic/placeTraffic.js", "../src/picking/validateCameraInverse.js", "../src/picking/raycast.js", "../src/native/restoreNativeEvents.js", "../src/weakmaps/renderers.js", "../src/globals/coreEventTypes.js", "../src/native/nativeEventSource.js", "../src/native/compareNativeHits.js", "../src/native/updateNativeHover.js", "../src/native/bypassNativeEvent.js", "../src/native/handleNativeMapEvent.js", "../src/native/refreshNativeEvent.js", "../src/native/updateNativeLayerView.js", "../src/native/removeNativeEvents.js", "../src/native/disposeNativeLayer.js", "../src/native/resolveNativeReady.js", "../src/native/rejectNativeReady.js", "../src/native/forwardNativeError.js", "../src/native/removeTargets.js", "../src/native/readyNativeGPU.js", "../src/scene/reportLayerError.js", "../src/native/initNativeGPU.js", "../src/globals/cameraAngles.js", "../src/projections/toPoint.js", "../src/projections/cameraAngles.js", "../src/projections/projectCameraPoint.js", "../src/camera/mapLayerPointToContainerPoint.js", "../src/camera/mapContainerPointToLayerPoint.js", "../src/camera/mapGetCenterLayerPoint.js", "../src/camera/mapPanBy.js", "../src/camera/mapSetZoomAround.js", "../src/globals/cameraZeroPadding.js", "../src/camera/mapPanInside.js", "../src/camera/mapLimitCenter.js", "../src/projections/groundBounds.js", "../src/camera/mapLimitOffset.js", "../src/camera/mapGetBoundsCenterZoom.js", "../src/camera/fitCameraBounds.js", "../src/projections/verticalGroundY.js", "../src/camera/mapGetBoundsZoom.js", "../src/camera/mapTryAnimatedPan.js", "../src/camera/mapGetBounds.js", "../src/weakmaps/cameraMaps.js", "../src/weakmaps/cameraReadyByMap.js", "../src/camera/initializeCameraMap.js", "../src/camera/constrainCameraToBounds.js", "../src/weakmaps/cameraDraggableByMap.js", "../src/camera/cleanupCameraMap.js", "../src/controls/adjustCameraDrag.js", "../src/camera/cameraMapReady.js", "../src/controls/loadCameraControls.js", "../src/utils/noOperation.js", "../src/core/markerSetIcon.js", "../src/core/markerGetEvents.js", "../src/projections/displayContainerPoint.js", "../src/core/markerSetPos.js", "../src/native/refreshNativeLayerContract.js", "../src/core/markerUpdateZIndex.js", "../src/weakmaps/dragByHandler.js", "../src/core/cameraMarkerOnDrag.js", "../src/core/adjustCameraMarkerPan.js", "../src/globals/pendingMarkerPan.js", "../src/globals/markerPanFrame.js", "../src/animations/runMarkerPanFrame.js", "../src/animations/scheduleMarkerPan.js", "../src/core/cameraMarkerDrag.js", "../src/core/markerInitInteraction.js", "../src/core/popupGetEvents.js", "../src/core/tooltipGetEvents.js", "../src/core/popupAdjustPan.js", "../src/core/popupUpdatePosition.js", "../src/core/tooltipSetPosition.js", "../src/core/gridlayerGetEvents.js", "../src/core/gridlayerGetTiledPixelBounds.js", "../src/weakmaps/addedByLayer.js", "../src/weakmaps/areasByLayer.js", "../src/weakmaps/countStatusByLayer.js", "../src/weakmaps/directoriesByLayer.js", "../src/weakmaps/geojsonByLayer.js", "../src/weakmaps/inflightByLayer.js", "../src/weakmaps/modelUrlByLayer.js", "../src/weakmaps/state3dByLayer.js", "../src/weakmaps/urlByLayer.js", "../src/scene/init3D.js", "../src/weakmaps/groupByLayer.js", "../src/weakmaps/archiveHeaderByLayer.js", "../src/weakmaps/sceneLayers.js", "../src/globals/headerOffsets.js", "../src/globals/headerFlags.js", "../src/globals/headerBounds.js", "../src/archives/decodeHeader.js", "../src/weakmaps/etagByLayer.js", "../src/archives/readArchiveRange.js", "../src/archives/getHeader.js", "../src/weakmaps/rendererReadyByLayer.js", "../src/weakmaps/terrainBaseYByLayer.js", "../src/scene/attachSharedScene.js", "../src/sources/updateSourceStatus.js", "../src/sources/buildAreaFeature.js", "../src/projections/projectTreePoint.js", "../src/globals/triangleContexts.js", "../src/sources/groundOffset.js", "../src/geometry/appendAreaTriangle.js", "../src/geometry/addGeneratedTriangle.js", "../src/geometry/generateTreeGeometry.js", "../src/globals/lampDirections.js", "../src/geometry/createLampRing.js", "../src/geometry/lampPostGeometry.js", "../src/geometry/quad.js", "../src/geometry/emitter.js", "../src/geometry/lightGeometry.js", "../src/globals/roundProfile.js", "../src/globals/ringDirections.js", "../src/geometry/createTreeRing.js", "../src/geometry/surface.js", "../src/geometry/validateTree.js", "../src/geometry/treeGeometry.js", "../src/geometry/buildProjectedPoint.js", "../src/sources/buildAreaPoint.js", "../src/projections/projectRing.js", "../src/geometry/buildProjectedPolygon.js", "../src/geometry/buildExtrudedPolygon.js", "../src/sources/featureAnchor.js", "../src/sources/extrusionStyle.js", "../src/sources/prepareAreaGeometryJob.js", "../src/geometry/instanceAreaGeometry.js", "../src/sources/attachAreaMesh.js", "../src/globals/archiveDecoder.js", "../src/archives/tileId.js", "../src/globals/directoryReader.js", "../src/archives/readVarint.js", "../src/archives/decodeDirectory.js", "../src/archives/decompress.js", "../src/archives/loadDirectory.js", "../src/archives/getDirectoryEntries.js", "../src/archives/findDirectoryEntry.js", "../src/archives/getTileData.js", "../src/archives/findTile.js", "../src/archives/getZxy.js", "../src/archives/loadSource.js", "../src/sources/sourceAreaContext.js", "../src/globals/geometryWorkerUrl.js", "../src/workers/settleGeometryWorker.js", "../src/workers/startGeometryWorker.js", "../src/weakmaps/geometryWorkersByMap.js", "../src/workers/closeGeometryWorkers.js", "../src/workers/acquireGeometryWorker.js", "../src/workers/buildAreaInWorker.js", "../src/sources/buildArea.js", "../src/utils/compareDistance.js", "../src/sources/pendingSourceAreas.js", "../src/sources/pumpSourceAreas.js", "../src/weakmaps/highlightedFeatureByLayer.js", "../src/weakmaps/hoveredFeatureByLayer.js", "../src/picking/setHighlight.js", "../src/weakmaps/containerByLayer.js", "../src/weakmaps/cursorByLayer.js", "../src/weakmaps/tooltipByLayer.js", "../src/picking/showFeature.js", "../src/sources/releaseArea.js", "../src/sources/compareAreaDistance.js", "../src/sources/updateArea.js", "../src/terrain/setTerrainHeight.js", "../src/geometry/restoreGeometry.js", "../src/textures/restoreMaterialTextures.js", "../src/scene/restoreObject.js", "../src/weakmaps/rendererDevices.js", "../src/gpu/showWebGPUWarning.js", "../src/scene/failAttachment.js", "../src/gpu/requestAdapter.js", "../src/gpu/requestDevice.js", "../src/gpu/rendererDeviceError.js", "../src/gpu/rendererDeviceLost.js", "../src/camera/createSceneCamera.js", "../src/globals/sceneSunlightUniforms.js", "../src/gpu/initializeRendererResources.js", "../src/weakmaps/queuedByLayer.js", "../src/globals/pendingMapChanges.js", "../src/scene/renderPendingMapChange.js", "../src/scene/onMapChange.js", "../src/weakmaps/zoomLevelByLayer.js", "../src/animations/startZoom.js", "../src/globals/pendingZoomAnimations.js", "../src/animations/renderPendingZoomAnimation.js", "../src/animations/onZoomAnim.js", "../src/animations/endZoom.js", "../src/gpu/mountRenderer.js", "../src/gpu/initializeSharedRenderer.js", "../src/weakmaps/modelByLayer.js", "../src/globals/geometryDecoder.js", "../src/models/hasUnsupportedPrimitives.js", "../src/models/decodeModel.js", "../src/geometry/conformModelToTerrain.js", "../src/globals/HEIGHT.js", "../src/geometry/vertexNormals.js", "../src/collision/collectMeshes.js", "../src/models/loadBuffer.js", "../src/globals/geometryImageOptions.js", "../src/textures/loadModelImage.js", "../src/models/loadModelResources.js", "../src/textures/modelTextureSampler.js", "../src/textures/modelTextureFor.js", "../src/materials/modelMaterialFor.js", "../src/models/createModelContext.js", "../src/globals/geometryQuaternion.js", "../src/globals/geometryScale.js", "../src/globals/geometryTranslation.js", "../src/transforms/modelNodeMatrix.js", "../src/globals/geometrySemantics.js", "../src/globals/types.js", "../src/globals/sizes.js", "../src/models/readAccessorValue.js", "../src/models/readAccessorValues.js", "../src/models/readSparseAccessor.js", "../src/models/normalizeAccessor.js", "../src/models/readAccessor.js", "../src/models/readModelAttributes.js", "../src/models/readModelIndices.js", "../src/geometry/createModelGeometry.js", "../src/models/modelNode.js", "../src/models/releaseModelResources.js", "../src/models/buildModelNodes.js", "../src/models/applyModelTransform.js", "../src/models/loadModel.js", "../src/scene/ready3D.js", "../src/layer-controls/placeEntry.js", "../src/layer-controls/placeEntryElement.js", "../src/layer-controls/placeUnderEntry.js", "../src/globals/pendingPlacements.js", "../src/layer-controls/runPlacements.js", "../src/layer-controls/replaceEntry.js", "../src/layer-controls/removeEntry.js", "../src/layer-controls/underEntry.js", "../src/layer-controls/layerCountTitle.js", "../src/layer-controls/renderLayerCount.js", "../src/layer-controls/updateLayerCount.js", "../src/raster/initRaster.js", "../src/globals/wantedTiles.js", "../src/globals/coverageTiles.js", "../src/raster/comparePendingTiles.js", "../src/globals/blobParts.js", "../src/weakmaps/terrainBoundsByLayer.js", "../src/weakmaps/terrainOriginElevationByLayer.js", "../src/weakmaps/terrainPromiseByLayer.js", "../src/raster/addRasterTile.js", "../src/globals/rasterPoint.js", "../src/weakmaps/demByLayer.js", "../src/weakmaps/rasterProgramByLayer.js", "../src/weakmaps/terrainGridsByLayer.js", "../src/globals/demTexture.js", "../src/globals/demTarget.js", "../src/globals/demLayout.js", "../src/globals/demSize.js", "../src/terrain/copyTerrainTile.js", "../src/terrain/terrainAtlas.js", "../src/materials/terrainRasterProgram.js", "../src/globals/demBuffer.js", "../src/geometry/terrainGrid.js", "../src/geometry/terrainBuffers.js", "../src/geometry/terrainTileGeometry.js", "../src/raster/registerTerrainTile.js", "../src/weakmaps/rasterGeometryByLayer.js", "../src/raster/createRasterMesh.js", "../src/globals/rasterTexture.js", "../src/globals/rasterSampler.js", "../src/globals/rasterBuffer.js", "../src/globals/rasterPositions.js", "../src/globals/rasterNormals.js", "../src/globals/rasterUVs.js", "../src/globals/rasterIndices.js", "../src/geometry/createRasterQuadGeometry.js", "../src/raster/finishRasterTile.js", "../src/raster/loadRasterTile.js", "../src/raster/pumpRasterTiles.js", "../src/raster/retainRasterTiles.js", "../src/globals/TILE_RADIUS.js", "../src/globals/archiveNorthWest.js", "../src/globals/archiveSouthEast.js", "../src/raster/rasterTileRange.js", "../src/raster/updateRasterTiles.js", "../src/raster/getRasterEvents.js", "../src/raster/readyRaster.js", "../src/raster/reportRasterError.js", "../src/raster/setRasterTerrain.js", "../src/raster/finishRasterAttachment.js", "../src/raster/updateAttachedTiles.js", "../src/raster/onPMTileAdd.js", "../src/raster/releaseRasterTiles.js", "../src/weakmaps/pointerEventsByLayer.js", "../src/weakmaps/bridgeMeshByLayer.js", "../src/weakmaps/controlByLayer.js", "../src/weakmaps/eventMapByLayer.js", "../src/weakmaps/eventsByLayer.js", "../src/weakmaps/fadeFrameByLayer.js", "../src/weakmaps/fadeVersionByLayer.js", "../src/weakmaps/terrainArchiveByLayer.js", "../src/weakmaps/terrainControllerByLayer.js", "../src/weakmaps/terrainLoadingByLayer.js", "../src/weakmaps/terrainSourceByLayer.js", "../src/weakmaps/typeByLayer.js", "../src/weakmaps/walkerByLayer.js", "../src/weakmaps/sceneFields.js", "../src/scene/onRemove3DLayer.js", "../src/globals/sceneTransferFields.js", "../src/picking/onPointerLeave.js", "../src/globals/sceneCleanupFields.js", "../src/gpu/releaseRenderer.js", "../src/scene/releaseSharedScene.js", "../src/raster/onPMTileRemove.js", "../src/raster/getRasterTileSize.js", "../src/globals/renderEmpty.js", "../src/terrain/clearLayerTerrain.js", "../src/terrain/onTerrainRemove.js", "../src/terrain/loadTerrainTiles.js", "../src/terrain/readBridges.js", "../src/terrain/terrainTileQueue.js", "../src/geometry/addBridges.js", "../src/projections/projectBridgePoint.js", "../src/geometry/bridgePaths.js", "../src/geometry/indexBridge.js", "../src/geometry/bridgeFaces.js", "../src/geometry/bridgeEdge.js", "../src/geometry/bridgeSides.js", "../src/geometry/bridgePolygon.js", "../src/terrain/applyTerrain.js", "../src/terrain/loadTerrain.js", "../src/scene/onAdd3DLayer.js", "../src/picking/findFeature.js", "../src/picking/onPointerMove.js", "../src/picking/pointerMove.js", "../src/picking/onClick.js", "../src/picking/pointerClick.js", "../src/picking/pointerLeave.js", "../src/scene/attachLayer.js", "../src/terrain/loadReadyTerrain.js", "../src/terrain/setLayerTerrain.js", "../src/terrain/onTerrainAdd.js", "../src/terrain/initTerrain.js", "../src/sunlight/initSunlight.js", "../src/weakmaps/timeControlByMap.js", "../src/weakmaps/sunlightByControl.js", "../src/weakmaps/sunByMap.js", "../src/sunlight/createSun.js", "../src/sunlight/updateSky.js", "../src/projections/projectCelestialBody.js", "../src/sunlight/updateCelestialDisc.js", "../src/globals/atmosphereStops.js", "../src/globals/atmosphereColor.js", "../src/colors/mixColor.js", "../src/colors/formatRGB.js", "../src/sunlight/atmosphere.js", "../src/astronomy/solarTime.js", "../src/astronomy/horizontalPosition.js", "../src/astronomy/moonPosition.js", "../src/globals/sinObliquity.js", "../src/globals/cosObliquity.js", "../src/astronomy/solarPosition.js", "../src/sunlight/requestSunlightRender.js", "../src/sunlight/updateSun.js", "../src/sunlight/useLiveTime.js", "../src/sunlight/useSelectedTime.js", "../src/sunlight/tickSun.js", "../src/sunlight/onAddSun.js", "../src/sunlight/initializeTimeControl.js", "../src/sunlight/addTimeLayer.js", "../src/sunlight/removeTimeLayer.js", "../src/sunlight/onAddTimeControl.js", "../src/sunlight/addTimeControlToMap.js", "../src/sunlight/styleTimeControl.js", "../src/sunlight/removeTimeControl.js", "../src/sunlight/removeSun.js", "../src/sunlight/onRemoveSun.js", "../src/traffic/initTraffic.js", "../src/globals/speed.js", "../src/globals/trafficEmptyOptions.js", "../src/globals/paints.js", "../src/globals/dark.js", "../src/globals/skin.js", "../src/globals/trousers.js", "../src/geometry/box.js", "../src/vehicles/bicycleModel.js", "../src/globals/shirt.js", "../src/globals/parts.js", "../src/vehicles/pedestrianModel.js", "../src/traffic/routeColor.js", "../src/globals/glass.js", "../src/globals/white.js", "../src/globals/tyre.js", "../src/globals/headlight.js", "../src/globals/taillight.js", "../src/vehicles/buildCarriage.js", "../src/vehicles/busModel.js", "../src/vehicles/tramModel.js", "../src/vehicles/metroModel.js", "../src/vehicles/mirrorVehiclePart.js", "../src/vehicles/carModel.js", "../src/globals/hull.js", "../src/vehicles/boatBenches.js", "../src/vehicles/boatModel.js", "../src/globals/vehicles.js", "../src/globals/trafficShader.js", "../src/geometry/triangle.js", "../src/geometry/buildGeometryParts.js", "../src/traffic/trafficTooltip.js", "../src/traffic/startTraffic.js", "../src/traffic/addTraffic.js", "../src/traffic/disposeTrafficObject.js", "../src/traffic/destroyTrafficGpu.js", "../src/traffic/removeTraffic.js", "../src/traffic/readyTraffic.js", "../src/traffic/trafficNow.js", "../src/traffic/vehicleOffsets.js", "../src/globals/trafficClocks.js", "../src/traffic/clockMinutes.js", "../src/traffic/compareDepartures.js", "../src/traffic/scheduledTrips.js", "../src/traffic/tripsAt.js", "../src/traffic/failTraffic.js", "../src/globals/trafficRouteMaterial.js", "../src/geometry/appendRouteDash.js", "../src/geometry/appendRouteSegment.js", "../src/geometry/routeGeometry.js", "../src/traffic/createTrafficMesh.js", "../src/traffic/drawTrafficRoute.js", "../src/traffic/trafficBounds.js", "../src/traffic/rebuildTrafficMesh.js", "../src/traffic/trafficStorage.js", "../src/traffic/uploadTrafficLanes.js", "../src/traffic/rebaseTraffic.js", "../src/traffic/trafficStatusText.js", "../src/traffic/refreshTrafficTrips.js", "../src/traffic/moveTraffic.js", "../src/traffic/updateTrafficLights.js", "../src/traffic/updateTrafficPose.js", "../src/traffic/tickTraffic.js", "../src/traffic/fetchTrafficLanes.js", "../src/globals/trafficEmptyList.js", "../src/traffic/featuresToTrafficLanes.js", "../src/traffic/prepareTraffic.js", "../src/terrain/readyTerrainOf.js", "../src/traffic/groundTraffic.js", "../src/traffic/loadedTrafficLanes.js", "../src/traffic/failedTrafficLoad.js", "../src/traffic/loadTraffic.js", "../src/traffic/updateTraffic.js", "../src/traffic/updateTrafficTerrain.js", "../src/walk/initWalk.js", "../src/walk/initializeWalkControl.js", "../src/walk/createWalk.js", "../src/walk/onWalkBlur.js", "../src/globals/moves.js", "../src/walk/stopWalking.js", "../src/walk/onWalkPointer.js", "../src/globals/limbs.js", "../src/projections/walkerLocalPosition.js", "../src/walk/placeWalker.js", "../src/walk/onWalkTerrain.js", "../src/walk/onWalkKey.js", "../src/walk/startWalking.js", "../src/globals/sceneWalkHandlers.js", "../src/utils/wrap.js", "../src/picking/shouldSkipOther.js", "../src/walk/landWalker.js", "../src/walk/moveWalker.js", "../src/globals/CELL.js", "../src/weakmaps/colliders.js", "../src/collision/indexTriangle.js", "../src/collision/collider.js", "../src/collision/horizontalRay.js", "../src/picking/hitColliderCell.js", "../src/picking/hitMesh.js", "../src/collision/trafficCollision.js", "../src/picking/hit.js", "../src/walk/isWalkBlocked.js", "../src/walk/stepWalkerHeight.js", "../src/walk/updateWalkerView.js", "../src/walk/resolveWalkerPosition.js", "../src/collision/insideMesh.js", "../src/collision/insideWalker.js", "../src/walk/animateWalker.js", "../src/walk/toggleWalking.js", "../src/walk/onAddWalkControl.js", "../src/walk/onRemoveWalkControl.js", "../src/core/initializeNativeLayer.js", "../src/weakmaps/closestMethods.js", "../src/weakmaps/boundsMethods.js", "../src/weakmaps/gridInitializers.js", "../src/scene/emptyEvents.js", "../src/core/closestCameraLayerPoint.js", "../src/core/cameraCircleBounds.js", "../src/core/initializeGridContainer.js", "../src/globals/pendingGridFades.js", "../src/globals/gridFadeFrame.js", "../src/animations/cancelGridFade.js", "../src/animations/runGridFades.js", "../src/animations/scheduleGridFade.js", "../src/core/updateGridOpacity.js", "../src/globals/pendingRasterLoads.js", "../src/core/fireRasterLoad.js", "../src/textures/attachRasterImage.js", "../src/core/redrawPath.js", "../src/scene/addRegisteredLayer.js", "../src/scene/removeLayerEvents.js", "../src/scene/addSceneLayer.js", "../src/terrain/onTerrainChange.js", "../src/scene/get3DEvents.js", "../src/scene/isNativeLayer.js", "../src/scene/layerInitialize.js", "../src/globals/pendingInitializations.js", "../src/globals/loading.js", "../src/sources/initializeGeoJSON.js", "../src/cog/validateCogRange.js", "../src/cog/validateCogContentRange.js", "../src/cog/invalidCogFullResponse.js", "../src/cog/validateCogResponse.js", "../src/cog/readCogBody.js", "../src/cog/readCog.js", "../src/globals/cogTags.js", "../src/cog/readCogTag.js", "../src/cog/readCogDirectory.js", "../src/cog/validCogDimensions.js", "../src/cog/validCogEncoding.js", "../src/cog/getCogProfile.js", "../src/cog/hasCogProjection.js", "../src/cog/finiteCogValues.js", "../src/cog/validCogGeoArrays.js", "../src/cog/getCogBase.js", "../src/cog/validCogGrid.js", "../src/cog/validateCogOffsets.js", "../src/cog/readCogLevel.js", "../src/cog/readCogDirectories.js", "../src/cog/decodeCogTile.js", "../src/cog/readCogBlock.js", "../src/cog/getElevationTile.js", "../src/cog/getColorTile.js", "../src/cog/validCogTileCoordinates.js", "../src/cog/getCogTile.js", "../src/cog/getCogHeader.js", "../src/cog/validateCogContainer.js", "../src/cog/getCogAssetEntry.js", "../src/cog/openCogAsset.js", "../src/cog/openCog.js", "../src/cog/initCog.js", "../src/scene/initializerFor.js", "../src/scene/resolveNextInitialization.js", "../src/scene/initializeLayer.js", "../src/core/removeLayer.js", "../src/scene/removeSceneLayer.js", "../src/camera/getPitch.js", "../src/camera/getBearing.js", "../src/core/markerSetRotation.js", "../src/core/setRotation.js", "../src/core/layerCallInitHooks.js"],
4
+ "sourcesContent": ["export const L = globalThis.L;\r\n", "export const radians = Math.PI / 180;\n", "export const degrees = 180 / Math.PI;\r\n", "export const cameraPitchByMap = new WeakMap();\n", "import { cameraPitchByMap } from '../weakmaps/cameraPitchByMap.js';\n\n\n\nexport function mapGetPitch(map) { return cameraPitchByMap.get(map) ?? 0; }\n", "export const cameraBearingByMap = new WeakMap();\n", "import { cameraBearingByMap } from '../weakmaps/cameraBearingByMap.js';\n\n\n\nexport function mapGetBearing(map) { return cameraBearingByMap.get(map) ?? 0; }\n", "export const cameraEmptyOptions = Object.freeze({});\n", "export const pitchSkyByMap = new WeakMap();\n", "import { pitchSkyByMap } from '../weakmaps/pitchSkyByMap.js';\n\nimport { L } from '../globals/L.js';\nimport { radians } from '../globals/radians.js';\n\nimport { mapGetPitch } from './mapGetPitch.js';\n\n\nexport function updateSky() {\n const height = this.getSize().y, pitch = mapGetPitch(this) * radians;\n const far = height * this.options.pitchMaxDistance, distance = height * 1.5;\n const top = height / 2 - far * Math.abs(Math.cos(pitch)) * distance / (distance + Math.sin(pitch) * far);\n if (top > 0 && !pitchSkyByMap.get(this)) {\n pitchSkyByMap.set(this, L.DomUtil.create('div', 'leaflet-pitch-sky', this.getContainer()));\n pitchSkyByMap.get(this).setAttribute('aria-hidden', 'true');\n pitchSkyByMap.get(this).style.cssText = 'position:absolute;inset:0 0 auto;height:0;z-index:0;pointer-events:none;background:var(--leaflet-sky-background,linear-gradient(#9ec5e8,#dfe9f0))';\n }\n if (pitchSkyByMap.get(this)) {\n pitchSkyByMap.get(this).style.inset = pitch > Math.PI / 2 ? 'auto 0 0' : '0 0 auto';\n pitchSkyByMap.get(this).style.height = `${Math.max(0, Math.ceil(top))}px`;\n pitchSkyByMap.get(this).style.display = top > 0 ? '' : 'none';\n }\n}\n", "import { cameraBearingByMap } from '../weakmaps/cameraBearingByMap.js';\nimport { cameraPitchByMap } from '../weakmaps/cameraPitchByMap.js';\n\n\nimport { mapGetPitch } from './mapGetPitch.js';\nimport { mapGetBearing } from './mapGetBearing.js';\n\nimport { updateSky } from './updateSky.js';\n\nexport function mapSetPitchAndBearing(map, pitch, bearing) {\n if (!Number.isFinite(pitch) || !Number.isFinite(bearing)) throw /* alloc */ new TypeError('Camera angles must be finite numbers');\n if (!Number.isFinite(map.options.maxPitch) || map.options.maxPitch < 0 || map.options.maxPitch > 180) {\n throw /* alloc */ new TypeError('maxPitch must be between 0 and 180 degrees');\n }\n const previousPitch = mapGetPitch(map), previousBearing = mapGetBearing(map);\n cameraPitchByMap.set(map, Math.max(0, Math.min(map.options.maxPitch, pitch)));\n cameraBearingByMap.set(map, ((bearing % 360) + 360) % 360);\n if (map._loaded) {\n updateSky.call(map);\n if (previousBearing !== mapGetBearing(map)) map.fire('rotate', /* alloc */ { bearing: mapGetBearing(map) });\n if (previousPitch !== mapGetPitch(map)) map.fire('pitch', /* alloc */ { pitch: mapGetPitch(map) });\n }\n return map;\n}\n", "export const cameraAnimationByMap = new WeakMap();\n", "export const cameraFrameByMap = new WeakMap();\n", "export const cameraAnimations = new Map();\n", "export const cameraAnimationFrame = { value: null };\n", "import { cameraAnimationByMap } from '../weakmaps/cameraAnimationByMap.js';\nimport { cameraFrameByMap } from '../weakmaps/cameraFrameByMap.js';\n\nimport { cameraAnimations } from '../globals/cameraAnimations.js';\nimport { cameraAnimationFrame } from '../globals/cameraAnimationFrame.js';\n\n\n\nexport function cancelCameraAnimation(map) {\r\n cameraAnimations.delete(map);\r\n cameraAnimationByMap.set(map, null);\r\n cameraFrameByMap.set(map, null);\r\n if (!cameraAnimations.size && cameraAnimationFrame.value !== null) {\r\n cancelAnimationFrame(cameraAnimationFrame.value);\r\n cameraAnimationFrame.value = null;\r\n }\r\n}\n", "export const cameraTouchStateByMap = new WeakMap();\n", "export const rotateControlByMap = new WeakMap();\n", "export const Compass = { value: undefined };\n", "export const ContainerResize = { value: undefined };\n", "export const PitchDrag = { value: undefined };\n", "export const ShiftRotate = { value: undefined };\n", "export const TouchMode = { value: undefined };\n", "export const touchByContainer = new WeakMap();\n", "export const cameraTouchStates = new Set();\n", "export const cameraListenerOptions = Object.freeze({\n capture: true,\n passive: false\n});\n", "export function notifyCameraTouchChange() { this._map.fire('cameratouchchange'); }\n", "export const cameraDragSensitivity = Object.freeze([0.8, 0.5]);\n", "export const cameraBearingSensitivity = Object.freeze([0.8, 0]);\n", "export const cameraFocusOptions = Object.freeze({\n preventScroll: true\n});\n", "export const cameraAnimatedOptions = Object.freeze({\n animate: true\n});\n", "import { cameraAnimationByMap } from '../weakmaps/cameraAnimationByMap.js';\nimport { cameraFrameByMap } from '../weakmaps/cameraFrameByMap.js';\n\nimport { cameraAnimationFrame } from '../globals/cameraAnimationFrame.js';\nimport { cameraAnimations } from '../globals/cameraAnimations.js';\n\nimport { mapSetPitchAndBearing } from '../camera/mapSetPitchAndBearing.js';\n\n\nimport { scheduleCameraAnimation } from './scheduleCameraAnimation.js';\n\nexport function runCameraAnimations(now) {\n cameraAnimationFrame.value = null;\n const pending = /* alloc */ [...cameraAnimations];\n cameraAnimations.clear();\n let failure;\n let map, animation, progress, eased;\n for ([map, animation] of pending) {\n cameraFrameByMap.set(map, null);\n if (cameraAnimationByMap.get(map) !== animation) continue;\n progress = animation.duration\n ? Math.min(1, (now - animation.start) / (animation.duration * 1000)) : 1;\n eased = 1 - (1 - progress) ** 3;\n try {\n mapSetPitchAndBearing(map, animation.fromPitch + (Math.max(0, Math.min(map.options.maxPitch, animation.pitch)) - animation.fromPitch) * eased, animation.fromBearing + animation.delta * eased);\n if (progress < 1 && cameraAnimationByMap.get(map) === animation) scheduleCameraAnimation(map, animation);\n else if (cameraAnimationByMap.get(map) === animation) cameraAnimationByMap.set(map, null);\n } catch (error) {\n failure ||= error;\n }\n }\n if (failure) throw failure;\n}\n", "import { cameraFrameByMap } from '../weakmaps/cameraFrameByMap.js';\n\nimport { cameraAnimations } from '../globals/cameraAnimations.js';\nimport { cameraAnimationFrame } from '../globals/cameraAnimationFrame.js';\n\n\n\nimport { runCameraAnimations } from './runCameraAnimations.js';\n\nexport function scheduleCameraAnimation(map, animation) {\r\n cameraAnimations.set(map, animation);\r\n if (cameraAnimationFrame.value === null) cameraAnimationFrame.value = requestAnimationFrame(runCameraAnimations);\r\n cameraFrameByMap.set(map, cameraAnimationFrame.value);\r\n}\n", "import { cameraAnimationByMap } from '../weakmaps/cameraAnimationByMap.js';\n\nimport { cameraEmptyOptions } from '../globals/cameraEmptyOptions.js';\nimport { mapSetPitchAndBearing } from '../camera/mapSetPitchAndBearing.js';\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\n\nimport { cancelCameraAnimation } from './cancelCameraAnimation.js';\nimport { scheduleCameraAnimation } from './scheduleCameraAnimation.js';\n\n\nexport function mapAnimateCamera(map, pitch, bearing, options = cameraEmptyOptions) {\n cancelCameraAnimation(map);\n if (!Number.isFinite(pitch) || !Number.isFinite(bearing)) throw /* alloc */ new TypeError('Camera angles must be finite numbers');\n if (!options.animate || matchMedia('(prefers-reduced-motion: reduce)').matches) {\n return mapSetPitchAndBearing(map, pitch, bearing);\n }\n const duration = options.duration ?? 0.3;\n if (!Number.isFinite(duration) || duration < 0) throw /* alloc */ new TypeError('Camera duration must be nonnegative');\n const start = performance.now(), fromPitch = mapGetPitch(map), fromBearing = mapGetBearing(map);\n const delta = ((bearing - fromBearing) % 360 + 540) % 360 - 180;\n const animation = /* alloc */ { duration, start, fromPitch, fromBearing, pitch, delta };\n cameraAnimationByMap.set(map, animation);\n scheduleCameraAnimation(map, animation);\n return map;\n}\n", "import { cameraAnimatedOptions } from '../globals/cameraAnimatedOptions.js';\nimport { mapAnimateCamera } from '../animations/mapAnimateCamera.js';\n\nexport function mapResetNorthPitch(map, options = cameraAnimatedOptions) { return mapAnimateCamera(map, 0, 0, options); }\n", "import { mapAnimateCamera } from '../animations/mapAnimateCamera.js';\nimport { mapGetPitch } from './mapGetPitch.js';\nexport function mapSetBearing(map, bearing, options) { return mapAnimateCamera(map, mapGetPitch(map), bearing, options); }\n", "import { cameraAnimatedOptions } from '../globals/cameraAnimatedOptions.js';\nimport { mapSetBearing } from './mapSetBearing.js';\n\nexport function mapResetNorth(map, options = cameraAnimatedOptions) { return mapSetBearing(map, 0, options); }\n", "import { cameraFocusOptions } from '../globals/cameraFocusOptions.js';\nimport { mapResetNorthPitch } from '../camera/mapResetNorthPitch.js';\r\nimport { mapResetNorth } from '../camera/mapResetNorth.js';\r\n\r\nexport function rotateButtonClick(event) {\r\n const control = this._rotateControl, map = control._map;\r\n event.preventDefault();\r\n if (control.options.visualizePitch) mapResetNorthPitch(map);\r\n else mapResetNorth(map);\r\n if (event.detail) map.getContainer().focus(cameraFocusOptions);\r\n}\r\n", "import { mapAnimateCamera } from '../animations/mapAnimateCamera.js';\nimport { mapGetBearing } from './mapGetBearing.js';\nexport function mapSetPitch(map, pitch, options) { return mapAnimateCamera(map, pitch, mapGetBearing(map), options); }\n", "import { mapSetBearing } from '../camera/mapSetBearing.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\nimport { mapSetPitch } from '../camera/mapSetPitch.js';\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nexport function rotateButtonKeydown(event) {\r\n const control = this._rotateControl, map = control._map, step = event.shiftKey ? 15 : 5;\r\n if (event.key === 'ArrowLeft') mapSetBearing(map, mapGetBearing(map) - step);\r\n else if (event.key === 'ArrowRight') mapSetBearing(map, mapGetBearing(map) + step);\r\n else if (event.key === 'ArrowUp' && control.options.visualizePitch) mapSetPitch(map, mapGetPitch(map) + step);\r\n else if (event.key === 'ArrowDown' && control.options.visualizePitch) mapSetPitch(map, mapGetPitch(map) - step);\r\n else if (event.key === 'Home' || event.key === ' ') this.click();\r\n else return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n}\n", "import { radians } from '../globals/radians.js';\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\nexport function refreshRotateControl() {\n const map = this._map, pitch = this.options.visualizePitch ? mapGetPitch(map) : 0;\n this._arrow.style.transform = `scale(${1 / Math.sqrt(Math.max(0.01, Math.abs(Math.cos(pitch * radians))))}) rotateX(${pitch}deg) rotate(${mapGetBearing(map)}deg)`;\n this._button.setAttribute('aria-description', `Bearing ${Math.round(mapGetBearing(map))} degrees, pitch ${Math.round(mapGetPitch(map))} degrees. Arrow keys adjust the camera; Home resets it.`);\n this._container.style.display = this.options.closeOnZeroBearing && !mapGetBearing(map) && !pitch &&\n !this._container.contains(document.activeElement) ? 'none' : '';\n}\n", "export const dragStates = { value: new WeakMap() };\n", "export const cameraDrags = { value: new Set() };\n", "export function editable(target) {\r\n return target.closest?.('input,textarea,select,[contenteditable=\"true\"]');\r\n}\n", "import { dragStates } from '../weakmaps/dragStates.js';\nimport { cameraFocusOptions } from '../globals/cameraFocusOptions.js';\n\n\nimport { editable } from './isEditableTarget.js';\n\nexport function cameraDragDown(event) {\n const state = dragStates.value.get(this);\n if (state.drag || !state.accept(event) || editable(event.target)) return;\n event.preventDefault();\n event.stopPropagation();\n state.moved = false;\n const rect = state.map.getContainer().getBoundingClientRect();\n state.drag = /* alloc */ {\n id: event.pointerId, x: event.clientX, y: event.clientY, cursor: state.element.style.cursor,\n cx: rect.left + rect.width / 2, cy: rect.top + rect.height / 2,\n dragging: state.map.dragging?.enabled(),\n };\n state.map.dragging?.disable();\n state.element.focus?.(cameraFocusOptions);\n state.element.setPointerCapture(event.pointerId);\n state.element.style.cursor = 'grabbing';\n}\n", "import { cancelCameraAnimation } from './cancelCameraAnimation.js';\n\nexport function mapStopPitchBearingAnimation(map) {\n cancelCameraAnimation(map);\r\n return map;\n}\n", "import { degrees } from '../globals/degrees.js';\nimport { dragStates } from '../weakmaps/dragStates.js';\n\nimport { mapStopPitchBearingAnimation } from '../animations/mapStopPitchBearingAnimation.js';\nimport { mapSetPitchAndBearing } from '../camera/mapSetPitchAndBearing.js';\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\n\nexport function cameraDragMove(event) {\r\n const state = dragStates.value.get(this);\r\n if (!state.drag || state.drag.id !== event.pointerId) return;\r\n const x = event.clientX - state.drag.x, y = event.clientY - state.drag.y;\r\n if (Math.hypot(x, y) < 3 && !state.moved) return;\r\n mapStopPitchBearingAnimation(state.map);\r\n state.moved = true;\r\n event.preventDefault();\r\n let bearing = x * state.sensitivity[0];\r\n if (state.orbit) {\r\n if (Math.abs(state.drag.cy - state.drag.y) > 100) {\r\n const angle = Math.atan2(event.clientY - state.drag.cy, event.clientX - state.drag.cx) -\r\n Math.atan2(event.clientY - state.drag.cy, state.drag.x - state.drag.cx);\r\n bearing = Math.atan2(Math.sin(angle), Math.cos(angle)) * degrees;\r\n } else bearing *= event.clientY < state.drag.cy ? 1 : -1;\r\n }\r\n mapSetPitchAndBearing(state.map, mapGetPitch(state.map) - y * state.sensitivity[1], mapGetBearing(state.map) + bearing);\r\n state.drag.x = event.clientX;\r\n state.drag.y = event.clientY;\r\n}\n", "export function finishCameraDrag(state, event) {\r\n if (!state?.drag) return;\r\n if (event?.pointerId !== undefined && event.pointerId !== state.drag.id) return;\r\n const finished = state.drag;\r\n state.drag = null;\r\n if (state.element.hasPointerCapture?.(finished.id)) state.element.releasePointerCapture(finished.id);\r\n if (finished.dragging && state.map.getContainer()._leaflet_id) state.map.dragging.enable();\r\n state.element.style.cursor = finished.cursor;\r\n}\n", "import { dragStates } from '../weakmaps/dragStates.js';\n\nimport { finishCameraDrag } from './finishCameraDrag.js';\n\nexport function cameraDragEnd(event) {\r\n finishCameraDrag(dragStates.value.get(this), event);\r\n}\n", "import { dragStates } from '../weakmaps/dragStates.js';\n\n\nexport function cameraDragClick(event) {\n const state = dragStates.value.get(this);\n if (!state.moved) return;\n event.preventDefault();\n event.stopPropagation();\n state.moved = false;\n}\n", "import { dragStates } from '../weakmaps/dragStates.js';\n\n\nexport function cameraDragContextMenu(event) {\r\n const state = dragStates.value.get(this);\r\n if (!state.drag && !state.moved) return;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n}\n", "import { cameraDrags } from '../globals/cameraDrags.js';\n\n\nimport { finishCameraDrag } from './finishCameraDrag.js';\n\nexport function endAllCameraDrags() {\n let state;\n for (state of cameraDrags.value) finishCameraDrag(state);\n}\n", "import { cameraDragSensitivity } from '../globals/cameraDragSensitivity.js';\nimport { dragStates } from '../weakmaps/dragStates.js';\nimport { cameraDrags } from '../globals/cameraDrags.js';\n\n\nimport { cameraDragDown } from './cameraDragDown.js';\nimport { cameraDragMove } from './cameraDragMove.js';\nimport { cameraDragEnd } from './cameraDragEnd.js';\nimport { cameraDragClick } from './cameraDragClick.js';\nimport { cameraDragContextMenu } from './cameraDragContextMenu.js';\nimport { endAllCameraDrags } from './endAllCameraDrags.js';\n\nexport function dragCamera(map, element, accept, sensitivity = cameraDragSensitivity, orbit = false) {\n const state = /* alloc */ { map, element, accept, sensitivity, orbit, drag: null, moved: false };\n dragStates.value.set(element, state);\n cameraDrags.value.add(state);\n element.addEventListener('pointerdown', cameraDragDown, true);\n element.addEventListener('pointermove', cameraDragMove);\n element.addEventListener('pointerup', cameraDragEnd);\n element.addEventListener('pointercancel', cameraDragEnd);\n element.addEventListener('lostpointercapture', cameraDragEnd);\n element.addEventListener('click', cameraDragClick, true);\n element.addEventListener('contextmenu', cameraDragContextMenu);\n window.addEventListener('blur', endAllCameraDrags);\n return state;\n}\n", "export function acceptRotateDrag(event) {\r\n return event.button === 0;\r\n}\n", "import { refreshRotateControl } from './refreshRotateControl.js';\n\nexport function refreshRotateFocus() {\r\n refreshRotateControl.call(this._rotateControl);\r\n}\n", "import { L } from '../globals/L.js';\nimport { cameraDragSensitivity } from '../globals/cameraDragSensitivity.js';\nimport { cameraBearingSensitivity } from '../globals/cameraBearingSensitivity.js';\nimport { rotateButtonClick } from './rotateButtonClick.js';\nimport { rotateButtonKeydown } from './rotateButtonKeydown.js';\nimport { refreshRotateControl } from './refreshRotateControl.js';\nimport { dragCamera } from './dragCamera.js';\nimport { acceptRotateDrag } from './acceptRotateDrag.js';\nimport { refreshRotateFocus } from './refreshRotateFocus.js';\n\n\nexport function rotateOnAdd(map) {\n const container = L.DomUtil.create('div', 'leaflet-control-rotate leaflet-bar');\n const button = L.DomUtil.create('a', 'leaflet-control-rotate-toggle', container);\n this._map = map;\n this._container = container;\n this._button = button;\n button._rotateControl = this;\n button.href = '#';\n button.draggable = false;\n button.setAttribute('role', 'button');\n button.title = this.options.visualizePitch ? 'Reset bearing and pitch' : 'Reset bearing to north';\n button.setAttribute('aria-label', button.title);\n button.style.cssText = 'cursor:grab;touch-action:none';\n const arrow = L.DomUtil.create('span', 'leaflet-control-rotate-arrow', button);\n this._arrow = arrow;\n arrow.setAttribute('aria-hidden', 'true');\n arrow.style.cssText = 'display:block;width:100%;height:100%;pointer-events:none;background: no-repeat center / 29px 29px';\n arrow.style.backgroundImage = 'url(\"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 29 29%27%3E%3Cpath fill=%27%23333%27 d=%27M10.5 14 14.5 6 18.5 14Z%27/%3E%3Cpath fill=%27%23ccc%27 d=%27M10.5 16 14.5 24 18.5 16Z%27/%3E%3C/svg%3E\")';\n button.onclick = rotateButtonClick;\n button.onkeydown = rotateButtonKeydown;\n this._refresh = refreshRotateControl;\n map.on('rotate pitch', this._refresh, this);\n this._refresh();\n this._dragState = dragCamera(map, button, acceptRotateDrag,\n this.options.visualizePitch ? cameraDragSensitivity : cameraBearingSensitivity);\n button.addEventListener('focusout', refreshRotateFocus);\n L.DomEvent.on(button, 'dblclick contextmenu', L.DomEvent.stop);\n L.DomEvent.disableClickPropagation(container);\n L.DomEvent.disableScrollPropagation(container);\n return container;\n}\n", "import { dragStates } from '../weakmaps/dragStates.js';\nimport { cameraDrags } from '../globals/cameraDrags.js';\n\nimport { finishCameraDrag } from './finishCameraDrag.js';\nimport { cameraDragDown } from './cameraDragDown.js';\nimport { cameraDragMove } from './cameraDragMove.js';\nimport { cameraDragEnd } from './cameraDragEnd.js';\nimport { cameraDragClick } from './cameraDragClick.js';\nimport { cameraDragContextMenu } from './cameraDragContextMenu.js';\n\nimport { endAllCameraDrags } from './endAllCameraDrags.js';\n\nexport function removeCameraDrag(state) {\r\n finishCameraDrag(state);\r\n const { element } = state;\r\n element.removeEventListener('pointerdown', cameraDragDown, true);\r\n element.removeEventListener('pointermove', cameraDragMove);\r\n element.removeEventListener('pointerup', cameraDragEnd);\r\n element.removeEventListener('pointercancel', cameraDragEnd);\r\n element.removeEventListener('lostpointercapture', cameraDragEnd);\r\n element.removeEventListener('click', cameraDragClick, true);\r\n element.removeEventListener('contextmenu', cameraDragContextMenu);\r\n dragStates.value.delete(element);\r\n cameraDrags.value.delete(state);\r\n if (!cameraDrags.value.size) window.removeEventListener('blur', endAllCameraDrags);\r\n}\n", "import { removeCameraDrag } from './removeCameraDrag.js';\n\nexport function pitchDragRemoveHooks() {\n removeCameraDrag(this._dragState);\n}\n", "import { pitchDragRemoveHooks } from './pitchDragRemoveHooks.js';\n\nexport function rotateOnRemove(map) {\n map.off('rotate pitch', this._refresh, this);\n pitchDragRemoveHooks.call(this);\n}\n", "import { L } from '../globals/L.js';\nexport function rotateControl(options) {\r\n return /* alloc */ new L.Control.Rotate(options);\r\n}\r\n", "import { mapSetBearing } from '../camera/mapSetBearing.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\nimport { editable } from './isEditableTarget.js';\n\nexport function shiftRotateWheel(event) {\r\n const handler = this._cameraShiftRotate;\r\n if (!event.shiftKey || editable(event.target) || event.target.closest('.leaflet-control')) return;\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n mapSetBearing(handler._map, mapGetBearing(handler._map) + Math.sign(event.deltaY) * 5);\r\n}\n", "import { cameraListenerOptions } from '../globals/cameraListenerOptions.js';\nimport { shiftRotateWheel } from './shiftRotateWheel.js';\n\n\nexport function shiftRotateAddHooks() {\n const container = this._map.getContainer();\n container._cameraShiftRotate = this;\n this._wheel = shiftRotateWheel;\n container.addEventListener('wheel', this._wheel, cameraListenerOptions);\n}\n", "export function shiftRotateRemoveHooks() {\n const container = this._map.getContainer();\r\n container.removeEventListener('wheel', this._wheel, true);\r\n delete container._cameraShiftRotate;\n}\n", "export function acceptPitchDrag(event) {\r\n return !event.target.closest('.leaflet-control,.leaflet-marker-icon,.leaflet-popup') &&\r\n (event.button === 2 || event.button === 0 && event.ctrlKey);\r\n}\n", "import { cameraDragSensitivity } from '../globals/cameraDragSensitivity.js';\nimport { dragCamera } from './dragCamera.js';\nimport { acceptPitchDrag } from './acceptPitchDrag.js';\n\n\nexport function pitchDragAddHooks() {\n this._dragState = dragCamera(this._map, this._map.getContainer(), acceptPitchDrag, cameraDragSensitivity, true);\n}\n", "import { mapSetBearing } from '../camera/mapSetBearing.js';\nexport function compassOrientation(event) {\r\n const handler = this.handler;\r\n const bearing = Number.isFinite(event.webkitCompassHeading) ? -event.webkitCompassHeading : event.alpha;\r\n const orientation = event.absolute ? 0 : (screen.orientation?.angle ?? window.orientation ?? 0);\r\n if (Number.isFinite(bearing)) mapSetBearing(handler._map, bearing - orientation);\r\n}\n", "export function failCompassPermission(handler, error) {\r\n handler.disable();\r\n handler._map.fire('error', /* alloc */ { error });\r\n}\r\n", "import { failCompassPermission } from './failCompassPermission.js';\r\n\r\nexport function finishCompassPermission([handlerResult, permissionResult]) {\r\n const { handler, generation } = handlerResult.value;\r\n if (!handler.enabled() || handler._generation !== generation) return;\r\n if (!window.DeviceOrientationEvent || permissionResult.status !== 'fulfilled' ||\r\n permissionResult.value !== 'granted') {\r\n return failCompassPermission(handler, permissionResult.status === 'rejected' ? permissionResult.reason :\r\n /* alloc */ new Error('Device compass permission unavailable or denied'));\r\n }\r\n try {\r\n window.addEventListener('deviceorientation', handler._orientation);\r\n window.addEventListener('deviceorientationabsolute', handler._orientation);\r\n } catch (error) {\r\n failCompassPermission(handler, error);\r\n }\r\n}\r\n", "import { compassOrientation } from './compassOrientation.js';\nimport { finishCompassPermission } from './finishCompassPermission.js';\n\nexport function compassAddHooks() {\n this._compassGeneration = (this._generation = (this._generation || 0) + 1);\n this._orientation = /* alloc */ { handler: this, handleEvent: compassOrientation };\n const permission = window.DeviceOrientationEvent?.requestPermission;\n let request;\n try {\n request = permission ? permission.call(window.DeviceOrientationEvent) : 'granted';\n } catch (error) {\n request = Promise.reject(error);\n }\n Promise.allSettled(/* alloc */ [\n Promise.resolve(/* alloc */ { handler: this, generation: this._generation }),\n request,\n ]).then(finishCompassPermission);\n}\n", "export function compassRemoveHooks() {\n this._generation++;\r\n window.removeEventListener('deviceorientation', this._orientation);\r\n window.removeEventListener('deviceorientationabsolute', this._orientation);\n}\n", "export function resizeMap(entries) {\r\n entries[0]?.target._containerResizeMap.invalidateSize();\r\n}\n", "import { resizeMap } from './resizeMap.js';\n\nexport function containerResizeAddHooks() {\n const container = this._map.getContainer();\n container._containerResizeMap = this._map;\n this._observer = /* alloc */ new ResizeObserver(resizeMap);\n this._observer.observe(container);\n}\n", "export function containerResizeRemoveHooks() {\n const container = this._map.getContainer();\r\n this._observer.disconnect();\r\n delete container._containerResizeMap;\n}\n", "export const touchPitchByMap = new WeakMap();\n", "export const touchRotateByMap = new WeakMap();\n", "import { touchPitchByMap } from '../weakmaps/touchPitchByMap.js';\nimport { touchRotateByMap } from '../weakmaps/touchRotateByMap.js';\n\nimport { L } from '../globals/L.js';\nimport { touchByContainer } from '../weakmaps/touchByContainer.js';\n\nimport { mapStopPitchBearingAnimation } from '../animations/mapStopPitchBearingAnimation.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\n\nexport function startCameraTouch(event) {\n const state = touchByContainer.get(this), { map, container } = state;\n if (state.touch || event.touches.length !== 2 || event.target.closest('.leaflet-control')) return;\n if (!touchRotateByMap.get(map).enabled() && !touchPitchByMap.get(map).enabled()) return;\n const [a, b] = event.touches;\n if (Math.hypot(b.clientX - a.clientX, b.clientY - a.clientY) < 1) return;\n mapStopPitchBearingAnimation(map);\n const rect = container.getBoundingClientRect();\n const middle = /* alloc */ new L.Point(\n (a.clientX + b.clientX) / 2 - rect.left, (a.clientY + b.clientY) / 2 - rect.top);\n state.touch = /* alloc */ {\n angle: Math.atan2(b.clientY - a.clientY, b.clientX - a.clientX),\n distance: Math.hypot(b.clientX - a.clientX, b.clientY - a.clientY), middle,\n anchor: map.containerPointToLatLng(middle), zoom: map.getZoom(),\n bearing: mapGetBearing(map), pitch: mapGetPitch(map), zooming: map.touchZoom?.enabled(),\n dragging: map.dragging?.enabled(),\n currentMiddle: /* alloc */ new L.Point(middle.x, middle.y),\n };\n map.dragging?.disable();\n event.preventDefault();\n event.stopImmediatePropagation();\n if (state.nativeZoom !== undefined) state.touch.zooming = state.nativeZoom;\n state.touch.snap = map.options.zoomSnap;\n map.options.zoomSnap = 0;\n}\n", "import { touchPitchByMap } from '../weakmaps/touchPitchByMap.js';\nimport { touchRotateByMap } from '../weakmaps/touchRotateByMap.js';\n\nimport { degrees } from '../globals/degrees.js';\nimport { touchByContainer } from '../weakmaps/touchByContainer.js';\n\r\nimport { mapSetPitchAndBearing } from '../camera/mapSetPitchAndBearing.js';\r\n\r\nexport function moveCameraTouch(event) {\r\n const state = touchByContainer.get(this), { map, container, touch } = state;\r\n if (!touch || event.touches.length !== 2) return;\r\n const [a, b] = event.touches;\r\n const angle = Math.atan2(b.clientY - a.clientY, b.clientX - a.clientX);\r\n const rect = container.getBoundingClientRect(), middle = touch.currentMiddle;\r\n middle.x = (a.clientX + b.clientX) / 2 - rect.left;\r\n middle.y = (a.clientY + b.clientY) / 2 - rect.top;\r\n const delta = Math.atan2(Math.sin(angle - touch.angle), Math.cos(angle - touch.angle)) * degrees;\r\n mapSetPitchAndBearing(map, touchPitchByMap.get(map).enabled() ? touch.pitch - (middle.y - touch.middle.y) * 0.25 : touch.pitch, touchRotateByMap.get(map).enabled() ? touch.bearing + delta : touch.bearing);\r\n const distance = Math.hypot(b.clientX - a.clientX, b.clientY - a.clientY);\r\n if (distance < 1) return;\r\n const zoom = touch.zooming ? Math.max(map.getMinZoom(), Math.min(map.getMaxZoom(),\r\n touch.zoom + Math.log2(distance / touch.distance))) : touch.zoom;\r\n map.setView(map.getCenter(), zoom, /* alloc */ { animate: false });\r\n if (map.options.touchZoom !== 'center') {\r\n const projected = map.project(touch.anchor).subtract(map.project(map.containerPointToLatLng(middle)));\r\n map.setView(map.unproject(map.project(map.getCenter()).add(projected)), map.getZoom(),\r\n /* alloc */ { animate: false });\r\n }\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n}\r\n", "export function endCameraTouch(state, event) {\r\n if (!state.touch) return;\r\n if (event?.touches?.length >= 2) return;\r\n const { map, container, touch } = state;\r\n if (touch.dragging && container._leaflet_id) map.dragging.enable();\r\n map.options.zoomSnap = touch.snap;\r\n if (touch.zooming && touch.snap && container._leaflet_id) {\r\n map.setZoom(Math.round(map.getZoom() / touch.snap) * touch.snap,\r\n /* alloc */ { animate: false });\r\n }\r\n state.touch = null;\r\n}\r\n", "import { touchByContainer } from '../weakmaps/touchByContainer.js';\n\n\nimport { endCameraTouch } from './endCameraTouch.js';\n\nexport function endCameraTouchEvent(event) {\n endCameraTouch(touchByContainer.get(this), event);\n}\n", "import { cameraTouchStateByMap } from '../weakmaps/cameraTouchStateByMap.js';\nimport { touchPitchByMap } from '../weakmaps/touchPitchByMap.js';\nimport { touchRotateByMap } from '../weakmaps/touchRotateByMap.js';\n\n\n\nimport { endCameraTouch } from './endCameraTouch.js';\n\nexport function changeCameraTouch() {\r\n const state = cameraTouchStateByMap.get(this), { map, container } = state;\r\n const active = touchRotateByMap.get(map).enabled() || touchPitchByMap.get(map).enabled();\r\n if (active && state.nativeZoom === undefined) {\r\n state.nativeZoom = map.touchZoom?.enabled();\r\n map.touchZoom?.disable();\r\n } else if (!active && state.nativeZoom !== undefined) {\r\n endCameraTouch(state);\r\n if (state.nativeZoom && container._leaflet_id) map.touchZoom.enable();\r\n state.nativeZoom = undefined;\r\n }\r\n}\n", "import { cameraTouchStates } from '../globals/cameraTouchStates.js';\n\n\nimport { endCameraTouch } from './endCameraTouch.js';\n\nexport function endAllCameraTouches() {\n let state;\n for (state of cameraTouchStates) endCameraTouch(state);\n}\n", "import { cameraTouchStateByMap } from '../weakmaps/cameraTouchStateByMap.js';\nimport { rotateControlByMap } from '../weakmaps/rotateControlByMap.js';\n\nimport { cameraTouchStates } from '../globals/cameraTouchStates.js';\nimport { touchByContainer } from '../weakmaps/touchByContainer.js';\n\n\nimport { endCameraTouch } from './endCameraTouch.js';\nimport { startCameraTouch } from './startCameraTouch.js';\nimport { moveCameraTouch } from './moveCameraTouch.js';\nimport { endCameraTouchEvent } from './endCameraTouchEvent.js';\n\nimport { endAllCameraTouches } from './endAllCameraTouches.js';\nimport { changeCameraTouch } from './changeCameraTouch.js';\n\nexport function cleanupCameraTouch() {\n const state = cameraTouchStateByMap.get(this);\n if (!state) return;\n const { container, map } = state;\n endCameraTouch(state);\n container.removeEventListener('touchstart', startCameraTouch, true);\n container.removeEventListener('touchmove', moveCameraTouch, true);\n container.removeEventListener('touchend', endCameraTouchEvent, true);\n container.removeEventListener('touchcancel', endCameraTouchEvent, true);\n cameraTouchStates.delete(state);\n if (!cameraTouchStates.size) window.removeEventListener('blur', endAllCameraTouches);\n map.off('cameratouchchange', changeCameraTouch, map);\n rotateControlByMap.get(map)?.remove();\n touchByContainer.delete(container);\n cameraTouchStateByMap.delete(map);\n}\n", "export const cameraHandlersByMap = new WeakMap();\r\n", "\r\nimport { cameraHandlersByMap } from '../weakmaps/cameraHandlersByMap.js';\r\n\r\nexport function addCameraHandler(map, name, Type) {\r\n let handlers = cameraHandlersByMap.get(map);\r\n if (!handlers) cameraHandlersByMap.set(map, handlers = /* alloc */ new Map());\r\n const handler = /* alloc */ new Type(map);\r\n handlers.set(name, handler);\r\n map._handlers.push(handler);\r\n if (map.options[name]) handler.enable();\r\n}\r\n", "import { cameraTouchStateByMap } from '../weakmaps/cameraTouchStateByMap.js';\nimport { rotateControlByMap } from '../weakmaps/rotateControlByMap.js';\n\nimport { L } from '../globals/L.js';\nimport { Compass } from '../globals/Compass.js';\nimport { ContainerResize } from '../globals/ContainerResize.js';\nimport { PitchDrag } from '../globals/PitchDrag.js';\nimport { ShiftRotate } from '../globals/ShiftRotate.js';\nimport { TouchMode } from '../globals/TouchMode.js';\nimport { touchByContainer } from '../weakmaps/touchByContainer.js';\nimport { cameraTouchStates } from '../globals/cameraTouchStates.js';\nimport { cameraListenerOptions } from '../globals/cameraListenerOptions.js';\nimport { cameraEmptyOptions } from '../globals/cameraEmptyOptions.js';\nimport { notifyCameraTouchChange } from './notifyCameraTouchChange.js';\n\n\n\nimport { rotateOnAdd } from './rotateOnAdd.js';\nimport { rotateOnRemove } from './rotateOnRemove.js';\nimport { rotateControl } from './rotateControl.js';\nimport { shiftRotateAddHooks } from './shiftRotateAddHooks.js';\nimport { shiftRotateRemoveHooks } from './shiftRotateRemoveHooks.js';\nimport { pitchDragAddHooks } from './pitchDragAddHooks.js';\nimport { pitchDragRemoveHooks } from './pitchDragRemoveHooks.js';\nimport { compassAddHooks } from './compassAddHooks.js';\nimport { compassRemoveHooks } from './compassRemoveHooks.js';\nimport { containerResizeAddHooks } from './containerResizeAddHooks.js';\nimport { containerResizeRemoveHooks } from './containerResizeRemoveHooks.js';\nimport { startCameraTouch } from './startCameraTouch.js';\nimport { moveCameraTouch } from './moveCameraTouch.js';\nimport { endCameraTouchEvent } from './endCameraTouchEvent.js';\nimport { changeCameraTouch } from './changeCameraTouch.js';\nimport { cleanupCameraTouch } from './cleanupCameraTouch.js';\nimport { endAllCameraTouches } from './endAllCameraTouches.js';\nimport { addCameraHandler } from './addCameraHandler.js';\n\nCompass.value = L.Handler.extend({\n addHooks: compassAddHooks,\n removeHooks: compassRemoveHooks,\n});\n\nContainerResize.value = L.Handler.extend({\n addHooks: containerResizeAddHooks,\n removeHooks: containerResizeRemoveHooks,\n});\n\nPitchDrag.value = L.Handler.extend({\n addHooks: pitchDragAddHooks,\n removeHooks: pitchDragRemoveHooks,\n});\n\nShiftRotate.value = L.Handler.extend({\n addHooks: shiftRotateAddHooks,\n removeHooks: shiftRotateRemoveHooks,\n});\n\nTouchMode.value = L.Handler.extend({\n addHooks: notifyCameraTouchChange,\n removeHooks: notifyCameraTouchChange,\n});\n\nL.Control.Rotate = L.Control.extend({\n options: { position: 'topleft', closeOnZeroBearing: true, visualizePitch: true },\n onAdd: rotateOnAdd,\n onRemove: rotateOnRemove,\n});\n\nif (L.control) L.control.rotate = rotateControl;\n\nexport function cameraControls(map) {\n addCameraHandler(map, 'trackContainerMutation', ContainerResize.value);\n if (!map.options.rotate) return;\n addCameraHandler(map, 'shiftKeyRotate', ShiftRotate.value);\n addCameraHandler(map, 'pitchDrag', PitchDrag.value);\n addCameraHandler(map, 'compassBearing', Compass.value);\n addCameraHandler(map, 'touchRotate', TouchMode.value);\n addCameraHandler(map, 'touchPitch', TouchMode.value);\n const container = map.getContainer();\n const state = /* alloc */ { map, container, touch: null, nativeZoom: undefined };\n cameraTouchStateByMap.set(map, state);\n touchByContainer.set(container, state);\n cameraTouchStates.add(state);\n container.addEventListener('touchstart', startCameraTouch, cameraListenerOptions);\n container.addEventListener('touchmove', moveCameraTouch, cameraListenerOptions);\n container.addEventListener('touchend', endCameraTouchEvent, true);\n container.addEventListener('touchcancel', endCameraTouchEvent, true);\n window.addEventListener('blur', endAllCameraTouches);\n map.on('cameratouchchange', changeCameraTouch, map);\n if (map.options.rotateControl) {\n rotateControlByMap.set(map, /* alloc */ new L.Control.Rotate(typeof map.options.rotateControl === 'object' ? map.options.rotateControl : cameraEmptyOptions));\n rotateControlByMap.get(map).addTo(map);\n }\n map.once('unload', cleanupCameraTouch, map);\n}\n", "import { L } from './globals/L.js';\nimport { layerProto } from './globals/layerProto.js';\nimport { layerCallInitHooks as sharedLayerCallInitHooks } from './globals/layerCallInitHooks.js';\nimport { removeLayer as sharedRemoveLayer } from './globals/removeLayer.js';\n\nimport './camera/mapCamera.js';\nimport { init3D } from './scene/init3D.js';\nimport { initNativeGPU } from './native/initNativeGPU.js';\nimport { initRaster } from './raster/initRaster.js';\nimport { setGeoJSONData } from './sources/setGeoJSONData.js';\nimport { initTerrain } from './terrain/initTerrain.js';\nimport './sunlight/initSunlight.js';\nimport { initTraffic } from './traffic/initTraffic.js';\nimport './walk/initWalk.js';\n\nimport { initializeNativeLayer } from './core/initializeNativeLayer.js';\nimport { layerLayerAdd } from './scene/addRegisteredLayer.js';\nimport { layerInitialize } from './scene/layerInitialize.js';\nimport { removeLayer } from './core/removeLayer.js';\nimport { getPitch } from './camera/getPitch.js';\nimport { getBearing } from './camera/getBearing.js';\nimport { setRotation } from './core/setRotation.js';\nimport { layerCallInitHooks } from './core/layerCallInitHooks.js';\n\n/**\n * `new L.Layer({ source: { type, url, ...settings }, pane, attribution })`: layers with a `source`\n * initialize their specialized behavior on first use. Native map layers also join the WebGPU scene.\n */\n\n/**\n * Router for `new L.Layer({ source: { type, url, ...settings }, pane, attribution })`.\n * It initializes a native instance from the bundled source modules;\n * types receive flat options (`{ ...source, pane, attribution }`); plugin state remains external.\n *\n * Source folders are flat and grouped by responsibility; see README's source layout.\n * Initializers and orchestration stay in their domain folders; shared geometry,\n * projections, transforms, textures and animations have dedicated folders.\n * Shared values live in globals/, private WeakMaps in weakmaps/.\n * Operations receive the layer explicitly, without subclasses or prototype replacement.\n * Dataset-specific code and data (routes, timetables, API loaders) belong to the application, e.g. misc/.\n *\n * When `type` is omitted, inline FeatureCollections use 'geojson'; *.pmtiles URLs use\n * 'pmtiles', *.tif/*.tiff URLs use 'cog', and other sources use '3d'.\n */\n\nlayerProto.value = Object.defineProperties({}, Object.getOwnPropertyDescriptors(L.Layer.prototype));\nsharedLayerCallInitHooks.value = L.Layer.prototype.callInitHooks;\n\n/**\n * The '3d' layer type: native WebGPU scene synchronized with the map camera.\n * Layers on one map share a canvas, scene and camera; each has its own root transform.\n *\n * @typedef {Object} Layer3DOptions Layer options; pane and attribution remain standard L.Layer options.\n * @property {string} [type] '3d', 'geojson', 'pmtiles', 'cog', 'terrain' or 'traffic'.\n * @property {number[]} [center] Local origin [lat,lng]; defaults to the first map center.\n * @property {number} [terrainOffset=0] Vertical offset in metres when terrain is enabled.\n * @property {boolean} [terrainConform=false] Fit lower model geometry to local terrain elevation.\n * @property {'OPAQUE'|'MASK'|'BLEND'} [alphaMode] Override every glTF material's alpha mode.\n * @property {number[]} [rotation] Model Euler rotation [x,y,z] in radians, YXZ order.\n * @property {number[]} [scale] Model scale [x,y,z].\n * @property {string} [url] GLB/glTF model URL, PMTiles archive URL or supported COG URL.\n * @property {boolean} [doubleSided=false] Show raster/terrain surfaces from below.\n * @property {{x:number,y:number,radius:number,outside?:boolean}} [cutout] Raster screen-space circle in CSS pixels; outside keeps only the circle.\n * @property {function(Object): (ExtrusionStyle|null)} [style] Source styling; null skips a feature.\n * @property {function(PickedFeature): (Node|string)} [tooltip] Tooltip content; strings are text.\n * @property {string} [ariaLabel='3D scene'] Shared canvas accessible name.\n * @property {boolean} [nightLight=false] Point sources: emissive bulbs and local illumination.\n * @property {boolean} [nightSparkle=false] Model: sparse luminous points at night.\n *\n * @typedef {Object} ExtrusionStyle\n * @property {number} top Roof height in metres; must exceed bottom.\n * @property {number} [bottom=0] Nonnegative base height.\n * @property {number|string|Object} [color=0xd9b38c] RGB/CSS color or linear-space {h,s,l}.\n * @property {number} [trunkRadius] Point tree trunk radius in metres.\n * @property {number} [crownRadius] Point tree crown radius in metres.\n * @property {number} [crownBottom] Point tree crown base in metres.\n * @property {string} [crownShape='round'] Point tree crown shape.\n * @property {number|string|Object} [trunkColor=0x72513a] Point tree bark color.\n * @property {number} [lightRadius] Point light estimated ground reach in metres.\n * @property {number} [lightFlux] Point light luminous flux in lumens.\n *\n * @typedef {Object} PickedFeature\n * @property {string|number} id Source feature id or configured model URL.\n * @property {Object} properties GeoJSON properties or model-level glTF extras.\n * @property {Object} mesh Intersected mesh.\n * @property {number[]} point Intersection [x,y,z] in shared scene metres.\n * @property {Object} [model] Configured model root; absent for source polygons.\n * @property {number} [vertexStart] First polygon vertex in the batched mesh.\n * @property {number} [vertexEnd] Exclusive end of the polygon's vertex range.\n *\n * @typedef {Object} SourceArea\n * @property {Object} coords Archive block {z,x,y}.\n * @property {AbortController} request Cancellation prevents attaching obsolete results.\n * @property {boolean} [done] Geometry built successfully, including empty blocks.\n * @property {Object|null} [mesh] Batched GPU mesh.\n * @property {number} [buildings] Emitted feature count.\n * @property {number} [skipped] Features skipped by style.\n * @property {string} [error] Failed load/build message.\n *\n * @param {L.Layer} layer\n * @param {Layer3DOptions} [options] World origin comes from center or the first map centre.\n */\n\nL.Layer.include({\n initialize: layerInitialize,\n _layerAdd: layerLayerAdd,\n callInitHooks: layerCallInitHooks,\n});\n\nsharedRemoveLayer.value = L.Map.prototype.removeLayer;\nL.Map.include({ removeLayer, getPitch, getBearing });\nL.Marker.include({ setRotation });", "export const layerProto = { value: undefined };\n", "export const layerCallInitHooks = { value: undefined };\n", "export const removeLayer = { value: undefined };\n", "import { L } from '../globals/L.js';\nimport { mapMethods } from '../globals/mapMethods.js';\nimport { markerMethods } from '../globals/markerMethods.js';\nimport { popupEvents } from '../globals/popupEvents.js';\nimport { tooltipEvents } from '../globals/tooltipEvents.js';\nimport { popupPosition } from '../globals/popupPosition.js';\nimport { popupPan } from '../globals/popupPan.js';\nimport { tooltipPosition } from '../globals/tooltipPosition.js';\nimport { tiledBounds } from '../globals/tiledBounds.js';\nimport { gridEvents } from '../globals/gridEvents.js';\n\nimport { initNativeGPU } from '../native/initNativeGPU.js';\n\nimport { mapLayerPointToContainerPoint } from './mapLayerPointToContainerPoint.js';\nimport { mapContainerPointToLayerPoint } from './mapContainerPointToLayerPoint.js';\nimport { mapGetCenterLayerPoint } from './mapGetCenterLayerPoint.js';\nimport { mapPanBy } from './mapPanBy.js';\nimport { mapSetZoomAround } from './mapSetZoomAround.js';\nimport { mapPanInside } from './mapPanInside.js';\nimport { mapLimitCenter } from './mapLimitCenter.js';\nimport { mapLimitOffset } from './mapLimitOffset.js';\nimport { mapGetBoundsCenterZoom } from './mapGetBoundsCenterZoom.js';\nimport { mapGetBoundsZoom } from './mapGetBoundsZoom.js';\nimport { mapTryAnimatedPan } from './mapTryAnimatedPan.js';\nimport { mapGetBounds } from './mapGetBounds.js';\nimport { initializeCameraMap } from './initializeCameraMap.js';\nimport { markerSetIcon } from '../core/markerSetIcon.js';\nimport { markerGetEvents } from '../core/markerGetEvents.js';\nimport { markerSetPos } from '../core/markerSetPos.js';\nimport { markerUpdateZIndex } from '../core/markerUpdateZIndex.js';\nimport { markerInitInteraction } from '../core/markerInitInteraction.js';\nimport { popupGetEvents } from '../core/popupGetEvents.js';\nimport { tooltipGetEvents } from '../core/tooltipGetEvents.js';\nimport { popupAdjustPan } from '../core/popupAdjustPan.js';\nimport { popupUpdatePosition } from '../core/popupUpdatePosition.js';\nimport { tooltipSetPosition } from '../core/tooltipSetPosition.js';\nimport { gridlayerGetEvents } from '../core/gridlayerGetEvents.js';\nimport { gridlayerGetTiledPixelBounds } from '../core/gridlayerGetTiledPixelBounds.js';\n\nmapMethods.value = Object.defineProperties({}, Object.getOwnPropertyDescriptors(L.Map.prototype));\n\nL.Map.mergeOptions({\n rotate: true, bearing: 0, pitch: 0, maxPitch: 85, pitchMaxDistance: 3,\n rotateControl: true, shiftKeyRotate: true, pitchDrag: true,\n touchRotate: false, touchPitch: false, compassBearing: false,\n});\n\n// Ground coordinates only: the GPU camera handles elevated geometry, never CSS transforms.\n\nL.Map.include({\n layerPointToContainerPoint: mapLayerPointToContainerPoint,\n containerPointToLayerPoint: mapContainerPointToLayerPoint,\n _getCenterLayerPoint: mapGetCenterLayerPoint,\n panBy: mapPanBy,\n setZoomAround: mapSetZoomAround,\n panInside: mapPanInside,\n _limitCenter: mapLimitCenter,\n _limitOffset: mapLimitOffset,\n _getBoundsCenterZoom: mapGetBoundsCenterZoom,\n getBoundsZoom: mapGetBoundsZoom,\n _tryAnimatedPan: mapTryAnimatedPan,\n getBounds: mapGetBounds,\n});\n\nL.Map.addInitHook(initializeCameraMap);\n\nmarkerMethods.value = Object.defineProperties({}, Object.getOwnPropertyDescriptors(L.Marker.prototype));\nL.Marker.mergeOptions({ rotation: 0, rotateWithView: false, keepUpright: false, scale: 1 });\nL.Marker.include({\n setIcon: markerSetIcon,\n getEvents: markerGetEvents,\n _setPos: markerSetPos,\n _updateZIndex: markerUpdateZIndex,\n _initInteraction: markerInitInteraction,\n});\n\n// Keep Leaflet's focusable marker and its drag events; only translate its screen position back to ground.\n\npopupEvents.value = L.Popup.prototype.getEvents;\nL.Popup.include({\n getEvents: popupGetEvents,\n});\ntooltipEvents.value = L.Tooltip.prototype.getEvents;\nL.Tooltip.include({\n getEvents: tooltipGetEvents,\n});\npopupPosition.value = L.Popup.prototype._updatePosition;\npopupPan.value = L.Popup.prototype._adjustPan;\nL.Popup.include({\n _adjustPan: popupAdjustPan,\n _updatePosition: popupUpdatePosition,\n});\ntooltipPosition.value = L.Tooltip.prototype._setPosition;\nL.Tooltip.include({\n _setPosition: tooltipSetPosition,\n});\n\ntiledBounds.value = L.GridLayer.prototype._getTiledPixelBounds;\ngridEvents.value = L.GridLayer.prototype.getEvents;\nL.GridLayer.include({\n getEvents: gridlayerGetEvents,\n _getTiledPixelBounds: gridlayerGetTiledPixelBounds,\n});\n", "export const mapMethods = { value: undefined };\n", "export const markerMethods = { value: undefined };\n", "export const popupEvents = { value: undefined };\n", "export const tooltipEvents = { value: undefined };\n", "export const popupPosition = { value: undefined };\n", "export const popupPan = { value: undefined };\n", "export const tooltipPosition = { value: undefined };\n", "export const tiledBounds = { value: undefined };\n", "export const gridEvents = { value: undefined };\n", "export const nativeGPUByLayer = new WeakMap();\n", "export const readyByLayer = new WeakMap();\n", "export const nativeGPUBackByMap = new WeakMap();\n", "export const nativeGPUOrderByMap = new WeakMap();\n", "import { nativeGPUBackByMap } from '../weakmaps/nativeGPUBackByMap.js';\nimport { nativeGPUOrderByMap } from '../weakmaps/nativeGPUOrderByMap.js';\n\nimport { L } from '../globals/L.js';\nimport { nativeMethodHandlers } from '../globals/nativeMethodHandlers.js';\nimport { nativeRenderByLayer } from '../weakmaps/nativeRenderByLayer.js';\n\nimport { createLayer } from '../scene/createLayer.js';\n\n\nimport { nativeEvents } from './nativeEvents.js';\nimport { update } from '../scene/scheduleSceneUpdate.js';\n\nimport { current } from './isCurrentNativeLayer.js';\nimport { refreshNativeLayer } from './refreshNativeLayer.js';\nimport { refreshNativeEvent } from './refreshNativeEvent.js';\nimport { disposeNativeLayer } from './disposeNativeLayer.js';\nimport { resolveNativeReady } from './resolveNativeReady.js';\nimport { rejectNativeReady } from './rejectNativeReady.js';\nimport { forwardNativeError } from './forwardNativeError.js';\nimport { updateNativeLayerView } from './updateNativeLayerView.js';\nimport { synchronizeNativeLayer } from './synchronizeNativeLayer.js';\n\n/** Render from coordinates and detached raster sources; only accessible marker controls remain DOM. */\nexport async function nativeLayer(state) {\n const { source, map } = state;\n const layer = state.backend = createLayer(/* alloc */ {\n source: /* alloc */ { type: '3d' },\n });\n state.meshes = /* alloc */ new Map();\n state.textures = /* alloc */ new Map();\n state.methods = /* alloc */ new Map();\n state.images = /* alloc */ new Set();\n if (!nativeGPUOrderByMap.get(map)) nativeGPUOrderByMap.set(map, 0);\n if (!nativeGPUBackByMap.get(map)) nativeGPUBackByMap.set(map, 0);\n state.dirty = true;\n state.viewDirty = true;\n state.failed = false;\n state.order = nativeGPUOrderByMap.get(map) + 1;\n nativeGPUOrderByMap.set(map, state.order);\n state.marker = source instanceof L.Marker;\n state.paneOrder = Number(getComputedStyle(source.getPane()).zIndex) || 0;\n state.disposed = false;\n const currentEvents = 'load tileload tileunload move drag';\n source.on(currentEvents, refreshNativeEvent, state);\n map.on('zoomend', refreshNativeEvent, state);\n if (state.marker) map.on('move zoom rotate pitch resize viewreset', updateNativeLayerView, state);\n nativeEvents(state);\n let name, own, original;\n for (name in nativeMethodHandlers) {\n if (typeof source[name] !== 'function') continue;\n own = Object.getOwnPropertyDescriptor(source, name), original = source[name];\n state.methods.set(name, /* alloc */ { own, original });\n source[name] = nativeMethodHandlers[name];\n }\n const ready = state.ready = Promise.withResolvers();\n layer.once('ready', resolveNativeReady, state);\n layer.once('error', rejectNativeReady, state);\n layer.on('error', forwardNativeError, state);\n refreshNativeLayer(state);\n layer.addTo(map);\n try {\n await ready.promise;\n } catch (error) {\n disposeNativeLayer.call(state);\n throw error;\n }\n if (!current(state)) return source;\n\n nativeRenderByLayer.set(layer, state);\n try {\n synchronizeNativeLayer(state);\n } catch (error) {\n disposeNativeLayer.call(state);\n throw error;\n }\n update(state.backend);\n return source;\n}\n", "import { nativeGPUByLayer } from '../weakmaps/nativeGPUByLayer.js';\nimport { nativeGPUBackByMap } from '../weakmaps/nativeGPUBackByMap.js';\nimport { nativeGPUOrderByMap } from '../weakmaps/nativeGPUOrderByMap.js';\n\n\nimport { L } from '../globals/L.js';\n\n\nimport { refreshNativeLayer } from './refreshNativeLayer.js';\n\nexport function nativeLayerMethod(name, source, args) {\n const state = nativeGPUByLayer.get(source), original = state.methods.get(name).original;\n const result = original.apply(source, args);\n let layer, zIndex;\n if ((name === 'bringToFront' || name === 'bringToBack') && source instanceof L.GridLayer) {\n let extreme = name === 'bringToFront' ? -Infinity : Infinity;\n for (layer of Object.values(state.map._layers)) {\n if (layer === source || !(layer instanceof L.GridLayer) || layer.getPane() !== source.getPane()) continue;\n zIndex = layer.options.zIndex || 0;\n extreme = name === 'bringToFront' ? Math.max(extreme, zIndex) : Math.min(extreme, zIndex);\n }\n const edge = name === 'bringToFront' ? extreme + 1 : extreme - 1;\n if (Number.isFinite(edge)) source.setZIndex(edge);\n }\n if (name === 'bringToFront') {\n state.order = nativeGPUOrderByMap.get(state.map) + 1;\n nativeGPUOrderByMap.set(state.map, state.order);\n }\n if (name === 'bringToBack') {\n state.order = nativeGPUBackByMap.get(state.map) - 1;\n nativeGPUBackByMap.set(state.map, state.order);\n }\n refreshNativeLayer(state);\n return result;\n}\n", "export const sharedByLayer = new WeakMap();\n", "export const imageStates = new WeakMap();\n", "import { imageStates } from '../weakmaps/imageStates.js';\n\n\nimport { refreshNativeLayer } from '../native/refreshNativeLayer.js';\n\nexport function nativeImageRefresh(event) {\n const states = imageStates.get(event.currentTarget);\n if (!states) return;\n let state;\n for (state of states) refreshNativeLayer(state);\n}\n", "import { imageStates } from '../weakmaps/imageStates.js';\n\n\nexport function nativeImageError(event) {\n const states = imageStates.get(event.currentTarget);\n if (!states) return;\n let state;\n for (state of states) {\n state.source.fire('error', /* alloc */ {\n error: /* alloc */ new Error('Unable to load native layer image'),\n });\n }\n}\n", "import { imageStates } from '../weakmaps/imageStates.js';\n\n\nexport function removeImageState(image, state) {\r\n const states = imageStates.get(image);\r\n if (!states) return;\r\n states.delete(state);\r\n if (!states.size) imageStates.delete(image);\r\n}\n", "import { imageStates } from '../weakmaps/imageStates.js';\n\r\n\r\nexport function addImageState(image, state) {\r\n let states = imageStates.get(image);\r\n if (!states) imageStates.set(image, states = /* alloc */ new Set());\r\n states.add(state);\r\n}\r\n", "export const frameByLayer = new WeakMap();\n", "export const pendingUpdates = new Set();\n", "export const layersByLayer = new WeakMap();\n", "export const rendererByLayer = new WeakMap();\n", "export const sceneByLayer = new WeakMap();\n", "export const shadowMeshesByLayer = new WeakMap();\n", "export const wantedRasterTilesByLayer = new WeakMap();\n", "export const sunlightByMap = new WeakMap();\n", "export const frameCommands = [null];\n", "export const nativeRenderByLayer = new WeakMap();\n", "export const zoomTransitionsByLayer = new WeakMap();\n", "export const zoomViewByLayer = new WeakMap();\n", "export const meshStack = {\n subtree: true\n};\n", "export const cameraViewByMap = new WeakMap();\n", "import { L } from '../globals/L.js';\nexport function mapUpdateCameraOverlays(map) {\n let layer;\n for (layer of Object.values(map._layers)) {\n if (layer instanceof L.Marker) layer.update();\n else if (layer instanceof L.Popup || layer instanceof L.Tooltip) layer._updatePosition();\n }\n}\n", "import { zoomTransitionsByLayer } from '../weakmaps/zoomTransitionsByLayer.js';\nimport { zoomViewByLayer } from '../weakmaps/zoomViewByLayer.js';\nimport { cameraViewByMap } from '../weakmaps/cameraViewByMap.js';\n\n\nimport { mapUpdateCameraOverlays } from '../camera/mapUpdateCameraOverlays.js';\r\n\r\nexport function updateZoomCamera(layer, now) {\r\n const map = layer._map;\r\n const view = zoomViewByLayer.get(layer);\r\n let proxy, animation;\r\n for (animation of zoomTransitionsByLayer.get(layer).keys()) {\r\n if (animation.effect.target === map._proxy) { proxy = animation; break; }\r\n }\r\n const progress = proxy?.effect.getComputedTiming().progress ?? Math.min(1, (now - view.start) / 250);\r\n const targetScale = map.getZoomScale(view.targetZoom, view.zoom), scale = 1 + (targetScale - 1) * progress;\r\n const from = map.project(view.from, view.zoom), to = map.project(view.to, view.zoom);\r\n cameraViewByMap.set(map, /* alloc */ { zoom: map.getScaleZoom(scale, view.zoom),\r\n center: map.unproject(from.add(to.subtract(from).multiplyBy(targetScale * progress / scale)), view.zoom) });\r\n mapUpdateCameraOverlays(map);\r\n}\r\n", "import { zoomTransitionsByLayer } from '../weakmaps/zoomTransitionsByLayer.js';\nimport { zoomViewByLayer } from '../weakmaps/zoomViewByLayer.js';\n\nimport { meshStack } from '../globals/meshStack.js';\nimport { updateZoomCamera } from './updateZoomCamera.js';\n\nexport function synchronizeZoomView(layer, now) {\n const map = layer._map;\n let animation, time, start;\n if (map._animatingZoom) {\n if (!zoomTransitionsByLayer.get(layer)) zoomTransitionsByLayer.set(layer, /* alloc */ new Map());\n for (animation of map.getContainer().getAnimations(meshStack)) {\n if (!(animation instanceof CSSTransition) || animation.transitionProperty !== 'transform' ||\n !animation.effect.target.classList.contains('leaflet-zoom-animated') ||\n zoomTransitionsByLayer.get(layer).has(animation)) {\n continue;\n }\n time = animation.currentTime || 0;\n animation.pause();\n zoomTransitionsByLayer.get(layer).set(animation, /* alloc */ { start: now, time });\n }\n // Freeze CSS between rendered frames: the compositor must not outrun the canvas.\n for ([animation, { start, time }] of zoomTransitionsByLayer.get(layer)) {\n animation.currentTime = Math.min(animation.effect.getComputedTiming().endTime, time + now - start);\n }\n if (zoomViewByLayer.get(layer)) updateZoomCamera(layer, now);\n }\n}\n", "export const sizeByLayer = new WeakMap();\n", "export const depthTexture = {\n size: [null, null],\n format: 'depth24plus',\n usage: null\n};\n", "export async function destroyAfterSubmission(layer, texture, submitted) {\n try {\n await submitted;\n } catch (error) {\n layer.fire('error', /* alloc */ { error });\n }\n texture.destroy();\n}\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\n\n\n\n\nimport { destroyAfterSubmission } from './destroyTextureAfterSubmission.js';\n\nexport function destroyTexture(layer, texture) {\n destroyAfterSubmission(layer, texture, rendererByLayer.get(layer).device.queue.onSubmittedWorkDone());\n}\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { sizeByLayer } from '../weakmaps/sizeByLayer.js';\n\nimport { depthTexture as sharedDepthTexture } from '../globals/depthTexture.js';\n\n\nimport { destroyTexture } from '../textures/destroyTexture.js';\n\nexport function resizeRenderer(layer, size) {\n if (!sizeByLayer.get(layer) || !sizeByLayer.get(layer).equals(size)) {\n rendererByLayer.get(layer).width = size.x;\n rendererByLayer.get(layer).height = size.y;\n rendererByLayer.get(layer).canvas.width = Math.round(size.x * rendererByLayer.get(layer).dpr);\n rendererByLayer.get(layer).canvas.height = Math.round(size.y * rendererByLayer.get(layer).dpr);\n rendererByLayer.get(layer).canvas.style.width = `${size.x}px`;\n rendererByLayer.get(layer).canvas.style.height = `${size.y}px`;\n if (rendererByLayer.get(layer).depthTexture) destroyTexture(layer, rendererByLayer.get(layer).depthTexture);\n rendererByLayer.get(layer).depthTexture = rendererByLayer.get(layer).device.createTexture((\n sharedDepthTexture.size[0] = rendererByLayer.get(layer).canvas.width,\n sharedDepthTexture.size[1] = rendererByLayer.get(layer).canvas.height,\n sharedDepthTexture.usage = GPUTextureUsage.RENDER_ATTACHMENT,\n sharedDepthTexture\n ));\n sizeByLayer.set(layer, size);\n }\n}\n", "export const cameraByLayer = new WeakMap();\n", "export const sceneOriginByLayer = new WeakMap();\n", "import { cameraByLayer } from '../weakmaps/cameraByLayer.js';\nimport { sceneOriginByLayer } from '../weakmaps/sceneOriginByLayer.js';\nimport { cameraViewByMap } from '../weakmaps/cameraViewByMap.js';\n\n\nimport { radians } from '../globals/radians.js';\nimport { cameraFov } from '../globals/cameraFov.js';\nimport { earthCirc } from '../globals/earthCirc.js';\nimport { mapElevationOf } from '../terrain/mapElevationOf.js';\nimport { mapMethods } from '../globals/mapMethods.js';\nimport { walkByMap } from '../weakmaps/walkByMap.js';\nimport { mapGetPitch } from './mapGetPitch.js';\nimport { mapGetBearing } from './mapGetBearing.js';\n\nimport { updateCamera } from \"./updateSceneCamera.js\";\n\nimport { animationPoint } from '../projections/transformZoomAnimationPoint.js';\n\nexport function updateMapCamera(layer, size) {\n const map = layer._map;\n // Match the map's perspective, including the intermediate view of an animated zoom.\n const zoom = cameraViewByMap.get(map)?.zoom ?? map.getZoom();\n const pixelsPerMeter = map.options.crs.scale(zoom) /\n (earthCirc * Math.cos(sceneOriginByLayer.get(layer).lat * radians));\n const origin = animationPoint(map, mapMethods.value.layerPointToContainerPoint.call(map,\n map.project(sceneOriginByLayer.get(layer)).subtract(map.getPixelOrigin())));\n const distance = size.y * 1.5 / pixelsPerMeter;\n const targetX = (size.x / 2 - origin.x) / pixelsPerMeter;\n // CSS zoom keeps the logical view's ground plane until zoomend.\n const walker = walkByMap.get(map)?.control?._walk;\n const targetY = (mapElevationOf(map, map.getCenter()) ?? 0) +\n (walker?.saved ? walker.state.height : 0);\n const targetZ = (size.y / 2 - origin.y) / pixelsPerMeter;\n const pitch = mapGetPitch(map) * radians;\n const bearing = mapGetBearing(map) * radians;\n const camera = cameraByLayer.get(layer);\n camera.fov = cameraFov;\n camera.aspect = size.x / size.y;\n camera.near = Math.max(0.1, distance / 10000);\n camera.far = Math.max(10000, distance * 10);\n camera.position[0] = targetX + Math.sin(bearing) * Math.sin(pitch) * distance;\n camera.position[1] = targetY + Math.cos(pitch) * distance;\n camera.position[2] = targetZ + Math.cos(bearing) * Math.sin(pitch) * distance;\n camera.up[0] = -Math.sin(bearing) * Math.cos(pitch);\n camera.up[1] = Math.sin(pitch);\n camera.up[2] = -Math.cos(bearing) * Math.cos(pitch);\n camera.target[0] = targetX; camera.target[1] = targetY; camera.target[2] = targetZ;\n // Refresh the camera view, projection and combined projection-view matrices.\n updateCamera(camera);\n}\n", "import { degrees } from './degrees.js';\r\n\r\nexport const cameraFov = 2 * Math.atan(1 / 3) * degrees;\r\n", "export const earthCirc = 2 * Math.PI * 6378137;\r\n", "export const terrain3DByMap = new WeakMap();\n", "export const bridgesByLayer = new WeakMap();\n", "export const terrainReadyByLayer = new WeakMap();\n", "export const terrainTilesByLayer = new WeakMap();\n", "export const terrainZoomByLayer = new WeakMap();\n", "import { bridgesByLayer } from '../weakmaps/bridgesByLayer.js';\nimport { terrainReadyByLayer } from '../weakmaps/terrainReadyByLayer.js';\nimport { terrainTilesByLayer } from '../weakmaps/terrainTilesByLayer.js';\nimport { terrainZoomByLayer } from '../weakmaps/terrainZoomByLayer.js';\n\nimport { L } from '../globals/L.js';\n\n\nimport { bridgeElevation } from '../geometry/bridgeElevation.js';\nimport { terrainElevation } from './terrainElevation.js';\n\n/** @param {L.LatLng|L.Point} location LatLng, or a pixel point at the terrain zoom. */\n\nexport function getElevation(layer, location) {\n if (!layer._map || !terrainReadyByLayer.get(layer)) return null;\n const point = location instanceof L.Point ? location : layer._map.project(location, terrainZoomByLayer.get(layer));\n return bridgeElevation(point, bridgesByLayer.get(layer)) ?? terrainElevation(point, terrainTilesByLayer.get(layer));\n}\n", "/** Height inside a bridge deck, or null outside its triangles. */\nexport function bridgeElevation(point, bridges) {\n // Bridges bucketed by 64 DEM pixels.\n const bucket = bridges?.get(`${Math.floor(point.x / 64)}/${Math.floor(point.y / 64)}`);\n if (!bucket) return null;\n let bridge, a, b, c, d, u, v;\n for (bridge of bucket) {\n if (point.x < bridge.min[0] || point.x > bridge.max[0] || point.y < bridge.min[1] || point.y > bridge.max[1]) {\n continue;\n }\n for ([a, b, c] of bridge.triangles) {\n d = (b[1] - c[1]) * (a[0] - c[0]) + (c[0] - b[0]) * (a[1] - c[1]);\n u = ((b[1] - c[1]) * (point.x - c[0]) + (c[0] - b[0]) * (point.y - c[1])) / d;\n v = ((c[1] - a[1]) * (point.x - c[0]) + (a[0] - c[0]) * (point.y - c[1])) / d;\n if (u >= 0 && v >= 0 && u + v <= 1) {\n return u * a[2] + v * b[2] + (1 - u - v) * c[2];\n }\n }\n }\n return null;\n}\n", "export function sample(tiles, px, py) {\r\n const tileX = Math.floor(px / 256), tileY = Math.floor(py / 256);\r\n const tile = tiles.get(`${tileX}/${tileY}`);\r\n if (!tile) return null;\r\n const elevation = tile[(py - tileY * 256) * 256 + px - tileX * 256];\r\n return Number.isFinite(elevation) && elevation > -1000 ? elevation : null;\r\n}\r\n", "import { sample } from './sampleTerrainTile.js';\n\n/** Bilinear DEM sampling, with the original first-valid-neighbour no-data rule. */\n\nexport function terrainElevation(point, tiles) {\n const x = point.x - 0.5, y = point.y - 0.5;\n const x0 = Math.floor(x), y0 = Math.floor(y);\n const fx = x - x0, fy = y - y0;\n const a = sample(tiles, x0, y0), b = sample(tiles, x0 + 1, y0);\n const c = sample(tiles, x0, y0 + 1), d = sample(tiles, x0 + 1, y0 + 1);\n if (!Number.isFinite(a) || !Number.isFinite(b) || !Number.isFinite(c) || !Number.isFinite(d)) {\n return Number.isFinite(a) ? a : Number.isFinite(b) ? b : Number.isFinite(c) ? c : Number.isFinite(d) ? d : null;\n }\n return (a * (1 - fx) + b * fx) * (1 - fy) + (c * (1 - fx) + d * fx) * fy;\n}\n", "import { terrain3DByMap } from '../weakmaps/terrain3DByMap.js';\r\nimport { getElevation } from './getElevation.js';\r\n\r\nexport function mapElevationOf(map, location) {\r\n const terrain = terrain3DByMap.get(map);\r\n return terrain && getElevation(terrain, location);\r\n}\r\n", "export const walkByMap = new WeakMap();\r\n", "export const halfRadians = Math.PI / 360;\r\n", "import { halfRadians } from '../globals/halfRadians.js';\n/** Orthonormal view basis plus perspective matrices, refreshed before projecting/drawing. */\n\nexport function updateCamera(camera) {\n camera.x ||= /* alloc */ [0, 0, 0];\n camera.y ||= /* alloc */ [0, 0, 0];\n camera.z ||= /* alloc */ [0, 0, 0];\n camera.viewTransform ||= /* alloc */ new DOMMatrix();\n camera.projectionTransform ||= /* alloc */ new DOMMatrix();\n camera.projectionViewTransform ||= /* alloc */ new DOMMatrix();\n const { position, target, up, x, y, z, viewMatrix, projectionMatrix, projectionViewMatrix } = camera;\n let value;\n z[0] = position[0] - target[0], z[1] = position[1] - target[1], z[2] = position[2] - target[2];\n const zLength = Math.hypot(z[0], z[1], z[2]) || 1;\n z[0] /= zLength, z[1] /= zLength, z[2] /= zLength;\n x[0] = up[1] * z[2] - up[2] * z[1];\n x[1] = up[2] * z[0] - up[0] * z[2];\n x[2] = up[0] * z[1] - up[1] * z[0];\n const xLength = Math.hypot(x[0], x[1], x[2]) || 1;\n x[0] /= xLength, x[1] /= xLength, x[2] /= xLength;\n y[0] = z[1] * x[2] - z[2] * x[1];\n y[1] = z[2] * x[0] - z[0] * x[2];\n y[2] = z[0] * x[1] - z[1] * x[0];\n const viewTransform = camera.viewTransform;\n viewTransform.m11 = x[0], viewTransform.m12 = x[1], viewTransform.m13 = x[2], viewTransform.m14 = 0;\n viewTransform.m21 = y[0], viewTransform.m22 = y[1], viewTransform.m23 = y[2], viewTransform.m24 = 0;\n viewTransform.m31 = z[0], viewTransform.m32 = z[1], viewTransform.m33 = z[2], viewTransform.m34 = 0;\n viewTransform.m41 = position[0], viewTransform.m42 = position[1], viewTransform.m43 = position[2], viewTransform.m44 = 1;\n viewTransform.invertSelf();\n viewMatrix[0] = viewTransform.m11, viewMatrix[1] = viewTransform.m12, viewMatrix[2] = viewTransform.m13, viewMatrix[3] = viewTransform.m14;\n viewMatrix[4] = viewTransform.m21, viewMatrix[5] = viewTransform.m22, viewMatrix[6] = viewTransform.m23, viewMatrix[7] = viewTransform.m24;\n viewMatrix[8] = viewTransform.m31, viewMatrix[9] = viewTransform.m32, viewMatrix[10] = viewTransform.m33, viewMatrix[11] = viewTransform.m34;\n viewMatrix[12] = viewTransform.m41, viewMatrix[13] = viewTransform.m42, viewMatrix[14] = viewTransform.m43, viewMatrix[15] = viewTransform.m44;\n for (value of viewMatrix) {\n if (!Number.isFinite(value)) throw /* alloc */ new Error('Singular 3D transform');\n }\n const f = 1 / Math.tan(camera.fov * halfRadians), n = camera.near, r = camera.far;\n projectionMatrix[0] = f / camera.aspect, projectionMatrix[1] = 0, projectionMatrix[2] = 0, projectionMatrix[3] = 0;\n projectionMatrix[4] = 0, projectionMatrix[5] = f, projectionMatrix[6] = 0, projectionMatrix[7] = 0;\n projectionMatrix[8] = 0, projectionMatrix[9] = 0, projectionMatrix[10] = r / (n - r), projectionMatrix[11] = -1;\n projectionMatrix[12] = 0, projectionMatrix[13] = 0, projectionMatrix[14] = r * n / (n - r), projectionMatrix[15] = 0;\n const projectionTransform = camera.projectionTransform;\n projectionTransform.m11 = projectionMatrix[0], projectionTransform.m12 = projectionMatrix[1], projectionTransform.m13 = projectionMatrix[2], projectionTransform.m14 = projectionMatrix[3];\n projectionTransform.m21 = projectionMatrix[4], projectionTransform.m22 = projectionMatrix[5], projectionTransform.m23 = projectionMatrix[6], projectionTransform.m24 = projectionMatrix[7];\n projectionTransform.m31 = projectionMatrix[8], projectionTransform.m32 = projectionMatrix[9], projectionTransform.m33 = projectionMatrix[10], projectionTransform.m34 = projectionMatrix[11];\n projectionTransform.m41 = projectionMatrix[12], projectionTransform.m42 = projectionMatrix[13], projectionTransform.m43 = projectionMatrix[14], projectionTransform.m44 = projectionMatrix[15];\n const combined = camera.projectionViewTransform;\n combined.m11 = projectionTransform.m11, combined.m12 = projectionTransform.m12, combined.m13 = projectionTransform.m13, combined.m14 = projectionTransform.m14;\n combined.m21 = projectionTransform.m21, combined.m22 = projectionTransform.m22, combined.m23 = projectionTransform.m23, combined.m24 = projectionTransform.m24;\n combined.m31 = projectionTransform.m31, combined.m32 = projectionTransform.m32, combined.m33 = projectionTransform.m33, combined.m34 = projectionTransform.m34;\n combined.m41 = projectionTransform.m41, combined.m42 = projectionTransform.m42, combined.m43 = projectionTransform.m43, combined.m44 = projectionTransform.m44;\n combined.multiplySelf(viewTransform);\n projectionViewMatrix[0] = combined.m11, projectionViewMatrix[1] = combined.m12, projectionViewMatrix[2] = combined.m13, projectionViewMatrix[3] = combined.m14;\n projectionViewMatrix[4] = combined.m21, projectionViewMatrix[5] = combined.m22, projectionViewMatrix[6] = combined.m23, projectionViewMatrix[7] = combined.m24;\n projectionViewMatrix[8] = combined.m31, projectionViewMatrix[9] = combined.m32, projectionViewMatrix[10] = combined.m33, projectionViewMatrix[11] = combined.m34;\n projectionViewMatrix[12] = combined.m41, projectionViewMatrix[13] = combined.m42, projectionViewMatrix[14] = combined.m43, projectionViewMatrix[15] = combined.m44;\n}\n", "import { cameraViewByMap } from '../weakmaps/cameraViewByMap.js';\n\n\n\nexport function animationPoint(map, point, inverse = false) {\r\n const view = cameraViewByMap.get(map);\r\n if (!view) return point;\r\n const half = map.getSize().divideBy(2), scale = map.getZoomScale(view.zoom);\r\n const shift = map.project(map.getCenter(), view.zoom).subtract(map.project(view.center, view.zoom));\r\n return inverse ? point.subtract(half).subtract(shift).divideBy(scale).add(half) :\r\n point.subtract(half).multiplyBy(scale).add(shift).add(half);\r\n}\n", "export const visibleMeshesByLayer = new WeakMap();\n", "export function worldMatrixChanged(node, changed) {\r\n let i, value;\r\n if (node.matrix) {\r\n const state = node._matrixState ||= /* alloc */ new Float64Array(16);\r\n for (i = 0; i < 16; i++) {\r\n if (state[i] !== node.matrix[i]) changed = true;\r\n state[i] = node.matrix[i];\r\n }\r\n } else {\r\n const state = node._transformState ||= /* alloc */ new Float64Array(9);\r\n for (i = 0; i < 9; i++) {\r\n value = i < 3 ? node.position[i] : i < 6 ? node.rotation[i - 3] : node.scale[i - 6];\r\n if (state[i] !== value) changed = true;\r\n state[i] = value;\r\n }\r\n }\r\n return changed;\r\n}\r\n", "import { degrees } from '../globals/degrees.js';\r\n\r\nexport function composeLocalTransform(node) {\r\n const matrix = node._localTransform ||= /* alloc */ new DOMMatrix();\r\n matrix.m11 = 1, matrix.m12 = 0, matrix.m13 = 0, matrix.m14 = 0;\r\n matrix.m21 = 0, matrix.m22 = 1, matrix.m23 = 0, matrix.m24 = 0;\r\n matrix.m31 = 0, matrix.m32 = 0, matrix.m33 = 1, matrix.m34 = 0;\r\n matrix.m41 = 0, matrix.m42 = 0, matrix.m43 = 0, matrix.m44 = 1;\r\n matrix.translateSelf(node.position[0], node.position[1], node.position[2]);\r\n // Node rotations use YXZ, as did the previous renderer.\r\n matrix.rotateAxisAngleSelf(0, 1, 0, node.rotation[1] * degrees);\r\n matrix.rotateAxisAngleSelf(1, 0, 0, node.rotation[0] * degrees);\r\n matrix.rotateAxisAngleSelf(0, 0, 1, node.rotation[2] * degrees);\r\n matrix.scaleSelf(node.scale[0], node.scale[1], node.scale[2]);\r\n return matrix;\r\n}\r\n", "import { worldMatrixChanged } from './worldMatrixChanged.js';\nimport { composeLocalTransform } from './composeLocalTransform.js';\n\n/** Compose parent*local matrices; a node.matrix overrides its position/rotation/scale. */\n\nexport function updateWorldMatrix(node) {\n const parent = node.parent;\n const parentVersion = parent?._worldMatrixVersion || 0;\n const matrixMode = Boolean(node.matrix);\n let changed = node._worldParent !== parent || node._parentWorldVersion !== parentVersion ||\n node._worldMatrixMode !== matrixMode;\n let child;\n changed = worldMatrixChanged(node, changed);\n if (!changed) {\n for (child of node.children) updateWorldMatrix(child);\n return;\n }\n let local, world;\n if (node.matrix) local = node.matrix;\n else local = composeLocalTransform(node);\n world = node._worldTransform ||= /* alloc */ new DOMMatrix();\n if (local instanceof DOMMatrix) {\n world.m11 = local.m11, world.m12 = local.m12, world.m13 = local.m13, world.m14 = local.m14;\n world.m21 = local.m21, world.m22 = local.m22, world.m23 = local.m23, world.m24 = local.m24;\n world.m31 = local.m31, world.m32 = local.m32, world.m33 = local.m33, world.m34 = local.m34;\n world.m41 = local.m41, world.m42 = local.m42, world.m43 = local.m43, world.m44 = local.m44;\n } else {\n world.m11 = local[0], world.m12 = local[1], world.m13 = local[2], world.m14 = local[3];\n world.m21 = local[4], world.m22 = local[5], world.m23 = local[6], world.m24 = local[7];\n world.m31 = local[8], world.m32 = local[9], world.m33 = local[10], world.m34 = local[11];\n world.m41 = local[12], world.m42 = local[13], world.m43 = local[14], world.m44 = local[15];\n }\n if (parent) world.preMultiplySelf(parent._worldTransform);\n node.worldMatrix[0] = world.m11, node.worldMatrix[1] = world.m12, node.worldMatrix[2] = world.m13, node.worldMatrix[3] = world.m14;\n node.worldMatrix[4] = world.m21, node.worldMatrix[5] = world.m22, node.worldMatrix[6] = world.m23, node.worldMatrix[7] = world.m24;\n node.worldMatrix[8] = world.m31, node.worldMatrix[9] = world.m32, node.worldMatrix[10] = world.m33, node.worldMatrix[11] = world.m34;\n node.worldMatrix[12] = world.m41, node.worldMatrix[13] = world.m42, node.worldMatrix[14] = world.m43, node.worldMatrix[15] = world.m44;\n node._worldParent = parent;\n node._parentWorldVersion = parentVersion;\n node._worldMatrixMode = matrixMode;\n node._worldMatrixVersion = (node._worldMatrixVersion || 0) + 1;\n for (child of node.children) updateWorldMatrix(child);\n}\n", "/** Cache local AABB and center for ray picking and transparent mesh sorting. */\n\nexport function computeBounds(geometry) {\n const min = /* alloc */ [Infinity, Infinity, Infinity];\n const max = /* alloc */ [-Infinity, -Infinity, -Infinity];\n const data = geometry.attributes.position.data;\n let i, x, y, z;\n for (i = 0; i < data.length; i += 3) {\n x = data[i], y = data[i + 1], z = data[i + 2];\n min[0] = Math.min(min[0], x), max[0] = Math.max(max[0], x);\n min[1] = Math.min(min[1], y), max[1] = Math.max(max[1], y);\n min[2] = Math.min(min[2], z), max[2] = Math.max(max[2], z);\n }\n const instances = geometry.attributes.instanceOffset;\n if (instances) {\n let axis, offset, low, high;\n for (axis = 0; axis < 3; axis++) {\n low = Infinity;\n high = -Infinity;\n for (offset = axis; offset < instances.data.length; offset += instances.size) {\n low = Math.min(low, instances.data[offset]);\n high = Math.max(high, instances.data[offset]);\n }\n min[axis] = Math.fround(min[axis] + low);\n max[axis] = Math.fround(max[axis] + high);\n }\n }\n const center = /* alloc */ [\n (min[0] + max[0]) / 2,\n (min[1] + max[1]) / 2,\n (min[2] + max[2]) / 2,\n ];\n let radiusSquared = 0;\n for (i = 0; !instances && i < data.length; i += 3) {\n x = data[i] - center[0], y = data[i + 1] - center[1], z = data[i + 2] - center[2];\n radiusSquared = Math.max(radiusSquared, x * x + y * y + z * z);\n }\n let radius = instances ? Math.hypot(max[0] - min[0], max[1] - min[1], max[2] - min[2]) / 2\n : Math.sqrt(radiusSquared);\n // Preserve hypot's scaling for extreme coordinates in non-Float32 CPU geometry.\n if (!instances && (radiusSquared === Infinity || radiusSquared < Number.MIN_VALUE / Number.EPSILON)) {\n radius = 0;\n for (i = 0; i < data.length; i += 3) {\n radius = Math.max(radius, Math.hypot(\n data[i] - center[0], data[i + 1] - center[1], data[i + 2] - center[2]));\n }\n }\n geometry.bounds = /* alloc */ { min, max, center, radius };\n}\n", "import { computeBounds } from '../geometry/computeBounds.js';\r\n\r\nexport function collectVisibleMesh(mesh, projection, frustum, frustumLengths, candidates) {\r\n if (!mesh.geometry.bounds) computeBounds(mesh.geometry);\r\n const bounds = mesh.geometry.bounds;\r\n const world = mesh.worldMatrix;\r\n let sphere = mesh._cullingSphere;\r\n if (!sphere || sphere.bounds !== bounds || sphere.matrix !== world ||\r\n sphere.version !== mesh._worldMatrixVersion || mesh._worldMatrixVersion === undefined) {\r\n sphere ||= mesh._cullingSphere = /* alloc */ {};\r\n const center = bounds.center;\r\n sphere.x = world[0] * center[0] + world[4] * center[1] + world[8] * center[2] + world[12];\r\n sphere.y = world[1] * center[0] + world[5] * center[1] + world[9] * center[2] + world[13];\r\n sphere.z = world[2] * center[0] + world[6] * center[1] + world[10] * center[2] + world[14];\r\n sphere.radius = bounds.radius * Math.max(\r\n Math.hypot(world[0], world[1], world[2]),\r\n Math.hypot(world[4], world[5], world[6]),\r\n Math.hypot(world[8], world[9], world[10])\r\n );\r\n sphere.bounds = bounds;\r\n sphere.matrix = world;\r\n sphere.version = mesh._worldMatrixVersion;\r\n }\r\n const { x, y, z, radius } = sphere;\r\n const clipZ = projection[2] * x + projection[6] * y + projection[10] * z + projection[14];\r\n const clipW = projection[3] * x + projection[7] * y + projection[11] * z + projection[15];\r\n mesh._sortDepth = clipZ / clipW;\r\n mesh._visibleInFrame =\r\n frustum[0][0] * x + frustum[0][1] * y + frustum[0][2] * z + frustum[0][3] >= -radius * frustumLengths[0] &&\r\n frustum[1][0] * x + frustum[1][1] * y + frustum[1][2] * z + frustum[1][3] >= -radius * frustumLengths[1] &&\r\n frustum[2][0] * x + frustum[2][1] * y + frustum[2][2] * z + frustum[2][3] >= -radius * frustumLengths[2] &&\r\n frustum[3][0] * x + frustum[3][1] * y + frustum[3][2] * z + frustum[3][3] >= -radius * frustumLengths[3] &&\r\n frustum[4][0] * x + frustum[4][1] * y + frustum[4][2] * z + frustum[4][3] >= -radius * frustumLengths[4] &&\r\n frustum[5][0] * x + frustum[5][1] * y + frustum[5][2] * z + frustum[5][3] >= -radius * frustumLengths[5];\r\n if (mesh._visibleInFrame) candidates.push(mesh);\r\n}\r\n", "import { collectVisibleMesh } from './collectVisibleMesh.js';\n\nexport function collectMeshes(mesh, sunlight, projection, frustum, frustumLengths, candidates, shadowMeshes) {\n if (!mesh.visible) return;\n if (mesh.geometry) {\n if (sunlight?.altitude >= 3 && !mesh.tile && mesh._appearance !== 0 &&\n !mesh.program.nightLight && mesh.program.depthTest !== false) shadowMeshes.push(mesh);\n collectVisibleMesh(mesh, projection, frustum, frustumLengths, candidates);\n }\n let child;\n for (child of mesh.children) {\n collectMeshes(child, sunlight, projection, frustum, frustumLengths, candidates, shadowMeshes);\n }\n}\n", "import { cameraByLayer } from '../weakmaps/cameraByLayer.js';\nimport { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { sceneByLayer } from '../weakmaps/sceneByLayer.js';\nimport { shadowMeshesByLayer } from '../weakmaps/shadowMeshesByLayer.js';\nimport { visibleMeshesByLayer } from '../weakmaps/visibleMeshesByLayer.js';\n\n\n\nimport { updateWorldMatrix } from \"../transforms/updateWorldMatrix.js\";\nimport { collectMeshes } from './collectMeshes.js';\n\nexport function collectFrameMeshes(layer, sunlight, sceneChanged) {\n const camera = cameraByLayer.get(layer);\n const projection = camera.projectionViewMatrix;\n const renderer = rendererByLayer.get(layer);\n const frustum = renderer.frustum ||= /* alloc */ [\n /* alloc */ new Float64Array(4),\n /* alloc */ new Float64Array(4),\n /* alloc */ new Float64Array(4),\n /* alloc */ new Float64Array(4),\n /* alloc */ new Float64Array(4),\n /* alloc */ new Float64Array(4),\n ];\n const frustumLengths = renderer.frustumLengths ||= /* alloc */ new Float64Array(6);\n let i, axis, plane, j, offset;\n for (i = 0; i < 6; i++) {\n axis = Math.floor(i / 2);\n plane = frustum[i];\n for (j = 0; j < 4; j++) {\n offset = j * 4;\n plane[j] = i === 4 ? projection[offset + 2]\n : i % 2 ? projection[offset + 3] - projection[offset + axis]\n : projection[offset + 3] + projection[offset + axis];\n }\n frustumLengths[i] = Math.hypot(plane[0], plane[1], plane[2]);\n }\n let candidates = visibleMeshesByLayer.get(layer);\n if (!candidates) visibleMeshesByLayer.set(layer, candidates = /* alloc */ []);\n candidates.length = 0;\n let shadowMeshes = shadowMeshesByLayer.get(layer);\n if (!shadowMeshes) shadowMeshesByLayer.set(layer, shadowMeshes = /* alloc */ []);\n shadowMeshes.length = 0;\n if (sceneChanged) updateWorldMatrix(sceneByLayer.get(layer));\n collectMeshes(sceneByLayer.get(layer), sunlight, projection, frustum, frustumLengths, candidates, shadowMeshes);\n}\n", "export const kindByLayer = new WeakMap();\n", "export const rasterTilesByLayer = new WeakMap();\n", "export const roofRasterByLayer = new WeakMap();\n", "export const roofRastersByLayer = new WeakMap();\n", "export const loadingTilesByLayer = new WeakMap();\n", "export const rasterVersionByLayer = new WeakMap();\n", "import { loadingTilesByLayer } from '../weakmaps/loadingTilesByLayer.js';\nimport { rasterVersionByLayer } from '../weakmaps/rasterVersionByLayer.js';\nimport { roofRasterByLayer } from '../weakmaps/roofRasterByLayer.js';\n\nimport { L } from '../globals/L.js';\r\nimport { roofSignatures } from '../globals/roofSignatures.js';\r\nimport { rebuildRoofAtlas } from './rebuildRoofAtlas.js';\r\n\r\nexport function updateRoofAtlas(layer, rasters, now) {\r\n const signatures = roofSignatures;\r\n signatures.length = 0;\r\n let loading = false, rasterLayer;\r\n for (rasterLayer of rasters) {\r\n signatures.push(`${L.Util.stamp(rasterLayer)}:${rasterVersionByLayer.get(rasterLayer) || 0}:${rasterLayer.options.opacity}:${rasterLayer.options.zIndex}`);\r\n loading ||= Boolean(loadingTilesByLayer.get(rasterLayer));\r\n }\r\n const signature = signatures.join('|');\r\n signatures.length = 0;\r\n if (!roofRasterByLayer.get(layer) || roofRasterByLayer.get(layer).signature !== signature &&\r\n (!loading || now - roofRasterByLayer.get(layer).updatedAt >= 50)) {\r\n rebuildRoofAtlas(layer, rasters, signature, now);\r\n }\r\n}\r\n", "export const roofSignatures = [];\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { roofRasterByLayer } from '../weakmaps/roofRasterByLayer.js';\nimport { sceneOriginByLayer } from '../weakmaps/sceneOriginByLayer.js';\n\nimport { radians } from '../globals/radians.js';\nimport { earthCirc } from '../globals/earthCirc.js';\nimport { roofTiles } from '../globals/roofTiles.js';\nimport { TILE_SIZE } from '../globals/TILE_SIZE.js';\nimport { roofMin } from '../globals/roofMin.js';\nimport { roofSize } from '../globals/roofSize.js';\n\n\nimport { ensureRoofBlit } from './ensureRoofBlit.js';\nimport { composeRoofAtlas } from './composeRoofAtlas.js';\nimport { collectRoofTiles } from './collectRoofTiles.js';\nimport { resizeRoofTexture } from './resizeRoofTexture.js';\n\nexport function rebuildRoofAtlas(layer, rasters, signature, now) {\n const map = layer._map, renderer = rendererByLayer.get(layer);\n const tiles = roofTiles;\n tiles.length = 0;\n let zoom = collectRoofTiles(rasters, tiles);\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n let coords, tileSize;\n if (!tiles.length) zoom = map.getZoom();\n for ({ tile: { coords } } of tiles) {\n tileSize = TILE_SIZE * map.getZoomScale(zoom, coords.z);\n minX = Math.min(minX, coords.x * tileSize); minY = Math.min(minY, coords.y * tileSize);\n maxX = Math.max(maxX, (coords.x + 1) * tileSize); maxY = Math.max(maxY, (coords.y + 1) * tileSize);\n }\n const origin = map.project(sceneOriginByLayer.get(layer), zoom);\n const min = roofMin, size = roofSize;\n min.x = tiles.length ? minX : origin.x; min.y = tiles.length ? minY : origin.y;\n size.x = tiles.length ? maxX - minX : 1; size.y = tiles.length ? maxY - minY : 1;\n // ponytail: cap at 4096 px; virtual textures if wide views need native detail.\n const scale = Math.min(1, 4096 / Math.max(size.x, size.y));\n const width = Math.max(1, Math.ceil(size.x * scale)), height = Math.max(1, Math.ceil(size.y * scale));\n const pixels = map.options.crs.scale(zoom) / (earthCirc * Math.cos(sceneOriginByLayer.get(layer).lat * radians));\n const roof = /* alloc */ {\n matrix: /* alloc */ [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\n texture: roofRasterByLayer.get(layer)?.texture,\n };\n roofRasterByLayer.set(layer, roof);\n roof.signature = signature; roof.updatedAt = now;\n roof.matrix[0] = pixels / size.x; roof.matrix[10] = pixels / size.y;\n roof.matrix[12] = (origin.x - min.x) / size.x; roof.matrix[14] = (origin.y - min.y) / size.y;\n resizeRoofTexture(layer, roof, width, height);\n // Compose the atlas on the GPU: re-uploading a large canvas stalls Firefox for hundreds of ms.\n ensureRoofBlit(renderer);\n try {\n composeRoofAtlas(layer, tiles, zoom, min, size, width, height);\n } finally {\n tiles.length = 0;\n }\n}\n", "export const roofTiles = [];\n", "export const TILE_SIZE = 256;\n", "export const roofMin = {\n x: 0,\n y: 0\n};\n", "export const roofSize = {\n x: 1,\n y: 1\n};\n", "export const roofShader = {\n code: /* wgsl */`\n @group(0) @binding(0) var source: texture_2d<f32>;\n @group(0) @binding(1) var sourceSampler: sampler;\n @group(0) @binding(2) var<uniform> opacity: f32;\n struct Varyings { @builtin(position) position: vec4f, @location(0) uv: vec2f };\n @vertex fn vertexMain(@builtin(vertex_index) index: u32) -> Varyings {\n let uv = vec2f(f32(index & 1u), f32(index >> 1u));\n return Varyings(vec4f(uv.x * 2.0 - 1.0, 1.0 - uv.y * 2.0, 0.0, 1.0), uv);\n }\n @fragment fn fragmentMain(input: Varyings) -> @location(0) vec4f {\n let color = textureSample(source, sourceSampler, input.uv);\n return vec4f(color.rgb, color.a * opacity);\n }\n `\n};\n", "export const roofPipeline = {\n layout: 'auto',\n vertex: {\n module: null,\n entryPoint: 'vertexMain'\n },\n fragment: {\n module: null,\n entryPoint: 'fragmentMain',\n targets: [{\n format: 'rgba8unorm',\n blend: {\n color: {\n srcFactor: 'src-alpha',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add'\n },\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add'\n }\n }\n }]\n },\n primitive: {\n topology: 'triangle-strip'\n }\n};\n", "export const roofBlitSampler = {\n magFilter: 'linear',\n minFilter: 'linear'\n};\n", "import { roofShader } from '../globals/roofShader.js';\nimport { roofPipeline } from '../globals/roofPipeline.js';\nimport { roofBlitSampler } from '../globals/roofBlitSampler.js';\n\nexport function ensureRoofBlit(renderer) {\n const device = renderer.device;\n if (!renderer.roofBlit) {\n const module = device.createShaderModule(roofShader);\n renderer.roofBlit = /* alloc */ {\n pipeline: device.createRenderPipeline((\n roofPipeline.vertex.module = module,\n roofPipeline.fragment.module = module,\n roofPipeline\n )),\n sampler: device.createSampler(roofBlitSampler),\n };\n roofPipeline.vertex.module = null;\n roofPipeline.fragment.module = null;\n }\n}\n", "export const roofBuffer = {\n size: null,\n usage: null\n};\n", "export const roofPass = {\n colorAttachments: [{\n view: null,\n clearValue: {\n r: 0,\n g: 0,\n b: 0,\n a: 0\n },\n loadOp: 'clear',\n storeOp: 'store'\n }]\n};\n", "export const roofImage = {\n source: null\n};\n", "export const roofTarget = {\n texture: null\n};\n", "export const roofCopySize = [null, null];\n", "import { roofImage } from '../globals/roofImage.js';\r\nimport { roofTarget } from '../globals/roofTarget.js';\r\nimport { roofCopySize } from '../globals/roofCopySize.js';\r\n\r\nexport function uploadRoofTile(device, tile) {\r\n const source = tile.texture;\r\n if (source.uploaded !== source.image) {\r\n device.queue.copyExternalImageToTexture((\r\n roofImage.source = tile.image,\r\n roofImage\r\n ), (\r\n roofTarget.texture = source.texture,\r\n roofTarget\r\n ), (\r\n roofCopySize[0] = source.texture.width,\r\n roofCopySize[1] = source.texture.height,\r\n roofCopySize\r\n ));\r\n roofImage.source = null;\r\n roofTarget.texture = null;\r\n source.uploaded = source.image;\r\n }\r\n}\r\n", "export const roofBindGroup = {\n layout: null,\n entries: [{\n binding: 0,\n resource: null\n }, {\n binding: 1,\n resource: null\n }, {\n binding: 2,\n resource: {\n buffer: null,\n offset: null,\n size: 4\n }\n }]\n};\n", "export const roofCommands = [null];\n", "export const roofOpacities = { value: new Float32Array(64) };\n", "export function compareRoofTiles(a, b) {\n return (a.layer.options.zIndex || 0) - (b.layer.options.zIndex || 0) ||\n a.tile.coords.z - b.tile.coords.z;\n}\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { roofRasterByLayer } from '../weakmaps/roofRasterByLayer.js';\n\nimport { roofBuffer } from '../globals/roofBuffer.js';\nimport { roofPass } from '../globals/roofPass.js';\nimport { uploadRoofTile } from './uploadRoofTile.js';\nimport { roofBindGroup } from '../globals/roofBindGroup.js';\nimport { roofCommands } from '../globals/roofCommands.js';\nimport { roofOpacities } from '../globals/roofOpacities.js';\nimport { TILE_SIZE } from '../globals/TILE_SIZE.js';\n\n\nimport { compareRoofTiles } from './compareRoofTiles.js';\n\nexport function composeRoofAtlas(layer, tiles, zoom, min, size, width, height) {\n const renderer = rendererByLayer.get(layer), device = renderer.device, map = layer._map;\n const opacityLength = Math.max(1, tiles.length) * 64;\n if (roofOpacities.value.length < opacityLength) {\n roofOpacities.value = /* alloc */ new Float32Array(opacityLength);\n }\n const opacities = roofOpacities.value;\n const opacityBuffer = device.createBuffer((\n roofBuffer.size = opacities.byteLength,\n roofBuffer.usage = GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n roofBuffer\n ));\n\n const encoder = device.createCommandEncoder();\n const atlasPass = encoder.beginRenderPass((\n roofPass.colorAttachments[0].view = roofRasterByLayer.get(layer).texture.texture.createView(),\n roofPass\n ));\n roofPass.colorAttachments[0].view = null;\n atlasPass.setPipeline(renderer.roofBlit.pipeline);\n tiles.sort(compareRoofTiles);\n let i, tile, rasterLayer, coords, source, tileSize, x, y;\n for ([i, { tile, layer: rasterLayer }] of tiles.entries()) {\n ({ coords } = tile);\n source = tile.texture;\n uploadRoofTile(device, tile);\n\n opacities[i * 64] = rasterLayer.options.opacity;\n tileSize = TILE_SIZE * map.getZoomScale(zoom, coords.z);\n x = (coords.x * tileSize - min.x) * width / size.x;\n y = (coords.y * tileSize - min.y) * height / size.y;\n atlasPass.setViewport(x, y, Math.min(tileSize * width / size.x, width - x),\n Math.min(tileSize * height / size.y, height - y), 0, 1);\n atlasPass.setBindGroup(0, device.createBindGroup((\n roofBindGroup.layout = renderer.roofBlit.pipeline.getBindGroupLayout(0),\n roofBindGroup.entries[0].resource = source.texture.createView(),\n roofBindGroup.entries[1].resource = renderer.roofBlit.sampler,\n roofBindGroup.entries[2].resource.buffer = opacityBuffer,\n roofBindGroup.entries[2].resource.offset = i * 256,\n roofBindGroup\n )));\n roofBindGroup.layout = null;\n roofBindGroup.entries[0].resource = null;\n roofBindGroup.entries[1].resource = null;\n roofBindGroup.entries[2].resource.buffer = null;\n\n atlasPass.draw(4);\n }\n atlasPass.end();\n device.queue.writeBuffer(opacityBuffer, 0, opacities);\n device.queue.submit((\n roofCommands[0] = encoder.finish(),\n roofCommands\n ));\n roofCommands[0] = null;\n opacityBuffer.destroy();\n}\n", "import { rasterTilesByLayer } from '../weakmaps/rasterTilesByLayer.js';\n\n\r\nexport function collectRoofTiles(rasters, tiles) {\r\n let zoom = -Infinity, layer, tile;\r\n for (layer of rasters) {\r\n for (tile of rasterTilesByLayer.get(layer).values()) {\r\n if (tile.done && !tile.request.signal.aborted && tile.image) {\r\n tile._roofEntry ||= /* alloc */ { tile, layer };\r\n tiles.push(tile._roofEntry);\r\n zoom = Math.max(zoom, tile.coords.z);\r\n }\r\n }\r\n }\r\n return zoom;\r\n}\r\n", "export const roofTexture = {\n size: [null, null],\n format: 'rgba8unorm',\n usage: null\n};\n", "export const roofSampler = {\n addressModeU: 'clamp-to-edge',\n addressModeV: 'clamp-to-edge'\n};\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\n\nimport { roofTexture } from '../globals/roofTexture.js';\r\nimport { roofSampler } from '../globals/roofSampler.js';\r\nimport { destroyTexture } from './destroyTexture.js';\r\n\r\nexport function resizeRoofTexture(layer, roof, width, height) {\r\n const renderer = rendererByLayer.get(layer);\r\n const descriptor = roofTexture;\r\n descriptor.size[0] = width; descriptor.size[1] = height;\r\n descriptor.usage = GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT;\r\n if (roof.texture && (roof.texture.width !== width || roof.texture.height !== height)) {\r\n destroyTexture(layer, roof.texture.texture);\r\n roof.texture.texture = renderer.device.createTexture(descriptor);\r\n roof.texture.width = width; roof.texture.height = height;\r\n }\r\n roof.texture ||= /* alloc */ {\r\n device: renderer.device,\r\n texture: renderer.device.createTexture(descriptor),\r\n sampler: renderer.device.createSampler(roofSampler),\r\n samplerOptions: /* alloc */ { addressModeU: 'clamp-to-edge', addressModeV: 'clamp-to-edge' },\r\n image: null, width, height,\r\n format: 'rgba8unorm', srgb: false, flipY: false, uploaded: null,\r\n };\r\n}\r\n", "import { kindByLayer } from '../weakmaps/kindByLayer.js';\nimport { layersByLayer } from '../weakmaps/layersByLayer.js';\nimport { rasterTilesByLayer } from '../weakmaps/rasterTilesByLayer.js';\nimport { roofRasterByLayer } from '../weakmaps/roofRasterByLayer.js';\nimport { roofRastersByLayer } from '../weakmaps/roofRastersByLayer.js';\nimport { updateRoofAtlas } from './updateRoofAtlas.js';\nimport { destroyTexture } from './destroyTexture.js';\n\nexport function updateRoofRaster(layer, now) {\n const map = layer._map;\n let rasters = roofRastersByLayer.get(layer);\n if (!rasters) roofRastersByLayer.set(layer, rasters = /* alloc */ []);\n rasters.length = 0;\n let hasRoofTexture = false;\n let sceneLayer, rasterLayer;\n for (sceneLayer of layersByLayer.get(layer)) {\n if (sceneLayer.options.roofTexture || sceneLayer.options.wallTexture) { hasRoofTexture = true; break; }\n }\n if (hasRoofTexture) {\n for (rasterLayer of Object.values(map._layers)) {\n if (kindByLayer.get(rasterLayer) === 'raster' && rasterTilesByLayer.get(rasterLayer) && rasterLayer.options.opacity > 0) rasters.push(rasterLayer);\n }\n updateRoofAtlas(layer, rasters, now);\n } else if (roofRasterByLayer.get(layer)) {\n destroyTexture(layer, roofRasterByLayer.get(layer).texture.texture);\n roofRasterByLayer.set(layer, null);\n }\n return rasters;\n}\n", "export function compareMeshDepth(a, b) {\r\n return a.program.transparent\r\n ? (a.renderOrder || 0) - (b.renderOrder || 0) ||\r\n b._sortDepth - a._sortDepth || a.id - b.id\r\n : (a._sortDepth ?? 0) - (b._sortDepth ?? 0) || a.id - b.id;\r\n}\r\n", "export function compareMeshes(a, b) {\n return Number(Boolean(b.ground)) - Number(Boolean(a.ground)) ||\n (a.ground && b.ground ? (a.renderOrder || 0) - (b.renderOrder || 0) ||\n a.tile.coords.z - b.tile.coords.z : 0) ||\n Number(a.program.transparent) - Number(b.program.transparent) ||\n compareMeshDepth(a, b);\n}\nimport { compareMeshDepth } from './compareMeshDepth.js';\n", "export const headerByLayer = new WeakMap();\n", "export const tileZoomByLayer = new WeakMap();\n", "import { headerByLayer } from '../weakmaps/headerByLayer.js';\nimport { sceneOriginByLayer } from '../weakmaps/sceneOriginByLayer.js';\nimport { tileZoomByLayer } from '../weakmaps/tileZoomByLayer.js';\n\nimport { radians } from '../globals/radians.js';\r\nimport { earthCirc } from '../globals/earthCirc.js';\r\n\r\nexport function roofFootprint(mesh, layer, rasterLayer) {\r\n const map = layer._map, bounds = mesh.geometry.bounds, world = mesh.worldMatrix;\r\n const zoom = tileZoomByLayer.get(rasterLayer)\r\n const origin = map.project(sceneOriginByLayer.get(layer), zoom);\r\n const scale = map.options.crs.scale(zoom) / (earthCirc * Math.cos(sceneOriginByLayer.get(layer).lat * radians));\r\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\r\n let i, x, y, z, px, py, nw, se;\r\n for (i = 0; i < 8; i++) {\r\n x = i & 1 ? bounds.max[0] : bounds.min[0], y = i & 2 ? bounds.max[1] : bounds.min[1];\r\n z = i & 4 ? bounds.max[2] : bounds.min[2];\r\n px = origin.x + (world[0] * x + world[4] * y + world[8] * z + world[12]) * scale;\r\n py = origin.y + (world[2] * x + world[6] * y + world[10] * z + world[14]) * scale;\r\n minX = Math.min(minX, px); minY = Math.min(minY, py);\r\n maxX = Math.max(maxX, px); maxY = Math.max(maxY, py);\r\n }\r\n if (headerByLayer.get(rasterLayer).maxLat !== undefined && headerByLayer.get(rasterLayer).minLon !== undefined &&\r\n headerByLayer.get(rasterLayer).minLat !== undefined && headerByLayer.get(rasterLayer).maxLon !== undefined) {\r\n nw = map.project(/* alloc */ [headerByLayer.get(rasterLayer).maxLat, headerByLayer.get(rasterLayer).minLon], zoom);\r\n se = map.project(/* alloc */ [headerByLayer.get(rasterLayer).minLat, headerByLayer.get(rasterLayer).maxLon], zoom);\r\n minX = Math.max(minX, nw.x); minY = Math.max(minY, nw.y);\r\n maxX = Math.min(maxX, se.x); maxY = Math.min(maxY, se.y);\r\n if (minX >= maxX || minY >= maxY) return null;\r\n }\r\n return /* alloc */ [minX, minY, maxX, maxY];\r\n}\r\n", "export function subtractRoofTile(remaining, tile, zoom) {\r\n const size = 256 * 2 ** (zoom - tile.coords.z);\r\n const left = tile.coords.x * size, top = tile.coords.y * size;\r\n const pieces = /* alloc */ [];\r\n let x0, y0, x1, y1, l, t, r, b;\r\n for ([x0, y0, x1, y1] of remaining) {\r\n l = Math.max(x0, left), t = Math.max(y0, top);\r\n r = Math.min(x1, left + size), b = Math.min(y1, top + size);\r\n if (l >= r || t >= b) {\r\n pieces.push(/* alloc */ [x0, y0, x1, y1]);\r\n continue;\r\n }\r\n if (y0 < t) pieces.push(/* alloc */ [x0, y0, x1, t]);\r\n if (b < y1) pieces.push(/* alloc */ [x0, b, x1, y1]);\r\n if (x0 < l) pieces.push(/* alloc */ [x0, t, l, b]);\r\n if (r < x1) pieces.push(/* alloc */ [r, t, x1, b]);\r\n }\r\n return pieces;\r\n}\r\n", "import { headerByLayer } from '../weakmaps/headerByLayer.js';\nimport { rasterTilesByLayer } from '../weakmaps/rasterTilesByLayer.js';\nimport { tileZoomByLayer } from '../weakmaps/tileZoomByLayer.js';\n\nimport { roofFootprint } from './roofFootprint.js';\r\nimport { subtractRoofTile } from './subtractRoofTile.js';\r\n\r\n/** Test the mesh's ground footprint against loaded imagery, including coarse parent tiles. */\r\nexport function roofCoverage(mesh, layer, rasters) {\r\n let intersectsArchive = false, pending = false;\r\n let rasterLayer, footprint, remaining, tile;\r\n for (rasterLayer of rasters) {\r\n if (!headerByLayer.get(rasterLayer)) { pending = true; continue; }\r\n footprint = roofFootprint(mesh, layer, rasterLayer);\r\n if (!footprint) continue;\r\n intersectsArchive = true;\r\n remaining = /* alloc */ [footprint];\r\n for (tile of rasterTilesByLayer.get(rasterLayer).values()) {\r\n // Failed imagery already reports an error; do not hide the building indefinitely.\r\n if (!tile.done && !tile.error) continue;\r\n remaining = subtractRoofTile(remaining, tile, tileZoomByLayer.get(rasterLayer));\r\n if (!remaining.length) return true;\r\n }\r\n }\r\n return !intersectsArchive && !pending;\r\n}\r\n", "import { headerByLayer } from '../weakmaps/headerByLayer.js';\r\nimport { loadingTilesByLayer } from '../weakmaps/loadingTilesByLayer.js';\r\nimport { roofRasterByLayer } from '../weakmaps/roofRasterByLayer.js';\r\nimport { walkByMap } from '../weakmaps/walkByMap.js';\r\n\r\nimport { roofCoverage } from '../geometry/roofCoverage.js';\r\n\r\nexport function revealRoofMesh(layer, mesh, rasters, now) {\r\n let raster, loading;\r\n if (mesh.program.uniforms.roofTexture && !rasters.length) mesh._roofRevealed = true;\r\n if (mesh.program.uniforms.roofTexture && !mesh._roofRevealed && rasters.length) {\r\n if (walkByMap.get(layer._map)?.control?._walk?.saved) {\r\n mesh._roofRevealed = true;\r\n mesh.fadeStart = now - (mesh.fadeDuration || 0);\r\n }\r\n if (mesh._roofCoverageSignature !== roofRasterByLayer.get(layer)?.signature) {\r\n mesh._roofCoverageSignature = roofRasterByLayer.get(layer)?.signature;\r\n mesh._roofCovered = roofCoverage(mesh, layer, rasters);\r\n }\r\n loading = false;\r\n for (raster of rasters) {\r\n if (!headerByLayer.get(raster) || loadingTilesByLayer.get(raster) > 0) {\r\n loading = true;\r\n break;\r\n }\r\n }\r\n if (!mesh._roofRevealed && !mesh._roofCovered && loading) {\r\n mesh._appearance = 0;\r\n return false;\r\n }\r\n mesh._roofRevealed = true;\r\n }\r\n return true;\r\n}\r\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { shadowMeshesByLayer } from '../weakmaps/shadowMeshesByLayer.js';\nimport { visibleMeshesByLayer } from '../weakmaps/visibleMeshesByLayer.js';\n\n\n\nimport { compareMeshes } from './compareMeshes.js';\nimport { revealRoofMesh } from './revealRoofMesh.js';\n\nexport function prepareFrameMeshes(layer, rasters, now, meshes) {\n const candidates = visibleMeshesByLayer.get(layer), shadowMeshes = shadowMeshesByLayer.get(layer), renderer = rendererByLayer.get(layer);\n let appearing = false;\n // Visible meshes: opaque first, transparent surfaces back-to-front.\n let mesh, progress;\n for (mesh of candidates) {\n if (!revealRoofMesh(layer, mesh, rasters, now)) continue;\n if (mesh.fadeDuration) {\n mesh.fadeStart ??= mesh.tile?.loadedAt ?? now;\n progress = Math.min(1, (now - mesh.fadeStart) / mesh.fadeDuration);\n mesh._appearance = progress * progress * (3 - 2 * progress);\n appearing ||= progress < 1;\n }\n meshes.push(mesh);\n }\n candidates.length = 0;\n meshes.sort(compareMeshes);\n let minGroundZoom = Infinity, maxGroundZoom = -Infinity;\n for (mesh of meshes) {\n if (!mesh.ground) continue;\n minGroundZoom = Math.min(minGroundZoom, mesh.tile.coords.z);\n maxGroundZoom = Math.max(maxGroundZoom, mesh.tile.coords.z);\n }\n renderer.groundOverlap = minGroundZoom !== maxGroundZoom;\n let shadowCount = 0;\n for (mesh of shadowMeshes) {\n if (mesh.visible && mesh._appearance !== 0) shadowMeshes[shadowCount++] = mesh;\n }\n shadowMeshes.length = shadowCount;\n return appearing;\n}\n", "export const frameBuffer = {\n size: null,\n usage: null\n};\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\n\nimport { frameBuffer } from '../globals/frameBuffer.js';\r\nimport { destroyTexture } from '../textures/destroyTexture.js';\r\n\r\nexport function prepareFrameBuffer(layer, meshes, shadowMeshes) {\r\n const renderer = rendererByLayer.get(layer);\r\n // Slot 0 holds the camera; 256-byte mesh slots follow (double-sided meshes use two).\r\n if (!renderer.uniformBuffer || renderer.uniformBuffer.size < (meshes.length * 2 + shadowMeshes.length + 1) * 256) {\r\n if (renderer.uniformBuffer) destroyTexture(layer, renderer.uniformBuffer);\r\n renderer.uniformBuffer = renderer.device.createBuffer((\r\n frameBuffer.size = Math.max(64, meshes.length * 4 + shadowMeshes.length * 2) * 256,\r\n frameBuffer.usage = GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\r\n frameBuffer\r\n ));\r\n renderer.uniformData = /* alloc */ new Float32Array(renderer.uniformBuffer.size / 4);\r\n }\r\n}\r\n", "export const rootByLayer = new WeakMap();\n", "export const sunBindGroup = {\n layout: null,\n entries: [{\n binding: 0,\n resource: {\n buffer: null\n }\n }, {\n binding: 1,\n resource: null\n }, {\n binding: 2,\n resource: null\n }, {\n binding: 3,\n resource: {\n buffer: null\n }\n }]\n};\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\n\nimport { sunBindGroup } from '../globals/sunBindGroup.js';\n\n\n\nexport function bindSunlight(layer) {\n const sun = rendererByLayer.get(layer).sunlight;\n sun.bindGroup = rendererByLayer.get(layer).device.createBindGroup((\n sunBindGroup.layout = sun.layout,\n sunBindGroup.entries[0].resource.buffer = sun.buffer,\n sunBindGroup.entries[1].resource = sun.texture.createView(),\n sunBindGroup.entries[2].resource = sun.sampler,\n sunBindGroup.entries[3].resource.buffer = sun.lights,\n sunBindGroup\n ));\n sunBindGroup.layout = null;\n sunBindGroup.entries[0].resource.buffer = null;\n sunBindGroup.entries[1].resource = null;\n sunBindGroup.entries[2].resource = null;\n sunBindGroup.entries[3].resource.buffer = null;\n}\n", "export function writeLightCell(values, i, key, offsets, data) {\r\n let j, o;\r\n for (j = 0, o = offsets[key] * 4; j < 8; j++) data[o + j] = values[i + j];\r\n offsets[key] += 2;\r\n}\r\n", "export function visitLightCells(values, i, minX, minZ, cellSize, columns, offsets, data) {\r\n const radius = values[i + 3], x = values[i] - minX, z = values[i + 2] - minZ;\r\n let y, c, key;\r\n for (y = Math.floor((z - radius) / cellSize); y <= Math.floor((z + radius) / cellSize); y++) {\r\n for (c = Math.floor((x - radius) / cellSize); c <= Math.floor((x + radius) / cellSize); c++) {\r\n key = y * columns + c;\r\n if (data) {\r\n writeLightCell(values, i, key, offsets, data);\r\n } else offsets[key]++;\r\n }\r\n }\r\n}\r\nimport { writeLightCell } from './writeLightCell.js';\r\n", "import { visitLightCells } from './visitLightCells.js';\n\nexport function visitCells(packed, minX, minZ, cellSize, columns, offsets, data) {\n let values, i;\n for (values of packed) for (i = 0; i < values.length; i += 8) {\n visitLightCells(values, i, minX, minZ, cellSize, columns, offsets, data);\n }\n}\n", "import { visitCells } from './visitLightGridCells.js';\n\n/** Pack world-space point lights into the shader's spatial grid. */\nexport function lightGrid(packed, maxBytes) {\n let count = 0;\n let values, i, value, key;\n for (values of packed) count += values.length / 8;\n const cellSize = 32;\n let data;\n if (count) {\n let minX = Infinity, minZ = Infinity, maxX = -Infinity, maxZ = -Infinity;\n for (values of packed) for (i = 0; i < values.length; i += 8) {\n minX = Math.min(minX, values[i] - values[i + 3]);\n maxX = Math.max(maxX, values[i] + values[i + 3]);\n minZ = Math.min(minZ, values[i + 2] - values[i + 3]);\n maxZ = Math.max(maxZ, values[i + 2] + values[i + 3]);\n }\n const columns = Math.ceil((maxX - minX) / cellSize) + 1,\n rows = Math.ceil((maxZ - minZ) / cellSize) + 1;\n // Counting sort: count the lights of each cell, then fill each cell's slice.\n const counts = /* alloc */ new Uint32Array(columns * rows),\n next = /* alloc */ new Uint32Array(columns * rows);\n visitCells(packed, minX, minZ, cellSize, columns, counts);\n let entries = 0;\n for (value of counts) entries += value;\n const length = (2 + columns * rows + entries * 2) * 4;\n if (length * 4 > maxBytes) {\n throw /* alloc */ new Error('Streetlight grid exceeds GPU storage limit');\n }\n data = /* alloc */ new Float32Array(length);\n data[0] = minX; data[1] = minZ; data[2] = cellSize;\n data[3] = columns; data[4] = rows; data[5] = count;\n let offset = 2 + columns * rows;\n for (key = 0; key < counts.length; key++) if (counts[key]) {\n data[(2 + key) * 4] = next[key] = offset;\n data[(2 + key) * 4 + 1] = counts[key];\n offset += counts[key] * 2;\n }\n visitCells(packed, minX, minZ, cellSize, columns, next, data);\n } else data = /* alloc */ new Float32Array(8);\n\n return /* alloc */ { data, count };\n}\n", "export const lightScale = 0.03 / (4 * Math.PI);\r\n", "import { lightScale } from '../globals/lightScale.js';\n\n/** World-space [x, y, z, radius, r, g, b, intensity] for one mesh's point lights. */\nexport function worldLights(lights, m) {\n const values = /* alloc */ new Float32Array(lights.length * 8);\n let i, x, y, z, radius, color, flux, w;\n for (i = 0; i < lights.length; i++) {\n ({\n position: [x, y, z],\n radius,\n color,\n flux\n } = lights[i]);\n w = m[3] * x + m[7] * y + m[11] * z + m[15];\n values[i * 8] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n values[i * 8 + 1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n values[i * 8 + 2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n values[i * 8 + 3] = radius;\n values[i * 8 + 4] = color[0];\n values[i * 8 + 5] = color[1];\n values[i * 8 + 6] = color[2];\n values[i * 8 + 7] = flux * lightScale;\n }\n return values;\n}", "import { lightGrid } from './lightGrid.js';\nimport { worldLights } from './worldLights.js';\n\n/** Keep fixed lamps cached when moving headlights change. */\nexport function cacheLightGrid(meshes, previous, maxBytes) {\n let unchanged = previous?.meshes.length === meshes.length;\n let i, mesh, matrix, lights, cache, sameMatrix, j;\n for (i = 0; i < meshes.length; i++) {\n mesh = meshes[i], matrix = mesh.worldMatrix, lights = mesh.extras.lights;\n cache = mesh._worldLights;\n sameMatrix = Boolean(cache);\n for (j = 0; j < matrix.length && sameMatrix; j++) sameMatrix = matrix[j] === cache.matrix[j];\n if (!sameMatrix || cache.lights !== lights) {\n cache = mesh._worldLights = /* alloc */ {\n lights,\n matrix: /* alloc */ [...matrix],\n data: worldLights(lights, matrix),\n };\n }\n unchanged &&= previous.meshes[i].mesh === mesh && previous.meshes[i].cache === cache;\n }\n if (unchanged) return previous;\n const packed = /* alloc */ new Array(meshes.length);\n const snapshots = /* alloc */ new Array(meshes.length);\n for (i = 0; i < meshes.length; i++) {\n mesh = meshes[i];\n cache = mesh._worldLights;\n packed[i] = cache.data;\n snapshots[i] = /* alloc */ { mesh, cache };\n }\n return /* alloc */ { ...lightGrid(packed, maxBytes), meshes: snapshots };\n}\n", "export const geometryEmpty = [];\n", "import { geometryEmpty } from '../globals/geometryEmpty.js';\n\n\nexport function collectLightMeshes(node, fixed, moving) {\n if (!node.visible) return;\n if (node.extras?.lights) (node.extras.dynamicLights ? moving : fixed).push(node);\n let child;\n for (child of node.children || geometryEmpty) collectLightMeshes(child, fixed, moving);\n}\n", "import { layersByLayer } from '../weakmaps/layersByLayer.js';\nimport { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\n\n\n\nimport { destroyTexture } from '../textures/destroyTexture.js';\nimport { bindSunlight } from '../shadows/bindSunlight.js';\nimport { cacheLightGrid } from './cacheLightGrid.js';\nimport { collectLightMeshes } from './collectLightMeshes.js';\n\nexport function updatePointLights(layer) {\n const { device, sunlight: sun } = rendererByLayer.get(layer);\n const fixed = /* alloc */ [];\n const moving = /* alloc */ [];\n let sceneLayer;\n for (sceneLayer of layersByLayer.get(layer)) {\n if (!sceneLayer.options.nightLight || !rootByLayer.get(sceneLayer).visible) continue;\n collectLightMeshes(rootByLayer.get(sceneLayer), fixed, moving);\n }\n const maxBytes = device.limits.maxStorageBufferBindingSize;\n const staticGrid = cacheLightGrid(fixed, sun.staticLightGrid, maxBytes);\n const dynamicGrid = cacheLightGrid(moving, sun.dynamicLightGrid, maxBytes);\n if (staticGrid === sun.staticLightGrid && dynamicGrid === sun.dynamicLightGrid) return;\n const size = staticGrid.data.byteLength + dynamicGrid.data.byteLength;\n if (size > maxBytes) throw /* alloc */ new Error('Streetlight grid exceeds GPU storage limit');\n let uploadStatic = staticGrid !== sun.staticLightGrid;\n if (sun.lights.size < size) {\n destroyTexture(layer, sun.lights);\n sun.lights = device.createBuffer(/* alloc */ { size, usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST });\n bindSunlight(layer);\n uploadStatic = true;\n }\n // The spare header component points to a second grid in the same storage binding.\n staticGrid.data[6] = staticGrid.data.length / 4;\n if (uploadStatic) device.queue.writeBuffer(sun.lights, 0, staticGrid.data);\n device.queue.writeBuffer(sun.lights, staticGrid.data.byteLength, dynamicGrid.data);\n sun.lightCount = staticGrid.count + dynamicGrid.count;\n sun.staticLightGrid = staticGrid;\n sun.dynamicLightGrid = dynamicGrid;\n}\n", "import { cameraByLayer } from '../weakmaps/cameraByLayer.js';\nimport { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { roofRasterByLayer } from '../weakmaps/roofRasterByLayer.js';\n\n\n\nimport { prepareFrameBuffer } from './prepareFrameBuffer.js';\nimport { updatePointLights } from '../lighting/updatePointLights.js';\n\nexport function prepareFrameUniforms(layer, meshes, shadowMeshes, sunlight) {\n const renderer = rendererByLayer.get(layer), camera = cameraByLayer.get(layer);\n const view = camera.viewMatrix, direction = sunlight?.direction;\n const x = direction ? direction[0] : -300;\n const y = direction ? direction[1] : 500;\n const z = direction ? direction[2] : 300;\n const lightX = view[0] * x + view[4] * y + view[8] * z;\n const lightY = view[1] * x + view[5] * y + view[9] * z;\n const lightZ = view[2] * x + view[6] * y + view[10] * z;\n const lightLength = Math.hypot(lightX, lightY, lightZ) || 1;\n const skyLength = Math.hypot(view[4], view[5], view[6]) || 1;\n // One uniform upload per frame: per-mesh writeBuffer calls dominate Firefox's GPU process.\n prepareFrameBuffer(layer, meshes, shadowMeshes);\n const frameData = renderer.uniformData;\n frameData.set(camera.viewMatrix, 0);\n frameData.set(camera.projectionMatrix, 16);\n if (roofRasterByLayer.get(layer)?.matrix) frameData.set(roofRasterByLayer.get(layer).matrix, 32);\n else {\n frameData.fill(0, 32, 48);\n frameData[32] = frameData[37] = frameData[42] = frameData[47] = 1;\n }\n frameData[48] = lightX / lightLength;\n frameData[49] = lightY / lightLength;\n frameData[50] = lightZ / lightLength;\n frameData[51] = sunlight && sunlight.altitude <= 0 ? 0 : 1;\n frameData[52] = view[4] / skyLength;\n frameData[53] = view[5] / skyLength;\n frameData[54] = view[6] / skyLength;\n const night = sunlight ? Math.max(0, Math.min(1, (3 - sunlight.altitude) / 9)) : 0;\n frameData[55] = night * night * (3 - 2 * night);\n const tint = sunlight?.tint;\n frameData[56] = tint ? tint[0] : 1;\n frameData[57] = tint ? tint[1] : 1;\n frameData[58] = tint ? tint[2] : 1;\n frameData[59] = 0;\n if (night > 0) updatePointLights(layer);\n renderer.uniformSlot = 1;\n}\n", "export const scenePass = {\n colorAttachments: [{\n view: null,\n clearValue: {\n r: 0,\n g: 0,\n b: 0,\n a: 0\n },\n loadOp: 'clear',\n storeOp: 'store'\n }],\n depthStencilAttachment: {\n view: null,\n depthClearValue: 1,\n depthLoadOp: 'clear',\n depthStoreOp: 'store'\n }\n};\n", "export const meshOffsets = [null];\n", "export const meshPipeline = {\n layout: null,\n vertex: {\n module: null,\n entryPoint: 'vertexMain',\n buffers: null\n },\n fragment: {\n module: null,\n entryPoint: 'fragmentMain',\n targets: [{\n format: null,\n blend: null,\n writeMask: null\n }]\n },\n primitive: {\n topology: 'triangle-list',\n cullMode: null,\n frontFace: null\n },\n depthStencil: {\n format: 'depth24plus',\n depthWriteEnabled: null,\n depthCompare: null\n }\n};\n", "export const alphaBlend = {\n color: {\n srcFactor: 'src-alpha',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add'\n },\n alpha: {\n srcFactor: 'one',\n dstFactor: 'one-minus-src-alpha',\n operation: 'add'\n },\n};\n", "import { meshPipeline } from '../globals/meshPipeline.js';\r\nimport { alphaBlend } from '../globals/alphaBlend.js';\r\n\r\nexport function drawPipeline(renderer, mesh, cullMode, frontFace) {\r\n const { program } = mesh;\r\n // Mixed-LOD imagery composites coarse-to-fine; its depth still occludes later 3D objects.\r\n // ponytail: self-occlusion during LOD blending needs separate per-LOD depth passes.\r\n const depthCompare = program.depthTest === false || (mesh.ground && renderer.groundOverlap)\r\n ? 'always' : 'less-equal';\r\n const pipelineKey = `${cullMode}:${frontFace}:${depthCompare}`;\r\n let pipeline = program.pipelineCache.get(pipelineKey);\r\n if (!pipeline) {\r\n pipeline = renderer.device.createRenderPipeline((\r\n meshPipeline.layout = program.pipelineLayout,\r\n meshPipeline.vertex.module = program.vertex,\r\n meshPipeline.vertex.buffers = program.vertexBuffers,\r\n meshPipeline.fragment.module = program.fragment,\r\n meshPipeline.fragment.targets[0].format = renderer.format,\r\n meshPipeline.fragment.targets[0].blend = program.transparent ? alphaBlend : undefined,\r\n meshPipeline.fragment.targets[0].writeMask = GPUColorWrite.ALL,\r\n meshPipeline.primitive.cullMode = cullMode,\r\n meshPipeline.primitive.frontFace = frontFace,\r\n meshPipeline.depthStencil.depthWriteEnabled = program.depthWrite,\r\n meshPipeline.depthStencil.depthCompare = depthCompare,\r\n meshPipeline\r\n ));\r\n meshPipeline.layout = null;\r\n meshPipeline.vertex.module = null;\r\n meshPipeline.vertex.buffers = null;\r\n meshPipeline.fragment.module = null;\r\n program.pipelineCache.set(pipelineKey, pipeline);\r\n }\r\n return pipeline;\r\n}\r\n", "export function prepareMeshCutout(renderer, mesh, base) {\r\n const data = renderer.uniformData;\r\n const cutout = (mesh._nativeSource || mesh._rasterSource)?.options.cutout;\r\n if (cutout && (!Number.isFinite(cutout.x) || !Number.isFinite(cutout.y) ||\r\n !Number.isFinite(cutout.radius) || cutout.radius < 0)) {\r\n throw /* alloc */ new Error('cutout requires finite x, y and a non-negative radius in CSS pixels');\r\n }\r\n data[base + 36] = (cutout?.x ?? 0) * renderer.dpr;\r\n data[base + 37] = (cutout?.y ?? 0) * renderer.dpr;\r\n data[base + 38] = (cutout?.radius ?? 0) * renderer.dpr;\r\n data[base + 39] = cutout?.outside ? 1 : 0;\r\n}\r\n", "export function prepareMeshUniforms(renderer, mesh) {\r\n const uniforms = mesh.program.uniforms;\r\n const offset = renderer.uniformSlot++ * 256;\r\n const data = renderer.uniformData, base = offset / 4;\r\n data.set(mesh.worldMatrix, base);\r\n data.set(uniforms.baseColor.value, base + 16);\r\n data[base + 19] = 1;\r\n data[base + 20] = uniforms.metallic.value;\r\n data[base + 21] = uniforms.roughness.value;\r\n data[base + 22] = uniforms.opacity.value * (mesh.ground ? mesh._appearance ?? 1 : 1);\r\n data[base + 23] = uniforms.alphaCutoff.value;\r\n data.set(uniforms.emissive.value, base + 24);\r\n data[base + 27] = uniforms.occlusionStrength.value;\r\n data[base + 28] = mesh.terrain?.[0] ?? 0;\r\n data[base + 29] = mesh.terrain?.[1] ?? 0;\r\n data[base + 30] = mesh.terrain?.[2] ?? 0;\r\n data[base + 31] = mesh.terrain?.[3] ?? 0;\r\n data[base + 32] = mesh.highlight?.[0] ?? 0;\r\n data[base + 33] = mesh.highlight?.[1] ?? 0;\r\n data[base + 34] = mesh.program.nightSparkle ? data[55] : 0;\r\n data[base + 35] = mesh.ground ? 1 : mesh._appearance ?? 1;\r\n prepareMeshCutout(renderer, mesh, base);\r\n return offset;\r\n}\r\nimport { prepareMeshCutout } from '../materials/prepareMeshCutout.js';\r\n", "export const meshImage = {\n source: null,\n flipY: null\n};\n", "export const meshTarget = {\n texture: null\n};\n", "export const meshCopySize = [null, null];\n", "import { meshImage } from '../globals/meshImage.js';\r\nimport { meshTarget } from '../globals/meshTarget.js';\r\nimport { meshCopySize } from '../globals/meshCopySize.js';\r\n\r\nexport function uploadMeshTexture(device, texture) {\r\n if (texture.uploaded === texture.image) return;\r\n device.queue.copyExternalImageToTexture(\r\n (\r\n meshImage.source = texture.image,\r\n meshImage.flipY = Boolean(texture.flipY),\r\n meshImage\r\n ),\r\n (\r\n meshTarget.texture = texture.texture,\r\n meshTarget\r\n ),\r\n (\r\n meshCopySize[0] = texture.image.width,\r\n meshCopySize[1] = texture.image.height,\r\n meshCopySize\r\n )\r\n );\r\n meshImage.source = null;\r\n meshTarget.texture = null;\r\n texture.uploaded = texture.image;\r\n}\r\n", "export const meshBindGroup = {\n layout: null,\n entries: null\n};\n", "export const drawEntries = [];\n", "export const drawMeshEntry = {\n binding: 0,\n resource: {\n buffer: null,\n size: 160\n }\n};\n", "export const drawFrameEntry = {\n binding: 1,\n resource: {\n buffer: null,\n size: 240\n }\n};\n", "export const drawTerrainEntry = {\n binding: 2,\n resource: null\n};\n", "export const drawTextureEntries = [{\n binding: null,\n resource: null\n }, {\n binding: null,\n resource: null\n }, {\n binding: null,\n resource: null\n },\n {\n binding: null,\n resource: null\n }, {\n binding: null,\n resource: null\n },\n];\n", "export const drawSamplerEntries = [{\n binding: null,\n resource: null\n }, {\n binding: null,\n resource: null\n }, {\n binding: null,\n resource: null\n },\n {\n binding: null,\n resource: null\n }, {\n binding: null,\n resource: null\n },\n];\n", "import { meshBindGroup } from '../globals/meshBindGroup.js';\r\nimport { drawEntries } from '../globals/drawEntries.js';\r\nimport { drawMeshEntry } from '../globals/drawMeshEntry.js';\r\nimport { drawFrameEntry } from '../globals/drawFrameEntry.js';\r\nimport { drawTerrainEntry } from '../globals/drawTerrainEntry.js';\r\nimport { drawTextureEntries } from '../globals/drawTextureEntries.js';\r\nimport { drawSamplerEntries } from '../globals/drawSamplerEntries.js';\r\n\r\nexport function bindMeshTextures(renderer, mesh, textures) {\r\n const { program } = mesh;\r\n const entries = drawEntries;\r\n entries.length = 0;\r\n drawMeshEntry.resource.buffer = renderer.uniformBuffer;\r\n drawFrameEntry.resource.buffer = renderer.uniformBuffer;\r\n entries.push(drawMeshEntry, drawFrameEntry);\r\n if (program.terrain) {\r\n drawTerrainEntry.resource = program.terrain.texture.createView();\r\n entries.push(drawTerrainEntry);\r\n }\r\n mesh.boundBuffer = renderer.uniformBuffer;\r\n const boundTextures = mesh.boundTextures ||= /* alloc */ [];\r\n boundTextures.length = textures.length;\r\n let i, binding, texture;\r\n for (i = 0; i < textures.length; i++) {\r\n binding = program.bindings[i], texture = textures[i];\r\n drawTextureEntries[i].binding = binding.texture;\r\n drawTextureEntries[i].resource = texture.texture.createView();\r\n drawSamplerEntries[i].binding = binding.sampler;\r\n drawSamplerEntries[i].resource = texture.sampler;\r\n entries.push(drawTextureEntries[i], drawSamplerEntries[i]);\r\n boundTextures[i] ||= /* alloc */ [];\r\n boundTextures[i][0] = texture.texture;\r\n boundTextures[i][1] = texture.sampler;\r\n }\r\n mesh.bindGroup = renderer.device.createBindGroup((\r\n meshBindGroup.layout = program.bindGroupLayout,\r\n meshBindGroup.entries = entries,\r\n meshBindGroup\r\n ));\r\n meshBindGroup.layout = null;\r\n meshBindGroup.entries = null;\r\n drawMeshEntry.resource.buffer = null;\r\n drawFrameEntry.resource.buffer = null;\r\n drawTerrainEntry.resource = null;\r\n for (i = 0; i < textures.length; i++) {\r\n drawTextureEntries[i].resource = null;\r\n drawSamplerEntries[i].resource = null;\r\n }\r\n entries.length = 0;\r\n}\r\n", "import { uploadMeshTexture } from './uploadMeshTexture.js';\r\nimport { bindMeshTextures } from './bindMeshTextures.js';\r\n\r\nexport function prepareMeshTextures(renderer, mesh) {\r\n const { program } = mesh;\r\n const { device } = renderer;\r\n const textures = mesh._textures ||= /* alloc */ [];\r\n textures.length = 0;\r\n let binding, texture, i;\r\n for (binding of program.bindings) {\r\n texture = program.uniforms[binding.name]?.value;\r\n if (!texture) throw /* alloc */ new Error(`Missing Layer3D texture: ${binding.name}`);\r\n uploadMeshTexture(device, texture);\r\n textures.push(texture);\r\n }\r\n let bindingsChanged = !mesh.bindGroup || mesh.boundBuffer !== renderer.uniformBuffer ||\r\n textures.length !== mesh.boundTextures.length;\r\n for (i = 0; !bindingsChanged && i < textures.length; i++) {\r\n if (textures[i].texture !== mesh.boundTextures[i][0] ||\r\n textures[i].sampler !== mesh.boundTextures[i][1]) bindingsChanged = true;\r\n }\r\n if (bindingsChanged) bindMeshTextures(renderer, mesh, textures);\r\n}\r\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\n\nimport { meshOffsets } from '../globals/meshOffsets.js';\nimport { drawPipeline } from './drawPipeline.js';\nimport { prepareMeshUniforms } from './prepareMeshUniforms.js';\nimport { prepareMeshTextures } from '../textures/prepareMeshTextures.js';\n\n/** Upload retained CPU data and draw one mesh in the active WebGPU render pass. */\nexport function drawGeometry(layer, mesh, pass, cullMode, frontFace) {\n const { geometry } = mesh;\n const renderer = rendererByLayer.get(layer);\n const { device } = renderer;\n const pipeline = drawPipeline(renderer, mesh, cullMode, frontFace);\n const offset = prepareMeshUniforms(renderer, mesh);\n prepareMeshTextures(renderer, mesh);\n pass.setPipeline(pipeline);\n pass.setBindGroup(0, mesh.bindGroup, (\n meshOffsets[0] = offset,\n meshOffsets\n ));\n\n pass.setVertexBuffer(0, geometry.attributes.position.buffer);\n pass.setVertexBuffer(1, geometry.attributes.normal.buffer);\n if (geometry.attributes.color) pass.setVertexBuffer(2, geometry.attributes.color.buffer);\n if (geometry.attributes.uv) pass.setVertexBuffer(3, geometry.attributes.uv.buffer);\n const instances = geometry.attributes.instanceOffset;\n if (instances) pass.setVertexBuffer(4, instances.buffer);\n let name, attribute;\n for (name in geometry.attributes) {\n attribute = geometry.attributes[name];\n if (!attribute.needsUpdate) continue;\n device.queue.writeBuffer(attribute.buffer, 0, attribute.data);\n attribute.needsUpdate = false;\n if (name === 'position' || name === 'instanceOffset') geometry.bounds = null;\n }\n const index = geometry.attributes.index;\n if (index) {\n pass.setIndexBuffer(index.buffer, index.indexFormat);\n pass.drawIndexed(geometry.drawRange.count, instances?.count ?? 1, geometry.drawRange.start, 0, 0);\n } else {\n pass.draw(geometry.drawRange.count, instances?.count ?? 1, geometry.drawRange.start, 0);\n }\n}\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { roofRasterByLayer } from '../weakmaps/roofRasterByLayer.js';\n\nimport { scenePass } from '../globals/scenePass.js';\n\n\nimport { drawGeometry } from './drawGeometry.js';\n\nexport function drawSceneMeshes(layer, encoder, meshes) {\n const renderer = rendererByLayer.get(layer);\n const pass = encoder.beginRenderPass((\n scenePass.colorAttachments[0].view = renderer.context.getCurrentTexture().createView(),\n scenePass.depthStencilAttachment.view = renderer.depthTexture.createView(),\n scenePass\n ));\n scenePass.colorAttachments[0].view = null;\n scenePass.depthStencilAttachment.view = null;\n pass.setViewport(0, 0, renderer.canvas.width, renderer.canvas.height, 0, 1);\n pass.setBindGroup(1, renderer.sunlight.bindGroup);\n let mesh, world, uniforms, determinant, frontFace, program;\n for (mesh of meshes) {\n world = mesh.worldMatrix;\n if (mesh.texture) {\n mesh.program.uniforms.baseTexture.value = mesh.texture;\n mesh.program.uniforms.opacity.value = mesh.opacity;\n }\n uniforms = mesh.program.uniforms;\n if (uniforms.roofTexture) uniforms.roofTexture.value = roofRasterByLayer.get(layer)?.texture || renderer.roofFallbackTexture;\n if (!mesh._frontFace || mesh._frontFaceWorldVersion !== mesh._worldMatrixVersion ||\n mesh._worldMatrixVersion === undefined) {\n determinant = world[0] * (world[5] * world[10] - world[6] * world[9]) -\n world[4] * (world[1] * world[10] - world[2] * world[9]) +\n world[8] * (world[1] * world[6] - world[2] * world[5]);\n if (!Number.isFinite(determinant) || determinant === 0) {\n throw /* alloc */ new Error('Singular 3D transform');\n }\n mesh._frontFace = determinant < 0 ? 'cw' : 'ccw';\n mesh._frontFaceWorldVersion = mesh._worldMatrixVersion;\n }\n frontFace = mesh._frontFace;\n program = mesh.program;\n if (program.transparent && program._layerMaterial.doubleSided && !mesh._nativeSource) {\n drawGeometry(layer, mesh, pass, 'front', frontFace);\n drawGeometry(layer, mesh, pass, 'back', frontFace);\n } else {\n drawGeometry(layer, mesh, pass, program.cullMode, frontFace);\n }\n }\n pass.end();\n}\n", "export const disabledShadow = new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0]);\n", "export const shadowValues = new Float32Array(20);\n", "export function shadowMeshMatches(cache, mesh) {\r\n const previous = cache.meshes.get(mesh), range = mesh.geometry.drawRange;\r\n if (!(previous && previous.world === mesh._worldMatrixVersion && previous.geometry === mesh.geometry &&\r\n previous.start === range.start && previous.count === range.count &&\r\n previous.appearance === (mesh._appearance ?? 1))) return false;\r\n let attribute;\r\n for (attribute of Object.values(mesh.geometry.attributes)) {\r\n if (attribute.needsUpdate) return false;\r\n }\r\n return true;\r\n}\r\n", "export function shadowCacheMatches(sun, meshes, sunlight) {\n const cache = sun.cache;\n let unchanged = sun.enabled && cache?.meshes.size === meshes.length;\n let i, mesh;\n if (unchanged) {\n for (i = 0; i < sunlight.direction.length; i++) {\n if (sunlight.direction[i] !== cache.direction[i]) { unchanged = false; break; }\n }\n }\n if (unchanged) {\n for (mesh of meshes) {\n if (!shadowMeshMatches(cache, mesh)) { unchanged = false; break; }\n }\n }\n return unchanged;\n}\nimport { shadowMeshMatches } from './shadowMeshMatches.js';\n", "export const shadowBounds = {\n min: [0, 0, 0],\n max: [0, 0, 0]\n};\n", "export const shadowCamera = {\n position: [0, 0, 0],\n target: [0, 0, 0],\n up: [0, 0, -1],\n x: [0, 0, 0],\n y: [0, 0, 0],\n z: [0, 0, 0],\n fov: 45,\n aspect: 1,\n near: 1,\n far: 500,\n viewMatrix: [],\n projectionMatrix: [],\n projectionViewMatrix: [],\n};\n", "export const shadowLow = [0, 0, 0];\n", "export const shadowHigh = [0, 0, 0];\n", "export function meshShadowBounds(mesh, bounds, matrix) {\r\n let cached = mesh._shadowBounds;\r\n if (!cached || cached.version !== mesh._worldMatrixVersion || cached.bounds !== bounds) {\r\n cached ||= mesh._shadowBounds = /* alloc */ {\r\n min: /* alloc */ [Infinity, Infinity, Infinity],\r\n max: /* alloc */ [-Infinity, -Infinity, -Infinity],\r\n };\r\n cached.version = mesh._worldMatrixVersion;\r\n cached.bounds = bounds;\r\n cached.min.fill(Infinity); cached.max.fill(-Infinity);\r\n let i, x, y, z, w, axis, value;\r\n for (i = 0; i < 8; i++) {\r\n x = i & 1 ? bounds.max[0] : bounds.min[0], y = i & 2 ? bounds.max[1] : bounds.min[1];\r\n z = i & 4 ? bounds.max[2] : bounds.min[2];\r\n w = matrix[3] * x + matrix[7] * y + matrix[11] * z + matrix[15];\r\n for (axis = 0; axis < 3; axis++) {\r\n value = (matrix[axis] * x + matrix[axis + 4] * y + matrix[axis + 8] * z + matrix[axis + 12]) / w;\r\n cached.min[axis] = Math.min(cached.min[axis], value);\r\n cached.max[axis] = Math.max(cached.max[axis], value);\r\n }\r\n }\r\n }\r\n return cached;\r\n}\r\n", "import { computeBounds } from './computeBounds.js';\nimport { meshShadowBounds } from './meshShadowBounds.js';\n\nexport function shadowBounds(meshes, output = /* alloc */ {\n min: /* alloc */ [Infinity, Infinity, Infinity],\n max: /* alloc */ [-Infinity, -Infinity, -Infinity],\n}) {\n const { min, max } = output;\n min.fill(Infinity); max.fill(-Infinity);\n let mesh, bounds, matrix, cached, axis;\n for (mesh of meshes) {\n if (!mesh.geometry.bounds || mesh.geometry.attributes.position.needsUpdate) computeBounds(mesh.geometry);\n bounds = mesh.geometry.bounds, matrix = mesh.worldMatrix;\n cached = meshShadowBounds(mesh, bounds, matrix);\n for (axis = 0; axis < 3; axis++) {\n min[axis] = Math.min(min[axis], cached.min[axis]);\n max[axis] = Math.max(max[axis], cached.max[axis]);\n }\n }\n // Include ground receivers below/around the loaded buildings and trees.\n min[1] = Math.min(0, min[1]);\n return output;\n}\n", "import { shadowBounds as sharedShadowBounds } from '../globals/shadowBounds.js';\nimport { shadowCamera } from '../globals/shadowCamera.js';\nimport { shadowLow } from '../globals/shadowLow.js';\nimport { shadowHigh } from '../globals/shadowHigh.js';\n\nimport { shadowBounds } from '../geometry/shadowBounds.js';\nimport { updateCamera } from '../camera/updateSceneCamera.js';\n\nexport function shadowMatrix(meshes, sunlight) {\n const { min, max } = shadowBounds(meshes, sharedShadowBounds);\n const camera = shadowCamera;\n camera.viewTransform ||= /* alloc */ new DOMMatrix();\n camera.projectionTransform ||= /* alloc */ new DOMMatrix();\n camera.projectionViewTransform ||= /* alloc */ new DOMMatrix();\n const low = shadowLow, high = shadowHigh;\n let i, axis, x, y, z, value;\n const radius = Math.max(100, Math.hypot(max[0] - min[0], max[1] - min[1], max[2] - min[2]));\n for (i = 0; i < 3; i++) {\n camera.target[i] = (min[i] + max[i]) / 2;\n camera.position[i] = camera.target[i] + sunlight.direction[i] * radius * 2;\n }\n camera.far = radius * 5;\n updateCamera(camera);\n const view = camera.viewMatrix;\n low.fill(Infinity); high.fill(-Infinity);\n for (i = 0; i < 8; i++) {\n x = i & 1 ? max[0] : min[0];\n y = i & 2 ? max[1] : min[1];\n z = i & 4 ? max[2] : min[2];\n for (axis = 0; axis < 3; axis++) {\n value = view[axis] * x + view[axis + 4] * y + view[axis + 8] * z + view[axis + 12];\n low[axis] = Math.min(low[axis], value - 20);\n high[axis] = Math.max(high[axis], value + 20);\n }\n }\n const scaleX = 2 / (high[0] - low[0]), scaleY = 2 / (high[1] - low[1]);\n const scaleZ = -1 / (high[2] - low[2]);\n const matrix = /* alloc */ new Float32Array(16);\n for (i = 0; i < 16; i += 4) {\n matrix[i] = view[i] * scaleX;\n matrix[i + 1] = view[i + 1] * scaleY;\n matrix[i + 2] = view[i + 2] * scaleZ;\n matrix[i + 3] = view[i + 3];\n }\n matrix[12] -= (high[0] + low[0]) / (high[0] - low[0]);\n matrix[13] -= (high[1] + low[1]) / (high[1] - low[1]);\n matrix[14] += high[2] / (high[2] - low[2]);\n return matrix;\n}\n", "export const shadowMeshLayout = {\n entries: [{\n binding: 0,\n visibility: null,\n buffer: {\n type: 'uniform',\n hasDynamicOffset: true\n }\n }]\n};\n", "export const shadowDepthLayout = {\n entries: [{\n binding: 0,\n visibility: null,\n buffer: {\n type: 'uniform'\n }\n }]\n};\n", "export const depthBindGroup = {\n layout: null,\n entries: [{\n binding: 0,\n resource: {\n buffer: null\n }\n }]\n};\n", "export const shadowShader = {\n code: null\n};\n", "export const shadowPipeline = {\n layout: null,\n vertex: {\n module: null,\n entryPoint: 'main',\n buffers: null\n },\n fragment: {\n module: null,\n entryPoint: 'fragmentMain',\n targets: []\n },\n primitive: {\n topology: 'triangle-list',\n cullMode: 'none'\n },\n depthStencil: {\n format: 'depth32float',\n depthWriteEnabled: true,\n depthCompare: 'less',\n depthBias: 2,\n depthBiasSlopeScale: 2\n }\n};\n", "export const shadowPipelineLayout = {\n bindGroupLayouts: [null, null]\n};\n", "export const positionLayout = Object.freeze({\n arrayStride: 12,\n attributes: Object.freeze([Object.freeze({\n shaderLocation: 0,\n offset: 0,\n format: 'float32x3'\n })])\n});\n", "export const instanceLayout = Object.freeze({\n arrayStride: 16,\n stepMode: 'instance',\n attributes: Object.freeze([Object.freeze({\n shaderLocation: 4,\n offset: 0,\n format: 'float32x4'\n })])\n});\n", "import { positionLayout as sharedPositionLayout } from './positionLayout.js';\nimport { instanceLayout as sharedInstanceLayout } from './instanceLayout.js';\n\nexport const shadowInstanceLayouts = [sharedPositionLayout, sharedInstanceLayout];\n", "import { positionLayout as sharedPositionLayout } from './positionLayout.js';\n\nexport const shadowLayouts = [sharedPositionLayout];\n", "import { shadowMeshLayout } from '../globals/shadowMeshLayout.js';\nimport { shadowDepthLayout } from '../globals/shadowDepthLayout.js';\nimport { depthBindGroup as sharedDepthBindGroup } from '../globals/depthBindGroup.js';\nimport { shadowShader } from '../globals/shadowShader.js';\nimport { shadowPipeline } from '../globals/shadowPipeline.js';\nimport { shadowPipelineLayout } from '../globals/shadowPipelineLayout.js';\nimport { shadowInstanceLayouts } from '../globals/shadowInstanceLayouts.js';\nimport { shadowLayouts } from '../globals/shadowLayouts.js';\n\nexport function ensureShadowPipeline(device, sun, instanced = false) {\n const key = instanced ? 'instancePipeline' : 'pipeline';\n if (!sun[key]) {\n if (!sun.meshLayout) {\n sun.meshLayout = device.createBindGroupLayout((\n shadowMeshLayout.entries[0].visibility = GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,\n shadowMeshLayout\n ));\n\n // Do not bind the sampled depth texture while it is a render attachment.\n sun.depthLayout = device.createBindGroupLayout((\n shadowDepthLayout.entries[0].visibility = GPUShaderStage.VERTEX,\n shadowDepthLayout\n ));\n\n sun.depthBindGroup = device.createBindGroup((\n sharedDepthBindGroup.layout = sun.depthLayout,\n sharedDepthBindGroup.entries[0].resource.buffer = sun.buffer,\n sharedDepthBindGroup\n ));\n sharedDepthBindGroup.layout = null;\n sharedDepthBindGroup.entries[0].resource.buffer = null;\n }\n const shader = device.createShaderModule((\n shadowShader.code = /* wgsl */`\n struct Mesh { world: mat4x4<f32>, padding: array<vec4<f32>, 4>, highlight: vec4<f32> };\n @group(0) @binding(0) var<uniform> mesh: Mesh;\n @group(1) @binding(0) var<uniform> matrix: mat4x4<f32>;\n @vertex fn main(@location(0) position: vec3<f32>${instanced ? ', @location(4) offset: vec4<f32>' : ''}) -> @builtin(position) vec4<f32> {\n return matrix * mesh.world * vec4<f32>(position${instanced ? ' + offset.xyz' : ''}, 1.0);\n }\n @fragment fn fragmentMain(@builtin(position) position: vec4<f32>) {\n let noise = fract(52.9829189 * fract(dot(floor(position.xy), vec2<f32>(0.06711056, 0.00583715))));\n if (mesh.highlight.w < 1.0 && noise >= mesh.highlight.w) { discard; }\n }\n `,\n shadowShader\n ));\n shadowShader.code = null;\n const buffers = instanced ? shadowInstanceLayouts : shadowLayouts;\n sun[key] = device.createRenderPipeline((\n shadowPipeline.layout = device.createPipelineLayout((shadowPipelineLayout.bindGroupLayouts[0] = sun.meshLayout, shadowPipelineLayout.bindGroupLayouts[1] = sun.depthLayout, shadowPipelineLayout)),\n shadowPipeline.vertex.module = shader,\n shadowPipeline.vertex.buffers = buffers,\n shadowPipeline.fragment.module = shader,\n shadowPipeline\n ));\n shadowPipelineLayout.bindGroupLayouts[0] = null;\n shadowPipelineLayout.bindGroupLayouts[1] = null;\n shadowPipeline.layout = null;\n shadowPipeline.vertex.module = null;\n shadowPipeline.vertex.buffers = null;\n shadowPipeline.fragment.module = null;\n }\n}\n", "export const shadowPass = {\n colorAttachments: [],\n depthStencilAttachment: {\n view: null,\n depthClearValue: 1,\n depthLoadOp: 'clear',\n depthStoreOp: 'store'\n }\n};\n", "export const shadowBindGroup = {\n layout: null,\n entries: [{\n binding: 0,\n resource: {\n buffer: null,\n size: 144\n }\n }]\n};\n", "export const shadowOffsets = [null];\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\n\nimport { shadowPass } from '../globals/shadowPass.js';\nimport { shadowBindGroup } from '../globals/shadowBindGroup.js';\nimport { shadowOffsets } from '../globals/shadowOffsets.js';\n\n\nexport function drawShadowMeshes(layer, encoder, meshes) {\n const renderer = rendererByLayer.get(layer), device = renderer.device, sun = renderer.sunlight;\n const pass = encoder.beginRenderPass((\n shadowPass.depthStencilAttachment.view = sun.texture.createView(),\n shadowPass\n ));\n shadowPass.depthStencilAttachment.view = null;\n let pipeline = sun.pipeline;\n pass.setPipeline(pipeline);\n pass.setBindGroup(1, sun.depthBindGroup);\n let mesh, instances, nextPipeline, offset, attribute, index, range;\n for (mesh of meshes) {\n instances = mesh.geometry.attributes.instanceOffset;\n nextPipeline = instances ? sun.instancePipeline : sun.pipeline;\n if (nextPipeline !== pipeline) {\n pipeline = nextPipeline;\n pass.setPipeline(pipeline);\n }\n offset = renderer.uniformSlot++ * 256;\n renderer.uniformData.set(mesh.worldMatrix, offset / 4);\n renderer.uniformData[offset / 4 + 35] = mesh._appearance ?? 1;\n if (mesh._shadowBuffer !== renderer.uniformBuffer) {\n mesh._shadowBuffer = renderer.uniformBuffer;\n mesh._shadowBindGroup = device.createBindGroup((\n shadowBindGroup.layout = sun.meshLayout,\n shadowBindGroup.entries[0].resource.buffer = renderer.uniformBuffer,\n shadowBindGroup\n ));\n shadowBindGroup.layout = null;\n shadowBindGroup.entries[0].resource.buffer = null;\n }\n for (attribute of Object.values(mesh.geometry.attributes)) {\n if (attribute.needsUpdate) {\n device.queue.writeBuffer(attribute.buffer, 0, attribute.data);\n attribute.needsUpdate = false;\n }\n }\n pass.setBindGroup(0, mesh._shadowBindGroup, (\n shadowOffsets[0] = offset,\n shadowOffsets\n ));\n\n pass.setVertexBuffer(0, mesh.geometry.attributes.position.buffer);\n if (instances) pass.setVertexBuffer(1, instances.buffer);\n index = mesh.geometry.attributes.index, range = mesh.geometry.drawRange;\n if (index) {\n pass.setIndexBuffer(index.buffer, index.indexFormat);\n pass.drawIndexed(range.count, instances?.count ?? 1, range.start, 0, 0);\n } else pass.draw(range.count, instances?.count ?? 1, range.start, 0);\n }\n pass.end();\n}\n", "export const shadowTexture = {\n size: [null, null],\n format: 'depth32float',\n usage: null\n};\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\n\nimport { shadowTexture } from '../globals/shadowTexture.js';\n\n\nimport { bindSunlight } from './bindSunlight.js';\nimport { destroyTexture } from '../textures/destroyTexture.js';\n\nexport function resizeSunlight(layer, size) {\n const device = rendererByLayer.get(layer).device, sun = rendererByLayer.get(layer).sunlight;\n if (sun.size === size) return;\n if (sun.texture) destroyTexture(layer, sun.texture);\n sun.size = size;\n sun.texture = device.createTexture((\n shadowTexture.size[0] = size,\n shadowTexture.size[1] = size,\n shadowTexture.usage = GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC,\n shadowTexture\n ));\n\n bindSunlight(layer);\n}\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\n\nimport { disabledShadow } from '../globals/disabledShadow.js';\nimport { shadowValues } from '../globals/shadowValues.js';\n\nimport { shadowCacheMatches } from './shadowCacheMatches.js';\nimport { shadowMatrix } from './shadowMatrix.js';\nimport { ensureShadowPipeline } from './ensureShadowPipeline.js';\nimport { drawShadowMeshes } from './drawShadowMeshes.js';\nimport { resizeSunlight } from './resizeSunlight.js';\n\n/** One shared directional depth map. Off-screen but loaded geometry can cast shadows. */\n\nexport function renderSunlight(layer, encoder, meshes, sunlight) {\n const renderer = rendererByLayer.get(layer), device = renderer.device, sun = renderer.sunlight;\n if (!meshes.length || !sunlight || sunlight.altitude < 3) {\n if (!sun.enabled) return;\n device.queue.writeBuffer(sun.buffer, 0, disabledShadow);\n sun.enabled = false;\n sun.cache = null;\n return;\n }\n if (shadowCacheMatches(sun, meshes, sunlight)) return;\n const values = shadowValues;\n sun.enabled = true;\n resizeSunlight(layer, Math.min(2048, device.limits.maxTextureDimension2D));\n values.set(shadowMatrix(meshes, sunlight));\n values[16] = 1;\n device.queue.writeBuffer(sun.buffer, 0, values);\n ensureShadowPipeline(device, sun);\n let mesh;\n for (mesh of meshes) {\n if (mesh.geometry.attributes.instanceOffset) {\n ensureShadowPipeline(device, sun, true);\n break;\n }\n }\n drawShadowMeshes(layer, encoder, meshes);\n const snapshots = /* alloc */ new Map();\n let mesh2;\n for (mesh2 of meshes) {\n snapshots.set(mesh2, /* alloc */ {\n world: mesh2._worldMatrixVersion, geometry: mesh2.geometry,\n start: mesh2.geometry.drawRange.start, count: mesh2.geometry.drawRange.count,\n appearance: mesh2._appearance ?? 1,\n });\n }\n sun.cache = /* alloc */ { direction: /* alloc */ [...sunlight.direction], meshes: snapshots };\n}\n", "import { frameByLayer } from '../weakmaps/frameByLayer.js';\n\nimport { pendingUpdates } from '../globals/pendingUpdates.js';\n\n\n\nexport function cancelUpdate(layer) {\n const frame = frameByLayer.get(layer);\n pendingUpdates.delete(layer);\n frameByLayer.set(layer, null);\n if (!pendingUpdates.size && frame != null) {\n cancelAnimationFrame(frame);\n }\n}\n", "export const pruneAfterByLayer = new WeakMap();\n", "export const pruneVersionByLayer = new WeakMap();\n", "export const pruneWantedByLayer = new WeakMap();\n", "export const terrain3DByLayer = new WeakMap();\n", "export const terrainRequestByLayer = new WeakMap();\n", "/** Reparent/detach scene data without drawing or disposing GPU resources. */\n\nexport function setParent(node, parent) {\n if (node.parent) node.parent.children.splice(node.parent.children.indexOf(node), 1);\n node.parent = parent;\n if (parent) parent.children.push(node);\n}\n", "import { rasterTilesByLayer } from '../weakmaps/rasterTilesByLayer.js';\nimport { terrainRequestByLayer } from '../weakmaps/terrainRequestByLayer.js';\n\n\n\nimport { destroyTexture } from '../textures/destroyTexture.js';\nimport { setParent } from '../scene/setParent.js';\nimport { update } from '../scene/scheduleSceneUpdate.js';\n\nexport function removeRasterTile(layer, tile) {\n terrainRequestByLayer.get(layer)?.abort();\n const mesh = rasterTilesByLayer.get(layer).get(tile);\n if (!mesh) return;\n setParent(mesh, null);\n update(layer);\n if (mesh.texture !== tile.texture) destroyTexture(layer, mesh.texture.texture);\n rasterTilesByLayer.get(layer).delete(tile);\n}\n", "import { rasterTilesByLayer } from '../weakmaps/rasterTilesByLayer.js';\nimport { rasterVersionByLayer } from '../weakmaps/rasterVersionByLayer.js';\nimport { terrain3DByLayer } from '../weakmaps/terrain3DByLayer.js';\n\n\n\nimport { destroyTexture } from '../textures/destroyTexture.js';\nimport { removeRasterTile } from './removeRasterTile.js';\nimport { setParent } from '../scene/setParent.js';\nimport { update } from '../scene/scheduleSceneUpdate.js';\n\nexport function releaseRasterTile(layer, tile) {\n const key = `${tile.coords.z}/${tile.coords.x}/${tile.coords.y}`;\n if (rasterTilesByLayer.get(layer).get(key) !== tile) return;\n rasterTilesByLayer.get(layer).delete(key);\n rasterVersionByLayer.set(layer, (rasterVersionByLayer.get(layer) || 0) + 1);\n tile.request.abort();\n if(terrain3DByLayer.get(layer)) removeRasterTile(terrain3DByLayer.get(layer), tile);\n if (tile.mesh) setParent(tile.mesh, null);\n if (tile.texture) destroyTexture(layer, tile.texture.texture);\n tile.image?.close();\n layer.fire('tileunload', /* alloc */ { tile, coords: tile.coords });\n update(layer);\n}\n", "import { pruneAfterByLayer } from '../weakmaps/pruneAfterByLayer.js';\nimport { pruneVersionByLayer } from '../weakmaps/pruneVersionByLayer.js';\nimport { pruneWantedByLayer } from '../weakmaps/pruneWantedByLayer.js';\nimport { rasterTilesByLayer } from '../weakmaps/rasterTilesByLayer.js';\nimport { rasterVersionByLayer } from '../weakmaps/rasterVersionByLayer.js';\nimport { wantedRasterTilesByLayer } from '../weakmaps/wantedRasterTilesByLayer.js';\n\n\n\nimport { releaseRasterTile } from './releaseRasterTile.js';\n\nexport function pruneRasterTiles(layer) {\n const wanted = wantedRasterTilesByLayer.get(layer);\n const now = performance.now();\n if (pruneVersionByLayer.get(layer) === rasterVersionByLayer.get(layer) && pruneWantedByLayer.get(layer) === wanted &&\n now < pruneAfterByLayer.get(layer)) return Number.isFinite(pruneAfterByLayer.get(layer));\n pruneVersionByLayer.set(layer, rasterVersionByLayer.get(layer));\n pruneWantedByLayer.set(layer, wanted);\n pruneAfterByLayer.set(layer, Infinity);\n const pending = /* alloc */ [];\n let key, tile, parts, overlaps, coords, zoom;\n for (key of wanted) {\n tile = rasterTilesByLayer.get(layer).get(key);\n if (tile?.done && now - tile.loadedAt < 250) {\n pruneAfterByLayer.set(layer, Math.min(pruneAfterByLayer.get(layer), tile.loadedAt + 250));\n }\n if (!tile?.done || now - tile.loadedAt < 250) {\n parts = key.split('/');\n pending.push(/* alloc */ { z: Number(parts[0]), x: Number(parts[1]), y: Number(parts[2]) });\n }\n }\n for ([key, tile] of rasterTilesByLayer.get(layer)) {\n if (wanted.has(key)) continue;\n overlaps = false;\n for (coords of pending) {\n zoom = Math.min(coords.z, tile.coords.z);\n if (Math.floor(coords.x / 2 ** (coords.z - zoom)) === Math.floor(tile.coords.x / 2 ** (tile.coords.z - zoom)) &&\n Math.floor(coords.y / 2 ** (coords.z - zoom)) === Math.floor(tile.coords.y / 2 ** (tile.coords.z - zoom))) {\n overlaps = true;\n break;\n }\n }\n if (!overlaps) releaseRasterTile(layer, tile);\n }\n return Number.isFinite(pruneAfterByLayer.get(layer));\n}\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\n\nimport { L } from '../globals/L.js';\n\n\nimport { current } from './isCurrentNativeLayer.js';\nimport { syncGridLayer } from './syncGridLayer.js';\nimport { syncImageOverlay } from './syncImageOverlay.js';\nimport { syncMarker } from './syncMarker.js';\nimport { syncVectorLayer } from './syncVectorLayer.js';\nimport { pruneNativeResources } from './pruneNativeResources.js';\n\nexport function synchronizeNativeLayer(state) {\n const { source, meshes, textures } = state;\n if (!current(state) || !rendererByLayer.get(state.backend) || state.failed) return;\n if (!state.dirty && (!state.marker || !state.viewDirty)) return;\n state.dirty = false;\n state.viewDirty = false;\n let mesh, texture;\n for (mesh of meshes.values()) mesh._nativeUsed = false;\n for (texture of textures.values()) texture.used = false;\n if (source instanceof L.GridLayer) syncGridLayer(state);\n else if (source instanceof L.ImageOverlay) syncImageOverlay(state);\n else if (state.marker) syncMarker(state);\n else syncVectorLayer(state);\n pruneNativeResources(state);\n}\n", "import { nativeGPUByLayer } from '../weakmaps/nativeGPUByLayer.js';\n\n\n\nexport function current(state) {\r\n return nativeGPUByLayer.get(state.source) === state && state.map.hasLayer(state.source);\r\n}\n", "import { L } from '../globals/L.js';\nimport { coreWhite } from '../globals/coreWhite.js';\n\nimport { styleNativeMesh } from './styleNativeMesh.js';\nimport { quadNativeMesh } from './quadNativeMesh.js';\nimport { boundsQuad } from '../geometry/boundsQuad.js';\n\n\nexport function syncGridLayer(state) {\n const { source, textures, meshes } = state;\n let key, tile, opacity, retained, mesh, nw, se;\n for (key in source._tiles) {\n if (!Object.hasOwn(source._tiles, key)) continue;\n tile = source._tiles[key];\n if (!tile.loaded || tile.el instanceof HTMLImageElement && !tile.el.naturalWidth) continue;\n opacity = (source.options.opacity ?? 1) * (tile._gpuOpacity ?? 1);\n retained = textures.get(key);\n mesh = meshes.get(key);\n if (mesh && retained?.image === tile.el && retained.url === (tile.el.currentSrc || tile.el.src)) {\n retained.used = true;\n styleNativeMesh(state, mesh, coreWhite, opacity);\n } else {\n [nw, se] = source._tileCoordsToNwSe(tile.coords);\n mesh = quadNativeMesh(state, key, tile.el, boundsQuad(state,\n /* alloc */ new L.LatLngBounds(nw, se)), opacity);\n }\n if (mesh) mesh.renderOrder += tile.coords.z / 100;\n }\n}\n", "export const coreWhite = Object.freeze([1, 1, 1]);\n", "export const cameraZIndexOffsetByLayer = new WeakMap();\n", "import { cameraZIndexOffsetByLayer } from '../weakmaps/cameraZIndexOffsetByLayer.js';\n\nimport { L } from '../globals/L.js';\n\n\nexport function styleNativeMesh(state, mesh, color, opacity) {\r\n const { source, marker, paneOrder, order } = state;\r\n mesh.program.uniforms.baseColor.value = color;\r\n mesh.program.uniforms.opacity.value = opacity;\r\n if (source instanceof L.GridLayer) mesh.opacity = opacity;\r\n const zIndex = marker ? source._zIndex + (cameraZIndexOffsetByLayer.get(source) || 0) : source.options.zIndex;\r\n mesh.renderOrder = paneOrder * 1e6 + (zIndex || 0) * 1000 + order;\r\n mesh._nativeSource = source;\r\n mesh._nativeUsed = true;\r\n}\n", "export const coreQuadIndices = Object.freeze([0, 2, 1, 1, 2, 3]);\n", "export const coreQuadUV = Object.freeze([0, 0, 1, 0, 0, 1, 1, 1]);\n", "export const coreSampler = Object.freeze({\n minFilter: 'linear',\n magFilter: 'linear'\n});\n", "import { setParent } from '../scene/setParent.js';\nimport { update } from '../scene/scheduleSceneUpdate.js';\n\nexport function disposeMesh(layer, mesh) {\n if (!mesh) {\n return;\n }\n setParent(mesh, null);\n update(layer);\n let attribute;\n for (attribute of Object.values(mesh.geometry.attributes)) {\n attribute.buffer.destroy();\n }\n}\n", "import { current } from '../native/isCurrentNativeLayer.js';\nimport { refreshNativeLayer } from '../native/refreshNativeLayer.js';\n\nexport async function uploadCanvasTexture(state, key, texture, image, device, width, height) {\n let bitmap;\n try {\n bitmap = await createImageBitmap(image);\n if (!current(state) || state.textures.get(key) !== texture) return;\n device.queue.copyExternalImageToTexture(\n /* alloc */ { source: bitmap },\n /* alloc */ { texture: texture.texture },\n /* alloc */ [width, height]);\n texture.uploaded = image;\n texture.pending = false;\n refreshNativeLayer(state);\n } catch (error) {\n state.failed = true;\n state.source.fire('error', /* alloc */ { error });\n } finally {\n bitmap?.close();\n }\n}\n", "export function uploadNativeImage(state, key, texture, image, device, width, height) {\r\n try {\r\n device.queue.copyExternalImageToTexture(\r\n /* alloc */ { source: image },\r\n /* alloc */ { texture: texture.texture },\r\n /* alloc */ [width, height]);\r\n } catch (error) {\r\n texture.texture.destroy();\r\n state.textures.delete(key);\r\n throw error;\r\n }\r\n texture.uploaded = image;\r\n}\r\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\n\nimport { coreSampler } from '../globals/coreSampler.js';\n\nimport { disposeMesh } from '../rendering/disposeMesh.js';\nimport { destroyTexture } from './destroyTexture.js';\nimport { uploadCanvasTexture } from './uploadCanvasTexture.js';\nimport { uploadNativeImage } from './uploadNativeImage.js';\n\n\nexport function textureFor(state, key, image) {\n if (!(image instanceof HTMLImageElement) && !(image instanceof HTMLCanvasElement)) {\n throw /* alloc */ new Error('WebGPU native raster layers require image or canvas tiles');\n }\n const { backend: layer, textures, meshes } = state;\n let texture = textures.get(key);\n const url = image.currentSrc || image.src;\n if (!texture || texture.image !== image || texture.url !== url) {\n if (texture) {\n const mesh = meshes.get(key);\n if (mesh) disposeMesh(layer, mesh);\n meshes.delete(key);\n destroyTexture(layer, texture.texture);\n textures.delete(key);\n }\n const width = image.naturalWidth || image.width, height = image.naturalHeight || image.height;\n if (!width || !height) return;\n const { device } = rendererByLayer.get(layer);\n texture = /* alloc */ {\n device, image, url, format: 'rgba8unorm', uploaded: null,\n texture: device.createTexture(/* alloc */ {\n size: /* alloc */ [width, height], format: 'rgba8unorm',\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,\n }),\n sampler: device.createSampler(coreSampler),\n };\n textures.set(key, texture);\n if (image instanceof HTMLCanvasElement) {\n texture.pending = true;\n uploadCanvasTexture(state, key, texture, image, device, width, height);\n } else {\n uploadNativeImage(state, key, texture, image, device, width, height);\n }\n }\n texture.used = true;\n return texture.uploaded === image ? texture : undefined;\n}\n", "import { L } from '../globals/L.js';\nimport { disposeMesh } from '../rendering/disposeMesh.js';\nimport { createMesh } from '../rendering/createMesh.js';\nimport { styleNativeMesh } from './styleNativeMesh.js';\n\nexport function putNativeMesh(state, key, position, color, opacity, texture, uv) {\n const { backend: layer, source, meshes } = state;\n if (!position.length) return;\n let mesh = meshes.get(key);\n if (!mesh || mesh.geometry.attributes.position.data.length !== position.length ||\n mesh.program.uniforms.baseTexture?.value !== texture) {\n const normal = /* alloc */ [];\n let index;\n for (index = 0; index < position.length; index++) normal.push(index % 3 === 1 ? 1 : 0);\n const data = /* alloc */ { position, normal };\n if (uv) data.uv = uv;\n const material = /* alloc */ {\n vertexColors: false, color, opacity, unlit: true, alphaMode: 'BLEND',\n };\n if (texture) material.baseTexture = texture;\n if (mesh) disposeMesh(layer, mesh);\n mesh = createMesh(layer, data, material, 0, source instanceof L.GridLayer ? state.rasterProgram : undefined);\n if (source instanceof L.GridLayer) {\n state.rasterProgram ||= mesh.program;\n mesh.texture = texture;\n }\n meshes.set(key, mesh);\n } else {\n const attribute = mesh.geometry.attributes.position;\n attribute.data.set(position);\n attribute.needsUpdate = true;\n mesh.geometry.bounds = null;\n }\n styleNativeMesh(state, mesh, color, opacity);\n return mesh;\n}\n", "export const defaultMaterial = Object.freeze({});\n", "export const meshBuffer = {\n size: null,\n usage: null\n};\n", "export const nextId = { value: 0 };\n", "/** A fresh, empty scene-graph node. */\nexport function emptyNode() {\n return /* alloc */ {\n position: /* alloc */ [0, 0, 0],\n rotation: /* alloc */ [0, 0, 0],\n scale: /* alloc */ [1, 1, 1],\n worldMatrix: /* alloc */ [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\n children: /* alloc */ [],\n highlightRange: /* alloc */ [0, 0],\n visible: true,\n };\n}\n", "export const vertexShader = {\n code: null\n};\n", "export const fragmentShader = {\n code: null\n};\n", "export const pipelineLayout = {\n bindGroupLayouts: [null, null]\n};\n", "/**\n * WGSL twin of getElevation for the vertex shader: bilinear DEM pixels, or the first valid\n * neighbour near no-data (stored as -1e9), else `base`. Expects `dem: texture_2d<f32>`.\n */\nexport const elevationWGSL = /* wgsl */`\n fn demSample(pixel: vec2<i32>) -> f32 {\n if (any(pixel < vec2<i32>(0)) || any(pixel >= vec2<i32>(textureDimensions(dem)))) { return -1e9; }\n return textureLoad(dem, pixel, 0).r;\n }\n fn elevation(pixel: vec2<f32>, base: f32) -> f32 {\n let p = pixel - vec2<f32>(0.5);\n let f = fract(p);\n let i = vec2<i32>(floor(p));\n let v00 = demSample(i);\n let v10 = demSample(i + vec2<i32>(1, 0));\n let v01 = demSample(i + vec2<i32>(0, 1));\n let v11 = demSample(i + vec2<i32>(1, 1));\n if (v00 > -1000.0 && v10 > -1000.0 && v01 > -1000.0 && v11 > -1000.0) {\n return mix(mix(v00, v10, f.x), mix(v01, v11, f.x), f.y);\n }\n if (v00 > -1000.0) { return v00; }\n if (v10 > -1000.0) { return v10; }\n if (v01 > -1000.0) { return v01; }\n if (v11 > -1000.0) { return v11; }\n return base;\n }\n`;\n", "export const normalLayout = Object.freeze({\n arrayStride: 12,\n attributes: Object.freeze([Object.freeze({\n shaderLocation: 1,\n offset: 0,\n format: 'float32x3'\n })])\n});\n", "export const colorLayout = Object.freeze({\n arrayStride: 12,\n attributes: Object.freeze([Object.freeze({\n shaderLocation: 2,\n offset: 0,\n format: 'float32x3'\n })])\n});\n", "export const uVLayout = Object.freeze({\n arrayStride: 8,\n attributes: Object.freeze([Object.freeze({\n shaderLocation: 3,\n offset: 0,\n format: 'float32x2'\n })])\n});\n", "export const programLayout = {\n entries: null\n};\n", "export const programEntries = [];\n", "export const meshLayoutEntry = {\n binding: 0,\n visibility: null,\n buffer: {\n type: 'uniform',\n hasDynamicOffset: true\n }\n};\n", "export const frameLayoutEntry = {\n binding: 1,\n visibility: null,\n buffer: {\n type: 'uniform'\n }\n};\n", "export const terrainLayoutEntry = {\n binding: 2,\n visibility: null,\n texture: {\n sampleType: 'unfilterable-float',\n viewDimension: '2d'\n }\n};\n", "export const textureLayoutEntries = [{\n binding: null,\n visibility: null,\n texture: {\n sampleType: 'float',\n viewDimension: '2d'\n }\n },\n {\n binding: null,\n visibility: null,\n texture: {\n sampleType: 'float',\n viewDimension: '2d'\n }\n },\n {\n binding: null,\n visibility: null,\n texture: {\n sampleType: 'float',\n viewDimension: '2d'\n }\n },\n {\n binding: null,\n visibility: null,\n texture: {\n sampleType: 'float',\n viewDimension: '2d'\n }\n },\n {\n binding: null,\n visibility: null,\n texture: {\n sampleType: 'float',\n viewDimension: '2d'\n }\n },\n];\n", "export const samplerLayoutEntries = [{\n binding: null,\n visibility: null,\n sampler: {\n type: 'filtering'\n }\n },\n {\n binding: null,\n visibility: null,\n sampler: {\n type: 'filtering'\n }\n },\n {\n binding: null,\n visibility: null,\n sampler: {\n type: 'filtering'\n }\n },\n {\n binding: null,\n visibility: null,\n sampler: {\n type: 'filtering'\n }\n },\n {\n binding: null,\n visibility: null,\n sampler: {\n type: 'filtering'\n }\n },\n];\n", "import { programLayout } from '../globals/programLayout.js';\r\nimport { programEntries } from '../globals/programEntries.js';\r\nimport { meshLayoutEntry } from '../globals/meshLayoutEntry.js';\r\nimport { frameLayoutEntry } from '../globals/frameLayoutEntry.js';\r\nimport { terrainLayoutEntry } from '../globals/terrainLayoutEntry.js';\r\nimport { textureLayoutEntries } from '../globals/textureLayoutEntries.js';\r\nimport { samplerLayoutEntries } from '../globals/samplerLayoutEntries.js';\r\n\r\nexport function createProgramLayout(device, shaders) {\r\n const bindGroupEntries = programEntries;\r\n bindGroupEntries.length = 0;\r\n meshLayoutEntry.visibility = GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT;\r\n frameLayoutEntry.visibility = GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT;\r\n bindGroupEntries.push(meshLayoutEntry, frameLayoutEntry);\r\n if (shaders.hasTerrain) {\r\n terrainLayoutEntry.visibility = GPUShaderStage.VERTEX;\r\n bindGroupEntries.push(terrainLayoutEntry);\r\n }\r\n let texture, entry, index = 0;\r\n for (texture of shaders.bindings) {\r\n entry = textureLayoutEntries[index];\r\n entry.binding = texture.texture;\r\n entry.visibility = GPUShaderStage.FRAGMENT;\r\n bindGroupEntries.push(entry);\r\n entry = samplerLayoutEntries[index++];\r\n entry.binding = texture.sampler;\r\n entry.visibility = GPUShaderStage.FRAGMENT;\r\n bindGroupEntries.push(entry);\r\n }\r\n const layout = device.createBindGroupLayout((\r\n programLayout.entries = bindGroupEntries,\r\n programLayout\r\n ));\r\n programLayout.entries = null;\r\n return layout;\r\n}\r\n", "export function createProgramUniforms(material) {\r\n const uniforms = /* alloc */ {\r\n baseColor: /* alloc */ { value: material.color || /* alloc */ [1, 1, 1] },\r\n metallic: /* alloc */ { value: material.metallic ?? 0 },\r\n roughness: /* alloc */ { value: material.roughness ?? 0.85 },\r\n opacity: /* alloc */ { value: material.opacity ?? 1 },\r\n alphaCutoff: /* alloc */ { value: material.alphaCutoff ?? 0.5 },\r\n occlusionStrength: /* alloc */ { value: material.occlusionStrength ?? 1 },\r\n emissive: /* alloc */ { value: material.emissive || /* alloc */ [0, 0, 0] },\r\n };\r\n if (material.baseTexture) uniforms.baseTexture = /* alloc */ { value: material.baseTexture };\r\n if (material.metalTexture) uniforms.metalTexture = /* alloc */ { value: material.metalTexture };\r\n if (material.emissiveTexture) uniforms.emissiveTexture = /* alloc */ { value: material.emissiveTexture };\r\n if (material.occlusionTexture) uniforms.occlusionTexture = /* alloc */ { value: material.occlusionTexture };\r\n if (material.roofTexture || material.wallTexture) uniforms.roofTexture = /* alloc */ { value: null };\r\n return uniforms;\r\n}\r\n", "export function textureBinding(bindings, name, enabled) {\n if (!enabled) return '';\n const current = 3 + bindings.length * 2;\n bindings.push(/* alloc */ { name, texture: current, sampler: current + 1 });\n return /* wgsl */ `@group(0) @binding(${current}) var ${name}: texture_2d<f32>;\n @group(0) @binding(${current + 1}) var ${name}Sampler: sampler;`;\n}\n", "export function validateRoofMaterial(material) {\r\n let name, value;\r\n for (name of /* alloc */ ['roofTexture', 'wallTexture']) {\r\n value = material[name];\r\n if (value !== undefined && typeof value !== 'boolean' &&\r\n (!Number.isFinite(value) || value < 0 || value > 1)) {\r\n throw /* alloc */ new Error(`${name} must be a boolean or a finite number between 0 and 1`);\r\n }\r\n }\r\n}\r\n", "export function roofVertexShader(material) {\r\n const roofOpacity = Number(material.roofTexture ?? 0);\r\n const wallOpacity = Number(material.wallTexture ?? 0);\r\n return /* wgsl */ `\r\n output.roofUv = (frame.roofMatrix * world).xz;\r\n output.roof = select(0.0, select(${wallOpacity.toFixed(8)}, ${roofOpacity.toFixed(8)}, input.normal.y >= 0.5), ((${Boolean(material.roofTexture)} && input.normal.y >= 0.5) ||\r\n (${Boolean(material.wallTexture)} && abs(input.normal.y) < 0.5)) && !highlighted);\r\n `;\r\n}\r\n", "import { roofVertexShader } from './roofVertexShader.js';\r\n\r\nexport function materialVertexShader(material, sparkle, elevationWGSL, hasTerrain, textured, hasRoof) {\r\n const instanceOffset = material.instanced ? ' + input.instanceOffset.xyz' : '';\r\n return /* wgsl */ `\r\n struct Mesh {\r\n worldMatrix: mat4x4<f32>,\r\n baseColor: vec4<f32>,\r\n material: vec4<f32>,\r\n emissive: vec4<f32>,\r\n terrain: vec4<f32>,\r\n highlight: vec4<f32>,\r\n cutout: vec4<f32>,\r\n };\r\n struct Frame {\r\n viewMatrix: mat4x4<f32>,\r\n projectionMatrix: mat4x4<f32>,\r\n roofMatrix: mat4x4<f32>,\r\n lightDirection: vec4<f32>,\r\n skyDirection: vec4<f32>,\r\n atmosphereTint: vec4<f32>,\r\n };\r\n @group(0) @binding(0) var<uniform> u: Mesh;\r\n @group(0) @binding(1) var<uniform> frame: Frame;\r\n struct Solar { matrix: mat4x4<f32>, params: vec4<f32> };\r\n @group(1) @binding(0) var<uniform> solar: Solar;\r\n ${hasTerrain ? /* wgsl */ `@group(0) @binding(2) var dem: texture_2d<f32>;${elevationWGSL}` : ''}\r\n struct VertexInput {\r\n @location(0) position: vec3<f32>,\r\n @location(1) normal: vec3<f32>,\r\n ${material.instanced ? '@location(4) instanceOffset: vec4<f32>,' : ''}\r\n ${material.vertexColors ? '@location(2) color: vec3<f32>,' : ''}\r\n ${textured ? '@location(3) uv: vec2<f32>,' : ''}\r\n };\r\n struct VertexOutput {\r\n @builtin(position) position: vec4<f32>,\r\n @location(0) color: vec3<f32>,\r\n @location(1) normal: vec3<f32>,\r\n @location(2) viewPosition: vec3<f32>,\r\n @location(6) shadowPosition: vec4<f32>,\r\n @location(7) worldPosition: vec3<f32>,\r\n ${sparkle ? '@location(8) localPosition: vec3<f32>,' : ''}\r\n ${textured ? '@location(3) uv: vec2<f32>,' : ''}\r\n ${hasRoof ? '@location(4) roofUv: vec2<f32>, @location(5) roof: f32,' : ''}\r\n };\r\n @vertex fn vertexMain(input: VertexInput, @builtin(vertex_index) vertexIndex: u32) -> VertexOutput {\r\n var output: VertexOutput;\r\n var position = input.position${instanceOffset};\r\n ${hasTerrain ? 'position.y = elevation(u.terrain.xy + input.uv * u.terrain.z, u.terrain.w) - u.terrain.w;' : ''}\r\n let featureVertex = f32(vertexIndex)${material.instanced ? ' + input.instanceOffset.w' : ''};\r\n let highlighted = featureVertex >= u.highlight.x && featureVertex < u.highlight.y;\r\n output.color = ${material.vertexColors\r\n ? 'select(input.color, vec3<f32>(72.0 / 255.0, 217.0 / 255.0, 1.0), highlighted)'\r\n : 'u.baseColor.rgb'};\r\n // Inverse-transpose from cofactors; the camera view matrix is orthonormal.\r\n let m = mat3x3<f32>(u.worldMatrix[0].xyz, u.worldMatrix[1].xyz, u.worldMatrix[2].xyz);\r\n let normal = (cross(m[1], m[2]) * input.normal.x + cross(m[2], m[0]) * input.normal.y +\r\n cross(m[0], m[1]) * input.normal.z) / determinant(m);\r\n output.normal = (frame.viewMatrix * vec4<f32>(normal, 0.0)).xyz;\r\n let world = u.worldMatrix * vec4<f32>(position, 1.0);\r\n output.shadowPosition = solar.matrix * world;\r\n output.worldPosition = world.xyz / world.w;\r\n ${sparkle ? `output.localPosition = input.position${instanceOffset};` : ''}\r\n let viewPosition = frame.viewMatrix * world;\r\n output.viewPosition = viewPosition.xyz;\r\n ${textured ? 'output.uv = input.uv;' : ''}\r\n ${hasRoof ? roofVertexShader(material) : ''}\r\n output.position = frame.projectionMatrix * viewPosition;\r\n return output;\r\n }\r\n `;\r\n}\r\n", "export function materialBaseShader(material, hasBase, hasRoof) {\r\n return /* wgsl */ `\r\n var normal = normalize(input.normal) * select(-1.0, 1.0, frontFacing);\r\n let texel = ${hasBase ? 'textureSample(baseTexture, baseTextureSampler, input.uv)' : 'vec4<f32>(1.0)'};\r\n let alpha = u.material.z * texel.a;\r\n ${material.alphaMode === 'MASK' ? 'if (alpha < u.material.w) { discard; }' : ''}\r\n ${material.alphaMode === 'BLEND' ? 'if (alpha < 0.01) { discard; }' : ''}\r\n var base = ${material.vertexColors ? 'toLinear(min(input.color, vec3<f32>(1.0)))' : 'input.color'} *\r\n ${material.baseTexture?.srgb ? 'texel.rgb' : 'toLinear(texel.rgb)'};\r\n ${hasRoof ? /* wgsl */ `\r\n if (input.roof > 0.0 && all(input.roofUv >= vec2<f32>(0.0)) &&\r\n all(input.roofUv <= vec2<f32>(1.0))) {\r\n let roof = textureSampleLevel(roofTexture, roofTextureSampler, input.roofUv, 0.0);\r\n base = mix(base, toLinear(roof.rgb), roof.a * input.roof);\r\n }\r\n ` : ''}`;\r\n}\r\n", "import { materialBaseShader } from './materialBaseShader.js';\r\n\r\nexport function materialSurfaceShader(material, sparkle, hasBase, hasMetal, hasEmissive, hasOcclusion, hasRoof) {\r\n return material.unlit ? /* wgsl */ `\r\n let rasterTexel = ${hasBase ? 'textureSample(baseTexture, baseTextureSampler, input.uv)' : 'vec4<f32>(input.color, 1.0)'};\r\n return vec4<f32>(toSRGB(toLinear(rasterTexel.rgb) * (frame.atmosphereTint.rgb * (0.55 + 0.45 * sunlight) + artificial)), ${material.alphaMode === 'BLEND' ? 'u.material.z * rasterTexel.a' : '1.0'});\r\n ` : /* wgsl */ `${materialBaseShader(material, hasBase, hasRoof)}\r\n let mr = ${hasMetal ? 'textureSample(metalTexture, metalTextureSampler, input.uv)' : 'vec4<f32>(1.0)'};\r\n let metal = clamp(u.material.x * mr.b, 0.0, 1.0);\r\n let rough = clamp(u.material.y * mr.g, 0.08, 1.0);\r\n let view = normalize(-input.viewPosition);\r\n let halfVector = normalize(view + frame.lightDirection.xyz);\r\n let nl = max(dot(normal, frame.lightDirection.xyz), 0.0) * frame.lightDirection.w * sunlight;\r\n let nv = max(dot(normal, view), 0.001);\r\n let nh = max(dot(normal, halfVector), 0.0);\r\n let vh = max(dot(view, halfVector), 0.0);\r\n let a2 = pow(rough, 4.0);\r\n let d = a2 / max(PI * pow(nh * nh * (a2 - 1.0) + 1.0, 2.0), 0.0001);\r\n let gv = nl * sqrt(nv * nv * (1.0 - a2) + a2);\r\n let gl = nv * sqrt(nl * nl * (1.0 - a2) + a2);\r\n let visibility = 0.5 / max(gv + gl, 0.0001);\r\n let f0 = mix(vec3<f32>(0.04), base, metal);\r\n let fresnel = f0 + (1.0 - f0) * pow(1.0 - vh, 5.0);\r\n let specular = d * visibility * fresnel;\r\n let diffuse = (1.0 - metal) * base / PI;\r\n let sky = dot(normal, frame.skyDirection.xyz) * 0.5 + 0.5;\r\n let ambient = mix(toLinear(vec3<f32>(0.455, 0.412, 0.322)), vec3<f32>(1.0), sky) * (2.0 / PI);\r\n let ao = ${hasOcclusion ? 'mix(1.0, textureSample(occlusionTexture, occlusionTextureSampler, input.uv).r, u.emissive.w)' : '1.0'};\r\n ${sparkle ? /* wgsl */ `\r\n let lattice = (fract(input.localPosition / 2.5) - 0.5) * 2.5;\r\n let pointGlow = (1.0 - smoothstep(0.16, 0.42, length(lattice))) * u.highlight.z;\r\n ` : ''}\r\n // Vertex colour components above 1 are self-lit (e.g. vehicle lamps): dim by day, bright at night.\r\n let glow = ${sparkle ? 'vec3<f32>(3.0, 2.6, 1.8) * pointGlow +' : ''}${material.vertexColors\r\n ? ' max(input.color - vec3<f32>(1.0), vec3<f32>(0.0)) * (0.3 + 5.0 * frame.skyDirection.w) +' : ''} u.emissive.rgb * ${hasEmissive\r\n ? material.emissiveTexture.srgb\r\n ? 'textureSample(emissiveTexture, emissiveTextureSampler, input.uv).rgb'\r\n : 'toLinear(textureSample(emissiveTexture, emissiveTextureSampler, input.uv).rgb)'\r\n : 'vec3<f32>(1.0)'};\r\n var color = ambient * base * (1.0 - metal) * ao +\r\n (diffuse + specular) * nl * toLinear(vec3<f32>(1.0, 0.937, 0.835)) * 3.0 + glow;\r\n ${material.vertexColors ? 'color = base * (ambient + toLinear(vec3<f32>(1.0, 0.937, 0.835)) * (3.0 / PI) * nl) + glow;' : ''}\r\n color = (color - glow) * frame.atmosphereTint.rgb + base * artificial * (1.0 - metal * 0.5) + glow;\r\n appearance(input.position.xy);\r\n return vec4<f32>(toSRGB(color), ${material.alphaMode === 'BLEND' ? 'alpha' : '1.0'});\r\n `;\r\n}\r\n", "import { defaultMaterial } from '../globals/defaultMaterial.js';\nimport { textureBinding } from '../textures/textureBinding.js';\nimport { validateRoofMaterial } from '../materials/validateRoofMaterial.js';\nimport { materialVertexShader } from './materialVertexShader.js';\nimport { materialSurfaceShader } from './materialSurfaceShader.js';\n\n/** Material WGSL and texture bindings, without a GPU device or Leaflet layer. */\nexport function materialShaders(material = defaultMaterial, sparkle = false, elevationWGSL = '') {\n const hasBase = Boolean(material.baseTexture);\n const hasMetal = Boolean(material.metalTexture);\n const hasEmissive = Boolean(material.emissiveTexture);\n const hasOcclusion = Boolean(material.occlusionTexture);\n const hasRoof = Boolean(material.roofTexture || material.wallTexture);\n validateRoofMaterial(material);\n const hasTerrain = Boolean(material.terrain);\n const textured = hasBase || hasMetal || hasEmissive || hasOcclusion || material.nightLight;\n const vertex = materialVertexShader(material, sparkle, elevationWGSL, hasTerrain, textured, hasRoof);\n const bindings = /* alloc */ [];\n const baseBinding = textureBinding(bindings, 'baseTexture', hasBase);\n const metalBinding = textureBinding(bindings, 'metalTexture', hasMetal);\n const emissiveBinding = textureBinding(bindings, 'emissiveTexture', hasEmissive);\n const occlusionBinding = textureBinding(bindings, 'occlusionTexture', hasOcclusion);\n const roofBinding = textureBinding(bindings, 'roofTexture', hasRoof);\n const fragment = /* wgsl */ `\n struct Mesh {\n worldMatrix: mat4x4<f32>,\n baseColor: vec4<f32>,\n material: vec4<f32>,\n emissive: vec4<f32>,\n terrain: vec4<f32>,\n highlight: vec4<f32>,\n cutout: vec4<f32>,\n };\n struct Frame {\n viewMatrix: mat4x4<f32>,\n projectionMatrix: mat4x4<f32>,\n roofMatrix: mat4x4<f32>,\n lightDirection: vec4<f32>,\n skyDirection: vec4<f32>,\n atmosphereTint: vec4<f32>,\n };\n struct Solar {\n matrix: mat4x4<f32>,\n params: vec4<f32>,\n };\n @group(0) @binding(0) var<uniform> u: Mesh;\n @group(0) @binding(1) var<uniform> frame: Frame;\n @group(1) @binding(0) var<uniform> solar: Solar;\n @group(1) @binding(1) var shadowTexture: texture_depth_2d;\n @group(1) @binding(2) var shadowSampler: sampler_comparison;\n @group(1) @binding(3) var<storage, read> lightGrid: array<vec4<f32>>;\n ${baseBinding}${metalBinding}${emissiveBinding}${occlusionBinding}${roofBinding}\n struct FragmentInput {\n @builtin(position) position: vec4<f32>,\n @location(0) color: vec3<f32>,\n @location(1) normal: vec3<f32>,\n @location(2) viewPosition: vec3<f32>,\n @location(6) shadowPosition: vec4<f32>,\n @location(7) worldPosition: vec3<f32>,\n ${sparkle ? '@location(8) localPosition: vec3<f32>,' : ''}\n ${textured ? '@location(3) uv: vec2<f32>,' : ''}\n ${hasRoof ? '@location(4) roofUv: vec2<f32>, @location(5) roof: f32,' : ''}\n };\n const PI: f32 = 3.14159265;\n fn toLinear(c: vec3<f32>) -> vec3<f32> {\n return select(c / 12.92, pow((c + vec3<f32>(0.055)) / 1.055, vec3<f32>(2.4)), c >= vec3<f32>(0.04045));\n }\n fn toSRGB(c: vec3<f32>) -> vec3<f32> {\n return select(c * 12.92, 1.055 * pow(max(c, vec3<f32>(0.0)), vec3<f32>(1.0 / 2.4)) - vec3<f32>(0.055), c >= vec3<f32>(0.0031308));\n }\n fn sunVisibility(position: vec4<f32>) -> f32 {\n let p = position.xyz / position.w;\n let uv = vec2<f32>(p.x * 0.5 + 0.5, 0.5 - p.y * 0.5);\n if (solar.params.x < 0.5 || any(uv < vec2<f32>(0.0)) || any(uv > vec2<f32>(1.0)) || p.z < 0.0 || p.z > 1.0) {\n return 1.0;\n }\n return textureSampleCompareLevel(shadowTexture, shadowSampler, uv, p.z - 0.0003);\n }\n fn gridLighting(position: vec3<f32>, normal: vec3<f32>, offset: u32) -> vec3<f32> {\n let grid = lightGrid[offset];\n if (grid.w < 1.0) { return vec3<f32>(0.0); }\n let cell = vec2<i32>(floor((position.xz - grid.xy) / grid.z));\n if (any(cell < vec2<i32>(0)) || cell.x >= i32(grid.w) || cell.y >= i32(lightGrid[offset + 1u].x)) {\n return vec3<f32>(0.0);\n }\n let header = lightGrid[offset + 2u + u32(cell.y) * u32(grid.w) + u32(cell.x)];\n var light = vec3<f32>(0.0);\n for (var i = 0u; i < u32(header.y); i++) {\n let source = lightGrid[offset + u32(header.x) + i * 2u];\n let colour = lightGrid[offset + u32(header.x) + i * 2u + 1u];\n let delta = source.xyz - position;\n let distance2 = max(dot(delta, delta), 1.0);\n let falloff = max(0.0, 1.0 - distance2 / (source.w * source.w));\n let lambert = max(0.0, dot(normal, delta / sqrt(distance2)));\n light += toLinear(colour.rgb) * colour.w * lambert * falloff * falloff / distance2;\n }\n return light;\n }\n fn localLighting(position: vec3<f32>, normal: vec3<f32>) -> vec3<f32> {\n if (frame.skyDirection.w <= 0.0) { return vec3<f32>(0.0); }\n var light = gridLighting(position, normal, 0u);\n let moving = u32(lightGrid[1].z);\n if (moving > 0u) { light += gridLighting(position, normal, moving); }\n return light * frame.skyDirection.w;\n }\n fn appearance(position: vec2<f32>) {\n // Screen-door dissolve keeps opaque depth writes and avoids sorting whole buildings as glass.\n let noise = fract(52.9829189 * fract(dot(floor(position), vec2<f32>(0.06711056, 0.00583715))));\n if (u.highlight.w < 1.0 && noise >= u.highlight.w) { discard; }\n }\n @fragment fn fragmentMain(input: FragmentInput, @builtin(front_facing) frontFacing: bool) -> @location(0) vec4<f32> {\n let cutoutDistance = distance(input.position.xy, u.cutout.xy);\n if (select((cutoutDistance < u.cutout.z), (cutoutDistance >= u.cutout.z), u.cutout.w > 0.0)) { discard; }\n ${material.nightLight ? /* wgsl */ `\n if (input.uv.x <= 2.0) {\n let radial = max(0.0, 1.0 - dot(input.uv, input.uv));\n let alpha = radial * radial * frame.skyDirection.w * 0.65;\n if (alpha < 0.005) { discard; }\n appearance(input.position.xy);\n return vec4<f32>(input.color, alpha);\n }\n ` : ''}\n let sunlight = sunVisibility(input.shadowPosition);\n let worldNormal = normalize(transpose(mat3x3<f32>(frame.viewMatrix[0].xyz, frame.viewMatrix[1].xyz, frame.viewMatrix[2].xyz)) * normalize(input.normal)) * select(-1.0, 1.0, frontFacing);\n let artificial = localLighting(input.worldPosition, worldNormal);\n ${materialSurfaceShader(material, sparkle, hasBase, hasMetal, hasEmissive, hasOcclusion, hasRoof)}\n }\n `;\n return /* alloc */ { vertex, fragment, bindings, textured, hasTerrain };\n}\n", "export async function reportCompilation(layer, pending) {\n let info, message;\n try {\n const infos = await Promise.all(pending);\n let errors = '', errorCount = 0;\n for (info of infos) {\n for (message of info.messages) if (message.type === 'error') errors += `${errorCount++ ? '\\n' : ''}${message.message}`;\n }\n if (errorCount) {\n layer.fire('error', /* alloc */ {\n error: /* alloc */ new Error(`Unable to compile Layer3D WGSL: ${errors}`),\n });\n }\n } catch (error) {\n layer.fire('error', /* alloc */ { error });\n }\n}\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\n\nimport { defaultMaterial } from '../globals/defaultMaterial.js';\nimport { vertexShader } from '../globals/vertexShader.js';\nimport { fragmentShader } from '../globals/fragmentShader.js';\nimport { pipelineLayout as sharedPipelineLayout } from '../globals/pipelineLayout.js';\nimport { elevationWGSL } from '../globals/elevationWGSL.js';\nimport { positionLayout } from '../globals/positionLayout.js';\nimport { normalLayout } from '../globals/normalLayout.js';\nimport { colorLayout } from '../globals/colorLayout.js';\nimport { uVLayout } from '../globals/uVLayout.js';\nimport { instanceLayout } from '../globals/instanceLayout.js';\nimport { createProgramLayout } from './createProgramLayout.js';\nimport { createProgramUniforms } from './createProgramUniforms.js';\n\n\nimport { materialShaders } from '../shaders/materialShaders.js';\n\nimport { reportCompilation } from '../gpu/reportShaderCompilation.js';\n\nexport function createProgram(layer, material = defaultMaterial) {\n const shaders = materialShaders(\n material,\n !!layer.options.nightSparkle,\n material.terrain ? elevationWGSL : ''\n );\n const vertex = rendererByLayer.get(layer).device.createShaderModule((\n vertexShader.code = shaders.vertex,\n vertexShader\n ));\n vertexShader.code = null;\n const fragment = rendererByLayer.get(layer).device.createShaderModule((\n fragmentShader.code = shaders.fragment,\n fragmentShader\n ));\n fragmentShader.code = null;\n reportCompilation(layer, /* alloc */ [\n vertex.getCompilationInfo(),\n fragment.getCompilationInfo()\n ]);\n const vertexBuffers = /* alloc */ [\n positionLayout,\n normalLayout,\n material.vertexColors ? colorLayout : null,\n shaders.textured ? uVLayout : null,\n ];\n if (material.instanced) vertexBuffers.push(instanceLayout);\n const bindGroupLayout = createProgramLayout(rendererByLayer.get(layer).device, shaders);\n const pipelineLayout = rendererByLayer.get(layer).device.createPipelineLayout((\n sharedPipelineLayout.bindGroupLayouts[0] = bindGroupLayout,\n sharedPipelineLayout.bindGroupLayouts[1] = rendererByLayer.get(layer).sunlight.layout,\n sharedPipelineLayout\n ));\n sharedPipelineLayout.bindGroupLayouts[0] = null;\n sharedPipelineLayout.bindGroupLayouts[1] = null;\n const uniforms = createProgramUniforms(material);\n return /* alloc */ {\n device: rendererByLayer.get(layer).device,\n vertex,\n fragment,\n bindings: shaders.bindings,\n vertexBuffers,\n bindGroupLayout,\n pipelineLayout,\n pipelineCache: /* alloc */ new Map(),\n cullMode: material.doubleSided ? 'none' : 'back',\n transparent: material.alphaMode === 'BLEND',\n depthWrite: material.depthWrite ?? material.alphaMode !== 'BLEND',\n depthTest: material.depthTest !== false,\n terrain: material.terrain,\n nightLight: Boolean(material.nightLight),\n nightSparkle: !!layer.options.nightSparkle,\n uniforms,\n _layerMaterial: material,\n };\n}\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\n\nimport { defaultMaterial } from '../globals/defaultMaterial.js';\nimport { meshBuffer } from '../globals/meshBuffer.js';\nimport { nextId } from '../globals/nextId.js';\n\n\n\nimport { emptyNode } from '../scene/createSceneNode.js';\nimport { createProgram } from '../materials/createProgram.js';\nimport { setParent } from '../scene/setParent.js';\nimport { update } from '../scene/scheduleSceneUpdate.js';\n\n/**\n * Add a non-indexed, vertex-coloured mesh from flat vec3 arrays `{ position, normal, color }` in layer-local metres.\n * `usage` adds GPUBufferUsage flags to the vertex buffers (e.g. STORAGE for compute passes).\n * A supplied `program` shares compiled shaders and pipelines across compatible meshes.\n */\n\nexport function createMesh(layer, data, material = defaultMaterial, usage = 0, program) {\n const { device } = rendererByLayer.get(layer), attributes = /* alloc */ {};\n let name, values, array, size, buffer;\n for ([name, values] of Object.entries(data)) {\n array = /* alloc */ new Float32Array(values);\n size = name === 'uv' ? 2 : 3;\n buffer = device.createBuffer((\n meshBuffer.size = Math.max(4, array.byteLength),\n meshBuffer.usage = GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST | usage,\n meshBuffer\n ));\n\n device.queue.writeBuffer(buffer, 0, array);\n attributes[name] = /* alloc */ { size, data: array, count: array.length / size, buffer };\n }\n const mesh = /* alloc */ {\n ...emptyNode(),\n device,\n geometry: /* alloc */ { device, attributes, drawRange: /* alloc */ { start: 0, count: attributes.position.count } },\n program: program || createProgram(layer, /* alloc */ { vertexColors: true, doubleSided: true, ...material }),\n id: nextId.value++, renderOrder: 0, extras: /* alloc */ {},\n };\n setParent(mesh, rootByLayer.get(layer));\n update(layer);\n return mesh;\n}\n", "import { coreQuadIndices } from '../globals/coreQuadIndices.js';\nimport { coreQuadUV } from '../globals/coreQuadUV.js';\nimport { coreWhite } from '../globals/coreWhite.js';\nimport { textureFor } from '../textures/nativeTextureFor.js';\nimport { putNativeMesh } from './putNativeMesh.js';\n\n\nexport function quadNativeMesh(state, key, image, corners, opacity) {\n const texture = textureFor(state, key, image);\n if (!texture) return;\n const indices = coreQuadIndices;\n const position = /* alloc */ [];\n const uv = /* alloc */ [];\n let index;\n for (index of indices) {\n position.push(...corners[index]);\n uv.push(coreQuadUV[index * 2], coreQuadUV[index * 2 + 1]);\n }\n return putNativeMesh(state, key, position, coreWhite, opacity, texture, uv);\n}\n", "export const locationByLayer = new WeakMap();\n", "import { locationByLayer } from '../weakmaps/locationByLayer.js';\n\nimport { radians } from '../globals/radians.js';\n\n\nexport function localPosition(state, latlng) {\n const { map, backend: layer } = state, crs = map.options.crs;\n const origin = crs.project(locationByLayer.get(layer)), point = crs.project(latlng);\n const metres = Math.cos(locationByLayer.get(layer).lat * radians);\n return /* alloc */ [(point.x - origin.x) * metres, 0, -(point.y - origin.y) * metres];\n}\n", "import { localPosition } from '../projections/localPosition.js';\n\nexport function boundsQuad(state, bounds) {\n const positions = /* alloc */ [];\n let i, corner;\n for (i = 0; i < 4; i++) {\n corner = i === 0 ? bounds.getNorthWest() : i === 1 ? bounds.getNorthEast()\n : i === 2 ? bounds.getSouthWest() : bounds.getSouthEast();\n positions.push(localPosition(state, corner));\n }\n return positions;\n}\n", "import { quadNativeMesh } from './quadNativeMesh.js';\nimport { boundsQuad } from '../geometry/boundsQuad.js';\n\nexport function syncImageOverlay(state) {\r\n const { source } = state;\r\n if (source._image?.complete && source._image.naturalWidth) {\r\n quadNativeMesh(state, 'image', source._image, boundsQuad(state, source.getBounds()), source.options.opacity ?? 1);\r\n }\r\n}\n", "export const coreMatrixKeys = Object.freeze([\n 'm11', 'm12', 'm13', 'm14', 'm21', 'm22', 'm23', 'm24',\n 'm31', 'm32', 'm33', 'm34', 'm41', 'm42', 'm43', 'm44',\n]);\n", "import { L } from '../globals/L.js';\nimport { radians } from '../globals/radians.js';\n\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\n\nexport function markerCameraIconPoint(marker, x, y) {\n let rotation = marker.options.rotation + (marker.options.rotateWithView ? mapGetBearing(marker._map) * radians : 0);\n if (marker.options.keepUpright && Math.cos(rotation) < 0) rotation += Math.PI;\n const scale = marker.options.scale;\n return /* alloc */ new L.Point((x * Math.cos(rotation) - y * Math.sin(rotation)) * scale,\n (x * Math.sin(rotation) + y * Math.cos(rotation)) * scale);\n}\n", "export function transformNativePoint(target, matrix, x, y, z, w) {\r\n target.x = matrix.m11 * x + matrix.m21 * y + matrix.m31 * z + matrix.m41 * w;\r\n target.y = matrix.m12 * x + matrix.m22 * y + matrix.m32 * z + matrix.m42 * w;\r\n target.z = matrix.m13 * x + matrix.m23 * y + matrix.m33 * z + matrix.m43 * w;\r\n target.w = matrix.m14 * x + matrix.m24 * y + matrix.m34 * z + matrix.m44 * w;\r\n return target;\r\n}\r\n", "export function markerImageBounds(state, key, image) {\r\n const options = state.source.options.icon.options;\r\n const dimensions = options[key === 'shadow' ? 'shadowSize' : 'iconSize'];\r\n const bounds = state.markerImageBounds ||= /* alloc */ [0, 0, 0, 0];\r\n bounds[0] = dimensions ? dimensions.x ?? dimensions[0] : image.naturalWidth;\r\n bounds[1] = dimensions ? dimensions.y ?? dimensions[1] : image.naturalHeight;\r\n const anchor = (key === 'shadow' && options.shadowAnchor) || options.iconAnchor;\r\n bounds[2] = anchor ? anchor.x ?? anchor[0] : Math.floor(bounds[0] / 2);\r\n bounds[3] = anchor ? anchor.y ?? anchor[1] : Math.floor(bounds[1] / 2);\r\n return bounds;\r\n}\r\n", "import { cameraByLayer } from '../weakmaps/cameraByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\n\nimport { coreMatrixKeys } from '../globals/coreMatrixKeys.js';\nimport { markerCameraIconPoint } from '../projections/markerCameraIconPoint.js';\n\nimport { localPosition } from '../projections/localPosition.js';\n\nimport { transformNativePoint } from '../transforms/transformNativePoint.js';\nimport { markerImageBounds } from './markerImageBounds.js';\n\nexport function markerQuadCorners(state, key, image) {\n const { source, map, backend: layer } = state;\n\n const position = localPosition(state, source.getLatLng());\n const size = map.getSize();\n const matrices = state.markerMatrices ||= /* alloc */ {\n root: /* alloc */ new DOMMatrix(),\n camera: /* alloc */ new DOMMatrix(),\n point: /* alloc */ { x: 0, y: 0, z: 0, w: 1 },\n };\n const root = matrices.root, camera = matrices.camera, point = matrices.point;\n const worldMatrix = rootByLayer.get(layer).worldMatrix, projection = cameraByLayer.get(layer).projectionViewMatrix;\n let i, keyName;\n for (i = 0; i < 16; i++) {\n keyName = coreMatrixKeys[i];\n root[keyName] = worldMatrix[i];\n camera[keyName] = projection[i];\n }\n transformNativePoint(point, root, position[0], position[1], position[2], 1);\n transformNativePoint(point, camera, point.x, point.y, point.z, point.w);\n const clipX = point.x, clipY = point.y, clipZ = point.z, clipW = point.w;\n camera.invertSelf();\n root.invertSelf();\n const [width, height, anchorX, anchorY] = markerImageBounds(state, key, image);\n const centerX = (clipX / clipW + 1) * size.x / 2, centerY = (1 - clipY / clipW) * size.y / 2;\n const left = centerX - anchorX;\n const top = centerY - anchorY;\n const corners = /* alloc */ [];\n let pointX, pointY, offset, x, y;\n for (i = 0; i < 4; i++) {\n pointX = left + (i % 2 ? width : 0);\n pointY = top + (i < 2 ? 0 : height);\n offset = markerCameraIconPoint(source, pointX - centerX, pointY - centerY);\n x = centerX + offset.x, y = centerY + offset.y;\n transformNativePoint(point, camera, x / size.x * 2 - 1, 1 - y / size.y * 2, clipZ / clipW, 1);\n transformNativePoint(point, root, point.x / point.w, point.y / point.w, point.z / point.w, 1);\n corners.push(/* alloc */ [point.x, point.y, point.z]);\n }\n return corners;\n}\n", "import { quadNativeMesh } from './quadNativeMesh.js';\nimport { markerQuadCorners } from '../geometry/markerQuadCorners.js';\n\nexport function syncMarker(state) {\n const { source } = state;\n let i, key, image, mesh;\n for (i = 0; i < 2; i++) {\n key = i ? 'icon' : 'shadow';\n image = i ? source._icon : source._shadow;\n if (!(image instanceof HTMLImageElement) || !image.complete || !image.naturalWidth) continue;\n mesh = quadNativeMesh(state, key, image, markerQuadCorners(state, key, image), source.options.opacity ?? 1);\n if (key === 'shadow' && mesh) mesh.renderOrder -= 100 * 1e6;\n }\n}\n", "export const geometryPixelStates = [];\n", "import { L } from '../globals/L.js';\nimport { visit } from './visitNativeCoordinates.js';\nimport { dashValues } from './dashValues.js';\nimport { circleGeometry } from './circleGeometry.js';\n\n/** Leaflet paths become flat triangles; pixel-sized strokes are rebuilt on zoom. */\nexport function nativeGeometry(source, map, point) {\n const fill = /* alloc */ [];\n const stroke = /* alloc */ [];\n const options = source.options;\n const width = Number(options.weight) || 0;\n const dash = dashValues(options);\n const context = /* alloc */ { fill, stroke, options, width, dash, point, map };\n if (source instanceof L.CircleMarker) {\n circleGeometry(source, context);\n } else {\n const closed = source instanceof L.Polygon;\n visit(context, source.getLatLngs(), closed);\n }\n return /* alloc */ { fill, stroke };\n}\n", "import { L } from '../globals/L.js';\nimport { polygon } from './polygon.js';\n\nexport function visit(context, coordinates, closed) {\n if (!coordinates.length) return;\n let child;\n if (coordinates[0] instanceof L.LatLng) polygon(context, /* alloc */ [coordinates], closed);\n else if (closed && coordinates[0][0] instanceof L.LatLng) polygon(context, coordinates, closed);\n else for (child of coordinates) visit(context, child, closed);\n}\n", "export function triangle(point, target, a, b, c) {\r\n return target.push(...point(a), ...point(b), ...point(c));\r\n}\r\n", "import { L } from '../globals/L.js';\nimport { triangle } from './appendNativeTriangle.js';\r\nimport { disk } from './disk.js';\r\n\r\nexport function segment(context, a, b, startCap, endCap) {\r\n const { options, width, stroke, point } = context;\r\n const radius = width / 2;\r\n const length = a.distanceTo(b);\r\n if (!length) return;\r\n const direction = b.subtract(a).divideBy(length);\r\n const normal = /* alloc */ new L.Point(-direction.y * radius, direction.x * radius);\r\n if (options.lineCap === 'square') {\r\n if (startCap) a = a.subtract(direction.multiplyBy(radius));\r\n if (endCap) b = b.add(direction.multiplyBy(radius));\r\n }\r\n triangle(point, stroke, a.add(normal), a.subtract(normal), b.add(normal));\r\n triangle(point, stroke, b.add(normal), a.subtract(normal), b.subtract(normal));\r\n if (options.lineCap === 'round') {\r\n if (startCap) disk(point, a, radius, stroke);\r\n if (endCap) disk(point, b, radius, stroke);\r\n }\r\n}\r\n", "export const tau = 2 * Math.PI;\r\n", "import { tau } from '../globals/tau.js';\nimport { L } from '../globals/L.js';\nexport function diskAt(center, radius, radiusY, count, index) {\r\n return /* alloc */ new L.Point(center.x + radius * Math.cos(index * tau / count),\r\n center.y + radiusY * Math.sin(index * tau / count));\r\n}\r\n", "import { triangle } from './appendNativeTriangle.js';\nimport { diskAt } from './diskAt.js';\n\nexport function disk(point, center, radius, target, radiusY = radius) {\n if (!(radius > 0) || !(radiusY > 0)) return;\n const count = Math.max(12, Math.min(128, Math.ceil(Math.PI * Math.sqrt(radius))));\n let i;\n for (i = 0; i < count; i++) {\n triangle(point, target, center, diskAt(center, radius, radiusY, count, i), diskAt(center, radius, radiusY, count, i + 1));\n }\n}\n", "import { L } from '../globals/L.js';\r\nimport { triangle } from './appendNativeTriangle.js';\r\nimport { disk } from './disk.js';\r\n\r\nexport function lineJoin(context, points, i, b, length) {\r\n const { options, width, point, stroke } = context;\r\n const a = points[i], radius = width / 2;\r\n if (options.lineJoin === 'round') {\r\n disk(point, a, radius, stroke);\r\n return;\r\n }\r\n const previous = a.subtract(points[(i + points.length - 1) % points.length]);\r\n const previousLength = Math.hypot(previous.x, previous.y);\r\n if (!previousLength || !length) return;\r\n const incoming = previous.divideBy(previousLength), outgoing = b.subtract(a).divideBy(length);\r\n const side = incoming.x * outgoing.y - incoming.y * outgoing.x > 0 ? -1 : 1;\r\n const n1 = /* alloc */ new L.Point(-incoming.y * side, incoming.x * side);\r\n const n2 = /* alloc */ new L.Point(-outgoing.y * side, outgoing.x * side);\r\n const from = a.add(n1.multiplyBy(radius)), to = a.add(n2.multiplyBy(radius));\r\n const denominator = 1 + n1.x * n2.x + n1.y * n2.y;\r\n const miter = denominator > 0 ? n1.add(n2).multiplyBy(radius / denominator) : null;\r\n triangle(point, stroke, from, a, to);\r\n if (options.lineJoin === 'miter' && miter && Math.hypot(miter.x, miter.y) <= radius * 4) {\r\n triangle(point, stroke, from, a.add(miter), to);\r\n }\r\n}\r\n", "import { segment } from './segment.js';\r\n\r\nexport function dashedSegment(context, a, b, length, distance, period) {\r\n const dash = context.dash;\r\n let offset = 0, phase, index, end, delta;\r\n while (offset < length) {\r\n phase = ((distance + offset) % period + period) % period, index = 0;\r\n while (phase >= dash[index]) phase -= dash[index++];\r\n end = Math.min(length, offset + dash[index] - phase);\r\n if (index % 2 === 0) {\r\n delta = b.subtract(a).divideBy(length);\r\n segment(context, a.add(delta.multiplyBy(offset)), a.add(delta.multiplyBy(end)), true, true);\r\n }\r\n offset = end;\r\n }\r\n}\r\n", "import { segment } from './segment.js';\r\nimport { lineJoin } from './lineJoin.js';\r\nimport { dashedSegment } from './dashedSegment.js';\r\n\r\nexport function line(context, points, closed) {\r\n const { options, width, dash } = context;\r\n if (!options.stroke || width <= 0 || points.length < 2) return;\r\n let distance = Number(options.dashOffset) || 0;\r\n let period = 0, value, i, a, b, length;\r\n for (value of dash) period += value;\r\n for (i = 0; i < points.length - (closed ? 0 : 1); i++) {\r\n a = points[i], b = points[(i + 1) % points.length], length = a.distanceTo(b);\r\n if (!dash.length) {\r\n segment(context, a, b, !closed && i === 0, !closed && i === points.length - 2);\r\n if (closed || i > 0) lineJoin(context, points, i, b, length);\r\n } else {\r\n dashedSegment(context, a, b, length, distance, period);\r\n }\r\n distance += length;\r\n }\r\n}\r\n", "export function minimumX(ring) {\n let minimum = Infinity;\n let point;\n for (point of ring) minimum = Math.min(minimum, point.x);\n return minimum;\n}\n", "export function mergeHoles(source, target, start, width) {\r\n const middle = Math.min(start + width, source.length), end = Math.min(start + width * 2, source.length);\r\n let left = start, right = middle, output;\r\n for (output = start; output < end; output++) {\r\n if (left < middle && (right >= end || source[left].x <= source[right].x)) {\r\n target[output] = source[left++];\r\n } else {\r\n target[output] = source[right++];\r\n }\r\n }\r\n}\r\n", "import { minimumX } from './minimumX.js';\nimport { mergeHoles } from './mergeHoles.js';\n\nexport function sortHoles(holes) {\n if (holes.length < 2) return holes;\n const buffer = /* alloc */ new Array(holes.length);\n const entries = /* alloc */ [];\n let ring, width, start, previous, i;\n for (ring of holes) entries.push(/* alloc */ { ring, x: minimumX(ring) });\n let source = entries, target = buffer;\n for (width = 1; width < entries.length; width *= 2) {\n for (start = 0; start < entries.length; start += width * 2) {\n mergeHoles(source, target, start, width);\n }\n previous = source;\n source = target;\n target = previous;\n }\n for (i = 0; i < holes.length; i++) holes[i] = source[i].ring;\n return holes;\n}\n", "export function cross(a, b, c) {\r\n return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);\r\n}\r\n", "export function equal(a, b) {\r\n return a.x === b.x && a.y === b.y;\r\n}\r\n", "import { cross } from './cross.js';\nimport { equal } from './equal.js';\n\nexport function clean(ring) {\n let changed = true;\n let i, a, b, c;\n while (changed && ring.length > 3) {\n changed = false;\n for (i = 0; i < ring.length; i++) {\n a = ring[(i + ring.length - 1) % ring.length], b = ring[i], c = ring[(i + 1) % ring.length];\n if (equal(a, b) || Math.abs(cross(a, b, c)) < 1e-10) {\n ring.splice(i, 1); changed = true; break;\n }\n }\n }\n if (ring.length < 3) throw /* alloc */ new Error('Degenerate polygon ring');\n return ring;\n}\n", "/**\n * @returns {boolean} Whether the `{x, y}` points are in clockwise order.\n */\n\nexport function isClockWise(points) {\n let area = 0;\n let i, a, b;\n for (i = 0; i < points.length; i++) {\n a = points[i], b = points[(i + 1) % points.length];\n area += a.x * b.y - b.x * a.y;\n }\n return area < 0;\n}\n", "import { clean } from './clean.js';\r\nimport { isClockWise } from './isClockWise.js';\r\n\r\nexport function polygonRings(paths, vertices) {\r\n const rings = /* alloc */ [];\r\n let offset = 0, index, path, ring;\r\n for (index = 0; index < paths.length; index++) {\r\n path = paths[index];\r\n ring = clean(vertices.slice(offset, offset += path.length));\r\n if (isClockWise(ring) !== Boolean(index)) ring.reverse();\r\n rings.push(ring);\r\n }\r\n return rings;\r\n}\r\n", "export function inside(point, ring) {\n let result = false;\n let i, j, a, b;\n for (i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n a = ring[i], b = ring[j];\n if ((a.y > point.y) !== (b.y > point.y) &&\n point.x < (b.x - a.x) * (point.y - a.y) / (b.y - a.y) + a.x) result = !result;\n }\n return result;\n}\n", "import { inside } from './inside.js';\n\nexport function insideHole(point, rings) {\n let i;\n for (i = 1; i < rings.length; i++) if (inside(point, rings[i])) return true;\n return false;\n}\n", "export function on(p, q, r) {\r\n return Math.min(p.x, q.x) <= r.x && r.x <= Math.max(p.x, q.x) &&\r\n Math.min(p.y, q.y) <= r.y && r.y <= Math.max(p.y, q.y);\r\n}\r\n", "import { equal } from './equal.js';\r\nimport { cross } from './cross.js';\r\nimport { on } from './on.js';\r\n\r\nexport function intersects(a, b, c, d) {\r\n if (equal(a, c) || equal(a, d) || equal(b, c) || equal(b, d)) return false;\r\n const abC = cross(a, b, c), abD = cross(a, b, d), cdA = cross(c, d, a), cdB = cross(c, d, b);\r\n return abC * abD < 0 && cdA * cdB < 0 ||\r\n abC === 0 && on(a, b, c) || abD === 0 && on(a, b, d) ||\r\n cdA === 0 && on(c, d, a) || cdB === 0 && on(c, d, b);\r\n}\r\n", "import { intersects } from './intersects.js';\n\nexport function crossesRing(a, b, ring) {\n let i;\n for (i = 0; i < ring.length; i++) {\n if (intersects(a, b, ring[i], ring[(i + 1) % ring.length])) return true;\n }\n return false;\n}\n", "import { crossesRing } from './crossesRing.js';\n\nexport function crossesBoundary(a, b, polygon, rings) {\n if (crossesRing(a, b, polygon)) return true;\n let i;\n for (i = 1; i < rings.length; i++) if (crossesRing(a, b, rings[i])) return true;\n return false;\n}\n", "import { inside } from './inside.js';\r\nimport { insideHole } from './insideHole.js';\r\nimport { crossesBoundary } from './crossesBoundary.js';\r\n\r\nexport function connectHole(polygon, hole, rings, mid) {\r\n let h2 = -1, p2 = -1, distance = Infinity, h, p, a, b, d;\r\n for (h = 0; h < hole.length; h++) for (p = 0; p < polygon.length; p++) {\r\n a = hole[h], b = polygon[p], d = (a.x - b.x) ** 2 + (a.y - b.y) ** 2;\r\n if (d >= distance) continue;\r\n mid.x = (a.x + b.x) / 2; mid.y = (a.y + b.y) / 2;\r\n if (!inside(mid, rings[0]) || insideHole(mid, rings)) continue;\r\n if (crossesBoundary(a, b, polygon, rings)) continue;\r\n h2 = h; p2 = p; distance = d;\r\n }\r\n if (h2 < 0) throw /* alloc */ new Error('Unable to connect polygon hole');\r\n return /* alloc */ [...polygon.slice(0, p2 + 1), ...hole.slice(h2), ...hole.slice(0, h2 + 1),\r\n polygon[p2], ...polygon.slice(p2 + 1)];\r\n}\r\n", "import { equal } from './equal.js';\nimport { cross } from './cross.js';\n\nexport function containsVertex(polygon, a, b, c) {\n let p;\n for (p of polygon) {\n if (!equal(p, a) && !equal(p, b) && !equal(p, c) &&\n cross(a, b, p) >= 0 && cross(b, c, p) >= 0 && cross(c, a, p) >= 0) return true;\n }\n return false;\n}\n", "import { cross } from './cross.js';\r\nimport { containsVertex } from './containsVertex.js';\r\n\r\nexport function clipEars(polygon) {\r\n const result = /* alloc */ [];\r\n let clipped, i, a, b, c, p;\r\n while (polygon.length > 3) {\r\n clipped = false;\r\n for (i = 0; i < polygon.length; i++) {\r\n a = polygon[(i + polygon.length - 1) % polygon.length], b = polygon[i], c = polygon[(i + 1) % polygon.length];\r\n if (cross(a, b, c) <= 1e-10) continue;\r\n if (containsVertex(polygon, a, b, c)) continue;\r\n result.push(/* alloc */ [a.index, b.index, c.index]); polygon.splice(i, 1); clipped = true; break;\r\n }\r\n if (!clipped) throw /* alloc */ new Error('Unable to triangulate polygon: invalid or self-intersecting rings');\r\n }\r\n if (cross(...polygon) > 1e-10) {\r\n const triangle = /* alloc */ [];\r\n for (p of polygon) triangle.push(p.index);\r\n result.push(triangle);\r\n }\r\n return result;\r\n}\r\n", "export function area(ring) {\n let sum = 0;\n let i, p, q;\n for (i = 0; i < ring.length; i++) {\n p = ring[i], q = ring[(i + 1) % ring.length];\n sum += p.x * q.y - q.x * p.y;\n }\n return Math.abs(sum) / 2;\n}\n", "import { area } from './area.js';\r\nimport { cross } from './cross.js';\r\n\r\nexport function validateArea(rings, vertices, result) {\r\n let holeArea = 0, actual = 0, i, triangle;\r\n for (i = 1; i < rings.length; i++) holeArea += area(rings[i]);\r\n const expected = area(rings[0]) - holeArea;\r\n for (triangle of result) actual += cross(vertices[triangle[0]], vertices[triangle[1]], vertices[triangle[2]]) / 2;\r\n if (expected <= 0 || Math.abs(actual - expected) > Math.max(1e-7, expected * 1e-8)) throw /* alloc */ new Error('Polygon triangulation area mismatch');\r\n}\r\n", "import { geometryEmpty } from '../globals/geometryEmpty.js';\nimport { sortHoles } from './sortHoles.js';\nimport { polygonRings } from './polygonRings.js';\nimport { connectHole } from './connectHole.js';\nimport { clipEars } from './clipEars.js';\nimport { validateArea } from './validateArea.js';\n\n\n/**\n * Triangulates a polygon given as `{x, y}` points.\n * Rings omit the repeated closing point; winding is normalized internally.\n * Vertex indices remain relative to the original inputs after duplicate/collinear\n * cleanup. Hole bridges duplicate endpoints, not source vertices.\n * @param {Object[]} contour Outer boundary.\n * @param {Object[][]} [holes] Interior boundaries.\n *\n * @returns {number[][]} Triangles as indices in `[...contour, ...holes.flat()]`.\n */\n\nexport function triangulate(contour, holes = geometryEmpty) {\n const paths = /* alloc */ [contour, ...holes];\n const points = paths.flat();\n let p, index, hole;\n for (p of points) {\n if (!Number.isFinite(p.x) || !Number.isFinite(p.y)) throw /* alloc */ new Error('Invalid polygon coordinates');\n }\n // Translate near the origin to avoid cancellation with geographic coordinates.\n const vertices = /* alloc */ [];\n for (index = 0; index < points.length; index++) {\n p = points[index];\n vertices.push(/* alloc */ { x: p.x - contour[0].x, y: p.y - contour[0].y, index });\n }\n // Remove zero-area corners before connecting holes; keep original vertex indices.\n const rings = polygonRings(paths, vertices);\n let polygon = rings[0].slice();\n // A bridge must stay inside the outer boundary, outside every hole, and cross no edge.\n // ponytail: quadratic ear clipping for building footprints; use spatial indexing for large rings.\n const holesToConnect = sortHoles(rings.slice(1));\n const mid = holesToConnect.length ? /* alloc */ { x: 0, y: 0 } : null;\n for (hole of holesToConnect) {\n polygon = connectHole(polygon, hole, rings, mid);\n }\n // Clip a convex corner only when no other vertex is inside/on its triangle.\n const result = clipEars(polygon);\n // Reject incomplete coverage instead of silently emitting a partial roof.\n validateArea(rings, vertices, result);\n return result;\n}\n", "import { triangle } from './appendNativeTriangle.js';\nimport { line } from './line.js';\nimport { triangulate } from '../triangulation/triangulate.js';\n\nexport function polygon(context, rings, closed) {\n const { options, fill, point, map } = context;\n const projected = /* alloc */ [];\n let ring, path, latlng, indices;\n for (ring of rings) {\n path = /* alloc */ [];\n for (latlng of ring) path.push(map.project(latlng));\n projected.push(path);\n }\n if (closed && options.fill && projected[0]?.length >= 3) {\n const valid = /* alloc */ [];\n for (ring of projected) if (ring.length >= 3) valid.push(ring);\n const vertices = valid.flat();\n for (indices of triangulate(valid[0], valid.slice(1))) {\n triangle(point, fill, vertices[indices[0]], vertices[indices[1]], vertices[indices[2]]);\n }\n }\n for (ring of projected) line(context, ring, closed);\n}\n", "export function dashValues(options) {\r\n const values = Array.isArray(options.dashArray) ? options.dashArray :\r\n String(options.dashArray || '').trim().split(/[ ,]+/);\r\n const dash = /* alloc */ [];\r\n let value, allZero = true;\r\n for (value of values) dash.push(Number(value));\r\n for (value of dash) {\r\n if (!Number.isFinite(value) || value < 0) throw /* alloc */ new Error('Invalid Leaflet dashArray');\r\n if (value !== 0) allZero = false;\r\n }\r\n if (allZero) dash.length = 0;\r\n if (dash.length % 2) dash.push(...dash);\r\n return dash;\r\n}\r\n", "import { L } from '../globals/L.js';\r\nimport { disk } from './disk.js';\r\nimport { circleAt } from './circleAt.js';\r\nimport { line } from './line.js';\r\nimport { triangle } from './appendNativeTriangle.js';\r\n\r\nexport function circleGeometry(source, context) {\r\n const { map, point, fill, stroke, options, dash, width } = context;\r\n const center = map.project(source.getLatLng());\r\n let radius = source.getRadius(), radiusY = radius, index, i;\r\n if (source instanceof L.Circle) {\r\n source._project();\r\n const projected = source._point.add(map.getPixelOrigin());\r\n center.x = projected.x;\r\n center.y = projected.y;\r\n radius = source._radius;\r\n radiusY = source._radiusY || radius;\r\n }\r\n if (options.fill) disk(point, center, radius, fill, radiusY);\r\n const count = Math.max(12, Math.min(128, Math.ceil(Math.PI * Math.sqrt(Math.max(radius, radiusY)))));\r\n if (dash.length) {\r\n const points = /* alloc */ [];\r\n for (index = 0; index < count; index++) points.push(circleAt(center, radius, radiusY, count, index));\r\n line(context, points, true);\r\n }\r\n else if (options.stroke && width > 0) {\r\n for (i = 0; i < count; i++) {\r\n triangle(point, stroke, circleAt(center, radius, radiusY, count, i, width / 2),\r\n circleAt(center, radius, radiusY, count, i, -width / 2), circleAt(center, radius, radiusY, count, i + 1, width / 2));\r\n triangle(point, stroke, circleAt(center, radius, radiusY, count, i + 1, width / 2),\r\n circleAt(center, radius, radiusY, count, i, -width / 2), circleAt(center, radius, radiusY, count, i + 1, -width / 2));\r\n }\r\n }\r\n}\r\n", "import { tau } from '../globals/tau.js';\nimport { L } from '../globals/L.js';\nexport function circleAt(center, radius, radiusY, count, index, offset = 0) {\r\n const angle = index * tau / count;\r\n return /* alloc */ new L.Point(center.x + Math.max(0, radius + offset) * Math.cos(angle),\r\n center.y + Math.max(0, radiusY + offset) * Math.sin(angle));\r\n}\r\n", "import { localPosition } from './localPosition.js';\n\nexport function localPixel(state, point) {\r\n return localPosition(state, state.map.unproject(point));\r\n}\n", "import { geometryPixelStates } from '../globals/geometryPixelStates.js';\n\nimport { localPixel } from './localPixel.js';\n\nexport function localPixelForGeometry(point) {\r\n return localPixel(geometryPixelStates[geometryPixelStates.length - 1], point);\r\n}\n", "export function toSRGB(value) {\n return value <= 0.0031308 ? value * 12.92 : 1.055 * value ** (1 / 2.4) - 0.055;\n}\n", "export function channel(n, h, l, a) {\n const k = (n + h * 12) % 12;\n return l - a * Math.max(-1, Math.min(k - 3, 9 - k, 1));\n}\n", "import { toSRGB } from \"./toSRGB.js\";\nimport { channel } from \"./hslChannel.js\";\n\n/**\n * HSL inputs are linear-space to preserve the original building styling.\n * Numeric/CSS/RGB inputs are already sRGB; CSS alpha is not used for extrusion.\n * @param {number|string|Object} value 0xRRGGBB, CSS color, {r,g,b}, or {h,s,l} in 0..1.\n * @returns {Object} sRGB {r,g,b} components in 0..1.\n */\n\nexport function parseColor(value) {\n if (value && typeof value === 'object' && 'h' in value) {\n const a = value.s * Math.min(value.l, 1 - value.l);\n return /* alloc */ {\n r: toSRGB(channel(0, value.h, value.l, a)),\n g: toSRGB(channel(8, value.h, value.l, a)),\n b: toSRGB(channel(4, value.h, value.l, a))\n };\n }\n if (value && typeof value === 'object' && 'r' in value) {\n return value;\n }\n if (typeof value === 'number') {\n return /* alloc */ {\n r: (value >> 16 & 255) / 255,\n g: (value >> 8 & 255) / 255,\n b: (value & 255) / 255,\n };\n }\n if (typeof value !== 'string' || !CSS.supports('color', value)) {\n throw /* alloc */ new Error('Invalid 3D color');\n }\n const context = document.createElement('canvas').getContext('2d');\n context.fillStyle = value;\n context.fillRect(0, 0, 1, 1);\n const [r, g, b] = context.getImageData(0, 0, 1, 1).data;\n return /* alloc */ {\n r: r / 255,\n g: g / 255,\n b: b / 255\n };\n}\n", "import { geometryPixelStates } from '../globals/geometryPixelStates.js';\n\n\nimport { nativeGeometry } from '../geometry/nativeGeometry.js';\nimport { localPixelForGeometry } from '../projections/localPixelForGeometry.js';\nimport { parseColor } from '../colors/parseColor.js';\nimport { putNativeMesh } from './putNativeMesh.js';\n\nexport function syncVectorLayer(state) {\n const { source } = state;\n geometryPixelStates.push(state);\n let geometry;\n try {\n geometry = nativeGeometry(source, state.map, localPixelForGeometry);\n } finally {\n geometryPixelStates.pop();\n }\n const { fill, stroke } = geometry;\n let i, key, positions, color, opacity, r, g, b;\n for (i = 0; i < 2; i++) {\n key = i ? 'stroke' : 'fill';\n positions = i ? stroke : fill;\n color = i ? source.options.color : source.options.fillColor || source.options.color;\n opacity = i ? source.options.opacity : source.options.fillOpacity;\n if (!positions.length) continue;\n ({ r, g, b } = parseColor(color));\n putNativeMesh(state, key, positions, /* alloc */ [r, g, b], opacity ?? 1);\n }\n}\n", "import { disposeMesh } from '../rendering/disposeMesh.js';\r\nimport { destroyTexture } from '../textures/destroyTexture.js';\r\n\r\nexport function pruneNativeResources(state) {\r\n const { meshes, textures, backend: layer } = state;\r\n let mesh, texture, key;\r\n for ([key, mesh] of meshes) {\r\n if (mesh._nativeUsed) continue;\r\n disposeMesh(layer, mesh);\r\n meshes.delete(key);\r\n texture = textures.get(key);\r\n if (texture) destroyTexture(layer, texture.texture);\r\n textures.delete(key);\r\n }\r\n for ([key, texture] of textures) {\r\n if (texture.used) continue;\r\n destroyTexture(layer, texture.texture);\r\n textures.delete(key);\r\n }\r\n}\r\n", "import { synchronizeNativeLayer } from './synchronizeNativeLayer.js';\r\n\r\nexport function beforeNativeRender(state) {\r\n try {\r\n synchronizeNativeLayer(state);\r\n } catch (error) {\r\n state.failed = true;\r\n state.source.fire('error', /* alloc */ { error });\r\n }\r\n}\r\n", "import { layersByLayer } from '../weakmaps/layersByLayer.js';\nimport { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { sceneByLayer } from '../weakmaps/sceneByLayer.js';\nimport { shadowMeshesByLayer } from '../weakmaps/shadowMeshesByLayer.js';\nimport { sharedByLayer } from '../weakmaps/sharedByLayer.js';\nimport { wantedRasterTilesByLayer } from '../weakmaps/wantedRasterTilesByLayer.js';\nimport { sunlightByMap } from '../weakmaps/sunlightByMap.js';\n\n\nimport { frameCommands } from '../globals/frameCommands.js';\nimport { nativeRenderByLayer } from '../weakmaps/nativeRenderByLayer.js';\n\n\nimport { synchronizeZoomView } from '../animations/synchronizeZoomView.js';\nimport { resizeRenderer } from './resizeRenderer.js';\nimport { updateMapCamera } from '../camera/updateMapCamera.js';\nimport { collectFrameMeshes } from './collectFrameMeshes.js';\nimport { updateRoofRaster } from '../textures/updateRoofRaster.js';\nimport { prepareFrameMeshes } from './prepareFrameMeshes.js';\nimport { prepareFrameUniforms } from './prepareFrameUniforms.js';\nimport { drawSceneMeshes } from './drawSceneMeshes.js';\nimport { updateWorldMatrix } from \"../transforms/updateWorldMatrix.js\";\nimport { renderSunlight } from '../shadows/renderSunlight.js';\nimport { cancelUpdate } from '../scene/cancelUpdate.js';\nimport { update } from '../scene/scheduleSceneUpdate.js';\nimport { pruneRasterTiles } from '../raster/pruneRasterTiles.js';\nimport { beforeNativeRender } from '../native/beforeNativeRender.js';\n\n/**\n * Rendering owner: CSS pixels -> scene metres -> perspective camera.\n * Lights and transparent sort centers are converted into the current camera space.\n * Without raster tiles, logical map projection supplies the same static alignment.\n */\n\nexport function render(layer) {\n cancelUpdate(layer);\n if (sharedByLayer.get(layer) !== layer || !rendererByLayer.get(layer)) return;\n const map = layer._map;\n const now = performance.now();\n const size = map.getSize();\n if (!size.x || !size.y) return;\n synchronizeZoomView(layer, now);\n resizeRenderer(layer, size);\n updateMapCamera(layer, size);\n updateWorldMatrix(sceneByLayer.get(layer));\n let sceneChanged = false;\n let sceneLayer, native;\n for (sceneLayer of layersByLayer.get(layer)) {\n native = nativeRenderByLayer.get(sceneLayer);\n if (!native) continue;\n beforeNativeRender(native);\n sceneChanged = true;\n }\n const sunlight = sunlightByMap.get(map);\n collectFrameMeshes(layer, sunlight, sceneChanged);\n const shadowMeshes = shadowMeshesByLayer.get(layer);\n const renderer = rendererByLayer.get(layer);\n const rasters = updateRoofRaster(layer, now);\n const meshes = renderer.frameMeshes ||= /* alloc */ [];\n meshes.length = 0;\n let appearing = prepareFrameMeshes(layer, rasters, now, meshes);\n const encoder = renderer.device.createCommandEncoder();\n prepareFrameUniforms(layer, meshes, shadowMeshes, sunlight);\n renderSunlight(layer, encoder, shadowMeshes, sunlight);\n drawSceneMeshes(layer, encoder, meshes);\n renderer.device.queue.writeBuffer(renderer.uniformBuffer, 0, renderer.uniformData, 0, renderer.uniformSlot * 64);\n renderer.device.queue.submit((\n frameCommands[0] = encoder.finish(),\n frameCommands\n ));\n frameCommands[0] = null;\n for (sceneLayer of layersByLayer.get(layer)) {\n if (wantedRasterTilesByLayer.get(sceneLayer)) appearing = pruneRasterTiles(sceneLayer) || appearing;\n }\n if (map._animatingZoom || appearing) update(layer);\n}\n", "import { frameByLayer } from '../weakmaps/frameByLayer.js';\nimport { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { sharedByLayer } from '../weakmaps/sharedByLayer.js';\n\nimport { pendingUpdates } from '../globals/pendingUpdates.js';\n\n\n\nimport { render } from '../rendering/render.js';\n\nexport function renderPendingUpdates() {\n const updates = /* alloc */ [...pendingUpdates];\n pendingUpdates.clear();\n let failure;\n let layer;\n for (layer of updates) {\n frameByLayer.set(layer, null);\n if (sharedByLayer.get(layer) !== layer || !rendererByLayer.get(layer)) continue;\n try {\n render(layer);\n } catch (error) {\n failure ||= error;\n }\n }\n if (failure) throw failure;\n}\n", "import { frameByLayer } from '../weakmaps/frameByLayer.js';\nimport { sharedByLayer } from '../weakmaps/sharedByLayer.js';\n\nimport { pendingUpdates } from '../globals/pendingUpdates.js';\n\n\nimport { render } from \"../rendering/render.js\";\n\nimport { renderPendingUpdates } from './renderPendingUpdates.js';\n\n/** Scene graph, shared camera and frame rendering. */\n/** Content changes: render once on the next animation frame. */\nexport function update(layer) {\n const shared = sharedByLayer.get(layer);\n if (!shared) return layer;\n if (shared !== layer) {\n update(shared);\n return layer;\n }\n if (frameByLayer.get(layer) != null) return layer;\n const first = pendingUpdates.values().next().value;\n pendingUpdates.add(layer);\n frameByLayer.set(layer, first ? frameByLayer.get(first) : requestAnimationFrame(renderPendingUpdates));\n return layer;\n}\n", "import { L } from '../globals/L.js';\nexport function hideTargets(state) {\n const { source } = state;\n const htmlIcon = source instanceof L.Marker && source.options.icon instanceof L.DivIcon;\n const icon = htmlIcon ? null : source._icon, shadow = htmlIcon ? null : source._shadow;\n let i, element;\n for (element of state.hidden) {\n if (element === icon || element === shadow) continue;\n element.classList.remove('leaflet-webgpu-target');\n state.hidden.delete(element);\n }\n for (i = 0; i < 2; i++) {\n element = i ? shadow : icon;\n if (!element || state.hidden.has(element)) continue;\n element.classList.add('leaflet-webgpu-target');\n state.hidden.add(element);\n }\n}\n", "import { sharedByLayer } from '../weakmaps/sharedByLayer.js';\n\n\n\nimport { nativeImageRefresh } from '../textures/nativeImageRefresh.js';\nimport { nativeImageError } from '../textures/nativeImageError.js';\nimport { removeImageState } from '../textures/removeImageState.js';\nimport { addImageState } from '../textures/addImageState.js';\nimport { update } from '../scene/scheduleSceneUpdate.js';\nimport { hideTargets } from './hideTargets.js';\n\nexport function refreshNativeLayer(state = this) {\n state.dirty = true;\n state.viewDirty = true;\n state.failed = false;\n hideTargets(state);\n const source = state.source;\n let i, image;\n for (image of state.images) {\n if (image === source._icon || image === source._shadow || image === source._image) continue;\n image.removeEventListener('load', nativeImageRefresh);\n image.removeEventListener('error', nativeImageError);\n removeImageState(image, state);\n state.images.delete(image);\n }\n for (i = 0; i < 3; i++) {\n image = i === 0 ? source._icon : i === 1 ? source._shadow : source._image;\n if (!(image instanceof HTMLImageElement) || state.images.has(image)) continue;\n state.images.add(image);\n addImageState(image, state);\n image.addEventListener('load', nativeImageRefresh);\n image.addEventListener('error', nativeImageError);\n }\n if (sharedByLayer.get(state.backend)) update(state.backend);\n}\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetLatLng(...args) { return nativeLayerMethod('setLatLng', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetLatLngs(...args) { return nativeLayerMethod('setLatLngs', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeAddLatLng(...args) { return nativeLayerMethod('addLatLng', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetRadius(...args) { return nativeLayerMethod('setRadius', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetStyle(...args) { return nativeLayerMethod('setStyle', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeRedraw(...args) { return nativeLayerMethod('redraw', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetIcon(...args) { return nativeLayerMethod('setIcon', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetUrl(...args) { return nativeLayerMethod('setUrl', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetBounds(...args) { return nativeLayerMethod('setBounds', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetOpacity(...args) { return nativeLayerMethod('setOpacity', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetZIndex(...args) { return nativeLayerMethod('setZIndex', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeSetZIndexOffset(...args) { return nativeLayerMethod('setZIndexOffset', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeBringToFront(...args) { return nativeLayerMethod('bringToFront', this, args); }\n", "import { nativeLayerMethod } from './nativeLayerMethod.js';\n\nexport function nativeBringToBack(...args) { return nativeLayerMethod('bringToBack', this, args); }\n", "import { nativeSetLatLng } from '../native/nativeSetLatLng.js';\nimport { nativeSetLatLngs } from '../native/nativeSetLatLngs.js';\nimport { nativeAddLatLng } from '../native/nativeAddLatLng.js';\nimport { nativeSetRadius } from '../native/nativeSetRadius.js';\nimport { nativeSetStyle } from '../native/nativeSetStyle.js';\nimport { nativeRedraw } from '../native/nativeRedraw.js';\nimport { nativeSetIcon } from '../native/nativeSetIcon.js';\nimport { nativeSetUrl } from '../native/nativeSetUrl.js';\nimport { nativeSetBounds } from '../native/nativeSetBounds.js';\nimport { nativeSetOpacity } from '../native/nativeSetOpacity.js';\nimport { nativeSetZIndex } from '../native/nativeSetZIndex.js';\nimport { nativeSetZIndexOffset } from '../native/nativeSetZIndexOffset.js';\nimport { nativeBringToFront } from '../native/nativeBringToFront.js';\nimport { nativeBringToBack } from '../native/nativeBringToBack.js';\n\nexport const nativeMethodHandlers = {\n setLatLng: nativeSetLatLng,\n setLatLngs: nativeSetLatLngs,\n addLatLng: nativeAddLatLng,\n setRadius: nativeSetRadius,\n setStyle: nativeSetStyle,\n redraw: nativeRedraw,\n setIcon: nativeSetIcon,\n setUrl: nativeSetUrl,\n setBounds: nativeSetBounds,\n setOpacity: nativeSetOpacity,\n setZIndex: nativeSetZIndex,\n setZIndexOffset: nativeSetZIndexOffset,\n bringToFront: nativeBringToFront,\n bringToBack: nativeBringToBack,\n};\n", "import { L } from '../globals/L.js';\nimport { sceneEmptyOptions } from '../globals/sceneEmptyOptions.js';\r\n\r\n\r\nexport function createLayer(options = sceneEmptyOptions) {\r\n return /* alloc */ new L.Layer(options);\r\n}\r\n", "export const sceneEmptyOptions = Object.freeze({});\n", "import { L } from '../globals/L.js';\nimport { nativeEventMaps } from '../weakmaps/nativeEventMaps.js';\n\n\nimport { raycast } from '../picking/raycast.js';\n\nimport { restoreNativeEvents } from './restoreNativeEvents.js';\nimport { handleNativeMapEvent } from './handleNativeMapEvent.js';\n\n/** One GPU hit test per map event, rather than one invisible SVG path per feature. */\nexport function nativeEvents(state) {\n const { map } = state;\n let context = nativeEventMaps.get(map);\n if (!context) {\n context = /* alloc */ {\n map, states: /* alloc */ new Set(), hovered: null,\n };\n const pointer = L.version.startsWith('2');\n context.move = pointer ? 'pointermove' : 'mousemove';\n context.out = pointer ? 'pointerout' : 'mouseout';\n context.over = pointer ? 'pointerover' : 'mouseover';\n context.descriptor = Object.getOwnPropertyDescriptor(map, '_fireDOMEvent');\n context.fireDOMEvent = map._fireDOMEvent;\n context.handle = handleNativeMapEvent;\n context.restore = restoreNativeEvents;\n nativeEventMaps.set(map, context);\n map._fireDOMEvent = handleNativeMapEvent;\n }\n context.states.add(state);\n state._nativeEventContext = context;\n}\n", "export const nativeEventMaps = new WeakMap();\n", "export const raycasterByLayer = new WeakMap();\n", "export const trafficByLayer = new WeakMap();\n", "export function mergeHits(source, target, start, width) {\r\n const middle = Math.min(start + width, source.length), end = Math.min(start + width * 2, source.length);\r\n let left = start, right = middle, output;\r\n for (output = start; output < end; output++) {\r\n if (left < middle && (right >= end || !(source[right].distance < source[left].distance))) {\r\n target[output] = source[left++];\r\n } else {\r\n target[output] = source[right++];\r\n }\r\n }\r\n}\r\n", "export function sortHits(hits) {\n if (hits.length < 2) return hits;\n const buffer = /* alloc */ new Array(hits.length);\n let source = hits, target = buffer;\n let width, start, previous, i;\n for (width = 1; width < hits.length; width *= 2) {\n for (start = 0; start < hits.length; start += width * 2) {\n mergeHits(source, target, start, width);\n }\n previous = source;\n source = target;\n target = previous;\n }\n if (source !== hits) for (i = 0; i < hits.length; i++) hits[i] = source[i];\n return hits;\n}\nimport { mergeHits } from './mergeHits.js';\n", "export function localRay(ray, mesh, origin, direction) {\r\n const inverse = /* alloc */ new DOMMatrix(mesh.worldMatrix).invertSelf();\r\n const inverseValues = inverse.toFloat64Array();\r\n let value, x, y, z, w;\r\n for (value of inverseValues) {\r\n if (!Number.isFinite(value)) throw /* alloc */ new Error('Singular 3D transform');\r\n }\r\n x = ray.origin[0], y = ray.origin[1], z = ray.origin[2];\r\n w = inverseValues[3] * x + inverseValues[7] * y + inverseValues[11] * z + inverseValues[15];\r\n origin[0] = (inverseValues[0] * x + inverseValues[4] * y + inverseValues[8] * z + inverseValues[12]) / w;\r\n origin[1] = (inverseValues[1] * x + inverseValues[5] * y + inverseValues[9] * z + inverseValues[13]) / w;\r\n origin[2] = (inverseValues[2] * x + inverseValues[6] * y + inverseValues[10] * z + inverseValues[14]) / w;\r\n x = ray.direction[0], y = ray.direction[1], z = ray.direction[2];\r\n direction[0] = inverseValues[0] * x + inverseValues[4] * y + inverseValues[8] * z;\r\n direction[1] = inverseValues[1] * x + inverseValues[5] * y + inverseValues[9] * z;\r\n direction[2] = inverseValues[2] * x + inverseValues[6] * y + inverseValues[10] * z;\r\n const directionLength = Math.hypot(...direction) || 1;\r\n direction[0] /= directionLength;\r\n direction[1] /= directionLength;\r\n direction[2] /= directionLength;\r\n}\r\n", "import { computeBounds } from '../geometry/computeBounds.js';\r\n\r\nexport function rayBounds(mesh, origin, direction) {\r\n if (!mesh.geometry.bounds) computeBounds(mesh.geometry);\r\n let near = 0, far = Infinity, i, a, b;\r\n for (i = 0; i < 3; i++) {\r\n if (Math.abs(direction[i]) < 1e-12) {\r\n if (origin[i] < mesh.geometry.bounds.min[i] || origin[i] > mesh.geometry.bounds.max[i]) {\r\n far = -Infinity;\r\n break;\r\n }\r\n } else {\r\n a = (mesh.geometry.bounds.min[i] - origin[i]) / direction[i], b = (mesh.geometry.bounds.max[i] - origin[i]) / direction[i];\r\n near = Math.max(near, Math.min(a, b));\r\n far = Math.min(far, Math.max(a, b));\r\n }\r\n }\r\n return !(far < near);\r\n}\r\n", "export function readTriangle(mesh, i, a, b, c) {\r\n const { position, index, instanceOffset } = mesh.geometry.attributes;\r\n const vertices = index?.count || position.count;\r\n const vertex = instanceOffset ? i % vertices : i;\r\n const offset = instanceOffset ? Math.floor(i / vertices) * instanceOffset.size : 0;\r\n const x = instanceOffset?.data[offset] ?? 0;\r\n const y = instanceOffset?.data[offset + 1] ?? 0;\r\n const z = instanceOffset?.data[offset + 2] ?? 0;\r\n const ai = (index ? index.data[vertex] : vertex) * position.size;\r\n const bi = (index ? index.data[vertex + 1] : vertex + 1) * position.size;\r\n const ci = (index ? index.data[vertex + 2] : vertex + 2) * position.size;\r\n a[0] = position.data[ai]; a[1] = position.data[ai + 1]; a[2] = position.data[ai + 2];\r\n b[0] = position.data[bi]; b[1] = position.data[bi + 1]; b[2] = position.data[bi + 2];\r\n c[0] = position.data[ci]; c[1] = position.data[ci + 1]; c[2] = position.data[ci + 2];\r\n if (instanceOffset) {\r\n a[0] = Math.fround(a[0] + x); a[1] = Math.fround(a[1] + y); a[2] = Math.fround(a[2] + z);\r\n b[0] = Math.fround(b[0] + x); b[1] = Math.fround(b[1] + y); b[2] = Math.fround(b[2] + z);\r\n c[0] = Math.fround(c[0] + x); c[1] = Math.fround(c[1] + y); c[2] = Math.fround(c[2] + z);\r\n }\r\n}\r\n", "export function hiddenLightHit(mesh, i, u, v, night) {\r\n if (!mesh.program.nightLight) return false;\r\n const { index, uv: { data: uv } } = mesh.geometry.attributes;\r\n const idA = index ? index.data[i] : i, idB = index ? index.data[i + 1] : i + 1, idC = index ? index.data[i + 2] : i + 2;\r\n const x = uv[idA * 2] * (1 - u - v) + uv[idB * 2] * u + uv[idC * 2] * v;\r\n const y = uv[idA * 2 + 1] * (1 - u - v) + uv[idB * 2 + 1] * u + uv[idC * 2 + 1] * v;\r\n return x <= 2 && (!night || x * x + y * y > 0.9);\r\n}\r\n", "import { hiddenLightHit } from './hiddenLightHit.js';\r\n\r\n/** Moller-Trumbore with the renderer's culling and light-halo rules. */\r\nexport function triangleDistance(mesh, i, a, b, c, origin, direction, night) {\r\n const ex = b[0] - a[0], ey = b[1] - a[1], ez = b[2] - a[2];\r\n const fx = c[0] - a[0], fy = c[1] - a[1], fz = c[2] - a[2];\r\n const px = direction[1] * fz - direction[2] * fy;\r\n const py = direction[2] * fx - direction[0] * fz;\r\n const pz = direction[0] * fy - direction[1] * fx;\r\n const det = ex * px + ey * py + ez * pz;\r\n if (mesh.program.cullMode === 'none' || mesh.program.cullFace === null\r\n ? Math.abs(det) < 1e-9 : det < 1e-9) return Infinity;\r\n const tx = origin[0] - a[0], ty = origin[1] - a[1], tz = origin[2] - a[2];\r\n const u = (tx * px + ty * py + tz * pz) / det;\r\n if (u < 0 || u > 1) return Infinity;\r\n const qx = ty * ez - tz * ey, qy = tz * ex - tx * ez, qz = tx * ey - ty * ex;\r\n const v = (direction[0] * qx + direction[1] * qy + direction[2] * qz) / det;\r\n if (v < 0 || u + v > 1) return Infinity;\r\n if (hiddenLightHit(mesh, i, u, v, night)) return Infinity;\r\n return (fx * qx + fy * qy + fz * qz) / det;\r\n}\r\n", "export function worldHit(ray, mesh, origin, direction, closest, faceIndex) {\r\n const x = direction[0] * closest + origin[0];\r\n const y = direction[1] * closest + origin[1];\r\n const z = direction[2] * closest + origin[2];\r\n const matrix = mesh.worldMatrix;\r\n const w = matrix[3] * x + matrix[7] * y + matrix[11] * z + matrix[15];\r\n const worldPoint = /* alloc */ [\r\n (matrix[0] * x + matrix[4] * y + matrix[8] * z + matrix[12]) / w,\r\n (matrix[1] * x + matrix[5] * y + matrix[9] * z + matrix[13]) / w,\r\n (matrix[2] * x + matrix[6] * y + matrix[10] * z + matrix[14]) / w,\r\n ];\r\n return /* alloc */ {\r\n faceIndex,\r\n object: mesh,\r\n point: worldPoint,\r\n distance: Math.hypot(worldPoint[0] - ray.origin[0], worldPoint[1] - ray.origin[1], worldPoint[2] - ray.origin[2])\r\n };\r\n}\r\n", "import { sortHits } from './sortHits.js';\r\nimport { localRay } from './localRay.js';\r\nimport { rayBounds } from './rayBounds.js';\r\nimport { readTriangle } from './readTriangle.js';\r\nimport { triangleDistance } from './triangleDistance.js';\r\nimport { worldHit } from './worldHit.js';\r\n\r\n/** Nearest triangle hit per mesh, sorted by world-space distance. */\r\nexport function intersectMeshes(ray, meshes, night = 0) {\r\n const hits = /* alloc */ [];\r\n const a = /* alloc */ [0, 0, 0], b = /* alloc */ [0, 0, 0], c = /* alloc */ [0, 0, 0];\r\n const origin = /* alloc */ [0, 0, 0], direction = /* alloc */ [0, 0, 0];\r\n let mesh, position, index, instanceOffset, vertices, closest, faceIndex, i, distance;\r\n for (mesh of meshes) {\r\n // Test locally, then compare distances in shared world space.\r\n localRay(ray, mesh, origin, direction);\r\n if (!rayBounds(mesh, origin, direction)) continue;\r\n ({ position, index, instanceOffset } = mesh.geometry.attributes);\r\n vertices = index?.count || position.count;\r\n closest = Infinity, faceIndex = void 0;\r\n for (i = 0; i < vertices * (instanceOffset?.count ?? 1); i += 3) {\r\n readTriangle(mesh, i, a, b, c);\r\n distance = triangleDistance(mesh, i, a, b, c, origin, direction, night);\r\n if (distance > 0 && distance < closest) {\r\n closest = distance; faceIndex = i / 3;\r\n }\r\n }\r\n if (faceIndex === undefined) continue;\r\n hits.push(worldHit(ray, mesh, origin, direction, closest, faceIndex));\r\n }\r\n return sortHits(hits);\r\n}\r\n", "/** Depth-first walk; a truthy callback result skips that node's descendants. */\n\nexport function traverse(node, callback, context) {\n if (callback(node, context)) return;\n let child;\n for (child of node.children) traverse(child, callback, context);\n}\n", "export function collectVisibleMesh(mesh, meshes) {\n if (!mesh.visible) return true;\n if (mesh.geometry && mesh._appearance !== 0) meshes.push(mesh);\n}\n", "/** Point and unit direction at distance `s` along `points` ([x, z, y?]) with cumulative `lengths`. */\n\nexport function along(points, lengths, s, target) {\n let i = 1, end = lengths.length - 1;\n let middle;\n while (i < end) {\n middle = i + Math.floor((end - i) / 2);\n if (lengths[middle] < s) i = middle + 1;\n else end = middle;\n }\n const a = points[i - 1], b = points[i], d = lengths[i] - lengths[i - 1] || 1;\n const t = (s - lengths[i - 1]) / d;\n target ||= /* alloc */ {};\n target.x = a[0] + (b[0] - a[0]) * t;\n target.y = (a[2] ?? 0) + ((b[2] ?? 0) - (a[2] ?? 0)) * t;\n target.z = a[1] + (b[1] - a[1]) * t;\n target.dx = (b[0] - a[0]) / d;\n target.dz = (b[1] - a[1]) / d;\n return target;\n}\n", "import { along } from '../geometry/interpolateRoute.js';\r\n\r\nexport function locateTraffic(state, trip, target) {\r\n const { points, lengths, length } = trip.lane;\r\n let distance = trip.distance + state.elapsed * trip.speed;\r\n distance -= length * Math.floor(distance / length);\r\n const position = along(points, lengths, distance, target);\r\n position.x -= position.dz * state.side;\r\n position.z += position.dx * state.side;\r\n return position;\r\n}\r\n", "import { locateTraffic } from './locateTraffic.js';\n\nexport function placeTraffic(state) {\n if (!state.mesh || !state.stale) return;\n state.stale = false;\n const { position, normal } = state.mesh.geometry.attributes;\n const target = state.position ||= /* alloc */ {};\n let i, trip, cx, y, cz, dx, dz, k, o, lx, lz, nx, nz;\n for (i = 0; i < state.trips.length; i++) {\n trip = state.trips[i];\n ({ x: cx, y, z: cz, dx, dz } = locateTraffic(state, trip, target));\n for (k = 0, o = i * state.stride; k < state.stride; k += 3, o += 3) {\n lx = state.template.position[k], lz = state.template.position[k + 2], nx = state.template.normal[k], nz = state.template.normal[k + 2];\n position.data[o] = cx - lx * dz - lz * dx;\n position.data[o + 1] = y + state.template.position[k + 1];\n position.data[o + 2] = cz + lx * dx - lz * dz;\n normal.data[o] = -nx * dz - nz * dx;\n normal.data[o + 1] = state.template.normal[k + 1];\n normal.data[o + 2] = nx * dx - nz * dz;\n }\n }\n}\n", "export function validateCameraInverse(matrix) {\r\n let column, row;\r\n for (column = 1; column <= 4; column++) {\r\n for (row = 1; row <= 4; row++) {\r\n if (!Number.isFinite(matrix[`m${column}${row}`])) throw /* alloc */ new Error('Singular 3D transform');\r\n }\r\n }\r\n}\r\n", "import { cameraByLayer } from '../weakmaps/cameraByLayer.js';\nimport { raycasterByLayer } from '../weakmaps/raycasterByLayer.js';\nimport { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\nimport { sceneByLayer } from '../weakmaps/sceneByLayer.js';\n\nimport { trafficByLayer } from '../weakmaps/trafficByLayer.js';\n\n\nimport { intersectMeshes } from '../collision/intersectMeshes.js';\nimport { traverse } from '../scene/traverse.js';\nimport { updateCamera } from '../camera/updateSceneCamera.js';\nimport { updateWorldMatrix } from '../transforms/updateWorldMatrix.js';\nimport { collectVisibleMesh } from './collectVisibleMesh.js';\nimport { placeTraffic } from '../traffic/placeTraffic.js';\nimport { validateCameraInverse } from './validateCameraInverse.js';\n\n/** Raycasting, hover/click highlight and tooltips. */\n/**\n * Finds the objects under a mouse or pointer event, nearest first.\n *\n * @param {MouseEvent} event\n * @param {Object[]} [objects] Defaults to this layer's root children, not all map layers.\n * @param {boolean} [recursive] Also test the descendants of `objects`.\n * @returns {Object[]} Nearest hit per mesh: object, shared-world point/distance and triangle faceIndex.\n */\n\nexport function raycast(layer, event, objects = rootByLayer.get(layer).children, recursive = true) {\n if (!rendererByLayer.get(layer)) {\n return /* alloc */ [];\n }\n const traffic = trafficByLayer.get(layer);\n if (traffic) placeTraffic(traffic);\n const rect = layer._map.getContainer().getBoundingClientRect();\n updateWorldMatrix(sceneByLayer.get(layer));\n updateCamera(cameraByLayer.get(layer));\n // Unproject the mouse (-1..1) into a world-space ray from the camera.\n const inverseCamera = raycasterByLayer.get(layer).inverse;\n const matrix = cameraByLayer.get(layer).projectionViewMatrix;\n inverseCamera.m11 = matrix[0], inverseCamera.m12 = matrix[1], inverseCamera.m13 = matrix[2], inverseCamera.m14 = matrix[3];\n inverseCamera.m21 = matrix[4], inverseCamera.m22 = matrix[5], inverseCamera.m23 = matrix[6], inverseCamera.m24 = matrix[7];\n inverseCamera.m31 = matrix[8], inverseCamera.m32 = matrix[9], inverseCamera.m33 = matrix[10], inverseCamera.m34 = matrix[11];\n inverseCamera.m41 = matrix[12], inverseCamera.m42 = matrix[13], inverseCamera.m43 = matrix[14], inverseCamera.m44 = matrix[15];\n inverseCamera.invertSelf();\n const x = ((event.clientX - rect.left) / rect.width) * 2 - 1;\n const y = -((event.clientY - rect.top) / rect.height) * 2 + 1;\n const endX = inverseCamera.m11 * x + inverseCamera.m21 * y + inverseCamera.m41;\n const endY = inverseCamera.m12 * x + inverseCamera.m22 * y + inverseCamera.m42;\n const endZ = inverseCamera.m13 * x + inverseCamera.m23 * y + inverseCamera.m43;\n const endW = inverseCamera.m14 * x + inverseCamera.m24 * y + inverseCamera.m44;\n let object;\n validateCameraInverse(inverseCamera);\n raycasterByLayer.get(layer).origin[0] = cameraByLayer.get(layer).position[0];\n raycasterByLayer.get(layer).origin[1] = cameraByLayer.get(layer).position[1];\n raycasterByLayer.get(layer).origin[2] = cameraByLayer.get(layer).position[2];\n raycasterByLayer.get(layer).direction[0] = endX / endW - raycasterByLayer.get(layer).origin[0];\n raycasterByLayer.get(layer).direction[1] = endY / endW - raycasterByLayer.get(layer).origin[1];\n raycasterByLayer.get(layer).direction[2] = endZ / endW - raycasterByLayer.get(layer).origin[2];\n const direction = raycasterByLayer.get(layer).direction;\n const rayLength = Math.hypot(direction[0], direction[1], direction[2]) || 1;\n raycasterByLayer.get(layer).direction[0] /= rayLength;\n raycasterByLayer.get(layer).direction[1] /= rayLength;\n raycasterByLayer.get(layer).direction[2] /= rayLength;\n const meshes = raycasterByLayer.get(layer).meshes;\n meshes.length = 0;\n for (object of objects) {\n if (recursive) traverse(object, collectVisibleMesh, meshes);\n else if (object.geometry && object.visible && object._appearance !== 0) meshes.push(object);\n }\n return intersectMeshes(raycasterByLayer.get(layer), meshes, rendererByLayer.get(layer).uniformData?.[55]);\n}\n", "export function restoreNativeEvents() {\r\n const { map, descriptor, handle } = this;\r\n if (map._fireDOMEvent !== handle) return;\r\n if (descriptor) Object.defineProperty(map, '_fireDOMEvent', descriptor);\r\n else delete map._fireDOMEvent;\r\n}\n", "/** Rendering owner per map; entries are removed on the last layer removal. */\nexport const renderers = new WeakMap();\n", "export const coreEventTypes = new Set([\n 'click', 'preclick', 'dblclick', 'contextmenu', 'mousedown', 'mouseup', 'mousemove', 'mouseover', 'mouseout',\n 'pointerdown', 'pointerup', 'pointermove', 'pointerover', 'pointerout',\n]);\n", "import { L } from '../globals/L.js';\r\nimport { raycast } from '../picking/raycast.js';\r\nimport { compareNativeHits } from './compareNativeHits.js';\r\n\r\nexport function nativeEventSource(context, event, type) {\r\n const hits = /* alloc */ [];\r\n let candidate, source, layer;\r\n if (type !== context.out) {\r\n for (candidate of context.states) {\r\n ({ source, backend: layer } = candidate);\r\n if (source instanceof L.Marker || source.options.interactive === false ||\r\n !(source instanceof L.Path) && !source.options.interactive) continue;\r\n hits.push(...raycast(layer, event, candidate.meshes.values(), false));\r\n }\r\n }\r\n hits.sort(compareNativeHits);\r\n return hits[0]?.object._nativeSource || null;\r\n}\r\n", "export function compareNativeHits(a, b) {\r\n return b.object.renderOrder - a.object.renderOrder || a.distance - b.distance;\r\n}\n", "export function updateNativeHover(map, context, event, source) {\r\n if (context.hovered === source) return;\r\n if (context.hovered) context.fireDOMEvent.call(map, event, context.out, /* alloc */ [context.hovered]);\r\n context.hovered = source;\r\n if (source) context.fireDOMEvent.call(map, event, context.over, /* alloc */ [source]);\r\n map.getContainer().style.cursor = source ? 'pointer' : '';\r\n}\r\n", "import { updateNativeHover } from './updateNativeHover.js';\r\n\r\nexport function bypassNativeEvent(map, context, event, type) {\r\n const target = event.target;\r\n const dom = target instanceof Element &&\r\n target.closest('.leaflet-marker-icon,.leaflet-popup,.leaflet-tooltip,.leaflet-control');\r\n if (dom && context.hovered && (type === context.move || type === context.out)) {\r\n updateNativeHover(map, context, event, null);\r\n }\r\n return dom || type === context.move && (map.dragging?.moving() || map._animatingZoom);\r\n}\r\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\n\nimport { nativeEventMaps } from '../weakmaps/nativeEventMaps.js';\nimport { renderers } from '../weakmaps/renderers.js';\nimport { coreEventTypes } from '../globals/coreEventTypes.js';\n\n\n\nimport { nativeEventSource } from './nativeEventSource.js';\nimport { updateNativeHover } from './updateNativeHover.js';\nimport { bypassNativeEvent } from './bypassNativeEvent.js';\n\nexport function handleNativeMapEvent(event, type = event.type, targets) {\n const map = this, context = nativeEventMaps.get(map), fireDOMEvent = context.fireDOMEvent;\n const owner = renderers.get(map);\n if (!rendererByLayer.get(owner) || targets || !coreEventTypes.has(type)) {\n return fireDOMEvent.call(this, event, type, targets);\n }\n if (bypassNativeEvent(map, context, event, type)) {\n return fireDOMEvent.call(this, event, type, targets);\n }\n let source = nativeEventSource(context, event, type);\n if ((type === 'click' || type === 'preclick') && source && map._draggableMoved(source)) source = null;\n if (type === context.move || type === context.out) {\n updateNativeHover(map, context, event, source);\n }\n return fireDOMEvent.call(this, event, type, source ? /* alloc */ [source] : undefined);\n}\n", "import { refreshNativeLayer } from './refreshNativeLayer.js';\n\nexport function refreshNativeEvent() {\r\n refreshNativeLayer(this);\r\n}\n", "import { sharedByLayer } from '../weakmaps/sharedByLayer.js';\n\n\n\nimport { update } from '../scene/scheduleSceneUpdate.js';\n\nexport function updateNativeLayerView() {\n this.viewDirty = true;\n if (sharedByLayer.get(this.backend)) update(this.backend);\n}\n", "import { nativeEventMaps } from '../weakmaps/nativeEventMaps.js';\n\n\nexport function removeNativeEvents(state) {\r\n const context = state._nativeEventContext;\r\n if (!context) return;\r\n const { map } = context;\r\n context.states.delete(state);\r\n if (context.hovered === state.source) {\r\n context.hovered = null;\r\n map.getContainer().style.cursor = '';\r\n }\r\n state._nativeEventContext = null;\r\n if (context.states.size) return;\r\n context.restore();\r\n nativeEventMaps.delete(map);\r\n}\n", "import { nativeRenderByLayer } from '../weakmaps/nativeRenderByLayer.js';\n\n\nimport { refreshNativeEvent } from './refreshNativeEvent.js';\nimport { updateNativeLayerView } from './updateNativeLayerView.js';\nimport { removeNativeEvents } from './removeNativeEvents.js';\nimport { disposeMesh } from '../rendering/disposeMesh.js';\nimport { destroyTexture } from '../textures/destroyTexture.js';\nimport { nativeImageRefresh } from '../textures/nativeImageRefresh.js';\nimport { nativeImageError } from '../textures/nativeImageError.js';\nimport { removeImageState } from '../textures/removeImageState.js';\n\nexport function disposeNativeLayer() {\n const state = this;\n if (state.disposed) return;\n state.disposed = true;\n const { source, map, backend: layer, meshes, textures, images } = state;\n const events = 'load tileload tileunload move drag';\n source.off(events, refreshNativeEvent, state);\n map.off('zoomend', refreshNativeEvent, state);\n if (state.marker) map.off('move zoom rotate pitch resize viewreset', updateNativeLayerView, state);\n removeNativeEvents(state);\n let name, methods, mesh, texture, image;\n for ([name, methods] of state.methods) {\n if (methods.own) Object.defineProperty(source, name, methods.own);\n else delete source[name];\n }\n for (mesh of meshes.values()) disposeMesh(layer, mesh);\n meshes.clear();\n for (texture of textures.values()) destroyTexture(layer, texture.texture);\n textures.clear();\n for (image of images) {\n image.removeEventListener('load', nativeImageRefresh);\n image.removeEventListener('error', nativeImageError);\n removeImageState(image, state);\n }\n nativeRenderByLayer.delete(layer);\n layer.remove();\n}\n", "\nexport function resolveNativeReady() {\r\n this.ready.resolve();\r\n}\n", "\nexport function rejectNativeReady({ error }) {\r\n this.ready.reject(error);\r\n}\n", "export function forwardNativeError({ error }) {\r\n this.source.fire('error', /* alloc */ { error });\r\n}\r\n", "import { nativeGPUByLayer } from '../weakmaps/nativeGPUByLayer.js';\n\n\nimport { disposeNativeLayer } from './disposeNativeLayer.js';\n\nexport function removeTargets(state) {\n if (nativeGPUByLayer.get(state.source) === state) nativeGPUByLayer.set(state.source, null);\n if (state.backend) disposeNativeLayer.call(state);\n let element;\n for (element of state.hidden) {\n element.classList.remove('leaflet-webgpu-target');\n }\n}\n", "import { nativeGPUByLayer } from '../weakmaps/nativeGPUByLayer.js';\n\n\n\nimport { nativeLayer } from './nativeLayer.js';\n\nexport function readyNativeGPU(state) {\r\n if (nativeGPUByLayer.get(state.source) !== state) return state.source;\r\n return nativeLayer(state);\r\n}\n", "export function reportError(source, error) {\r\n source.fire('error', /* alloc */ { error });\r\n}\r\n", "import { nativeGPUByLayer } from '../weakmaps/nativeGPUByLayer.js';\nimport { readyByLayer } from '../weakmaps/readyByLayer.js';\n\n\n\nimport { nativeLayer } from './nativeLayer.js';\nimport { hideTargets } from './hideTargets.js';\nimport { removeTargets } from './removeTargets.js';\nimport { readyNativeGPU } from './readyNativeGPU.js';\nimport { reportError } from '../scene/reportLayerError.js';\n\nexport function initNativeGPU(source, map) {\n if (nativeGPUByLayer.get(source)) return;\n if (!document.getElementById('leaflet-webgpu-targets')) {\n const style = document.createElement('style');\n style.id = 'leaflet-webgpu-targets';\n style.textContent = '.leaflet-webgpu-target{opacity:0!important}';\n document.head.append(style);\n }\n const state = /* alloc */ {\n source, map, hidden: /* alloc */ new Set(),\n };\n nativeGPUByLayer.set(source, state);\n hideTargets(state);\n source.once('remove', removeTargets.bind(null, state));\n readyByLayer.set(source, Promise.resolve().then(readyNativeGPU.bind(null, state)));\n readyByLayer.get(source).catch(reportError.bind(null, source));\n}\n", "export const cameraAngles = [1, 0, 1, 0];\n", "import { L } from '../globals/L.js';\nexport function pointOf(point) {\r\n return /* alloc */ new L.Point(\r\n Array.isArray(point) ? point[0] : point.x, Array.isArray(point) ? point[1] : point.y);\r\n}\r\n", "import { radians } from '../globals/radians.js';\n\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\n\nexport function angles(map, target) {\n const bearing = mapGetBearing(map) * radians, pitch = mapGetPitch(map) * radians;\n target ||= /* alloc */ [];\n target[0] = Math.cos(bearing);\n target[1] = Math.sin(bearing);\n target[2] = Math.cos(pitch);\n target[3] = Math.sin(pitch);\n return target;\n}\n", "import { cameraAngles } from '../globals/cameraAngles.js';\nimport { pointOf } from './toPoint.js';\nimport { angles } from './cameraAngles.js';\n\n\nexport function project(map, point, inverse = false, limit = false) {\n const size = map.getSize(), halfX = size.x / 2, halfY = size.y / 2, distance = size.y * 1.5;\n const result = pointOf(point);\n if (!distance) return result;\n const [cos, sin, tilt, rise] = angles(map, cameraAngles);\n const x = result.x - halfX, y = result.y - halfY;\n if (inverse) {\n const far = size.y * map.options.pitchMaxDistance;\n const denominator = tilt * distance + rise * y;\n let v = denominator * tilt > 0 ? y * distance / denominator : -far;\n if (limit) v = Math.max(-far, Math.min(far, v));\n const u = x * (distance - rise * v) / distance;\n result.x = cos * u + sin * v + halfX;\n result.y = -sin * u + cos * v + halfY;\n return result;\n }\n const u = cos * x - sin * y, v = sin * x + cos * y;\n const scale = distance / (distance - rise * v);\n result.x = u * scale + halfX;\n result.y = tilt * v * scale + halfY;\n return result;\n}\n", "import { mapMethods } from '../globals/mapMethods.js';\n\nimport { project } from '../projections/projectCameraPoint.js';\nimport { animationPoint } from '../projections/transformZoomAnimationPoint.js';\n\nexport function mapLayerPointToContainerPoint(point) {\n return project(this, animationPoint(this, mapMethods.value.layerPointToContainerPoint.call(this, point)));\n}\n", "import { mapMethods } from '../globals/mapMethods.js';\n\n\nimport { animationPoint } from '../projections/transformZoomAnimationPoint.js';\nimport { project } from '../projections/projectCameraPoint.js';\n\nexport function mapContainerPointToLayerPoint(point) {\n return mapMethods.value.containerPointToLayerPoint.call(this, animationPoint(this, project(this, point, true), true));\n}\n", "import { mapMethods } from '../globals/mapMethods.js';\n\n\nexport function mapGetCenterLayerPoint() {\n return mapMethods.value.containerPointToLayerPoint.call(this, this.getSize().divideBy(2));\n}\n", "import { mapMethods } from '../globals/mapMethods.js';\n\nimport { project } from '../projections/projectCameraPoint.js';\nimport { pointOf } from '../projections/toPoint.js';\n\nexport function mapPanBy(offset, options) {\n const half = this.getSize().divideBy(2);\r\n const ground = half.subtract(project(this, half.subtract(pointOf(offset)), true));\r\n return mapMethods.value.panBy.call(this, ground, options);\n}\n", "import { L } from '../globals/L.js';\nimport { mapMethods } from '../globals/mapMethods.js';\n\nimport { mapGetPitch } from './mapGetPitch.js';\nimport { mapGetBearing } from './mapGetBearing.js';\n\nexport function mapSetZoomAround(latlng, zoom, options) {\n if (!mapGetPitch(this) && !mapGetBearing(this)) return mapMethods.value.setZoomAround.call(this, latlng, zoom, options);\n zoom = this._limitZoom(zoom);\n const scale = this.getZoomScale(zoom), half = this.getSize().divideBy(2);\n const screen = latlng instanceof L.Point ? latlng : this.latLngToContainerPoint(latlng);\n const center = this.containerPointToLayerPoint(half), anchor = this.containerPointToLayerPoint(screen);\n const next = center.add(anchor.subtract(center).multiplyBy(1 - 1 / scale));\n return this.setView(this.layerPointToLatLng(next), zoom, /* alloc */ { zoom: options });\n}\n", "export const cameraZeroPadding = Object.freeze([0, 0]);\n", "import { mapMethods } from '../globals/mapMethods.js';\nimport { cameraZeroPadding } from '../globals/cameraZeroPadding.js';\n\nimport { mapGetPitch } from './mapGetPitch.js';\nimport { mapGetBearing } from './mapGetBearing.js';\n\nimport { pointOf } from '../projections/toPoint.js';\n\nexport function mapPanInside(latlng, options = /* alloc */ {}) {\n if (!mapGetPitch(this) && !mapGetBearing(this)) return mapMethods.value.panInside.call(this, latlng, options);\n const min = pointOf(options.paddingTopLeft || options.padding || cameraZeroPadding);\n const max = this.getSize().subtract(pointOf(options.paddingBottomRight || options.padding || cameraZeroPadding));\n const screen = this.latLngToContainerPoint(latlng);\n const safe = min;\n safe.x = Math.max(min.x, Math.min(max.x, screen.x));\n safe.y = Math.max(min.y, Math.min(max.y, screen.y));\n if (safe.equals(screen)) return this;\n const delta = this.latLngToLayerPoint(latlng).subtract(this.containerPointToLayerPoint(safe));\n return this.panTo(this.unproject(this.project(this.getCenter()).add(delta)), options);\n}\n", "import { L } from '../globals/L.js';\nimport { mapMethods } from '../globals/mapMethods.js';\n\nimport { mapGetPitch } from './mapGetPitch.js';\nimport { mapGetBearing } from './mapGetBearing.js';\n\nimport { groundBounds } from '../projections/groundBounds.js';\n\nexport function mapLimitCenter(center, zoom, bounds) {\n if (!bounds || !this._loaded || !mapGetPitch(this) && !mapGetBearing(this)) {\n return mapMethods.value._limitCenter.call(this, center, zoom, bounds);\n }\n const half = this.getSize().divideBy(2), footprint = groundBounds(this), point = this.project(center, zoom);\n const view = /* alloc */ new L.Bounds(point.add(footprint.min.subtract(half)), point.add(footprint.max.subtract(half)));\n const offset = this._getBoundsOffset(view, bounds, zoom);\n return Math.abs(offset.x) <= 1 && Math.abs(offset.y) <= 1 ? center : this.unproject(point.add(offset), zoom);\n}\n", "import { L } from '../globals/L.js';\nimport { cameraZeroPadding } from '../globals/cameraZeroPadding.js';\nimport { pointOf } from './toPoint.js';\nimport { project } from './projectCameraPoint.js';\n\n\nexport function groundBounds(map, padding = cameraZeroPadding) {\n const min = pointOf(padding).divideBy(2), max = map.getSize().subtract(min);\n const bounds = /* alloc */ new L.Bounds();\n const minX = min.x, minY = min.y;\n let i;\n for (i = 0; i < 4; i++) {\n min.x = i % 2 ? max.x : minX;\n min.y = i < 2 ? minY : max.y;\n bounds.extend(project(map, min, true, true));\n }\n return bounds;\n}\n", "import { mapMethods } from '../globals/mapMethods.js';\n\nimport { mapGetPitch } from './mapGetPitch.js';\nimport { mapGetBearing } from './mapGetBearing.js';\n\nimport { project } from '../projections/projectCameraPoint.js';\n\nexport function mapLimitOffset(offset, bounds) {\n if (!bounds || !mapGetPitch(this) && !mapGetBearing(this)) return mapMethods.value._limitOffset.call(this, offset, bounds);\r\n const half = this.getSize().divideBy(2), ground = half.subtract(project(this, half.subtract(offset), true));\r\n const center = this.project(this.getCenter());\r\n const limited = this.project(this._limitCenter(this.unproject(center.add(ground)), this.getZoom(), bounds));\r\n return half.subtract(project(this, half.subtract(limited.subtract(center))));\n}\n", "import { mapMethods } from '../globals/mapMethods.js';\n\nimport { mapGetPitch } from './mapGetPitch.js';\nimport { mapGetBearing } from './mapGetBearing.js';\nimport { fitCameraBounds } from './fitCameraBounds.js';\n\nexport function mapGetBoundsCenterZoom(bounds, options) {\n return mapGetPitch(this) || mapGetBearing(this) ? fitCameraBounds(this, bounds, options) :\r\n mapMethods.value._getBoundsCenterZoom.call(this, bounds, options);\n}\n", "import { L } from '../globals/L.js';\nimport { cameraEmptyOptions } from '../globals/cameraEmptyOptions.js';\nimport { cameraZeroPadding } from '../globals/cameraZeroPadding.js';\nimport { cameraAngles } from '../globals/cameraAngles.js';\nimport { pointOf } from '../projections/toPoint.js';\nimport { angles } from '../projections/cameraAngles.js';\nimport { verticalGroundY } from '../projections/verticalGroundY.js';\n\n\nexport function fitCameraBounds(map, bounds, options = cameraEmptyOptions) {\n bounds = bounds.getBounds ? bounds.getBounds() : bounds instanceof L.LatLngBounds ? bounds\n : /* alloc */ new L.LatLngBounds(bounds);\n const zoom = map.getZoom() ?? 0, half = map.getSize().divideBy(2), distance = map.getSize().y * 1.5;\n const min = pointOf(options.paddingTopLeft || options.padding || cameraZeroPadding).subtract(half);\n const max = half.subtract(pointOf(options.paddingBottomRight || options.padding || cameraZeroPadding));\n const [cos, sin, tilt, rise] = angles(map, cameraAngles);\n if (tilt < 0) {\n const y = min.y;\n min.y = -max.y;\n max.y = -y;\n }\n const far = map.getSize().y * map.options.pitchMaxDistance;\n const top = verticalGroundY(min.y, Math.abs(tilt), distance, rise, far);\n const bottom = verticalGroundY(max.y, Math.abs(tilt), distance, rise, far);\n const origin = map.project(bounds.getNorthWest(), zoom).add(map.project(bounds.getSouthEast(), zoom)).divideBy(2);\n let low = Infinity, high = -Infinity;\n const leftSlope = min.x * rise / distance, rightSlope = max.x * rise / distance;\n const slope = rightSlope - leftSlope;\n let left = Infinity, right = -Infinity;\n const corners = /* alloc */ [bounds.getNorthWest(), bounds.getNorthEast(), bounds.getSouthWest(), bounds.getSouthEast()];\n let i, latlng, p, x, y;\n for (i = 0; i < 4; i++) {\n latlng = corners[i];\n p = map.project(latlng, zoom).subtract(origin);\n x = cos * p.x - sin * p.y;\n y = sin * p.x + cos * p.y;\n low = Math.min(low, y);\n high = Math.max(high, y);\n left = Math.min(left, x + leftSlope * y);\n right = Math.max(right, x + rightSlope * y);\n }\n // Perspective viewport edges are straight lines on the ground: fit all four corners, not their screen midpoint.\n const scale = Math.min((bottom - top) / (high - low),\n (max.x - min.x - slope * top) / (right - left - slope * low));\n let target = map.getScaleZoom(scale, zoom);\n const snap = map.options.zoomSnap;\n if (snap) target = Math.floor(Math.round(target / (snap / 100)) / 100) * snap;\n target = Math.max(map.getMinZoom(), Math.min(map.getMaxZoom(), options.maxZoom ?? Infinity, target));\n if (!Number.isFinite(target)) return /* alloc */ { center: bounds.getCenter(), zoom: target };\n const actual = map.getZoomScale(target, zoom);\n const vMin = high * actual - bottom, vMax = low * actual - top;\n const v = Math.max(vMin, slope ? (actual * (right - left) - max.x + min.x) / slope : vMin);\n const centerY = (Math.min(vMax, v) + vMax) / 2;\n const centerX = (actual * (left + right) - min.x - max.x - (leftSlope + rightSlope) * centerY) / 2;\n origin.x += (cos * centerX + sin * centerY) / actual;\n origin.y += (-sin * centerX + cos * centerY) / actual;\n return /* alloc */ { center: map.unproject(origin, zoom), zoom: target };\n}\n", "export function verticalGroundY(y, tilt, distance, rise, far) {\r\n return tilt * distance + rise * y > 0\r\n ? Math.max(-far, Math.min(far, y * distance / (tilt * distance + rise * y))) : -far;\r\n}\n", "import { L } from '../globals/L.js';\nimport { mapMethods } from '../globals/mapMethods.js';\nimport { cameraZeroPadding } from '../globals/cameraZeroPadding.js';\n\nimport { mapGetPitch } from './mapGetPitch.js';\nimport { mapGetBearing } from './mapGetBearing.js';\n\nimport { fitCameraBounds } from './fitCameraBounds.js';\nimport { pointOf } from '../projections/toPoint.js';\nimport { groundBounds } from '../projections/groundBounds.js';\n\nexport function mapGetBoundsZoom(bounds, inside, padding) {\n if (!mapGetPitch(this) && !mapGetBearing(this)) return mapMethods.value.getBoundsZoom.call(this, bounds, inside, padding);\n if (!inside) return fitCameraBounds(this, bounds,\n /* alloc */ {\n padding: pointOf(padding || cameraZeroPadding).divideBy(2),\n }).zoom;\n bounds = bounds instanceof L.LatLngBounds ? bounds\n : /* alloc */ new L.LatLngBounds(bounds);\n const footprint = groundBounds(this, padding).getSize(), size = this.project(bounds.getSouthEast()).subtract(this.project(bounds.getNorthWest()));\n const zoom = this.getScaleZoom(Math.max(footprint.x / size.x, footprint.y / size.y));\n const snap = this.options.zoomSnap;\n return Math.max(this.getMinZoom(), Math.min(this.getMaxZoom(), snap ? Math.ceil(zoom / snap) * snap : zoom));\n}\n", "import { mapMethods } from '../globals/mapMethods.js';\n\n\nexport function mapTryAnimatedPan(center, options) {\n // Leaflet's geographic recentering already supplies ground pixels, not screen pixels.\r\n const offset = this._getCenterOffset(center)._trunc();\r\n if (options?.animate !== true && !this.getSize().contains(offset)) return false;\r\n mapMethods.value.panBy.call(this, offset, options);\r\n return true;\n}\n", "import { L } from '../globals/L.js';\nimport { mapMethods } from '../globals/mapMethods.js';\n\nimport { mapGetPitch } from './mapGetPitch.js';\nimport { mapGetBearing } from './mapGetBearing.js';\n\nimport { groundBounds } from '../projections/groundBounds.js';\nimport { animationPoint } from '../projections/transformZoomAnimationPoint.js';\n\nexport function mapGetBounds() {\n if (!mapGetPitch(this) && !mapGetBearing(this)) return mapMethods.value.getBounds.call(this);\n const footprint = groundBounds(this), bounds = /* alloc */ new L.LatLngBounds();\n let i, point, raw;\n for (i = 0; i < 2; i++) {\n point = i ? footprint.max : footprint.min;\n raw = mapMethods.value.containerPointToLayerPoint.call(this, animationPoint(this, point, true));\n bounds.extend(this.layerPointToLatLng(raw));\n }\n return bounds;\n}\n", "export const cameraMaps = new WeakSet();\n", "export const cameraReadyByMap = new WeakMap();\n", "import { cameraMaps } from '../weakmaps/cameraMaps.js';\nimport { cameraReadyByMap } from '../weakmaps/cameraReadyByMap.js';\n\n\nimport { mapSetPitchAndBearing } from './mapSetPitchAndBearing.js';\n\nimport { updateSky } from './updateSky.js';\nimport { constrainCameraToBounds } from './constrainCameraToBounds.js';\nimport { cleanupCameraMap } from './cleanupCameraMap.js';\nimport { cameraMapReady } from './cameraMapReady.js';\nimport { loadCameraControls } from '../controls/loadCameraControls.js';\nimport { noOperation } from '../utils/noOperation.js';\n\nexport function initializeCameraMap() {\n cameraMaps.add(this);\n if (!document.getElementById('leaflet-camera-zoom-style')) {\n const style = document.createElement('style');\n style.id = 'leaflet-camera-zoom-style';\n style.textContent = '.leaflet-camera-zoom .leaflet-marker-icon,.leaflet-camera-zoom .leaflet-marker-shadow,' +\n '.leaflet-camera-zoom .leaflet-popup,.leaflet-camera-zoom .leaflet-tooltip{transition:none!important}';\n document.head.append(style);\n }\n mapSetPitchAndBearing(this, this.options.pitch, this.options.bearing);\n this.on('load resize pitch', updateSky);\n this.on('rotate pitch', constrainCameraToBounds, this);\n this.once('unload', cleanupCameraMap, this);\n this.whenReady(cameraMapReady, this);\n if (this.options.rotate || this.options.trackContainerMutation) {\n cameraReadyByMap.set(this, loadCameraControls(this));\n cameraReadyByMap.get(this).catch(noOperation);\n }\n}\n", "export function constrainCameraToBounds() {\r\n if (this.options.maxBounds) this._panInsideMaxBounds();\r\n}\n", "export const cameraDraggableByMap = new WeakMap();\n", "import { cameraDraggableByMap } from '../weakmaps/cameraDraggableByMap.js';\nimport { pitchSkyByMap } from '../weakmaps/pitchSkyByMap.js';\n\n\n\nimport { cancelCameraAnimation } from '../animations/cancelCameraAnimation.js';\nimport { adjustCameraDrag } from '../controls/adjustCameraDrag.js';\n\nexport function cleanupCameraMap() {\r\n cancelCameraAnimation(this);\r\n pitchSkyByMap.get(this)?.remove();\r\n if (cameraDraggableByMap.get(this)) {\r\n cameraDraggableByMap.get(this).off('predrag', adjustCameraDrag, this);\r\n cameraDraggableByMap.delete(this);\r\n }\r\n}\n", "import { cameraDraggableByMap } from '../weakmaps/cameraDraggableByMap.js';\n\n\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\n\nimport { project } from '../projections/projectCameraPoint.js';\n\nexport function adjustCameraDrag() {\r\n const map = this;\r\n const draggable = cameraDraggableByMap.get(map);\r\n if (!mapGetPitch(map) && !mapGetBearing(map)) return;\r\n const half = map.getSize().divideBy(2), delta = draggable._newPos.subtract(draggable._startPos);\r\n const ground = half.subtract(project(map, half.subtract(delta), true));\r\n draggable._newPos = draggable._startPos.add(ground);\r\n}\n", "import { cameraDraggableByMap } from '../weakmaps/cameraDraggableByMap.js';\n\n\n\nimport { adjustCameraDrag } from '../controls/adjustCameraDrag.js';\n\nexport function cameraMapReady() {\r\n const draggable = this.dragging?._draggable;\r\n if (!draggable) return;\r\n cameraDraggableByMap.set(this, draggable);\r\n draggable.on('predrag', adjustCameraDrag, this);\r\n}\n", "export async function loadCameraControls(map) {\r\n try {\r\n const { cameraControls } = await import('./cameraControls.js');\r\n if (map._container?._leaflet_id) cameraControls(map);\r\n } catch (error) {\r\n map.fire('error', /* alloc */ { error });\r\n throw error;\r\n }\r\n}\r\n", "export function noOperation() {}\n", "import { L } from '../globals/L.js';\nimport { markerMethods } from '../globals/markerMethods.js';\n\n\nimport { initNativeGPU } from '../native/initNativeGPU.js';\n\nexport function markerSetIcon(icon) {\n if (!(icon instanceof L.DivIcon)) icon.options.crossOrigin ||= true;\r\n const result = markerMethods.value.setIcon.call(this, icon);\r\n if (this._map && !(icon instanceof L.DivIcon)) initNativeGPU(this, this._map);\r\n return result;\n}\n", "import { markerMethods } from '../globals/markerMethods.js';\n\n\n\nexport function markerGetEvents() {\n const events = markerMethods.value.getEvents.call(this);\n events.rotate = events.pitch = events.move = this.update;\n return events;\n}\n", "export function displayPoint(map, point) {\r\n return map.layerPointToContainerPoint(point).subtract(map._getMapPanePos());\r\n}\n", "import { markerMethods } from '../globals/markerMethods.js';\n\nimport { markerCameraIconPoint } from '../projections/markerCameraIconPoint.js';\n\nimport { displayPoint } from '../projections/displayContainerPoint.js';\n\nexport function markerSetPos(point) {\n markerMethods.value._setPos.call(this, displayPoint(this._map, point));\n let i, element, key, direction, options, anchor;\n for (i = 0; i < 2; i++) {\n element = i ? this._shadow : this._icon;\n key = i ? 'shadowAnchor' : 'iconAnchor';\n if (!element) continue;\n direction = markerCameraIconPoint(this, 1, 0), options = this.options.icon.options;\n anchor = options[key] || options.iconAnchor;\n element.style.transformOrigin = anchor ? `${anchor.x ?? anchor[0]}px ${anchor.y ?? anchor[1]}px` : 'center';\n element.style.transform += ` rotate(${Math.atan2(direction.y, direction.x)}rad) scale(${this.options.scale})`;\n }\n}\n", "import { nativeGPUByLayer } from '../weakmaps/nativeGPUByLayer.js';\n\n\nimport { refreshNativeLayer } from './refreshNativeLayer.js';\n\nexport function refreshNativeLayerContract(layer = this) {\n const native = nativeGPUByLayer.get(layer);\n if (native?.backend && !native.disposed) refreshNativeLayer(native);\n}\n", "import { cameraZIndexOffsetByLayer } from '../weakmaps/cameraZIndexOffsetByLayer.js';\n\nimport { markerMethods } from '../globals/markerMethods.js';\n\n\n\nexport function markerUpdateZIndex(offset) {\n markerMethods.value._updateZIndex.call(this, offset);\n const changed = cameraZIndexOffsetByLayer.get(this) !== offset;\n cameraZIndexOffsetByLayer.set(this, offset);\n if (changed) refreshNativeLayerContract(this);\n}\nimport { refreshNativeLayerContract } from '../native/refreshNativeLayerContract.js';\n", "export const dragByHandler = new WeakMap();\n", "import { L } from '../globals/L.js';\nimport { dragByHandler } from '../weakmaps/dragByHandler.js';\n\n\r\n\r\nexport function cameraMarkerOnDrag(event) {\r\n const map = this._marker._map;\r\n const screen = L.DomUtil.getPosition(this._marker._icon).add(map._getMapPanePos());\r\n const point = map.containerPointToLayerPoint(screen);\r\n L.DomUtil.setPosition(this._marker._icon, point);\r\n dragByHandler.get(this)._cameraOriginalOnDrag.call(this, event);\r\n this._marker._setPos(point);\r\n}\r\n", "import { L } from '../globals/L.js';\nimport { dragByHandler } from '../weakmaps/dragByHandler.js';\n\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\n\nimport { pointOf } from '../projections/toPoint.js';\nimport { scheduleMarkerPan } from '../animations/scheduleMarkerPan.js';\n\nexport function adjustCameraMarkerPan(event) {\n const marker = this._marker, map = marker._map;\n if (!mapGetPitch(map) && !mapGetBearing(map)) return dragByHandler.get(this)._cameraOriginalAdjustPan.call(this, event);\n const screen = L.DomUtil.getPosition(marker._icon).add(map._getMapPanePos());\n const size = map.getSize(), padding = pointOf(marker.options.autoPanPadding);\n const speed = marker.options.autoPanSpeed;\n const movement = screen;\n movement.x = (Math.max(0, screen.x - size.x + padding.x) - Math.max(0, padding.x - screen.x)) / Math.max(1, padding.x) * speed;\n movement.y = (Math.max(0, screen.y - size.y + padding.y) - Math.max(0, padding.y - screen.y)) / Math.max(1, padding.y) * speed;\n if (!movement.x && !movement.y) return;\n const pane = map._getMapPanePos();\n map.panBy(movement, /* alloc */ { animate: false });\n const shift = pane.subtract(map._getMapPanePos());\n this._draggable._newPos._add(shift);\n this._draggable._startPos._add(shift);\n L.DomUtil.setPosition(marker._icon, this._draggable._newPos);\n this._onDrag(event);\n scheduleMarkerPan(this, event);\n}\n", "export const pendingMarkerPan = new Map();\n", "export const markerPanFrame = { value: null };\n", "import { markerPanFrame } from '../globals/markerPanFrame.js';\nimport { pendingMarkerPan } from '../globals/pendingMarkerPan.js';\n\n\nexport function runMarkerPanFrame() {\n markerPanFrame.value = null;\n const pending = /* alloc */ [...pendingMarkerPan];\n pendingMarkerPan.clear();\n let drag, event;\n for ([drag, event] of pending) {\n drag._panRequest = null;\n drag._adjustPan(event);\n }\n}\n", "import { pendingMarkerPan } from '../globals/pendingMarkerPan.js';\nimport { markerPanFrame } from '../globals/markerPanFrame.js';\n\n\nimport { runMarkerPanFrame } from './runMarkerPanFrame.js';\n\nexport function scheduleMarkerPan(drag, event) {\r\n pendingMarkerPan.set(drag, event);\r\n if (markerPanFrame.value === null) markerPanFrame.value = requestAnimationFrame(runMarkerPanFrame);\r\n drag._panRequest = markerPanFrame.value;\r\n}\n", "import { dragByHandler } from '../weakmaps/dragByHandler.js';\n\n\nimport { cameraMarkerOnDrag } from './cameraMarkerOnDrag.js';\nimport { adjustCameraMarkerPan } from './adjustCameraMarkerPan.js';\n\nexport function cameraMarkerDrag() {\n if (!this.dragging || dragByHandler.has(this.dragging)) return;\n const drag = this.dragging, original = drag._onDrag, adjustPan = drag._adjustPan;\n dragByHandler.set(drag, /* alloc */ {\n _cameraOriginalOnDrag: original, _cameraOriginalAdjustPan: adjustPan,\n });\n drag._onDrag = cameraMarkerOnDrag;\n drag._adjustPan = adjustCameraMarkerPan;\n // The handler may already be enabled and listening with its original method.\n const enabled = drag.enabled();\n if (enabled) {\n drag._draggable.off('drag', original, drag);\n drag._draggable.on('drag', drag._onDrag, drag);\n }\n}\n", "import { markerMethods } from '../globals/markerMethods.js';\n\n\nimport { cameraMarkerDrag } from './cameraMarkerDrag.js';\n\nexport function markerInitInteraction() {\n const result = markerMethods.value._initInteraction.call(this);\r\n cameraMarkerDrag.call(this);\r\n return result;\n}\n", "import { popupEvents } from '../globals/popupEvents.js';\n\n\nexport function popupGetEvents() {\n const events = popupEvents.value.call(this);\n events.rotate = events.pitch = events.move = this._updatePosition;\n return events;\n}\n", "import { tooltipEvents } from '../globals/tooltipEvents.js';\n\n\nexport function tooltipGetEvents() {\n const events = tooltipEvents.value.call(this);\n events.rotate = events.pitch = events.move = this._updatePosition;\n return events;\n}\n", "import { popupPan } from '../globals/popupPan.js';\n\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\n\nimport { pointOf } from '../projections/toPoint.js';\n\nexport function popupAdjustPan() {\n const map = this._map;\n if (!mapGetPitch(map) && !mapGetBearing(map)) return popupPan.value.call(this);\n if (!this.options.autoPan) return;\n if (map._panAnim) map._panAnim.stop();\n if (this._autopanning) { this._autopanning = false; return; }\n const rect = this._container.getBoundingClientRect(), container = map.getContainer().getBoundingClientRect();\n const min = pointOf(this.options.autoPanPaddingTopLeft || this.options.autoPanPadding);\n const max = map.getSize().subtract(pointOf(this.options.autoPanPaddingBottomRight || this.options.autoPanPadding));\n const left = rect.left - container.left, top = rect.top - container.top;\n const right = rect.right - container.left, bottom = rect.bottom - container.top;\n const dx = Math.min(0, left - min.x) || Math.max(0, right - max.x);\n const dy = Math.min(0, top - min.y) || Math.max(0, bottom - max.y);\n if (!dx && !dy) return;\n if (this.options.keepInView) this._autopanning = true;\n const screen = map.latLngToContainerPoint(this._latlng);\n screen.x -= dx;\n screen.y -= dy;\n const delta = map.latLngToLayerPoint(this._latlng).subtract(map.containerPointToLayerPoint(screen));\n map.fire('autopanstart');\n map.panTo(map.unproject(map.project(map.getCenter()).add(delta)));\n}\n", "import { L } from '../globals/L.js';\nimport { popupPosition } from '../globals/popupPosition.js';\n\n\nimport { displayPoint } from '../projections/displayContainerPoint.js';\n\nexport function popupUpdatePosition() {\n popupPosition.value.call(this);\r\n if (!this._map) return;\r\n const point = this._map.latLngToLayerPoint(this._latlng), delta = displayPoint(this._map, point).subtract(point);\r\n if (this._zoomAnimated) {\r\n L.DomUtil.setPosition(this._container, L.DomUtil.getPosition(this._container).add(delta));\r\n } else {\r\n this._container.style.left = `${this._containerLeft + delta.x}px`;\r\n this._container.style.bottom = `${this._containerBottom - delta.y}px`;\r\n }\n}\n", "import { L } from '../globals/L.js';\nimport { tooltipPosition } from '../globals/tooltipPosition.js';\n\n\nimport { displayPoint } from '../projections/displayContainerPoint.js';\n\nexport function tooltipSetPosition(point) {\n tooltipPosition.value.call(this, point);\r\n const delta = displayPoint(this._map, point).subtract(point);\r\n L.DomUtil.setPosition(this._container, L.DomUtil.getPosition(this._container).add(delta));\n}\n", "import { L } from '../globals/L.js';\nimport { gridEvents } from '../globals/gridEvents.js';\n\n\n\nexport function gridlayerGetEvents() {\n const events = gridEvents.value.call(this);\n events.rotate = events.pitch = L.Util.throttle(this._onMoveEnd, this.options.updateInterval, this);\n return events;\n}\n", "import { L } from '../globals/L.js';\nimport { tiledBounds } from '../globals/tiledBounds.js';\n\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\n\nexport function gridlayerGetTiledPixelBounds(center) {\n if (!mapGetBearing(this._map) && !mapGetPitch(this._map)) return tiledBounds.value.call(this, center);\n const bounds = this._map.getBounds();\n return /* alloc */ new L.Bounds(this._map.project(bounds.getNorthWest(), this._tileZoom),\n this._map.project(bounds.getSouthEast(), this._tileZoom));\n}\n", "export const addedByLayer = new WeakMap();\n", "export const areasByLayer = new WeakMap();\n", "export const countStatusByLayer = new WeakMap();\n", "export const directoriesByLayer = new WeakMap();\n", "export const geojsonByLayer = new WeakMap();\n", "export const inflightByLayer = new WeakMap();\n", "export const modelUrlByLayer = new WeakMap();\n", "export const state3dByLayer = new WeakMap();\n", "export const urlByLayer = new WeakMap();\n", "import { addedByLayer } from '../weakmaps/addedByLayer.js';\nimport { areasByLayer } from '../weakmaps/areasByLayer.js';\nimport { countStatusByLayer } from '../weakmaps/countStatusByLayer.js';\nimport { directoriesByLayer } from '../weakmaps/directoriesByLayer.js';\nimport { geojsonByLayer } from '../weakmaps/geojsonByLayer.js';\nimport { inflightByLayer } from '../weakmaps/inflightByLayer.js';\nimport { kindByLayer } from '../weakmaps/kindByLayer.js';\nimport { locationByLayer } from '../weakmaps/locationByLayer.js';\nimport { modelUrlByLayer } from '../weakmaps/modelUrlByLayer.js';\nimport { readyByLayer } from '../weakmaps/readyByLayer.js';\nimport { state3dByLayer } from '../weakmaps/state3dByLayer.js';\nimport { urlByLayer } from '../weakmaps/urlByLayer.js';\n\nimport { L } from '../globals/L.js';\nimport { sceneEmptyOptions } from '../globals/sceneEmptyOptions.js';\n\n\nimport { ready3D } from './ready3D.js';\nimport { noOperation } from '../utils/noOperation.js';\nimport { updateLayerCount } from '../layer-controls/updateLayerCount.js';\n\nexport function init3D(layer, options = sceneEmptyOptions) {\n state3dByLayer.set(layer, true);\n L.Util.setOptions(layer, /* alloc */ { ariaLabel: '3D scene', ...options });\n kindByLayer.set(layer, '3d');\n const isModel = !geojsonByLayer.get(layer) && /\\.(glb|gltf)(?:[?#]|$)/i.test(layer.options.url);\n modelUrlByLayer.set(layer, isModel ? layer.options.url : null);\n urlByLayer.set(layer, layer.options.url && !isModel && !geojsonByLayer.get(layer) ? /* alloc */ new URL(layer.options.url, document.baseURI).href : null);\n directoriesByLayer.set(layer, /* alloc */ new Map());\n if (layer.options.center) {\n locationByLayer.set(layer, /* alloc */ new L.LatLng(layer.options.center[0], layer.options.center[1]));\n }\n areasByLayer.set(layer, /* alloc */ new Map());\n inflightByLayer.set(layer, 0);\n if (urlByLayer.get(layer) || geojsonByLayer.get(layer) || isModel) {\n const status = L.DomUtil.create('small', 'layer-count');\n status.style.cssText = 'float:right;margin-left:12px;color:#555;font-variant-numeric:tabular-nums';\n countStatusByLayer.set(layer, status);\n layer.on('add error', updateLayerCount);\n layer.on('ready progress', L.Util.throttle(updateLayerCount, 250, layer));\n }\n addedByLayer.set(layer, Promise.withResolvers());\n readyByLayer.set(layer, Promise.resolve().then(ready3D.bind(null, layer)));\n readyByLayer.get(layer).catch(noOperation);\n}\n", "export const groupByLayer = new WeakMap();\n", "export const archiveHeaderByLayer = new WeakMap();\n", "export const sceneLayers = new WeakSet();\n", "export const headerOffsets = [\n 'rootDirectoryOffset', 'rootDirectoryLength', 'jsonMetadataOffset', 'jsonMetadataLength',\n 'leafDirectoryOffset', 'leafDirectoryLength', 'tileDataOffset', 'tileDataLength',\n 'numAddressedTiles', 'numTileEntries', 'numTileContents',\n];\n", "export const headerFlags = ['clustered', 'internalCompression', 'tileCompression', 'tileType', 'minZoom', 'maxZoom'];\n", "export const headerBounds = ['minLon', 'minLat', 'maxLon', 'maxLat'];\n", "import { headerOffsets } from '../globals/headerOffsets.js';\nimport { headerFlags } from '../globals/headerFlags.js';\nimport { headerBounds } from '../globals/headerBounds.js';\n\n\n/** Decode the PMTiles v3 header. */\nexport function decodeHeader(data) {\n const view = data.byteLength >= 127\n ? /* alloc */ new DataView(data) : null;\n // \"PMTiles\" followed by version 3, read as two little-endian words.\n if (!view || view.getUint32(0, true) !== 0x69544d50 || view.getUint32(4, true) !== 0x0373656c) {\n throw /* alloc */ new Error('Expected a PMTiles v3 archive');\n }\n const header = /* alloc */ {};\n let i;\n for (i = 0; i < headerOffsets.length; i++) header[headerOffsets[i]] = Number(view.getBigUint64(8 + i * 8, true));\n for (i = 0; i < headerFlags.length; i++) header[headerFlags[i]] = view.getUint8(96 + i);\n for (i = 0; i < headerBounds.length; i++) header[headerBounds[i]] = view.getInt32(102 + i * 4, true) / 1e7;\n header.centerZoom = view.getUint8(118);\n header.centerLon = view.getInt32(119, true) / 1e7;\n header.centerLat = view.getInt32(123, true) / 1e7;\n return header;\n}\n", "export const etagByLayer = new WeakMap();\n", "import { etagByLayer } from '../weakmaps/etagByLayer.js';\nimport { urlByLayer } from '../weakmaps/urlByLayer.js';\n\n\n\r\nexport async function read(layer, offset, length, signal) {\r\n signal?.throwIfAborted();\r\n if (!Number.isSafeInteger(offset) || !Number.isSafeInteger(length) ||\r\n offset < 0 || length <= 0 || !Number.isSafeInteger(offset + length)) {\r\n throw /* alloc */ new Error('Invalid PMTiles byte range');\r\n }\r\n const response = await fetch(urlByLayer.get(layer), /* alloc */ {\r\n headers: /* alloc */ { Range: `bytes=${offset}-${offset + length - 1}` }, signal,\r\n });\r\n if (!response.ok) {\r\n throw /* alloc */ new Error(`Unable to read PMTiles: HTTP ${response.status}`);\r\n }\r\n const etag = response.headers.get('ETag');\r\n if (etagByLayer.get(layer) && etag !== etagByLayer.get(layer)) {\r\n throw /* alloc */ new Error('PMTiles archive changed; recreate the layer');\r\n }\r\n if (etag) etagByLayer.set(layer, etag);\r\n let data = await response.arrayBuffer();\r\n if (response.status === 200) {\r\n data = data.slice(offset, offset + length);\r\n } else if (response.status !== 206 ||\r\n !response.headers.get('Content-Range')?.startsWith(`bytes ${offset}-${offset + length - 1}/`)) {\r\n throw /* alloc */ new Error('Invalid PMTiles range response');\r\n }\r\n if (data.byteLength !== length) {\r\n throw /* alloc */ new Error('Truncated PMTiles range');\r\n }\r\n return data;\r\n}\r\n", "import { archiveHeaderByLayer } from '../weakmaps/archiveHeaderByLayer.js';\nimport { sceneLayers } from '../weakmaps/sceneLayers.js';\nimport { decodeHeader } from './decodeHeader.js';\nimport { read } from './readArchiveRange.js';\n\n/** Cache header initialization; failures remain visible to all callers. */\n\nexport function getHeader(layer) {\n if (!sceneLayers.has(layer)) return layer.getHeader();\n if (layer.options.archive && layer.options.archive !== layer) return getHeader(layer.options.archive);\n let header = archiveHeaderByLayer.get(layer);\n if (!header) {\n header = read(layer, 0, 127).then(decodeHeader);\n archiveHeaderByLayer.set(layer, header);\n }\n return header;\n}\n", "export const rendererReadyByLayer = new WeakMap();\n", "export const terrainBaseYByLayer = new WeakMap();\n", "import { cameraByLayer } from '../weakmaps/cameraByLayer.js';\nimport { geojsonByLayer } from '../weakmaps/geojsonByLayer.js';\nimport { headerByLayer } from '../weakmaps/headerByLayer.js';\nimport { kindByLayer } from '../weakmaps/kindByLayer.js';\nimport { layersByLayer } from '../weakmaps/layersByLayer.js';\nimport { locationByLayer } from '../weakmaps/locationByLayer.js';\nimport { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { rendererReadyByLayer } from '../weakmaps/rendererReadyByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\nimport { sceneByLayer } from '../weakmaps/sceneByLayer.js';\nimport { sceneOriginByLayer } from '../weakmaps/sceneOriginByLayer.js';\nimport { sharedByLayer } from '../weakmaps/sharedByLayer.js';\nimport { terrainBaseYByLayer } from '../weakmaps/terrainBaseYByLayer.js';\n\nimport { radians } from '../globals/radians.js';\nimport { renderers } from '../weakmaps/renderers.js';\nimport { setParent } from './setParent.js';\nimport { render } from '../rendering/render.js';\nimport { update } from './scheduleSceneUpdate.js';\nimport { updateArea } from '../sources/updateArea.js';\nimport { setTerrainHeight } from '../terrain/setTerrainHeight.js';\nimport { noOperation } from '../utils/noOperation.js';\nimport { restoreObject } from './restoreObject.js';\nimport { traverse } from './traverse.js';\nimport { initializeSharedRenderer } from '../gpu/initializeSharedRenderer.js';\n\n/**\n * Join/create this map's shared scene and rebuild GPU objects if its context changed.\n * Buffer/program handles belong to one context; typed arrays and decoded images do not.\n * @private\n */\nexport async function attach(layer, map) {\n let shared = renderers.get(map);\n\n if (rendererReadyByLayer.get(shared)) {\n await rendererReadyByLayer.get(shared).promise;\n }\n if (!shared) {\n shared = layer;\n rendererReadyByLayer.set(layer, Promise.withResolvers());\n rendererReadyByLayer.get(layer).promise.catch(noOperation);\n renderers.set(map, shared);\n await initializeSharedRenderer(layer, map);\n rendererReadyByLayer.get(layer).resolve();\n rendererReadyByLayer.delete(shared);\n render(shared);\n renderers.set(map, shared);\n }\n\n const origin = map.options.crs.project(sceneOriginByLayer.get(shared));\n const point = map.options.crs.project(locationByLayer.get(layer));\n const metres = Math.cos(sceneOriginByLayer.get(shared).lat * radians);\n if (terrainBaseYByLayer.get(layer) == null) terrainBaseYByLayer.set(layer, rootByLayer.get(layer).position[1]);\n rootByLayer.get(layer).position[0] = (point.x - origin.x) * metres;\n rootByLayer.get(layer).position[1] = terrainBaseYByLayer.get(layer);\n rootByLayer.get(layer).position[2] = -(point.y - origin.y) * metres;\n setTerrainHeight(layer);\n // Each group's metres are measured at its own latitude, not the shared camera origin.\n rootByLayer.get(layer).scale.fill(metres / Math.cos(locationByLayer.get(layer).lat * radians));\n sharedByLayer.set(layer, shared);\n rendererByLayer.set(layer, rendererByLayer.get(shared));\n sceneByLayer.set(layer, sceneByLayer.get(shared));\n cameraByLayer.set(layer, cameraByLayer.get(shared));\n layersByLayer.get(shared).add(layer);\n setParent(rootByLayer.get(layer), sceneByLayer.get(shared));\n traverse(rootByLayer.get(layer), restoreObject, layer);\n update(shared);\n if ((headerByLayer.get(layer) && kindByLayer.get(layer) !== 'raster') || geojsonByLayer.get(layer)) updateArea(layer);\n}\n", "import { areasByLayer } from '../weakmaps/areasByLayer.js';\n\n\n\n/** Emit a snapshot for consumers; ready does not wait for all neighborhood tasks. */\nexport function updateStatus(layer, enabled = true) {\n const progress = /* alloc */ { enabled, loaded: 0, skipped: 0, pending: 0, errors: /* alloc */ [] };\n let area;\n for (area of areasByLayer.get(layer).values()) {\n if (area.error) progress.errors.push(area.error);\n else if (!area.done) progress.pending++;\n progress.loaded += area.buildings ?? 0;\n progress.skipped += area.skipped ?? 0;\n }\n layer.fire('progress', progress);\n}\n", "import { L } from '../globals/L.js';\nimport { buildAreaPoint } from './buildAreaPoint.js';\nimport { buildAreaPolygon } from '../geometry/buildExtrudedPolygon.js';\nimport { parseColor } from '../colors/parseColor.js';\nimport { featureAnchor } from './featureAnchor.js';\nimport { extrusionStyle } from './extrusionStyle.js';\nimport { prepareAreaGeometryJob } from './prepareAreaGeometryJob.js';\n\nexport function buildAreaFeature(context, feature) {\n const { backend: layer, area, map } = context;\n const coords = area.coords;\n const coordinates = featureAnchor(feature, layer.options.nightLight);\n const geometry = feature.geometry, isTree = geometry.type === 'Point';\n const lon = coordinates[0], lat = coordinates[1];\n if (coords) {\n const anchor = map.project(/* alloc */ new L.LatLng(lat, lon), coords.z);\n if (Math.floor(anchor.x / 256) !== coords.x || Math.floor(anchor.y / 256) !== coords.y) return;\n }\n const style = extrusionStyle(layer, feature);\n if (style === null) {\n context.skipped++;\n return;\n }\n const { top, bottom = 0, color = 0xd9b38c } = style;\n const baseColor = parseColor(color);\n if (context.jobs) {\n prepareAreaGeometryJob(context, feature, lon, lat, style, baseColor);\n context.featureFaces.push(/* alloc */ {\n id: feature.id ?? feature.properties?.objectid ?? JSON.stringify(geometry),\n properties: feature.properties, baseColor,\n });\n return;\n }\n const vertexStart = context.positions.length / 3;\n if (isTree) buildAreaPoint(context, feature, lon, lat, style, baseColor);\n let polygon;\n if (geometry.type === 'Polygon') buildAreaPolygon(context, geometry.coordinates, top, bottom, baseColor);\n else if (geometry.type === 'MultiPolygon') for (polygon of geometry.coordinates) buildAreaPolygon(context, polygon, top, bottom, baseColor);\n const vertexEnd = context.positions.length / 3;\n context.featureFaces.push(/* alloc */ {\n id: feature.id ?? feature.properties?.objectid ?? JSON.stringify(geometry),\n properties: feature.properties, baseColor,\n faceStart: vertexStart / 3, faceEnd: vertexEnd / 3, vertexStart, vertexEnd,\n });\n}\n", "import { rootByLayer } from '../weakmaps/rootByLayer.js';\n\nimport { L } from '../globals/L.js';\nimport { mapElevationOf } from '../terrain/mapElevationOf.js';\n\nexport function projectedTree(context, lon, lat) {\n const { backend: layer, crs, origin, metres, map } = context;\n const location = /* alloc */ new L.LatLng(lat, lon);\n const point = crs.project(location);\n const elevation = mapElevationOf(map, location), root = rootByLayer.get(layer);\n return /* alloc */ {\n x: (point.x - origin.x) * metres,\n y: (point.y - origin.y) * metres,\n ground: Number.isFinite(elevation) && Number.isFinite(root.position[1])\n ? elevation - root.position[1] : 0,\n };\n}\n", "export const triangleContexts = [];\n", "export function groundOffset(point) {\r\n return point.ground || 0;\r\n}\n", "import { groundOffset } from '../sources/groundOffset.js';\r\n\r\nexport function addTriangle(context, a, ah, b, bh, c, ch, nx, ny, nz, color) {\r\n const { backend: layer, positions, normals, colors, uvs } = context;\r\n const ux = b.x - a.x, uy = bh - ah, uz = a.y - b.y;\r\n const vx = c.x - a.x, vy = ch - ah, vz = a.y - c.y;\r\n if ((uy * vz - uz * vy) * nx + (uz * vx - ux * vz) * ny + (ux * vy - uy * vx) * nz < 0) {\r\n const point = b, height = bh;\r\n b = c; bh = ch; c = point; ch = height;\r\n }\r\n positions.push(a.x, ah + groundOffset(a), -a.y,\r\n b.x, bh + groundOffset(b), -b.y,\r\n c.x, ch + groundOffset(c), -c.y);\r\n normals.push(nx, ny, nz, nx, ny, nz, nx, ny, nz);\r\n colors.push(color.r, color.g, color.b, color.r, color.g, color.b, color.r, color.g, color.b);\r\n if (layer.options.nightLight) uvs.push(...a.uv, ...b.uv, ...c.uv);\r\n}\r\n", "import { triangleContexts } from '../globals/triangleContexts.js';\n\nimport { addTriangle } from './appendAreaTriangle.js';\n\nexport function addGeneratedTriangle(...args) {\r\n addTriangle(triangleContexts[triangleContexts.length - 1], ...args);\r\n}\n", "import { triangleContexts } from '../globals/triangleContexts.js';\n\n\nimport { addGeneratedTriangle } from './addGeneratedTriangle.js';\n\nexport function generateTreeGeometry(context, generator, point, style) {\r\n triangleContexts.push(context);\r\n try {\r\n generator(point, style, addGeneratedTriangle);\r\n } finally {\r\n triangleContexts.pop();\r\n }\r\n}\n", "export const lampDirections = [\r\n { x: Math.cos(0 * Math.PI / 3), y: Math.sin(0 * Math.PI / 3), nx: Math.cos(0.5 * Math.PI / 3), nz: -Math.sin(0.5 * Math.PI / 3) },\r\n { x: Math.cos(1 * Math.PI / 3), y: Math.sin(1 * Math.PI / 3), nx: Math.cos(1.5 * Math.PI / 3), nz: -Math.sin(1.5 * Math.PI / 3) },\r\n { x: Math.cos(2 * Math.PI / 3), y: Math.sin(2 * Math.PI / 3), nx: Math.cos(2.5 * Math.PI / 3), nz: -Math.sin(2.5 * Math.PI / 3) },\r\n { x: Math.cos(3 * Math.PI / 3), y: Math.sin(3 * Math.PI / 3), nx: Math.cos(3.5 * Math.PI / 3), nz: -Math.sin(3.5 * Math.PI / 3) },\r\n { x: Math.cos(4 * Math.PI / 3), y: Math.sin(4 * Math.PI / 3), nx: Math.cos(4.5 * Math.PI / 3), nz: -Math.sin(4.5 * Math.PI / 3) },\r\n { x: Math.cos(5 * Math.PI / 3), y: Math.sin(5 * Math.PI / 3), nx: Math.cos(5.5 * Math.PI / 3), nz: -Math.sin(5.5 * Math.PI / 3) },\r\n];\r\n", "import { lampDirections } from '../globals/lampDirections.js';\n\nexport function ring(point, radius) {\n const points = /* alloc */ new Array(lampDirections.length);\n let i;\n for (i = 0; i < points.length; i++) {\n points[i] = /* alloc */ {\n x: point.x + lampDirections[i].x * radius,\n y: point.y + lampDirections[i].y * radius, ground: point.ground,\n uv: /* alloc */ [3, 3],\n };\n }\n return points;\n}\n", "import { parseColor } from \"../colors/parseColor.js\";\nimport { ring } from './createLampRing.js';\nimport { lampDirections } from '../globals/lampDirections.js';\n\n/** Schematic support and lamp head; wall-mounted fixtures do not get an invented pole. */\n\nexport function lampPostGeometry(point, style, addTriangle) {\n const color = parseColor(0x50565a), radius = style.poleRadius;\n if (!Number.isFinite(radius) || radius <= 0) {\n throw /* alloc */ new Error('Invalid lamp pole radius');\n }\n const center = /* alloc */ {\n ...point, uv: /* alloc */ [3, 3],\n };\n let r, low, high, points, i, a, b, nx, nz, section;\n for (section = 0; section < 2; section++) {\n r = section ? radius * 2.5 : radius;\n low = section ? style.top - 0.25 : 0;\n high = section ? style.top + 0.15 : style.top;\n points = ring(point, r);\n for (i = 0; i < 6; i++) {\n a = points[i], b = points[(i + 1) % 6];\n nx = lampDirections[i].nx, nz = lampDirections[i].nz;\n addTriangle(a, low, b, low, b, high, nx, 0, nz, color);\n addTriangle(a, low, b, high, a, high, nx, 0, nz, color);\n addTriangle(center, high, a, high, b, high, 0, 1, 0, color);\n addTriangle(center, low, b, low, a, low, 0, -1, 0, color);\n }\n }\n}\n", "export function quad(addTriangle, color, a, b, c, d, height, nx, ny, nz) {\r\n if (typeof nx !== 'number') {\r\n addTriangle(a, height, b, height, c, height, ...nx, color);\r\n addTriangle(a, height, c, height, d, height, ...nx, color);\r\n } else {\r\n addTriangle(a, height, b, height, c, height, nx, ny, nz, color);\r\n addTriangle(a, height, c, height, d, height, nx, ny, nz, color);\r\n }\r\n}\r\n", "export function emitter(point, u, v, axis) {\r\n const r = 0.65;\r\n return /* alloc */ {\r\n x: point.x + (axis === 2 ? 0 : u * r),\r\n y: point.y + (axis === 1 ? 0 : axis === 2 ? u * r : v * r),\r\n ground: point.ground + (axis === 0 ? 0 : v * r), uv: /* alloc */ [u, v],\r\n };\r\n}\r\n", "import { parseColor } from \"../colors/parseColor.js\";\nimport { quad } from './quad.js';\nimport { emitter } from './emitter.js';\n\n/** Three crossed emitter discs; illumination itself is evaluated on receiving surfaces. */\n\nexport function lightGeometry(point, style, addTriangle) {\n if (!Number.isFinite(style.lightRadius) || style.lightRadius <= 0) throw /* alloc */ new Error('Invalid light radius');\n const color = parseColor(style.color);\n let axis;\n for (axis = 0; axis < 3; axis++) {\n quad(addTriangle, color, emitter(point, -1, -1, axis), emitter(point, 1, -1, axis), emitter(point, 1, 1, axis), emitter(point, -1, 1, axis),\n style.top, axis === 2 ? 1 : 0, axis === 0 ? 1 : 0, axis === 1 ? 1 : 0);\n }\n}\n", "export const roundProfile = [\n [0, 0],\n [0.35, 0.8],\n [0.6, 1],\n [0.85, 0.7],\n [1, 0]\n];\n", "export const ringDirections = [{\n x: Math.cos(0 * Math.PI / 4),\n y: Math.sin(0 * Math.PI / 4),\n nx: Math.cos((0 + 0.5) * Math.PI / 4),\n nz: -Math.sin((0 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(1 * Math.PI / 4),\n y: Math.sin(1 * Math.PI / 4),\n nx: Math.cos((1 + 0.5) * Math.PI / 4),\n nz: -Math.sin((1 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(2 * Math.PI / 4),\n y: Math.sin(2 * Math.PI / 4),\n nx: Math.cos((2 + 0.5) * Math.PI / 4),\n nz: -Math.sin((2 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(3 * Math.PI / 4),\n y: Math.sin(3 * Math.PI / 4),\n nx: Math.cos((3 + 0.5) * Math.PI / 4),\n nz: -Math.sin((3 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(4 * Math.PI / 4),\n y: Math.sin(4 * Math.PI / 4),\n nx: Math.cos((4 + 0.5) * Math.PI / 4),\n nz: -Math.sin((4 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(5 * Math.PI / 4),\n y: Math.sin(5 * Math.PI / 4),\n nx: Math.cos((5 + 0.5) * Math.PI / 4),\n nz: -Math.sin((5 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(6 * Math.PI / 4),\n y: Math.sin(6 * Math.PI / 4),\n nx: Math.cos((6 + 0.5) * Math.PI / 4),\n nz: -Math.sin((6 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(7 * Math.PI / 4),\n y: Math.sin(7 * Math.PI / 4),\n nx: Math.cos((7 + 0.5) * Math.PI / 4),\n nz: -Math.sin((7 + 0.5) * Math.PI / 4)\n },\n];\n", "import { ringDirections } from '../globals/ringDirections.js';\n\n\nexport function ring(point, radius) {\n const result = /* alloc */ new Array(ringDirections.length);\n let i;\n for (i = 0; i < result.length; i++) {\n result[i] = /* alloc */ {\n x: point.x + ringDirections[i].x * radius,\n y: point.y + ringDirections[i].y * radius,\n ground: point.ground,\n };\n }\n return result;\n}\n", "import { ringDirections } from '../globals/ringDirections.js';\n\nimport { ring } from './createTreeRing.js';\n\nexport function surface(point, addTriangle, lowRadius, low, highRadius, high, color) {\n const lower = ring(point, lowRadius), upper = ring(point, highRadius);\n let i, next, slope, length, nx, nz, ny, normalX, normalZ;\n for (i = 0; i < 8; i++) {\n next = (i + 1) % 8;\n slope = (lowRadius - highRadius) / (high - low);\n length = Math.hypot(1, slope);\n ({ nx, nz } = ringDirections[i]);\n ny = slope / length;\n normalX = nx / length, normalZ = nz / length;\n if (lowRadius) addTriangle(lower[i], low, lower[next], low, upper[next], high, normalX, ny, normalZ, color);\n if (highRadius) addTriangle(lower[i], low, upper[next], high, upper[i], high, normalX, ny, normalZ, color);\n }\n}\n", "export function validateTree(trunkRadius, crownRadius, crownBottom, bottom, top, crownShape) {\r\n if (!Number.isFinite(trunkRadius) || !Number.isFinite(crownRadius) || !Number.isFinite(crownBottom) ||\r\n trunkRadius <= 0 || crownRadius < trunkRadius || crownBottom <= bottom || crownBottom >= top ||\r\n crownShape !== 'round' && crownShape !== 'cone') {\r\n throw /* alloc */ new Error('Invalid tree dimensions or crown shape');\r\n }\r\n}\r\n", "import { roundProfile } from '../globals/roundProfile.js';\n\n\nimport { parseColor } from \"../colors/parseColor.js\";\nimport { ring } from './createTreeRing.js';\nimport { surface } from './surface.js';\nimport { validateTree } from './validateTree.js';\n\n/** Low-poly tree, sharing the source block's buffers, picking and terrain offset. */\n\nexport function treeGeometry(point, style, addTriangle) {\n const { top, bottom = 0, trunkRadius, crownRadius, crownBottom, crownShape = 'round' } = style;\n validateTree(trunkRadius, crownRadius, crownBottom, bottom, top, crownShape);\n const trunk = parseColor(style.trunkColor ?? 0x72513a);\n const crown = parseColor(style.color ?? 0x4f823b);\n surface(point, addTriangle, trunkRadius, bottom, trunkRadius, crownBottom + (top - crownBottom) * 0.25, trunk);\n let i, low, lr, high, hr;\n if (crownShape === 'cone') {\n const base = ring(point, crownRadius);\n for (i = 0; i < 8; i++) addTriangle(point, crownBottom, base[i], crownBottom,\n base[(i + 1) % 8], crownBottom, 0, -1, 0, crown);\n surface(point, addTriangle, crownRadius, crownBottom, 0, top, crown);\n } else {\n for (i = 1; i < roundProfile.length; i++) {\n [low, lr] = roundProfile[i - 1], [high, hr] = roundProfile[i];\n surface(point, addTriangle, lr * crownRadius, crownBottom + low * (top - crownBottom),\n hr * crownRadius, crownBottom + high * (top - crownBottom), crown);\n }\n }\n}\n", "import { generateTreeGeometry } from './generateTreeGeometry.js';\r\nimport { lampPostGeometry } from './lampPostGeometry.js';\r\nimport { lightGeometry } from './lightGeometry.js';\r\nimport { treeGeometry } from './treeGeometry.js';\r\n\r\nexport function buildProjectedPoint(context, projected, style, baseColor, support) {\r\n const { top } = style;\r\n if (context.backend.options.nightLight) {\r\n if (!Number.isFinite(style.lightFlux) || style.lightFlux <= 0) throw /* alloc */ new Error('Invalid light flux');\r\n if (style.poleRadius > 0 && !context.supports.has(support)) {\r\n generateTreeGeometry(context, lampPostGeometry, projected, style);\r\n context.supports.add(support);\r\n }\r\n generateTreeGeometry(context, lightGeometry, projected, style);\r\n context.lights.push(/* alloc */ {\r\n position: /* alloc */ [projected.x, projected.ground + top, -projected.y],\r\n radius: Math.hypot(top, style.lightRadius), color: /* alloc */ [baseColor.r, baseColor.g, baseColor.b],\r\n flux: style.lightFlux,\r\n });\r\n } else generateTreeGeometry(context, treeGeometry, projected, style);\r\n}\r\n", "import { projectedTree } from '../projections/projectTreePoint.js';\nimport { buildProjectedPoint } from '../geometry/buildProjectedPoint.js';\n\nexport function buildAreaPoint(context, feature, lon, lat, style, baseColor) {\n const projected = projectedTree(context, lon, lat);\n buildProjectedPoint(context, projected, style, baseColor, feature.properties?.cod_ouvrag || `${lon},${lat}`);\n}\n", "import { rootByLayer } from '../weakmaps/rootByLayer.js';\n\nimport { L } from '../globals/L.js';\nimport { mapElevationOf } from '../terrain/mapElevationOf.js';\n\nexport function projectRing(context, ring) {\n const { backend: layer, crs, origin, metres, map } = context;\n if (ring.length < 4) throw /* alloc */ new Error('Invalid GeoJSON polygon ring');\n const path = /* alloc */ [];\n const root = rootByLayer.get(layer);\n let i, lng, lat, location, point, elevation;\n for (i = 0; i < ring.length - 1; i++) {\n lng = ring[i][0], lat = ring[i][1];\n if (!Number.isFinite(lng) || !Number.isFinite(lat)) throw /* alloc */ new Error('Invalid GeoJSON coordinates');\n location = /* alloc */ new L.LatLng(lat, lng);\n point = crs.project(location);\n elevation = mapElevationOf(map, location);\n path.push(/* alloc */ {\n x: (point.x - origin.x) * metres,\n y: (point.y - origin.y) * metres,\n ground: Number.isFinite(elevation) && Number.isFinite(root.position[1])\n ? elevation - root.position[1] : 0,\n });\n }\n return path;\n}\n", "import { triangulate } from '../triangulation/triangulate.js';\r\nimport { addTriangle } from './appendAreaTriangle.js';\r\nimport { isClockWise } from '../triangulation/isClockWise.js';\r\n\r\nexport function buildProjectedPolygon(context, paths, top, bottom, baseColor) {\r\n const points = /* alloc */ [];\r\n let path, point, a, b, c, index, sign, i, length, nx, nz;\r\n for (path of paths) for (point of path) points.push(point);\r\n for ([a, b, c] of triangulate(paths[0], paths.slice(1))) {\r\n addTriangle(context, points[a], top, points[b], top, points[c], top, 0, 1, 0, baseColor);\r\n if (bottom > 0) addTriangle(context, points[a], bottom, points[b], bottom, points[c], bottom, 0, -1, 0, baseColor);\r\n }\r\n for (index = 0; index < paths.length; index++) {\r\n path = paths[index];\r\n sign = isClockWise(path) === (index === 0) ? -1 : 1;\r\n for (i = 0; i < path.length; i++) {\r\n a = path[i], b = path[(i + 1) % path.length];\r\n length = Math.hypot(b.x - a.x, b.y - a.y);\r\n if (!length) continue;\r\n nx = sign * (b.y - a.y) / length, nz = sign * (b.x - a.x) / length;\r\n addTriangle(context, a, bottom, b, bottom, b, top, nx, 0, nz, baseColor);\r\n addTriangle(context, a, bottom, b, top, a, top, nx, 0, nz, baseColor);\r\n }\r\n }\r\n}\r\n", "import { projectRing } from '../projections/projectRing.js';\nimport { buildProjectedPolygon } from './buildProjectedPolygon.js';\n\nexport function buildAreaPolygon(context, rings, top, bottom, baseColor) {\n if (!rings.length) throw /* alloc */ new Error('Empty GeoJSON polygon');\n const paths = /* alloc */ [];\n let ring;\n for (ring of rings) paths.push(projectRing(context, ring));\n buildProjectedPolygon(context, paths, top, bottom, baseColor);\n}\n", "export function featureAnchor(feature, nightLight) {\r\n const geometry = feature?.geometry, point = geometry?.type === 'Point';\r\n if (nightLight && !point) throw /* alloc */ new Error('Night lights require Point geometry');\r\n if (geometry?.type !== 'Polygon' && geometry?.type !== 'MultiPolygon' && !point) throw /* alloc */ new Error('Unsupported GeoJSON geometry');\r\n const coordinates = point ? geometry.coordinates :\r\n geometry.type === 'Polygon' ? geometry.coordinates[0]?.[0] : geometry.coordinates[0]?.[0]?.[0];\r\n if (!Number.isFinite(coordinates?.[0]) || !Number.isFinite(coordinates?.[1])) throw /* alloc */ new Error('Invalid GeoJSON coordinates');\r\n return coordinates;\r\n}\r\n", "export function extrusionStyle(layer, feature) {\r\n const style = layer.options.style(feature);\r\n if (style === null) return null;\r\n if (!style || typeof style !== 'object') throw /* alloc */ new Error('style must return an extrusion style or null');\r\n const { top, bottom = 0 } = style;\r\n if (!Number.isFinite(top) || !Number.isFinite(bottom) || bottom < 0 || top <= bottom) {\r\n throw /* alloc */ new Error('Invalid extrusion heights: expected top > bottom >= 0');\r\n }\r\n return style;\r\n}\r\n", "import { projectedTree } from '../projections/projectTreePoint.js';\r\nimport { projectRing } from '../projections/projectRing.js';\r\nimport { parseColor } from '../colors/parseColor.js';\r\n\r\nexport function prepareAreaGeometryJob(context, feature, lon, lat, style, baseColor) {\r\n const geometry = feature.geometry;\r\n const polygons = /* alloc */ [];\r\n const rings = geometry.type === 'Polygon' ? /* alloc */ [geometry.coordinates]\r\n : geometry.type === 'MultiPolygon' ? geometry.coordinates : /* alloc */ [];\r\n let polygon, ring, paths;\r\n for (polygon of rings) {\r\n if (!polygon.length) throw /* alloc */ new Error('Empty GeoJSON polygon');\r\n paths = /* alloc */ [];\r\n for (ring of polygon) paths.push(projectRing(context, ring));\r\n polygons.push(paths);\r\n }\r\n const point = geometry.type === 'Point' ? projectedTree(context, lon, lat) : null;\r\n const nightLight = context.backend.options.nightLight;\r\n const crownColor = point ? parseColor(style.color ?? (nightLight ? undefined : 0x4f823b)) : baseColor;\r\n const trunkColor = point && !nightLight ? parseColor(style.trunkColor ?? 0x72513a) : null;\r\n context.jobs.push(/* alloc */ {\r\n point, polygons, baseColor: /* alloc */ { r: baseColor.r, g: baseColor.g, b: baseColor.b },\r\n support: feature.properties?.cod_ouvrag || `${lon},${lat}`,\r\n style: /* alloc */ {\r\n top: style.top, bottom: style.bottom ?? 0,\r\n color: /* alloc */ { r: crownColor.r, g: crownColor.g, b: crownColor.b },\r\n trunkColor: trunkColor ? /* alloc */ { r: trunkColor.r, g: trunkColor.g, b: trunkColor.b } : undefined,\r\n trunkRadius: style.trunkRadius, crownRadius: style.crownRadius,\r\n crownBottom: style.crownBottom, crownShape: style.crownShape,\r\n poleRadius: style.poleRadius, lightRadius: style.lightRadius, lightFlux: style.lightFlux,\r\n },\r\n });\r\n}\r\n", "/** Compact repeated features only when reconstructed float32 positions compare equal. */\r\nexport function instanceAreaGeometry(context) {\r\n const { positions, normals, colors, featureFaces } = context;\r\n if (context.backend.options.nightLight || featureFaces.length < 2) return context;\r\n const vertices = featureFaces[0].vertexEnd;\r\n const length = vertices * 3;\r\n if (!vertices || positions.length !== length * featureFaces.length) return context;\r\n const originX = Math.trunc(positions[0]), originY = Math.trunc(positions[1]), originZ = Math.trunc(positions[2]);\r\n const template = /* alloc */ new Float32Array(length);\r\n let i, instance, face, start;\r\n for (i = 0; i < length; i++) template[i] = positions[i] - (i % 3 === 0 ? originX : i % 3 === 1 ? originY : originZ);\r\n const offsets = /* alloc */ new Float32Array(featureFaces.length * 4);\r\n for (instance = 0; instance < featureFaces.length; instance++) {\r\n face = featureFaces[instance];\r\n start = instance * length;\r\n if (face.vertexStart !== instance * vertices || face.vertexEnd !== (instance + 1) * vertices) return context;\r\n offsets[instance * 4] = originX + positions[start] - positions[0];\r\n offsets[instance * 4 + 1] = originY + positions[start + 1] - positions[1];\r\n offsets[instance * 4 + 2] = originZ + positions[start + 2] - positions[2];\r\n offsets[instance * 4 + 3] = instance * vertices;\r\n for (i = 0; i < length; i++) {\r\n if (Math.fround(template[i] + offsets[instance * 4 + i % 3]) !== Math.fround(positions[start + i]) ||\r\n Math.fround(normals[i]) !== Math.fround(normals[start + i]) ||\r\n Math.fround(colors[i]) !== Math.fround(colors[start + i])) return context;\r\n }\r\n }\r\n return /* alloc */ {\r\n positions: template, normals: normals.slice(0, length), colors: colors.slice(0, length),\r\n instanceOffsets: offsets,\r\n };\r\n}\r\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\n\nimport { nextId } from '../globals/nextId.js';\n\n\nimport { emptyNode } from '../scene/createSceneNode.js';\nimport { createProgram } from '../materials/createProgram.js';\n\nimport { setParent } from '../scene/setParent.js';\nimport { update } from '../scene/scheduleSceneUpdate.js';\nimport { instanceAreaGeometry } from '../geometry/instanceAreaGeometry.js';\n\nexport function attachAreaMesh(context) {\n const { backend: layer, area } = context;\n if (!context.positions.length) {\n area.mesh = null, area.buildings = 0, area.skipped = context.skipped, area.done = true;\n return;\n }\n const device = rendererByLayer.get(layer).device;\n const data = context.preparedGeometry || instanceAreaGeometry(context);\n const attributes = /* alloc */ {\n position: /* alloc */ { size: 3, data: data.positions instanceof Float32Array ? data.positions : /* alloc */ new Float32Array(data.positions) },\n normal: /* alloc */ { size: 3, data: data.normals instanceof Float32Array ? data.normals : /* alloc */ new Float32Array(data.normals) },\n color: /* alloc */ { size: 3, data: data.colors instanceof Float32Array ? data.colors : /* alloc */ new Float32Array(data.colors) },\n };\n if (data.instanceOffsets) attributes.instanceOffset = /* alloc */ { size: 4, data: data.instanceOffsets };\n if (layer.options.nightLight) attributes.uv = /* alloc */ {\n size: 2, data: context.uvs instanceof Float32Array ? context.uvs : /* alloc */ new Float32Array(context.uvs),\n };\n let name, attribute;\n for (name in attributes) {\n attribute = attributes[name];\n attribute.count = attribute.data.length / attribute.size;\n attribute.buffer = device.createBuffer(/* alloc */ {\n size: Math.max(4, attribute.data.byteLength),\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n });\n device.queue.writeBuffer(attribute.buffer, 0, attribute.data);\n }\n const meshGeometry = /* alloc */ {\n device,\n bounds: data.bounds,\n attributes,\n drawRange: /* alloc */ { start: 0, count: attributes.position.count },\n };\n area.mesh = /* alloc */ {\n ...emptyNode(),\n device,\n geometry: meshGeometry,\n program: createProgram(layer, /* alloc */ {\n instanced: Boolean(data.instanceOffsets),\n vertexColors: true, roofTexture: layer.options.roofTexture,\n wallTexture: layer.options.wallTexture,\n nightLight: Boolean(layer.options.nightLight),\n alphaMode: layer.options.nightLight ? 'BLEND' : undefined,\n doubleSided: Boolean(layer.options.nightLight),\n }),\n id: nextId.value++,\n renderOrder: 0,\n fadeDuration: 250,\n extras: /* alloc */ { featureFaces: context.featureFaces, lights: context.lights },\n };\n area.buildings = context.featureFaces.length;\n area.skipped = context.skipped;\n area.done = true;\n setParent(area.mesh, rootByLayer.get(layer));\n update(layer);\n}\n", "export const archiveDecoder = new TextDecoder();\n", "/** Cumulative Hilbert ID for an archive tile. */\n\nexport function tileId(z, x, y) {\n if (!Number.isInteger(z) || !Number.isInteger(x) || !Number.isInteger(y) || z < 0 || z > 26 ||\n x < 0 || y < 0 || x >= 2 ** z || y >= 2 ** z) {\n throw /* alloc */ new Error('Invalid PMTiles tile coordinates');\n }\n let id = (4 ** z - 1) / 3;\n const n = 2 ** z;\n // Same cumulative Hilbert ordering used by build/pmtiles.js.\n let s, rx, ry, swap;\n for (s = n / 2; s >= 1; s /= 2) {\n rx = (x & s) ? 1 : 0, ry = (y & s) ? 1 : 0;\n id += s * s * ((3 * rx) ^ ry);\n if (!ry) {\n if (rx) { x = n - 1 - x; y = n - 1 - y; }\n swap = x;\n x = y;\n y = swap;\n }\n }\n return id;\n}\n", "export const directoryReader = {\n bytes: null,\n cursor: 0\n};\n", "\n\nexport function varint(reader) {\n const { bytes } = reader;\n let value = 0;\n let factor, byte;\n for (factor = 1; factor <= 2 ** 49; factor *= 128) {\n if (reader.cursor >= bytes.length) {\n throw /* alloc */ new Error('Truncated PMTiles directory');\n }\n byte = bytes[reader.cursor++];\n value += (byte & 127) * factor;\n if (!Number.isSafeInteger(value)) {\n throw /* alloc */ new Error('Invalid PMTiles directory integer');\n }\n if (byte < 128) return value;\n }\n throw /* alloc */ new Error('Invalid PMTiles directory integer');\n}\n", "import { directoryReader } from '../globals/directoryReader.js';\nimport { varint } from './readVarint.js';\n\n/** Decode delta/varint directory columns, rejecting malformed entries. */\n\nexport function decodeDirectory(data) {\n const reader = directoryReader;\n const bytes = /* alloc */ new Uint8Array(data);\n reader.bytes = bytes;\n reader.cursor = 0;\n try {\n const count = varint(reader);\n if (count > (bytes.length - reader.cursor) / 4) {\n throw /* alloc */ new Error('Invalid PMTiles directory count');\n }\n const entries = /* alloc */ new Array(count);\n let tileId = 0;\n let i, entry, value;\n for (i = 0; i < count; i++) {\n tileId += varint(reader);\n if (!Number.isSafeInteger(tileId) || (i && tileId <= entries[i - 1].tileId)) {\n throw /* alloc */ new Error('Invalid PMTiles directory tile IDs');\n }\n entries[i] = /* alloc */ { tileId, runLength: 0, length: 0, offset: 0 };\n }\n for (entry of entries) entry.runLength = varint(reader);\n for (entry of entries) {\n entry.length = varint(reader);\n if (!entry.length) {\n throw /* alloc */ new Error('Invalid PMTiles directory length');\n }\n }\n for (i = 0; i < entries.length; i++) {\n entry = entries[i];\n value = varint(reader);\n if (!value && !i) {\n throw /* alloc */ new Error('Invalid PMTiles directory offset');\n }\n entry.offset = value ? value - 1 : entries[i - 1].offset + entries[i - 1].length;\n }\n if (reader.cursor !== bytes.length) {\n throw /* alloc */ new Error('Trailing PMTiles directory data');\n }\n return entries;\n } finally {\n // Decoding is synchronous; release the input before reusing this reader.\n reader.bytes = null;\n reader.cursor = 0;\n }\n}\n", "export async function decompress(data, compression) {\n if (compression === 1) return data;\n if (compression !== 2) {\n throw /* alloc */ new Error(`Unsupported PMTiles compression: ${compression}`);\n }\n const blob = /* alloc */ new Blob(\n /* alloc */ [data]);\n const stream = /* alloc */ new DecompressionStream('gzip');\n return /* alloc */ new Response(blob.stream().pipeThrough(stream)).arrayBuffer();\n}\n", "import { decodeDirectory } from \"./decodeDirectory.js\";\nimport { decompress } from \"./decompress.js\";\nimport { read } from \"./readArchiveRange.js\";\n\nexport async function loadDirectory(layer, offset, length, compression) {\n return decodeDirectory(await decompress(await read(layer, offset, length), compression));\n}\n", "import { directoriesByLayer } from '../weakmaps/directoriesByLayer.js';\n\nimport { loadDirectory } from './loadDirectory.js';\r\n\r\nexport async function getDirectoryEntries(layer, offset, length, compression) {\r\n const directories = directoriesByLayer.get(layer);\r\n const key = `${offset}:${length}`;\r\n if (!directories.has(key)) {\r\n if (directories.size >= 32) directories.delete(directories.keys().next().value);\r\n directories.set(key, loadDirectory(layer, offset, length, compression));\r\n }\r\n const pending = directories.get(key);\r\n try {\r\n return await pending;\r\n } catch (error) {\r\n if (directories.get(key) === pending) directories.delete(key);\r\n throw error;\r\n }\r\n}\r\n", "export function findDirectoryEntry(entries, id) {\r\n let low = 0, high = entries.length - 1, mid;\r\n while (low <= high) {\r\n mid = (low + high) >> 1;\r\n if (entries[mid].tileId <= id) low = mid + 1;\r\n else high = mid - 1;\r\n }\r\n return entries[high];\r\n}\r\n", "import { decompress } from './decompress.js';\r\nimport { read } from './readArchiveRange.js';\r\n\r\nexport async function getTileData(layer, header, entry, id, signal) {\r\n if (id - entry.tileId >= entry.runLength) return;\r\n if (entry.offset + entry.length > header.tileDataLength) {\r\n throw /* alloc */ new Error('PMTiles tile outside data section');\r\n }\r\n const data = await decompress(await read(layer, header.tileDataOffset + entry.offset, entry.length, signal),\r\n header.tileCompression);\r\n signal?.throwIfAborted();\r\n return /* alloc */ { data };\r\n}\r\n", "import { getDirectoryEntries } from './getDirectoryEntries.js';\r\nimport { findDirectoryEntry } from './findDirectoryEntry.js';\r\nimport { getTileData } from './getTileData.js';\r\n\r\nexport async function findTile(layer, header, id, signal) {\r\n let offset = header.rootDirectoryOffset, length = header.rootDirectoryLength;\r\n let firstOffset = -1, secondOffset = -1, thirdOffset = -1;\r\n let depth, entries, entry, tile;\r\n for (depth = 0; depth < 4; depth++) {\r\n if (offset === firstOffset || offset === secondOffset || offset === thirdOffset) {\r\n throw /* alloc */ new Error('Cyclic PMTiles directory');\r\n }\r\n if (depth === 0) firstOffset = offset;\r\n else if (depth === 1) secondOffset = offset;\r\n else if (depth === 2) thirdOffset = offset;\r\n entries = await getDirectoryEntries(layer, offset, length, header.internalCompression);\r\n signal?.throwIfAborted();\r\n entry = findDirectoryEntry(entries, id);\r\n if (!entry) return;\r\n if (entry.runLength) {\r\n tile = await getTileData(layer, header, entry, id, signal);\r\n return tile;\r\n }\r\n if (entry.offset + entry.length > header.leafDirectoryLength) {\r\n throw /* alloc */ new Error('PMTiles directory outside leaf section');\r\n }\r\n offset = header.leafDirectoryOffset + entry.offset;\r\n length = entry.length;\r\n }\r\n throw /* alloc */ new Error('PMTiles directory depth exceeds four levels');\r\n}\r\n", "import { sceneLayers } from '../weakmaps/sceneLayers.js';\n\nimport { tileId } from './tileId.js';\nimport { getHeader } from './getHeader.js';\nimport { findTile } from './findTile.js';\n\n/** Nearest directory entry at/before the Hilbert ID, then follow leaf pointers. */\n\nexport async function getZxy(layer, z, x, y, signal) {\n if (!sceneLayers.has(layer)) return layer.getZxy(z, x, y, signal);\n if (layer.options.archive && layer.options.archive !== layer) {\n return getZxy(layer.options.archive, z, x, y, signal);\n }\n const id = tileId(z, x, y);\n signal?.throwIfAborted();\n const header = await getHeader(layer);\n signal?.throwIfAborted();\n if (z < header.minZoom || z > header.maxZoom) return;\n return findTile(layer, header, id, signal);\n}\n", "import { geojsonByLayer } from '../weakmaps/geojsonByLayer.js';\n\nimport { archiveDecoder } from '../globals/archiveDecoder.js';\n\nimport { getZxy } from './getZxy.js';\n\n\nexport async function loadSource(layer, area) {\n if (geojsonByLayer.get(layer)) {\n const { data, url } = layer.options;\n if (data !== undefined && url) {\n throw /* alloc */ new Error('GeoJSON source requires either data or url');\n }\n if (data !== undefined) return data;\n if (!url) {\n throw /* alloc */ new Error('GeoJSON source requires either data or url');\n }\n const sourceUrl = /* alloc */ new URL(url, document.baseURI);\n const response = await fetch(sourceUrl, /* alloc */ { signal: area.request.signal });\n if (!response.ok) {\n throw /* alloc */ new Error(`Unable to load GeoJSON: HTTP ${response.status}`);\n }\n return response.json();\n }\n const result = await getZxy(layer, area.coords.z, area.coords.x, area.coords.y, area.request.signal);\n return result\n ? JSON.parse(archiveDecoder.decode(result.data))\n : /* alloc */ {\n type: 'FeatureCollection',\n features: /* alloc */ [],\n };\n}\n", "import { locationByLayer } from '../weakmaps/locationByLayer.js';\n\nimport { radians } from '../globals/radians.js';\n\n\nexport function sourceAreaContext(layer, area, map) {\n const crs = map.options.crs, origin = crs.project(locationByLayer.get(layer));\n return /* alloc */ {\n backend: layer, area, map, crs, origin,\n metres: Math.cos(locationByLayer.get(layer).lat * radians),\n positions: /* alloc */ [],\n normals: /* alloc */ [],\n colors: /* alloc */ [],\n uvs: /* alloc */ [],\n featureFaces: /* alloc */ [],\n lights: /* alloc */ [],\n supports: /* alloc */ new Set(),\n skipped: 0,\n };\n}\n", "export const geometryWorkerUrl = import.meta?.url\r\n ? new URL('../workers/geometryWorker.js', import.meta.url).href\r\n : new URL('leaflet-city-mapper-worker.js', document.currentScript?.src || document.baseURI).href;\r\n", "export function settleGeometryWorker(task, event) {\r\n if (event.type === 'abort') task.reject(task.signal.reason);\r\n else if (event.type === 'error') task.reject(/* alloc */ new Error(`Geometry worker failed: ${event.message}`));\r\n else if (event.type === 'messageerror') task.reject(/* alloc */ new Error('Unable to receive geometry worker buffers'));\r\n else if (event.data.error) {\r\n const error = /* alloc */ new Error(event.data.error.message);\r\n error.name = event.data.error.name;\r\n task.reject(error);\r\n } else task.resolve(event.data);\r\n}\r\n", "import { settleGeometryWorker } from './settleGeometryWorker.js';\r\n\r\nexport function startGeometryWorker(task, resolve, reject) {\r\n task.resolve = resolve;\r\n task.reject = reject;\r\n task.onEvent = settleGeometryWorker.bind(null, task);\r\n task.worker.addEventListener('message', task.onEvent);\r\n task.worker.addEventListener('error', task.onEvent);\r\n task.worker.addEventListener('messageerror', task.onEvent);\r\n task.signal.addEventListener('abort', task.onEvent, /* alloc */ { once: true });\r\n if (task.signal.aborted) {\r\n reject(task.signal.reason);\r\n return;\r\n }\r\n task.worker.postMessage(task.input);\r\n}\r\n", "export const geometryWorkersByMap = new WeakMap();\r\n", "export function closeGeometryWorkers(pool) {\r\n pool.closed = true;\r\n let entry;\r\n for (entry of pool.entries) {\r\n entry.closed = true;\r\n entry.worker.terminate();\r\n if (entry.task) entry.task.reject(/* alloc */ new DOMException('Map removed', 'AbortError'));\r\n }\r\n pool.entries.clear();\r\n pool.idle.length = 0;\r\n}\r\n", "import { geometryWorkersByMap } from '../weakmaps/geometryWorkersByMap.js';\r\nimport { closeGeometryWorkers } from './closeGeometryWorkers.js';\r\n\r\nexport function acquireGeometryWorker(map, url) {\r\n let pool = map && geometryWorkersByMap.get(map);\r\n if (map && !pool) {\r\n pool = /* alloc */ { entries: /* alloc */ new Set(), idle: /* alloc */ [], closed: false };\r\n geometryWorkersByMap.set(map, pool);\r\n map.once('unload', closeGeometryWorkers.bind(null, pool));\r\n }\r\n let entry, i;\r\n if (pool) {\r\n if (pool.closed) throw /* alloc */ new DOMException('Map removed', 'AbortError');\r\n for (i = 0; i < pool.idle.length; i++) {\r\n if (pool.idle[i].url !== url) continue;\r\n entry = pool.idle[i];\r\n pool.idle.splice(i, 1);\r\n return entry;\r\n }\r\n entry = pool.idle.pop();\r\n if (entry) {\r\n entry.closed = true;\r\n entry.worker.terminate();\r\n pool.entries.delete(entry);\r\n }\r\n }\r\n entry = /* alloc */ {\r\n url, pool, worker: /* alloc */ new Worker(url, /* alloc */ { type: 'module' }),\r\n };\r\n if (pool) pool.entries.add(entry);\r\n return entry;\r\n}\r\n", "import { geometryWorkerUrl } from '../globals/geometryWorkerUrl.js';\r\nimport { startGeometryWorker } from './startGeometryWorker.js';\r\nimport { acquireGeometryWorker } from './acquireGeometryWorker.js';\r\n\r\nexport async function buildAreaInWorker(context, signal) {\r\n const entry = acquireGeometryWorker(context.map || context.backend._map, context.backend.options.workerUrl || geometryWorkerUrl);\r\n const { worker, pool } = entry;\r\n const task = /* alloc */ {\r\n worker, signal,\r\n input: /* alloc */ { jobs: context.jobs, nightLight: Boolean(context.backend.options.nightLight) },\r\n };\r\n entry.task = task;\r\n let completed = false;\r\n try {\r\n const data = await /* alloc */ new Promise(startGeometryWorker.bind(null, task));\r\n let i;\r\n for (i = 0; i < data.ranges.length; i++) Object.assign(context.featureFaces[i], data.ranges[i]);\r\n context.positions = data.positions;\r\n context.uvs = data.uvs;\r\n context.lights = data.lights;\r\n context.preparedGeometry = data;\r\n completed = true;\r\n } finally {\r\n worker.removeEventListener('message', task.onEvent);\r\n worker.removeEventListener('error', task.onEvent);\r\n worker.removeEventListener('messageerror', task.onEvent);\r\n signal.removeEventListener('abort', task.onEvent);\r\n entry.task = null;\r\n if (completed && pool && !pool.closed && !signal.aborted) pool.idle.push(entry);\r\n else {\r\n if (!entry.closed) worker.terminate();\r\n if (pool) pool.entries.delete(entry);\r\n }\r\n context.jobs = null;\r\n }\r\n}\r\n", "import { geojsonByLayer } from '../weakmaps/geojsonByLayer.js';\nimport { inflightByLayer } from '../weakmaps/inflightByLayer.js';\nimport { cameraViewByMap } from '../weakmaps/cameraViewByMap.js';\n\n\nimport { buildAreaFeature } from './buildAreaFeature.js';\nimport { attachAreaMesh } from './attachAreaMesh.js';\nimport { loadSource } from '../archives/loadSource.js';\nimport { sourceAreaContext } from './sourceAreaContext.js';\nimport { pump } from './pumpSourceAreas.js';\nimport { buildAreaInWorker } from '../workers/buildAreaInWorker.js';\n\nexport async function buildArea(layer, area, map) {\n let feature;\n try {\n await /* alloc */ new Promise(requestAnimationFrame);\n await cameraViewByMap.get(map);\n if (area.request.signal.aborted) return;\n const data = await loadSource(layer, area);\n if (area.request.signal.aborted) return;\n if (data?.type !== 'FeatureCollection' || !Array.isArray(data.features)) {\n throw /* alloc */ new Error('Invalid GeoJSON response');\n }\n if (geojsonByLayer.get(layer) && typeof layer.options.style !== 'function') {\n throw /* alloc */ new Error('style must be a function');\n }\n const context = sourceAreaContext(layer, area, map);\n // ponytail: feature-count cutoff avoids startup overhead; count vertices if giant single polygons matter.\n if (layer.options.worker !== false && typeof Worker !== 'undefined' && data.features.length >= 64) {\n context.jobs = /* alloc */ [];\n }\n let deadline = performance.now() + 4;\n for (feature of data.features) {\n if (area.request.signal.aborted) return;\n if (performance.now() >= deadline) {\n await /* alloc */ new Promise(requestAnimationFrame);\n if (area.request.signal.aborted) return;\n deadline = performance.now() + 4;\n }\n buildAreaFeature(context, feature);\n }\n if (context.jobs) await buildAreaInWorker(context, area.request.signal);\n if (area.request.signal.aborted) return;\n attachAreaMesh(context);\n } catch (error) {\n if (!area.request.signal.aborted) {\n area.error = error.message;\n layer.fire('error', /* alloc */ { error });\n }\n } finally {\n inflightByLayer.set(layer, inflightByLayer.get(layer) - 1);\n pump(layer, map);\n }\n}\n", "export function compareDistance(a, b) {\r\n return a.distance - b.distance;\r\n}\r\n", "import { areasByLayer } from '../weakmaps/areasByLayer.js';\n\nimport { compareDistance } from '../utils/compareDistance.js';\r\n\r\nexport function pendingSourceAreas(layers, map) {\r\n const pending = /* alloc */ [];\r\n let layer, area, center;\r\n for (layer of layers) {\r\n for (area of areasByLayer.get(layer).values()) {\r\n if (area.started || area.request.signal.aborted) continue;\r\n center = area.coords && map.project(map.getCenter(), area.coords.z).divideBy(256);\r\n pending.push(/* alloc */ {\r\n layer, area,\r\n distance: center\r\n ? Math.hypot(area.coords.x + 0.5 - center.x, area.coords.y + 0.5 - center.y) / 2 ** area.coords.z : 0,\r\n });\r\n }\r\n }\r\n pending.sort(compareDistance);\r\n return pending;\r\n}\r\n", "import { areasByLayer } from '../weakmaps/areasByLayer.js';\nimport { geojsonByLayer } from '../weakmaps/geojsonByLayer.js';\nimport { inflightByLayer } from '../weakmaps/inflightByLayer.js';\nimport { layersByLayer } from '../weakmaps/layersByLayer.js';\nimport { urlByLayer } from '../weakmaps/urlByLayer.js';\n\nimport { renderers } from '../weakmaps/renderers.js';\n\n\n\nimport { updateStatus } from './updateSourceStatus.js';\n\nimport { buildArea } from './buildArea.js';\nimport { pendingSourceAreas } from './pendingSourceAreas.js';\n\n/** Share four load/build slots across source layers, nearest ground blocks first. */\nexport function pump(layer, map = layer._map) {\n const shared = map && renderers.get(map);\n if (!shared) return;\n const layers = /* alloc */ [];\n let sourceLayer, area, areaBackend;\n for (sourceLayer of layersByLayer.get(shared)) {\n if (Number.isFinite(inflightByLayer.get(sourceLayer)) && areasByLayer.get(sourceLayer) && (urlByLayer.get(sourceLayer) || geojsonByLayer.get(sourceLayer))) layers.push(sourceLayer);\n }\n const pending = pendingSourceAreas(layers, map);\n let inflight = 0;\n for (sourceLayer of layers) inflight += inflightByLayer.get(sourceLayer);\n for ({ layer: areaBackend, area } of pending) {\n if (inflight >= 4) break;\n if (inflightByLayer.get(areaBackend) >= 2) continue;\n area.started = true;\n inflightByLayer.set(areaBackend, inflightByLayer.get(areaBackend) + 1);\n inflight++;\n buildArea(areaBackend, area, map);\n }\n for (sourceLayer of layers) updateStatus(sourceLayer);\n}\n", "export const highlightedFeatureByLayer = new WeakMap();\n", "export const hoveredFeatureByLayer = new WeakMap();\n", "import { highlightedFeatureByLayer } from '../weakmaps/highlightedFeatureByLayer.js';\n\n\n\nimport { update } from '../scene/scheduleSceneUpdate.js';\n\n/** Highlight a source vertex range in the shader; vertex colors stay untouched. */\n\nexport function setHighlight(layer, feature) {\n if (feature?.model) feature = null;\n if (highlightedFeatureByLayer.get(layer)?.mesh === feature?.mesh &&\n highlightedFeatureByLayer.get(layer)?.vertexStart === feature?.vertexStart) return;\n if (highlightedFeatureByLayer.get(layer)) highlightedFeatureByLayer.get(layer).mesh.highlight = null;\n highlightedFeatureByLayer.set(layer, feature);\n if (feature) {\n feature.mesh.highlightRange[0] = feature.vertexStart;\n feature.mesh.highlightRange[1] = feature.vertexEnd;\n feature.mesh.highlight = feature.mesh.highlightRange;\n }\n update(layer);\n}\n", "export const containerByLayer = new WeakMap();\n", "export const cursorByLayer = new WeakMap();\n", "export const tooltipByLayer = new WeakMap();\n", "import { containerByLayer } from '../weakmaps/containerByLayer.js';\nimport { cursorByLayer } from '../weakmaps/cursorByLayer.js';\nimport { layersByLayer } from '../weakmaps/layersByLayer.js';\nimport { sharedByLayer } from '../weakmaps/sharedByLayer.js';\nimport { tooltipByLayer } from '../weakmaps/tooltipByLayer.js';\n\n\n\n/** Update tooltip content/position and arbitrate cursor ownership across shared layers. */\n\nexport function showFeature(layer, feature, event) {\n const tooltip = tooltipByLayer.get(layer);\n if (!tooltip) return;\n if (feature) {\n tooltip.replaceChildren(layer.options.tooltip(feature));\n tooltip.hidden = false;\n const rect = containerByLayer.get(layer).getBoundingClientRect();\n const x = event.clientX - rect.left, y = event.clientY - rect.top;\n tooltip.style.left = `${x + tooltip.offsetWidth + 16 > rect.width ? x - tooltip.offsetWidth - 12 : x + 12}px`;\n tooltip.style.top = `${y + tooltip.offsetHeight + 16 > rect.height ? y - tooltip.offsetHeight - 12 : y + 12}px`;\n } else {\n tooltip.hidden = true;\n }\n const shared = sharedByLayer.get(layer);\n let sharedLayer;\n if (shared) {\n let visible = false;\n for (sharedLayer of layersByLayer.get(shared)) {\n if (tooltipByLayer.get(sharedLayer) && !tooltipByLayer.get(sharedLayer).hidden) {\n visible = true;\n break;\n }\n }\n if (visible) {\n if (cursorByLayer.get(shared) === undefined) cursorByLayer.set(shared, containerByLayer.get(layer).style.cursor);\n containerByLayer.get(layer).style.cursor = 'pointer';\n } else if (cursorByLayer.get(shared) !== undefined) {\n containerByLayer.get(layer).style.cursor = cursorByLayer.get(shared);\n cursorByLayer.delete(shared);\n }\n }\n}\n", "import { highlightedFeatureByLayer } from '../weakmaps/highlightedFeatureByLayer.js';\nimport { hoveredFeatureByLayer } from '../weakmaps/hoveredFeatureByLayer.js';\n\n\n\nimport { setHighlight } from '../picking/setHighlight.js';\nimport { showFeature } from '../picking/showFeature.js';\nimport { setParent } from '../scene/setParent.js';\nimport { update } from '../scene/scheduleSceneUpdate.js';\n\n/** Cancel pending work and dispose this block's GPU data, including any hover highlight. */\nexport function releaseArea(layer, area) {\n area.request.abort();\n let attribute;\n if (area.mesh) {\n if (highlightedFeatureByLayer.get(layer)?.mesh === area.mesh) {\n setHighlight(layer, null);\n hoveredFeatureByLayer.set(layer, null);\n showFeature(layer, null);\n }\n setParent(area.mesh, null);\n update(layer);\n const geometry = area.mesh.geometry;\n for (attribute of Object.values(geometry.attributes)) attribute.buffer.destroy();\n area.mesh.program.pipelineCache.clear();\n }\n}\n", "export function compareAreaDistance(a, b) {\n return a.distance - b.distance;\n}\n", "import { areasByLayer } from '../weakmaps/areasByLayer.js';\nimport { geojsonByLayer } from '../weakmaps/geojsonByLayer.js';\nimport { headerByLayer } from '../weakmaps/headerByLayer.js';\nimport { sharedByLayer } from '../weakmaps/sharedByLayer.js';\n\n\n\nimport { pump } from \"./pumpSourceAreas.js\";\nimport { releaseArea } from './releaseArea.js';\nimport { compareAreaDistance } from './compareAreaDistance.js';\n\n/** Cover the visible ground bounds and one bordering block, clipped to the archive. */\n\nexport function updateArea(layer) {\n if (!layer._map || !sharedByLayer.get(layer)) return;\n if (geojsonByLayer.get(layer)) {\n if (!areasByLayer.get(layer).has('geojson')) {\n areasByLayer.get(layer).set('geojson', /* alloc */ { request: /* alloc */ new AbortController() });\n }\n pump(layer);\n return;\n }\n if (!headerByLayer.get(layer)) return;\n const z = headerByLayer.get(layer).minZoom;\n const center = layer._map.project(layer._map.getCenter(), z).divideBy(256).floor();\n const bounds = layer._map.getBounds();\n const nw = layer._map.project(bounds.getNorthWest(), z).divideBy(256).floor();\n const se = layer._map.project(bounds.getSouthEast(), z).divideBy(256).floor();\n const archiveNW = layer._map.project(/* alloc */ [headerByLayer.get(layer).maxLat, headerByLayer.get(layer).minLon], z).divideBy(256).floor();\n const archiveSE = layer._map.project(/* alloc */ [headerByLayer.get(layer).minLat, headerByLayer.get(layer).maxLon], z).divideBy(256).floor();\n const wanted = /* alloc */ new Map();\n let x, y, key, area, coords;\n for (x = Math.max(0, nw.x - 1, archiveNW.x); x <= Math.min(2 ** z - 1, se.x + 1, archiveSE.x); x++) {\n for (y = Math.max(0, nw.y - 1, archiveNW.y); y <= Math.min(2 ** z - 1, se.y + 1, archiveSE.y); y++) {\n wanted.set(`${x}/${y}`, /* alloc */ { z, x, y });\n }\n }\n for ([key, area] of areasByLayer.get(layer)) {\n if (!wanted.has(key)) {\n releaseArea(layer, area);\n areasByLayer.get(layer).delete(key);\n }\n }\n // Load the nearest new blocks first without rebuilding retained geometry.\n const areas = /* alloc */ [];\n for ([key, coords] of wanted) {\n coords.distance = Math.hypot(coords.x + 0.5 - center.x, coords.y + 0.5 - center.y) / 2 ** z;\n areas.push(coords);\n }\n areas.sort(compareAreaDistance);\n for (coords of areas) {\n key = `${coords.x}/${coords.y}`;\n if (!areasByLayer.get(layer).has(key)) areasByLayer.get(layer).set(key, /* alloc */ { coords, request: /* alloc */ new AbortController() });\n }\n pump(layer);\n}\n", "import { locationByLayer } from '../weakmaps/locationByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\nimport { terrainBaseYByLayer } from '../weakmaps/terrainBaseYByLayer.js';\nimport { terrain3DByMap } from '../weakmaps/terrain3DByMap.js';\n\n\n\n\nimport { getElevation } from './getElevation.js';\n\nexport function setTerrainHeight(layer) {\n\n if (!rootByLayer.get(layer) || !locationByLayer.get(layer)) return;\n if (terrainBaseYByLayer.get(layer) == null) terrainBaseYByLayer.set(layer, rootByLayer.get(layer).position[1]);\n const terrain = terrain3DByMap.get(layer._map);\n const elevation = terrain && getElevation(terrain, locationByLayer.get(layer));\n const offset = Number.isFinite(elevation) ? layer.options.terrainOffset ?? 0 : 0;\n rootByLayer.get(layer).position[1] = terrainBaseYByLayer.get(layer) + (elevation ?? 0) + offset;\n}\n", "export function restoreGeometry(geometry, device) {\r\n if (geometry.attributes.index?.data instanceof Uint8Array) {\r\n geometry.attributes.index.data = /* alloc */ new Uint16Array(geometry.attributes.index.data);\r\n }\r\n let name, attribute, oldBuffer;\r\n for (name in geometry.attributes) {\r\n attribute = geometry.attributes[name];\r\n attribute.size ||= 1;\r\n attribute.count = attribute.data.length / attribute.size;\r\n attribute.indexFormat = attribute.data instanceof Uint32Array ? 'uint32' : 'uint16';\r\n oldBuffer = attribute.buffer;\r\n attribute.buffer = device.createBuffer(/* alloc */ {\r\n size: Math.max(4, attribute.data.byteLength),\r\n usage: name === 'index'\r\n ? GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST\r\n : GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\r\n });\r\n device.queue.writeBuffer(attribute.buffer, 0, attribute.data);\r\n oldBuffer?.destroy();\r\n }\r\n geometry.device = device;\r\n geometry.drawRange.count = geometry.attributes.index?.count || geometry.attributes.position.count;\r\n}\r\n", "export function restoreMaterialTextures(material, device) {\r\n let name, texture;\r\n for (name in material) {\r\n if (name !== 'baseTexture' && name !== 'metalTexture' && name !== 'emissiveTexture' && name !== 'occlusionTexture') continue;\r\n texture = material[name];\r\n if (!texture || texture.device === device) continue;\r\n texture.device = device;\r\n texture.texture = device.createTexture(/* alloc */ {\r\n size: /* alloc */ [texture.image.width, texture.image.height],\r\n format: texture.format,\r\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,\r\n });\r\n texture.sampler = device.createSampler(texture.samplerOptions);\r\n texture.uploaded = null;\r\n }\r\n}\r\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { sharedByLayer } from '../weakmaps/sharedByLayer.js';\n\n\n\nimport { createProgram } from '../materials/createProgram.js';\nimport { restoreGeometry } from '../geometry/restoreGeometry.js';\nimport { restoreMaterialTextures } from '../textures/restoreMaterialTextures.js';\n\nexport function restoreObject(object, layer) {\n const shared = sharedByLayer.get(layer);\n let texture;\n if (object.geometry && object.geometry.device !== rendererByLayer.get(shared).device) {\n const geometry = object.geometry;\n const material = object.program._layerMaterial;\n const device = rendererByLayer.get(shared).device;\n restoreGeometry(geometry, device);\n object.bindGroup = null;\n if (object.boundTextures) object.boundTextures.length = 0;\n else object.boundTextures = /* alloc */ [];\n restoreMaterialTextures(material, device);\n object.program.pipelineCache.clear();\n object.program = createProgram(layer, material);\n object.device = device;\n }\n if (object.texture && object.texture.device !== rendererByLayer.get(shared).device) {\n texture = object.texture;\n texture.device = rendererByLayer.get(shared).device;\n texture.texture = rendererByLayer.get(shared).device.createTexture(/* alloc */ {\n size: /* alloc */ [object.texture.image.width, object.texture.image.height],\n format: object.texture.format,\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,\n });\n texture.sampler = rendererByLayer.get(shared).device.createSampler(texture.samplerOptions);\n texture.uploaded = null;\n }\n}\n", "export const rendererDevices = new WeakMap();\n", "export function showWebGPUWarning(map) {\n const container = map.getContainer();\n if (container.querySelector('.leaflet-webgpu-warning')) return;\n const warning = document.createElement('div');\n warning.className = 'leaflet-webgpu-warning';\n warning.setAttribute('role', 'alert');\n warning.style.cssText = 'position:absolute;z-index:1000;top:50%;left:50%;transform:translate(-50%,-50%);max-width:calc(100% - 32px);box-sizing:border-box;padding:12px 16px;border:1px solid #c98b24;border-radius:6px;background:#fff8e6;box-shadow:0 3px 12px #0005;color:#30251d;font:14px/1.5 sans-serif;text-align:center;pointer-events:auto';\n warning.append('WebGPU is not available in this browser or device. ');\n const link = document.createElement('a');\n link.href = 'https://developer.mozilla.org/en-US/docs/Web/API/WebGPU_API#browser_compatibility';\n link.target = '_blank';\n link.rel = 'noopener noreferrer';\n link.textContent = 'Learn more';\n warning.append(link);\n container.append(warning);\n}\n", "import { rendererReadyByLayer } from '../weakmaps/rendererReadyByLayer.js';\n\nimport { renderers } from '../weakmaps/renderers.js';\n\n\nimport { showWebGPUWarning } from '../gpu/showWebGPUWarning.js';\n\nexport function failAttachment(error, layer, map) {\n showWebGPUWarning(map);\n rendererReadyByLayer.get(layer).reject(error);\n renderers.delete(map);\n throw error;\n}\n", "import { failAttachment } from '../scene/failAttachment.js';\n\nexport async function requestAdapter(layer, map) {\n let adapter;\n try {\n adapter = await navigator.gpu.requestAdapter();\n } catch (error) {\n failAttachment(error, layer, map);\n }\n if (!adapter) failAttachment(/* alloc */ new Error('Unable to acquire a WebGPU adapter'), layer, map);\n return adapter;\n}\n", "import { failAttachment } from '../scene/failAttachment.js';\n\nexport async function requestDevice(adapter, layer, map) {\n try {\n return await adapter.requestDevice();\n } catch (error) {\n failAttachment(error, layer, map);\n }\n}\n", "import { layersByLayer } from '../weakmaps/layersByLayer.js';\nimport { rendererByLayer } from '../weakmaps/rendererByLayer.js';\n\nimport { rendererDevices } from '../weakmaps/rendererDevices.js';\nimport { renderers } from '../weakmaps/renderers.js';\n\n\n\nexport function rendererDeviceError(event) {\n const map = rendererDevices.get(event.currentTarget);\n const owner = renderers.get(map);\n if (rendererByLayer.get(owner)?.device !== event.currentTarget) return;\n if (!layersByLayer.get(owner)) return;\n let layer;\n for (layer of layersByLayer.get(owner)) layer.fire('error', /* alloc */ { error: event.error });\n}\n", "import { layersByLayer } from '../weakmaps/layersByLayer.js';\nimport { rendererByLayer } from '../weakmaps/rendererByLayer.js';\n\nimport { rendererDevices } from '../weakmaps/rendererDevices.js';\nimport { renderers } from '../weakmaps/renderers.js';\n\n\n\nexport function rendererDeviceLost([info, device]) {\n const map = rendererDevices.get(device);\n const owner = renderers.get(map);\n if (!owner || rendererByLayer.get(owner)?.device !== device) return;\n const error = /* alloc */ new Error(`WebGPU device lost: ${info.message || info.reason}`);\n let layer;\n for (layer of layersByLayer.get(owner)) layer.fire('error', /* alloc */ { error });\n}\n", "/** Perspective camera state: fov in degrees, near/far in scene metres. */\r\nexport function createSceneCamera() {\r\n return /* alloc */ {\r\n position: /* alloc */ [0, 0, 0],\r\n up: /* alloc */ [0, 1, 0],\r\n target: /* alloc */ [0, 0, 0],\r\n x: /* alloc */ [0, 0, 0],\r\n y: /* alloc */ [0, 0, 0],\r\n z: /* alloc */ [0, 0, 0],\r\n viewMatrix: /* alloc */ [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\r\n projectionMatrix: /* alloc */ [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\r\n projectionViewMatrix: /* alloc */ [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\r\n viewTransform: /* alloc */ new DOMMatrix(),\r\n projectionTransform: /* alloc */ new DOMMatrix(),\r\n projectionViewTransform: /* alloc */ new DOMMatrix(),\r\n fov: 45,\r\n aspect: 1,\r\n near: 0.1,\r\n far: 10000,\r\n };\r\n}\r\n", "export const sceneSunlightUniforms = new Float32Array(20);\nsceneSunlightUniforms[0] = sceneSunlightUniforms[5] =\n sceneSunlightUniforms[10] = sceneSunlightUniforms[15] = 1;\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\n\nimport { sceneSunlightUniforms } from '../globals/sceneSunlightUniforms.js';\r\nimport { resizeSunlight } from '../shadows/resizeSunlight.js';\r\n\r\nexport function initializeRendererResources(layer, device) {\r\n const layout = device.createBindGroupLayout(/* alloc */ {\r\n entries: /* alloc */ [\r\n /* alloc */ { binding: 0, visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT, buffer: /* alloc */ { type: 'uniform' } },\r\n /* alloc */ { binding: 1, visibility: GPUShaderStage.FRAGMENT, texture: /* alloc */ { sampleType: 'depth' } },\r\n /* alloc */ { binding: 2, visibility: GPUShaderStage.FRAGMENT, sampler: /* alloc */ { type: 'comparison' } },\r\n /* alloc */ { binding: 3, visibility: GPUShaderStage.FRAGMENT, buffer: /* alloc */ { type: 'read-only-storage' } },\r\n ]\r\n });\r\n const buffer = rendererByLayer.get(layer).device.createBuffer(/* alloc */ { size: 80, usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST });\r\n const sampler = rendererByLayer.get(layer).device.createSampler(/* alloc */ { compare: 'less-equal', minFilter: 'linear', magFilter: 'linear' });\r\n const lights = rendererByLayer.get(layer).device.createBuffer(/* alloc */ { size: 32, usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST });\r\n rendererByLayer.get(layer).sunlight = /* alloc */ { layout, buffer, sampler, lights, size: 0 };\r\n rendererByLayer.get(layer).device.queue.writeBuffer(buffer, 0, sceneSunlightUniforms);\r\n resizeSunlight(layer, 1);\r\n const emptyImage = document.createElement('canvas');\r\n emptyImage.width = 1;\r\n emptyImage.height = 1;\r\n rendererByLayer.get(layer).roofFallbackTexture = /* alloc */ {\r\n device,\r\n texture: device.createTexture(/* alloc */ {\r\n size: /* alloc */ [1, 1],\r\n format: 'rgba8unorm',\r\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,\r\n }),\r\n sampler: device.createSampler(/* alloc */ {\r\n addressModeU: 'clamp-to-edge', addressModeV: 'clamp-to-edge',\r\n }),\r\n image: emptyImage, format: 'rgba8unorm', srgb: false, uploaded: null,\r\n };\r\n}\r\n", "export const queuedByLayer = new WeakMap();\n", "export const pendingMapChanges = [];\n", "import { queuedByLayer } from '../weakmaps/queuedByLayer.js';\nimport { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { sharedByLayer } from '../weakmaps/sharedByLayer.js';\n\nimport { pendingMapChanges } from '../globals/pendingMapChanges.js';\n\n\n\nimport { update } from './scheduleSceneUpdate.js';\nimport { render } from '../rendering/render.js';\n\nexport function renderPendingMapChange() {\n const layer = pendingMapChanges.shift();\n queuedByLayer.set(layer, false);\n if (sharedByLayer.get(layer) !== layer || !rendererByLayer.get(layer)) return;\n if (layer._map._animatingZoom) update(layer);\n else render(layer);\n}\n", "import { queuedByLayer } from '../weakmaps/queuedByLayer.js';\n\nimport { pendingMapChanges } from '../globals/pendingMapChanges.js';\n\n\nimport { update } from './scheduleSceneUpdate.js';\nimport { render } from \"../rendering/render.js\";\n\nimport { renderPendingMapChange } from './renderPendingMapChange.js';\n\n/** Map movement: render within the frame of Leaflet's CSS transforms, coalescing same-tick events. */\n\nexport function onMapChange() {\n const layer = this;\n if (queuedByLayer.get(layer)) return;\n queuedByLayer.set(layer, true);\n pendingMapChanges.push(layer);\n queueMicrotask(renderPendingMapChange);\n}\n", "export const zoomLevelByLayer = new WeakMap();\n", "import { zoomLevelByLayer } from '../weakmaps/zoomLevelByLayer.js';\n\n\n\n/** Preserve the outgoing tile level before Leaflet changes its logical zoom. */\n\nexport function startZoom() {\n zoomLevelByLayer.set(this, null);\n}\n", "export const pendingZoomAnimations = [];\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { sharedByLayer } from '../weakmaps/sharedByLayer.js';\n\nimport { pendingZoomAnimations } from '../globals/pendingZoomAnimations.js';\n\n\n\nimport { render } from '../rendering/render.js';\n\nexport function renderPendingZoomAnimation() {\n const layer = pendingZoomAnimations.shift();\n if (sharedByLayer.get(layer) === layer && rendererByLayer.get(layer)) render(layer);\n}\n", "import { zoomViewByLayer } from '../weakmaps/zoomViewByLayer.js';\n\nimport { pendingZoomAnimations } from '../globals/pendingZoomAnimations.js';\n\n\nimport { render } from \"../rendering/render.js\";\n\nimport { renderPendingZoomAnimation } from './renderPendingZoomAnimation.js';\n\nexport function onZoomAnim(event) {\n const map = this._map;\n if (event && !zoomViewByLayer.get(this)) {\n zoomViewByLayer.set(this, /* alloc */ { from: map.getCenter(), zoom: map.getZoom(), to: event.center,\n targetZoom: event.zoom, start: performance.now() });\n map.getContainer().classList.add('leaflet-camera-zoom');\n }\n pendingZoomAnimations.push(this);\n queueMicrotask(renderPendingZoomAnimation);\n}\n", "import { zoomLevelByLayer } from '../weakmaps/zoomLevelByLayer.js';\nimport { zoomTransitionsByLayer } from '../weakmaps/zoomTransitionsByLayer.js';\nimport { zoomViewByLayer } from '../weakmaps/zoomViewByLayer.js';\nimport { cameraViewByMap } from '../weakmaps/cameraViewByMap.js';\n\n\n\nimport { mapUpdateCameraOverlays } from '../camera/mapUpdateCameraOverlays.js';\n\nimport { update } from '../scene/scheduleSceneUpdate.js';\n\n/** Stop using the outgoing level after zoomend; the next redraw uses current tiles. */\n\nexport function endZoom() {\n const layer = this;\n let animation;\n if (zoomTransitionsByLayer.get(layer)) {\n for (animation of zoomTransitionsByLayer.get(layer).keys()) animation.finish();\n }\n zoomTransitionsByLayer.set(layer, null);\n zoomViewByLayer.set(layer, null);\n cameraViewByMap.delete(layer._map);\n layer._map.getContainer().classList.remove('leaflet-camera-zoom');\n mapUpdateCameraOverlays(layer._map);\n zoomLevelByLayer.set(layer, null);\n update(layer);\n}\n", "import { sizeByLayer } from '../weakmaps/sizeByLayer.js';\n\nimport { onMapChange } from '../scene/onMapChange.js';\r\nimport { startZoom } from '../animations/startZoom.js';\r\nimport { onZoomAnim } from '../animations/onZoomAnim.js';\r\nimport { endZoom } from '../animations/endZoom.js';\r\n\r\nexport function mountRenderer(layer, map, canvas) {\r\n sizeByLayer.set(layer, null);\r\n canvas.className = 'leaflet-3d';\r\n canvas.style.cssText = 'position:absolute;top:0;left:0;pointer-events:none';\r\n canvas.setAttribute('role', 'img');\r\n canvas.setAttribute('aria-label', layer.options.ariaLabel ?? '3D scene');\r\n let pane = map.getPane('webgpuPane');\r\n if (!pane) {\r\n pane = map.createPane('webgpuPane', map.getContainer());\r\n // The pitch sky uses 0 and may be inserted after this pane.\r\n pane.style.zIndex = 1;\r\n pane.style.pointerEvents = 'none';\r\n }\r\n pane.append(canvas);\r\n map.on('move zoom rotate pitch resize viewreset layeradd layerremove', onMapChange, layer);\r\n map.on('zoomstart', startZoom, layer);\r\n map.on('zoomanim', onZoomAnim, layer);\r\n map.on('zoomend', endZoom, layer);\r\n}\r\n", "import { cameraByLayer } from '../weakmaps/cameraByLayer.js';\nimport { layersByLayer } from '../weakmaps/layersByLayer.js';\nimport { locationByLayer } from '../weakmaps/locationByLayer.js';\nimport { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { sceneByLayer } from '../weakmaps/sceneByLayer.js';\nimport { sceneOriginByLayer } from '../weakmaps/sceneOriginByLayer.js';\nimport { sharedByLayer } from '../weakmaps/sharedByLayer.js';\n\nimport { rendererDevices } from '../weakmaps/rendererDevices.js';\r\nimport { emptyNode } from '../scene/createSceneNode.js';\r\nimport { failAttachment } from '../scene/failAttachment.js';\r\nimport { requestAdapter } from './requestAdapter.js';\r\nimport { requestDevice } from './requestDevice.js';\r\nimport { rendererDeviceError } from './rendererDeviceError.js';\r\nimport { rendererDeviceLost } from './rendererDeviceLost.js';\r\nimport { createSceneCamera } from '../camera/createSceneCamera.js';\r\nimport { initializeRendererResources } from './initializeRendererResources.js';\r\nimport { mountRenderer } from './mountRenderer.js';\r\n\r\nexport async function initializeSharedRenderer(layer, map) {\r\n const canvas = document.createElement('canvas');\r\n if (!navigator.gpu) {\r\n failAttachment(/* alloc */ new Error('Layer3D requires WebGPU'), layer, map);\r\n }\r\n const adapter = await requestAdapter(layer, map);\r\n const device = await requestDevice(adapter, layer, map);\r\n rendererDevices.set(device, map);\r\n device.addEventListener('uncapturederror', rendererDeviceError);\r\n Promise.all(/* alloc */ [device.lost, Promise.resolve(device)]).then(rendererDeviceLost);\r\n const context = canvas.getContext('webgpu');\r\n if (!context) {\r\n device.destroy();\r\n failAttachment(/* alloc */ new Error('Unable to create a WebGPU canvas context'), layer, map);\r\n }\r\n const format = navigator.gpu.getPreferredCanvasFormat();\r\n context.configure(/* alloc */ { device, format, alphaMode: 'premultiplied' });\r\n map.getContainer().querySelector('.leaflet-webgpu-warning')?.remove();\r\n sharedByLayer.set(layer, layer);\r\n layersByLayer.set(layer, /* alloc */ new Set());\r\n sceneOriginByLayer.set(layer, locationByLayer.get(layer));\r\n sceneByLayer.set(layer, emptyNode());\r\n cameraByLayer.set(layer, createSceneCamera());\r\n rendererByLayer.set(layer, /* alloc */ {\r\n device,\r\n context,\r\n format,\r\n canvas,\r\n dpr: Math.min(window.devicePixelRatio, 2)\r\n });\r\n initializeRendererResources(layer, device);\r\n mountRenderer(layer, map, canvas);\r\n}\r\n", "export const modelByLayer = new WeakMap();\n", "export const geometryDecoder = new TextDecoder();\n", "export function hasUnsupportedPrimitives(meshes) {\n if (!meshes) return false;\n let mesh, primitive;\n for (mesh of meshes) {\n for (primitive of mesh.primitives) {\n if (primitive.targets || (primitive.mode !== undefined && primitive.mode !== 4)) return true;\n }\n }\n return false;\n}\n", "import { geometryDecoder } from '../globals/geometryDecoder.js';\n/** Decode a static glTF JSON document or GLB v2 container. */\nimport { hasUnsupportedPrimitives } from './hasUnsupportedPrimitives.js';\n\n\nexport function decodeModel(data) {\n const view = /* alloc */ new DataView(data);\n const decoder = geometryDecoder;\n let description;\n let offset, length, type, chunk;\n if (view.getUint32(0, true) === 0x46546c67) {\n // Decode GLB v2 chunks; unknown types are skipped.\n if (view.getUint32(4, true) !== 2 || view.getUint32(8, true) !== data.byteLength) {\n throw /* alloc */ new Error('Invalid GLB header');\n }\n let binary;\n for (offset = 12; offset < data.byteLength;) {\n if (offset + 8 > data.byteLength) {\n throw /* alloc */ new Error('Truncated GLB chunk');\n }\n length = view.getUint32(offset, true), type = view.getUint32(offset + 4, true);\n offset += 8;\n if (offset + length > data.byteLength) {\n throw /* alloc */ new Error('Truncated GLB data');\n }\n chunk = data.slice(offset, offset + length);\n if (type === 0x4e4f534a) {\n description = JSON.parse(decoder.decode(chunk));\n }\n if (type === 0x004e4942) {\n binary = chunk;\n }\n offset += length;\n }\n if (!description) {\n throw /* alloc */ new Error('Missing GLB JSON');\n }\n if (binary) {\n description.buffers[0].binary = binary;\n }\n } else {\n description = JSON.parse(decoder.decode(data));\n }\n if (description.skins?.length || description.animations?.length || description.extensionsRequired?.length || hasUnsupportedPrimitives(description.meshes)) {\n throw /* alloc */ new Error('Layer3D supports static triangle glTF models without required extensions');\n }\n return description;\n}\n", "import { modelByLayer } from '../weakmaps/modelByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\nimport { sceneOriginByLayer } from '../weakmaps/sceneOriginByLayer.js';\nimport { sharedByLayer } from '../weakmaps/sharedByLayer.js';\nimport { terrainReadyByLayer } from '../weakmaps/terrainReadyByLayer.js';\nimport { terrainZoomByLayer } from '../weakmaps/terrainZoomByLayer.js';\n\nimport { radians } from '../globals/radians.js';\nimport { L } from '../globals/L.js';\nimport { HEIGHT } from '../globals/HEIGHT.js';\n\n\nimport { computeBounds } from './computeBounds.js';\nimport { getElevation } from '../terrain/getElevation.js';\nimport { update } from '../scene/scheduleSceneUpdate.js';\nimport { updateWorldMatrix } from '../transforms/updateWorldMatrix.js';\nimport { vertexNormals } from './vertexNormals.js';\nimport { collectMeshes } from '../collision/collectMeshes.js';\n\nexport function conformModelToTerrain(layer, terrain) {\n if (!modelByLayer.get(layer)) return;\n const meshes = /* alloc */ [];\n collectMeshes(modelByLayer.get(layer), meshes);\n let mesh, positions, geometry, position, normals, attribute, normal, world, inverse, i, x, y, z;\n let worldY, weight, worldX, worldZ, point, elevation, offset;\n if (!terrainReadyByLayer.get(terrain) || !layer.options.terrainConform) {\n for (mesh of meshes) {\n positions = mesh.geometry._terrainBasePositions;\n if (!positions) continue;\n geometry = mesh.geometry, position = geometry.attributes.position;\n position.data.set(positions);\n mesh.device.queue.writeBuffer(position.buffer, 0, positions);\n normals = geometry._terrainBaseNormals;\n if (normals) {\n geometry.attributes.normal.data.set(normals);\n mesh.device.queue.writeBuffer(geometry.attributes.normal.buffer, 0, normals);\n }\n computeBounds(geometry);\n }\n return;\n }\n\n updateWorldMatrix(rootByLayer.get(layer));\n const map = layer._map, crs = map.options.crs;\n const origin = crs.project(sceneOriginByLayer.get(sharedByLayer.get(layer)));\n const metres = Math.cos(sceneOriginByLayer.get(sharedByLayer.get(layer)).lat * radians);\n const pixelScale = crs.scale(terrainZoomByLayer.get(terrain));\n\n for (mesh of meshes) {\n geometry = mesh.geometry, attribute = geometry.attributes.position;\n geometry._terrainBasePositions ||= attribute.data.slice();\n normal = geometry.attributes.normal;\n geometry._terrainBaseNormals ||= normal.data.slice();\n attribute.data.set(geometry._terrainBasePositions);\n world = mesh.worldMatrix, inverse = /* alloc */ new DOMMatrix(world).inverse().toFloat64Array();\n for (i = 0; i < attribute.data.length; i += 3) {\n x = attribute.data[i], y = attribute.data[i + 1], z = attribute.data[i + 2];\n worldY = world[1] * x + world[5] * y + world[9] * z + world[13];\n weight = Math.max(0, Math.min(1, 1 - (worldY - rootByLayer.get(layer).position[1]) / HEIGHT));\n if (!weight) continue;\n worldX = world[0] * x + world[4] * y + world[8] * z + world[12];\n worldZ = world[2] * x + world[6] * y + world[10] * z + world[14];\n point = crs.transformation.transform(/* alloc */ new L.Point(\n origin.x + worldX / metres, origin.y - worldZ / metres), pixelScale);\n elevation = getElevation(terrain, point);\n if (!Number.isFinite(elevation)) continue;\n offset = (elevation - worldY) * weight;\n attribute.data[i] += inverse[4] * offset;\n attribute.data[i + 1] += inverse[5] * offset;\n attribute.data[i + 2] += inverse[6] * offset;\n }\n mesh.device.queue.writeBuffer(attribute.buffer, 0, attribute.data);\n normal.data.set(vertexNormals(attribute.data, geometry.attributes.index?.data));\n mesh.device.queue.writeBuffer(normal.buffer, 0, normal.data);\n computeBounds(geometry);\n }\n update(layer);\n}\n", "export const HEIGHT = 8;\n", "/** Area-weighted vertex normals, for indexed or non-indexed triangles. */\n\nexport function vertexNormals(p, indices) {\n // Accumulate area-weighted face normals for shared vertices, then normalize.\n const normals = /* alloc */ new Float32Array(p.length);\n let i, a, b, c, ux, uy, uz, vx, vy, vz, j, nx, ny, nz, index, length;\n for (i = 0; i < (indices?.length || p.length / 3); i += 3) {\n a = indices ? indices[i] : i, b = indices ? indices[i + 1] : i + 1, c = indices ? indices[i + 2] : i + 2;\n ux = p[b * 3] - p[a * 3], uy = p[b * 3 + 1] - p[a * 3 + 1], uz = p[b * 3 + 2] - p[a * 3 + 2];\n vx = p[c * 3] - p[a * 3], vy = p[c * 3 + 1] - p[a * 3 + 1], vz = p[c * 3 + 2] - p[a * 3 + 2];\n nx = uy * vz - uz * vy, ny = uz * vx - ux * vz, nz = ux * vy - uy * vx;\n for (j = 0; j < 3; j++) {\n index = j === 0 ? a : j === 1 ? b : c;\n normals[index * 3] += nx;\n normals[index * 3 + 1] += ny;\n normals[index * 3 + 2] += nz;\n }\n }\n for (i = 0; i < normals.length; i += 3) {\n length = Math.hypot(normals[i], normals[i + 1], normals[i + 2]) || 1;\n for (j = 0; j < 3; j++) {\n normals[i + j] /= length;\n }\n }\n return normals;\n}\n", "export function collectMeshes(node, meshes) {\n if (node.geometry?.attributes.position) meshes.push(node);\n let child;\n for (child of node.children) collectMeshes(child, meshes);\n}\n", "export async function loadBuffer(buffer, directory) {\r\n if (buffer.binary) return;\r\n const response = await fetch(/* alloc */ new URL(buffer.uri, directory).href);\r\n if (!response.ok) throw /* alloc */ new Error(`Unable to load model buffer: HTTP ${response.status}`);\r\n buffer.binary = await response.arrayBuffer();\r\n}\r\n", "export const geometryImageOptions = {\n premultiplyAlpha: 'none',\n colorSpaceConversion: 'none'\n};\n", "import { geometryImageOptions } from '../globals/geometryImageOptions.js';\n\r\n\r\nexport async function loadImage(description, directory, image) {\r\n let blob;\r\n if (image.bufferView !== undefined) {\r\n const view = description.bufferViews[image.bufferView];\r\n const buffer = description.buffers[view.buffer].binary;\r\n blob = /* alloc */ new Blob(\r\n /* alloc */ [buffer.slice(view.byteOffset || 0, (view.byteOffset || 0) + view.byteLength)],\r\n /* alloc */ { type: image.mimeType });\r\n } else {\r\n const response = await fetch(/* alloc */ new URL(image.uri, directory).href);\r\n if (!response.ok) throw /* alloc */ new Error(`Unable to load model texture: HTTP ${response.status}`);\r\n blob = await response.blob();\r\n }\r\n // Preserve straight alpha and raw samples; GPU sRGB formats do color decoding.\r\n return createImageBitmap(blob, geometryImageOptions);\r\n}\r\n", "import { addedByLayer } from '../weakmaps/addedByLayer.js';\r\nimport { cameraViewByMap } from '../weakmaps/cameraViewByMap.js';\r\n\r\nimport { geometryEmpty } from '../globals/geometryEmpty.js';\r\nimport { loadBuffer } from './loadBuffer.js';\r\nimport { loadImage } from '../textures/loadModelImage.js';\r\n\r\nexport async function loadModelResources(layer, description, directory) {\r\n const bufferRequests = /* alloc */ [];\r\n let buffer;\r\n for (buffer of description.buffers || geometryEmpty) bufferRequests.push(loadBuffer(buffer, directory));\r\n await Promise.all(bufferRequests);\r\n await addedByLayer.get(layer).promise;\r\n const imageRequests = /* alloc */ [];\r\n let image;\r\n for (image of description.images || geometryEmpty) imageRequests.push(loadImage(description, directory, image));\r\n const images = await Promise.all(imageRequests);\r\n await cameraViewByMap.get(layer._map);\r\n return images;\r\n}\r\n", "/** Translate glTF sampler constants into WebGPU sampler options. */\n\nexport function textureSampler(sampler) {\n return /* alloc */ {\n addressModeU: sampler?.wrapS === 33071 ? 'clamp-to-edge' : sampler?.wrapS === 33648 ? 'mirror-repeat' : 'repeat',\n addressModeV: sampler?.wrapT === 33071 ? 'clamp-to-edge' : sampler?.wrapT === 33648 ? 'mirror-repeat' : 'repeat',\n magFilter: sampler?.magFilter === 9728 ? 'nearest' : 'linear',\n minFilter: sampler?.minFilter === 9728 || sampler?.minFilter === 9984 || sampler?.minFilter === 9986 ? 'nearest' : 'linear',\n };\n}\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\n\n\r\n\r\nimport { textureSampler } from './modelTextureSampler.js';\r\n\r\nexport function textureFor(context, reference, color = false) {\r\n const { backend: layer, description, images, textures } = context;\r\n if (!reference) return null;\r\n if ((reference.texCoord || 0) !== 0 || reference.extensions) {\r\n throw /* alloc */ new Error('Model textures currently require untransformed TEXCOORD_0 UVs');\r\n }\r\n const device = rendererByLayer.get(layer).device;\r\n // A glTF image may serve both color and data maps: those cannot share a GPU format.\r\n const key = `${reference.index}:${color}`;\r\n if (!textures.has(key)) {\r\n const texture = description.textures[reference.index];\r\n const sampler = description.samplers?.[texture.sampler];\r\n const image = images[texture.source];\r\n const format = color ? 'rgba8unorm-srgb' : 'rgba8unorm';\r\n const samplerOptions = textureSampler(sampler);\r\n textures.set(key, /* alloc */ {\r\n device,\r\n texture: device.createTexture(/* alloc */ {\r\n size: /* alloc */ [image.width, image.height],\r\n format,\r\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,\r\n }),\r\n sampler: device.createSampler(samplerOptions),\r\n samplerOptions,\r\n format,\r\n srgb: color,\r\n image,\r\n flipY: false,\r\n uploaded: null,\r\n });\r\n }\r\n return textures.get(key);\r\n}\r\n", "import { textureFor } from '../textures/modelTextureFor.js';\r\n\r\nexport function materialFor(context, material) {\r\n const { backend: layer } = context;\r\n const pbr = material.pbrMetallicRoughness;\r\n return /* alloc */ {\r\n color: pbr?.baseColorFactor ? pbr.baseColorFactor.slice(0, 3) : /* alloc */ [1, 1, 1],\r\n opacity: pbr?.baseColorFactor?.[3] ?? 1,\r\n metallic: pbr?.metallicFactor ?? 1,\r\n roughness: pbr?.roughnessFactor ?? 1,\r\n baseTexture: textureFor(context, pbr?.baseColorTexture, true),\r\n metalTexture: textureFor(context, pbr?.metallicRoughnessTexture),\r\n emissiveTexture: textureFor(context, material.emissiveTexture, true),\r\n occlusionTexture: textureFor(context, material.occlusionTexture),\r\n emissive: material.emissiveFactor || /* alloc */ [0, 0, 0],\r\n occlusionStrength: material.occlusionTexture?.strength ?? 1,\r\n alphaMode: layer.options.alphaMode || material.alphaMode || 'OPAQUE',\r\n alphaCutoff: material.alphaCutoff ?? 0.5,\r\n doubleSided: material.doubleSided,\r\n };\r\n}\r\n", "import { geometryEmpty } from '../globals/geometryEmpty.js';\r\nimport { materialFor } from '../materials/modelMaterialFor.js';\r\n\r\nexport function createModelContext(layer, description, images) {\r\n const context = /* alloc */ {\r\n backend: layer, description, images,\r\n textures: /* alloc */ new Map(),\r\n materials: /* alloc */ [],\r\n active: /* alloc */ new Set(),\r\n resources: /* alloc */ [],\r\n };\r\n let material;\r\n for (material of description.materials || geometryEmpty) context.materials.push(materialFor(context, material));\r\n return context;\r\n}\r\n", "export const geometryQuaternion = [0, 0, 0, 1];\n", "export const geometryScale = [1, 1, 1];\n", "export const geometryTranslation = [0, 0, 0];\n", "import { geometryQuaternion } from '../globals/geometryQuaternion.js';\nimport { geometryScale } from '../globals/geometryScale.js';\nimport { geometryTranslation } from '../globals/geometryTranslation.js';\n/** glTF quaternion/translation/scale to a column-major matrix. */\n\n\nexport function nodeMatrix(spec) {\n if (spec.matrix) return Array.from(spec.matrix);\n // glTF stores quaternions [x,y,z,w]; convert directly to a scaled column-major matrix.\n const [x, y, z, w] = spec.rotation || geometryQuaternion;\n const [sx, sy, sz] = spec.scale || geometryScale;\n return /* alloc */ [\n (1 - 2 * (y * y + z * z)) * sx,\n 2 * (x * y + z * w) * sx,\n 2 * (x * z - y * w) * sx,\n 0,\n 2 * (x * y - z * w) * sy,\n (1 - 2 * (x * x + z * z)) * sy,\n 2 * (y * z + x * w) * sy, 0,\n 2 * (x * z + y * w) * sz,\n 2 * (y * z - x * w) * sz,\n (1 - 2 * (x * x + y * y)) * sz,\n 0,\n ...(spec.translation || geometryTranslation),\n 1,\n ];\n}\n", "export const geometrySemantics = [\n ['POSITION', 'position'],\n ['NORMAL', 'normal'],\n ['TEXCOORD_0', 'uv']\n];\n", "export const types = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array,\n};\n", "export const sizes = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4\n};\n", "export function readAccessorValue(input, Type, at) {\r\n return Type === Int8Array ? input.getInt8(at) :\r\n Type === Uint8Array ? input.getUint8(at) :\r\n Type === Int16Array ? input.getInt16(at, true) :\r\n Type === Uint16Array ? input.getUint16(at, true) :\r\n Type === Uint32Array ? input.getUint32(at, true) : input.getFloat32(at, true);\r\n}\r\n", "import { readAccessorValue } from './readAccessorValue.js';\n\nexport function readAccessorValues(description, Type, size, data, accessorCount, indices, viewIndex, offset, count, stride) {\n const view = description.bufferViews[viewIndex], bytes = Type.BYTES_PER_ELEMENT;\n const buffer = description.buffers[view.buffer].binary;\n stride ||= size * bytes;\n if (!buffer || stride < size * bytes || offset < 0 ||\n (view.byteOffset || 0) + view.byteLength > buffer.byteLength ||\n (count - 1) * stride + size * bytes + offset > view.byteLength) throw /* alloc */ new Error('glTF accessor outside buffer view');\n const input = /* alloc */ new DataView(buffer);\n let i, j, at, output;\n for (i = 0; i < count; i++) {\n output = indices ? indices[i] : i;\n if (indices && output >= accessorCount) throw /* alloc */ new Error('Invalid sparse glTF index');\n for (j = 0; j < size; j++) {\n at = (view.byteOffset || 0) + offset + i * stride + j * bytes;\n data[output * size + j] = readAccessorValue(input, Type, at);\n }\n }\n}\n", "import { types } from '../globals/types.js';\r\nimport { readAccessorValues } from './readAccessorValues.js';\r\n\r\nexport function readSparseAccessor(description, spec, Type, size, data) {\r\n const sparse = spec.sparse, Index = types[sparse.indices.componentType];\r\n if (Index !== Uint8Array && Index !== Uint16Array && Index !== Uint32Array) {\r\n throw /* alloc */ new Error('Invalid sparse glTF indices');\r\n }\r\n const view = description.bufferViews[sparse.indices.bufferView];\r\n const offset = (view.byteOffset || 0) + (sparse.indices.byteOffset || 0);\r\n if (sparse.count > spec.count ||\r\n (sparse.indices.byteOffset || 0) + sparse.count * Index.BYTES_PER_ELEMENT > view.byteLength) {\r\n throw /* alloc */ new Error('Invalid sparse glTF indices');\r\n }\r\n const indices = /* alloc */ new Index(description.buffers[view.buffer].binary.slice(\r\n offset, offset + sparse.count * Index.BYTES_PER_ELEMENT));\r\n readAccessorValues(description, Type, size, data, spec.count, indices, sparse.values.bufferView,\r\n sparse.values.byteOffset || 0, sparse.count, 0);\r\n}\r\n", "export function normalizeAccessor(spec, Type, data, size) {\r\n const normalized = /* alloc */ new Float32Array(data.length);\r\n let i;\r\n for (i = 0; i < data.length; i++) {\r\n normalized[i] = spec.normalized\r\n ? Math.max(-1, data[i] / (Type === Int8Array ? 127 : Type === Int16Array ? 32767 :\r\n Type === Uint8Array ? 255 : Type === Uint32Array ? 4294967295 : 65535))\r\n : data[i];\r\n }\r\n return /* alloc */ { data: normalized, size, indices: data };\r\n}\r\n", "import { types } from '../globals/types.js';\nimport { sizes } from '../globals/sizes.js';\n\n\nimport { readAccessorValues } from './readAccessorValues.js';\nimport { readSparseAccessor } from './readSparseAccessor.js';\nimport { normalizeAccessor } from './normalizeAccessor.js';\n\n/** Decode packed, interleaved, normalized or sparse glTF accessor data. */\n\nexport function readAccessor(description, index) {\n const spec = description.accessors[index], Type = types[spec.componentType], size = sizes[spec.type];\n if (!Type || !size || !Number.isInteger(spec.count) || spec.count < 0) {\n throw /* alloc */ new Error('Invalid glTF accessor');\n }\n const data = /* alloc */ new Type(spec.count * size);\n if (spec.bufferView !== undefined) {\n readAccessorValues(\n description, Type, size, data, spec.count, null,\n spec.bufferView,\n spec.byteOffset || 0,\n spec.count,\n description.bufferViews[spec.bufferView].byteStride\n );\n }\n if (spec.sparse) {\n readSparseAccessor(description, spec, Type, size, data);\n }\n if (spec.componentType === 5126) {\n return /* alloc */ { data, size };\n }\n return normalizeAccessor(spec, Type, data, size);\n}\n", "import { geometrySemantics } from '../globals/geometrySemantics.js';\r\nimport { readAccessor } from './readAccessor.js';\r\n\r\nexport function readModelAttributes(description, primitive) {\r\n const attributes = /* alloc */ {};\r\n let semantic, name;\r\n for ([semantic, name] of geometrySemantics) {\r\n if (primitive.attributes[semantic] !== undefined) {\r\n attributes[name] = readAccessor(description, primitive.attributes[semantic]);\r\n }\r\n }\r\n if (!attributes.position) throw /* alloc */ new Error('glTF mesh has no positions');\r\n const vertexCount = attributes.position.data.length / 3;\r\n if (attributes.position.size !== 3 || vertexCount < 3) throw /* alloc */ new Error('Invalid glTF vertex attributes');\r\n let attribute;\r\n for (attribute of Object.values(attributes)) {\r\n if (attribute.data.length / attribute.size !== vertexCount) throw /* alloc */ new Error('Invalid glTF vertex attributes');\r\n }\r\n return /* alloc */ { attributes, vertexCount };\r\n}\r\n", "import { readAccessor } from './readAccessor.js';\r\n\r\nexport function readModelIndices(description, primitive, attributes, vertexCount) {\r\n if (primitive.indices !== undefined) {\r\n const index = readAccessor(description, primitive.indices);\r\n attributes.index = /* alloc */ { size: 1, data: index.indices };\r\n if (!(index.indices instanceof Uint8Array || index.indices instanceof Uint16Array ||\r\n index.indices instanceof Uint32Array) || index.size !== 1 || index.indices.length % 3) {\r\n throw /* alloc */ new Error('Invalid glTF triangle indices');\r\n }\r\n let value;\r\n for (value of index.indices) if (value >= vertexCount) throw /* alloc */ new Error('Invalid glTF triangle indices');\r\n } else if (vertexCount % 3) {\r\n throw /* alloc */ new Error('Incomplete glTF triangle');\r\n }\r\n}\r\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\n\nimport { vertexNormals } from './vertexNormals.js';\r\nimport { createProgram } from '../materials/createProgram.js';\r\n\r\nexport function createModelGeometry(context, primitive, attributes) {\r\n let normals;\r\n if (!attributes.normal) {\r\n normals = vertexNormals(attributes.position.data, attributes.index?.data);\r\n attributes.normal = /* alloc */ { size: 3, data: normals };\r\n }\r\n const style = context.materials[primitive.material] || /* alloc */ {\r\n color: /* alloc */ [1, 1, 1], metallic: 1,\r\n };\r\n if ((style.baseTexture || style.metalTexture || style.emissiveTexture || style.occlusionTexture) && !attributes.uv) {\r\n throw /* alloc */ new Error('Textured model mesh requires UV coordinates');\r\n }\r\n const program = createProgram(context.backend, style);\r\n context.resources.push(program);\r\n const device = rendererByLayer.get(context.backend).device;\r\n if (attributes.index?.data instanceof Uint8Array) attributes.index.data = Uint16Array.from(attributes.index.data);\r\n let name, attribute;\r\n for ([name, attribute] of Object.entries(attributes)) {\r\n attribute.size ||= 1;\r\n attribute.count = attribute.data.length / attribute.size;\r\n attribute.indexFormat = attribute.data instanceof Uint32Array ? 'uint32' : 'uint16';\r\n attribute.buffer = device.createBuffer(/* alloc */ {\r\n size: Math.max(4, attribute.data.byteLength),\r\n usage: name === 'index'\r\n ? GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST\r\n : GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\r\n });\r\n device.queue.writeBuffer(attribute.buffer, 0, attribute.data);\r\n }\r\n const geometry = /* alloc */ {\r\n device, attributes,\r\n drawRange: /* alloc */ { start: 0, count: attributes.index?.count || attributes.position.count },\r\n };\r\n context.resources.push(geometry);\r\n return /* alloc */ { device, geometry, program };\r\n}\r\n", "import { nextId } from '../globals/nextId.js';\nimport { geometryEmpty } from '../globals/geometryEmpty.js';\n\nimport { emptyNode } from '../scene/createSceneNode.js';\nimport { nodeMatrix } from '../transforms/modelNodeMatrix.js';\nimport { setParent } from '../scene/setParent.js';\nimport { readModelAttributes } from './readModelAttributes.js';\nimport { readModelIndices } from './readModelIndices.js';\nimport { createModelGeometry } from '../geometry/createModelGeometry.js';\n\nexport function modelNode(context, index) {\n const { backend: layer, description, active } = context;\n // Track only the recursion path: shared mesh references are valid, cycles are not.\n if (active.has(index)) throw /* alloc */ new Error('Cyclic glTF nodes');\n const spec = description.nodes[index];\n if (!spec) throw /* alloc */ new Error('Invalid glTF node');\n active.add(index);\n const group = /* alloc */ {\n ...emptyNode(),\n name: spec.name\n };\n group.matrix = nodeMatrix(spec);\n let primitive, attributeData, attributes, vertexCount, built, mesh, child;\n if (spec.mesh !== undefined) {\n for (primitive of description.meshes[spec.mesh].primitives) {\n attributeData = readModelAttributes(description, primitive);\n attributes = attributeData.attributes;\n vertexCount = attributeData.vertexCount;\n readModelIndices(description, primitive, attributes, vertexCount);\n built = createModelGeometry(context, primitive, attributes);\n mesh = /* alloc */ {\n ...emptyNode(),\n device: built.device,\n geometry: built.geometry,\n program: built.program,\n fadeDuration: 250,\n id: nextId.value++,\n renderOrder: 0\n };\n mesh.name = description.meshes[spec.mesh].name;\n mesh.extras = spec.extras || /* alloc */ {};\n setParent(mesh, group);\n }\n }\n for (child of spec.children || geometryEmpty) setParent(modelNode(context, child), group);\n active.delete(index);\n return group;\n}\n", "export function releaseModelResources(context) {\r\n let resource, attribute;\r\n for (resource of context.resources) {\r\n if (resource.attributes) {\r\n for (attribute of Object.values(resource.attributes)) attribute.buffer.destroy();\r\n } else {\r\n resource.pipelineCache.clear();\r\n }\r\n }\r\n}\r\n", "import { modelNode } from './modelNode.js';\r\nimport { releaseModelResources } from './releaseModelResources.js';\r\n\r\nexport function buildModelNodes(context, scene) {\r\n const nodes = /* alloc */ [];\r\n let index;\r\n try {\r\n for (index of scene.nodes) nodes.push(modelNode(context, index));\r\n } catch (error) {\r\n releaseModelResources(context);\r\n throw error;\r\n }\r\n return nodes;\r\n}\r\n", "import { modelByLayer } from '../weakmaps/modelByLayer.js';\n\n\r\nexport function applyModelTransform(layer) {\r\n const model = modelByLayer.get(layer);\r\n if (layer.options.rotation) {\r\n const [x, y = x, z = x] = layer.options.rotation;\r\n model.rotation[0] = x; model.rotation[1] = y; model.rotation[2] = z;\r\n }\r\n if (layer.options.scale) {\r\n const [x, y = x, z = x] = layer.options.scale;\r\n model.scale[0] = x; model.scale[1] = y; model.scale[2] = z;\r\n }\r\n}\r\n", "import { addedByLayer } from '../weakmaps/addedByLayer.js';\nimport { modelByLayer } from '../weakmaps/modelByLayer.js';\nimport { modelUrlByLayer } from '../weakmaps/modelUrlByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\nimport { terrain3DByMap } from '../weakmaps/terrain3DByMap.js';\n\n\n\nimport { decodeModel } from './decodeModel.js';\nimport { setParent } from '../scene/setParent.js';\nimport { emptyNode } from '../scene/createSceneNode.js';\nimport { conformModelToTerrain } from '../geometry/conformModelToTerrain.js';\nimport { loadModelResources } from './loadModelResources.js';\nimport { createModelContext } from './createModelContext.js';\nimport { buildModelNodes } from './buildModelNodes.js';\nimport { applyModelTransform } from './applyModelTransform.js';\n\n\n/** glTF/GLB model loading. */\n/** Load the configured GLB/glTF (static triangles) under `root`; GPU resources need attachment. */\n\nexport async function loadModel(layer) {\n await addedByLayer.get(layer).promise;\n const url = /* alloc */ new URL(modelUrlByLayer.get(layer), document.baseURI).href;\n const response = await fetch(url);\n if (!response.ok) {\n throw /* alloc */ new Error(`Unable to load model: HTTP ${response.status}`);\n }\n const data = await response.arrayBuffer();\n const description = decodeModel(data);\n const directory = /* alloc */ new URL('.', url).href;\n const images = await loadModelResources(layer, description, directory);\n const context = createModelContext(layer, description, images);\n const scene = description.scenes?.[description.scene || 0];\n if (!scene) throw /* alloc */ new Error('Missing glTF scene');\n const nodes = buildModelNodes(context, scene);\n const model = /* alloc */ {\n ...emptyNode(),\n id: url,\n extras: description.extras || /* alloc */ {},\n };\n if (!nodes.length) throw /* alloc */ new Error('Expected a glTF model with a non-empty scene');\n let node;\n for (node of nodes) setParent(node, model);\n modelByLayer.set(layer, model);\n applyModelTransform(layer);\n setParent(modelByLayer.get(layer), rootByLayer.get(layer));\n conformModelToTerrain(layer, terrain3DByMap.get(layer._map));\n}\n", "import { addedByLayer } from '../weakmaps/addedByLayer.js';\nimport { geojsonByLayer } from '../weakmaps/geojsonByLayer.js';\nimport { groupByLayer } from '../weakmaps/groupByLayer.js';\nimport { headerByLayer } from '../weakmaps/headerByLayer.js';\nimport { modelUrlByLayer } from '../weakmaps/modelUrlByLayer.js';\nimport { raycasterByLayer } from '../weakmaps/raycasterByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\nimport { sharedByLayer } from '../weakmaps/sharedByLayer.js';\nimport { urlByLayer } from '../weakmaps/urlByLayer.js';\n\n\n\nimport { emptyNode } from './createSceneNode.js';\nimport { getHeader } from '../archives/getHeader.js';\nimport { attach } from './attachSharedScene.js';\nimport { loadModel } from '../models/loadModel.js';\nimport { update } from './scheduleSceneUpdate.js';\n\nexport async function ready3D(layer) {\n try {\n rootByLayer.set(layer, emptyNode());\n raycasterByLayer.set(layer, /* alloc */ {\n origin: /* alloc */ [0, 0, 0],\n direction: /* alloc */ [0, 0, 0],\n inverse: /* alloc */ new DOMMatrix(),\n meshes: /* alloc */ [],\n });\n if (urlByLayer.get(layer) || geojsonByLayer.get(layer)) {\n groupByLayer.set(layer, rootByLayer.get(layer));\n if (urlByLayer.get(layer)) headerByLayer.set(layer, await getHeader(layer));\n }\n if (layer._map) {\n await attach(layer, layer._map);\n addedByLayer.get(layer).resolve();\n }\n if (modelUrlByLayer.get(layer)) await loadModel(layer);\n if (sharedByLayer.get(layer)) update(layer);\n layer.fire('ready');\n return layer;\n } catch (error) {\n layer.fire('error', /* alloc */ { error });\n throw error;\n }\n}\n", "import { L } from '../globals/L.js';\nimport { placeEntryElement } from './placeEntryElement.js';\nexport function placeEntry(map, layer, element) {\n let input, entry;\n for (input of map.getContainer().querySelectorAll('.leaflet-control-layers-selector')) {\n entry = map._layers[input.layerId];\n if (input.layerId === L.Util.stamp(layer) || entry instanceof L.LayerGroup && entry.hasLayer(layer)) {\n placeEntryElement(input, layer, element);\n return true;\n }\n }\n return false;\n}\n", "import { L } from '../globals/L.js';\r\n\r\nexport function placeEntryElement(input, layer, element) {\r\n const label = input.closest('label');\r\n if (element.classList.contains('layer-count')) {\r\n if (!input.hasAttribute('aria-label')) input.setAttribute('aria-label', label.textContent.trim());\r\n element.id = `leaflet-layer-count-${L.Util.stamp(layer)}`;\r\n input.setAttribute('aria-describedby', element.id);\r\n label.append(element);\r\n }\r\n else if (element.classList.contains('traffic-status')) {\r\n let group = label.nextElementSibling;\r\n if (!group?.classList.contains('traffic-status-group')) {\r\n group = L.DomUtil.create('div', 'traffic-status-group');\r\n group.style.cssText = 'display:flex;flex-wrap:wrap;gap:4px 8px;max-width:200px;margin:2px 0 6px 20px;';\r\n group.setAttribute('role', 'group');\r\n group.setAttribute('aria-label', 'Traffic counts');\r\n label.after(group);\r\n }\r\n group.append(element);\r\n } else label.after(element);\r\n}\r\n", "import { placeEntry } from './placeEntry.js';\n\nexport function placeUnderEntry(state) {\n const nested = placeEntry(state.map, state.layer, state.element);\n const onPlace = state.onPlace;\n onPlace?.(nested);\n return nested;\n}\n", "export const pendingPlacements = [];\n", "import { pendingPlacements } from '../globals/pendingPlacements.js';\n\n\nimport { placeUnderEntry } from './placeUnderEntry.js';\n\nexport function runPlacements() {\n const state = pendingPlacements.shift();\n if (state?.map.hasLayer(state.layer)) placeUnderEntry(state);\n}\n", "import { pendingPlacements } from '../globals/pendingPlacements.js';\n\n\nimport { runPlacements } from './runPlacements.js';\n\nexport function replaceEntry() {\n pendingPlacements.push(this);\n queueMicrotask(runPlacements);\n}\n", "import { replaceEntry } from './replaceEntry.js';\n\nexport function removeEntry() {\n this.map.off('layeradd layerremove', replaceEntry, this);\n const group = this.element.parentElement;\n this.element.remove();\n if (group?.classList.contains('traffic-status-group') && !group.childElementCount) group.remove();\n}\n", "\nimport { placeUnderEntry } from './placeUnderEntry.js';\nimport { replaceEntry } from './replaceEntry.js';\nimport { removeEntry } from './removeEntry.js';\n\n/**\n * Keeps `element` right under `layer`'s entry in the map's layers control while the layer is on the map.\n * Returns false when no layers control lists the layer.\n */\n\nexport function underEntry(layer, element, onPlace) {\n const state = /* alloc */ { map: layer._map, layer, element, onPlace };\n state.map.on('layeradd layerremove', replaceEntry, state);\n layer.once('remove', removeEntry, state);\n return placeUnderEntry(state);\n}\n", "import { modelUrlByLayer } from '../weakmaps/modelUrlByLayer.js';\r\n\r\nexport function layerCountTitle(layer, formatted, pending, error) {\r\n return error ? `Unable to load: ${typeof error === 'string' ? error : error.message}` :\r\n `${formatted} loaded ${modelUrlByLayer.get(layer) ? 'models' : 'elements'} in the current area${pending ? `; ${pending} blocks loading` : ''}`;\r\n}\r\n", "import { countStatusByLayer } from '../weakmaps/countStatusByLayer.js';\r\nimport { modelUrlByLayer } from '../weakmaps/modelUrlByLayer.js';\r\nimport { modelByLayer } from '../weakmaps/modelByLayer.js';\r\nimport { headerByLayer } from '../weakmaps/headerByLayer.js';\r\nimport { geojsonByLayer } from '../weakmaps/geojsonByLayer.js';\r\n\r\nexport function renderLayerCount(layer, count, pending, error) {\r\n const status = countStatusByLayer.get(layer);\r\n const modelUrl = modelUrlByLayer.get(layer), model = modelByLayer.get(layer);\r\n if (modelUrl) count = model ? 1 : 0;\r\n const loading = pending || (modelUrl ? !model : !headerByLayer.get(layer) && !geojsonByLayer.get(layer));\r\n const formatted = count.toLocaleString('en-US');\r\n const text = error ? 'Error' : `${formatted}${loading ? '\u2026' : ''}`;\r\n const title = layerCountTitle(layer, formatted, pending, error);\r\n if (status.textContent !== text) status.textContent = text;\r\n if (status.title !== title) status.title = title;\r\n if (error && status.getAttribute('role') !== 'alert') status.setAttribute('role', 'alert');\r\n else if (!error && status.hasAttribute('role')) status.removeAttribute('role');\r\n}\r\nimport { layerCountTitle } from './layerCountTitle.js';\r\n", "import { areasByLayer } from '../weakmaps/areasByLayer.js';\nimport { countStatusByLayer } from '../weakmaps/countStatusByLayer.js';\n\nimport { underEntry } from './underEntry.js';\nimport { renderLayerCount } from './renderLayerCount.js';\n\nexport function updateLayerCount(event) {\n const layer = event.target, status = countStatusByLayer.get(layer)\n if (!layer._map) return;\n if (event.type === 'add') underEntry(layer, status);\n let count = 0, pending = 0, error = event.error, area;\n if (Number.isFinite(event.loaded)) {\n count = event.loaded;\n pending = event.pending ?? 0;\n error ||= event.errors?.[0];\n } else {\n for (area of areasByLayer.get(layer).values()) {\n count += area.buildings ?? 0;\n if (!area.done && !area.error) pending++;\n error ||= area.error;\n }\n }\n renderLayerCount(layer, count, pending, error);\n}\n", "import { addedByLayer } from '../weakmaps/addedByLayer.js';\nimport { areasByLayer } from '../weakmaps/areasByLayer.js';\nimport { directoriesByLayer } from '../weakmaps/directoriesByLayer.js';\nimport { kindByLayer } from '../weakmaps/kindByLayer.js';\nimport { loadingTilesByLayer } from '../weakmaps/loadingTilesByLayer.js';\nimport { rasterTilesByLayer } from '../weakmaps/rasterTilesByLayer.js';\nimport { readyByLayer } from '../weakmaps/readyByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\nimport { urlByLayer } from '../weakmaps/urlByLayer.js';\n\nimport { L } from '../globals/L.js';\n\n\nimport { isLoading } from './isRasterLoading.js';\nimport { getRasterEvents } from './getRasterEvents.js';\nimport { readyRaster } from './readyRaster.js';\nimport { reportError } from './reportRasterError.js';\nimport { emptyNode } from '../scene/createSceneNode.js';\nimport { read } from '../archives/readArchiveRange.js';\nimport { getHeader } from '../archives/getHeader.js';\nimport { getZxy } from '../archives/getZxy.js';\nimport { onPMTileAdd } from './onPMTileAdd.js';\nimport { onPMTileRemove } from './onPMTileRemove.js';\nimport { getRasterTileSize } from './getRasterTileSize.js';\nimport { setPMTileOpacity } from './setPMTileOpacity.js';\nimport { setPMTileZIndex } from './setPMTileZIndex.js';\n\nexport function initRaster(layer, options) {\n kindByLayer.set(layer, 'raster');\n options = /* alloc */ { ariaLabel: 'PMTiles raster', maxZoom: 18, opacity: 1, zIndex: 0, ...options };\n L.Util.setOptions(layer, options);\n rootByLayer.set(layer, emptyNode());\n areasByLayer.set(layer, /* alloc */ new Map());\n rasterTilesByLayer.set(layer, /* alloc */ new Map());\n loadingTilesByLayer.set(layer, 0);\n addedByLayer.set(layer, Promise.withResolvers());\n urlByLayer.set(layer, /* alloc */ new URL(options.url, document.baseURI).href);\n directoriesByLayer.set(layer, /* alloc */ new Map());\n readyByLayer.set(layer, Promise.resolve(layer.options.archive || layer)\n .then(readyRaster.bind(null, layer))\n .catch(reportError.bind(null, layer)));\n}\n", "export const wantedTiles = new Map();\n", "export const coverageTiles = new Map();\n", "\n\nexport function comparePendingTiles(a, b) {\n return a.tile.coords.z - b.tile.coords.z || a.distance - b.distance;\n}\n", "export const blobParts = [null];\n", "export const terrainBoundsByLayer = new WeakMap();\n", "export const terrainOriginElevationByLayer = new WeakMap();\n", "export const terrainPromiseByLayer = new WeakMap();\n", "import { locationByLayer } from '../weakmaps/locationByLayer.js';\nimport { rasterTilesByLayer } from '../weakmaps/rasterTilesByLayer.js';\nimport { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\nimport { terrain3DByLayer } from '../weakmaps/terrain3DByLayer.js';\nimport { terrainBoundsByLayer } from '../weakmaps/terrainBoundsByLayer.js';\nimport { terrainOriginElevationByLayer } from '../weakmaps/terrainOriginElevationByLayer.js';\nimport { terrainPromiseByLayer } from '../weakmaps/terrainPromiseByLayer.js';\nimport { terrainZoomByLayer } from '../weakmaps/terrainZoomByLayer.js';\nimport { terrain3DByMap } from '../weakmaps/terrain3DByMap.js';\n\n\nimport { radians } from '../globals/radians.js';\nimport { rasterPoint } from '../globals/rasterPoint.js';\nimport { nextId } from '../globals/nextId.js';\nimport { rasterProgram } from '../materials/terrainRasterProgram.js';\nimport { terrainBuffers } from '../geometry/terrainBuffers.js';\nimport { setParent } from '../scene/setParent.js';\nimport { update } from '../scene/scheduleSceneUpdate.js';\nimport { terrainTileGeometry } from '../geometry/terrainTileGeometry.js';\n\nexport async function addRasterTile(layer, rasterLayer, coords, tile) {\n const ready = await terrainPromiseByLayer.get(layer);\n if (!ready || !layer._map || terrain3DByMap.get(layer._map) !== layer || terrain3DByLayer.get(rasterLayer) !== layer ||\n tile.request.signal.aborted || !rasterTilesByLayer.get(rasterLayer).has(`${coords.z}/${coords.x}/${coords.y}`) ||\n rasterTilesByLayer.get(layer).has(tile)) {\n return;\n }\n // Match DEM pixel spacing, capped at 64 subdivisions per tile.\n const divisions = Math.max(1, Math.min(64, 256 / 2 ** (coords.z - terrainZoomByLayer.get(layer))));\n const map = layer._map, crs = map.options.crs;\n const origin = crs.project(locationByLayer.get(layer)), metres = Math.cos(locationByLayer.get(layer).lat * radians);\n // Tile pixels map linearly to projected metres: one scaled unit grid per tile, elevation in the vertex shader.\n const scale = crs.scale(coords.z), terrainScale = 2 ** (terrainZoomByLayer.get(layer) - coords.z);\n const point = rasterPoint;\n point.x = coords.x * 256; point.y = coords.y * 256;\n const corner = crs.transformation.untransform(point, scale);\n point.x = (coords.x + 1) * 256; point.y = (coords.y + 1) * 256;\n const opposite = crs.transformation.untransform(point, scale);\n const device = rendererByLayer.get(layer).device;\n const texture = tile.texture;\n const program = rasterProgram(layer, texture);\n const attributes = terrainBuffers(layer, divisions);\n const base = terrainOriginElevationByLayer.get(layer);\n const sizeX = (opposite.x - corner.x) * metres, sizeZ = -(opposite.y - corner.y) * metres;\n // ponytail: ray picking sees the flat unit grid; read the DEM back if terrain must be pickable.\n const geometry = terrainTileGeometry(layer, attributes, sizeX, sizeZ);\n const mesh = /* alloc */ {\n position: /* alloc */ [(corner.x - origin.x) * metres, 0, -(corner.y - origin.y) * metres],\n rotation: /* alloc */ [0, 0, 0],\n scale: /* alloc */ [sizeX, 1, sizeZ],\n worldMatrix: /* alloc */ [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\n children: /* alloc */ [],\n visible: true,\n device,\n geometry,\n program,\n texture,\n // DEM pixel of the tile's corner, DEM pixels per tile, and the elevation at the layer origin.\n terrain: /* alloc */ [\n coords.x * 256 * terrainScale - terrainBoundsByLayer.get(layer).min.x * 256,\n coords.y * 256 * terrainScale - terrainBoundsByLayer.get(layer).min.y * 256,\n 256 * terrainScale,\n base,\n ],\n tile,\n opacity: rasterLayer.options.opacity ?? 1,\n id: nextId.value++,\n renderOrder: rasterLayer.options.zIndex || 0,\n fadeDuration: 250,\n fadeStart: tile.loadedAt,\n ground: true,\n _rasterSource: rasterLayer,\n };\n tile.mesh.visible = false;\n setParent(mesh, rootByLayer.get(layer));\n update(layer);\n rasterTilesByLayer.get(layer).set(tile, mesh);\n}\n", "export const rasterPoint = {\n x: 0,\n y: 0\n};\n", "export const demByLayer = new WeakMap();\n", "export const rasterProgramByLayer = new WeakMap();\n", "export const terrainGridsByLayer = new WeakMap();\n", "export const demTexture = {\n size: [null, null],\n format: 'r32float',\n usage: null\n};\n", "export const demTarget = {\n texture: null\n};\n", "export const demLayout = {\n bytesPerRow: null\n};\n", "export const demSize = [null, null];\n", "export function copyTerrainTile(atlas, values, start, columns) {\r\n let row, column, value;\r\n for (row = 0; row < 256; row++) {\r\n for (column = 0; column < 256; column++) {\r\n value = values[row * 256 + column];\r\n if (!Number.isFinite(value) || value <= -1000) continue;\r\n atlas.elevations[start + row * columns * 256 + column] = value;\r\n atlas.low = Math.min(atlas.low, value);\r\n atlas.high = Math.max(atlas.high, value);\r\n }\r\n }\r\n}\r\n", "import { copyTerrainTile } from './copyTerrainTile.js';\n\n/** Float32 DEM atlas; missing samples retain the shader no-data sentinel. */\n\nexport function terrainAtlas(tiles, bounds) {\n const columns = bounds.max.x - bounds.min.x + 1, rows = bounds.max.y - bounds.min.y + 1;\n const elevations = /* alloc */ new Float32Array(columns * rows * 65536).fill(-1e9);\n const atlas = /* alloc */ { elevations, low: Infinity, high: -Infinity };\n let key, values, coordinates, x, y, start;\n for ([key, values] of tiles) {\n coordinates = key.split('/');\n x = Number(coordinates[0]), y = Number(coordinates[1]);\n start = (y - bounds.min.y) * 256 * columns * 256 + (x - bounds.min.x) * 256;\n copyTerrainTile(atlas, values, start, columns);\n }\n return atlas;\n}\n", "import { demByLayer } from '../weakmaps/demByLayer.js';\nimport { rasterProgramByLayer } from '../weakmaps/rasterProgramByLayer.js';\nimport { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { terrainBoundsByLayer } from '../weakmaps/terrainBoundsByLayer.js';\nimport { terrainGridsByLayer } from '../weakmaps/terrainGridsByLayer.js';\nimport { terrainOriginElevationByLayer } from '../weakmaps/terrainOriginElevationByLayer.js';\nimport { terrainTilesByLayer } from '../weakmaps/terrainTilesByLayer.js';\n\nimport { demTexture } from '../globals/demTexture.js';\r\nimport { demTarget } from '../globals/demTarget.js';\r\nimport { demLayout } from '../globals/demLayout.js';\r\nimport { demSize } from '../globals/demSize.js';\r\nimport { createProgram } from './createProgram.js';\r\nimport { destroyTexture } from '../textures/destroyTexture.js';\r\nimport { terrainAtlas } from '../terrain/terrainAtlas.js';\r\n\r\nexport function rasterProgram(layer, texture) {\r\n const device = rendererByLayer.get(layer).device\r\n if (rasterProgramByLayer.get(layer)?.device === device) return rasterProgramByLayer.get(layer);\r\n // DEM atlas over the archive's tile grid; invalid or missing samples become -1e9 (the shader's no-data).\r\n // ponytail: one texture, capped by maxTextureDimension2D (32x32 DEM tiles at 8192 px); split it for larger archives.\r\n const bounds = terrainBoundsByLayer.get(layer), columns = bounds.max.x - bounds.min.x + 1, rows = bounds.max.y - bounds.min.y + 1;\r\n const { elevations, low, high } = terrainAtlas(terrainTilesByLayer.get(layer), bounds);\r\n if (demByLayer.get(layer)) destroyTexture(layer, demByLayer.get(layer).texture);\r\n demByLayer.set(layer, /* alloc */ {\r\n texture: device.createTexture((\r\n demTexture.size[0] = columns * 256,\r\n demTexture.size[1] = rows * 256,\r\n demTexture.usage = GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST,\r\n demTexture\r\n )),\r\n low: Number.isFinite(low) ? low : terrainOriginElevationByLayer.get(layer),\r\n high: Number.isFinite(high) ? high : terrainOriginElevationByLayer.get(layer),\r\n });\r\n device.queue.writeTexture((\r\n demTarget.texture = demByLayer.get(layer).texture,\r\n demTarget\r\n ), elevations,\r\n (\r\n demLayout.bytesPerRow = columns * 1024,\r\n demLayout\r\n ), (\r\n demSize[0] = columns * 256,\r\n demSize[1] = rows * 256,\r\n demSize\r\n ));\r\n demTarget.texture = null;\r\n terrainGridsByLayer.set(layer, /* alloc */ new Map());\r\n rasterProgramByLayer.set(layer, createProgram(layer, /* alloc */ {\r\n baseTexture: texture,\r\n unlit: true,\r\n terrain: demByLayer.get(layer),\r\n alphaMode: 'BLEND',\r\n depthWrite: true,\r\n doubleSided: layer.options.doubleSided,\r\n }));\r\n return rasterProgramByLayer.get(layer);\r\n}\r\n", "export const demBuffer = {\n size: null,\n usage: null\n};\n", "/** Unit tile grid; the vertex shader supplies the elevation. */\n\nexport function terrainGrid(divisions) {\n const vertices = (divisions + 1) ** 2;\n const positions = /* alloc */ new Float32Array(vertices * 3);\n const normals = /* alloc */ new Float32Array(vertices * 3);\n const uvs = /* alloc */ new Float32Array(vertices * 2);\n const indices = /* alloc */ new Uint16Array(divisions * divisions * 6);\n let row, column, a, b, c, d, vertex = 0, index = 0;\n for (row = 0; row <= divisions; row++) {\n for (column = 0; column <= divisions; column++) {\n positions[vertex * 3] = column / divisions;\n positions[vertex * 3 + 2] = row / divisions;\n normals[vertex * 3 + 1] = 1;\n uvs[vertex * 2] = column / divisions;\n uvs[vertex * 2 + 1] = row / divisions;\n vertex++;\n if (row < divisions && column < divisions) {\n a = row * (divisions + 1) + column;\n b = a + 1, c = a + divisions + 1, d = c + 1;\n indices[index++] = a; indices[index++] = c; indices[index++] = b;\n indices[index++] = b; indices[index++] = c; indices[index++] = d;\n }\n }\n }\n return /* alloc */ {\n position: /* alloc */ { size: 3, data: positions },\n normal: /* alloc */ { size: 3, data: normals },\n uv: /* alloc */ { size: 2, data: uvs },\n index: /* alloc */ { data: indices },\n };\n}\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { terrainGridsByLayer } from '../weakmaps/terrainGridsByLayer.js';\n\nimport { demBuffer } from '../globals/demBuffer.js';\r\nimport { terrainGrid } from './terrainGrid.js';\r\n\r\nexport function terrainBuffers(layer, divisions) {\r\n const device = rendererByLayer.get(layer).device\r\n let attributes = terrainGridsByLayer.get(layer).get(divisions);\r\n if (!attributes) {\r\n attributes = terrainGrid(divisions);\r\n let name, attribute;\r\n for ([name, attribute] of Object.entries(attributes)) {\r\n attribute.size ||= 1;\r\n attribute.count = attribute.data.length / attribute.size;\r\n attribute.indexFormat = 'uint16';\r\n attribute.buffer = device.createBuffer((\r\n demBuffer.size = Math.max(4, attribute.data.byteLength),\r\n demBuffer.usage = name === 'index'\r\n ? GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST\r\n : GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\r\n demBuffer\r\n ));\r\n device.queue.writeBuffer(attribute.buffer, 0, attribute.data);\r\n }\r\n terrainGridsByLayer.get(layer).set(divisions, attributes);\r\n }\r\n return attributes;\r\n}\r\n", "import { demByLayer } from '../weakmaps/demByLayer.js';\nimport { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { terrainOriginElevationByLayer } from '../weakmaps/terrainOriginElevationByLayer.js';\n\n\r\nexport function terrainTileGeometry(layer, attributes, sizeX, sizeZ) {\r\n const base = terrainOriginElevationByLayer.get(layer)\r\n const bottom = Math.min(demByLayer.get(layer).low, base) - base, top = Math.max(demByLayer.get(layer).high, base) - base;\r\n return /* alloc */ {\r\n device: rendererByLayer.get(layer).device,\r\n attributes,\r\n drawRange: /* alloc */ { start: 0, count: attributes.index.count },\r\n // Bounds must cover the DEM-displaced tile, although picking uses the flat grid.\r\n bounds: /* alloc */ {\r\n min: /* alloc */ [0, bottom, 0], max: /* alloc */ [1, top, 1], center: /* alloc */ [0.5, (bottom + top) / 2, 0.5],\r\n radius: Math.hypot(sizeX, top - bottom, sizeZ) / 2 / Math.max(sizeX, 1, sizeZ),\r\n },\r\n };\r\n}\r\n", "import { rasterTilesByLayer } from '../weakmaps/rasterTilesByLayer.js';\nimport { terrain3DByLayer } from '../weakmaps/terrain3DByLayer.js';\n\n\n\nimport { addRasterTile } from './addRasterTile.js';\n\nexport async function registerTerrainTile(layer, coords, tile) {\n if (terrain3DByLayer.get(layer) && tile.done && !tile.request.signal.aborted &&\n rasterTilesByLayer.get(layer).get(`${coords.z}/${coords.x}/${coords.y}`) === tile) {\n try {\n await addRasterTile(terrain3DByLayer.get(layer), layer, coords, tile);\n } catch (error) {\n layer.fire('tileerror', /* alloc */ { tile, coords, error });\n }\n }\n}\n", "export const rasterGeometryByLayer = new WeakMap();\n", "import { locationByLayer } from '../weakmaps/locationByLayer.js';\nimport { rasterGeometryByLayer } from '../weakmaps/rasterGeometryByLayer.js';\nimport { rasterProgramByLayer } from '../weakmaps/rasterProgramByLayer.js';\nimport { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\n\nimport { radians } from '../globals/radians.js';\nimport { rasterTexture } from '../globals/rasterTexture.js';\nimport { rasterSampler } from '../globals/rasterSampler.js';\nimport { meshImage } from '../globals/meshImage.js';\nimport { meshTarget } from '../globals/meshTarget.js';\nimport { meshCopySize } from '../globals/meshCopySize.js';\nimport { rasterPoint } from '../globals/rasterPoint.js';\nimport { TILE_SIZE } from '../globals/TILE_SIZE.js';\nimport { nextId } from '../globals/nextId.js';\n\n\n\nimport { createProgram } from \"../materials/createProgram.js\";\nimport { setParent } from \"../scene/setParent.js\";\n\nimport { createGeometry } from '../geometry/createRasterQuadGeometry.js';\n\nexport function createRasterMesh(layer, tile) {\n const device = rendererByLayer.get(layer).device;\n const texture = /* alloc */ {\n device,\n texture: device.createTexture((\n rasterTexture.size[0] = tile.image.width,\n rasterTexture.size[1] = tile.image.height,\n rasterTexture.usage = GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT,\n rasterTexture\n )),\n sampler: device.createSampler(rasterSampler),\n image: tile.image, format: 'rgba8unorm', srgb: false, uploaded: null,\n };\n const source = meshImage;\n const destination = meshTarget;\n const dimensions = meshCopySize;\n source.source = tile.image;\n source.flipY = false;\n destination.texture = texture.texture;\n dimensions[0] = tile.image.width;\n dimensions[1] = tile.image.height;\n device.queue.copyExternalImageToTexture(source, destination, dimensions);\n source.source = null;\n destination.texture = null;\n texture.uploaded = tile.image;\n\n if (!rasterProgramByLayer.get(layer)) {\n rasterProgramByLayer.set(layer, createProgram(layer, /* alloc */ {\n baseTexture: texture, unlit: true, alphaMode: 'BLEND', doubleSided: layer.options.doubleSided,\n }));\n }\n if (!rasterGeometryByLayer.get(layer)) rasterGeometryByLayer.set(layer, createGeometry(device));\n const { coords } = tile;\n const crs = layer._map.options.crs;\n const origin = crs.project(locationByLayer.get(layer));\n const metres = Math.cos(locationByLayer.get(layer).lat * radians);\n const scale = crs.scale(coords.z);\n const point = rasterPoint;\n point.x = coords.x * TILE_SIZE; point.y = coords.y * TILE_SIZE;\n const corner = crs.transformation.untransform(point, scale);\n point.x = (coords.x + 1) * TILE_SIZE; point.y = (coords.y + 1) * TILE_SIZE;\n const opposite = crs.transformation.untransform(point, scale);\n const sizeX = (opposite.x - corner.x) * metres;\n const sizeZ = -(opposite.y - corner.y) * metres;\n tile.texture = texture;\n tile.mesh = /* alloc */ {\n position: /* alloc */ [(corner.x - origin.x) * metres, 0, -(corner.y - origin.y) * metres],\n rotation: /* alloc */ [0, 0, 0],\n scale: /* alloc */ [sizeX, 1, sizeZ],\n worldMatrix: /* alloc */ [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],\n children: /* alloc */ [], visible: true, device, geometry: rasterGeometryByLayer.get(layer),\n program: rasterProgramByLayer.get(layer), texture,\n opacity: layer.options.opacity, id: nextId.value++,\n renderOrder: layer.options.zIndex || 0, tile, fadeDuration: 250, ground: true,\n _rasterSource: layer,\n };\n setParent(tile.mesh, rootByLayer.get(layer));\n}\n", "export const rasterTexture = {\n size: [null, null],\n format: 'rgba8unorm',\n usage: null\n};\n", "export const rasterSampler = {\n addressModeU: 'clamp-to-edge',\n addressModeV: 'clamp-to-edge',\n magFilter: 'linear',\n minFilter: 'linear'\n};\n", "export const rasterBuffer = {\n size: null,\n usage: null\n};\n", "export const rasterPositions = [0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1];\n", "export const rasterNormals = [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0];\n", "export const rasterUVs = [0, 0, 1, 0, 0, 1, 1, 1];\n", "export const rasterIndices = [0, 2, 1, 1, 2, 3];\n", "import { rasterBuffer } from '../globals/rasterBuffer.js';\nimport { rasterPositions } from '../globals/rasterPositions.js';\nimport { rasterNormals } from '../globals/rasterNormals.js';\nimport { rasterUVs } from '../globals/rasterUVs.js';\nimport { rasterIndices } from '../globals/rasterIndices.js';\n\n\nexport function createGeometry(device) {\n const attributes = /* alloc */ {\n position: /* alloc */ { size: 3, data: /* alloc */ new Float32Array(rasterPositions) },\n normal: /* alloc */ { size: 3, data: /* alloc */ new Float32Array(rasterNormals) },\n uv: /* alloc */ { size: 2, data: /* alloc */ new Float32Array(rasterUVs) },\n index: /* alloc */ { data: /* alloc */ new Uint16Array(rasterIndices) },\n };\n let name, attribute;\n for ([name, attribute] of Object.entries(attributes)) {\n attribute.count = attribute.data.length / (attribute.size || 1);\n attribute.indexFormat = 'uint16';\n attribute.buffer = device.createBuffer((\n rasterBuffer.size = attribute.data.byteLength,\n rasterBuffer.usage = name === 'index' ? GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST\n : GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,\n rasterBuffer\n ));\n\n device.queue.writeBuffer(attribute.buffer, 0, attribute.data);\n }\n return /* alloc */ { device, attributes, drawRange: /* alloc */ { start: 0, count: attributes.index.count } };\n}\n", "import { loadingTilesByLayer } from '../weakmaps/loadingTilesByLayer.js';\nimport { rasterVersionByLayer } from '../weakmaps/rasterVersionByLayer.js';\nimport { readyByLayer } from '../weakmaps/readyByLayer.js';\n\nimport { blobParts } from '../globals/blobParts.js';\n\nimport { update } from \"../scene/scheduleSceneUpdate.js\";\nimport { registerTerrainTile } from \"./registerTerrainTile.js\";\nimport { pruneRasterTiles } from \"./pruneRasterTiles.js\";\nimport { pumpRasterTiles } from './pumpRasterTiles.js';\nimport { createRasterMesh } from './createRasterMesh.js';\nimport { getZxy } from '../archives/getZxy.js';\n\nexport async function finishRasterTile(layer, tile) {\n try {\n await readyByLayer.get(layer);\n const result = await getZxy(layer.options.archive,\n tile.coords.z, tile.coords.x, tile.coords.y, tile.request.signal\n );\n if (tile.request.signal.aborted) {\n result?.image?.close();\n return;\n }\n if (!result) throw /* alloc */ new Error(`Tile ${tile.coords.z}/${tile.coords.x}/${tile.coords.y} is not in the offline archive`);\n try {\n if (result.image) tile.image = result.image;\n else {\n blobParts[0] = result.data;\n const blob = /* alloc */ new Blob(blobParts);\n blobParts[0] = null;\n tile.image = await createImageBitmap(blob);\n }\n } catch {\n blobParts[0] = null;\n throw /* alloc */ new Error(`Unable to decode tile ${tile.coords.z}/${tile.coords.x}/${tile.coords.y}`);\n }\n if (tile.request.signal.aborted) {\n tile.image.close();\n tile.image = null;\n return;\n }\n createRasterMesh(layer, tile);\n tile.loadedAt = performance.now();\n tile.done = true;\n rasterVersionByLayer.set(layer, (rasterVersionByLayer.get(layer) || 0) + 1);\n registerTerrainTile(layer, tile.coords, tile);\n layer.fire('tileload', /* alloc */ { tile, coords: tile.coords });\n update(layer);\n } catch (error) {\n if (tile.request.signal.aborted) return;\n tile.error = error.message;\n rasterVersionByLayer.set(layer, (rasterVersionByLayer.get(layer) || 0) + 1);\n layer.fire('tileerror', /* alloc */ { tile, coords: tile.coords, error });\n layer.fire('error', /* alloc */ { error, coords: tile.coords });\n } finally {\n loadingTilesByLayer.set(layer, loadingTilesByLayer.get(layer) - 1);\n if (layer._map) {\n pumpRasterTiles(layer);\n pruneRasterTiles(layer);\n if (!loadingTilesByLayer.get(layer)) layer.fire('load');\n update(layer);\n }\n }\n}\n", "import { loadingTilesByLayer } from '../weakmaps/loadingTilesByLayer.js';\n\n\n\nimport { finishRasterTile } from './finishRasterTile.js';\n\nexport function loadRasterTile(layer, tile) {\n tile.started = true;\n const first = loadingTilesByLayer.get(layer) === 0;\n loadingTilesByLayer.set(layer, loadingTilesByLayer.get(layer) + 1);\n layer.fire('tileloadstart', /* alloc */ { tile, coords: tile.coords });\n if (first) layer.fire('loading');\n return finishRasterTile(layer, tile);\n}\n", "import { loadingTilesByLayer } from '../weakmaps/loadingTilesByLayer.js';\nimport { rasterTilesByLayer } from '../weakmaps/rasterTilesByLayer.js';\n\nimport { TILE_SIZE } from '../globals/TILE_SIZE.js';\n\n\n\nimport { comparePendingTiles } from './comparePendingTiles.js';\nimport { loadRasterTile } from './loadRasterTile.js';\n\nexport function pumpRasterTiles(layer) {\n const map = layer._map;\n if (!map) return;\n const center = map.project(map.getCenter(), 0).divideBy(TILE_SIZE);\n const pending = /* alloc */ [];\n let tile, coords;\n for (tile of rasterTilesByLayer.get(layer).values()) {\n if (tile.started || tile.request.signal.aborted) continue;\n ({ coords } = tile);\n pending.push(/* alloc */ { tile, distance: Math.hypot((coords.x + 0.5) / 2 ** coords.z - center.x,\n (coords.y + 0.5) / 2 ** coords.z - center.y) });\n }\n pending.sort(comparePendingTiles);\n for ({ tile } of pending) {\n if (loadingTilesByLayer.get(layer) >= 4) break;\n loadRasterTile(layer, tile);\n }\n}\n", "import { rasterTilesByLayer } from '../weakmaps/rasterTilesByLayer.js';\n\nimport { releaseRasterTile } from './releaseRasterTile.js';\r\n\r\nexport function retainRasterTiles(layer, required) {\r\n const tiles = rasterTilesByLayer.get(layer);\r\n let key, tile, coords;\r\n for ([key, tile] of tiles) {\r\n if (!required.has(key) && !tile.done) releaseRasterTile(layer, tile);\r\n }\r\n for ([key, coords] of required) {\r\n if (tiles.has(key)) continue;\r\n tile = /* alloc */ { coords, request: /* alloc */ new AbortController(), done: false };\r\n tiles.set(key, tile);\r\n }\r\n}\r\n", "export const TILE_RADIUS = 6;\n", "export const archiveNorthWest = [0, 0];\n", "export const archiveSouthEast = [0, 0];\n", "import { TILE_SIZE } from '../globals/TILE_SIZE.js';\r\nimport { TILE_RADIUS } from '../globals/TILE_RADIUS.js';\r\nimport { archiveNorthWest } from '../globals/archiveNorthWest.js';\r\nimport { archiveSouthEast } from '../globals/archiveSouthEast.js';\r\n\r\nexport function rasterTileRange(map, header, zoom) {\r\n const bounds = map.getBounds();\r\n const northwest = map.project(bounds.getNorthWest(), zoom).divideBy(TILE_SIZE).floor();\r\n const southeast = map.project(bounds.getSouthEast(), zoom).divideBy(TILE_SIZE).floor();\r\n archiveNorthWest[0] = header.maxLat; archiveNorthWest[1] = header.minLon;\r\n archiveSouthEast[0] = header.minLat; archiveSouthEast[1] = header.maxLon;\r\n const archiveMin = header.maxLat === undefined || header.minLon === undefined\r\n ? null : map.project(archiveNorthWest, zoom).divideBy(TILE_SIZE).floor();\r\n const archiveMax = header.minLat === undefined || header.maxLon === undefined\r\n ? null : map.project(archiveSouthEast, zoom).divideBy(TILE_SIZE).floor();\r\n const center = map.project(map.getCenter(), zoom).divideBy(TILE_SIZE).floor();\r\n return /* alloc */ {\r\n minX: Math.max(0, northwest.x, archiveMin?.x ?? 0, center.x - TILE_RADIUS),\r\n maxX: Math.min(2 ** zoom - 1, southeast.x, archiveMax?.x ?? 2 ** zoom - 1, center.x + TILE_RADIUS),\r\n minY: Math.max(0, northwest.y, archiveMin?.y ?? 0, center.y - TILE_RADIUS),\r\n maxY: Math.min(2 ** zoom - 1, southeast.y, archiveMax?.y ?? 2 ** zoom - 1, center.y + TILE_RADIUS),\r\n };\r\n}\r\n", "import { headerByLayer } from '../weakmaps/headerByLayer.js';\nimport { rasterTilesByLayer } from '../weakmaps/rasterTilesByLayer.js';\nimport { sharedByLayer } from '../weakmaps/sharedByLayer.js';\nimport { tileZoomByLayer } from '../weakmaps/tileZoomByLayer.js';\nimport { wantedRasterTilesByLayer } from '../weakmaps/wantedRasterTilesByLayer.js';\n\nimport { wantedTiles } from '../globals/wantedTiles.js';\nimport { coverageTiles } from '../globals/coverageTiles.js';\n\n\n\nimport { pumpRasterTiles } from './pumpRasterTiles.js';\n\nimport { retainRasterTiles } from './retainRasterTiles.js';\nimport { pruneRasterTiles } from './pruneRasterTiles.js';\nimport { rasterTileRange } from './rasterTileRange.js';\n\n// ponytail: cap horizon views at 169 tiles; raise the radius if extreme pitches need more.\n\nexport function updateRasterTiles(layer) {\n const map = layer._map;\n if (!map || !sharedByLayer.get(layer) || !headerByLayer.get(layer)) return;\n\n const zoom = Math.max(headerByLayer.get(layer).minZoom ?? 0, Math.min(\n Math.round(map.getZoom()),\n layer.options.maxZoom,\n layer.options.maxNativeZoom\n ));\n tileZoomByLayer.set(layer, zoom);\n const range = rasterTileRange(map, headerByLayer.get(layer), zoom);\n const wanted = wantedTiles;\n wanted.clear();\n let x, y, key, coords, parent;\n for (x = range.minX; x <= range.maxX; x++) {\n for (y = range.minY; y <= range.maxY; y++) {\n wanted.set(`${zoom}/${x}/${y}`, /* alloc */ { z: zoom, x, y });\n }\n }\n wantedRasterTilesByLayer.set(layer, /* alloc */ new Set(wanted.keys()));\n const coverage = coverageTiles;\n coverage.clear();\n const parentZoom = Math.max(headerByLayer.get(layer).minZoom ?? 0, zoom - 2), factor = 2 ** (zoom - parentZoom);\n if (parentZoom < zoom) {\n for ([key, coords] of wanted) {\n if (rasterTilesByLayer.get(layer).get(key)?.done) continue;\n parent = /* alloc */ { z: parentZoom, x: Math.floor(coords.x / factor), y: Math.floor(coords.y / factor) };\n coverage.set(`${parent.z}/${parent.x}/${parent.y}`, parent);\n }\n }\n const required = /* alloc */ new Map(coverage);\n for ([key, coords] of wanted) required.set(key, coords);\n wanted.clear(); coverage.clear();\n retainRasterTiles(layer, required);\n pumpRasterTiles(layer);\n pruneRasterTiles(layer);\n}\n", "import { updateRasterTiles } from \"./updateRasterTiles.js\";\n\nexport function getRasterEvents(layer) {\n const update = updateRasterTiles.bind(null, layer);\n return /* alloc */ { moveend: update, zoomend: update, rotate: update, pitch: update, resize: update };\n}\n", "import { headerByLayer } from '../weakmaps/headerByLayer.js';\n\n\n\nimport { getHeader } from \"../archives/getHeader.js\";\n\nexport async function readyRaster(layer, archive) {\n const header = await getHeader(archive);\n layer.options.archive = archive;\n headerByLayer.set(layer, header);\n if (layer.options.maxNativeZoom === undefined) {\n layer.options.maxNativeZoom = header.maxZoom;\n }\n layer.options.maxZoom = Math.max(layer.options.minZoom || 0, layer.options.maxZoom);\n layer.fire('ready');\n return layer;\n}\n", "\n\nexport function reportError(layer, error) {\n layer.fire('error', /* alloc */ { error });\n throw error;\n}\n", "import { rasterTilesByLayer } from '../weakmaps/rasterTilesByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\nimport { terrain3DByLayer } from '../weakmaps/terrain3DByLayer.js';\n\n\n\nimport { removeRasterTile } from './removeRasterTile.js';\nimport { setParent } from '../scene/setParent.js';\nimport { registerTerrainTile } from './registerTerrainTile.js';\n\nexport function setRasterTerrain(layer, terrain) {\n // Pending sources bind the current terrain when their raster attachment is ready.\n if (!rasterTilesByLayer.get(layer) || terrain3DByLayer.get(layer) === terrain) return;\n let tile;\n for (tile of rasterTilesByLayer.get(layer).values()) {\n if(terrain3DByLayer.get(layer)) removeRasterTile(terrain3DByLayer.get(layer), tile);\n if (tile.mesh) {\n tile.mesh.visible = true;\n setParent(tile.mesh, rootByLayer.get(layer));\n }\n }\n terrain3DByLayer.set(layer, terrain || null);\n if (terrain) {\n for (tile of rasterTilesByLayer.get(layer).values()) {\n if (tile.done) registerTerrainTile(layer, tile.coords, tile);\n }\n }\n}\n", "import { addedByLayer } from '../weakmaps/addedByLayer.js';\nimport { terrain3DByMap } from '../weakmaps/terrain3DByMap.js';\n\n\n\n\nimport { setRasterTerrain } from \"./setRasterTerrain.js\";\n\nexport async function finishAttachment(layer, map, attached) {\n try {\n await attached;\n addedByLayer.get(layer).resolve();\n setRasterTerrain(layer, terrain3DByMap.get(map));\n } catch (error) {\n layer.fire('error', /* alloc */ { error });\n }\n}\n", "import { readyByLayer } from '../weakmaps/readyByLayer.js';\n\n\n\nimport { updateRasterTiles } from \"./updateRasterTiles.js\";\n\nexport async function updateAttachedTiles(layer, map, attached) {\n try {\n await Promise.all(/* alloc */ [attached, readyByLayer.get(layer)]);\n if (layer._map === map && map.hasLayer(layer)) updateRasterTiles(layer);\n } catch (error) {\n layer.fire('error', /* alloc */ { error });\n }\n}\n", "import { locationByLayer } from '../weakmaps/locationByLayer.js';\n\n\n\nimport { finishAttachment } from './finishRasterAttachment.js';\nimport { updateAttachedTiles } from './updateAttachedTiles.js';\nimport { attach } from '../scene/attachSharedScene.js';\n\nexport function onPMTileAdd(layer, map) {\n if (!locationByLayer.get(layer)) locationByLayer.set(layer, map.getCenter());\n const attached = attach(layer, map);\n finishAttachment(layer, map, attached);\n updateAttachedTiles(layer, map, attached);\n}\n", "import { rasterGeometryByLayer } from '../weakmaps/rasterGeometryByLayer.js';\nimport { rasterProgramByLayer } from '../weakmaps/rasterProgramByLayer.js';\nimport { rasterTilesByLayer } from '../weakmaps/rasterTilesByLayer.js';\n\n\n\nimport { destroyTexture } from '../textures/destroyTexture.js';\nimport { releaseRasterTile } from './releaseRasterTile.js';\n\nexport function releaseRasterTiles(layer) {\n let tile, attribute;\n for (tile of rasterTilesByLayer.get(layer).values()) releaseRasterTile(layer, tile);\n rasterProgramByLayer.get(layer)?.pipelineCache.clear();\n rasterProgramByLayer.set(layer, null);\n if (rasterGeometryByLayer.get(layer)) {\n for (attribute of Object.values(rasterGeometryByLayer.get(layer).attributes)) {\n destroyTexture(layer, attribute.buffer);\n }\n rasterGeometryByLayer.set(layer, null);\n }\n}\n", "export const pointerEventsByLayer = new WeakMap();\n", "export const bridgeMeshByLayer = new WeakMap();\n", "export const controlByLayer = new WeakMap();\n", "export const eventMapByLayer = new WeakMap();\n", "export const eventsByLayer = new WeakMap();\n", "export const fadeFrameByLayer = new WeakMap();\n", "export const fadeVersionByLayer = new WeakMap();\n", "export const terrainArchiveByLayer = new WeakMap();\n", "export const terrainControllerByLayer = new WeakMap();\n", "export const terrainLoadingByLayer = new WeakMap();\n", "export const terrainSourceByLayer = new WeakMap();\n", "export const typeByLayer = new WeakMap();\n", "export const walkerByLayer = new WeakMap();\n", "import { addedByLayer } from './addedByLayer.js';\nimport { archiveHeaderByLayer } from './archiveHeaderByLayer.js';\nimport { areasByLayer } from './areasByLayer.js';\nimport { bridgeMeshByLayer } from './bridgeMeshByLayer.js';\nimport { bridgesByLayer } from './bridgesByLayer.js';\nimport { cameraByLayer } from './cameraByLayer.js';\nimport { cameraZIndexOffsetByLayer } from './cameraZIndexOffsetByLayer.js';\nimport { containerByLayer } from './containerByLayer.js';\nimport { controlByLayer } from './controlByLayer.js';\nimport { countStatusByLayer } from './countStatusByLayer.js';\nimport { cursorByLayer } from './cursorByLayer.js';\nimport { demByLayer } from './demByLayer.js';\nimport { directoriesByLayer } from './directoriesByLayer.js';\nimport { etagByLayer } from './etagByLayer.js';\nimport { eventMapByLayer } from './eventMapByLayer.js';\nimport { eventsByLayer } from './eventsByLayer.js';\nimport { fadeFrameByLayer } from './fadeFrameByLayer.js';\nimport { fadeVersionByLayer } from './fadeVersionByLayer.js';\nimport { frameByLayer } from './frameByLayer.js';\nimport { geojsonByLayer } from './geojsonByLayer.js';\nimport { groupByLayer } from './groupByLayer.js';\nimport { headerByLayer } from './headerByLayer.js';\nimport { highlightedFeatureByLayer } from './highlightedFeatureByLayer.js';\nimport { hoveredFeatureByLayer } from './hoveredFeatureByLayer.js';\nimport { inflightByLayer } from './inflightByLayer.js';\nimport { kindByLayer } from './kindByLayer.js';\nimport { layersByLayer } from './layersByLayer.js';\nimport { loadingTilesByLayer } from './loadingTilesByLayer.js';\nimport { locationByLayer } from './locationByLayer.js';\nimport { modelByLayer } from './modelByLayer.js';\nimport { modelUrlByLayer } from './modelUrlByLayer.js';\nimport { nativeGPUByLayer } from './nativeGPUByLayer.js';\nimport { pointerEventsByLayer } from './pointerEventsByLayer.js';\nimport { pruneAfterByLayer } from './pruneAfterByLayer.js';\nimport { pruneVersionByLayer } from './pruneVersionByLayer.js';\nimport { pruneWantedByLayer } from './pruneWantedByLayer.js';\nimport { queuedByLayer } from './queuedByLayer.js';\nimport { rasterGeometryByLayer } from './rasterGeometryByLayer.js';\nimport { rasterProgramByLayer } from './rasterProgramByLayer.js';\nimport { rasterTilesByLayer } from './rasterTilesByLayer.js';\nimport { rasterVersionByLayer } from './rasterVersionByLayer.js';\nimport { raycasterByLayer } from './raycasterByLayer.js';\nimport { readyByLayer } from './readyByLayer.js';\nimport { rendererByLayer } from './rendererByLayer.js';\nimport { rendererReadyByLayer } from './rendererReadyByLayer.js';\nimport { roofRasterByLayer } from './roofRasterByLayer.js';\nimport { roofRastersByLayer } from './roofRastersByLayer.js';\nimport { rootByLayer } from './rootByLayer.js';\nimport { sceneByLayer } from './sceneByLayer.js';\nimport { sceneOriginByLayer } from './sceneOriginByLayer.js';\nimport { shadowMeshesByLayer } from './shadowMeshesByLayer.js';\nimport { sharedByLayer } from './sharedByLayer.js';\nimport { sizeByLayer } from './sizeByLayer.js';\nimport { state3dByLayer } from './state3dByLayer.js';\nimport { terrain3DByLayer } from './terrain3DByLayer.js';\nimport { terrainArchiveByLayer } from './terrainArchiveByLayer.js';\nimport { terrainBaseYByLayer } from './terrainBaseYByLayer.js';\nimport { terrainBoundsByLayer } from './terrainBoundsByLayer.js';\nimport { terrainControllerByLayer } from './terrainControllerByLayer.js';\nimport { terrainGridsByLayer } from './terrainGridsByLayer.js';\nimport { terrainLoadingByLayer } from './terrainLoadingByLayer.js';\nimport { terrainOriginElevationByLayer } from './terrainOriginElevationByLayer.js';\nimport { terrainPromiseByLayer } from './terrainPromiseByLayer.js';\nimport { terrainReadyByLayer } from './terrainReadyByLayer.js';\nimport { terrainRequestByLayer } from './terrainRequestByLayer.js';\nimport { terrainSourceByLayer } from './terrainSourceByLayer.js';\nimport { terrainTilesByLayer } from './terrainTilesByLayer.js';\nimport { terrainZoomByLayer } from './terrainZoomByLayer.js';\nimport { tileZoomByLayer } from './tileZoomByLayer.js';\nimport { tooltipByLayer } from './tooltipByLayer.js';\nimport { typeByLayer } from './typeByLayer.js';\nimport { urlByLayer } from './urlByLayer.js';\nimport { visibleMeshesByLayer } from './visibleMeshesByLayer.js';\nimport { walkerByLayer } from './walkerByLayer.js';\nimport { wantedRasterTilesByLayer } from './wantedRasterTilesByLayer.js';\nimport { zoomLevelByLayer } from './zoomLevelByLayer.js';\nimport { zoomTransitionsByLayer } from './zoomTransitionsByLayer.js';\nimport { zoomViewByLayer } from './zoomViewByLayer.js';\n\nexport const sceneFields = {\n \"_3d\": state3dByLayer,\n \"_added\": addedByLayer,\n \"_areas\": areasByLayer,\n \"_bridgeMesh\": bridgeMeshByLayer,\n \"_bridges\": bridgesByLayer,\n \"_cameraZIndexOffset\": cameraZIndexOffsetByLayer,\n \"_countStatus\": countStatusByLayer,\n \"_cursor\": cursorByLayer,\n \"_dem\": demByLayer,\n \"_directories\": directoriesByLayer,\n \"_etag\": etagByLayer,\n \"_fadeFrame\": fadeFrameByLayer,\n \"_fadeVersion\": fadeVersionByLayer,\n \"_frame\": frameByLayer,\n \"_geojson\": geojsonByLayer,\n \"_header\": archiveHeaderByLayer,\n \"_inflight\": inflightByLayer,\n \"_layers\": layersByLayer,\n \"_loadingTiles\": loadingTilesByLayer,\n \"_nativeGPU\": nativeGPUByLayer,\n \"_pointerEvents\": pointerEventsByLayer,\n \"_pruneAfter\": pruneAfterByLayer,\n \"_pruneVersion\": pruneVersionByLayer,\n \"_pruneWanted\": pruneWantedByLayer,\n \"_queued\": queuedByLayer,\n \"_rasterGeometry\": rasterGeometryByLayer,\n \"_rasterProgram\": rasterProgramByLayer,\n \"_rasterTiles\": rasterTilesByLayer,\n \"_rasterVersion\": rasterVersionByLayer,\n \"_rendererReady\": rendererReadyByLayer,\n \"_roofRaster\": roofRasterByLayer,\n \"_roofRasters\": roofRastersByLayer,\n \"_sceneOrigin\": sceneOriginByLayer,\n \"_shadowMeshes\": shadowMeshesByLayer,\n \"_shared\": sharedByLayer,\n \"_size\": sizeByLayer,\n \"_terrain3D\": terrain3DByLayer,\n \"_terrainArchive\": terrainArchiveByLayer,\n \"_terrainBaseY\": terrainBaseYByLayer,\n \"_terrainBounds\": terrainBoundsByLayer,\n \"_terrainController\": terrainControllerByLayer,\n \"_terrainGrids\": terrainGridsByLayer,\n \"_terrainLoading\": terrainLoadingByLayer,\n \"_terrainOriginElevation\": terrainOriginElevationByLayer,\n \"_terrainPromise\": terrainPromiseByLayer,\n \"_terrainReady\": terrainReadyByLayer,\n \"_terrainRequest\": terrainRequestByLayer,\n \"_terrainTiles\": terrainTilesByLayer,\n \"_terrainZoom\": terrainZoomByLayer,\n \"_tileZoom\": tileZoomByLayer,\n \"_tooltip\": tooltipByLayer,\n \"_type\": typeByLayer,\n \"_visibleMeshes\": visibleMeshesByLayer,\n \"_wantedRasterTiles\": wantedRasterTilesByLayer,\n \"_zoomLevel\": zoomLevelByLayer,\n \"_zoomTransitions\": zoomTransitionsByLayer,\n \"_zoomView\": zoomViewByLayer,\n \"camera\": cameraByLayer,\n \"container\": containerByLayer,\n \"control\": controlByLayer,\n \"eventMap\": eventMapByLayer,\n \"events\": eventsByLayer,\n \"group\": groupByLayer,\n \"header\": headerByLayer,\n \"highlightedFeature\": highlightedFeatureByLayer,\n \"hoveredFeature\": hoveredFeatureByLayer,\n \"kind\": kindByLayer,\n \"location\": locationByLayer,\n \"model\": modelByLayer,\n \"modelUrl\": modelUrlByLayer,\n \"raycaster\": raycasterByLayer,\n \"ready\": readyByLayer,\n \"renderer\": rendererByLayer,\n \"root\": rootByLayer,\n \"scene\": sceneByLayer,\n \"terrainSource\": terrainSourceByLayer,\n \"url\": urlByLayer,\n \"walker\": walkerByLayer,\n};\n", "import { addedByLayer } from '../weakmaps/addedByLayer.js';\nimport { areasByLayer } from '../weakmaps/areasByLayer.js';\nimport { cameraByLayer } from '../weakmaps/cameraByLayer.js';\nimport { containerByLayer } from '../weakmaps/containerByLayer.js';\nimport { geojsonByLayer } from '../weakmaps/geojsonByLayer.js';\nimport { layersByLayer } from '../weakmaps/layersByLayer.js';\nimport { pointerEventsByLayer } from '../weakmaps/pointerEventsByLayer.js';\nimport { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\nimport { sceneByLayer } from '../weakmaps/sceneByLayer.js';\nimport { sceneFields } from '../weakmaps/sceneFields.js';\nimport { sharedByLayer } from '../weakmaps/sharedByLayer.js';\nimport { tooltipByLayer } from '../weakmaps/tooltipByLayer.js';\nimport { urlByLayer } from '../weakmaps/urlByLayer.js';\n\nimport { L } from '../globals/L.js';\nimport { sceneTransferFields } from '../globals/sceneTransferFields.js';\nimport { renderers } from '../weakmaps/renderers.js';\n\n\n\nimport * as endZoom from '../animations/endZoom.js';\nimport * as onMapChange from './onMapChange.js';\nimport * as onPointerLeave from '../picking/onPointerLeave.js';\nimport * as onZoomAnim from '../animations/onZoomAnim.js';\nimport { releaseArea } from '../sources/releaseArea.js';\nimport { updateStatus } from '../sources/updateSourceStatus.js';\nimport { setParent } from './setParent.js';\nimport * as startZoom from '../animations/startZoom.js';\nimport { cancelUpdate } from './cancelUpdate.js';\nimport { update } from './scheduleSceneUpdate.js';\nimport { releaseSharedScene } from './releaseSharedScene.js';\n\n/** Release source meshes/UI; retain manually added objects and model CPU data. */\nexport function onRemove3DLayer(layer, map) {\n addedByLayer.set(layer, Promise.withResolvers());\n if (containerByLayer.get(layer)) {\n onPointerLeave.onPointerLeave(layer);\n L.DomEvent.off(containerByLayer.get(layer), pointerEventsByLayer.get(layer), layer);\n containerByLayer.set(layer, null);\n }\n let area, key, sceneLayer, field;\n for (area of areasByLayer.get(layer).values()) releaseArea(layer, area);\n areasByLayer.get(layer).clear();\n tooltipByLayer.get(layer)?.remove();\n tooltipByLayer.set(layer, null);\n if (urlByLayer.get(layer) || geojsonByLayer.get(layer)) updateStatus(layer, false);\n const shared = sharedByLayer.get(layer);\n if (!shared) return;\n setParent(rootByLayer.get(layer), null);\n layersByLayer.get(shared).delete(layer);\n if (shared === layer) {\n map.off('move zoom rotate pitch resize viewreset layeradd layerremove', onMapChange.onMapChange, layer);\n map.off('zoomstart', startZoom.startZoom, layer);\n map.off('zoomanim', onZoomAnim.onZoomAnim, layer);\n map.off('zoomend', endZoom.endZoom, layer);\n cancelUpdate(layer);\n if (layersByLayer.get(layer).size) {\n // Keep the original scene origin and GPU resources when ownership changes.\n const next = layersByLayer.get(layer).values().next().value;\n for (key of sceneTransferFields) {\n field = sceneFields[key];\n field.set(next, field.get(layer));\n field.delete(layer);\n }\n for (sceneLayer of layersByLayer.get(next)) sharedByLayer.set(sceneLayer, next);\n renderers.set(map, next);\n map.on('move zoom rotate pitch resize viewreset layeradd layerremove', onMapChange.onMapChange, next);\n map.on('zoomstart', startZoom.startZoom, next);\n map.on('zoomanim', onZoomAnim.onZoomAnim, next);\n map.on('zoomend', endZoom.endZoom, next);\n update(next);\n } else {\n releaseSharedScene(layer, map);\n }\n } else update(shared);\n sharedByLayer.set(layer, null);\n rendererByLayer.set(layer, null);\n sceneByLayer.set(layer, null);\n cameraByLayer.set(layer, null);\n}\n", "export const sceneTransferFields = ['_layers', '_sceneOrigin', '_size', '_zoomLevel', '_zoomTransitions', '_zoomView', '_cursor', '_roofRaster'];\n", "import { hoveredFeatureByLayer } from '../weakmaps/hoveredFeatureByLayer.js';\n\n\n\nimport { setHighlight } from './setHighlight.js';\nimport { showFeature } from './showFeature.js';\n\n/** Clear hover, highlight and tooltip without retaining a selected feature. */\n\nexport function onPointerLeave(layer) {\n hoveredFeatureByLayer.set(layer, null);\n setHighlight(layer, null);\n showFeature(layer, null);\n layer.fire('featurehover', /* alloc */ { feature: null });\n}\n", "export const sceneCleanupFields = ['_layers', '_sceneOrigin', '_size', '_zoomLevel', '_cursor'];\n", "export async function releaseRenderer(renderer, layer) {\n try {\n await renderer.device.queue.onSubmittedWorkDone();\n renderer.depthTexture?.destroy();\n renderer.roofFallbackTexture?.texture?.destroy();\n renderer.uniformBuffer?.destroy();\n renderer.sunlight?.texture?.destroy();\n renderer.sunlight?.buffer?.destroy();\n renderer.sunlight?.lights?.destroy();\n } catch (error) {\n layer.fire('error', /* alloc */ { error });\n }\n renderer.device.destroy();\n}\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { roofRasterByLayer } from '../weakmaps/roofRasterByLayer.js';\nimport { sceneFields } from '../weakmaps/sceneFields.js';\nimport { zoomTransitionsByLayer } from '../weakmaps/zoomTransitionsByLayer.js';\nimport { zoomViewByLayer } from '../weakmaps/zoomViewByLayer.js';\nimport { cameraViewByMap } from '../weakmaps/cameraViewByMap.js';\n\n\nimport { renderers } from '../weakmaps/renderers.js';\nimport { sceneCleanupFields } from '../globals/sceneCleanupFields.js';\nimport { destroyTexture } from '../textures/destroyTexture.js';\nimport { releaseRenderer } from '../gpu/releaseRenderer.js';\n\nexport function releaseSharedScene(layer, map) {\n if (roofRasterByLayer.get(layer)) destroyTexture(layer, roofRasterByLayer.get(layer).texture.texture);\n roofRasterByLayer.set(layer, null);\n if (zoomTransitionsByLayer.get(layer)) {\n let animation;\n for (animation of zoomTransitionsByLayer.get(layer).keys()) animation.play();\n }\n zoomTransitionsByLayer.set(layer, null);\n zoomViewByLayer.set(layer, null);\n cameraViewByMap.delete(map);\n map.getContainer().classList.remove('leaflet-camera-zoom');\n const renderer = rendererByLayer.get(layer);\n renderer.canvas.remove();\n releaseRenderer(renderer, layer);\n renderers.delete(map);\n let key;\n for (key of sceneCleanupFields) sceneFields[key].delete(layer);\n}\n", "import { terrain3DByLayer } from '../weakmaps/terrain3DByLayer.js';\n\n\n\nimport { releaseRasterTiles } from './releaseRasterTiles.js';\nimport { onRemove3DLayer } from '../scene/onRemove3DLayer.js';\n\nexport function onPMTileRemove(layer, map) {\n releaseRasterTiles(layer);\n terrain3DByLayer.set(layer, null);\n onRemove3DLayer(layer, map);\n}\n", "import { L } from '../globals/L.js';\nimport { TILE_SIZE } from '../globals/TILE_SIZE.js';\n\n\nexport function getRasterTileSize() {\n return /* alloc */ new L.Point(TILE_SIZE, TILE_SIZE);\n}\n", "export const renderEmpty = Object.freeze([]);\n", "import { kindByLayer } from '../weakmaps/kindByLayer.js';\n\n\n\nimport { setRasterTerrain } from '../raster/setRasterTerrain.js';\n\nexport function clearLayerTerrain(layer) {\n if (kindByLayer.get(layer) === 'raster') setRasterTerrain(layer, null);\n}\n", "import { bridgeMeshByLayer } from '../weakmaps/bridgeMeshByLayer.js';\nimport { bridgesByLayer } from '../weakmaps/bridgesByLayer.js';\nimport { demByLayer } from '../weakmaps/demByLayer.js';\nimport { rasterProgramByLayer } from '../weakmaps/rasterProgramByLayer.js';\nimport { rasterTilesByLayer } from '../weakmaps/rasterTilesByLayer.js';\nimport { terrainControllerByLayer } from '../weakmaps/terrainControllerByLayer.js';\nimport { terrainGridsByLayer } from '../weakmaps/terrainGridsByLayer.js';\nimport { terrainLoadingByLayer } from '../weakmaps/terrainLoadingByLayer.js';\nimport { terrainOriginElevationByLayer } from '../weakmaps/terrainOriginElevationByLayer.js';\nimport { terrainPromiseByLayer } from '../weakmaps/terrainPromiseByLayer.js';\nimport { terrainReadyByLayer } from '../weakmaps/terrainReadyByLayer.js';\nimport { terrainTilesByLayer } from '../weakmaps/terrainTilesByLayer.js';\nimport { terrain3DByMap } from '../weakmaps/terrain3DByMap.js';\n\n\nimport { renderEmpty } from '../globals/renderEmpty.js';\n\nimport { destroyTexture } from '../textures/destroyTexture.js';\nimport { conformModelToTerrain } from '../geometry/conformModelToTerrain.js';\nimport { disposeMesh } from '../rendering/disposeMesh.js';\nimport { setRasterTerrain } from '../raster/setRasterTerrain.js';\nimport { removeRasterTile } from '../raster/removeRasterTile.js';\nimport { setTerrainHeight } from './setTerrainHeight.js';\nimport { onRemove3DLayer } from '../scene/onRemove3DLayer.js';\nimport { clearLayerTerrain } from './clearLayerTerrain.js';\n\nexport function onTerrainRemove(layer, map) {\n\n terrainControllerByLayer.get(layer)?.abort();\n terrainLoadingByLayer.set(layer, false);\n terrainReadyByLayer.set(layer, false);\n map.eachLayer(clearLayerTerrain);\n let tile, l, grid, attribute;\n for (tile of rasterTilesByLayer.get(layer).keys()) removeRasterTile(layer, tile);\n if (terrain3DByMap.get(map) === layer) terrain3DByMap.delete(map);\n for (l of Object.values(map._layers)) {\n conformModelToTerrain(l, null);\n setTerrainHeight(l);\n }\n\n map.fire('terrainchange');\n terrainTilesByLayer.get(layer).clear();\n terrainOriginElevationByLayer.set(layer, 0);\n terrainPromiseByLayer.set(layer, null);\n if (rasterProgramByLayer.get(layer)) {\n rasterProgramByLayer.get(layer).pipelineCache.clear();\n }\n rasterProgramByLayer.set(layer, null);\n if (demByLayer.get(layer)) destroyTexture(layer, demByLayer.get(layer).texture);\n demByLayer.set(layer, null);\n for (grid of terrainGridsByLayer.get(layer)?.values() || renderEmpty) {\n for (attribute of Object.values(grid)) destroyTexture(layer, attribute.buffer);\n }\n terrainGridsByLayer.set(layer, null);\n bridgesByLayer.set(layer, null);\n disposeMesh(layer, bridgeMeshByLayer.get(layer));\n bridgeMeshByLayer.set(layer, null);\n onRemove3DLayer(layer, map);\n}\n", "import { terrainTilesByLayer } from '../weakmaps/terrainTilesByLayer.js';\n\n\n\nexport async function loadTerrainTiles(state) {\n const { backend: layer, archive, controller, tiles } = state;\n let coords, result;\n while (state.next < tiles.length) {\n controller.signal.throwIfAborted();\n coords = tiles[state.next++];\n result = await getZxy(archive, coords.z, coords.x, coords.y, controller.signal);\n if (!result || result.data.byteLength !== 256 * 256 * 4) {\n throw /* alloc */ new Error(`Missing or invalid Float32 terrain tile ${coords.z}/${coords.x}/${coords.y}`);\n }\n terrainTilesByLayer.get(layer).set(`${coords.x}/${coords.y}`, /* alloc */ new Float32Array(result.data));\n }\n}\nimport { getZxy } from '../archives/getZxy.js';\n", "export function readBridges(response) {\r\n if (!response.ok) throw /* alloc */ new Error(`Bridges: HTTP ${response.status}`);\r\n return response.json();\r\n}\r\n", "import { terrainBoundsByLayer } from '../weakmaps/terrainBoundsByLayer.js';\nimport { terrainZoomByLayer } from '../weakmaps/terrainZoomByLayer.js';\n\nimport { L } from '../globals/L.js';\r\nimport { archiveNorthWest } from '../globals/archiveNorthWest.js';\r\nimport { archiveSouthEast } from '../globals/archiveSouthEast.js';\r\nimport { compareDistance } from '../utils/compareDistance.js';\r\n\r\nexport function terrainTileQueue(layer, header) {\r\n const map = layer._map\r\n terrainZoomByLayer.set(layer, header.maxZoom);\r\n archiveNorthWest[0] = header.maxLat; archiveNorthWest[1] = header.minLon;\r\n const northwest = map.project(archiveNorthWest, terrainZoomByLayer.get(layer)).divideBy(256).floor();\r\n archiveSouthEast[0] = header.minLat; archiveSouthEast[1] = header.maxLon;\r\n const southeast = map.project(archiveSouthEast, terrainZoomByLayer.get(layer)).divideBy(256).floor();\r\n terrainBoundsByLayer.set(layer, /* alloc */ new L.Bounds(northwest, southeast));\r\n const tiles = /* alloc */ [];\r\n const center = map.project(map.getCenter(), terrainZoomByLayer.get(layer)).divideBy(256);\r\n let x, y;\r\n for (x = northwest.x; x <= southeast.x; x++) {\r\n for (y = northwest.y; y <= southeast.y; y++) {\r\n tiles.push(/* alloc */ { z: terrainZoomByLayer.get(layer), x, y, distance: Math.hypot(x + 0.5 - center.x, y + 0.5 - center.y) });\r\n }\r\n }\r\n tiles.sort(compareDistance);\r\n return tiles;\r\n}\r\n", "import { bridgeMeshByLayer } from '../weakmaps/bridgeMeshByLayer.js';\nimport { bridgesByLayer } from '../weakmaps/bridgesByLayer.js';\nimport { locationByLayer } from '../weakmaps/locationByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\nimport { terrainZoomByLayer } from '../weakmaps/terrainZoomByLayer.js';\n\nimport { radians } from '../globals/radians.js';\r\nimport { createMesh } from '../rendering/createMesh.js';\r\nimport { bridgePolygon } from './bridgePolygon.js';\r\n\r\n/**\r\n * Bare-earth DEMs drop bridges: `getElevation` returns the deck height inside these polygons (GeoJSON\r\n * Polygon/MultiPolygon with Z, e.g. IGN BD TOPO), and one mesh draws the 1.2 m thick decks.\r\n * ponytail: anything under a deck (quays, boats asking `getElevation`) also gets the deck height.\r\n */\r\nexport function addBridges(layer, geojson) {\r\n const map = layer._map, crs = map.options.crs, zoom = terrainZoomByLayer.get(layer);\r\n const origin = crs.project(locationByLayer.get(layer)), metres = Math.cos(locationByLayer.get(layer).lat * radians);\r\n const base = rootByLayer.get(layer).position[1];\r\n const position = /* alloc */ [], normal = /* alloc */ [], color = /* alloc */ [];\r\n bridgesByLayer.set(layer, /* alloc */ new Map());\r\n const context = /* alloc */ { backend: layer, map, crs, zoom, origin, metres, base, position, normal, color };\r\n let geometry, polygons, polygonIndex;\r\n for ({ geometry } of geojson.features) {\r\n if (geometry.type !== 'Polygon' && geometry.type !== 'MultiPolygon') continue;\r\n polygons = geometry.coordinates;\r\n for (polygonIndex = 0; polygonIndex < (geometry.type === 'Polygon' ? 1 : polygons.length); polygonIndex++) {\r\n bridgePolygon(context, geometry.type === 'Polygon' ? polygons : polygons[polygonIndex]);\r\n }\r\n }\r\n if (position.length) {\r\n bridgeMeshByLayer.set(layer, createMesh(layer, /* alloc */ { position, normal, color }));\r\n }\r\n}\r\n", "import { L } from '../globals/L.js';\nexport function local([lng, lat, z], crs, origin, metres, base) {\r\n const p = crs.project(/* alloc */ new L.LatLng(lat, lng));\r\n return /* alloc */ [(p.x - origin.x) * metres, z - base, -(p.y - origin.y) * metres];\r\n}\r\n", "export function bridgePaths(rings, pixels) {\r\n const paths = /* alloc */ [];\r\n let start = 0, ring, path, i;\r\n for (ring of rings) {\r\n path = /* alloc */ [];\r\n for (i = 0; i < ring.length; i++) path.push(/* alloc */ { x: pixels[start + i][0], y: pixels[start + i][1] });\r\n paths.push(path);\r\n start += ring.length;\r\n }\r\n return paths;\r\n}\r\n", "import { bridgesByLayer } from '../weakmaps/bridgesByLayer.js';\n\n\r\nexport function indexBridge(layer, pixels, triangles) {\r\n const bridgeTriangles = /* alloc */ [];\r\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\r\n let t, triangle, i, p, x, y, key, bucket;\r\n for (t of triangles) {\r\n triangle = /* alloc */ [];\r\n for (i of t) triangle.push(pixels[i]);\r\n bridgeTriangles.push(triangle);\r\n }\r\n for (p of pixels) {\r\n minX = Math.min(minX, p[0]); minY = Math.min(minY, p[1]);\r\n maxX = Math.max(maxX, p[0]); maxY = Math.max(maxY, p[1]);\r\n }\r\n const bridge = /* alloc */ {\r\n triangles: bridgeTriangles,\r\n min: /* alloc */ [minX, minY],\r\n max: /* alloc */ [maxX, maxY],\r\n };\r\n for (x = Math.floor(bridge.min[0] / 64); x <= Math.floor(bridge.max[0] / 64); x++) {\r\n for (y = Math.floor(bridge.min[1] / 64); y <= Math.floor(bridge.max[1] / 64); y++) {\r\n key = `${x}/${y}`;\r\n bucket = bridgesByLayer.get(layer).get(key);\r\n if (!bucket) bridgesByLayer.get(layer).set(key, bucket = /* alloc */ []);\r\n bucket.push(bridge);\r\n }\r\n }\r\n}\r\n", "export function bridgeFaces(context, points, triangles) {\r\n const { position, normal, color } = context;\r\n let a, b, c, pa, pb, pc, i, k, p;\r\n for ([a, b, c] of triangles) {\r\n // Counter-clockwise seen from above, so double-sided shading keeps the top lit.\r\n pa = points[a]; pb = points[b]; pc = points[c];\r\n if ((pb[2] - pa[2]) * (pc[0] - pa[0]) - (pb[0] - pa[0]) * (pc[2] - pa[2]) < 0) { i = b; b = c; c = i; }\r\n for (k = 0; k < 6; k++) {\r\n i = k === 0 || k === 3 ? a : k === 1 || k === 5 ? b : c;\r\n p = points[i];\r\n position.push(p[0], p[1] - (k >= 3 ? 1.2 : 0), p[2]);\r\n normal.push(0, k >= 3 ? -1 : 1, 0); color.push(0.6, 0.58, 0.54);\r\n }\r\n }\r\n}\r\n", "export function bridgeEdge(context, p, q) {\r\n const { position, normal, color } = context;\r\n const length = Math.hypot(q[0] - p[0], q[2] - p[2]) || 1;\r\n const nx = (q[2] - p[2]) / length, nz = -(q[0] - p[0]) / length;\r\n let k, corner;\r\n for (k = 0; k < 6; k++) {\r\n corner = k === 0 || k === 3 || k === 5 ? p : q;\r\n position.push(corner[0], corner[1] - (k === 2 || k >= 4 ? 1.2 : 0), corner[2]);\r\n normal.push(nx, 0, nz); color.push(0.6, 0.58, 0.54);\r\n }\r\n}\r\n", "import { bridgeEdge } from './bridgeEdge.js';\r\n\r\nexport function bridgeSides(context, points, rings) {\r\n let start = 0, ring, i;\r\n for (ring of rings) {\r\n for (i = 0; i < ring.length; i++) {\r\n bridgeEdge(context, points[start + i], points[start + (i + 1) % ring.length]);\r\n }\r\n start += ring.length;\r\n }\r\n}\r\n", "import { triangulate } from '../triangulation/triangulate.js';\r\nimport { local } from '../projections/projectBridgePoint.js';\r\nimport { bridgePaths } from './bridgePaths.js';\r\nimport { indexBridge } from './indexBridge.js';\r\nimport { bridgeFaces } from './bridgeFaces.js';\r\nimport { bridgeSides } from './bridgeSides.js';\r\n\r\nexport function bridgePolygon(context, polygon) {\r\n const { backend: layer, map, zoom, crs, origin, metres, base } = context;\r\n const rings = /* alloc */ [];\r\n let ring, path, lng, lat, z, p, coordinate, paths, contour, holes, triangles;\r\n for (ring of polygon) {\r\n path = ring.slice(0, -1);\r\n if (path.length >= 3) rings.push(path);\r\n }\r\n if (!rings.length) return;\r\n const pixels = /* alloc */ [], points = /* alloc */ [];\r\n for (ring of rings) for ([lng, lat, z] of ring) {\r\n p = map.project(/* alloc */ [lat, lng], zoom);\r\n pixels.push(/* alloc */ [p.x, p.y, z]);\r\n }\r\n for (ring of rings) for (coordinate of ring) points.push(local(coordinate, crs, origin, metres, base));\r\n try {\r\n paths = bridgePaths(rings, pixels);\r\n [contour, ...holes] = paths;\r\n triangles = triangulate(contour, holes);\r\n } catch { return; }\r\n indexBridge(layer, pixels, triangles);\r\n bridgeFaces(context, points, triangles);\r\n bridgeSides(context, points, rings);\r\n}\r\n", "import { locationByLayer } from '../weakmaps/locationByLayer.js';\nimport { terrainOriginElevationByLayer } from '../weakmaps/terrainOriginElevationByLayer.js';\nimport { terrainReadyByLayer } from '../weakmaps/terrainReadyByLayer.js';\n\nimport { addBridges } from '../geometry/addBridges.js';\r\nimport { conformModelToTerrain } from '../geometry/conformModelToTerrain.js';\r\nimport { getElevation } from './getElevation.js';\r\nimport { setTerrainHeight } from './setTerrainHeight.js';\r\nimport { update } from '../scene/scheduleSceneUpdate.js';\r\n\r\nexport function applyTerrain(layer, map, bridges) {\r\n\r\n terrainReadyByLayer.set(layer, true);\r\n terrainOriginElevationByLayer.set(layer, getElevation(layer, locationByLayer.get(layer)) ?? 0);\r\n let mapLayer;\r\n for (mapLayer of Object.values(map._layers)) {\r\n setTerrainHeight(mapLayer);\r\n conformModelToTerrain(mapLayer, layer);\r\n }\r\n if (bridges) addBridges(layer, bridges);\r\n map.fire('terrainchange');\r\n update(layer);\r\n layer.fire('terrainready');\r\n}\r\n", "import { headerByLayer } from '../weakmaps/headerByLayer.js';\nimport { readyByLayer } from '../weakmaps/readyByLayer.js';\nimport { terrainArchiveByLayer } from '../weakmaps/terrainArchiveByLayer.js';\nimport { terrainControllerByLayer } from '../weakmaps/terrainControllerByLayer.js';\nimport { terrainLoadingByLayer } from '../weakmaps/terrainLoadingByLayer.js';\nimport { terrainReadyByLayer } from '../weakmaps/terrainReadyByLayer.js';\nimport { terrainSourceByLayer } from '../weakmaps/terrainSourceByLayer.js';\n\nimport { createLayer } from '../scene/createLayer.js';\n\nimport { loadTerrainTiles } from './loadTerrainTiles.js';\nimport { readBridges } from './readBridges.js';\nimport { terrainTileQueue } from './terrainTileQueue.js';\nimport { applyTerrain } from './applyTerrain.js';\n\nexport async function loadTerrain(layer) {\n if (terrainLoadingByLayer.get(layer) || !layer._map) return;\n terrainLoadingByLayer.set(layer, true);\n terrainReadyByLayer.set(layer, false);\n const controller = /* alloc */ new AbortController();\n terrainControllerByLayer.set(layer, controller);\n let i;\n try {\n if (!terrainSourceByLayer.get(layer)) throw /* alloc */ new Error('Terrain layer requires a PMTiles or COG elevation archive');\n const archive = createLayer(/* alloc */ { source: /* alloc */ {\n type: layer.options.asset !== undefined || /\\.tiff?(?:[?#]|$)/i.test(terrainSourceByLayer.get(layer)) ? 'cog' : 'pmtiles',\n url: terrainSourceByLayer.get(layer), archive: layer.options.archive, asset: layer.options.asset,\n } });\n terrainArchiveByLayer.set(layer, archive);\n await readyByLayer.get(archive);\n const header = headerByLayer.get(archive);\n if (header.tileType !== 0 || header.minZoom !== header.maxZoom) {\n throw /* alloc */ new Error('Expected a single-zoom Float32 terrain archive');\n }\n const map = layer._map;\n const tiles = terrainTileQueue(layer, header);\n const state = /* alloc */ { backend: layer, archive, controller, tiles, next: 0 };\n const workers = /* alloc */ [];\n for (i = 0; i < Math.min(4, tiles.length); i++) workers.push(loadTerrainTiles(state));\n await Promise.all(workers);\n const bridges = layer.options.bridges && await fetch(layer.options.bridges, /* alloc */ { signal: controller.signal })\n .then(readBridges);\n if (controller.signal.aborted || layer._map !== map) return;\n applyTerrain(layer, map, bridges);\n return true;\n } catch (error) {\n if (!controller.signal.aborted) layer.fire('error', /* alloc */ { error });\n return false;\n } finally {\n terrainLoadingByLayer.set(layer, false);\n }\n}\n", "import { containerByLayer } from '../weakmaps/containerByLayer.js';\nimport { geojsonByLayer } from '../weakmaps/geojsonByLayer.js';\nimport { locationByLayer } from '../weakmaps/locationByLayer.js';\nimport { modelUrlByLayer } from '../weakmaps/modelUrlByLayer.js';\nimport { pointerEventsByLayer } from '../weakmaps/pointerEventsByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\nimport { tooltipByLayer } from '../weakmaps/tooltipByLayer.js';\nimport { urlByLayer } from '../weakmaps/urlByLayer.js';\n\nimport { L } from '../globals/L.js';\n\n\nimport { pointerMove } from '../picking/pointerMove.js';\nimport { pointerClick } from '../picking/pointerClick.js';\nimport { pointerLeave } from '../picking/pointerLeave.js';\nimport { attachLayer } from './attachLayer.js';\n\n/** Attach interaction immediately; initialization may finish before or after onAdd. */\nexport function onAdd3DLayer(layer, map) {\n if (!locationByLayer.get(layer)) {\n const center = map.getCenter();\n locationByLayer.set(layer, /* alloc */ new L.LatLng(center.lat, center.lng));\n }\n if (urlByLayer.get(layer) || geojsonByLayer.get(layer) || layer.options.tooltip || modelUrlByLayer.get(layer)) {\n containerByLayer.set(layer, map.getContainer());\n if (!pointerEventsByLayer.get(layer)) {\n pointerEventsByLayer.set(layer, /* alloc */ {\n mousemove: pointerMove,\n click: pointerClick,\n mouseleave: pointerLeave,\n });\n }\n if (layer.options.tooltip) {\n tooltipByLayer.set(layer, L.DomUtil.create('div', 'leaflet-3d-tooltip', containerByLayer.get(layer)));\n tooltipByLayer.get(layer).hidden = true;\n tooltipByLayer.get(layer).setAttribute('role', 'tooltip');\n tooltipByLayer.get(layer).setAttribute('aria-live', 'polite');\n tooltipByLayer.get(layer).style.cssText = 'position:absolute;z-index:600;max-width:220px;padding:10px 12px;border:1px solid #6b5140;border-radius:6px;background:#fffaf0;box-shadow:0 3px 12px #0005;color:#30251d;font:13px/1.45 sans-serif;pointer-events:none';\n }\n L.DomEvent.on(containerByLayer.get(layer), pointerEventsByLayer.get(layer), layer);\n }\n if (rootByLayer.get(layer)) {\n attachLayer(layer, map);\n }\n}\n", "import { cameraByLayer } from '../weakmaps/cameraByLayer.js';\nimport { modelByLayer } from '../weakmaps/modelByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\n\n\n\nimport { raycast } from './raycast.js';\n\n/**\n * Translate a geometry hit into a configured model or batched source feature.\n * Sorted half-open face ranges permit binary search without a feature per triangle.\n * @returns {PickedFeature|null}\n */\n\nexport function findFeature(layer, event) {\n const model = modelByLayer.get(layer)\n if (!rootByLayer.get(layer) || !cameraByLayer.get(layer)) {\n return null;\n }\n let hit, object, ranges, low, high, middle, range;\n for (hit of raycast(layer, event, rootByLayer.get(layer).children, Boolean(model))) {\n if (model) {\n object = hit.object;\n while (object && object !== model) {\n object = object.parent;\n }\n if (object === model) {\n return /* alloc */ {\n id: model.id, properties: model.extras,\n model, mesh: hit.object, point: hit.point\n };\n }\n }\n ranges = hit.object.extras?.featureFaces;\n if (!ranges) {\n continue;\n }\n low = 0, high = ranges.length - 1;\n while (low <= high) {\n middle = (low + high) >> 1;\n range = ranges[middle];\n if (hit.faceIndex < range.faceStart) {\n high = middle - 1;\n } else if (hit.faceIndex >= range.faceEnd) {\n low = middle + 1;\n } else {\n return /* alloc */ {\n ...range,\n mesh: hit.object,\n point: hit.point\n };\n }\n }\n }\n return null;\n}\n", "import { hoveredFeatureByLayer } from '../weakmaps/hoveredFeatureByLayer.js';\n\n\n\nimport { findFeature } from './findFeature.js';\nimport { setHighlight } from './setHighlight.js';\nimport { showFeature } from './showFeature.js';\nimport { onPointerLeave } from './onPointerLeave.js';\n\n/** Gestures clear hover once without raycasting; normal misses report feature:null. */\n\nexport function onPointerMove(layer, event) {\n if (event.buttons || layer._map.dragging?.moving() || layer._map._animatingZoom) {\n if (hoveredFeatureByLayer.get(layer)) onPointerLeave(layer);\n return;\n }\n hoveredFeatureByLayer.set(layer, findFeature(layer, event));\n setHighlight(layer, hoveredFeatureByLayer.get(layer));\n showFeature(layer, hoveredFeatureByLayer.get(layer), event);\n layer.fire('featurehover', /* alloc */ {\n feature: hoveredFeatureByLayer.get(layer),\n originalEvent: event\n });\n}\n", "import * as onPointerMove from './onPointerMove.js';\n\nexport function pointerMove(event) {\n onPointerMove.onPointerMove(this, event);\n}\n", "import { hoveredFeatureByLayer } from '../weakmaps/hoveredFeatureByLayer.js';\n\n\n\nimport { findFeature } from './findFeature.js';\nimport { setHighlight } from './setHighlight.js';\nimport { showFeature } from './showFeature.js';\n\n/** Emit click without moving the map or pinning the tooltip. */\n\nexport function onClick(layer, event) {\n const feature = findFeature(layer, event);\n hoveredFeatureByLayer.set(layer, feature);\n setHighlight(layer, feature);\n showFeature(layer, feature, event);\n layer.fire('featureclick', /* alloc */ { feature, originalEvent: event });\n}\n", "import * as onClick from './onClick.js';\n\nexport function pointerClick(event) {\n onClick.onClick(this, event);\n}\n", "import * as onPointerLeave from './onPointerLeave.js';\n\nexport function pointerLeave() {\n onPointerLeave.onPointerLeave(this);\n}\n", "import { addedByLayer } from '../weakmaps/addedByLayer.js';\n\n\n\nimport * as attach from './attachSharedScene.js';\n\nexport async function attachLayer(layer, map) {\n try {\n await attach.attach(layer, map);\n addedByLayer.get(layer).resolve();\n } catch (error) {\n layer.fire('error', /* alloc */ { error });\n }\n}\n", "import { loadTerrain } from './loadTerrain.js';\r\n\r\nexport function loadReadyTerrain() {\r\n loadTerrain(this.backend).then(this.resolve, this.reject);\r\n}\r\n", "import { kindByLayer } from '../weakmaps/kindByLayer.js';\n\n\n\nimport { setRasterTerrain } from '../raster/setRasterTerrain.js';\n\nexport function setLayerTerrain(layer) {\n if (kindByLayer.get(layer) === 'raster') setRasterTerrain(layer, this);\n}\n", "import { rootByLayer } from '../weakmaps/rootByLayer.js';\nimport { terrainPromiseByLayer } from '../weakmaps/terrainPromiseByLayer.js';\nimport { terrain3DByMap } from '../weakmaps/terrain3DByMap.js';\n\n\n\n\nimport { loadTerrain } from \"./loadTerrain.js\";\nimport { setRasterTerrain } from '../raster/setRasterTerrain.js';\nimport { onAdd3DLayer } from '../scene/onAdd3DLayer.js';\nimport { loadReadyTerrain } from './loadReadyTerrain.js';\nimport { setLayerTerrain } from './setLayerTerrain.js';\n\nexport function onTerrainAdd(layer, map) {\n\n if (terrain3DByMap.get(map) && terrain3DByMap.get(map) !== layer) {\n throw /* alloc */ new Error('Only one terrain layer can be active per map');\n }\n terrain3DByMap.set(map, layer);\n onAdd3DLayer(layer, map);\n if (rootByLayer.get(layer)) terrainPromiseByLayer.set(layer, loadTerrain(layer));\n else {\n const pending = Promise.withResolvers();\n terrainPromiseByLayer.set(layer, pending.promise);\n layer.once('ready', loadReadyTerrain, /* alloc */ { backend: layer, ...pending });\n }\n map.eachLayer(setLayerTerrain, layer);\n map.fire('terrainchange');\n}\n", "import { kindByLayer } from '../weakmaps/kindByLayer.js';\nimport { rasterTilesByLayer } from '../weakmaps/rasterTilesByLayer.js';\nimport { terrainReadyByLayer } from '../weakmaps/terrainReadyByLayer.js';\nimport { terrainSourceByLayer } from '../weakmaps/terrainSourceByLayer.js';\nimport { terrainTilesByLayer } from '../weakmaps/terrainTilesByLayer.js';\n\n\n\nimport { onTerrainRemove } from './onTerrainRemove.js';\nimport { onTerrainAdd } from './onTerrainAdd.js';\nimport { init3D } from '../scene/init3D.js';\n\n/**\n * Renders Float32 DEM tiles and archived raster basemaps in the shared WebGPU scene.\n * Source options: `url` (single-zoom Float32 PMTiles or supported COG DEM);\n * `bridges` (optional GeoJSON deck polygons with Z, see _addBridges).\n */\nexport function initTerrain(layer, options) {\n const terrainSource = options.url;\n const layerOptions = /* alloc */ { ...options };\n delete layerOptions.url;\n init3D(layer, layerOptions);\n terrainSourceByLayer.set(layer, terrainSource);\n terrainTilesByLayer.set(layer, /* alloc */ new Map());\n rasterTilesByLayer.set(layer, /* alloc */ new Map());\n terrainReadyByLayer.set(layer, false);\n kindByLayer.set(layer, 'terrain');\n}\n", "import { L } from '../globals/L.js';\nimport { onAddSun } from './onAddSun.js';\nimport { underEntry } from '../layer-controls/underEntry.js';\nimport { initialize } from './initializeTimeControl.js';\nimport { onAdd } from './onAddTimeControl.js';\nimport { addTo } from './addTimeControlToMap.js';\nimport { remove } from './removeTimeControl.js';\nimport { onRemoveSun } from './onRemoveSun.js';\n\nL.Control.Time = L.Control.extend({\n options: { position: 'bottomright' },\n initialize,\n onAdd,\n onRemove: onRemoveSun,\n addTo,\n remove,\n});", "export const timeControlByMap = new WeakMap();\n", "export const sunlightByControl = new WeakMap();\n", "export const sunByMap = new WeakMap();\r\n", "import { L } from '../globals/L.js';\nimport { updateSky } from './updateSky.js';\nimport { updateSun } from './updateSun.js';\nimport { useLiveTime } from './useLiveTime.js';\nimport { useSelectedTime } from './useSelectedTime.js';\n\nexport function createSun(map) {\n const disc = 'position:absolute;width:18px;height:18px;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;';\n const sunDisc = L.DomUtil.create('div', 'sunlight-sun');\n const moonDisc = L.DomUtil.create('div', 'sunlight-moon');\n sunDisc.style.cssText = disc + 'background:#fff3bd;box-shadow:0 0 18px 7px #ffd27699;';\n moonDisc.style.cssText = disc + 'background:#dce5f2;box-shadow:0 0 10px 2px #cbdcff55;';\n sunDisc.setAttribute('role', 'img'); sunDisc.setAttribute('aria-label', 'Sun');\n moonDisc.setAttribute('role', 'img'); moonDisc.setAttribute('aria-label', 'Moon');\n const container = L.DomUtil.create('div', 'sunlight-control');\n container.style.cssText = 'color:#222;width:min(200px,calc(100vw - 60px));font:12px/1.4 sans-serif;';\n const date = document.createElement('input');\n date.type = 'date';\n date.style.cssText = 'width:100%;box-sizing:border-box;';\n date.setAttribute('aria-label', 'Solar date (UTC)');\n const slider = document.createElement('input');\n slider.type = 'range';\n slider.style.cssText = 'width:100%;box-sizing:border-box;margin:10px 0 4px;cursor:pointer;';\n slider.min = '0'; slider.max = '1439'; slider.step = '1';\n slider.setAttribute('aria-label', 'Time of day (UTC)');\n const output = document.createElement('output');\n output.style.cssText = 'font-weight:bold;font-variant-numeric:tabular-nums;';\n output.setAttribute('aria-live', 'off');\n const now = document.createElement('button');\n now.type = 'button'; now.textContent = 'Now';\n const timeRow = document.createElement('div');\n timeRow.className = 'sunlight-time';\n timeRow.style.cssText = 'display:flex;justify-content:space-between;align-items:center;';\n timeRow.append(output, now);\n const status = document.createElement('div');\n status.className = 'sunlight-status';\n status.style.marginTop = '5px';\n status.setAttribute('role', 'status');\n const note = document.createElement('small');\n note.style.color = '#555';\n note.textContent = 'Indicative \u00B7 loaded geometry only. Streetlight illumination is estimated, not measured lux.';\n container.append(date, slider, timeRow, status, note);\n const state = /* alloc */ {\n control: null, map, originalSky: '', container, sunDisc, moonDisc, date, slider, output, status,\n projection: /* alloc */ { left: 0, top: 0 },\n };\n state.update = updateSun.bind(null, state);\n state.updateSky = updateSky.bind(null, state);\n now.onclick = useLiveTime.bind(null, state);\n date.onchange = slider.oninput = useSelectedTime.bind(null, state);\n L.DomEvent.disableClickPropagation(container);\n L.DomEvent.disableScrollPropagation(container);\n return state;\n}\n", "import { pitchSkyByMap } from '../weakmaps/pitchSkyByMap.js';\nimport { sunlightByMap } from '../weakmaps/sunlightByMap.js';\n\nimport { radians } from '../globals/radians.js';\n\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\n\nimport { updateCelestialDisc } from './updateCelestialDisc.js';\n\nexport function updateSky({ map, originalSky, sunDisc, moonDisc, projection }) {\n const sun = sunlightByMap.get(map), sky = pitchSkyByMap.get(map);\n if (sun) map.getContainer().style.setProperty('--leaflet-sky-background', sun.background);\n else if (originalSky) map.getContainer().style.setProperty('--leaflet-sky-background', originalSky);\n else map.getContainer().style.removeProperty('--leaflet-sky-background');\n const size = map.getSize(), pitch = mapGetPitch(map) * radians, bearing = mapGetBearing(map) * radians;\n updateCelestialDisc(sunDisc, sun, sky, size, pitch, bearing, projection);\n updateCelestialDisc(moonDisc, sun?.moon, sky, size, pitch, bearing, projection);\n}\n", "/** Perspective projection of a celestial direction; null when behind the camera. */\n\nexport function projectCelestialBody(dir, size, pitch, bearing, target) {\n const [x, y, z] = dir;\n const forward = -x * Math.sin(bearing) * Math.sin(pitch) - y * Math.cos(pitch) - z * Math.cos(bearing) * Math.sin(pitch);\n if (forward > 0) {\n target ||= /* alloc */ {};\n target.left = size.x / 2 + size.y * 1.5 * (x * Math.cos(bearing) - z * Math.sin(bearing)) / forward;\n target.top = size.y / 2 - size.y * 1.5 * (-x * Math.sin(bearing) * Math.cos(pitch) + y * Math.sin(pitch) - z * Math.cos(bearing) * Math.cos(pitch)) / forward;\n return target;\n }\n return null;\n}\n", "import { projectCelestialBody } from '../projections/projectCelestialBody.js';\r\n\r\nexport function updateCelestialDisc(disc, body, sky, size, pitch, bearing, projection) {\r\n disc.hidden = true;\r\n if (!sky || !body || body.altitude <= 0) return;\r\n if (disc.parentNode !== sky) sky.append(disc);\r\n const point = projectCelestialBody(body.direction, size, pitch, bearing, projection);\r\n if (!point) return;\r\n const { left, top } = point;\r\n disc.hidden = left < 0 || left > size.x || top < 0 || top > sky.clientHeight || sky.style.display === 'none';\r\n disc.style.left = `${left}px`; disc.style.top = `${top}px`;\r\n}\r\n", "export const atmosphereStops = [\n [-18, [3, 7, 20],\n [17, 28, 54],\n [0.025, 0.04, 0.09]\n ],\n [-6, [37, 53, 84],\n [182, 106, 86],\n [0.12, 0.10, 0.14]\n ],\n [0, [101, 131, 171],\n [246, 170, 115],\n [0.38, 0.24, 0.18]\n ],\n [10, [74, 147, 208],\n [197, 221, 237],\n [0.80, 0.75, 0.68]\n ],\n [25, [53, 144, 213],\n [223, 238, 250],\n [1, 1, 1]\n ],\n];\n", "export const atmosphereColor = [0, 0, 0];\n", "export function mix(a, b, t, values) {\n values ||= /* alloc */ [];\n values.length = a.length;\n let i;\n for (i = 0; i < a.length; i++) values[i] = a[i] + (b[i] - a[i]) * t;\n return values;\n}\n", "export function rgb(values) {\n let rounded = '', i;\n for (i = 0; i < values.length; i++) {\n if (i) rounded += ', ';\n rounded += Math.round(values[i]);\n }\n return `rgb(${rounded})`;\n}\n", "import { atmosphereStops } from '../globals/atmosphereStops.js';\nimport { atmosphereColor } from '../globals/atmosphereColor.js';\n\nimport { mix } from '../colors/mixColor.js';\nimport { rgb } from '../colors/formatRGB.js';\n\n\nexport function atmosphere(altitude) {\n if (!Number.isFinite(altitude)) {\n throw /* alloc */ new Error('Invalid solar altitude');\n }\n const stops = atmosphereStops;\n let upper = -1;\n let i;\n for (i = 0; i < stops.length; i++) {\n if (stops[i][0] >= altitude) { upper = i; break; }\n }\n const b = stops[upper < 0 ? stops.length - 1 : upper],\n a = stops[Math.max(0, upper - 1)];\n const t = a === b || upper < 0 ? 1 : (altitude - a[0]) / (b[0] - a[0]);\n return /* alloc */ {\n background: `linear-gradient(${rgb(mix(a[1], b[1], t, atmosphereColor))}, ${rgb(mix(a[2], b[2], t, atmosphereColor))})`,\n tint: mix(a[3], b[3], t),\n };\n}\n", "/** Normalize dates and validate the observer without calculating a celestial position. */\r\nexport function solarTime(date, lat, lng) {\r\n const time = date instanceof Date ? Date.prototype.getTime.call(date)\r\n : typeof date === 'string' ? Date.parse(date)\r\n : (/* alloc */ new Date(date)).getTime();\r\n if (!Number.isFinite(time) || !Number.isFinite(lat) || Math.abs(lat) > 90 ||\r\n !Number.isFinite(lng) || Math.abs(lng) > 180) {\r\n throw /* alloc */ new Error('Invalid solar date or location');\r\n }\r\n return time;\r\n}\r\n", "import { radians } from '../globals/radians.js';\n\nexport function horizontalPosition(d, lat, lng, ascension, declination) {\n const hourAngle = (280.16 + 360.9856235 * d + lng) * radians - ascension;\n const latitude = lat * radians;\n const altitude = Math.asin(Math.sin(latitude) * Math.sin(declination) +\n Math.cos(latitude) * Math.cos(declination) * Math.cos(hourAngle));\n const southAzimuth = Math.atan2(Math.sin(hourAngle),\n Math.cos(hourAngle) * Math.sin(latitude) - Math.tan(declination) * Math.cos(latitude));\n const azimuth = (southAzimuth / radians + 180 + 360) % 360;\n return /* alloc */ {\n altitude: altitude / radians, azimuth,\n direction: /* alloc */ [Math.sin(azimuth * radians) * Math.cos(altitude), Math.sin(altitude),\n -Math.cos(azimuth * radians) * Math.cos(altitude)]\n };\n}\n", "import { solarTime } from './solarTime.js';\nimport { horizontalPosition } from \"./horizontalPosition.js\";\nimport { radians } from '../globals/radians.js';\nimport { sinObliquity } from '../globals/sinObliquity.js';\nimport { cosObliquity } from '../globals/cosObliquity.js';\n\n// Low-precision geocentric lunar orbit; no parallax or atmospheric refraction.\n\nexport function moonPosition(date, lat, lng) {\n const d = solarTime(date, lat, lng) / 86400000 - 10957.5;\n const anomaly = (134.963 + 13.064993 * d) * radians;\n const longitude = (218.316 + 13.176396 * d + 6.289 * Math.sin(anomaly)) * radians;\n const latitude = 5.128 * Math.sin((93.272 + 13.229350 * d) * radians) * radians;\n const x = Math.cos(latitude) * Math.cos(longitude);\n const y = Math.cos(latitude) * Math.sin(longitude) * cosObliquity - Math.sin(latitude) * sinObliquity;\n const z = Math.cos(latitude) * Math.sin(longitude) * sinObliquity + Math.sin(latitude) * cosObliquity;\n return horizontalPosition(d, lat, lng, Math.atan2(y, x), Math.asin(z));\n}\n", "import { radians } from './radians.js';\r\n\r\nexport const sinObliquity = Math.sin(23.4397 * radians);\r\n", "import { radians } from './radians.js';\r\n\r\nexport const cosObliquity = Math.cos(23.4397 * radians);\r\n", "import { horizontalPosition } from \"./horizontalPosition.js\";\nimport { solarTime } from './solarTime.js';\nimport { radians } from '../globals/radians.js';\nimport { sinObliquity } from '../globals/sinObliquity.js';\nimport { cosObliquity } from '../globals/cosObliquity.js';\n\n// Solar centre, without atmospheric refraction.\n\nexport function solarPosition(date, lat, lng) {\n const time = solarTime(date, lat, lng);\n const d = time / 86400000 - 10957.5;\n const mean = (357.5291 + 0.98560028 * d) * radians;\n const longitude = mean + (1.9148 * Math.sin(mean) + 0.02 * Math.sin(2 * mean) +\n 0.0003 * Math.sin(3 * mean) + 102.9372 + 180) * radians;\n const declination = Math.asin(Math.sin(longitude) * sinObliquity);\n const ascension = Math.atan2(Math.sin(longitude) * cosObliquity, Math.cos(longitude));\n return horizontalPosition(d, lat, lng, ascension, declination);\n}\n", "import { renderers } from '../weakmaps/renderers.js';\n\n\r\nimport { update as updateScene } from '../scene/scheduleSceneUpdate.js';\r\n\r\nexport function render(map) {\r\n const renderer = renderers.get(map);\r\n if (renderer) updateScene(renderer);\r\n}\r\n", "import { sunlightByMap } from '../weakmaps/sunlightByMap.js';\n\n\n\r\nimport { atmosphere } from './atmosphere.js';\r\nimport { moonPosition } from '../astronomy/moonPosition.js';\r\nimport { solarPosition } from '../astronomy/solarPosition.js';\r\nimport { render } from './requestSunlightRender.js';\r\nimport { updateSky } from './updateSky.js';\r\n\r\nexport function updateSun(state) {\r\n const { control, map, date, slider, output, status } = state;\r\n try {\r\n if (control.live) control.time = /* alloc */ new Date();\r\n const time = control.time.toISOString();\r\n date.value = time.slice(0, 10);\r\n slider.value = String(control.time.getUTCHours() * 60 + control.time.getUTCMinutes());\r\n output.textContent = `${time.slice(11, 16)} UTC${control.live ? ' \u00B7 now' : ''}`;\r\n const center = map.getCenter();\r\n const sun = solarPosition(control.time, center.lat, center.lng);\r\n sunlightByMap.set(map, sun);\r\n Object.assign(sun, atmosphere(sun.altitude));\r\n sun.moon = moonPosition(control.time, center.lat, center.lng);\r\n status.textContent = sun.altitude <= 0\r\n ? 'Night \u00B7 no direct sunlight'\r\n : sun.altitude < 3\r\n ? 'Low sun \u00B7 shadows paused'\r\n : `Sun altitude ${sun.altitude.toFixed(1)}\u00B0`;\r\n map.fire('simulationtimechange', /* alloc */ {\r\n time: /* alloc */ new Date(control.time),\r\n live: control.live,\r\n });\r\n updateSky(state);\r\n render(map);\r\n } catch (error) {\r\n sunlightByMap.delete(map);\r\n updateSky(state);\r\n render(map);\r\n status.textContent = `Error: ${error.message}`;\r\n console.error('Solar simulation', error);\r\n }\r\n}\r\n", "import { updateSun } from './updateSun.js';\r\n\r\nexport function useLiveTime(state) {\r\n state.control.live = true;\r\n updateSun(state);\r\n}\r\n", "import { sunlightByMap } from '../weakmaps/sunlightByMap.js';\n\n\n\r\nimport { render } from './requestSunlightRender.js';\r\nimport { updateSky } from './updateSky.js';\r\nimport { updateSun } from './updateSun.js';\r\n\r\nexport function useSelectedTime(state) {\r\n const { control, map, date, slider, status } = state;\r\n control.live = false;\r\n if (!date.value || !date.validity.valid) {\r\n control.time = /* alloc */ new Date(NaN);\r\n map.fire('simulationtimechange', /* alloc */ { time: null, live: false });\r\n sunlightByMap.delete(map);\r\n updateSky(state);\r\n render(map);\r\n status.textContent = 'Error: choose a valid solar date';\r\n return;\r\n }\r\n control.time = /* alloc */ new Date(`${date.value}T00:00:00Z`);\r\n control.time.setUTCMinutes(Number(slider.value));\r\n updateSun(state);\r\n}\r\n", "import { updateSun } from './updateSun.js';\r\n\r\nexport function tickSun(state) {\r\n if (state.control.live) updateSun(state);\r\n}\r\n", "import { timeControlByMap } from '../weakmaps/timeControlByMap.js';\n\nimport { sunlightByControl } from '../weakmaps/sunlightByControl.js';\r\nimport { sunByMap } from '../weakmaps/sunByMap.js';\r\nimport { createSun } from './createSun.js';\r\nimport { tickSun } from './tickSun.js';\r\n\r\nexport function onAddSun(control, map) {\r\n let state = sunByMap.get(map);\r\n if (state?.control && state.control !== control) {\r\n control._map = null;\r\n if (control.layer._map === map) map.removeLayer(control.layer);\r\n throw /* alloc */ new Error('Only one Time control can be active per map');\r\n }\r\n if (!state) {\r\n state = createSun(map);\r\n sunByMap.set(map, state);\r\n }\r\n state.control = control;\r\n state.originalSky = map.getContainer().style.getPropertyValue('--leaflet-sky-background');\r\n timeControlByMap.set(map, control);\r\n sunlightByControl.set(control, state);\r\n state.update();\r\n state.timer = setInterval(tickSun, 60000, state);\r\n map.on('moveend', state.update);\r\n map.on('move rotate pitch resize', state.updateSky);\r\n return state.container;\r\n}\r\n", "import { controlByLayer } from '../weakmaps/controlByLayer.js';\nimport { kindByLayer } from '../weakmaps/kindByLayer.js';\n\nimport { L } from '../globals/L.js';\n\r\n\r\nimport { addTimeLayer } from './addTimeLayer.js';\r\nimport { removeTimeLayer } from './removeTimeLayer.js';\r\n\r\nexport function initialize(options) {\r\n L.Util.setOptions(this, options);\r\n this.live = true;\r\n this.layer = /* alloc */ new L.Layer();\r\n controlByLayer.set(this.layer, this);\r\n kindByLayer.set(this.layer, 'time');\r\n}\r\n", "import { controlByLayer } from '../weakmaps/controlByLayer.js';\n\n\n\nexport function addTimeLayer(map) {\r\n return controlByLayer.get(this).addTo(map);\r\n}\r\n", "import { controlByLayer } from '../weakmaps/controlByLayer.js';\n\nimport { L } from '../globals/L.js';\n\n\nexport function removeTimeLayer() {\r\n return L.Control.prototype.remove.call(controlByLayer.get(this));\r\n}\r\n", "import { onAddSun } from './onAddSun.js';\r\n\r\nexport function onAdd(map) {\r\n return onAddSun(this, map);\r\n}\r\n", "import { L } from '../globals/L.js';\nimport { underEntry } from '../layer-controls/underEntry.js';\r\nimport { styleTimeControl } from './styleTimeControl.js';\r\n\r\nexport function addTo(map) {\r\n L.Control.prototype.addTo.call(this, map);\r\n const container = this.getContainer();\r\n if (this.layer._map === map) underEntry(this.layer, container, styleTimeControl.bind(null, container));\r\n else styleTimeControl(container, false);\r\n return this;\r\n}\r\n", "export function styleTimeControl(container, nested) {\r\n container.classList.toggle('leaflet-control', !nested);\r\n container.classList.toggle('leaflet-bar', !nested);\r\n container.style.background = nested ? '' : '#fff';\r\n container.style.padding = nested ? '2px 0 6px 20px' : '8px';\r\n container.style.margin = nested ? '0' : '';\r\n}\r\n", "import { L } from '../globals/L.js';\nexport function remove() {\r\n if (this._map?.hasLayer(this.layer)) {\r\n this._map.removeLayer(this.layer);\r\n return this;\r\n }\r\n return L.Control.prototype.remove.call(this);\r\n}\r\n", "import { sunlightByMap } from '../weakmaps/sunlightByMap.js';\nimport { timeControlByMap } from '../weakmaps/timeControlByMap.js';\n\nimport { sunByMap } from '../weakmaps/sunByMap.js';\r\n\r\n\r\nimport { render } from './requestSunlightRender.js';\r\nimport { updateSky } from './updateSky.js';\r\n\r\nexport function removeSun(state) {\r\n const { map, timer, sunDisc, moonDisc } = state;\r\n const shared = sunByMap.get(map);\r\n clearInterval(timer);\r\n timeControlByMap.delete(map);\r\n map.fire('simulationtimechange', /* alloc */ { time: null, live: false });\r\n map.off('moveend', state.update);\r\n map.off('move rotate pitch resize', state.updateSky);\r\n sunlightByMap.delete(map);\r\n updateSky(state);\r\n sunDisc.remove(); moonDisc.remove();\r\n render(map);\r\n if (shared === state) shared.control = null;\r\n}\r\n", "import { sunlightByControl } from '../weakmaps/sunlightByControl.js';\r\n\r\nimport { removeSun } from './removeSun.js';\r\n\r\nexport function onRemoveSun() {\r\n const sunlight = sunlightByControl.get(this);\r\n if (!sunlight) return;\r\n removeSun(sunlight);\r\n sunlightByControl.delete(this);\r\n}\r\n", "import { L } from '../globals/L.js';\nimport { speed as sharedSpeed } from '../globals/speed.js';\nimport { trafficEmptyOptions } from '../globals/trafficEmptyOptions.js';\nimport { vehicles } from '../globals/vehicles.js';\nimport { trafficShader } from '../globals/trafficShader.js';\nimport { trafficByLayer } from '../weakmaps/trafficByLayer.js';\n\n\n\uFEFF/**\n * Vehicles moving along GeoJSON lanes; a compute pass places them on the GPU every frame.\n * Source options:\n * - `url`: GeoJSON (Multi)LineStrings, or a JS module whose default export `(time, layer, signal)` returns them (time-dependent data);\n * - `vehicle`: 'car' (default), 'boat', 'bus', 'tram', 'metro', 'bicycle' or 'pedestrian'; `side`: offset right of the lane centreline in metres (vehicle default);\n * - `speed`: m/s of `flow` lanes; `outline`: draw the lanes.\n * Lane properties: `flow` (vehicles/h) or `timetable` (see scheduledTrips.js), optional fixed `elevation`\n * in metres, `name`/`description` for the default tooltip. The status line (count and vehicle type) sits under the layer's entry in the layers control.\n * L.Control.Time on the same map drives the time; without one, vehicles run live.\n */\nimport { build } from '../geometry/buildGeometryParts.js';\nimport { init3D } from '../scene/init3D.js';\nimport { tooltip } from './trafficTooltip.js';\n\n\n\nimport { addTraffic } from './addTraffic.js';\nimport { placeTraffic } from './placeTraffic.js';\nimport { removeTraffic } from './removeTraffic.js';\nimport { readyTraffic } from './readyTraffic.js';\nimport { tickTraffic } from './tickTraffic.js';\nimport { updateTraffic } from './updateTraffic.js';\nimport { updateTrafficTerrain } from './updateTrafficTerrain.js';\n\nexport function initTraffic(layer, { url, vehicle = 'car', side, outline, speed: velocity = sharedSpeed, ...options } = trafficEmptyOptions) {\n const { model, lights, side: defaultSide } = vehicles[vehicle];\n side ??= defaultSide;\n init3D(layer, /* alloc */ {\n tooltip,\n nightLight: Boolean(lights),\n ...options,\n });\n const status = L.DomUtil.create('small', 'traffic-status');\n status.style.cssText = 'flex:0 1 auto;padding:1px 5px;border-radius:3px;background:#00000008;color:#555;';\n status.title = vehicle;\n status.textContent = `${vehicle}: loading\u2026`;\n const template = build(model(0)), stride = template.position.length, vertices = stride / 3;\n const params = /* alloc */ new ArrayBuffer(16);\n const paramFloats = /* alloc */ new Float32Array(params);\n const paramInts = /* alloc */ new Uint32Array(params);\n const state = /* alloc */ {\n layer, url, model, lights, side, outline, velocity, vehicle, status, template, stride, vertices,\n params, paramFloats, paramInts,\n ready: false, frame: undefined, request: undefined, lanes: /* alloc */ [], tripsKey: undefined,\n mesh: undefined, route: undefined, litAt: -Infinity,\n trips: /* alloc */ [], rebasedAt: 0, nextCheck: -Infinity, elapsed: 0, gpu: null,\n lanesDirty: true, stale: false, loaded: undefined, file: undefined,\n };\n // Lane points are [x, z, ground, cumulative length]. Mirrors along() and place().\n state.shader = trafficShader;\n state.tick = tickTraffic.bind(null, state);\n state.update = updateTraffic.bind(null, state);\n state.terrain = updateTrafficTerrain.bind(null, state);\n trafficByLayer.set(layer, state);\n layer.on('ready', readyTraffic.bind(null, state));\n layer.on('add', addTraffic.bind(null, state));\n layer.on('remove', removeTraffic.bind(null, state));\n}\n", "// Pure helpers of the 'traffic' type: lane interpolation and vehicle scheduling.\n/** Default urban speed (m/s) used to turn a lane's hourly `flow` into vehicles on the road. */\nexport const speed = 8;\n", "export const trafficEmptyOptions = Object.freeze({});\n", "// Built-in vehicles for the 'traffic' type. Models are [ring of [x, z], bottom, top, rgb, topRing?] convex prisms in metres;\n// forward is -z, right is +x. `topRing` (same length as `ring`) tapers the prism; rgb components above 1 are self-lit lamps.\nexport const paints = [\n [0.86, 0.86, 0.88],\n [0.1, 0.1, 0.12],\n [0.5, 0.53, 0.57],\n [0.65, 0.1, 0.08],\n [0.12, 0.25, 0.55],\n [0.85, 0.7, 0.15]\n];\n", "export const dark = [0.08, 0.07, 0.06];\n", "// Pedestrian, about 1.77 m tall, prisms as in utils/vehicles.js (forward -z). Limbs hang from their pivot at y = 0.\nexport const skin = [0.85, 0.64, 0.5];\n", "export const trousers = [0.16, 0.2, 0.32];\n", "export function box(x0, x1, z0, z1) {\n return /* alloc */ [\n /* alloc */ [x0, z0],\n /* alloc */ [x1, z0],\n /* alloc */ [x1, z1],\n /* alloc */ [x0, z1],\n ];\n}\n", "import { paints } from '../globals/paints.js';\nimport { dark } from '../globals/dark.js';\nimport { skin } from '../globals/skin.js';\nimport { trousers } from '../globals/trousers.js';\n\nimport { box } from '../geometry/box.js';\n\nexport function bicycleModel(index) {\n const paint = paints[index % paints.length];\n return /* alloc */ [\n /* alloc */ [box(-0.045, 0.045, -0.85, -0.25), 0.02, 0.62, dark],\n /* alloc */ [box(-0.045, 0.045, 0.25, 0.85), 0.02, 0.62, dark],\n /* alloc */ [box(-0.06, 0.06, -0.5, 0.5), 0.4, 0.65, paint],\n /* alloc */ [box(-0.32, 0.32, -0.58, -0.5), 0.95, 1.02, dark],\n /* alloc */ [box(-0.1, 0.1, 0.15, 0.4), 0.85, 0.92, dark],\n /* alloc */ [box(-0.18, 0.18, -0.12, 0.28), 1, 1.5, paint],\n /* alloc */ [box(-0.11, 0.11, -0.22, 0), 1.5, 1.72, skin],\n /* alloc */ [box(-0.13, 0.13, -0.23, 0.01), 1.72, 1.8, paint],\n /* alloc */ [box(-0.25, -0.15, -0.5, -0.05), 1, 1.25, skin],\n /* alloc */ [box(0.15, 0.25, -0.5, -0.05), 1, 1.25, skin],\n /* alloc */ [box(-0.2, -0.08, 0, 0.32), 0.3, 1, trousers],\n /* alloc */ [box(0.08, 0.2, -0.25, 0.07), 0.3, 1, trousers],\n ];\n}\n", "export const shirt = [0.75, 0.2, 0.15];\n", "import { box } from '../geometry/box.js';\nimport { trousers as sharedTrousers } from './trousers.js';\nimport { shirt as sharedShirt } from './shirt.js';\nimport { skin as sharedSkin } from './skin.js';\nimport { dark as sharedDark } from './dark.js';\n\nexport const parts = {\n body: [\n [box(-0.17, 0.17, -0.1, 0.1), 0.82, 0.95, sharedTrousers],\n [box(-0.19, 0.19, -0.11, 0.11), 0.95, 1.44, sharedShirt],\n [box(-0.05, 0.05, -0.05, 0.05), 1.44, 1.5, sharedSkin],\n [box(-0.1, 0.1, -0.11, 0.1), 1.5, 1.72, sharedSkin],\n [box(-0.105, 0.105, -0.06, 0.115), 1.58, 1.77, sharedDark],\n [box(-0.105, 0.105, -0.115, -0.06), 1.7, 1.77, sharedDark],\n ],\n leg: [\n [box(-0.07, 0.07, -0.07, 0.07), -0.82, 0, sharedTrousers],\n [box(-0.07, 0.07, -0.17, 0.07), -0.9, -0.82, sharedDark]\n ],\n arm: [\n [box(-0.05, 0.05, -0.05, 0.05), -0.55, 0, sharedShirt],\n [box(-0.045, 0.045, -0.045, 0.045), -0.66, -0.55, sharedSkin]\n ],\n};\n", "import { parts } from '../globals/parts.js';\nimport { paints } from '../globals/paints.js';\nimport { trousers } from '../globals/trousers.js';\nimport { skin } from '../globals/skin.js';\n\nimport { box } from '../geometry/box.js';\n\nexport function pedestrianModel(index) {\n const model = parts.body.slice();\n model[1] = /* alloc */ [model[1][0], model[1][1], model[1][2], paints[index % paints.length]];\n model.push(\n /* alloc */ [box(-0.16, -0.02, -0.07, 0.07), 0.08, 0.9, trousers],\n /* alloc */ [box(0.02, 0.16, -0.07, 0.07), 0.08, 0.9, trousers],\n /* alloc */ [box(-0.3, -0.2, -0.05, 0.05), 0.76, 1.42, skin],\n /* alloc */ [box(0.2, 0.3, -0.05, 0.05), 0.76, 1.42, skin],\n );\n return model;\n}\n", "export function routeColor(properties) {\r\n const color = properties?.route_color;\r\n if (!/^[\\da-f]{6}$/i.test(color)) return /* alloc */ [0.1, 0.55, 0.65];\r\n const value = Number.parseInt(color, 16);\r\n return /* alloc */ [(value >> 16 & 255) / 255, (value >> 8 & 255) / 255, (value & 255) / 255];\r\n}\r\n", "export const glass = [0.12, 0.15, 0.18];\n", "export const white = [0.92, 0.93, 0.92];\n", "export const tyre = [0.05, 0.05, 0.05];\n", "export const headlight = [1.9, 1.85, 1.7];\n", "export const taillight = [1.7, 0.06, 0.05];\n", "import { glass } from '../globals/glass.js';\nimport { white } from '../globals/white.js';\nimport { tyre } from '../globals/tyre.js';\nimport { headlight } from '../globals/headlight.js';\nimport { taillight } from '../globals/taillight.js';\n\nimport { box } from '../geometry/box.js';\n\nexport function carriage(center, length, color) {\n const front = center - length / 2, rear = center + length / 2;\n return /* alloc */ [\n /* alloc */ [box(-1.25, 1.25, front, rear), 0.45, 1.25, color],\n /* alloc */ [box(-1.2, 1.2, front + 0.15, rear - 0.15), 1.25, 2.65, glass],\n /* alloc */ [box(-1.25, 1.25, front, rear), 2.65, 3.1, white],\n /* alloc */ [box(-1.15, -0.85, front + 1, front + 2), 0, 0.7, tyre],\n /* alloc */ [box(0.85, 1.15, rear - 2, rear - 1), 0, 0.7, tyre],\n /* alloc */ [box(-0.9, 0.9, front - 0.03, front), 0.8, 1.05, headlight],\n /* alloc */ [box(-0.9, 0.9, rear, rear + 0.03), 0.8, 1.05, taillight],\n ];\n}\n", "import { routeColor } from '../traffic/routeColor.js';\nimport { carriage } from './buildCarriage.js';\n\nexport function busModel(index, properties) {\r\n return carriage(0, 12, routeColor(properties));\r\n}\n", "import { routeColor } from '../traffic/routeColor.js';\nimport { carriage } from './buildCarriage.js';\n\nexport function tramModel(index, properties) {\n const color = routeColor(properties), parts = /* alloc */ [];\n let car;\n for (car = 0; car < 5; car++) parts.push(...carriage((car - 2) * 6.5, 6, color));\n return parts;\n}\n", "import { routeColor } from '../traffic/routeColor.js';\nimport { carriage } from './buildCarriage.js';\n\nexport function metroModel(index, properties) {\n const color = routeColor(properties), parts = /* alloc */ [];\n let car;\n for (car = 0; car < 5; car++) parts.push(...carriage((car - 2) * 15, 14, color));\n return parts;\n}\n", "import { box } from \"../geometry/box.js\";\n\nexport function mirror(x0, x1, z0, z1, ...rest) {\n return /* alloc */ [\n /* alloc */ [box(x0, x1, z0, z1), ...rest],\n /* alloc */ [box(-x1, -x0, z0, z1), ...rest]\n ];\n}\n", "import { paints } from '../globals/paints.js';\nimport { tyre } from '../globals/tyre.js';\nimport { glass } from '../globals/glass.js';\nimport { headlight } from '../globals/headlight.js';\nimport { taillight } from '../globals/taillight.js';\n\r\nimport { box } from '../geometry/box.js';\r\n\r\n\r\nimport { mirror } from './mirrorVehiclePart.js';\r\n\r\n\r\n\r\n\r\nexport function carModel(i) {\r\n const paint = paints[i % paints.length];\r\n return /* alloc */ [\r\n ...mirror(0.7, 0.92, -1.68, -1.02, 0, 0.64, tyre),\r\n ...mirror(0.7, 0.92, 1.02, 1.68, 0, 0.64, tyre),\r\n /* alloc */ [\r\n /* alloc */ [\r\n /* alloc */ [-0.9, -1.95],\r\n /* alloc */ [-0.72, -2.25],\r\n /* alloc */ [0.72, -2.25],\r\n /* alloc */ [0.9, -1.95],\r\n /* alloc */ [0.9, 2.05],\r\n /* alloc */ [0.76, 2.25],\r\n /* alloc */ [-0.76, 2.25],\r\n /* alloc */ [-0.9, 2.05],\r\n ],\r\n 0.28, 0.82, paint],\r\n // Greenhouse: the windscreen leans back, the rear window less.\r\n /* alloc */ [box(-0.84, 0.84, -0.75, 1.6), 0.82, 1.38, glass, box(-0.7, 0.7, -0.05, 1.3)],\r\n /* alloc */ [box(-0.71, 0.71, -0.06, 1.31), 1.38, 1.46, paint],\r\n ...mirror(0.38, 0.8, -2.3, -2.16, 0.56, 0.76, headlight),\r\n /* alloc */ [box(-0.78, 0.78, 2.16, 2.3), 0.6, 0.76, taillight],\r\n ];\r\n}\r\n", "export const hull = [\n [-5.5, 30],\n [5.5, 30],\n [5.5, -20],\n [4, -26],\n [1.5, -30],\n [-1.5, -30],\n [-4, -26],\n [-5.5, -20]\n];\n", "import { mirror } from './mirrorVehiclePart.js';\n\nexport function boatBenches() {\n const benches = /* alloc */ [];\n let i;\n for (i = 0; i < 12; i++) benches.push(...mirror(0.5, 3.8, -12 + i * 3, -11.3 + i * 3, 3.9, 4.4,\n /* alloc */ [0.62, 0.1, 0.1]));\n return benches;\n}\n", "import { hull } from '../globals/hull.js';\nimport { white } from '../globals/white.js';\nimport { glass } from '../globals/glass.js';\n\r\n\r\nimport { box } from '../geometry/box.js';\r\n\r\nimport { mirror } from './mirrorVehiclePart.js';\r\n\r\nimport { boatBenches } from './boatBenches.js';\r\n\r\n// Panoramic river cruiser, about 60 x 11 m.\r\nexport function boatModel() {\r\n return /* alloc */ [\r\n /* alloc */ [\r\n hull, 0, 0.8, /* alloc */ [0.1, 0.16, 0.26]],\r\n /* alloc */ [hull, 0.8, 1.4, white],\r\n /* alloc */ [box(-5, 5, -18, 26), 1.4, 3.7, glass, box(-4.6, 4.6, -17.4, 25.6)],\r\n ...mirror(4.64, 4.74, -17, 25, 3.25, 3.45, /* alloc */ [1.6, 1.25, 0.8]),\r\n /* alloc */ [box(-4.8, 4.8, -17.8, 25.8), 3.7, 3.9, white],\r\n ...boatBenches(),\r\n ...mirror(4.65, 4.8, -13.6, 25.8, 3.9, 4.8, white),\r\n /* alloc */ [box(-4.8, 4.8, 25.65, 25.8), 3.9, 4.8, white],\r\n /* alloc */ [box(-2.2, 2.2, -17.6, -14), 3.9, 4.7, white],\r\n /* alloc */ [box(-2.2, 2.2, -17.6, -14), 4.7, 5.5, glass],\r\n /* alloc */ [box(-2.5, 2.5, -18, -13.6), 5.5, 5.7, white],\r\n /* alloc */ [\r\n box(-2.45, -2.2, -16.2, -15.8), 5, 5.3, /* alloc */ [2, 0.15, 0.1]],\r\n /* alloc */ [\r\n box(2.2, 2.45, -16.2, -15.8), 5, 5.3, /* alloc */ [0.1, 2, 0.4]],\r\n /* alloc */ [box(-0.1, 0.1, -15.9, -15.7), 5.7, 6.6, white],\r\n /* alloc */ [\r\n box(-0.15, 0.15, -15.95, -15.65), 6.6, 6.8, /* alloc */ [2, 2, 1.9]],\r\n ];\r\n}\r\n", "import { bicycleModel } from '../vehicles/bicycleModel.js';\nimport { pedestrianModel } from '../vehicles/pedestrianModel.js';\nimport { busModel } from '../vehicles/busModel.js';\nimport { tramModel } from '../vehicles/tramModel.js';\nimport { metroModel } from '../vehicles/metroModel.js';\nimport { carModel } from '../vehicles/carModel.js';\nimport { boatModel } from '../vehicles/boatModel.js';\n\n/**\n * `side`: default offset (metres) to the right of the lane centreline. `model(i)` gives the prisms of the i-th vehicle.\n * `lights`: night point lights in model space (see the night lighting grid), e.g. the pool cast by the headlights.\n */\nexport const vehicles = {\n bicycle: {\n side: 0.4,\n model: bicycleModel\n },\n pedestrian: {\n side: 0.3,\n model: pedestrianModel\n },\n bus: {\n side: 1.5,\n model: busModel\n },\n tram: {\n side: 0,\n model: tramModel\n },\n metro: {\n side: 0,\n model: metroModel\n },\n car: {\n side: 1.8,\n model: carModel,\n lights: [{\n position: [0, 1.2, -6],\n radius: 10,\n color: [1, 0.94, 0.82],\n flux: 800\n }]\n },\n // Panoramic river cruiser, about 60 \u00D7 11 m: glass saloon, open upper deck with benches, wheelhouse forward.\n boat: {\n side: 0,\n model: boatModel,\n lights: [{\n position: [0, 8, 4],\n radius: 30,\n color: [1, 0.8, 0.55],\n flux: 20000\n }]\n },\n};\n", "// One workgroup per vehicle shares its lane lookup and pose across all model vertices.\nexport const trafficShader = /* wgsl */`\n struct Params { seconds: f32, side: f32, vertices: u32, total: u32 }\n struct Vehicle { start: u32, count: u32, base: f32, speed: f32 }\n @group(0) @binding(0) var<uniform> params: Params;\n @group(0) @binding(1) var<storage, read> model: array<f32>;\n @group(0) @binding(2) var<storage, read> points: array<vec4f>;\n @group(0) @binding(3) var<storage, read> vehicles: array<Vehicle>;\n @group(0) @binding(4) var<storage, read_write> position: array<f32>;\n @group(0) @binding(5) var<storage, read_write> normal: array<f32>;\n var<workgroup> center: vec3f;\n var<workgroup> heading: vec2f;\n @compute @workgroup_size(64)\n fn main(@builtin(workgroup_id) group: vec3u, @builtin(local_invocation_index) thread: u32) {\n let vehicleIndex = group.x;\n if (thread == 0u) {\n let vehicle = vehicles[vehicleIndex];\n let last = vehicle.start + vehicle.count - 1u;\n let length = points[last].w;\n var s = vehicle.base + params.seconds * vehicle.speed;\n s -= length * floor(s / length);\n var i = vehicle.start + 1u;\n var end = last;\n while (i < end) {\n let middle = i + (end - i) / 2u;\n if (points[middle].w < s) { i = middle + 1u; }\n else { end = middle; }\n }\n let a = points[i - 1u];\n let b = points[i];\n let d = select(b.w - a.w, 1.0, b.w == a.w);\n let t = (s - a.w) / d;\n heading = (b.xy - a.xy) / d;\n center = vec3f(a.x + (b.x - a.x) * t - heading.y * params.side,\n a.z + (b.z - a.z) * t, a.y + (b.y - a.y) * t + heading.x * params.side);\n }\n workgroupBarrier();\n for (var vertex = thread; vertex < params.vertices; vertex += 64u) {\n let k = vertex * 3u;\n let n = params.vertices * 3u + k;\n let o = (vehicleIndex * params.vertices + vertex) * 3u;\n position[o] = center.x - model[k] * heading.y - model[k + 2u] * heading.x;\n position[o + 1u] = center.y + model[k + 1u];\n position[o + 2u] = center.z + model[k] * heading.x - model[k + 2u] * heading.y;\n normal[o] = -model[n] * heading.y - model[n + 2u] * heading.x;\n normal[o + 1u] = model[n + 1u];\n normal[o + 2u] = model[n] * heading.x - model[n + 2u] * heading.y;\n }\n }`;\n", "export function triangle(position, normal, color, a, b, c, tint) {\n const ux = b[0] - a[0], uy = b[1] - a[1], uz = b[2] - a[2];\n const vx = c[0] - a[0], vy = c[1] - a[1], vz = c[2] - a[2];\n const nx = uy * vz - uz * vy, ny = uz * vx - ux * vz, nz = ux * vy - uy * vx;\n const length = Math.hypot(nx, ny, nz);\n let i, point;\n for (i = 0; i < 3; i++) {\n point = i === 0 ? a : i === 1 ? b : c;\n position.push(...point);\n normal.push(nx / length, ny / length, nz / length);\n color.push(...tint);\n }\n}\n", "import { triangle } from './triangle.js';\n\nexport function build(parts) {\n const position = /* alloc */ [];\n const normal = /* alloc */ [];\n const color = /* alloc */ [];\n const low = /* alloc */ [];\n const high = /* alloc */ [];\n let ring, bottom, top, tint, topRing, x, z, i, j;\n for ([ring, bottom, top, tint, topRing = ring] of parts) {\n low.length = high.length = 0;\n for ([x, z] of ring) low.push(/* alloc */ [x, bottom, z]);\n for ([x, z] of topRing) high.push(/* alloc */ [x, top, z]);\n for (i = 0; i < ring.length; i++) {\n j = (i + 1) % ring.length;\n triangle(position, normal, color, low[i], low[j], high[j], tint); triangle(position, normal, color, low[i], high[j], high[i], tint);\n }\n for (i = 1; i < ring.length - 1; i++) {\n triangle(position, normal, color, high[0], high[i], high[i + 1], tint); triangle(position, normal, color, low[0], low[i + 1], low[i], tint);\n }\n }\n return /* alloc */ { position, normal, color };\n}\n", "export function tooltip({ properties: p }) {\n const content = document.createElement('div');\n content.style.whiteSpace = 'pre-line';\n let text = p.name ? String(p.name) : '';\n if (p.departure) text += `${text ? '\\n' : ''}Departure ${p.departure} ${p.timetable.timeZone}`;\n if (p.description) text += `${text ? '\\n' : ''}${p.description}`;\n content.textContent = text;\n return content;\n}\n", "import { underEntry } from '../layer-controls/underEntry.js';\n\nexport function startTraffic(state) {\r\n state.layer._map.off('simulationtimechange layerremove', state.update).on('simulationtimechange layerremove', state.update);\r\n state.layer._map.off('terrainchange', state.terrain).on('terrainchange', state.terrain);\r\n underEntry(state.layer, state.status);\r\n state.update();\r\n}\n", "import { trafficByLayer } from '../weakmaps/trafficByLayer.js';\n\n\nimport { placeTraffic } from './placeTraffic.js';\nimport { startTraffic } from './startTraffic.js';\n\nexport function addTraffic(state) {\n trafficByLayer.set(state.layer, state);\n if (state.ready) startTraffic(state);\n}\n", "import { highlightedFeatureByLayer } from '../weakmaps/highlightedFeatureByLayer.js';\nimport { hoveredFeatureByLayer } from '../weakmaps/hoveredFeatureByLayer.js';\n\n\n\nimport * as disposeMesh from '../rendering/disposeMesh.js';\nimport * as setHighlight from '../picking/setHighlight.js';\nimport * as showFeature from '../picking/showFeature.js';\n\nexport function disposeTrafficObject(state, object) {\r\n if (!object) return;\r\n if (highlightedFeatureByLayer.get(state.layer)?.mesh === object) {\r\n setHighlight.setHighlight(state.layer, null);\r\n hoveredFeatureByLayer.set(state.layer, null);\r\n showFeature.showFeature(state.layer, null);\r\n };\r\n disposeMesh.disposeMesh(state.layer, object);\r\n}\n", "export function destroyTrafficGpu(state) {\n state.gpu?.params?.destroy();\n state.gpu?.template?.destroy();\n state.gpu?.points?.destroy();\n state.gpu?.vehicles?.destroy();\n state.gpu = null;\n}\n", "import { trafficByLayer } from '../weakmaps/trafficByLayer.js';\n\n\nimport { disposeTrafficObject } from './disposeTrafficObject.js';\nimport { destroyTrafficGpu } from './destroyTrafficGpu.js';\n\nexport function removeTraffic(state) {\n state.request?.abort();\n cancelAnimationFrame(state.frame);\n state.frame = undefined;\n state.layer._map.off('simulationtimechange layerremove', state.update).off('terrainchange', state.terrain);\n disposeTrafficObject(state, state.mesh);\n disposeTrafficObject(state, state.route);\n state.mesh = state.route = null;\n trafficByLayer.delete(state.layer);\n destroyTrafficGpu(state);\n state.lanes.length = 0;\n state.trips.length = 0;\n state.tripsKey = state.loaded = null;\n}\n", "import { startTraffic } from './startTraffic.js';\n\nexport function readyTraffic(state) {\r\n state.ready = true;\r\n if (state.layer._map) startTraffic(state);\r\n}\n", "import { timeControlByMap } from '../weakmaps/timeControlByMap.js';\n\n\n\r\nexport function trafficNow(state) {\r\n const control = timeControlByMap.get(state.layer._map);\r\n const live = control ? control.live : true;\r\n return /* alloc */ {\r\n live, time: live ? /* alloc */ new Date() : control.time,\r\n };\r\n}\r\n", "import { speed } from '../globals/speed.js';\n\n\n/** Evenly spaced starting offsets (metres) for `flow` vehicles/h moving at `velocity` m/s on a `length` metres lane. */\n\nexport function vehicleOffsets(length, flow, velocity = speed) {\n const count = Math.round(length * flow / 3600 / velocity);\n const offsets = Array.from(/* alloc */ { length: count });\n let i;\n for (i = 0; i < offsets.length; i++) offsets[i] = (i + 0.5) * length / count;\n return offsets;\n}\n", "export const trafficClocks = new Map();\n", "\n\nexport function clockMinutes(clockTime) {\n const parts = clockTime.split(':');\n return Number(parts[0]) * 60 + Number(parts[1]);\n}\n", "\n\nexport function compareDepartures(a, b) {\n return a - b;\n}\n", "import { trafficClocks } from '../globals/trafficClocks.js';\nimport { clockMinutes } from './clockMinutes.js';\nimport { compareDepartures } from './compareDepartures.js';\n\n\n/**\n * Trips of a frequency-based timetable (like GTFS frequencies.txt) underway at `date`, in the timetable's local time.\n * @param {{timeZone: string, duration: number, services: Array<{from: string, to: string, every?: number, months?: number[], weekdays?: number[]}>}} timetable\n * `duration` and `every` are minutes; `from`/`to` are 'HH:MM' first/last departures; months are 1-12, weekdays 0 (Sunday)-6.\n * @returns {Array<{id: string, departure: string, progress: number}>} `progress` is 0-1 along the lane.\n */\n\nexport function scheduledTrips(date, { timeZone, duration, services }) {\n const time = date instanceof Date ? date\n : /* alloc */ new Date(date);\n if (!Number.isFinite(time.getTime())) throw /* alloc */ new Error('Invalid date');\n let clock = trafficClocks.get(timeZone);\n if (!clock) {\n clock = /* alloc */ new Intl.DateTimeFormat('en-GB',\n /* alloc */ {\n timeZone, year: 'numeric', month: '2-digit', day: '2-digit',\n hour: '2-digit', minute: '2-digit', second: '2-digit', hourCycle: 'h23',\n });\n if (trafficClocks.size >= 32) {\n trafficClocks.delete(trafficClocks.keys().next().value);\n }\n trafficClocks.set(timeZone, clock);\n }\n const parts = /* alloc */ {};\n let part, from, to, every, months, weekdays, departure;\n for (part of clock.formatToParts(time)) {\n if (part.type !== 'literal') parts[part.type] = Number(part.value);\n }\n const minute = parts.hour * 60 + parts.minute + (parts.second + time.getUTCMilliseconds() / 1000) / 60;\n const weekday = ((Math.floor(Date.UTC(parts.year, parts.month - 1, parts.day) / 86400000) + 4) % 7 + 7) % 7;\n const departures = /* alloc */ [];\n for ({ from, to, every = Infinity, months, weekdays } of services) {\n if (months?.includes(parts.month) === false || weekdays?.includes(weekday) === false) continue;\n for (departure = clockMinutes(from); departure <= clockMinutes(to); departure += every) departures.push(departure);\n }\n departures.sort(compareDepartures);\n const trips = /* alloc */ [];\n for (departure of departures) {\n if (minute >= departure && minute < departure + duration) trips.push(/* alloc */ {\n id: `${parts.year}-${parts.month}-${parts.day}-${departure}`,\n departure: `${String(Math.floor(departure / 60)).padStart(2, '0')}:${String(departure % 60).padStart(2, '0')}`,\n progress: (minute - departure) / duration,\n });\n }\n return trips;\n}\n", "import { vehicleOffsets } from \"./vehicleOffsets.js\";\nimport { scheduledTrips } from \"./scheduledTrips.js\";\n\n// A lane with a `timetable` runs scheduled trips end to end; one with a `flow` (vehicles/h) loops evenly spaced vehicles.\n\nexport function tripsAt(time, lanes, velocity) {\n const trips = /* alloc */ [];\n let l, lane, timetable, flow, trip, travelled, offsets, k;\n for (l = 0; l < lanes.length; l++) {\n lane = lanes[l];\n ({ timetable, flow = 0 } = lane.properties);\n if (!lane.length) continue;\n if (timetable) {\n for (trip of scheduledTrips(time, timetable)) trips.push(/* alloc */ {\n id: `${l}-${trip.id}`, lane, distance: trip.progress * lane.length, speed: lane.length / (timetable.duration * 60),\n properties: /* alloc */ { ...lane.properties, departure: trip.departure },\n });\n } else {\n travelled = time / 1000 * velocity;\n offsets = lane.offsets ||= vehicleOffsets(lane.length, flow, velocity);\n for (k = 0; k < offsets.length; k++) trips.push(/* alloc */ {\n id: `${l}-${k}`, lane, distance: (offsets[k] + travelled) % lane.length, speed: velocity, properties: lane.properties,\n });\n }\n }\n return trips;\n}\n", "export function failTraffic(state, error) {\r\n state.error = error;\r\n state.status.textContent = `${state.vehicle}: Error: ${error.message}`;\r\n state.status.setAttribute('role', 'alert');\r\n console.error('Traffic layer', error);\r\n}\r\n", "export const trafficRouteMaterial = Object.freeze({ unlit: true });\n", "export function appendRouteDash(position, normal, color, a, b, dx, dz, x, z, start, end, r, g, blue) {\r\n const px = a[0] + dx * start, pz = a[1] + dz * start;\r\n const py = a[2] + (b[2] - a[2]) * start + 0.4;\r\n const qx = a[0] + dx * end, qz = a[1] + dz * end;\r\n const qy = a[2] + (b[2] - a[2]) * end + 0.4;\r\n let vertex;\r\n for (vertex = 0; vertex < 6; vertex++) {\r\n if (vertex === 0 || vertex === 3) position.push(px - x, py, pz - z);\r\n else if (vertex === 1) position.push(px + x, py, pz + z);\r\n else if (vertex === 5) position.push(qx - x, qy, qz - z);\r\n else position.push(qx + x, qy, qz + z);\r\n normal.push(0, 1, 0);\r\n color.push(r, g, blue);\r\n }\r\n}\r\n", "import { appendRouteDash } from './appendRouteDash.js';\r\n\r\nexport function appendRouteSegment(position, normal, color, points, lengths, i, r, g, blue) {\r\n const a = points[i - 1], b = points[i];\r\n const dx = b[0] - a[0], dz = b[1] - a[1], length = lengths[i] - lengths[i - 1];\r\n if (!length) return;\r\n const x = -dz / length * 2.5, z = dx / length * 2.5;\r\n let distance, start, end;\r\n for (distance = Math.floor(lengths[i - 1] / 30) * 30; distance < lengths[i]; distance += 30) {\r\n start = Math.max(0, (distance - lengths[i - 1]) / length);\r\n end = Math.min(1, (distance + 18 - lengths[i - 1]) / length);\r\n if (end <= start) continue;\r\n appendRouteDash(position, normal, color, a, b, dx, dz, x, z, start, end, r, g, blue);\r\n }\r\n}\r\n", "import { appendRouteSegment } from './appendRouteSegment.js';\n\n/** Dashed lane outline, in layer-local metres. */\n\nexport function routeGeometry(lanes) {\n const position = /* alloc */ [];\n const normal = /* alloc */ [];\n const color = /* alloc */ [];\n let points, lengths, properties, raw, rgb, r, g, blue, i;\n for ({ points, lengths, properties } of lanes) {\n raw = properties?.route_color;\n rgb = /^[\\da-f]{6}$/i.test(raw) ? Number.parseInt(raw, 16) : null;\n r = rgb === null ? 0.08 : (rgb >> 16 & 255) / 255;\n g = rgb === null ? 0.7 : (rgb >> 8 & 255) / 255;\n blue = rgb === null ? 0.85 : (rgb & 255) / 255;\n for (i = 1; i < points.length; i++) {\n appendRouteSegment(position, normal, color, points, lengths, i, r, g, blue);\n }\n }\n return /* alloc */ { position, normal, color };\n}\n", "import * as createMeshApi from '../rendering/createMesh.js';\n\nexport function createTrafficMesh(state, data, featureFaces, material, usage = 0) {\r\n const result = createMeshApi.createMesh(state.layer, data, material, usage);\r\n result.extras.featureFaces = featureFaces;\r\n return result;\r\n}\n", "import { trafficRouteMaterial } from '../globals/trafficRouteMaterial.js';\nimport { routeGeometry } from '../geometry/routeGeometry.js';\nimport { createTrafficMesh } from './createTrafficMesh.js';\n\n\nexport function drawTrafficRoute(state) {\n state.route = createTrafficMesh(state, routeGeometry(state.lanes),\n /* alloc */ [], trafficRouteMaterial);\n}\n", "import { computeBounds } from '../geometry/computeBounds.js';\n\nexport function trafficBounds(state) {\n let radius = 20, height = 5;\n let i, lane, x, z, y;\n for (i = 0; i < state.template.position.length; i += 3) {\n radius = Math.max(radius, Math.hypot(state.template.position[i], state.template.position[i + 2]) + Math.abs(state.side));\n height = Math.max(height, state.template.position[i + 1]);\n }\n const data = /* alloc */ [];\n for (lane of state.lanes) {\n for ([x, z, y] of lane.points) data.push(x - radius, y, z - radius, x + radius, y + height, z + radius);\n }\n const extent = /* alloc */ {\n attributes: /* alloc */ {\n position: /* alloc */ { data },\n },\n };\n computeBounds(extent);\n state.mesh.geometry.bounds = extent.bounds;\n}\n", "import { trafficEmptyOptions } from '../globals/trafficEmptyOptions.js';\nimport { build } from '../geometry/buildGeometryParts.js';\nimport { createTrafficMesh } from './createTrafficMesh.js';\nimport { disposeTrafficObject } from './disposeTrafficObject.js';\nimport { trafficBounds } from './trafficBounds.js';\n\n\nexport function rebuildTrafficMesh(state) {\n const { trips, model, vertices } = state;\n disposeTrafficObject(state, state.mesh);\n state.mesh = null;\n if (!trips.length) return;\n const color = /* alloc */ [];\n const featureFaces = /* alloc */ [];\n let i, trip, component;\n for (i = 0; i < trips.length; i++) {\n trip = trips[i];\n for (component of build(model(i, trip.properties)).color) color.push(component);\n featureFaces.push(/* alloc */ {\n id: trip.id, properties: trip.properties, faceStart: i * vertices / 3, faceEnd: (i + 1) * vertices / 3,\n vertexStart: i * vertices, vertexEnd: (i + 1) * vertices\n });\n }\n const count = color.length / 3;\n state.mesh = createTrafficMesh(state, /* alloc */ {\n position: /* alloc */ new Array(color.length).fill(0),\n normal: /* alloc */ new Array(color.length).fill(0), color,\n }, featureFaces, trafficEmptyOptions, GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC);\n state.mesh.geometry.drawRange.count = count;\n state.mesh.extras.dynamicLights = true;\n trafficBounds(state);\n}\n", "export function trafficStorage(device, data) {\r\n const buffer = device.createBuffer(/* alloc */ { size: Math.max(16, data.byteLength), usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST });\r\n device.queue.writeBuffer(buffer, 0, data);\r\n return buffer;\r\n}\r\n", "import { trafficStorage } from './trafficStorage.js';\r\n\r\nexport function uploadTrafficLanes(state, device) {\r\n let lane, i, point, count = 0;\r\n for (lane of state.lanes) count += lane.points.length;\r\n const data = /* alloc */ new Float32Array(count * 4);\r\n let offset = 0;\r\n for (lane of state.lanes) {\r\n lane.start = offset / 4;\r\n for (i = 0; i < lane.points.length; i++) {\r\n point = lane.points[i];\r\n data[offset++] = point[0];\r\n data[offset++] = point[1];\r\n data[offset++] = point[2];\r\n data[offset++] = lane.lengths[i];\r\n }\r\n }\r\n state.gpu.points?.destroy();\r\n state.gpu.points = trafficStorage(device, data);\r\n state.lanesDirty = false;\r\n}\r\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\n\n\n\nimport { destroyTrafficGpu } from './destroyTrafficGpu.js';\nimport { trafficStorage } from './trafficStorage.js';\nimport { uploadTrafficLanes } from './uploadTrafficLanes.js';\n\nexport function rebaseTraffic(state) {\n const { device } = rendererByLayer.get(state.layer);\n if (state.gpu?.device !== device) {\n destroyTrafficGpu(state);\n const template = /* alloc */ new Float32Array(\n state.template.position.length + state.template.normal.length);\n template.set(state.template.position);\n template.set(state.template.normal, state.template.position.length);\n state.gpu = /* alloc */ {\n device,\n pipeline: device.createComputePipeline(/* alloc */ {\n layout: 'auto', compute: /* alloc */ {\n module: device.createShaderModule(/* alloc */ { code: state.shader }), entryPoint: 'main',\n },\n }),\n params: device.createBuffer(/* alloc */ { size: 16, usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST }),\n template: trafficStorage(device, template),\n };\n state.lanesDirty = true;\n }\n let i, trip, binding;\n if (state.lanesDirty) uploadTrafficLanes(state, device);\n const data = /* alloc */ new Float32Array(state.trips.length * 4);\n const index = /* alloc */ new Uint32Array(data.buffer);\n for (i = 0; i < state.trips.length; i++) {\n trip = state.trips[i];\n index[i * 4] = trip.lane.start;\n index[i * 4 + 1] = trip.lane.points.length;\n data[i * 4 + 2] = trip.distance;\n data[i * 4 + 3] = trip.speed;\n state.mesh.extras.featureFaces[i].properties = trip.properties;\n }\n if (state.gpu.vehicles?.size >= data.byteLength) device.queue.writeBuffer(state.gpu.vehicles, 0, data);\n else {\n state.gpu.vehicles?.destroy();\n state.gpu.vehicles = trafficStorage(device, data);\n }\n const { position, normal } = state.mesh.geometry.attributes;\n const entries = /* alloc */ [];\n let buffer;\n for (binding = 0; binding < 6; binding++) {\n buffer = binding === 0 ? state.gpu.params : binding === 1 ? state.gpu.template\n : binding === 2 ? state.gpu.points : binding === 3 ? state.gpu.vehicles\n : binding === 4 ? position.buffer : normal.buffer;\n entries.push(/* alloc */ {\n binding, resource: /* alloc */ { buffer },\n });\n }\n state.gpu.bindGroup = device.createBindGroup(/* alloc */ {\n layout: state.gpu.pipeline.getBindGroupLayout(0),\n entries,\n });\n}\n", "export function trafficStatusText(state, valid) {\r\n if (!valid) return `${state.vehicle}: select a valid simulation date`;\r\n if (!state.loaded) return `${state.vehicle}: loading\u2026`;\r\n return `${state.trips.length} ${state.vehicle === 'boat' ? 'boats' : state.vehicle}`;\r\n}\r\n", "import { tripsAt } from './tripsAt.js';\r\nimport { failTraffic } from './failTraffic.js';\r\nimport { drawTrafficRoute } from './drawTrafficRoute.js';\r\nimport { rebuildTrafficMesh } from './rebuildTrafficMesh.js';\r\nimport { rebaseTraffic } from './rebaseTraffic.js';\r\nimport { trafficStatusText } from './trafficStatusText.js';\r\n\r\nexport function refreshTrafficTrips(state, time, ms, valid) {\r\n let text;\r\n try {\r\n if (valid) state.trips = tripsAt(time, state.lanes, state.velocity);\r\n else state.trips.length = 0;\r\n text = trafficStatusText(state, valid);\r\n } catch (error) {\r\n failTraffic(state, error);\r\n return;\r\n }\r\n state.rebasedAt = ms;\r\n state.nextCheck = ms + 1000;\r\n let key = '', trip;\r\n for (trip of state.trips) key += `${key ? ',' : ''}${trip.id}`;\r\n const routeNeeded = state.outline && !state.route && state.lanes.length;\r\n const changed = key !== state.tripsKey || Boolean(routeNeeded);\r\n if (routeNeeded) drawTrafficRoute(state);\r\n if (key !== state.tripsKey) { rebuildTrafficMesh(state); state.tripsKey = key; }\r\n if (state.mesh) rebaseTraffic(state);\r\n if (!state.error) {\r\n if (state.status.textContent !== text) state.status.textContent = text;\r\n state.status.removeAttribute('role');\r\n }\r\n return changed;\r\n}\r\n", "export function moveTraffic(state, seconds) {\r\n const { device } = state.gpu;\r\n state.paramFloats[0] = state.elapsed = seconds;\r\n state.paramFloats[1] = state.side;\r\n state.paramInts[2] = state.vertices;\r\n state.paramInts[3] = state.trips.length * state.vertices;\r\n device.queue.writeBuffer(state.gpu.params, 0, state.params);\r\n const encoder = device.createCommandEncoder(), pass = encoder.beginComputePass();\r\n pass.setPipeline(state.gpu.pipeline);\r\n pass.setBindGroup(0, state.gpu.bindGroup);\r\n pass.dispatchWorkgroups(state.trips.length);\r\n pass.end();\r\n device.queue.submit(/* alloc */ [encoder.finish()]);\r\n state.stale = true;\r\n}\r\n", "import { locateTraffic } from './locateTraffic.js';\r\n\r\nexport function updateTrafficLights(state) {\r\n state.litAt = performance.now();\r\n const lights = /* alloc */ [];\r\n const target = state.position ||= /* alloc */ {};\r\n let trip, x, y, z, dx, dz, lx, ly, lz, light;\r\n for (trip of state.trips) {\r\n ({ x, y, z, dx, dz } = locateTraffic(state, trip, target));\r\n for (light of state.lights) {\r\n [lx, ly, lz] = light.position;\r\n lights.push(/* alloc */ {\r\n ...light, position: /* alloc */ [x - lx * dz - lz * dx, y + ly, z + lx * dx - lz * dz],\r\n });\r\n }\r\n }\r\n state.mesh.extras.lights = lights;\r\n}\r\n", "import { moveTraffic } from './moveTraffic.js';\r\nimport { updateTrafficLights } from './updateTrafficLights.js';\r\n\r\nexport function updateTrafficPose(state, ms, live) {\r\n if (!state.mesh) return;\r\n moveTraffic(state, (ms - state.rebasedAt) / 1000);\r\n if (state.lights && (!live || !(performance.now() - state.litAt < 100))) updateTrafficLights(state);\r\n}\r\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\n\n\n\nimport { update as updateScene } from '../scene/scheduleSceneUpdate.js';\nimport { trafficNow } from './trafficNow.js';\nimport { refreshTrafficTrips } from './refreshTrafficTrips.js';\nimport { updateTrafficPose } from './updateTrafficPose.js';\n\nexport function tickTraffic(state) {\n state.frame = undefined;\n if (!state.ready || !state.layer._map) return;\n if (!rendererByLayer.get(state.layer)) { state.frame = requestAnimationFrame(state.tick); return; }\n if (state.mesh && !(state.mesh.geometry.attributes.position.buffer.usage & GPUBufferUsage.STORAGE)) {\n state.tripsKey = null;\n state.nextCheck = -Infinity;\n }\n const { live, time } = trafficNow(state), ms = time?.getTime(), valid = Number.isFinite(ms);\n let changed = false;\n if (!live || !valid || !(ms >= state.rebasedAt && ms < state.nextCheck)) {\n changed = refreshTrafficTrips(state, time, ms, valid);\n if (changed === undefined) return;\n }\n updateTrafficPose(state, ms, live);\n if (state.mesh || changed) updateScene(state.layer);\n if (live && valid) state.frame = requestAnimationFrame(state.tick);\n}\n", "export async function fetchTrafficLanes(state, time, signal) {\r\n const href = /* alloc */ new URL(state.url, document.baseURI).href;\r\n if (/\\.m?js(?:[?#]|$)/i.test(state.url)) return (await import(href)).default(time, state.layer, signal);\r\n if (!state.file) {\r\n const response = await fetch(href, /* alloc */ { signal });\r\n if (!response.ok) throw /* alloc */ new Error(`HTTP ${response.status}`);\r\n state.file = await response.json();\r\n }\r\n return state.file;\r\n}\r\n", "export const trafficEmptyList = Object.freeze([]);\n", "import { trafficEmptyList } from '../globals/trafficEmptyList.js';\n// GeoJSON (Multi)LineStrings become lanes ({latlngs, properties, elevation?}); prepare() adds `points` ([x, z, ground]),\n// `lengths` and `length` in layer-local metres.\n\n\n\nexport function toLanes({ features = trafficEmptyList }) {\n const lanes = /* alloc */ [];\n let geometry, properties, lines, line, latlngs, lng, lat, i;\n for ({ geometry, properties } of features) {\n if (geometry?.type !== 'LineString' && geometry?.type !== 'MultiLineString') continue;\n lines = geometry.type === 'MultiLineString' ? geometry.coordinates : null;\n for (i = 0; i < (lines ? lines.length : 1); i++) {\n line = lines ? lines[i] : geometry.coordinates;\n latlngs = /* alloc */ [];\n for ([lng, lat] of line) latlngs.push(/* alloc */ [lat, lng]);\n lanes.push(/* alloc */ {\n latlngs, properties: properties ?? /* alloc */ {},\n elevation: properties?.elevation,\n });\n }\n }\n return lanes;\n}\n", "import { locationByLayer } from '../weakmaps/locationByLayer.js';\n\nimport { radians } from '../globals/radians.js';\nimport { L } from '../globals/L.js';\n\n\nimport { disposeTrafficObject } from './disposeTrafficObject.js';\nimport { groundTraffic } from './groundTraffic.js';\n\nexport function prepareTraffic(state) {\n const { layer, lanes } = state;\n const crs = layer._map.options.crs, origin = crs.project(locationByLayer.get(layer));\n const metres = Math.cos(locationByLayer.get(layer).lat * radians);\n let lane, lat, lng, point, i;\n for (lane of lanes) {\n lane.points = /* alloc */ [];\n for ([lat, lng] of lane.latlngs) {\n point = crs.project(/* alloc */ new L.LatLng(lat, lng));\n lane.points.push(/* alloc */ [(point.x - origin.x) * metres, -(point.y - origin.y) * metres, 0]);\n }\n lane.lengths = /* alloc */ [0];\n for (i = 1; i < lane.points.length; i++) {\n lane.lengths.push(lane.lengths[i - 1] + Math.hypot(lane.points[i][0] - lane.points[i - 1][0], lane.points[i][1] - lane.points[i - 1][1]));\n }\n lane.length = lane.lengths.at(-1);\n }\n groundTraffic(state);\n disposeTrafficObject(state, state.route);\n state.route = null;\n state.tripsKey = null;\n}\n", "import { terrain3DByMap } from '../weakmaps/terrain3DByMap.js';\r\nimport { terrainReadyByLayer } from '../weakmaps/terrainReadyByLayer.js';\r\n\r\nexport function readyTerrainOf(map) {\r\n const terrain = terrain3DByMap.get(map);\r\n return terrainReadyByLayer.get(terrain) && terrain;\r\n}\r\n", "import { rootByLayer } from '../weakmaps/rootByLayer.js';\n\nimport { readyTerrainOf } from '../terrain/readyTerrainOf.js';\nimport { mapElevationOf } from '../terrain/mapElevationOf.js';\n\nexport function groundTraffic(state) {\n const { layer, lanes } = state;\n const terrain = readyTerrainOf(layer._map);\n const base = rootByLayer.get(layer).position[1];\n let lane, i, elevation;\n for (lane of lanes) {\n for (i = 0; i < lane.points.length; i++) {\n elevation = terrain && (lane.elevation ?? mapElevationOf(layer._map, lane.latlngs[i]));\n lane.points[i][2] = Number.isFinite(elevation) && Number.isFinite(base) ? elevation - base : 0;\n }\n }\n state.lanesDirty = true;\n state.nextCheck = -Infinity;\n}\n", "import { toLanes } from './featuresToTrafficLanes.js';\nimport { prepareTraffic } from './prepareTraffic.js';\n\nexport function loadedTrafficLanes(state, signal, data) {\r\n if (signal.aborted || !state.layer._map) return;\r\n state.error = null;\r\n if (data === state.loaded) {\r\n state.nextCheck = -Infinity;\r\n if (!state.frame) state.tick();\r\n return;\r\n }\r\n state.loaded = data;\r\n state.lanes = toLanes(data);\r\n prepareTraffic(state);\r\n if (!state.frame) state.tick();\r\n}\n", "import { failTraffic } from './failTraffic.js';\n\nexport function failedTrafficLoad(state, signal, error) {\r\n if (!signal.aborted && error.name !== 'AbortError') failTraffic(state, error);\r\n}\n", "import { trafficNow } from './trafficNow.js';\nimport { fetchTrafficLanes } from './fetchTrafficLanes.js';\nimport { loadedTrafficLanes } from './loadedTrafficLanes.js';\nimport { failedTrafficLoad } from './failedTrafficLoad.js';\n\nexport function loadTraffic(state) {\n const { time } = trafficNow(state);\n if (!Number.isFinite(time?.getTime())) return;\n state.request?.abort();\n const { signal } = state.request = /* alloc */ new AbortController();\n fetchTrafficLanes(state, time, signal).then(\n loadedTrafficLanes.bind(null, state, signal),\n failedTrafficLoad.bind(null, state, signal),\n );\n}\n", "import { controlByLayer } from '../weakmaps/controlByLayer.js';\n\n\n\nimport { loadTraffic } from './loadTraffic.js';\n\nexport function updateTraffic(state, event) {\r\n if (event?.layer && !controlByLayer.get(event.layer)?.time) return;\r\n cancelAnimationFrame(state.frame);\r\n loadTraffic(state);\r\n state.tick();\r\n}\n", "import { disposeTrafficObject } from './disposeTrafficObject.js';\nimport { groundTraffic } from './groundTraffic.js';\nimport { trafficBounds } from './trafficBounds.js';\n\nexport function updateTrafficTerrain(state) {\r\n if (!state.lanes.length) return;\r\n groundTraffic(state);\r\n disposeTrafficObject(state, state.route);\r\n state.route = null;\r\n if (state.mesh) trafficBounds(state);\r\n if (!state.frame) state.tick();\r\n}\n", "import { L } from '../globals/L.js';\nimport { initialize } from './initializeWalkControl.js';\nimport { onAdd } from './onAddWalkControl.js';\nimport { onRemove } from './onRemoveWalkControl.js';\n\n/**\n * Third-person walk mode, toggled by a map button (and Esc): a pedestrian at the map centre runs with W/S (or \u2191/\u2193) and\n * turns with A/D (or \u2190/\u2192); the camera swings back behind it while it moves. Dragging the map only turns the camera\n * (bearing, pitch); the wheel changes the camera distance.\n * The walker follows the terrain, bridges included, and `control.walker` exposes `{ latlng, heading, phase }`.\n * Options: `speed` (m/s, default 70), `distance` (camera distance in metres, default 20), `position` (button corner, default 'bottomright').\n * Buildings, trees, models, streetlights and traffic block movement; the walker is moved out of newly loaded obstacles.\n */\nL.Control.Walk = L.Control.extend({\n options: { position: 'bottomright', speed: 70, distance: 20 },\n initialize,\n onAdd,\n onRemove,\n});\n", "import { L } from '../globals/L.js';\nimport { createWalk } from './createWalk.js';\r\n\r\nexport function initialize(options) {\r\n L.Util.setOptions(this, options);\r\n createWalk(this, this.options);\r\n}\r\n", "import { typeByLayer } from '../weakmaps/typeByLayer.js';\nimport { walkerByLayer } from '../weakmaps/walkerByLayer.js';\n\nimport { L } from '../globals/L.js';\n\n\nimport { init3D } from '../scene/init3D.js';\nimport { onBlur } from './onWalkBlur.js';\nimport { onKey } from './onWalkKey.js';\nimport { onPointer } from './onWalkPointer.js';\nimport { onTerrain } from './onWalkTerrain.js';\nimport { start } from './startWalking.js';\nimport { step } from './animateWalker.js';\nimport { stop } from './stopWalking.js';\nimport { toggle } from './toggleWalking.js';\n\nexport function createWalk(control, {\n speed,\n distance,\n ...options\n}) {\n const layer = /* alloc */ new L.Layer();\n typeByLayer.set(layer, 'walk');\n init3D(layer, options);\n const keys = /* alloc */ new Set();\n const container = L.DomUtil.create('div', 'leaflet-bar leaflet-control');\n container.style.cssText = 'display:flex;align-items:center;background:#fff;';\n const button = L.DomUtil.create('button', '', container);\n button.type = 'button';\n button.title = 'Walk';\n button.setAttribute('aria-label', 'Walk');\n button.setAttribute('aria-pressed', 'false');\n button.textContent = '\uD83D\uDEB6';\n button.style.cssText = 'width:30px;height:30px;padding:0;border:0;border-radius:4px;background:#fff;font-size:18px;line-height:30px;cursor:pointer;';\n const hint = L.DomUtil.create('small', '', container);\n hint.style.cssText = 'display:none;padding:0 8px;color:#333;white-space:nowrap;';\n hint.textContent = 'W/S: run \u00B7 A/D: turn \u00B7 hold Space: ascend \u00B7 drag: look around \u00B7 Esc: exit';\n L.DomEvent.disableClickPropagation(container);\n\n const context = /* alloc */ {\n layer,\n speed,\n distance,\n keys,\n container,\n button,\n hint,\n meshes: null,\n frame: null,\n last: undefined,\n nextClearanceCheck: 0,\n swing: 0,\n verticalSpeed: 0,\n saved: null,\n hitData: null,\n local: null,\n state: control.walker = /* alloc */ { latlng: null, heading: 0, phase: 0, height: 0 }\n }\n walkerByLayer.set(layer, context.state);\n context.step = step.bind(context);\n context.onKey = onKey.bind(context);\n context.onBlur = onBlur.bind(context);\n context.onPointer = onPointer.bind(context);\n context.onTerrain = onTerrain.bind(context);\n context.start = start.bind(context);\n context.stop = stop.bind(context);\n context.toggle = toggle.bind(context);\n control._walk = context;\n L.DomEvent.on(button, 'click', context.toggle);\n}\n", "export function onBlur() {\r\n this.keys.clear();\r\n}\n", "// W/S (\u2191/\u2193) run forward/back along the heading, A/D (\u2190/\u2192) turn: [forward, turn].\nexport const moves = {\n KeyW: [1, 0],\n ArrowUp: [1, 0],\n KeyS: [-1, 0],\n ArrowDown: [-1, 0],\n KeyD: [0, 1],\n ArrowRight: [0, 1],\n KeyA: [0, -1],\n ArrowLeft: [0, -1]\n};\n", "import { L } from '../globals/L.js';\nimport { mapSetPitch } from '../camera/mapSetPitch.js';\nimport * as disposeMesh from '../rendering/disposeMesh.js';\nimport { onKey } from './onWalkKey.js';\nimport { onBlur } from './onWalkBlur.js';\nimport { onPointer } from './onWalkPointer.js';\nimport { onTerrain } from './onWalkTerrain.js';\n\nexport function stop() {\n const map = this.layer._map;\n cancelAnimationFrame(this.frame);\n this.keys.clear(); this.dragging = false;\n this.state.height = this.verticalSpeed = 0;\n L.DomEvent.off(document, 'keydown keyup', this.onKey);\n L.DomEvent.off(window, 'blur', this.onBlur);\n let mesh, name;\n if (this.meshes) for (mesh of this.meshes) disposeMesh.disposeMesh(this.layer, mesh);\n this.meshes = null;\n this.button.setAttribute('aria-pressed', 'false');\n this.button.style.background = '#fff';\n this.hint.style.display = 'none';\n if (!map || !this.saved) return;\n L.DomEvent.off(map.getContainer(), 'pointerdown pointermove pointerup pointercancel', this.onPointer);\n map.off('terrainchange', this.onTerrain);\n map.options.scrollWheelZoom = this.saved.scrollWheelZoom;\n for (name of this.saved.handlers) map[name].enable();\n map.setView(this.state.latlng, this.saved.zoom, /* alloc */ { animate: false });\n mapSetPitch(map, this.saved.pitch);\n this.saved = null;\n}\n", "import { mapSetPitchAndBearing } from '../camera/mapSetPitchAndBearing.js';\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\nexport function onPointer(event) {\n // Dragging only turns the camera around the walker: horizontal = bearing, vertical = pitch.\n const map = this.layer._map;\n if (event.type === 'pointerdown') {\n if (event.button !== 0 || event.target.closest('.leaflet-control')) return;\n this.dragX = event.clientX;\n this.dragY = event.clientY;\n this.dragging = true;\n map.getContainer().setPointerCapture(event.pointerId);\n } else if (this.dragging && event.type === 'pointermove') {\n mapSetPitchAndBearing(map, Math.max(20, Math.min(85, mapGetPitch(map) - (event.clientY - this.dragY) * 0.2)), mapGetBearing(map) - (event.clientX - this.dragX) * 0.25);\n this.dragX = event.clientX;\n this.dragY = event.clientY;\n } else this.dragging = false;\n}\n", "// [part, pivot x, pivot y, swing sign]\nexport const limbs = [\n ['body', 0, 0, 0],\n ['leg', -0.09, 0.9, 1],\n ['leg', 0.09, 0.9, -1],\n ['arm', -0.25, 1.42, -1],\n ['arm', 0.25, 1.42, 1]\n];\n", "\nimport { locationByLayer } from '../weakmaps/locationByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\nimport { radians } from '../globals/radians.js';\nimport { mapElevationOf } from '../terrain/mapElevationOf.js';\n\nexport function local(output) {\n const { layer, state } = this;\n const map = layer._map, crs = map.options.crs\n const location = locationByLayer.get(layer), root = rootByLayer.get(layer);\n const origin = crs.project(location), metres = Math.cos(location.lat * radians);\n const p = crs.project(state.latlng);\n const ground = mapElevationOf(map, state.latlng) || 0;\n output[0] = (p.x - origin.x) * metres;\n output[1] = ground + (state.height ?? 0) - root.position[1];\n output[2] = -(p.y - origin.y) * metres;\n return output;\n}\n", "import { limbs } from '../globals/limbs.js';\n\nimport { update } from '../scene/scheduleSceneUpdate.js';\n\nimport { local } from '../projections/walkerLocalPosition.js';\n\nexport function place() {\n const [x, y, z] = local.call(this, this.local);\n // Model forward is -z; a yaw of -heading turns it to the compass heading (x east, -z north).\n const yaw = -this.state.heading, cos = Math.cos(yaw), sin = Math.sin(yaw);\n let i, px, py, sign, mesh;\n for (i = 0; i < limbs.length; i++) {\n [, px, py, sign] = limbs[i];\n mesh = this.meshes[i];\n mesh.position[0] = x + px * cos; mesh.position[1] = y + py; mesh.position[2] = z - px * sin;\n mesh.rotation[0] = sign * this.swing * Math.sin(this.state.phase);\n mesh.rotation[1] = yaw;\n }\n update(this.layer);\n}\n", "import { place } from './placeWalker.js';\n\nexport function onTerrain() {\r\n if (this.meshes) place.call(this);\r\n}\n", "import { moves } from '../globals/moves.js';\n\n\nimport { stop } from './stopWalking.js';\n\nexport function onKey(event) {\n if (event.type === 'keyup' && event.code === 'Space') this.keys.delete('Space');\n // Text fields and sliders keep their keys; buttons and checkboxes don't.\n if (event.target.closest?.('input:not([type=checkbox], [type=radio]), select, textarea, [contenteditable]') ||\n event.ctrlKey || event.altKey || event.metaKey) return;\n if (event.type === 'keydown' && event.code === 'Escape') { this.stop(); return; }\n if (!moves[event.code] && event.code !== 'Space') return;\n event.preventDefault();\n if (event.type === 'keydown') this.keys.add(event.code); else this.keys.delete(event.code);\n}\n", "import { radians } from '../globals/radians.js';\nimport { earthCirc } from '../globals/earthCirc.js';\nimport { L } from '../globals/L.js';\nimport { sceneWalkHandlers } from '../globals/sceneWalkHandlers.js';\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\nimport { mapSetPitch } from '../camera/mapSetPitch.js';\nimport { step } from './animateWalker.js';\nimport { onKey } from './onWalkKey.js';\nimport { onBlur } from './onWalkBlur.js';\nimport { onPointer } from './onWalkPointer.js';\nimport { onTerrain } from './onWalkTerrain.js';\nimport { resolveWalkerPosition } from './resolveWalkerPosition.js';\n\n\nexport function start() {\n const map = this.layer._map;\n if (this.saved || !map) return;\n this.state.latlng = map.getCenter();\n this.state.height = this.verticalSpeed = 0;\n // Zoom whose camera distance (1.5 viewport heights, as in scene/render.js) is about `distance` metres behind the walker.\n const pixelsPerMetre = map.getSize().y * 1.5 / this.distance;\n const zoom = Math.min(map.getMaxZoom(), Math.log2(pixelsPerMetre * earthCirc * Math.cos(this.state.latlng.lat * radians) / 256));\n let name;\n this.saved = /* alloc */ {\n zoom: map.getZoom(), pitch: mapGetPitch(map), scrollWheelZoom: map.options.scrollWheelZoom,\n handlers: /* alloc */ [],\n };\n for (name of sceneWalkHandlers) {\n if (map[name]?.enabled()) this.saved.handlers.push(name);\n }\n for (name of this.saved.handlers) map[name].disable();\n // Wheel zoom moves the camera closer or farther, keeping the walker centred.\n map.options.scrollWheelZoom = this.saved.scrollWheelZoom && 'center';\n this.state.heading = -mapGetBearing(map) * radians;\n map.setView(this.state.latlng, zoom, /* alloc */ { animate: false });\n mapSetPitch(map, 75);\n resolveWalkerPosition.call(this);\n L.DomEvent.on(document, 'keydown keyup', this.onKey);\n L.DomEvent.on(window, 'blur', this.onBlur);\n L.DomEvent.on(map.getContainer(), 'pointerdown pointermove pointerup pointercancel', this.onPointer);\n map.on('terrainchange', this.onTerrain);\n this.button.setAttribute('aria-pressed', 'true');\n this.button.style.background = '#e4e4e4';\n this.hint.style.display = '';\n this.last = undefined;\n this.nextClearanceCheck = 0;\n this.frame = requestAnimationFrame(this.step);\n}\n", "export const sceneWalkHandlers = ['dragging', 'keyboard', 'doubleClickZoom', 'boxZoom'];\n", "export function wrap(angle) {\n return Math.atan2(Math.sin(angle), Math.cos(angle));\n}\n", "import { typeByLayer } from '../weakmaps/typeByLayer.js';\n\n\n\nexport function shouldSkipOther(other, layer) {\n return other === layer || typeByLayer.get(other) === 'terrain' || typeByLayer.get(other) === 'traffic';\n}\n", "import { kindByLayer } from '../weakmaps/kindByLayer.js';\nimport { layersByLayer } from '../weakmaps/layersByLayer.js';\nimport { raycasterByLayer } from '../weakmaps/raycasterByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\nimport { sceneByLayer } from '../weakmaps/sceneByLayer.js';\nimport { sharedByLayer } from '../weakmaps/sharedByLayer.js';\n\nimport { intersectMeshes } from '../collision/intersectMeshes.js';\r\nimport { traverse } from '../scene/traverse.js';\r\nimport { updateWorldMatrix } from '../transforms/updateWorldMatrix.js';\r\nimport { collectVisibleMesh } from '../picking/collectVisibleMesh.js';\r\nimport { shouldSkipOther } from '../picking/shouldSkipOther.js';\r\nimport { local } from '../projections/walkerLocalPosition.js';\r\n\r\nexport function land(previousY) {\r\n const ray = raycasterByLayer.get(this.layer)\r\n const feet = local.call(this, this.local), root = rootByLayer.get(this.layer);\r\n const x = root.position[0] + feet[0] * root.scale[0];\r\n const y = root.position[1] + feet[1] * root.scale[1];\r\n const z = root.position[2] + feet[2] * root.scale[2];\r\n if (y > previousY || this.verticalSpeed > 0) return;\r\n updateWorldMatrix(sceneByLayer.get(this.layer));\r\n ray.origin[0] = x; ray.origin[1] = previousY + 0.01; ray.origin[2] = z;\r\n ray.direction[0] = 0; ray.direction[1] = -1; ray.direction[2] = 0;\r\n ray.meshes.length = 0;\r\n let layer, hit;\r\n for (layer of layersByLayer.get(sharedByLayer.get(this.layer))) {\r\n if (shouldSkipOther(layer, this.layer) || kindByLayer.get(layer) === 'raster' || layer.options.nightLight) continue;\r\n traverse(rootByLayer.get(layer), collectVisibleMesh, ray.meshes);\r\n }\r\n for (hit of intersectMeshes(ray, ray.meshes)) {\r\n if (hit.point[1] < y - 0.001) break;\r\n this.state.height += (hit.point[1] - y) / root.scale[1];\r\n this.verticalSpeed = 0;\r\n break;\r\n }\r\n ray.meshes.length = 0;\r\n}\r\n", "import { rootByLayer } from '../weakmaps/rootByLayer.js';\n\nimport { L } from '../globals/L.js';\r\nimport { radians } from '../globals/radians.js';\r\nimport { local } from '../projections/walkerLocalPosition.js';\r\nimport { blocked } from './isWalkBlocked.js';\r\n\r\nexport function moveWalker(forward, dt) {\r\n const metres = forward * this.speed * dt, { lat, lng } = this.state.latlng;\r\n const { position, scale } = rootByLayer.get(this.layer);\r\n let east = Math.sin(this.state.heading) * metres, north = Math.cos(this.state.heading) * metres;\r\n const feet = local.call(this, this.local);\r\n let i;\r\n for (i = 0; i < feet.length; i++) feet[i] = position[i] + scale[i] * feet[i];\r\n // World x is east, z south; keep 0.3 m from walls and slide along them.\r\n const wall = blocked.call(this, east, north, feet);\r\n if (wall) {\r\n const into = east * wall[0] - north * wall[1];\r\n east -= into * wall[0]; north += into * wall[1];\r\n if (blocked.call(this, east, north, feet)) east = north = 0;\r\n }\r\n this.state.latlng = /* alloc */ new L.LatLng(lat + north / 111320, lng + east / (111320 * Math.cos(lat * radians)));\r\n this.state.phase += Math.hypot(east, north) / 1.6 * Math.PI;\r\n}\r\n", "// Walls (non-horizontal triangles) of a mesh in world space, bucketed by 8 m cells; `origin` is the world translation\n// at build time, since layer roots only move vertically with the terrain afterwards.\nexport const CELL = 8;\n", "export const colliders = new WeakMap();\n", "import { CELL } from '../globals/CELL.js';\r\n\r\nexport function indexTriangle(cells, v, t) {\r\n let ix, iz, key;\r\n for (ix = Math.floor(Math.min(v[0], v[3], v[6]) / CELL); ix <= Math.floor(Math.max(v[0], v[3], v[6]) / CELL); ix++)\r\n for (iz = Math.floor(Math.min(v[2], v[5], v[8]) / CELL); iz <= Math.floor(Math.max(v[2], v[5], v[8]) / CELL); iz++) {\r\n key = ix + ',' + iz;\r\n if (!cells.has(key)) cells.set(key, /* alloc */ []);\r\n cells.get(key).push(t);\r\n }\r\n}\r\n", "import { colliders } from '../weakmaps/colliders.js';\nimport { indexTriangle } from './indexTriangle.js';\nimport { readTriangle } from './readTriangle.js';\n\n\nexport function collider(mesh) {\n let c = colliders.get(mesh.geometry);\n if (c) return c;\n const m = mesh.worldMatrix, { position: { data: p }, index, normal, uv, instanceOffset } = mesh.geometry.attributes;\n\n const vertices = index ? index.count : p.length / 3;\n const count = vertices * (instanceOffset?.count ?? 1);\n const tri = /* alloc */ [];\n const nrm = /* alloc */ [];\n const cells = /* alloc */ new Map();\n const a = /* alloc */ [0, 0, 0], b = /* alloc */ [0, 0, 0], d = /* alloc */ [0, 0, 0];\n const v = /* alloc */ [];\n\n let i, first, j, ex, ey, ez, fx, fy, fz, nx, nz, ny, length, h, t, maxX = -Infinity;\n for (i = 0; i < count; i += 3) {\n first = index ? index.data[i % vertices] : i % vertices;\n // Streetlight halos (uv.x <= 2, see scene/picking.js) are light, not matter.\n if (mesh.program.nightLight && uv && uv.data[first * 2] <= 2) {\n continue;\n }\n readTriangle(mesh, i, a, b, d);\n v[0] = m[0] * a[0] + m[4] * a[1] + m[8] * a[2] + m[12];\n v[1] = m[1] * a[0] + m[5] * a[1] + m[9] * a[2] + m[13];\n v[2] = m[2] * a[0] + m[6] * a[1] + m[10] * a[2] + m[14];\n v[3] = m[0] * b[0] + m[4] * b[1] + m[8] * b[2] + m[12];\n v[4] = m[1] * b[0] + m[5] * b[1] + m[9] * b[2] + m[13];\n v[5] = m[2] * b[0] + m[6] * b[1] + m[10] * b[2] + m[14];\n v[6] = m[0] * d[0] + m[4] * d[1] + m[8] * d[2] + m[12];\n v[7] = m[1] * d[0] + m[5] * d[1] + m[9] * d[2] + m[13];\n v[8] = m[2] * d[0] + m[6] * d[1] + m[10] * d[2] + m[14];\n ex = v[3] - v[0], ey = v[4] - v[1], ez = v[5] - v[2], fx = v[6] - v[0], fy = v[7] - v[1], fz = v[8] - v[2];\n\n nx = ey * fz - ez * fy, nz = ex * fy - ey * fx;\n\n ny = ez * fx - ex * fz, length = Math.hypot(nx, ny, nz);\n\n if (!length || Math.abs(ny) > 0.9 * length) {\n continue;\n }\n\n if (normal) {\n // The stored normal tells the outside, whatever the winding.\n j = first * 3;\n if ((m[0] * normal.data[j] + m[4] * normal.data[j + 1] + m[8] * normal.data[j + 2]) * nx +\n (m[2] * normal.data[j] + m[6] * normal.data[j + 1] + m[10] * normal.data[j + 2]) * nz < 0) { nx = -nx; nz = -nz; }\n }\n\n h = Math.hypot(nx, nz), t = nrm.length / 2;\n\n tri.push(...v);\n maxX = Math.max(maxX, v[0], v[3], v[6]);\n nrm.push(nx / h, nz / h);\n\n indexTriangle(cells, v, t);\n }\n c = /* alloc */ {\n tri: Float32Array.from(tri),\n nrm: Float32Array.from(nrm),\n cells,\n maxX,\n origin: /* alloc */ [m[12], m[13], m[14]]\n };\n colliders.set(mesh.geometry, c);\n return c;\n}\n", "// M\u00F6ller-Trumbore for the horizontal ray (ox, oy, oz) + d\u00B7(dx, 0, dz) against triangle t; returns d or -1.\nexport function horizontalRay(v, t, ox, oy, oz, dx, dz) {\n const i = t * 9, ex = v[i + 3] - v[i], ey = v[i + 4] - v[i + 1], ez = v[i + 5] - v[i + 2];\n const fx = v[i + 6] - v[i], fy = v[i + 7] - v[i + 1], fz = v[i + 8] - v[i + 2];\n const px = -dz * fy, py = dz * fx - dx * fz, pz = dx * fy, det = ex * px + ey * py + ez * pz;\n if (Math.abs(det) < 1e-9) return -1;\n const tx = ox - v[i], ty = oy - v[i + 1], tz = oz - v[i + 2], u = (tx * px + ty * py + tz * pz) / det;\n if (u < 0 || u > 1) return -1;\n const qx = ty * ez - tz * ey, qy = tz * ex - tx * ez, qz = tx * ey - ty * ex, w = (dx * qx + dz * qz) / det;\n if (w < 0 || u + w > 1) return -1;\n return (fx * qx + fy * qy + fz * qz) / det;\n}\n", "import { horizontalRay } from '../collision/horizontalRay.js';\r\n\r\nexport function hitColliderCell(cell, c, data, ox, oy, oz) {\r\n const { dx, dz, seen } = data;\r\n let t, height, d;\r\n for (t of cell) {\r\n if (seen.has(t) || dx * c.nrm[t * 2] + dz * c.nrm[t * 2 + 1] >= 0) continue;\r\n seen.add(t);\r\n for (height = 0.4; height < 2; height += 1.1) {\r\n d = horizontalRay(c.tri, t, ox, oy + height, oz, dx, dz);\r\n if (d >= 0 && d < data.best) {\r\n data.best = d;\r\n data.found = true;\r\n data.normal[0] = c.nrm[t * 2];\r\n data.normal[1] = c.nrm[t * 2 + 1];\r\n }\r\n }\r\n }\r\n}\r\n", "import { CELL } from '../globals/CELL.js';\n\nimport { computeBounds } from '../geometry/computeBounds.js';\nimport { collider } from '../collision/collider.js';\n\nimport { hitColliderCell } from './hitColliderCell.js';\n\nexport function hitMesh(mesh, data) {\n if (!mesh.visible) return true;\n if (!mesh.geometry?.attributes?.position?.data || mesh.program?.depthTest === false) return;\n if (!mesh.geometry.bounds) computeBounds(mesh.geometry);\n const m = mesh.worldMatrix, { center: k, radius } = mesh.geometry.bounds;\n const { x, y, z, dx, dz, reach } = data;\n if (Math.hypot(m[0] * k[0] + m[4] * k[1] + m[8] * k[2] + m[12] - x, m[2] * k[0] + m[6] * k[1] + m[10] * k[2] + m[14] - z) >\n radius * Math.hypot(m[0], m[1], m[2]) + reach) return;\n const c = collider(mesh), ox = x - m[12] + c.origin[0], oy = y - m[13] + c.origin[1], oz = z - m[14] + c.origin[2];\n const seen = data.seen;\n seen.clear();\n let ix, iz, cell;\n for (ix = Math.floor(Math.min(ox, ox + dx * reach) / CELL); ix <= Math.floor(Math.max(ox, ox + dx * reach) / CELL); ix++)\n for (iz = Math.floor(Math.min(oz, oz + dz * reach) / CELL); iz <= Math.floor(Math.max(oz, oz + dz * reach) / CELL); iz++) {\n cell = c.cells.get(ix + ',' + iz);\n if (!cell) continue;\n hitColliderCell(cell, c, data, ox, oy, oz);\n }\n}\n", "import { rootByLayer } from '../weakmaps/rootByLayer.js';\r\nimport { trafficByLayer } from '../weakmaps/trafficByLayer.js';\r\n\r\nimport { locateTraffic } from '../traffic/locateTraffic.js';\r\n\r\nexport function trafficCollision(layer, x, y, z, dx, dz, reach, data) {\r\n const state = trafficByLayer.get(layer);\r\n if (!state?.mesh || !state.trips.length) return false;\r\n let bounds = state.collisionBounds;\r\n if (!bounds) {\r\n bounds = state.collisionBounds = { radius: 0, minY: Infinity, maxY: -Infinity };\r\n let i, px, py, pz;\r\n for (i = 0; i < state.template.position.length; i += 3) {\r\n px = state.template.position[i];\r\n py = state.template.position[i + 1];\r\n pz = state.template.position[i + 2];\r\n bounds.radius = Math.max(bounds.radius, Math.hypot(px, pz));\r\n bounds.minY = Math.min(bounds.minY, py);\r\n bounds.maxY = Math.max(bounds.maxY, py);\r\n }\r\n }\r\n const root = rootByLayer.get(layer), position = state.position ||= {};\r\n const scale = Math.max(root.scale[0], root.scale[1], root.scale[2]);\r\n const radius = bounds.radius * scale + 0.35;\r\n let trip, projection, closest, rx, rz, perpendicular, entry, distance, bottom, top, px, pz;\r\n for (trip of state.trips) {\r\n ({ x: px, y: bottom, z: pz } = locateTraffic(state, trip, position));\r\n bottom = root.position[1] + (bottom + bounds.minY) * root.scale[1];\r\n top = root.position[1] + (position.y + bounds.maxY) * root.scale[1];\r\n if (bottom > y + 1.7 * scale || top < y + 0.2 * scale) continue;\r\n px = root.position[0] + px * root.scale[0];\r\n pz = root.position[2] + pz * root.scale[2];\r\n projection = (px - x) * dx + (pz - z) * dz;\r\n closest = Math.max(0, Math.min(reach, projection));\r\n rx = x + closest * dx - px;\r\n rz = z + closest * dz - pz;\r\n perpendicular = rx * rx + rz * rz;\r\n if (perpendicular >= radius * radius) continue;\r\n if (reach === 0) {\r\n data.found = true;\r\n distance = Math.hypot(x - px, z - pz);\r\n data.normal[0] = distance ? (x - px) / distance : 0;\r\n data.normal[1] = distance ? (z - pz) / distance : 0;\r\n continue;\r\n }\r\n entry = Math.max(0, projection - Math.sqrt(radius * radius - perpendicular));\r\n if (entry > reach || entry >= data.best) continue;\r\n data.best = entry;\r\n data.found = true;\r\n distance = Math.hypot(x + entry * dx - px, z + entry * dz - pz);\r\n if (distance < 1e-6) {\r\n data.normal[0] = -dx;\r\n data.normal[1] = -dz;\r\n } else {\r\n data.normal[0] = (x + entry * dx - px) / distance;\r\n data.normal[1] = (z + entry * dz - pz) / distance;\r\n }\r\n }\r\n return data.found;\r\n}\r\n", "import { layersByLayer } from '../weakmaps/layersByLayer.js';\nimport { kindByLayer } from '../weakmaps/kindByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\nimport { sceneByLayer } from '../weakmaps/sceneByLayer.js';\nimport { sharedByLayer } from '../weakmaps/sharedByLayer.js';\n\n\n\n\nimport { traverse } from '../scene/traverse.js';\nimport { updateWorldMatrix } from '../transforms/updateWorldMatrix.js';\nimport { hitMesh } from './hitMesh.js';\nimport { trafficCollision } from '../collision/trafficCollision.js';\n\n// Horizontal normal of the nearest wall faced within `reach` metres of the feet at world (x, y, z), walking along\n// the unit (dx, dz); knee and chest rays, so arches and tree crowns above the head let the walker through.\n\nexport function hit(layer, x, y, z, dx, dz, reach, data) {\n updateWorldMatrix(sceneByLayer.get(layer));\n data.x = x, data.y = y, data.z = z, data.dx = dx, data.dz = dz, data.reach = reach;\n data.best = reach, data.found = false;\n let other;\n for (other of layersByLayer.get(sharedByLayer.get(layer))) {\n if (other === layer || kindByLayer.get(other) === 'terrain') continue;\n if (kindByLayer.get(other) === 'traffic') {\n trafficCollision(other, x, y, z, dx, dz, reach, data);\n continue;\n }\n traverse(rootByLayer.get(other), hitMesh, data);\n }\n return data.found ? data.normal : null;\n}\n", "import { hit } from '../picking/hit.js';\r\n\r\nexport function blocked(east, north, feet) {\r\n const length = Math.hypot(east, north);\r\n return length > 1e-6 && hit(this.layer, feet[0], feet[1], feet[2], east / length, -north / length, length + 0.3, this.hitData);\r\n}\r\n", "export function stepWalkerHeight(dt) {\r\n if (this.keys.has('Space')) {\r\n this.verticalSpeed = 6;\r\n this.state.height += this.verticalSpeed * dt;\r\n return true;\r\n }\r\n if (!this.verticalSpeed && !this.state.height) return false;\r\n this.state.height = Math.max(0, this.state.height + this.verticalSpeed * dt - 9.81 * dt * dt / 2);\r\n this.verticalSpeed = this.state.height > 0 ? this.verticalSpeed - 9.81 * dt : 0;\r\n return true;\r\n}\r\n", "import { degrees } from '../globals/degrees.js';\r\nimport { radians } from '../globals/radians.js';\r\nimport { mapGetBearing } from '../camera/mapGetBearing.js';\r\nimport { mapSetPitchAndBearing } from '../camera/mapSetPitchAndBearing.js';\r\nimport { mapGetPitch } from '../camera/mapGetPitch.js';\r\nimport { wrap } from '../utils/wrap.js';\r\n\r\nexport function updateWalkerView(forward, turn, dt) {\r\n const map = this.layer._map;\r\n if (forward || turn) {\r\n // Swing the camera behind the walker.\r\n const bearing = mapGetBearing(map) * radians, behind = wrap(-this.state.heading - bearing);\r\n if (Math.abs(behind) > 1e-3) mapSetPitchAndBearing(map, mapGetPitch(map), (bearing + behind * Math.min(1, dt * 4)) * degrees);\r\n map.setView(this.state.latlng, map.getZoom(), /* alloc */ { animate: false });\r\n }\r\n const target = forward ? 0.9 : 0;\r\n if (Math.abs(this.swing - target) > 1e-3) {\r\n this.swing += (target - this.swing) * Math.min(1, dt * 10);\r\n return true;\r\n }\r\n return false;\r\n}\r\n", "import { L } from '../globals/L.js';\r\nimport { insideWalker } from '../collision/insideWalker.js';\r\n\r\nexport function resolveWalkerPosition() {\r\n if (!this.saved || !insideWalker(this)) return false;\r\n const map = this.layer._map;\r\n const origin = this.state.latlng;\r\n const height = this.state.height;\r\n let distance, angle, candidate;\r\n for (distance = 0.5; distance <= 20; distance += 0.5) {\r\n for (angle = 0; angle < Math.PI * 2; angle += Math.PI / 4) {\r\n candidate = /* alloc */ new L.LatLng(\r\n origin.lat + Math.cos(angle) * distance / 111320,\r\n origin.lng + Math.sin(angle) * distance / (111320 * Math.cos(origin.lat * Math.PI / 180))\r\n );\r\n this.state.latlng = candidate;\r\n this.state.height = 0;\r\n if (!insideWalker(this)) {\r\n this.verticalSpeed = 0;\r\n map.setView(candidate, map.getZoom(), /* alloc */ { animate: false });\r\n return true;\r\n }\r\n }\r\n }\r\n this.state.latlng = origin;\r\n this.state.height = height;\r\n return false;\r\n}\r\n", "import { CELL } from '../globals/CELL.js';\r\n\r\nimport { collider } from './collider.js';\r\nimport { horizontalRay } from './horizontalRay.js';\r\nimport { computeBounds } from '../geometry/computeBounds.js';\r\n\r\nexport function insideMesh(mesh, x, y, z, seen, intersections) {\r\n const geometry = mesh.geometry;\r\n if (!mesh.visible || !geometry?.attributes?.position?.data || mesh.program?.depthTest === false) return false;\r\n if (!geometry.bounds) computeBounds(geometry);\r\n const bounds = geometry.bounds;\r\n const world = mesh.worldMatrix;\r\n const center = bounds.center;\r\n const cx = world[0] * center[0] + world[4] * center[1] + world[8] * center[2] + world[12];\r\n const cy = world[1] * center[0] + world[5] * center[1] + world[9] * center[2] + world[13];\r\n const cz = world[2] * center[0] + world[6] * center[1] + world[10] * center[2] + world[14];\r\n const radius = bounds.radius * Math.max(\r\n Math.hypot(world[0], world[1], world[2]),\r\n Math.hypot(world[4], world[5], world[6]),\r\n Math.hypot(world[8], world[9], world[10])\r\n );\r\n if (Math.hypot(cx - x, cy - y, cz - z) > radius) return false;\r\n const shape = collider(mesh);\r\n const end = Math.floor(shape.maxX / CELL);\r\n if (x >= shape.maxX) return false;\r\n const iz = Math.floor(z / CELL);\r\n const hits = intersections;\r\n hits.length = 0;\r\n seen.clear();\r\n let ix, cell, triangle, distance;\r\n for (ix = Math.floor(x / CELL); ix <= end; ix++) {\r\n cell = shape.cells.get(`${ix},${iz}`);\r\n if (!cell) continue;\r\n for (triangle of cell) {\r\n if (seen.has(triangle)) continue;\r\n seen.add(triangle);\r\n distance = horizontalRay(shape.tri, triangle, x, y, z, 1, 0);\r\n if (distance > 1e-4) hits.push(distance);\r\n }\r\n }\r\n for (ix = 1; ix < hits.length; ix++) {\r\n distance = hits[ix];\r\n let j = ix - 1;\r\n while (j >= 0 && hits[j] > distance) hits[j + 1] = hits[j--];\r\n hits[j + 1] = distance;\r\n }\r\n let crossings = 0, previous = -Infinity;\r\n for (distance of hits) {\r\n if (distance - previous > 1e-4) crossings++;\r\n previous = distance;\r\n }\r\n return crossings % 2 === 1;\r\n}\r\n", "import { kindByLayer } from '../weakmaps/kindByLayer.js';\r\nimport { layersByLayer } from '../weakmaps/layersByLayer.js';\r\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\r\nimport { sceneByLayer } from '../weakmaps/sceneByLayer.js';\r\nimport { sharedByLayer } from '../weakmaps/sharedByLayer.js';\r\n\r\nimport { updateWorldMatrix } from '../transforms/updateWorldMatrix.js';\r\nimport { insideMesh } from './insideMesh.js';\r\nimport { trafficCollision } from './trafficCollision.js';\r\nimport { local } from '../projections/walkerLocalPosition.js';\r\n\r\nexport function insideWalker(context) {\r\n const { layer, local: localBuffer, hitData } = context;\r\n const shared = sharedByLayer.get(layer);\r\n if (!shared || !layersByLayer.get(shared)) return false;\r\n updateWorldMatrix(sceneByLayer.get(layer));\r\n const root = rootByLayer.get(layer);\r\n const feet = local.call(context, localBuffer);\r\n const x = root.position[0] + feet[0] * root.scale[0];\r\n const y = root.position[1] + feet[1] * root.scale[1];\r\n const z = root.position[2] + feet[2] * root.scale[2];\r\n const layers = layersByLayer.get(shared);\r\n let other, node, child;\r\n for (other of layers) {\r\n if (other === layer || kindByLayer.get(other) === 'terrain') continue;\r\n if (kindByLayer.get(other) === 'traffic') {\r\n hitData.best = 0;\r\n hitData.found = false;\r\n if (trafficCollision(other, x, y, z, 0, 0, 0, hitData)) return true;\r\n continue;\r\n }\r\n const nodes = hitData.nodes;\r\n nodes.length = 0;\r\n if (rootByLayer.get(other)) nodes.push(rootByLayer.get(other));\r\n while (nodes.length) {\r\n node = nodes.pop();\r\n if (!node.visible) continue;\r\n if (node.geometry && (\r\n insideMesh(node, x, y + 0.45 * root.scale[1], z, hitData.seen, hitData.intersections) ||\r\n insideMesh(node, x, y + 1.35 * root.scale[1], z, hitData.seen, hitData.intersections)\r\n )) return true;\r\n for (child of node.children) nodes.push(child);\r\n }\r\n }\r\n return false;\r\n}\r\n", "import { rendererByLayer } from '../weakmaps/rendererByLayer.js';\nimport { rootByLayer } from '../weakmaps/rootByLayer.js';\n\nimport { limbs } from '../globals/limbs.js';\nimport { parts } from '../globals/parts.js';\nimport { moves } from '../globals/moves.js';\n\n\nimport * as createMesh from '../rendering/createMesh.js';\nimport { build } from '../geometry/buildGeometryParts.js';\n\nimport { wrap } from '../utils/wrap.js';\nimport { local } from '../projections/walkerLocalPosition.js';\nimport { place } from './placeWalker.js';\nimport { land } from './landWalker.js';\nimport { moveWalker } from './moveWalker.js';\nimport { stepWalkerHeight } from './stepWalkerHeight.js';\nimport { updateWalkerView } from './updateWalkerView.js';\nimport { resolveWalkerPosition } from './resolveWalkerPosition.js';\n\nexport function step(now) {\n const layer = this.layer;\n this.frame = requestAnimationFrame(this.step);\n const dt = Math.min(0.1, (now - (this.last ?? now)) / 1000);\n this.last = now;\n if (!rendererByLayer.get(layer)) return;\n let changed = false;\n let part, key;\n if (now >= this.nextClearanceCheck) {\n this.nextClearanceCheck = now + 250;\n if (resolveWalkerPosition.call(this)) changed = true;\n }\n if (!this.meshes) {\n this.meshes = /* alloc */ [];\n for ([part] of limbs) this.meshes.push(createMesh.createMesh(layer, build(parts[part])));\n changed = true;\n }\n const previousY = rootByLayer.get(layer).position[1] +\n local.call(this, this.local)[1] * rootByLayer.get(layer).scale[1];\n if (stepWalkerHeight.call(this, dt)) changed = true;\n let forward = 0, turn = 0;\n for (key of this.keys) { forward += moves[key]?.[0] || 0; turn += moves[key]?.[1] || 0; }\n forward = Math.sign(forward); turn = Math.sign(turn);\n if (turn) { this.state.heading = wrap(this.state.heading + turn * 2.5 * dt); changed = true; }\n if (forward) {\n moveWalker.call(this, forward, dt);\n changed = true;\n }\n if (changed) land.call(this, previousY);\n if (updateWalkerView.call(this, forward, turn, dt)) changed = true;\n if (changed) place.call(this);\n}\n", "import { start } from './startWalking.js';\nimport { stop } from './stopWalking.js';\n\nexport function toggle() {\r\n if (this.saved) stop.call(this); else start.call(this);\r\n}\n", "import { walkByMap } from '../weakmaps/walkByMap.js';\r\n\r\nexport function onAdd(map) {\r\n let state = walkByMap.get(map);\r\n if (state?.control && state.control !== this) {\r\n this._map = null;\r\n throw /* alloc */ new Error('Only one Walk control can be active per map');\r\n }\r\n if (!state) {\r\n state = /* alloc */ {\r\n control: null,\r\n hitData: /* alloc */ {\r\n x: 0, y: 0, z: 0, dx: 0, dz: 0, reach: 0, best: 0, found: false,\r\n seen: /* alloc */ new Set(),\r\n intersections: /* alloc */ [],\r\n nodes: /* alloc */ [],\r\n normal: /* alloc */ [0, 0],\r\n },\r\n local: /* alloc */ [0, 0, 0],\r\n };\r\n walkByMap.set(map, state);\r\n }\r\n state.control = this;\r\n state.local.fill(0);\r\n state.hitData.seen.clear();\r\n state.hitData.normal.fill(0);\r\n this._walk.hitData = state.hitData;\r\n this._walk.local = state.local;\r\n this._walk.layer.addTo(map);\r\n return this._walk.container;\r\n}\r\n", "import { walkByMap } from '../weakmaps/walkByMap.js';\r\n\r\nexport function onRemove(map) {\r\n const state = walkByMap.get(map);\r\n if (state?.control !== this) return;\r\n this._walk.stop();\r\n this._walk.layer.remove();\r\n state.control = null;\r\n state.hitData.seen.clear();\r\n this._walk.hitData = null;\r\n this._walk.local = null;\r\n}\r\n", "import { kindByLayer } from '../weakmaps/kindByLayer.js';\n\nimport { L } from '../globals/L.js';\nimport { closestMethods } from '../weakmaps/closestMethods.js';\nimport { boundsMethods } from '../weakmaps/boundsMethods.js';\nimport { gridInitializers } from '../weakmaps/gridInitializers.js';\n\n\nimport { noOperation } from '../utils/noOperation.js';\nimport { emptyEvents } from '../scene/emptyEvents.js';\nimport { refreshNativeLayerContract } from '../native/refreshNativeLayerContract.js';\n\nimport { closestCameraLayerPoint } from './closestCameraLayerPoint.js';\nimport { cameraCircleBounds } from './cameraCircleBounds.js';\nimport { initializeGridContainer } from './initializeGridContainer.js';\nimport { updateGridOpacity } from './updateGridOpacity.js';\nimport { addRasterImage } from '../textures/attachRasterImage.js';\nimport { redrawPath } from './redrawPath.js';\n\nexport function initializeNativeLayer() {\n if (this instanceof L.Polyline || this instanceof L.CircleMarker) {\n this.beforeAdd = this._updateBounds = noOperation;\n this.redraw = redrawPath;\n kindByLayer.set(this, 'path');\n if (this instanceof L.Polyline) {\n closestMethods.set(this, this.closestLayerPoint);\n this.closestLayerPoint = closestCameraLayerPoint;\n }\n if (this instanceof L.Circle) {\n boundsMethods.set(this, this.getBounds);\n this.getBounds = cameraCircleBounds;\n }\n } else if (this instanceof L.GridLayer) {\n gridInitializers.set(this, this._initContainer);\n this._initContainer = initializeGridContainer;\n this._updateOpacity = updateGridOpacity;\n } else if (this instanceof L.ImageOverlay && !(this instanceof L.VideoOverlay) && !(this instanceof L.SVGOverlay)) {\n kindByLayer.set(this, 'image');\n this._reset = refreshNativeLayerContract;\n }\n}\n", "export const closestMethods = new WeakMap();\n", "export const boundsMethods = new WeakMap();\n", "export const gridInitializers = new WeakMap();\n", "export function emptyEvents() {\n return /* alloc */ {};\n}\n", "import { closestMethods } from '../weakmaps/closestMethods.js';\n\n\nexport function closestCameraLayerPoint(point) {\n this._project();\n this._parts = this._rings;\n return closestMethods.get(this).call(this, point);\n}\n", "import { boundsMethods } from '../weakmaps/boundsMethods.js';\n\n\nexport function cameraCircleBounds() {\n this._project();\n return boundsMethods.get(this).call(this);\n}\n", "import { gridInitializers } from '../weakmaps/gridInitializers.js';\n\n\nexport function initializeGridContainer() {\n gridInitializers.get(this).call(this);\n this._container.remove();\n}\n", "export const pendingGridFades = new Map();\n", "export const gridFadeFrame = { value: null };\n", "import { fadeFrameByLayer } from '../weakmaps/fadeFrameByLayer.js';\n\nimport { pendingGridFades } from '../globals/pendingGridFades.js';\nimport { gridFadeFrame } from '../globals/gridFadeFrame.js';\n\n\n\nexport function cancelGridFade(layer) {\n pendingGridFades.delete(layer);\n fadeFrameByLayer.set(layer, null);\n if (!pendingGridFades.size && gridFadeFrame.value !== null) {\n cancelAnimationFrame(gridFadeFrame.value);\n gridFadeFrame.value = null;\n }\n}\n", "import { fadeFrameByLayer } from '../weakmaps/fadeFrameByLayer.js';\n\nimport { gridFadeFrame } from '../globals/gridFadeFrame.js';\nimport { pendingGridFades } from '../globals/pendingGridFades.js';\n\n\n\nimport { updateGridOpacity } from '../core/updateGridOpacity.js';\n\nexport function runGridFades() {\n gridFadeFrame.value = null;\n const layers = /* alloc */ [...pendingGridFades];\n let layer, version;\n for ([layer, version] of layers) {\n if (pendingGridFades.get(layer) !== version) continue;\n pendingGridFades.delete(layer);\n fadeFrameByLayer.set(layer, null);\n updateGridOpacity.call(layer);\n }\n}\n", "import { fadeFrameByLayer } from '../weakmaps/fadeFrameByLayer.js';\nimport { fadeVersionByLayer } from '../weakmaps/fadeVersionByLayer.js';\n\nimport { pendingGridFades } from '../globals/pendingGridFades.js';\nimport { gridFadeFrame } from '../globals/gridFadeFrame.js';\n\n\n\nimport { runGridFades } from './runGridFades.js';\n\nexport function scheduleGridFade(layer) {\n fadeVersionByLayer.set(layer, (fadeVersionByLayer.get(layer) || 0) + 1);\n pendingGridFades.set(layer, fadeVersionByLayer.get(layer));\n if (gridFadeFrame.value === null) gridFadeFrame.value = requestAnimationFrame(runGridFades);\n fadeFrameByLayer.set(layer, gridFadeFrame.value);\n}\n", "\nimport { cancelGridFade } from '../animations/cancelGridFade.js';\nimport { scheduleGridFade } from '../animations/scheduleGridFade.js';\n\nexport function updateGridOpacity() {\n if (!this._map) return;\n const layer = this, now = Date.now();\n let fading = false, prune = false;\n let key, tile;\n for (key in this._tiles) {\n if (!Object.hasOwn(this._tiles, key)) continue;\n tile = this._tiles[key];\n if (!tile.current || !tile.loaded) continue;\n tile._gpuOpacity = this._map._fadeAnimated ? Math.min(1, (now - tile.loaded) / 200) : 1;\n if (tile._gpuOpacity < 1) fading = true;\n else if (!tile.active) {\n this._onOpaqueTile(tile);\n tile.active = true;\n prune = true;\n }\n }\n if (prune && !this._noPrune) this._pruneTiles();\n refreshNativeLayerContract(this);\n cancelGridFade(layer);\n if (fading) scheduleGridFade(layer);\n}\nimport { refreshNativeLayerContract } from '../native/refreshNativeLayerContract.js';\n", "export const pendingRasterLoads = [];\n", "import { pendingRasterLoads } from '../globals/pendingRasterLoads.js';\n\n\nexport function fireRasterLoad() {\n pendingRasterLoads.shift()?.fire('load');\n}\n", "import { pendingRasterLoads } from '../globals/pendingRasterLoads.js';\n\n\nimport { fireRasterLoad } from '../core/fireRasterLoad.js';\n\nexport function addRasterImage() {\n if (!this._image) this._initImage();\n if (this._image.complete && this._image.naturalWidth) {\n pendingRasterLoads.push(this);\n queueMicrotask(fireRasterLoad);\n }\n}\n", "import { refreshNativeLayerContract } from '../native/refreshNativeLayerContract.js';\r\n\r\nexport function redrawPath() {\r\n refreshNativeLayerContract(this);\r\n return this;\r\n}\r\n", "import { eventMapByLayer } from '../weakmaps/eventMapByLayer.js';\nimport { eventsByLayer } from '../weakmaps/eventsByLayer.js';\nimport { kindByLayer } from '../weakmaps/kindByLayer.js';\nimport { state3dByLayer } from '../weakmaps/state3dByLayer.js';\n\nimport { L } from '../globals/L.js';\nimport { layerProto } from '../globals/layerProto.js';\n\n\n\nimport { initNativeGPU } from '../native/initNativeGPU.js';\nimport { removeLayerEvents } from './removeLayerEvents.js';\nimport { addSceneLayer } from './addSceneLayer.js';\nimport { get3DEvents } from './get3DEvents.js';\nimport { getRasterEvents } from '../raster/getRasterEvents.js';\nimport { emptyEvents } from './emptyEvents.js';\nimport { isNativeLayer } from './isNativeLayer.js';\n\nexport function layerLayerAdd(event) {\n const native = isNativeLayer(this);\n if (native) {\n if (this instanceof L.GridLayer || this instanceof L.ImageOverlay) {\n this.options.crossOrigin ||= true;\n }\n if (this instanceof L.Marker) this.options.icon.options.crossOrigin ||= true;\n }\n const map = event.target\n if (!map.hasLayer(this)) return;\n if (kindByLayer.get(this)) {\n this._map = map;\n this._zoomAnimated = map._zoomAnimated;\n if (kindByLayer.get(this) !== 'pending' && kindByLayer.get(this) !== 'time') {\n eventsByLayer.set(this, kindByLayer.get(this) === 'raster' ? getRasterEvents(this) :\n state3dByLayer.get(this) ? get3DEvents(this) : emptyEvents());\n eventMapByLayer.set(this, map);\n map.on(eventsByLayer.get(this), this);\n this.once('remove', removeLayerEvents, this);\n }\n addSceneLayer(this, map);\n this.fire('add');\n map.fire('layeradd', /* alloc */ { layer: this });\n } else {\n layerProto.value._layerAdd.call(this, event);\n }\n if (!native || !event.target.hasLayer(this)) return;\n initNativeGPU(this, event.target);\n}\n", "import { eventMapByLayer } from '../weakmaps/eventMapByLayer.js';\nimport { eventsByLayer } from '../weakmaps/eventsByLayer.js';\n\n\n\n\nexport function removeLayerEvents() {\n\n eventMapByLayer.get(this).off(eventsByLayer.get(this), this);\n eventMapByLayer.set(this, null);\n eventsByLayer.set(this, null);\n}\n", "import { kindByLayer } from '../weakmaps/kindByLayer.js';\n\n\r\nimport { onAdd3DLayer } from './onAdd3DLayer.js';\r\nimport { onPMTileAdd } from '../raster/onPMTileAdd.js';\r\nimport { onTerrainAdd } from '../terrain/onTerrainAdd.js';\r\nimport { addRasterImage } from '../textures/attachRasterImage.js';\r\nimport { addTimeLayer } from '../sunlight/addTimeLayer.js';\r\n\r\nexport function addSceneLayer(layer, map) {\r\n switch (kindByLayer.get(layer)) {\r\n case '3d': return onAdd3DLayer(layer, map);\r\n case 'raster': return onPMTileAdd(layer, map);\r\n case 'terrain': return onTerrainAdd(layer, map);\r\n case 'image': return addRasterImage.call(layer, map);\r\n case 'time': return addTimeLayer.call(layer, map);\r\n }\r\n}\r\n", "import { areasByLayer } from '../weakmaps/areasByLayer.js';\n\n\n\nimport { releaseArea } from '../sources/releaseArea.js';\nimport { updateArea } from \"../sources/updateArea.js\";\n\n/** GeoJSON source areas: loading, building and releasing. */\n\nexport function onTerrainChange(layer) {\n if (!layer._map) return;\n let area;\n for (area of areasByLayer.get(layer).values()) {\n releaseArea(layer, area);\n }\n areasByLayer.get(layer).clear();\n updateArea(layer);\n}\n", "import { geojsonByLayer } from '../weakmaps/geojsonByLayer.js';\nimport { urlByLayer } from '../weakmaps/urlByLayer.js';\n\n\n\nimport { updateArea } from '../sources/updateArea.js';\nimport { onTerrainChange } from '../terrain/onTerrainChange.js';\n\nexport function get3DEvents(layer) {\n const events = /* alloc */ {};\n if (urlByLayer.get(layer)) {\n events.moveend = events.zoomend = events.rotate = events.pitch = events.resize = updateArea.bind(null, layer);\n }\n if (geojsonByLayer.get(layer) || urlByLayer.get(layer)) {\n events.terrainchange = onTerrainChange.bind(null, layer);\n }\n return events;\n}\n", "import { state3dByLayer } from '../weakmaps/state3dByLayer.js';\n\nimport { L } from '../globals/L.js';\r\n\r\nexport function isNativeLayer(layer) {\r\n return !state3dByLayer.get(layer) && (\r\n layer instanceof L.GridLayer ||\r\n layer instanceof L.Polyline ||\r\n layer instanceof L.CircleMarker ||\r\n layer instanceof L.Marker && !(layer.options.icon instanceof L.DivIcon) ||\r\n layer instanceof L.ImageOverlay && !(layer instanceof L.VideoOverlay) && !(layer instanceof L.SVGOverlay)\r\n );\r\n}\r\n", "import { kindByLayer } from '../weakmaps/kindByLayer.js';\nimport { readyByLayer } from '../weakmaps/readyByLayer.js';\nimport { sceneLayers } from '../weakmaps/sceneLayers.js';\nimport { typeByLayer } from '../weakmaps/typeByLayer.js';\n\nimport { L } from '../globals/L.js';\nimport { sceneEmptyOptions } from '../globals/sceneEmptyOptions.js';\nimport { layerProto } from '../globals/layerProto.js';\nimport { pendingInitializations } from '../globals/pendingInitializations.js';\nimport { loading } from '../globals/loading.js';\n\n\n\nimport { init3D } from './init3D.js';\nimport { noOperation } from '../utils/noOperation.js';\nimport { resolveNextInitialization } from './resolveNextInitialization.js';\nimport { initializeLayer } from './initializeLayer.js';\n\nexport function layerInitialize(options = sceneEmptyOptions) {\n if (!sceneLayers.has(this)) {\n sceneLayers.add(this);\n }\n if (Object.getPrototypeOf(this) !== L.Layer.prototype || !options?.source) {\n if (layerProto.value.initialize) return layerProto.value.initialize.apply(this, arguments);\n L.Util.setOptions(this, options);\n return;\n }\n const {\n source: {\n type = options.source.data?.type === 'FeatureCollection'\n ? 'geojson'\n : /\\.pmtiles(?:[?#]|$)/i.test(options.source.url) ? 'pmtiles'\n : /\\.tiff?(?:[?#]|$)/i.test(options.source.url) ? 'cog' : '3d',\n ...source\n },\n ...core\n } = options;\n const settings = /* alloc */ { ...source, ...core };\n L.Util.setOptions(this, core);\n typeByLayer.set(this, type);\n if (type === '3d') {\n init3D(this, settings);\n return;\n }\n kindByLayer.set(this, 'pending');\n const task = /* alloc */ { layer: this, type, settings, ready: null };\n pendingInitializations.push(task);\n loading.value = loading.value.catch(noOperation).then(resolveNextInitialization);\n const ready = loading.value.then(initializeLayer);\n readyByLayer.set(this, ready);\n task.ready = ready;\n ready.catch(noOperation);\n}\n", "export const pendingInitializations = [];\n", "export const loading = { value: Promise.resolve() };\n", "import { geojsonByLayer } from '../weakmaps/geojsonByLayer.js';\n\n\n\nimport { setGeoJSONLayerData } from './setGeoJSONLayerData.js';\nimport { init3D } from '../scene/init3D.js';\n\nexport function initializeGeoJSON(layer, options) {\n geojsonByLayer.set(layer, true);\n init3D(layer, options);\n}\n", "export function validateCogRange(source, offset, length) {\r\n if (!Number.isSafeInteger(offset) || !Number.isSafeInteger(length) || offset < 0 ||\r\n length <= 0 || length > 32000000 || !Number.isSafeInteger(offset + length) ||\r\n source.size !== undefined && offset + length > source.size) {\r\n throw /* alloc */ new Error('Invalid COG byte range');\r\n }\r\n}\r\n", "export function validateCogContentRange(source, range, rangeStart, length) {\r\n if (!range || Number(range[1]) !== rangeStart || Number(range[2]) !== rangeStart + length - 1 ||\r\n !Number.isSafeInteger(Number(range[3])) || Number(range[3]) < rangeStart + length ||\r\n (source.containerSize ?? source.size) !== undefined &&\r\n (source.containerSize ?? source.size) !== Number(range[3])) {\r\n throw /* alloc */ new Error('Invalid COG range response');\r\n }\r\n}\r\n", "export function invalidCogFullResponse(response) {\r\n return response.status !== 200 || Number(response.headers.get('Content-Length')) > 32000000;\r\n}\r\n", "import { validateCogContentRange } from './validateCogContentRange.js';\r\nimport { invalidCogFullResponse } from './invalidCogFullResponse.js';\r\n\r\nexport function validateCogResponse(source, response, rangeStart, length) {\r\n const etag = response.headers.get('ETag');\r\n if (source.etag && source.etag !== etag) throw /* alloc */ new Error('COG changed; recreate the layer');\r\n if (etag) source.etag = etag;\r\n const range = /^bytes (\\d+)-(\\d+)\\/(\\d+)$/.exec(response.headers.get('Content-Range') || '');\r\n if (response.status === 206) {\r\n validateCogContentRange(source, range, rangeStart, length);\r\n if (source.baseOffset === undefined) source.size = Number(range[3]);\r\n } else if (invalidCogFullResponse(response)) {\r\n throw /* alloc */ new Error('COG server must support byte ranges for files over 32 MB');\r\n }\r\n}\r\n", "export async function readCogBody(response, length) {\r\n const reader = response.body.getReader(), chunks = /* alloc */ [];\r\n let total = 0, part;\r\n try {\r\n while (!(part = await reader.read()).done) {\r\n total += part.value.byteLength;\r\n if (total > (response.status === 206 ? length : 32000000)) {\r\n await reader.cancel();\r\n throw /* alloc */ new Error('Oversized COG response');\r\n }\r\n chunks.push(part.value);\r\n }\r\n } finally {\r\n reader.releaseLock();\r\n }\r\n const data = /* alloc */ new Uint8Array(total);\r\n let start = 0, chunk;\r\n for (chunk of chunks) { data.set(chunk, start); start += chunk.length; }\r\n return data;\r\n}\r\n", "import { validateCogRange } from './validateCogRange.js';\r\nimport { validateCogResponse } from './validateCogResponse.js';\r\nimport { readCogBody } from './readCogBody.js';\r\n\r\nexport async function readCog(source, offset, length, signal) {\r\n signal?.throwIfAborted();\r\n validateCogRange(source, offset, length);\r\n if (source.full) return source.full.slice(offset, offset + length);\r\n const rangeStart = (source.baseOffset || 0) + offset;\r\n const response = await fetch(source.url, /* alloc */ {\r\n headers: /* alloc */ { Range: `bytes=${rangeStart}-${rangeStart + length - 1}` }, signal,\r\n });\r\n if (!response.ok) throw /* alloc */ new Error(`Unable to read COG: HTTP ${response.status}`);\r\n validateCogResponse(source, response, rangeStart, length);\r\n const data = await readCogBody(response, length);\r\n if (response.status === 200) {\r\n if (source.baseOffset === undefined) source.size = data.byteLength;\r\n else if (data.byteLength !== source.containerSize) throw /* alloc */ new Error('Truncated PMTiles COG container');\r\n source.full = source.baseOffset === undefined ? data.buffer\r\n : data.slice(source.baseOffset, source.baseOffset + source.size);\r\n }\r\n const result = response.status === 200 ? source.full.slice(offset, offset + length) : data.buffer;\r\n if (result.byteLength !== length) throw /* alloc */ new Error('Truncated COG byte range');\r\n return result;\r\n}\r\n", "export const cogTags = [256, 257, 258, 259, 262, 277, 284, 317, 322, 323, 324, 325, 339, 33550, 33922, 34735];\r\n", "import { readCog } from './readCog.js';\r\n\r\nexport async function readCogTag(source, entries, i, tag, little) {\r\n const type = entries.getUint16(i * 12 + 2, little);\r\n const size = type === 3 ? 2 : type === 4 ? 4 : type === 12 ? 8 : 0;\r\n const length = entries.getUint32(i * 12 + 4, little);\r\n if (!size || !length || length > 1048576) throw /* alloc */ new Error(`Unsupported COG tag ${tag}`);\r\n const data = size * length <= 4 ? /* alloc */ new DataView(entries.buffer, i * 12 + 8, 4)\r\n : /* alloc */ new DataView(await readCog(source, entries.getUint32(i * 12 + 8, little), size * length));\r\n const values = /* alloc */ [];\r\n let j;\r\n for (j = 0; j < length; j++) values.push(type === 3 ? data.getUint16(j * size, little)\r\n : type === 4 ? data.getUint32(j * size, little) : data.getFloat64(j * size, little));\r\n return values;\r\n}\r\n", "import { readCog } from './readCog.js';\r\nimport { cogTags } from '../globals/cogTags.js';\r\nimport { readCogTag } from './readCogTag.js';\r\n\r\nexport async function readCogDirectory(source, offset) {\r\n const little = source.little;\r\n const count = /* alloc */ new DataView(await readCog(source, offset, 2)).getUint16(0, little);\r\n if (!count || count > 128) throw /* alloc */ new Error('Invalid COG directory size');\r\n const entries = /* alloc */ new DataView(await readCog(source, offset + 2, count * 12 + 4));\r\n const tags = /* alloc */ new Map();\r\n let i, tag;\r\n for (i = 0; i < count; i++) {\r\n tag = entries.getUint16(i * 12, little);\r\n if (tag === 42113) throw /* alloc */ new Error('COG nodata tags are not supported; export complete tiles');\r\n if (tag === 34264) throw /* alloc */ new Error('COG affine transformation matrices are not supported');\r\n if (!cogTags.includes(tag)) continue;\r\n if (tags.has(tag)) throw /* alloc */ new Error('Duplicate COG tag');\r\n tags.set(tag, await readCogTag(source, entries, i, tag, little));\r\n }\r\n return /* alloc */ { tags, next: entries.getUint32(count * 12, little) };\r\n}\r\n", "export function validCogDimensions(tags, width, height) {\r\n return !!width && !!height && width % 256 === 0 && height % 256 === 0 &&\r\n tags.get(322)?.[0] === 256 && tags.get(323)?.[0] === 256 &&\r\n (tags.get(259)?.[0] === 1 || tags.get(259)?.[0] === 8) &&\r\n (tags.get(284)?.[0] ?? 1) === 1 && (tags.get(317)?.[0] ?? 1) === 1;\r\n}\r\n", "export function validCogEncoding(tags, samples, bits, format, elevation, bytes, unsigned) {\r\n if (elevation) return tags.get(262)?.[0] === 1;\r\n return (samples === 3 || samples === 4) && bits?.length === samples && bytes && unsigned &&\r\n tags.get(262)?.[0] === 2;\r\n}\r\n", "import { validCogDimensions } from './validCogDimensions.js';\r\nimport { validCogEncoding } from './validCogEncoding.js';\r\n\r\nexport function getCogProfile(tags) {\r\n const width = tags.get(256)?.[0], height = tags.get(257)?.[0], samples = tags.get(277)?.[0] ?? 1;\r\n const bits = tags.get(258), format = tags.get(339) || /* alloc */ [1];\r\n let bytes = true, unsigned = true, floating = true, value;\r\n for (value of bits || /* alloc */ []) bytes &&= value === 8;\r\n for (value of format) { unsigned &&= value === 1; floating &&= value === 3; }\r\n const elevation = samples === 1 && bits?.length === 1 && bits[0] === 32 && floating;\r\n if (!validCogDimensions(tags, width, height) ||\r\n !validCogEncoding(tags, samples, bits, format, elevation, bytes, unsigned)) {\r\n throw /* alloc */ new Error('Unsupported COG profile: expected tiled 256px RGB(A) Uint8 or Float32, DEFLATE without predictor');\r\n }\r\n return /* alloc */ { width, height, samples, elevation };\r\n}\r\n", "export function hasCogProjection(keys) {\r\n let projected = false, area = false, i;\r\n if (keys) for (i = 4; i < keys.length; i += 4) {\r\n if (keys[i + 1] !== 0 || keys[i + 2] !== 1) continue;\r\n if (keys[i] === 3072 && keys[i + 3] === 3857) projected = true;\r\n if (keys[i] === 1025 && keys[i + 3] === 1) area = true;\r\n }\r\n return projected && area;\r\n}\r\n", "export function finiteCogValues(values) {\r\n let value;\r\n for (value of values || /* alloc */ []) if (!Number.isFinite(value)) return false;\r\n return true;\r\n}\r\n", "import { finiteCogValues } from './finiteCogValues.js';\r\n\r\nexport function validCogGeoArrays(keys, scale, tie) {\r\n return !!keys && keys[0] === 1 && keys.length === 4 + keys[3] * 4 &&\r\n !!scale && scale.length === 3 && finiteCogValues(scale) &&\r\n scale[0] > 0 && Math.abs(scale[0] - scale[1]) <= 1e-8 &&\r\n !!tie && tie.length === 6 && finiteCogValues(tie) && tie[0] === 0 && tie[1] === 0;\r\n}\r\n", "import { hasCogProjection } from './hasCogProjection.js';\r\nimport { validCogGeoArrays } from './validCogGeoArrays.js';\r\n\r\nexport function getCogBase(tags, width, height, elevation) {\r\n const keys = tags.get(34735), scale = tags.get(33550), tie = tags.get(33922);\r\n if (!validCogGeoArrays(keys, scale, tie) || !hasCogProjection(keys)) {\r\n throw /* alloc */ new Error('COG must use north-up EPSG:3857 PixelIsArea georeferencing');\r\n }\r\n return /* alloc */ { width, height, resolution: scale[0], left: tie[3], top: tie[4], elevation };\r\n}\r\n", "export function validCogGrid(source, base, profile, zoom, x, y, resolution) {\r\n return zoom >= 0 && zoom <= 24 &&\r\n Math.abs(20037508.342789244 * 2 / (256 * 2 ** zoom) - resolution) <= resolution * 1e-7 &&\r\n (!profile.elevation || Number.isInteger(x) && Number.isInteger(y)) &&\r\n Math.abs(base.width / profile.width - base.height / profile.height) <= 1e-7 &&\r\n profile.elevation === base.elevation &&\r\n x >= 0 && y >= 0 && x + profile.width / 256 <= 2 ** zoom && y + profile.height / 256 <= 2 ** zoom &&\r\n !source.levels.has(zoom) && !(base.elevation && source.levels.size);\r\n}\r\n", "export function validateCogOffsets(source, level) {\r\n if (level.offsets?.length !== level.columns * level.rows || level.lengths?.length !== level.offsets.length) {\r\n throw /* alloc */ new Error('Invalid COG tile offsets or lengths');\r\n }\r\n let i;\r\n for (i = 0; i < level.offsets.length; i++) {\r\n if (!level.offsets[i] || !level.lengths[i] || level.lengths[i] > 1048576 ||\r\n level.offsets[i] + level.lengths[i] > source.size) throw /* alloc */ new Error('Invalid COG tile offsets or lengths');\r\n }\r\n}\r\n", "import { getCogProfile } from './getCogProfile.js';\r\nimport { getCogBase } from './getCogBase.js';\r\nimport { validCogGrid } from './validCogGrid.js';\r\nimport { validateCogOffsets } from './validateCogOffsets.js';\r\n\r\nexport function readCogLevel(source, directory, state) {\r\n const tags = directory.tags, profile = getCogProfile(tags);\r\n if (!state.base) state.base = getCogBase(tags, profile.width, profile.height, profile.elevation);\r\n const base = state.base, resolution = base.resolution * base.width / profile.width;\r\n const zoom = Math.round(Math.log2(20037508.342789244 * 2 / (256 * resolution)));\r\n const span = 20037508.342789244 * 2 / 2 ** zoom;\r\n let x = (base.left + 20037508.342789244) / span;\r\n let y = (20037508.342789244 - base.top) / span;\r\n if (Math.abs(x - Math.round(x)) < 1e-6) x = Math.round(x);\r\n if (Math.abs(y - Math.round(y)) < 1e-6) y = Math.round(y);\r\n if (!validCogGrid(source, base, profile, zoom, x, y, resolution)) {\r\n throw /* alloc */ new Error('COG levels must align with the Web Mercator XYZ tile grid');\r\n }\r\n const level = /* alloc */ {\r\n x, y, columns: profile.width / 256, rows: profile.height / 256, samples: profile.samples,\r\n elevation: profile.elevation, compression: tags.get(259)[0], offsets: tags.get(324), lengths: tags.get(325),\r\n };\r\n validateCogOffsets(source, level);\r\n source.levels.set(zoom, level);\r\n state.minZoom = Math.min(state.minZoom, zoom);\r\n state.maxZoom = Math.max(state.maxZoom, zoom);\r\n}\r\n", "import { readCogDirectory } from './readCogDirectory.js';\r\nimport { readCogLevel } from './readCogLevel.js';\r\n\r\nexport async function readCogDirectories(source, offset) {\r\n const state = /* alloc */ { base: null, minZoom: Infinity, maxZoom: -Infinity };\r\n const seen = /* alloc */ new Set();\r\n let directory;\r\n while (offset) {\r\n if (seen.has(offset) || seen.size >= 24) throw /* alloc */ new Error('Cyclic or excessive COG directories');\r\n seen.add(offset);\r\n directory = await readCogDirectory(source, offset);\r\n readCogLevel(source, directory, state);\r\n offset = directory.next;\r\n }\r\n if (!state.base) throw /* alloc */ new Error('COG has no image directory');\r\n if (source.levels.size !== state.maxZoom - state.minZoom + 1) {\r\n throw /* alloc */ new Error('COG overview zooms must be contiguous');\r\n }\r\n return /* alloc */ { base: state.base, minZoom: state.minZoom, maxZoom: state.maxZoom };\r\n}\r\n", "export async function decodeCogTile(data, length, compression) {\r\n if (compression === 1) {\r\n if (data.byteLength !== length) throw /* alloc */ new Error('Invalid uncompressed COG tile size');\r\n return data;\r\n }\r\n const stream = /* alloc */ new Blob(/* alloc */ [data]).stream()\r\n .pipeThrough(/* alloc */ new DecompressionStream('deflate'));\r\n const reader = stream.getReader(), result = /* alloc */ new Uint8Array(length);\r\n let offset = 0, chunk;\r\n try {\r\n while (!(chunk = await reader.read()).done) {\r\n if (offset + chunk.value.length > length) {\r\n await reader.cancel();\r\n throw /* alloc */ new Error('Oversized decoded COG tile');\r\n }\r\n result.set(chunk.value, offset);\r\n offset += chunk.value.length;\r\n }\r\n } finally {\r\n reader.releaseLock();\r\n }\r\n if (offset !== length) throw /* alloc */ new Error('Truncated decoded COG tile');\r\n return result.buffer;\r\n}\r\n", "import { readCog } from './readCog.js';\r\nimport { decodeCogTile } from './decodeCogTile.js';\r\n\r\nexport async function readCogBlock(source, level, x, y, signal) {\r\n const index = y * level.columns + x;\r\n return decodeCogTile(await readCog(source, level.offsets[index], level.lengths[index], signal),\r\n 256 * 256 * (level.elevation ? 4 : level.samples), level.compression);\r\n}\r\n", "import { readCogBlock } from './readCogBlock.js';\r\n\r\nexport async function getElevationTile(source, level, x, y, signal) {\r\n const data = await readCogBlock(source, level, x - level.x, y - level.y, signal);\r\n signal?.throwIfAborted();\r\n const view = /* alloc */ new DataView(data), heights = /* alloc */ new Float32Array(256 * 256);\r\n let i, height;\r\n for (i = 0; i < heights.length; i++) {\r\n height = view.getFloat32(i * 4, source.little);\r\n if (!Number.isFinite(height) || height < -12000 || height > 10000) {\r\n throw /* alloc */ new Error('Invalid or missing COG elevation sample');\r\n }\r\n heights[i] = height;\r\n }\r\n return /* alloc */ { data: heights.buffer };\r\n}\r\n", "import { readCogBlock } from './readCogBlock.js';\r\n\r\nexport async function getColorTile(source, level, x, y, signal) {\r\n const canvas = /* alloc */ new OffscreenCanvas(256, 256), context = canvas.getContext('2d');\r\n if (!context) throw /* alloc */ new Error('Unable to create COG tile canvas');\r\n const left = (x - level.x) * 256, top = (y - level.y) * 256;\r\n let bx, by, pixels, rgba, i, j, bitmap;\r\n for (by = Math.max(0, Math.floor(top / 256)); by < Math.min(level.rows, Math.ceil(top / 256 + 1)); by++) {\r\n for (bx = Math.max(0, Math.floor(left / 256)); bx < Math.min(level.columns, Math.ceil(left / 256 + 1)); bx++) {\r\n pixels = /* alloc */ new Uint8Array(await readCogBlock(source, level, bx, by, signal));\r\n signal?.throwIfAborted();\r\n rgba = /* alloc */ new Uint8ClampedArray(256 * 256 * 4);\r\n for (i = 0, j = 0; i < pixels.length; i += level.samples, j += 4) {\r\n rgba[j] = pixels[i]; rgba[j + 1] = pixels[i + 1]; rgba[j + 2] = pixels[i + 2];\r\n rgba[j + 3] = level.samples === 4 ? pixels[i + 3] : 255;\r\n }\r\n bitmap = await createImageBitmap(/* alloc */ new ImageData(rgba, 256, 256));\r\n context.drawImage(bitmap, bx * 256 - left, by * 256 - top);\r\n bitmap.close();\r\n }\r\n }\r\n const image = canvas.transferToImageBitmap();\r\n if (signal?.aborted) { image.close(); signal.throwIfAborted(); }\r\n return /* alloc */ { image };\r\n}\r\n", "export function validCogTileCoordinates(z, x, y) {\r\n return Number.isSafeInteger(z) && Number.isSafeInteger(x) && Number.isSafeInteger(y) &&\r\n z >= 0 && z <= 24 && x >= 0 && y >= 0 && x < 2 ** z && y < 2 ** z;\r\n}\r\n", "import { getElevationTile } from './getElevationTile.js';\r\nimport { getColorTile } from './getColorTile.js';\r\nimport { validCogTileCoordinates } from './validCogTileCoordinates.js';\r\n\r\nexport async function getCogTile(source, z, x, y, signal) {\r\n signal?.throwIfAborted();\r\n if (!validCogTileCoordinates(z, x, y)) throw /* alloc */ new Error('Invalid COG tile coordinates');\r\n const level = source.levels.get(z);\r\n if (!level || x + 1 <= level.x || y + 1 <= level.y || x >= level.x + level.columns || y >= level.y + level.rows) return;\r\n if (level.elevation) return getElevationTile(source, level, x, y, signal);\r\n return getColorTile(source, level, x, y, signal);\r\n}\r\n", "export function getCogHeader(source) {\r\n return source.header;\r\n}\r\n", "export function validateCogContainer(container, header) {\r\n if (header.tileType !== 0 || header.tileCompression !== 1 ||\r\n !Number.isSafeInteger(header.jsonMetadataOffset) || !Number.isSafeInteger(header.jsonMetadataLength) ||\r\n header.jsonMetadataLength <= 0 || header.jsonMetadataLength > 1048576 ||\r\n !Number.isSafeInteger(header.tileDataOffset) || !Number.isSafeInteger(header.tileDataLength) ||\r\n header.tileDataOffset < 127 || header.tileDataOffset + header.tileDataLength > container.size) {\r\n throw /* alloc */ new Error('Invalid PMTiles COG asset container');\r\n }\r\n}\r\n", "import { decompress } from '../archives/decompress.js';\r\nimport { readCog } from './readCog.js';\r\n\r\nexport async function getCogAssetEntry(container, header, asset) {\r\n const metadata = JSON.parse(/* alloc */ new TextDecoder().decode(await decompress(\r\n await readCog(container, header.jsonMetadataOffset, header.jsonMetadataLength), header.internalCompression)));\r\n const assets = metadata.cog_assets || /* alloc */ {};\r\n const entry = Object.hasOwn(assets, asset) ? metadata.cog_assets[asset] : null;\r\n if (metadata.format !== 'cog-assets-v1' || !entry || !Number.isSafeInteger(entry.offset) ||\r\n !Number.isSafeInteger(entry.length) || entry.offset < 0 || entry.length < 8 ||\r\n entry.offset + entry.length > header.tileDataLength) {\r\n throw /* alloc */ new Error(`Invalid or missing PMTiles COG asset: ${asset}`);\r\n }\r\n return entry;\r\n}\r\n", "import { decodeHeader } from '../archives/decodeHeader.js';\r\nimport { readCog } from './readCog.js';\r\nimport { validateCogContainer } from './validateCogContainer.js';\r\nimport { getCogAssetEntry } from './getCogAssetEntry.js';\r\n\r\nexport async function openCogAsset(url, asset) {\r\n const container = /* alloc */ { url };\r\n const header = decodeHeader(await readCog(container, 0, 127));\r\n validateCogContainer(container, header);\r\n const entry = await getCogAssetEntry(container, header, asset);\r\n const baseOffset = header.tileDataOffset + entry.offset;\r\n return /* alloc */ { url, baseOffset, size: entry.length, containerSize: container.size,\r\n etag: container.etag, full: container.full?.slice(baseOffset, baseOffset + entry.length) };\r\n}\r\n", "import { readCog } from './readCog.js';\r\nimport { readCogDirectories } from './readCogDirectories.js';\r\nimport { getCogTile } from './getCogTile.js';\r\nimport { getCogHeader } from './getCogHeader.js';\r\nimport { openCogAsset } from './openCogAsset.js';\r\n\r\n/** EPSG:3857 COGs, standalone or named assets in a PMTiles container. */\r\nexport async function openCog(url, asset) {\r\n const source = asset === undefined ? /* alloc */ { url } : await openCogAsset(url, asset);\r\n source.levels = /* alloc */ new Map();\r\n const header = /* alloc */ new DataView(await readCog(source, 0, 8));\r\n const order = header.getUint16(0);\r\n if (order !== 0x4949 && order !== 0x4d4d) throw /* alloc */ new Error('Invalid TIFF byte order');\r\n source.little = order === 0x4949;\r\n if (header.getUint16(2, source.little) !== 42) throw /* alloc */ new Error('Expected classic TIFF (BigTIFF is not supported)');\r\n const { base, minZoom, maxZoom } = await readCogDirectories(source, header.getUint32(4, source.little));\r\n const half = 20037508.342789244;\r\n const left = base.left + base.resolution / 2, right = base.left + (base.width - 0.5) * base.resolution;\r\n const top = base.top - base.resolution / 2, bottom = base.top - (base.height - 0.5) * base.resolution;\r\n source.header = /* alloc */ {\r\n minZoom, maxZoom, tileType: base.elevation ? 0 : 2,\r\n minLon: left / half * 180, maxLon: right / half * 180,\r\n minLat: Math.atan(Math.sinh(bottom / half * Math.PI)) * 180 / Math.PI,\r\n maxLat: Math.atan(Math.sinh(top / half * Math.PI)) * 180 / Math.PI,\r\n };\r\n return /* alloc */ {\r\n getHeader: getCogHeader.bind(null, source),\r\n getZxy: getCogTile.bind(null, source),\r\n };\r\n}\r\n", "import { initRaster } from '../raster/initRaster.js';\r\nimport { openCog } from './openCog.js';\r\n\r\nexport function initCog(layer, options) {\r\n initRaster(layer, /* alloc */ { ariaLabel: 'COG raster', ...options,\r\n archive: options.archive || openCog(/* alloc */ new URL(options.url, document.baseURI).href, options.asset) });\r\n}\r\n", "import { initializeGeoJSON } from '../sources/initializeGeoJSON.js';\nimport { initRaster } from '../raster/initRaster.js';\nimport { initTerrain } from '../terrain/initTerrain.js';\nimport { initTraffic } from '../traffic/initTraffic.js';\nimport { initCog } from '../cog/initCog.js';\n\nexport function initializerFor(type) {\n switch (type) {\n case 'geojson': return initializeGeoJSON;\n case 'pmtiles': return initRaster;\n case 'cog': return initCog;\n case 'terrain': return initTerrain;\n case 'traffic': return initTraffic;\n default: return null;\n }\n}\n", "import { pendingInitializations } from '../globals/pendingInitializations.js';\n\n\nimport { initializerFor } from './initializerFor.js';\n\nexport function resolveNextInitialization() {\n const task = pendingInitializations.shift();\n task.initialize = initializerFor(task.type);\n if (!task.initialize) {\n task.error = /* alloc */ new Error(`Unknown layer type: ${task.type}`);\n }\n return task;\n}\n", "import { kindByLayer } from '../weakmaps/kindByLayer.js';\nimport { readyByLayer } from '../weakmaps/readyByLayer.js';\n\nimport { reportError } from './reportLayerError.js';\n\n\nexport function initializeLayer(task) {\n const { layer, ready } = task;\n if (task.error) {\n reportError(layer, task.error);\n return Promise.reject(task.error);\n }\n try {\n const map = layer._map;\n map?.removeLayer(layer);\n kindByLayer.delete(layer);\n task.initialize(layer, task.settings);\n map?.addLayer(layer);\n return readyByLayer.get(layer) === ready ? layer : readyByLayer.get(layer);\n } catch (error) {\n layer.fire('error', /* alloc */ { error });\n throw error;\n }\n}\n", "import { kindByLayer } from '../weakmaps/kindByLayer.js';\n\nimport { L } from '../globals/L.js';\nimport { removeLayer as sharedRemoveLayer } from '../globals/removeLayer.js';\n\r\nimport { removeSceneLayer } from '../scene/removeSceneLayer.js';\r\n\r\n\r\n\r\nexport function removeLayer(layer) {\r\n const id = L.Util.stamp(layer);\r\n if (!this._layers[id]) return this;\r\n\r\n if (!kindByLayer.get(layer)) return sharedRemoveLayer.value.call(this, layer);\r\n if (this._loaded) removeSceneLayer(layer, this);\r\n delete this._layers[id];\r\n if (this._loaded) {\r\n this.fire('layerremove', /* alloc */ { layer });\r\n layer.fire('remove');\r\n }\r\n layer._map = layer._mapToAdd = null;\r\n return this;\r\n}\r\n", "import { kindByLayer } from '../weakmaps/kindByLayer.js';\n\n\r\nimport { onRemove3DLayer } from './onRemove3DLayer.js';\r\nimport { onPMTileRemove } from '../raster/onPMTileRemove.js';\r\nimport { onTerrainRemove } from '../terrain/onTerrainRemove.js';\r\nimport { removeTimeLayer } from '../sunlight/removeTimeLayer.js';\r\n\r\nexport function removeSceneLayer(layer, map) {\r\n switch (kindByLayer.get(layer)) {\r\n case '3d': return onRemove3DLayer(layer, map);\r\n case 'raster': return onPMTileRemove(layer, map);\r\n case 'terrain': return onTerrainRemove(layer, map);\r\n case 'time': return removeTimeLayer.call(layer, map);\r\n }\r\n}\r\n", "import { mapGetPitch } from './mapGetPitch.js';\r\n\r\nexport function getPitch() {\r\n return mapGetPitch(this);\r\n}\r\n", "import { mapGetBearing } from './mapGetBearing.js';\r\n\r\nexport function getBearing() {\r\n return mapGetBearing(this);\r\n}\r\n", "import { refreshNativeLayerContract } from '../native/refreshNativeLayerContract.js';\r\n\r\nexport function markerSetRotation(marker, rotation) {\r\n if (!Number.isFinite(rotation)) throw /* alloc */ new TypeError('Marker rotation must be finite');\r\n marker.options.rotation = rotation;\r\n marker.update();\r\n refreshNativeLayerContract(marker);\r\n return marker;\r\n}\r\n", "import { markerSetRotation } from './markerSetRotation.js';\r\n\r\nexport function setRotation(rotation) {\r\n return markerSetRotation(this, rotation);\r\n}\r\n", "import { sceneLayers } from '../weakmaps/sceneLayers.js';\n\nimport { layerCallInitHooks as sharedLayerCallInitHooks } from '../globals/layerCallInitHooks.js';\n\r\n\r\nimport { initializeNativeLayer } from './initializeNativeLayer.js';\r\n\r\nexport function layerCallInitHooks() {\r\n if (!sceneLayers.has(this)) {\r\n sceneLayers.add(this);\r\n }\r\n const initialized = this._initHooksCalled;\r\n sharedLayerCallInitHooks.value.call(this);\r\n if (!initialized) initializeNativeLayer.call(this);\r\n}\r\n"],
5
+ "mappings": "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",
6
+ "names": ["start", "step", "start", "local", "loading", "loading", "shadowBounds", "shadowBounds", "parts", "current", "elevationWGSL", "elevationWGSL", "pipelineLayout", "ring", "start", "ring", "start", "ring", "area", "ring", "ring", "ring", "polygon", "polygon", "polygon", "polygon", "triangle", "ring", "triangle", "polygon", "ring", "start", "start", "collectVisibleMesh", "collectVisibleMesh", "v", "u", "screen", "screen", "y", "inside", "cameraControls", "screen", "screen", "speed", "screen", "area", "addTriangle", "addTriangle", "addTriangle", "ring", "addTriangle", "ring", "addTriangle", "ring", "ring", "ring", "polygon", "ring", "area", "polygon", "start", "area", "tileId", "area", "area", "area", "area", "area", "tooltip", "area", "area", "collectMeshes", "collectMeshes", "textureFor", "textureFor", "loading", "area", "start", "start", "update", "reportError", "area", "reportError", "start", "ring", "triangle", "start", "ring", "polygon", "ring", "hit", "updateSky", "render", "updateSky", "render", "updateSky", "render", "updateSky", "updateSky", "render", "parts", "parts", "triangle", "parts", "ring", "triangle", "parts", "parts", "start", "start", "rgb", "line", "local", "local", "local", "hit", "collectVisibleMesh", "px", "pz", "local", "triangle", "local", "local", "speed", "initialize", "onAdd", "initialize", "onAdd", "area", "start", "area", "removeLayer", "layerCallInitHooks", "layerCallInitHooks", "removeLayer"]
7
+ }