leaflet-city-mapper 0.0.8 → 0.1.0

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 (1243) hide show
  1. package/README.md +6 -46
  2. package/dist/README.md +18 -0
  3. package/dist/leaflet-city-mapper-src.js +279 -110
  4. package/dist/leaflet-city-mapper-src.js.map +4 -4
  5. package/dist/leaflet-city-mapper-worker-src.js.map +2 -2
  6. package/dist/leaflet-city-mapper-worker.js.map +2 -2
  7. package/dist/leaflet-city-mapper.js +5 -5
  8. package/dist/leaflet-city-mapper.js.map +4 -4
  9. package/libs/README.md +18 -0
  10. package/libs/leaflet.js +1 -1
  11. package/package.json +5 -3
  12. package/src/README.md +148 -0
  13. package/src/animations/README.md +30 -0
  14. package/src/animations/cancelCameraAnimation.js +11 -9
  15. package/src/animations/cancelGridFade.js +5 -3
  16. package/src/animations/endZoom.js +0 -5
  17. package/src/animations/mapAnimateCamera.js +13 -3
  18. package/src/animations/mapStopPitchBearingAnimation.js +9 -2
  19. package/src/animations/onZoomAnim.js +5 -4
  20. package/src/animations/renderPendingZoomAnimation.js +1 -4
  21. package/src/animations/runCameraAnimations.js +7 -4
  22. package/src/animations/runGridFades.js +1 -4
  23. package/src/animations/runMarkerPanFrame.js +1 -1
  24. package/src/animations/scheduleCameraAnimation.js +11 -9
  25. package/src/animations/scheduleGridFade.js +5 -4
  26. package/src/animations/scheduleMarkerPan.js +10 -6
  27. package/src/animations/startZoom.js +0 -3
  28. package/src/animations/synchronizeZoomView.js +6 -1
  29. package/src/animations/updateZoomCamera.js +9 -5
  30. package/src/archives/README.md +28 -0
  31. package/src/archives/decodeDirectory.js +13 -2
  32. package/src/archives/decodeHeader.js +9 -2
  33. package/src/archives/decompress.js +10 -0
  34. package/src/archives/findDirectoryEntry.js +8 -0
  35. package/src/archives/findTile.js +14 -0
  36. package/src/archives/getDirectoryEntries.js +13 -2
  37. package/src/archives/getHeader.js +7 -2
  38. package/src/archives/getTileData.js +13 -0
  39. package/src/archives/getZxy.js +11 -3
  40. package/src/archives/loadDirectory.js +10 -0
  41. package/src/archives/loadSource.js +12 -3
  42. package/src/archives/readArchiveRange.js +18 -4
  43. package/src/archives/readVarint.js +11 -2
  44. package/src/archives/tileId.js +11 -2
  45. package/src/astronomy/README.md +25 -0
  46. package/src/astronomy/horizontalPosition.js +11 -0
  47. package/src/astronomy/moonPosition.js +9 -2
  48. package/src/astronomy/solarPosition.js +9 -2
  49. package/src/astronomy/solarTime.js +11 -1
  50. package/src/camera/README.md +30 -0
  51. package/src/camera/cameraMapReady.js +4 -6
  52. package/src/camera/cleanupCameraMap.js +6 -8
  53. package/src/camera/constrainCameraToBounds.js +1 -0
  54. package/src/camera/createSceneCamera.js +5 -1
  55. package/src/camera/fitCameraBounds.js +9 -1
  56. package/src/camera/getBearing.js +5 -0
  57. package/src/camera/getPitch.js +5 -0
  58. package/src/camera/initializeCameraMap.js +1 -3
  59. package/src/camera/mapCamera.js +0 -2
  60. package/src/camera/mapContainerPointToLayerPoint.js +7 -2
  61. package/src/camera/mapGetBearing.js +7 -2
  62. package/src/camera/mapGetBounds.js +5 -2
  63. package/src/camera/mapGetBoundsCenterZoom.js +13 -6
  64. package/src/camera/mapGetBoundsZoom.js +9 -2
  65. package/src/camera/mapGetCenterLayerPoint.js +5 -1
  66. package/src/camera/mapGetPitch.js +7 -2
  67. package/src/camera/mapLayerPointToContainerPoint.js +7 -1
  68. package/src/camera/mapLimitCenter.js +9 -2
  69. package/src/camera/mapLimitOffset.js +13 -7
  70. package/src/camera/mapPanBy.js +12 -5
  71. package/src/camera/mapPanInside.js +8 -2
  72. package/src/camera/mapResetNorth.js +8 -0
  73. package/src/camera/mapResetNorthPitch.js +8 -0
  74. package/src/camera/mapSetBearing.js +10 -0
  75. package/src/camera/mapSetPitch.js +10 -0
  76. package/src/camera/mapSetPitchAndBearing.js +12 -3
  77. package/src/camera/mapSetZoomAround.js +9 -1
  78. package/src/camera/mapTryAnimatedPan.js +8 -1
  79. package/src/camera/mapUpdateCameraOverlays.js +6 -0
  80. package/src/camera/setBearing.js +8 -0
  81. package/src/camera/setPitch.js +8 -0
  82. package/src/camera/updateMapCamera.js +6 -4
  83. package/src/camera/updateSceneCamera.js +7 -1
  84. package/src/camera/updateSky.js +1 -3
  85. package/src/cog/README.md +29 -0
  86. package/src/cog/decodeCogTile.js +13 -0
  87. package/src/cog/finiteCogValues.js +7 -0
  88. package/src/cog/getCogAssetEntry.js +11 -0
  89. package/src/cog/getCogBase.js +12 -0
  90. package/src/cog/getCogHeader.js +7 -0
  91. package/src/cog/getCogProfile.js +9 -0
  92. package/src/cog/getCogTile.js +13 -0
  93. package/src/cog/getColorTile.js +13 -0
  94. package/src/cog/getElevationTile.js +13 -0
  95. package/src/cog/hasCogProjection.js +7 -0
  96. package/src/cog/initCog.js +6 -0
  97. package/src/cog/invalidCogFullResponse.js +7 -0
  98. package/src/cog/openCog.js +11 -1
  99. package/src/cog/openCogAsset.js +8 -0
  100. package/src/cog/readCog.js +14 -0
  101. package/src/cog/readCogBlock.js +11 -0
  102. package/src/cog/readCogBody.js +10 -0
  103. package/src/cog/readCogDirectories.js +12 -0
  104. package/src/cog/readCogDirectory.js +13 -0
  105. package/src/cog/readCogLevel.js +9 -0
  106. package/src/cog/readCogTag.js +13 -0
  107. package/src/cog/validCogDimensions.js +9 -0
  108. package/src/cog/validCogEncoding.js +13 -0
  109. package/src/cog/validCogGeoArrays.js +9 -0
  110. package/src/cog/validCogGrid.js +13 -0
  111. package/src/cog/validCogTileCoordinates.js +9 -0
  112. package/src/cog/validateCogContainer.js +8 -0
  113. package/src/cog/validateCogContentRange.js +10 -0
  114. package/src/cog/validateCogOffsets.js +9 -0
  115. package/src/cog/validateCogRange.js +9 -0
  116. package/src/cog/validateCogResponse.js +11 -0
  117. package/src/collision/README.md +28 -0
  118. package/src/collision/advanceFeature.js +13 -0
  119. package/src/collision/boxNormal.js +29 -0
  120. package/src/collision/cachedCollider.js +18 -0
  121. package/src/collision/collectIntersections.js +28 -3
  122. package/src/collision/collectMeshes.js +6 -0
  123. package/src/collision/collideTrip.js +56 -0
  124. package/src/collision/collider.js +28 -18
  125. package/src/collision/countCrossings.js +35 -15
  126. package/src/collision/enclosesOrigin.js +13 -0
  127. package/src/collision/flipsNormal.js +15 -0
  128. package/src/collision/hiddenLightHit.js +11 -0
  129. package/src/collision/horizontalRay.js +13 -1
  130. package/src/collision/indexTriangle.js +7 -0
  131. package/src/collision/insideMesh.js +16 -2
  132. package/src/collision/insideWalker.js +7 -1
  133. package/src/collision/intersectMeshes.js +9 -1
  134. package/src/collision/localRay.js +10 -0
  135. package/src/collision/mergeHits.js +8 -0
  136. package/src/collision/missesBox.js +13 -0
  137. package/src/collision/rayBounds.js +9 -0
  138. package/src/collision/readTriangle.js +9 -0
  139. package/src/collision/slabDistance.js +14 -0
  140. package/src/collision/slabMiss.js +14 -0
  141. package/src/collision/sortCrossings.js +17 -0
  142. package/src/collision/sortHits.js +9 -1
  143. package/src/collision/trafficBounds.js +24 -0
  144. package/src/collision/trafficCollision.js +24 -49
  145. package/src/collision/trafficRay.js +21 -0
  146. package/src/collision/transformTriangle.js +9 -0
  147. package/src/collision/transformVertices.js +18 -0
  148. package/src/collision/triangleDistance.js +14 -1
  149. package/src/collision/vertexCount.js +8 -0
  150. package/src/collision/worldHit.js +12 -0
  151. package/src/colors/README.md +25 -0
  152. package/src/colors/formatRGB.js +7 -0
  153. package/src/colors/hslChannel.js +10 -0
  154. package/src/colors/mixColor.js +10 -0
  155. package/src/colors/parseColor.js +4 -1
  156. package/src/colors/toSRGB.js +7 -0
  157. package/src/controls/README.md +26 -0
  158. package/src/controls/acceptPitchDrag.js +7 -0
  159. package/src/controls/acceptRotateDrag.js +7 -0
  160. package/src/controls/addCameraHandler.js +7 -0
  161. package/src/controls/adjustCameraDrag.js +6 -8
  162. package/src/controls/cameraControls.js +5 -4
  163. package/src/controls/cameraDragClick.js +5 -1
  164. package/src/controls/cameraDragContextMenu.js +7 -3
  165. package/src/controls/cameraDragDown.js +5 -2
  166. package/src/controls/cameraDragEnd.js +8 -4
  167. package/src/controls/cameraDragMove.js +12 -8
  168. package/src/controls/changeCameraTouch.js +6 -8
  169. package/src/controls/cleanupCameraTouch.js +1 -4
  170. package/src/controls/compassAddHooks.js +1 -0
  171. package/src/controls/compassOrientation.js +7 -1
  172. package/src/controls/compassRemoveHooks.js +1 -0
  173. package/src/controls/containerResizeAddHooks.js +1 -0
  174. package/src/controls/containerResizeRemoveHooks.js +1 -0
  175. package/src/controls/dragCamera.js +11 -2
  176. package/src/controls/endAllCameraDrags.js +1 -2
  177. package/src/controls/endAllCameraTouches.js +1 -2
  178. package/src/controls/endCameraTouch.js +6 -0
  179. package/src/controls/endCameraTouchEvent.js +5 -2
  180. package/src/controls/failCompassPermission.js +6 -0
  181. package/src/controls/finishCameraDrag.js +6 -0
  182. package/src/controls/finishCompassPermission.js +7 -0
  183. package/src/controls/isEditableTarget.js +7 -0
  184. package/src/controls/loadCameraControls.js +9 -0
  185. package/src/controls/moveCameraTouch.js +9 -6
  186. package/src/controls/notifyCameraTouchChange.js +1 -0
  187. package/src/controls/pitchDragAddHooks.js +1 -1
  188. package/src/controls/pitchDragRemoveHooks.js +1 -0
  189. package/src/controls/refreshRotateControl.js +2 -0
  190. package/src/controls/refreshRotateFocus.js +3 -2
  191. package/src/controls/removeCameraDrag.js +15 -12
  192. package/src/controls/resizeMap.js +5 -0
  193. package/src/controls/rotateButtonClick.js +6 -1
  194. package/src/controls/rotateButtonKeydown.js +10 -4
  195. package/src/controls/rotateControl.js +9 -1
  196. package/src/controls/rotateOnAdd.js +7 -1
  197. package/src/controls/rotateOnRemove.js +5 -0
  198. package/src/controls/shiftRotateAddHooks.js +1 -1
  199. package/src/controls/shiftRotateRemoveHooks.js +1 -0
  200. package/src/controls/shiftRotateWheel.js +9 -4
  201. package/src/controls/startCameraTouch.js +5 -2
  202. package/src/core/README.md +28 -0
  203. package/src/core/adjustCameraMarkerPan.js +7 -2
  204. package/src/core/cameraCircleBounds.js +5 -1
  205. package/src/core/cameraMarkerDrag.js +1 -2
  206. package/src/core/cameraMarkerOnDrag.js +7 -4
  207. package/src/core/closestCameraLayerPoint.js +7 -1
  208. package/src/core/constructLayer.js +7 -0
  209. package/src/core/extendLeafletClass.js +7 -0
  210. package/src/core/extendTerrainPixelBounds.js +10 -0
  211. package/src/core/fireRasterLoad.js +1 -1
  212. package/src/core/gridlayerGetEvents.js +5 -2
  213. package/src/core/gridlayerGetTiledPixelBounds.js +7 -1
  214. package/src/core/initializeGridContainer.js +1 -1
  215. package/src/core/initializeNativeLayer.js +1 -4
  216. package/src/core/layerAddInitHook.js +5 -0
  217. package/src/core/layerCallInitHooks.js +1 -2
  218. package/src/core/layerMergeOptions.js +7 -0
  219. package/src/core/markerGetEvents.js +5 -2
  220. package/src/core/markerInitInteraction.js +8 -5
  221. package/src/core/markerSetIcon.js +11 -6
  222. package/src/core/markerSetPos.js +5 -2
  223. package/src/core/markerSetRotation.js +10 -0
  224. package/src/core/markerUpdateZIndex.js +6 -4
  225. package/src/core/popupAdjustPan.js +5 -2
  226. package/src/core/popupGetEvents.js +5 -1
  227. package/src/core/popupUpdatePosition.js +1 -2
  228. package/src/core/projectNativePath.js +7 -0
  229. package/src/core/redrawPath.js +5 -0
  230. package/src/core/removeLayer.js +10 -7
  231. package/src/core/setRotation.js +7 -0
  232. package/src/core/tooltipGetEvents.js +5 -1
  233. package/src/core/tooltipSetPosition.js +5 -2
  234. package/src/core/updateGridOpacity.js +2 -1
  235. package/src/core/whenReady.js +9 -6
  236. package/src/geometry/README.md +29 -0
  237. package/src/geometry/addBridges.js +8 -6
  238. package/src/geometry/addGeneratedTriangle.js +8 -4
  239. package/src/geometry/appendAreaTriangle.js +15 -0
  240. package/src/geometry/appendNativeTriangle.js +14 -0
  241. package/src/geometry/appendRouteDash.js +18 -0
  242. package/src/geometry/appendRouteSegment.js +13 -0
  243. package/src/geometry/assembleAreaGeometry.js +7 -0
  244. package/src/geometry/boundsQuad.js +8 -0
  245. package/src/geometry/box.js +10 -0
  246. package/src/geometry/bridgeEdge.js +7 -0
  247. package/src/geometry/bridgeElevation.js +8 -1
  248. package/src/geometry/bridgeFaces.js +7 -0
  249. package/src/geometry/bridgePaths.js +8 -0
  250. package/src/geometry/bridgePolygon.js +6 -0
  251. package/src/geometry/bridgeSides.js +7 -0
  252. package/src/geometry/buildGeometryParts.js +7 -0
  253. package/src/geometry/buildProjectedPoint.js +11 -0
  254. package/src/geometry/buildProjectedPolygon.js +9 -0
  255. package/src/geometry/circleAt.js +15 -2
  256. package/src/geometry/circleGeometry.js +6 -0
  257. package/src/geometry/clipLine.js +8 -1
  258. package/src/geometry/clipSegment.js +9 -0
  259. package/src/geometry/computeBounds.js +5 -2
  260. package/src/geometry/conformModelToTerrain.js +6 -3
  261. package/src/geometry/createLampRing.js +8 -0
  262. package/src/geometry/createModelGeometry.js +11 -1
  263. package/src/geometry/createRasterQuadGeometry.js +7 -1
  264. package/src/geometry/createTreeRing.js +8 -1
  265. package/src/geometry/crossVector.js +8 -0
  266. package/src/geometry/dashValues.js +9 -0
  267. package/src/geometry/dashedSegment.js +12 -0
  268. package/src/geometry/disk.js +9 -0
  269. package/src/geometry/diskAt.js +14 -2
  270. package/src/geometry/emitter.js +10 -0
  271. package/src/geometry/fillNativePolygon.js +8 -0
  272. package/src/geometry/generateTreeGeometry.js +11 -5
  273. package/src/geometry/indexBridge.js +8 -2
  274. package/src/geometry/instanceAreaGeometry.js +7 -1
  275. package/src/geometry/interpolateRoute.js +10 -2
  276. package/src/geometry/lampPostGeometry.js +9 -2
  277. package/src/geometry/lightGeometry.js +9 -2
  278. package/src/geometry/line.js +7 -0
  279. package/src/geometry/lineJoin.js +9 -0
  280. package/src/geometry/markerImageBounds.js +9 -0
  281. package/src/geometry/markerQuadCorners.js +9 -3
  282. package/src/geometry/meshShadowBounds.js +9 -0
  283. package/src/geometry/nativeGeometry.js +9 -1
  284. package/src/geometry/offsetBelowGround.js +7 -0
  285. package/src/geometry/polygon.js +7 -0
  286. package/src/geometry/quad.js +14 -0
  287. package/src/geometry/restoreGeometry.js +6 -0
  288. package/src/geometry/roofCoverage.js +12 -5
  289. package/src/geometry/roofFootprint.js +12 -4
  290. package/src/geometry/routeGeometry.js +7 -2
  291. package/src/geometry/samePoint.js +8 -0
  292. package/src/geometry/segment.js +9 -0
  293. package/src/geometry/setVertexColor.js +1 -1
  294. package/src/geometry/shadowBounds.js +8 -0
  295. package/src/geometry/subtractRoofTile.js +9 -0
  296. package/src/geometry/subtractVector.js +8 -0
  297. package/src/geometry/surface.js +11 -1
  298. package/src/geometry/terrainBuffers.js +10 -3
  299. package/src/geometry/terrainGrid.js +7 -2
  300. package/src/geometry/terrainTileGeometry.js +13 -4
  301. package/src/geometry/treeGeometry.js +7 -4
  302. package/src/geometry/triangle.js +11 -0
  303. package/src/geometry/validateTree.js +12 -0
  304. package/src/geometry/vertexNormals.js +8 -2
  305. package/src/geometry/visitNativeCoordinates.js +7 -0
  306. package/src/globals/CELL.js +6 -2
  307. package/src/globals/Compass.js +5 -0
  308. package/src/globals/ContainerResize.js +5 -0
  309. package/src/globals/HEIGHT.js +5 -0
  310. package/src/globals/L.js +5 -0
  311. package/src/globals/PitchDrag.js +5 -0
  312. package/src/globals/README.md +28 -0
  313. package/src/globals/ShiftRotate.js +5 -0
  314. package/src/globals/TILE_RADIUS.js +5 -0
  315. package/src/globals/TILE_SIZE.js +5 -0
  316. package/src/globals/TouchMode.js +5 -0
  317. package/src/globals/alphaBlend.js +5 -0
  318. package/src/globals/archiveDecoder.js +5 -0
  319. package/src/globals/archiveNorthWest.js +5 -0
  320. package/src/globals/archiveSouthEast.js +5 -0
  321. package/src/globals/atmosphereColor.js +5 -0
  322. package/src/globals/atmosphereStops.js +5 -0
  323. package/src/globals/blobParts.js +5 -0
  324. package/src/globals/cameraAngles.js +5 -0
  325. package/src/globals/cameraAnimatedOptions.js +5 -0
  326. package/src/globals/cameraAnimationFrame.js +5 -0
  327. package/src/globals/cameraAnimations.js +5 -0
  328. package/src/globals/cameraBearingSensitivity.js +5 -0
  329. package/src/globals/cameraDragSensitivity.js +5 -0
  330. package/src/globals/cameraDrags.js +5 -0
  331. package/src/globals/cameraEmptyOptions.js +5 -0
  332. package/src/globals/cameraFocusOptions.js +5 -0
  333. package/src/globals/cameraFov.js +5 -0
  334. package/src/globals/cameraListenerOptions.js +5 -0
  335. package/src/globals/cameraTouchStates.js +5 -0
  336. package/src/globals/cameraZeroPadding.js +5 -0
  337. package/src/globals/cogTags.js +5 -0
  338. package/src/globals/colorLayout.js +5 -0
  339. package/src/globals/colorTexture.js +5 -0
  340. package/src/globals/coreEventTypes.js +5 -0
  341. package/src/globals/coreMatrixKeys.js +5 -0
  342. package/src/globals/coreQuadIndices.js +5 -0
  343. package/src/globals/coreQuadUV.js +5 -0
  344. package/src/globals/coreSampler.js +5 -0
  345. package/src/globals/coreWhite.js +5 -0
  346. package/src/globals/cosObliquity.js +5 -0
  347. package/src/globals/coverageTiles.js +5 -0
  348. package/src/globals/dark.js +5 -0
  349. package/src/globals/defaultMaterial.js +5 -0
  350. package/src/globals/degrees.js +5 -0
  351. package/src/globals/demBuffer.js +5 -0
  352. package/src/globals/demLayout.js +5 -0
  353. package/src/globals/demSize.js +5 -0
  354. package/src/globals/demTarget.js +5 -0
  355. package/src/globals/demTexture.js +5 -0
  356. package/src/globals/depthBindGroup.js +5 -0
  357. package/src/globals/depthTexture.js +5 -0
  358. package/src/globals/directoryReader.js +5 -0
  359. package/src/globals/disabledShadow.js +5 -0
  360. package/src/globals/drawEntries.js +5 -0
  361. package/src/globals/drawFrameEntry.js +5 -0
  362. package/src/globals/drawMeshEntry.js +5 -0
  363. package/src/globals/drawSamplerEntries.js +5 -0
  364. package/src/globals/drawTerrainEntry.js +5 -0
  365. package/src/globals/drawTextureEntries.js +5 -0
  366. package/src/globals/earthCirc.js +5 -0
  367. package/src/globals/elevationWGSL.js +2 -0
  368. package/src/globals/fragmentShader.js +5 -0
  369. package/src/globals/frameBuffer.js +5 -0
  370. package/src/globals/frameCommands.js +5 -0
  371. package/src/globals/frameLayoutEntry.js +5 -0
  372. package/src/globals/geometryDecoder.js +5 -0
  373. package/src/globals/geometryEmpty.js +5 -0
  374. package/src/globals/geometryImageOptions.js +5 -0
  375. package/src/globals/geometryPixelStates.js +5 -0
  376. package/src/globals/geometryQuaternion.js +5 -0
  377. package/src/globals/geometryScale.js +5 -0
  378. package/src/globals/geometrySemantics.js +5 -0
  379. package/src/globals/geometryTranslation.js +5 -0
  380. package/src/globals/geometryWorkerUrl.js +5 -0
  381. package/src/globals/glass.js +5 -0
  382. package/src/globals/gridEvents.js +5 -0
  383. package/src/globals/gridFadeFrame.js +5 -0
  384. package/src/globals/halfRadians.js +5 -0
  385. package/src/globals/headerBounds.js +5 -0
  386. package/src/globals/headerFlags.js +5 -0
  387. package/src/globals/headerOffsets.js +5 -0
  388. package/src/globals/headlight.js +5 -0
  389. package/src/globals/hull.js +5 -0
  390. package/src/globals/instanceLayout.js +5 -0
  391. package/src/globals/lampDirections.js +5 -0
  392. package/src/globals/layerControlAddItem.js +5 -0
  393. package/src/globals/layerProto.js +5 -0
  394. package/src/globals/leafletLayer.js +5 -0
  395. package/src/globals/lightScale.js +5 -0
  396. package/src/globals/limbs.js +5 -1
  397. package/src/globals/loading.js +5 -0
  398. package/src/globals/mapMethods.js +5 -0
  399. package/src/globals/markerMethods.js +5 -0
  400. package/src/globals/markerPanFrame.js +5 -0
  401. package/src/globals/meshBindGroup.js +5 -0
  402. package/src/globals/meshBuffer.js +5 -0
  403. package/src/globals/meshCopySize.js +5 -0
  404. package/src/globals/meshImage.js +5 -0
  405. package/src/globals/meshLayoutEntry.js +5 -0
  406. package/src/globals/meshOffsets.js +5 -0
  407. package/src/globals/meshPipeline.js +5 -0
  408. package/src/globals/meshStack.js +5 -0
  409. package/src/globals/meshTarget.js +5 -0
  410. package/src/globals/moves.js +5 -1
  411. package/src/globals/mvtTextDecoder.js +5 -0
  412. package/src/globals/nativeMethodHandlers.js +5 -0
  413. package/src/globals/nativeScalableStyleKeys.js +5 -0
  414. package/src/globals/nextId.js +5 -0
  415. package/src/globals/normalLayout.js +5 -0
  416. package/src/globals/paints.js +5 -0
  417. package/src/globals/parts.js +5 -0
  418. package/src/globals/pendingGridFades.js +5 -0
  419. package/src/globals/pendingInitializations.js +5 -0
  420. package/src/globals/pendingMapChanges.js +5 -0
  421. package/src/globals/pendingMarkerPan.js +5 -0
  422. package/src/globals/pendingPlacements.js +5 -0
  423. package/src/globals/pendingRasterLoads.js +5 -0
  424. package/src/globals/pendingUpdates.js +5 -0
  425. package/src/globals/pendingZoomAnimations.js +5 -0
  426. package/src/globals/pipelineLayout.js +5 -0
  427. package/src/globals/popupEvents.js +5 -0
  428. package/src/globals/popupPan.js +5 -0
  429. package/src/globals/popupPosition.js +5 -0
  430. package/src/globals/positionLayout.js +5 -0
  431. package/src/globals/programEntries.js +5 -0
  432. package/src/globals/programLayout.js +5 -0
  433. package/src/globals/radians.js +5 -0
  434. package/src/globals/rasterBuffer.js +5 -0
  435. package/src/globals/rasterIndices.js +5 -0
  436. package/src/globals/rasterNormals.js +5 -0
  437. package/src/globals/rasterPoint.js +5 -0
  438. package/src/globals/rasterPositions.js +5 -0
  439. package/src/globals/rasterSampler.js +5 -0
  440. package/src/globals/rasterTexture.js +5 -0
  441. package/src/globals/rasterUVs.js +5 -0
  442. package/src/globals/removeLayer.js +5 -0
  443. package/src/globals/renderEmpty.js +5 -0
  444. package/src/globals/ringDirections.js +5 -0
  445. package/src/globals/roofBindGroup.js +5 -0
  446. package/src/globals/roofBlitSampler.js +5 -0
  447. package/src/globals/roofBuffer.js +5 -0
  448. package/src/globals/roofCommands.js +5 -0
  449. package/src/globals/roofCopySize.js +5 -0
  450. package/src/globals/roofImage.js +5 -0
  451. package/src/globals/roofMin.js +5 -0
  452. package/src/globals/roofOpacities.js +5 -0
  453. package/src/globals/roofPass.js +5 -0
  454. package/src/globals/roofPipeline.js +5 -0
  455. package/src/globals/roofSampler.js +5 -0
  456. package/src/globals/roofShader.js +5 -0
  457. package/src/globals/roofSignatures.js +5 -0
  458. package/src/globals/roofSize.js +5 -0
  459. package/src/globals/roofTarget.js +5 -0
  460. package/src/globals/roofTexture.js +5 -0
  461. package/src/globals/roofTiles.js +5 -0
  462. package/src/globals/roundProfile.js +5 -0
  463. package/src/globals/samplerLayoutEntries.js +5 -0
  464. package/src/globals/sceneCleanupFields.js +5 -0
  465. package/src/globals/sceneEmptyOptions.js +5 -0
  466. package/src/globals/scenePass.js +5 -0
  467. package/src/globals/sceneSunlightUniforms.js +5 -0
  468. package/src/globals/sceneTransferFields.js +5 -0
  469. package/src/globals/sceneWalkHandlers.js +5 -0
  470. package/src/globals/shadowBindGroup.js +5 -0
  471. package/src/globals/shadowBounds.js +5 -0
  472. package/src/globals/shadowCamera.js +5 -0
  473. package/src/globals/shadowDepthLayout.js +5 -0
  474. package/src/globals/shadowHigh.js +5 -0
  475. package/src/globals/shadowInstanceLayouts.js +5 -0
  476. package/src/globals/shadowLayouts.js +5 -0
  477. package/src/globals/shadowLow.js +5 -0
  478. package/src/globals/shadowMeshLayout.js +5 -0
  479. package/src/globals/shadowOffsets.js +5 -0
  480. package/src/globals/shadowPass.js +5 -0
  481. package/src/globals/shadowPipeline.js +5 -0
  482. package/src/globals/shadowPipelineLayout.js +5 -0
  483. package/src/globals/shadowShader.js +5 -0
  484. package/src/globals/shadowTexture.js +5 -0
  485. package/src/globals/shadowValues.js +5 -0
  486. package/src/globals/shirt.js +5 -0
  487. package/src/globals/sinObliquity.js +5 -0
  488. package/src/globals/sizes.js +5 -0
  489. package/src/globals/skin.js +5 -0
  490. package/src/globals/speed.js +5 -1
  491. package/src/globals/sunBindGroup.js +5 -0
  492. package/src/globals/taillight.js +5 -0
  493. package/src/globals/tau.js +5 -0
  494. package/src/globals/terrainLayoutEntry.js +5 -0
  495. package/src/globals/textureLayoutEntries.js +5 -0
  496. package/src/globals/tiledBounds.js +5 -0
  497. package/src/globals/tooltipEvents.js +5 -0
  498. package/src/globals/tooltipPosition.js +5 -0
  499. package/src/globals/trafficClocks.js +5 -0
  500. package/src/globals/trafficEmptyList.js +5 -0
  501. package/src/globals/trafficEmptyOptions.js +5 -0
  502. package/src/globals/trafficRouteMaterial.js +5 -0
  503. package/src/globals/trafficShader.js +5 -1
  504. package/src/globals/triangleContexts.js +5 -0
  505. package/src/globals/trousers.js +5 -0
  506. package/src/globals/types.js +5 -0
  507. package/src/globals/tyre.js +5 -0
  508. package/src/globals/uVLayout.js +5 -0
  509. package/src/globals/vectorStyleNamedColors.js +5 -0
  510. package/src/globals/vectorTileEvents.js +5 -0
  511. package/src/globals/vehicles.js +2 -0
  512. package/src/globals/vertexShader.js +5 -0
  513. package/src/globals/wantedTiles.js +5 -0
  514. package/src/globals/white.js +5 -0
  515. package/src/globals/workerCogSource.js +5 -0
  516. package/src/gpu/README.md +29 -0
  517. package/src/gpu/initializeRendererResources.js +6 -1
  518. package/src/gpu/initializeSharedRenderer.js +15 -8
  519. package/src/gpu/mountRenderer.js +7 -1
  520. package/src/gpu/releaseRenderer.js +8 -0
  521. package/src/gpu/rendererDeviceError.js +5 -3
  522. package/src/gpu/rendererDeviceLost.js +5 -3
  523. package/src/gpu/reportShaderCompilation.js +8 -0
  524. package/src/gpu/requestAdapter.js +8 -0
  525. package/src/gpu/requestDevice.js +9 -0
  526. package/src/gpu/showWebGPUWarning.js +5 -0
  527. package/src/index.js +0 -2
  528. package/src/layer-controls/README.md +25 -0
  529. package/src/layer-controls/layerControlInputId.js +7 -0
  530. package/src/layer-controls/layerCountTitle.js +10 -0
  531. package/src/layer-controls/placeEntry.js +9 -0
  532. package/src/layer-controls/placeEntryElement.js +7 -0
  533. package/src/layer-controls/placeUnderEntry.js +7 -0
  534. package/src/layer-controls/removeEntry.js +1 -0
  535. package/src/layer-controls/renderLayerCount.js +9 -1
  536. package/src/layer-controls/replaceEntry.js +1 -2
  537. package/src/layer-controls/runPlacements.js +1 -2
  538. package/src/layer-controls/underEntry.js +6 -2
  539. package/src/layer-controls/updateLayerCount.js +5 -1
  540. package/src/lighting/README.md +28 -0
  541. package/src/lighting/cacheLightGrid.js +9 -1
  542. package/src/lighting/collectLightMeshes.js +7 -1
  543. package/src/lighting/lightGrid.js +10 -1
  544. package/src/lighting/updatePointLights.js +7 -3
  545. package/src/lighting/visitLightCells.js +14 -1
  546. package/src/lighting/visitLightGridCells.js +11 -0
  547. package/src/lighting/worldLights.js +8 -1
  548. package/src/lighting/writeLightCell.js +9 -0
  549. package/src/materials/README.md +28 -0
  550. package/src/materials/createProgram.js +8 -4
  551. package/src/materials/createProgramLayout.js +8 -0
  552. package/src/materials/createProgramUniforms.js +7 -0
  553. package/src/materials/modelMaterialFor.js +8 -0
  554. package/src/materials/prepareMeshCutout.js +9 -0
  555. package/src/materials/terrainRasterProgram.js +15 -8
  556. package/src/materials/validateRoofMaterial.js +7 -0
  557. package/src/models/README.md +27 -0
  558. package/src/models/applyModelTransform.js +6 -2
  559. package/src/models/buildModelNodes.js +10 -0
  560. package/src/models/createModelContext.js +9 -0
  561. package/src/models/decodeModel.js +13 -2
  562. package/src/models/hasUnsupportedPrimitives.js +7 -0
  563. package/src/models/loadBuffer.js +10 -0
  564. package/src/models/loadModel.js +10 -7
  565. package/src/models/loadModelResources.js +8 -0
  566. package/src/models/modelNode.js +11 -1
  567. package/src/models/normalizeAccessor.js +10 -0
  568. package/src/models/prepareModel.js +10 -0
  569. package/src/models/prepareModelGeometry.js +10 -0
  570. package/src/models/prepareModelPrimitive.js +8 -0
  571. package/src/models/readAccessor.js +10 -4
  572. package/src/models/readAccessorValue.js +9 -0
  573. package/src/models/readAccessorValues.js +17 -0
  574. package/src/models/readModelAttributes.js +12 -0
  575. package/src/models/readModelIndices.js +12 -0
  576. package/src/models/readSparseAccessor.js +12 -0
  577. package/src/models/releaseModelResources.js +5 -0
  578. package/src/mvt/README.md +28 -0
  579. package/src/mvt/addMvtCrossings.js +6 -0
  580. package/src/mvt/appendMvtBandTriangles.js +11 -0
  581. package/src/mvt/appendMvtCoordinates.js +9 -0
  582. package/src/mvt/appendMvtPolygonTriangles.js +10 -0
  583. package/src/mvt/beginMvtPath.js +10 -0
  584. package/src/mvt/closeMvtPath.js +9 -0
  585. package/src/mvt/collectMvtEdges.js +10 -0
  586. package/src/mvt/createMvtReader.js +7 -0
  587. package/src/mvt/decodeVectorTile.js +7 -0
  588. package/src/mvt/expectMvtWire.js +8 -0
  589. package/src/mvt/finishMvtPath.js +9 -0
  590. package/src/mvt/finiteMvtCoordinate.js +7 -0
  591. package/src/mvt/groupMvtPolygons.js +10 -0
  592. package/src/mvt/isMvtFallbackError.js +7 -0
  593. package/src/mvt/mergeMvtActiveEdges.js +9 -0
  594. package/src/mvt/mvtEdgeX.js +8 -0
  595. package/src/mvt/mvtPathsVertices.js +7 -0
  596. package/src/mvt/mvtPolygonPaths.js +7 -0
  597. package/src/mvt/numericMvtValue.js +7 -0
  598. package/src/mvt/readMvtFeature.js +12 -0
  599. package/src/mvt/readMvtField.js +9 -0
  600. package/src/mvt/readMvtGeometry.js +13 -0
  601. package/src/mvt/readMvtInteger.js +10 -0
  602. package/src/mvt/readMvtKnownValue.js +9 -0
  603. package/src/mvt/readMvtLayer.js +9 -0
  604. package/src/mvt/readMvtMessage.js +8 -0
  605. package/src/mvt/readMvtNumber.js +9 -0
  606. package/src/mvt/readMvtNumbers.js +7 -0
  607. package/src/mvt/readMvtString.js +8 -0
  608. package/src/mvt/readMvtValue.js +10 -0
  609. package/src/mvt/skipMvtField.js +8 -0
  610. package/src/mvt/sortMvtActiveEdges.js +5 -0
  611. package/src/mvt/sortedMvtLevels.js +7 -0
  612. package/src/mvt/takeMvtBytes.js +10 -0
  613. package/src/mvt/tessellateVectorRings.js +7 -0
  614. package/src/mvt/triangulateVectorRings.js +4 -0
  615. package/src/native/README.md +27 -0
  616. package/src/native/beforeNativeRender.js +5 -0
  617. package/src/native/bypassNativeEvent.js +10 -0
  618. package/src/native/canScaleNativeStyle.js +9 -0
  619. package/src/native/compareNativeHits.js +8 -0
  620. package/src/native/createNativeMesh.js +15 -0
  621. package/src/native/disposeNativeLayer.js +3 -2
  622. package/src/native/forwardNativeError.js +5 -0
  623. package/src/native/getGridTerrainTile.js +13 -0
  624. package/src/native/gridTerrainElevation.js +8 -0
  625. package/src/native/handleNativeMapEvent.js +9 -4
  626. package/src/native/hideTargets.js +6 -0
  627. package/src/native/initNativeGPU.js +6 -3
  628. package/src/native/isCurrentNativeLayer.js +9 -4
  629. package/src/native/loadGridTerrain.js +10 -0
  630. package/src/native/nativeAddLatLng.js +7 -0
  631. package/src/native/nativeBringToBack.js +7 -0
  632. package/src/native/nativeBringToFront.js +7 -0
  633. package/src/native/nativeEventSource.js +9 -0
  634. package/src/native/nativeEvents.js +5 -4
  635. package/src/native/nativeLayer.js +10 -6
  636. package/src/native/nativeLayerMethod.js +9 -2
  637. package/src/native/nativeProgram.js +8 -0
  638. package/src/native/nativeRedraw.js +7 -0
  639. package/src/native/nativeSetBounds.js +7 -0
  640. package/src/native/nativeSetIcon.js +7 -0
  641. package/src/native/nativeSetLatLng.js +7 -0
  642. package/src/native/nativeSetLatLngs.js +7 -0
  643. package/src/native/nativeSetOpacity.js +7 -0
  644. package/src/native/nativeSetRadius.js +7 -0
  645. package/src/native/nativeSetStyle.js +7 -0
  646. package/src/native/nativeSetUrl.js +7 -0
  647. package/src/native/nativeSetZIndex.js +7 -0
  648. package/src/native/nativeSetZIndexOffset.js +7 -0
  649. package/src/native/nativeTerrainElevation.js +11 -0
  650. package/src/native/nativeVectorGeometry.js +7 -0
  651. package/src/native/orderNativeGridLayer.js +6 -0
  652. package/src/native/prepareGridTerrainRequests.js +7 -0
  653. package/src/native/pruneNativeResources.js +5 -0
  654. package/src/native/putNativeMesh.js +14 -0
  655. package/src/native/quadNativeMesh.js +11 -1
  656. package/src/native/readyNativeGPU.js +10 -6
  657. package/src/native/refreshNativeEvent.js +5 -0
  658. package/src/native/refreshNativeLayer.js +5 -3
  659. package/src/native/refreshNativeLayerContract.js +5 -2
  660. package/src/native/rejectNativeReady.js +5 -0
  661. package/src/native/removeNativeEvents.js +7 -3
  662. package/src/native/removeTargets.js +5 -2
  663. package/src/native/reorderNativeLayer.js +5 -3
  664. package/src/native/resolveNativeReady.js +3 -0
  665. package/src/native/restoreNativeEvents.js +3 -0
  666. package/src/native/retainGridTerrain.js +5 -0
  667. package/src/native/styleNativeMesh.js +11 -5
  668. package/src/native/syncGridLayer.js +5 -1
  669. package/src/native/syncGridTile.js +10 -0
  670. package/src/native/syncImageOverlay.js +8 -3
  671. package/src/native/syncMarker.js +5 -0
  672. package/src/native/syncNativeStrokeAnchors.js +6 -0
  673. package/src/native/syncNativeStrokeZoom.js +5 -0
  674. package/src/native/syncTerrainGridTile.js +10 -0
  675. package/src/native/syncVectorLayer.js +5 -0
  676. package/src/native/synchronizeNativeLayer.js +5 -3
  677. package/src/native/terrainGridMesh.js +13 -0
  678. package/src/native/updateNativeHover.js +8 -0
  679. package/src/native/updateNativeLayerView.js +3 -3
  680. package/src/native/updateNativeStrokeRadius.js +5 -0
  681. package/src/picking/README.md +29 -0
  682. package/src/picking/collectVisibleMesh.js +8 -0
  683. package/src/picking/findFeature.js +4 -4
  684. package/src/picking/hit.js +14 -7
  685. package/src/picking/hitColliderCell.js +10 -0
  686. package/src/picking/hitMesh.js +8 -2
  687. package/src/picking/onClick.js +6 -5
  688. package/src/picking/onPointerLeave.js +5 -5
  689. package/src/picking/onPointerMove.js +6 -5
  690. package/src/picking/pointerClick.js +5 -0
  691. package/src/picking/pointerLeave.js +1 -0
  692. package/src/picking/pointerMove.js +5 -0
  693. package/src/picking/raycast.js +2 -4
  694. package/src/picking/setHighlight.js +6 -5
  695. package/src/picking/shouldSkipOther.js +8 -2
  696. package/src/picking/showFeature.js +7 -4
  697. package/src/picking/validateCameraInverse.js +7 -0
  698. package/src/projections/README.md +28 -0
  699. package/src/projections/cameraAngles.js +8 -1
  700. package/src/projections/displayContainerPoint.js +9 -0
  701. package/src/projections/groundBounds.js +9 -1
  702. package/src/projections/localPixel.js +8 -0
  703. package/src/projections/localPixelForGeometry.js +8 -1
  704. package/src/projections/localPosition.js +8 -2
  705. package/src/projections/markerCameraIconPoint.js +9 -1
  706. package/src/projections/projectBridgePoint.js +13 -1
  707. package/src/projections/projectCameraPoint.js +11 -1
  708. package/src/projections/projectCelestialBody.js +11 -2
  709. package/src/projections/projectRing.js +11 -1
  710. package/src/projections/projectTreePoint.js +9 -1
  711. package/src/projections/toPoint.js +9 -1
  712. package/src/projections/transformZoomAnimationPoint.js +12 -5
  713. package/src/projections/verticalGroundY.js +11 -0
  714. package/src/projections/walkerLocalPosition.js +7 -0
  715. package/src/raster/README.md +28 -0
  716. package/src/raster/addRasterTile.js +10 -2
  717. package/src/raster/comparePendingTiles.js +8 -0
  718. package/src/raster/createRasterMesh.js +6 -5
  719. package/src/raster/finishRasterAttachment.js +9 -4
  720. package/src/raster/finishRasterTile.js +11 -2
  721. package/src/raster/getRasterEvents.js +7 -0
  722. package/src/raster/getRasterTileSize.js +5 -1
  723. package/src/raster/initRaster.js +6 -3
  724. package/src/raster/isRasterLoading.js +7 -3
  725. package/src/raster/loadRasterTile.js +8 -3
  726. package/src/raster/onPMTileAdd.js +6 -3
  727. package/src/raster/onPMTileRemove.js +6 -3
  728. package/src/raster/pruneRasterTiles.js +7 -3
  729. package/src/raster/pumpRasterTiles.js +5 -4
  730. package/src/raster/rasterTileRange.js +9 -0
  731. package/src/raster/readyRaster.js +8 -3
  732. package/src/raster/registerTerrainTile.js +9 -3
  733. package/src/raster/releaseRasterTile.js +6 -3
  734. package/src/raster/releaseRasterTiles.js +5 -3
  735. package/src/raster/removeRasterTile.js +6 -3
  736. package/src/raster/reportRasterError.js +8 -0
  737. package/src/raster/retainRasterTiles.js +7 -2
  738. package/src/raster/setPMTileOpacity.js +8 -0
  739. package/src/raster/setPMTileZIndex.js +8 -0
  740. package/src/raster/setRasterOpacity.js +6 -3
  741. package/src/raster/setRasterTerrain.js +6 -3
  742. package/src/raster/setRasterZIndex.js +6 -3
  743. package/src/raster/updateAttachedTiles.js +9 -3
  744. package/src/raster/updateRasterTiles.js +5 -5
  745. package/src/rendering/README.md +32 -0
  746. package/src/rendering/collectFrameMeshes.js +7 -3
  747. package/src/rendering/collectMeshes.js +11 -0
  748. package/src/rendering/collectVisibleMesh.js +9 -0
  749. package/src/rendering/compareMeshDepth.js +8 -0
  750. package/src/rendering/compareMeshes.js +10 -1
  751. package/src/rendering/createMesh.js +8 -5
  752. package/src/rendering/disposeMesh.js +6 -0
  753. package/src/rendering/drawGeometry.js +9 -2
  754. package/src/rendering/drawPipeline.js +10 -0
  755. package/src/rendering/drawSceneMeshes.js +9 -3
  756. package/src/rendering/nativeStrokeExpansion.js +7 -0
  757. package/src/rendering/prepareFrameBuffer.js +8 -2
  758. package/src/rendering/prepareFrameMeshes.js +10 -3
  759. package/src/rendering/prepareFrameUniforms.js +8 -3
  760. package/src/rendering/prepareMeshUniforms.js +10 -1
  761. package/src/rendering/render.js +2 -5
  762. package/src/rendering/resizeRenderer.js +6 -3
  763. package/src/rendering/revealRoofMesh.js +10 -1
  764. package/src/scene/README.md +36 -0
  765. package/src/scene/addRegisteredLayer.js +5 -4
  766. package/src/scene/addSceneLayer.js +9 -3
  767. package/src/scene/attachLayer.js +8 -3
  768. package/src/scene/attachSharedScene.js +6 -1
  769. package/src/scene/callLayer.js +11 -5
  770. package/src/scene/cancelUpdate.js +5 -3
  771. package/src/scene/createLayer.js +8 -2
  772. package/src/scene/createSceneNode.js +5 -1
  773. package/src/scene/emptyEvents.js +5 -0
  774. package/src/scene/failAttachment.js +9 -3
  775. package/src/scene/get3DEvents.js +7 -3
  776. package/src/scene/getLocation.js +8 -4
  777. package/src/scene/init3D.js +6 -3
  778. package/src/scene/initializeLayer.js +9 -2
  779. package/src/scene/initializerFor.js +8 -0
  780. package/src/scene/isNativeLayer.js +8 -2
  781. package/src/scene/layerInitialize.js +7 -4
  782. package/src/scene/onAdd3DLayer.js +6 -4
  783. package/src/scene/onMapChange.js +0 -5
  784. package/src/scene/onRemove3DLayer.js +6 -5
  785. package/src/scene/ready3D.js +9 -3
  786. package/src/scene/releaseSharedScene.js +6 -2
  787. package/src/scene/removeLayerEvents.js +1 -3
  788. package/src/scene/removeSceneLayer.js +9 -3
  789. package/src/scene/renderPendingMapChange.js +1 -4
  790. package/src/scene/renderPendingUpdates.js +5 -4
  791. package/src/scene/reportLayerError.js +6 -0
  792. package/src/scene/resolveNextInitialization.js +5 -2
  793. package/src/scene/restoreObject.js +6 -3
  794. package/src/scene/scheduleSceneUpdate.js +7 -6
  795. package/src/scene/setParent.js +6 -2
  796. package/src/scene/traverse.js +7 -2
  797. package/src/shaders/README.md +29 -0
  798. package/src/shaders/materialBaseShader.js +9 -0
  799. package/src/shaders/materialShaders.js +9 -1
  800. package/src/shaders/materialSurfaceShader.js +13 -0
  801. package/src/shaders/materialVertexShader.js +22 -10
  802. package/src/shaders/nativeStrokeShader.js +7 -0
  803. package/src/shaders/roofVertexShader.js +7 -0
  804. package/src/shadows/README.md +28 -0
  805. package/src/shadows/bindSunlight.js +5 -3
  806. package/src/shadows/drawShadowMeshes.js +7 -2
  807. package/src/shadows/ensureShadowPipeline.js +7 -0
  808. package/src/shadows/renderSunlight.js +8 -4
  809. package/src/shadows/resizeSunlight.js +6 -3
  810. package/src/shadows/shadowCacheMatches.js +11 -1
  811. package/src/shadows/shadowMatrix.js +8 -1
  812. package/src/shadows/shadowMeshMatches.js +8 -0
  813. package/src/sources/README.md +33 -0
  814. package/src/sources/attachAreaMesh.js +5 -4
  815. package/src/sources/buildArea.js +13 -2
  816. package/src/sources/buildAreaFeature.js +7 -1
  817. package/src/sources/buildAreaFeatures.js +9 -0
  818. package/src/sources/compareAreaDistance.js +8 -0
  819. package/src/sources/extrusionStyle.js +11 -0
  820. package/src/sources/featureAnchor.js +12 -0
  821. package/src/sources/groundOffset.js +7 -0
  822. package/src/sources/initVectorTiles.js +6 -0
  823. package/src/sources/initializeGeoJSON.js +6 -3
  824. package/src/sources/isVectorTileSource.js +7 -0
  825. package/src/sources/matchesAreaTile.js +10 -0
  826. package/src/sources/pendingSourceAreas.js +9 -2
  827. package/src/sources/prepareAreaGeometryJob.js +10 -0
  828. package/src/sources/projectAreaPolygons.js +10 -0
  829. package/src/sources/pumpSourceAreas.js +6 -6
  830. package/src/sources/readyVectorTiles.js +7 -0
  831. package/src/sources/releaseArea.js +6 -4
  832. package/src/sources/setGeoJSONData.js +8 -3
  833. package/src/sources/setGeoJSONLayerData.js +7 -0
  834. package/src/sources/sourceAreaContext.js +9 -2
  835. package/src/sources/updateArea.js +5 -5
  836. package/src/sources/updateSourceStatus.js +6 -3
  837. package/src/sunlight/README.md +28 -0
  838. package/src/sunlight/addTimeControlToMap.js +8 -1
  839. package/src/sunlight/addTimeLayer.js +9 -4
  840. package/src/sunlight/atmosphere.js +9 -2
  841. package/src/sunlight/createSun.js +7 -0
  842. package/src/sunlight/initSunlight.js +5 -0
  843. package/src/sunlight/initializeTimeControl.js +8 -6
  844. package/src/sunlight/onAddSun.js +11 -2
  845. package/src/sunlight/onAddTimeControl.js +7 -0
  846. package/src/sunlight/onRemoveSun.js +1 -1
  847. package/src/sunlight/removeSun.js +7 -5
  848. package/src/sunlight/removeTimeControl.js +7 -1
  849. package/src/sunlight/removeTimeLayer.js +8 -5
  850. package/src/sunlight/requestSunlightRender.js +6 -3
  851. package/src/sunlight/styleTimeControl.js +6 -0
  852. package/src/sunlight/tickSun.js +5 -0
  853. package/src/sunlight/updateCelestialDisc.js +11 -0
  854. package/src/sunlight/updateSky.js +5 -3
  855. package/src/sunlight/updateSun.js +6 -4
  856. package/src/sunlight/useLiveTime.js +5 -0
  857. package/src/sunlight/useSelectedTime.js +6 -4
  858. package/src/terrain/README.md +30 -0
  859. package/src/terrain/applyTerrain.js +10 -4
  860. package/src/terrain/clearLayerTerrain.js +5 -3
  861. package/src/terrain/copyTerrainTile.js +8 -0
  862. package/src/terrain/getElevation.js +8 -5
  863. package/src/terrain/initTerrain.js +5 -3
  864. package/src/terrain/loadReadyTerrain.js +1 -0
  865. package/src/terrain/loadTerrain.js +10 -2
  866. package/src/terrain/loadTerrainTiles.js +10 -3
  867. package/src/terrain/mapElevationOf.js +8 -0
  868. package/src/terrain/onTerrainAdd.js +8 -4
  869. package/src/terrain/onTerrainChange.js +5 -5
  870. package/src/terrain/onTerrainRemove.js +6 -3
  871. package/src/terrain/readBridges.js +9 -0
  872. package/src/terrain/readyTerrainOf.js +7 -0
  873. package/src/terrain/sampleTerrainTile.js +9 -0
  874. package/src/terrain/setLayerTerrain.js +5 -3
  875. package/src/terrain/setTerrainHeight.js +5 -4
  876. package/src/terrain/terrainAtlas.js +8 -2
  877. package/src/terrain/terrainElevation.js +8 -2
  878. package/src/terrain/terrainTileQueue.js +10 -3
  879. package/src/textures/README.md +29 -0
  880. package/src/textures/addImageState.js +7 -2
  881. package/src/textures/attachRasterImage.js +1 -2
  882. package/src/textures/bindMeshTextures.js +7 -0
  883. package/src/textures/collectRoofTiles.js +9 -2
  884. package/src/textures/compareRoofTiles.js +8 -0
  885. package/src/textures/composeRoofAtlas.js +11 -3
  886. package/src/textures/destroyTexture.js +6 -4
  887. package/src/textures/destroyTextureAfterSubmission.js +9 -0
  888. package/src/textures/ensureRoofBlit.js +5 -0
  889. package/src/textures/loadModelImage.js +12 -2
  890. package/src/textures/modelTextureFor.js +12 -4
  891. package/src/textures/modelTextureSampler.js +7 -2
  892. package/src/textures/nativeImageError.js +5 -1
  893. package/src/textures/nativeImageRefresh.js +5 -2
  894. package/src/textures/nativeTextureFor.js +11 -3
  895. package/src/textures/prepareMeshTextures.js +8 -0
  896. package/src/textures/rebuildRoofAtlas.js +8 -3
  897. package/src/textures/removeImageState.js +8 -3
  898. package/src/textures/resizeRoofTexture.js +9 -2
  899. package/src/textures/restoreMaterialTextures.js +6 -0
  900. package/src/textures/textureBinding.js +9 -0
  901. package/src/textures/updateRoofAtlas.js +10 -4
  902. package/src/textures/updateRoofRaster.js +8 -0
  903. package/src/textures/uploadCanvasTexture.js +15 -0
  904. package/src/textures/uploadMeshTexture.js +6 -0
  905. package/src/textures/uploadNativeImage.js +13 -0
  906. package/src/textures/uploadRoofTile.js +6 -0
  907. package/src/traffic/README.md +30 -0
  908. package/src/traffic/addTraffic.js +5 -2
  909. package/src/traffic/clockMinutes.js +7 -0
  910. package/src/traffic/compareDepartures.js +8 -0
  911. package/src/traffic/createTrafficMesh.js +13 -2
  912. package/src/traffic/destroyTrafficGpu.js +5 -0
  913. package/src/traffic/disposeTrafficObject.js +13 -10
  914. package/src/traffic/drawTrafficRoute.js +5 -1
  915. package/src/traffic/failTraffic.js +6 -0
  916. package/src/traffic/failedTrafficLoad.js +10 -3
  917. package/src/traffic/featuresToTrafficLanes.js +8 -0
  918. package/src/traffic/fetchTrafficLanes.js +11 -0
  919. package/src/traffic/groundTraffic.js +5 -1
  920. package/src/traffic/initTraffic.js +17 -15
  921. package/src/traffic/loadTraffic.js +5 -0
  922. package/src/traffic/loadedTrafficLanes.js +11 -4
  923. package/src/traffic/locateTraffic.js +9 -0
  924. package/src/traffic/moveTraffic.js +6 -0
  925. package/src/traffic/placeTraffic.js +5 -0
  926. package/src/traffic/prepareTraffic.js +5 -3
  927. package/src/traffic/readyTraffic.js +7 -2
  928. package/src/traffic/rebaseTraffic.js +5 -3
  929. package/src/traffic/rebuildTrafficMesh.js +5 -1
  930. package/src/traffic/refreshTrafficTrips.js +10 -0
  931. package/src/traffic/removeTraffic.js +5 -2
  932. package/src/traffic/routeColor.js +7 -0
  933. package/src/traffic/scheduledTrips.js +5 -2
  934. package/src/traffic/startTraffic.js +7 -2
  935. package/src/traffic/tickTraffic.js +5 -3
  936. package/src/traffic/trafficBounds.js +5 -0
  937. package/src/traffic/trafficNow.js +9 -4
  938. package/src/traffic/trafficStatusText.js +8 -0
  939. package/src/traffic/trafficStorage.js +8 -0
  940. package/src/traffic/trafficTooltip.js +7 -0
  941. package/src/traffic/tripsAt.js +9 -2
  942. package/src/traffic/updateTraffic.js +10 -7
  943. package/src/traffic/updateTrafficLights.js +5 -0
  944. package/src/traffic/updateTrafficPose.js +7 -0
  945. package/src/traffic/updateTrafficTerrain.js +10 -5
  946. package/src/traffic/uploadTrafficLanes.js +6 -0
  947. package/src/traffic/vehicleOffsets.js +9 -3
  948. package/src/transforms/README.md +27 -0
  949. package/src/transforms/composeLocalTransform.js +7 -0
  950. package/src/transforms/modelNodeMatrix.js +7 -2
  951. package/src/transforms/transformNativePoint.js +12 -0
  952. package/src/transforms/updateWorldMatrix.js +5 -2
  953. package/src/transforms/worldMatrixChanged.js +8 -0
  954. package/src/triangulation/README.md +26 -0
  955. package/src/triangulation/area.js +7 -0
  956. package/src/triangulation/clean.js +9 -0
  957. package/src/triangulation/clipEars.js +9 -0
  958. package/src/triangulation/connectHole.js +12 -0
  959. package/src/triangulation/containsVertex.js +10 -0
  960. package/src/triangulation/cross.js +9 -0
  961. package/src/triangulation/crossesBoundary.js +10 -0
  962. package/src/triangulation/crossesRing.js +9 -0
  963. package/src/triangulation/equal.js +8 -0
  964. package/src/triangulation/inside.js +8 -0
  965. package/src/triangulation/insideHole.js +8 -0
  966. package/src/triangulation/intersects.js +10 -0
  967. package/src/triangulation/isClockWise.js +4 -1
  968. package/src/triangulation/mergeHoles.js +8 -0
  969. package/src/triangulation/minimumX.js +7 -0
  970. package/src/triangulation/on.js +9 -0
  971. package/src/triangulation/polygonRings.js +8 -0
  972. package/src/triangulation/sortHoles.js +7 -0
  973. package/src/triangulation/triangulate.js +3 -2
  974. package/src/triangulation/validateArea.js +9 -0
  975. package/src/utils/README.md +16 -0
  976. package/src/utils/compareDistance.js +8 -0
  977. package/src/utils/noOperation.js +1 -0
  978. package/src/utils/wrap.js +7 -0
  979. package/src/utils/yieldTask.js +7 -0
  980. package/src/vector-style/README.md +27 -0
  981. package/src/vector-style/appendQuotedStyleCharacter.js +8 -0
  982. package/src/vector-style/arrayContainsRange.js +10 -0
  983. package/src/vector-style/evaluateBoolean.js +13 -0
  984. package/src/vector-style/evaluateCoalesceOrCase.js +13 -0
  985. package/src/vector-style/evaluateComparison.js +13 -0
  986. package/src/vector-style/evaluateIExpression.js +13 -0
  987. package/src/vector-style/evaluateInput.js +10 -0
  988. package/src/vector-style/evaluateInterpolate.js +9 -0
  989. package/src/vector-style/evaluateMatch.js +9 -0
  990. package/src/vector-style/evaluateMath.js +12 -0
  991. package/src/vector-style/evaluateMembership.js +11 -0
  992. package/src/vector-style/evaluateNegation.js +13 -0
  993. package/src/vector-style/evaluatePrimitive.js +12 -0
  994. package/src/vector-style/evaluateStep.js +9 -0
  995. package/src/vector-style/evaluateStyle.js +10 -0
  996. package/src/vector-style/evaluateToExpression.js +13 -0
  997. package/src/vector-style/fillVectorPaint.js +9 -0
  998. package/src/vector-style/lineVectorPaint.js +10 -0
  999. package/src/vector-style/parseFunctionalColor.js +9 -0
  1000. package/src/vector-style/parseHexColor.js +7 -0
  1001. package/src/vector-style/parseVectorStyle.js +7 -0
  1002. package/src/vector-style/readPaintValue.js +11 -0
  1003. package/src/vector-style/removeTrailingCommas.js +7 -0
  1004. package/src/vector-style/scaleDashArray.js +12 -0
  1005. package/src/vector-style/skipStyleComment.js +11 -0
  1006. package/src/vector-style/stripStyleComments.js +7 -0
  1007. package/src/vector-style/styleColor.js +7 -0
  1008. package/src/vector-style/validateVectorLayers.js +8 -0
  1009. package/src/vector-style/vectorPaint.js +9 -0
  1010. package/src/vector-style/visibleStyle.js +9 -0
  1011. package/src/vector-tiles/README.md +30 -0
  1012. package/src/vector-tiles/appendVectorBatch.js +12 -0
  1013. package/src/vector-tiles/attachVectorTileBatch.js +8 -0
  1014. package/src/vector-tiles/attachVectorTileBatches.js +11 -0
  1015. package/src/vector-tiles/compareVectorLabelPriority.js +8 -0
  1016. package/src/vector-tiles/compareVectorTileDistance.js +8 -0
  1017. package/src/vector-tiles/configureVectorTileLayer.js +8 -0
  1018. package/src/vector-tiles/createVectorLabel.js +15 -0
  1019. package/src/vector-tiles/forwardVectorTileError.js +5 -0
  1020. package/src/vector-tiles/loadVectorSprite.js +9 -0
  1021. package/src/vector-tiles/loadVectorTile.js +9 -0
  1022. package/src/vector-tiles/onVectorTileAdd.js +5 -0
  1023. package/src/vector-tiles/onVectorTileMessage.js +5 -0
  1024. package/src/vector-tiles/onVectorTileRemove.js +5 -0
  1025. package/src/vector-tiles/onVectorTileWorkerError.js +5 -0
  1026. package/src/vector-tiles/paintVectorTileBatch.js +6 -0
  1027. package/src/vector-tiles/prepareVectorLabel.js +9 -0
  1028. package/src/vector-tiles/prepareVectorStyleLayer.js +8 -0
  1029. package/src/vector-tiles/prepareVectorTile.js +13 -0
  1030. package/src/vector-tiles/projectVectorPaths.js +10 -0
  1031. package/src/vector-tiles/projectVectorPoint.js +9 -0
  1032. package/src/vector-tiles/projectVectorTriangles.js +10 -0
  1033. package/src/vector-tiles/pruneVectorTiles.js +3 -0
  1034. package/src/vector-tiles/pumpVectorTiles.js +3 -0
  1035. package/src/vector-tiles/readTileJSON.js +10 -0
  1036. package/src/vector-tiles/readVectorStyle.js +11 -0
  1037. package/src/vector-tiles/refreshVectorTiles.js +3 -0
  1038. package/src/vector-tiles/reserveVectorLabelCells.js +8 -0
  1039. package/src/vector-tiles/retireVectorTileGroup.js +7 -0
  1040. package/src/vector-tiles/revokeVectorWorkerUrl.js +5 -0
  1041. package/src/vector-tiles/rotateVectorLabel.js +7 -0
  1042. package/src/vector-tiles/rotateVectorLabels.js +3 -0
  1043. package/src/vector-tiles/simplifyVectorPath.js +8 -0
  1044. package/src/vector-tiles/updateVectorLabelMarker.js +9 -0
  1045. package/src/vector-tiles/updateVectorLabelStyle.js +6 -0
  1046. package/src/vector-tiles/updateVectorTileLabels.js +5 -0
  1047. package/src/vector-tiles/updateVectorTilePaint.js +5 -0
  1048. package/src/vector-tiles/updateVectorTiles.js +3 -0
  1049. package/src/vector-tiles/validateVectorTileZooms.js +9 -0
  1050. package/src/vector-tiles/vectorFeaturePaint.js +10 -0
  1051. package/src/vector-tiles/vectorFeaturePaths.js +10 -0
  1052. package/src/vector-tiles/vectorFeatureZoom.js +10 -0
  1053. package/src/vector-tiles/vectorLabelAnchors.js +8 -1
  1054. package/src/vector-tiles/vectorLabelCandidates.js +7 -0
  1055. package/src/vector-tiles/vectorLabelCells.js +9 -0
  1056. package/src/vector-tiles/vectorLabelIcon.js +8 -0
  1057. package/src/vector-tiles/vectorLabelProperty.js +9 -0
  1058. package/src/vector-tiles/vectorLabelText.js +9 -0
  1059. package/src/vector-tiles/vectorSpriteIcon.js +8 -0
  1060. package/src/vector-tiles/vectorStraightRun.js +10 -1
  1061. package/src/vector-tiles/vectorStyleDependencies.js +7 -0
  1062. package/src/vector-tiles/vectorStyleValue.js +11 -0
  1063. package/src/vector-tiles/vectorStyleZoom.js +7 -1
  1064. package/src/vector-tiles/vectorTileAwaited.js +8 -0
  1065. package/src/vector-tiles/vectorTileOverlaps.js +8 -0
  1066. package/src/vector-tiles/vectorTilePaint.js +8 -0
  1067. package/src/vector-tiles/vectorTileSettings.js +10 -0
  1068. package/src/vector-tiles/vectorTilesIdle.js +8 -0
  1069. package/src/vector-tiles/vectorTolerance.js +8 -1
  1070. package/src/vector-tiles/wrapVectorLabel.js +7 -1
  1071. package/src/vehicles/README.md +27 -0
  1072. package/src/vehicles/bicycleModel.js +7 -1
  1073. package/src/vehicles/boatBenches.js +5 -0
  1074. package/src/vehicles/boatModel.js +8 -8
  1075. package/src/vehicles/buildCarriage.js +9 -1
  1076. package/src/vehicles/busModel.js +11 -3
  1077. package/src/vehicles/carModel.js +12 -11
  1078. package/src/vehicles/metroModel.js +8 -0
  1079. package/src/vehicles/mirrorVehiclePart.js +11 -0
  1080. package/src/vehicles/pedestrianModel.js +7 -1
  1081. package/src/vehicles/tramModel.js +8 -0
  1082. package/src/walk/README.md +30 -0
  1083. package/src/walk/animateWalker.js +5 -4
  1084. package/src/walk/createWalk.js +6 -3
  1085. package/src/walk/initWalk.js +5 -0
  1086. package/src/walk/initializeWalkControl.js +6 -1
  1087. package/src/walk/isWalkBlocked.js +9 -0
  1088. package/src/walk/landWalker.js +12 -8
  1089. package/src/walk/moveWalker.js +17 -4
  1090. package/src/walk/onAddWalkControl.js +9 -0
  1091. package/src/walk/onRemoveWalkControl.js +5 -0
  1092. package/src/walk/onWalkBlur.js +1 -0
  1093. package/src/walk/onWalkKey.js +5 -2
  1094. package/src/walk/onWalkPointer.js +6 -0
  1095. package/src/walk/onWalkTerrain.js +4 -3
  1096. package/src/walk/placeWalker.js +1 -2
  1097. package/src/walk/resolveWalkerPosition.js +5 -0
  1098. package/src/walk/startWalking.js +1 -1
  1099. package/src/walk/stepWalkerHeight.js +7 -0
  1100. package/src/walk/stopWalking.js +1 -0
  1101. package/src/walk/toggleWalking.js +5 -4
  1102. package/src/walk/updateWalkerFrame.js +10 -0
  1103. package/src/walk/updateWalkerView.js +9 -0
  1104. package/src/weakmaps/README.md +33 -0
  1105. package/src/weakmaps/addedByLayer.js +5 -0
  1106. package/src/weakmaps/archiveHeaderByLayer.js +5 -0
  1107. package/src/weakmaps/areasByLayer.js +5 -0
  1108. package/src/weakmaps/boundsMethods.js +5 -0
  1109. package/src/weakmaps/bridgeMeshByLayer.js +5 -0
  1110. package/src/weakmaps/bridgesByLayer.js +5 -0
  1111. package/src/weakmaps/cameraAnimationByMap.js +5 -0
  1112. package/src/weakmaps/cameraBearingByMap.js +5 -0
  1113. package/src/weakmaps/cameraByLayer.js +5 -0
  1114. package/src/weakmaps/cameraDraggableByMap.js +5 -0
  1115. package/src/weakmaps/cameraFields.js +5 -0
  1116. package/src/weakmaps/cameraFrameByMap.js +5 -0
  1117. package/src/weakmaps/cameraHandlersByMap.js +5 -0
  1118. package/src/weakmaps/cameraMaps.js +5 -0
  1119. package/src/weakmaps/cameraPitchByMap.js +5 -0
  1120. package/src/weakmaps/cameraReadyByMap.js +5 -0
  1121. package/src/weakmaps/cameraTouchStateByMap.js +5 -0
  1122. package/src/weakmaps/cameraViewByMap.js +5 -0
  1123. package/src/weakmaps/cameraZIndexOffsetByLayer.js +5 -0
  1124. package/src/weakmaps/closestMethods.js +5 -0
  1125. package/src/weakmaps/colliders.js +5 -0
  1126. package/src/weakmaps/containerByLayer.js +5 -0
  1127. package/src/weakmaps/controlByLayer.js +5 -0
  1128. package/src/weakmaps/countStatusByLayer.js +5 -0
  1129. package/src/weakmaps/cursorByLayer.js +5 -0
  1130. package/src/weakmaps/demByLayer.js +5 -0
  1131. package/src/weakmaps/directoriesByLayer.js +5 -0
  1132. package/src/weakmaps/dragByHandler.js +5 -0
  1133. package/src/weakmaps/dragStates.js +5 -0
  1134. package/src/weakmaps/etagByLayer.js +5 -0
  1135. package/src/weakmaps/eventMapByLayer.js +5 -0
  1136. package/src/weakmaps/eventsByLayer.js +5 -0
  1137. package/src/weakmaps/fadeFrameByLayer.js +5 -0
  1138. package/src/weakmaps/fadeVersionByLayer.js +5 -0
  1139. package/src/weakmaps/frameByLayer.js +5 -0
  1140. package/src/weakmaps/geojsonByLayer.js +5 -0
  1141. package/src/weakmaps/geometryWorkersByMap.js +5 -0
  1142. package/src/weakmaps/gridInitializers.js +5 -0
  1143. package/src/weakmaps/groupByLayer.js +5 -0
  1144. package/src/weakmaps/headerByLayer.js +5 -0
  1145. package/src/weakmaps/highlightedFeatureByLayer.js +5 -0
  1146. package/src/weakmaps/hoveredFeatureByLayer.js +5 -0
  1147. package/src/weakmaps/imageStates.js +5 -0
  1148. package/src/weakmaps/inflightByLayer.js +5 -0
  1149. package/src/weakmaps/kindByLayer.js +5 -0
  1150. package/src/weakmaps/layersByLayer.js +5 -0
  1151. package/src/weakmaps/loadingTilesByLayer.js +5 -0
  1152. package/src/weakmaps/locationByLayer.js +5 -0
  1153. package/src/weakmaps/modelByLayer.js +5 -0
  1154. package/src/weakmaps/modelUrlByLayer.js +5 -0
  1155. package/src/weakmaps/nativeEventMaps.js +5 -0
  1156. package/src/weakmaps/nativeGPUBackByMap.js +5 -0
  1157. package/src/weakmaps/nativeGPUByLayer.js +5 -0
  1158. package/src/weakmaps/nativeGPUOrderByMap.js +5 -0
  1159. package/src/weakmaps/nativeProgramsByRenderer.js +5 -0
  1160. package/src/weakmaps/nativeRenderByLayer.js +5 -0
  1161. package/src/weakmaps/pathProjectionByMap.js +5 -0
  1162. package/src/weakmaps/pitchSkyByMap.js +5 -0
  1163. package/src/weakmaps/pointerEventsByLayer.js +5 -0
  1164. package/src/weakmaps/pruneAfterByLayer.js +5 -0
  1165. package/src/weakmaps/pruneVersionByLayer.js +5 -0
  1166. package/src/weakmaps/pruneWantedByLayer.js +5 -0
  1167. package/src/weakmaps/queuedByLayer.js +5 -0
  1168. package/src/weakmaps/rasterGeometryByLayer.js +5 -0
  1169. package/src/weakmaps/rasterProgramByLayer.js +5 -0
  1170. package/src/weakmaps/rasterTilesByLayer.js +5 -0
  1171. package/src/weakmaps/rasterVersionByLayer.js +5 -0
  1172. package/src/weakmaps/raycasterByLayer.js +5 -0
  1173. package/src/weakmaps/readyByLayer.js +5 -0
  1174. package/src/weakmaps/rendererByLayer.js +5 -0
  1175. package/src/weakmaps/rendererDevices.js +5 -0
  1176. package/src/weakmaps/rendererReadyByLayer.js +5 -0
  1177. package/src/weakmaps/renderers.js +5 -0
  1178. package/src/weakmaps/roofRasterByLayer.js +5 -0
  1179. package/src/weakmaps/roofRastersByLayer.js +5 -0
  1180. package/src/weakmaps/rootByLayer.js +5 -0
  1181. package/src/weakmaps/rotateControlByMap.js +5 -0
  1182. package/src/weakmaps/sceneByLayer.js +5 -0
  1183. package/src/weakmaps/sceneFields.js +5 -0
  1184. package/src/weakmaps/sceneLayers.js +5 -0
  1185. package/src/weakmaps/sceneOriginByLayer.js +5 -0
  1186. package/src/weakmaps/shadowMeshesByLayer.js +5 -0
  1187. package/src/weakmaps/sharedByLayer.js +5 -0
  1188. package/src/weakmaps/sizeByLayer.js +5 -0
  1189. package/src/weakmaps/state3dByLayer.js +5 -0
  1190. package/src/weakmaps/streamTerrainByLayer.js +5 -0
  1191. package/src/weakmaps/streamTerrainByMap.js +5 -0
  1192. package/src/weakmaps/sunByMap.js +5 -0
  1193. package/src/weakmaps/sunlightByControl.js +5 -0
  1194. package/src/weakmaps/sunlightByMap.js +5 -0
  1195. package/src/weakmaps/terrain3DByLayer.js +5 -0
  1196. package/src/weakmaps/terrain3DByMap.js +5 -0
  1197. package/src/weakmaps/terrainArchiveByLayer.js +5 -0
  1198. package/src/weakmaps/terrainBaseYByLayer.js +5 -0
  1199. package/src/weakmaps/terrainBoundsByLayer.js +5 -0
  1200. package/src/weakmaps/terrainControllerByLayer.js +5 -0
  1201. package/src/weakmaps/terrainGridsByLayer.js +5 -0
  1202. package/src/weakmaps/terrainLoadingByLayer.js +5 -0
  1203. package/src/weakmaps/terrainOriginElevationByLayer.js +5 -0
  1204. package/src/weakmaps/terrainPromiseByLayer.js +5 -0
  1205. package/src/weakmaps/terrainReadyByLayer.js +5 -0
  1206. package/src/weakmaps/terrainRequestByLayer.js +5 -0
  1207. package/src/weakmaps/terrainSourceByLayer.js +5 -0
  1208. package/src/weakmaps/terrainTilesByLayer.js +5 -0
  1209. package/src/weakmaps/terrainZoomByLayer.js +5 -0
  1210. package/src/weakmaps/tileZoomByLayer.js +5 -0
  1211. package/src/weakmaps/timeControlByMap.js +5 -0
  1212. package/src/weakmaps/tooltipByLayer.js +5 -0
  1213. package/src/weakmaps/touchByContainer.js +5 -0
  1214. package/src/weakmaps/touchPitchByMap.js +5 -0
  1215. package/src/weakmaps/touchRotateByMap.js +5 -0
  1216. package/src/weakmaps/trafficByLayer.js +5 -0
  1217. package/src/weakmaps/typeByLayer.js +5 -0
  1218. package/src/weakmaps/urlByLayer.js +5 -0
  1219. package/src/weakmaps/vectorTileOptionsByLayer.js +5 -0
  1220. package/src/weakmaps/vectorWorkerByLayer.js +5 -0
  1221. package/src/weakmaps/visibleMeshesByLayer.js +5 -0
  1222. package/src/weakmaps/walkByMap.js +5 -0
  1223. package/src/weakmaps/walkerByLayer.js +5 -0
  1224. package/src/weakmaps/wantedRasterTilesByLayer.js +5 -0
  1225. package/src/weakmaps/workerMapByLayer.js +5 -0
  1226. package/src/weakmaps/zoomLevelByLayer.js +5 -0
  1227. package/src/weakmaps/zoomTransitionsByLayer.js +5 -0
  1228. package/src/weakmaps/zoomViewByLayer.js +5 -0
  1229. package/src/workers/README.md +33 -0
  1230. package/src/workers/acquireGeometryWorker.js +10 -0
  1231. package/src/workers/buildAreaInWorker.js +8 -0
  1232. package/src/workers/closeGeometryWorkers.js +5 -0
  1233. package/src/workers/cogWorker.js +7 -0
  1234. package/src/workers/createGeometryWorker.js +10 -0
  1235. package/src/workers/geometryWorker.js +5 -0
  1236. package/src/workers/getCogInWorker.js +11 -0
  1237. package/src/workers/modelWorker.js +7 -0
  1238. package/src/workers/openCogInWorker.js +8 -0
  1239. package/src/workers/runSourceWorker.js +12 -0
  1240. package/src/workers/settleGeometryWorker.js +6 -0
  1241. package/src/workers/startGeometryWorker.js +7 -0
  1242. package/src/workers/vectorTileWorker.js +5 -0
  1243. package/src/collision/setTrafficNormal.js +0 -9
