maplibre-gl 6.0.0-8 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/README.md +5 -4
  2. package/build/banner.ts +4 -2
  3. package/build/generate-docs.ts +73 -14
  4. package/build/generate-struct-arrays.ts +9 -9
  5. package/build/generate-style-code.ts +233 -135
  6. package/build/readme.md +1 -1
  7. package/dist/maplibre-gl-dev.mjs +7405 -34108
  8. package/dist/maplibre-gl-dev.mjs.map +1 -1
  9. package/dist/maplibre-gl-shared-dev.mjs +31274 -0
  10. package/dist/maplibre-gl-shared-dev.mjs.map +1 -0
  11. package/dist/maplibre-gl-shared.mjs +6 -0
  12. package/dist/maplibre-gl-shared.mjs.map +1 -0
  13. package/dist/maplibre-gl-worker-dev.mjs +64 -28389
  14. package/dist/maplibre-gl-worker-dev.mjs.map +1 -1
  15. package/dist/maplibre-gl-worker.mjs +2 -2
  16. package/dist/maplibre-gl-worker.mjs.map +1 -1
  17. package/dist/maplibre-gl.css +1 -1
  18. package/dist/maplibre-gl.d.ts +9699 -9173
  19. package/dist/maplibre-gl.mjs +347 -347
  20. package/dist/maplibre-gl.mjs.map +1 -1
  21. package/package.json +54 -57
  22. package/src/data/array_types.g.ts +137 -137
  23. package/src/data/bucket/circle_attributes.ts +5 -3
  24. package/src/data/bucket/circle_bucket.ts +7 -7
  25. package/src/data/bucket/dash_attributes.ts +2 -2
  26. package/src/data/bucket/fill_attributes.ts +5 -3
  27. package/src/data/bucket/fill_bucket.ts +7 -7
  28. package/src/data/bucket/fill_extrusion_attributes.ts +6 -4
  29. package/src/data/bucket/fill_extrusion_bucket.ts +9 -9
  30. package/src/data/bucket/line_attributes.ts +5 -3
  31. package/src/data/bucket/line_attributes_ext.ts +5 -3
  32. package/src/data/bucket/line_bucket.test.ts +36 -0
  33. package/src/data/bucket/line_bucket.ts +14 -14
  34. package/src/data/bucket/pattern_attributes.ts +2 -2
  35. package/src/data/bucket/pattern_bucket_features.ts +2 -2
  36. package/src/data/bucket/symbol_attributes.ts +14 -14
  37. package/src/data/bucket/symbol_bucket.ts +36 -35
  38. package/src/data/dem_data.test.ts +25 -1
  39. package/src/data/dem_data.ts +51 -10
  40. package/src/data/feature_index.ts +7 -7
  41. package/src/data/feature_position_map.ts +1 -1
  42. package/src/data/pos3d_attributes.ts +4 -2
  43. package/src/data/pos_attributes.ts +4 -2
  44. package/src/data/program_configuration.ts +30 -25
  45. package/src/data/raster_bounds_attributes.ts +4 -2
  46. package/src/data/segment.ts +3 -3
  47. package/src/geo/bounds.ts +2 -2
  48. package/src/geo/lng_lat.ts +1 -1
  49. package/src/geo/lng_lat_bounds.ts +2 -2
  50. package/src/geo/mercator_coordinate.ts +8 -8
  51. package/src/geo/projection/camera_helper.ts +3 -3
  52. package/src/geo/projection/globe_covering_tiles_details_provider.ts +2 -2
  53. package/src/geo/projection/globe_projection.test.ts +23 -0
  54. package/src/geo/projection/globe_projection.ts +9 -20
  55. package/src/geo/projection/globe_projection_error_measurement.ts +2 -2
  56. package/src/geo/projection/globe_transform.test.ts +18 -0
  57. package/src/geo/projection/globe_transform.ts +4 -9
  58. package/src/geo/projection/globe_utils.ts +2 -2
  59. package/src/geo/projection/mercator_camera_helper.ts +11 -12
  60. package/src/geo/projection/mercator_projection.ts +1 -1
  61. package/src/geo/projection/mercator_transform.ts +20 -33
  62. package/src/geo/projection/mercator_utils.ts +4 -3
  63. package/src/geo/projection/projection.ts +1 -1
  64. package/src/geo/projection/projection_data.ts +19 -3
  65. package/src/geo/projection/vertical_perspective_camera_helper.ts +8 -12
  66. package/src/geo/projection/vertical_perspective_projection.ts +2 -2
  67. package/src/geo/projection/vertical_perspective_transform.ts +6 -18
  68. package/src/geo/transform_helper.ts +15 -15
  69. package/src/geo/transform_interface.ts +3 -12
  70. package/src/index.ts +49 -27
  71. package/src/render/fill_large_mesh_arrays.ts +1 -1
  72. package/src/render/glyph_manager.test.ts +46 -0
  73. package/src/render/glyph_manager.ts +29 -15
  74. package/src/render/image_atlas.ts +3 -3
  75. package/src/render/image_manager.ts +42 -27
  76. package/src/render/line_atlas.ts +8 -6
  77. package/src/render/painter.test.ts +74 -8
  78. package/src/render/painter.ts +102 -41
  79. package/src/render/subdivision.test.ts +48 -47
  80. package/src/render/subdivision_granularity_settings.ts +1 -1
  81. package/src/render/terrain.test.ts +3 -6
  82. package/src/render/terrain.ts +9 -20
  83. package/src/shaders/README.md +3 -3
  84. package/src/shaders/encode_attribute.ts +1 -1
  85. package/src/shaders/glsl/atmosphere.vertex.glsl +1 -1
  86. package/src/shaders/glsl/atmosphere.vertex.glsl.g.ts +1 -1
  87. package/src/shaders/glsl/background.vertex.glsl +1 -1
  88. package/src/shaders/glsl/background.vertex.glsl.g.ts +1 -1
  89. package/src/shaders/glsl/background_pattern.vertex.glsl +1 -1
  90. package/src/shaders/glsl/background_pattern.vertex.glsl.g.ts +1 -1
  91. package/src/shaders/glsl/circle.fragment.glsl +15 -15
  92. package/src/shaders/glsl/circle.fragment.glsl.g.ts +1 -1
  93. package/src/shaders/glsl/circle.vertex.glsl +16 -16
  94. package/src/shaders/glsl/circle.vertex.glsl.g.ts +1 -1
  95. package/src/shaders/glsl/clipping_mask.vertex.glsl +1 -1
  96. package/src/shaders/glsl/clipping_mask.vertex.glsl.g.ts +1 -1
  97. package/src/shaders/glsl/collision_box.fragment.glsl +2 -2
  98. package/src/shaders/glsl/collision_box.fragment.glsl.g.ts +1 -1
  99. package/src/shaders/glsl/collision_box.vertex.glsl +5 -5
  100. package/src/shaders/glsl/collision_box.vertex.glsl.g.ts +1 -1
  101. package/src/shaders/glsl/collision_circle.fragment.glsl +2 -2
  102. package/src/shaders/glsl/collision_circle.fragment.glsl.g.ts +1 -1
  103. package/src/shaders/glsl/collision_circle.vertex.glsl +5 -5
  104. package/src/shaders/glsl/collision_circle.vertex.glsl.g.ts +1 -1
  105. package/src/shaders/glsl/color_relief.vertex.glsl +1 -1
  106. package/src/shaders/glsl/color_relief.vertex.glsl.g.ts +1 -1
  107. package/src/shaders/glsl/debug.vertex.glsl +1 -1
  108. package/src/shaders/glsl/debug.vertex.glsl.g.ts +1 -1
  109. package/src/shaders/glsl/depth.vertex.glsl +1 -1
  110. package/src/shaders/glsl/depth.vertex.glsl.g.ts +1 -1
  111. package/src/shaders/glsl/fill.fragment.glsl +4 -4
  112. package/src/shaders/glsl/fill.fragment.glsl.g.ts +1 -1
  113. package/src/shaders/glsl/fill.vertex.glsl +11 -5
  114. package/src/shaders/glsl/fill.vertex.glsl.g.ts +1 -1
  115. package/src/shaders/glsl/fill_extrusion.vertex.glsl +9 -9
  116. package/src/shaders/glsl/fill_extrusion.vertex.glsl.g.ts +1 -1
  117. package/src/shaders/glsl/fill_extrusion_pattern.fragment.glsl +12 -12
  118. package/src/shaders/glsl/fill_extrusion_pattern.fragment.glsl.g.ts +1 -1
  119. package/src/shaders/glsl/fill_extrusion_pattern.vertex.glsl +15 -15
  120. package/src/shaders/glsl/fill_extrusion_pattern.vertex.glsl.g.ts +1 -1
  121. package/src/shaders/glsl/fill_outline.fragment.glsl +4 -4
  122. package/src/shaders/glsl/fill_outline.fragment.glsl.g.ts +1 -1
  123. package/src/shaders/glsl/fill_outline.vertex.glsl +11 -5
  124. package/src/shaders/glsl/fill_outline.vertex.glsl.g.ts +1 -1
  125. package/src/shaders/glsl/fill_outline_pattern.fragment.glsl +6 -6
  126. package/src/shaders/glsl/fill_outline_pattern.fragment.glsl.g.ts +1 -1
  127. package/src/shaders/glsl/fill_outline_pattern.vertex.glsl +17 -11
  128. package/src/shaders/glsl/fill_outline_pattern.vertex.glsl.g.ts +1 -1
  129. package/src/shaders/glsl/fill_pattern.fragment.glsl +6 -6
  130. package/src/shaders/glsl/fill_pattern.fragment.glsl.g.ts +1 -1
  131. package/src/shaders/glsl/fill_pattern.vertex.glsl +17 -11
  132. package/src/shaders/glsl/fill_pattern.vertex.glsl.g.ts +1 -1
  133. package/src/shaders/glsl/heatmap.fragment.glsl +2 -2
  134. package/src/shaders/glsl/heatmap.fragment.glsl.g.ts +1 -1
  135. package/src/shaders/glsl/heatmap.vertex.glsl +5 -5
  136. package/src/shaders/glsl/heatmap.vertex.glsl.g.ts +1 -1
  137. package/src/shaders/glsl/heatmap_texture.vertex.glsl +1 -1
  138. package/src/shaders/glsl/heatmap_texture.vertex.glsl.g.ts +1 -1
  139. package/src/shaders/glsl/hillshade.vertex.glsl +1 -1
  140. package/src/shaders/glsl/hillshade.vertex.glsl.g.ts +1 -1
  141. package/src/shaders/glsl/hillshade_prepare.vertex.glsl +2 -2
  142. package/src/shaders/glsl/hillshade_prepare.vertex.glsl.g.ts +1 -1
  143. package/src/shaders/glsl/layer_opacity.vertex.glsl +12 -0
  144. package/src/shaders/glsl/layer_opacity.vertex.glsl.g.ts +2 -0
  145. package/src/shaders/glsl/line.fragment.glsl +8 -10
  146. package/src/shaders/glsl/line.fragment.glsl.g.ts +1 -1
  147. package/src/shaders/glsl/line.vertex.glsl +21 -15
  148. package/src/shaders/glsl/line.vertex.glsl.g.ts +1 -1
  149. package/src/shaders/glsl/line_gradient.fragment.glsl +6 -8
  150. package/src/shaders/glsl/line_gradient.fragment.glsl.g.ts +1 -1
  151. package/src/shaders/glsl/line_gradient.vertex.glsl +21 -15
  152. package/src/shaders/glsl/line_gradient.vertex.glsl.g.ts +1 -1
  153. package/src/shaders/glsl/line_gradient_sdf.fragment.glsl +14 -16
  154. package/src/shaders/glsl/line_gradient_sdf.fragment.glsl.g.ts +1 -1
  155. package/src/shaders/glsl/line_gradient_sdf.vertex.glsl +27 -21
  156. package/src/shaders/glsl/line_gradient_sdf.vertex.glsl.g.ts +1 -1
  157. package/src/shaders/glsl/line_pattern.fragment.glsl +15 -17
  158. package/src/shaders/glsl/line_pattern.fragment.glsl.g.ts +1 -1
  159. package/src/shaders/glsl/line_pattern.vertex.glsl +30 -24
  160. package/src/shaders/glsl/line_pattern.vertex.glsl.g.ts +1 -1
  161. package/src/shaders/glsl/line_sdf.fragment.glsl +16 -18
  162. package/src/shaders/glsl/line_sdf.fragment.glsl.g.ts +1 -1
  163. package/src/shaders/glsl/line_sdf.vertex.glsl +27 -21
  164. package/src/shaders/glsl/line_sdf.vertex.glsl.g.ts +1 -1
  165. package/src/shaders/glsl/projection_error_measurement.fragment.glsl +1 -1
  166. package/src/shaders/glsl/projection_error_measurement.fragment.glsl.g.ts +1 -1
  167. package/src/shaders/glsl/projection_error_measurement.vertex.glsl +2 -2
  168. package/src/shaders/glsl/projection_error_measurement.vertex.glsl.g.ts +1 -1
  169. package/src/shaders/glsl/raster.vertex.glsl +1 -1
  170. package/src/shaders/glsl/raster.vertex.glsl.g.ts +1 -1
  171. package/src/shaders/glsl/sky.vertex.glsl +1 -1
  172. package/src/shaders/glsl/sky.vertex.glsl.g.ts +1 -1
  173. package/src/shaders/glsl/symbol_icon.fragment.glsl +1 -1
  174. package/src/shaders/glsl/symbol_icon.fragment.glsl.g.ts +1 -1
  175. package/src/shaders/glsl/symbol_icon.vertex.glsl +12 -9
  176. package/src/shaders/glsl/symbol_icon.vertex.glsl.g.ts +1 -1
  177. package/src/shaders/glsl/symbol_sdf.fragment.glsl +8 -8
  178. package/src/shaders/glsl/symbol_sdf.fragment.glsl.g.ts +1 -1
  179. package/src/shaders/glsl/symbol_sdf.vertex.glsl +20 -16
  180. package/src/shaders/glsl/symbol_sdf.vertex.glsl.g.ts +1 -1
  181. package/src/shaders/glsl/symbol_text_and_icon.fragment.glsl +11 -10
  182. package/src/shaders/glsl/symbol_text_and_icon.fragment.glsl.g.ts +1 -1
  183. package/src/shaders/glsl/symbol_text_and_icon.vertex.glsl +22 -17
  184. package/src/shaders/glsl/symbol_text_and_icon.vertex.glsl.g.ts +1 -1
  185. package/src/shaders/glsl/terrain.vertex.glsl +1 -1
  186. package/src/shaders/glsl/terrain.vertex.glsl.g.ts +1 -1
  187. package/src/shaders/glsl/terrain_coords.vertex.glsl +1 -1
  188. package/src/shaders/glsl/terrain_coords.vertex.glsl.g.ts +1 -1
  189. package/src/shaders/glsl/terrain_depth.vertex.glsl +1 -1
  190. package/src/shaders/glsl/terrain_depth.vertex.glsl.g.ts +1 -1
  191. package/src/shaders/shaders.ts +51 -7
  192. package/src/source/canvas_source.test.ts +3 -1
  193. package/src/source/canvas_source.ts +9 -8
  194. package/src/source/geojson_source.test.ts +133 -36
  195. package/src/source/geojson_source.ts +47 -35
  196. package/src/source/geojson_worker_source.test.ts +77 -0
  197. package/src/source/geojson_worker_source.ts +18 -12
  198. package/src/source/image_source.ts +12 -11
  199. package/src/source/protocol_crud.ts +3 -3
  200. package/src/source/raster_dem_tile_source.test.ts +4 -4
  201. package/src/source/raster_dem_tile_source.ts +3 -2
  202. package/src/source/raster_dem_tile_worker_source.ts +1 -1
  203. package/src/source/raster_tile_source.test.ts +63 -0
  204. package/src/source/raster_tile_source.ts +47 -17
  205. package/src/source/rtl_text_plugin_worker.ts +4 -4
  206. package/src/source/source_state.test.ts +40 -1
  207. package/src/source/source_state.ts +17 -9
  208. package/src/source/vector_tile_overzoomed.ts +3 -3
  209. package/src/source/vector_tile_source.test.ts +29 -1
  210. package/src/source/vector_tile_source.ts +14 -12
  211. package/src/source/vector_tile_worker_source.test.ts +103 -4
  212. package/src/source/vector_tile_worker_source.ts +12 -6
  213. package/src/source/video_source.ts +10 -9
  214. package/src/source/worker_tile_state.ts +5 -8
  215. package/src/style/create_style_layer.ts +14 -1
  216. package/src/style/evaluation_parameters.ts +1 -1
  217. package/src/style/format_section_override.test.ts +1 -0
  218. package/src/style/format_section_override.ts +2 -2
  219. package/src/style/light.test.ts +24 -3
  220. package/src/style/light.ts +21 -84
  221. package/src/style/light_properties.g.ts +41 -0
  222. package/src/style/load_sprite.test.ts +2 -2
  223. package/src/style/parse_glyph_pbf.ts +6 -6
  224. package/src/style/pauseable_placement.ts +4 -4
  225. package/src/style/projection_properties.g.ts +32 -0
  226. package/src/style/properties.test.ts +63 -7
  227. package/src/style/properties.ts +50 -24
  228. package/src/style/query_utils.ts +4 -4
  229. package/src/style/sky.test.ts +20 -1
  230. package/src/style/sky.ts +14 -53
  231. package/src/style/sky_properties.g.ts +50 -0
  232. package/src/style/style.test.ts +200 -6
  233. package/src/style/style.ts +125 -116
  234. package/src/style/style_image.ts +1 -1
  235. package/src/style/style_layer/background_style_layer_properties.g.ts +6 -6
  236. package/src/style/style_layer/circle_style_layer.ts +1 -1
  237. package/src/style/style_layer/circle_style_layer_properties.g.ts +17 -16
  238. package/src/style/style_layer/color_relief_style_layer.ts +1 -1
  239. package/src/style/style_layer/color_relief_style_layer_properties.g.ts +6 -6
  240. package/src/style/style_layer/custom_style_layer.test.ts +20 -1
  241. package/src/style/style_layer/custom_style_layer.ts +21 -26
  242. package/src/style/style_layer/fill_extrusion_style_layer.ts +2 -2
  243. package/src/style/style_layer/fill_extrusion_style_layer_properties.g.ts +11 -11
  244. package/src/style/style_layer/fill_style_layer.ts +3 -3
  245. package/src/style/style_layer/fill_style_layer_properties.g.ts +16 -12
  246. package/src/style/style_layer/heatmap_style_layer.ts +5 -5
  247. package/src/style/style_layer/heatmap_style_layer_properties.g.ts +8 -8
  248. package/src/style/style_layer/hillshade_style_layer.ts +1 -1
  249. package/src/style/style_layer/hillshade_style_layer_properties.g.ts +12 -12
  250. package/src/style/style_layer/line_style_layer.test.ts +1 -38
  251. package/src/style/style_layer/line_style_layer.ts +10 -28
  252. package/src/style/style_layer/line_style_layer_properties.g.ts +24 -20
  253. package/src/style/style_layer/raster_style_layer_properties.g.ts +12 -12
  254. package/src/style/style_layer/symbol_style_layer.ts +5 -5
  255. package/src/style/style_layer/symbol_style_layer_properties.g.ts +63 -62
  256. package/src/style/style_layer/variable_text_anchor.ts +1 -1
  257. package/src/style/style_layer.ts +29 -41
  258. package/src/style/style_layer_index.ts +3 -3
  259. package/src/style/validate_style.test.ts +109 -0
  260. package/src/style/validate_style.ts +93 -26
  261. package/src/style/zoom_history.ts +1 -1
  262. package/src/symbol/anchor.ts +1 -1
  263. package/src/symbol/check_max_angle.ts +1 -1
  264. package/src/symbol/collision_index.test.ts +2 -2
  265. package/src/symbol/collision_index.ts +15 -9
  266. package/src/symbol/cross_tile_symbol_index.ts +9 -9
  267. package/src/symbol/get_anchors.ts +1 -1
  268. package/src/symbol/grid_index.ts +3 -3
  269. package/src/symbol/opacity_state.ts +1 -1
  270. package/src/symbol/path_interpolator.ts +1 -1
  271. package/src/symbol/placement.ts +15 -15
  272. package/src/symbol/projection.ts +6 -6
  273. package/src/symbol/shaping.ts +1 -1
  274. package/src/symbol/symbol_layout.ts +1 -1
  275. package/src/symbol/symbol_size.ts +1 -1
  276. package/src/symbol/tagged_string.ts +8 -8
  277. package/src/tile/terrain_tile_manager.test.ts +4 -4
  278. package/src/tile/terrain_tile_manager.ts +5 -5
  279. package/src/tile/tile.test.ts +24 -0
  280. package/src/tile/tile.ts +33 -23
  281. package/src/tile/tile_bounds.ts +1 -1
  282. package/src/tile/tile_cache.ts +4 -4
  283. package/src/tile/tile_id.ts +48 -21
  284. package/src/tile/tile_manager.ts +45 -43
  285. package/src/tile/tile_manager_in_view_tiles.test.ts +22 -1
  286. package/src/tile/tile_manager_in_view_tiles.ts +7 -6
  287. package/src/tile/tile_manager_raster.ts +2 -2
  288. package/src/tile/tile_manager_raster_dem.ts +1 -1
  289. package/src/ui/anchor.ts +1 -1
  290. package/src/ui/camera.test.ts +630 -645
  291. package/src/ui/camera.ts +154 -565
  292. package/src/ui/control/attribution_control.test.ts +4 -2
  293. package/src/ui/control/attribution_control.ts +10 -10
  294. package/src/ui/control/fullscreen_control.ts +46 -16
  295. package/src/ui/control/geolocate_control.test.ts +1 -1
  296. package/src/ui/control/geolocate_control.ts +120 -25
  297. package/src/ui/control/globe_control.test.ts +4 -2
  298. package/src/ui/control/globe_control.ts +4 -4
  299. package/src/ui/control/logo_control.test.ts +3 -2
  300. package/src/ui/control/logo_control.ts +3 -3
  301. package/src/ui/control/navigation_control.test.ts +3 -5
  302. package/src/ui/control/navigation_control.ts +26 -22
  303. package/src/ui/control/scale_control.ts +6 -6
  304. package/src/ui/control/terrain_control.test.ts +5 -2
  305. package/src/ui/control/terrain_control.ts +4 -4
  306. package/src/ui/events.ts +178 -92
  307. package/src/ui/handler/box_zoom.ts +17 -18
  308. package/src/ui/handler/click_zoom.ts +12 -12
  309. package/src/ui/handler/cooperative_gestures.ts +11 -9
  310. package/src/ui/handler/drag_handler.ts +14 -14
  311. package/src/ui/handler/drag_move_state_manager.ts +23 -23
  312. package/src/ui/handler/drag_pan.test.ts +1 -1
  313. package/src/ui/handler/drag_rotate.test.ts +1 -1
  314. package/src/ui/handler/handler_util.ts +2 -2
  315. package/src/ui/handler/keyboard.ts +13 -13
  316. package/src/ui/handler/map_event.ts +28 -28
  317. package/src/ui/handler/mouse.ts +1 -1
  318. package/src/ui/handler/mouse_rotate.test.ts +2 -2
  319. package/src/ui/handler/scroll_zoom.test.ts +2 -6
  320. package/src/ui/handler/scroll_zoom.ts +25 -20
  321. package/src/ui/handler/shim/dblclick_zoom.ts +4 -4
  322. package/src/ui/handler/shim/drag_pan.ts +4 -4
  323. package/src/ui/handler/shim/drag_rotate.ts +4 -4
  324. package/src/ui/handler/shim/two_fingers_touch.ts +8 -8
  325. package/src/ui/handler/tap_drag_zoom.test.ts +1 -1
  326. package/src/ui/handler/tap_drag_zoom.ts +10 -10
  327. package/src/ui/handler/tap_recognizer.ts +8 -8
  328. package/src/ui/handler/tap_zoom.ts +14 -14
  329. package/src/ui/handler/touch_pan.ts +11 -11
  330. package/src/ui/handler/transform-provider.ts +10 -10
  331. package/src/ui/handler/two_fingers_touch.test.ts +5 -5
  332. package/src/ui/handler/two_fingers_touch.ts +3 -3
  333. package/src/ui/handler_inertia.ts +11 -10
  334. package/src/ui/handler_manager.test.ts +17 -17
  335. package/src/ui/handler_manager.ts +51 -43
  336. package/src/ui/hash.ts +9 -9
  337. package/src/ui/map.ts +827 -249
  338. package/src/ui/map_tests/map_animation.test.ts +4 -4
  339. package/src/ui/map_tests/map_bounds.test.ts +2 -2
  340. package/src/ui/map_tests/map_calculate_camera_options.test.ts +1 -1
  341. package/src/ui/map_tests/map_canvas.test.ts +2 -1
  342. package/src/ui/map_tests/map_images.test.ts +124 -2
  343. package/src/ui/map_tests/map_layer.test.ts +7 -7
  344. package/src/ui/map_tests/map_query_rendered_features.test.ts +1 -1
  345. package/src/ui/map_tests/map_resize.test.ts +2 -2
  346. package/src/ui/map_tests/map_style.test.ts +22 -28
  347. package/src/ui/map_tests/map_terrain.test.ts +53 -6
  348. package/src/ui/map_tests/map_webgl.test.ts +20 -0
  349. package/src/ui/map_tests/map_zoom.test.ts +2 -2
  350. package/src/ui/marker.test.ts +6 -6
  351. package/src/ui/marker.ts +86 -30
  352. package/src/ui/popup.ts +51 -21
  353. package/src/util/abort_error.ts +1 -1
  354. package/src/util/actor.test.ts +28 -45
  355. package/src/util/actor.ts +15 -9
  356. package/src/util/ajax.test.ts +77 -1
  357. package/src/util/ajax.ts +34 -12
  358. package/src/util/browser.ts +4 -2
  359. package/src/util/color_ramp.test.ts +3 -3
  360. package/src/util/dictionary_coder.ts +2 -2
  361. package/src/util/dispatcher.test.ts +12 -14
  362. package/src/util/dispatcher.ts +39 -19
  363. package/src/util/dom.ts +5 -5
  364. package/src/util/evented.test.ts +34 -31
  365. package/src/util/evented.ts +28 -13
  366. package/src/util/find_pole_of_inaccessibility.ts +1 -1
  367. package/src/util/global_worker_pool.ts +4 -4
  368. package/src/util/image.ts +8 -8
  369. package/src/util/image_request.test.ts +17 -3
  370. package/src/util/image_request.ts +13 -5
  371. package/src/util/intersection_tests.ts +6 -6
  372. package/src/util/primitives/bounding_volume_cache.ts +1 -1
  373. package/src/util/ref_properties.ts +7 -1
  374. package/src/util/request_manager.ts +2 -2
  375. package/src/util/request_performance.ts +1 -1
  376. package/src/util/resolve_tokens.test.ts +2 -2
  377. package/src/util/script_detection.ts +10 -10
  378. package/src/util/struct_array.ts +19 -11
  379. package/src/util/task_queue.ts +3 -3
  380. package/src/util/test/null_gl.ts +294 -292
  381. package/src/util/test/util.ts +35 -20
  382. package/src/util/throttled_invoker.ts +2 -2
  383. package/src/util/transferable_grid_index.ts +8 -8
  384. package/src/util/util.ts +33 -43
  385. package/src/util/vectortile_to_geojson.ts +1 -1
  386. package/src/util/verticalize_punctuation.ts +1 -1
  387. package/src/util/web_worker.test.ts +68 -14
  388. package/src/util/web_worker.ts +64 -4
  389. package/src/util/web_worker_transfer.test.ts +21 -0
  390. package/src/util/web_worker_transfer.ts +2 -1
  391. package/src/util/worker_pool.test.ts +11 -14
  392. package/src/util/worker_pool.ts +19 -17
  393. package/src/webgl/context.ts +13 -13
  394. package/src/webgl/draw/draw_background.ts +2 -2
  395. package/src/webgl/draw/draw_circle.ts +1 -1
  396. package/src/webgl/draw/draw_collision_debug.ts +1 -1
  397. package/src/webgl/draw/draw_color_relief.ts +2 -2
  398. package/src/webgl/draw/draw_custom.test.ts +4 -0
  399. package/src/webgl/draw/draw_custom.ts +1 -1
  400. package/src/webgl/draw/draw_debug.ts +2 -2
  401. package/src/webgl/draw/draw_fill.test.ts +2 -1
  402. package/src/webgl/draw/draw_fill.ts +79 -32
  403. package/src/webgl/draw/draw_fill_extrusion.ts +1 -1
  404. package/src/webgl/draw/draw_heatmap.ts +2 -2
  405. package/src/webgl/draw/draw_hillshade.ts +2 -2
  406. package/src/webgl/draw/draw_layer_opacity.ts +94 -0
  407. package/src/webgl/draw/draw_line.ts +21 -95
  408. package/src/webgl/draw/draw_raster.ts +2 -2
  409. package/src/webgl/draw/draw_sky.ts +12 -11
  410. package/src/webgl/draw/draw_symbol.test.ts +4 -3
  411. package/src/webgl/draw/draw_symbol.ts +5 -4
  412. package/src/webgl/draw/draw_terrain.ts +3 -3
  413. package/src/webgl/framebuffer.ts +1 -5
  414. package/src/webgl/index_buffer.ts +3 -3
  415. package/src/webgl/program/fill_extrusion_program.ts +1 -2
  416. package/src/webgl/program/layer_opacity_program.ts +22 -0
  417. package/src/webgl/program/line_program.ts +12 -65
  418. package/src/webgl/program/program_uniforms.ts +57 -18
  419. package/src/webgl/program/symbol_program.ts +16 -6
  420. package/src/webgl/program.ts +10 -4
  421. package/src/webgl/render_to_texture.test.ts +42 -7
  422. package/src/webgl/render_to_texture.ts +27 -25
  423. package/src/webgl/texture.test.ts +17 -0
  424. package/src/webgl/texture.ts +35 -15
  425. package/src/webgl/value.ts +30 -30
  426. package/src/webgl/vertex_array_object.ts +3 -3
  427. package/src/webgl/vertex_buffer.ts +5 -5
  428. package/src/shaders/glsl/line_texture.vertex.glsl +0 -11
  429. package/src/shaders/glsl/line_texture.vertex.glsl.g.ts +0 -2
  430. package/src/util/framebuffer_error.ts +0 -21
  431. /package/src/shaders/glsl/{line_texture.fragment.glsl → layer_opacity.fragment.glsl} +0 -0
  432. /package/src/shaders/glsl/{line_texture.fragment.glsl.g.ts → layer_opacity.fragment.glsl.g.ts} +0 -0
