leaflet-city-mapper 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (515) hide show
  1. package/README.md +1 -1
  2. package/dist/leaflet-city-mapper-src.js.map +1 -1
  3. package/dist/leaflet-city-mapper-worker-src.js.map +1 -1
  4. package/dist/leaflet-city-mapper-worker.js.map +1 -1
  5. package/dist/leaflet-city-mapper.js.map +1 -1
  6. package/libs/leaflet-lens.js +151 -151
  7. package/libs/leaflet.js +3 -3
  8. package/libs/openlayers-bindings.js +1129 -1129
  9. package/libs/openlayers-bindings.min.js.map +1 -1
  10. package/package.json +2 -4
  11. package/src/animations/cancelCameraAnimation.js +19 -19
  12. package/src/animations/mapStopPitchBearingAnimation.js +10 -10
  13. package/src/animations/scheduleCameraAnimation.js +15 -15
  14. package/src/animations/scheduleMarkerPan.js +14 -14
  15. package/src/animations/updateZoomCamera.js +25 -25
  16. package/src/archives/findDirectoryEntry.js +17 -17
  17. package/src/archives/findTile.js +45 -45
  18. package/src/archives/getDirectoryEntries.js +30 -30
  19. package/src/archives/getTileData.js +26 -26
  20. package/src/archives/readArchiveRange.js +48 -48
  21. package/src/astronomy/solarTime.js +21 -21
  22. package/src/camera/cameraMapReady.js +9 -9
  23. package/src/camera/cleanupCameraMap.js +13 -13
  24. package/src/camera/constrainCameraToBounds.js +3 -3
  25. package/src/camera/createSceneCamera.js +25 -25
  26. package/src/camera/getBearing.js +10 -10
  27. package/src/camera/getPitch.js +10 -10
  28. package/src/camera/mapGetBoundsCenterZoom.js +14 -14
  29. package/src/camera/mapLimitOffset.js +17 -17
  30. package/src/camera/mapPanBy.js +14 -14
  31. package/src/camera/setBearing.js +13 -13
  32. package/src/camera/setPitch.js +13 -13
  33. package/src/cog/decodeCogTile.js +37 -37
  34. package/src/cog/finiteCogValues.js +12 -12
  35. package/src/cog/getCogAssetEntry.js +26 -26
  36. package/src/cog/getCogBase.js +22 -22
  37. package/src/cog/getCogHeader.js +10 -10
  38. package/src/cog/getCogProfile.js +25 -25
  39. package/src/cog/getCogTile.js +25 -25
  40. package/src/cog/getColorTile.js +38 -38
  41. package/src/cog/getElevationTile.js +29 -29
  42. package/src/cog/hasCogProjection.js +16 -16
  43. package/src/cog/initCog.js +13 -13
  44. package/src/cog/invalidCogFullResponse.js +10 -10
  45. package/src/cog/openCog.js +40 -40
  46. package/src/cog/openCogAsset.js +22 -22
  47. package/src/cog/readCog.js +39 -39
  48. package/src/cog/readCogBlock.js +19 -19
  49. package/src/cog/readCogBody.js +30 -30
  50. package/src/cog/readCogDirectories.js +32 -32
  51. package/src/cog/readCogDirectory.js +34 -34
  52. package/src/cog/readCogLevel.js +36 -36
  53. package/src/cog/readCogTag.js +28 -28
  54. package/src/cog/validCogDimensions.js +15 -15
  55. package/src/cog/validCogEncoding.js +18 -18
  56. package/src/cog/validCogGeoArrays.js +17 -17
  57. package/src/cog/validCogGrid.js +22 -22
  58. package/src/cog/validCogTileCoordinates.js +13 -13
  59. package/src/cog/validateCogContainer.js +17 -17
  60. package/src/cog/validateCogContentRange.js +18 -18
  61. package/src/cog/validateCogOffsets.js +19 -19
  62. package/src/cog/validateCogRange.js +16 -16
  63. package/src/cog/validateCogResponse.js +26 -26
  64. package/src/collision/collectIntersections.js +41 -41
  65. package/src/collision/hiddenLightHit.js +19 -19
  66. package/src/collision/indexTriangle.js +18 -18
  67. package/src/collision/insideMesh.js +47 -47
  68. package/src/collision/insideWalker.js +52 -52
  69. package/src/collision/intersectMeshes.js +40 -40
  70. package/src/collision/localRay.js +31 -31
  71. package/src/collision/mergeHits.js +19 -19
  72. package/src/collision/rayBounds.js +28 -28
  73. package/src/collision/readTriangle.js +32 -32
  74. package/src/collision/trafficCollision.js +23 -23
  75. package/src/collision/transformTriangle.js +18 -18
  76. package/src/collision/triangleDistance.js +34 -34
  77. package/src/collision/vertexCount.js +11 -11
  78. package/src/collision/worldHit.js +30 -30
  79. package/src/controls/acceptPitchDrag.js +10 -10
  80. package/src/controls/acceptRotateDrag.js +9 -9
  81. package/src/controls/addCameraHandler.js +18 -18
  82. package/src/controls/adjustCameraDrag.js +13 -13
  83. package/src/controls/cameraDragContextMenu.js +12 -12
  84. package/src/controls/cameraDragEnd.js +10 -10
  85. package/src/controls/cameraDragMove.js +31 -31
  86. package/src/controls/changeCameraTouch.js +17 -17
  87. package/src/controls/compassOrientation.js +12 -12
  88. package/src/controls/compassRemoveHooks.js +2 -2
  89. package/src/controls/containerResizeRemoveHooks.js +2 -2
  90. package/src/controls/endCameraTouch.js +18 -18
  91. package/src/controls/failCompassPermission.js +10 -10
  92. package/src/controls/finishCameraDrag.js +14 -14
  93. package/src/controls/finishCompassPermission.js +24 -24
  94. package/src/controls/isEditableTarget.js +9 -9
  95. package/src/controls/loadCameraControls.js +18 -18
  96. package/src/controls/moveCameraTouch.js +34 -34
  97. package/src/controls/refreshRotateFocus.js +5 -5
  98. package/src/controls/removeCameraDrag.js +28 -28
  99. package/src/controls/resizeMap.js +7 -7
  100. package/src/controls/rotateButtonClick.js +16 -16
  101. package/src/controls/rotateButtonKeydown.js +20 -20
  102. package/src/controls/rotateControl.js +12 -12
  103. package/src/controls/shiftRotateRemoveHooks.js +2 -2
  104. package/src/controls/shiftRotateWheel.js +15 -15
  105. package/src/core/cameraMarkerOnDrag.js +16 -16
  106. package/src/core/constructLayer.js +16 -16
  107. package/src/core/extendLeafletClass.js +12 -12
  108. package/src/core/extendTerrainPixelBounds.js +41 -41
  109. package/src/core/layerAddInitHook.js +12 -12
  110. package/src/core/layerMergeOptions.js +14 -14
  111. package/src/core/markerInitInteraction.js +10 -10
  112. package/src/core/markerSetIcon.js +14 -14
  113. package/src/core/markerSetRotation.js +19 -19
  114. package/src/core/projectNativePath.js +30 -30
  115. package/src/core/redrawPath.js +11 -11
  116. package/src/core/removeLayer.js +26 -26
  117. package/src/core/setRotation.js +12 -12
  118. package/src/core/whenReady.js +14 -14
  119. package/src/geometry/addBridges.js +36 -36
  120. package/src/geometry/addGeneratedTriangle.js +10 -10
  121. package/src/geometry/appendAreaTriangle.js +32 -32
  122. package/src/geometry/appendNativeTriangle.js +17 -17
  123. package/src/geometry/appendRouteDash.js +33 -33
  124. package/src/geometry/appendRouteSegment.js +28 -28
  125. package/src/geometry/assembleAreaGeometry.js +48 -48
  126. package/src/geometry/bridgeEdge.js +18 -18
  127. package/src/geometry/bridgeFaces.js +22 -22
  128. package/src/geometry/bridgePaths.js +19 -19
  129. package/src/geometry/bridgePolygon.js +37 -37
  130. package/src/geometry/bridgeSides.js +18 -18
  131. package/src/geometry/buildProjectedPoint.js +32 -32
  132. package/src/geometry/buildProjectedPolygon.js +34 -34
  133. package/src/geometry/circleAt.js +20 -20
  134. package/src/geometry/circleGeometry.js +41 -41
  135. package/src/geometry/createModelGeometry.js +44 -44
  136. package/src/geometry/crossVector.js +15 -15
  137. package/src/geometry/dashValues.js +23 -23
  138. package/src/geometry/dashedSegment.js +33 -33
  139. package/src/geometry/diskAt.js +18 -18
  140. package/src/geometry/emitter.js +18 -18
  141. package/src/geometry/fillNativePolygon.js +28 -28
  142. package/src/geometry/generateTreeGeometry.js +18 -18
  143. package/src/geometry/indexBridge.js +36 -36
  144. package/src/geometry/instanceAreaGeometry.js +37 -37
  145. package/src/geometry/line.js +28 -28
  146. package/src/geometry/lineJoin.js +35 -35
  147. package/src/geometry/markerImageBounds.js +20 -20
  148. package/src/geometry/meshShadowBounds.js +33 -33
  149. package/src/geometry/offsetBelowGround.js +10 -10
  150. package/src/geometry/quad.js +23 -23
  151. package/src/geometry/restoreGeometry.js +29 -29
  152. package/src/geometry/roofCoverage.js +33 -33
  153. package/src/geometry/roofFootprint.js +40 -40
  154. package/src/geometry/samePoint.js +11 -11
  155. package/src/geometry/segment.js +32 -32
  156. package/src/geometry/subtractRoofTile.js +28 -28
  157. package/src/geometry/terrainBuffers.js +36 -36
  158. package/src/geometry/terrainTileGeometry.js +28 -28
  159. package/src/geometry/validateTree.js +19 -19
  160. package/src/globals/L.js +6 -6
  161. package/src/globals/cameraFov.js +8 -8
  162. package/src/globals/cogTags.js +6 -6
  163. package/src/globals/colorTexture.js +11 -11
  164. package/src/globals/cosObliquity.js +8 -8
  165. package/src/globals/degrees.js +6 -6
  166. package/src/globals/earthCirc.js +6 -6
  167. package/src/globals/geometryWorkerUrl.js +8 -8
  168. package/src/globals/halfRadians.js +6 -6
  169. package/src/globals/lampDirections.js +13 -13
  170. package/src/globals/layerControlAddItem.js +8 -8
  171. package/src/globals/leafletLayer.js +8 -8
  172. package/src/globals/lightScale.js +6 -6
  173. package/src/globals/mvtTextDecoder.js +6 -6
  174. package/src/globals/nativeScalableStyleKeys.js +6 -6
  175. package/src/globals/sinObliquity.js +8 -8
  176. package/src/globals/tau.js +6 -6
  177. package/src/globals/vectorStyleNamedColors.js +13 -13
  178. package/src/globals/vectorTileEvents.js +6 -6
  179. package/src/globals/workerCogSource.js +6 -6
  180. package/src/gpu/initializeRendererResources.js +39 -39
  181. package/src/gpu/initializeSharedRenderer.js +59 -59
  182. package/src/gpu/mountRenderer.js +25 -25
  183. package/src/layer-controls/layerControlInputId.js +18 -18
  184. package/src/layer-controls/layerCountTitle.js +16 -16
  185. package/src/layer-controls/placeEntryElement.js +29 -29
  186. package/src/layer-controls/renderLayerCount.js +28 -28
  187. package/src/lighting/visitLightCells.js +26 -26
  188. package/src/lighting/writeLightCell.js +14 -14
  189. package/src/materials/createProgramLayout.js +44 -44
  190. package/src/materials/createProgramUniforms.js +25 -25
  191. package/src/materials/modelMaterialFor.js +29 -29
  192. package/src/materials/prepareMeshCutout.js +21 -21
  193. package/src/materials/terrainRasterProgram.js +65 -65
  194. package/src/materials/validateRoofMaterial.js +17 -17
  195. package/src/models/applyModelTransform.js +18 -18
  196. package/src/models/buildModelNodes.js +24 -24
  197. package/src/models/createModelContext.js +24 -24
  198. package/src/models/loadBuffer.js +16 -16
  199. package/src/models/loadModelResources.js +22 -22
  200. package/src/models/normalizeAccessor.js +21 -21
  201. package/src/models/prepareModel.js +29 -29
  202. package/src/models/prepareModelGeometry.js +35 -35
  203. package/src/models/prepareModelPrimitive.js +25 -25
  204. package/src/models/readAccessorValue.js +16 -16
  205. package/src/models/readModelAttributes.js +32 -32
  206. package/src/models/readModelIndices.js +28 -28
  207. package/src/models/readSparseAccessor.js +31 -31
  208. package/src/models/releaseModelResources.js +15 -15
  209. package/src/mvt/addMvtCrossings.js +23 -23
  210. package/src/mvt/appendMvtBandTriangles.js +42 -42
  211. package/src/mvt/appendMvtCoordinates.js +20 -20
  212. package/src/mvt/appendMvtPolygonTriangles.js +29 -29
  213. package/src/mvt/beginMvtPath.js +19 -19
  214. package/src/mvt/closeMvtPath.js +16 -16
  215. package/src/mvt/collectMvtEdges.js +29 -29
  216. package/src/mvt/createMvtReader.js +14 -14
  217. package/src/mvt/decodeVectorTile.js +39 -39
  218. package/src/mvt/expectMvtWire.js +11 -11
  219. package/src/mvt/finishMvtPath.js +14 -14
  220. package/src/mvt/finiteMvtCoordinate.js +14 -14
  221. package/src/mvt/groupMvtPolygons.js +35 -35
  222. package/src/mvt/isMvtFallbackError.js +13 -13
  223. package/src/mvt/mergeMvtActiveEdges.js +18 -18
  224. package/src/mvt/mvtEdgeX.js +12 -12
  225. package/src/mvt/mvtPathsVertices.js +15 -15
  226. package/src/mvt/mvtPolygonPaths.js +19 -19
  227. package/src/mvt/numericMvtValue.js +11 -11
  228. package/src/mvt/readMvtFeature.js +46 -46
  229. package/src/mvt/readMvtField.js +17 -17
  230. package/src/mvt/readMvtGeometry.js +42 -42
  231. package/src/mvt/readMvtInteger.js +22 -22
  232. package/src/mvt/readMvtKnownValue.js +30 -30
  233. package/src/mvt/readMvtLayer.js +40 -40
  234. package/src/mvt/readMvtMessage.js +18 -18
  235. package/src/mvt/readMvtNumber.js +18 -18
  236. package/src/mvt/readMvtNumbers.js +18 -18
  237. package/src/mvt/readMvtString.js +14 -14
  238. package/src/mvt/readMvtValue.js +29 -29
  239. package/src/mvt/skipMvtField.js +22 -22
  240. package/src/mvt/sortMvtActiveEdges.js +20 -20
  241. package/src/mvt/sortedMvtLevels.js +29 -29
  242. package/src/mvt/takeMvtBytes.js +18 -18
  243. package/src/mvt/tessellateVectorRings.js +26 -26
  244. package/src/mvt/triangulateVectorRings.js +23 -23
  245. package/src/native/beforeNativeRender.js +21 -21
  246. package/src/native/bypassNativeEvent.js +21 -21
  247. package/src/native/canScaleNativeStyle.js +26 -26
  248. package/src/native/compareNativeHits.js +10 -10
  249. package/src/native/createNativeMesh.js +46 -46
  250. package/src/native/forwardNativeError.js +8 -8
  251. package/src/native/getGridTerrainTile.js +47 -47
  252. package/src/native/gridTerrainElevation.js +34 -34
  253. package/src/native/isCurrentNativeLayer.js +11 -11
  254. package/src/native/loadGridTerrain.js +36 -36
  255. package/src/native/nativeEventSource.js +27 -27
  256. package/src/native/nativeProgram.js +28 -28
  257. package/src/native/nativeTerrainElevation.js +27 -27
  258. package/src/native/nativeVectorGeometry.js +30 -30
  259. package/src/native/orderNativeGridLayer.js +20 -20
  260. package/src/native/prepareGridTerrainRequests.js +23 -23
  261. package/src/native/pruneNativeResources.js +25 -25
  262. package/src/native/readyNativeGPU.js +13 -13
  263. package/src/native/rejectNativeReady.js +2 -2
  264. package/src/native/removeNativeEvents.js +20 -20
  265. package/src/native/resolveNativeReady.js +2 -2
  266. package/src/native/restoreNativeEvents.js +8 -8
  267. package/src/native/retainGridTerrain.js +15 -15
  268. package/src/native/styleNativeMesh.js +20 -20
  269. package/src/native/syncGridTile.js +28 -28
  270. package/src/native/syncImageOverlay.js +13 -13
  271. package/src/native/syncNativeStrokeAnchors.js +18 -18
  272. package/src/native/syncNativeStrokeZoom.js +34 -34
  273. package/src/native/syncTerrainGridTile.js +38 -38
  274. package/src/native/terrainGridMesh.js +47 -47
  275. package/src/native/updateNativeHover.js +15 -15
  276. package/src/native/updateNativeStrokeRadius.js +14 -14
  277. package/src/picking/hitColliderCell.js +29 -29
  278. package/src/picking/validateCameraInverse.js +15 -15
  279. package/src/projections/displayContainerPoint.js +32 -32
  280. package/src/projections/projectBridgePoint.js +17 -17
  281. package/src/projections/toPoint.js +13 -13
  282. package/src/projections/transformZoomAnimationPoint.js +8 -8
  283. package/src/projections/verticalGroundY.js +14 -14
  284. package/src/raster/rasterTileRange.js +32 -32
  285. package/src/raster/retainRasterTiles.js +21 -21
  286. package/src/rendering/collectVisibleMesh.js +48 -48
  287. package/src/rendering/compareMeshDepth.js +14 -14
  288. package/src/rendering/drawPipeline.js +44 -44
  289. package/src/rendering/nativeStrokeExpansion.js +11 -11
  290. package/src/rendering/prepareFrameBuffer.js +24 -24
  291. package/src/rendering/prepareMeshUniforms.js +36 -36
  292. package/src/rendering/revealRoofMesh.js +43 -43
  293. package/src/scene/addSceneLayer.js +24 -24
  294. package/src/scene/callLayer.js +34 -34
  295. package/src/scene/createLayer.js +13 -13
  296. package/src/scene/getLocation.js +12 -12
  297. package/src/scene/isNativeLayer.js +19 -19
  298. package/src/scene/removeSceneLayer.js +22 -22
  299. package/src/scene/reportLayerError.js +9 -9
  300. package/src/shaders/materialBaseShader.js +26 -26
  301. package/src/shaders/materialSurfaceShader.js +60 -60
  302. package/src/shaders/materialVertexShader.js +89 -89
  303. package/src/shaders/nativeStrokeShader.js +13 -13
  304. package/src/shaders/roofVertexShader.js +16 -16
  305. package/src/shadows/shadowMeshMatches.js +19 -19
  306. package/src/sources/buildAreaFeatures.js +23 -23
  307. package/src/sources/extrusionStyle.js +21 -21
  308. package/src/sources/featureAnchor.js +21 -21
  309. package/src/sources/groundOffset.js +9 -9
  310. package/src/sources/initVectorTiles.js +21 -21
  311. package/src/sources/isVectorTileSource.js +11 -11
  312. package/src/sources/matchesAreaTile.js +17 -17
  313. package/src/sources/pendingSourceAreas.js +28 -28
  314. package/src/sources/prepareAreaGeometryJob.js +34 -34
  315. package/src/sources/projectAreaPolygons.js +25 -25
  316. package/src/sources/readyVectorTiles.js +17 -17
  317. package/src/sunlight/addTimeControlToMap.js +18 -18
  318. package/src/sunlight/addTimeLayer.js +12 -12
  319. package/src/sunlight/initializeTimeControl.js +18 -18
  320. package/src/sunlight/onAddSun.js +37 -37
  321. package/src/sunlight/onAddTimeControl.js +12 -12
  322. package/src/sunlight/onRemoveSun.js +10 -10
  323. package/src/sunlight/removeSun.js +25 -25
  324. package/src/sunlight/removeTimeControl.js +14 -14
  325. package/src/sunlight/removeTimeLayer.js +11 -11
  326. package/src/sunlight/requestSunlightRender.js +12 -12
  327. package/src/sunlight/styleTimeControl.js +13 -13
  328. package/src/sunlight/tickSun.js +10 -10
  329. package/src/sunlight/updateCelestialDisc.js +23 -23
  330. package/src/sunlight/updateSun.js +44 -44
  331. package/src/sunlight/useLiveTime.js +11 -11
  332. package/src/sunlight/useSelectedTime.js +26 -26
  333. package/src/terrain/applyTerrain.js +30 -30
  334. package/src/terrain/copyTerrainTile.js +20 -20
  335. package/src/terrain/loadReadyTerrain.js +6 -6
  336. package/src/terrain/mapElevationOf.js +19 -19
  337. package/src/terrain/readBridges.js +13 -13
  338. package/src/terrain/readyTerrainOf.js +14 -14
  339. package/src/terrain/sampleTerrainTile.js +16 -16
  340. package/src/terrain/terrainTileQueue.js +34 -34
  341. package/src/textures/addImageState.js +13 -13
  342. package/src/textures/bindMeshTextures.js +57 -57
  343. package/src/textures/collectRoofTiles.js +23 -23
  344. package/src/textures/loadModelImage.js +29 -29
  345. package/src/textures/modelTextureFor.js +47 -47
  346. package/src/textures/prepareMeshTextures.js +31 -31
  347. package/src/textures/removeImageState.js +13 -13
  348. package/src/textures/resizeRoofTexture.js +32 -32
  349. package/src/textures/restoreMaterialTextures.js +22 -22
  350. package/src/textures/updateRoofAtlas.js +29 -29
  351. package/src/textures/uploadMeshTexture.js +32 -32
  352. package/src/textures/uploadNativeImage.js +26 -26
  353. package/src/textures/uploadRoofTile.js +29 -29
  354. package/src/traffic/createTrafficMesh.js +17 -17
  355. package/src/traffic/disposeTrafficObject.js +19 -19
  356. package/src/traffic/failTraffic.js +12 -12
  357. package/src/traffic/failedTrafficLoad.js +10 -10
  358. package/src/traffic/fetchTrafficLanes.js +21 -21
  359. package/src/traffic/loadedTrafficLanes.js +21 -21
  360. package/src/traffic/locateTraffic.js +20 -20
  361. package/src/traffic/moveTraffic.js +21 -21
  362. package/src/traffic/readyTraffic.js +10 -10
  363. package/src/traffic/refreshTrafficTrips.js +42 -42
  364. package/src/traffic/routeColor.js +13 -13
  365. package/src/traffic/startTraffic.js +12 -12
  366. package/src/traffic/trafficNow.js +15 -15
  367. package/src/traffic/trafficStatusText.js +13 -13
  368. package/src/traffic/trafficStorage.js +13 -13
  369. package/src/traffic/updateTraffic.js +13 -13
  370. package/src/traffic/updateTrafficLights.js +23 -23
  371. package/src/traffic/updateTrafficPose.js +15 -15
  372. package/src/traffic/updateTrafficTerrain.js +15 -15
  373. package/src/traffic/uploadTrafficLanes.js +27 -27
  374. package/src/transforms/composeLocalTransform.js +23 -23
  375. package/src/transforms/transformNativePoint.js +19 -19
  376. package/src/transforms/worldMatrixChanged.js +26 -26
  377. package/src/triangulation/clipEars.js +32 -32
  378. package/src/triangulation/connectHole.js +30 -30
  379. package/src/triangulation/cross.js +12 -12
  380. package/src/triangulation/equal.js +11 -11
  381. package/src/triangulation/intersects.js +21 -21
  382. package/src/triangulation/mergeHoles.js +19 -19
  383. package/src/triangulation/on.js +13 -13
  384. package/src/triangulation/polygonRings.js +22 -22
  385. package/src/triangulation/validateArea.js +19 -19
  386. package/src/utils/compareDistance.js +11 -11
  387. package/src/utils/yieldTask.js +12 -12
  388. package/src/vector-style/appendQuotedStyleCharacter.js +30 -30
  389. package/src/vector-style/arrayContainsRange.js +18 -18
  390. package/src/vector-style/evaluateBoolean.js +31 -31
  391. package/src/vector-style/evaluateCoalesceOrCase.js +34 -34
  392. package/src/vector-style/evaluateComparison.js +29 -29
  393. package/src/vector-style/evaluateIExpression.js +21 -21
  394. package/src/vector-style/evaluateInput.js +16 -16
  395. package/src/vector-style/evaluateInterpolate.js +36 -36
  396. package/src/vector-style/evaluateMatch.js +21 -21
  397. package/src/vector-style/evaluateMath.js +26 -26
  398. package/src/vector-style/evaluateMembership.js +29 -29
  399. package/src/vector-style/evaluateNegation.js +26 -26
  400. package/src/vector-style/evaluatePrimitive.js +21 -21
  401. package/src/vector-style/evaluateStep.js +20 -20
  402. package/src/vector-style/evaluateStyle.js +43 -43
  403. package/src/vector-style/evaluateToExpression.js +27 -27
  404. package/src/vector-style/fillVectorPaint.js +26 -26
  405. package/src/vector-style/lineVectorPaint.js +31 -31
  406. package/src/vector-style/parseFunctionalColor.js +23 -23
  407. package/src/vector-style/parseHexColor.js +20 -20
  408. package/src/vector-style/parseVectorStyle.js +20 -20
  409. package/src/vector-style/readPaintValue.js +17 -17
  410. package/src/vector-style/removeTrailingCommas.js +19 -19
  411. package/src/vector-style/scaleDashArray.js +25 -25
  412. package/src/vector-style/skipStyleComment.js +20 -20
  413. package/src/vector-style/stripStyleComments.js +28 -28
  414. package/src/vector-style/styleColor.js +18 -18
  415. package/src/vector-style/validateVectorLayers.js +18 -18
  416. package/src/vector-style/vectorPaint.js +17 -17
  417. package/src/vector-style/visibleStyle.js +16 -16
  418. package/src/vector-tiles/appendVectorBatch.js +34 -34
  419. package/src/vector-tiles/attachVectorTileBatch.js +25 -25
  420. package/src/vector-tiles/attachVectorTileBatches.js +26 -26
  421. package/src/vector-tiles/compareVectorLabelPriority.js +11 -11
  422. package/src/vector-tiles/compareVectorTileDistance.js +11 -11
  423. package/src/vector-tiles/createVectorLabel.js +37 -37
  424. package/src/vector-tiles/forwardVectorTileError.js +10 -10
  425. package/src/vector-tiles/loadVectorSprite.js +14 -14
  426. package/src/vector-tiles/loadVectorTile.js +45 -45
  427. package/src/vector-tiles/onVectorTileAdd.js +44 -44
  428. package/src/vector-tiles/onVectorTileMessage.js +15 -15
  429. package/src/vector-tiles/onVectorTileRemove.js +25 -25
  430. package/src/vector-tiles/onVectorTileWorkerError.js +16 -16
  431. package/src/vector-tiles/paintVectorTileBatch.js +18 -18
  432. package/src/vector-tiles/prepareVectorLabel.js +34 -34
  433. package/src/vector-tiles/prepareVectorStyleLayer.js +38 -38
  434. package/src/vector-tiles/prepareVectorTile.js +29 -29
  435. package/src/vector-tiles/projectVectorPaths.js +25 -25
  436. package/src/vector-tiles/projectVectorPoint.js +15 -15
  437. package/src/vector-tiles/projectVectorTriangles.js +28 -28
  438. package/src/vector-tiles/pruneVectorTiles.js +14 -14
  439. package/src/vector-tiles/pumpVectorTiles.js +21 -21
  440. package/src/vector-tiles/readTileJSON.js +27 -27
  441. package/src/vector-tiles/readVectorStyle.js +28 -28
  442. package/src/vector-tiles/refreshVectorTiles.js +8 -8
  443. package/src/vector-tiles/reserveVectorLabelCells.js +14 -14
  444. package/src/vector-tiles/retireVectorTileGroup.js +20 -20
  445. package/src/vector-tiles/revokeVectorWorkerUrl.js +14 -14
  446. package/src/vector-tiles/rotateVectorLabel.js +19 -19
  447. package/src/vector-tiles/rotateVectorLabels.js +9 -9
  448. package/src/vector-tiles/simplifyVectorPath.js +29 -29
  449. package/src/vector-tiles/updateVectorLabelMarker.js +36 -36
  450. package/src/vector-tiles/updateVectorLabelStyle.js +14 -14
  451. package/src/vector-tiles/updateVectorTileLabels.js +33 -33
  452. package/src/vector-tiles/updateVectorTilePaint.js +25 -25
  453. package/src/vector-tiles/updateVectorTiles.js +32 -32
  454. package/src/vector-tiles/validateVectorTileZooms.js +15 -15
  455. package/src/vector-tiles/vectorFeaturePaint.js +25 -25
  456. package/src/vector-tiles/vectorFeaturePaths.js +26 -26
  457. package/src/vector-tiles/vectorFeatureZoom.js +18 -18
  458. package/src/vector-tiles/vectorLabelAnchors.js +31 -31
  459. package/src/vector-tiles/vectorLabelCandidates.js +18 -18
  460. package/src/vector-tiles/vectorLabelCells.js +32 -32
  461. package/src/vector-tiles/vectorLabelIcon.js +38 -38
  462. package/src/vector-tiles/vectorLabelProperty.js +12 -12
  463. package/src/vector-tiles/vectorLabelText.js +19 -19
  464. package/src/vector-tiles/vectorSpriteIcon.js +19 -19
  465. package/src/vector-tiles/vectorStraightRun.js +23 -23
  466. package/src/vector-tiles/vectorStyleDependencies.js +22 -22
  467. package/src/vector-tiles/vectorStyleValue.js +16 -16
  468. package/src/vector-tiles/vectorStyleZoom.js +12 -12
  469. package/src/vector-tiles/vectorTileAwaited.js +17 -17
  470. package/src/vector-tiles/vectorTileOverlaps.js +12 -12
  471. package/src/vector-tiles/vectorTilePaint.js +18 -18
  472. package/src/vector-tiles/vectorTileSettings.js +27 -27
  473. package/src/vector-tiles/vectorTilesIdle.js +11 -11
  474. package/src/vector-tiles/vectorTolerance.js +11 -11
  475. package/src/vector-tiles/wrapVectorLabel.js +17 -17
  476. package/src/vehicles/boatModel.js +35 -35
  477. package/src/vehicles/busModel.js +13 -13
  478. package/src/vehicles/carModel.js +39 -39
  479. package/src/walk/initializeWalkControl.js +12 -12
  480. package/src/walk/isWalkBlocked.js +15 -15
  481. package/src/walk/landWalker.js +41 -41
  482. package/src/walk/moveWalker.js +37 -37
  483. package/src/walk/onAddWalkControl.js +40 -40
  484. package/src/walk/onRemoveWalkControl.js +17 -17
  485. package/src/walk/onWalkBlur.js +3 -3
  486. package/src/walk/onWalkTerrain.js +3 -3
  487. package/src/walk/resolveWalkerPosition.js +33 -33
  488. package/src/walk/stepWalkerHeight.js +18 -18
  489. package/src/walk/toggleWalking.js +4 -4
  490. package/src/walk/updateWalkerFrame.js +29 -29
  491. package/src/walk/updateWalkerView.js +31 -31
  492. package/src/weakmaps/cameraHandlersByMap.js +6 -6
  493. package/src/weakmaps/geometryWorkersByMap.js +6 -6
  494. package/src/weakmaps/nativeProgramsByRenderer.js +6 -6
  495. package/src/weakmaps/pathProjectionByMap.js +6 -6
  496. package/src/weakmaps/streamTerrainByLayer.js +6 -6
  497. package/src/weakmaps/streamTerrainByMap.js +6 -6
  498. package/src/weakmaps/sunByMap.js +6 -6
  499. package/src/weakmaps/vectorTileOptionsByLayer.js +6 -6
  500. package/src/weakmaps/vectorWorkerByLayer.js +6 -6
  501. package/src/weakmaps/walkByMap.js +6 -6
  502. package/src/weakmaps/workerMapByLayer.js +6 -6
  503. package/src/workers/acquireGeometryWorker.js +39 -39
  504. package/src/workers/buildAreaInWorker.js +24 -24
  505. package/src/workers/closeGeometryWorkers.js +16 -16
  506. package/src/workers/cogWorker.js +27 -27
  507. package/src/workers/createGeometryWorker.js +30 -30
  508. package/src/workers/geometryWorker.js +34 -34
  509. package/src/workers/getCogInWorker.js +18 -18
  510. package/src/workers/modelWorker.js +17 -17
  511. package/src/workers/openCogInWorker.js +22 -22
  512. package/src/workers/runSourceWorker.js +44 -44
  513. package/src/workers/settleGeometryWorker.js +16 -16
  514. package/src/workers/startGeometryWorker.js +23 -23
  515. package/src/workers/vectorTileWorker.js +15 -15