@@ -1,5 +1,10 @@
1
- import { startTraffic } from './startTraffic.js';
2
-
1
+ import { startTraffic } from './startTraffic.js';
2
+
3
+ /**
4
+ * Mark a traffic layer ready and start it if already attached to a map.
5
+ *
6
+ * @param {Object} state Traffic layer state.
7
+ */
3
8
  export function readyTraffic(state) {
4
9
  state.ready = true;
5
10
  if (state.layer._map) startTraffic(state);
@@ -1,11 +1,13 @@
1
1
  import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
2
-
3
-
4
-
5
2
  import { destroyTrafficGpu } from './destroyTrafficGpu.js';
6
3
  import { trafficStorage } from './trafficStorage.js';
7
4
  import { uploadTrafficLanes } from './uploadTrafficLanes.js';
8
5
 
6
+ /**
7
+ * Upload current lanes and trips, recreating device resources as needed and binding the traffic compute pipeline.
8
+ *
9
+ * @param {Object} state Traffic layer state.
10
+ */
9
11
  export function rebaseTraffic(state) {
10
12
  const { device } = rendererByLayer.get(state.layer);
11
13
  if (state.gpu?.device !== device) {
@@ -4,7 +4,11 @@ import { createTrafficMesh } from './createTrafficMesh.js';
4
4
  import { disposeTrafficObject } from './disposeTrafficObject.js';
5
5
  import { trafficBounds } from './trafficBounds.js';
6
6
 
7
-
7
+ /**
8
+ * Replace the batched vehicle mesh and feature ranges when the active trip set changes.
9
+ *
10
+ * @param {Object} state Traffic layer state.
11
+ */
8
12
  export function rebuildTrafficMesh(state) {
9
13
  const { trips, model, vertices } = state;
10
14
  disposeTrafficObject(state, state.mesh);
@@ -5,6 +5,16 @@ import { rebuildTrafficMesh } from './rebuildTrafficMesh.js';
5
5
  import { rebaseTraffic } from './rebaseTraffic.js';
6
6
  import { trafficStatusText } from './trafficStatusText.js';
7
7
 
8
+ /**
9
+ * Recompute scheduled trips and status, rebuilding changed geometry and rebasing GPU data.
10
+ *
11
+ * @param {Object} state Traffic layer state.
12
+ * @param {Date|undefined} time Simulation time, if available.
13
+ * @param {number|undefined} ms Simulation timestamp in milliseconds, if available.
14
+ * @param {boolean} valid Whether the simulation timestamp is valid.
15
+ *
16
+ * @returns {boolean|undefined} Whether geometry changed, or undefined if updating trips failed.
17
+ */
8
18
  export function refreshTrafficTrips(state, time, ms, valid) {
9
19
  let text;
10
20
  try {
@@ -1,9 +1,12 @@
1
1
  import { trafficByLayer } from '../weakmaps/trafficByLayer.js';
2
-
3
-
4
2
  import { disposeTrafficObject } from './disposeTrafficObject.js';
5
3
  import { destroyTrafficGpu } from './destroyTrafficGpu.js';
6
4
 
5
+ /**
6
+ * Abort loading, unregister listeners and release traffic meshes, GPU resources and lane state.
7
+ *
8
+ * @param {Object} state Traffic layer state.
9
+ */
7
10
  export function removeTraffic(state) {
8
11
  state.request?.abort();
9
12
  cancelAnimationFrame(state.frame);
@@ -1,3 +1,10 @@
1
+ /**
2
+ * Decode a six-digit route color to normalized RGB, falling back to the default route color.
3
+ *
4
+ * @param {Object|null|undefined} properties Route properties containing an optional route_color.
5
+ *
6
+ * @returns {number[]} Normalized RGB components.
7
+ */
1
8
  export function routeColor(properties) {
2
9
  const color = properties?.route_color;
3
10
  if (!/^[\da-f]{6}$/i.test(color)) return /* alloc */ [0.1, 0.55, 0.65];
@@ -2,14 +2,17 @@ import { trafficClocks } from '../globals/trafficClocks.js';
2
2
  import { clockMinutes } from './clockMinutes.js';
3
3
  import { compareDepartures } from './compareDepartures.js';
4
4
 
5
-
6
5
  /**
7
6
  * Trips of a frequency-based timetable (like GTFS frequencies.txt) underway at `date`, in the timetable's local time.
7
+ *
8
+ * @param {Date|string|number} date Simulation date.
8
9
  * @param {{timeZone: string, duration: number, services: Array<{from: string, to: string, every?: number, months?: number[], weekdays?: number[]}>}} timetable
9
10
  * `duration` and `every` are minutes; `from`/`to` are 'HH:MM' first/last departures; months are 1-12, weekdays 0 (Sunday)-6.
11
+ *
10
12
  * @returns {Array<{id: string, departure: string, progress: number}>} `progress` is 0-1 along the lane.
13
+ *
14
+ * @throws {Error} If the date is invalid.
11
15
  */
12
-
13
16
  export function scheduledTrips(date, { timeZone, duration, services }) {
14
17
  const time = date instanceof Date ? date
15
18
  : /* alloc */ new Date(date);
@@ -1,5 +1,10 @@
1
- import { underEntry } from '../layer-controls/underEntry.js';
2
-
1
+ import { underEntry } from '../layer-controls/underEntry.js';
2
+
3
+ /**
4
+ * Register time and terrain listeners, show the layer status and start traffic updates.
5
+ *
6
+ * @param {Object} state Traffic layer state.
7
+ */
3
8
  export function startTraffic(state) {
4
9
  state.layer._map.off('simulationtimechange layerremove', state.update).on('simulationtimechange layerremove', state.update);
5
10
  state.layer._map.off('terrainchange', state.terrain).on('terrainchange', state.terrain);
@@ -1,12 +1,14 @@
1
1
  import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
2
-
3
-
4
-
5
2
  import { update as updateScene } from '../scene/scheduleSceneUpdate.js';
6
3
  import { trafficNow } from './trafficNow.js';
7
4
  import { refreshTrafficTrips } from './refreshTrafficTrips.js';
8
5
  import { updateTrafficPose } from './updateTrafficPose.js';
9
6
 
7
+ /**
8
+ * Update trips and GPU poses for the simulation clock, scheduling another frame in live mode.
9
+ *
10
+ * @param {Object} state Traffic layer state.
11
+ */
10
12
  export function tickTraffic(state) {
11
13
  state.frame = undefined;
12
14
  if (!state.ready || !state.layer._map) return;
@@ -1,5 +1,10 @@
1
1
  import { computeBounds } from '../geometry/computeBounds.js';
2
2
 
3
+ /**
4
+ * Compute conservative traffic mesh bounds from lane points, vehicle dimensions and lateral offset.
5
+ *
6
+ * @param {Object} state Traffic layer state.
7
+ */
3
8
  export function trafficBounds(state) {
4
9
  let radius = 20, height = 5;
5
10
  let i, lane, x, z, y;
@@ -1,8 +1,13 @@
1
- import { timeControlByMap } from '../weakmaps/timeControlByMap.js';
2
-
3
-
1
+ import { timeControlByMap } from '../weakmaps/timeControlByMap.js';
4
2
 
5
- export function trafficNow(state) {
3
+ /**
4
+ * Return the selected simulation time, or the current time when the map clock is live.
5
+ *
6
+ * @param {Object} state Traffic layer state.
7
+ *
8
+ * @returns {Object} Live-mode flag and selected time.
9
+ */
10
+ export function trafficNow(state) {
6
11
  const control = timeControlByMap.get(state.layer._map);
7
12
  const live = control ? control.live : true;
8
13
  return /* alloc */ {
@@ -1,3 +1,11 @@
1
+ /**
2
+ * Format the traffic layer status for an invalid clock, loading state or active trip count.
3
+ *
4
+ * @param {Object} state Traffic layer state.
5
+ * @param {boolean} valid Whether the simulation time is valid.
6
+ *
7
+ * @returns {string} Status text.
8
+ */
1
9
  export function trafficStatusText(state, valid) {
2
10
  if (!valid) return `${state.vehicle}: select a valid simulation date`;
3
11
  if (!state.loaded) return `${state.vehicle}: loading…`;
@@ -1,3 +1,11 @@
1
+ /**
2
+ * Create and initialize a GPU storage buffer with at least 16 bytes.
3
+ *
4
+ * @param {GPUDevice} device Device creating the buffer.
5
+ * @param {TypedArray} data Buffer contents.
6
+ *
7
+ * @returns {GPUBuffer} The initialized storage buffer.
8
+ */
1
9
  export function trafficStorage(device, data) {
2
10
  const buffer = device.createBuffer(/* alloc */ { size: Math.max(16, data.byteLength), usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST });
3
11
  device.queue.writeBuffer(buffer, 0, data);
@@ -1,3 +1,10 @@
1
+ /**
2
+ * Build a text-only traffic tooltip from the route name, departure and description.
3
+ *
4
+ * @param {Object} feature Feature containing traffic properties.
5
+ *
6
+ * @returns {HTMLElement} Tooltip content.
7
+ */
1
8
  export function tooltip({ properties: p }) {
2
9
  const content = document.createElement('div');
3
10
  content.style.whiteSpace = 'pre-line';
@@ -1,8 +1,15 @@
1
1
  import { vehicleOffsets } from "./vehicleOffsets.js";
2
2
  import { scheduledTrips } from "./scheduledTrips.js";
3
3
 
4
- // A lane with a `timetable` runs scheduled trips end to end; one with a `flow` (vehicles/h) loops evenly spaced vehicles.
5
-
4
+ /**
5
+ * Generate active timetable trips and evenly spaced looping vehicles for flow-based lanes at the given time.
6
+ *
7
+ * @param {Date} time Simulation time.
8
+ * @param {Array} lanes Prepared traffic lanes.
9
+ * @param {number} velocity Flow-vehicle speed in metres per second.
10
+ *
11
+ * @returns {Array} Active trips and their lane positions.
12
+ */
6
13
  export function tripsAt(time, lanes, velocity) {
7
14
  const trips = /* alloc */ [];
8
15
  let l, lane, timetable, flow, trip, travelled, offsets, k;
@@ -1,10 +1,13 @@
1
- import { controlByLayer } from '../weakmaps/controlByLayer.js';
2
-
3
-
4
-
5
- import { loadTraffic } from './loadTraffic.js';
6
-
7
- export function updateTraffic(state, event) {
1
+ import { controlByLayer } from '../weakmaps/controlByLayer.js';
2
+ import { loadTraffic } from './loadTraffic.js';
3
+
4
+ /**
5
+ * Reload lanes and tick the simulation when the clock changes or a relevant layer is removed.
6
+ *
7
+ * @param {Object} state Traffic layer state.
8
+ * @param {Object} [event] Map event, optionally containing a removed layer.
9
+ */
10
+ export function updateTraffic(state, event) {
8
11
  if (event?.layer && !controlByLayer.get(event.layer)?.time) return;
9
12
  cancelAnimationFrame(state.frame);
10
13
  loadTraffic(state);
@@ -1,5 +1,10 @@
1
1
  import { locateTraffic } from './locateTraffic.js';
2
2
 
3
+ /**
4
+ * Rebuild the mesh's light snapshot by transforming each vehicle light to its current lane pose.
5
+ *
6
+ * @param {Object} state Traffic layer state.
7
+ */
3
8
  export function updateTrafficLights(state) {
4
9
  state.litAt = performance.now();
5
10
  const lights = /* alloc */ [];
@@ -1,6 +1,13 @@
1
1
  import { moveTraffic } from './moveTraffic.js';
2
2
  import { updateTrafficLights } from './updateTrafficLights.js';
3
3
 
4
+ /**
5
+ * Update GPU vehicle poses and refresh light positions, throttling live light updates.
6
+ *
7
+ * @param {Object} state Traffic layer state.
8
+ * @param {number} ms Simulation timestamp in milliseconds.
9
+ * @param {boolean} live Whether the simulation clock is live.
10
+ */
4
11
  export function updateTrafficPose(state, ms, live) {
5
12
  if (!state.mesh) return;
6
13
  moveTraffic(state, (ms - state.rebasedAt) / 1000);
@@ -1,8 +1,13 @@
1
- import { disposeTrafficObject } from './disposeTrafficObject.js';
2
- import { groundTraffic } from './groundTraffic.js';
3
- import { trafficBounds } from './trafficBounds.js';
4
-
5
- export function updateTrafficTerrain(state) {
1
+ import { disposeTrafficObject } from './disposeTrafficObject.js';
2
+ import { groundTraffic } from './groundTraffic.js';
3
+ import { trafficBounds } from './trafficBounds.js';
4
+
5
+ /**
6
+ * Reground traffic lanes after a terrain change and invalidate the route mesh and bounds.
7
+ *
8
+ * @param {Object} state Traffic layer state.
9
+ */
10
+ export function updateTrafficTerrain(state) {
6
11
  if (!state.lanes.length) return;
7
12
  groundTraffic(state);
8
13
  disposeTrafficObject(state, state.route);
@@ -1,5 +1,11 @@
1
1
  import { trafficStorage } from './trafficStorage.js';
2
2
 
3
+ /**
4
+ * Pack lane coordinates, elevations and cumulative distances into the GPU points buffer.
5
+ *
6
+ * @param {Object} state Traffic layer state.
7
+ * @param {GPUDevice} device Device used to create the points buffer.
8
+ */
3
9
  export function uploadTrafficLanes(state, device) {
4
10
  let lane, i, point, count = 0;
5
11
  for (lane of state.lanes) count += lane.points.length;
@@ -1,8 +1,14 @@
1
1
  import { speed } from '../globals/speed.js';
2
2
 
3
-
4
- /** Evenly spaced starting offsets (metres) for `flow` vehicles/h moving at `velocity` m/s on a `length` metres lane. */
5
-
3
+ /**
4
+ * Compute evenly spaced starting offsets for vehicles moving along a lane.
5
+ *
6
+ * @param {number} length Lane length in metres.
7
+ * @param {number} flow Vehicles per hour.
8
+ * @param {number} [velocity] Vehicle speed in metres per second.
9
+ *
10
+ * @returns {number[]} Starting offsets in metres.
11
+ */
6
12
  export function vehicleOffsets(length, flow, velocity = speed) {
7
13
  const count = Math.round(length * flow / 3600 / velocity);
8
14
  const offsets = Array.from(/* alloc */ { length: count });
@@ -0,0 +1,27 @@
1
+ # Transforms
2
+
3
+ [Source guide](../README.md) | [Project README](../../README.md)
4
+
5
+ Composes model and scene transforms and updates world matrices when nodes or
6
+ their parents change.
7
+
8
+ ## Local to world
9
+
10
+ ```mermaid
11
+ flowchart LR
12
+ TRS["Node translation / YXZ rotation / scale"] --> Local["Local matrix"]
13
+ Explicit["Explicit node matrix"] --> Local
14
+ Parent["Parent world matrix"] --> World["World = parent × local"]
15
+ Local --> World
16
+ World --> Consumers["Rendering / picking / collision"]
17
+ GLTF["glTF translation / quaternion / scale"] --> Explicit
18
+ ```
19
+
20
+ An explicit matrix overrides node components. Unchanged matrices are not
21
+ recomputed, but children are still visited. Geographic projection is separate.
22
+
23
+ - [composeLocalTransform.js](./composeLocalTransform.js): compose translation, rotation and scale.
24
+ - [updateWorldMatrix.js](./updateWorldMatrix.js): update a scene subtree.
25
+ - [modelNodeMatrix.js](./modelNodeMatrix.js): derive model node transforms.
26
+
27
+ Related: [scene](../scene/README.md), [models](../models/README.md), [projections](../projections/README.md).
@@ -1,5 +1,12 @@
1
1
  import { degrees } from '../globals/degrees.js';
2
2
 
3
+ /**
4
+ * Reuse the node's local matrix to compose translation, YXZ rotation and scale.
5
+ *
6
+ * @param {Object} node Scene node with position, rotation and scale.
7
+ *
8
+ * @returns {DOMMatrix} The composed local matrix.
9
+ */
3
10
  export function composeLocalTransform(node) {
4
11
  const matrix = node._localTransform ||= /* alloc */ new DOMMatrix();
5
12
  matrix.m11 = 1, matrix.m12 = 0, matrix.m13 = 0, matrix.m14 = 0;
@@ -1,9 +1,14 @@
1
1
  import { geometryQuaternion } from '../globals/geometryQuaternion.js';
2
2
  import { geometryScale } from '../globals/geometryScale.js';
3
3
  import { geometryTranslation } from '../globals/geometryTranslation.js';
4
- /** glTF quaternion/translation/scale to a column-major matrix. */
5
-
6
4
 
5
+ /**
6
+ * Convert glTF quaternion, translation and scale to a column-major matrix, or copy its explicit matrix.
7
+ *
8
+ * @param {Object} spec glTF node transform.
9
+ *
10
+ * @returns {number[]} Column-major 4x4 matrix.
11
+ */
7
12
  export function nodeMatrix(spec) {
8
13
  if (spec.matrix) return Array.from(spec.matrix);
9
14
  // glTF stores quaternions [x,y,z,w]; convert directly to a scaled column-major matrix.
@@ -1,3 +1,15 @@
1
+ /**
2
+ * Multiply a homogeneous point by a DOMMatrix and write its four components into target.
3
+ *
4
+ * @param {Object} target Reusable output point.
5
+ * @param {DOMMatrix} matrix Transformation matrix.
6
+ * @param {number} x Input x coordinate.
7
+ * @param {number} y Input y coordinate.
8
+ * @param {number} z Input z coordinate.
9
+ * @param {number} w Input homogeneous coordinate.
10
+ *
11
+ * @returns {Object} The supplied target with x, y, z and w components.
12
+ */
1
13
  export function transformNativePoint(target, matrix, x, y, z, w) {
2
14
  target.x = matrix.m11 * x + matrix.m21 * y + matrix.m31 * z + matrix.m41 * w;
3
15
  target.y = matrix.m12 * x + matrix.m22 * y + matrix.m32 * z + matrix.m42 * w;
@@ -1,8 +1,11 @@
1
1
  import { worldMatrixChanged } from './worldMatrixChanged.js';
2
2
  import { composeLocalTransform } from './composeLocalTransform.js';
3
3
 
4
- /** Compose parent*local matrices; a node.matrix overrides its position/rotation/scale. */
5
-
4
+ /**
5
+ * Compose parent*local matrices; a node.matrix overrides its position/rotation/scale.
6
+ *
7
+ * @param {Object} node Scene node whose subtree will be updated.
8
+ */
6
9
  export function updateWorldMatrix(node) {
7
10
  const parent = node.parent;
8
11
  const parentVersion = parent?._worldMatrixVersion || 0;
@@ -1,3 +1,11 @@
1
+ /**
2
+ * Compare and cache the node's explicit matrix or position, rotation and scale components.
3
+ *
4
+ * @param {Object} node Scene node with cached transform state.
5
+ * @param {boolean} changed Whether another change was already detected.
6
+ *
7
+ * @returns {boolean} Whether the transform or another input changed.
8
+ */
1
9
  export function worldMatrixChanged(node, changed) {
2
10
  let i, value;
3
11
  if (node.matrix) {
@@ -0,0 +1,26 @@
1
+ # Triangulation
2
+
3
+ [Source guide](../README.md) | [Project README](../../README.md)
4
+
5
+ Triangulates polygon contours and holes, cleaning rings and normalizing their
6
+ winding while retaining indices into the original input vertices.
7
+
8
+ ## Polygon to triangles
9
+
10
+ ```mermaid
11
+ flowchart LR
12
+ Rings["Outer contour + holes"] --> Clean["Clean + normalize winding"]
13
+ Clean --> Bridge["Connect holes"]
14
+ Bridge --> Clip["Clip ears"]
15
+ Clip --> Triangles["Triangles indexed into original inputs"]
16
+ ```
17
+
18
+ Input rings omit the repeated closing vertex. Indices still refer to the
19
+ original contour followed by holes after cleanup; preserve that contract.
20
+ [MVT](../mvt/README.md) has a separate fallback for quantized rings.
21
+
22
+ - [triangulate.js](./triangulate.js): triangulate a polygon.
23
+ - [polygonRings.js](./polygonRings.js): clean and normalize rings.
24
+ - [clipEars.js](./clipEars.js): generate triangles by ear clipping.
25
+
26
+ Related: [geometry](../geometry/README.md), [mvt](../mvt/README.md).
@@ -1,3 +1,10 @@
1
+ /**
2
+ * Calculate the unsigned area enclosed by a planar ring.
3
+ *
4
+ * @param {Object[]} ring Points with x and y coordinates.
5
+ *
6
+ * @returns {number} Absolute ring area.
7
+ */
1
8
  export function area(ring) {
2
9
  let sum = 0;
3
10
  let i, p, q;
@@ -1,6 +1,15 @@
1
1
  import { cross } from './cross.js';
2
2
  import { equal } from './equal.js';
3
3
 
4
+ /**
5
+ * Remove duplicate and collinear vertices in place while preserving at least three points.
6
+ *
7
+ * @param {Object[]} ring Planar vertices to clean.
8
+ *
9
+ * @returns {Object[]} The supplied ring.
10
+ *
11
+ * @throws {Error} If the ring has fewer than three vertices.
12
+ */
4
13
  export function clean(ring) {
5
14
  let changed = true;
6
15
  let i, a, b, c;
@@ -1,6 +1,15 @@
1
1
  import { cross } from './cross.js';
2
2
  import { containsVertex } from './containsVertex.js';
3
3
 
4
+ /**
5
+ * Clip convex ears from a polygon in place to produce indexed triangles.
6
+ *
7
+ * @param {Object[]} polygon Counterclockwise vertices carrying original indices.
8
+ *
9
+ * @returns {number[][]} Triangles of original vertex indices.
10
+ *
11
+ * @throws {Error} If no further ear can be clipped.
12
+ */
4
13
  export function clipEars(polygon) {
5
14
  const result = /* alloc */ [];
6
15
  let clipped, i, a, b, c, p;
@@ -2,6 +2,18 @@ import { inside } from './inside.js';
2
2
  import { insideHole } from './insideHole.js';
3
3
  import { crossesBoundary } from './crossesBoundary.js';
4
4
 
5
+ /**
6
+ * Connect a hole to the polygon using the shortest valid vertex bridge.
7
+ *
8
+ * @param {Object[]} polygon Current polygon vertices.
9
+ * @param {Object[]} hole Hole vertices to connect.
10
+ * @param {Object[][]} rings Outer ring followed by hole rings.
11
+ * @param {Object} mid Reusable midpoint with x and y fields.
12
+ *
13
+ * @returns {Object[]} Polygon vertices including the bridged hole.
14
+ *
15
+ * @throws {Error} If no valid bridge can be found.
16
+ */
5
17
  export function connectHole(polygon, hole, rings, mid) {
6
18
  let h2 = -1, p2 = -1, distance = Infinity, h, p, a, b, d;
7
19
  for (h = 0; h < hole.length; h++) for (p = 0; p < polygon.length; p++) {
@@ -1,6 +1,16 @@
1
1
  import { equal } from './equal.js';
2
2
  import { cross } from './cross.js';
3
3
 
4
+ /**
5
+ * Check whether a polygon has another vertex inside or on a counterclockwise triangle.
6
+ *
7
+ * @param {Object[]} polygon Planar polygon vertices.
8
+ * @param {Object} a First triangle vertex.
9
+ * @param {Object} b Second triangle vertex.
10
+ * @param {Object} c Third triangle vertex.
11
+ *
12
+ * @returns {boolean} Whether a distinct polygon vertex is contained.
13
+ */
4
14
  export function containsVertex(polygon, a, b, c) {
5
15
  let p;
6
16
  for (p of polygon) {
@@ -1,3 +1,12 @@
1
+ /**
2
+ * Compute the signed 2D cross product of the vectors from a to b and c.
3
+ *
4
+ * @param {Object} a Origin point with x and y coordinates.
5
+ * @param {Object} b First endpoint.
6
+ * @param {Object} c Second endpoint.
7
+ *
8
+ * @returns {number} Signed cross product.
9
+ */
1
10
  export function cross(a, b, c) {
2
11
  return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);
3
12
  }
@@ -1,5 +1,15 @@
1
1
  import { crossesRing } from './crossesRing.js';
2
2
 
3
+ /**
4
+ * Test a segment against the current polygon and each hole boundary.
5
+ *
6
+ * @param {Object} a First segment endpoint.
7
+ * @param {Object} b Second segment endpoint.
8
+ * @param {Object[]} polygon Current polygon vertices.
9
+ * @param {Object[][]} rings Outer ring followed by hole rings.
10
+ *
11
+ * @returns {boolean} Whether the segment intersects a boundary.
12
+ */
3
13
  export function crossesBoundary(a, b, polygon, rings) {
4
14
  if (crossesRing(a, b, polygon)) return true;
5
15
  let i;
@@ -1,5 +1,14 @@
1
1
  import { intersects } from './intersects.js';
2
2
 
3
+ /**
4
+ * Test a segment against all edges of a closed ring.
5
+ *
6
+ * @param {Object} a First segment endpoint.
7
+ * @param {Object} b Second segment endpoint.
8
+ * @param {Object[]} ring Planar ring vertices.
9
+ *
10
+ * @returns {boolean} Whether the segment intersects a ring edge away from shared endpoints.
11
+ */
3
12
  export function crossesRing(a, b, ring) {
4
13
  let i;
5
14
  for (i = 0; i < ring.length; i++) {
@@ -1,3 +1,11 @@
1
+ /**
2
+ * Compare two planar points by exact coordinates.
3
+ *
4
+ * @param {Object} a First point.
5
+ * @param {Object} b Second point.
6
+ *
7
+ * @returns {boolean} Whether both coordinates match.
8
+ */
1
9
  export function equal(a, b) {
2
10
  return a.x === b.x && a.y === b.y;
3
11
  }
@@ -1,3 +1,11 @@
1
+ /**
2
+ * Test a planar point against a ring using crossing parity.
3
+ *
4
+ * @param {Object} point Point with x and y coordinates.
5
+ * @param {Object[]} ring Planar ring vertices.
6
+ *
7
+ * @returns {boolean} Whether the crossing test places the point inside.
8
+ */
1
9
  export function inside(point, ring) {
2
10
  let result = false;
3
11
  let i, j, a, b;
@@ -1,5 +1,13 @@
1
1
  import { inside } from './inside.js';
2
2
 
3
+ /**
4
+ * Test whether a point is inside any hole ring.
5
+ *
6
+ * @param {Object} point Point with x and y coordinates.
7
+ * @param {Object[][]} rings Outer ring followed by hole rings.
8
+ *
9
+ * @returns {boolean} Whether the point is inside a hole.
10
+ */
3
11
  export function insideHole(point, rings) {
4
12
  let i;
5
13
  for (i = 1; i < rings.length; i++) if (inside(point, rings[i])) return true;
@@ -2,6 +2,16 @@ import { equal } from './equal.js';
2
2
  import { cross } from './cross.js';
3
3
  import { on } from './on.js';
4
4
 
5
+ /**
6
+ * Test two segments for intersection, excluding shared endpoints.
7
+ *
8
+ * @param {Object} a First endpoint of the first segment.
9
+ * @param {Object} b Second endpoint of the first segment.
10
+ * @param {Object} c First endpoint of the second segment.
11
+ * @param {Object} d Second endpoint of the second segment.
12
+ *
13
+ * @returns {boolean} Whether the segments intersect.
14
+ */
5
15
  export function intersects(a, b, c, d) {
6
16
  if (equal(a, c) || equal(a, d) || equal(b, c) || equal(b, d)) return false;
7
17
  const abC = cross(a, b, c), abD = cross(a, b, d), cdA = cross(c, d, a), cdB = cross(c, d, b);