package/README.md CHANGED
@@ -29,8 +29,6 @@ Include the following code in the `<body>` of your HTML file.
29
29
  <script type='module'>
30
30
  import * as maplibregl from 'https://unpkg.com/maplibre-gl@latest/dist/maplibre-gl.mjs';
31
31
 
32
- maplibregl.setWorkerUrl('https://unpkg.com/maplibre-gl@latest/dist/maplibre-gl-worker.mjs');
33
-
34
32
  const map = new maplibregl.Map({
35
33
  container: 'map',
36
34
  style: 'https://demotiles.maplibre.org/style.json', // stylesheet location
@@ -87,6 +85,9 @@ Gold:
87
85
 
88
86
  <a href="https://www.microsoft.com/"><img src="https://maplibre.org/img/msft-logo.svg" alt="Logo MSFT" width="25%"/></a>
89
87
 
88
+ <a href="https://aws.amazon.com/location"><img src="https://maplibre.org/img/aws-logo.svg" alt="Logo AWS" width="25%"/></a>
89
+
90
+
90
91
  Silver:
91
92
 
92
93
  <a href="https://www.mierune.co.jp/?lang=en"><img src="https://maplibre.org/img/mierune-logo.svg" alt="Logo MIERUNE" width="25%"/></a>
@@ -101,9 +102,9 @@ Silver:
101
102
 
102
103
  <a href="https://www.maptiler.com/"><img src="https://maplibre.org/img/maptiler-logo.svg" alt="Logo maptiler" width="25%"/></a>
103
104
 
104
- <a href="https://aws.amazon.com/location"><img src="https://maplibre.org/img/aws-logo.svg" alt="Logo AWS" width="25%"/></a>
105
+ <a href="https://www.caltopo.com/"><img src="https://maplibre.org/img/caltopo-logo.svg" alt="Logo Caltopo" width="25%"/></a>
105
106
 
106
- <a href="https://www.caltopo.com/"><img src="https://maplibre.org/img/caltopo-logo.svg" alt="Caltopo AWS" width="25%"/></a>
107
+ <a href="https://www.caltopo.com/"><img src="https://maplibre.org/img/smartmaps-logo.svg" alt="Logo SmartMaps" width="25%"/></a>
107
108
 
108
109
  Backers and Supporters:
109
110
 
package/build/banner.ts CHANGED
@@ -5,8 +5,10 @@ import {dirname, join} from 'path';
5
5
  const packageJSONPath = join(dirname(fileURLToPath(import.meta.url)), '../package.json');
6
6
  const packageJSON = JSON.parse(readFileSync(packageJSONPath, 'utf8'));
7
7
 
8
- export default
9
- `/**
8
+ const banner: string =
9
+ `/**
10
10
  * MapLibre GL JS
11
11
  * @license 3-Clause BSD. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v${packageJSON.version}/LICENSE.txt
12
12
  */`;
13
+
14
+ export default banner;
@@ -5,14 +5,25 @@ import typedocConfig from '../typedoc.json' with {type: 'json'};
5
5
  import packageJson from '../package.json' with {type: 'json'};
6
6
  import {get} from 'https';
7
7
  import sharp from 'sharp';
8
+ import EXAMPLE_CATEGORY_GROUPS from '../docs/example-categories.json' with {type: 'json'};
8
9
 
9
10
  type HtmlDoc = {
10
11
  title: string;
11
12
  description: string;
12
13
  mdFileName: string;
13
14
  isNew: boolean;
15
+ category: string;
16
+ order: number;
14
17
  };
15
18
 
19
+ /**
20
+ * Reads the `content` of the `<meta>` tag with the given `property`, e.g. `og:description`.
21
+ */
22
+ function extractMetaContent(htmlContentLines: string[], property: string): string | undefined {
23
+ const line = htmlContentLines.find(l => l.includes(property));
24
+ return line?.match(/content=(["'])(.*?)\1/)?.[2];
25
+ }
26
+
16
27
  function generateAPIIntroMarkdown(lines: string[]): string {
17
28
  let intro = `# Intro
18
29
 
@@ -95,28 +106,71 @@ function generateMarkdownForExample(title: string, description: string, file: st
95
106
 
96
107
  ${description}
97
108
 
98
- <iframe src="../${file}" width="100%" style="border:none; height:400px"></iframe>
109
+ <iframe src="${file}" width="100%" style="border:none; height:400px"></iframe>
99
110
 
100
111
  ${codeBlock}
101
112
  `;
102
113
  }
103
114
 
104
- async function generateMarkdownIndexFileOfAllExamplesAndPackImages(indexArray: HtmlDoc[]): Promise<string> {
105
- let indexMarkdown = '# Overview \n\n';
115
+ /**
116
+ * This method converts png files to webp files in order to improve performance of docs,
117
+ * This is considered a build artifact and should not be checked in, but generated as part of the docs generation process.
118
+ */
119
+ async function packImages(indexArray: HtmlDoc[]) {
106
120
  const promises: Array<Promise<any>> = [];
107
121
  for (const indexArrayItem of indexArray) {
108
122
  const imagePath = `docs/assets/examples/${indexArrayItem.mdFileName.replace('.md', '.png')}`;
109
123
  const outputPath = imagePath.replace('.png', '.webp');
110
124
  promises.push(sharp(imagePath).webp({quality: 90, lossless: false}).toFile(outputPath));
111
- indexMarkdown += `
112
- ## [${indexArrayItem.title}](./${indexArrayItem.mdFileName})
125
+ }
126
+ await Promise.all(promises);
127
+ }
113
128
 
114
- ![${indexArrayItem.description}](${outputPath.replace('docs/', '../')}){ loading=lazy }
129
+ function renderExampleCard(indexArrayItem: HtmlDoc): string {
130
+ const cardImg = `../assets/examples/${indexArrayItem.mdFileName.replace('.md', '.webp')}`;
131
+ const desc = indexArrayItem.description || '';
132
+ const cardFileName = indexArrayItem.mdFileName.replace(/.md$/, '/');
133
+ const badge = indexArrayItem.isNew ? '\n<span class="example-card-badge">new</span>' : '';
134
+ return `<a class="example-card" href="./${cardFileName}">
135
+ <div class="example-card-image">
136
+ <img src="${cardImg}" loading="lazy" alt="${desc}">${badge}
137
+ </div>
138
+ <div class="example-card-content">
139
+ <h3>${indexArrayItem.title}</h3>
140
+ <p>${desc}</p>
141
+ </div>
142
+ </a>`;
143
+ }
115
144
 
116
- ${indexArrayItem.description}
117
- `;
145
+ function renderExampleGrid(examples: HtmlDoc[]): string {
146
+ const cards = examples
147
+ // Examples with an explicit `og:order` come first (ascending); the rest fall back to alphabetical.
148
+ .sort((a, b) => (a.order !== b.order ? a.order - b.order : a.title.localeCompare(b.title)))
149
+ .map(renderExampleCard)
150
+ .join('\n');
151
+ return `<div class="examples-grid">\n${cards}\n</div>`;
152
+ }
153
+
154
+ /**
155
+ * Builds the examples overview page:
156
+ * a section per group, with content tabs when a group holds more than one category.
157
+ */
158
+ function generateMarkdownIndexFileOfAllExamples(indexArray: HtmlDoc[]): string {
159
+ const byCategory = Map.groupBy(indexArray, item => item.category);
160
+
161
+ let indexMarkdown = '# Overview\n\n';
162
+ for (const group of EXAMPLE_CATEGORY_GROUPS) {
163
+ const categories = group.categories.filter(category => byCategory.has(category));
164
+ if (categories.length === 0) continue;
165
+ indexMarkdown += `## ${group.title}\n\n`;
166
+ if (categories.length === 1) {
167
+ indexMarkdown += `${renderExampleGrid(byCategory.get(categories[0]))}\n\n`;
168
+ continue;
169
+ }
170
+ for (const category of categories) {
171
+ indexMarkdown += `=== "${category}"\n\n${indentBlock(renderExampleGrid(byCategory.get(category)))}\n\n`;
172
+ }
118
173
  }
