leaflet-city-mapper 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (515) hide show
  1. package/README.md +1 -1
  2. package/dist/leaflet-city-mapper-src.js.map +1 -1
  3. package/dist/leaflet-city-mapper-worker-src.js.map +1 -1
  4. package/dist/leaflet-city-mapper-worker.js.map +1 -1
  5. package/dist/leaflet-city-mapper.js.map +1 -1
  6. package/libs/leaflet-lens.js +151 -151
  7. package/libs/leaflet.js +3 -3
  8. package/libs/openlayers-bindings.js +1129 -1129
  9. package/libs/openlayers-bindings.min.js.map +1 -1
  10. package/package.json +2 -4
  11. package/src/animations/cancelCameraAnimation.js +19 -19
  12. package/src/animations/mapStopPitchBearingAnimation.js +10 -10
  13. package/src/animations/scheduleCameraAnimation.js +15 -15
  14. package/src/animations/scheduleMarkerPan.js +14 -14
  15. package/src/animations/updateZoomCamera.js +25 -25
  16. package/src/archives/findDirectoryEntry.js +17 -17
  17. package/src/archives/findTile.js +45 -45
  18. package/src/archives/getDirectoryEntries.js +30 -30
  19. package/src/archives/getTileData.js +26 -26
  20. package/src/archives/readArchiveRange.js +48 -48
  21. package/src/astronomy/solarTime.js +21 -21
  22. package/src/camera/cameraMapReady.js +9 -9
  23. package/src/camera/cleanupCameraMap.js +13 -13
  24. package/src/camera/constrainCameraToBounds.js +3 -3
  25. package/src/camera/createSceneCamera.js +25 -25
  26. package/src/camera/getBearing.js +10 -10
  27. package/src/camera/getPitch.js +10 -10
  28. package/src/camera/mapGetBoundsCenterZoom.js +14 -14
  29. package/src/camera/mapLimitOffset.js +17 -17
  30. package/src/camera/mapPanBy.js +14 -14
  31. package/src/camera/setBearing.js +13 -13
  32. package/src/camera/setPitch.js +13 -13
  33. package/src/cog/decodeCogTile.js +37 -37
  34. package/src/cog/finiteCogValues.js +12 -12
  35. package/src/cog/getCogAssetEntry.js +26 -26
  36. package/src/cog/getCogBase.js +22 -22
  37. package/src/cog/getCogHeader.js +10 -10
  38. package/src/cog/getCogProfile.js +25 -25
  39. package/src/cog/getCogTile.js +25 -25
  40. package/src/cog/getColorTile.js +38 -38
  41. package/src/cog/getElevationTile.js +29 -29
  42. package/src/cog/hasCogProjection.js +16 -16
  43. package/src/cog/initCog.js +13 -13
  44. package/src/cog/invalidCogFullResponse.js +10 -10
  45. package/src/cog/openCog.js +40 -40
  46. package/src/cog/openCogAsset.js +22 -22
  47. package/src/cog/readCog.js +39 -39
  48. package/src/cog/readCogBlock.js +19 -19
  49. package/src/cog/readCogBody.js +30 -30
  50. package/src/cog/readCogDirectories.js +32 -32
  51. package/src/cog/readCogDirectory.js +34 -34
  52. package/src/cog/readCogLevel.js +36 -36
  53. package/src/cog/readCogTag.js +28 -28
  54. package/src/cog/validCogDimensions.js +15 -15
  55. package/src/cog/validCogEncoding.js +18 -18
  56. package/src/cog/validCogGeoArrays.js +17 -17
  57. package/src/cog/validCogGrid.js +22 -22
  58. package/src/cog/validCogTileCoordinates.js +13 -13
  59. package/src/cog/validateCogContainer.js +17 -17
  60. package/src/cog/validateCogContentRange.js +18 -18
  61. package/src/cog/validateCogOffsets.js +19 -19
  62. package/src/cog/validateCogRange.js +16 -16
  63. package/src/cog/validateCogResponse.js +26 -26
  64. package/src/collision/collectIntersections.js +41 -41
  65. package/src/collision/hiddenLightHit.js +19 -19
  66. package/src/collision/indexTriangle.js +18 -18
  67. package/src/collision/insideMesh.js +47 -47
  68. package/src/collision/insideWalker.js +52 -52
  69. package/src/collision/intersectMeshes.js +40 -40
  70. package/src/collision/localRay.js +31 -31
  71. package/src/collision/mergeHits.js +19 -19
  72. package/src/collision/rayBounds.js +28 -28
  73. package/src/collision/readTriangle.js +32 -32
  74. package/src/collision/trafficCollision.js +23 -23
  75. package/src/collision/transformTriangle.js +18 -18
  76. package/src/collision/triangleDistance.js +34 -34
  77. package/src/collision/vertexCount.js +11 -11
  78. package/src/collision/worldHit.js +30 -30
  79. package/src/controls/acceptPitchDrag.js +10 -10
  80. package/src/controls/acceptRotateDrag.js +9 -9
  81. package/src/controls/addCameraHandler.js +18 -18
  82. package/src/controls/adjustCameraDrag.js +13 -13
  83. package/src/controls/cameraDragContextMenu.js +12 -12
  84. package/src/controls/cameraDragEnd.js +10 -10
  85. package/src/controls/cameraDragMove.js +31 -31
  86. package/src/controls/changeCameraTouch.js +17 -17
  87. package/src/controls/compassOrientation.js +12 -12
  88. package/src/controls/compassRemoveHooks.js +2 -2
  89. package/src/controls/containerResizeRemoveHooks.js +2 -2
  90. package/src/controls/endCameraTouch.js +18 -18
  91. package/src/controls/failCompassPermission.js +10 -10
  92. package/src/controls/finishCameraDrag.js +14 -14
  93. package/src/controls/finishCompassPermission.js +24 -24
  94. package/src/controls/isEditableTarget.js +9 -9
  95. package/src/controls/loadCameraControls.js +18 -18
  96. package/src/controls/moveCameraTouch.js +34 -34
  97. package/src/controls/refreshRotateFocus.js +5 -5
  98. package/src/controls/removeCameraDrag.js +28 -28
  99. package/src/controls/resizeMap.js +7 -7
  100. package/src/controls/rotateButtonClick.js +16 -16
  101. package/src/controls/rotateButtonKeydown.js +20 -20
  102. package/src/controls/rotateControl.js +12 -12
  103. package/src/controls/shiftRotateRemoveHooks.js +2 -2
  104. package/src/controls/shiftRotateWheel.js +15 -15
  105. package/src/core/cameraMarkerOnDrag.js +16 -16
  106. package/src/core/constructLayer.js +16 -16
  107. package/src/core/extendLeafletClass.js +12 -12
  108. package/src/core/extendTerrainPixelBounds.js +41 -41
  109. package/src/core/layerAddInitHook.js +12 -12
  110. package/src/core/layerMergeOptions.js +14 -14
  111. package/src/core/markerInitInteraction.js +10 -10
  112. package/src/core/markerSetIcon.js +14 -14
  113. package/src/core/markerSetRotation.js +19 -19
  114. package/src/core/projectNativePath.js +30 -30
  115. package/src/core/redrawPath.js +11 -11
  116. package/src/core/removeLayer.js +26 -26
  117. package/src/core/setRotation.js +12 -12
  118. package/src/core/whenReady.js +14 -14
  119. package/src/geometry/addBridges.js +36 -36
  120. package/src/geometry/addGeneratedTriangle.js +10 -10
  121. package/src/geometry/appendAreaTriangle.js +32 -32
  122. package/src/geometry/appendNativeTriangle.js +17 -17
  123. package/src/geometry/appendRouteDash.js +33 -33
  124. package/src/geometry/appendRouteSegment.js +28 -28
  125. package/src/geometry/assembleAreaGeometry.js +48 -48
  126. package/src/geometry/bridgeEdge.js +18 -18
  127. package/src/geometry/bridgeFaces.js +22 -22
  128. package/src/geometry/bridgePaths.js +19 -19
  129. package/src/geometry/bridgePolygon.js +37 -37
  130. package/src/geometry/bridgeSides.js +18 -18
  131. package/src/geometry/buildProjectedPoint.js +32 -32
  132. package/src/geometry/buildProjectedPolygon.js +34 -34
  133. package/src/geometry/circleAt.js +20 -20
  134. package/src/geometry/circleGeometry.js +41 -41
  135. package/src/geometry/createModelGeometry.js +44 -44
  136. package/src/geometry/crossVector.js +15 -15
  137. package/src/geometry/dashValues.js +23 -23
  138. package/src/geometry/dashedSegment.js +33 -33
  139. package/src/geometry/diskAt.js +18 -18
  140. package/src/geometry/emitter.js +18 -18
  141. package/src/geometry/fillNativePolygon.js +28 -28
  142. package/src/geometry/generateTreeGeometry.js +18 -18
  143. package/src/geometry/indexBridge.js +36 -36
  144. package/src/geometry/instanceAreaGeometry.js +37 -37
  145. package/src/geometry/line.js +28 -28
  146. package/src/geometry/lineJoin.js +35 -35
  147. package/src/geometry/markerImageBounds.js +20 -20
  148. package/src/geometry/meshShadowBounds.js +33 -33
  149. package/src/geometry/offsetBelowGround.js +10 -10
  150. package/src/geometry/quad.js +23 -23
  151. package/src/geometry/restoreGeometry.js +29 -29
  152. package/src/geometry/roofCoverage.js +33 -33
  153. package/src/geometry/roofFootprint.js +40 -40
  154. package/src/geometry/samePoint.js +11 -11
  155. package/src/geometry/segment.js +32 -32
  156. package/src/geometry/subtractRoofTile.js +28 -28
  157. package/src/geometry/terrainBuffers.js +36 -36
  158. package/src/geometry/terrainTileGeometry.js +28 -28
  159. package/src/geometry/validateTree.js +19 -19
  160. package/src/globals/L.js +6 -6
  161. package/src/globals/cameraFov.js +8 -8
  162. package/src/globals/cogTags.js +6 -6
  163. package/src/globals/colorTexture.js +11 -11
  164. package/src/globals/cosObliquity.js +8 -8
  165. package/src/globals/degrees.js +6 -6
  166. package/src/globals/earthCirc.js +6 -6
  167. package/src/globals/geometryWorkerUrl.js +8 -8
  168. package/src/globals/halfRadians.js +6 -6
  169. package/src/globals/lampDirections.js +13 -13
  170. package/src/globals/layerControlAddItem.js +8 -8
  171. package/src/globals/leafletLayer.js +8 -8
  172. package/src/globals/lightScale.js +6 -6
  173. package/src/globals/mvtTextDecoder.js +6 -6
  174. package/src/globals/nativeScalableStyleKeys.js +6 -6
  175. package/src/globals/sinObliquity.js +8 -8
  176. package/src/globals/tau.js +6 -6
  177. package/src/globals/vectorStyleNamedColors.js +13 -13
  178. package/src/globals/vectorTileEvents.js +6 -6
  179. package/src/globals/workerCogSource.js +6 -6
  180. package/src/gpu/initializeRendererResources.js +39 -39
  181. package/src/gpu/initializeSharedRenderer.js +59 -59
  182. package/src/gpu/mountRenderer.js +25 -25
  183. package/src/layer-controls/layerControlInputId.js +18 -18
  184. package/src/layer-controls/layerCountTitle.js +16 -16
  185. package/src/layer-controls/placeEntryElement.js +29 -29
  186. package/src/layer-controls/renderLayerCount.js +28 -28
  187. package/src/lighting/visitLightCells.js +26 -26
  188. package/src/lighting/writeLightCell.js +14 -14
  189. package/src/materials/createProgramLayout.js +44 -44
  190. package/src/materials/createProgramUniforms.js +25 -25
  191. package/src/materials/modelMaterialFor.js +29 -29
  192. package/src/materials/prepareMeshCutout.js +21 -21
  193. package/src/materials/terrainRasterProgram.js +65 -65
  194. package/src/materials/validateRoofMaterial.js +17 -17
  195. package/src/models/applyModelTransform.js +18 -18
  196. package/src/models/buildModelNodes.js +24 -24
  197. package/src/models/createModelContext.js +24 -24
  198. package/src/models/loadBuffer.js +16 -16
  199. package/src/models/loadModelResources.js +22 -22
  200. package/src/models/normalizeAccessor.js +21 -21
  201. package/src/models/prepareModel.js +29 -29
  202. package/src/models/prepareModelGeometry.js +35 -35
  203. package/src/models/prepareModelPrimitive.js +25 -25
  204. package/src/models/readAccessorValue.js +16 -16
  205. package/src/models/readModelAttributes.js +32 -32
  206. package/src/models/readModelIndices.js +28 -28
  207. package/src/models/readSparseAccessor.js +31 -31
  208. package/src/models/releaseModelResources.js +15 -15
  209. package/src/mvt/addMvtCrossings.js +23 -23
  210. package/src/mvt/appendMvtBandTriangles.js +42 -42
  211. package/src/mvt/appendMvtCoordinates.js +20 -20
  212. package/src/mvt/appendMvtPolygonTriangles.js +29 -29
  213. package/src/mvt/beginMvtPath.js +19 -19
  214. package/src/mvt/closeMvtPath.js +16 -16
  215. package/src/mvt/collectMvtEdges.js +29 -29
  216. package/src/mvt/createMvtReader.js +14 -14
  217. package/src/mvt/decodeVectorTile.js +39 -39
  218. package/src/mvt/expectMvtWire.js +11 -11
  219. package/src/mvt/finishMvtPath.js +14 -14
  220. package/src/mvt/finiteMvtCoordinate.js +14 -14
  221. package/src/mvt/groupMvtPolygons.js +35 -35
  222. package/src/mvt/isMvtFallbackError.js +13 -13
  223. package/src/mvt/mergeMvtActiveEdges.js +18 -18
  224. package/src/mvt/mvtEdgeX.js +12 -12
  225. package/src/mvt/mvtPathsVertices.js +15 -15
  226. package/src/mvt/mvtPolygonPaths.js +19 -19
  227. package/src/mvt/numericMvtValue.js +11 -11
  228. package/src/mvt/readMvtFeature.js +46 -46
  229. package/src/mvt/readMvtField.js +17 -17
  230. package/src/mvt/readMvtGeometry.js +42 -42
  231. package/src/mvt/readMvtInteger.js +22 -22
  232. package/src/mvt/readMvtKnownValue.js +30 -30
  233. package/src/mvt/readMvtLayer.js +40 -40
  234. package/src/mvt/readMvtMessage.js +18 -18
  235. package/src/mvt/readMvtNumber.js +18 -18
  236. package/src/mvt/readMvtNumbers.js +18 -18
  237. package/src/mvt/readMvtString.js +14 -14
  238. package/src/mvt/readMvtValue.js +29 -29
  239. package/src/mvt/skipMvtField.js +22 -22
  240. package/src/mvt/sortMvtActiveEdges.js +20 -20
  241. package/src/mvt/sortedMvtLevels.js +29 -29
  242. package/src/mvt/takeMvtBytes.js +18 -18
  243. package/src/mvt/tessellateVectorRings.js +26 -26
  244. package/src/mvt/triangulateVectorRings.js +23 -23
  245. package/src/native/beforeNativeRender.js +21 -21
  246. package/src/native/bypassNativeEvent.js +21 -21
  247. package/src/native/canScaleNativeStyle.js +26 -26
  248. package/src/native/compareNativeHits.js +10 -10
  249. package/src/native/createNativeMesh.js +46 -46
  250. package/src/native/forwardNativeError.js +8 -8
  251. package/src/native/getGridTerrainTile.js +47 -47
  252. package/src/native/gridTerrainElevation.js +34 -34
  253. package/src/native/isCurrentNativeLayer.js +11 -11
  254. package/src/native/loadGridTerrain.js +36 -36
  255. package/src/native/nativeEventSource.js +27 -27
  256. package/src/native/nativeProgram.js +28 -28
  257. package/src/native/nativeTerrainElevation.js +27 -27
  258. package/src/native/nativeVectorGeometry.js +30 -30
  259. package/src/native/orderNativeGridLayer.js +20 -20
  260. package/src/native/prepareGridTerrainRequests.js +23 -23
  261. package/src/native/pruneNativeResources.js +25 -25
  262. package/src/native/readyNativeGPU.js +13 -13
  263. package/src/native/rejectNativeReady.js +2 -2
  264. package/src/native/removeNativeEvents.js +20 -20
  265. package/src/native/resolveNativeReady.js +2 -2
  266. package/src/native/restoreNativeEvents.js +8 -8
  267. package/src/native/retainGridTerrain.js +15 -15
  268. package/src/native/styleNativeMesh.js +20 -20
  269. package/src/native/syncGridTile.js +28 -28
  270. package/src/native/syncImageOverlay.js +13 -13
  271. package/src/native/syncNativeStrokeAnchors.js +18 -18
  272. package/src/native/syncNativeStrokeZoom.js +34 -34
  273. package/src/native/syncTerrainGridTile.js +38 -38
  274. package/src/native/terrainGridMesh.js +47 -47
  275. package/src/native/updateNativeHover.js +15 -15
  276. package/src/native/updateNativeStrokeRadius.js +14 -14
  277. package/src/picking/hitColliderCell.js +29 -29
  278. package/src/picking/validateCameraInverse.js +15 -15
  279. package/src/projections/displayContainerPoint.js +32 -32
  280. package/src/projections/projectBridgePoint.js +17 -17
  281. package/src/projections/toPoint.js +13 -13
  282. package/src/projections/transformZoomAnimationPoint.js +8 -8
  283. package/src/projections/verticalGroundY.js +14 -14
  284. package/src/raster/rasterTileRange.js +32 -32
  285. package/src/raster/retainRasterTiles.js +21 -21
  286. package/src/rendering/collectVisibleMesh.js +48 -48
  287. package/src/rendering/compareMeshDepth.js +14 -14
  288. package/src/rendering/drawPipeline.js +44 -44
  289. package/src/rendering/nativeStrokeExpansion.js +11 -11
  290. package/src/rendering/prepareFrameBuffer.js +24 -24
  291. package/src/rendering/prepareMeshUniforms.js +36 -36
  292. package/src/rendering/revealRoofMesh.js +43 -43
  293. package/src/scene/addSceneLayer.js +24 -24
  294. package/src/scene/callLayer.js +34 -34
  295. package/src/scene/createLayer.js +13 -13
  296. package/src/scene/getLocation.js +12 -12
  297. package/src/scene/isNativeLayer.js +19 -19
  298. package/src/scene/removeSceneLayer.js +22 -22
  299. package/src/scene/reportLayerError.js +9 -9
  300. package/src/shaders/materialBaseShader.js +26 -26
  301. package/src/shaders/materialSurfaceShader.js +60 -60
  302. package/src/shaders/materialVertexShader.js +89 -89
  303. package/src/shaders/nativeStrokeShader.js +13 -13
  304. package/src/shaders/roofVertexShader.js +16 -16
  305. package/src/shadows/shadowMeshMatches.js +19 -19
  306. package/src/sources/buildAreaFeatures.js +23 -23
  307. package/src/sources/extrusionStyle.js +21 -21
  308. package/src/sources/featureAnchor.js +21 -21
  309. package/src/sources/groundOffset.js +9 -9
  310. package/src/sources/initVectorTiles.js +21 -21
  311. package/src/sources/isVectorTileSource.js +11 -11
  312. package/src/sources/matchesAreaTile.js +17 -17
  313. package/src/sources/pendingSourceAreas.js +28 -28
  314. package/src/sources/prepareAreaGeometryJob.js +34 -34
  315. package/src/sources/projectAreaPolygons.js +25 -25
  316. package/src/sources/readyVectorTiles.js +17 -17
  317. package/src/sunlight/addTimeControlToMap.js +18 -18
  318. package/src/sunlight/addTimeLayer.js +12 -12
  319. package/src/sunlight/initializeTimeControl.js +18 -18
  320. package/src/sunlight/onAddSun.js +37 -37
  321. package/src/sunlight/onAddTimeControl.js +12 -12
  322. package/src/sunlight/onRemoveSun.js +10 -10
  323. package/src/sunlight/removeSun.js +25 -25
  324. package/src/sunlight/removeTimeControl.js +14 -14
  325. package/src/sunlight/removeTimeLayer.js +11 -11
  326. package/src/sunlight/requestSunlightRender.js +12 -12
  327. package/src/sunlight/styleTimeControl.js +13 -13
  328. package/src/sunlight/tickSun.js +10 -10
  329. package/src/sunlight/updateCelestialDisc.js +23 -23
  330. package/src/sunlight/updateSun.js +44 -44
  331. package/src/sunlight/useLiveTime.js +11 -11
  332. package/src/sunlight/useSelectedTime.js +26 -26
  333. package/src/terrain/applyTerrain.js +30 -30
  334. package/src/terrain/copyTerrainTile.js +20 -20
  335. package/src/terrain/loadReadyTerrain.js +6 -6
  336. package/src/terrain/mapElevationOf.js +19 -19
  337. package/src/terrain/readBridges.js +13 -13
  338. package/src/terrain/readyTerrainOf.js +14 -14
  339. package/src/terrain/sampleTerrainTile.js +16 -16
  340. package/src/terrain/terrainTileQueue.js +34 -34
  341. package/src/textures/addImageState.js +13 -13
  342. package/src/textures/bindMeshTextures.js +57 -57
  343. package/src/textures/collectRoofTiles.js +23 -23
  344. package/src/textures/loadModelImage.js +29 -29
  345. package/src/textures/modelTextureFor.js +47 -47
  346. package/src/textures/prepareMeshTextures.js +31 -31
  347. package/src/textures/removeImageState.js +13 -13
  348. package/src/textures/resizeRoofTexture.js +32 -32
  349. package/src/textures/restoreMaterialTextures.js +22 -22
  350. package/src/textures/updateRoofAtlas.js +29 -29
  351. package/src/textures/uploadMeshTexture.js +32 -32
  352. package/src/textures/uploadNativeImage.js +26 -26
  353. package/src/textures/uploadRoofTile.js +29 -29
  354. package/src/traffic/createTrafficMesh.js +17 -17
  355. package/src/traffic/disposeTrafficObject.js +19 -19
  356. package/src/traffic/failTraffic.js +12 -12
  357. package/src/traffic/failedTrafficLoad.js +10 -10
  358. package/src/traffic/fetchTrafficLanes.js +21 -21
  359. package/src/traffic/loadedTrafficLanes.js +21 -21
  360. package/src/traffic/locateTraffic.js +20 -20
  361. package/src/traffic/moveTraffic.js +21 -21
  362. package/src/traffic/readyTraffic.js +10 -10
  363. package/src/traffic/refreshTrafficTrips.js +42 -42
  364. package/src/traffic/routeColor.js +13 -13
  365. package/src/traffic/startTraffic.js +12 -12
  366. package/src/traffic/trafficNow.js +15 -15
  367. package/src/traffic/trafficStatusText.js +13 -13
  368. package/src/traffic/trafficStorage.js +13 -13
  369. package/src/traffic/updateTraffic.js +13 -13
  370. package/src/traffic/updateTrafficLights.js +23 -23
  371. package/src/traffic/updateTrafficPose.js +15 -15
  372. package/src/traffic/updateTrafficTerrain.js +15 -15
  373. package/src/traffic/uploadTrafficLanes.js +27 -27
  374. package/src/transforms/composeLocalTransform.js +23 -23
  375. package/src/transforms/transformNativePoint.js +19 -19
  376. package/src/transforms/worldMatrixChanged.js +26 -26
  377. package/src/triangulation/clipEars.js +32 -32
  378. package/src/triangulation/connectHole.js +30 -30
  379. package/src/triangulation/cross.js +12 -12
  380. package/src/triangulation/equal.js +11 -11
  381. package/src/triangulation/intersects.js +21 -21
  382. package/src/triangulation/mergeHoles.js +19 -19
  383. package/src/triangulation/on.js +13 -13
  384. package/src/triangulation/polygonRings.js +22 -22
  385. package/src/triangulation/validateArea.js +19 -19
  386. package/src/utils/compareDistance.js +11 -11
  387. package/src/utils/yieldTask.js +12 -12
  388. package/src/vector-style/appendQuotedStyleCharacter.js +30 -30
  389. package/src/vector-style/arrayContainsRange.js +18 -18
  390. package/src/vector-style/evaluateBoolean.js +31 -31
  391. package/src/vector-style/evaluateCoalesceOrCase.js +34 -34
  392. package/src/vector-style/evaluateComparison.js +29 -29
  393. package/src/vector-style/evaluateIExpression.js +21 -21
  394. package/src/vector-style/evaluateInput.js +16 -16
  395. package/src/vector-style/evaluateInterpolate.js +36 -36
  396. package/src/vector-style/evaluateMatch.js +21 -21
  397. package/src/vector-style/evaluateMath.js +26 -26
  398. package/src/vector-style/evaluateMembership.js +29 -29
  399. package/src/vector-style/evaluateNegation.js +26 -26
  400. package/src/vector-style/evaluatePrimitive.js +21 -21
  401. package/src/vector-style/evaluateStep.js +20 -20
  402. package/src/vector-style/evaluateStyle.js +43 -43
  403. package/src/vector-style/evaluateToExpression.js +27 -27
  404. package/src/vector-style/fillVectorPaint.js +26 -26
  405. package/src/vector-style/lineVectorPaint.js +31 -31
  406. package/src/vector-style/parseFunctionalColor.js +23 -23
  407. package/src/vector-style/parseHexColor.js +20 -20
  408. package/src/vector-style/parseVectorStyle.js +20 -20
  409. package/src/vector-style/readPaintValue.js +17 -17
  410. package/src/vector-style/removeTrailingCommas.js +19 -19
  411. package/src/vector-style/scaleDashArray.js +25 -25
  412. package/src/vector-style/skipStyleComment.js +20 -20
  413. package/src/vector-style/stripStyleComments.js +28 -28
  414. package/src/vector-style/styleColor.js +18 -18
  415. package/src/vector-style/validateVectorLayers.js +18 -18
  416. package/src/vector-style/vectorPaint.js +17 -17
  417. package/src/vector-style/visibleStyle.js +16 -16
  418. package/src/vector-tiles/appendVectorBatch.js +34 -34
  419. package/src/vector-tiles/attachVectorTileBatch.js +25 -25
  420. package/src/vector-tiles/attachVectorTileBatches.js +26 -26
  421. package/src/vector-tiles/compareVectorLabelPriority.js +11 -11
  422. package/src/vector-tiles/compareVectorTileDistance.js +11 -11
  423. package/src/vector-tiles/createVectorLabel.js +37 -37
  424. package/src/vector-tiles/forwardVectorTileError.js +10 -10
  425. package/src/vector-tiles/loadVectorSprite.js +14 -14
  426. package/src/vector-tiles/loadVectorTile.js +45 -45
  427. package/src/vector-tiles/onVectorTileAdd.js +44 -44
  428. package/src/vector-tiles/onVectorTileMessage.js +15 -15
  429. package/src/vector-tiles/onVectorTileRemove.js +25 -25
  430. package/src/vector-tiles/onVectorTileWorkerError.js +16 -16
  431. package/src/vector-tiles/paintVectorTileBatch.js +18 -18
  432. package/src/vector-tiles/prepareVectorLabel.js +34 -34
  433. package/src/vector-tiles/prepareVectorStyleLayer.js +38 -38
  434. package/src/vector-tiles/prepareVectorTile.js +29 -29
  435. package/src/vector-tiles/projectVectorPaths.js +25 -25
  436. package/src/vector-tiles/projectVectorPoint.js +15 -15
  437. package/src/vector-tiles/projectVectorTriangles.js +28 -28
  438. package/src/vector-tiles/pruneVectorTiles.js +14 -14
  439. package/src/vector-tiles/pumpVectorTiles.js +21 -21
  440. package/src/vector-tiles/readTileJSON.js +27 -27
  441. package/src/vector-tiles/readVectorStyle.js +28 -28
  442. package/src/vector-tiles/refreshVectorTiles.js +8 -8
  443. package/src/vector-tiles/reserveVectorLabelCells.js +14 -14
  444. package/src/vector-tiles/retireVectorTileGroup.js +20 -20
  445. package/src/vector-tiles/revokeVectorWorkerUrl.js +14 -14
  446. package/src/vector-tiles/rotateVectorLabel.js +19 -19
  447. package/src/vector-tiles/rotateVectorLabels.js +9 -9
  448. package/src/vector-tiles/simplifyVectorPath.js +29 -29
  449. package/src/vector-tiles/updateVectorLabelMarker.js +36 -36
  450. package/src/vector-tiles/updateVectorLabelStyle.js +14 -14
  451. package/src/vector-tiles/updateVectorTileLabels.js +33 -33
  452. package/src/vector-tiles/updateVectorTilePaint.js +25 -25
  453. package/src/vector-tiles/updateVectorTiles.js +32 -32
  454. package/src/vector-tiles/validateVectorTileZooms.js +15 -15
  455. package/src/vector-tiles/vectorFeaturePaint.js +25 -25
  456. package/src/vector-tiles/vectorFeaturePaths.js +26 -26
  457. package/src/vector-tiles/vectorFeatureZoom.js +18 -18
  458. package/src/vector-tiles/vectorLabelAnchors.js +31 -31
  459. package/src/vector-tiles/vectorLabelCandidates.js +18 -18
  460. package/src/vector-tiles/vectorLabelCells.js +32 -32
  461. package/src/vector-tiles/vectorLabelIcon.js +38 -38
  462. package/src/vector-tiles/vectorLabelProperty.js +12 -12
  463. package/src/vector-tiles/vectorLabelText.js +19 -19
  464. package/src/vector-tiles/vectorSpriteIcon.js +19 -19
  465. package/src/vector-tiles/vectorStraightRun.js +23 -23
  466. package/src/vector-tiles/vectorStyleDependencies.js +22 -22
  467. package/src/vector-tiles/vectorStyleValue.js +16 -16
  468. package/src/vector-tiles/vectorStyleZoom.js +12 -12
  469. package/src/vector-tiles/vectorTileAwaited.js +17 -17
  470. package/src/vector-tiles/vectorTileOverlaps.js +12 -12
  471. package/src/vector-tiles/vectorTilePaint.js +18 -18
  472. package/src/vector-tiles/vectorTileSettings.js +27 -27
  473. package/src/vector-tiles/vectorTilesIdle.js +11 -11
  474. package/src/vector-tiles/vectorTolerance.js +11 -11
  475. package/src/vector-tiles/wrapVectorLabel.js +17 -17
  476. package/src/vehicles/boatModel.js +35 -35
  477. package/src/vehicles/busModel.js +13 -13
  478. package/src/vehicles/carModel.js +39 -39
  479. package/src/walk/initializeWalkControl.js +12 -12
  480. package/src/walk/isWalkBlocked.js +15 -15
  481. package/src/walk/landWalker.js +41 -41
  482. package/src/walk/moveWalker.js +37 -37
  483. package/src/walk/onAddWalkControl.js +40 -40
  484. package/src/walk/onRemoveWalkControl.js +17 -17
  485. package/src/walk/onWalkBlur.js +3 -3
  486. package/src/walk/onWalkTerrain.js +3 -3
  487. package/src/walk/resolveWalkerPosition.js +33 -33
  488. package/src/walk/stepWalkerHeight.js +18 -18
  489. package/src/walk/toggleWalking.js +4 -4
  490. package/src/walk/updateWalkerFrame.js +29 -29
  491. package/src/walk/updateWalkerView.js +31 -31
  492. package/src/weakmaps/cameraHandlersByMap.js +6 -6
  493. package/src/weakmaps/geometryWorkersByMap.js +6 -6
  494. package/src/weakmaps/nativeProgramsByRenderer.js +6 -6
  495. package/src/weakmaps/pathProjectionByMap.js +6 -6
  496. package/src/weakmaps/streamTerrainByLayer.js +6 -6
  497. package/src/weakmaps/streamTerrainByMap.js +6 -6
  498. package/src/weakmaps/sunByMap.js +6 -6
  499. package/src/weakmaps/vectorTileOptionsByLayer.js +6 -6
  500. package/src/weakmaps/vectorWorkerByLayer.js +6 -6
  501. package/src/weakmaps/walkByMap.js +6 -6
  502. package/src/weakmaps/workerMapByLayer.js +6 -6
  503. package/src/workers/acquireGeometryWorker.js +39 -39
  504. package/src/workers/buildAreaInWorker.js +24 -24
  505. package/src/workers/closeGeometryWorkers.js +16 -16
  506. package/src/workers/cogWorker.js +27 -27
  507. package/src/workers/createGeometryWorker.js +30 -30
  508. package/src/workers/geometryWorker.js +34 -34
  509. package/src/workers/getCogInWorker.js +18 -18
  510. package/src/workers/modelWorker.js +17 -17
  511. package/src/workers/openCogInWorker.js +22 -22
  512. package/src/workers/runSourceWorker.js +44 -44
  513. package/src/workers/settleGeometryWorker.js +16 -16
  514. package/src/workers/startGeometryWorker.js +23 -23
  515. package/src/workers/vectorTileWorker.js +15 -15
