@scoova/mgl 1.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 (565) hide show
  1. package/LICENSE.txt +116 -0
  2. package/README.md +174 -0
  3. package/build/banner.ts +12 -0
  4. package/build/bump-version-changelog.js +26 -0
  5. package/build/check-bundle-size.js +77 -0
  6. package/build/generate-dist-package.js +26 -0
  7. package/build/generate-doc-images.ts +78 -0
  8. package/build/generate-docs.ts +190 -0
  9. package/build/generate-shaders.ts +68 -0
  10. package/build/generate-struct-arrays.ts +438 -0
  11. package/build/generate-style-code.ts +283 -0
  12. package/build/readme.md +56 -0
  13. package/build/release-notes.js +45 -0
  14. package/build/rollup/bundle_prelude.js +29 -0
  15. package/build/rollup/maplibregl.js +22 -0
  16. package/build/rollup_plugins.ts +58 -0
  17. package/dist/LICENSE.txt +116 -0
  18. package/dist/maplibre-gl.css +1 -0
  19. package/dist/maplibre-gl.d.ts +13304 -0
  20. package/dist/maplibre-gl.js +59 -0
  21. package/dist/maplibre-gl.js.map +1 -0
  22. package/dist/package.json +1 -0
  23. package/package.json +192 -0
  24. package/src/css/maplibre-gl.css +854 -0
  25. package/src/css/svg/maplibregl-ctrl-attrib.svg +3 -0
  26. package/src/css/svg/maplibregl-ctrl-compass.svg +4 -0
  27. package/src/css/svg/maplibregl-ctrl-fullscreen.svg +3 -0
  28. package/src/css/svg/maplibregl-ctrl-geolocate.svg +5 -0
  29. package/src/css/svg/maplibregl-ctrl-logo.svg +11 -0
  30. package/src/css/svg/maplibregl-ctrl-shrink.svg +3 -0
  31. package/src/css/svg/maplibregl-ctrl-terrain.svg +3 -0
  32. package/src/css/svg/maplibregl-ctrl-zoom-in.svg +3 -0
  33. package/src/css/svg/maplibregl-ctrl-zoom-out.svg +3 -0
  34. package/src/data/array_types.g.ts +1130 -0
  35. package/src/data/bucket/circle_attributes.ts +8 -0
  36. package/src/data/bucket/circle_bucket.ts +197 -0
  37. package/src/data/bucket/fill_attributes.ts +8 -0
  38. package/src/data/bucket/fill_bucket.test.ts +95 -0
  39. package/src/data/bucket/fill_bucket.ts +228 -0
  40. package/src/data/bucket/fill_extrusion_attributes.ts +13 -0
  41. package/src/data/bucket/fill_extrusion_bucket.ts +305 -0
  42. package/src/data/bucket/heatmap_bucket.ts +12 -0
  43. package/src/data/bucket/line_attributes.ts +8 -0
  44. package/src/data/bucket/line_attributes_ext.ts +8 -0
  45. package/src/data/bucket/line_bucket.test.ts +142 -0
  46. package/src/data/bucket/line_bucket.ts +592 -0
  47. package/src/data/bucket/pattern_attributes.ts +9 -0
  48. package/src/data/bucket/pattern_bucket_features.ts +57 -0
  49. package/src/data/bucket/symbol_attributes.ts +122 -0
  50. package/src/data/bucket/symbol_bucket.test.ts +243 -0
  51. package/src/data/bucket/symbol_bucket.ts +975 -0
  52. package/src/data/bucket.ts +123 -0
  53. package/src/data/dem_data.test.ts +237 -0
  54. package/src/data/dem_data.ts +171 -0
  55. package/src/data/evaluation_feature.ts +18 -0
  56. package/src/data/extent.ts +13 -0
  57. package/src/data/feature_index.ts +337 -0
  58. package/src/data/feature_position_map.test.ts +33 -0
  59. package/src/data/feature_position_map.ts +126 -0
  60. package/src/data/index_array_type.ts +9 -0
  61. package/src/data/load_geometry.test.ts +49 -0
  62. package/src/data/load_geometry.ts +44 -0
  63. package/src/data/pos3d_attributes.ts +5 -0
  64. package/src/data/pos_attributes.ts +5 -0
  65. package/src/data/program_configuration.ts +735 -0
  66. package/src/data/raster_bounds_attributes.ts +6 -0
  67. package/src/data/segment.ts +89 -0
  68. package/src/geo/edge_insets.test.ts +83 -0
  69. package/src/geo/edge_insets.ts +146 -0
  70. package/src/geo/lng_lat.test.ts +65 -0
  71. package/src/geo/lng_lat.ts +169 -0
  72. package/src/geo/lng_lat_bounds.test.ts +357 -0
  73. package/src/geo/lng_lat_bounds.ts +356 -0
  74. package/src/geo/mercator_coordinate.test.ts +34 -0
  75. package/src/geo/mercator_coordinate.ts +157 -0
  76. package/src/geo/projection/projection.ts +72 -0
  77. package/src/geo/transform.test.ts +509 -0
  78. package/src/geo/transform.ts +1072 -0
  79. package/src/gl/color_mode.ts +31 -0
  80. package/src/gl/context.ts +321 -0
  81. package/src/gl/cull_face_mode.ts +22 -0
  82. package/src/gl/depth_mode.ts +26 -0
  83. package/src/gl/framebuffer.ts +48 -0
  84. package/src/gl/index_buffer.ts +55 -0
  85. package/src/gl/render_pool.test.ts +69 -0
  86. package/src/gl/render_pool.ts +93 -0
  87. package/src/gl/state.test.ts +125 -0
  88. package/src/gl/stencil_mode.ts +27 -0
  89. package/src/gl/types.ts +59 -0
  90. package/src/gl/value.ts +534 -0
  91. package/src/gl/vertex_buffer.test.ts +57 -0
  92. package/src/gl/vertex_buffer.ts +111 -0
  93. package/src/gl/webgl2.ts +12 -0
  94. package/src/index.test.ts +121 -0
  95. package/src/index.ts +250 -0
  96. package/src/render/draw_background.ts +53 -0
  97. package/src/render/draw_circle.ts +113 -0
  98. package/src/render/draw_collision_debug.ts +168 -0
  99. package/src/render/draw_custom.test.ts +73 -0
  100. package/src/render/draw_custom.ts +45 -0
  101. package/src/render/draw_debug.test.ts +122 -0
  102. package/src/render/draw_debug.ts +148 -0
  103. package/src/render/draw_fill.test.ts +137 -0
  104. package/src/render/draw_fill.ts +128 -0
  105. package/src/render/draw_fill_extrusion.ts +97 -0
  106. package/src/render/draw_heatmap.ts +228 -0
  107. package/src/render/draw_hillshade.ts +119 -0
  108. package/src/render/draw_line.ts +125 -0
  109. package/src/render/draw_raster.ts +133 -0
  110. package/src/render/draw_sky.ts +44 -0
  111. package/src/render/draw_symbol.test.ts +223 -0
  112. package/src/render/draw_symbol.ts +499 -0
  113. package/src/render/draw_terrain.ts +99 -0
  114. package/src/render/glyph_atlas.ts +83 -0
  115. package/src/render/glyph_manager.test.ts +147 -0
  116. package/src/render/glyph_manager.ts +198 -0
  117. package/src/render/image_atlas.ts +159 -0
  118. package/src/render/image_manager.ts +337 -0
  119. package/src/render/line_atlas.test.ts +38 -0
  120. package/src/render/line_atlas.ts +214 -0
  121. package/src/render/mesh.ts +25 -0
  122. package/src/render/painter.test.ts +51 -0
  123. package/src/render/painter.ts +666 -0
  124. package/src/render/program/background_program.ts +100 -0
  125. package/src/render/program/circle_program.ts +61 -0
  126. package/src/render/program/clipping_mask_program.ts +19 -0
  127. package/src/render/program/collision_program.ts +47 -0
  128. package/src/render/program/debug_program.ts +29 -0
  129. package/src/render/program/fill_extrusion_program.ts +120 -0
  130. package/src/render/program/fill_program.ts +121 -0
  131. package/src/render/program/heatmap_program.ts +76 -0
  132. package/src/render/program/hillshade_program.ts +116 -0
  133. package/src/render/program/line_program.ts +207 -0
  134. package/src/render/program/pattern.ts +102 -0
  135. package/src/render/program/program_uniforms.ts +46 -0
  136. package/src/render/program/raster_program.ts +88 -0
  137. package/src/render/program/sky_program.ts +28 -0
  138. package/src/render/program/symbol_program.ts +266 -0
  139. package/src/render/program/terrain_program.ts +116 -0
  140. package/src/render/program.ts +233 -0
  141. package/src/render/render_to_texture.test.ts +151 -0
  142. package/src/render/render_to_texture.ts +197 -0
  143. package/src/render/terrain.test.ts +322 -0
  144. package/src/render/terrain.ts +464 -0
  145. package/src/render/texture.ts +114 -0
  146. package/src/render/uniform_binding.test.ts +122 -0
  147. package/src/render/uniform_binding.ts +157 -0
  148. package/src/render/update_pattern_positions_in_program.test.ts +74 -0
  149. package/src/render/update_pattern_positions_in_program.ts +50 -0
  150. package/src/render/vertex_array_object.ts +163 -0
  151. package/src/shaders/README.md +42 -0
  152. package/src/shaders/_prelude.fragment.glsl +19 -0
  153. package/src/shaders/_prelude.fragment.glsl.g.ts +2 -0
  154. package/src/shaders/_prelude.vertex.glsl +148 -0
  155. package/src/shaders/_prelude.vertex.glsl.g.ts +2 -0
  156. package/src/shaders/background.fragment.glsl +10 -0
  157. package/src/shaders/background.fragment.glsl.g.ts +2 -0
  158. package/src/shaders/background.vertex.glsl +7 -0
  159. package/src/shaders/background.vertex.glsl.g.ts +2 -0
  160. package/src/shaders/background_pattern.fragment.glsl +28 -0
  161. package/src/shaders/background_pattern.fragment.glsl.g.ts +2 -0
  162. package/src/shaders/background_pattern.vertex.glsl +19 -0
  163. package/src/shaders/background_pattern.vertex.glsl.g.ts +2 -0
  164. package/src/shaders/circle.fragment.glsl +34 -0
  165. package/src/shaders/circle.fragment.glsl.g.ts +2 -0
  166. package/src/shaders/circle.vertex.glsl +68 -0
  167. package/src/shaders/circle.vertex.glsl.g.ts +2 -0
  168. package/src/shaders/clipping_mask.fragment.glsl +3 -0
  169. package/src/shaders/clipping_mask.fragment.glsl.g.ts +2 -0
  170. package/src/shaders/clipping_mask.vertex.glsl +7 -0
  171. package/src/shaders/clipping_mask.vertex.glsl.g.ts +2 -0
  172. package/src/shaders/collision_box.fragment.glsl +20 -0
  173. package/src/shaders/collision_box.fragment.glsl.g.ts +2 -0
  174. package/src/shaders/collision_box.vertex.glsl +27 -0
  175. package/src/shaders/collision_box.vertex.glsl.g.ts +2 -0
  176. package/src/shaders/collision_circle.fragment.glsl +17 -0
  177. package/src/shaders/collision_circle.fragment.glsl.g.ts +2 -0
  178. package/src/shaders/collision_circle.vertex.glsl +59 -0
  179. package/src/shaders/collision_circle.vertex.glsl.g.ts +2 -0
  180. package/src/shaders/debug.fragment.glsl +9 -0
  181. package/src/shaders/debug.fragment.glsl.g.ts +2 -0
  182. package/src/shaders/debug.vertex.glsl +12 -0
  183. package/src/shaders/debug.vertex.glsl.g.ts +2 -0
  184. package/src/shaders/encode_attribute.test.ts +11 -0
  185. package/src/shaders/encode_attribute.ts +13 -0
  186. package/src/shaders/fill.fragment.glsl +13 -0
  187. package/src/shaders/fill.fragment.glsl.g.ts +2 -0
  188. package/src/shaders/fill.vertex.glsl +13 -0
  189. package/src/shaders/fill.vertex.glsl.g.ts +2 -0
  190. package/src/shaders/fill_extrusion.fragment.glsl +9 -0
  191. package/src/shaders/fill_extrusion.fragment.glsl.g.ts +2 -0
  192. package/src/shaders/fill_extrusion.vertex.glsl +84 -0
  193. package/src/shaders/fill_extrusion.vertex.glsl.g.ts +2 -0
  194. package/src/shaders/fill_extrusion_pattern.fragment.glsl +47 -0
  195. package/src/shaders/fill_extrusion_pattern.fragment.glsl.g.ts +2 -0
  196. package/src/shaders/fill_extrusion_pattern.vertex.glsl +96 -0
  197. package/src/shaders/fill_extrusion_pattern.vertex.glsl.g.ts +2 -0
  198. package/src/shaders/fill_outline.fragment.glsl +17 -0
  199. package/src/shaders/fill_outline.fragment.glsl.g.ts +2 -0
  200. package/src/shaders/fill_outline.vertex.glsl +17 -0
  201. package/src/shaders/fill_outline.vertex.glsl.g.ts +2 -0
  202. package/src/shaders/fill_outline_pattern.fragment.glsl +43 -0
  203. package/src/shaders/fill_outline_pattern.fragment.glsl.g.ts +2 -0
  204. package/src/shaders/fill_outline_pattern.vertex.glsl +44 -0
  205. package/src/shaders/fill_outline_pattern.vertex.glsl.g.ts +2 -0
  206. package/src/shaders/fill_pattern.fragment.glsl +39 -0
  207. package/src/shaders/fill_pattern.fragment.glsl.g.ts +2 -0
  208. package/src/shaders/fill_pattern.vertex.glsl +39 -0
  209. package/src/shaders/fill_pattern.vertex.glsl.g.ts +2 -0
  210. package/src/shaders/heatmap.fragment.glsl +22 -0
  211. package/src/shaders/heatmap.fragment.glsl.g.ts +2 -0
  212. package/src/shaders/heatmap.vertex.glsl +54 -0
  213. package/src/shaders/heatmap.vertex.glsl.g.ts +2 -0
  214. package/src/shaders/heatmap_texture.fragment.glsl +15 -0
  215. package/src/shaders/heatmap_texture.fragment.glsl.g.ts +2 -0
  216. package/src/shaders/heatmap_texture.vertex.glsl +11 -0
  217. package/src/shaders/heatmap_texture.vertex.glsl.g.ts +2 -0
  218. package/src/shaders/hillshade.fragment.glsl +52 -0
  219. package/src/shaders/hillshade.fragment.glsl.g.ts +2 -0
  220. package/src/shaders/hillshade.vertex.glsl +11 -0
  221. package/src/shaders/hillshade.vertex.glsl.g.ts +2 -0
  222. package/src/shaders/hillshade_prepare.fragment.glsl +77 -0
  223. package/src/shaders/hillshade_prepare.fragment.glsl.g.ts +2 -0
  224. package/src/shaders/hillshade_prepare.vertex.glsl +15 -0
  225. package/src/shaders/hillshade_prepare.vertex.glsl.g.ts +2 -0
  226. package/src/shaders/line.fragment.glsl +30 -0
  227. package/src/shaders/line.fragment.glsl.g.ts +2 -0
  228. package/src/shaders/line.vertex.glsl +89 -0
  229. package/src/shaders/line.vertex.glsl.g.ts +2 -0
  230. package/src/shaders/line_gradient.fragment.glsl +34 -0
  231. package/src/shaders/line_gradient.fragment.glsl.g.ts +2 -0
  232. package/src/shaders/line_gradient.vertex.glsl +92 -0
  233. package/src/shaders/line_gradient.vertex.glsl.g.ts +2 -0
  234. package/src/shaders/line_pattern.fragment.glsl +77 -0
  235. package/src/shaders/line_pattern.fragment.glsl.g.ts +2 -0
  236. package/src/shaders/line_pattern.vertex.glsl +103 -0
  237. package/src/shaders/line_pattern.vertex.glsl.g.ts +2 -0
  238. package/src/shaders/line_sdf.fragment.glsl +45 -0
  239. package/src/shaders/line_sdf.fragment.glsl.g.ts +2 -0
  240. package/src/shaders/line_sdf.vertex.glsl +101 -0
  241. package/src/shaders/line_sdf.vertex.glsl.g.ts +2 -0
  242. package/src/shaders/raster.fragment.glsl +53 -0
  243. package/src/shaders/raster.fragment.glsl.g.ts +2 -0
  244. package/src/shaders/raster.vertex.glsl +21 -0
  245. package/src/shaders/raster.vertex.glsl.g.ts +2 -0
  246. package/src/shaders/shaders.ts +197 -0
  247. package/src/shaders/sky.fragment.glsl +17 -0
  248. package/src/shaders/sky.fragment.glsl.g.ts +2 -0
  249. package/src/shaders/sky.vertex.glsl +5 -0
  250. package/src/shaders/sky.vertex.glsl.g.ts +2 -0
  251. package/src/shaders/symbol_icon.fragment.glsl +17 -0
  252. package/src/shaders/symbol_icon.fragment.glsl.g.ts +2 -0
  253. package/src/shaders/symbol_icon.vertex.glsl +117 -0
  254. package/src/shaders/symbol_icon.vertex.glsl.g.ts +2 -0
  255. package/src/shaders/symbol_sdf.fragment.glsl +58 -0
  256. package/src/shaders/symbol_sdf.fragment.glsl.g.ts +2 -0
  257. package/src/shaders/symbol_sdf.vertex.glsl +142 -0
  258. package/src/shaders/symbol_sdf.vertex.glsl.g.ts +2 -0
  259. package/src/shaders/symbol_text_and_icon.fragment.glsl +68 -0
  260. package/src/shaders/symbol_text_and_icon.fragment.glsl.g.ts +2 -0
  261. package/src/shaders/symbol_text_and_icon.vertex.glsl +140 -0
  262. package/src/shaders/symbol_text_and_icon.vertex.glsl.g.ts +2 -0
  263. package/src/shaders/terrain.fragment.glsl +32 -0
  264. package/src/shaders/terrain.fragment.glsl.g.ts +2 -0
  265. package/src/shaders/terrain.vertex.glsl +17 -0
  266. package/src/shaders/terrain.vertex.glsl.g.ts +2 -0
  267. package/src/shaders/terrain_coords.fragment.glsl +11 -0
  268. package/src/shaders/terrain_coords.fragment.glsl.g.ts +2 -0
  269. package/src/shaders/terrain_coords.vertex.glsl +13 -0
  270. package/src/shaders/terrain_coords.vertex.glsl.g.ts +2 -0
  271. package/src/shaders/terrain_depth.fragment.glsl +15 -0
  272. package/src/shaders/terrain_depth.fragment.glsl.g.ts +2 -0
  273. package/src/shaders/terrain_depth.vertex.glsl +13 -0
  274. package/src/shaders/terrain_depth.vertex.glsl.g.ts +2 -0
  275. package/src/source/canvas_source.test.ts +210 -0
  276. package/src/source/canvas_source.ts +227 -0
  277. package/src/source/geojson_source.test.ts +492 -0
  278. package/src/source/geojson_source.ts +431 -0
  279. package/src/source/geojson_source_diff.test.ts +364 -0
  280. package/src/source/geojson_source_diff.ts +172 -0
  281. package/src/source/geojson_worker_source.test.ts +399 -0
  282. package/src/source/geojson_worker_source.ts +303 -0
  283. package/src/source/geojson_wrapper.test.ts +32 -0
  284. package/src/source/geojson_wrapper.ts +81 -0
  285. package/src/source/image_source.test.ts +235 -0
  286. package/src/source/image_source.ts +338 -0
  287. package/src/source/load_tilejson.ts +47 -0
  288. package/src/source/pixels_to_tile_units.ts +25 -0
  289. package/src/source/protocol_crud.ts +48 -0
  290. package/src/source/query_features.test.ts +31 -0
  291. package/src/source/query_features.ts +252 -0
  292. package/src/source/raster_dem_tile_source.test.ts +158 -0
  293. package/src/source/raster_dem_tile_source.ts +166 -0
  294. package/src/source/raster_dem_tile_worker_source.test.ts +36 -0
  295. package/src/source/raster_dem_tile_worker_source.ts +38 -0
  296. package/src/source/raster_tile_source.test.ts +206 -0
  297. package/src/source/raster_tile_source.ts +227 -0
  298. package/src/source/rtl_text_plugin_main_thread.test.ts +170 -0
  299. package/src/source/rtl_text_plugin_main_thread.ts +89 -0
  300. package/src/source/rtl_text_plugin_status.ts +33 -0
  301. package/src/source/rtl_text_plugin_worker.ts +49 -0
  302. package/src/source/source.test.ts +41 -0
  303. package/src/source/source.ts +186 -0
  304. package/src/source/source_cache.test.ts +2069 -0
  305. package/src/source/source_cache.ts +1102 -0
  306. package/src/source/source_state.ts +157 -0
  307. package/src/source/terrain_source_cache.test.ts +105 -0
  308. package/src/source/terrain_source_cache.ts +204 -0
  309. package/src/source/tile.test.ts +290 -0
  310. package/src/source/tile.ts +478 -0
  311. package/src/source/tile_bounds.ts +34 -0
  312. package/src/source/tile_cache.test.ts +130 -0
  313. package/src/source/tile_cache.ts +208 -0
  314. package/src/source/tile_id.test.ts +112 -0
  315. package/src/source/tile_id.ts +221 -0
  316. package/src/source/vector_tile_source.test.ts +401 -0
  317. package/src/source/vector_tile_source.ts +283 -0
  318. package/src/source/vector_tile_worker_source.test.ts +396 -0
  319. package/src/source/vector_tile_worker_source.ts +199 -0
  320. package/src/source/video_source.test.ts +124 -0
  321. package/src/source/video_source.ts +204 -0
  322. package/src/source/worker.test.ts +233 -0
  323. package/src/source/worker.ts +301 -0
  324. package/src/source/worker_source.ts +117 -0
  325. package/src/source/worker_tile.test.ts +226 -0
  326. package/src/source/worker_tile.ts +208 -0
  327. package/src/style/create_style_layer.ts +39 -0
  328. package/src/style/evaluation_parameters.ts +62 -0
  329. package/src/style/format_section_override.test.ts +62 -0
  330. package/src/style/format_section_override.ts +50 -0
  331. package/src/style/light.test.ts +86 -0
  332. package/src/style/light.ts +135 -0
  333. package/src/style/load_glyph_range.test.ts +40 -0
  334. package/src/style/load_glyph_range.ts +32 -0
  335. package/src/style/load_sprite.test.ts +227 -0
  336. package/src/style/load_sprite.ts +71 -0
  337. package/src/style/parse_glyph_pbf.ts +42 -0
  338. package/src/style/pauseable_placement.ts +138 -0
  339. package/src/style/properties.ts +726 -0
  340. package/src/style/query_utils.test.ts +107 -0
  341. package/src/style/query_utils.ts +70 -0
  342. package/src/style/sky.ts +127 -0
  343. package/src/style/style.test.ts +2654 -0
  344. package/src/style/style.ts +1814 -0
  345. package/src/style/style_glyph.ts +25 -0
  346. package/src/style/style_image.ts +188 -0
  347. package/src/style/style_layer/background_style_layer.ts +17 -0
  348. package/src/style/style_layer/background_style_layer_properties.g.ts +40 -0
  349. package/src/style/style_layer/circle_style_layer.ts +98 -0
  350. package/src/style/style_layer/circle_style_layer_properties.g.ts +76 -0
  351. package/src/style/style_layer/custom_style_layer.ts +233 -0
  352. package/src/style/style_layer/fill_extrusion_style_layer.ts +224 -0
  353. package/src/style/style_layer/fill_extrusion_style_layer_properties.g.ts +55 -0
  354. package/src/style/style_layer/fill_style_layer.test.ts +37 -0
  355. package/src/style/style_layer/fill_style_layer.ts +65 -0
  356. package/src/style/style_layer/fill_style_layer_properties.g.ts +64 -0
  357. package/src/style/style_layer/heatmap_style_layer.ts +74 -0
  358. package/src/style/style_layer/heatmap_style_layer_properties.g.ts +46 -0
  359. package/src/style/style_layer/hillshade_style_layer.ts +21 -0
  360. package/src/style/style_layer/hillshade_style_layer_properties.g.ts +49 -0
  361. package/src/style/style_layer/line_style_layer.test.ts +50 -0
  362. package/src/style/style_layer/line_style_layer.ts +131 -0
  363. package/src/style/style_layer/line_style_layer_properties.g.ts +88 -0
  364. package/src/style/style_layer/overlap_mode.test.ts +57 -0
  365. package/src/style/style_layer/overlap_mode.ts +25 -0
  366. package/src/style/style_layer/raster_style_layer.ts +17 -0
  367. package/src/style/style_layer/raster_style_layer_properties.g.ts +55 -0
  368. package/src/style/style_layer/symbol_style_layer.ts +195 -0
  369. package/src/style/style_layer/symbol_style_layer_properties.g.ts +218 -0
  370. package/src/style/style_layer/typed_style_layer.ts +9 -0
  371. package/src/style/style_layer/variable_text_anchor.test.ts +117 -0
  372. package/src/style/style_layer/variable_text_anchor.ts +163 -0
  373. package/src/style/style_layer.test.ts +372 -0
  374. package/src/style/style_layer.ts +287 -0
  375. package/src/style/style_layer_index.test.ts +99 -0
  376. package/src/style/style_layer_index.ts +78 -0
  377. package/src/style/validate_style.ts +53 -0
  378. package/src/style/zoom_history.ts +40 -0
  379. package/src/symbol/anchor.test.ts +14 -0
  380. package/src/symbol/anchor.ts +22 -0
  381. package/src/symbol/check_max_angle.test.ts +54 -0
  382. package/src/symbol/check_max_angle.ts +76 -0
  383. package/src/symbol/clip_line.test.ts +154 -0
  384. package/src/symbol/clip_line.ts +66 -0
  385. package/src/symbol/collision_feature.test.ts +98 -0
  386. package/src/symbol/collision_feature.ts +114 -0
  387. package/src/symbol/collision_index.test.ts +19 -0
  388. package/src/symbol/collision_index.ts +618 -0
  389. package/src/symbol/cross_tile_symbol_index.test.ts +260 -0
  390. package/src/symbol/cross_tile_symbol_index.ts +367 -0
  391. package/src/symbol/get_anchors.test.ts +113 -0
  392. package/src/symbol/get_anchors.ts +167 -0
  393. package/src/symbol/grid_index.test.ts +75 -0
  394. package/src/symbol/grid_index.ts +414 -0
  395. package/src/symbol/merge_lines.test.ts +30 -0
  396. package/src/symbol/merge_lines.ts +80 -0
  397. package/src/symbol/one_em.ts +3 -0
  398. package/src/symbol/opacity_state.ts +23 -0
  399. package/src/symbol/path_interpolator.test.ts +134 -0
  400. package/src/symbol/path_interpolator.ts +55 -0
  401. package/src/symbol/placement.ts +1371 -0
  402. package/src/symbol/projection.test.ts +171 -0
  403. package/src/symbol/projection.ts +833 -0
  404. package/src/symbol/quads.test.ts +157 -0
  405. package/src/symbol/quads.ts +349 -0
  406. package/src/symbol/shaping.test.ts +360 -0
  407. package/src/symbol/shaping.ts +911 -0
  408. package/src/symbol/symbol_layout.ts +739 -0
  409. package/src/symbol/symbol_size.ts +129 -0
  410. package/src/symbol/symbol_style_layer.test.ts +103 -0
  411. package/src/symbol/transform_text.ts +27 -0
  412. package/src/ui/anchor.ts +27 -0
  413. package/src/ui/camera.test.ts +2301 -0
  414. package/src/ui/camera.ts +1520 -0
  415. package/src/ui/control/attribution_control.test.ts +543 -0
  416. package/src/ui/control/attribution_control.ts +209 -0
  417. package/src/ui/control/control.ts +67 -0
  418. package/src/ui/control/fullscreen_control.test.ts +114 -0
  419. package/src/ui/control/fullscreen_control.ts +189 -0
  420. package/src/ui/control/geolocate_control.test.ts +619 -0
  421. package/src/ui/control/geolocate_control.ts +725 -0
  422. package/src/ui/control/logo_control.test.ts +88 -0
  423. package/src/ui/control/logo_control.ts +86 -0
  424. package/src/ui/control/navigation_control.test.ts +238 -0
  425. package/src/ui/control/navigation_control.ts +294 -0
  426. package/src/ui/control/scale_control.test.ts +52 -0
  427. package/src/ui/control/scale_control.ts +152 -0
  428. package/src/ui/control/terrain_control.test.ts +58 -0
  429. package/src/ui/control/terrain_control.ts +74 -0
  430. package/src/ui/default_locale.ts +25 -0
  431. package/src/ui/events.ts +758 -0
  432. package/src/ui/handler/box_zoom.test.ts +163 -0
  433. package/src/ui/handler/box_zoom.ts +171 -0
  434. package/src/ui/handler/click_zoom.ts +55 -0
  435. package/src/ui/handler/cooperative_gestures.test.ts +338 -0
  436. package/src/ui/handler/cooperative_gestures.ts +111 -0
  437. package/src/ui/handler/dblclick_zoom.test.ts +151 -0
  438. package/src/ui/handler/drag_handler.ts +174 -0
  439. package/src/ui/handler/drag_move_state_manager.ts +115 -0
  440. package/src/ui/handler/drag_pan.test.ts +487 -0
  441. package/src/ui/handler/drag_rotate.test.ts +859 -0
  442. package/src/ui/handler/handler_util.ts +10 -0
  443. package/src/ui/handler/keyboard.test.ts +235 -0
  444. package/src/ui/handler/keyboard.ts +212 -0
  445. package/src/ui/handler/map_event.test.ts +158 -0
  446. package/src/ui/handler/map_event.ts +161 -0
  447. package/src/ui/handler/mouse.ts +92 -0
  448. package/src/ui/handler/mouse_handler_interface.test.ts +111 -0
  449. package/src/ui/handler/mouse_rotate.test.ts +62 -0
  450. package/src/ui/handler/one_finger_touch_drag.ts +45 -0
  451. package/src/ui/handler/one_finger_touch_drag_handler_interface.test.ts +77 -0
  452. package/src/ui/handler/scroll_zoom.test.ts +382 -0
  453. package/src/ui/handler/scroll_zoom.ts +379 -0
  454. package/src/ui/handler/shim/dblclick_zoom.ts +64 -0
  455. package/src/ui/handler/shim/drag_pan.ts +104 -0
  456. package/src/ui/handler/shim/drag_rotate.ts +76 -0
  457. package/src/ui/handler/shim/two_fingers_touch.ts +112 -0
  458. package/src/ui/handler/tap_drag_zoom.test.ts +113 -0
  459. package/src/ui/handler/tap_drag_zoom.ts +112 -0
  460. package/src/ui/handler/tap_recognizer.ts +138 -0
  461. package/src/ui/handler/tap_zoom.ts +98 -0
  462. package/src/ui/handler/touch_pan.ts +115 -0
  463. package/src/ui/handler/transform-provider.ts +44 -0
  464. package/src/ui/handler/two_fingers_touch.test.ts +283 -0
  465. package/src/ui/handler/two_fingers_touch.ts +336 -0
  466. package/src/ui/handler_inertia.ts +157 -0
  467. package/src/ui/handler_manager.ts +637 -0
  468. package/src/ui/hash.test.ts +404 -0
  469. package/src/ui/hash.ts +153 -0
  470. package/src/ui/map.ts +3393 -0
  471. package/src/ui/map_tests/map_animation.test.ts +61 -0
  472. package/src/ui/map_tests/map_basic.test.ts +223 -0
  473. package/src/ui/map_tests/map_bounds.test.ts +123 -0
  474. package/src/ui/map_tests/map_calculate_camera_options.test.ts +113 -0
  475. package/src/ui/map_tests/map_canvas.test.ts +59 -0
  476. package/src/ui/map_tests/map_control.test.ts +61 -0
  477. package/src/ui/map_tests/map_disable_handlers.test.ts +38 -0
  478. package/src/ui/map_tests/map_events.test.ts +1001 -0
  479. package/src/ui/map_tests/map_feature_state.test.ts +421 -0
  480. package/src/ui/map_tests/map_images.test.ts +175 -0
  481. package/src/ui/map_tests/map_is_moving.test.ts +164 -0
  482. package/src/ui/map_tests/map_is_rotating.test.ts +62 -0
  483. package/src/ui/map_tests/map_is_zooming.test.ts +86 -0
  484. package/src/ui/map_tests/map_layer.test.ts +457 -0
  485. package/src/ui/map_tests/map_options.test.ts +64 -0
  486. package/src/ui/map_tests/map_pitch.test.ts +90 -0
  487. package/src/ui/map_tests/map_pixel_ratio.test.ts +75 -0
  488. package/src/ui/map_tests/map_query_rendered_features.test.ts +93 -0
  489. package/src/ui/map_tests/map_render.test.ts +90 -0
  490. package/src/ui/map_tests/map_request_render_frame.test.ts +51 -0
  491. package/src/ui/map_tests/map_resize.test.ts +120 -0
  492. package/src/ui/map_tests/map_style.test.ts +541 -0
  493. package/src/ui/map_tests/map_terrian.test.ts +104 -0
  494. package/src/ui/map_tests/map_webgl.test.ts +72 -0
  495. package/src/ui/map_tests/map_world_copies.test.ts +103 -0
  496. package/src/ui/map_tests/map_zoom.test.ts +95 -0
  497. package/src/ui/marker.test.ts +1149 -0
  498. package/src/ui/marker.ts +880 -0
  499. package/src/ui/popup.test.ts +827 -0
  500. package/src/ui/popup.ts +717 -0
  501. package/src/util/abort_error.ts +21 -0
  502. package/src/util/actor.test.ts +218 -0
  503. package/src/util/actor.ts +241 -0
  504. package/src/util/actor_messages.ts +149 -0
  505. package/src/util/ajax.test.ts +237 -0
  506. package/src/util/ajax.ts +297 -0
  507. package/src/util/browser.test.ts +23 -0
  508. package/src/util/browser.ts +63 -0
  509. package/src/util/color_ramp.test.ts +105 -0
  510. package/src/util/color_ramp.ts +56 -0
  511. package/src/util/config.ts +29 -0
  512. package/src/util/dictionary_coder.ts +23 -0
  513. package/src/util/dispatcher.test.ts +76 -0
  514. package/src/util/dispatcher.ts +78 -0
  515. package/src/util/dom.ts +135 -0
  516. package/src/util/evented.test.ts +231 -0
  517. package/src/util/evented.ts +178 -0
  518. package/src/util/find_pole_of_inaccessibility.test.ts +21 -0
  519. package/src/util/find_pole_of_inaccessibility.ts +130 -0
  520. package/src/util/geolocation_support.test.ts +43 -0
  521. package/src/util/geolocation_support.ts +23 -0
  522. package/src/util/global_worker_pool.ts +65 -0
  523. package/src/util/image.ts +150 -0
  524. package/src/util/image_request.test.ts +408 -0
  525. package/src/util/image_request.ts +246 -0
  526. package/src/util/intersection_tests.ts +206 -0
  527. package/src/util/is_char_in_unicode_block.test.ts +15 -0
  528. package/src/util/is_char_in_unicode_block.ts +345 -0
  529. package/src/util/offscreen_canvas_distorted.test.ts +13 -0
  530. package/src/util/offscreen_canvas_distorted.ts +39 -0
  531. package/src/util/offscreen_canvas_supported.ts +11 -0
  532. package/src/util/performance.ts +117 -0
  533. package/src/util/primitives.test.ts +140 -0
  534. package/src/util/primitives.ts +143 -0
  535. package/src/util/request_manager.ts +42 -0
  536. package/src/util/resolve_tokens.test.ts +45 -0
  537. package/src/util/resolve_tokens.ts +17 -0
  538. package/src/util/script_detection.test.ts +138 -0
  539. package/src/util/script_detection.ts +376 -0
  540. package/src/util/smart_wrap.test.ts +97 -0
  541. package/src/util/smart_wrap.ts +58 -0
  542. package/src/util/struct_array.test.ts +101 -0
  543. package/src/util/struct_array.ts +246 -0
  544. package/src/util/style.test.ts +34 -0
  545. package/src/util/style.ts +28 -0
  546. package/src/util/task_queue.test.ts +114 -0
  547. package/src/util/task_queue.ts +64 -0
  548. package/src/util/test/util.ts +185 -0
  549. package/src/util/throttle.test.ts +42 -0
  550. package/src/util/throttle.ts +28 -0
  551. package/src/util/throttled_invoker.ts +41 -0
  552. package/src/util/transferable_grid_index.test.ts +56 -0
  553. package/src/util/transferable_grid_index.ts +214 -0
  554. package/src/util/util.test.ts +414 -0
  555. package/src/util/util.ts +724 -0
  556. package/src/util/vectortile_to_geojson.ts +72 -0
  557. package/src/util/verticalize_punctuation.ts +110 -0
  558. package/src/util/web_worker.ts +16 -0
  559. package/src/util/web_worker_transfer.test.ts +153 -0
  560. package/src/util/web_worker_transfer.ts +254 -0
  561. package/src/util/webp_supported.ts +63 -0
  562. package/src/util/worker_pool.test.ts +43 -0
  563. package/src/util/worker_pool.ts +58 -0
  564. package/src/util/world_bounds.test.ts +59 -0
  565. package/src/util/world_bounds.ts +46 -0