119
- await Promise.all(promises);
120
174
  return indexMarkdown;
121
175
  }
122
176
 
@@ -156,7 +210,10 @@ async function generateExamplesFolder() {
156
210
  htmlContent = htmlContent.replace(/-dev\.mjs/g, '.mjs');
157
211
  const htmlContentLines = htmlContent.split('\n');
158
212
  const title = htmlContentLines.find(l => l.includes('<title'))?.replace('<title>', '').replace('</title>', '').trim();
159
- const description = htmlContentLines.find(l => l.includes('og:description'))?.replace(/.*content=\"(.*)\".*/, '$1');
213
+ const description = extractMetaContent(htmlContentLines, 'og:description');
214
+ const category = extractMetaContent(htmlContentLines, 'og:category');
215
+ const orderMeta = extractMetaContent(htmlContentLines, 'og:order');
216
+ const order = orderMeta === undefined ? Number.POSITIVE_INFINITY : Number(orderMeta);
160
217
  fs.writeFileSync(path.join(examplesDocsFolder, file), htmlContent);
161
218
  const mdFileName = file.replace('.html', '.md');
162
219
  const isNew = isNewExample(htmlContentLines);
@@ -164,13 +221,15 @@ async function generateExamplesFolder() {
164
221
  title,
165
222
  description,
166
223
  mdFileName,
167
- isNew
224
+ isNew,
225
+ category,
226
+ order
168
227
  });
169
228
  const exampleMarkdown = generateMarkdownForExample(title, description, file, htmlContent, isNew);
170
229
  fs.writeFileSync(path.join(examplesDocsFolder, mdFileName), exampleMarkdown);
171
230
  }