@@ -1,38 +1,38 @@
1
- import { L } from '../globals/L.js';
2
- import { vectorSpriteIcon } from './vectorSpriteIcon.js';
3
- import { wrapVectorLabel } from './wrapVectorLabel.js';
4
-
5
- /**
6
- * Create a sprite or SVG text icon for a vector label.
7
- *
8
- * @param {Object} label Label candidate and appearance.
9
- * @param {Object} sheet Sprite sheet, when needed.
10
- *
11
- * @returns {Object} Leaflet icon.
12
- */
13
- export function vectorLabelIcon(label, sheet) {
14
- if (label.icon) return vectorSpriteIcon(label, sheet);
15
- const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
16
- const lines = label.along ? /* alloc */ [label.text] : wrapVectorLabel(label.text);
17
- let longest = 0, line, key, text, index;
18
- for (line of lines) longest = Math.max(longest, Array.from(line).length);
19
- const width = Math.max(40, longest * label.size * 0.65 + 12);
20
- const lineHeight = label.size * 1.2, height = lines.length * lineHeight + 12;
21
- svg.setAttribute('width', width); svg.setAttribute('height', height);
22
- const attributes = /* alloc */ {
23
- x: width / 2, 'text-anchor': 'middle',
24
- 'font-family': 'sans-serif', 'font-size': label.size,
25
- fill: label.color, stroke: label.halo, 'stroke-width': label.haloWidth * 2, 'paint-order': 'stroke',
26
- };
27
- for (index = 0; index < lines.length; index++) {
28
- text = document.createElementNS(svg.namespaceURI, 'text');
29
- for (key of Object.keys(attributes)) text.setAttribute(key, attributes[key]);
30
- text.setAttribute('y', height / 2 + (index - (lines.length - 1) / 2) * lineHeight + label.size * 0.35);
31
- text.textContent = lines[index];
32
- svg.append(text);
33
- }
34
- return /* alloc */ new L.Icon(/* alloc */ {
35
- iconUrl: `data:image/svg+xml;charset=utf-8,${encodeURIComponent((/* alloc */ new XMLSerializer()).serializeToString(svg))}`,
36
- iconSize: /* alloc */ [width, height], iconAnchor: /* alloc */ [width / 2, height / 2],
37
- });
38
- }
1
+ import { L } from '../globals/L.js';
2
+ import { vectorSpriteIcon } from './vectorSpriteIcon.js';
3
+ import { wrapVectorLabel } from './wrapVectorLabel.js';
4
+
5
+ /**
6
+ * Create a sprite or SVG text icon for a vector label.
7
+ *
8
+ * @param {Object} label Label candidate and appearance.
9
+ * @param {Object} sheet Sprite sheet, when needed.
10
+ *
11
+ * @returns {Object} Leaflet icon.
12
+ */
13
+ export function vectorLabelIcon(label, sheet) {
14
+ if (label.icon) return vectorSpriteIcon(label, sheet);
15
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
16
+ const lines = label.along ? /* alloc */ [label.text] : wrapVectorLabel(label.text);
17
+ let longest = 0, line, key, text, index;
18
+ for (line of lines) longest = Math.max(longest, Array.from(line).length);
19
+ const width = Math.max(40, longest * label.size * 0.65 + 12);
20
+ const lineHeight = label.size * 1.2, height = lines.length * lineHeight + 12;
21
+ svg.setAttribute('width', width); svg.setAttribute('height', height);
22
+ const attributes = /* alloc */ {
23
+ x: width / 2, 'text-anchor': 'middle',
24
+ 'font-family': 'sans-serif', 'font-size': label.size,
25
+ fill: label.color, stroke: label.halo, 'stroke-width': label.haloWidth * 2, 'paint-order': 'stroke',
26
+ };
27
+ for (index = 0; index < lines.length; index++) {
28
+ text = document.createElementNS(svg.namespaceURI, 'text');
29
+ for (key of Object.keys(attributes)) text.setAttribute(key, attributes[key]);
30
+ text.setAttribute('y', height / 2 + (index - (lines.length - 1) / 2) * lineHeight + label.size * 0.35);
31
+ text.textContent = lines[index];
32
+ svg.append(text);
33
+ }
34
+ return /* alloc */ new L.Icon(/* alloc */ {
35
+ iconUrl: `data:image/svg+xml;charset=utf-8,${encodeURIComponent((/* alloc */ new XMLSerializer()).serializeToString(svg))}`,
36
+ iconSize: /* alloc */ [width, height], iconAnchor: /* alloc */ [width / 2, height / 2],
37
+ });
38
+ }
@@ -1,12 +1,12 @@
1
- /**
2
- * Replace a label template placeholder with its feature property.
3
- *
4
- * @param {Object} properties Feature properties.
5
- * @param {string} match Complete placeholder match.
6
- * @param {string} key Property name inside the placeholder.
7
- *
8
- * @returns {*} Property value, or an empty string when absent.
9
- */
10
- export function vectorLabelProperty(properties, match, key) {
11
- return properties[key] ?? '';
12
- }
1
+ /**
2
+ * Replace a label template placeholder with its feature property.
3
+ *
4
+ * @param {Object} properties Feature properties.
5
+ * @param {string} match Complete placeholder match.
6
+ * @param {string} key Property name inside the placeholder.
7
+ *
8
+ * @returns {*} Property value, or an empty string when absent.
9
+ */
10
+ export function vectorLabelProperty(properties, match, key) {
11
+ return properties[key] ?? '';
12
+ }
@@ -1,19 +1,19 @@
1
- import { evaluateStyle } from '../vector-style/evaluateStyle.js';
2
- import { vectorLabelProperty } from './vectorLabelProperty.js';
3
-
4
- /**
5
- * Evaluate a label's text, expand property placeholders and apply uppercase transformation.
6
- *
7
- * @param {Object} entry Style layer entry.
8
- * @param {Object} properties Feature properties.
9
- * @param {number} zoom Style zoom.
10
- *
11
- * @returns {string} Label text.
12
- */
13
- export function vectorLabelText(entry, properties, zoom) {
14
- let text = entry.layout?.['text-field'];
15
- if (Array.isArray(text)) text = evaluateStyle(text, properties, zoom);
16
- if (typeof text !== 'string') text = '';
17
- text = text.replace(/\{([^}]+)\}/g, vectorLabelProperty.bind(null, properties));
18
- return entry.layout?.['text-transform'] === 'uppercase' ? text.toUpperCase() : text;
19
- }
1
+ import { evaluateStyle } from '../vector-style/evaluateStyle.js';
2
+ import { vectorLabelProperty } from './vectorLabelProperty.js';
3
+
4
+ /**
5
+ * Evaluate a label's text, expand property placeholders and apply uppercase transformation.
6
+ *
7
+ * @param {Object} entry Style layer entry.
8
+ * @param {Object} properties Feature properties.
9
+ * @param {number} zoom Style zoom.
10
+ *
11
+ * @returns {string} Label text.
12
+ */
13
+ export function vectorLabelText(entry, properties, zoom) {
14
+ let text = entry.layout?.['text-field'];
15
+ if (Array.isArray(text)) text = evaluateStyle(text, properties, zoom);
16
+ if (typeof text !== 'string') text = '';
17
+ text = text.replace(/\{([^}]+)\}/g, vectorLabelProperty.bind(null, properties));
18
+ return entry.layout?.['text-transform'] === 'uppercase' ? text.toUpperCase() : text;
19
+ }
@@ -1,19 +1,19 @@
1
- import { L } from '../globals/L.js';
2
-
3
- /**
4
- * Create a Leaflet icon displaying a sprite sheet region with the label offset.
5
- *
6
- * @param {Object} label Label candidate with sprite name and offset.
7
- * @param {Object} sheet Sprite URL and index.
8
- *
9
- * @returns {Object} Leaflet div icon.
10
- */
11
- export function vectorSpriteIcon(label, sheet) {
12
- const { x, y, width, height } = sheet.index[label.icon], [dx, dy] = label.iconOffset;
13
- return /* alloc */ new L.DivIcon(/* alloc */ {
14
- className: '',
15
- html: `<div style="width:${width}px;height:${height}px;background:url(${sheet.url}) -${x}px -${y}px"></div>`,
16
- iconSize: /* alloc */ [width, height],
17
- iconAnchor: /* alloc */ [width / 2 - dx, height / 2 - dy],
18
- });
19
- }
1
+ import { L } from '../globals/L.js';
2
+
3
+ /**
4
+ * Create a Leaflet icon displaying a sprite sheet region with the label offset.
5
+ *
6
+ * @param {Object} label Label candidate with sprite name and offset.
7
+ * @param {Object} sheet Sprite URL and index.
8
+ *
9
+ * @returns {Object} Leaflet div icon.
10
+ */
11
+ export function vectorSpriteIcon(label, sheet) {
12
+ const { x, y, width, height } = sheet.index[label.icon], [dx, dy] = label.iconOffset;
13
+ return /* alloc */ new L.DivIcon(/* alloc */ {
14
+ className: '',
15
+ html: `<div style="width:${width}px;height:${height}px;background:url(${sheet.url}) -${x}px -${y}px"></div>`,
16
+ iconSize: /* alloc */ [width, height],
17
+ iconAnchor: /* alloc */ [width / 2 - dx, height / 2 - dy],
18
+ });
19
+ }
@@ -1,23 +1,23 @@
1
- /**
2
- * Measure the path from a segment point until it turns about 45 degrees from that segment.
3
- *
4
- * @param {Array} path Tile-coordinate points.
5
- * @param {number} i Segment end index.
6
- * @param {Array<number>} point Point on the segment.
7
- * @param {number} step Direction along the path, 1 or -1.
8
- *
9
- * @returns {number} Straight-run distance.
10
- */
11
- export function vectorStraightRun(path, i, point, step) {
12
- const base = Math.atan2(path[i][1] - path[i - 1][1], path[i][0] - path[i - 1][0]);
13
- let j = step > 0 ? i : i - 1, previous = point, run = 0, next;
14
- while (j >= 0 && j < path.length) {
15
- run += Math.hypot(path[j][0] - previous[0], path[j][1] - previous[1]);
16
- previous = path[j];
17
- next = j + step;
18
- if (next < 0 || next >= path.length) break;
19
- if (Math.cos(Math.atan2(path[next][1] - path[j][1], path[next][0] - path[j][0]) - base + (step < 0 ? Math.PI : 0)) < 0.7) break;
20
- j = next;
21
- }
22
- return run;
23
- }
1
+ /**
2
+ * Measure the path from a segment point until it turns about 45 degrees from that segment.
3
+ *
4
+ * @param {Array} path Tile-coordinate points.
5
+ * @param {number} i Segment end index.
6
+ * @param {Array<number>} point Point on the segment.
7
+ * @param {number} step Direction along the path, 1 or -1.
8
+ *
9
+ * @returns {number} Straight-run distance.
10
+ */
11
+ export function vectorStraightRun(path, i, point, step) {
12
+ const base = Math.atan2(path[i][1] - path[i - 1][1], path[i][0] - path[i - 1][0]);
13
+ let j = step > 0 ? i : i - 1, previous = point, run = 0, next;
14
+ while (j >= 0 && j < path.length) {
15
+ run += Math.hypot(path[j][0] - previous[0], path[j][1] - previous[1]);
16
+ previous = path[j];
17
+ next = j + step;
18
+ if (next < 0 || next >= path.length) break;
19
+ if (Math.cos(Math.atan2(path[next][1] - path[j][1], path[next][0] - path[j][0]) - base + (step < 0 ? Math.PI : 0)) < 0.7) break;
20
+ j = next;
21
+ }
22
+ return run;
23
+ }
@@ -1,22 +1,22 @@
1
- /**
2
- * Collect feature property names referenced by paint and filter expressions.
3
- *
4
- * @param {Object} entry Style layer entry.
5
- *
6
- * @returns {Set<string>} Referenced property names.
7
- */
8
- export function vectorStyleDependencies(entry) {
9
- const dependencies = /* alloc */ new Set();
10
- const expressions = /* alloc */ [entry.paint, entry.filter];
11
- let value, child;
12
- while (expressions.length) {
13
- value = expressions.pop();
14
- if (!value || typeof value !== 'object') continue;
15
- if (Array.isArray(value) && typeof value[1] === 'string' &&
16
- /* alloc */ ['get', 'has', '==', '!=', '<', '>', '<=', '>=', 'in', '!in'].includes(value[0])) {
17
- dependencies.add(value[1]);
18
- }
19
- for (child of Object.values(value)) expressions.push(child);
20
- }
21
- return dependencies;
22
- }
1
+ /**
2
+ * Collect feature property names referenced by paint and filter expressions.
3
+ *
4
+ * @param {Object} entry Style layer entry.
5
+ *
6
+ * @returns {Set<string>} Referenced property names.
7
+ */
8
+ export function vectorStyleDependencies(entry) {
9
+ const dependencies = /* alloc */ new Set();
10
+ const expressions = /* alloc */ [entry.paint, entry.filter];
11
+ let value, child;
12
+ while (expressions.length) {
13
+ value = expressions.pop();
14
+ if (!value || typeof value !== 'object') continue;
15
+ if (Array.isArray(value) && typeof value[1] === 'string' &&
16
+ /* alloc */ ['get', 'has', '==', '!=', '<', '>', '<=', '>=', 'in', '!in'].includes(value[0])) {
17
+ dependencies.add(value[1]);
18
+ }
19
+ for (child of Object.values(value)) expressions.push(child);
20
+ }
21
+ return dependencies;
22
+ }
@@ -1,16 +1,16 @@
1
- import { evaluateStyle } from '../vector-style/evaluateStyle.js';
2
-
3
- /**
4
- * Evaluate a style property or return its fallback when absent.
5
- *
6
- * @param {Object} object Style properties.
7
- * @param {string} key Property name.
8
- * @param {*} fallback Default value.
9
- * @param {Object} properties Feature properties.
10
- * @param {number} zoom Style zoom.
11
- *
12
- * @returns {*} Evaluated or fallback value.
13
- */
14
- export function vectorStyleValue(object, key, fallback, properties, zoom) {
15
- return object?.[key] === undefined ? fallback : evaluateStyle(object[key], properties, zoom);
16
- }
1
+ import { evaluateStyle } from '../vector-style/evaluateStyle.js';
2
+
3
+ /**
4
+ * Evaluate a style property or return its fallback when absent.
5
+ *
6
+ * @param {Object} object Style properties.
7
+ * @param {string} key Property name.
8
+ * @param {*} fallback Default value.
9
+ * @param {Object} properties Feature properties.
10
+ * @param {number} zoom Style zoom.
11
+ *
12
+ * @returns {*} Evaluated or fallback value.
13
+ */
14
+ export function vectorStyleValue(object, key, fallback, properties, zoom) {
15
+ return object?.[key] === undefined ? fallback : evaluateStyle(object[key], properties, zoom);
16
+ }
@@ -1,12 +1,12 @@
1
- import { vectorTileOptionsByLayer } from '../weakmaps/vectorTileOptionsByLayer.js';
2
-
3
- /**
4
- * Convert map zoom to style zoom using the configured offset.
5
- *
6
- * @param {Object} layer Vector tile layer; an offset of -1 maps 256px tiles to 512px style zooms.
7
- *
8
- * @returns {number} Style zoom.
9
- */
10
- export function vectorStyleZoom(layer) {
11
- return layer._map.getZoom() + (vectorTileOptionsByLayer.get(layer).styleZoomOffset ?? 0);
12
- }
1
+ import { vectorTileOptionsByLayer } from '../weakmaps/vectorTileOptionsByLayer.js';
2
+
3
+ /**
4
+ * Convert map zoom to style zoom using the configured offset.
5
+ *
6
+ * @param {Object} layer Vector tile layer; an offset of -1 maps 256px tiles to 512px style zooms.
7
+ *
8
+ * @returns {number} Style zoom.
9
+ */
10
+ export function vectorStyleZoom(layer) {
11
+ return layer._map.getZoom() + (vectorTileOptionsByLayer.get(layer).styleZoomOffset ?? 0);
12
+ }
@@ -1,17 +1,17 @@
1
- import { vectorTileOverlaps } from './vectorTileOverlaps.js';
2
-
3
- /**
4
- * Check whether a stale tile is needed while an overlapping tile is loading.
5
- *
6
- * @param {Object} layer Vector tile layer.
7
- * @param {Object} stale Existing tile.
8
- *
9
- * @returns {boolean} Whether a needed overlapping tile has no group yet.
10
- */
11
- export function vectorTileAwaited(layer, stale) {
12
- let tile;
13
- for (tile of layer.tiles.values()) {
14
- if (tile.needed && !tile.group && vectorTileOverlaps(tile.coords, stale.coords)) return true;
15
- }
16
- return false;
17
- }
1
+ import { vectorTileOverlaps } from './vectorTileOverlaps.js';
2
+
3
+ /**
4
+ * Check whether a stale tile is needed while an overlapping tile is loading.
5
+ *
6
+ * @param {Object} layer Vector tile layer.
7
+ * @param {Object} stale Existing tile.
8
+ *
9
+ * @returns {boolean} Whether a needed overlapping tile has no group yet.
10
+ */
11
+ export function vectorTileAwaited(layer, stale) {
12
+ let tile;
13
+ for (tile of layer.tiles.values()) {
14
+ if (tile.needed && !tile.group && vectorTileOverlaps(tile.coords, stale.coords)) return true;
15
+ }
16
+ return false;
17
+ }
@@ -1,12 +1,12 @@
1
- /**
2
- * Check whether two tile coordinates overlap across zoom levels.
3
- *
4
- * @param {Object} a First tile coordinates.
5
- * @param {Object} b Second tile coordinates.
6
- *
7
- * @returns {boolean} Whether the tiles overlap.
8
- */
9
- export function vectorTileOverlaps(a, b) {
10
- const shift = a.z - b.z;
11
- return shift >= 0 ? a.x >> shift === b.x && a.y >> shift === b.y : b.x >> -shift === a.x && b.y >> -shift === a.y;
12
- }
1
+ /**
2
+ * Check whether two tile coordinates overlap across zoom levels.
3
+ *
4
+ * @param {Object} a First tile coordinates.
5
+ * @param {Object} b Second tile coordinates.
6
+ *
7
+ * @returns {boolean} Whether the tiles overlap.
8
+ */
9
+ export function vectorTileOverlaps(a, b) {
10
+ const shift = a.z - b.z;
11
+ return shift >= 0 ? a.x >> shift === b.x && a.y >> shift === b.y : b.x >> -shift === a.x && b.y >> -shift === a.y;
12
+ }
@@ -1,18 +1,18 @@
1
- import { vectorPaint } from '../vector-style/vectorPaint.js';
2
- import { visibleStyle } from '../vector-style/visibleStyle.js';
3
-
4
- /**
5
- * Evaluate batch paint and make it transparent when its style is not visible.
6
- *
7
- * @param {Object} batch Vector batch and style properties.
8
- * @param {number} zoom Style zoom.
9
- *
10
- * @returns {Object} Evaluated paint.
11
- */
12
- export function vectorTilePaint(batch, zoom) {
13
- const paint = vectorPaint(batch.entry, batch.properties, zoom);
14
- if (!visibleStyle(batch.entry, batch.properties, zoom)) {
15
- paint.opacity = 0; paint.fillOpacity = 0;
16
- }
17
- return paint;
18
- }
1
+ import { vectorPaint } from '../vector-style/vectorPaint.js';
2
+ import { visibleStyle } from '../vector-style/visibleStyle.js';
3
+
4
+ /**
5
+ * Evaluate batch paint and make it transparent when its style is not visible.
6
+ *
7
+ * @param {Object} batch Vector batch and style properties.
8
+ * @param {number} zoom Style zoom.
9
+ *
10
+ * @returns {Object} Evaluated paint.
11
+ */
12
+ export function vectorTilePaint(batch, zoom) {
13
+ const paint = vectorPaint(batch.entry, batch.properties, zoom);
14
+ if (!visibleStyle(batch.entry, batch.properties, zoom)) {
15
+ paint.opacity = 0; paint.fillOpacity = 0;
16
+ }
17
+ return paint;
18
+ }
@@ -1,27 +1,27 @@
1
- import { readTileJSON } from './readTileJSON.js';
2
- import { readVectorStyle } from './readVectorStyle.js';
3
- import { validateVectorTileZooms } from './validateVectorTileZooms.js';
4
-
5
- /**
6
- * Resolve and validate vector tile source options, metadata and style.
7
- *
8
- * @param {Object} options Vector tile source options.
9
- *
10
- * @returns {Promise<Object>} Resolved settings.
11
- *
12
- * @throws {TypeError} If source options are absent or not an object.
13
- * @throws {Error} If the XYZ tile URL template is invalid.
14
- */
15
- export async function vectorTileSettings(options) {
16
- if (!options || typeof options !== 'object') throw /* alloc */ new TypeError('Vector tiles require source options');
17
- if (options.tileJSON) options = await readTileJSON(options);
18
- let { url, style, minNativeZoom = 0, maxNativeZoom = 14, maxZoom = 19 } = options;
19
- let key;
20
- if (typeof url === 'string') url = url.replaceAll(/%7B([zxy])%7D/gi, '{$1}');
21
- for (key of /* alloc */ ['{z}', '{x}', '{y}']) {
22
- if (typeof url !== 'string' || !url.includes(key)) throw /* alloc */ new Error('Vector tiles require an XYZ URL template');
23
- }
24
- validateVectorTileZooms(minNativeZoom, maxNativeZoom, maxZoom);
25
- style = await readVectorStyle(style);
26
- return /* alloc */ { ...options, url, style, minNativeZoom, maxNativeZoom, maxZoom };
27
- }
1
+ import { readTileJSON } from './readTileJSON.js';
2
+ import { readVectorStyle } from './readVectorStyle.js';
3
+ import { validateVectorTileZooms } from './validateVectorTileZooms.js';
4
+
5
+ /**
6
+ * Resolve and validate vector tile source options, metadata and style.
7
+ *
8
+ * @param {Object} options Vector tile source options.
9
+ *
10
+ * @returns {Promise<Object>} Resolved settings.
11
+ *
12
+ * @throws {TypeError} If source options are absent or not an object.
13
+ * @throws {Error} If the XYZ tile URL template is invalid.
14
+ */
15
+ export async function vectorTileSettings(options) {
16
+ if (!options || typeof options !== 'object') throw /* alloc */ new TypeError('Vector tiles require source options');
17
+ if (options.tileJSON) options = await readTileJSON(options);
18
+ let { url, style, minNativeZoom = 0, maxNativeZoom = 14, maxZoom = 19 } = options;
19
+ let key;
20
+ if (typeof url === 'string') url = url.replaceAll(/%7B([zxy])%7D/gi, '{$1}');
21
+ for (key of /* alloc */ ['{z}', '{x}', '{y}']) {
22
+ if (typeof url !== 'string' || !url.includes(key)) throw /* alloc */ new Error('Vector tiles require an XYZ URL template');
23
+ }
24
+ validateVectorTileZooms(minNativeZoom, maxNativeZoom, maxZoom);
25
+ style = await readVectorStyle(style);
26
+ return /* alloc */ { ...options, url, style, minNativeZoom, maxNativeZoom, maxZoom };
27
+ }
@@ -1,11 +1,11 @@
1
- /**
2
- * Check that the vector tile session is current and the map has settled.
3
- *
4
- * @param {Object} layer Vector tile layer.
5
- * @param {Object} session Session identity.
6
- *
7
- * @returns {boolean} Whether the session is idle.
8
- */
9
- export function vectorTilesIdle(layer, session) {
10
- return layer.session === session && performance.now() - (layer.changedAt || 0) >= 180;
11
- }
1
+ /**
2
+ * Check that the vector tile session is current and the map has settled.
3
+ *
4
+ * @param {Object} layer Vector tile layer.
5
+ * @param {Object} session Session identity.
6
+ *
7
+ * @returns {boolean} Whether the session is idle.
8
+ */
9
+ export function vectorTilesIdle(layer, session) {
10
+ return layer.session === session && performance.now() - (layer.changedAt || 0) >= 180;
11
+ }
@@ -1,11 +1,11 @@
1
- /**
2
- * Compute a simplification tolerance of about 0.7 screen pixels in tile units.
3
- *
4
- * @param {Object} job Vector tile preparation job.
5
- * @param {Object} layer Decoded source layer.
6
- *
7
- * @returns {number} Tolerance in tile units.
8
- */
9
- export function vectorTolerance(job, layer) {
10
- return layer.extent / 256 / 2 ** Math.max(-1, job.mapZoom - job.coords.z) * 0.7;
11
- }
1
+ /**
2
+ * Compute a simplification tolerance of about 0.7 screen pixels in tile units.
3
+ *
4
+ * @param {Object} job Vector tile preparation job.
5
+ * @param {Object} layer Decoded source layer.
6
+ *
7
+ * @returns {number} Tolerance in tile units.
8
+ */
9
+ export function vectorTolerance(job, layer) {
10
+ return layer.extent / 256 / 2 ** Math.max(-1, job.mapZoom - job.coords.z) * 0.7;
11
+ }
@@ -1,17 +1,17 @@
1
- /**
2
- * Greedily wrap label words at 10 ems, estimating glyph width at 0.52 em.
3
- *
4
- * @param {string} text Label text.
5
- *
6
- * @returns {Array<string>} Wrapped lines.
7
- */
8
- export function wrapVectorLabel(text) {
9
- const limit = Math.floor(10 / 0.52), lines = /* alloc */ [];
10
- let line = '', word;
11
- for (word of text.split(' ')) {
12
- if (line && Array.from(`${line} ${word}`).length > limit) { lines.push(line); line = word; }
13
- else line = line ? `${line} ${word}` : word;
14
- }
15
- lines.push(line);
16
- return lines;
17
- }
1
+ /**
2
+ * Greedily wrap label words at 10 ems, estimating glyph width at 0.52 em.
3
+ *
4
+ * @param {string} text Label text.
5
+ *
6
+ * @returns {Array<string>} Wrapped lines.
7
+ */
8
+ export function wrapVectorLabel(text) {
9
+ const limit = Math.floor(10 / 0.52), lines = /* alloc */ [];
10
+ let line = '', word;
11
+ for (word of text.split(' ')) {
12
+ if (line && Array.from(`${line} ${word}`).length > limit) { lines.push(line); line = word; }
13
+ else line = line ? `${line} ${word}` : word;
14
+ }
15
+ lines.push(line);
16
+ return lines;
17
+ }
@@ -1,35 +1,35 @@
1
- import { hull } from '../globals/hull.js';
2
- import { white } from '../globals/white.js';
3
- import { glass } from '../globals/glass.js';
4
- import { box } from '../geometry/box.js';
5
- import { mirror } from './mirrorVehiclePart.js';
6
- import { boatBenches } from './boatBenches.js';
7
-
8
- /**
9
- * Build the geometry parts for a panoramic river cruiser, about 60 by 11 metres.
10
- *
11
- * @returns {Array} Extrusion parts for the hull, deck and fittings.
12
- */
13
- export function boatModel() {
14
- return /* alloc */ [
15
- /* alloc */ [
16
- hull, 0, 0.8, /* alloc */ [0.1, 0.16, 0.26]],
17
- /* alloc */ [hull, 0.8, 1.4, white],
18
- /* alloc */ [box(-5, 5, -18, 26), 1.4, 3.7, glass, box(-4.6, 4.6, -17.4, 25.6)],
19
- ...mirror(4.64, 4.74, -17, 25, 3.25, 3.45, /* alloc */ [1.6, 1.25, 0.8]),
20
- /* alloc */ [box(-4.8, 4.8, -17.8, 25.8), 3.7, 3.9, white],
21
- ...boatBenches(),
22
- ...mirror(4.65, 4.8, -13.6, 25.8, 3.9, 4.8, white),
23
- /* alloc */ [box(-4.8, 4.8, 25.65, 25.8), 3.9, 4.8, white],
24
- /* alloc */ [box(-2.2, 2.2, -17.6, -14), 3.9, 4.7, white],
25
- /* alloc */ [box(-2.2, 2.2, -17.6, -14), 4.7, 5.5, glass],
26
- /* alloc */ [box(-2.5, 2.5, -18, -13.6), 5.5, 5.7, white],
27
- /* alloc */ [
28
- box(-2.45, -2.2, -16.2, -15.8), 5, 5.3, /* alloc */ [2, 0.15, 0.1]],
29
- /* alloc */ [
30
- box(2.2, 2.45, -16.2, -15.8), 5, 5.3, /* alloc */ [0.1, 2, 0.4]],
31
- /* alloc */ [box(-0.1, 0.1, -15.9, -15.7), 5.7, 6.6, white],
32
- /* alloc */ [
33
- box(-0.15, 0.15, -15.95, -15.65), 6.6, 6.8, /* alloc */ [2, 2, 1.9]],
34
- ];
35
- }
1
+ import { hull } from '../globals/hull.js';
2
+ import { white } from '../globals/white.js';
3
+ import { glass } from '../globals/glass.js';
4
+ import { box } from '../geometry/box.js';
5
+ import { mirror } from './mirrorVehiclePart.js';
6
+ import { boatBenches } from './boatBenches.js';
7
+
8
+ /**
9
+ * Build the geometry parts for a panoramic river cruiser, about 60 by 11 metres.
10
+ *
11
+ * @returns {Array} Extrusion parts for the hull, deck and fittings.
12
+ */
13
+ export function boatModel() {
14
+ return /* alloc */ [
15
+ /* alloc */ [
16
+ hull, 0, 0.8, /* alloc */ [0.1, 0.16, 0.26]],
17
+ /* alloc */ [hull, 0.8, 1.4, white],
18
+ /* alloc */ [box(-5, 5, -18, 26), 1.4, 3.7, glass, box(-4.6, 4.6, -17.4, 25.6)],
19
+ ...mirror(4.64, 4.74, -17, 25, 3.25, 3.45, /* alloc */ [1.6, 1.25, 0.8]),
20
+ /* alloc */ [box(-4.8, 4.8, -17.8, 25.8), 3.7, 3.9, white],
21
+ ...boatBenches(),
22
+ ...mirror(4.65, 4.8, -13.6, 25.8, 3.9, 4.8, white),
23
+ /* alloc */ [box(-4.8, 4.8, 25.65, 25.8), 3.9, 4.8, white],
24
+ /* alloc */ [box(-2.2, 2.2, -17.6, -14), 3.9, 4.7, white],
25
+ /* alloc */ [box(-2.2, 2.2, -17.6, -14), 4.7, 5.5, glass],
26
+ /* alloc */ [box(-2.5, 2.5, -18, -13.6), 5.5, 5.7, white],
27
+ /* alloc */ [
28
+ box(-2.45, -2.2, -16.2, -15.8), 5, 5.3, /* alloc */ [2, 0.15, 0.1]],
29
+ /* alloc */ [
30
+ box(2.2, 2.45, -16.2, -15.8), 5, 5.3, /* alloc */ [0.1, 2, 0.4]],
31
+ /* alloc */ [box(-0.1, 0.1, -15.9, -15.7), 5.7, 6.6, white],
32
+ /* alloc */ [
33
+ box(-0.15, 0.15, -15.95, -15.65), 6.6, 6.8, /* alloc */ [2, 2, 1.9]],
34
+ ];
35
+ }