@@ -0,0 +1,758 @@
1
+ import {Event} from '../util/evented';
2
+
3
+ import {DOM} from '../util/dom';
4
+ import Point from '@mapbox/point-geometry';
5
+ import {extend} from '../util/util';
6
+ import type {MapGeoJSONFeature} from '../util/vectortile_to_geojson';
7
+
8
+ import type {Map} from './map';
9
+ import type {LngLat} from '../geo/lng_lat';
10
+ import type {SourceSpecification} from '@maplibre/maplibre-gl-style-spec';
11
+
12
+ /**
13
+ * An event from the mouse relevant to a specific layer.
14
+ *
15
+ * @group Event Related
16
+ */
17
+ export type MapLayerMouseEvent = MapMouseEvent & { features?: MapGeoJSONFeature[] };
18
+
19
+ /**
20
+ * An event from a touch device relevant to a specific layer.
21
+ *
22
+ * @group Event Related
23
+ */
24
+ export type MapLayerTouchEvent = MapTouchEvent & { features?: MapGeoJSONFeature[] };
25
+
26
+ /**
27
+ * The source event data type
28
+ */
29
+ export type MapSourceDataType = 'content' | 'metadata' | 'visibility' | 'idle';
30
+
31
+ /**
32
+ * `MapLayerEventType` - a mapping between the event name and the event.
33
+ * **Note:** These events are compatible with the optional `layerId` parameter.
34
+ * If `layerId` is included as the second argument in {@link Map#on}, the event listener will fire only when the
35
+ * event action contains a visible portion of the specified layer.
36
+ * The following example can be used for all the events.
37
+ *
38
+ * @group Event Related
39
+ * @example
40
+ * ```ts
41
+ * // Initialize the map
42
+ * let map = new Map({ // map options });
43
+ * // Set an event listener for a specific layer
44
+ * map.on('the-event-name', 'poi-label', (e) => {
45
+ * console.log('An event has occurred on a visible portion of the poi-label layer');
46
+ * });
47
+ * ```
48
+ */
49
+ export type MapLayerEventType = {
50
+ /**
51
+ * Fired when a pointing device (usually a mouse) is pressed and released contains a visible portion of the specified layer.
52
+ *
53
+ * @see [Measure distances](https://maplibre.org/maplibre-gl-js/docs/examples/measure/)
54
+ * @see [Center the map on a clicked symbol](https://maplibre.org/maplibre-gl-js/docs/examples/center-on-symbol/)
55
+ */
56
+ click: MapLayerMouseEvent;
57
+ /**
58
+ * Fired when a pointing device (usually a mouse) is pressed and released twice contains a visible portion of the specified layer.
59
+ *
60
+ * **Note:** Under normal conditions, this event will be preceded by two `click` events.
61
+ */
62
+ dblclick: MapLayerMouseEvent;
63
+ /**
64
+ * Fired when a pointing device (usually a mouse) is pressed while inside a visible portion of the specified layer.
65
+ * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js/docs/examples/drag-a-point/)
66
+ */
67
+ mousedown: MapLayerMouseEvent;
68
+ /**
69
+ * Fired when a pointing device (usually a mouse) is released while inside a visible portion of the specified layer.
70
+ * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js/docs/examples/drag-a-point/)
71
+ */
72
+ mouseup: MapLayerMouseEvent;
73
+ /**
74
+ * Fired when a pointing device (usually a mouse) is moved while the cursor is inside a visible portion of the specified layer.
75
+ * As you move the cursor across the layer, the event will fire every time the cursor changes position within that layer.
76
+ *
77
+ * @see [Get coordinates of the mouse pointer](https://maplibre.org/maplibre-gl-js/docs/examples/mouse-position/)
78
+ * @see [Highlight features under the mouse pointer](https://maplibre.org/maplibre-gl-js/docs/examples/hover-styles/)
79
+ * @see [Display a popup on over](https://maplibre.org/maplibre-gl-js/docs/examples/popup-on-hover/)
80
+ */
81
+ mousemove: MapLayerMouseEvent;
82
+ /**
83
+ * Fired when a pointing device (usually a mouse) enters a visible portion of a specified layer from
84
+ * outside that layer or outside the map canvas.
85
+ *
86
+ * @see [Center the map on a clicked symbol](https://maplibre.org/maplibre-gl-js/docs/examples/center-on-symbol/)
87
+ * @see [Display a popup on click](https://maplibre.org/maplibre-gl-js/docs/examples/popup-on-click/)
88
+ */
89
+ mouseenter: MapLayerMouseEvent;
90
+ /**
91
+ * Fired when a pointing device (usually a mouse) leaves a visible portion of a specified layer, or leaves
92
+ * the map canvas.
93
+ *
94
+ * @see [Highlight features under the mouse pointer](https://maplibre.org/maplibre-gl-js/docs/examples/hover-styles/)
95
+ * @see [Display a popup on click](https://maplibre.org/maplibre-gl-js/docs/examples/popup-on-click/)
96
+ */
97
+ mouseleave: MapLayerMouseEvent;
98
+ /**
99
+ * Fired when a pointing device (usually a mouse) is moved inside a visible portion of the specified layer.
100
+ *
101
+ * @see [Get coordinates of the mouse pointer](https://maplibre.org/maplibre-gl-js/docs/examples/mouse-position/)
102
+ * @see [Highlight features under the mouse pointer](https://maplibre.org/maplibre-gl-js/docs/examples/hover-styles/)
103
+ * @see [Display a popup on hover](https://maplibre.org/maplibre-gl-js/docs/examples/popup-on-hover/)
104
+ */
105
+ mouseover: MapLayerMouseEvent;
106
+ /**
107
+ * Fired when a point device (usually a mouse) leaves the visible portion of the specified layer.
108
+ */
109
+ mouseout: MapLayerMouseEvent;
110
+ /**
111
+ * Fired when the right button of the mouse is clicked or the context menu key is pressed within visible portion of the specified layer.
112
+ */
113
+ contextmenu: MapLayerMouseEvent;
114
+ /**
115
+ * Fired when a [`touchstart`](https://developer.mozilla.org/en-US/docs/Web/Events/touchstart) event occurs within the visible portion of the specified layer.
116
+ * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js/docs/examples/drag-a-point/)
117
+ */
118
+ touchstart: MapLayerTouchEvent;
119
+ /**
120
+ * Fired when a [`touchend`](https://developer.mozilla.org/en-US/docs/Web/Events/touchend) event occurs within the visible portion of the specified layer.
121
+ * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js/docs/examples/drag-a-point/)
122
+ */
123
+ touchend: MapLayerTouchEvent;
124
+ /**
125
+ * Fired when a [`touchstart`](https://developer.mozilla.org/en-US/docs/Web/Events/touchstart) event occurs within the visible portion of the specified layer.
126
+ * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js/docs/examples/drag-a-point/)
127
+ */
128
+ touchcancel: MapLayerTouchEvent;
129
+ };
130
+
131
+ /**
132
+ * `MapEventType` - a mapping between the event name and the event value.
133
+ * These events are used with the {@link Map#on} method.
134
+ * When using a `layerId` with {@link Map#on} method, please refer to {@link MapLayerEventType}.
135
+ * The following example can be used for all the events.
136
+ *
137
+ * @group Event Related
138
+ * @example
139
+ * ```ts
140
+ * // Initialize the map
141
+ * let map = new Map({ // map options });
142
+ * // Set an event listener
143
+ * map.on('the-event-name', () => {
144
+ * console.log('An event has occurred!');
145
+ * });
146
+ * ```
147
+ */
148
+ export type MapEventType = {
149
+ /**
150
+ * Fired when an error occurs. This is GL JS's primary error reporting
151
+ * mechanism. We use an event instead of `throw` to better accommodate
152
+ * asynchronous operations. If no listeners are bound to the `error` event, the
153
+ * error will be printed to the console.
154
+ */
155
+ error: ErrorEvent;
156
+ /**
157
+ * Fired immediately after all necessary resources have been downloaded
158
+ * and the first visually complete rendering of the map has occurred.
159
+ *
160
+ * @see [Draw GeoJSON points](https://maplibre.org/maplibre-gl-js/docs/examples/geojson-markers/)
161
+ * @see [Add live realtime data](https://maplibre.org/maplibre-gl-js/docs/examples/live-geojson/)
162
+ * @see [Animate a point](https://maplibre.org/maplibre-gl-js/docs/examples/animate-point-along-line/)
163
+ */
164
+ load: MapLibreEvent;
165
+ /**
166
+ * Fired after the last frame rendered before the map enters an
167
+ * "idle" state:
168
+ *
169
+ * - No camera transitions are in progress
170
+ * - All currently requested tiles have loaded
171
+ * - All fade/transition animations have completed
172
+ */
173
+ idle: MapLibreEvent;
174
+ /**
175
+ * Fired immediately after the map has been removed with {@link Map#remove}.
176
+ */
177
+ remove: MapLibreEvent;
178
+ /**
179
+ * Fired whenever the map is drawn to the screen, as the result of
180
+ *
181
+ * - a change to the map's position, zoom, pitch, or bearing
182
+ * - a change to the map's style
183
+ * - a change to a GeoJSON source
184
+ * - the loading of a vector tile, GeoJSON file, glyph, or sprite
185
+ */
186
+ render: MapLibreEvent;
187
+ /**
188
+ * Fired immediately after the map has been resized.
189
+ */
190
+ resize: MapLibreEvent;
191
+ /**
192
+ * Fired when the WebGL context is lost.
193
+ */
194
+ webglcontextlost: MapContextEvent;
195
+ /**
196
+ * Fired when the WebGL context is restored.
197
+ */
198
+ webglcontextrestored: MapContextEvent;
199
+ /**
200
+ * Fired when any map data (style, source, tile, etc) begins loading or
201
+ * changing asynchronously. All `dataloading` events are followed by a `data`,
202
+ * `dataabort` or `error` event.
203
+ */
204
+ dataloading: MapDataEvent;
205
+ /**
206
+ * Fired when any map data loads or changes. See {@link MapDataEvent} for more information.
207
+ * @see [Display HTML clusters with custom properties](https://maplibre.org/maplibre-gl-js/docs/examples/cluster-html/)
208
+ */
209
+ data: MapDataEvent;
210
+ tiledataloading: MapDataEvent;
211
+ /**
212
+ * Fired when one of the map's sources begins loading or changing asynchronously.
213
+ * All `sourcedataloading` events are followed by a `sourcedata`, `sourcedataabort` or `error` event.
214
+ */
215
+ sourcedataloading: MapSourceDataEvent;
216
+ /**
217
+ * Fired when the map's style begins loading or changing asynchronously.
218
+ * All `styledataloading` events are followed by a `styledata`
219
+ * or `error` event.
220
+ */
221
+ styledataloading: MapStyleDataEvent;
222
+ /**
223
+ * Fired when one of the map's sources loads or changes, including if a tile belonging
224
+ * to a source loads or changes.
225
+ */
226
+ sourcedata: MapSourceDataEvent;
227
+ /**
228
+ * Fired when the map's style loads or changes.
229
+ */
230
+ styledata: MapStyleDataEvent;
231
+ /**
232
+ * Fired when an icon or pattern needed by the style is missing. The missing image can
233
+ * be added with {@link Map#addImage} within this event listener callback to prevent the image from
234
+ * being skipped. This event can be used to dynamically generate icons and patterns.
235
+ * @see [Generate and add a missing icon to the map](https://maplibre.org/maplibre-gl-js/docs/examples/add-image-missing-generated/)
236
+ */
237
+ styleimagemissing: MapStyleImageMissingEvent;
238
+ /**
239
+ * Fired when a request for one of the map's sources' tiles or data is aborted.
240
+ */
241
+ dataabort: MapDataEvent;
242
+ /**
243
+ * Fired when a request for one of the map's sources' data is aborted.
244
+ */
245
+ sourcedataabort: MapSourceDataEvent;
246
+ /**
247
+ * Fired when the user cancels a "box zoom" interaction, or when the bounding box does not meet the minimum size threshold.
248
+ * See {@link BoxZoomHandler}.
249
+ */
250
+ boxzoomcancel: MapLibreZoomEvent;
251
+ /**
252
+ * Fired when a "box zoom" interaction starts. See {@link BoxZoomHandler}.
253
+ */
254
+ boxzoomstart: MapLibreZoomEvent;
255
+ /**
256
+ * Fired when a "box zoom" interaction ends. See {@link BoxZoomHandler}.
257
+ */
258
+ boxzoomend: MapLibreZoomEvent;
259
+ /**
260
+ * Fired when a [`touchcancel`](https://developer.mozilla.org/en-US/docs/Web/Events/touchcancel) event occurs within the map.
261
+ */
262
+ touchcancel: MapTouchEvent;
263
+ /**
264
+ * Fired when a [`touchmove`](https://developer.mozilla.org/en-US/docs/Web/Events/touchmove) event occurs within the map.
265
+ * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js/docs/examples/drag-a-point/)
266
+ */
267
+ touchmove: MapTouchEvent;
268
+ /**
269
+ * Fired when a [`touchend`](https://developer.mozilla.org/en-US/docs/Web/Events/touchend) event occurs within the map.
270
+ * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js/docs/examples/drag-a-point/)
271
+ */
272
+ touchend: MapTouchEvent;
273
+ /**
274
+ * Fired when a [`touchstart`](https://developer.mozilla.org/en-US/docs/Web/Events/touchstart) event occurs within the map.
275
+ * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js/docs/examples/drag-a-point/)
276
+ */
277
+ touchstart: MapTouchEvent;
278
+ /**
279
+ * Fired when a pointing device (usually a mouse) is pressed and released at the same point on the map.
280
+ *
281
+ * @see [Measure distances](https://maplibre.org/maplibre-gl-js/docs/examples/measure/)
282
+ * @see [Center the map on a clicked symbol](https://maplibre.org/maplibre-gl-js/docs/examples/center-on-symbol/)
283
+ */
284
+ click: MapMouseEvent;
285
+ /**
286
+ * Fired when the right button of the mouse is clicked or the context menu key is pressed within the map.
287
+ */
288
+ contextmenu: MapMouseEvent;
289
+ /**
290
+ * Fired when a pointing device (usually a mouse) is pressed and released twice at the same point on the map in rapid succession.
291
+ *
292
+ * **Note:** Under normal conditions, this event will be preceded by two `click` events.
293
+ */
294
+ dblclick: MapMouseEvent;
295
+ /**
296
+ * Fired when a pointing device (usually a mouse) is moved while the cursor is inside the map.
297
+ * As you move the cursor across the map, the event will fire every time the cursor changes position within the map.
298
+ *
299
+ * @see [Get coordinates of the mouse pointer](https://maplibre.org/maplibre-gl-js/docs/examples/mouse-position/)
300
+ * @see [Highlight features under the mouse pointer](https://maplibre.org/maplibre-gl-js/docs/examples/hover-styles/)
301
+ * @see [Display a popup on over](https://maplibre.org/maplibre-gl-js/docs/examples/popup-on-hover/)
302
+ */
303
+ mousemove: MapMouseEvent;
304
+ /**
305
+ * Fired when a pointing device (usually a mouse) is released within the map.
306
+ *
307
+ * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js/docs/examples/drag-a-point/)
308
+ */
309
+ mouseup: MapMouseEvent;
310
+ /**
311
+ * Fired when a pointing device (usually a mouse) is pressed within the map.
312
+ *
313
+ * @see [Create a draggable point](https://maplibre.org/maplibre-gl-js/docs/examples/drag-a-point/)
314
+ */
315
+ mousedown: MapMouseEvent;
316
+ /**
317
+ * Fired when a point device (usually a mouse) leaves the map's canvas.
318
+ */
319
+ mouseout: MapMouseEvent;
320
+ /**
321
+ * Fired when a pointing device (usually a mouse) is moved within the map.
322
+ * As you move the cursor across a web page containing a map,
323
+ * the event will fire each time it enters the map or any child elements.
324
+ *
325
+ * @see [Get coordinates of the mouse pointer](https://maplibre.org/maplibre-gl-js/docs/examples/mouse-position/)
326
+ * @see [Highlight features under the mouse pointer](https://maplibre.org/maplibre-gl-js/docs/examples/hover-styles/)
327
+ * @see [Display a popup on hover](https://maplibre.org/maplibre-gl-js/docs/examples/popup-on-hover/)
328
+ */
329
+ mouseover: MapMouseEvent;
330
+ /**
331
+ * Fired just before the map begins a transition from one
332
+ * view to another, as the result of either user interaction or methods such as {@link Map#jumpTo}.
333
+ *
334
+ */
335
+ movestart: MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined>;
336
+ /**
337
+ * Fired repeatedly during an animated transition from one view to
338
+ * another, as the result of either user interaction or methods such as {@link Map#flyTo}.
339
+ *
340
+ * @see [Display HTML clusters with custom properties](https://maplibre.org/maplibre-gl-js/docs/examples/cluster-html/)
341
+ */
342
+ move: MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined>;
343
+ /**
344
+ * Fired just after the map completes a transition from one
345
+ * view to another, as the result of either user interaction or methods such as {@link Map#jumpTo}.
346
+ *
347
+ * @see [Display HTML clusters with custom properties](https://maplibre.org/maplibre-gl-js/docs/examples/cluster-html/)
348
+ */
349
+ moveend: MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined>;
350
+ /**
351
+ * Fired just before the map begins a transition from one zoom level to another,
352
+ * as the result of either user interaction or methods such as {@link Map#flyTo}.
353
+ */
354
+ zoomstart: MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined>;
355
+ /**
356
+ * Fired repeatedly during an animated transition from one zoom level to another,
357
+ * as the result of either user interaction or methods such as {@link Map#flyTo}.
358
+ */
359
+ zoom: MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined>;
360
+ /**
361
+ * Fired just after the map completes a transition from one zoom level to another,
362
+ * as the result of either user interaction or methods such as {@link Map#flyTo}.
363
+ */
364
+ zoomend: MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined>;
365
+ /**
366
+ * Fired when a "drag to rotate" interaction starts. See {@link DragRotateHandler}.
367
+ */
368
+ rotatestart: MapLibreEvent<MouseEvent | TouchEvent | undefined>;
369
+ /**
370
+ * Fired repeatedly during a "drag to rotate" interaction. See {@link DragRotateHandler}.
371
+ */
372
+ rotate: MapLibreEvent<MouseEvent | TouchEvent | undefined>;
373
+ /**
374
+ * Fired when a "drag to rotate" interaction ends. See {@link DragRotateHandler}.
375
+ */
376
+ rotateend: MapLibreEvent<MouseEvent | TouchEvent | undefined>;
377
+ /**
378
+ * Fired when a "drag to pan" interaction starts. See {@link DragPanHandler}.
379
+ */
380
+ dragstart: MapLibreEvent<MouseEvent | TouchEvent | undefined>;
381
+ /**
382
+ * Fired repeatedly during a "drag to pan" interaction. See {@link DragPanHandler}.
383
+ */
384
+ drag: MapLibreEvent<MouseEvent | TouchEvent | undefined>;
385
+ /**
386
+ * Fired when a "drag to pan" interaction ends. See {@link DragPanHandler}.
387
+ * @see [Create a draggable marker](https://maplibre.org/maplibre-gl-js/docs/examples/drag-a-marker/)
388
+ */
389
+ dragend: MapLibreEvent<MouseEvent | TouchEvent | undefined>;
390
+ /**
391
+ * Fired whenever the map's pitch (tilt) begins a change as
392
+ * the result of either user interaction or methods such as {@link Map#flyTo} .
393
+ */
394
+ pitchstart: MapLibreEvent<MouseEvent | TouchEvent | undefined>;
395
+ /**
396
+ * Fired repeatedly during the map's pitch (tilt) animation between
397
+ * one state and another as the result of either user interaction
398
+ * or methods such as {@link Map#flyTo}.
399
+ */
400
+ pitch: MapLibreEvent<MouseEvent | TouchEvent | undefined>;
401
+ /**
402
+ * Fired immediately after the map's pitch (tilt) finishes changing as
403
+ * the result of either user interaction or methods such as {@link Map#flyTo}.
404
+ */
405
+ pitchend: MapLibreEvent<MouseEvent | TouchEvent | undefined>;
406
+ /**
407
+ * Fired when a [`wheel`](https://developer.mozilla.org/en-US/docs/Web/Events/wheel) event occurs within the map.
408
+ */
409
+ wheel: MapWheelEvent;
410
+ /**
411
+ * Fired when terrain is changed
412
+ */
413
+ terrain: MapTerrainEvent;
414
+ /**
415
+ * Fired whenever the cooperativeGestures option prevents a gesture from being handled by the map.
416
+ * This is useful for showing your own UI when this happens.
417
+ */
418
+ cooperativegestureprevented: MapLibreEvent<WheelEvent | TouchEvent> & {
419
+ gestureType: 'wheel_zoom' | 'touch_pan';
420
+ };
421
+ };
422
+
423
+ /**
424
+ * The base event for MapLibre
425
+ *
426
+ * @group Event Related
427
+ */
428
+ export type MapLibreEvent<TOrig = unknown> = {
429
+ type: keyof MapEventType | keyof MapLayerEventType;
430
+ target: Map;
431
+ originalEvent: TOrig;
432
+ }
433
+
434
+ /**
435
+ * The style data event
436
+ *
437
+ * @group Event Related
438
+ */
439
+ export type MapStyleDataEvent = MapLibreEvent & {
440
+ dataType: 'style';
441
+ }
442
+
443
+ /**
444
+ * The source data event interface
445
+ *
446
+ * @group Event Related
447
+ */
448
+ export type MapSourceDataEvent = MapLibreEvent & {
449
+ dataType: 'source';
450
+ /**
451
+ * True if the event has a `dataType` of `source` and the source has no outstanding network requests.
452
+ */
453
+ isSourceLoaded: boolean;
454
+ /**
455
+ * The [style spec representation of the source](https://maplibre.org/maplibre-style-spec/#sources) if the event has a `dataType` of `source`.
456
+ */
457
+ source: SourceSpecification;
458
+ sourceId: string;
459
+ sourceDataType: MapSourceDataType;
460
+ /**
461
+ * The tile being loaded or changed, if the event has a `dataType` of `source` and
462
+ * the event is related to loading of a tile.
463
+ */
464
+ tile: any;
465
+ }
466
+ /**
467
+ * `MapMouseEvent` is the event type for mouse-related map events.
468
+ *
469
+ * @group Event Related
470
+ *
471
+ * @example
472
+ * ```ts
473
+ * // The `click` event is an example of a `MapMouseEvent`.
474
+ * // Set up an event listener on the map.
475
+ * map.on('click', (e) => {
476
+ * // The event object (e) contains information like the
477
+ * // coordinates of the point on the map that was clicked.
478
+ * console.log('A click event has occurred at ' + e.lngLat);
479
+ * });
480
+ * ```
481
+ */
482
+ export class MapMouseEvent extends Event implements MapLibreEvent<MouseEvent> {
483
+ /**
484
+ * The event type
485
+ */
486
+ type: 'mousedown' | 'mouseup' | 'click' | 'dblclick' | 'mousemove' | 'mouseover' | 'mouseenter' | 'mouseleave' | 'mouseout' | 'contextmenu';
487
+
488
+ /**
489
+ * The `Map` object that fired the event.
490
+ */
491
+ target: Map;
492
+
493
+ /**
494
+ * The DOM event which caused the map event.
495
+ */
496
+ originalEvent: MouseEvent;
497
+
498
+ /**
499
+ * The pixel coordinates of the mouse cursor, relative to the map and measured from the top left corner.
500
+ */
501
+ point: Point;
502
+
503
+ /**
504
+ * The geographic location on the map of the mouse cursor.
505
+ */
506
+ lngLat: LngLat;
507
+
508
+ /**
509
+ * Prevents subsequent default processing of the event by the map.
510
+ *
511
+ * Calling this method will prevent the following default map behaviors:
512
+ *
513
+ * * On `mousedown` events, the behavior of {@link DragPanHandler}
514
+ * * On `mousedown` events, the behavior of {@link DragRotateHandler}
515
+ * * On `mousedown` events, the behavior of {@link BoxZoomHandler}
516
+ * * On `dblclick` events, the behavior of {@link DoubleClickZoomHandler}
517
+ *
518
+ */
519
+ preventDefault() {
520
+ this._defaultPrevented = true;
521
+ }
522
+
523
+ /**
524
+ * `true` if `preventDefault` has been called.
525
+ */
526
+ get defaultPrevented(): boolean {
527
+ return this._defaultPrevented;
528
+ }
529
+
530
+ _defaultPrevented: boolean;
531
+
532
+ constructor(type: string, map: Map, originalEvent: MouseEvent, data: any = {}) {
533
+ const point = DOM.mousePos(map.getCanvas(), originalEvent);
534
+ const lngLat = map.unproject(point);
535
+ super(type, extend({point, lngLat, originalEvent}, data));
536
+ this._defaultPrevented = false;
537
+ this.target = map;
538
+ }
539
+ }
540
+
541
+ /**
542
+ * `MapTouchEvent` is the event type for touch-related map events.
543
+ *
544
+ * @group Event Related
545
+ */
546
+ export class MapTouchEvent extends Event implements MapLibreEvent<TouchEvent> {
547
+ /**
548
+ * The event type.
549
+ */
550
+ type: 'touchstart' | 'touchmove' | 'touchend' | 'touchcancel';
551
+
552
+ /**
553
+ * The `Map` object that fired the event.
554
+ */
555
+ target: Map;
556
+
557
+ /**
558
+ * The DOM event which caused the map event.
559
+ */
560
+ originalEvent: TouchEvent;
561
+
562
+ /**
563
+ * The geographic location on the map of the center of the touch event points.
564
+ */
565
+ lngLat: LngLat;
566
+
567
+ /**
568
+ * The pixel coordinates of the center of the touch event points, relative to the map and measured from the top left
569
+ * corner.
570
+ */
571
+ point: Point;
572
+
573
+ /**
574
+ * The array of pixel coordinates corresponding to a
575
+ * [touch event's `touches`](https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent/touches) property.
576
+ */
577
+ points: Array<Point>;
578
+
579
+ /**
580
+ * The geographical locations on the map corresponding to a
581
+ * [touch event's `touches`](https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent/touches) property.
582
+ */
583
+ lngLats: Array<LngLat>;
584
+
585
+ /**
586
+ * Prevents subsequent default processing of the event by the map.
587
+ *
588
+ * Calling this method will prevent the following default map behaviors:
589
+ *
590
+ * * On `touchstart` events, the behavior of {@link DragPanHandler}
591
+ * * On `touchstart` events, the behavior of {@link TwoFingersTouchZoomRotateHandler}
592
+ *
593
+ */
594
+ preventDefault() {
595
+ this._defaultPrevented = true;
596
+ }
597
+
598
+ /**
599
+ * `true` if `preventDefault` has been called.
600
+ */
601
+ get defaultPrevented(): boolean {
602
+ return this._defaultPrevented;
603
+ }
604
+
605
+ _defaultPrevented: boolean;
606
+
607
+ constructor(type: string, map: Map, originalEvent: TouchEvent) {
608
+ const touches = type === 'touchend' ? originalEvent.changedTouches : originalEvent.touches;
609
+ const points = DOM.touchPos(map.getCanvasContainer(), touches);
610
+ const lngLats = points.map((t) => map.unproject(t));
611
+ const point = points.reduce((prev, curr, i, arr) => {
612
+ return prev.add(curr.div(arr.length));
613
+ }, new Point(0, 0));
614
+ const lngLat = map.unproject(point);
615
+ super(type, {points, point, lngLats, lngLat, originalEvent});
616
+ this._defaultPrevented = false;
617
+ }
618
+ }
619
+
620
+ /**
621
+ * `MapWheelEvent` is the event type for the `wheel` map event.
622
+ *
623
+ * @group Event Related
624
+ */
625
+ export class MapWheelEvent extends Event {
626
+ /**
627
+ * The event type.
628
+ */
629
+ type: 'wheel';
630
+
631
+ /**
632
+ * The `Map` object that fired the event.
633
+ */
634
+ target: Map;
635
+
636
+ /**
637
+ * The DOM event which caused the map event.
638
+ */
639
+ originalEvent: WheelEvent;
640
+
641
+ /**
642
+ * Prevents subsequent default processing of the event by the map.
643
+ *
644
+ * Calling this method will prevent the behavior of {@link ScrollZoomHandler}.
645
+ */
646
+ preventDefault() {
647
+ this._defaultPrevented = true;
648
+ }
649
+
650
+ /**
651
+ * `true` if `preventDefault` has been called.
652
+ */
653
+ get defaultPrevented(): boolean {
654
+ return this._defaultPrevented;
655
+ }
656
+
657
+ _defaultPrevented: boolean;
658
+
659
+ /** */
660
+ constructor(type: string, map: Map, originalEvent: WheelEvent) {
661
+ super(type, {originalEvent});
662
+ this._defaultPrevented = false;
663
+ }
664
+ }
665
+
666
+ /**
667
+ * A `MapLibreZoomEvent` is the event type for the boxzoom-related map events emitted by the {@link BoxZoomHandler}.
668
+ *
669
+ * @group Event Related
670
+ */
671
+ export type MapLibreZoomEvent = {
672
+ /**
673
+ * The type of boxzoom event. One of `boxzoomstart`, `boxzoomend` or `boxzoomcancel`
674
+ */
675
+ type: 'boxzoomstart' | 'boxzoomend' | 'boxzoomcancel';
676
+ /**
677
+ * The `Map` instance that triggered the event
678
+ */
679
+ target: Map;
680
+ /**
681
+ * The DOM event that triggered the boxzoom event. Can be a `MouseEvent` or `KeyboardEvent`
682
+ */
683
+ originalEvent: MouseEvent;
684
+ };
685
+
686
+ /**
687
+ * A `MapDataEvent` object is emitted with the `data`
688
+ * and `dataloading` events. Possible values for
689
+ * `dataType`s are:
690
+ *
691
+ * - `'source'`: The non-tile data associated with any source
692
+ * - `'style'`: The [style](https://maplibre.org/maplibre-style-spec/) used by the map
693
+ *
694
+ * Possible values for `sourceDataType`s are:
695
+ *
696
+ * - `'metadata'`: indicates that any necessary source metadata has been loaded (such as TileJSON) and it is ok to start loading tiles
697
+ * - `'content'`: indicates the source data has changed (such as when source.setData() has been called on GeoJSONSource)
698
+ * - `'visibility'`: send when the source becomes used when at least one of its layers becomes visible in style sense (inside the layer's zoom range and with layout.visibility set to 'visible')
699
+ * - `'idle'`: indicates that no new source data has been fetched (but the source has done loading)
700
+ *
701
+ * @group Event Related
702
+ *
703
+ * @example
704
+ * ```ts
705
+ * // The sourcedata event is an example of MapDataEvent.
706
+ * // Set up an event listener on the map.
707
+ * map.on('sourcedata', (e) => {
708
+ * if (e.isSourceLoaded) {
709
+ * // Do something when the source has finished loading
710
+ * }
711
+ * });
712
+ * ```
713
+ */
714
+ export type MapDataEvent = {
715
+ /**
716
+ * The event type.
717
+ */
718
+ type: string;
719
+ /**
720
+ * The type of data that has changed. One of `'source'`, `'style'`.
721
+ */
722
+ dataType: string;
723
+ /**
724
+ * Included if the event has a `dataType` of `source` and the event signals that internal data has been received or changed. Possible values are `metadata`, `content`, `visibility` and `idle`.
725
+ */
726
+ sourceDataType: MapSourceDataType;
727
+ };
728
+
729
+ /**
730
+ * The terrain event
731
+ *
732
+ * @group Event Related
733
+ */
734
+ export type MapTerrainEvent = {
735
+ type: 'terrain';
736
+ };
737
+
738
+ /**
739
+ * An event related to the web gl context
740
+ *
741
+ * @group Event Related
742
+ */
743
+ export type MapContextEvent = {
744
+ type: 'webglcontextlost' | 'webglcontextrestored';
745
+ originalEvent: WebGLContextEvent;
746
+ };
747
+
748
+ /**
749
+ * The style image missing event
750
+ *
751
+ * @group Event Related
752
+ *
753
+ * @see [Generate and add a missing icon to the map](https://maplibre.org/maplibre-gl-js/docs/examples/add-image-missing-generated/)
754
+ */
755
+ export type MapStyleImageMissingEvent = MapLibreEvent & {
756
+ type: 'styleimagemissing';
757
+ id: string;
758
+ }