maplibre-gl 2.0.4 → 2.1.2

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 (319) hide show
  1. package/build/{banner.js → banner.ts} +1 -1
  2. package/build/generate-query-test-fixtures.ts +123 -0
  3. package/build/generate-shaders.ts +35 -0
  4. package/build/generate-struct-arrays.ts +7 -7
  5. package/build/generate-style-code.ts +8 -8
  6. package/build/generate-style-spec.ts +5 -4
  7. package/build/generate-typings.ts +16 -0
  8. package/build/readme.md +8 -18
  9. package/build/release-notes.js +9 -13
  10. package/build/{rollup_plugin_minify_style_spec.js → rollup_plugin_minify_style_spec.ts} +4 -3
  11. package/build/{rollup_plugins.js → rollup_plugins.ts} +12 -26
  12. package/dist/maplibre-gl-dev.js +54885 -0
  13. package/dist/maplibre-gl.css +1 -1
  14. package/dist/maplibre-gl.d.ts +1583 -1023
  15. package/dist/maplibre-gl.js +3 -3
  16. package/dist/maplibre-gl.js.map +1 -1
  17. package/package.json +99 -141
  18. package/src/css/maplibre-gl.css +36 -36
  19. package/src/data/{array_types.ts → array_types.g.ts} +0 -0
  20. package/src/data/bucket/circle_bucket.ts +1 -1
  21. package/src/data/bucket/fill_bucket.test.ts +1 -1
  22. package/src/data/bucket/fill_bucket.ts +4 -4
  23. package/src/data/bucket/fill_extrusion_bucket.ts +1 -1
  24. package/src/data/bucket/line_bucket.test.ts +1 -1
  25. package/src/data/bucket/line_bucket.ts +6 -6
  26. package/src/data/bucket/symbol_bucket.test.ts +16 -16
  27. package/src/data/bucket/symbol_bucket.ts +56 -56
  28. package/src/data/bucket.ts +43 -43
  29. package/src/data/dem_data.ts +12 -12
  30. package/src/data/evaluation_feature.ts +10 -10
  31. package/src/data/feature_index.ts +37 -37
  32. package/src/data/feature_position_map.ts +5 -5
  33. package/src/data/index_array_type.ts +1 -1
  34. package/src/data/load_geometry.test.ts +1 -1
  35. package/src/data/program_configuration.ts +47 -47
  36. package/src/data/segment.ts +14 -14
  37. package/src/geo/edge_insets.ts +2 -2
  38. package/src/geo/lng_lat.ts +4 -4
  39. package/src/geo/lng_lat_bounds.ts +35 -35
  40. package/src/geo/mercator_coordinate.ts +5 -5
  41. package/src/geo/transform.test.ts +1 -1
  42. package/src/geo/transform.ts +14 -14
  43. package/src/gl/context.ts +3 -3
  44. package/src/gl/types.ts +19 -19
  45. package/src/gl/value.ts +6 -6
  46. package/src/gl/vertex_buffer.test.ts +1 -1
  47. package/src/index.ts +24 -9
  48. package/src/render/draw_circle.ts +8 -8
  49. package/src/render/draw_collision_debug.ts +5 -5
  50. package/src/render/draw_debug.ts +1 -1
  51. package/src/render/draw_line.ts +4 -4
  52. package/src/render/draw_symbol.ts +21 -21
  53. package/src/render/glyph_atlas.ts +12 -12
  54. package/src/render/glyph_manager.test.ts +10 -21
  55. package/src/render/glyph_manager.ts +34 -33
  56. package/src/render/image_manager.ts +4 -4
  57. package/src/render/painter.ts +16 -14
  58. package/src/render/program/background_program.ts +29 -29
  59. package/src/render/program/circle_program.ts +11 -11
  60. package/src/render/program/clipping_mask_program.ts +1 -1
  61. package/src/render/program/collision_program.ts +9 -9
  62. package/src/render/program/debug_program.ts +4 -4
  63. package/src/render/program/fill_extrusion_program.ts +31 -31
  64. package/src/render/program/fill_program.ts +29 -29
  65. package/src/render/program/heatmap_program.ts +12 -12
  66. package/src/render/program/hillshade_program.ts +12 -12
  67. package/src/render/program/line_program.ts +41 -41
  68. package/src/render/program/pattern.ts +28 -28
  69. package/src/render/program/raster_program.ts +21 -21
  70. package/src/render/program/symbol_program.ts +97 -97
  71. package/src/render/program.ts +25 -25
  72. package/src/render/texture.ts +9 -9
  73. package/src/render/uniform_binding.ts +1 -1
  74. package/src/render/vertex_array_object.ts +13 -13
  75. package/src/shaders/_prelude.fragment.glsl.g.ts +2 -0
  76. package/src/shaders/_prelude.vertex.glsl.g.ts +2 -0
  77. package/src/shaders/background.fragment.glsl.g.ts +2 -0
  78. package/src/shaders/background.vertex.glsl.g.ts +2 -0
  79. package/src/shaders/background_pattern.fragment.glsl.g.ts +2 -0
  80. package/src/shaders/background_pattern.vertex.glsl.g.ts +2 -0
  81. package/src/shaders/circle.fragment.glsl.g.ts +2 -0
  82. package/src/shaders/circle.vertex.glsl.g.ts +2 -0
  83. package/src/shaders/clipping_mask.fragment.glsl.g.ts +2 -0
  84. package/src/shaders/clipping_mask.vertex.glsl.g.ts +2 -0
  85. package/src/shaders/collision_box.fragment.glsl.g.ts +2 -0
  86. package/src/shaders/collision_box.vertex.glsl.g.ts +2 -0
  87. package/src/shaders/collision_circle.fragment.glsl.g.ts +2 -0
  88. package/src/shaders/collision_circle.vertex.glsl.g.ts +2 -0
  89. package/src/shaders/debug.fragment.glsl.g.ts +2 -0
  90. package/src/shaders/debug.vertex.glsl.g.ts +2 -0
  91. package/src/shaders/fill.fragment.glsl.g.ts +2 -0
  92. package/src/shaders/fill.vertex.glsl.g.ts +2 -0
  93. package/src/shaders/fill_extrusion.fragment.glsl.g.ts +2 -0
  94. package/src/shaders/fill_extrusion.vertex.glsl.g.ts +2 -0
  95. package/src/shaders/fill_extrusion_pattern.fragment.glsl.g.ts +2 -0
  96. package/src/shaders/fill_extrusion_pattern.vertex.glsl.g.ts +2 -0
  97. package/src/shaders/fill_outline.fragment.glsl.g.ts +2 -0
  98. package/src/shaders/fill_outline.vertex.glsl.g.ts +2 -0
  99. package/src/shaders/fill_outline_pattern.fragment.glsl.g.ts +2 -0
  100. package/src/shaders/fill_outline_pattern.vertex.glsl.g.ts +2 -0
  101. package/src/shaders/fill_pattern.fragment.glsl.g.ts +2 -0
  102. package/src/shaders/fill_pattern.vertex.glsl.g.ts +2 -0
  103. package/src/shaders/heatmap.fragment.glsl.g.ts +2 -0
  104. package/src/shaders/heatmap.vertex.glsl.g.ts +2 -0
  105. package/src/shaders/heatmap_texture.fragment.glsl.g.ts +2 -0
  106. package/src/shaders/heatmap_texture.vertex.glsl.g.ts +2 -0
  107. package/src/shaders/hillshade.fragment.glsl.g.ts +2 -0
  108. package/src/shaders/hillshade.vertex.glsl.g.ts +2 -0
  109. package/src/shaders/hillshade_prepare.fragment.glsl.g.ts +2 -0
  110. package/src/shaders/hillshade_prepare.vertex.glsl.g.ts +2 -0
  111. package/src/shaders/line.fragment.glsl.g.ts +2 -0
  112. package/src/shaders/line.vertex.glsl.g.ts +2 -0
  113. package/src/shaders/line_gradient.fragment.glsl.g.ts +2 -0
  114. package/src/shaders/line_gradient.vertex.glsl.g.ts +2 -0
  115. package/src/shaders/line_pattern.fragment.glsl.g.ts +2 -0
  116. package/src/shaders/line_pattern.vertex.glsl.g.ts +2 -0
  117. package/src/shaders/line_sdf.fragment.glsl.g.ts +2 -0
  118. package/src/shaders/line_sdf.vertex.glsl.g.ts +2 -0
  119. package/src/shaders/raster.fragment.glsl.g.ts +2 -0
  120. package/src/shaders/raster.vertex.glsl.g.ts +2 -0
  121. package/src/shaders/shaders.ts +52 -55
  122. package/src/shaders/symbol_icon.fragment.glsl.g.ts +2 -0
  123. package/src/shaders/symbol_icon.vertex.glsl.g.ts +2 -0
  124. package/src/shaders/symbol_sdf.fragment.glsl.g.ts +2 -0
  125. package/src/shaders/symbol_sdf.vertex.glsl.g.ts +2 -0
  126. package/src/shaders/symbol_text_and_icon.fragment.glsl.g.ts +2 -0
  127. package/src/shaders/symbol_text_and_icon.vertex.glsl.g.ts +2 -0
  128. package/src/source/canvas_source.test.ts +11 -12
  129. package/src/source/canvas_source.ts +4 -4
  130. package/src/source/geojson_source.test.ts +2 -1
  131. package/src/source/geojson_source.ts +1 -1
  132. package/src/source/geojson_worker_source.ts +23 -23
  133. package/src/source/geojson_wrapper.ts +8 -8
  134. package/src/source/image_source.test.ts +153 -0
  135. package/src/source/image_source.ts +6 -6
  136. package/src/source/pixels_to_tile_units.ts +6 -6
  137. package/src/source/query_features.ts +20 -20
  138. package/src/source/raster_dem_tile_source.test.ts +4 -3
  139. package/src/source/raster_dem_tile_source.ts +1 -1
  140. package/src/source/raster_tile_source.test.ts +4 -3
  141. package/src/source/raster_tile_source.ts +1 -1
  142. package/src/source/rtl_text_plugin.ts +10 -10
  143. package/src/source/source.ts +29 -29
  144. package/src/source/source_cache.test.ts +33 -1
  145. package/src/source/source_cache.ts +7 -5
  146. package/src/source/source_state.ts +1 -1
  147. package/src/source/tile.test.ts +3 -3
  148. package/src/source/tile.ts +15 -15
  149. package/src/source/tile_cache.test.ts +6 -4
  150. package/src/source/tile_cache.ts +6 -6
  151. package/src/source/tile_id.test.ts +10 -13
  152. package/src/source/tile_id.ts +2 -2
  153. package/src/source/vector_tile_source.test.ts +17 -5
  154. package/src/source/vector_tile_source.ts +4 -5
  155. package/src/source/vector_tile_worker_source.test.ts +4 -4
  156. package/src/source/vector_tile_worker_source.ts +5 -5
  157. package/src/source/worker.test.ts +1 -1
  158. package/src/source/worker.ts +22 -22
  159. package/src/source/worker_source.ts +56 -56
  160. package/src/source/worker_tile.ts +4 -4
  161. package/src/style/evaluation_parameters.ts +3 -3
  162. package/src/style/format_section_override.test.ts +1 -1
  163. package/src/style/light.ts +10 -10
  164. package/src/style/load_glyph_range.test.ts +3 -5
  165. package/src/style/load_glyph_range.ts +6 -6
  166. package/src/style/load_sprite.ts +5 -4
  167. package/src/style/pauseable_placement.ts +1 -1
  168. package/src/style/properties.ts +70 -70
  169. package/src/style/query_utils.ts +7 -7
  170. package/src/style/style.test.ts +26 -15
  171. package/src/style/style.ts +30 -30
  172. package/src/style/style_glyph.ts +8 -8
  173. package/src/style/style_image.ts +58 -58
  174. package/src/style/style_layer/background_style_layer.ts +2 -2
  175. package/src/style/style_layer/{background_style_layer_properties.ts → background_style_layer_properties.g.ts} +0 -0
  176. package/src/style/style_layer/circle_style_layer.ts +10 -10
  177. package/src/style/style_layer/{circle_style_layer_properties.ts → circle_style_layer_properties.g.ts} +0 -0
  178. package/src/style/style_layer/custom_style_layer.ts +19 -19
  179. package/src/style/style_layer/fill_extrusion_style_layer.ts +11 -11
  180. package/src/style/style_layer/{fill_extrusion_style_layer_properties.ts → fill_extrusion_style_layer_properties.g.ts} +0 -0
  181. package/src/style/style_layer/fill_style_layer.ts +9 -9
  182. package/src/style/style_layer/{fill_style_layer_properties.ts → fill_style_layer_properties.g.ts} +0 -0
  183. package/src/style/style_layer/heatmap_style_layer.ts +2 -2
  184. package/src/style/style_layer/{heatmap_style_layer_properties.ts → heatmap_style_layer_properties.g.ts} +0 -0
  185. package/src/style/style_layer/hillshade_style_layer.ts +2 -2
  186. package/src/style/style_layer/{hillshade_style_layer_properties.ts → hillshade_style_layer_properties.g.ts} +0 -0
  187. package/src/style/style_layer/line_style_layer.ts +9 -9
  188. package/src/style/style_layer/{line_style_layer_properties.ts → line_style_layer_properties.g.ts} +0 -0
  189. package/src/style/style_layer/raster_style_layer.ts +2 -2
  190. package/src/style/style_layer/{raster_style_layer_properties.ts → raster_style_layer_properties.g.ts} +0 -0
  191. package/src/style/style_layer/symbol_style_layer.ts +26 -7
  192. package/src/style/style_layer/{symbol_style_layer_properties.ts → symbol_style_layer_properties.g.ts} +6 -0
  193. package/src/style/style_layer.ts +10 -10
  194. package/src/style/style_layer_index.ts +3 -3
  195. package/src/style/validate_style.ts +15 -15
  196. package/src/style-spec/CHANGELOG.md +6 -0
  197. package/src/style-spec/error/validation_error.ts +1 -1
  198. package/src/style-spec/expression/compound_expression.ts +3 -3
  199. package/src/style-spec/expression/definitions/format.ts +11 -11
  200. package/src/style-spec/expression/definitions/interpolate.ts +5 -5
  201. package/src/style-spec/expression/definitions/match.ts +2 -2
  202. package/src/style-spec/expression/definitions/number_format.ts +11 -11
  203. package/src/style-spec/expression/expression.ts +8 -8
  204. package/src/style-spec/expression/index.ts +97 -97
  205. package/src/style-spec/expression/parsing_context.ts +11 -11
  206. package/src/style-spec/expression/types/collator.ts +9 -9
  207. package/src/style-spec/expression/types/resolved_image.ts +2 -2
  208. package/src/style-spec/expression/types.ts +14 -14
  209. package/src/style-spec/expression/values.ts +1 -1
  210. package/src/style-spec/feature_filter/index.ts +66 -66
  211. package/src/style-spec/function/convert.ts +3 -3
  212. package/src/style-spec/package.json +1 -1
  213. package/src/style-spec/reference/v8.json +68 -2
  214. package/src/style-spec/style-spec.ts +44 -44
  215. package/src/style-spec/types.ts +2 -0
  216. package/src/style-spec/util/color_spaces.ts +8 -8
  217. package/src/style-spec/util/result.ts +4 -4
  218. package/src/style-spec/validate/validate_filter.ts +58 -58
  219. package/src/style-spec/validate/validate_source.ts +63 -63
  220. package/src/style-spec/visit.ts +11 -11
  221. package/src/symbol/collision_feature.test.ts +1 -1
  222. package/src/symbol/collision_feature.ts +10 -10
  223. package/src/symbol/collision_index.ts +43 -43
  224. package/src/symbol/cross_tile_symbol_index.ts +17 -17
  225. package/src/symbol/get_anchors.ts +16 -16
  226. package/src/symbol/grid_index.test.ts +42 -19
  227. package/src/symbol/grid_index.ts +69 -40
  228. package/src/symbol/placement.ts +124 -95
  229. package/src/symbol/projection.ts +30 -30
  230. package/src/symbol/quads.ts +30 -30
  231. package/src/symbol/shaping.ts +160 -160
  232. package/src/symbol/symbol_layout.ts +119 -119
  233. package/src/symbol/symbol_size.ts +29 -29
  234. package/src/symbol/symbol_style_layer.test.ts +49 -2
  235. package/src/types/cancelable.ts +1 -1
  236. package/src/types/tilejson.ts +13 -13
  237. package/src/ui/anchor.ts +1 -1
  238. package/src/ui/camera.test.ts +9 -9
  239. package/src/ui/camera.ts +26 -18
  240. package/src/ui/control/attribution_control.test.ts +51 -16
  241. package/src/ui/control/attribution_control.ts +35 -16
  242. package/src/ui/control/control.ts +40 -40
  243. package/src/ui/control/fullscreen_control.ts +1 -1
  244. package/src/ui/control/geolocate_control.test.ts +1 -1
  245. package/src/ui/control/geolocate_control.ts +102 -102
  246. package/src/ui/control/logo_control.test.ts +5 -4
  247. package/src/ui/control/navigation_control.ts +3 -3
  248. package/src/ui/control/scale_control.test.ts +2 -2
  249. package/src/ui/control/scale_control.ts +5 -5
  250. package/src/ui/events.ts +289 -200
  251. package/src/ui/handler/box_zoom.test.ts +1 -1
  252. package/src/ui/handler/box_zoom.ts +1 -1
  253. package/src/ui/handler/dblclick_zoom.test.ts +1 -1
  254. package/src/ui/handler/drag_pan.test.ts +1 -1
  255. package/src/ui/handler/drag_rotate.test.ts +1 -1
  256. package/src/ui/handler/keyboard.test.ts +1 -1
  257. package/src/ui/handler/keyboard.ts +51 -51
  258. package/src/ui/handler/map_event.test.ts +1 -1
  259. package/src/ui/handler/map_event.ts +1 -1
  260. package/src/ui/handler/mouse.ts +1 -1
  261. package/src/ui/handler/mouse_rotate.test.ts +1 -1
  262. package/src/ui/handler/scroll_zoom.test.ts +3 -2
  263. package/src/ui/handler/scroll_zoom.ts +9 -9
  264. package/src/ui/handler/shim/drag_pan.ts +4 -4
  265. package/src/ui/handler/shim/drag_rotate.ts +1 -1
  266. package/src/ui/handler/shim/touch_zoom_rotate.ts +1 -1
  267. package/src/ui/handler/tap_recognizer.ts +4 -4
  268. package/src/ui/handler/touch_pan.ts +2 -2
  269. package/src/ui/handler/touch_zoom_rotate.test.ts +1 -1
  270. package/src/ui/handler/touch_zoom_rotate.ts +1 -1
  271. package/src/ui/handler_inertia.ts +6 -6
  272. package/src/ui/handler_manager.ts +44 -44
  273. package/src/ui/map/isMoving.test.ts +1 -1
  274. package/src/ui/map/isRotating.test.ts +1 -1
  275. package/src/ui/map/isZooming.test.ts +1 -1
  276. package/src/ui/map.test.ts +87 -14
  277. package/src/ui/map.ts +138 -108
  278. package/src/ui/map_events.test.ts +1 -1
  279. package/src/ui/marker.test.ts +12 -12
  280. package/src/ui/marker.ts +37 -37
  281. package/src/ui/popup.test.ts +7 -7
  282. package/src/ui/popup.ts +9 -9
  283. package/src/util/actor.test.ts +41 -10
  284. package/src/util/actor.ts +8 -8
  285. package/src/util/ajax.test.ts +214 -0
  286. package/src/util/ajax.ts +51 -30
  287. package/src/util/browser.ts +1 -1
  288. package/src/util/classify_rings.test.ts +1 -1
  289. package/src/util/color_ramp.ts +5 -5
  290. package/src/util/config.ts +2 -2
  291. package/src/util/dispatcher.ts +1 -1
  292. package/src/util/dom.ts +2 -2
  293. package/src/util/evented.ts +1 -1
  294. package/src/util/find_pole_of_inaccessibility.ts +3 -3
  295. package/src/util/image.ts +5 -5
  296. package/src/util/performance.ts +7 -7
  297. package/src/util/request_manager.ts +4 -4
  298. package/src/util/resolve_tokens.ts +4 -4
  299. package/src/util/struct_array.test.ts +1 -1
  300. package/src/util/struct_array.ts +15 -15
  301. package/src/util/task_queue.ts +3 -3
  302. package/src/util/test/util.ts +14 -0
  303. package/src/util/tile_request_cache.ts +3 -3
  304. package/src/util/transferable_grid_index.ts +4 -4
  305. package/src/util/util.ts +8 -8
  306. package/src/util/web_worker.ts +4 -68
  307. package/src/util/web_worker_transfer.test.ts +3 -0
  308. package/src/util/web_worker_transfer.ts +21 -17
  309. package/src/util/worker_pool.ts +1 -1
  310. package/build/.eslintrc +0 -21
  311. package/build/glsl_to_js.js +0 -12
  312. package/build/post-ts-build.js +0 -43
  313. package/build/release-notes.md.ejs +0 -8
  314. package/build/test/build-tape.js +0 -17
  315. package/build/web_worker_replacement.js +0 -5
  316. package/dist/package.json +0 -1
  317. package/src/style-spec/validate_spec.test.ts +0 -29
  318. package/src/symbol/shaping.test.ts +0 -392
  319. package/src/types/glsl.d.ts +0 -4