172
-
173
- const indexMarkdown = await generateMarkdownIndexFileOfAllExamplesAndPackImages(indexArray);
231
+ await packImages(indexArray);
232
+ const indexMarkdown = generateMarkdownIndexFileOfAllExamples(indexArray);
174
233
  fs.writeFileSync(path.join(examplesDocsFolder, 'index.md'), indexMarkdown);
175
234
  }
176
235
 
@@ -235,7 +294,7 @@ function updateMapLibreVersionForUNPKG() {
235
294
  let indexContent = fs.readFileSync(indexPath, 'utf-8');
236
295
 
237
296
  // Replace the version number
238
- indexContent = indexContent.replace(/unpkg\.com\/maplibre-gl@\^(\d+\.\d+\.\d+)/g, `unpkg.com/maplibre-gl@^${packageJson.version}`);
297
+ indexContent = indexContent.replace(/unpkg\.com\/maplibre-gl@\^[^/'"]+/g, `unpkg.com/maplibre-gl@^${packageJson.version}`);
239
298
 
240
299
  // Save index.md
241
300
  fs.writeFileSync(indexPath, indexContent);
@@ -9,7 +9,7 @@
9
9
  'use strict';
10
10
 
11
11
  import * as fs from 'fs';
12
- import * as util from '../src/util/util.ts';
12
+ import {extend} from '../src/util/util.ts';
13
13
  import {createLayout, viewTypes} from '../src/util/struct_array.ts';
14
14
  import type {ViewType, StructArrayLayout} from '../src/util/struct_array.ts';
15
15
 
@@ -60,7 +60,7 @@ function normalizeMembers(members, usedTypes) {
60
60
  usedTypes.add(member.type);
61
61
  }
62
62
 
63
- return util.extend(member, {
63
+ return extend(member, {
64
64
  size: sizeOf(member.type),
65
65
  view: member.type.toLowerCase()
66
66
  });
@@ -103,7 +103,7 @@ function createStructArrayLayoutType({members, size, alignment}) {
103
103
  if (!alignment || alignment === 1) members = members.reduce((memo, member) => {
104
104
  if (memo.length > 0 && memo[memo.length - 1].type === member.type) {
105
105
  const last = memo[memo.length - 1];
106
- return memo.slice(0, -1).concat(util.extend({}, last, {
106
+ return memo.slice(0, -1).concat(extend({}, last, {
107
107
  components: last.components + member.components,
108
108
  }));
109
109
  }
@@ -247,7 +247,7 @@ class ${structArrayLayoutClass} extends StructArray {`);
247
247
  }
248
248
 
249
249
  output.push(`
250
- _refreshViews() {`);
250
+ _refreshViews(): void {`);
251
251
 
252
252
  for (const type of usedTypes) {
253
253
  output.push(
@@ -279,13 +279,13 @@ class ${structArrayLayoutClass} extends StructArray {`);
279
279
 
280
280
  output.push(
281
281
  `
282
- public emplaceBack(${argNamesTyped.join(', ')}) {
282
+ public emplaceBack(${argNamesTyped.join(', ')}): number {
283
283
  const i = this.length;
284
284
  this.resize(i + 1);
285
285
  return this.emplace(i, ${argNames.join(', ')});
286
286
  }
287
287
 
288
- public emplace(i: number, ${argNamesTyped.join(', ')}) {`);
288
+ public emplace(i: number, ${argNamesTyped.join(', ')}): number {`);
289
289
 
290
290
  for (const size of usedTypeSizes) {
291
291
  output.push(
@@ -361,7 +361,7 @@ class ${structTypeClass} extends Struct {
361
361
  const componentAccess = `this._structArray.${member.view}[${index}]`;
362
362
 
363
363
  output.push(
364
- ` get ${name}() { return ${componentAccess}; }`);
364
+ ` get ${name}(): number { return ${componentAccess}; }`);
365
365
 
366
366
  // generate setters for properties that are updated during runtime symbol placement; others are read-only
367
367
  if (name === 'crossTileID' || name === 'placedOrientation' || name === 'hidden') {
@@ -373,7 +373,7 @@ class ${structTypeClass} extends Struct {
373
373
  // Special case used for the CollisionBoxArray type
374
374
  if (hasAnchorPoint) {
375
375
  output.push(
376
- ' get anchorPoint() { return new Point(this.anchorPointX, this.anchorPointY); }');
376
+ ' get anchorPoint(): Point { return new Point(this.anchorPointX, this.anchorPointY); }');
377
377
  }
378
378
 
379
379
  output.push(
@@ -400,7 +400,7 @@ export class ${structArrayClass} extends ${structArrayLayoutClass} {`);
400
400
  const componentOffset = (member.offset / member.size + c).toFixed(0);
401
401
  const componentStride = size / member.size;
402
402
  output.push(
403
- ` ${name}(index: number) { return this.${member.view}[index * ${componentStride} + ${componentOffset}]; }`);
403
+ ` ${name}(index: number): number { return this.${member.view}[index * ${componentStride} + ${componentOffset}]; }`);
404
404
  }
405
405
  }
406
406
  } else if (includeStructAccessors) { // get(i)