@@ -1,13 +1,13 @@
1
- /**
2
- * Check whether a point lies within a segment's axis-aligned bounding box.
3
- *
4
- * @param {Object} p First segment endpoint.
5
- * @param {Object} q Second segment endpoint.
6
- * @param {Object} r Point to test.
7
- *
8
- * @returns {boolean} Whether the point lies within the bounds.
9
- */
10
- export function on(p, q, r) {
11
- return Math.min(p.x, q.x) <= r.x && r.x <= Math.max(p.x, q.x) &&
12
- Math.min(p.y, q.y) <= r.y && r.y <= Math.max(p.y, q.y);
13
- }
1
+ /**
2
+ * Check whether a point lies within a segment's axis-aligned bounding box.
3
+ *
4
+ * @param {Object} p First segment endpoint.
5
+ * @param {Object} q Second segment endpoint.
6
+ * @param {Object} r Point to test.
7
+ *
8
+ * @returns {boolean} Whether the point lies within the bounds.
9
+ */
10
+ export function on(p, q, r) {
11
+ return Math.min(p.x, q.x) <= r.x && r.x <= Math.max(p.x, q.x) &&
12
+ Math.min(p.y, q.y) <= r.y && r.y <= Math.max(p.y, q.y);
13
+ }
@@ -1,22 +1,22 @@
1
- import { clean } from './clean.js';
2
- import { isClockWise } from './isClockWise.js';
3
-
4
- /**
5
- * Split indexed vertices into cleaned rings and normalize outer and hole winding.
6
- *
7
- * @param {Object[][]} paths Original polygon paths defining ring lengths.
8
- * @param {Object[]} vertices Indexed vertices corresponding to the paths.
9
- *
10
- * @returns {Object[][]} Cleaned rings with normalized winding.
11
- */
12
- export function polygonRings(paths, vertices) {
13
- const rings = /* alloc */ [];
14
- let offset = 0, index, path, ring;
15
- for (index = 0; index < paths.length; index++) {
16
- path = paths[index];
17
- ring = clean(vertices.slice(offset, offset += path.length));
18
- if (isClockWise(ring) !== Boolean(index)) ring.reverse();
19
- rings.push(ring);
20
- }
21
- return rings;
22
- }
1
+ import { clean } from './clean.js';
2
+ import { isClockWise } from './isClockWise.js';
3
+
4
+ /**
5
+ * Split indexed vertices into cleaned rings and normalize outer and hole winding.
6
+ *
7
+ * @param {Object[][]} paths Original polygon paths defining ring lengths.
8
+ * @param {Object[]} vertices Indexed vertices corresponding to the paths.
9
+ *
10
+ * @returns {Object[][]} Cleaned rings with normalized winding.
11
+ */
12
+ export function polygonRings(paths, vertices) {
13
+ const rings = /* alloc */ [];
14
+ let offset = 0, index, path, ring;
15
+ for (index = 0; index < paths.length; index++) {
16
+ path = paths[index];
17
+ ring = clean(vertices.slice(offset, offset += path.length));
18
+ if (isClockWise(ring) !== Boolean(index)) ring.reverse();
19
+ rings.push(ring);
20
+ }
21
+ return rings;
22
+ }
@@ -1,19 +1,19 @@
1
- import { area } from './area.js';
2
- import { cross } from './cross.js';
3
-
4
- /**
5
- * Check that triangle area matches the outer ring area minus its holes.
6
- *
7
- * @param {Object[][]} rings Outer ring followed by hole rings.
8
- * @param {Object[]} vertices Indexed planar vertices.
9
- * @param {number[][]} result Triangles of vertex indices.
10
- *
11
- * @throws {Error} If the expected area is nonpositive or the triangle area differs.
12
- */
13
- export function validateArea(rings, vertices, result) {
14
- let holeArea = 0, actual = 0, i, triangle;
15
- for (i = 1; i < rings.length; i++) holeArea += area(rings[i]);
16
- const expected = area(rings[0]) - holeArea;
17
- for (triangle of result) actual += cross(vertices[triangle[0]], vertices[triangle[1]], vertices[triangle[2]]) / 2;
18
- if (expected <= 0 || Math.abs(actual - expected) > Math.max(1e-7, expected * 1e-8)) throw /* alloc */ new Error('Polygon triangulation area mismatch');
19
- }
1
+ import { area } from './area.js';
2
+ import { cross } from './cross.js';
3
+
4
+ /**
5
+ * Check that triangle area matches the outer ring area minus its holes.
6
+ *
7
+ * @param {Object[][]} rings Outer ring followed by hole rings.
8
+ * @param {Object[]} vertices Indexed planar vertices.
9
+ * @param {number[][]} result Triangles of vertex indices.
10
+ *
11
+ * @throws {Error} If the expected area is nonpositive or the triangle area differs.
12
+ */
13
+ export function validateArea(rings, vertices, result) {
14
+ let holeArea = 0, actual = 0, i, triangle;
15
+ for (i = 1; i < rings.length; i++) holeArea += area(rings[i]);
16
+ const expected = area(rings[0]) - holeArea;
17
+ for (triangle of result) actual += cross(vertices[triangle[0]], vertices[triangle[1]], vertices[triangle[2]]) / 2;
18
+ if (expected <= 0 || Math.abs(actual - expected) > Math.max(1e-7, expected * 1e-8)) throw /* alloc */ new Error('Polygon triangulation area mismatch');
19
+ }
@@ -1,11 +1,11 @@
1
- /**
2
- * Compare objects by ascending distance.
3
- *
4
- * @param {Object} a First object with a distance.
5
- * @param {Object} b Second object with a distance.
6
- *
7
- * @returns {number} Signed distance difference.
8
- */
9
- export function compareDistance(a, b) {
10
- return a.distance - b.distance;
11
- }
1
+ /**
2
+ * Compare objects by ascending distance.
3
+ *
4
+ * @param {Object} a First object with a distance.
5
+ * @param {Object} b Second object with a distance.
6
+ *
7
+ * @returns {number} Signed distance difference.
8
+ */
9
+ export function compareDistance(a, b) {
10
+ return a.distance - b.distance;
11
+ }
@@ -1,12 +1,12 @@
1
- /**
2
- * Yield to a timer before continuing asynchronous work.
3
- *
4
- * @param {number} [delay=0] Timer delay in milliseconds.
5
- *
6
- * @returns {Promise<void>} Resolves when the timer fires.
7
- */
8
- export function yieldTask(delay = 0) {
9
- const task = Promise.withResolvers();
10
- setTimeout(task.resolve, delay);
11
- return task.promise;
12
- }
1
+ /**
2
+ * Yield to a timer before continuing asynchronous work.
3
+ *
4
+ * @param {number} [delay=0] Timer delay in milliseconds.
5
+ *
6
+ * @returns {Promise<void>} Resolves when the timer fires.
7
+ */
8
+ export function yieldTask(delay = 0) {
9
+ const task = Promise.withResolvers();
10
+ setTimeout(task.resolve, delay);
11
+ return task.promise;
12
+ }
@@ -1,30 +1,30 @@
1
- /**
2
- * Convert one quoted style character to JSON form while updating quote and escape state.
3
- *
4
- * @param {string} char Current character.
5
- * @param {Object} state Mutable quoted and escaped state.
6
- *
7
- * @returns {string|undefined} Converted text, or undefined outside a quoted string.
8
- */
9
- export function appendQuotedStyleCharacter(char, state) {
10
- if (state.quoted) {
11
- if (state.escaped) {
12
- state.escaped = false;
13
- return char === "'" ? char : '\\' + char;
14
- }
15
- if (char === '\\') {
16
- state.escaped = true;
17
- return '';
18
- }
19
- if (char === state.quoted) {
20
- state.quoted = '';
21
- return '"';
22
- }
23
- return char === '"' ? '\\"' : char;
24
- }
25
- if (char === '"' || char === "'") {
26
- state.quoted = char;
27
- return '"';
28
- }
29
- return undefined;
30
- }
1
+ /**
2
+ * Convert one quoted style character to JSON form while updating quote and escape state.
3
+ *
4
+ * @param {string} char Current character.
5
+ * @param {Object} state Mutable quoted and escaped state.
6
+ *
7
+ * @returns {string|undefined} Converted text, or undefined outside a quoted string.
8
+ */
9
+ export function appendQuotedStyleCharacter(char, state) {
10
+ if (state.quoted) {
11
+ if (state.escaped) {
12
+ state.escaped = false;
13
+ return char === "'" ? char : '\\' + char;
14
+ }
15
+ if (char === '\\') {
16
+ state.escaped = true;
17
+ return '';
18
+ }
19
+ if (char === state.quoted) {
20
+ state.quoted = '';
21
+ return '"';
22
+ }
23
+ return char === '"' ? '\\"' : char;
24
+ }
25
+ if (char === '"' || char === "'") {
26
+ state.quoted = char;
27
+ return '"';
28
+ }
29
+ return undefined;
30
+ }
@@ -1,18 +1,18 @@
1
- /**
2
- * Check a slice for a value, treating NaN as equal to NaN.
3
- *
4
- * @param {Array} values Input values.
5
- * @param {number} start Inclusive start index.
6
- * @param {number} end Exclusive end index.
7
- * @param {*} target Value to find.
8
- *
9
- * @returns {boolean} Whether the value occurs in the slice.
10
- */
11
- export function arrayContainsRange(values, start, end, target) {
12
- let i = 0, value = null;
13
- for (i = start; i < end; i++) {
14
- value = values[i];
15
- if (value === target || (value !== value && target !== target)) return true;
16
- }
17
- return false;
18
- }
1
+ /**
2
+ * Check a slice for a value, treating NaN as equal to NaN.
3
+ *
4
+ * @param {Array} values Input values.
5
+ * @param {number} start Inclusive start index.
6
+ * @param {number} end Exclusive end index.
7
+ * @param {*} target Value to find.
8
+ *
9
+ * @returns {boolean} Whether the value occurs in the slice.
10
+ */
11
+ export function arrayContainsRange(values, start, end, target) {
12
+ let i = 0, value = null;
13
+ for (i = start; i < end; i++) {
14
+ value = values[i];
15
+ if (value === target || (value !== value && target !== target)) return true;
16
+ }
17
+ return false;
18
+ }
@@ -1,31 +1,31 @@
1
- import { evaluateStyle } from './evaluateStyle.js';
2
-
3
- /**
4
- * Evaluate a short-circuiting all or any style expression.
5
- *
6
- * @param {string} op Expression operator.
7
- * @param {Array} args Expression operands.
8
- * @param {Object} properties Feature properties.
9
- * @param {number} zoom Current zoom.
10
- * @param {boolean} legacy Whether to use legacy filter evaluation.
11
- *
12
- * @returns {boolean} Expression result.
13
- *
14
- * @throws {Error} If the operator is unsupported.
15
- */
16
- export function evaluateBoolean(op, args, properties, zoom, legacy) {
17
- let i = 0;
18
- if (op === 'all') {
19
- for (i = 0; i < args.length; i++) {
20
- if (!evaluateStyle(args[i], properties, zoom, legacy)) return false;
21
- }
22
- return true;
23
- }
24
- if (op === 'any') {
25
- for (i = 0; i < args.length; i++) {
26
- if (evaluateStyle(args[i], properties, zoom, legacy)) return true;
27
- }
28
- return false;
29
- }
30
- throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);
31
- }
1
+ import { evaluateStyle } from './evaluateStyle.js';
2
+
3
+ /**
4
+ * Evaluate a short-circuiting all or any style expression.
5
+ *
6
+ * @param {string} op Expression operator.
7
+ * @param {Array} args Expression operands.
8
+ * @param {Object} properties Feature properties.
9
+ * @param {number} zoom Current zoom.
10
+ * @param {boolean} legacy Whether to use legacy filter evaluation.
11
+ *
12
+ * @returns {boolean} Expression result.
13
+ *
14
+ * @throws {Error} If the operator is unsupported.
15
+ */
16
+ export function evaluateBoolean(op, args, properties, zoom, legacy) {
17
+ let i = 0;
18
+ if (op === 'all') {
19
+ for (i = 0; i < args.length; i++) {
20
+ if (!evaluateStyle(args[i], properties, zoom, legacy)) return false;
21
+ }
22
+ return true;
23
+ }
24
+ if (op === 'any') {
25
+ for (i = 0; i < args.length; i++) {
26
+ if (evaluateStyle(args[i], properties, zoom, legacy)) return true;
27
+ }
28
+ return false;
29
+ }
30
+ throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);
31
+ }
@@ -1,34 +1,34 @@
1
- import { evaluateStyle } from './evaluateStyle.js';
2
-
3
- /**
4
- * Evaluate a coalesce or case style expression.
5
- *
6
- * @param {string} op Expression operator.
7
- * @param {Array} args Expression operands.
8
- * @param {Object} properties Feature properties.
9
- * @param {number} zoom Current zoom.
10
- * @param {boolean} legacy Legacy filter flag.
11
- *
12
- * @returns {*} Selected expression result.
13
- *
14
- * @throws {Error} If the operator is unsupported.
15
- */
16
- export function evaluateCoalesceOrCase(op, args, properties, zoom, legacy) {
17
- let i = 0, result = null;
18
- if (op === 'coalesce') {
19
- for (i = 0; i < args.length; i++) {
20
- result = evaluateStyle(args[i], properties, zoom);
21
- if (result !== null && result !== undefined) return result;
22
- }
23
- return null;
24
- }
25
- if (op === 'case') {
26
- for (i = 0; i < args.length - 1; i += 2) {
27
- if (evaluateStyle(args[i], properties, zoom)) {
28
- return evaluateStyle(args[i + 1], properties, zoom);
29
- }
30
- }
31
- return evaluateStyle(args[args.length - 1], properties, zoom);
32
- }
33
- throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);
34
- }
1
+ import { evaluateStyle } from './evaluateStyle.js';
2
+
3
+ /**
4
+ * Evaluate a coalesce or case style expression.
5
+ *
6
+ * @param {string} op Expression operator.
7
+ * @param {Array} args Expression operands.
8
+ * @param {Object} properties Feature properties.
9
+ * @param {number} zoom Current zoom.
10
+ * @param {boolean} legacy Legacy filter flag.
11
+ *
12
+ * @returns {*} Selected expression result.
13
+ *
14
+ * @throws {Error} If the operator is unsupported.
15
+ */
16
+ export function evaluateCoalesceOrCase(op, args, properties, zoom, legacy) {
17
+ let i = 0, result = null;
18
+ if (op === 'coalesce') {
19
+ for (i = 0; i < args.length; i++) {
20
+ result = evaluateStyle(args[i], properties, zoom);
21
+ if (result !== null && result !== undefined) return result;
22
+ }
23
+ return null;
24
+ }
25
+ if (op === 'case') {
26
+ for (i = 0; i < args.length - 1; i += 2) {
27
+ if (evaluateStyle(args[i], properties, zoom)) {
28
+ return evaluateStyle(args[i + 1], properties, zoom);
29
+ }
30
+ }
31
+ return evaluateStyle(args[args.length - 1], properties, zoom);
32
+ }
33
+ throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);
34
+ }
@@ -1,29 +1,29 @@
1
- import { evaluateInput } from './evaluateInput.js';
2
- import { evaluateStyle } from './evaluateStyle.js';
3
-
4
- /**
5
- * Evaluate a comparison between style expression operands.
6
- *
7
- * @param {string} op Comparison operator.
8
- * @param {Array} args Expression operands.
9
- * @param {Object} properties Feature properties.
10
- * @param {number} zoom Current zoom.
11
- * @param {boolean} legacy Whether the left operand is a legacy property name.
12
- *
13
- * @returns {boolean} Comparison result.
14
- *
15
- * @throws {Error} If the operator is unsupported.
16
- */
17
- export function evaluateComparison(op, args, properties, zoom, legacy) {
18
- const left = evaluateInput(args[0], properties, zoom, legacy);
19
- const right = evaluateStyle(args[1], properties, zoom);
20
- switch (op) {
21
- case '==': return left === right;
22
- case '!=': return left !== right;
23
- case '<=': return left <= right;
24
- case '>=': return left >= right;
25
- case '<': return left < right;
26
- case '>': return left > right;
27
- default: throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);
28
- }
29
- }
1
+ import { evaluateInput } from './evaluateInput.js';
2
+ import { evaluateStyle } from './evaluateStyle.js';
3
+
4
+ /**
5
+ * Evaluate a comparison between style expression operands.
6
+ *
7
+ * @param {string} op Comparison operator.
8
+ * @param {Array} args Expression operands.
9
+ * @param {Object} properties Feature properties.
10
+ * @param {number} zoom Current zoom.
11
+ * @param {boolean} legacy Whether the left operand is a legacy property name.
12
+ *
13
+ * @returns {boolean} Comparison result.
14
+ *
15
+ * @throws {Error} If the operator is unsupported.
16
+ */
17
+ export function evaluateComparison(op, args, properties, zoom, legacy) {
18
+ const left = evaluateInput(args[0], properties, zoom, legacy);
19
+ const right = evaluateStyle(args[1], properties, zoom);
20
+ switch (op) {
21
+ case '==': return left === right;
22
+ case '!=': return left !== right;
23
+ case '<=': return left <= right;
24
+ case '>=': return left >= right;
25
+ case '<': return left < right;
26
+ case '>': return left > right;
27
+ default: throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);
28
+ }
29
+ }
@@ -1,21 +1,21 @@
1
- import { evaluateInterpolate } from './evaluateInterpolate.js';
2
- import { evaluateMembership } from './evaluateMembership.js';
3
-
4
- /**
5
- * Dispatch an in or interpolate style expression.
6
- *
7
- * @param {string} op Expression operator.
8
- * @param {Array} args Expression operands.
9
- * @param {Object} properties Feature properties.
10
- * @param {number} zoom Current zoom.
11
- * @param {boolean} legacy Whether to use legacy membership semantics.
12
- *
13
- * @returns {*} Expression result.
14
- *
15
- * @throws {Error} If the operator is unsupported.
16
- */
17
- export function evaluateIExpression(op, args, properties, zoom, legacy) {
18
- if (op === 'in') return evaluateMembership(op, args, properties, zoom, legacy);
19
- if (op === 'interpolate') return evaluateInterpolate(args, properties, zoom);
20
- throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);
21
- }
1
+ import { evaluateInterpolate } from './evaluateInterpolate.js';
2
+ import { evaluateMembership } from './evaluateMembership.js';
3
+
4
+ /**
5
+ * Dispatch an in or interpolate style expression.
6
+ *
7
+ * @param {string} op Expression operator.
8
+ * @param {Array} args Expression operands.
9
+ * @param {Object} properties Feature properties.
10
+ * @param {number} zoom Current zoom.
11
+ * @param {boolean} legacy Whether to use legacy membership semantics.
12
+ *
13
+ * @returns {*} Expression result.
14
+ *
15
+ * @throws {Error} If the operator is unsupported.
16
+ */
17
+ export function evaluateIExpression(op, args, properties, zoom, legacy) {
18
+ if (op === 'in') return evaluateMembership(op, args, properties, zoom, legacy);
19
+ if (op === 'interpolate') return evaluateInterpolate(args, properties, zoom);
20
+ throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);
21
+ }
@@ -1,16 +1,16 @@
1
- import { evaluateStyle } from './evaluateStyle.js';
2
-
3
- /**
4
- * Evaluate an input or resolve a legacy string operand as a property name.
5
- *
6
- * @param {*} value Input value or expression.
7
- * @param {Object} properties Feature properties.
8
- * @param {number} zoom Current zoom.
9
- * @param {boolean} legacy Whether string values name properties.
10
- *
11
- * @returns {*} Evaluated input.
12
- */
13
- export function evaluateInput(value, properties, zoom, legacy) {
14
- if (legacy && typeof value === 'string') return properties[value];
15
- return evaluateStyle(value, properties, zoom);
16
- }
1
+ import { evaluateStyle } from './evaluateStyle.js';
2
+
3
+ /**
4
+ * Evaluate an input or resolve a legacy string operand as a property name.
5
+ *
6
+ * @param {*} value Input value or expression.
7
+ * @param {Object} properties Feature properties.
8
+ * @param {number} zoom Current zoom.
9
+ * @param {boolean} legacy Whether string values name properties.
10
+ *
11
+ * @returns {*} Evaluated input.
12
+ */
13
+ export function evaluateInput(value, properties, zoom, legacy) {
14
+ if (legacy && typeof value === 'string') return properties[value];
15
+ return evaluateStyle(value, properties, zoom);
16
+ }
@@ -1,36 +1,36 @@
1
- import { styleColor } from './styleColor.js';
2
- import { evaluateStyle } from './evaluateStyle.js';
3
-
4
- /**
5
- * Interpolate numeric or color style outputs between expression stops.
6
- *
7
- * @param {Array} args Interpolation mode, input and stops.
8
- * @param {Object} properties Feature properties.
9
- * @param {number} zoom Current zoom.
10
- *
11
- * @returns {*} Interpolated or endpoint value.
12
- */
13
- export function evaluateInterpolate(args, properties, zoom) {
14
- const result = evaluateStyle(args[1], properties, zoom);
15
- const base = args[0][0] === 'exponential' ? args[0][1] : 1;
16
- let i = 0, lower = 0, upper = 0, ratio = 0, left = null, right = null, j = 0, color = '';
17
- if (result <= args[2]) return evaluateStyle(args[3], properties, zoom);
18
- for (i = 4; i < args.length; i += 2) {
19
- if (result > args[i]) continue;
20
- lower = args[i - 2];
21
- upper = args[i];
22
- ratio = base === 1 ? (result - lower) / (upper - lower)
23
- : (base ** (result - lower) - 1) / (base ** (upper - lower) - 1);
24
- left = evaluateStyle(args[i - 1], properties, zoom);
25
- right = evaluateStyle(args[i + 1], properties, zoom);
26
- if (typeof left === 'number' && typeof right === 'number') return left + (right - left) * ratio;
27
- left = styleColor(left);
28
- right = styleColor(right);
29
- for (j = 0; j < 3; j++) {
30
- if (j) color += ',';
31
- color += Math.round(left[j] + (right[j] - left[j]) * ratio);
32
- }
33
- return `rgba(${color},${left[3] + (right[3] - left[3]) * ratio})`;
34
- }
35
- return evaluateStyle(args.at(-1), properties, zoom);
36
- }
1
+ import { styleColor } from './styleColor.js';
2
+ import { evaluateStyle } from './evaluateStyle.js';
3
+
4
+ /**
5
+ * Interpolate numeric or color style outputs between expression stops.
6
+ *
7
+ * @param {Array} args Interpolation mode, input and stops.
8
+ * @param {Object} properties Feature properties.
9
+ * @param {number} zoom Current zoom.
10
+ *
11
+ * @returns {*} Interpolated or endpoint value.
12
+ */
13
+ export function evaluateInterpolate(args, properties, zoom) {
14
+ const result = evaluateStyle(args[1], properties, zoom);
15
+ const base = args[0][0] === 'exponential' ? args[0][1] : 1;
16
+ let i = 0, lower = 0, upper = 0, ratio = 0, left = null, right = null, j = 0, color = '';
17
+ if (result <= args[2]) return evaluateStyle(args[3], properties, zoom);
18
+ for (i = 4; i < args.length; i += 2) {
19
+ if (result > args[i]) continue;
20
+ lower = args[i - 2];
21
+ upper = args[i];
22
+ ratio = base === 1 ? (result - lower) / (upper - lower)
23
+ : (base ** (result - lower) - 1) / (base ** (upper - lower) - 1);
24
+ left = evaluateStyle(args[i - 1], properties, zoom);
25
+ right = evaluateStyle(args[i + 1], properties, zoom);
26
+ if (typeof left === 'number' && typeof right === 'number') return left + (right - left) * ratio;
27
+ left = styleColor(left);
28
+ right = styleColor(right);
29
+ for (j = 0; j < 3; j++) {
30
+ if (j) color += ',';
31
+ color += Math.round(left[j] + (right[j] - left[j]) * ratio);
32
+ }
33
+ return `rgba(${color},${left[3] + (right[3] - left[3]) * ratio})`;
34
+ }
35
+ return evaluateStyle(args.at(-1), properties, zoom);
36
+ }
@@ -1,21 +1,21 @@
1
- import { evaluateStyle } from './evaluateStyle.js';
2
-
3
- /**
4
- * Evaluate a match expression against scalar or array labels.
5
- *
6
- * @param {Array} args Input, labels, outputs and fallback.
7
- * @param {Object} properties Feature properties.
8
- * @param {number} zoom Current zoom.
9
- *
10
- * @returns {*} Matched output or fallback.
11
- */
12
- export function evaluateMatch(args, properties, zoom) {
13
- const result = evaluateStyle(args[0], properties, zoom);
14
- let i = 0, matched = false;
15
- for (i = 1; i < args.length - 1; i += 2) {
16
- if (Array.isArray(args[i])) matched = args[i].includes(result);
17
- else matched = args[i] === result;
18
- if (matched) return evaluateStyle(args[i + 1], properties, zoom);
19
- }
20
- return evaluateStyle(args[args.length - 1], properties, zoom);
21
- }
1
+ import { evaluateStyle } from './evaluateStyle.js';
2
+
3
+ /**
4
+ * Evaluate a match expression against scalar or array labels.
5
+ *
6
+ * @param {Array} args Input, labels, outputs and fallback.
7
+ * @param {Object} properties Feature properties.
8
+ * @param {number} zoom Current zoom.
9
+ *
10
+ * @returns {*} Matched output or fallback.
11
+ */
12
+ export function evaluateMatch(args, properties, zoom) {
13
+ const result = evaluateStyle(args[0], properties, zoom);
14
+ let i = 0, matched = false;
15
+ for (i = 1; i < args.length - 1; i += 2) {
16
+ if (Array.isArray(args[i])) matched = args[i].includes(result);
17
+ else matched = args[i] === result;
18
+ if (matched) return evaluateStyle(args[i + 1], properties, zoom);
19
+ }
20
+ return evaluateStyle(args[args.length - 1], properties, zoom);
21
+ }