@@ -1,4 +1,4 @@
1
- import {FillExtrusionLayoutArray} from '../array_types';
1
+ import {FillExtrusionLayoutArray} from '../array_types.g';
2
2
 
3
3
  import {members as layoutAttributes} from './fill_extrusion_attributes';
4
4
  import SegmentVector from '../segment';
@@ -11,7 +11,7 @@ import EvaluationParameters from '../../style/evaluation_parameters';
11
11
  import {BucketFeature, BucketParameters} from '../bucket';
12
12
 
13
13
  // Load a line feature from fixture tile.
14
- const vt = new VectorTile(new Protobuf(fs.readFileSync(path.resolve(__dirname, '../../../test/fixtures/mbsv5-6-18-23.vector.pbf'))));
14
+ const vt = new VectorTile(new Protobuf(fs.readFileSync(path.resolve(__dirname, '../../../test/unit/assets/mbsv5-6-18-23.vector.pbf'))));
15
15
  const feature = vt.layers.road.feature(0);
16
16
 
17
17
  function createLine(numPoints) {
@@ -1,4 +1,4 @@
1
- import {LineLayoutArray, LineExtLayoutArray} from '../array_types';
1
+ import {LineLayoutArray, LineExtLayoutArray} from '../array_types.g';
2
2
 
3
3
  import {members as layoutAttributes} from './line_attributes';
4
4
  import {members as layoutAttributesExt} from './line_attributes_ext';
@@ -71,14 +71,14 @@ const LINE_DISTANCE_SCALE = 1 / 2;
71
71
  const MAX_LINE_DISTANCE = Math.pow(2, LINE_DISTANCE_BUFFER_BITS - 1) / LINE_DISTANCE_SCALE;
72
72
 
73
73
  type LineClips = {
74
- start: number;
75
- end: number;
74
+ start: number;
75
+ end: number;
76
76
  };
77
77
 
78
78
  type GradientTexture = {
79
- texture?: Texture;
80
- gradient?: RGBAImage;
81
- version?: number;
79
+ texture?: Texture;
80
+ gradient?: RGBAImage;
81
+ version?: number;
82
82
  };
83
83
 
84
84
  /**
@@ -3,7 +3,7 @@ import path from 'path';
3
3
  import Protobuf from 'pbf';
4
4
  import {VectorTile} from '@mapbox/vector-tile';
5
5
  import SymbolBucket from './symbol_bucket';
6
- import {CollisionBoxArray} from '../../data/array_types';
6
+ import {CollisionBoxArray} from '../../data/array_types.g';
7
7
  import {performSymbolLayout} from '../../symbol/symbol_layout';
8
8
  import {Placement} from '../../symbol/placement';
9
9
  import Transform from '../../geo/transform';
@@ -11,16 +11,16 @@ import {OverscaledTileID} from '../../source/tile_id';
11
11
  import Tile from '../../source/tile';
12
12
  import CrossTileSymbolIndex from '../../symbol/cross_tile_symbol_index';
13
13
  import FeatureIndex from '../../data/feature_index';
14
- import {createSymbolBucket, createSymbolIconBucket} from '../../../test/util/create_symbol_layer_jest';
14
+ import {createSymbolBucket, createSymbolIconBucket} from '../../../test/unit/lib/create_symbol_layer';
15
15
  import {RGBAImage} from '../../util/image';
16
16
  import {ImagePosition} from '../../render/image_atlas';
17
17
  import {IndexedFeature, PopulateParameters} from '../bucket';
18
18
  import {StyleImage} from '../../style/style_image';
19
- import glyphs from '../../../test/fixtures/fontstack-glyphs.json';
19
+ import glyphs from '../../../test/unit/assets/fontstack-glyphs.json';
20
20
  import {StyleGlyph} from '../../style/style_glyph';
21
21
 
22
22
  // Load a point feature from fixture tile.
23
- const vt = new VectorTile(new Protobuf(fs.readFileSync(path.resolve(__dirname, '../../../test/fixtures/mbsv5-6-18-23.vector.pbf'))));
23
+ const vt = new VectorTile(new Protobuf(fs.readFileSync(path.resolve(__dirname, '../../../test/unit/assets/mbsv5-6-18-23.vector.pbf'))));
24
24
  const feature = vt.layers.place_label.feature(10);
25
25
 
26
26
  /*eslint new-cap: 0*/
@@ -139,12 +139,12 @@ describe('SymbolBucket', () => {
139
139
  const options = {iconDependencies: {}, glyphDependencies: {}} as PopulateParameters;
140
140
 
141
141
  bucket.populate(
142
- [
143
- createIndexedFeature(0, 0, 'a'),
144
- createIndexedFeature(1, 1, 'b'),
145
- createIndexedFeature(2, 2, 'a')
146
- ] as any as IndexedFeature[],
147
- options, undefined
142
+ [
143
+ createIndexedFeature(0, 0, 'a'),
144
+ createIndexedFeature(1, 1, 'b'),
145
+ createIndexedFeature(2, 2, 'a')
146
+ ] as any as IndexedFeature[],
147
+ options, undefined
148
148
  );
149
149
 
150
150
  const icons = options.iconDependencies as any;
@@ -179,12 +179,12 @@ describe('SymbolBucket', () => {
179
179
  const options = {iconDependencies: {}, glyphDependencies: {}} as PopulateParameters;
180
180
 
181
181
  bucket.populate(
182
- [
183
- createIndexedFeature(0, 0, 'a'),
184
- createIndexedFeature(1, 1, 'b'),
185
- createIndexedFeature(2, 2, 'a')
186
- ] as any as IndexedFeature[],
187
- options, undefined
182
+ [
183
+ createIndexedFeature(0, 0, 'a'),
184
+ createIndexedFeature(1, 1, 'b'),
185
+ createIndexedFeature(2, 2, 'a')
186
+ ] as any as IndexedFeature[],
187
+ options, undefined
188
188
  );
189
189
 
190
190
  const icons = options.iconDependencies as any;
@@ -14,7 +14,7 @@ import {SymbolLayoutArray,
14
14
  SymbolInstanceArray,
15
15
  GlyphOffsetArray,
16
16
  SymbolLineVertexArray
17
- } from '../array_types';
17
+ } from '../array_types.g';
18
18
 
19
19
  import Point from '@mapbox/point-geometry';
20
20
  import SegmentVector from '../segment';
@@ -46,9 +46,9 @@ import type {
46
46
  IndexedFeature,
47
47
  PopulateParameters
48
48
  } from '../bucket';
49
- import type {CollisionBoxArray, CollisionBox, SymbolInstance} from '../array_types';
49
+ import type {CollisionBoxArray, CollisionBox, SymbolInstance} from '../array_types.g';
50
50
  import type {StructArray, StructArrayMember, ViewType} from '../../util/struct_array';
51
- import SymbolStyleLayer from '../../style/style_layer/symbol_style_layer';
51
+ import SymbolStyleLayer, {getOverlapMode} from '../../style/style_layer/symbol_style_layer';
52
52
  import type Context from '../../gl/context';
53
53
  import type IndexBuffer from '../../gl/index_buffer';
54
54
  import type VertexBuffer from '../../gl/vertex_buffer';
@@ -59,41 +59,41 @@ import type {ImagePosition} from '../../render/image_atlas';
59
59
  import type {VectorTileLayer} from '@mapbox/vector-tile';
60
60
 
61
61
  export type SingleCollisionBox = {
62
- x1: number;
63
- y1: number;
64
- x2: number;
65
- y2: number;
66
- anchorPointX: number;
67
- anchorPointY: number;
62
+ x1: number;
63
+ y1: number;
64
+ x2: number;
65
+ y2: number;
66
+ anchorPointX: number;
67
+ anchorPointY: number;
68
68
  };
69
69
 
70
70
  export type CollisionArrays = {
71
- textBox?: SingleCollisionBox;
72
- verticalTextBox?: SingleCollisionBox;
73
- iconBox?: SingleCollisionBox;
74
- verticalIconBox?: SingleCollisionBox;
75
- textFeatureIndex?: number;
76
- verticalTextFeatureIndex?: number;
77
- iconFeatureIndex?: number;
78
- verticalIconFeatureIndex?: number;
71
+ textBox?: SingleCollisionBox;
72
+ verticalTextBox?: SingleCollisionBox;
73
+ iconBox?: SingleCollisionBox;
74
+ verticalIconBox?: SingleCollisionBox;
75
+ textFeatureIndex?: number;
76
+ verticalTextFeatureIndex?: number;
77
+ iconFeatureIndex?: number;
78
+ verticalIconFeatureIndex?: number;
79
79
  };
80
80
 
81
81
  export type SymbolFeature = {
82
- sortKey: number | void;
83
- text: Formatted | void;
84
- icon: ResolvedImage;
85
- index: number;
86
- sourceLayerIndex: number;
87
- geometry: Array<Array<Point>>;
88
- properties: any;
89
- type: 'Point' | 'LineString' | 'Polygon';
90
- id?: any;
82
+ sortKey: number | void;
83
+ text: Formatted | void;
84
+ icon: ResolvedImage;
85
+ index: number;
86
+ sourceLayerIndex: number;
87
+ geometry: Array<Array<Point>>;
88
+ properties: any;
89
+ type: 'Point' | 'LineString' | 'Polygon';
90
+ id?: any;
91
91
  };
92
92
 
93
93
  export type SortKeyRange = {
94
- sortKey: number;
95
- symbolInstanceStart: number;
96
- symbolInstanceEnd: number;
94
+ sortKey: number;
95
+ symbolInstanceStart: number;
96
+ symbolInstanceEnd: number;
97
97
  };
98
98
 
99
99
  // Opacity arrays are frequently updated but don't contain a lot of information, so we pack them
@@ -244,12 +244,12 @@ class CollisionBuffers {
244
244
  collisionVertexBuffer: VertexBuffer;
245
245
 
246
246
  constructor(LayoutArray: {
247
- new (...args: any): StructArray;
247
+ new (...args: any): StructArray;
248
248
  },
249
- layoutAttributes: Array<StructArrayMember>,
250
- IndexArray: {
251
- new (...args: any): TriangleIndexArray | LineIndexArray;
252
- }) {
249
+ layoutAttributes: Array<StructArrayMember>,
250
+ IndexArray: {
251
+ new (...args: any): TriangleIndexArray | LineIndexArray;
252
+ }) {
253
253
  this.layoutVertexArray = new LayoutArray();
254
254
  this.layoutAttributes = layoutAttributes;
255
255
  this.indexArray = new IndexArray();
@@ -388,8 +388,8 @@ class SymbolBucket implements Bucket {
388
388
  const sortKey = layout.get('symbol-sort-key');
389
389
  const zOrder = layout.get('symbol-z-order');
390
390
  this.canOverlap =
391
- layout.get('text-allow-overlap') ||
392
- layout.get('icon-allow-overlap') ||
391
+ getOverlapMode(layout, 'text-overlap', 'text-allow-overlap') !== 'never' ||
392
+ getOverlapMode(layout, 'icon-overlap', 'icon-allow-overlap') !== 'never' ||
393
393
  layout.get('text-ignore-placement') ||
394
394
  layout.get('icon-ignore-placement');
395
395
  this.sortFeaturesByKey = zOrder !== 'viewport-y' && !sortKey.isConstant();
@@ -624,17 +624,17 @@ class SymbolBucket implements Bucket {
624
624
  }
625
625
 
626
626
  addSymbols(arrays: SymbolBuffers,
627
- quads: Array<SymbolQuad>,
628
- sizeVertex: any,
629
- lineOffset: [number, number],
630
- alongLine: boolean,
631
- feature: SymbolFeature,
632
- writingMode: WritingMode,
633
- labelAnchor: Anchor,
634
- lineStartIndex: number,
635
- lineLength: number,
636
- associatedIconIndex: number,
637
- canonical: CanonicalTileID) {
627
+ quads: Array<SymbolQuad>,
628
+ sizeVertex: any,
629
+ lineOffset: [number, number],
630
+ alongLine: boolean,
631
+ feature: SymbolFeature,
632
+ writingMode: WritingMode,
633
+ labelAnchor: Anchor,
634
+ lineStartIndex: number,
635
+ lineLength: number,
636
+ associatedIconIndex: number,
637
+ canonical: CanonicalTileID) {
638
638
  const indexArray = arrays.indexArray;
639
639
  const layoutVertexArray = arrays.layoutVertexArray;
640
640
 
@@ -766,15 +766,15 @@ class SymbolBucket implements Bucket {
766
766
  // These flat arrays are meant to be quicker to iterate over than the source
767
767
  // CollisionBoxArray
768
768
  _deserializeCollisionBoxesForSymbol(
769
- collisionBoxArray: CollisionBoxArray,
770
- textStartIndex: number,
771
- textEndIndex: number,
772
- verticalTextStartIndex: number,
773
- verticalTextEndIndex: number,
774
- iconStartIndex: number,
775
- iconEndIndex: number,
776
- verticalIconStartIndex: number,
777
- verticalIconEndIndex: number
769
+ collisionBoxArray: CollisionBoxArray,
770
+ textStartIndex: number,
771
+ textEndIndex: number,
772
+ verticalTextStartIndex: number,
773
+ verticalTextEndIndex: number,
774
+ iconStartIndex: number,
775
+ iconEndIndex: number,
776
+ verticalIconStartIndex: number,
777
+ verticalIconEndIndex: number
778
778
  ): CollisionArrays {
779
779
 
780
780
  const collisionArrays = {} as CollisionArrays;
@@ -1,4 +1,4 @@
1
- import type {CollisionBoxArray} from './array_types';
1
+ import type {CollisionBoxArray} from './array_types.g';
2
2
  import type Style from '../style/style';
3
3
  import type {TypedStyleLayer} from '../style/style_layer/typed_style_layer';
4
4
  import type FeatureIndex from './feature_index';
@@ -10,46 +10,46 @@ import type {VectorTileFeature, VectorTileLayer} from '@mapbox/vector-tile';
10
10
  import Point from '@mapbox/point-geometry';
11
11
 
12
12
  export type BucketParameters<Layer extends TypedStyleLayer> = {
13
- index: number;
14
- layers: Array<Layer>;
15
- zoom: number;
16
- pixelRatio: number;
17
- overscaling: number;
18
- collisionBoxArray: CollisionBoxArray;
19
- sourceLayerIndex: number;
20
- sourceID: string;
13
+ index: number;
14
+ layers: Array<Layer>;
15
+ zoom: number;
16
+ pixelRatio: number;
17
+ overscaling: number;
18
+ collisionBoxArray: CollisionBoxArray;
19
+ sourceLayerIndex: number;
20
+ sourceID: string;
21
21
  };
22
22
 
23
23
  export type PopulateParameters = {
24
- featureIndex: FeatureIndex;
25
- iconDependencies: {};
26
- patternDependencies: {};
27
- glyphDependencies: {};
28
- availableImages: Array<string>;
24
+ featureIndex: FeatureIndex;
25
+ iconDependencies: {};
26
+ patternDependencies: {};
27
+ glyphDependencies: {};
28
+ availableImages: Array<string>;
29
29
  };
30
30
 
31
31
  export type IndexedFeature = {
32
- feature: VectorTileFeature;
33
- id: number | string;
34
- index: number;
35
- sourceLayerIndex: number;
32
+ feature: VectorTileFeature;
33
+ id: number | string;
34
+ index: number;
35
+ sourceLayerIndex: number;
36
36
  };
37
37
 
38
38
  export type BucketFeature = {
39
- index: number;
40
- sourceLayerIndex: number;
41
- geometry: Array<Array<Point>>;
42
- properties: any;
43
- type: 1 | 2 | 3;
44
- id?: any;
45
- readonly patterns: {
46
- [_: string]: {
47
- 'min': string;
48
- 'mid': string;
49
- 'max': string;
39
+ index: number;
40
+ sourceLayerIndex: number;
41
+ geometry: Array<Array<Point>>;
42
+ properties: any;
43
+ type: 1 | 2 | 3;
44
+ id?: any;
45
+ readonly patterns: {
46
+ [_: string]: {
47
+ 'min': string;
48
+ 'mid': string;
49
+ 'max': string;
50
+ };
50
51
  };
51
- };
52
- sortKey?: number;
52
+ sortKey?: number;
53
53
  };
54
54
 
55
55
  /**
@@ -76,24 +76,24 @@ export type BucketFeature = {
76
76
  * @private
77
77
  */
78
78
  export interface Bucket {
79
- layerIds: Array<string>;
80
- hasPattern: boolean;
81
- readonly layers: Array<any>;
82
- readonly stateDependentLayers: Array<any>;
83
- readonly stateDependentLayerIds: Array<string>;
84
- populate(features: Array<IndexedFeature>, options: PopulateParameters, canonical: CanonicalTileID): void;
85
- update(states: FeatureStates, vtLayer: VectorTileLayer, imagePositions: {[_: string]: ImagePosition}): void;
86
- isEmpty(): boolean;
87
- upload(context: Context): void;
88
- uploadPending(): boolean;
89
- /**
79
+ layerIds: Array<string>;
80
+ hasPattern: boolean;
81
+ readonly layers: Array<any>;
82
+ readonly stateDependentLayers: Array<any>;
83
+ readonly stateDependentLayerIds: Array<string>;
84
+ populate(features: Array<IndexedFeature>, options: PopulateParameters, canonical: CanonicalTileID): void;
85
+ update(states: FeatureStates, vtLayer: VectorTileLayer, imagePositions: {[_: string]: ImagePosition}): void;
86
+ isEmpty(): boolean;
87
+ upload(context: Context): void;
88
+ uploadPending(): boolean;
89
+ /**
90
90
  * Release the WebGL resources associated with the buffers. Note that because
91
91
  * buckets are shared between layers having the same layout properties, they
92
92
  * must be destroyed in groups (all buckets for a tile, or all symbol buckets).
93
93
  *
94
94
  * @private
95
95
  */
96
- destroy(): void;
96
+ destroy(): void;
97
97
  }
98
98
 
99
99
  export function deserialize(input: Array<Bucket>, style: Style): {[_: string]: Bucket} {
@@ -95,21 +95,21 @@ export default class DEMData {
95
95
  yMax = dy * this.dim + this.dim;
96
96
 
97
97
  switch (dx) {
98
- case -1:
99
- xMin = xMax - 1;
100
- break;
101
- case 1:
102
- xMax = xMin + 1;
103
- break;
98
+ case -1:
99
+ xMin = xMax - 1;
100
+ break;
101
+ case 1:
102
+ xMax = xMin + 1;
103
+ break;
104
104
  }
105
105
 
106
106
  switch (dy) {
107
- case -1:
108
- yMin = yMax - 1;
109
- break;
110
- case 1:
111
- yMax = yMin + 1;
112
- break;
107
+ case -1:
108
+ yMin = yMax - 1;
109
+ break;
110
+ case 1:
111
+ yMax = yMin + 1;
112
+ break;
113
113
  }
114
114
 
115
115
  const ox = -dx * this.dim;
@@ -3,17 +3,17 @@ import type Point from '@mapbox/point-geometry';
3
3
  import type {VectorTileFeature} from '@mapbox/vector-tile';
4
4
 
5
5
  type EvaluationFeature = {
6
- readonly type: 1 | 2 | 3 | 'Unknown' | 'Point' | 'MultiPoint' | 'LineString' | 'MultiLineString' | 'Polygon' | 'MultiPolygon';
7
- readonly id?: any;
8
- readonly properties: {[_: string]: any};
9
- readonly patterns?: {
10
- [_: string]: {
11
- 'min': string;
12
- 'mid': string;
13
- 'max': string;
6
+ readonly type: 1 | 2 | 3 | 'Unknown' | 'Point' | 'MultiPoint' | 'LineString' | 'MultiLineString' | 'Polygon' | 'MultiPolygon';
7
+ readonly id?: any;
8
+ readonly properties: {[_: string]: any};
9
+ readonly patterns?: {
10
+ [_: string]: {
11
+ 'min': string;
12
+ 'mid': string;
13
+ 'max': string;
14
+ };
14
15
  };
15
- };
16
- geometry: Array<Array<Point>>;
16
+ geometry: Array<Array<Point>>;
17
17
  };
18
18
 
19
19
  /**
@@ -15,7 +15,7 @@ import EvaluationParameters from '../style/evaluation_parameters';
15
15
  import SourceFeatureState from '../source/source_state';
16
16
  import {polygonIntersectsBox} from '../util/intersection_tests';
17
17
  import {PossiblyEvaluated} from '../style/properties';
18
- import {FeatureIndexArray} from './array_types';
18
+ import {FeatureIndexArray} from './array_types.g';
19
19
  import {mat4} from 'gl-matrix';
20
20
 
21
21
  import type StyleLayer from '../style/style_layer';
@@ -26,18 +26,18 @@ import type {FeatureState} from '../style-spec/expression';
26
26
  import type {VectorTileFeature, VectorTileLayer} from '@mapbox/vector-tile';
27
27
 
28
28
  type QueryParameters = {
29
- scale: number;
30
- pixelPosMatrix: mat4;
31
- transform: Transform;
32
- tileSize: number;
33
- queryGeometry: Array<Point>;
34
- cameraQueryGeometry: Array<Point>;
35
- queryPadding: number;
36
- params: {
37
- filter: FilterSpecification;
38
- layers: Array<string>;
39
- availableImages: Array<string>;
40
- };
29
+ scale: number;
30
+ pixelPosMatrix: mat4;
31
+ transform: Transform;
32
+ tileSize: number;
33
+ queryGeometry: Array<Point>;
34
+ cameraQueryGeometry: Array<Point>;
35
+ queryPadding: number;
36
+ params: {
37
+ filter: FilterSpecification;
38
+ layers: Array<string>;
39
+ availableImages: Array<string>;
40
+ };
41
41
  };
42
42
 
43
43
  class FeatureIndex {
@@ -104,10 +104,10 @@ class FeatureIndex {
104
104
 
105
105
  // Finds non-symbol features in this tile at a particular position.
106
106
  query(
107
- args: QueryParameters,
108
- styleLayers: {[_: string]: StyleLayer},
109
- serializedLayers: {[_: string]: any},
110
- sourceFeatureState: SourceFeatureState
107
+ args: QueryParameters,
108
+ styleLayers: {[_: string]: StyleLayer},
109
+ serializedLayers: {[_: string]: any},
110
+ sourceFeatureState: SourceFeatureState
111
111
  ): {[_: string]: Array<{featureIndex: number; feature: GeoJSONFeature}>} {
112
112
  this.loadVTLayers();
113
113
 
@@ -123,10 +123,10 @@ class FeatureIndex {
123
123
 
124
124
  const cameraBounds = getBounds(args.cameraQueryGeometry);
125
125
  const matching3D = this.grid3D.query(
126
- cameraBounds.minX - queryPadding, cameraBounds.minY - queryPadding, cameraBounds.maxX + queryPadding, cameraBounds.maxY + queryPadding,
127
- (bx1, by1, bx2, by2) => {
128
- return polygonIntersectsBox(args.cameraQueryGeometry, bx1 - queryPadding, by1 - queryPadding, bx2 + queryPadding, by2 + queryPadding);
129
- });
126
+ cameraBounds.minX - queryPadding, cameraBounds.minY - queryPadding, cameraBounds.maxX + queryPadding, cameraBounds.maxY + queryPadding,
127
+ (bx1, by1, bx2, by2) => {
128
+ return polygonIntersectsBox(args.cameraQueryGeometry, bx1 - queryPadding, by1 - queryPadding, bx2 + queryPadding, by2 + queryPadding);
129
+ });
130
130
 
131
131
  for (const key of matching3D) {
132
132
  matching.push(key);
@@ -171,11 +171,11 @@ class FeatureIndex {
171
171
 
172
172
  loadMatchingFeature(
173
173
  result: {
174
- [_: string]: Array<{
175
- featureIndex: number;
176
- feature: GeoJSONFeature;
177
- intersectionZ?: boolean | number;
178
- }>;
174
+ [_: string]: Array<{
175
+ featureIndex: number;
176
+ feature: GeoJSONFeature;
177
+ intersectionZ?: boolean | number;
178
+ }>;
179
179
  },
180
180
  bucketIndex: number,
181
181
  sourceLayerIndex: number,
@@ -187,10 +187,10 @@ class FeatureIndex {
187
187
  serializedLayers: {[_: string]: any},
188
188
  sourceFeatureState?: SourceFeatureState,
189
189
  intersectionTest?: (
190
- feature: VectorTileFeature,
191
- styleLayer: StyleLayer,
192
- featureState: any,
193
- id: string | number | void
190
+ feature: VectorTileFeature,
191
+ styleLayer: StyleLayer,
192
+ featureState: any,
193
+ id: string | number | void
194
194
  ) => boolean | number) {
195
195
 
196
196
  const layerIDs = this.bucketLayerIDs[bucketIndex];
@@ -253,13 +253,13 @@ class FeatureIndex {
253
253
  // Given a set of symbol indexes that have already been looked up,
254
254
  // return a matching set of GeoJSONFeatures
255
255
  lookupSymbolFeatures(symbolFeatureIndexes: Array<number>,
256
- serializedLayers: {[_: string]: StyleLayer},
257
- bucketIndex: number,
258
- sourceLayerIndex: number,
259
- filterSpec: FilterSpecification,
260
- filterLayerIDs: Array<string>,
261
- availableImages: Array<string>,
262
- styleLayers: {[_: string]: StyleLayer}) {
256
+ serializedLayers: {[_: string]: StyleLayer},
257
+ bucketIndex: number,
258
+ sourceLayerIndex: number,
259
+ filterSpec: FilterSpecification,
260
+ filterLayerIDs: Array<string>,
261
+ availableImages: Array<string>,
262
+ styleLayers: {[_: string]: StyleLayer}) {
263
263
  const result = {};
264
264
  this.loadVTLayers();
265
265
 
@@ -3,14 +3,14 @@ import {register} from '../util/web_worker_transfer';
3
3
  import assert from 'assert';
4
4
 
5
5
  type SerializedFeaturePositionMap = {
6
- ids: Float64Array;
7
- positions: Uint32Array;
6
+ ids: Float64Array;
7
+ positions: Uint32Array;
8
8
  };
9
9
 
10
10
  type FeaturePosition = {
11
- index: number;
12
- start: number;
13
- end: number;
11
+ index: number;
12
+ start: number;
13
+ end: number;
14
14
  };
15
15
 
16
16
  // A transferable data structure that maps feature ids to their indices and buffer offsets
@@ -1,4 +1,4 @@
1
- import {LineIndexArray, TriangleIndexArray, LineStripIndexArray} from './array_types';
1
+ import {LineIndexArray, TriangleIndexArray, LineStripIndexArray} from './array_types.g';
2
2
 
3
3
  /**
4
4
  * An index array stores Uint16 indices of vertexes in a corresponding vertex array. We use
@@ -5,7 +5,7 @@ import {VectorTile} from '@mapbox/vector-tile';
5
5
  import loadGeometry from './load_geometry';
6
6
 
7
7
  // Load a line feature from fixture tile.
8
- const vt = new VectorTile(new Protobuf(fs.readFileSync(path.resolve(__dirname, '../../test/fixtures/mbsv5-6-18-23.vector.pbf'))));
8
+ const vt = new VectorTile(new Protobuf(fs.readFileSync(path.resolve(__dirname, '../../test/unit/assets/mbsv5-6-18-23.vector.pbf'))));
9
9
 
10
10
  describe('loadGeometry', () => {
11
11
  test('loadGeometry', () => {